zek 17.3.43 → 17.3.45
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/components/list-base.component.mjs +34 -16
- package/esm2022/lib/services/alert.service.mjs +4 -5
- package/esm2022/lib/services/auth.service.mjs +1 -4
- package/fesm2022/zek.mjs +36 -21
- package/fesm2022/zek.mjs.map +1 -1
- package/lib/components/list-base.component.d.ts +10 -4
- package/package.json +1 -1
|
@@ -34,7 +34,7 @@ export class ListBaseComponent extends BaseComponent {
|
|
|
34
34
|
}
|
|
35
35
|
async bindModel() {
|
|
36
36
|
this.selectedIds = [];
|
|
37
|
-
this.model = await firstValueFrom(this.
|
|
37
|
+
this.model = await firstValueFrom(this.apiGetAll(this.internalFilter));
|
|
38
38
|
if (this.model) {
|
|
39
39
|
let totalCount = this.model.totalItemCount;
|
|
40
40
|
if (!totalCount && this.model.pager) {
|
|
@@ -46,6 +46,9 @@ export class ListBaseComponent extends BaseComponent {
|
|
|
46
46
|
this.pager = new Pager();
|
|
47
47
|
//this.pagedList.pager = this.pager;
|
|
48
48
|
}
|
|
49
|
+
apiGetAll(filter) {
|
|
50
|
+
return this.service.getAll(filter);
|
|
51
|
+
}
|
|
49
52
|
initDefaultFilter() {
|
|
50
53
|
}
|
|
51
54
|
initStoredFilter() {
|
|
@@ -112,22 +115,28 @@ export class ListBaseComponent extends BaseComponent {
|
|
|
112
115
|
}
|
|
113
116
|
async delete(id) {
|
|
114
117
|
this.alert.clear();
|
|
115
|
-
const data = await firstValueFrom(this.
|
|
118
|
+
const data = await firstValueFrom(this.apiDelete(id));
|
|
116
119
|
if (data?.success) {
|
|
117
120
|
const message = await firstValueFrom(this.translate.get('Alert.Deleted'));
|
|
118
121
|
this.alert.error(message, null, 'fa-solid fa-trash');
|
|
119
122
|
this.refresh();
|
|
120
123
|
}
|
|
121
124
|
}
|
|
125
|
+
apiDelete(id) {
|
|
126
|
+
return this.service.delete(id);
|
|
127
|
+
}
|
|
122
128
|
async delete2(id, id2) {
|
|
123
129
|
this.alert.clear();
|
|
124
|
-
const data = await firstValueFrom(this.
|
|
130
|
+
const data = await firstValueFrom(this.apiDelete2(id, id2));
|
|
125
131
|
if (data?.success) {
|
|
126
132
|
const message = await firstValueFrom(this.translate.get('Alert.Deleted'));
|
|
127
133
|
this.alert.error(message, null, 'fa-solid fa-trash');
|
|
128
134
|
this.refresh();
|
|
129
135
|
}
|
|
130
136
|
}
|
|
137
|
+
apiDelete2(id, id2) {
|
|
138
|
+
return this.service.delete2(id, id2);
|
|
139
|
+
}
|
|
131
140
|
edit(id) {
|
|
132
141
|
// this.router.navigate([this.url, id],
|
|
133
142
|
// { queryParams: { returnUrl: this.url + ';filter=1' } }
|
|
@@ -164,17 +173,20 @@ export class ListBaseComponent extends BaseComponent {
|
|
|
164
173
|
this.approveModel = {};
|
|
165
174
|
this.approveModal.show(tmp);
|
|
166
175
|
}
|
|
167
|
-
async approve(
|
|
168
|
-
if (!
|
|
176
|
+
async approve(model) {
|
|
177
|
+
if (!model)
|
|
169
178
|
return;
|
|
170
179
|
this.alert.clear();
|
|
171
|
-
const data = await firstValueFrom(this.
|
|
180
|
+
const data = await firstValueFrom(this.apiApprove(model));
|
|
172
181
|
if (!data || data.length === 0)
|
|
173
182
|
return;
|
|
174
183
|
const message = await firstValueFrom(this.translate.get(this.approvedMesage));
|
|
175
184
|
this.alert.success(message, null, 'fa-solid fa-thumbs-up');
|
|
176
185
|
this.refresh();
|
|
177
186
|
}
|
|
187
|
+
apiApprove(model) {
|
|
188
|
+
return this.service.approve(model);
|
|
189
|
+
}
|
|
178
190
|
showDisapproveModal(id) {
|
|
179
191
|
if (!id || !this.disapproveModal)
|
|
180
192
|
return;
|
|
@@ -189,23 +201,26 @@ export class ListBaseComponent extends BaseComponent {
|
|
|
189
201
|
this.approveModel = {};
|
|
190
202
|
this.disapproveModal.show(tmp);
|
|
191
203
|
}
|
|
192
|
-
async disapprove(
|
|
193
|
-
if (!
|
|
204
|
+
async disapprove(model) {
|
|
205
|
+
if (!model || !this.approveModel)
|
|
194
206
|
return;
|
|
195
|
-
if (typeof
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
if (!
|
|
199
|
-
delete
|
|
207
|
+
if (typeof model === 'object') {
|
|
208
|
+
model.status = this.approveModel.status;
|
|
209
|
+
model.comment = StringHelper.tryTrim(this.approveModel.comment);
|
|
210
|
+
if (!model.comment)
|
|
211
|
+
delete model.comment;
|
|
200
212
|
}
|
|
201
213
|
this.alert.clear();
|
|
202
|
-
const data = await firstValueFrom(this.
|
|
214
|
+
const data = await firstValueFrom(this.apiDisapprove(model));
|
|
203
215
|
if (!data || data.length === 0)
|
|
204
216
|
return;
|
|
205
217
|
const message = await firstValueFrom(this.translate.get(this.disapprovedMesage));
|
|
206
218
|
this.alert.success(message, null, 'fa-solid fa-thumbs-down');
|
|
207
219
|
this.refresh();
|
|
208
220
|
}
|
|
221
|
+
apiDisapprove(model) {
|
|
222
|
+
return this.service.disapprove(model);
|
|
223
|
+
}
|
|
209
224
|
getSelectedIds() {
|
|
210
225
|
return this.selectedIds;
|
|
211
226
|
// if (!this.pagedList || !this.pagedList.items) return [];
|
|
@@ -219,7 +234,7 @@ export class ListBaseComponent extends BaseComponent {
|
|
|
219
234
|
showSum() { }
|
|
220
235
|
async sum() {
|
|
221
236
|
this.sumModel = null;
|
|
222
|
-
const data = await firstValueFrom(this.
|
|
237
|
+
const data = await firstValueFrom(this.apiSum(this.internalFilter));
|
|
223
238
|
if (data) {
|
|
224
239
|
this.sumModel = data;
|
|
225
240
|
this.showSum();
|
|
@@ -229,6 +244,9 @@ export class ListBaseComponent extends BaseComponent {
|
|
|
229
244
|
this.alert.error(message);
|
|
230
245
|
}
|
|
231
246
|
}
|
|
247
|
+
apiSum(filter) {
|
|
248
|
+
return this.service.sum(filter);
|
|
249
|
+
}
|
|
232
250
|
export(fileTypeId) {
|
|
233
251
|
this.service.export(this.internalFilter, fileTypeId).subscribe(data => {
|
|
234
252
|
this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
|
@@ -257,4 +275,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
257
275
|
type: ViewChild,
|
|
258
276
|
args: ['disapproveModal', { static: false }]
|
|
259
277
|
}] } });
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBZ0IsVUFBVSxFQUFhLEtBQUssRUFBYSxNQUFNLFdBQVcsQ0FBQztBQUVsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFDdEMsOEJBQThCO0FBRzlCLE1BQU0sT0FBTyxpQkFBOEUsU0FBUSxhQUF3QztJQW9CdkksWUFBK0IsT0FBaUI7UUFDNUMsS0FBSyxFQUFFLENBQUM7UUFEbUIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQW5CaEQsV0FBTSxHQUFRLElBQUksVUFBVSxFQUFFLENBQUM7UUFDL0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUVSLG1CQUFjLEdBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNqRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBTXBCLGlCQUFZLEdBQWlCLEVBQUUsQ0FBQztRQUV0QixtQkFBYyxHQUFHLGdCQUFnQixDQUFDO1FBR2xDLHNC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aW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCB7IElTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFwcHJvdmVNb2RlbCwgRmlsdGVyQmFzZSwgUGFnZWRMaXN0LCBQYWdlciwgUHJpbnRUeXBlIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgWmVrTW9kYWwgfSBmcm9tICcuLi9tb2R1bGVzL21vZGFsL21vZGFsL21vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJIZWxwZXIsIFBhZ2VySGVscGVyLCBTdG9yYWdlSGVscGVyLCBTdHJpbmdIZWxwZXIsIFVybEhlbHBlciB9IGZyb20gJy4uL3V0aWxzJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuLy8gZGVjbGFyZSBsZXQgYm9vdHN0cmFwOiBhbnk7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIExpc3RCYXNlQ29tcG9uZW50PFRTZXJ2aWNlIGV4dGVuZHMgSVNlcnZpY2UgPSBJU2VydmljZSwgVFBhZ2VkTGlzdERhdGEgPSBhbnk+IGV4dGVuZHMgQmFzZUNvbXBvbmVudDxQYWdlZExpc3Q8VFBhZ2VkTGlzdERhdGE+PiB7XHJcbiAgICBmaWx0ZXI6IGFueSA9IG5ldyBGaWx0ZXJCYXNlKCk7XHJcbiAgICBzYXZlRmlsdGVyID0gdHJ1ZTtcclxuICAgIHNvcnRGaWVsZHM6IGFueTtcclxuICAgIHByb3RlY3RlZCBpbnRlcm5hbEZpbHRlcjogYW55ID0gbmV3IEZpbHRlckJhc2UoKTtcclxuICAgIGlzRmlsdGVyZWQgPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkSWRzOiBhbnlbXSA9IFtdO1xyXG4gICAgcGFnZXIgPSBuZXcgUGFnZXIoKTtcclxuICAgIHN1bU1vZGVsOiBhbnk7XHJcblxyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ZpbHRlck1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJNb2RhbD86IFpla01vZGFsIHwgbnVsbDtcclxuXHJcbiAgICBhcHByb3ZlTW9kZWw6IEFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgQFZpZXdDaGlsZCgnYXBwcm92ZU1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByb3RlY3RlZCByZWFkb25seSBhcHByb3ZlTW9kYWw/OiBaZWtNb2RhbCB8IG51bGw7XHJcbiAgICBwcm90ZWN0ZWQgYXBwcm92ZWRNZXNhZ2UgPSAnQWxlcnQuQXBwcm92ZWQnO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2Rpc2FwcHJvdmVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYXBwcm92ZU1vZGFsPzogWmVrTW9kYWwgfCBudWxsO1xyXG4gICAgcHJvdGVjdGVkIGRpc2FwcHJvdmVkTWVzYWdlID0gJ0FsZXJ0LkRpc2FwcHJvdmVkJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgc2VydmljZTogVFNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICByZWFkb25seSBhbGVydCA9IGluamVjdChBbGVydFNlcnZpY2UpO1xyXG5cclxuXHJcblxyXG4gICAgXHJcblxyXG5cclxuICAgIG92ZXJyaWRlIGluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIuaW5pdCgpO1xyXG5cclxuICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5pbml0RGVmYXVsdEZpbHRlcigpO1xyXG4gICAgICAgIHRoaXMuaW5pdFN0b3JlZEZpbHRlcigpO1xyXG4gICAgICAgIHRoaXMuYXNzaWduRmlsdGVyKCk7XHJcblxyXG4gICAgICAgIC8vdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG4gICAgICAgIC8vdGhpcy5wYWdlZExpc3QgPSBuZXcgUGFnZWRMaXN0KCk7XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBiaW5kTW9kZWwoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0QWxsKHRoaXMuaW50ZXJuYWxGaWx0ZXIpKTtcclxuICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xyXG4gICAgICAgICAgICBsZXQgdG90YWxDb3VudCA9IHRoaXMubW9kZWwudG90YWxJdGVtQ291bnQ7XHJcbiAgICAgICAgICAgIGlmICghdG90YWxDb3VudCAmJiB0aGlzLm1vZGVsLnBhZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICB0b3RhbENvdW50ID0gdGhpcy5tb2RlbC5wYWdlciA/ICh0aGlzLm1vZGVsLnBhZ2VyLnRvdGFsSXRlbUNvdW50IHx8IDApIDogMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2VyID0gUGFnZXJIZWxwZXIuZ2V0KHRvdGFsQ291bnQsIHRoaXMuaW50ZXJuYWxGaWx0ZXIucGFnZSwgdGhpcy5pbnRlcm5hbEZpbHRlci5wYWdlU2l6ZSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMucGFnZXIgPSBuZXcgUGFnZXIoKTtcclxuICAgICAgICAvL3RoaXMucGFnZWRMaXN0LnBhZ2VyID0gdGhpcy5wYWdlcjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIGluaXREZWZhdWx0RmlsdGVyKCkge1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBpbml0U3RvcmVkRmlsdGVyKCkge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlclBhcmFtID0gdGhpcy5nZXRRdWVyeVBhcmFtKCdmaWx0ZXInKSB8fCB0aGlzLmdldFBhcmFtKCdmaWx0ZXInKTtcclxuXHJcbiAgICAgICAgaWYgKGZpbHRlclBhcmFtKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRtcCA9IFN0b3JhZ2VIZWxwZXIuZ2V0KCdmaWx0ZXInKTtcclxuICAgICAgICAgICAgaWYgKHRtcCAmJiB0bXAudXJsICYmIHRtcC51cmwgPT09IHRoaXMudXJsICYmIHRtcC5maWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyID0gT2JqZWN0LmFzc2lnbih7fSwgdG1wLmZpbHRlcik7XHJcbiAgICAgICAgICAgICAgICAvL3dlIGRvbnQgbmVlZCB0aGlzLmFzc2lnbkZpbHRlcigpOyBiZWNhdXNlIGFmdGVyIGluaXRTdG9yZWRGaWx0ZXIoKTsgd2lsbCBiZSBhc3NpZ25lZC5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmaWx0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmaWx0ZXInKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjaGFuZ2VQYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxGaWx0ZXIucGFnZSA9IHBhZ2U7XHJcbiAgICAgICAgdGhpcy5maWx0ZXIucGFnZSA9IHBhZ2U7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgdGhpcy5hdXRvU2F2ZUZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgY2hhbmdlUGFnZVNpemUocGFnZVNpemU6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxGaWx0ZXIucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuICAgICAgICB0aGlzLmZpbHRlci5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlUGFnZSgxKTtcclxuICAgIH1cclxuICAgIHNob3dGaWx0ZXIoKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJNb2RhbD8uc2hvdygpO1xyXG4gICAgfVxyXG4gICAgc2VhcmNoKCkge1xyXG4gICAgICAgIC8vdGhpcy5maWx0ZXJNb2RhbD8uaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuYXNzaWduRmlsdGVyKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYWdlKDEpO1xyXG4gICAgICAgIC8vdGhpcy5pbnRlcm5hbEF1dG9TYXZlRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgYXNzaWduRmlsdGVyKCkge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxGaWx0ZXIgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmZpbHRlcik7XHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlcmVkID0gIUZpbHRlckhlbHBlci5pc0VtcHR5KHRoaXMuaW50ZXJuYWxGaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBhdXRvU2F2ZUZpbHRlcigpIHtcclxuICAgICAgICBpZiAodGhpcy5zYXZlRmlsdGVyKVxyXG4gICAgICAgICAgICB0aGlzLmludGVybmFsU2F2ZUZpbHRlcigpXHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGludGVybmFsU2F2ZUZpbHRlcigpIHtcclxuICAgICAgICBTdG9yYWdlSGVscGVyLnNldCgnZmlsdGVyJywge1xyXG4gICAgICAgICAgICB1cmw6IHRoaXMudXJsLFxyXG4gICAgICAgICAgICBmaWx0ZXI6IHRoaXMuaW50ZXJuYWxGaWx0ZXJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJlc2V0KCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyID0geyBwYWdlOiAxLCBwYWdlU2l6ZTogMjUgfTtcclxuICAgICAgICB0aGlzLmFzc2lnbkZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgcmVmcmVzaCgpIHtcclxuICAgICAgICB0aGlzLmJpbmRNb2RlbCgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBjcmVhdGUoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gVXJsSGVscGVyLmdldE5vUGFyYW0odGhpcy5yb3V0ZXIudXJsKTtcclxuICAgICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsLCAnY3JlYXRlJywgeyByZXR1cm5Vcmw6IHVybCArICc7ZmlsdGVyPTEnIH1dKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsLCAnY3JlYXRlJ10sXHJcbiAgICAgICAgICAgIHsgcXVlcnlQYXJhbXM6IHsgcmV0dXJuVXJsOiB1cmwgKyAnP2ZpbHRlcj0xJyB9IH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgZGVsZXRlKGlkOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0LmNsZWFyKCk7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5kZWxldGUoaWQpKTtcclxuICAgICAgICBpZiAoZGF0YT8uc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5EZWxldGVkJykpO1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0LmVycm9yKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS10cmFzaCcpXHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIGRlbGV0ZTIoaWQ6IG51bWJlciwgaWQyOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0LmNsZWFyKCk7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5kZWxldGUyKGlkLCBpZDIpKVxyXG4gICAgICAgIGlmIChkYXRhPy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FsZXJ0LkRlbGV0ZWQnKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuZXJyb3IobWVzc2FnZSwgbnVsbCwgJ2ZhLXNvbGlkIGZhLXRyYXNoJylcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGVkaXQoaWQ6IG51bWJlcikge1xyXG4gICAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnVybCwgaWRdLFxyXG4gICAgICAgIC8vICAgICB7IHF1ZXJ5UGFyYW1zOiB7IHJldHVyblVybDogdGhpcy51cmwgKyAnO2ZpbHRlcj0xJyB9IH1cclxuICAgICAgICAvLyApO1xyXG5cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy51cmwsIGlkXSxcclxuICAgICAgICAgICAgeyBxdWVyeVBhcmFtczogeyByZXR1cm5Vcmw6IHRoaXMudXJsICsgJz9maWx0ZXI9MScgfSB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGVkaXQyKGlkOiBudW1iZXIsIGlkMjogbnVtYmVyKSB7XHJcbiAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMudXJsLCBpZCwgaWQyLCB7IHJldHVyblVybDogdGhpcy51cmwgKyAnO2ZpbHRlcj0xJyB9XSk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMudXJsLCBpZCwgaWQyXSxcclxuICAgICAgICAgICAgeyBxdWVyeVBhcmFtczogeyByZXR1cm5Vcmw6IHRoaXMudXJsICsgJz9maWx0ZXI9MScgfSB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHNlbGVjdChpdGVtOiBhbnkpIHtcclxuICAgICAgICBpdGVtLnNlbGVjdGVkID0gIWl0ZW0uc2VsZWN0ZWQ7XHJcbiAgICAgICAgY29uc3QgaWQgPSBpdGVtLmlkO1xyXG4gICAgICAgIGlmIChpZCkge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZElkcy5wdXNoKGlkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGVkSWRzLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IGlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHNob3dBcHByb3ZlTW9kYWwoaWQ6IG51bWJlcikge1xyXG4gICAgICAgIGlmICghaWQgfHwgIXRoaXMuYXBwcm92ZU1vZGFsKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IHRtcCA9IHsgaWRzOiBbaWRdIH07XHJcbiAgICAgICAgdGhpcy5hcHByb3ZlTW9kZWwgPSB7fTtcclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RhbC5zaG93KHRtcCk7XHJcbiAgICB9XHJcbiAgICBzaG93QXBwcm92ZVNlbGVjdGVkTW9kYWwoKSB7XHJcbiAgICAgICAgY29uc3QgdG1wID0geyBpZHM6IHRoaXMuZ2V0U2VsZWN0ZWRJZHMoKSB9O1xyXG4gICAgICAgIGlmICghdG1wLmlkcyB8fCB0bXAuaWRzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5hcHByb3ZlTW9kYWwpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5hcHByb3ZlTW9kZWwgPSB7fTtcclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RhbC5zaG93KHRtcCk7XHJcbiAgICB9XHJcbiAgICBhc3luYyBhcHByb3ZlKG06IGFueSkge1xyXG4gICAgICAgIGlmICghbSkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmFsZXJ0LmNsZWFyKCk7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5hcHByb3ZlKG0pKTtcclxuICAgICAgICBpZiAoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMudHJhbnNsYXRlLmdldCh0aGlzLmFwcHJvdmVkTWVzYWdlKSk7XHJcbiAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS10aHVtYnMtdXAnKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzaG93RGlzYXBwcm92ZU1vZGFsKGlkOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAoIWlkIHx8ICF0aGlzLmRpc2FwcHJvdmVNb2RhbCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCB0bXAgPSB7IGlkczogW2lkXSB9O1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZU1vZGVsID0ge307XHJcbiAgICAgICAgdGhpcy5kaXNhcHByb3ZlTW9kYWwuc2hvdyh0bXApO1xyXG4gICAgfVxyXG4gICAgc2hvd0Rpc2FwcHJvdmVTZWxlY3RlZE1vZGFsKCkge1xyXG4gICAgICAgIGNvbnN0IHRtcCA9IHsgaWRzOiB0aGlzLmdldFNlbGVjdGVkSWRzKCkgfTtcclxuICAgICAgICBpZiAoIXRtcC5pZHMgfHwgdG1wLmlkcy5sZW5ndGggPT09IDAgfHwgIXRoaXMuZGlzYXBwcm92ZU1vZGFsKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuYXBwcm92ZU1vZGVsID0ge307XHJcbiAgICAgICAgdGhpcy5kaXNhcHByb3ZlTW9kYWwuc2hvdyh0bXApO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgZGlzYXBwcm92ZShtOiBhbnkpIHtcclxuICAgICAgICBpZiAoIW0gfHwgIXRoaXMuYXBwcm92ZU1vZGVsKSByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgbSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgbS5zdGF0dXMgPSB0aGlzLmFwcHJvdmVNb2RlbC5zdGF0dXM7XHJcbiAgICAgICAgICAgIG0uY29tbWVudCA9IFN0cmluZ0hlbHBlci50cnlUcmltKHRoaXMuYXBwcm92ZU1vZGVsLmNvbW1lbnQpO1xyXG4gICAgICAgICAgICBpZiAoIW0uY29tbWVudCkgZGVsZXRlIG0uY29tbWVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYWxlcnQuY2xlYXIoKTtcclxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmRpc2FwcHJvdmUobSkpO1xyXG4gICAgICAgIGlmICghZGF0YSB8fCBkYXRhLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KHRoaXMuZGlzYXBwcm92ZWRNZXNhZ2UpKTtcclxuICAgICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MobWVzc2FnZSwgbnVsbCwgJ2ZhLXNvbGlkIGZhLXRodW1icy1kb3duJylcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTZWxlY3RlZElkcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZElkcztcclxuICAgICAgICAvLyBpZiAoIXRoaXMucGFnZWRMaXN0IHx8ICF0aGlzLnBhZ2VkTGlzdC5pdGVtcykgcmV0dXJuIFtdO1xyXG5cclxuICAgICAgICAvLyBsZXQgaWRzID0gW107XHJcbiAgICAgICAgLy8gZm9yIChjb25zdCBpdGVtIG9mIHRoaXMucGFnZWRMaXN0Lml0ZW1zKSB7XHJcbiAgICAgICAgLy8gICAgIGlmICghaXRlbS5zZWxlY3RlZCB8fCAhaXRlbS5pZCkgY29udGludWU7XHJcblxyXG4gICAgICAgIC8vICAgICBpZHMucHVzaChpdGVtLmlkKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gcmV0dXJuIGlkcztcclxuICAgIH1cclxuXHJcbiAgICBzaG93U3VtKCkgeyB9XHJcbiAgICBhc3luYyBzdW0oKSB7XHJcbiAgICAgICAgdGhpcy5zdW1Nb2RlbCA9IG51bGw7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5zdW0odGhpcy5pbnRlcm5hbEZpbHRlcikpO1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VtTW9kZWwgPSBkYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTdW0oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5TdW1FcnJvcicpKTtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5lcnJvcihtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0KGZpbGVUeXBlSWQ6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5leHBvcnQodGhpcy5pbnRlcm5hbEZpbHRlciwgZmlsZVR5cGVJZCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkRmlsZShkYXRhLCAnZXhwb3J0Lnhsc3gnLCAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgb3ZlcnJpZGUgcHJpbnQocHJpbnRUeXBlPzogUHJpbnRUeXBlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsIHx8ICF0aGlzLm1vZGVsLml0ZW1zKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGlkcyA9IHRoaXMuZ2V0U2VsZWN0ZWRJZHMoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGlkcykge1xyXG4gICAgICAgICAgICBzdXBlci5wcmludChpZCwgcHJpbnRUeXBlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBZ0IsVUFBVSxFQUFhLEtBQUssRUFBYSxNQUFNLFdBQVcsQ0FBQztBQUVsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFDdEMsOEJBQThCO0FBRzlCLE1BQU0sT0FBTyxpQkFBOEUsU0FBUSxhQUF3QztJQW9CdkksWUFBK0IsT0FBaUI7UUFDNUMsS0FBSyxFQUFFLENBQUM7UUFEbUIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQW5CaEQsV0FBTSxHQUFRLElBQUksVUFBVSxFQUFFLENBQUM7UUFDL0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUVSLG1CQUFjLEdBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNqRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBTXBCLGlCQUFZLEdBQWlCLEVBQUUsQ0FBQztRQUV0QixtQkFBYyxHQUFHLGdCQUFnQixDQUFDO1FBR2xDLHNC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QUFDLEtBQUs7WUFBRSxPQUFPO1FBRTdDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNsQyxLQUFLLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ25CLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDTCxDQUFDOzhHQXhTUSxpQkFBaUI7a0dBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsU0FBUzsyRUFZMEQsV0FBVztzQkFBMUUsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdzQixZQUFZO3NCQUE1RSxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR3dCLGVBQWU7c0JBQWxGLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld0NoaWxkLCBEaXJlY3RpdmUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcHByb3ZlTW9kZWwsIEZpbHRlckJhc2UsIFBhZ2VkTGlzdCwgUGFnZXIsIFByaW50VHlwZSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFpla01vZGFsIH0gZnJvbSAnLi4vbW9kdWxlcy9tb2RhbC9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVySGVscGVyLCBQYWdlckhlbHBlciwgU3RvcmFnZUhlbHBlciwgU3RyaW5nSGVscGVyLCBVcmxIZWxwZXIgfSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbi8vIGRlY2xhcmUgbGV0IGJvb3RzdHJhcDogYW55O1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBMaXN0QmFzZUNvbXBvbmVudDxUU2VydmljZSBleHRlbmRzIElTZXJ2aWNlID0gSVNlcnZpY2UsIFRQYWdlZExpc3REYXRhID0gYW55PiBleHRlbmRzIEJhc2VDb21wb25lbnQ8UGFnZWRMaXN0PFRQYWdlZExpc3REYXRhPj4ge1xyXG4gICAgZmlsdGVyOiBhbnkgPSBuZXcgRmlsdGVyQmFzZSgpO1xyXG4gICAgc2F2ZUZpbHRlciA9IHRydWU7XHJcbiAgICBzb3J0RmllbGRzOiBhbnk7XHJcbiAgICBwcm90ZWN0ZWQgaW50ZXJuYWxGaWx0ZXI6IGFueSA9IG5ldyBGaWx0ZXJCYXNlKCk7XHJcbiAgICBpc0ZpbHRlcmVkID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZElkczogYW55W10gPSBbXTtcclxuICAgIHBhZ2VyID0gbmV3IFBhZ2VyKCk7XHJcbiAgICBzdW1Nb2RlbDogYW55O1xyXG5cclxuXHJcbiAgICBAVmlld0NoaWxkKCdmaWx0ZXJNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyTW9kYWw/OiBaZWtNb2RhbCB8IG51bGw7XHJcblxyXG4gICAgYXBwcm92ZU1vZGVsOiBBcHByb3ZlTW9kZWwgPSB7fTtcclxuICAgIEBWaWV3Q2hpbGQoJ2FwcHJvdmVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwcm92ZU1vZGFsPzogWmVrTW9kYWwgfCBudWxsO1xyXG4gICAgcHJvdGVjdGVkIGFwcHJvdmVkTWVzYWdlID0gJ0FsZXJ0LkFwcHJvdmVkJztcclxuXHJcbiAgICBAVmlld0NoaWxkKCdkaXNhcHByb3ZlTW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJvdGVjdGVkIHJlYWRvbmx5IGRpc2FwcHJvdmVNb2RhbD86IFpla01vZGFsIHwgbnVsbDtcclxuICAgIHByb3RlY3RlZCBkaXNhcHByb3ZlZE1lc2FnZSA9ICdBbGVydC5EaXNhcHByb3ZlZCc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHNlcnZpY2U6IFRTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG4gICAgcmVhZG9ubHkgYWxlcnQgPSBpbmplY3QoQWxlcnRTZXJ2aWNlKTtcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgIG92ZXJyaWRlIGluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIuaW5pdCgpO1xyXG5cclxuICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5pbml0RGVmYXVsdEZpbHRlcigpO1xyXG4gICAgICAgIHRoaXMuaW5pdFN0b3JlZEZpbHRlcigpO1xyXG4gICAgICAgIHRoaXMuYXNzaWduRmlsdGVyKCk7XHJcblxyXG4gICAgICAgIC8vdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG4gICAgICAgIC8vdGhpcy5wYWdlZExpc3QgPSBuZXcgUGFnZWRMaXN0KCk7XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBiaW5kTW9kZWwoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFwaUdldEFsbCh0aGlzLmludGVybmFsRmlsdGVyKSk7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwpIHtcclxuICAgICAgICAgICAgbGV0IHRvdGFsQ291bnQgPSB0aGlzLm1vZGVsLnRvdGFsSXRlbUNvdW50O1xyXG4gICAgICAgICAgICBpZiAoIXRvdGFsQ291bnQgJiYgdGhpcy5tb2RlbC5wYWdlcikge1xyXG4gICAgICAgICAgICAgICAgdG90YWxDb3VudCA9IHRoaXMubW9kZWwucGFnZXIgPyAodGhpcy5tb2RlbC5wYWdlci50b3RhbEl0ZW1Db3VudCB8fCAwKSA6IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5wYWdlciA9IFBhZ2VySGVscGVyLmdldCh0b3RhbENvdW50LCB0aGlzLmludGVybmFsRmlsdGVyLnBhZ2UsIHRoaXMuaW50ZXJuYWxGaWx0ZXIucGFnZVNpemUpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2VyID0gbmV3IFBhZ2VyKCk7XHJcbiAgICAgICAgLy90aGlzLnBhZ2VkTGlzdC5wYWdlciA9IHRoaXMucGFnZXI7XHJcbiAgICB9XHJcbiAgICBhcGlHZXRBbGwoZmlsdGVyOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEFsbChmaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcm90ZWN0ZWQgaW5pdERlZmF1bHRGaWx0ZXIoKSB7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGluaXRTdG9yZWRGaWx0ZXIoKSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyUGFyYW0gPSB0aGlzLmdldFF1ZXJ5UGFyYW0oJ2ZpbHRlcicpIHx8IHRoaXMuZ2V0UGFyYW0oJ2ZpbHRlcicpO1xyXG5cclxuICAgICAgICBpZiAoZmlsdGVyUGFyYW0pIHtcclxuICAgICAgICAgICAgY29uc3QgdG1wID0gU3RvcmFnZUhlbHBlci5nZXQoJ2ZpbHRlcicpO1xyXG4gICAgICAgICAgICBpZiAodG1wICYmIHRtcC51cmwgJiYgdG1wLnVybCA9PT0gdGhpcy51cmwgJiYgdG1wLmZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIgPSBPYmplY3QuYXNzaWduKHt9LCB0bXAuZmlsdGVyKTtcclxuICAgICAgICAgICAgICAgIC8vd2UgZG9udCBuZWVkIHRoaXMuYXNzaWduRmlsdGVyKCk7IGJlY2F1c2UgYWZ0ZXIgaW5pdFN0b3JlZEZpbHRlcigpOyB3aWxsIGJlIGFzc2lnbmVkLlxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2ZpbHRlcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2ZpbHRlcicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNoYW5nZVBhZ2UocGFnZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbEZpbHRlci5wYWdlID0gcGFnZTtcclxuICAgICAgICB0aGlzLmZpbHRlci5wYWdlID0gcGFnZTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICB0aGlzLmF1dG9TYXZlRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgICBjaGFuZ2VQYWdlU2l6ZShwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbEZpbHRlci5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYWdlKDEpO1xyXG4gICAgfVxyXG4gICAgc2hvd0ZpbHRlcigpIHtcclxuICAgICAgICB0aGlzLmZpbHRlck1vZGFsPy5zaG93KCk7XHJcbiAgICB9XHJcbiAgICBzZWFyY2goKSB7XHJcbiAgICAgICAgLy90aGlzLmZpbHRlck1vZGFsPy5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5hc3NpZ25GaWx0ZXIoKTtcclxuICAgICAgICB0aGlzLmNoYW5nZVBhZ2UoMSk7XHJcbiAgICAgICAgLy90aGlzLmludGVybmFsQXV0b1NhdmVGaWx0ZXIoKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBhc3NpZ25GaWx0ZXIoKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbEZpbHRlciA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZmlsdGVyKTtcclxuICAgICAgICB0aGlzLmlzRmlsdGVyZWQgPSAhRmlsdGVySGVscGVyLmlzRW1wdHkodGhpcy5pbnRlcm5hbEZpbHRlcik7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGF1dG9TYXZlRmlsdGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNhdmVGaWx0ZXIpXHJcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTYXZlRmlsdGVyKClcclxuICAgIH1cclxuICAgIHByaXZhdGUgaW50ZXJuYWxTYXZlRmlsdGVyKCkge1xyXG4gICAgICAgIFN0b3JhZ2VIZWxwZXIuc2V0KCdmaWx0ZXInLCB7XHJcbiAgICAgICAgICAgIHVybDogdGhpcy51cmwsXHJcbiAgICAgICAgICAgIGZpbHRlcjogdGhpcy5pbnRlcm5hbEZpbHRlclxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmVzZXQoKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXIgPSB7IHBhZ2U6IDEsIHBhZ2VTaXplOiAyNSB9O1xyXG4gICAgICAgIHRoaXMuYXNzaWduRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgICByZWZyZXNoKCkge1xyXG4gICAgICAgIHRoaXMuYmluZE1vZGVsKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNyZWF0ZSgpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBVcmxIZWxwZXIuZ2V0Tm9QYXJhbSh0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmwsICdjcmVhdGUnLCB7IHJldHVyblVybDogdXJsICsgJztmaWx0ZXI9MScgfV0pO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmwsICdjcmVhdGUnXSxcclxuICAgICAgICAgICAgeyBxdWVyeVBhcmFtczogeyByZXR1cm5Vcmw6IHVybCArICc/ZmlsdGVyPTEnIH0gfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBhc3luYyBkZWxldGUoaWQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnQuY2xlYXIoKTtcclxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hcGlEZWxldGUoaWQpKTtcclxuICAgICAgICBpZiAoZGF0YT8uc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5EZWxldGVkJykpO1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0LmVycm9yKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS10cmFzaCcpXHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFwaURlbGV0ZShpZDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGUoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZTIoaWQ6IGFueSwgaWQyOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0LmNsZWFyKCk7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYXBpRGVsZXRlMihpZCwgaWQyKSlcclxuICAgICAgICBpZiAoZGF0YT8uc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5EZWxldGVkJykpO1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0LmVycm9yKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS10cmFzaCcpXHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFwaURlbGV0ZTIoaWQ6IGFueSwgaWQyOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmRlbGV0ZTIoaWQsIGlkMik7XHJcbiAgICB9XHJcblxyXG4gICAgZWRpdChpZDogbnVtYmVyKSB7XHJcbiAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMudXJsLCBpZF0sXHJcbiAgICAgICAgLy8gICAgIHsgcXVlcnlQYXJhbXM6IHsgcmV0dXJuVXJsOiB0aGlzLnVybCArICc7ZmlsdGVyPTEnIH0gfVxyXG4gICAgICAgIC8vICk7XHJcblxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnVybCwgaWRdLFxyXG4gICAgICAgICAgICB7IHF1ZXJ5UGFyYW1zOiB7IHJldHVyblVybDogdGhpcy51cmwgKyAnP2ZpbHRlcj0xJyB9IH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgZWRpdDIoaWQ6IG51bWJlciwgaWQyOiBudW1iZXIpIHtcclxuICAgICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy51cmwsIGlkLCBpZDIsIHsgcmV0dXJuVXJsOiB0aGlzLnVybCArICc7ZmlsdGVyPTEnIH1dKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy51cmwsIGlkLCBpZDJdLFxyXG4gICAgICAgICAgICB7IHF1ZXJ5UGFyYW1zOiB7IHJldHVyblVybDogdGhpcy51cmwgKyAnP2ZpbHRlcj0xJyB9IH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgc2VsZWN0KGl0ZW06IGFueSkge1xyXG4gICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSAhaXRlbS5zZWxlY3RlZDtcclxuICAgICAgICBjb25zdCBpZCA9IGl0ZW0uaWQ7XHJcbiAgICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSWRzLnB1c2goaWQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IHRoaXMuc2VsZWN0ZWRJZHMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgc2hvd0FwcHJvdmVNb2RhbChpZDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFpZCB8fCAhdGhpcy5hcHByb3ZlTW9kYWwpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgdG1wID0geyBpZHM6IFtpZF0gfTtcclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZU1vZGFsLnNob3codG1wKTtcclxuICAgIH1cclxuICAgIHNob3dBcHByb3ZlU2VsZWN0ZWRNb2RhbCgpIHtcclxuICAgICAgICBjb25zdCB0bXAgPSB7IGlkczogdGhpcy5nZXRTZWxlY3RlZElkcygpIH07XHJcbiAgICAgICAgaWYgKCF0bXAuaWRzIHx8IHRtcC5pZHMubGVuZ3RoID09PSAwIHx8ICF0aGlzLmFwcHJvdmVNb2RhbCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZU1vZGFsLnNob3codG1wKTtcclxuICAgIH1cclxuICAgIGFzeW5jIGFwcHJvdmUobW9kZWw6IGFueSkge1xyXG4gICAgICAgIGlmICghbW9kZWwpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5hbGVydC5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFwaUFwcHJvdmUobW9kZWwpKTtcclxuICAgICAgICBpZiAoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMudHJhbnNsYXRlLmdldCh0aGlzLmFwcHJvdmVkTWVzYWdlKSk7XHJcbiAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS10aHVtYnMtdXAnKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gICAgYXBpQXBwcm92ZShtb2RlbDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5hcHByb3ZlKG1vZGVsKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc2hvd0Rpc2FwcHJvdmVNb2RhbChpZDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFpZCB8fCAhdGhpcy5kaXNhcHByb3ZlTW9kYWwpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgdG1wID0geyBpZHM6IFtpZF0gfTtcclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgICAgIHRoaXMuZGlzYXBwcm92ZU1vZGFsLnNob3codG1wKTtcclxuICAgIH1cclxuICAgIHNob3dEaXNhcHByb3ZlU2VsZWN0ZWRNb2RhbCgpIHtcclxuICAgICAgICBjb25zdCB0bXAgPSB7IGlkczogdGhpcy5nZXRTZWxlY3RlZElkcygpIH07XHJcbiAgICAgICAgaWYgKCF0bXAuaWRzIHx8IHRtcC5pZHMubGVuZ3RoID09PSAwIHx8ICF0aGlzLmRpc2FwcHJvdmVNb2RhbCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgICAgIHRoaXMuZGlzYXBwcm92ZU1vZGFsLnNob3codG1wKTtcclxuICAgIH1cclxuICAgIGFzeW5jIGRpc2FwcHJvdmUobW9kZWw6IGFueSkge1xyXG4gICAgICAgIGlmICghbW9kZWwgfHwgIXRoaXMuYXBwcm92ZU1vZGVsKSByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgbW9kZWwgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIG1vZGVsLnN0YXR1cyA9IHRoaXMuYXBwcm92ZU1vZGVsLnN0YXR1cztcclxuICAgICAgICAgICAgbW9kZWwuY29tbWVudCA9IFN0cmluZ0hlbHBlci50cnlUcmltKHRoaXMuYXBwcm92ZU1vZGVsLmNvbW1lbnQpO1xyXG4gICAgICAgICAgICBpZiAoIW1vZGVsLmNvbW1lbnQpIGRlbGV0ZSBtb2RlbC5jb21tZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hbGVydC5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFwaURpc2FwcHJvdmUobW9kZWwpKTtcclxuICAgICAgICBpZiAoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMudHJhbnNsYXRlLmdldCh0aGlzLmRpc2FwcHJvdmVkTWVzYWdlKSk7XHJcbiAgICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1lc3NhZ2UsIG51bGwsICdmYS1zb2xpZCBmYS10aHVtYnMtZG93bicpXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgICBhcGlEaXNhcHByb3ZlKG1vZGVsOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmRpc2FwcHJvdmUobW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNlbGVjdGVkSWRzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSWRzO1xyXG4gICAgICAgIC8vIGlmICghdGhpcy5wYWdlZExpc3QgfHwgIXRoaXMucGFnZWRMaXN0Lml0ZW1zKSByZXR1cm4gW107XHJcblxyXG4gICAgICAgIC8vIGxldCBpZHMgPSBbXTtcclxuICAgICAgICAvLyBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5wYWdlZExpc3QuaXRlbXMpIHtcclxuICAgICAgICAvLyAgICAgaWYgKCFpdGVtLnNlbGVjdGVkIHx8ICFpdGVtLmlkKSBjb250aW51ZTtcclxuXHJcbiAgICAgICAgLy8gICAgIGlkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyByZXR1cm4gaWRzO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTdW0oKSB7IH1cclxuICAgIGFzeW5jIHN1bSgpIHtcclxuICAgICAgICB0aGlzLnN1bU1vZGVsID0gbnVsbDtcclxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hcGlTdW0odGhpcy5pbnRlcm5hbEZpbHRlcikpO1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VtTW9kZWwgPSBkYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTdW0oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5TdW1FcnJvcicpKTtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5lcnJvcihtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhcGlTdW0oZmlsdGVyOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLnN1bShmaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydChmaWxlVHlwZUlkOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZXhwb3J0KHRoaXMuaW50ZXJuYWxGaWx0ZXIsIGZpbGVUeXBlSWQpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZGF0YSwgJ2V4cG9ydC54bHN4JywgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Jyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG92ZXJyaWRlIHByaW50KHByaW50VHlwZT86IFByaW50VHlwZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5tb2RlbCB8fCAhdGhpcy5tb2RlbC5pdGVtcykgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLmdldFNlbGVjdGVkSWRzKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBpZCBvZiBpZHMpIHtcclxuICAgICAgICAgICAgc3VwZXIucHJpbnQoaWQsIHByaW50VHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { NavigationStart } from '@angular/router';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
|
-
import { BootstrapHelper } from '../utils/bootstrap.helper';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
import * as i1 from "@angular/router";
|
|
7
6
|
export class BaseAlert {
|
|
@@ -61,9 +60,9 @@ export class AlertService {
|
|
|
61
60
|
this.show(message, title, 'info', icon);
|
|
62
61
|
}
|
|
63
62
|
show(message, title, alertType, icon) {
|
|
64
|
-
if (!icon) {
|
|
65
|
-
|
|
66
|
-
}
|
|
63
|
+
// if (!icon) {
|
|
64
|
+
// icon = BootstrapHelper.cssAlertIcon(alertType)
|
|
65
|
+
// }
|
|
67
66
|
this.toastSubject.next({ message, title, type: alertType, icon }); //, id: `${this.id++}`
|
|
68
67
|
}
|
|
69
68
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: AlertService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -72,4 +71,4 @@ export class AlertService {
|
|
|
72
71
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: AlertService, decorators: [{
|
|
73
72
|
type: Injectable
|
|
74
73
|
}], ctorParameters: () => [{ type: i1.Router }] });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL3NlcnZpY2VzL2FsZXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSS9CLE1BQU0sT0FBTyxTQUFTO0NBTXJCO0FBRUQsTUFBTSxPQUFPLEtBQU0sU0FBUSxTQUFTO0NBRW5DO0FBRUQsTUFBTSxPQUFPLEtBQU0sU0FBUSxTQUFTO0NBRW5DO0FBR0QsTUFBTSxPQUFPLFlBQVk7SUFJckIsa0JBQWtCO0lBRWxCLFlBQVksTUFBYztRQUxsQixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDbEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ2xDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUlqQyxrRkFBa0Y7UUFDbEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxLQUFLLFlBQVksZUFBZSxFQUFFLENBQUM7Z0JBQ25DLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQzVCLHNDQUFzQztvQkFDdEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztnQkFDdEMsQ0FBQztxQkFBTSxDQUFDO29CQUNKLHVCQUF1QjtvQkFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqQixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEdBQUcsQ0FBQyxTQUFvQixFQUFFLE9BQWUsRUFBRSxvQkFBb0IsR0FBRyxLQUFLO1FBQ25FLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRCxRQUFRLENBQUMsU0FBb0IsRUFBRSxRQUFrQixFQUFFLG9CQUFvQixHQUFHLEtBQUs7UUFDM0UsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsS0FBSztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFHRCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFDRCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFHRCxPQUFPLENBQUMsT0FBZSxFQUFFLEtBQXFCLEVBQUUsSUFBb0I7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsS0FBSyxDQUFDLE9BQWUsRUFBRSxLQUFxQixFQUFFLElBQW9CO1FBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU8sQ0FBQyxPQUFlLEVBQUUsS0FBcUIsRUFBRSxJQUFvQjtRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxJQUFJLENBQUMsT0FBZSxFQUFFLEtBQXFCLEVBQUUsSUFBb0I7UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ08sSUFBSSxDQUFDLE9BQWUsRUFBRSxLQUFxQixFQUFFLFNBQTRCLEVBQUUsSUFBb0I7UUFDbkcsZUFBZTtRQUNmLHFEQUFxRDtRQUNyRCxJQUFJO1FBRUosSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLHNCQUFzQjtJQUNuRyxDQUFDOzhHQTdEUSxZQUFZO2tIQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvblN0YXJ0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBbGVydFR5cGUgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBCb290c3RyYXBIZWxwZXIgfSBmcm9tICcuLi91dGlscy9ib290c3RyYXAuaGVscGVyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXNlQWxlcnQge1xyXG4gICAgdHlwZT86IEFsZXJ0VHlwZSB8IG51bGw7XHJcbiAgICBpY29uPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIHRpdGxlPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGNzcz86IHN0cmluZyB8IG51bGw7XHJcbiAgICAvLyBpZD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFsZXJ0IGV4dGVuZHMgQmFzZUFsZXJ0IHtcclxuICAgIG1lc3NhZ2VzPzogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUb2FzdCBleHRlbmRzIEJhc2VBbGVydCB7XHJcbiAgICBtZXNzYWdlPzogc3RyaW5nIHwgbnVsbDtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWxlcnRTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgYWxlcnRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gICAgcHJpdmF0ZSB0b2FzdFN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgICBwcml2YXRlIGtlZXBBZnRlclJvdXRlQ2hhbmdlID0gZmFsc2U7XHJcbiAgICAvLyBwcml2YXRlIGlkID0gMDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihyb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgICAgIC8vIGNsZWFyIGFsZXJ0IG1lc3NhZ2VzIG9uIHJvdXRlIGNoYW5nZSB1bmxlc3MgJ2tlZXBBZnRlclJvdXRlQ2hhbmdlJyBmbGFnIGlzIHRydWVcclxuICAgICAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMua2VlcEFmdGVyUm91dGVDaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGtlZXAgZm9yIGEgc2luZ2xlIHJvdXRlIGNoYW5nZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMua2VlcEFmdGVyUm91dGVDaGFuZ2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgYWxlcnQgbWVzc2FnZXNcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGQoYWxlcnRUeXBlOiBBbGVydFR5cGUsIG1lc3NhZ2U6IHN0cmluZywga2VlcEFmdGVyUm91dGVDaGFuZ2UgPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gW107XHJcbiAgICAgICAgbWVzc2FnZXMucHVzaChtZXNzYWdlKTtcclxuICAgICAgICB0aGlzLmFkZFJhbmdlKGFsZXJ0VHlwZSwgbWVzc2FnZXMsIGtlZXBBZnRlclJvdXRlQ2hhbmdlKTtcclxuICAgIH1cclxuICAgIGFkZFJhbmdlKGFsZXJ0VHlwZTogQWxlcnRUeXBlLCBtZXNzYWdlczogc3RyaW5nW10sIGtlZXBBZnRlclJvdXRlQ2hhbmdlID0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLmtlZXBBZnRlclJvdXRlQ2hhbmdlID0ga2VlcEFmdGVyUm91dGVDaGFuZ2U7XHJcbiAgICAgICAgdGhpcy5hbGVydFN1YmplY3QubmV4dCg8QWxlcnQ+eyB0eXBlOiBhbGVydFR5cGUsIG1lc3NhZ2VzOiBtZXNzYWdlcyB9KTtcclxuICAgIH1cclxuICAgIGNsZWFyKCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTdWJqZWN0Lm5leHQobnVsbCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldEFsZXJ0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFsZXJ0U3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuICAgIGdldFRvYXN0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvYXN0U3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nIHwgbnVsbCwgaWNvbj86IHN0cmluZyB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNob3cobWVzc2FnZSwgdGl0bGUsICdzdWNjZXNzJywgaWNvbik7XHJcbiAgICB9XHJcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nIHwgbnVsbCwgaWNvbj86IHN0cmluZyB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNob3cobWVzc2FnZSwgdGl0bGUsICdkYW5nZXInLCBpY29uKTtcclxuICAgIH1cclxuICAgIHdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyB8IG51bGwsIGljb24/OiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zaG93KG1lc3NhZ2UsIHRpdGxlLCAnd2FybmluZycsIGljb24pO1xyXG4gICAgfVxyXG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nIHwgbnVsbCwgaWNvbj86IHN0cmluZyB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNob3cobWVzc2FnZSwgdGl0bGUsICdpbmZvJywgaWNvbik7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIHNob3cobWVzc2FnZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyB8IG51bGwsIGFsZXJ0VHlwZT86IEFsZXJ0VHlwZSB8IG51bGwsIGljb24/OiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICAgICAgLy8gaWYgKCFpY29uKSB7XHJcbiAgICAgICAgLy8gICAgIGljb24gPSBCb290c3RyYXBIZWxwZXIuY3NzQWxlcnRJY29uKGFsZXJ0VHlwZSlcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIHRoaXMudG9hc3RTdWJqZWN0Lm5leHQoPFRvYXN0PnsgbWVzc2FnZSwgdGl0bGUsIHR5cGU6IGFsZXJ0VHlwZSwgaWNvbiB9KTsvLywgaWQ6IGAke3RoaXMuaWQrK31gXHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -59,9 +59,6 @@ export class AuthService {
|
|
|
59
59
|
if (this._oldValue !== newValue) {
|
|
60
60
|
this._oldValue = newValue;
|
|
61
61
|
this.emitOnSignedIn();
|
|
62
|
-
// if (this._onSignedInSubject) {
|
|
63
|
-
// this._onSignedInSubject.next(newValue);
|
|
64
|
-
// }
|
|
65
62
|
//if user is signed in and expired we need to logout (remove from localStorage)
|
|
66
63
|
if (!newValue) {
|
|
67
64
|
this.logout();
|
|
@@ -191,4 +188,4 @@ export class AuthService {
|
|
|
191
188
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: AuthService, decorators: [{
|
|
192
189
|
type: Injectable
|
|
193
190
|
}] });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvc2VydmljZXMvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBR3hELE1BQU0sT0FBTyxXQUFXO0lBRHhCO1FBRVksbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixVQUFLLEdBQXFCLElBQUksQ0FBQztLQXFPMUM7SUFuT0csSUFBSSxJQUFJO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FB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QUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksS0FBSztvQkFDTCxPQUFPLElBQUksQ0FBQztZQUNwQixDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFHRCxpQkFBaUIsQ0FBQyxJQUFTO1FBQ3ZCLHVEQUF1RDtRQUN2RCxtQ0FBbUM7UUFDbkMsOENBQThDO1FBRTlDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyRCxvQ0FBb0M7UUFDcEMsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQzs4R0F2T1EsV0FBVztrSEFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEtleVBhaXIsIExvZ2luVG9rZW4sIExvZ2luVXNlciB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IENvbnZlcnQsIERhdGVIZWxwZXIsIE9iamVjdEhlbHBlciwgU3RvcmFnZUhlbHBlciB9IGZyb20gJy4uL3V0aWxzJztcclxuaW1wb3J0IHsgQml0d2lzZUhlbHBlciB9IGZyb20gJy4uL3V0aWxzL2JpdHdpc2UtaGVscGVyJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX29sZFZhbHVlID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIF91c2VyOiBMb2dpblVzZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBnZXQgdXNlcigpOiBMb2dpblVzZXIgfCBudWxsIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2lzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgdXNlciA9IFN0b3JhZ2VIZWxwZXIuZ2V0KCdsb2dpbicpO1xyXG4gICAgICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgdXNlci5pZCA9IE9iamVjdEhlbHBlci5pc0RlZmluZWQodXNlci5pZCkgPyBDb252ZXJ0LnBhcnNlTnVtYmVyKHVzZXIuaWQpIDogdXNlci5pZDtcclxuICAgICAgICAgICAgICAgIHVzZXIuZXhwaXJlZCA9IE9iamVjdEhlbHBlci5pc0RlZmluZWQodXNlci5leHBpcmVkKSA/IERhdGVIZWxwZXIucGFyc2VEYXRlKHVzZXIuZXhwaXJlZCkgOiB1c2VyLmV4cGlyZWQ7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnJlZnJlc2hUb2tlblRpbWUgPSBPYmplY3RIZWxwZXIuaXNEZWZpbmVkKHVzZXIucmVmcmVzaFRva2VuVGltZSkgPyBEYXRlSGVscGVyLnBhcnNlRGF0ZSh1c2VyLnJlZnJlc2hUb2tlblRpbWUpIDogdXNlci5yZWZyZXNoVG9rZW5UaW1lO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHVzZXIucm9sZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdXNlci5yb2xlcyA9IHVzZXIucm9sZXMubWFwKGZ1bmN0aW9uIChlOiBhbnkpIHsgcmV0dXJuIGUgPyBlLnRvVXBwZXJDYXNlKCkgOiBlOyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl91c2VyID0gdXNlcjtcclxuICAgICAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJSZWZyZXNoVG9rZW5UaW1lcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fdXNlcjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfdGltZXJJZDogYW55O1xyXG4gICAgcHJpdmF0ZSBfc3RhclJlZnJlc2hUb2tlblRpbWVyKCkge1xyXG4gICAgICAgIHRoaXMuX3N0b3BSZWZyZXNoVG9rZW5UaW1lcigpO1xyXG5cclxuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlcjtcclxuICAgICAgICBpZiAodXNlciAmJiB1c2VyLnJlZnJlc2hUb2tlblRpbWUpIHtcclxuICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSB1c2VyLnJlZnJlc2hUb2tlblRpbWUuZ2V0VGltZSgpIC0gRGF0ZS5ub3coKTsvLyAtICg2MCAqIDEwMDApO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRPblJlZnJlc2hUb2tlbigpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBtaW5SZWZyZXNoVGltZSA9IDYwXzAwMC8vMSBtaW47XHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0IDwgbWluUmVmcmVzaFRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBtaW5SZWZyZXNoVGltZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fdGltZXJJZCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1pdE9uUmVmcmVzaFRva2VuKCk7XHJcbiAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX3N0b3BSZWZyZXNoVG9rZW5UaW1lcigpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3RpbWVySWQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fdGltZXJJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZW1pdE9uUmVmcmVzaFRva2VuKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9vblJlZnJlc2hUb2tlblN1YmplY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fb25SZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBleHBpcmVkID0gdGhpcy5nZXRFeHBpcmVkKCkgfHwgbmV3IERhdGUoMCk7Ly8gaWYgZ2V0RXhwaXJlZCBpcyBudWxsIHJldHVybiBtaW4gSlMgZGF0ZVxyXG5cclxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IG5ldyBEYXRlKCkgPCBleHBpcmVkO1xyXG4gICAgICAgIGlmICh0aGlzLl9vbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fb2xkVmFsdWUgPSBuZXdWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZW1pdE9uU2lnbmVkSW4oKTtcclxuICAgICAgICAgICAgLy8gaWYgKHRoaXMuX29uU2lnbmVkSW5TdWJqZWN0KSB7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLl9vblNpZ25lZEluU3ViamVjdC5uZXh0KG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgICAgLy9pZiB1c2VyIGlzIHNpZ25lZCBpbiBhbmQgZXhwaXJlZCB3ZSBuZWVkIHRvIGxvZ291dCAocmVtb3ZlIGZyb20gbG9jYWxTdG9yYWdlKVxyXG4gICAgICAgICAgICBpZiAoIW5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBuZXdWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xyXG4gICAgfVxyXG4gICAgZW1pdE9uU2lnbmVkSW4oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX29uU2lnbmVkSW5TdWJqZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29uU2lnbmVkSW5TdWJqZWN0Lm5leHQodGhpcy5fb2xkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9vblNpZ25lZEluU3ViamVjdD86IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjsvL0JlaGF2aW9yU3ViamVjdCBpcyBmb3IgaW5pdGlhbCBmaXJ0IHZhbHVlID0gZmFsc2VcclxuICAgIHByaXZhdGUgX29uU2lnbmVkSW5PYnNlcnZhYmxlPzogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIGdldCBvblNpZ25lZEluKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGlmICghdGhpcy5fb25TaWduZWRJblN1YmplY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fb25TaWduZWRJblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5fb25TaWduZWRJbk9ic2VydmFibGUgPSB0aGlzLl9vblNpZ25lZEluU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5fb25TaWduZWRJbk9ic2VydmFibGUpXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIl9vbkV4ZWN1dGVPYnNlcnZhYmxlIGlzIHVuZGVmaW5lZFwiKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uU2lnbmVkSW5PYnNlcnZhYmxlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIF9vblJlZnJlc2hUb2tlblN1YmplY3Q/OiBTdWJqZWN0PHZvaWQ+O1xyXG4gICAgcHJpdmF0ZSBfb25SZWZyZXNoVG9rZW5PYnNlcnZhYmxlPzogT2JzZXJ2YWJsZTx2b2lkPjtcclxuICAgIGdldCBvblJlZnJlc2hUb2tlbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX29uUmVmcmVzaFRva2VuU3ViamVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9vblJlZnJlc2hUb2tlblN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgICAgICAgICB0aGlzLl9vblJlZnJlc2hUb2tlbk9ic2VydmFibGUgPSB0aGlzLl9vblJlZnJlc2hUb2tlblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX29uUmVmcmVzaFRva2VuT2JzZXJ2YWJsZSlcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwib25SZWZyZXNoVG9rZW5PYnNlcnZhYmxlIGlzIHVuZGVmaW5lZFwiKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uUmVmcmVzaFRva2VuT2JzZXJ2YWJsZTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIGxvZ2luKHVzZXI6IExvZ2luVG9rZW4gfCBMb2dpblVzZXIgfCBudWxsKSB7XHJcbiAgICAgICAgU3RvcmFnZUhlbHBlci5zZXQoJ2xvZ2luJywgdXNlcik7XHJcbiAgICAgICAgdGhpcy5fdXNlciA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IGZhbHNlOy8vdXNlciBnZXQgbWV0aG9kIHdpbGwgaW5pdCB1c2VyXHJcbiAgICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKTsvL3RoaXMgbWV0aG9kIG5lZWQgdG8gZXhlY3V0ZSBzdWJqZWN0Lm5leHQoKTsgICAgICAgIFxyXG4gICAgfVxyXG4gICAgbG9nb3V0KCkge1xyXG4gICAgICAgIHRoaXMubG9naW4obnVsbCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0RXhwaXJlZCgpOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMudXNlcjtcclxuICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdXNlci5leHBpcmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldFJlZnJlc2hUb2tlbkV4cGlyZWQoKTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXI7XHJcbiAgICAgICAgaWYgKHVzZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVzZXIucmVmcmVzaFRva2VuVGltZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBpc0luUm9sZShhbGxvd2VkUm9sZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcbiAgICAvLyAgICAgaWYgKCFhbGxvd2VkUm9sZXMgfHwgYWxsb3dlZFJvbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIC8vICAgICB9XHJcblxyXG4gICAgLy8gICAgIGNvbnN0IHRtcCA9IHRoaXMuZ2V0VXNlcigpO1xyXG4gICAgLy8gICAgIGNvbnN0IHJvbGVzID0gdG1wID8gdG1wLnJvbGVzIDogbnVsbDtcclxuICAgIC8vICAgICBpZiAoIXJvbGVzIHx8IHJvbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAvLyAgICAgfVxyXG5cclxuICAgIC8vICAgICBsZXQgaXNJblJvbGUgPSBhbGxvd2VkUm9sZXMuc29tZShyb2xlID0+IHJvbGVzLmluZGV4T2Yocm9sZSkgIT09IC0xKTtcclxuICAgIC8vICAgICByZXR1cm4gaXNJblJvbGU7XHJcbiAgICAvLyB9XHJcblxyXG5cclxuICAgIGhhc1Blcm1pc3Npb24ocGVybWlzc2lvbj86IEtleVBhaXI8bnVtYmVyLCBudW1iZXI+IHwgbnVtYmVyIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghcGVybWlzc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBrZXkgPSAwO1xyXG4gICAgICAgIGxldCB2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAodHlwZW9mIHBlcm1pc3Npb24gPT09ICdudW1iZXInIHx8IHR5cGVvZiBwZXJtaXNzaW9uID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBrZXkgPSArcGVybWlzc2lvbjtcclxuICAgICAgICB9Ly8gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwZXJtaXNzaW9uKSkge1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgcGVybWlzc2lvbiA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgaWYgKCFwZXJtaXNzaW9uLmtleSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICAgICAga2V5ID0gcGVybWlzc2lvbi5rZXk7XHJcbiAgICAgICAgICAgIHZhbHVlID0gcGVybWlzc2lvbi52YWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmhhc1Blcm1pc3Npb25zKFtrZXldLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGhhc1Blcm1pc3Npb25zKHBlcm1pc3Npb25zPzogQXJyYXk8bnVtYmVyPiwgdmFsdWU/OiBudW1iZXIgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9ucyB8fCBwZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy51c2VyO1xyXG4gICAgICAgIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXIgPyB1c2VyLnBlcm1pc3Npb25zIDogbnVsbDtcclxuICAgICAgICBpZiAoIXVzZXJQZXJtaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwZXJtaXNzaW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IHBlcm1pc3Npb25zW2ldO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSB1c2VyUGVybWlzc2lvbnNbcF07XHJcbiAgICAgICAgICAgICAgICBpZiAoZm91bmQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNQZXJtaXNzaW9uID0gQml0d2lzZUhlbHBlci5oYXNGbGFnKGZvdW5kLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1Blcm1pc3Npb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwZXJtaXNzaW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IHBlcm1pc3Npb25zW2ldO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSB1c2VyUGVybWlzc2lvbnNbcF07XHJcbiAgICAgICAgICAgICAgICBpZiAoZm91bmQpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaGFzRGF0YVBlcm1pc3Npb24oZGF0YTogYW55KSB7XHJcbiAgICAgICAgLy9pZiAoZGF0YSA9PT0gdW5kZWZpbmVkIHx8IGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIC8vIGNvbnN0IGFsbG93ZWRSb2xlcyA9IGRhdGEucm9sZXM7XHJcbiAgICAgICAgLy8gbGV0IGlzSW5Sb2xlID0gdGhpcy5pc0luUm9sZShhbGxvd2VkUm9sZXMpO1xyXG5cclxuICAgICAgICBjb25zdCBwZXJtaXNzaW9uID0gZGF0YS5wZXJtaXNzaW9uO1xyXG5cclxuICAgICAgICBjb25zdCBoYXNQZXJtaXNzaW9uID0gdGhpcy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gaXNJblJvbGUgJiYgaGFzUGVybWlzc2lvbjtcclxuICAgICAgICByZXR1cm4gaGFzUGVybWlzc2lvbjtcclxuICAgIH1cclxufSJdfQ==
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvc2VydmljZXMvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBR3hELE1BQU0sT0FBTyxXQUFXO0lBRHhCO1FBRVksbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixVQUFLLEdBQXFCLElBQUksQ0FBQztLQWtPMUM7SUFoT0csSUFBSSxJQUFJO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUN4RyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUU1SSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZGLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBSU8sc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBRTlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDaEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBLGlCQUFpQjtZQUU1RSxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM5QixDQUFDO1lBRUQsTUFBTSxjQUFjLEdBQUcsS0FBTSxDQUFBLENBQUEsUUFBUTtZQUNyQyxJQUFJLE9BQU8sR0FBRyxjQUFjLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxHQUFHLGNBQWMsQ0FBQztZQUM3QixDQUFDO1lBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUM3QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM5QixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFDTyxzQkFBc0I7UUFDMUIsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGtCQUFrQjtRQUNkLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBR0QsZUFBZTtRQUNYLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLDJDQUEyQztRQUU1RixNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7WUFFMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRXRCLCtFQUErRTtZQUMvRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLENBQUM7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUNELGNBQWM7UUFDVixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDTCxDQUFDO0lBSUQsSUFBSSxVQUFVO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFFekQsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDdEMsQ0FBQztJQUtELElBQUksY0FBYztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztZQUNsRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hGLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QjtZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFFN0QsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUM7SUFDMUMsQ0FBQztJQUlELEtBQUssQ0FBQyxJQUFtQztRQUNyQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFBLGdDQUFnQztRQUM1RCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQSxxREFBcUQ7SUFDaEYsQ0FBQztJQUNELE1BQU07UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFJUyxVQUFVO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN4QixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVTLHNCQUFzQjtRQUM1QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNqQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUdELDhDQUE4QztJQUM5Qyx3REFBd0Q7SUFDeEQsdUJBQXVCO0lBQ3ZCLFFBQVE7SUFFUixrQ0FBa0M7SUFDbEMsNENBQTRDO0lBQzVDLDBDQUEwQztJQUMxQyx3QkFBd0I7SUFDeEIsUUFBUTtJQUVSLDRFQUE0RTtJQUM1RSx1QkFBdUI7SUFDdkIsSUFBSTtJQUdKLGFBQWEsQ0FBQyxVQUFvRDtRQUM5RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDZCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxLQUFnQyxDQUFDO1FBQ3JDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25FLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUN0QixDQUFDLENBQUEsd0NBQXdDO1FBQ3pDLElBQUk7YUFDQyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRztnQkFDZixPQUFPLElBQUksQ0FBQztZQUVoQixHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUNyQixLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUM3QixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUdELGNBQWMsQ0FBQyxXQUEyQixFQUFFLEtBQXFCO1FBQzdELElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkIsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMxQyxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDUixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDMUQsSUFBSSxhQUFhO3dCQUNiLE9BQU8sSUFBSSxDQUFDO2dCQUNwQixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksS0FBSztvQkFDTCxPQUFPLElBQUksQ0FBQztZQUNwQixDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFHRCxpQkFBaUIsQ0FBQyxJQUFTO1FBQ3ZCLHVEQUF1RDtRQUN2RCxtQ0FBbUM7UUFDbkMsOENBQThDO1FBRTlDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyRCxvQ0FBb0M7UUFDcEMsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQzs4R0FwT1EsV0FBVztrSEFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEtleVBhaXIsIExvZ2luVG9rZW4sIExvZ2luVXNlciB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IENvbnZlcnQsIERhdGVIZWxwZXIsIE9iamVjdEhlbHBlciwgU3RvcmFnZUhlbHBlciB9IGZyb20gJy4uL3V0aWxzJztcclxuaW1wb3J0IHsgQml0d2lzZUhlbHBlciB9IGZyb20gJy4uL3V0aWxzL2JpdHdpc2UtaGVscGVyJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX29sZFZhbHVlID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIF91c2VyOiBMb2dpblVzZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBnZXQgdXNlcigpOiBMb2dpblVzZXIgfCBudWxsIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2lzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgdXNlciA9IFN0b3JhZ2VIZWxwZXIuZ2V0KCdsb2dpbicpO1xyXG4gICAgICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgdXNlci5pZCA9IE9iamVjdEhlbHBlci5pc0RlZmluZWQodXNlci5pZCkgPyBDb252ZXJ0LnBhcnNlTnVtYmVyKHVzZXIuaWQpIDogdXNlci5pZDtcclxuICAgICAgICAgICAgICAgIHVzZXIuZXhwaXJlZCA9IE9iamVjdEhlbHBlci5pc0RlZmluZWQodXNlci5leHBpcmVkKSA/IERhdGVIZWxwZXIucGFyc2VEYXRlKHVzZXIuZXhwaXJlZCkgOiB1c2VyLmV4cGlyZWQ7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnJlZnJlc2hUb2tlblRpbWUgPSBPYmplY3RIZWxwZXIuaXNEZWZpbmVkKHVzZXIucmVmcmVzaFRva2VuVGltZSkgPyBEYXRlSGVscGVyLnBhcnNlRGF0ZSh1c2VyLnJlZnJlc2hUb2tlblRpbWUpIDogdXNlci5yZWZyZXNoVG9rZW5UaW1lO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHVzZXIucm9sZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdXNlci5yb2xlcyA9IHVzZXIucm9sZXMubWFwKGZ1bmN0aW9uIChlOiBhbnkpIHsgcmV0dXJuIGUgPyBlLnRvVXBwZXJDYXNlKCkgOiBlOyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl91c2VyID0gdXNlcjtcclxuICAgICAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJSZWZyZXNoVG9rZW5UaW1lcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fdXNlcjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfdGltZXJJZDogYW55O1xyXG4gICAgcHJpdmF0ZSBfc3RhclJlZnJlc2hUb2tlblRpbWVyKCkge1xyXG4gICAgICAgIHRoaXMuX3N0b3BSZWZyZXNoVG9rZW5UaW1lcigpO1xyXG5cclxuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlcjtcclxuICAgICAgICBpZiAodXNlciAmJiB1c2VyLnJlZnJlc2hUb2tlblRpbWUpIHtcclxuICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSB1c2VyLnJlZnJlc2hUb2tlblRpbWUuZ2V0VGltZSgpIC0gRGF0ZS5ub3coKTsvLyAtICg2MCAqIDEwMDApO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRPblJlZnJlc2hUb2tlbigpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBtaW5SZWZyZXNoVGltZSA9IDYwXzAwMC8vMSBtaW47XHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0IDwgbWluUmVmcmVzaFRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBtaW5SZWZyZXNoVGltZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fdGltZXJJZCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1pdE9uUmVmcmVzaFRva2VuKCk7XHJcbiAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX3N0b3BSZWZyZXNoVG9rZW5UaW1lcigpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3RpbWVySWQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fdGltZXJJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZW1pdE9uUmVmcmVzaFRva2VuKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9vblJlZnJlc2hUb2tlblN1YmplY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fb25SZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBleHBpcmVkID0gdGhpcy5nZXRFeHBpcmVkKCkgfHwgbmV3IERhdGUoMCk7Ly8gaWYgZ2V0RXhwaXJlZCBpcyBudWxsIHJldHVybiBtaW4gSlMgZGF0ZVxyXG5cclxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IG5ldyBEYXRlKCkgPCBleHBpcmVkO1xyXG4gICAgICAgIGlmICh0aGlzLl9vbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fb2xkVmFsdWUgPSBuZXdWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZW1pdE9uU2lnbmVkSW4oKTtcclxuXHJcbiAgICAgICAgICAgIC8vaWYgdXNlciBpcyBzaWduZWQgaW4gYW5kIGV4cGlyZWQgd2UgbmVlZCB0byBsb2dvdXQgKHJlbW92ZSBmcm9tIGxvY2FsU3RvcmFnZSlcclxuICAgICAgICAgICAgaWYgKCFuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdWYWx1ZTtcclxuICAgIH1cclxuICAgIGVtaXRPblNpZ25lZEluKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9vblNpZ25lZEluU3ViamVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9vblNpZ25lZEluU3ViamVjdC5uZXh0KHRoaXMuX29sZFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfb25TaWduZWRJblN1YmplY3Q/OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47Ly9CZWhhdmlvclN1YmplY3QgaXMgZm9yIGluaXRpYWwgZmlydCB2YWx1ZSA9IGZhbHNlXHJcbiAgICBwcml2YXRlIF9vblNpZ25lZEluT2JzZXJ2YWJsZT86IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBnZXQgb25TaWduZWRJbigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX29uU2lnbmVkSW5TdWJqZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29uU2lnbmVkSW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX29uU2lnbmVkSW5PYnNlcnZhYmxlID0gdGhpcy5fb25TaWduZWRJblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX29uU2lnbmVkSW5PYnNlcnZhYmxlKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfb25FeGVjdXRlT2JzZXJ2YWJsZSBpcyB1bmRlZmluZWRcIik7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9vblNpZ25lZEluT2JzZXJ2YWJsZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfb25SZWZyZXNoVG9rZW5TdWJqZWN0PzogU3ViamVjdDx2b2lkPjtcclxuICAgIHByaXZhdGUgX29uUmVmcmVzaFRva2VuT2JzZXJ2YWJsZT86IE9ic2VydmFibGU8dm9pZD47XHJcbiAgICBnZXQgb25SZWZyZXNoVG9rZW4oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9vblJlZnJlc2hUb2tlblN1YmplY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fb25SZWZyZXNoVG9rZW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgICAgICAgICAgdGhpcy5fb25SZWZyZXNoVG9rZW5PYnNlcnZhYmxlID0gdGhpcy5fb25SZWZyZXNoVG9rZW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9vblJlZnJlc2hUb2tlbk9ic2VydmFibGUpXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm9uUmVmcmVzaFRva2VuT2JzZXJ2YWJsZSBpcyB1bmRlZmluZWRcIik7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9vblJlZnJlc2hUb2tlbk9ic2VydmFibGU7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBsb2dpbih1c2VyOiBMb2dpblRva2VuIHwgTG9naW5Vc2VyIHwgbnVsbCkge1xyXG4gICAgICAgIFN0b3JhZ2VIZWxwZXIuc2V0KCdsb2dpbicsIHVzZXIpO1xyXG4gICAgICAgIHRoaXMuX3VzZXIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsvL3VzZXIgZ2V0IG1ldGhvZCB3aWxsIGluaXQgdXNlclxyXG4gICAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkKCk7Ly90aGlzIG1ldGhvZCBuZWVkIHRvIGV4ZWN1dGUgc3ViamVjdC5uZXh0KCk7ICAgICAgICBcclxuICAgIH1cclxuICAgIGxvZ291dCgpIHtcclxuICAgICAgICB0aGlzLmxvZ2luKG51bGwpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIGdldEV4cGlyZWQoKTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXI7XHJcbiAgICAgICAgaWYgKHVzZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVzZXIuZXhwaXJlZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRSZWZyZXNoVG9rZW5FeHBpcmVkKCk6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy51c2VyO1xyXG4gICAgICAgIGlmICh1c2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1c2VyLnJlZnJlc2hUb2tlblRpbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gaXNJblJvbGUoYWxsb3dlZFJvbGVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgLy8gICAgIGlmICghYWxsb3dlZFJvbGVzIHx8IGFsbG93ZWRSb2xlcy5sZW5ndGggPT09IDApIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAvLyAgICAgfVxyXG5cclxuICAgIC8vICAgICBjb25zdCB0bXAgPSB0aGlzLmdldFVzZXIoKTtcclxuICAgIC8vICAgICBjb25zdCByb2xlcyA9IHRtcCA/IHRtcC5yb2xlcyA6IG51bGw7XHJcbiAgICAvLyAgICAgaWYgKCFyb2xlcyB8fCByb2xlcy5sZW5ndGggPT09IDApIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgLy8gICAgIH1cclxuXHJcbiAgICAvLyAgICAgbGV0IGlzSW5Sb2xlID0gYWxsb3dlZFJvbGVzLnNvbWUocm9sZSA9PiByb2xlcy5pbmRleE9mKHJvbGUpICE9PSAtMSk7XHJcbiAgICAvLyAgICAgcmV0dXJuIGlzSW5Sb2xlO1xyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgICBoYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24/OiBLZXlQYWlyPG51bWJlciwgbnVtYmVyPiB8IG51bWJlciB8IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXBlcm1pc3Npb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQga2V5ID0gMDtcclxuICAgICAgICBsZXQgdmFsdWU6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBwZXJtaXNzaW9uID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgcGVybWlzc2lvbiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAga2V5ID0gK3Blcm1pc3Npb247XHJcbiAgICAgICAgfS8vIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGVybWlzc2lvbikpIHtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBlcm1pc3Npb24gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIGlmICghcGVybWlzc2lvbi5rZXkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIGtleSA9IHBlcm1pc3Npb24ua2V5O1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHBlcm1pc3Npb24udmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5oYXNQZXJtaXNzaW9ucyhba2V5XSwgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBoYXNQZXJtaXNzaW9ucyhwZXJtaXNzaW9ucz86IEFycmF5PG51bWJlcj4sIHZhbHVlPzogbnVtYmVyIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghcGVybWlzc2lvbnMgfHwgcGVybWlzc2lvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMudXNlcjtcclxuICAgICAgICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyID8gdXNlci5wZXJtaXNzaW9ucyA6IG51bGw7XHJcbiAgICAgICAgaWYgKCF1c2VyUGVybWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGVybWlzc2lvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBwZXJtaXNzaW9uc1tpXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gdXNlclBlcm1pc3Npb25zW3BdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IEJpdHdpc2VIZWxwZXIuaGFzRmxhZyhmb3VuZCwgdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNQZXJtaXNzaW9uKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGVybWlzc2lvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBwZXJtaXNzaW9uc1tpXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gdXNlclBlcm1pc3Npb25zW3BdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGhhc0RhdGFQZXJtaXNzaW9uKGRhdGE6IGFueSkge1xyXG4gICAgICAgIC8vaWYgKGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAvLyBjb25zdCBhbGxvd2VkUm9sZXMgPSBkYXRhLnJvbGVzO1xyXG4gICAgICAgIC8vIGxldCBpc0luUm9sZSA9IHRoaXMuaXNJblJvbGUoYWxsb3dlZFJvbGVzKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IGRhdGEucGVybWlzc2lvbjtcclxuXHJcbiAgICAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IHRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKTtcclxuXHJcbiAgICAgICAgLy8gcmV0dXJuIGlzSW5Sb2xlICYmIGhhc1Blcm1pc3Npb247XHJcbiAgICAgICAgcmV0dXJuIGhhc1Blcm1pc3Npb247XHJcbiAgICB9XHJcbn0iXX0=
|
package/fesm2022/zek.mjs
CHANGED
|
@@ -1382,9 +1382,6 @@ class AuthService {
|
|
|
1382
1382
|
if (this._oldValue !== newValue) {
|
|
1383
1383
|
this._oldValue = newValue;
|
|
1384
1384
|
this.emitOnSignedIn();
|
|
1385
|
-
// if (this._onSignedInSubject) {
|
|
1386
|
-
// this._onSignedInSubject.next(newValue);
|
|
1387
|
-
// }
|
|
1388
1385
|
//if user is signed in and expired we need to logout (remove from localStorage)
|
|
1389
1386
|
if (!newValue) {
|
|
1390
1387
|
this.logout();
|
|
@@ -1635,9 +1632,9 @@ class AlertService {
|
|
|
1635
1632
|
this.show(message, title, 'info', icon);
|
|
1636
1633
|
}
|
|
1637
1634
|
show(message, title, alertType, icon) {
|
|
1638
|
-
if (!icon) {
|
|
1639
|
-
|
|
1640
|
-
}
|
|
1635
|
+
// if (!icon) {
|
|
1636
|
+
// icon = BootstrapHelper.cssAlertIcon(alertType)
|
|
1637
|
+
// }
|
|
1641
1638
|
this.toastSubject.next({ message, title, type: alertType, icon }); //, id: `${this.id++}`
|
|
1642
1639
|
}
|
|
1643
1640
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: AlertService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -2587,7 +2584,7 @@ class ListBaseComponent extends BaseComponent {
|
|
|
2587
2584
|
}
|
|
2588
2585
|
async bindModel() {
|
|
2589
2586
|
this.selectedIds = [];
|
|
2590
|
-
this.model = await firstValueFrom(this.
|
|
2587
|
+
this.model = await firstValueFrom(this.apiGetAll(this.internalFilter));
|
|
2591
2588
|
if (this.model) {
|
|
2592
2589
|
let totalCount = this.model.totalItemCount;
|
|
2593
2590
|
if (!totalCount && this.model.pager) {
|
|
@@ -2599,6 +2596,9 @@ class ListBaseComponent extends BaseComponent {
|
|
|
2599
2596
|
this.pager = new Pager();
|
|
2600
2597
|
//this.pagedList.pager = this.pager;
|
|
2601
2598
|
}
|
|
2599
|
+
apiGetAll(filter) {
|
|
2600
|
+
return this.service.getAll(filter);
|
|
2601
|
+
}
|
|
2602
2602
|
initDefaultFilter() {
|
|
2603
2603
|
}
|
|
2604
2604
|
initStoredFilter() {
|
|
@@ -2665,22 +2665,28 @@ class ListBaseComponent extends BaseComponent {
|
|
|
2665
2665
|
}
|
|
2666
2666
|
async delete(id) {
|
|
2667
2667
|
this.alert.clear();
|
|
2668
|
-
const data = await firstValueFrom(this.
|
|
2668
|
+
const data = await firstValueFrom(this.apiDelete(id));
|
|
2669
2669
|
if (data?.success) {
|
|
2670
2670
|
const message = await firstValueFrom(this.translate.get('Alert.Deleted'));
|
|
2671
2671
|
this.alert.error(message, null, 'fa-solid fa-trash');
|
|
2672
2672
|
this.refresh();
|
|
2673
2673
|
}
|
|
2674
2674
|
}
|
|
2675
|
+
apiDelete(id) {
|
|
2676
|
+
return this.service.delete(id);
|
|
2677
|
+
}
|
|
2675
2678
|
async delete2(id, id2) {
|
|
2676
2679
|
this.alert.clear();
|
|
2677
|
-
const data = await firstValueFrom(this.
|
|
2680
|
+
const data = await firstValueFrom(this.apiDelete2(id, id2));
|
|
2678
2681
|
if (data?.success) {
|
|
2679
2682
|
const message = await firstValueFrom(this.translate.get('Alert.Deleted'));
|
|
2680
2683
|
this.alert.error(message, null, 'fa-solid fa-trash');
|
|
2681
2684
|
this.refresh();
|
|
2682
2685
|
}
|
|
2683
2686
|
}
|
|
2687
|
+
apiDelete2(id, id2) {
|
|
2688
|
+
return this.service.delete2(id, id2);
|
|
2689
|
+
}
|
|
2684
2690
|
edit(id) {
|
|
2685
2691
|
// this.router.navigate([this.url, id],
|
|
2686
2692
|
// { queryParams: { returnUrl: this.url + ';filter=1' } }
|
|
@@ -2717,17 +2723,20 @@ class ListBaseComponent extends BaseComponent {
|
|
|
2717
2723
|
this.approveModel = {};
|
|
2718
2724
|
this.approveModal.show(tmp);
|
|
2719
2725
|
}
|
|
2720
|
-
async approve(
|
|
2721
|
-
if (!
|
|
2726
|
+
async approve(model) {
|
|
2727
|
+
if (!model)
|
|
2722
2728
|
return;
|
|
2723
2729
|
this.alert.clear();
|
|
2724
|
-
const data = await firstValueFrom(this.
|
|
2730
|
+
const data = await firstValueFrom(this.apiApprove(model));
|
|
2725
2731
|
if (!data || data.length === 0)
|
|
2726
2732
|
return;
|
|
2727
2733
|
const message = await firstValueFrom(this.translate.get(this.approvedMesage));
|
|
2728
2734
|
this.alert.success(message, null, 'fa-solid fa-thumbs-up');
|
|
2729
2735
|
this.refresh();
|
|
2730
2736
|
}
|
|
2737
|
+
apiApprove(model) {
|
|
2738
|
+
return this.service.approve(model);
|
|
2739
|
+
}
|
|
2731
2740
|
showDisapproveModal(id) {
|
|
2732
2741
|
if (!id || !this.disapproveModal)
|
|
2733
2742
|
return;
|
|
@@ -2742,23 +2751,26 @@ class ListBaseComponent extends BaseComponent {
|
|
|
2742
2751
|
this.approveModel = {};
|
|
2743
2752
|
this.disapproveModal.show(tmp);
|
|
2744
2753
|
}
|
|
2745
|
-
async disapprove(
|
|
2746
|
-
if (!
|
|
2754
|
+
async disapprove(model) {
|
|
2755
|
+
if (!model || !this.approveModel)
|
|
2747
2756
|
return;
|
|
2748
|
-
if (typeof
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
if (!
|
|
2752
|
-
delete
|
|
2757
|
+
if (typeof model === 'object') {
|
|
2758
|
+
model.status = this.approveModel.status;
|
|
2759
|
+
model.comment = StringHelper.tryTrim(this.approveModel.comment);
|
|
2760
|
+
if (!model.comment)
|
|
2761
|
+
delete model.comment;
|
|
2753
2762
|
}
|
|
2754
2763
|
this.alert.clear();
|
|
2755
|
-
const data = await firstValueFrom(this.
|
|
2764
|
+
const data = await firstValueFrom(this.apiDisapprove(model));
|
|
2756
2765
|
if (!data || data.length === 0)
|
|
2757
2766
|
return;
|
|
2758
2767
|
const message = await firstValueFrom(this.translate.get(this.disapprovedMesage));
|
|
2759
2768
|
this.alert.success(message, null, 'fa-solid fa-thumbs-down');
|
|
2760
2769
|
this.refresh();
|
|
2761
2770
|
}
|
|
2771
|
+
apiDisapprove(model) {
|
|
2772
|
+
return this.service.disapprove(model);
|
|
2773
|
+
}
|
|
2762
2774
|
getSelectedIds() {
|
|
2763
2775
|
return this.selectedIds;
|
|
2764
2776
|
// if (!this.pagedList || !this.pagedList.items) return [];
|
|
@@ -2772,7 +2784,7 @@ class ListBaseComponent extends BaseComponent {
|
|
|
2772
2784
|
showSum() { }
|
|
2773
2785
|
async sum() {
|
|
2774
2786
|
this.sumModel = null;
|
|
2775
|
-
const data = await firstValueFrom(this.
|
|
2787
|
+
const data = await firstValueFrom(this.apiSum(this.internalFilter));
|
|
2776
2788
|
if (data) {
|
|
2777
2789
|
this.sumModel = data;
|
|
2778
2790
|
this.showSum();
|
|
@@ -2782,6 +2794,9 @@ class ListBaseComponent extends BaseComponent {
|
|
|
2782
2794
|
this.alert.error(message);
|
|
2783
2795
|
}
|
|
2784
2796
|
}
|
|
2797
|
+
apiSum(filter) {
|
|
2798
|
+
return this.service.sum(filter);
|
|
2799
|
+
}
|
|
2785
2800
|
export(fileTypeId) {
|
|
2786
2801
|
this.service.export(this.internalFilter, fileTypeId).subscribe(data => {
|
|
2787
2802
|
this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|