@iapps/ng-dhis2-ui 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/fesm2022/iapps-ng-dhis2-ui.mjs +435 -54
  2. package/fesm2022/iapps-ng-dhis2-ui.mjs.map +1 -1
  3. package/index.d.ts +1 -0
  4. package/lib/modules/line-list/components/dropdown-menu/dropdown-menu.d.ts +19 -0
  5. package/lib/modules/line-list/components/dropdown-menu/dropdown-menu.styles.d.ts +5 -0
  6. package/lib/modules/line-list/components/dropdown-menu/index.d.ts +1 -0
  7. package/lib/modules/line-list/containers/line-list.component.d.ts +20 -0
  8. package/lib/modules/line-list/hooks/index.d.ts +1 -0
  9. package/lib/modules/line-list/hooks/use-dynamic-styles.hook.d.ts +1 -0
  10. package/lib/modules/line-list/index.d.ts +2 -0
  11. package/lib/modules/line-list/line-list.module.d.ts +9 -0
  12. package/lib/modules/line-list/models/attribute-filter.model.d.ts +9 -0
  13. package/lib/modules/line-list/models/line-list.models.d.ts +70 -0
  14. package/lib/modules/line-list/services/line-list.service.d.ts +16 -0
  15. package/lib/modules/line-list/utils/filter-builder.d.ts +2 -0
  16. package/lib/modules/line-list/utils/line-list-utils.d.ts +14 -0
  17. package/lib/modules/organisation-unit-selector/components/OrgUnitDimension.d.ts +3 -1
  18. package/lib/modules/organisation-unit-selector/index.d.ts +1 -0
  19. package/package.json +6 -8
  20. package/esm2022/iapps-ng-dhis2-ui.mjs +0 -5
  21. package/esm2022/index.mjs +0 -6
  22. package/esm2022/lib/modules/button/button.component.mjs +0 -60
  23. package/esm2022/lib/modules/button/button.module.mjs +0 -19
  24. package/esm2022/lib/modules/button/index.mjs +0 -6
  25. package/esm2022/lib/modules/header-bar/header-bar.component.mjs +0 -38
  26. package/esm2022/lib/modules/header-bar/header-bar.module.mjs +0 -19
  27. package/esm2022/lib/modules/header-bar/index.mjs +0 -6
  28. package/esm2022/lib/modules/header-bar/models/header-bar-app.model.mjs +0 -20
  29. package/esm2022/lib/modules/header-bar/models/header-bar-data.model.mjs +0 -46
  30. package/esm2022/lib/modules/header-bar/models/header-bar-notification.model.mjs +0 -11
  31. package/esm2022/lib/modules/header-bar/models/index.mjs +0 -6
  32. package/esm2022/lib/modules/header-bar/utils/apps.mjs +0 -221
  33. package/esm2022/lib/modules/header-bar/utils/debug-info/debug-info-menu-item.mjs +0 -51
  34. package/esm2022/lib/modules/header-bar/utils/debug-info/debug-info-modal.mjs +0 -30
  35. package/esm2022/lib/modules/header-bar/utils/debug-info/debug-info-table.mjs +0 -39
  36. package/esm2022/lib/modules/header-bar/utils/debug-info/use-debug-info.mjs +0 -12
  37. package/esm2022/lib/modules/header-bar/utils/header-bar-context.mjs +0 -17
  38. package/esm2022/lib/modules/header-bar/utils/header-bar.mjs +0 -56
  39. package/esm2022/lib/modules/header-bar/utils/join-path.mjs +0 -5
  40. package/esm2022/lib/modules/header-bar/utils/logo-image.mjs +0 -52
  41. package/esm2022/lib/modules/header-bar/utils/logo.mjs +0 -35
  42. package/esm2022/lib/modules/header-bar/utils/notification-icon.mjs +0 -76
  43. package/esm2022/lib/modules/header-bar/utils/notifications.mjs +0 -35
  44. package/esm2022/lib/modules/header-bar/utils/profile/use-on-doc-click.mjs +0 -21
  45. package/esm2022/lib/modules/header-bar/utils/profile-menu/index.mjs +0 -2
  46. package/esm2022/lib/modules/header-bar/utils/profile-menu/profile-header.mjs +0 -95
  47. package/esm2022/lib/modules/header-bar/utils/profile-menu/profile-menu.mjs +0 -101
  48. package/esm2022/lib/modules/header-bar/utils/profile-menu/update-notification.mjs +0 -54
  49. package/esm2022/lib/modules/header-bar/utils/profile.mjs +0 -58
  50. package/esm2022/lib/modules/header-bar/utils/title.mjs +0 -22
  51. package/esm2022/lib/modules/organisation-unit-selector/components/OrgUnitDimension.mjs +0 -216
  52. package/esm2022/lib/modules/organisation-unit-selector/components/index.mjs +0 -6
  53. package/esm2022/lib/modules/organisation-unit-selector/components/styles/OrgUnitDimension.style.mjs +0 -83
  54. package/esm2022/lib/modules/organisation-unit-selector/components/utils/index.mjs +0 -6
  55. package/esm2022/lib/modules/organisation-unit-selector/components/utils/ouIdHelper/index.mjs +0 -18
  56. package/esm2022/lib/modules/organisation-unit-selector/components/utils/ouLevelUtils/index.mjs +0 -27
  57. package/esm2022/lib/modules/organisation-unit-selector/containers/organisation-unit-selector/organisation-unit-selector.component.mjs +0 -91
  58. package/esm2022/lib/modules/organisation-unit-selector/containers/organisation-unit-selector-modal/organisation-unit-selector-modal.component-modal.mjs +0 -114
  59. package/esm2022/lib/modules/organisation-unit-selector/index.mjs +0 -7
  60. package/esm2022/lib/modules/organisation-unit-selector/models/index.mjs +0 -5
  61. package/esm2022/lib/modules/organisation-unit-selector/models/organisation-unit-config.model.mjs +0 -16
  62. package/esm2022/lib/modules/organisation-unit-selector/organisation-unit-selector.module.mjs +0 -28
  63. package/esm2022/lib/modules/period-selector/components/FixedPeriodFilter.mjs +0 -44
  64. package/esm2022/lib/modules/period-selector/components/PeriodDimension.mjs +0 -41
  65. package/esm2022/lib/modules/period-selector/components/PeriodTransfer.mjs +0 -110
  66. package/esm2022/lib/modules/period-selector/components/RelativePeriodFilter.mjs +0 -28
  67. package/esm2022/lib/modules/period-selector/components/utils/fixedPeriods.mjs +0 -308
  68. package/esm2022/lib/modules/period-selector/components/utils/index.mjs +0 -5
  69. package/esm2022/lib/modules/period-selector/components/utils/periodTypes.mjs +0 -23
  70. package/esm2022/lib/modules/period-selector/components/utils/relativePeriods.mjs +0 -139
  71. package/esm2022/lib/modules/period-selector/containers/period-selector/period-selector.component.mjs +0 -69
  72. package/esm2022/lib/modules/period-selector/containers/period-selector-modal/period-selector-modal.component.mjs +0 -82
  73. package/esm2022/lib/modules/period-selector/index.mjs +0 -7
  74. package/esm2022/lib/modules/period-selector/period-selector.module.mjs +0 -20
  75. package/esm2022/lib/modules/react-wrapper/index.mjs +0 -6
  76. package/esm2022/lib/modules/react-wrapper/react-wrapper.component.mjs +0 -55
  77. package/esm2022/lib/modules/react-wrapper/react-wrapper.module.mjs +0 -18
  78. package/esm2022/lib/shared/assets/AssignedCategoriesIcon.mjs +0 -12
  79. package/esm2022/lib/shared/assets/DimensionItemIcons/PeriodIcon.mjs +0 -4
  80. package/esm2022/lib/shared/components/TransferOption.mjs +0 -130
  81. package/esm2022/lib/shared/components/index.mjs +0 -6
  82. package/esm2022/lib/shared/index.mjs +0 -7
  83. package/esm2022/lib/shared/shared.module.mjs +0 -18
  84. package/esm2022/lib/shared/styles/DimensionSelector.style.mjs +0 -39
  85. package/esm2022/lib/shared/styles/index.mjs +0 -5
  86. package/esm2022/lib/shared/utils/axis.mjs +0 -25
  87. package/esm2022/lib/shared/utils/axisGetDimension.mjs +0 -5
  88. package/esm2022/lib/shared/utils/axisHasDimension.mjs +0 -3
  89. package/esm2022/lib/shared/utils/dimension.mjs +0 -52
  90. package/esm2022/lib/shared/utils/dimensionGetItems.mjs +0 -6
  91. package/esm2022/lib/shared/utils/dimensionIs.mjs +0 -3
  92. package/esm2022/lib/shared/utils/dimensionIsEmpty.mjs +0 -5
  93. package/esm2022/lib/shared/utils/dimensionIsValid.mjs +0 -17
  94. package/esm2022/lib/shared/utils/dimensionSelectorHelper.mjs +0 -4
  95. package/esm2022/lib/shared/utils/index.mjs +0 -15
  96. package/esm2022/lib/shared/utils/layoutGetAllAxes.mjs +0 -7
  97. package/esm2022/lib/shared/utils/layoutGetAllDimensions.mjs +0 -6
  98. package/esm2022/lib/shared/utils/layoutGetDimension.mjs +0 -4
  99. package/esm2022/lib/shared/utils/layoutReplaceDimension.mjs +0 -17
  100. package/esm2022/lib/shared/utils/list.mjs +0 -15
  101. package/esm2022/lib/shared/utils/predefinedDimensions.mjs +0 -47
@@ -1,308 +0,0 @@
1
- import { generateFixedPeriods, getNowInCalendar, } from '@dhis2/multi-calendar-dates';
2
- import i18n from '@dhis2/d2-i18n';
3
- import { DAILY, WEEKLY, WEEKLYWED, WEEKLYTHU, WEEKLYSAT, WEEKLYSUN, BIWEEKLY, MONTHLY, BIMONTHLY, QUARTERLY, SIXMONTHLY, SIXMONTHLYAPR, YEARLY, FYNOV, FYOCT, FYJUL, FYAPR, } from './periodTypes';
4
- const PERIOD_TYPE_REGEX = {
5
- [DAILY]: /^([0-9]{4})([0-9]{2})([0-9]{2})$/, // YYYYMMDD
6
- [WEEKLY]: /^([0-9]{4})()W([0-9]{1,2})$/, // YYYY"W"[1-53]
7
- [BIWEEKLY]: /^([0-9]{4})BiW([0-9]{1,2})$/, // YYYY"BiW"[1-27]
8
- [WEEKLYWED]: /^([0-9]{4})(Wed)W([0-9]{1,2})$/, // YYYY"WedW"[1-53]
9
- [WEEKLYTHU]: /^([0-9]{4})(Thu)W([0-9]{1,2})$/, // YYYY"ThuW"[1-53]
10
- [WEEKLYSAT]: /^([0-9]{4})(Sat)W([0-9]{1,2})$/, // YYYY"SatW"[1-53]
11
- [WEEKLYSUN]: /^([0-9]{4})(Sun)W([0-9]{1,2})$/, // YYYY"SunW"[1-53]
12
- [MONTHLY]: /^([0-9]{4})([0-9]{2})$/, // YYYYMM
13
- [BIMONTHLY]: /^([0-9]{4})([0-9]{2})B$/, // YYYY0[1-6]"B"
14
- [QUARTERLY]: /^([0-9]{4})Q([1234])$/, // YYYY"Q"[1-4]
15
- [SIXMONTHLY]: /^([0-9]{4})S([12])$/, // YYYY"S"[1/2]
16
- [SIXMONTHLYAPR]: /^([0-9]{4})AprilS([12])$/, // YYYY"AprilS"[1/2]
17
- // [SIXMONTHLYNOV]: /^([0-9]{4})NovS([12])$/, // YYYY"NovS"[1/2] Not supported?
18
- [YEARLY]: /^([0-9]{4})$/, // YYYY
19
- [FYNOV]: /^([0-9]{4})Nov$/, // YYYY"Nov"
20
- [FYOCT]: /^([0-9]{4})Oct$/, // YYYY"Oct"
21
- [FYJUL]: /^([0-9]{4})July$/, // YYYY"July"
22
- [FYAPR]: /^([0-9]{4})April$/, // YYYY"April"
23
- };
24
- const getPeriods = ({ periodType, config, fnFilter, periodSettings = {}, }) => {
25
- const offset = parseInt(config.offset, 10);
26
- const isFilter = config.filterFuturePeriods;
27
- const isReverse = periodType.match(/^FY|YEARLY/)
28
- ? true
29
- : config.reversePeriods;
30
- const { calendar = 'gregory', locale = 'en' } = periodSettings;
31
- const now = getNowInCalendar(calendar);
32
- const year = (now.eraYear || now.year) + offset;
33
- const params = {
34
- periodType,
35
- year,
36
- calendar,
37
- locale,
38
- startingDay: config.startDay,
39
- };
40
- let periods = generateFixedPeriods(params);
41
- periods = isFilter ? fnFilter(periods) : periods;
42
- periods = !isReverse ? periods : periods.reverse();
43
- return periods;
44
- };
45
- const getDailyPeriodType = (fnFilter, periodSettings) => {
46
- return (config) => {
47
- return getPeriods({
48
- periodType: 'DAILY',
49
- config,
50
- fnFilter,
51
- periodSettings,
52
- });
53
- };
54
- };
55
- const getWeeklyPeriodType = (weekObj, fnFilter, periodSettings) => {
56
- return (config) => {
57
- return getPeriods({
58
- periodType: 'WEEKLY',
59
- config: {
60
- ...config,
61
- startDay: weekObj.startDay,
62
- },
63
- fnFilter,
64
- periodSettings,
65
- });
66
- };
67
- };
68
- const getBiWeeklyPeriodType = (fnFilter, periodSettings) => {
69
- return (config) => {
70
- return getPeriods({
71
- periodType: 'BIWEEKLY',
72
- config,
73
- fnFilter,
74
- periodSettings,
75
- });
76
- };
77
- };
78
- const getMonthlyPeriodType = (fnFilter, periodSettings) => {
79
- return (config) => {
80
- return getPeriods({
81
- periodType: 'MONTHLY',
82
- config,
83
- fnFilter,
84
- periodSettings,
85
- });
86
- };
87
- };
88
- const getBiMonthlyPeriodType = (fnFilter, periodSettings) => {
89
- return (config) => {
90
- return getPeriods({
91
- periodType: 'BIMONTHLY',
92
- config,
93
- fnFilter,
94
- periodSettings,
95
- });
96
- };
97
- };
98
- const getQuarterlyPeriodType = (fnFilter, periodSettings) => {
99
- return (config) => {
100
- return getPeriods({
101
- periodType: 'QUARTERLY',
102
- config,
103
- fnFilter,
104
- periodSettings,
105
- });
106
- };
107
- };
108
- const getSixMonthlyPeriodType = (fnFilter, periodSettings) => {
109
- return (config) => {
110
- return getPeriods({
111
- periodType: 'SIXMONTHLY',
112
- config,
113
- fnFilter,
114
- periodSettings,
115
- });
116
- };
117
- };
118
- const getSixMonthlyAprilPeriodType = (fnFilter, periodSettings) => {
119
- return (config) => {
120
- return getPeriods({
121
- periodType: 'SIXMONTHLYAPR',
122
- config,
123
- fnFilter,
124
- periodSettings,
125
- });
126
- };
127
- };
128
- const getYearlyPeriodType = (fnFilter, periodSettings) => {
129
- return (config) => {
130
- return getPeriods({
131
- periodType: 'YEARLY',
132
- config,
133
- fnFilter,
134
- periodSettings,
135
- });
136
- };
137
- };
138
- const getFinancialOctoberPeriodType = (fnFilter, periodSettings) => {
139
- return (config) => {
140
- return getPeriods({
141
- periodType: 'FYOCT',
142
- config,
143
- fnFilter,
144
- periodSettings,
145
- });
146
- };
147
- };
148
- const getFinancialNovemberPeriodType = (fnFilter, periodSettings) => {
149
- return (config) => {
150
- return getPeriods({
151
- periodType: 'FYNOV',
152
- config,
153
- fnFilter,
154
- periodSettings,
155
- });
156
- };
157
- };
158
- const getFinancialJulyPeriodType = (fnFilter, periodSettings) => {
159
- return (config) => {
160
- return getPeriods({
161
- periodType: 'FYJUL',
162
- config,
163
- fnFilter,
164
- periodSettings,
165
- });
166
- };
167
- };
168
- const getFinancialAprilPeriodType = (fnFilter, periodSettings) => {
169
- return (config) => {
170
- return getPeriods({
171
- periodType: 'FYAPR',
172
- config,
173
- fnFilter,
174
- periodSettings,
175
- });
176
- };
177
- };
178
- const filterFuturePeriods = (periods) => {
179
- const array = [];
180
- const now = new Date(Date.now());
181
- for (let i = 0; i < periods.length; i++) {
182
- if (new Date(periods[i].startDate) <= now) {
183
- array.push(periods[i]);
184
- }
185
- }
186
- return array;
187
- };
188
- const getOptions = (periodSettings) => {
189
- return [
190
- {
191
- id: DAILY,
192
- getPeriods: getDailyPeriodType(filterFuturePeriods, periodSettings),
193
- name: i18n.t('Daily'),
194
- },
195
- {
196
- id: WEEKLY,
197
- getPeriods: getWeeklyPeriodType({ startDay: 1 }, filterFuturePeriods, periodSettings),
198
- name: i18n.t('Weekly'),
199
- },
200
- {
201
- id: WEEKLYWED,
202
- getPeriods: getWeeklyPeriodType({ startDay: 3 }, filterFuturePeriods, periodSettings),
203
- name: i18n.t('Weekly (Start Wednesday)'),
204
- },
205
- {
206
- id: WEEKLYTHU,
207
- getPeriods: getWeeklyPeriodType({ startDay: 4 }, filterFuturePeriods, periodSettings),
208
- name: i18n.t('Weekly (Start Thursday)'),
209
- },
210
- {
211
- id: WEEKLYSAT,
212
- getPeriods: getWeeklyPeriodType({ startDay: 6 }, filterFuturePeriods, periodSettings),
213
- name: i18n.t('Weekly (Start Saturday)'),
214
- },
215
- {
216
- id: WEEKLYSUN,
217
- getPeriods: getWeeklyPeriodType({ startDay: 7 }, filterFuturePeriods, periodSettings),
218
- name: i18n.t('Weekly (Start Sunday)'),
219
- },
220
- {
221
- id: BIWEEKLY,
222
- getPeriods: getBiWeeklyPeriodType(filterFuturePeriods, periodSettings),
223
- name: i18n.t('Bi-weekly'),
224
- },
225
- {
226
- id: MONTHLY,
227
- getPeriods: getMonthlyPeriodType(filterFuturePeriods, periodSettings),
228
- name: i18n.t('Monthly'),
229
- },
230
- {
231
- id: BIMONTHLY,
232
- getPeriods: getBiMonthlyPeriodType(filterFuturePeriods, periodSettings),
233
- name: i18n.t('Bi-monthly'),
234
- },
235
- {
236
- id: QUARTERLY,
237
- getPeriods: getQuarterlyPeriodType(filterFuturePeriods, periodSettings),
238
- name: i18n.t('Quarterly'),
239
- },
240
- {
241
- id: SIXMONTHLY,
242
- getPeriods: getSixMonthlyPeriodType(filterFuturePeriods, periodSettings),
243
- name: i18n.t('Six-monthly'),
244
- },
245
- {
246
- id: SIXMONTHLYAPR,
247
- getPeriods: getSixMonthlyAprilPeriodType(filterFuturePeriods, periodSettings),
248
- name: i18n.t('Six-monthly April'),
249
- },
250
- {
251
- id: YEARLY,
252
- getPeriods: getYearlyPeriodType(filterFuturePeriods, periodSettings),
253
- name: i18n.t('Yearly'),
254
- },
255
- {
256
- id: FYNOV,
257
- getPeriods: getFinancialNovemberPeriodType(filterFuturePeriods, periodSettings),
258
- name: i18n.t('Financial year (Start November)'),
259
- },
260
- {
261
- id: FYOCT,
262
- getPeriods: getFinancialOctoberPeriodType(filterFuturePeriods, periodSettings),
263
- name: i18n.t('Financial year (Start October)'),
264
- },
265
- {
266
- id: FYJUL,
267
- getPeriods: getFinancialJulyPeriodType(filterFuturePeriods, periodSettings),
268
- name: i18n.t('Financial year (Start July)'),
269
- },
270
- {
271
- id: FYAPR,
272
- getPeriods: getFinancialAprilPeriodType(filterFuturePeriods, periodSettings),
273
- name: i18n.t('Financial year (Start April)'),
274
- },
275
- ];
276
- };
277
- export const getFixedPeriodsOptionsById = (id, periodSettings) => {
278
- return getOptions(periodSettings).find((option) => option.id === id);
279
- };
280
- export const getFixedPeriodsOptions = () => getOptions();
281
- export const getYearOffsetFromNow = (yearStr) => parseInt(yearStr) - new Date(Date.now()).getFullYear();
282
- export const parsePeriodCode = (code, allowedTypes) => {
283
- const periodTypes = Object.keys(PERIOD_TYPE_REGEX);
284
- let i = 0;
285
- let type = '';
286
- let match = undefined;
287
- while (i < periodTypes.length && !match) {
288
- type = periodTypes[i];
289
- match = code.match(PERIOD_TYPE_REGEX[type]);
290
- i++;
291
- }
292
- if (!match ||
293
- (Array.isArray(allowedTypes) && !allowedTypes.some((t) => t === type))) {
294
- return undefined;
295
- }
296
- const period = getFixedPeriodsOptionsById(type);
297
- const offset = getYearOffsetFromNow(match[1]);
298
- const options = period?.getPeriods({ offset });
299
- return period
300
- ? {
301
- id: period.id,
302
- name: period.name,
303
- year: match[1],
304
- options,
305
- }
306
- : null;
307
- };
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWRQZXJpb2RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctZGhpczItdWkvc3JjL2xpYi9tb2R1bGVzL3BlcmlvZC1zZWxlY3Rvci9jb21wb25lbnRzL3V0aWxzL2ZpeGVkUGVyaW9kcy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixnQkFBZ0IsR0FDakIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLElBQUksTUFBTSxnQkFBZ0IsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsUUFBUSxFQUNSLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixhQUFhLEVBQ2IsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUV2QixNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLENBQUMsS0FBSyxDQUFDLEVBQUUsa0NBQWtDLEVBQUUsV0FBVztJQUN4RCxDQUFDLE1BQU0sQ0FBQyxFQUFFLDZCQUE2QixFQUFFLGdCQUFnQjtJQUN6RCxDQUFDLFFBQVEsQ0FBQyxFQUFFLDZCQUE2QixFQUFFLGtCQUFrQjtJQUM3RCxDQUFDLFNBQVMsQ0FBQyxFQUFFLGdDQUFnQyxFQUFFLG1CQUFtQjtJQUNsRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGdDQUFnQyxFQUFFLG1CQUFtQjtJQUNsRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGdDQUFnQyxFQUFFLG1CQUFtQjtJQUNsRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGdDQUFnQyxFQUFFLG1CQUFtQjtJQUNsRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLHdCQUF3QixFQUFFLFNBQVM7SUFDOUMsQ0FBQyxTQUFTLENBQUMsRUFB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QUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2VuZXJhdGVGaXhlZFBlcmlvZHMsXG4gIGdldE5vd0luQ2FsZW5kYXIsXG59IGZyb20gJ0BkaGlzMi9tdWx0aS1jYWxlbmRhci1kYXRlcyc7XG5pbXBvcnQgaTE4biBmcm9tICdAZGhpczIvZDItaTE4bic7XG5pbXBvcnQge1xuICBEQUlMWSxcbiAgV0VFS0xZLFxuICBXRUVLTFlXRUQsXG4gIFdFRUtMWVRIVSxcbiAgV0VFS0xZU0FULFxuICBXRUVLTFlTVU4sXG4gIEJJV0VFS0xZLFxuICBNT05USExZLFxuICBCSU1PTlRITFksXG4gIFFVQVJURVJMWSxcbiAgU0lYTU9OVEhMWSxcbiAgU0lYTU9OVEhMWUFQUixcbiAgWUVBUkxZLFxuICBGWU5PVixcbiAgRllPQ1QsXG4gIEZZSlVMLFxuICBGWUFQUixcbn0gZnJvbSAnLi9wZXJpb2RUeXBlcyc7XG5cbmNvbnN0IFBFUklPRF9UWVBFX1JFR0VYID0ge1xuICBbREFJTFldOiAvXihbMC05XXs0fSkoWzAtOV17Mn0pKFswLTldezJ9KSQvLCAvLyBZWVlZTU1ERFxuICBbV0VFS0xZXTogL14oWzAtOV17NH0pKClXKFswLTldezEsMn0pJC8sIC8vIFlZWVlcIldcIlsxLTUzXVxuICBbQklXRUVLTFldOiAvXihbMC05XXs0fSlCaVcoWzAtOV17MSwyfSkkLywgLy8gWVlZWVwiQmlXXCJbMS0yN11cbiAgW1dFRUtMWVdFRF06IC9eKFswLTldezR9KShXZWQpVyhbMC05XXsxLDJ9KSQvLCAvLyBZWVlZXCJXZWRXXCJbMS01M11cbiAgW1dFRUtMWVRIVV06IC9eKFswLTldezR9KShUaHUpVyhbMC05XXsxLDJ9KSQvLCAvLyBZWVlZXCJUaHVXXCJbMS01M11cbiAgW1dFRUtMWVNBVF06IC9eKFswLTldezR9KShTYXQpVyhbMC05XXsxLDJ9KSQvLCAvLyBZWVlZXCJTYXRXXCJbMS01M11cbiAgW1dFRUtMWVNVTl06IC9eKFswLTldezR9KShTdW4pVyhbMC05XXsxLDJ9KSQvLCAvLyBZWVlZXCJTdW5XXCJbMS01M11cbiAgW01PTlRITFldOiAvXihbMC05XXs0fSkoWzAtOV17Mn0pJC8sIC8vIFlZWVlNTVxuICBbQklNT05USExZXTogL14oWzAtOV17NH0pKFswLTldezJ9KUIkLywgLy8gWVlZWTBbMS02XVwiQlwiXG4gIFtRVUFSVEVSTFldOiAvXihbMC05XXs0fSlRKFsxMjM0XSkkLywgLy8gWVlZWVwiUVwiWzEtNF1cbiAgW1NJWE1PTlRITFldOiAvXihbMC05XXs0fSlTKFsxMl0pJC8sIC8vIFlZWVlcIlNcIlsxLzJdXG4gIFtTSVhNT05USExZQVBSXTogL14oWzAtOV17NH0pQXByaWxTKFsxMl0pJC8sIC8vIFlZWVlcIkFwcmlsU1wiWzEvMl1cbiAgLy8gW1NJWE1PTlRITFlOT1ZdOiAvXihbMC05XXs0fSlOb3ZTKFsxMl0pJC8sIC8vIFlZWVlcIk5vdlNcIlsxLzJdIE5vdCBzdXBwb3J0ZWQ/XG4gIFtZRUFSTFldOiAvXihbMC05XXs0fSkkLywgLy8gWVlZWVxuICBbRllOT1ZdOiAvXihbMC05XXs0fSlOb3YkLywgLy8gWVlZWVwiTm92XCJcbiAgW0ZZT0NUXTogL14oWzAtOV17NH0pT2N0JC8sIC8vIFlZWVlcIk9jdFwiXG4gIFtGWUpVTF06IC9eKFswLTldezR9KUp1bHkkLywgLy8gWVlZWVwiSnVseVwiXG4gIFtGWUFQUl06IC9eKFswLTldezR9KUFwcmlsJC8sIC8vIFlZWVlcIkFwcmlsXCJcbn07XG5cbmNvbnN0IGdldFBlcmlvZHMgPSAoe1xuICBwZXJpb2RUeXBlLFxuICBjb25maWcsXG4gIGZuRmlsdGVyLFxuICBwZXJpb2RTZXR0aW5ncyA9IHt9LFxufTogYW55KSA9PiB7XG4gIGNvbnN0IG9mZnNldCA9IHBhcnNlSW50KGNvbmZpZy5vZmZzZXQsIDEwKTtcbiAgY29uc3QgaXNGaWx0ZXIgPSBjb25maWcuZmlsdGVyRnV0dXJlUGVyaW9kcztcbiAgY29uc3QgaXNSZXZlcnNlID0gcGVyaW9kVHlwZS5tYXRjaCgvXkZZfFlFQVJMWS8pXG4gICAgPyB0cnVlXG4gICAgOiBjb25maWcucmV2ZXJzZVBlcmlvZHM7XG5cbiAgY29uc3QgeyBjYWxlbmRhciA9ICdncmVnb3J5JywgbG9jYWxlID0gJ2VuJyB9ID0gcGVyaW9kU2V0dGluZ3MgYXMgYW55O1xuICBjb25zdCBub3cgPSBnZXROb3dJbkNhbGVuZGFyKGNhbGVuZGFyKTtcbiAgY29uc3QgeWVhciA9IChub3cuZXJhWWVhciB8fCBub3cueWVhcikgKyBvZmZzZXQ7XG5cbiAgY29uc3QgcGFyYW1zID0ge1xuICAgIHBlcmlvZFR5cGUsXG4gICAgeWVhcixcbiAgICBjYWxlbmRhcixcbiAgICBsb2NhbGUsXG4gICAgc3RhcnRpbmdEYXk6IGNvbmZpZy5zdGFydERheSxcbiAgfTtcblxuICBsZXQgcGVyaW9kcyA9IGdlbmVyYXRlRml4ZWRQZXJpb2RzKHBhcmFtcyk7XG5cbiAgcGVyaW9kcyA9IGlzRmlsdGVyID8gZm5GaWx0ZXIocGVyaW9kcykgOiBwZXJpb2RzO1xuICBwZXJpb2RzID0gIWlzUmV2ZXJzZSA/IHBlcmlvZHMgOiBwZXJpb2RzLnJldmVyc2UoKTtcblxuICByZXR1cm4gcGVyaW9kcztcbn07XG5cbmNvbnN0IGdldERhaWx5UGVyaW9kVHlwZSA9IChmbkZpbHRlcjogYW55LCBwZXJpb2RTZXR0aW5ncz86IGFueSkgPT4ge1xuICByZXR1cm4gKGNvbmZpZzogYW55KSA9PiB7XG4gICAgcmV0dXJuIGdldFBlcmlvZHMoe1xuICAgICAgcGVyaW9kVHlwZTogJ0RBSUxZJyxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGZuRmlsdGVyLFxuICAgICAgcGVyaW9kU2V0dGluZ3MsXG4gICAgfSk7XG4gIH07XG59O1xuXG5jb25zdCBnZXRXZWVrbHlQZXJpb2RUeXBlID0gKFxuICB3ZWVrT2JqOiBhbnksXG4gIGZuRmlsdGVyOiBhbnksXG4gIHBlcmlvZFNldHRpbmdzOiBhbnlcbikgPT4ge1xuICByZXR1cm4gKGNvbmZpZzogYW55KSA9PiB7XG4gICAgcmV0dXJuIGdldFBlcmlvZHMoe1xuICAgICAgcGVyaW9kVHlwZTogJ1dFRUtMWScsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBzdGFydERheTogd2Vla09iai5zdGFydERheSxcbiAgICAgIH0sXG4gICAgICBmbkZpbHRlcixcbiAgICAgIHBlcmlvZFNldHRpbmdzLFxuICAgIH0pO1xuICB9O1xufTtcblxuY29uc3QgZ2V0QmlXZWVrbHlQZXJpb2RUeXBlID0gKGZuRmlsdGVyOiBhbnksIHBlcmlvZFNldHRpbmdzOiBhbnkpID0+IHtcbiAgcmV0dXJuIChjb25maWc6IGFueSkgPT4ge1xuICAgIHJldHVybiBnZXRQZXJpb2RzKHtcbiAgICAgIHBlcmlvZFR5cGU6ICdCSVdFRUtMWScsXG4gICAgICBjb25maWcsXG4gICAgICBmbkZpbHRlcixcbiAgICAgIHBlcmlvZFNldHRpbmdzLFxuICAgIH0pO1xuICB9O1xufTtcblxuY29uc3QgZ2V0TW9udGhseVBlcmlvZFR5cGUgPSAoZm5GaWx0ZXI6IGFueSwgcGVyaW9kU2V0dGluZ3M6IGFueSkgPT4ge1xuICByZXR1cm4gKGNvbmZpZzogYW55KSA9PiB7XG4gICAgcmV0dXJuIGdldFBlcmlvZHMoe1xuICAgICAgcGVyaW9kVHlwZTogJ01PTlRITFknLFxuICAgICAgY29uZmlnLFxuICAgICAgZm5GaWx0ZXIsXG4gICAgICBwZXJpb2RTZXR0aW5ncyxcbiAgICB9KTtcbiAgfTtcbn07XG5cbmNvbnN0IGdldEJpTW9udGhseVBlcmlvZFR5cGUgPSAoZm5GaWx0ZXI6IGFueSwgcGVyaW9kU2V0dGluZ3M6IGFueSkgPT4ge1xuICByZXR1cm4gKGNvbmZpZzogYW55KSA9PiB7XG4gICAgcmV0dXJuIGdldFBlcmlvZHMoe1xuICAgICAgcGVyaW9kVHlwZTogJ0JJTU9OVEhMWScsXG4gICAgICBjb25maWcsXG4gICAgICBmbkZpbHRlcixcbiAgICAgIHBlcmlvZFNldHRpbmdzLFxuICAgIH0pO1xuICB9O1xufTtcblxuY29uc3QgZ2V0UXVhcnRlcmx5UGVyaW9kVHlwZSA9IChmbkZpbHRlcjogYW55LCBwZXJpb2RTZXR0aW5nczogYW55KSA9PiB7XG4gIHJldHVybiAoY29uZmlnOiBhbnkpID0+IHtcbiAgICByZXR1cm4gZ2V0UGVyaW9kcyh7XG4gICAgICBwZXJpb2RUeXBlOiAnUVVBUlRFUkxZJyxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGZuRmlsdGVyLFxuICAgICAgcGVyaW9kU2V0dGluZ3MsXG4gICAgfSk7XG4gIH07XG59O1xuXG5jb25zdCBnZXRTaXhNb250aGx5UGVyaW9kVHlwZSA9IChmbkZpbHRlcjogYW55LCBwZXJpb2RTZXR0aW5nczogYW55KSA9PiB7XG4gIHJldHVybiAoY29uZmlnOiBhbnkpID0+IHtcbiAgICByZXR1cm4gZ2V0UGVyaW9kcyh7XG4gICAgICBwZXJpb2RUeXBlOiAnU0lYTU9OVEhMWScsXG4gICAgICBjb25maWcsXG4gICAgICBmbkZpbHRlcixcbiAgICAgIHBlcmlvZFNldHRpbmdzLFxuICAgIH0pO1xuICB9O1xufTtcblxuY29uc3QgZ2V0U2l4TW9udGhseUFwcmlsUGVyaW9kVHlwZSA9IChmbkZpbHRlcjogYW55LCBwZXJpb2RTZXR0aW5nczogYW55KSA9PiB7XG4gIHJldHVybiAoY29uZmlnOiBhbnkpID0+IHtcbiAgICByZXR1cm4gZ2V0UGVyaW9kcyh7XG4gICAgICBwZXJpb2RUeXBlOiAnU0lYTU9OVEhMWUFQUicsXG4gICAgICBjb25maWcsXG4gICAgICBmbkZpbHRlcixcbiAgICAgIHBlcmlvZFNldHRpbmdzLFxuICAgIH0pO1xuICB9O1xufTtcblxuY29uc3QgZ2V0WWVhcmx5UGVyaW9kVHlwZSA9IChmbkZpbHRlcjogYW55LCBwZXJpb2RTZXR0aW5nczogYW55KSA9PiB7XG4gIHJldHVybiAoY29uZmlnOiBhbnkpID0+IHtcbiAgICByZXR1cm4gZ2V0UGVyaW9kcyh7XG4gICAgICBwZXJpb2RUeXBlOiAnWUVBUkxZJyxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGZuRmlsdGVyLFxuICAgICAgcGVyaW9kU2V0dGluZ3MsXG4gICAgfSk7XG4gIH07XG59O1xuXG5jb25zdCBnZXRGaW5hbmNpYWxPY3RvYmVyUGVyaW9kVHlwZSA9IChmbkZpbHRlcjogYW55LCBwZXJpb2RTZXR0aW5nczogYW55KSA9PiB7XG4gIHJldHVybiAoY29uZmlnOiBhbnkpID0+IHtcbiAgICByZXR1cm4gZ2V0UGVyaW9kcyh7XG4gICAgICBwZXJpb2RUeXBlOiAnRllPQ1QnLFxuICAgICAgY29uZmlnLFxuICAgICAgZm5GaWx0ZXIsXG4gICAgICBwZXJpb2RTZXR0aW5ncyxcbiAgICB9KTtcbiAgfTtcbn07XG5cbmNvbnN0IGdldEZpbmFuY2lhbE5vdmVtYmVyUGVyaW9kVHlwZSA9IChmbkZpbHRlcjogYW55LCBwZXJpb2RTZXR0aW5nczogYW55KSA9PiB7XG4gIHJldHVybiAoY29uZmlnOiBhbnkpID0+IHtcbiAgICByZXR1cm4gZ2V0UGVyaW9kcyh7XG4gICAgICBwZXJpb2RUeXBlOiAnRllOT1YnLFxuICAgICAgY29uZmlnLFxuICAgICAgZm5GaWx0ZXIsXG4gICAgICBwZXJpb2RTZXR0aW5ncyxcbiAgICB9KTtcbiAgfTtcbn07XG5cbmNvbnN0IGdldEZpbmFuY2lhbEp1bHlQZXJpb2RUeXBlID0gKGZuRmlsdGVyOiBhbnksIHBlcmlvZFNldHRpbmdzOiBhbnkpID0+IHtcbiAgcmV0dXJuIChjb25maWc6IGFueSkgPT4ge1xuICAgIHJldHVybiBnZXRQZXJpb2RzKHtcbiAgICAgIHBlcmlvZFR5cGU6ICdGWUpVTCcsXG4gICAgICBjb25maWcsXG4gICAgICBmbkZpbHRlcixcbiAgICAgIHBlcmlvZFNldHRpbmdzLFxuICAgIH0pO1xuICB9O1xufTtcblxuY29uc3QgZ2V0RmluYW5jaWFsQXByaWxQZXJpb2RUeXBlID0gKGZuRmlsdGVyOiBhbnksIHBlcmlvZFNldHRpbmdzOiBhbnkpID0+IHtcbiAgcmV0dXJuIChjb25maWc6IGFueSkgPT4ge1xuICAgIHJldHVybiBnZXRQZXJpb2RzKHtcbiAgICAgIHBlcmlvZFR5cGU6ICdGWUFQUicsXG4gICAgICBjb25maWcsXG4gICAgICBmbkZpbHRlcixcbiAgICAgIHBlcmlvZFNldHRpbmdzLFxuICAgIH0pO1xuICB9O1xufTtcblxuY29uc3QgZmlsdGVyRnV0dXJlUGVyaW9kcyA9IChwZXJpb2RzOiBhbnkpID0+IHtcbiAgY29uc3QgYXJyYXkgPSBbXTtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoRGF0ZS5ub3coKSk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwZXJpb2RzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKG5ldyBEYXRlKHBlcmlvZHNbaV0uc3RhcnREYXRlKSA8PSBub3cpIHtcbiAgICAgIGFycmF5LnB1c2gocGVyaW9kc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufTtcblxuY29uc3QgZ2V0T3B0aW9ucyA9IChwZXJpb2RTZXR0aW5ncz86IGFueSkgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIGlkOiBEQUlMWSxcbiAgICAgIGdldFBlcmlvZHM6IGdldERhaWx5UGVyaW9kVHlwZShmaWx0ZXJGdXR1cmVQZXJpb2RzLCBwZXJpb2RTZXR0aW5ncyksXG4gICAgICBuYW1lOiBpMThuLnQoJ0RhaWx5JyksXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogV0VFS0xZLFxuICAgICAgZ2V0UGVyaW9kczogZ2V0V2Vla2x5UGVyaW9kVHlwZShcbiAgICAgICAgeyBzdGFydERheTogMSB9LFxuICAgICAgICBmaWx0ZXJGdXR1cmVQZXJpb2RzLFxuICAgICAgICBwZXJpb2RTZXR0aW5nc1xuICAgICAgKSxcbiAgICAgIG5hbWU6IGkxOG4udCgnV2Vla2x5JyksXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogV0VFS0xZV0VELFxuICAgICAgZ2V0UGVyaW9kczogZ2V0V2Vla2x5UGVyaW9kVHlwZShcbiAgICAgICAgeyBzdGFydERheTogMyB9LFxuICAgICAgICBmaWx0ZXJGdXR1cmVQZXJpb2RzLFxuICAgICAgICBwZXJpb2RTZXR0aW5nc1xuICAgICAgKSxcbiAgICAgIG5hbWU6IGkxOG4udCgnV2Vla2x5IChTdGFydCBXZWRuZXNkYXkpJyksXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogV0VFS0xZVEhVLFxuICAgICAgZ2V0UGVyaW9kczogZ2V0V2Vla2x5UGVyaW9kVHlwZShcbiAgICAgICAgeyBzdGFydERheTogNCB9LFxuICAgICAgICBmaWx0ZXJGdXR1cmVQZXJpb2RzLFxuICAgICAgICBwZXJpb2RTZXR0aW5nc1xuICAgICAgKSxcbiAgICAgIG5hbWU6IGkxOG4udCgnV2Vla2x5IChTdGFydCBUaHVyc2RheSknKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBXRUVLTFlTQVQsXG4gICAgICBnZXRQZXJpb2RzOiBnZXRXZWVrbHlQZXJpb2RUeXBlKFxuICAgICAgICB7IHN0YXJ0RGF5OiA2IH0sXG4gICAgICAgIGZpbHRlckZ1dHVyZVBlcmlvZHMsXG4gICAgICAgIHBlcmlvZFNldHRpbmdzXG4gICAgICApLFxuICAgICAgbmFtZTogaTE4bi50KCdXZWVrbHkgKFN0YXJ0IFNhdHVyZGF5KScpLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFdFRUtMWVNVTixcbiAgICAgIGdldFBlcmlvZHM6IGdldFdlZWtseVBlcmlvZFR5cGUoXG4gICAgICAgIHsgc3RhcnREYXk6IDcgfSxcbiAgICAgICAgZmlsdGVyRnV0dXJlUGVyaW9kcyxcbiAgICAgICAgcGVyaW9kU2V0dGluZ3NcbiAgICAgICksXG4gICAgICBuYW1lOiBpMThuLnQoJ1dlZWtseSAoU3RhcnQgU3VuZGF5KScpLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IEJJV0VFS0xZLFxuICAgICAgZ2V0UGVyaW9kczogZ2V0QmlXZWVrbHlQZXJpb2RUeXBlKGZpbHRlckZ1dHVyZVBlcmlvZHMsIHBlcmlvZFNldHRpbmdzKSxcbiAgICAgIG5hbWU6IGkxOG4udCgnQmktd2Vla2x5JyksXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogTU9OVEhMWSxcbiAgICAgIGdldFBlcmlvZHM6IGdldE1vbnRobHlQZXJpb2RUeXBlKGZpbHRlckZ1dHVyZVBlcmlvZHMsIHBlcmlvZFNldHRpbmdzKSxcbiAgICAgIG5hbWU6IGkxOG4udCgnTW9udGhseScpLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IEJJTU9OVEhMWSxcbiAgICAgIGdldFBlcmlvZHM6IGdldEJpTW9udGhseVBlcmlvZFR5cGUoZmlsdGVyRnV0dXJlUGVyaW9kcywgcGVyaW9kU2V0dGluZ3MpLFxuICAgICAgbmFtZTogaTE4bi50KCdCaS1tb250aGx5JyksXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUVVBUlRFUkxZLFxuICAgICAgZ2V0UGVyaW9kczogZ2V0UXVhcnRlcmx5UGVyaW9kVHlwZShmaWx0ZXJGdXR1cmVQZXJpb2RzLCBwZXJpb2RTZXR0aW5ncyksXG4gICAgICBuYW1lOiBpMThuLnQoJ1F1YXJ0ZXJseScpLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFNJWE1PTlRITFksXG4gICAgICBnZXRQZXJpb2RzOiBnZXRTaXhNb250aGx5UGVyaW9kVHlwZShmaWx0ZXJGdXR1cmVQZXJpb2RzLCBwZXJpb2RTZXR0aW5ncyksXG4gICAgICBuYW1lOiBpMThuLnQoJ1NpeC1tb250aGx5JyksXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogU0lYTU9OVEhMWUFQUixcbiAgICAgIGdldFBlcmlvZHM6IGdldFNpeE1vbnRobHlBcHJpbFBlcmlvZFR5cGUoXG4gICAgICAgIGZpbHRlckZ1dHVyZVBlcmlvZHMsXG4gICAgICAgIHBlcmlvZFNldHRpbmdzXG4gICAgICApLFxuICAgICAgbmFtZTogaTE4bi50KCdTaXgtbW9udGhseSBBcHJpbCcpLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFlFQVJMWSxcbiAgICAgIGdldFBlcmlvZHM6IGdldFllYXJseVBlcmlvZFR5cGUoZmlsdGVyRnV0dXJlUGVyaW9kcywgcGVyaW9kU2V0dGluZ3MpLFxuICAgICAgbmFtZTogaTE4bi50KCdZZWFybHknKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBGWU5PVixcbiAgICAgIGdldFBlcmlvZHM6IGdldEZpbmFuY2lhbE5vdmVtYmVyUGVyaW9kVHlwZShcbiAgICAgICAgZmlsdGVyRnV0dXJlUGVyaW9kcyxcbiAgICAgICAgcGVyaW9kU2V0dGluZ3NcbiAgICAgICksXG4gICAgICBuYW1lOiBpMThuLnQoJ0ZpbmFuY2lhbCB5ZWFyIChTdGFydCBOb3ZlbWJlciknKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBGWU9DVCxcbiAgICAgIGdldFBlcmlvZHM6IGdldEZpbmFuY2lhbE9jdG9iZXJQZXJpb2RUeXBlKFxuICAgICAgICBmaWx0ZXJGdXR1cmVQZXJpb2RzLFxuICAgICAgICBwZXJpb2RTZXR0aW5nc1xuICAgICAgKSxcbiAgICAgIG5hbWU6IGkxOG4udCgnRmluYW5jaWFsIHllYXIgKFN0YXJ0IE9jdG9iZXIpJyksXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogRllKVUwsXG4gICAgICBnZXRQZXJpb2RzOiBnZXRGaW5hbmNpYWxKdWx5UGVyaW9kVHlwZShcbiAgICAgICAgZmlsdGVyRnV0dXJlUGVyaW9kcyxcbiAgICAgICAgcGVyaW9kU2V0dGluZ3NcbiAgICAgICksXG4gICAgICBuYW1lOiBpMThuLnQoJ0ZpbmFuY2lhbCB5ZWFyIChTdGFydCBKdWx5KScpLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IEZZQVBSLFxuICAgICAgZ2V0UGVyaW9kczogZ2V0RmluYW5jaWFsQXByaWxQZXJpb2RUeXBlKFxuICAgICAgICBmaWx0ZXJGdXR1cmVQZXJpb2RzLFxuICAgICAgICBwZXJpb2RTZXR0aW5nc1xuICAgICAgKSxcbiAgICAgIG5hbWU6IGkxOG4udCgnRmluYW5jaWFsIHllYXIgKFN0YXJ0IEFwcmlsKScpLFxuICAgIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rml4ZWRQZXJpb2RzT3B0aW9uc0J5SWQgPSAoXG4gIGlkOiBzdHJpbmcsXG4gIHBlcmlvZFNldHRpbmdzPzogYW55XG4pID0+IHtcbiAgcmV0dXJuIGdldE9wdGlvbnMocGVyaW9kU2V0dGluZ3MpLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmlkID09PSBpZCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rml4ZWRQZXJpb2RzT3B0aW9ucyA9ICgpID0+IGdldE9wdGlvbnMoKTtcblxuZXhwb3J0IGNvbnN0IGdldFllYXJPZmZzZXRGcm9tTm93ID0gKHllYXJTdHI6IGFueSkgPT5cbiAgcGFyc2VJbnQoeWVhclN0cikgLSBuZXcgRGF0ZShEYXRlLm5vdygpKS5nZXRGdWxsWWVhcigpO1xuXG5leHBvcnQgY29uc3QgcGFyc2VQZXJpb2RDb2RlID0gKGNvZGU6IGFueSwgYWxsb3dlZFR5cGVzOiBhbnkpID0+IHtcbiAgY29uc3QgcGVyaW9kVHlwZXMgPSBPYmplY3Qua2V5cyhQRVJJT0RfVFlQRV9SRUdFWCk7XG4gIGxldCBpID0gMDtcbiAgbGV0IHR5cGUgPSAnJztcbiAgbGV0IG1hdGNoID0gdW5kZWZpbmVkO1xuXG4gIHdoaWxlIChpIDwgcGVyaW9kVHlwZXMubGVuZ3RoICYmICFtYXRjaCkge1xuICAgIHR5cGUgPSBwZXJpb2RUeXBlc1tpXTtcbiAgICBtYXRjaCA9IGNvZGUubWF0Y2goKFBFUklPRF9UWVBFX1JFR0VYIGFzIGFueSlbdHlwZV0pO1xuICAgIGkrKztcbiAgfVxuXG4gIGlmIChcbiAgICAhbWF0Y2ggfHxcbiAgICAoQXJyYXkuaXNBcnJheShhbGxvd2VkVHlwZXMpICYmICFhbGxvd2VkVHlwZXMuc29tZSgodCkgPT4gdCA9PT0gdHlwZSkpXG4gICkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBwZXJpb2QgPSBnZXRGaXhlZFBlcmlvZHNPcHRpb25zQnlJZCh0eXBlKTtcbiAgY29uc3Qgb2Zmc2V0ID0gZ2V0WWVhck9mZnNldEZyb21Ob3cobWF0Y2hbMV0pO1xuICBjb25zdCBvcHRpb25zID0gcGVyaW9kPy5nZXRQZXJpb2RzKHsgb2Zmc2V0IH0pO1xuXG4gIHJldHVybiBwZXJpb2RcbiAgICA/IHtcbiAgICAgICAgaWQ6IHBlcmlvZC5pZCxcbiAgICAgICAgbmFtZTogcGVyaW9kLm5hbWUsXG4gICAgICAgIHllYXI6IG1hdGNoWzFdLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfVxuICAgIDogbnVsbDtcbn07XG4iXX0=
@@ -1,5 +0,0 @@
1
- export const filterPeriodTypesById = (allPeriodTypes = [], excludedPeriodTypes = []) => allPeriodTypes.filter((period) => !excludedPeriodTypes.includes(period['id']));
2
- export * from './relativePeriods';
3
- export * from './fixedPeriods';
4
- export * from './periodTypes';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvcGVyaW9kLXNlbGVjdG9yL2NvbXBvbmVudHMvdXRpbHMvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQ25DLGNBQWMsR0FBRyxFQUFFLEVBQ25CLG1CQUFtQixHQUFHLEVBQUUsRUFDeEIsRUFBRSxDQUNGLGNBQWMsQ0FBQyxNQUFNLENBQ25CLENBQUMsTUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBRSxNQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQzVFLENBQUM7QUFFSixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZmlsdGVyUGVyaW9kVHlwZXNCeUlkID0gKFxuICBhbGxQZXJpb2RUeXBlcyA9IFtdLFxuICBleGNsdWRlZFBlcmlvZFR5cGVzID0gW11cbikgPT5cbiAgYWxsUGVyaW9kVHlwZXMuZmlsdGVyKFxuICAgIChwZXJpb2Q6IHVua25vd24pID0+ICFleGNsdWRlZFBlcmlvZFR5cGVzLmluY2x1ZGVzKChwZXJpb2QgYXMgbmV2ZXIpWydpZCddKVxuICApO1xuXG5leHBvcnQgKiBmcm9tICcuL3JlbGF0aXZlUGVyaW9kcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpeGVkUGVyaW9kcyc7XG5leHBvcnQgKiBmcm9tICcuL3BlcmlvZFR5cGVzJztcbiJdfQ==
@@ -1,23 +0,0 @@
1
- // Copyright 2023 UDSM DHIS2 Lab. All rights reserved.
2
- // Use of this source code is governed by a BSD-style
3
- // license that can be found in the LICENSE file.
4
- export const DAILY = 'DAILY';
5
- export const WEEKLY = 'WEEKLY';
6
- export const WEEKLYWED = 'WEEKLYWED';
7
- export const WEEKLYTHU = 'WEEKLYTHU';
8
- export const WEEKLYSAT = 'WEEKLYSAT';
9
- export const WEEKLYSUN = 'WEEKLYSUN';
10
- export const WEEKS_THIS_YEAR = 'WEEKS_THIS_YEAR';
11
- export const BIWEEKLY = 'BIWEEKLY';
12
- export const MONTHLY = 'MONTHLY';
13
- export const BIMONTHLY = 'BIMONTHLY';
14
- export const QUARTERLY = 'QUARTERLY';
15
- export const SIXMONTHLY = 'SIXMONTHLY';
16
- export const SIXMONTHLYAPR = 'SIXMONTHLYAPR';
17
- export const YEARLY = 'YEARLY';
18
- export const FINANCIAL = 'FINANCIAL';
19
- export const FYNOV = 'FYNOV';
20
- export const FYOCT = 'FYOCT';
21
- export const FYJUL = 'FYJUL';
22
- export const FYAPR = 'FYAPR';
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyaW9kVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvcGVyaW9kLXNlbGVjdG9yL2NvbXBvbmVudHMvdXRpbHMvcGVyaW9kVHlwZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDN0IsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUNyQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztBQUNqRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDakMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUNyQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztBQUM3QixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDN0IsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDIzIFVEU00gREhJUzIgTGFiLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGVcbi8vIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS5cbmV4cG9ydCBjb25zdCBEQUlMWSA9ICdEQUlMWSc7XG5leHBvcnQgY29uc3QgV0VFS0xZID0gJ1dFRUtMWSc7XG5leHBvcnQgY29uc3QgV0VFS0xZV0VEID0gJ1dFRUtMWVdFRCc7XG5leHBvcnQgY29uc3QgV0VFS0xZVEhVID0gJ1dFRUtMWVRIVSc7XG5leHBvcnQgY29uc3QgV0VFS0xZU0FUID0gJ1dFRUtMWVNBVCc7XG5leHBvcnQgY29uc3QgV0VFS0xZU1VOID0gJ1dFRUtMWVNVTic7XG5leHBvcnQgY29uc3QgV0VFS1NfVEhJU19ZRUFSID0gJ1dFRUtTX1RISVNfWUVBUic7XG5leHBvcnQgY29uc3QgQklXRUVLTFkgPSAnQklXRUVLTFknO1xuZXhwb3J0IGNvbnN0IE1PTlRITFkgPSAnTU9OVEhMWSc7XG5leHBvcnQgY29uc3QgQklNT05USExZID0gJ0JJTU9OVEhMWSc7XG5leHBvcnQgY29uc3QgUVVBUlRFUkxZID0gJ1FVQVJURVJMWSc7XG5leHBvcnQgY29uc3QgU0lYTU9OVEhMWSA9ICdTSVhNT05USExZJztcbmV4cG9ydCBjb25zdCBTSVhNT05USExZQVBSID0gJ1NJWE1PTlRITFlBUFInO1xuZXhwb3J0IGNvbnN0IFlFQVJMWSA9ICdZRUFSTFknO1xuZXhwb3J0IGNvbnN0IEZJTkFOQ0lBTCA9ICdGSU5BTkNJQUwnO1xuZXhwb3J0IGNvbnN0IEZZTk9WID0gJ0ZZTk9WJztcbmV4cG9ydCBjb25zdCBGWU9DVCA9ICdGWU9DVCc7XG5leHBvcnQgY29uc3QgRllKVUwgPSAnRllKVUwnO1xuZXhwb3J0IGNvbnN0IEZZQVBSID0gJ0ZZQVBSJztcbiJdfQ==
@@ -1,139 +0,0 @@
1
- import i18n from '@dhis2/d2-i18n';
2
- import { DAILY, WEEKLY, BIWEEKLY, WEEKS_THIS_YEAR, MONTHLY, BIMONTHLY, QUARTERLY, SIXMONTHLY, FINANCIAL, YEARLY, } from './periodTypes';
3
- const getDaysPeriodType = () => [
4
- { id: 'TODAY', name: i18n.t('Today') },
5
- { id: 'YESTERDAY', name: i18n.t('Yesterday') },
6
- { id: 'LAST_3_DAYS', name: i18n.t('Last 3 days') },
7
- { id: 'LAST_7_DAYS', name: i18n.t('Last 7 days') },
8
- { id: 'LAST_14_DAYS', name: i18n.t('Last 14 days') },
9
- { id: 'LAST_30_DAYS', name: i18n.t('Last 30 days') },
10
- { id: 'LAST_60_DAYS', name: i18n.t('Last 60 days') },
11
- { id: 'LAST_90_DAYS', name: i18n.t('Last 90 days') },
12
- { id: 'LAST_180_DAYS', name: i18n.t('Last 180 days') },
13
- ];
14
- const getWeeksPeriodType = () => [
15
- { id: 'THIS_WEEK', name: i18n.t('This week') },
16
- { id: 'LAST_WEEK', name: i18n.t('Last week') },
17
- { id: 'LAST_4_WEEKS', name: i18n.t('Last 4 weeks') },
18
- { id: 'LAST_12_WEEKS', name: i18n.t('Last 12 weeks') },
19
- { id: 'LAST_52_WEEKS', name: i18n.t('Last 52 weeks') },
20
- { id: WEEKS_THIS_YEAR, name: i18n.t('Weeks this year') },
21
- ];
22
- const getBiWeeksPeriodType = () => [
23
- { id: 'THIS_BIWEEK', name: i18n.t('This bi-week') },
24
- { id: 'LAST_BIWEEK', name: i18n.t('Last bi-week') },
25
- { id: 'LAST_4_BIWEEKS', name: i18n.t('Last 4 bi-weeks') },
26
- ];
27
- const getMonthsPeriodType = () => [
28
- { id: 'THIS_MONTH', name: i18n.t('This month') },
29
- { id: 'LAST_MONTH', name: i18n.t('Last month') },
30
- { id: 'LAST_3_MONTHS', name: i18n.t('Last 3 months') },
31
- { id: 'LAST_6_MONTHS', name: i18n.t('Last 6 months') },
32
- { id: 'LAST_12_MONTHS', name: i18n.t('Last 12 months') },
33
- {
34
- id: 'MONTHS_THIS_YEAR',
35
- name: i18n.t('Months this year'),
36
- },
37
- ];
38
- const getBiMonthsPeriodType = () => [
39
- { id: 'THIS_BIMONTH', name: i18n.t('This bi-month') },
40
- { id: 'LAST_BIMONTH', name: i18n.t('Last bi-month') },
41
- {
42
- id: 'LAST_6_BIMONTHS',
43
- name: i18n.t('Last 6 bi-months'),
44
- },
45
- {
46
- id: 'BIMONTHS_THIS_YEAR',
47
- name: i18n.t('Bi-months this year'),
48
- },
49
- ];
50
- const getQuartersPeriodType = () => [
51
- { id: 'THIS_QUARTER', name: i18n.t('This quarter') },
52
- { id: 'LAST_QUARTER', name: i18n.t('Last quarter') },
53
- { id: 'LAST_4_QUARTERS', name: i18n.t('Last 4 quarters') },
54
- {
55
- id: 'QUARTERS_THIS_YEAR',
56
- name: i18n.t('Quarters this year'),
57
- },
58
- ];
59
- const getSixMonthsPeriodType = () => [
60
- { id: 'THIS_SIX_MONTH', name: i18n.t('This six-month') },
61
- { id: 'LAST_SIX_MONTH', name: i18n.t('Last six-month') },
62
- {
63
- id: 'LAST_2_SIXMONTHS',
64
- name: i18n.t('Last 2 six-month'),
65
- },
66
- ];
67
- const getFinancialYearsPeriodType = () => [
68
- {
69
- id: 'THIS_FINANCIAL_YEAR',
70
- name: i18n.t('This financial year'),
71
- },
72
- {
73
- id: 'LAST_FINANCIAL_YEAR',
74
- name: i18n.t('Last financial year'),
75
- },
76
- {
77
- id: 'LAST_5_FINANCIAL_YEARS',
78
- name: i18n.t('Last 5 financial years'),
79
- },
80
- ];
81
- const getYearsPeriodType = () => [
82
- { id: 'THIS_YEAR', name: i18n.t('This year') },
83
- { id: 'LAST_YEAR', name: i18n.t('Last year') },
84
- { id: 'LAST_5_YEARS', name: i18n.t('Last 5 years') },
85
- { id: 'LAST_10_YEARS', name: i18n.t('Last 10 years') },
86
- ];
87
- const getOptions = () => [
88
- {
89
- id: DAILY,
90
- getPeriods: () => getDaysPeriodType(),
91
- name: i18n.t('Days'),
92
- },
93
- {
94
- id: WEEKLY,
95
- getPeriods: () => getWeeksPeriodType(),
96
- name: i18n.t('Weeks'),
97
- },
98
- {
99
- id: BIWEEKLY,
100
- getPeriods: () => getBiWeeksPeriodType(),
101
- name: i18n.t('Bi-weeks'),
102
- },
103
- {
104
- id: MONTHLY,
105
- getPeriods: () => getMonthsPeriodType(),
106
- name: i18n.t('Months'),
107
- },
108
- {
109
- id: BIMONTHLY,
110
- getPeriods: () => getBiMonthsPeriodType(),
111
- name: i18n.t('Bi-months'),
112
- },
113
- {
114
- id: QUARTERLY,
115
- getPeriods: () => getQuartersPeriodType(),
116
- name: i18n.t('Quarters'),
117
- },
118
- {
119
- id: SIXMONTHLY,
120
- getPeriods: () => getSixMonthsPeriodType(),
121
- name: i18n.t('Six-months'),
122
- },
123
- {
124
- id: FINANCIAL,
125
- getPeriods: () => getFinancialYearsPeriodType(),
126
- name: i18n.t('Financial Years'),
127
- },
128
- {
129
- id: YEARLY,
130
- getPeriods: () => getYearsPeriodType(),
131
- name: i18n.t('Years'),
132
- },
133
- ];
134
- export const getRelativePeriodsOptionsById = (id) => getOptions().find((option) => option.id === id);
135
- export const getRelativePeriodsOptions = () => getOptions();
136
- export const getRelativePeriodIds = () => Object.values(getOptions())
137
- .map((option) => option.getPeriods().map((period) => period.id))
138
- .flat();
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpdmVQZXJpb2RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctZGhpczItdWkvc3JjL2xpYi9tb2R1bGVzL3BlcmlvZC1zZWxlY3Rvci9jb21wb25lbnRzL3V0aWxzL3JlbGF0aXZlUGVyaW9kcy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEMsT0FBTyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLGVBQWUsRUFDZixPQUFPLEVBQ1AsU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQzlCLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUN0QyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUU7SUFDOUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFO0lBQ2xELEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRTtJQUNsRCxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUU7SUFDcEQsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFO0lBQ3BELEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxJ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QyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsRUFBRSxDQUN2QyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0tBQ3hCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQy9ELElBQUksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGkxOG4gZnJvbSAnQGRoaXMyL2QyLWkxOG4nO1xuaW1wb3J0IHtcbiAgREFJTFksXG4gIFdFRUtMWSxcbiAgQklXRUVLTFksXG4gIFdFRUtTX1RISVNfWUVBUixcbiAgTU9OVEhMWSxcbiAgQklNT05USExZLFxuICBRVUFSVEVSTFksXG4gIFNJWE1PTlRITFksXG4gIEZJTkFOQ0lBTCxcbiAgWUVBUkxZLFxufSBmcm9tICcuL3BlcmlvZFR5cGVzJztcblxuY29uc3QgZ2V0RGF5c1BlcmlvZFR5cGUgPSAoKSA9PiBbXG4gIHsgaWQ6ICdUT0RBWScsIG5hbWU6IGkxOG4udCgnVG9kYXknKSB9LFxuICB7IGlkOiAnWUVTVEVSREFZJywgbmFtZTogaTE4bi50KCdZZXN0ZXJkYXknKSB9LFxuICB7IGlkOiAnTEFTVF8zX0RBWVMnLCBuYW1lOiBpMThuLnQoJ0xhc3QgMyBkYXlzJykgfSxcbiAgeyBpZDogJ0xBU1RfN19EQVlTJywgbmFtZTogaTE4bi50KCdMYXN0IDcgZGF5cycpIH0sXG4gIHsgaWQ6ICdMQVNUXzE0X0RBWVMnLCBuYW1lOiBpMThuLnQoJ0xhc3QgMTQgZGF5cycpIH0sXG4gIHsgaWQ6ICdMQVNUXzMwX0RBWVMnLCBuYW1lOiBpMThuLnQoJ0xhc3QgMzAgZGF5cycpIH0sXG4gIHsgaWQ6ICdMQVNUXzYwX0RBWVMnLCBuYW1lOiBpMThuLnQoJ0xhc3QgNjAgZGF5cycpIH0sXG4gIHsgaWQ6ICdMQVNUXzkwX0RBWVMnLCBuYW1lOiBpMThuLnQoJ0xhc3QgOTAgZGF5cycpIH0sXG4gIHsgaWQ6ICdMQVNUXzE4MF9EQVlTJywgbmFtZTogaTE4bi50KCdMYXN0IDE4MCBkYXlzJykgfSxcbl07XG5cbmNvbnN0IGdldFdlZWtzUGVyaW9kVHlwZSA9ICgpID0+IFtcbiAgeyBpZDogJ1RISVNfV0VFSycsIG5hbWU6IGkxOG4udCgnVGhpcyB3ZWVrJykgfSxcbiAgeyBpZDogJ0xBU1RfV0VFSycsIG5hbWU6IGkxOG4udCgnTGFzdCB3ZWVrJykgfSxcbiAgeyBpZDogJ0xBU1RfNF9XRUVLUycsIG5hbWU6IGkxOG4udCgnTGFzdCA0IHdlZWtzJykgfSxcbiAgeyBpZDogJ0xBU1RfMTJfV0VFS1MnLCBuYW1lOiBpMThuLnQoJ0xhc3QgMTIgd2Vla3MnKSB9LFxuICB7IGlkOiAnTEFTVF81Ml9XRUVLUycsIG5hbWU6IGkxOG4udCgnTGFzdCA1MiB3ZWVrcycpIH0sXG4gIHsgaWQ6IFdFRUtTX1RISVNfWUVBUiwgbmFtZTogaTE4bi50KCdXZWVrcyB0aGlzIHllYXInKSB9LFxuXTtcblxuY29uc3QgZ2V0QmlXZWVrc1BlcmlvZFR5cGUgPSAoKSA9PiBbXG4gIHsgaWQ6ICdUSElTX0JJV0VFSycsIG5hbWU6IGkxOG4udCgnVGhpcyBiaS13ZWVrJykgfSxcbiAgeyBpZDogJ0xBU1RfQklXRUVLJywgbmFtZTogaTE4bi50KCdMYXN0IGJpLXdlZWsnKSB9LFxuICB7IGlkOiAnTEFTVF80X0JJV0VFS1MnLCBuYW1lOiBpMThuLnQoJ0xhc3QgNCBiaS13ZWVrcycpIH0sXG5dO1xuXG5jb25zdCBnZXRNb250aHNQZXJpb2RUeXBlID0gKCkgPT4gW1xuICB7IGlkOiAnVEhJU19NT05USCcsIG5hbWU6IGkxOG4udCgnVGhpcyBtb250aCcpIH0sXG4gIHsgaWQ6ICdMQVNUX01PTlRIJywgbmFtZTogaTE4bi50KCdMYXN0IG1vbnRoJykgfSxcbiAgeyBpZDogJ0xBU1RfM19NT05USFMnLCBuYW1lOiBpMThuLnQoJ0xhc3QgMyBtb250aHMnKSB9LFxuICB7IGlkOiAnTEFTVF82X01PTlRIUycsIG5hbWU6IGkxOG4udCgnTGFzdCA2IG1vbnRocycpIH0sXG4gIHsgaWQ6ICdMQVNUXzEyX01PTlRIUycsIG5hbWU6IGkxOG4udCgnTGFzdCAxMiBtb250aHMnKSB9LFxuICB7XG4gICAgaWQ6ICdNT05USFNfVEhJU19ZRUFSJyxcbiAgICBuYW1lOiBpMThuLnQoJ01vbnRocyB0aGlzIHllYXInKSxcbiAgfSxcbl07XG5cbmNvbnN0IGdldEJpTW9udGhzUGVyaW9kVHlwZSA9ICgpID0+IFtcbiAgeyBpZDogJ1RISVNfQklNT05USCcsIG5hbWU6IGkxOG4udCgnVGhpcyBiaS1tb250aCcpIH0sXG4gIHsgaWQ6ICdMQVNUX0JJTU9OVEgnLCBuYW1lOiBpMThuLnQoJ0xhc3QgYmktbW9udGgnKSB9LFxuICB7XG4gICAgaWQ6ICdMQVNUXzZfQklNT05USFMnLFxuICAgIG5hbWU6IGkxOG4udCgnTGFzdCA2IGJpLW1vbnRocycpLFxuICB9LFxuICB7XG4gICAgaWQ6ICdCSU1PTlRIU19USElTX1lFQVInLFxuICAgIG5hbWU6IGkxOG4udCgnQmktbW9udGhzIHRoaXMgeWVhcicpLFxuICB9LFxuXTtcblxuY29uc3QgZ2V0UXVhcnRlcnNQZXJpb2RUeXBlID0gKCkgPT4gW1xuICB7IGlkOiAnVEhJU19RVUFSVEVSJywgbmFtZTogaTE4bi50KCdUaGlzIHF1YXJ0ZXInKSB9LFxuICB7IGlkOiAnTEFTVF9RVUFSVEVSJywgbmFtZTogaTE4bi50KCdMYXN0IHF1YXJ0ZXInKSB9LFxuICB7IGlkOiAnTEFTVF80X1FVQVJURVJTJywgbmFtZTogaTE4bi50KCdMYXN0IDQgcXVhcnRlcnMnKSB9LFxuICB7XG4gICAgaWQ6ICdRVUFSVEVSU19USElTX1lFQVInLFxuICAgIG5hbWU6IGkxOG4udCgnUXVhcnRlcnMgdGhpcyB5ZWFyJyksXG4gIH0sXG5dO1xuXG5jb25zdCBnZXRTaXhNb250aHNQZXJpb2RUeXBlID0gKCkgPT4gW1xuICB7IGlkOiAnVEhJU19TSVhfTU9OVEgnLCBuYW1lOiBpMThuLnQoJ1RoaXMgc2l4LW1vbnRoJykgfSxcbiAgeyBpZDogJ0xBU1RfU0lYX01PTlRIJywgbmFtZTogaTE4bi50KCdMYXN0IHNpeC1tb250aCcpIH0sXG4gIHtcbiAgICBpZDogJ0xBU1RfMl9TSVhNT05USFMnLFxuICAgIG5hbWU6IGkxOG4udCgnTGFzdCAyIHNpeC1tb250aCcpLFxuICB9LFxuXTtcblxuY29uc3QgZ2V0RmluYW5jaWFsWWVhcnNQZXJpb2RUeXBlID0gKCkgPT4gW1xuICB7XG4gICAgaWQ6ICdUSElTX0ZJTkFOQ0lBTF9ZRUFSJyxcbiAgICBuYW1lOiBpMThuLnQoJ1RoaXMgZmluYW5jaWFsIHllYXInKSxcbiAgfSxcbiAge1xuICAgIGlkOiAnTEFTVF9GSU5BTkNJQUxfWUVBUicsXG4gICAgbmFtZTogaTE4bi50KCdMYXN0IGZpbmFuY2lhbCB5ZWFyJyksXG4gIH0sXG4gIHtcbiAgICBpZDogJ0xBU1RfNV9GSU5BTkNJQUxfWUVBUlMnLFxuICAgIG5hbWU6IGkxOG4udCgnTGFzdCA1IGZpbmFuY2lhbCB5ZWFycycpLFxuICB9LFxuXTtcblxuY29uc3QgZ2V0WWVhcnNQZXJpb2RUeXBlID0gKCkgPT4gW1xuICB7IGlkOiAnVEhJU19ZRUFSJywgbmFtZTogaTE4bi50KCdUaGlzIHllYXInKSB9LFxuICB7IGlkOiAnTEFTVF9ZRUFSJywgbmFtZTogaTE4bi50KCdMYXN0IHllYXInKSB9LFxuICB7IGlkOiAnTEFTVF81X1lFQVJTJywgbmFtZTogaTE4bi50KCdMYXN0IDUgeWVhcnMnKSB9LFxuICB7IGlkOiAnTEFTVF8xMF9ZRUFSUycsIG5hbWU6IGkxOG4udCgnTGFzdCAxMCB5ZWFycycpIH0sXG5dO1xuXG5jb25zdCBnZXRPcHRpb25zID0gKCkgPT4gW1xuICB7XG4gICAgaWQ6IERBSUxZLFxuICAgIGdldFBlcmlvZHM6ICgpID0+IGdldERheXNQZXJpb2RUeXBlKCksXG4gICAgbmFtZTogaTE4bi50KCdEYXlzJyksXG4gIH0sXG4gIHtcbiAgICBpZDogV0VFS0xZLFxuICAgIGdldFBlcmlvZHM6ICgpID0+IGdldFdlZWtzUGVyaW9kVHlwZSgpLFxuICAgIG5hbWU6IGkxOG4udCgnV2Vla3MnKSxcbiAgfSxcbiAge1xuICAgIGlkOiBCSVdFRUtMWSxcbiAgICBnZXRQZXJpb2RzOiAoKSA9PiBnZXRCaVdlZWtzUGVyaW9kVHlwZSgpLFxuICAgIG5hbWU6IGkxOG4udCgnQmktd2Vla3MnKSxcbiAgfSxcbiAge1xuICAgIGlkOiBNT05USExZLFxuICAgIGdldFBlcmlvZHM6ICgpID0+IGdldE1vbnRoc1BlcmlvZFR5cGUoKSxcbiAgICBuYW1lOiBpMThuLnQoJ01vbnRocycpLFxuICB9LFxuICB7XG4gICAgaWQ6IEJJTU9OVEhMWSxcbiAgICBnZXRQZXJpb2RzOiAoKSA9PiBnZXRCaU1vbnRoc1BlcmlvZFR5cGUoKSxcbiAgICBuYW1lOiBpMThuLnQoJ0JpLW1vbnRocycpLFxuICB9LFxuICB7XG4gICAgaWQ6IFFVQVJURVJMWSxcbiAgICBnZXRQZXJpb2RzOiAoKSA9PiBnZXRRdWFydGVyc1BlcmlvZFR5cGUoKSxcbiAgICBuYW1lOiBpMThuLnQoJ1F1YXJ0ZXJzJyksXG4gIH0sXG4gIHtcbiAgICBpZDogU0lYTU9OVEhMWSxcbiAgICBnZXRQZXJpb2RzOiAoKSA9PiBnZXRTaXhNb250aHNQZXJpb2RUeXBlKCksXG4gICAgbmFtZTogaTE4bi50KCdTaXgtbW9udGhzJyksXG4gIH0sXG4gIHtcbiAgICBpZDogRklOQU5DSUFMLFxuICAgIGdldFBlcmlvZHM6ICgpID0+IGdldEZpbmFuY2lhbFllYXJzUGVyaW9kVHlwZSgpLFxuICAgIG5hbWU6IGkxOG4udCgnRmluYW5jaWFsIFllYXJzJyksXG4gIH0sXG4gIHtcbiAgICBpZDogWUVBUkxZLFxuICAgIGdldFBlcmlvZHM6ICgpID0+IGdldFllYXJzUGVyaW9kVHlwZSgpLFxuICAgIG5hbWU6IGkxOG4udCgnWWVhcnMnKSxcbiAgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWxhdGl2ZVBlcmlvZHNPcHRpb25zQnlJZCA9IChpZDogc3RyaW5nKSA9PlxuICBnZXRPcHRpb25zKCkuZmluZCgob3B0aW9uKSA9PiBvcHRpb24uaWQgPT09IGlkKTtcblxuZXhwb3J0IGNvbnN0IGdldFJlbGF0aXZlUGVyaW9kc09wdGlvbnMgPSAoKSA9PiBnZXRPcHRpb25zKCk7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWxhdGl2ZVBlcmlvZElkcyA9ICgpID0+XG4gIE9iamVjdC52YWx1ZXMoZ2V0T3B0aW9ucygpKVxuICAgIC5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLmdldFBlcmlvZHMoKS5tYXAoKHBlcmlvZCkgPT4gcGVyaW9kLmlkKSlcbiAgICAuZmxhdCgpO1xuIl19
@@ -1,69 +0,0 @@
1
- import { Component, Input, ElementRef, Output, EventEmitter, NgZone, } from '@angular/core';
2
- import { DataProvider } from '@dhis2/app-runtime';
3
- import { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';
4
- import React from 'react';
5
- import * as ReactDOM from 'react-dom/client';
6
- import { firstValueFrom } from 'rxjs';
7
- import { PeriodDimension } from '../../components/PeriodDimension';
8
- import { BIMONTHLY, BIWEEKLY, DAILY, MONTHLY, WEEKLY, WEEKLYSAT, WEEKLYSUN, WEEKLYTHU, WEEKLYWED, } from '../../components/utils';
9
- import { ReactWrapperComponent } from '../../../react-wrapper/react-wrapper.component';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@iapps/ngx-dhis2-http-client";
12
- export class PeriodSelectorComponent extends ReactWrapperComponent {
13
- constructor(elementRef, httpClient, ngZone) {
14
- super(elementRef);
15
- this.httpClient = httpClient;
16
- this.ngZone = ngZone;
17
- this.selectedPeriods = [];
18
- this.selectPeriods = new EventEmitter();
19
- this.props = {
20
- onSelect: (e) => {
21
- this.onSelectItems(e);
22
- },
23
- };
24
- this.getExcludedPeriodTypes = (systemSettings = {}) => {
25
- const types = [];
26
- if (systemSettings['hideDailyPeriods']) {
27
- types.push(DAILY);
28
- }
29
- if (systemSettings['hideWeeklyPeriods']) {
30
- types.push(WEEKLY, WEEKLYWED, WEEKLYTHU, WEEKLYSAT, WEEKLYSUN);
31
- }
32
- if (systemSettings['hideBiWeeklyPeriods']) {
33
- types.push(BIWEEKLY);
34
- }
35
- if (systemSettings['hideMonthlyPeriods']) {
36
- types.push(MONTHLY);
37
- }
38
- if (systemSettings['hideBiMonthlyPeriods']) {
39
- types.push(BIMONTHLY);
40
- }
41
- return types;
42
- };
43
- }
44
- async ngAfterViewInit() {
45
- if (!this.elementRef)
46
- throw new Error('No element ref');
47
- this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);
48
- const systemInfo = await firstValueFrom(this.httpClient.systemInfo());
49
- const excludedPeriodTypes = this.getExcludedPeriodTypes(systemInfo);
50
- this.component = () => (React.createElement(DataProvider, null, React.createElement(PeriodDimension, { selectedPeriods: this.selectedPeriods, onSelect: (selectionEvent) => this.ngZone.run(() => {
51
- this.onSelectItems(selectionEvent);
52
- }), excludedPeriodTypes: excludedPeriodTypes, systemInfo: systemInfo })));
53
- this.render();
54
- }
55
- onSelectItems(selectionEvent) {
56
- this.selectPeriods.emit(selectionEvent.items);
57
- }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: PeriodSelectorComponent, deps: [{ token: i0.ElementRef }, { token: i1.NgxDhis2HttpClientService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
59
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: PeriodSelectorComponent, selector: "ng-dhis2-ui-period-selector", inputs: { selectedPeriods: "selectedPeriods" }, outputs: { selectPeriods: "selectPeriods" }, usesInheritance: true, ngImport: i0, template: `<ng-container></ng-container>`, isInline: true, styles: ["::ng-deep .content-container{z-index:0!important}\n"] }); }
60
- }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: PeriodSelectorComponent, decorators: [{
62
- type: Component,
63
- args: [{ selector: 'ng-dhis2-ui-period-selector', template: `<ng-container></ng-container>`, styles: ["::ng-deep .content-container{z-index:0!important}\n"] }]
64
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.NgxDhis2HttpClientService }, { type: i0.NgZone }], propDecorators: { selectedPeriods: [{
65
- type: Input
66
- }], selectPeriods: [{
67
- type: Output
68
- }] } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyaW9kLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9wZXJpb2Qtc2VsZWN0b3IvY29udGFpbmVycy9wZXJpb2Qtc2VsZWN0b3IvcGVyaW9kLXNlbGVjdG9yLmNvbXBvbmVudC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxLQUFLLFFBQVEsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBQ0wsT0FBTyxFQUNQLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7O0FBa0J2RixNQUFNLE9BQU8sdUJBQXdCLFNBQVEscUJBQXFCO0lBV2hFLFlBQ0UsVUFBbUMsRUFDM0IsVUFBcUMsRUFDckMsTUFBYztRQUV0QixLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFIVixlQUFVLEdBQVYsVUFBVSxDQUEyQjtRQUNyQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBYmYsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFFM0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBDLFVBQUssR0FBNEI7WUFDeEMsUUFBUSxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsQ0FBQztTQUNGLENBQUM7UUF1Q0YsMkJBQXNCLEdBQUcsQ0FBQyxpQkFBc0IsRUFBRSxFQUFFLEVBQUU7WUFDcEQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztnQkFDdkMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsSUFBSSxjQUFjLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNqRSxDQUFDO1lBQ0QsSUFBSSxjQUFjLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxJQUFJLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUNELElBQUksY0FBYyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztnQkFDM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4QixDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7SUFqREYsQ0FBQztJQUVRLEtBQUssQ0FBQyxlQUFlO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RSxNQUFNLFVBQVUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDdEUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUNyQixvQkFBQyxZQUFZLFFBRVQsb0JBQUMsZUFBZSxJQUNkLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUNyQyxRQUFRLEVBQUUsQ0FBQyxjQUFvQyxFQUFFLEVBQUUsQ0FDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxFQUVKLG1CQUFtQixFQUFFLG1CQUFtQixFQUN4QyxVQUFVLEVBQUUsVUFBVSxHQUN0QixDQUVTLENBQ2hCLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxjQUFvQztRQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs4R0E5Q1UsdUJBQXVCO2tHQUF2Qix1QkFBdUIsdUxBVHhCLCtCQUErQjs7MkZBUzlCLHVCQUF1QjtrQkFYbkMsU0FBUzsrQkFDRSw2QkFBNkIsWUFDN0IsK0JBQStCOzRJQVVoQyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBFbGVtZW50UmVmLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFQcm92aWRlciB9IGZyb20gJ0BkaGlzMi9hcHAtcnVudGltZSc7XG5pbXBvcnQgeyBOZ3hEaGlzMkh0dHBDbGllbnRTZXJ2aWNlIH0gZnJvbSAnQGlhcHBzL25neC1kaGlzMi1odHRwLWNsaWVudCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tL2NsaWVudCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGVyaW9kRGltZW5zaW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9QZXJpb2REaW1lbnNpb24nO1xuaW1wb3J0IHtcbiAgQklNT05USExZLFxuICBCSVdFRUtMWSxcbiAgREFJTFksXG4gIE1PTlRITFksXG4gIFdFRUtMWSxcbiAgV0VFS0xZU0FULFxuICBXRUVLTFlTVU4sXG4gIFdFRUtMWVRIVSxcbiAgV0VFS0xZV0VELFxufSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3V0aWxzJztcbmltcG9ydCB7IFJlYWN0V3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3JlYWN0LXdyYXBwZXIvcmVhY3Qtd3JhcHBlci5jb21wb25lbnQnO1xuXG50eXBlIFBlcmlvZFNlbGVjdGlvbkV2ZW50ID0ge1xuICBkaW1lbnNpb25JZDogc3RyaW5nO1xuICBpdGVtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLWRoaXMyLXVpLXBlcmlvZC1zZWxlY3RvcicsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5gLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6Om5nLWRlZXAgLmNvbnRlbnQtY29udGFpbmVyIHtcbiAgICAgICAgei1pbmRleDogMCAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBlcmlvZFNlbGVjdG9yQ29tcG9uZW50IGV4dGVuZHMgUmVhY3RXcmFwcGVyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2VsZWN0ZWRQZXJpb2RzOiBhbnlbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3RQZXJpb2RzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG92ZXJyaWRlIHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBvblNlbGVjdDogKGU6IGFueSkgPT4ge1xuICAgICAgdGhpcy5vblNlbGVjdEl0ZW1zKGUpO1xuICAgIH0sXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBOZ3hEaGlzMkh0dHBDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZik7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYpIHRocm93IG5ldyBFcnJvcignTm8gZWxlbWVudCByZWYnKTtcbiAgICB0aGlzLnJlYWN0RG9tUm9vdCA9IFJlYWN0RE9NLmNyZWF0ZVJvb3QodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIGNvbnN0IHN5c3RlbUluZm8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQuc3lzdGVtSW5mbygpKTtcbiAgICBjb25zdCBleGNsdWRlZFBlcmlvZFR5cGVzID0gdGhpcy5nZXRFeGNsdWRlZFBlcmlvZFR5cGVzKHN5c3RlbUluZm8pO1xuXG4gICAgdGhpcy5jb21wb25lbnQgPSAoKSA9PiAoXG4gICAgICA8RGF0YVByb3ZpZGVyPlxuICAgICAgICB7XG4gICAgICAgICAgPFBlcmlvZERpbWVuc2lvblxuICAgICAgICAgICAgc2VsZWN0ZWRQZXJpb2RzPXt0aGlzLnNlbGVjdGVkUGVyaW9kc31cbiAgICAgICAgICAgIG9uU2VsZWN0PXsoc2VsZWN0aW9uRXZlbnQ6IFBlcmlvZFNlbGVjdGlvbkV2ZW50KSA9PlxuICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RJdGVtcyhzZWxlY3Rpb25FdmVudCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBleGNsdWRlZFBlcmlvZFR5cGVzPXtleGNsdWRlZFBlcmlvZFR5cGVzfVxuICAgICAgICAgICAgc3lzdGVtSW5mbz17c3lzdGVtSW5mb31cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8L0RhdGFQcm92aWRlcj5cbiAgICApO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBvblNlbGVjdEl0ZW1zKHNlbGVjdGlvbkV2ZW50OiBQZXJpb2RTZWxlY3Rpb25FdmVudCkge1xuICAgIHRoaXMuc2VsZWN0UGVyaW9kcy5lbWl0KHNlbGVjdGlvbkV2ZW50Lml0ZW1zKTtcbiAgfVxuXG4gIGdldEV4Y2x1ZGVkUGVyaW9kVHlwZXMgPSAoc3lzdGVtU2V0dGluZ3M6IGFueSA9IHt9KSA9PiB7XG4gICAgY29uc3QgdHlwZXMgPSBbXTtcbiAgICBpZiAoc3lzdGVtU2V0dGluZ3NbJ2hpZGVEYWlseVBlcmlvZHMnXSkge1xuICAgICAgdHlwZXMucHVzaChEQUlMWSk7XG4gICAgfVxuICAgIGlmIChzeXN0ZW1TZXR0aW5nc1snaGlkZVdlZWtseVBlcmlvZHMnXSkge1xuICAgICAgdHlwZXMucHVzaChXRUVLTFksIFdFRUtMWVdFRCwgV0VFS0xZVEhVLCBXRUVLTFlTQVQsIFdFRUtMWVNVTik7XG4gICAgfVxuICAgIGlmIChzeXN0ZW1TZXR0aW5nc1snaGlkZUJpV2Vla2x5UGVyaW9kcyddKSB7XG4gICAgICB0eXBlcy5wdXNoKEJJV0VFS0xZKTtcbiAgICB9XG4gICAgaWYgKHN5c3RlbVNldHRpbmdzWydoaWRlTW9udGhseVBlcmlvZHMnXSkge1xuICAgICAgdHlwZXMucHVzaChNT05USExZKTtcbiAgICB9XG4gICAgaWYgKHN5c3RlbVNldHRpbmdzWydoaWRlQmlNb250aGx5UGVyaW9kcyddKSB7XG4gICAgICB0eXBlcy5wdXNoKEJJTU9OVEhMWSk7XG4gICAgfVxuICAgIHJldHVybiB0eXBlcztcbiAgfTtcbn1cbiJdfQ==