@ieeesa-npm/groups 0.15.14 → 0.15.16
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/esm2022/lib/assets/constants.json +43 -5
- package/esm2022/lib/components/custom-question-editor/custom-question-editor.component.mjs +164 -0
- package/esm2022/lib/components/interest-form/interest-form.component.mjs +435 -27
- package/esm2022/lib/components/interest-form-preview/interest-form-preview.component.mjs +63 -0
- package/esm2022/lib/components/roster-import/roster-import.component.mjs +27 -10
- package/esm2022/lib/models/custom-question.model.mjs +37 -0
- package/esm2022/lib/services/interest-form.service.mjs +186 -0
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/ieeesa-npm-groups.mjs +932 -47
- package/fesm2022/ieeesa-npm-groups.mjs.map +1 -1
- package/lib/components/custom-question-editor/custom-question-editor.component.d.ts +75 -0
- package/lib/components/interest-form/interest-form.component.d.ts +151 -16
- package/lib/components/interest-form-preview/interest-form-preview.component.d.ts +37 -0
- package/lib/components/roster-import/roster-import.component.d.ts +7 -1
- package/lib/models/custom-question.model.d.ts +72 -0
- package/lib/services/groups.service.d.ts +6 -0
- package/lib/services/interest-form.service.d.ts +114 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* eslint-disable no-unused-vars */
|
|
2
|
+
/**
|
|
3
|
+
* Supported field types for a custom interest-form question (SP3M-317). Values
|
|
4
|
+
* match the backend FieldType enum / field_type CHECK constraint exactly.
|
|
5
|
+
*/
|
|
6
|
+
export var QuestionFieldType;
|
|
7
|
+
(function (QuestionFieldType) {
|
|
8
|
+
QuestionFieldType["TEXT"] = "TEXT";
|
|
9
|
+
QuestionFieldType["TEXTAREA"] = "TEXTAREA";
|
|
10
|
+
QuestionFieldType["SELECT"] = "SELECT";
|
|
11
|
+
QuestionFieldType["CHECKBOX"] = "CHECKBOX";
|
|
12
|
+
QuestionFieldType["RADIO"] = "RADIO";
|
|
13
|
+
QuestionFieldType["DATE"] = "DATE";
|
|
14
|
+
})(QuestionFieldType || (QuestionFieldType = {}));
|
|
15
|
+
/**
|
|
16
|
+
* Field types that require a configurable list of options
|
|
17
|
+
* (SELECT / CHECKBOX / RADIO), matching the backend's choice-type validation.
|
|
18
|
+
*/
|
|
19
|
+
export const CHOICE_FIELD_TYPES = [
|
|
20
|
+
QuestionFieldType.SELECT,
|
|
21
|
+
QuestionFieldType.CHECKBOX,
|
|
22
|
+
QuestionFieldType.RADIO,
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* Interest-expression mode for a group (matches backend InterestMode).
|
|
26
|
+
*/
|
|
27
|
+
export var InterestMode;
|
|
28
|
+
(function (InterestMode) {
|
|
29
|
+
InterestMode["DISABLED"] = "DISABLED";
|
|
30
|
+
InterestMode["BASIC"] = "BASIC";
|
|
31
|
+
InterestMode["FORM"] = "FORM";
|
|
32
|
+
})(InterestMode || (InterestMode = {}));
|
|
33
|
+
/**
|
|
34
|
+
* roleTypeName value identifying member-level roles.
|
|
35
|
+
*/
|
|
36
|
+
export const MEMBER_LEVEL_ROLE_TYPE = 'Member Level';
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXF1ZXN0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3JvdXBzL3NyYy9saWIvbW9kZWxzL2N1c3RvbS1xdWVzdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7QUFFbkM7OztHQUdHO0FBQ0gsTUFBTSxDQUFOLElBQVksaUJBT1g7QUFQRCxXQUFZLGlCQUFpQjtJQUMzQixrQ0FBYSxDQUFBO0lBQ2IsMENBQXFCLENBQUE7SUFDckIsc0NBQWlCLENBQUE7SUFDakIsMENBQXFCLENBQUE7SUFDckIsb0NBQWUsQ0FBQTtJQUNmLGtDQUFhLENBQUE7QUFDZixDQUFDLEVBUFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQU81QjtBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUF3QjtJQUNyRCxpQkFBaUIsQ0FBQyxNQUFNO0lBQ3hCLGlCQUFpQixDQUFDLFFBQVE7SUFDMUIsaUJBQWlCLENBQUMsS0FBSztDQUN4QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxZQUlYO0FBSkQsV0FBWSxZQUFZO0lBQ3RCLHFDQUFxQixDQUFBO0lBQ3JCLCtCQUFlLENBQUE7SUFDZiw2QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLFlBQVksS0FBWixZQUFZLFFBSXZCO0FBbUREOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuXHJcbi8qKlxyXG4gKiBTdXBwb3J0ZWQgZmllbGQgdHlwZXMgZm9yIGEgY3VzdG9tIGludGVyZXN0LWZvcm0gcXVlc3Rpb24gKFNQM00tMzE3KS4gVmFsdWVzXHJcbiAqIG1hdGNoIHRoZSBiYWNrZW5kIEZpZWxkVHlwZSBlbnVtIC8gZmllbGRfdHlwZSBDSEVDSyBjb25zdHJhaW50IGV4YWN0bHkuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBRdWVzdGlvbkZpZWxkVHlwZSB7XHJcbiAgVEVYVCA9ICdURVhUJyxcclxuICBURVhUQVJFQSA9ICdURVhUQVJFQScsXHJcbiAgU0VMRUNUID0gJ1NFTEVDVCcsXHJcbiAgQ0hFQ0tCT1ggPSAnQ0hFQ0tCT1gnLFxyXG4gIFJBRElPID0gJ1JBRElPJyxcclxuICBEQVRFID0gJ0RBVEUnLFxyXG59XHJcblxyXG4vKipcclxuICogRmllbGQgdHlwZXMgdGhhdCByZXF1aXJlIGEgY29uZmlndXJhYmxlIGxpc3Qgb2Ygb3B0aW9uc1xyXG4gKiAoU0VMRUNUIC8gQ0hFQ0tCT1ggLyBSQURJTyksIG1hdGNoaW5nIHRoZSBiYWNrZW5kJ3MgY2hvaWNlLXR5cGUgdmFsaWRhdGlvbi5cclxuICovXHJcbmV4cG9ydCBjb25zdCBDSE9JQ0VfRklFTERfVFlQRVM6IFF1ZXN0aW9uRmllbGRUeXBlW10gPSBbXHJcbiAgUXVlc3Rpb25GaWVsZFR5cGUuU0VMRUNULFxyXG4gIFF1ZXN0aW9uRmllbGRUeXBlLkNIRUNLQk9YLFxyXG4gIFF1ZXN0aW9uRmllbGRUeXBlLlJBRElPLFxyXG5dO1xyXG5cclxuLyoqXHJcbiAqIEludGVyZXN0LWV4cHJlc3Npb24gbW9kZSBmb3IgYSBncm91cCAobWF0Y2hlcyBiYWNrZW5kIEludGVyZXN0TW9kZSkuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBJbnRlcmVzdE1vZGUge1xyXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcclxuICBCQVNJQyA9ICdCQVNJQycsXHJcbiAgRk9STSA9ICdGT1JNJyxcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgc2luZ2xlIGFkbWluLWNvbmZpZ3VyZWQgY3VzdG9tIHF1ZXN0aW9uIG9uIGEgZ3JvdXAncyBpbnRlcmVzdCBmb3JtLiBGaWVsZFxyXG4gKiBuYW1lcyBtaXJyb3IgdGhlIGJhY2tlbmQgSW50ZXJlc3RGb3JtUXVlc3Rpb24gZW50aXR5IHNvIHBheWxvYWRzIG1hcCBkaXJlY3RseS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tUXVlc3Rpb24ge1xyXG4gIHF1ZXN0aW9uSWQ/OiBzdHJpbmc7XHJcbiAgZ3JvdXBJZDogc3RyaW5nO1xyXG4gIHF1ZXN0aW9uTGFiZWw6IHN0cmluZztcclxuICBmaWVsZFR5cGU6IFF1ZXN0aW9uRmllbGRUeXBlIHwgbnVsbDtcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBoZWxwVGV4dD86IHN0cmluZztcclxuICBpc1JlcXVpcmVkOiBib29sZWFuO1xyXG4gIHZpZXdPcmRlcjogbnVtYmVyO1xyXG4gIC8vIE9wdGlvbnMgYXJlIHN0b3JlZCBieSB0aGUgYmFja2VuZCBhcyBhIHJhdyBKU09OIHN0cmluZyAoSlNPTkIpLiBUaGUgc2VydmljZVxyXG4gIC8vIGxheWVyIHN0cmluZ2lmaWVzL3BhcnNlcyBiZXR3ZWVuIHRoaXMgc3RyaW5nIGFuZCBhIHN0cmluZ1tdIGluIHRoZSBVSS5cclxuICBvcHRpb25zPzogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogTGlnaHR3ZWlnaHQgdHJhbnNmZXIgb2JqZWN0IGZvciByZW9yZGVyaW5nIHF1ZXN0aW9ucyAobWF0Y2hlcyBiYWNrZW5kXHJcbiAqIFF1ZXN0aW9uT3JkZXIpLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBRdWVzdGlvbk9yZGVyIHtcclxuICBxdWVzdGlvbklkOiBzdHJpbmc7XHJcbiAgdmlld09yZGVyOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHcm91cCBpbnRlcmVzdCBjb25maWd1cmF0aW9uIChtYXRjaGVzIGJhY2tlbmQgR3JvdXBJbnRlcmVzdENvbmZpZykuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwSW50ZXJlc3RDb25maWcge1xyXG4gIGdyb3VwSWQ6IHN0cmluZztcclxuICBpbnRlcmVzdE1vZGU6IHN0cmluZztcclxuICBkZWZhdWx0TGV2ZWxJZDogc3RyaW5nIHwgbnVsbDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgcm9sZSBlbnRyeSByZXR1cm5lZCBieSBHRVQgL2dyb3Vwcy9yb2xlL3thcHBJZH0uIE1lbWJlciBsZXZlbHMgYXJlIHRoZVxyXG4gKiBzdWJzZXQgd2hlcmUgcm9sZVR5cGVOYW1lID09PSBcIk1lbWJlciBMZXZlbFwiOyB0aGVpciByb2xlSWQgaXMgdXNlZCBhcyB0aGVcclxuICogaW50ZXJlc3QtY29uZmlnIGRlZmF1bHRMZXZlbElkIGFuZCByb2xlTmFtZSBpcyB0aGUgZGlzcGxheSBsYWJlbC5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBSb2xlIHtcclxuICByb2xlSWQ6IHN0cmluZztcclxuICByb2xlVHlwZTogc3RyaW5nO1xyXG4gIHJvbGVOYW1lOiBzdHJpbmc7XHJcbiAgcm9sZVR5cGVOYW1lOiBzdHJpbmc7XHJcbiAgdmlld09yZGVyPzogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogcm9sZVR5cGVOYW1lIHZhbHVlIGlkZW50aWZ5aW5nIG1lbWJlci1sZXZlbCByb2xlcy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBNRU1CRVJfTEVWRUxfUk9MRV9UWVBFID0gJ01lbWJlciBMZXZlbCc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { catchError, map } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@ieeesa-npm/utility";
|
|
5
|
+
/**
|
|
6
|
+
* Service for managing a group's interest form configuration and custom
|
|
7
|
+
* questions (SP3M-317). Talks to the groups backend endpoints:
|
|
8
|
+
* - GET /v1/groups/interest-config/{groupId}
|
|
9
|
+
* - PUT /v1/groups/interest-config
|
|
10
|
+
* - GET /v1/groups/interest-questions/{groupId}
|
|
11
|
+
* - POST /v1/groups/interest-questions
|
|
12
|
+
* - PUT /v1/groups/interest-questions
|
|
13
|
+
* - PUT /v1/groups/interest-questions/reorder
|
|
14
|
+
* - PUT /v1/groups/interest-questions/{questionId}/remove
|
|
15
|
+
* - GET /v1/groups/interest-questions/{groupId}/preview
|
|
16
|
+
* All write payloads are wrapped in the shared Request envelope ({ payload }).
|
|
17
|
+
* @export
|
|
18
|
+
* @class InterestFormService
|
|
19
|
+
*/
|
|
20
|
+
export class InterestFormService {
|
|
21
|
+
// eslint-disable-next-line no-unused-vars
|
|
22
|
+
constructor(httpService) {
|
|
23
|
+
this.httpService = httpService;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Validates the application-level envelope for a write operation. A 2xx
|
|
27
|
+
* response can still carry an unsuccessful envelope ({ status: false }); this
|
|
28
|
+
* throws it so callers' error handlers run instead of treating it as success.
|
|
29
|
+
* @param {InterestApiResponse<T>} response
|
|
30
|
+
* @return {InterestApiResponse<T>}
|
|
31
|
+
* @memberof InterestFormService
|
|
32
|
+
*/
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
+
assertSuccess(response) {
|
|
35
|
+
const status = response?.status;
|
|
36
|
+
const isSuccess = status === true || status === 'true' || status === 'SUCCESS';
|
|
37
|
+
if (!isSuccess) {
|
|
38
|
+
throw response;
|
|
39
|
+
}
|
|
40
|
+
return response;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Sets the API base URL (resolved from the hosting application's config).
|
|
44
|
+
* @param {string} apiBaseUrl
|
|
45
|
+
* @memberof InterestFormService
|
|
46
|
+
*/
|
|
47
|
+
setApiBaseUrl(apiBaseUrl) {
|
|
48
|
+
this.apiBaseUrl = apiBaseUrl;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Loads a group's interest configuration (mode + default member level).
|
|
52
|
+
* @param {string} groupId
|
|
53
|
+
* @return {Observable<InterestApiResponse<GroupInterestConfig>>}
|
|
54
|
+
* @memberof InterestFormService
|
|
55
|
+
*/
|
|
56
|
+
getInterestConfig(groupId) {
|
|
57
|
+
return this.httpService
|
|
58
|
+
.getData(`${this.apiBaseUrl}/groups/interest-config/${groupId}`)
|
|
59
|
+
.pipe(map((response) => response), catchError((error) => {
|
|
60
|
+
throw error;
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Loads the tenant's roles. Member levels (used to populate the default
|
|
65
|
+
* membership level options) are the subset where roleTypeName is
|
|
66
|
+
* "Member Level"; filtering is done by the caller.
|
|
67
|
+
* @param {string} appId
|
|
68
|
+
* @return {Observable<InterestApiResponse<GroupRole[]>>}
|
|
69
|
+
* @memberof InterestFormService
|
|
70
|
+
*/
|
|
71
|
+
getRoles(appId) {
|
|
72
|
+
return this.httpService
|
|
73
|
+
.getData(`${this.apiBaseUrl}/groups/role/${appId}`)
|
|
74
|
+
.pipe(map((response) => response), catchError((error) => {
|
|
75
|
+
throw error;
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Saves a group's interest configuration.
|
|
80
|
+
* @param {GroupInterestConfig} config
|
|
81
|
+
* @return {Observable<InterestApiResponse<string>>}
|
|
82
|
+
* @memberof InterestFormService
|
|
83
|
+
*/
|
|
84
|
+
saveInterestConfig(config) {
|
|
85
|
+
return this.httpService
|
|
86
|
+
.putData(`${this.apiBaseUrl}/groups/interest-config`, {
|
|
87
|
+
payload: config,
|
|
88
|
+
})
|
|
89
|
+
.pipe(map((response) => this.assertSuccess(response)), catchError((error) => {
|
|
90
|
+
throw error;
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Loads a group's custom interest questions (ordered by view order).
|
|
95
|
+
* @param {string} groupId
|
|
96
|
+
* @return {Observable<InterestApiResponse<CustomQuestion[]>>}
|
|
97
|
+
* @memberof InterestFormService
|
|
98
|
+
*/
|
|
99
|
+
getQuestions(groupId) {
|
|
100
|
+
return this.httpService
|
|
101
|
+
.getData(`${this.apiBaseUrl}/groups/interest-questions/${groupId}`)
|
|
102
|
+
.pipe(map((response) => response), catchError((error) => {
|
|
103
|
+
throw error;
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Creates a new custom interest question.
|
|
108
|
+
* @param {CustomQuestion} question
|
|
109
|
+
* @return {Observable<InterestApiResponse<CustomQuestion>>}
|
|
110
|
+
* @memberof InterestFormService
|
|
111
|
+
*/
|
|
112
|
+
createQuestion(question) {
|
|
113
|
+
return this.httpService
|
|
114
|
+
.postData(`${this.apiBaseUrl}/groups/interest-questions`, {
|
|
115
|
+
payload: question,
|
|
116
|
+
})
|
|
117
|
+
.pipe(map((response) => this.assertSuccess(response)), catchError((error) => {
|
|
118
|
+
throw error;
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Updates an existing custom interest question.
|
|
123
|
+
* @param {CustomQuestion} question
|
|
124
|
+
* @return {Observable<InterestApiResponse<string>>}
|
|
125
|
+
* @memberof InterestFormService
|
|
126
|
+
*/
|
|
127
|
+
updateQuestion(question) {
|
|
128
|
+
return this.httpService
|
|
129
|
+
.putData(`${this.apiBaseUrl}/groups/interest-questions`, {
|
|
130
|
+
payload: question,
|
|
131
|
+
})
|
|
132
|
+
.pipe(map((response) => this.assertSuccess(response)), catchError((error) => {
|
|
133
|
+
throw error;
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Persists the updated view order for a group's custom questions.
|
|
138
|
+
* @param {QuestionOrder[]} questionOrders
|
|
139
|
+
* @return {Observable<InterestApiResponse<string>>}
|
|
140
|
+
* @memberof InterestFormService
|
|
141
|
+
*/
|
|
142
|
+
reorderQuestions(questionOrders) {
|
|
143
|
+
return this.httpService
|
|
144
|
+
.putData(`${this.apiBaseUrl}/groups/interest-questions/reorder`, {
|
|
145
|
+
payload: questionOrders,
|
|
146
|
+
})
|
|
147
|
+
.pipe(map((response) => this.assertSuccess(response)), catchError((error) => {
|
|
148
|
+
throw error;
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Soft-deletes a custom interest question by id.
|
|
153
|
+
* @param {string} questionId
|
|
154
|
+
* @return {Observable<InterestApiResponse<string>>}
|
|
155
|
+
* @memberof InterestFormService
|
|
156
|
+
*/
|
|
157
|
+
removeQuestion(questionId) {
|
|
158
|
+
return this.httpService
|
|
159
|
+
.putData(`${this.apiBaseUrl}/groups/interest-questions/${questionId}/remove`, {})
|
|
160
|
+
.pipe(map((response) => this.assertSuccess(response)), catchError((error) => {
|
|
161
|
+
throw error;
|
|
162
|
+
}));
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Builds a non-publishing preview of a group's interest form.
|
|
166
|
+
* @param {string} groupId
|
|
167
|
+
* @return {Observable<InterestApiResponse<unknown>>}
|
|
168
|
+
* @memberof InterestFormService
|
|
169
|
+
*/
|
|
170
|
+
previewForm(groupId) {
|
|
171
|
+
return this.httpService
|
|
172
|
+
.getData(`${this.apiBaseUrl}/groups/interest-questions/${groupId}/preview`)
|
|
173
|
+
.pipe(map((response) => response), catchError((error) => {
|
|
174
|
+
throw error;
|
|
175
|
+
}));
|
|
176
|
+
}
|
|
177
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterestFormService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
178
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterestFormService, providedIn: 'root' }); }
|
|
179
|
+
}
|
|
180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterestFormService, decorators: [{
|
|
181
|
+
type: Injectable,
|
|
182
|
+
args: [{
|
|
183
|
+
providedIn: 'root',
|
|
184
|
+
}]
|
|
185
|
+
}], ctorParameters: function () { return [{ type: i1.HttpService }]; } });
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJlc3QtZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3JvdXBzL3NyYy9saWIvc2VydmljZXMvaW50ZXJlc3QtZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQWtCbkQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLDBDQUEwQztJQUMxQyxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFaEQ7Ozs7Ozs7T0FPRztJQUNILDhEQUE4RDtJQUN0RCxhQUFhLENBQUMsUUFBYTtRQUNqQyxNQUFNLE1BQU0sR0FBRyxRQUFRLEVBQUUsTUFBTSxDQUFDO1FBQ2hDLE1BQU0sU0FBUyxHQUNiLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLE1BQU0sSUFBSSxNQUFNLEtBQUssU0FBUyxDQUFDO1FBQy9ELElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxNQUFNLFFBQVEsQ0FBQztTQUNoQjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLFVBQWtCO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUNmLE9BQWU7UUFFZixPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLDJCQUEyQixPQUFPLEVBQUUsQ0FBQzthQUMvRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFD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QyxRQUFRLENBQUMsQ0FBQyxFQUMvQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQ1osVUFBa0I7UUFFbEIsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLENBQ04sR0FBRyxJQUFJLENBQUMsVUFBVSw4QkFBOEIsVUFBVSxTQUFTLEVBQ25FLEVBQUUsQ0FDSDthQUNBLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDL0MsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLE9BQWU7UUFDekIsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLENBQ04sR0FBRyxJQUFJLENBQUMsVUFBVSw4QkFBOEIsT0FBTyxVQUFVLENBQ2xFO2FBQ0EsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQzNCLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7K0dBdE5VLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQge1xyXG4gIEN1c3RvbVF1ZXN0aW9uLFxyXG4gIEdyb3VwSW50ZXJlc3RDb25maWcsXHJcbiAgR3JvdXBSb2xlLFxyXG4gIFF1ZXN0aW9uT3JkZXIsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL2N1c3RvbS1xdWVzdGlvbi5tb2RlbCc7XHJcblxyXG4vKipcclxuICogU3RhbmRhcmQgQVBJIHJlc3BvbnNlIGVudmVsb3BlIHVzZWQgYnkgdGhlIGdyb3VwcyBiYWNrZW5kLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmVzdEFwaVJlc3BvbnNlPFQ+IHtcclxuICBzdGF0dXM6IGJvb2xlYW4gfCBzdHJpbmc7XHJcbiAgbWVzc2FnZT86IHN0cmluZztcclxuICBib2R5PzogVDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgZm9yIG1hbmFnaW5nIGEgZ3JvdXAncyBpbnRlcmVzdCBmb3JtIGNvbmZpZ3VyYXRpb24gYW5kIGN1c3RvbVxyXG4gKiBxdWVzdGlvbnMgKFNQM00tMzE3KS4gVGFsa3MgdG8gdGhlIGdyb3VwcyBiYWNrZW5kIGVuZHBvaW50czpcclxuICogICAtIEdFVCAgL3YxL2dyb3Vwcy9pbnRlcmVzdC1jb25maWcve2dyb3VwSWR9XHJcbiAqICAgLSBQVVQgIC92MS9ncm91cHMvaW50ZXJlc3QtY29uZmlnXHJcbiAqICAgLSBHRVQgIC92MS9ncm91cHMvaW50ZXJlc3QtcXVlc3Rpb25zL3tncm91cElkfVxyXG4gKiAgIC0gUE9TVCAvdjEvZ3JvdXBzL2ludGVyZXN0LXF1ZXN0aW9uc1xyXG4gKiAgIC0gUFVUICAvdjEvZ3JvdXBzL2ludGVyZXN0LXF1ZXN0aW9uc1xyXG4gKiAgIC0gUFVUICAvdjEvZ3JvdXBzL2ludGVyZXN0LXF1ZXN0aW9ucy9yZW9yZGVyXHJcbiAqICAgLSBQVVQgIC92MS9ncm91cHMvaW50ZXJlc3QtcXVlc3Rpb25zL3txdWVzdGlvbklkfS9yZW1vdmVcclxuICogICAtIEdFVCAgL3YxL2dyb3Vwcy9pbnRlcmVzdC1xdWVzdGlvbnMve2dyb3VwSWR9L3ByZXZpZXdcclxuICogQWxsIHdyaXRlIHBheWxvYWRzIGFyZSB3cmFwcGVkIGluIHRoZSBzaGFyZWQgUmVxdWVzdCBlbnZlbG9wZSAoeyBwYXlsb2FkIH0pLlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBJbnRlcmVzdEZvcm1TZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW50ZXJlc3RGb3JtU2VydmljZSB7XHJcbiAgYXBpQmFzZVVybCE6IHN0cmluZztcclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRlcyB0aGUgYXBwbGljYXRpb24tbGV2ZWwgZW52ZWxvcGUgZm9yIGEgd3JpdGUgb3BlcmF0aW9uLiBBIDJ4eFxyXG4gICAqIHJlc3BvbnNlIGNhbiBzdGlsbCBjYXJyeSBhbiB1bnN1Y2Nlc3NmdWwgZW52ZWxvcGUgKHsgc3RhdHVzOiBmYWxzZSB9KTsgdGhpc1xyXG4gICAqIHRocm93cyBpdCBzbyBjYWxsZXJzJyBlcnJvciBoYW5kbGVycyBydW4gaW5zdGVhZCBvZiB0cmVhdGluZyBpdCBhcyBzdWNjZXNzLlxyXG4gICAqIEBwYXJhbSB7SW50ZXJlc3RBcGlSZXNwb25zZTxUPn0gcmVzcG9uc2VcclxuICAgKiBAcmV0dXJuIHtJbnRlcmVzdEFwaVJlc3BvbnNlPFQ+fVxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdEZvcm1TZXJ2aWNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBwcml2YXRlIGFzc2VydFN1Y2Nlc3MocmVzcG9uc2U6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBzdGF0dXMgPSByZXNwb25zZT8uc3RhdHVzO1xyXG4gICAgY29uc3QgaXNTdWNjZXNzID1cclxuICAgICAgc3RhdHVzID09PSB0cnVlIHx8IHN0YXR1cyA9PT0gJ3RydWUnIHx8IHN0YXR1cyA9PT0gJ1NVQ0NFU1MnO1xyXG4gICAgaWYgKCFpc1N1Y2Nlc3MpIHtcclxuICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBBUEkgYmFzZSBVUkwgKHJlc29sdmVkIGZyb20gdGhlIGhvc3RpbmcgYXBwbGljYXRpb24ncyBjb25maWcpLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcGlCYXNlVXJsXHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0Rm9ybVNlcnZpY2VcclxuICAgKi9cclxuICBzZXRBcGlCYXNlVXJsKGFwaUJhc2VVcmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5hcGlCYXNlVXJsID0gYXBpQmFzZVVybDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGEgZ3JvdXAncyBpbnRlcmVzdCBjb25maWd1cmF0aW9uIChtb2RlICsgZGVmYXVsdCBtZW1iZXIgbGV2ZWwpLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBncm91cElkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxJbnRlcmVzdEFwaVJlc3BvbnNlPEdyb3VwSW50ZXJlc3RDb25maWc+Pn1cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEludGVyZXN0Q29uZmlnKFxyXG4gICAgZ3JvdXBJZDogc3RyaW5nXHJcbiAgKTogT2JzZXJ2YWJsZTxJbnRlcmVzdEFwaVJlc3BvbnNlPEdyb3VwSW50ZXJlc3RDb25maWc+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9pbnRlcmVzdC1jb25maWcvJHtncm91cElkfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHJlc3BvbnNlKSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIHRoZSB0ZW5hbnQncyByb2xlcy4gTWVtYmVyIGxldmVscyAodXNlZCB0byBwb3B1bGF0ZSB0aGUgZGVmYXVsdFxyXG4gICAqIG1lbWJlcnNoaXAgbGV2ZWwgb3B0aW9ucykgYXJlIHRoZSBzdWJzZXQgd2hlcmUgcm9sZVR5cGVOYW1lIGlzXHJcbiAgICogXCJNZW1iZXIgTGV2ZWxcIjsgZmlsdGVyaW5nIGlzIGRvbmUgYnkgdGhlIGNhbGxlci5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwSWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEludGVyZXN0QXBpUmVzcG9uc2U8R3JvdXBSb2xlW10+Pn1cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFJvbGVzKGFwcElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEludGVyZXN0QXBpUmVzcG9uc2U8R3JvdXBSb2xlW10+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb2xlLyR7YXBwSWR9YClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZXMgYSBncm91cCdzIGludGVyZXN0IGNvbmZpZ3VyYXRpb24uXHJcbiAgICogQHBhcmFtIHtHcm91cEludGVyZXN0Q29uZmlnfSBjb25maWdcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEludGVyZXN0QXBpUmVzcG9uc2U8c3RyaW5nPj59XHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0Rm9ybVNlcnZpY2VcclxuICAgKi9cclxuICBzYXZlSW50ZXJlc3RDb25maWcoXHJcbiAgICBjb25maWc6IEdyb3VwSW50ZXJlc3RDb25maWdcclxuICApOiBPYnNlcnZhYmxlPEludGVyZXN0QXBpUmVzcG9uc2U8c3RyaW5nPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnB1dERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvaW50ZXJlc3QtY29uZmlnYCwge1xyXG4gICAgICAgIHBheWxvYWQ6IGNvbmZpZyxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy5hc3NlcnRTdWNjZXNzKHJlc3BvbnNlKSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkcyBhIGdyb3VwJ3MgY3VzdG9tIGludGVyZXN0IHF1ZXN0aW9ucyAob3JkZXJlZCBieSB2aWV3IG9yZGVyKS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBJZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8SW50ZXJlc3RBcGlSZXNwb25zZTxDdXN0b21RdWVzdGlvbltdPj59XHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0Rm9ybVNlcnZpY2VcclxuICAgKi9cclxuICBnZXRRdWVzdGlvbnMoXHJcbiAgICBncm91cElkOiBzdHJpbmdcclxuICApOiBPYnNlcnZhYmxlPEludGVyZXN0QXBpUmVzcG9uc2U8Q3VzdG9tUXVlc3Rpb25bXT4+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL2ludGVyZXN0LXF1ZXN0aW9ucy8ke2dyb3VwSWR9YClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBjdXN0b20gaW50ZXJlc3QgcXVlc3Rpb24uXHJcbiAgICogQHBhcmFtIHtDdXN0b21RdWVzdGlvbn0gcXVlc3Rpb25cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEludGVyZXN0QXBpUmVzcG9uc2U8Q3VzdG9tUXVlc3Rpb24+Pn1cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtU2VydmljZVxyXG4gICAqL1xyXG4gIGNyZWF0ZVF1ZXN0aW9uKFxyXG4gICAgcXVlc3Rpb246IEN1c3RvbVF1ZXN0aW9uXHJcbiAgKTogT2JzZXJ2YWJsZTxJbnRlcmVzdEFwaVJlc3BvbnNlPEN1c3RvbVF1ZXN0aW9uPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL2ludGVyZXN0LXF1ZXN0aW9uc2AsIHtcclxuICAgICAgICBwYXlsb2FkOiBxdWVzdGlvbixcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy5hc3NlcnRTdWNjZXNzKHJlc3BvbnNlKSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGN1c3RvbSBpbnRlcmVzdCBxdWVzdGlvbi5cclxuICAgKiBAcGFyYW0ge0N1c3RvbVF1ZXN0aW9ufSBxdWVzdGlvblxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8SW50ZXJlc3RBcGlSZXNwb25zZTxzdHJpbmc+Pn1cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtU2VydmljZVxyXG4gICAqL1xyXG4gIHVwZGF0ZVF1ZXN0aW9uKFxyXG4gICAgcXVlc3Rpb246IEN1c3RvbVF1ZXN0aW9uXHJcbiAgKTogT2JzZXJ2YWJsZTxJbnRlcmVzdEFwaVJlc3BvbnNlPHN0cmluZz4+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wdXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL2ludGVyZXN0LXF1ZXN0aW9uc2AsIHtcclxuICAgICAgICBwYXlsb2FkOiBxdWVzdGlvbixcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy5hc3NlcnRTdWNjZXNzKHJlc3BvbnNlKSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJzaXN0cyB0aGUgdXBkYXRlZCB2aWV3IG9yZGVyIGZvciBhIGdyb3VwJ3MgY3VzdG9tIHF1ZXN0aW9ucy5cclxuICAgKiBAcGFyYW0ge1F1ZXN0aW9uT3JkZXJbXX0gcXVlc3Rpb25PcmRlcnNcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEludGVyZXN0QXBpUmVzcG9uc2U8c3RyaW5nPj59XHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0Rm9ybVNlcnZpY2VcclxuICAgKi9cclxuICByZW9yZGVyUXVlc3Rpb25zKFxyXG4gICAgcXVlc3Rpb25PcmRlcnM6IFF1ZXN0aW9uT3JkZXJbXVxyXG4gICk6IE9ic2VydmFibGU8SW50ZXJlc3RBcGlSZXNwb25zZTxzdHJpbmc+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9pbnRlcmVzdC1xdWVzdGlvbnMvcmVvcmRlcmAsIHtcclxuICAgICAgICBwYXlsb2FkOiBxdWVzdGlvbk9yZGVycyxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy5hc3NlcnRTdWNjZXNzKHJlc3BvbnNlKSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTb2Z0LWRlbGV0ZXMgYSBjdXN0b20gaW50ZXJlc3QgcXVlc3Rpb24gYnkgaWQuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHF1ZXN0aW9uSWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEludGVyZXN0QXBpUmVzcG9uc2U8c3RyaW5nPj59XHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0Rm9ybVNlcnZpY2VcclxuICAgKi9cclxuICByZW1vdmVRdWVzdGlvbihcclxuICAgIHF1ZXN0aW9uSWQ6IHN0cmluZ1xyXG4gICk6IE9ic2VydmFibGU8SW50ZXJlc3RBcGlSZXNwb25zZTxzdHJpbmc+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9pbnRlcmVzdC1xdWVzdGlvbnMvJHtxdWVzdGlvbklkfS9yZW1vdmVgLFxyXG4gICAgICAgIHt9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy5hc3NlcnRTdWNjZXNzKHJlc3BvbnNlKSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCdWlsZHMgYSBub24tcHVibGlzaGluZyBwcmV2aWV3IG9mIGEgZ3JvdXAncyBpbnRlcmVzdCBmb3JtLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBncm91cElkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxJbnRlcmVzdEFwaVJlc3BvbnNlPHVua25vd24+Pn1cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtU2VydmljZVxyXG4gICAqL1xyXG4gIHByZXZpZXdGb3JtKGdyb3VwSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8SW50ZXJlc3RBcGlSZXNwb25zZTx1bmtub3duPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvaW50ZXJlc3QtcXVlc3Rpb25zLyR7Z3JvdXBJZH0vcHJldmlld2BcclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -11,6 +11,10 @@ export * from './lib/components/roster-import-history/roster-import-history.comp
|
|
|
11
11
|
export * from './lib/components/interest-form-management/interest-form-management.component';
|
|
12
12
|
export * from './lib/components/interested-rosters/interested-rosters.component';
|
|
13
13
|
export * from './lib/components/interest-form/interest-form.component';
|
|
14
|
+
export * from './lib/components/custom-question-editor/custom-question-editor.component';
|
|
15
|
+
export * from './lib/components/interest-form-preview/interest-form-preview.component';
|
|
16
|
+
export * from './lib/models/custom-question.model';
|
|
17
|
+
export * from './lib/services/interest-form.service';
|
|
14
18
|
export * from './lib/groups.component';
|
|
15
19
|
export * from './lib/models/create-group.model';
|
|
16
20
|
export * from './lib/models/group-action.model';
|
|
@@ -38,4 +42,4 @@ export * from './lib/services/roster-import-api.service';
|
|
|
38
42
|
export * from './lib/models/roster-import.model';
|
|
39
43
|
export * from './lib/assets/form-validations';
|
|
40
44
|
export * from './lib/groups.module';
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsZ0ZBQWdGLENBQUM7QUFDL0YsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsd0VBQXdFLENBQUM7QUFDdkYsY0FBYyw4RUFBOEUsQ0FBQztBQUM3RixjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYywwRUFBMEUsQ0FBQztBQUN6RixjQUFjLHdFQUF3RSxDQUFDO0FBQ3ZGLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyw0Q0FBNEMsQ0FBQztBQUUzRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELGNBQWMsK0JBQStCLENBQUM7QUFFOUMsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBncm91cHNcclxuICovXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3JlYXRlLWdyb3VwL2NyZWF0ZS1ncm91cC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RyZWUtdmlldy90cmVlLXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9lZGl0LXVzZXItcm9sZXMvZWRpdC11c2VyLXJvbGVzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcmVjaXByb2NhbC1jcmVkaXQtc2VjdGlvbi9yZWNpcHJvY2FsLWNyZWRpdC1zZWN0aW9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRkLXdvcmtpbmctZ3JvdXBzL2FkZC13b3JraW5nLWdyb3Vwcy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Jvc3Rlci1pbXBvcnQvcm9zdGVyLWltcG9ydC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Jvc3Rlci1pbXBvcnQtaGlzdG9yeS9yb3N0ZXItaW1wb3J0LWhpc3RvcnkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnRlcmVzdC1mb3JtLW1hbmFnZW1lbnQvaW50ZXJlc3QtZm9ybS1tYW5hZ2VtZW50LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW50ZXJlc3RlZC1yb3N0ZXJzL2ludGVyZXN0ZWQtcm9zdGVycy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ludGVyZXN0LWZvcm0vaW50ZXJlc3QtZm9ybS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2N1c3RvbS1xdWVzdGlvbi1lZGl0b3IvY3VzdG9tLXF1ZXN0aW9uLWVkaXRvci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ludGVyZXN0LWZvcm0tcHJldmlldy9pbnRlcmVzdC1mb3JtLXByZXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2N1c3RvbS1xdWVzdGlvbi5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2ludGVyZXN0LWZvcm0uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dyb3Vwcy5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2NyZWF0ZS1ncm91cC5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9ncm91cC1hY3Rpb24ubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZ3JvdXAtZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9ncm91cC1pbmZvLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2dyb3VwLXR5cGVzLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3ZpZXctZ3JvdXAubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZWRpdC1ncm91cC5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9kZWxldGUtZ3JvdXAubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZ3JvdXAtdXNlci1pbmZvLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2FkZC1vci1lZGl0LXVzZXItZ3JvdXAubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvcm9zdGVyLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvY2xhc3NpZmljYXRpb24ubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZmlsdGVyLXR5cGUubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvb3JnYW5pemF0aW9uLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3JvbGUtdHlwZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9yb3N0ZXItdHlwZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy90YWJsZS1jb2x1bW4tc2NoZW1hLXVzZXItZ3JvdXAubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvcGFyZW50LWdyb3Vwcy1pbmZvLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3JlY2lwcm9jYWwtY3JlZGl0Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3JlcXVpcmVkLXByb2ZpbGUtZmllbGRzLm1vZGVsJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvcm9zdGVyLWV4cG9ydC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvcm9zdGVyLWltcG9ydC1hcGkuc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvcm9zdGVyLWltcG9ydC5tb2RlbCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hc3NldHMvZm9ybS12YWxpZGF0aW9ucyc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ncm91cHMubW9kdWxlJztcclxuIl19
|