@sbb-esta/lyne-elements-experimental-dev 4.7.0-dev.1773333596 → 4.7.0-dev.1773388997
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/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +65 -76
- package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +72 -52
- package/autocomplete-grid/autocomplete-grid-button.js +3 -6
- package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +2 -17
- package/autocomplete-grid/autocomplete-grid-cell.js +4 -7
- package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +20 -21
- package/autocomplete-grid/autocomplete-grid-optgroup.js +3 -6
- package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +2 -33
- package/autocomplete-grid/autocomplete-grid-option.js +4 -9
- package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +2 -22
- package/autocomplete-grid/autocomplete-grid-row.js +4 -7
- package/autocomplete-grid/autocomplete-grid.js +3 -6
- package/autocomplete-grid-cell.component-Dak9wlBr.js +24 -0
- package/autocomplete-grid-option.component-DNRFHOwc.js +37 -0
- package/autocomplete-grid-row.component-DBHZQ0GQ.js +27 -0
- package/autocomplete-grid.js +9 -21
- package/autocomplete-grid.pure.js +7 -15
- package/core/datetime/date-helper.js +2 -191
- package/core/datetime.js +2 -5
- package/core/timetable/access-leg-helper.js +76 -71
- package/core/timetable/timetable-helper.js +9 -11
- package/core/timetable/timetable-properties.js +0 -1
- package/core/timetable.js +3 -7
- package/date-helper-CGproP5d.js +185 -0
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +114 -122
- package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +92 -70
- package/development/autocomplete-grid/autocomplete-grid-button.js +6 -4
- package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +2 -29
- package/development/autocomplete-grid/autocomplete-grid-cell.js +7 -5
- package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +27 -22
- package/development/autocomplete-grid/autocomplete-grid-optgroup.js +6 -4
- package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +2 -109
- package/development/autocomplete-grid/autocomplete-grid-option.js +7 -7
- package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +2 -91
- package/development/autocomplete-grid/autocomplete-grid-row.js +7 -5
- package/development/autocomplete-grid/autocomplete-grid.js +6 -4
- package/development/autocomplete-grid-cell.component-BBvM4o2H.js +42 -0
- package/development/autocomplete-grid-option.component-QzfM5eIE.js +123 -0
- package/development/autocomplete-grid-row.component-H8sCTCkT.js +104 -0
- package/development/autocomplete-grid.js +10 -14
- package/development/autocomplete-grid.pure.js +4 -13
- package/development/core/datetime/date-helper.js +2 -285
- package/development/core/datetime.js +2 -6
- package/development/core/timetable/access-leg-helper.js +104 -82
- package/development/core/timetable/timetable-helper.js +16 -17
- package/development/core/timetable/timetable-properties.js +0 -2
- package/development/core/timetable.js +3 -8
- package/development/date-helper-8_Y-PuHh.js +520 -0
- package/development/differenceInMinutes-DN_1Rk3O.js +110 -0
- package/development/format-Bbrn2bgo.js +1848 -0
- package/development/isValid-C-HzKv4v.js +178 -0
- package/development/journey-summary/journey-summary.component.js +2 -288
- package/development/journey-summary.component-uGhZvA4p.js +385 -0
- package/development/journey-summary.js +8 -5
- package/development/journey-summary.pure.js +2 -5
- package/development/pearl-chain/pearl-chain.component.js +2 -634
- package/development/pearl-chain-time/pearl-chain-time.component.js +2 -306
- package/development/pearl-chain-time.component-B8mayTWD.js +415 -0
- package/development/pearl-chain-time.js +8 -5
- package/development/pearl-chain-time.pure.js +2 -5
- package/development/pearl-chain-vertical/pearl-chain-vertical.component.js +2 -28
- package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +2 -393
- package/development/pearl-chain-vertical-item.component-BDzbcIaf.js +435 -0
- package/development/pearl-chain-vertical-item.js +8 -5
- package/development/pearl-chain-vertical-item.pure.js +2 -5
- package/development/pearl-chain-vertical.component-CswE7b3M.js +39 -0
- package/development/pearl-chain-vertical.js +8 -5
- package/development/pearl-chain-vertical.pure.js +2 -5
- package/development/pearl-chain.component-wpsTvoSe.js +704 -0
- package/development/pearl-chain.js +8 -5
- package/development/pearl-chain.pure.js +2 -5
- package/development/seat-reservation/common/mapper/icon-mapper.js +168 -71
- package/development/seat-reservation/common/mapper/mapper.js +153 -122
- package/development/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-bus.js +570 -559
- package/development/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-decks.js +992 -972
- package/development/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-giruno.js +20334 -20367
- package/development/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-others.js +1731 -1738
- package/development/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-train.js +9741 -9782
- package/development/seat-reservation/common/mapper.js +1 -8
- package/development/seat-reservation/common/svgs.js +2 -46
- package/development/seat-reservation/common/translations/i18n.js +1118 -900
- package/development/seat-reservation/common/translations.js +1 -4
- package/development/seat-reservation/common/types.js +0 -2
- package/development/seat-reservation/common.js +7 -11
- package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +1305 -1230
- package/development/seat-reservation/seat-reservation/seat-reservation.component.js +2 -859
- package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +2 -106
- package/development/seat-reservation/seat-reservation-area.js +7 -5
- package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +35 -34
- package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +2 -162
- package/development/seat-reservation/seat-reservation-graphic.js +7 -5
- package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +2 -713
- package/development/seat-reservation/seat-reservation-navigation-coach.js +7 -5
- package/development/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +2 -131
- package/development/seat-reservation/seat-reservation-navigation-services.js +7 -5
- package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +2 -601
- package/development/seat-reservation/seat-reservation-place-control.js +7 -5
- package/development/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +2 -22
- package/development/seat-reservation/seat-reservation-scoped.js +7 -5
- package/development/seat-reservation/seat-reservation.js +7 -6
- package/development/seat-reservation-area.component-BK92ZtFo.js +138 -0
- package/development/seat-reservation-graphic.component-cUnsHh5x.js +193 -0
- package/development/seat-reservation-navigation-coach.component-D6Bglus8.js +828 -0
- package/development/seat-reservation-navigation-services.component-DYJ6Ddkg.js +179 -0
- package/development/seat-reservation-place-control.component-Bg9evKBW.js +726 -0
- package/development/seat-reservation-scoped.component-DRQ_I702.js +31 -0
- package/development/seat-reservation.component-Cq_aJKR0.js +818 -0
- package/development/seat-reservation.js +15 -28
- package/development/seat-reservation.pure.js +10 -28
- package/development/svgs-C3JMWR26.js +28 -0
- package/development/timetable-duration/timetable-duration.component.js +2 -108
- package/development/timetable-duration.component-DI0lET17.js +125 -0
- package/development/timetable-duration.js +8 -5
- package/development/timetable-duration.pure.js +2 -5
- package/development/timetable-row/timetable-row.component.js +2 -781
- package/development/timetable-row.component-CAED6Zwc.js +932 -0
- package/development/timetable-row.js +8 -13
- package/development/timetable-row.pure.js +2 -12
- package/development/toDate-Biiv3kyf.js +150 -0
- package/differenceInMinutes-Dr9gRqtu.js +27 -0
- package/format-CM5exOsN.js +1103 -0
- package/isValid-B9oVW3lA.js +36 -0
- package/journey-summary/journey-summary.component.js +2 -194
- package/journey-summary.component-Cq_4kaOp.js +264 -0
- package/journey-summary.js +5 -4
- package/journey-summary.pure.js +2 -4
- package/package.json +2 -2
- package/pearl-chain/pearl-chain.component.js +2 -165
- package/pearl-chain-time/pearl-chain-time.component.js +2 -157
- package/pearl-chain-time.component-DGDW5S1c.js +239 -0
- package/pearl-chain-time.js +5 -4
- package/pearl-chain-time.pure.js +2 -4
- package/pearl-chain-vertical/pearl-chain-vertical.component.js +2 -17
- package/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +2 -77
- package/pearl-chain-vertical-item.component-G22bWhLU.js +108 -0
- package/pearl-chain-vertical-item.js +5 -4
- package/pearl-chain-vertical-item.pure.js +2 -4
- package/pearl-chain-vertical.component-CXIDT5RD.js +21 -0
- package/pearl-chain-vertical.js +5 -4
- package/pearl-chain-vertical.pure.js +2 -4
- package/pearl-chain.component-DmjkVIva.js +194 -0
- package/pearl-chain.js +5 -4
- package/pearl-chain.pure.js +2 -4
- package/seat-reservation/common/mapper/icon-mapper.js +71 -71
- package/seat-reservation/common/mapper/mapper.js +95 -89
- package/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-bus.js +568 -558
- package/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-decks.js +989 -970
- package/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-giruno.js +20332 -20366
- package/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-others.js +1729 -1737
- package/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-train.js +9739 -9781
- package/seat-reservation/common/mapper.js +3 -9
- package/seat-reservation/common/svgs.js +2 -243
- package/seat-reservation/common/translations/i18n.js +1084 -891
- package/seat-reservation/common/translations.js +2 -4
- package/seat-reservation/common/types.js +0 -1
- package/seat-reservation/common.js +9 -15
- package/seat-reservation/seat-reservation/seat-reservation-base-element.js +832 -810
- package/seat-reservation/seat-reservation/seat-reservation.component.js +2 -420
- package/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +2 -51
- package/seat-reservation/seat-reservation-area.js +4 -7
- package/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +68 -71
- package/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +2 -75
- package/seat-reservation/seat-reservation-graphic.js +4 -7
- package/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +2 -234
- package/seat-reservation/seat-reservation-navigation-coach.js +4 -7
- package/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +2 -85
- package/seat-reservation/seat-reservation-navigation-services.js +4 -7
- package/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +2 -203
- package/seat-reservation/seat-reservation-place-control.js +4 -7
- package/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +2 -13
- package/seat-reservation/seat-reservation-scoped.js +4 -7
- package/seat-reservation/seat-reservation.js +5 -9
- package/seat-reservation-area.component-n-9rGn_y.js +75 -0
- package/seat-reservation-graphic.component-YTXRmKt0.js +102 -0
- package/seat-reservation-navigation-coach.component-YJ0vaYmO.js +333 -0
- package/seat-reservation-navigation-services.component-C3xnLJg2.js +127 -0
- package/seat-reservation-place-control.component-DmBAfM6K.js +322 -0
- package/seat-reservation-scoped.component-DPkz6u17.js +17 -0
- package/seat-reservation.component-C_anMkgw.js +364 -0
- package/seat-reservation.js +17 -39
- package/seat-reservation.pure.js +15 -32
- package/svgs-D9arBcqr.js +26 -0
- package/timetable-duration/timetable-duration.component.js +2 -57
- package/timetable-duration.component-DCu8Phts.js +65 -0
- package/timetable-duration.js +5 -4
- package/timetable-duration.pure.js +2 -4
- package/timetable-row/timetable-row.component.js +2 -427
- package/timetable-row.component-BVRCB3xK.js +559 -0
- package/timetable-row.js +6 -13
- package/timetable-row.pure.js +2 -11
- package/toDate-p-Tpkb7t.js +16 -0
- package/development/differenceInMinutes-B0dawX-5.js +0 -26
- package/development/format-BMkeaqaF.js +0 -1433
- package/development/isValid-BYRch7pV.js +0 -53
- package/development/toDate-BWb6Z1JD.js +0 -24
- package/differenceInMinutes-COvvdYsJ.js +0 -23
- package/format-CmKROkbc.js +0 -1186
- package/isValid-m3_OsPaB.js +0 -45
- package/toDate-Bw2KTWeq.js +0 -15
|
@@ -1,781 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
};
|
|
4
|
-
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
5
|
-
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
6
|
-
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
7
|
-
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
8
|
-
import { __runInitializers, __esDecorate } from "tslib";
|
|
9
|
-
import { SbbElement } from "@sbb-esta/lyne-elements/core/base-elements.js";
|
|
10
|
-
import { SbbLanguageController } from "@sbb-esta/lyne-elements/core/controllers.js";
|
|
11
|
-
import { defaultDateAdapter } from "@sbb-esta/lyne-elements/core/datetime.js";
|
|
12
|
-
import { forceType } from "@sbb-esta/lyne-elements/core/decorators.js";
|
|
13
|
-
import { setOrRemoveAttribute } from "@sbb-esta/lyne-elements/core/dom.js";
|
|
14
|
-
import { i18nFromPlatform, i18nDeparture, i18nMeansOfTransport, i18nDirection, i18nRealTimeInfo, i18nSupersaver, i18nTransferProcedures, i18nTransferProcedure, i18nArrival, i18nClass, i18nOccupancy, i18nTravelhints, i18nTripDuration, i18nNew, i18nTripQuayChange } from "@sbb-esta/lyne-elements/core/i18n.js";
|
|
15
|
-
import { boxSizingStyles } from "@sbb-esta/lyne-elements/core/styles.js";
|
|
16
|
-
import { css, nothing, html } from "lit";
|
|
17
|
-
import { property } from "lit/decorators.js";
|
|
18
|
-
import { removeTimezoneFromISOTimeString, durationToTime } from "../core/datetime.js";
|
|
19
|
-
import { isRideLeg, getDepartureArrivalTimeAttribute } from "../core/timetable.js";
|
|
20
|
-
import "@sbb-esta/lyne-elements/card.js";
|
|
21
|
-
import "@sbb-esta/lyne-elements/icon.js";
|
|
22
|
-
import "@sbb-esta/lyne-elements/timetable-occupancy.js";
|
|
23
|
-
import "../pearl-chain-time.js";
|
|
24
|
-
import { f as format } from "../format-BMkeaqaF.js";
|
|
25
|
-
const style = css`:host {
|
|
26
|
-
--sbb-timetable-row-gap: var(--sbb-spacing-fixed-2x);
|
|
27
|
-
--sbb-timetable-row-height: 1.5625rem;
|
|
28
|
-
--sbb-timetable-row-height-header: 1.25rem;
|
|
29
|
-
--sbb-timetable-row-height-footer: 1rem;
|
|
30
|
-
--sbb-timetable-row-skeleton-pulse-duration: 1800ms;
|
|
31
|
-
display: block;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
:host([disable-animation]) {
|
|
35
|
-
--sbb-timetable-row-skeleton-pulse-duration: 0;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.sbb-timetable__row-transport-icon {
|
|
39
|
-
--sbb-icon-svg-width: 1.25rem;
|
|
40
|
-
--sbb-icon-svg-height: 1.25rem;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.sbb-travel-hints__item {
|
|
44
|
-
--sbb-icon-svg-height: 0.875rem;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.sbb-screen-reader-only {
|
|
48
|
-
border: 0;
|
|
49
|
-
clip-path: rect(0 0 0 0);
|
|
50
|
-
height: 1px;
|
|
51
|
-
margin: -1px;
|
|
52
|
-
overflow: hidden;
|
|
53
|
-
padding: 0;
|
|
54
|
-
position: absolute;
|
|
55
|
-
white-space: nowrap;
|
|
56
|
-
width: 1px;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
.sbb-timetable__row--quay {
|
|
60
|
-
margin-inline-end: var(--sbb-spacing-fixed-1x);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.sbb-timetable__row--quay-type {
|
|
64
|
-
float: left;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
ul {
|
|
68
|
-
list-style: none;
|
|
69
|
-
margin: 0;
|
|
70
|
-
padding: 0;
|
|
71
|
-
font-size: inherit;
|
|
72
|
-
display: inline-flex;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
li {
|
|
76
|
-
display: inline-flex;
|
|
77
|
-
align-self: center;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
.sbb-timetable__row-transport {
|
|
81
|
-
display: inline-flex;
|
|
82
|
-
align-self: center;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
.sbb-timetable__row-transportnumber,
|
|
86
|
-
.sbb-timetable__row-time {
|
|
87
|
-
--sbb-text-font-size: var(--sbb-text-font-size-s);
|
|
88
|
-
font-family: var(--sbb-typo-font-family);
|
|
89
|
-
font-weight: normal;
|
|
90
|
-
line-height: var(--sbb-typo-line-height-text);
|
|
91
|
-
letter-spacing: var(--sbb-typo-letter-spacing-text);
|
|
92
|
-
font-size: var(--sbb-text-font-size);
|
|
93
|
-
font-weight: bold;
|
|
94
|
-
line-height: unset;
|
|
95
|
-
white-space: nowrap;
|
|
96
|
-
align-self: center;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.sbb-timetable__row {
|
|
100
|
-
--sbb-text-font-size: var(--sbb-text-font-size-s);
|
|
101
|
-
font-family: var(--sbb-typo-font-family);
|
|
102
|
-
font-weight: normal;
|
|
103
|
-
line-height: var(--sbb-typo-line-height-text);
|
|
104
|
-
letter-spacing: var(--sbb-typo-letter-spacing-text);
|
|
105
|
-
font-size: var(--sbb-text-font-size);
|
|
106
|
-
display: flex;
|
|
107
|
-
flex-direction: column;
|
|
108
|
-
gap: var(--sbb-timetable-row-gap);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.sbb-timetable__row-header,
|
|
112
|
-
.sbb-timetable__row-footer {
|
|
113
|
-
animation: none;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.sbb-timetable__row-header {
|
|
117
|
-
display: flex;
|
|
118
|
-
gap: var(--sbb-spacing-fixed-2x);
|
|
119
|
-
align-items: center;
|
|
120
|
-
line-height: var(--sbb-timetable-row-height-header);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
.sbb-timetable__row-details,
|
|
124
|
-
.sbb-timetable__row-hints {
|
|
125
|
-
display: inline-flex;
|
|
126
|
-
gap: var(--sbb-spacing-fixed-1x);
|
|
127
|
-
align-items: center;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
.sbb-timetable__row-header p {
|
|
131
|
-
overflow: hidden;
|
|
132
|
-
white-space: nowrap;
|
|
133
|
-
text-overflow: ellipsis;
|
|
134
|
-
margin: 0;
|
|
135
|
-
align-self: center;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.sbb-timetable__row-footer {
|
|
139
|
-
display: flex;
|
|
140
|
-
flex-wrap: wrap;
|
|
141
|
-
justify-content: space-between;
|
|
142
|
-
align-items: center;
|
|
143
|
-
gap: var(--sbb-spacing-fixed-2x);
|
|
144
|
-
line-height: var(--sbb-timetable-row-height-footer);
|
|
145
|
-
}
|
|
146
|
-
.sbb-timetable__row-footer > span {
|
|
147
|
-
align-self: center;
|
|
148
|
-
}
|
|
149
|
-
.sbb-timetable__row-footer :only-child {
|
|
150
|
-
margin-inline-start: auto;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
.sbb-timetable__row-quay--changed {
|
|
154
|
-
color: var(--sbb-color-primary);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
.sbb-timetable__row-transport-wrapper,
|
|
158
|
-
.sbb-timetable__row-warning {
|
|
159
|
-
display: inline-flex;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
.sbb-loading {
|
|
163
|
-
pointer-events: none;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
.sbb-loading__wrapper {
|
|
167
|
-
display: flex;
|
|
168
|
-
flex-direction: column;
|
|
169
|
-
gap: var(--sbb-spacing-fixed-2x);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
.sbb-loading__row {
|
|
173
|
-
width: 100%;
|
|
174
|
-
border-radius: var(--sbb-border-radius-1x);
|
|
175
|
-
height: var(--sbb-timetable-row-height);
|
|
176
|
-
}
|
|
177
|
-
@media (min-width: calc(64rem)) {
|
|
178
|
-
.sbb-loading__row {
|
|
179
|
-
height: 1.75rem;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
@media (forced-colors: active) {
|
|
183
|
-
.sbb-loading__row {
|
|
184
|
-
border: var(--sbb-border-width-1x) solid ButtonBorder !important;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
.sbb-loading__row,
|
|
189
|
-
.sbb-loading__badge {
|
|
190
|
-
background: var(--sbb-background-color-4);
|
|
191
|
-
animation: skeleton-pulse var(--sbb-timetable-row-skeleton-pulse-duration) ease-out infinite;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
.sbb-loading__row:first-of-type {
|
|
195
|
-
height: var(--sbb-timetable-row-height-header);
|
|
196
|
-
width: 50%;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
.sbb-loading__row:last-of-type {
|
|
200
|
-
height: var(--sbb-timetable-row-height-footer);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
.sbb-loading__badge {
|
|
204
|
-
margin-inline: auto calc(var(--sbb-spacing-fixed-3x) * -1);
|
|
205
|
-
padding-inline-end: var(--sbb-spacing-fixed-6x);
|
|
206
|
-
border-end-start-radius: var(--sbb-card-badge-border-radius);
|
|
207
|
-
transform: var(--sbb-card-badge-skew);
|
|
208
|
-
width: 7.1875rem;
|
|
209
|
-
height: 1.25rem;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
@keyframes skeleton-pulse {
|
|
213
|
-
0% {
|
|
214
|
-
background: var(--sbb-background-color-4);
|
|
215
|
-
}
|
|
216
|
-
17% {
|
|
217
|
-
background: var(--sbb-background-color-4);
|
|
218
|
-
}
|
|
219
|
-
50% {
|
|
220
|
-
background: var(--sbb-background-color-3);
|
|
221
|
-
}
|
|
222
|
-
67% {
|
|
223
|
-
background: var(--sbb-background-color-3);
|
|
224
|
-
}
|
|
225
|
-
100% {
|
|
226
|
-
background: var(--sbb-background-color-4);
|
|
227
|
-
}
|
|
228
|
-
}`;
|
|
229
|
-
const renderIconProduct = (icon, name) => {
|
|
230
|
-
return html`<span class="sbb-timetable__row-transport">
|
|
231
|
-
<sbb-icon name=${icon}></sbb-icon>
|
|
232
|
-
<span class="sbb-screen-reader-only">${name}</span>
|
|
233
|
-
</span>`;
|
|
234
|
-
};
|
|
235
|
-
const renderStringProduct = (vehicleName, line) => {
|
|
236
|
-
const space = ["M", "B", "T"].includes(vehicleName) ? " " : "";
|
|
237
|
-
return html`<span class="sbb-timetable__row-transportnumber">
|
|
238
|
-
${line !== null ? vehicleName + space + line : vehicleName}
|
|
239
|
-
</span>`;
|
|
240
|
-
};
|
|
241
|
-
const getReachableText = (legs) => {
|
|
242
|
-
return legs?.find((leg) => leg.serviceJourney?.serviceAlteration?.reachableText)?.serviceJourney?.serviceAlteration?.reachableText;
|
|
243
|
-
};
|
|
244
|
-
const getDelayText = (legs) => {
|
|
245
|
-
return legs?.find((leg) => leg.serviceJourney?.serviceAlteration?.delayText)?.serviceJourney?.serviceAlteration?.delayText;
|
|
246
|
-
};
|
|
247
|
-
const getRedirectedText = (legs) => {
|
|
248
|
-
return legs?.find((leg) => !!leg.serviceJourney?.serviceAlteration?.redirectedText)?.serviceJourney?.serviceAlteration?.redirectedText;
|
|
249
|
-
};
|
|
250
|
-
const getUnplannedStop = (legs) => {
|
|
251
|
-
return legs?.find((leg) => !!leg.serviceJourney?.serviceAlteration?.unplannedStopPointsText)?.serviceJourney?.serviceAlteration?.unplannedStopPointsText;
|
|
252
|
-
};
|
|
253
|
-
const sortSituation = (situations) => {
|
|
254
|
-
const priorities = {
|
|
255
|
-
DISTURBANCE: 0,
|
|
256
|
-
INFORMATION: 1,
|
|
257
|
-
DELAY: 2,
|
|
258
|
-
TRAIN_REPLACEMENT_BY_BUS: 3,
|
|
259
|
-
CONSTRUCTION_SITE: 4,
|
|
260
|
-
END_MESSAGE: 5
|
|
261
|
-
};
|
|
262
|
-
return [...situations]?.sort((a, b) => priorities[a.cause] - priorities[b.cause]);
|
|
263
|
-
};
|
|
264
|
-
const getHimIcon = (situation) => {
|
|
265
|
-
switch (situation?.cause) {
|
|
266
|
-
case "DISTURBANCE":
|
|
267
|
-
return {
|
|
268
|
-
name: "disruption",
|
|
269
|
-
text: situation?.broadcastMessages?.length ? situation?.broadcastMessages[0].title : ""
|
|
270
|
-
};
|
|
271
|
-
case "INFORMATION":
|
|
272
|
-
return {
|
|
273
|
-
name: "info",
|
|
274
|
-
text: situation?.broadcastMessages.length ? situation?.broadcastMessages[0].title : ""
|
|
275
|
-
};
|
|
276
|
-
case "DELAY":
|
|
277
|
-
return {
|
|
278
|
-
name: "delay",
|
|
279
|
-
text: situation?.broadcastMessages.length ? situation?.broadcastMessages[0].title : ""
|
|
280
|
-
};
|
|
281
|
-
case "TRAIN_REPLACEMENT_BY_BUS":
|
|
282
|
-
return {
|
|
283
|
-
name: "replacementbus",
|
|
284
|
-
text: situation?.broadcastMessages.length ? situation?.broadcastMessages[0].title : ""
|
|
285
|
-
};
|
|
286
|
-
case "CONSTRUCTION_SITE":
|
|
287
|
-
return {
|
|
288
|
-
name: "construction",
|
|
289
|
-
text: situation?.broadcastMessages.length ? situation?.broadcastMessages[0].title : ""
|
|
290
|
-
};
|
|
291
|
-
default:
|
|
292
|
-
return {
|
|
293
|
-
name: "info",
|
|
294
|
-
text: situation?.broadcastMessages.length ? situation?.broadcastMessages[0].title : ""
|
|
295
|
-
};
|
|
296
|
-
}
|
|
297
|
-
};
|
|
298
|
-
const getCus = (trip, currentLanguage) => {
|
|
299
|
-
const { summary, legs } = trip || {};
|
|
300
|
-
const rideLegs = legs?.filter((leg) => isRideLeg(leg));
|
|
301
|
-
const { tripStatus } = summary || {};
|
|
302
|
-
if (tripStatus?.cancelled || tripStatus?.partiallyCancelled)
|
|
303
|
-
return { name: "cancellation", text: tripStatus?.cancelledText };
|
|
304
|
-
if (getReachableText(rideLegs))
|
|
305
|
-
return { name: "missed-connection", text: getReachableText(rideLegs) };
|
|
306
|
-
if (tripStatus?.alternative)
|
|
307
|
-
return { name: "alternative", text: tripStatus.alternativeText };
|
|
308
|
-
if (getRedirectedText(rideLegs))
|
|
309
|
-
return { name: "reroute", text: getRedirectedText(rideLegs) };
|
|
310
|
-
if (getUnplannedStop(rideLegs))
|
|
311
|
-
return { name: "add-stop", text: getUnplannedStop(rideLegs) };
|
|
312
|
-
if (tripStatus?.delayed || tripStatus?.delayedUnknown)
|
|
313
|
-
return { name: "delay", text: getDelayText(rideLegs) };
|
|
314
|
-
if (tripStatus?.quayChanged) {
|
|
315
|
-
const departure = rideLegs[0].departure;
|
|
316
|
-
return {
|
|
317
|
-
name: "platform-change",
|
|
318
|
-
text: departure.quayChanged ? departure.quayChangedText : i18nTripQuayChange[currentLanguage]
|
|
319
|
-
};
|
|
320
|
-
}
|
|
321
|
-
return {};
|
|
322
|
-
};
|
|
323
|
-
const findAndReplaceNotice = (notices) => {
|
|
324
|
-
const reservationNotice = ["RR", "RK", "RC", "RL", "RM", "RS", "RU", "XP", "XR", "XT"];
|
|
325
|
-
return notices.reduce((foundNotice, notice) => {
|
|
326
|
-
if (foundNotice)
|
|
327
|
-
return foundNotice;
|
|
328
|
-
if (reservationNotice.includes(notice.name)) {
|
|
329
|
-
return { ...notice, name: "RR" };
|
|
330
|
-
}
|
|
331
|
-
}, void 0);
|
|
332
|
-
};
|
|
333
|
-
const filterNotices = (notices) => {
|
|
334
|
-
const allowedNames = ["Z", "SB", "SZ", "VR", "TG"];
|
|
335
|
-
const filterNotice = notices.filter((notice, index) => {
|
|
336
|
-
return notices.findIndex((n) => n.name === notice.name) === index;
|
|
337
|
-
});
|
|
338
|
-
return filterNotice.filter((notice) => allowedNames.includes(notice.name)).sort((a, b) => allowedNames.indexOf(a.name) - allowedNames.indexOf(b.name));
|
|
339
|
-
};
|
|
340
|
-
const handleNotices = (notices) => {
|
|
341
|
-
const reservationNotice = findAndReplaceNotice(notices);
|
|
342
|
-
const filteredNotices = filterNotices(notices);
|
|
343
|
-
if (reservationNotice === void 0)
|
|
344
|
-
return filteredNotices;
|
|
345
|
-
if (!filteredNotices.length)
|
|
346
|
-
return [reservationNotice];
|
|
347
|
-
if (filteredNotices[0].name === "Z" && filteredNotices[1]) {
|
|
348
|
-
return [filteredNotices[0], reservationNotice, filteredNotices[1]].concat(filteredNotices.slice(2));
|
|
349
|
-
}
|
|
350
|
-
return [reservationNotice, ...filteredNotices];
|
|
351
|
-
};
|
|
352
|
-
let SbbTimetableRowElement = (() => {
|
|
353
|
-
var _trip_accessor_storage, _price_accessor_storage, _disableAnimation_accessor_storage, _boarding_accessor_storage, _loadingTrip_accessor_storage, _a11yFootpath_accessor_storage, _loadingPrice_accessor_storage, _cardActionLabel_accessor_storage, _accessibilityExpanded_accessor_storage, _active_accessor_storage, _a;
|
|
354
|
-
let _classSuper = SbbElement;
|
|
355
|
-
let _instanceExtraInitializers = [];
|
|
356
|
-
let _trip_decorators;
|
|
357
|
-
let _trip_initializers = [];
|
|
358
|
-
let _trip_extraInitializers = [];
|
|
359
|
-
let _price_decorators;
|
|
360
|
-
let _price_initializers = [];
|
|
361
|
-
let _price_extraInitializers = [];
|
|
362
|
-
let _disableAnimation_decorators;
|
|
363
|
-
let _disableAnimation_initializers = [];
|
|
364
|
-
let _disableAnimation_extraInitializers = [];
|
|
365
|
-
let _boarding_decorators;
|
|
366
|
-
let _boarding_initializers = [];
|
|
367
|
-
let _boarding_extraInitializers = [];
|
|
368
|
-
let _loadingTrip_decorators;
|
|
369
|
-
let _loadingTrip_initializers = [];
|
|
370
|
-
let _loadingTrip_extraInitializers = [];
|
|
371
|
-
let _a11yFootpath_decorators;
|
|
372
|
-
let _a11yFootpath_initializers = [];
|
|
373
|
-
let _a11yFootpath_extraInitializers = [];
|
|
374
|
-
let _loadingPrice_decorators;
|
|
375
|
-
let _loadingPrice_initializers = [];
|
|
376
|
-
let _loadingPrice_extraInitializers = [];
|
|
377
|
-
let _cardActionLabel_decorators;
|
|
378
|
-
let _cardActionLabel_initializers = [];
|
|
379
|
-
let _cardActionLabel_extraInitializers = [];
|
|
380
|
-
let _accessibilityExpanded_decorators;
|
|
381
|
-
let _accessibilityExpanded_initializers = [];
|
|
382
|
-
let _accessibilityExpanded_extraInitializers = [];
|
|
383
|
-
let _active_decorators;
|
|
384
|
-
let _active_initializers = [];
|
|
385
|
-
let _active_extraInitializers = [];
|
|
386
|
-
let _set_now_decorators;
|
|
387
|
-
return _a = class extends _classSuper {
|
|
388
|
-
constructor() {
|
|
389
|
-
super(...arguments);
|
|
390
|
-
__privateAdd(this, _trip_accessor_storage);
|
|
391
|
-
__privateAdd(this, _price_accessor_storage);
|
|
392
|
-
__privateAdd(this, _disableAnimation_accessor_storage);
|
|
393
|
-
__privateAdd(this, _boarding_accessor_storage);
|
|
394
|
-
__privateAdd(this, _loadingTrip_accessor_storage);
|
|
395
|
-
__privateAdd(this, _a11yFootpath_accessor_storage);
|
|
396
|
-
__privateAdd(this, _loadingPrice_accessor_storage);
|
|
397
|
-
__privateAdd(this, _cardActionLabel_accessor_storage);
|
|
398
|
-
__privateAdd(this, _accessibilityExpanded_accessor_storage);
|
|
399
|
-
__privateAdd(this, _active_accessor_storage);
|
|
400
|
-
__privateSet(this, _trip_accessor_storage, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _trip_initializers, null)));
|
|
401
|
-
__privateSet(this, _price_accessor_storage, (__runInitializers(this, _trip_extraInitializers), __runInitializers(this, _price_initializers, null)));
|
|
402
|
-
__privateSet(this, _disableAnimation_accessor_storage, (__runInitializers(this, _price_extraInitializers), __runInitializers(this, _disableAnimation_initializers, false)));
|
|
403
|
-
__privateSet(this, _boarding_accessor_storage, (__runInitializers(this, _disableAnimation_extraInitializers), __runInitializers(this, _boarding_initializers, null)));
|
|
404
|
-
__privateSet(this, _loadingTrip_accessor_storage, (__runInitializers(this, _boarding_extraInitializers), __runInitializers(this, _loadingTrip_initializers, false)));
|
|
405
|
-
__privateSet(this, _a11yFootpath_accessor_storage, (__runInitializers(this, _loadingTrip_extraInitializers), __runInitializers(this, _a11yFootpath_initializers, false)));
|
|
406
|
-
__privateSet(this, _loadingPrice_accessor_storage, (__runInitializers(this, _a11yFootpath_extraInitializers), __runInitializers(this, _loadingPrice_initializers, false)));
|
|
407
|
-
__privateSet(this, _cardActionLabel_accessor_storage, (__runInitializers(this, _loadingPrice_extraInitializers), __runInitializers(this, _cardActionLabel_initializers, "")));
|
|
408
|
-
__privateSet(this, _accessibilityExpanded_accessor_storage, (__runInitializers(this, _cardActionLabel_extraInitializers), __runInitializers(this, _accessibilityExpanded_initializers, false)));
|
|
409
|
-
__privateSet(this, _active_accessor_storage, (__runInitializers(this, _accessibilityExpanded_extraInitializers), __runInitializers(this, _active_initializers, false)));
|
|
410
|
-
this._now = (__runInitializers(this, _active_extraInitializers), null);
|
|
411
|
-
this._language = new SbbLanguageController(this);
|
|
412
|
-
}
|
|
413
|
-
/** The trip Prop. */
|
|
414
|
-
get trip() {
|
|
415
|
-
return __privateGet(this, _trip_accessor_storage);
|
|
416
|
-
}
|
|
417
|
-
set trip(value) {
|
|
418
|
-
__privateSet(this, _trip_accessor_storage, value);
|
|
419
|
-
}
|
|
420
|
-
/** The price Prop, which consists of the data for the badge. */
|
|
421
|
-
get price() {
|
|
422
|
-
return __privateGet(this, _price_accessor_storage);
|
|
423
|
-
}
|
|
424
|
-
set price(value) {
|
|
425
|
-
__privateSet(this, _price_accessor_storage, value);
|
|
426
|
-
}
|
|
427
|
-
/** This will be forwarded to the sbb-pearl-chain component - if true the position won't be animated. */
|
|
428
|
-
get disableAnimation() {
|
|
429
|
-
return __privateGet(this, _disableAnimation_accessor_storage);
|
|
430
|
-
}
|
|
431
|
-
set disableAnimation(value) {
|
|
432
|
-
__privateSet(this, _disableAnimation_accessor_storage, value);
|
|
433
|
-
}
|
|
434
|
-
/** This will be forwarded to the notices section */
|
|
435
|
-
get boarding() {
|
|
436
|
-
return __privateGet(this, _boarding_accessor_storage);
|
|
437
|
-
}
|
|
438
|
-
set boarding(value) {
|
|
439
|
-
__privateSet(this, _boarding_accessor_storage, value);
|
|
440
|
-
}
|
|
441
|
-
/**
|
|
442
|
-
* The loading state -
|
|
443
|
-
* when this is true it will be render skeleton with an idling animation
|
|
444
|
-
*/
|
|
445
|
-
get loadingTrip() {
|
|
446
|
-
return __privateGet(this, _loadingTrip_accessor_storage);
|
|
447
|
-
}
|
|
448
|
-
set loadingTrip(value) {
|
|
449
|
-
__privateSet(this, _loadingTrip_accessor_storage, value);
|
|
450
|
-
}
|
|
451
|
-
/**
|
|
452
|
-
* The Footpath attribute for rendering different icons
|
|
453
|
-
* true: render a11y-icon
|
|
454
|
-
* false: render walk-icon
|
|
455
|
-
* default: render walk-icon
|
|
456
|
-
*/
|
|
457
|
-
get a11yFootpath() {
|
|
458
|
-
return __privateGet(this, _a11yFootpath_accessor_storage);
|
|
459
|
-
}
|
|
460
|
-
set a11yFootpath(value) {
|
|
461
|
-
__privateSet(this, _a11yFootpath_accessor_storage, value);
|
|
462
|
-
}
|
|
463
|
-
/**
|
|
464
|
-
* The loading state -
|
|
465
|
-
* when this is true it will be render skeleton with an idling animation
|
|
466
|
-
*/
|
|
467
|
-
get loadingPrice() {
|
|
468
|
-
return __privateGet(this, _loadingPrice_accessor_storage);
|
|
469
|
-
}
|
|
470
|
-
set loadingPrice(value) {
|
|
471
|
-
__privateSet(this, _loadingPrice_accessor_storage, value);
|
|
472
|
-
}
|
|
473
|
-
/**
|
|
474
|
-
* Hidden label for the card action. It overrides the automatically generated accessibility text for the component. Use this prop to provide custom accessibility information for the component.
|
|
475
|
-
*/
|
|
476
|
-
get cardActionLabel() {
|
|
477
|
-
return __privateGet(this, _cardActionLabel_accessor_storage);
|
|
478
|
-
}
|
|
479
|
-
set cardActionLabel(value) {
|
|
480
|
-
__privateSet(this, _cardActionLabel_accessor_storage, value);
|
|
481
|
-
}
|
|
482
|
-
/** This will be forwarded to the sbb-card component as aria-expanded. */
|
|
483
|
-
get accessibilityExpanded() {
|
|
484
|
-
return __privateGet(this, _accessibilityExpanded_accessor_storage);
|
|
485
|
-
}
|
|
486
|
-
set accessibilityExpanded(value) {
|
|
487
|
-
__privateSet(this, _accessibilityExpanded_accessor_storage, value);
|
|
488
|
-
}
|
|
489
|
-
/** When this prop is true the sbb-card will be in the active state. */
|
|
490
|
-
get active() {
|
|
491
|
-
return __privateGet(this, _active_accessor_storage);
|
|
492
|
-
}
|
|
493
|
-
set active(value) {
|
|
494
|
-
__privateSet(this, _active_accessor_storage, value);
|
|
495
|
-
}
|
|
496
|
-
/**
|
|
497
|
-
* A configured date which acts as the current date instead of the real current date.
|
|
498
|
-
* Only recommended for testing purposes.
|
|
499
|
-
*/
|
|
500
|
-
set now(value) {
|
|
501
|
-
this._now = defaultDateAdapter.getValidDateOrNull(defaultDateAdapter.deserialize(value));
|
|
502
|
-
}
|
|
503
|
-
get now() {
|
|
504
|
-
return this._now ?? /* @__PURE__ */ new Date();
|
|
505
|
-
}
|
|
506
|
-
willUpdate(changedProperties) {
|
|
507
|
-
super.willUpdate(changedProperties);
|
|
508
|
-
if (changedProperties.has("loadingTrip")) {
|
|
509
|
-
setOrRemoveAttribute(this, "role", !this.loadingTrip ? "rowgroup" : null);
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
/** The skeleton render function for the loading state */
|
|
513
|
-
_renderSkeleton() {
|
|
514
|
-
return html`
|
|
515
|
-
<sbb-card class="sbb-loading sbb-card-spacing-4x-xxs">
|
|
516
|
-
${this.loadingPrice ? html`<div class="sbb-loading__badge" slot="badge"></div>` : nothing}
|
|
517
|
-
<div class="sbb-loading__wrapper">
|
|
518
|
-
<div class="sbb-loading__row"></div>
|
|
519
|
-
<div class="sbb-loading__row"></div>
|
|
520
|
-
<div class="sbb-loading__row"></div>
|
|
521
|
-
</div>
|
|
522
|
-
</sbb-card>
|
|
523
|
-
`;
|
|
524
|
-
}
|
|
525
|
-
_getRideLegs() {
|
|
526
|
-
return this.trip?.legs?.filter((leg) => isRideLeg(leg)) ?? [];
|
|
527
|
-
}
|
|
528
|
-
_getQuayTypeStrings() {
|
|
529
|
-
if (!this.trip.summary?.product)
|
|
530
|
-
return null;
|
|
531
|
-
const rideLegs = this._getRideLegs();
|
|
532
|
-
const isShort = this.trip.summary.product?.vehicleMode === "TRAIN";
|
|
533
|
-
const short = isShort ? rideLegs[0].serviceJourney.quayTypeShortName || "" : rideLegs[0].serviceJourney.quayTypeName || "";
|
|
534
|
-
return {
|
|
535
|
-
long: i18nFromPlatform[this._language.current] + " " + short,
|
|
536
|
-
short
|
|
537
|
-
};
|
|
538
|
-
}
|
|
539
|
-
/** map Quay */
|
|
540
|
-
_renderQuayType() {
|
|
541
|
-
if (!this.trip.summary?.product)
|
|
542
|
-
return void 0;
|
|
543
|
-
const quayTypeStrings = this._getQuayTypeStrings();
|
|
544
|
-
return html`
|
|
545
|
-
<span class="sbb-timetable__row--quay">
|
|
546
|
-
<span class="sbb-screen-reader-only">${quayTypeStrings?.long} </span>
|
|
547
|
-
<span class="sbb-timetable__row--quay-type" aria-hidden="true"
|
|
548
|
-
>${quayTypeStrings?.short}</span
|
|
549
|
-
>
|
|
550
|
-
</span>
|
|
551
|
-
`;
|
|
552
|
-
}
|
|
553
|
-
_handleHimCus(trip) {
|
|
554
|
-
const { situations } = trip || {};
|
|
555
|
-
const sortedSituations = situations && sortSituation(situations);
|
|
556
|
-
const cus = getCus(trip, this._language.current);
|
|
557
|
-
return {
|
|
558
|
-
cus: Object.keys(cus)?.length ? cus : null,
|
|
559
|
-
him: situations?.length ? getHimIcon(sortedSituations[0]) : null
|
|
560
|
-
};
|
|
561
|
-
}
|
|
562
|
-
_getAccessibilityText(trip) {
|
|
563
|
-
const { summary, legs, notices } = trip || {};
|
|
564
|
-
const { departureWalk, arrivalWalk, departure, arrival, product, direction, occupancy, duration } = summary || {};
|
|
565
|
-
const { departureTimeAttribute, arrivalTimeAttribute } = getDepartureArrivalTimeAttribute(legs, departureWalk || 0, arrivalWalk || 0, this._language.current, this.a11yFootpath);
|
|
566
|
-
const rideLegs = this._getRideLegs();
|
|
567
|
-
const departureTime = departure?.time ? removeTimezoneFromISOTimeString(departure.time) : void 0;
|
|
568
|
-
const arrivalTime = arrival?.time ? removeTimezoneFromISOTimeString(arrival.time) : void 0;
|
|
569
|
-
const departureWalkText = departureTimeAttribute ? `${departureTimeAttribute.text} ${departureTimeAttribute.duration}, ` : "";
|
|
570
|
-
const arrivalWalkText = arrivalTimeAttribute ? `${arrivalTimeAttribute.text} ${arrivalTimeAttribute.duration}, ` : "";
|
|
571
|
-
const departureTimeText = departureTime ? `${i18nDeparture[this._language.current]}: ${format(departureTime, "HH:mm")}, ` : "";
|
|
572
|
-
const getDepartureQuayText = () => {
|
|
573
|
-
if (!departure?.quayFormatted) {
|
|
574
|
-
return "";
|
|
575
|
-
}
|
|
576
|
-
const changedQuayPrefix = departure?.quayChanged ? `${i18nNew[this._language.current]} ` : "";
|
|
577
|
-
return `${changedQuayPrefix}${this._getQuayTypeStrings()?.long} ${departure?.quayFormatted}, `;
|
|
578
|
-
};
|
|
579
|
-
const meansOfTransportText = product && product.vehicleMode ? i18nMeansOfTransport[product.vehicleMode.toLowerCase()] && `${i18nMeansOfTransport[product.vehicleMode.toLowerCase()][this._language.current]}, ` : "";
|
|
580
|
-
const vehicleSubModeText = product?.vehicleSubModeShortName ? `${product.vehicleSubModeShortName} ${product.line || ""}, ` : "";
|
|
581
|
-
const directionText = `${i18nDirection[this._language.current]} ${direction}, `;
|
|
582
|
-
const himCus = this._handleHimCus(trip);
|
|
583
|
-
const cusText = himCus?.cus?.text ? `${i18nRealTimeInfo[this._language.current]}: ${himCus?.cus?.text}, ` : "";
|
|
584
|
-
const himText = himCus?.him?.text ? `${i18nRealTimeInfo[this._language.current]}: ${himCus?.him?.text}, ` : "";
|
|
585
|
-
const boardingText = this.boarding ? `${this.boarding.text}, ` : "";
|
|
586
|
-
const priceText = `${this.price?.isDiscount ? i18nSupersaver[this._language.current] : ""} ${this.price?.text && this.price?.price ? (this.price?.text || "") + " " + (this.price?.price || "") + ", " : ""}`;
|
|
587
|
-
const transferProcedures = rideLegs.length > 2 ? `${rideLegs.length - 1} ${i18nTransferProcedures[this._language.current]}, ` : rideLegs.length > 1 ? `${rideLegs.length - 1} ${i18nTransferProcedure[this._language.current]}, ` : "";
|
|
588
|
-
const arrivalTimeText = arrivalTime ? `${i18nArrival[this._language.current]}: ${format(arrivalTime, "HH:mm")}, ` : "";
|
|
589
|
-
let occupancyText = "";
|
|
590
|
-
if (occupancy) {
|
|
591
|
-
if (occupancy.firstClass && occupancy.firstClass !== "UNKNOWN") {
|
|
592
|
-
occupancyText += `${i18nClass.first[this._language.current]} ${i18nOccupancy[occupancy.firstClass.toLowerCase()]?.[this._language.current]}.`;
|
|
593
|
-
}
|
|
594
|
-
if (occupancy.secondClass && occupancy.secondClass !== "UNKNOWN") {
|
|
595
|
-
occupancyText += ` ${i18nClass.second[this._language.current]} ${i18nOccupancy[occupancy.secondClass.toLowerCase()]?.[this._language.current]}.`;
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
const attributes = notices && handleNotices(notices).length && handleNotices(notices)?.map((notice, index) => index < 4 && notice.text?.template).join(", ") + ", ";
|
|
599
|
-
const attributesText = attributes ? `${i18nTravelhints[this._language.current]}: ${attributes}` : "";
|
|
600
|
-
const durationText = !!duration && duration > 0 ? `${i18nTripDuration[this._language.current]} ${durationToTime(duration, this._language.current).long}, ` : "";
|
|
601
|
-
return [
|
|
602
|
-
departureWalkText,
|
|
603
|
-
departureTimeText,
|
|
604
|
-
getDepartureQuayText(),
|
|
605
|
-
meansOfTransportText,
|
|
606
|
-
vehicleSubModeText,
|
|
607
|
-
directionText,
|
|
608
|
-
cusText,
|
|
609
|
-
boardingText,
|
|
610
|
-
priceText,
|
|
611
|
-
cusText ? "" : himText,
|
|
612
|
-
arrivalTimeText,
|
|
613
|
-
arrivalWalkText,
|
|
614
|
-
durationText,
|
|
615
|
-
transferProcedures,
|
|
616
|
-
occupancyText,
|
|
617
|
-
attributesText
|
|
618
|
-
].map((e) => e?.trim()).filter((e) => e && e.length > 0).join(" ");
|
|
619
|
-
}
|
|
620
|
-
render() {
|
|
621
|
-
if (this.loadingTrip) {
|
|
622
|
-
return this._renderSkeleton();
|
|
623
|
-
}
|
|
624
|
-
const { legs, id, notices, summary } = this.trip || {};
|
|
625
|
-
const { product, direction, departureWalk, departure, arrival, arrivalWalk, occupancy, duration } = summary || {};
|
|
626
|
-
const himCus = this._handleHimCus(this.trip);
|
|
627
|
-
const hasHimCus = !!himCus.cus || !!himCus.him;
|
|
628
|
-
const noticeAttributes = notices && handleNotices(notices);
|
|
629
|
-
const durationObj = duration ? durationToTime(duration, this._language.current) : null;
|
|
630
|
-
return html`
|
|
631
|
-
<sbb-card class="sbb-card-spacing-4x-xxs" id=${id}>
|
|
632
|
-
<sbb-card-button
|
|
633
|
-
?active=${this.active}
|
|
634
|
-
aria-expanded=${this.accessibilityExpanded ? "true" : nothing}
|
|
635
|
-
>
|
|
636
|
-
${this.cardActionLabel ? this.cardActionLabel : this._getAccessibilityText(this.trip)}
|
|
637
|
-
</sbb-card-button>
|
|
638
|
-
${this.loadingPrice ? html`<div class="sbb-loading__badge" slot="badge"></div>` : nothing}
|
|
639
|
-
${this.price && !this.loadingPrice ? html`<sbb-card-badge color=${this.price.isDiscount ? "charcoal" : "white"}>
|
|
640
|
-
${this.price.isDiscount ? html`<span aria-hidden="true">
|
|
641
|
-
%<span class="sbb-screen-reader-only"
|
|
642
|
-
>${i18nSupersaver[this._language.current]}</span
|
|
643
|
-
>
|
|
644
|
-
</span>` : nothing}
|
|
645
|
-
${this.price.text ? html`<span>${this.price.text}</span>` : nothing}
|
|
646
|
-
${this.price.price ? html`<span>${this.price.price}</span>` : nothing}
|
|
647
|
-
</sbb-card-badge>` : nothing}
|
|
648
|
-
<div class="sbb-timetable__row" role="row">
|
|
649
|
-
<div class="sbb-timetable__row-header" role="gridcell">
|
|
650
|
-
<div class="sbb-timetable__row-details">
|
|
651
|
-
${product?.corporateIdentityPictogram && html`<span class="sbb-timetable__row-transport-wrapper">
|
|
652
|
-
<sbb-icon
|
|
653
|
-
class="sbb-timetable__row-transport-icon"
|
|
654
|
-
name="picto:${product.corporateIdentityPictogram}"
|
|
655
|
-
></sbb-icon>
|
|
656
|
-
<span class="sbb-screen-reader-only">
|
|
657
|
-
${product && product.vehicleMode && i18nMeansOfTransport[product.vehicleMode.toLowerCase()] && i18nMeansOfTransport[product.vehicleMode.toLowerCase()][this._language.current]}
|
|
658
|
-
|
|
659
|
-
</span>
|
|
660
|
-
</span>`}
|
|
661
|
-
${product && (product.corporateIdentityIcon ? renderIconProduct(product.corporateIdentityIcon, product.name) : product.vehicleSubModeShortName && renderStringProduct(product.vehicleSubModeShortName, product?.line))}
|
|
662
|
-
</div>
|
|
663
|
-
${direction ? html`<p>${`${i18nDirection[this._language.current]} ${direction}`}</p>` : nothing}
|
|
664
|
-
</div>
|
|
665
|
-
<sbb-pearl-chain-time
|
|
666
|
-
role="gridcell"
|
|
667
|
-
.legs=${legs}
|
|
668
|
-
.departureTime=${departure?.time}
|
|
669
|
-
.arrivalTime=${arrival?.time}
|
|
670
|
-
.departureWalk=${departureWalk}
|
|
671
|
-
.arrivalWalk=${arrivalWalk}
|
|
672
|
-
?disable-animation=${this.disableAnimation}
|
|
673
|
-
?a11y-footpath=${this.a11yFootpath}
|
|
674
|
-
.now=${this.now}
|
|
675
|
-
></sbb-pearl-chain-time>
|
|
676
|
-
<div class="sbb-timetable__row-footer" role="gridcell">
|
|
677
|
-
${product && departure?.quayFormatted ? html`<span
|
|
678
|
-
class=${departure?.quayChanged ? `sbb-timetable__row-quay--changed` : nothing}
|
|
679
|
-
>
|
|
680
|
-
<span class="sbb-screen-reader-only">
|
|
681
|
-
${`${i18nDeparture[this._language.current]} ${departure?.quayChanged ? i18nNew[this._language.current] : ""}`}
|
|
682
|
-
|
|
683
|
-
</span>
|
|
684
|
-
${this._renderQuayType()} ${departure?.quayFormatted}
|
|
685
|
-
</span>` : nothing}
|
|
686
|
-
${occupancy?.firstClass && occupancy?.firstClass !== "UNKNOWN" || occupancy?.secondClass && occupancy.secondClass !== "UNKNOWN" ? html`<sbb-timetable-occupancy
|
|
687
|
-
.firstClassOccupancy=${occupancy?.firstClass?.toLowerCase()}
|
|
688
|
-
.secondClassOccupancy=${occupancy?.secondClass?.toLowerCase()}
|
|
689
|
-
></sbb-timetable-occupancy>` : nothing}
|
|
690
|
-
${noticeAttributes && noticeAttributes.length || this.boarding ? html`<ul class="sbb-timetable__row-hints" role="list">
|
|
691
|
-
${noticeAttributes?.map((notice, index) => index < 4 ? html`<li>
|
|
692
|
-
<sbb-icon
|
|
693
|
-
class="sbb-travel-hints__item"
|
|
694
|
-
name=${"sa-" + notice.name?.toLowerCase()}
|
|
695
|
-
></sbb-icon>
|
|
696
|
-
<span class="sbb-screen-reader-only">${notice.text?.template}</span>
|
|
697
|
-
</li>` : nothing)}
|
|
698
|
-
${this.boarding ? html`<li>
|
|
699
|
-
<sbb-icon
|
|
700
|
-
class="sbb-travel-hints__item"
|
|
701
|
-
name=${this.boarding?.name}
|
|
702
|
-
aria-label=${this.boarding?.text}
|
|
703
|
-
aria-hidden="false"
|
|
704
|
-
></sbb-icon>
|
|
705
|
-
</li>` : nothing}
|
|
706
|
-
</ul>` : nothing}
|
|
707
|
-
${duration && duration > 0 ? html`<time>
|
|
708
|
-
<span class="sbb-screen-reader-only">
|
|
709
|
-
${`${i18nTripDuration[this._language.current]} ${durationObj.long}`}
|
|
710
|
-
</span>
|
|
711
|
-
<span aria-hidden="true">${durationObj.short}</span>
|
|
712
|
-
</time>` : nothing}
|
|
713
|
-
${hasHimCus && (himCus.cus || himCus.him) ? html`<span class="sbb-timetable__row-warning">
|
|
714
|
-
<sbb-icon name=${(himCus.cus || himCus.him).name}></sbb-icon>
|
|
715
|
-
<span class="sbb-screen-reader-only">${(himCus.cus || himCus.him).text}</span>
|
|
716
|
-
</span>` : nothing}
|
|
717
|
-
</div>
|
|
718
|
-
</div>
|
|
719
|
-
</sbb-card>
|
|
720
|
-
`;
|
|
721
|
-
}
|
|
722
|
-
}, _trip_accessor_storage = new WeakMap(), _price_accessor_storage = new WeakMap(), _disableAnimation_accessor_storage = new WeakMap(), _boarding_accessor_storage = new WeakMap(), _loadingTrip_accessor_storage = new WeakMap(), _a11yFootpath_accessor_storage = new WeakMap(), _loadingPrice_accessor_storage = new WeakMap(), _cardActionLabel_accessor_storage = new WeakMap(), _accessibilityExpanded_accessor_storage = new WeakMap(), _active_accessor_storage = new WeakMap(), (() => {
|
|
723
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
724
|
-
_trip_decorators = [property({ type: Object })];
|
|
725
|
-
_price_decorators = [property({ type: Object })];
|
|
726
|
-
_disableAnimation_decorators = [forceType(), property({ attribute: "disable-animation", reflect: true, type: Boolean })];
|
|
727
|
-
_boarding_decorators = [property({ type: Object })];
|
|
728
|
-
_loadingTrip_decorators = [forceType(), property({ attribute: "loading-trip", type: Boolean })];
|
|
729
|
-
_a11yFootpath_decorators = [forceType(), property({ attribute: "a11y-footpath", type: Boolean })];
|
|
730
|
-
_loadingPrice_decorators = [forceType(), property({ attribute: "loading-price", type: Boolean })];
|
|
731
|
-
_cardActionLabel_decorators = [forceType(), property({ attribute: "card-action-label" })];
|
|
732
|
-
_accessibilityExpanded_decorators = [forceType(), property({ attribute: "accessibility-expanded", type: Boolean })];
|
|
733
|
-
_active_decorators = [forceType(), property({ type: Boolean })];
|
|
734
|
-
_set_now_decorators = [property()];
|
|
735
|
-
__esDecorate(_a, null, _trip_decorators, { kind: "accessor", name: "trip", static: false, private: false, access: { has: (obj) => "trip" in obj, get: (obj) => obj.trip, set: (obj, value) => {
|
|
736
|
-
obj.trip = value;
|
|
737
|
-
} }, metadata: _metadata }, _trip_initializers, _trip_extraInitializers);
|
|
738
|
-
__esDecorate(_a, null, _price_decorators, { kind: "accessor", name: "price", static: false, private: false, access: { has: (obj) => "price" in obj, get: (obj) => obj.price, set: (obj, value) => {
|
|
739
|
-
obj.price = value;
|
|
740
|
-
} }, metadata: _metadata }, _price_initializers, _price_extraInitializers);
|
|
741
|
-
__esDecorate(_a, null, _disableAnimation_decorators, { kind: "accessor", name: "disableAnimation", static: false, private: false, access: { has: (obj) => "disableAnimation" in obj, get: (obj) => obj.disableAnimation, set: (obj, value) => {
|
|
742
|
-
obj.disableAnimation = value;
|
|
743
|
-
} }, metadata: _metadata }, _disableAnimation_initializers, _disableAnimation_extraInitializers);
|
|
744
|
-
__esDecorate(_a, null, _boarding_decorators, { kind: "accessor", name: "boarding", static: false, private: false, access: { has: (obj) => "boarding" in obj, get: (obj) => obj.boarding, set: (obj, value) => {
|
|
745
|
-
obj.boarding = value;
|
|
746
|
-
} }, metadata: _metadata }, _boarding_initializers, _boarding_extraInitializers);
|
|
747
|
-
__esDecorate(_a, null, _loadingTrip_decorators, { kind: "accessor", name: "loadingTrip", static: false, private: false, access: { has: (obj) => "loadingTrip" in obj, get: (obj) => obj.loadingTrip, set: (obj, value) => {
|
|
748
|
-
obj.loadingTrip = value;
|
|
749
|
-
} }, metadata: _metadata }, _loadingTrip_initializers, _loadingTrip_extraInitializers);
|
|
750
|
-
__esDecorate(_a, null, _a11yFootpath_decorators, { kind: "accessor", name: "a11yFootpath", static: false, private: false, access: { has: (obj) => "a11yFootpath" in obj, get: (obj) => obj.a11yFootpath, set: (obj, value) => {
|
|
751
|
-
obj.a11yFootpath = value;
|
|
752
|
-
} }, metadata: _metadata }, _a11yFootpath_initializers, _a11yFootpath_extraInitializers);
|
|
753
|
-
__esDecorate(_a, null, _loadingPrice_decorators, { kind: "accessor", name: "loadingPrice", static: false, private: false, access: { has: (obj) => "loadingPrice" in obj, get: (obj) => obj.loadingPrice, set: (obj, value) => {
|
|
754
|
-
obj.loadingPrice = value;
|
|
755
|
-
} }, metadata: _metadata }, _loadingPrice_initializers, _loadingPrice_extraInitializers);
|
|
756
|
-
__esDecorate(_a, null, _cardActionLabel_decorators, { kind: "accessor", name: "cardActionLabel", static: false, private: false, access: { has: (obj) => "cardActionLabel" in obj, get: (obj) => obj.cardActionLabel, set: (obj, value) => {
|
|
757
|
-
obj.cardActionLabel = value;
|
|
758
|
-
} }, metadata: _metadata }, _cardActionLabel_initializers, _cardActionLabel_extraInitializers);
|
|
759
|
-
__esDecorate(_a, null, _accessibilityExpanded_decorators, { kind: "accessor", name: "accessibilityExpanded", static: false, private: false, access: { has: (obj) => "accessibilityExpanded" in obj, get: (obj) => obj.accessibilityExpanded, set: (obj, value) => {
|
|
760
|
-
obj.accessibilityExpanded = value;
|
|
761
|
-
} }, metadata: _metadata }, _accessibilityExpanded_initializers, _accessibilityExpanded_extraInitializers);
|
|
762
|
-
__esDecorate(_a, null, _active_decorators, { kind: "accessor", name: "active", static: false, private: false, access: { has: (obj) => "active" in obj, get: (obj) => obj.active, set: (obj, value) => {
|
|
763
|
-
obj.active = value;
|
|
764
|
-
} }, metadata: _metadata }, _active_initializers, _active_extraInitializers);
|
|
765
|
-
__esDecorate(_a, null, _set_now_decorators, { kind: "setter", name: "now", static: false, private: false, access: { has: (obj) => "now" in obj, set: (obj, value) => {
|
|
766
|
-
obj.now = value;
|
|
767
|
-
} }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
768
|
-
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
769
|
-
})(), _a.elementName = "sbb-timetable-row", _a.styles = [boxSizingStyles, style], _a;
|
|
770
|
-
})();
|
|
771
|
-
export {
|
|
772
|
-
SbbTimetableRowElement,
|
|
773
|
-
filterNotices,
|
|
774
|
-
getCus,
|
|
775
|
-
getHimIcon,
|
|
776
|
-
handleNotices,
|
|
777
|
-
renderIconProduct,
|
|
778
|
-
renderStringProduct,
|
|
779
|
-
sortSituation
|
|
780
|
-
};
|
|
781
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvdGltZXRhYmxlLXJvdy90aW1ldGFibGUtcm93LmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYmJFbGVtZW50IH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZGVmYXVsdERhdGVBZGFwdGVyIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kYXRldGltZS5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgc2V0T3JSZW1vdmVBdHRyaWJ1dGUgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2RvbS5qcyc7XG5pbXBvcnQge1xuICBpMThuQXJyaXZhbCxcbiAgaTE4bkNsYXNzLFxuICBpMThuRGVwYXJ0dXJlLFxuICBpMThuRGlyZWN0aW9uLFxuICBpMThuRnJvbVBsYXRmb3JtLFxuICBpMThuTWVhbnNPZlRyYW5zcG9ydCxcbiAgaTE4bk5ldyxcbiAgaTE4bk9jY3VwYW5jeSxcbiAgaTE4blJlYWxUaW1lSW5mbyxcbiAgaTE4blN1cGVyc2F2ZXIsXG4gIGkxOG5UcmFuc2ZlclByb2NlZHVyZSxcbiAgaTE4blRyYW5zZmVyUHJvY2VkdXJlcyxcbiAgaTE4blRyYXZlbGhpbnRzLFxuICBpMThuVHJpcER1cmF0aW9uLFxuICBpMThuVHJpcFF1YXlDaGFuZ2UsXG59IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9jY3VwYW5jeSB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL3N0eWxlcy5qcyc7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZHVyYXRpb25Ub1RpbWUsIHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcgfSBmcm9tICcuLi9jb3JlL2RhdGV0aW1lLnRzJztcbmltcG9ydCB0eXBlIHsgSVRyaXBJdGVtLCBOb3RpY2UsIFB0UmlkZUxlZywgUHRTaXR1YXRpb24gfSBmcm9tICcuLi9jb3JlL3RpbWV0YWJsZS50cyc7XG5pbXBvcnQgeyBnZXREZXBhcnR1cmVBcnJpdmFsVGltZUF0dHJpYnV0ZSwgaXNSaWRlTGVnIH0gZnJvbSAnLi4vY29yZS90aW1ldGFibGUudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi90aW1ldGFibGUtcm93LnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY2FyZC5qcyc7XG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2ljb24uanMnO1xuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy90aW1ldGFibGUtb2NjdXBhbmN5LmpzJztcbmltcG9ydCAnLi4vcGVhcmwtY2hhaW4tdGltZS50cyc7XG5cbi8qKiBIaW1DdXMgaW50ZXJmYWNlIGZvciBtYXBwZWQgaWNvbiBuYW1lIGFuZCB0ZXh0ICovXG5leHBvcnQgaW50ZXJmYWNlIEhpbUN1cyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGV4dD86IHN0cmluZyB8IG51bGw7XG59XG5cbi8qKiBCb2FyZGluZyBpY29uIGludGVyZmFjZSBmb3IgbWFwcGVkIGljb24gbmFtZSBhbmQgdGV4dCAqL1xuZXhwb3J0IGludGVyZmFjZSBCb2FyZGluZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByaWNlIHtcbiAgcHJpY2U/OiBzdHJpbmc7XG4gIHRleHQ/OiBzdHJpbmc7XG4gIGlzRGlzY291bnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgcmVuZGVySWNvblByb2R1Y3QgPSAoaWNvbjogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZVJlc3VsdCA9PiB7XG4gIHJldHVybiBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXRyYW5zcG9ydFwiPlxuICAgIDxzYmItaWNvbiBuYW1lPSR7aWNvbn0+PC9zYmItaWNvbj5cbiAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4ke25hbWV9PC9zcGFuPlxuICA8L3NwYW4+YDtcbn07XG5cbmV4cG9ydCBjb25zdCByZW5kZXJTdHJpbmdQcm9kdWN0ID0gKHZlaGljbGVOYW1lOiBzdHJpbmcsIGxpbmU/OiBzdHJpbmcgfCBudWxsKTogVGVtcGxhdGVSZXN1bHQgPT4ge1xuICBjb25zdCBzcGFjZSA9IFsnTScsICdCJywgJ1QnXS5pbmNsdWRlcyh2ZWhpY2xlTmFtZSkgPyAnICcgOiAnJztcbiAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0bnVtYmVyXCI+XG4gICAgJHtsaW5lICE9PSBudWxsID8gdmVoaWNsZU5hbWUgKyBzcGFjZSArIGxpbmUgOiB2ZWhpY2xlTmFtZX1cbiAgPC9zcGFuPmA7XG59O1xuXG5jb25zdCBnZXRSZWFjaGFibGVUZXh0ID0gKGxlZ3M6IFB0UmlkZUxlZ1tdKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBsZWdzPy5maW5kKChsZWcpID0+IGxlZy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnJlYWNoYWJsZVRleHQpPy5zZXJ2aWNlSm91cm5leVxuICAgID8uc2VydmljZUFsdGVyYXRpb24/LnJlYWNoYWJsZVRleHQ7XG59O1xuXG5jb25zdCBnZXREZWxheVRleHQgPSAobGVnczogUHRSaWRlTGVnW10pOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGxlZ3M/LmZpbmQoKGxlZykgPT4gbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8uZGVsYXlUZXh0KT8uc2VydmljZUpvdXJuZXlcbiAgICA/LnNlcnZpY2VBbHRlcmF0aW9uPy5kZWxheVRleHQ7XG59O1xuXG5jb25zdCBnZXRSZWRpcmVjdGVkVGV4dCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiAhIWxlZy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnJlZGlyZWN0ZWRUZXh0KVxuICAgID8uc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5yZWRpcmVjdGVkVGV4dDtcbn07XG5cbmNvbnN0IGdldFVucGxhbm5lZFN0b3AgPSAobGVnczogUHRSaWRlTGVnW10pOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGxlZ3M/LmZpbmQoKGxlZykgPT4gISFsZWcuc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy51bnBsYW5uZWRTdG9wUG9pbnRzVGV4dClcbiAgICA/LnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8udW5wbGFubmVkU3RvcFBvaW50c1RleHQ7XG59O1xuXG5leHBvcnQgY29uc3Qgc29ydFNpdHVhdGlvbiA9IChzaXR1YXRpb25zOiBQdFNpdHVhdGlvbltdKTogUHRTaXR1YXRpb25bXSA9PiB7XG4gIGNvbnN0IHByaW9yaXRpZXMgPSB7XG4gICAgRElTVFVSQkFOQ0U6IDAsXG4gICAgSU5GT1JNQVRJT046IDEsXG4gICAgREVMQVk6IDIsXG4gICAgVFJBSU5fUkVQTEFDRU1FTlRfQllfQlVTOiAzLFxuICAgIENPTlNUUlVDVElPTl9TSVRFOiA0LFxuICAgIEVORF9NRVNTQUdFOiA1LFxuICB9O1xuXG4gIHJldHVybiBbLi4uc2l0dWF0aW9uc10/LnNvcnQoXG4gICAgKGE6IFB0U2l0dWF0aW9uLCBiOiBQdFNpdHVhdGlvbikgPT4gcHJpb3JpdGllc1thLmNhdXNlIV0gLSBwcmlvcml0aWVzW2IuY2F1c2UhXSxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaW1JY29uID0gKHNpdHVhdGlvbjogUHRTaXR1YXRpb24pOiBIaW1DdXMgPT4ge1xuICBzd2l0Y2ggKHNpdHVhdGlvbj8uY2F1c2UpIHtcbiAgICBjYXNlICdESVNUVVJCQU5DRSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnZGlzcnVwdGlvbicsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXM/Lmxlbmd0aCA/IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXNbMF0udGl0bGUgOiAnJyxcbiAgICAgIH07XG4gICAgY2FzZSAnSU5GT1JNQVRJT04nOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogJ2luZm8nLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzLmxlbmd0aCA/IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXNbMF0udGl0bGUgOiAnJyxcbiAgICAgIH07XG4gICAgY2FzZSAnREVMQVknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogJ2RlbGF5JyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGNhc2UgJ1RSQUlOX1JFUExBQ0VNRU5UX0JZX0JVUyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAncmVwbGFjZW1lbnRidXMnLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzLmxlbmd0aCA/IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXNbMF0udGl0bGUgOiAnJyxcbiAgICAgIH07XG4gICAgY2FzZSAnQ09OU1RSVUNUSU9OX1NJVEUnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogJ2NvbnN0cnVjdGlvbicsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogJ2luZm8nLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzLmxlbmd0aCA/IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXNbMF0udGl0bGUgOiAnJyxcbiAgICAgIH07XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDdXMgPSAodHJpcDogSVRyaXBJdGVtLCBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyk6IEhpbUN1cyA9PiB7XG4gIGNvbnN0IHsgc3VtbWFyeSwgbGVncyB9ID0gdHJpcCB8fCB7fTtcbiAgY29uc3QgcmlkZUxlZ3MgPSBsZWdzPy5maWx0ZXIoKGxlZykgPT4gaXNSaWRlTGVnKGxlZykpIGFzIFB0UmlkZUxlZ1tdO1xuICBjb25zdCB7IHRyaXBTdGF0dXMgfSA9IHN1bW1hcnkgfHwge307XG5cbiAgaWYgKHRyaXBTdGF0dXM/LmNhbmNlbGxlZCB8fCB0cmlwU3RhdHVzPy5wYXJ0aWFsbHlDYW5jZWxsZWQpXG4gICAgcmV0dXJuIHsgbmFtZTogJ2NhbmNlbGxhdGlvbicsIHRleHQ6IHRyaXBTdGF0dXM/LmNhbmNlbGxlZFRleHQgfTtcbiAgaWYgKGdldFJlYWNoYWJsZVRleHQocmlkZUxlZ3MpKVxuICAgIHJldHVybiB7IG5hbWU6ICdtaXNzZWQtY29ubmVjdGlvbicsIHRleHQ6IGdldFJlYWNoYWJsZVRleHQocmlkZUxlZ3MpIH07XG4gIGlmICh0cmlwU3RhdHVzPy5hbHRlcm5hdGl2ZSkgcmV0dXJuIHsgbmFtZTogJ2FsdGVybmF0aXZlJywgdGV4dDogdHJpcFN0YXR1cy5hbHRlcm5hdGl2ZVRleHQgfTtcbiAgaWYgKGdldFJlZGlyZWN0ZWRUZXh0KHJpZGVMZWdzKSkgcmV0dXJuIHsgbmFtZTogJ3Jlcm91dGUnLCB0ZXh0OiBnZXRSZWRpcmVjdGVkVGV4dChyaWRlTGVncykgfTtcbiAgaWYgKGdldFVucGxhbm5lZFN0b3AocmlkZUxlZ3MpKSByZXR1cm4geyBuYW1lOiAnYWRkLXN0b3AnLCB0ZXh0OiBnZXRVbnBsYW5uZWRTdG9wKHJpZGVMZWdzKSB9O1xuICBpZiAodHJpcFN0YXR1cz8uZGVsYXllZCB8fCB0cmlwU3RhdHVzPy5kZWxheWVkVW5rbm93bilcbiAgICByZXR1cm4geyBuYW1lOiAnZGVsYXknLCB0ZXh0OiBnZXREZWxheVRleHQocmlkZUxlZ3MpIH07XG4gIGlmICh0cmlwU3RhdHVzPy5xdWF5Q2hhbmdlZCkge1xuICAgIGNvbnN0IGRlcGFydHVyZSA9IHJpZGVMZWdzWzBdLmRlcGFydHVyZTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ3BsYXRmb3JtLWNoYW5nZScsXG4gICAgICB0ZXh0OiBkZXBhcnR1cmUucXVheUNoYW5nZWQgPyBkZXBhcnR1cmUucXVheUNoYW5nZWRUZXh0IDogaTE4blRyaXBRdWF5Q2hhbmdlW2N1cnJlbnRMYW5ndWFnZV0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7fSBhcyBIaW1DdXM7XG59O1xuXG5jb25zdCBmaW5kQW5kUmVwbGFjZU5vdGljZSA9IChub3RpY2VzOiBOb3RpY2VbXSk6IE5vdGljZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHJlc2VydmF0aW9uTm90aWNlID0gWydSUicsICdSSycsICdSQycsICdSTCcsICdSTScsICdSUycsICdSVScsICdYUCcsICdYUicsICdYVCddO1xuXG4gIHJldHVybiBub3RpY2VzLnJlZHVjZSgoZm91bmROb3RpY2U6IE5vdGljZSB8IHVuZGVmaW5lZCwgbm90aWNlOiBOb3RpY2UpOiBOb3RpY2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChmb3VuZE5vdGljZSkgcmV0dXJuIGZvdW5kTm90aWNlO1xuICAgIGlmIChyZXNlcnZhdGlvbk5vdGljZS5pbmNsdWRlcyhub3RpY2UubmFtZSkpIHtcbiAgICAgIHJldHVybiB7IC4uLm5vdGljZSwgbmFtZTogJ1JSJyB9IGFzIE5vdGljZTtcbiAgICB9XG4gIH0sIHVuZGVmaW5lZCk7XG59O1xuXG5leHBvcnQgY29uc3QgZmlsdGVyTm90aWNlcyA9IChub3RpY2VzOiBOb3RpY2VbXSk6IE5vdGljZVtdID0+IHtcbiAgY29uc3QgYWxsb3dlZE5hbWVzID0gWydaJywgJ1NCJywgJ1NaJywgJ1ZSJywgJ1RHJ107XG5cbiAgY29uc3QgZmlsdGVyTm90aWNlID0gbm90aWNlcy5maWx0ZXIoKG5vdGljZSwgaW5kZXgpID0+IHtcbiAgICByZXR1cm4gbm90aWNlcy5maW5kSW5kZXgoKG4pID0+IG4ubmFtZSA9PT0gbm90aWNlLm5hbWUpID09PSBpbmRleDtcbiAgfSk7XG5cbiAgcmV0dXJuIGZpbHRlck5vdGljZVxuICAgIC5maWx0ZXIoKG5vdGljZSkgPT4gYWxsb3dlZE5hbWVzLmluY2x1ZGVzKG5vdGljZS5uYW1lKSlcbiAgICAuc29ydCgoYSwgYikgPT4gYWxsb3dlZE5hbWVzLmluZGV4T2YoYS5uYW1lKSAtIGFsbG93ZWROYW1lcy5pbmRleE9mKGIubmFtZSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZU5vdGljZXMgPSAobm90aWNlczogTm90aWNlW10pOiBOb3RpY2VbXSA9PiB7XG4gIGNvbnN0IHJlc2VydmF0aW9uTm90aWNlID0gZmluZEFuZFJlcGxhY2VOb3RpY2Uobm90aWNlcyk7XG4gIGNvbnN0IGZpbHRlcmVkTm90aWNlcyA9IGZpbHRlck5vdGljZXMobm90aWNlcyk7XG5cbiAgaWYgKHJlc2VydmF0aW9uTm90aWNlID09PSB1bmRlZmluZWQpIHJldHVybiBmaWx0ZXJlZE5vdGljZXM7XG4gIGlmICghZmlsdGVyZWROb3RpY2VzLmxlbmd0aCkgcmV0dXJuIFtyZXNlcnZhdGlvbk5vdGljZV07XG5cbiAgaWYgKGZpbHRlcmVkTm90aWNlc1swXS5uYW1lID09PSAnWicgJiYgZmlsdGVyZWROb3RpY2VzWzFdKSB7XG4gICAgcmV0dXJuIFtmaWx0ZXJlZE5vdGljZXNbMF0sIHJlc2VydmF0aW9uTm90aWNlLCBmaWx0ZXJlZE5vdGljZXNbMV1dLmNvbmNhdChcbiAgICAgIGZpbHRlcmVkTm90aWNlcy5zbGljZSgyKSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIFtyZXNlcnZhdGlvbk5vdGljZSwgLi4uZmlsdGVyZWROb3RpY2VzXTtcbn07XG5cbi8qKlxuICogSXQgZGlzcGxheXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRyaXAsIGFjdGluZyBhcyBhIGNvbnRhaW5lciBmb3IgYWxsIHRoZSBgc2JiLXRpbWV0YWJsZS0qYCBjb21wb25lbnRzLlxuICogKi9cbmV4cG9ydCBjbGFzcyBTYmJUaW1ldGFibGVSb3dFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItdGltZXRhYmxlLXJvdyc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHN0eWxlXTtcblxuICAvKiogVGhlIHRyaXAgUHJvcC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogT2JqZWN0IH0pIHB1YmxpYyBhY2Nlc3NvciB0cmlwOiBJVHJpcEl0ZW0gPSBudWxsITtcblxuICAvKiogVGhlIHByaWNlIFByb3AsIHdoaWNoIGNvbnNpc3RzIG9mIHRoZSBkYXRhIGZvciB0aGUgYmFkZ2UuICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IE9iamVjdCB9KSBwdWJsaWMgYWNjZXNzb3IgcHJpY2U6IFByaWNlID0gbnVsbCE7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhlIHNiYi1wZWFybC1jaGFpbiBjb21wb25lbnQgLSBpZiB0cnVlIHRoZSBwb3NpdGlvbiB3b24ndCBiZSBhbmltYXRlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Rpc2FibGUtYW5pbWF0aW9uJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZUFuaW1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoZSBub3RpY2VzIHNlY3Rpb24gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogT2JqZWN0IH0pIHB1YmxpYyBhY2Nlc3NvciBib2FyZGluZzogQm9hcmRpbmcgPSBudWxsITtcblxuICAvKipcbiAgICogVGhlIGxvYWRpbmcgc3RhdGUgLVxuICAgKiB3aGVuIHRoaXMgaXMgdHJ1ZSBpdCB3aWxsIGJlIHJlbmRlciBza2VsZXRvbiB3aXRoIGFuIGlkbGluZyBhbmltYXRpb25cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdsb2FkaW5nLXRyaXAnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBsb2FkaW5nVHJpcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgRm9vdHBhdGggYXR0cmlidXRlIGZvciByZW5kZXJpbmcgZGlmZmVyZW50IGljb25zXG4gICAqIHRydWU6IHJlbmRlciBhMTF5LWljb25cbiAgICogZmFsc2U6IHJlbmRlciB3YWxrLWljb25cbiAgICogZGVmYXVsdDogcmVuZGVyIHdhbGstaWNvblxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ExMXktZm9vdHBhdGgnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhMTF5Rm9vdHBhdGg6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGxvYWRpbmcgc3RhdGUgLVxuICAgKiB3aGVuIHRoaXMgaXMgdHJ1ZSBpdCB3aWxsIGJlIHJlbmRlciBza2VsZXRvbiB3aXRoIGFuIGlkbGluZyBhbmltYXRpb25cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdsb2FkaW5nLXByaWNlJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbG9hZGluZ1ByaWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEhpZGRlbiBsYWJlbCBmb3IgdGhlIGNhcmQgYWN0aW9uLiBJdCBvdmVycmlkZXMgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFjY2Vzc2liaWxpdHkgdGV4dCBmb3IgdGhlIGNvbXBvbmVudC4gVXNlIHRoaXMgcHJvcCB0byBwcm92aWRlIGN1c3RvbSBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2NhcmQtYWN0aW9uLWxhYmVsJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgY2FyZEFjdGlvbkxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgc2JiLWNhcmQgY29tcG9uZW50IGFzIGFyaWEtZXhwYW5kZWQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWV4cGFuZGVkJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZW4gdGhpcyBwcm9wIGlzIHRydWUgdGhlIHNiYi1jYXJkIHdpbGwgYmUgaW4gdGhlIGFjdGl2ZSBzdGF0ZS4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGNvbmZpZ3VyZWQgZGF0ZSB3aGljaCBhY3RzIGFzIHRoZSBjdXJyZW50IGRhdGUgaW5zdGVhZCBvZiB0aGUgcmVhbCBjdXJyZW50IGRhdGUuXG4gICAqIE9ubHkgcmVjb21tZW5kZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG5vdyh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl9ub3cgPSBkZWZhdWx0RGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKGRlZmF1bHREYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICB9XG4gIHB1YmxpYyBnZXQgbm93KCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9ub3cgPz8gbmV3IERhdGUoKTtcbiAgfVxuICBwcml2YXRlIF9ub3c6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsb2FkaW5nVHJpcCcpKSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLCAncm9sZScsICF0aGlzLmxvYWRpbmdUcmlwID8gJ3Jvd2dyb3VwJyA6IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgc2tlbGV0b24gcmVuZGVyIGZ1bmN0aW9uIGZvciB0aGUgbG9hZGluZyBzdGF0ZSAqL1xuICBwcml2YXRlIF9yZW5kZXJTa2VsZXRvbigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLWNhcmQgY2xhc3M9XCJzYmItbG9hZGluZyBzYmItY2FyZC1zcGFjaW5nLTR4LXh4c1wiPlxuICAgICAgICAke3RoaXMubG9hZGluZ1ByaWNlID8gaHRtbGA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX2JhZGdlXCIgc2xvdD1cImJhZGdlXCI+PC9kaXY+YCA6IG5vdGhpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fd3JhcHBlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fcm93XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1sb2FkaW5nX19yb3dcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3Jvd1wiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2JiLWNhcmQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJpZGVMZWdzKCk6IFB0UmlkZUxlZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50cmlwPy5sZWdzPy5maWx0ZXIoKGxlZykgPT4gaXNSaWRlTGVnKGxlZykpID8/IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UXVheVR5cGVTdHJpbmdzKCk6IHsgbG9uZzogc3RyaW5nOyBzaG9ydDogc3RyaW5nIH0gfCBudWxsIHtcbiAgICBpZiAoIXRoaXMudHJpcC5zdW1tYXJ5Py5wcm9kdWN0KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByaWRlTGVncyA9IHRoaXMuX2dldFJpZGVMZWdzKCk7XG4gICAgY29uc3QgaXNTaG9ydCA9IHRoaXMudHJpcC5zdW1tYXJ5LnByb2R1Y3Q/LnZlaGljbGVNb2RlID09PSAnVFJBSU4nO1xuICAgIGNvbnN0IHNob3J0ID0gaXNTaG9ydFxuICAgICAgPyByaWRlTGVnc1swXS5zZXJ2aWNlSm91cm5leS5xdWF5VHlwZVNob3J0TmFtZSB8fCAnJ1xuICAgICAgOiByaWRlTGVnc1swXS5zZXJ2aWNlSm91cm5leS5xdWF5VHlwZU5hbWUgfHwgJyc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9uZzogaTE4bkZyb21QbGF0Zm9ybVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSArICcgJyArIHNob3J0LFxuICAgICAgc2hvcnQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBtYXAgUXVheSAqL1xuICBwcml2YXRlIF9yZW5kZXJRdWF5VHlwZSgpOiBUZW1wbGF0ZVJlc3VsdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnRyaXAuc3VtbWFyeT8ucHJvZHVjdCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBxdWF5VHlwZVN0cmluZ3MgPSB0aGlzLl9nZXRRdWF5VHlwZVN0cmluZ3MoKTtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LS1xdWF5XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPiR7cXVheVR5cGVTdHJpbmdzPy5sb25nfSZuYnNwOzwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctLXF1YXktdHlwZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgPiR7cXVheVR5cGVTdHJpbmdzPy5zaG9ydH08L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVIaW1DdXModHJpcDogSVRyaXBJdGVtKTogeyBjdXM6IEhpbUN1cyB8IG51bGw7IGhpbTogSGltQ3VzIHwgbnVsbCB9IHtcbiAgICBjb25zdCB7IHNpdHVhdGlvbnMgfSA9IHRyaXAgfHwge307XG4gICAgY29uc3Qgc29ydGVkU2l0dWF0aW9ucyA9IHNpdHVhdGlvbnMgJiYgc29ydFNpdHVhdGlvbihzaXR1YXRpb25zKTtcbiAgICBjb25zdCBjdXMgPSBnZXRDdXModHJpcCwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY3VzOiBPYmplY3Qua2V5cyhjdXMpPy5sZW5ndGggPyBjdXMgOiBudWxsLFxuICAgICAgaGltOiBzaXR1YXRpb25zPy5sZW5ndGggPyBnZXRIaW1JY29uKHNvcnRlZFNpdHVhdGlvbnNbMF0pIDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QWNjZXNzaWJpbGl0eVRleHQodHJpcDogSVRyaXBJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IHN1bW1hcnksIGxlZ3MsIG5vdGljZXMgfSA9IHRyaXAgfHwge307XG4gICAgY29uc3Qge1xuICAgICAgZGVwYXJ0dXJlV2FsayxcbiAgICAgIGFycml2YWxXYWxrLFxuICAgICAgZGVwYXJ0dXJlLFxuICAgICAgYXJyaXZhbCxcbiAgICAgIHByb2R1Y3QsXG4gICAgICBkaXJlY3Rpb24sXG4gICAgICBvY2N1cGFuY3ksXG4gICAgICBkdXJhdGlvbixcbiAgICB9ID0gc3VtbWFyeSB8fCB7fTtcblxuICAgIGNvbnN0IHsgZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZSwgYXJyaXZhbFRpbWVBdHRyaWJ1dGUgfSA9IGdldERlcGFydHVyZUFycml2YWxUaW1lQXR0cmlidXRlKFxuICAgICAgbGVncyxcbiAgICAgIGRlcGFydHVyZVdhbGsgfHwgMCxcbiAgICAgIGFycml2YWxXYWxrIHx8IDAsXG4gICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgdGhpcy5hMTF5Rm9vdHBhdGgsXG4gICAgKTtcblxuICAgIGNvbnN0IHJpZGVMZWdzID0gdGhpcy5fZ2V0UmlkZUxlZ3MoKTtcblxuICAgIGNvbnN0IGRlcGFydHVyZVRpbWU6IERhdGUgfCB1bmRlZmluZWQgPSBkZXBhcnR1cmU/LnRpbWVcbiAgICAgID8gcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyhkZXBhcnR1cmUudGltZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgYXJyaXZhbFRpbWU6IERhdGUgfCB1bmRlZmluZWQgPSBhcnJpdmFsPy50aW1lXG4gICAgICA/IHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcoYXJyaXZhbC50aW1lKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkZXBhcnR1cmVXYWxrVGV4dCA9IGRlcGFydHVyZVRpbWVBdHRyaWJ1dGVcbiAgICAgID8gYCR7ZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZS50ZXh0fSAke2RlcGFydHVyZVRpbWVBdHRyaWJ1dGUuZHVyYXRpb259LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgYXJyaXZhbFdhbGtUZXh0ID0gYXJyaXZhbFRpbWVBdHRyaWJ1dGVcbiAgICAgID8gYCR7YXJyaXZhbFRpbWVBdHRyaWJ1dGUudGV4dH0gJHthcnJpdmFsVGltZUF0dHJpYnV0ZS5kdXJhdGlvbn0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBkZXBhcnR1cmVUaW1lVGV4dCA9IGRlcGFydHVyZVRpbWVcbiAgICAgID8gYCR7aTE4bkRlcGFydHVyZVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7Zm9ybWF0KGRlcGFydHVyZVRpbWUsICdISDptbScpfSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGdldERlcGFydHVyZVF1YXlUZXh0ID0gKCk6IHN0cmluZyA9PiB7XG4gICAgICBpZiAoIWRlcGFydHVyZT8ucXVheUZvcm1hdHRlZCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIC8vIGFkZCBwcmVmaXggXCJuZXdcIiBpZiBxdWF5IHdhcyBjaGFuZ2VkXG4gICAgICBjb25zdCBjaGFuZ2VkUXVheVByZWZpeCA9IGRlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBgJHtpMThuTmV3W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSBgIDogJyc7XG4gICAgICByZXR1cm4gYCR7Y2hhbmdlZFF1YXlQcmVmaXh9JHtcbiAgICAgICAgdGhpcy5fZ2V0UXVheVR5cGVTdHJpbmdzKCk/LmxvbmdcbiAgICAgIH0gJHtkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWR9LCBgO1xuICAgIH07XG5cbiAgICBjb25zdCBtZWFuc09mVHJhbnNwb3J0VGV4dCA9XG4gICAgICBwcm9kdWN0ICYmIHByb2R1Y3QudmVoaWNsZU1vZGVcbiAgICAgICAgPyBpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldICYmXG4gICAgICAgICAgYCR7aTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0sIGBcbiAgICAgICAgOiAnJztcblxuICAgIGNvbnN0IHZlaGljbGVTdWJNb2RlVGV4dCA9IHByb2R1Y3Q/LnZlaGljbGVTdWJNb2RlU2hvcnROYW1lXG4gICAgICA/IGAke3Byb2R1Y3QudmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWV9ICR7cHJvZHVjdC5saW5lIHx8ICcnfSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGRpcmVjdGlvblRleHQgPSBgJHtpMThuRGlyZWN0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2RpcmVjdGlvbn0sIGA7XG5cbiAgICBjb25zdCBoaW1DdXMgPSB0aGlzLl9oYW5kbGVIaW1DdXModHJpcCk7XG4gICAgY29uc3QgY3VzVGV4dCA9IGhpbUN1cz8uY3VzPy50ZXh0XG4gICAgICA/IGAke2kxOG5SZWFsVGltZUluZm9bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2hpbUN1cz8uY3VzPy50ZXh0fSwgYFxuICAgICAgOiAnJztcbiAgICBjb25zdCBoaW1UZXh0ID0gaGltQ3VzPy5oaW0/LnRleHRcbiAgICAgID8gYCR7aTE4blJlYWxUaW1lSW5mb1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7aGltQ3VzPy5oaW0/LnRleHR9LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgYm9hcmRpbmdUZXh0ID0gdGhpcy5ib2FyZGluZyA/IGAke3RoaXMuYm9hcmRpbmcudGV4dH0sIGAgOiAnJztcblxuICAgIGNvbnN0IHByaWNlVGV4dCA9IGAke3RoaXMucHJpY2U/LmlzRGlzY291bnQgPyBpMThuU3VwZXJzYXZlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSA6ICcnfSAke1xuICAgICAgdGhpcy5wcmljZT8udGV4dCAmJiB0aGlzLnByaWNlPy5wcmljZVxuICAgICAgICA/ICh0aGlzLnByaWNlPy50ZXh0IHx8ICcnKSArICcgJyArICh0aGlzLnByaWNlPy5wcmljZSB8fCAnJykgKyAnLCAnXG4gICAgICAgIDogJydcbiAgICB9YDtcblxuICAgIGNvbnN0IHRyYW5zZmVyUHJvY2VkdXJlcyA9XG4gICAgICByaWRlTGVncy5sZW5ndGggPiAyXG4gICAgICAgID8gYCR7cmlkZUxlZ3MubGVuZ3RoIC0gMX0gJHtpMThuVHJhbnNmZXJQcm9jZWR1cmVzW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSwgYFxuICAgICAgICA6IHJpZGVMZWdzLmxlbmd0aCA+IDFcbiAgICAgICAgICA/IGAke3JpZGVMZWdzLmxlbmd0aCAtIDF9ICR7aTE4blRyYW5zZmVyUHJvY2VkdXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSwgYFxuICAgICAgICAgIDogJyc7XG5cbiAgICBjb25zdCBhcnJpdmFsVGltZVRleHQgPSBhcnJpdmFsVGltZVxuICAgICAgPyBgJHtpMThuQXJyaXZhbFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7Zm9ybWF0KGFycml2YWxUaW1lLCAnSEg6bW0nKX0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBsZXQgb2NjdXBhbmN5VGV4dDogc3RyaW5nID0gJyc7XG4gICAgaWYgKG9jY3VwYW5jeSkge1xuICAgICAgaWYgKG9jY3VwYW5jeS5maXJzdENsYXNzICYmIG9jY3VwYW5jeS5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHtcbiAgICAgICAgb2NjdXBhbmN5VGV4dCArPSBgJHtpMThuQ2xhc3MuZmlyc3RbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuZmlyc3RDbGFzcy50b0xvd2VyQ2FzZSgpIGFzIFNiYk9jY3VwYW5jeV0gYXMgUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgPlxuICAgICAgICAgICk/Llt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XVxuICAgICAgICB9LmA7XG4gICAgICB9XG4gICAgICBpZiAob2NjdXBhbmN5LnNlY29uZENsYXNzICYmIG9jY3VwYW5jeS5zZWNvbmRDbGFzcyAhPT0gJ1VOS05PV04nKSB7XG4gICAgICAgIG9jY3VwYW5jeVRleHQgKz0gYCAke2kxOG5DbGFzcy5zZWNvbmRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuc2Vjb25kQ2xhc3MudG9Mb3dlckNhc2UoKSBhcyBTYmJPY2N1cGFuY3ldIGFzIFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgICApPy5bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgfS5gO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPVxuICAgICAgbm90aWNlcyAmJlxuICAgICAgaGFuZGxlTm90aWNlcyhub3RpY2VzKS5sZW5ndGggJiZcbiAgICAgIGhhbmRsZU5vdGljZXMobm90aWNlcylcbiAgICAgICAgPy5tYXAoKG5vdGljZSwgaW5kZXgpID0+IGluZGV4IDwgNCAmJiBub3RpY2UudGV4dD8udGVtcGxhdGUpXG4gICAgICAgIC5qb2luKCcsICcpICsgJywgJztcblxuICAgIGNvbnN0IGF0dHJpYnV0ZXNUZXh0ID0gYXR0cmlidXRlc1xuICAgICAgPyBgJHtpMThuVHJhdmVsaGludHNbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2F0dHJpYnV0ZXN9YFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGR1cmF0aW9uVGV4dCA9XG4gICAgICAhIWR1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICA/IGAke2kxOG5UcmlwRHVyYXRpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgICBkdXJhdGlvblRvVGltZShkdXJhdGlvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkubG9uZ1xuICAgICAgICAgIH0sIGBcbiAgICAgICAgOiAnJztcblxuICAgIHJldHVybiBbXG4gICAgICBkZXBhcnR1cmVXYWxrVGV4dCxcbiAgICAgIGRlcGFydHVyZVRpbWVUZXh0LFxuICAgICAgZ2V0RGVwYXJ0dXJlUXVheVRleHQoKSxcbiAgICAgIG1lYW5zT2ZUcmFuc3BvcnRUZXh0LFxuICAgICAgdmVoaWNsZVN1Yk1vZGVUZXh0LFxuICAgICAgZGlyZWN0aW9uVGV4dCxcbiAgICAgIGN1c1RleHQsXG4gICAgICBib2FyZGluZ1RleHQsXG4gICAgICBwcmljZVRleHQsXG4gICAgICBjdXNUZXh0ID8gJycgOiBoaW1UZXh0LFxuICAgICAgYXJyaXZhbFRpbWVUZXh0LFxuICAgICAgYXJyaXZhbFdhbGtUZXh0LFxuICAgICAgZHVyYXRpb25UZXh0LFxuICAgICAgdHJhbnNmZXJQcm9jZWR1cmVzLFxuICAgICAgb2NjdXBhbmN5VGV4dCxcbiAgICAgIGF0dHJpYnV0ZXNUZXh0LFxuICAgIF1cbiAgICAgIC5tYXAoKGUpID0+IGU/LnRyaW0oKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUgJiYgZS5sZW5ndGggPiAwKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGlmICh0aGlzLmxvYWRpbmdUcmlwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyU2tlbGV0b24oKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGxlZ3MsIGlkLCBub3RpY2VzLCBzdW1tYXJ5IH0gPSB0aGlzLnRyaXAgfHwge307XG5cbiAgICBjb25zdCB7XG4gICAgICBwcm9kdWN0LFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgZGVwYXJ0dXJlV2FsayxcbiAgICAgIGRlcGFydHVyZSxcbiAgICAgIGFycml2YWwsXG4gICAgICBhcnJpdmFsV2FsayxcbiAgICAgIG9jY3VwYW5jeSxcbiAgICAgIGR1cmF0aW9uLFxuICAgIH0gPSBzdW1tYXJ5IHx8IHt9O1xuXG4gICAgY29uc3QgaGltQ3VzID0gdGhpcy5faGFuZGxlSGltQ3VzKHRoaXMudHJpcCk7XG4gICAgY29uc3QgaGFzSGltQ3VzID0gISFoaW1DdXMuY3VzIHx8ICEhaGltQ3VzLmhpbTtcblxuICAgIGNvbnN0IG5vdGljZUF0dHJpYnV0ZXMgPSBub3RpY2VzICYmIGhhbmRsZU5vdGljZXMobm90aWNlcyk7XG5cbiAgICBjb25zdCBkdXJhdGlvbk9iaiA9IGR1cmF0aW9uID8gZHVyYXRpb25Ub1RpbWUoZHVyYXRpb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpIDogbnVsbDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1jYXJkIGNsYXNzPVwic2JiLWNhcmQtc3BhY2luZy00eC14eHNcIiBpZD0ke2lkfT5cbiAgICAgICAgPHNiYi1jYXJkLWJ1dHRvblxuICAgICAgICAgID9hY3RpdmU9JHt0aGlzLmFjdGl2ZX1cbiAgICAgICAgICBhcmlhLWV4cGFuZGVkPSR7dGhpcy5hY2Nlc3NpYmlsaXR5RXhwYW5kZWQgPyAndHJ1ZScgOiBub3RoaW5nfVxuICAgICAgICA+XG4gICAgICAgICAgJHt0aGlzLmNhcmRBY3Rpb25MYWJlbCA/IHRoaXMuY2FyZEFjdGlvbkxhYmVsIDogdGhpcy5fZ2V0QWNjZXNzaWJpbGl0eVRleHQodGhpcy50cmlwKX1cbiAgICAgICAgPC9zYmItY2FyZC1idXR0b24+XG4gICAgICAgICR7dGhpcy5sb2FkaW5nUHJpY2UgPyBodG1sYDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fYmFkZ2VcIiBzbG90PVwiYmFkZ2VcIj48L2Rpdj5gIDogbm90aGluZ31cbiAgICAgICAgJHt0aGlzLnByaWNlICYmICF0aGlzLmxvYWRpbmdQcmljZVxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhcmQtYmFkZ2UgY29sb3I9JHt0aGlzLnByaWNlLmlzRGlzY291bnQgPyAnY2hhcmNvYWwnIDogJ3doaXRlJ30+XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS5pc0Rpc2NvdW50XG4gICAgICAgICAgICAgICAgPyBodG1sYDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAlPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICA+JHtpMThuU3VwZXJzYXZlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPmBcbiAgICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS50ZXh0ID8gaHRtbGA8c3Bhbj4ke3RoaXMucHJpY2UudGV4dH08L3NwYW4+YCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS5wcmljZSA/IGh0bWxgPHNwYW4+JHt0aGlzLnByaWNlLnByaWNlfTwvc3Bhbj5gIDogbm90aGluZ31cbiAgICAgICAgICAgIDwvc2JiLWNhcmQtYmFkZ2U+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvd1wiIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LWhlYWRlclwiIHJvbGU9XCJncmlkY2VsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICR7cHJvZHVjdD8uY29ycG9yYXRlSWRlbnRpdHlQaWN0b2dyYW0gJiZcbiAgICAgICAgICAgICAgaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy10cmFuc3BvcnQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxzYmItaWNvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0LWljb25cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInBpY3RvOiR7cHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eVBpY3RvZ3JhbX1cIlxuICAgICAgICAgICAgICAgID48L3NiYi1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPlxuICAgICAgICAgICAgICAgICAgJHtwcm9kdWN0ICYmXG4gICAgICAgICAgICAgICAgICBwcm9kdWN0LnZlaGljbGVNb2RlICYmXG4gICAgICAgICAgICAgICAgICBpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldICYmXG4gICAgICAgICAgICAgICAgICBpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+YH1cbiAgICAgICAgICAgICAgJHtwcm9kdWN0ICYmXG4gICAgICAgICAgICAgIChwcm9kdWN0LmNvcnBvcmF0ZUlkZW50aXR5SWNvblxuICAgICAgICAgICAgICAgID8gcmVuZGVySWNvblByb2R1Y3QocHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eUljb24sIHByb2R1Y3QubmFtZSlcbiAgICAgICAgICAgICAgICA6IHByb2R1Y3QudmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWUgJiZcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0cmluZ1Byb2R1Y3QocHJvZHVjdC52ZWhpY2xlU3ViTW9kZVNob3J0TmFtZSwgcHJvZHVjdD8ubGluZSkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAke2RpcmVjdGlvblxuICAgICAgICAgICAgICA/IGh0bWxgPHA+JHtgJHtpMThuRGlyZWN0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2RpcmVjdGlvbn1gfTwvcD5gXG4gICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c2JiLXBlYXJsLWNoYWluLXRpbWVcbiAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAubGVncz0ke2xlZ3N9XG4gICAgICAgICAgICAuZGVwYXJ0dXJlVGltZT0ke2RlcGFydHVyZT8udGltZX1cbiAgICAgICAgICAgIC5hcnJpdmFsVGltZT0ke2Fycml2YWw/LnRpbWV9XG4gICAgICAgICAgICAuZGVwYXJ0dXJlV2Fsaz0ke2RlcGFydHVyZVdhbGt9XG4gICAgICAgICAgICAuYXJyaXZhbFdhbGs9JHthcnJpdmFsV2Fsa31cbiAgICAgICAgICAgID9kaXNhYmxlLWFuaW1hdGlvbj0ke3RoaXMuZGlzYWJsZUFuaW1hdGlvbn1cbiAgICAgICAgICAgID9hMTF5LWZvb3RwYXRoPSR7dGhpcy5hMTF5Rm9vdHBhdGh9XG4gICAgICAgICAgICAubm93PSR7dGhpcy5ub3d9XG4gICAgICAgICAgPjwvc2JiLXBlYXJsLWNoYWluLXRpbWU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1mb290ZXJcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgICR7cHJvZHVjdCAmJiBkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWRcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz0ke2RlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBgc2JiLXRpbWV0YWJsZV9fcm93LXF1YXktLWNoYW5nZWRgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuRGVwYXJ0dXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBpMThuTmV3W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdIDogJydcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJRdWF5VHlwZSgpfSAke2RlcGFydHVyZT8ucXVheUZvcm1hdHRlZH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAkeyhvY2N1cGFuY3k/LmZpcnN0Q2xhc3MgJiYgb2NjdXBhbmN5Py5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHx8XG4gICAgICAgICAgICAob2NjdXBhbmN5Py5zZWNvbmRDbGFzcyAmJiBvY2N1cGFuY3kuc2Vjb25kQ2xhc3MgIT09ICdVTktOT1dOJylcbiAgICAgICAgICAgICAgPyBodG1sYDxzYmItdGltZXRhYmxlLW9jY3VwYW5jeVxuICAgICAgICAgICAgICAgICAgLmZpcnN0Q2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LmZpcnN0Q2xhc3M/LnRvTG93ZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAuc2Vjb25kQ2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LnNlY29uZENsYXNzPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgID48L3NiYi10aW1ldGFibGUtb2NjdXBhbmN5PmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHsobm90aWNlQXR0cmlidXRlcyAmJiBub3RpY2VBdHRyaWJ1dGVzLmxlbmd0aCkgfHwgdGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICA/IGh0bWxgPHVsIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LWhpbnRzXCIgcm9sZT1cImxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICR7bm90aWNlQXR0cmlidXRlcz8ubWFwKChub3RpY2UsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICBpbmRleCA8IDRcbiAgICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmF2ZWwtaGludHNfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHsnc2EtJyArIG5vdGljZS5uYW1lPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHtub3RpY2UudGV4dD8udGVtcGxhdGV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5gXG4gICAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNiYi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRyYXZlbC1oaW50c19faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHt0aGlzLmJvYXJkaW5nPy5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5ib2FyZGluZz8udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPmBcbiAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAgIDwvdWw+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAke2R1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICAgICAgICA/IGh0bWxgPHRpbWU+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuVHJpcER1cmF0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2R1cmF0aW9uT2JqIS5sb25nfWB9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke2R1cmF0aW9uT2JqIS5zaG9ydH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90aW1lPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHtoYXNIaW1DdXMgJiYgKGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSlcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxzYmItaWNvbiBuYW1lPSR7KGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSkhLm5hbWV9Pjwvc2JiLWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4keyhoaW1DdXMuY3VzIHx8IGhpbUN1cy5oaW0pIS50ZXh0fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zYmItY2FyZD5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGltZXRhYmxlLXJvdyc6IFNiYlRpbWV0YWJsZVJvd0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
1
|
+
import { a as handleNotices, c as sortSituation, i as getHimIcon, n as filterNotices, o as renderIconProduct, r as getCus, s as renderStringProduct, t as SbbTimetableRowElement } from "../timetable-row.component-CAED6Zwc.js";
|
|
2
|
+
export { SbbTimetableRowElement, filterNotices, getCus, getHimIcon, handleNotices, renderIconProduct, renderStringProduct, sortSituation };
|