monkey-front-core 0.0.163 → 0.0.166
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/esm2020/lib/core/services/commons/monkeyecx-commons.service.mjs +19 -7
- package/esm2020/lib/core/services/index.mjs +2 -1
- package/fesm2015/monkey-front-core.mjs +41 -7
- package/fesm2015/monkey-front-core.mjs.map +1 -1
- package/fesm2020/monkey-front-core.mjs +41 -7
- package/fesm2020/monkey-front-core.mjs.map +1 -1
- package/lib/core/services/commons/monkeyecx-commons.service.d.ts +6 -0
- package/lib/core/services/index.d.ts +1 -0
- package/monkey-front-core-0.0.166.tgz +0 -0
- package/package.json +1 -1
- package/monkey-front-core-0.0.163.tgz +0 -0
|
@@ -33,6 +33,7 @@ export class MonkeyEcxCommonsService {
|
|
|
33
33
|
// eslint-disable-next-line no-console
|
|
34
34
|
return console.error('Method callbackPagination needs to be declared');
|
|
35
35
|
};
|
|
36
|
+
this.__isAbleToDoPagination = {};
|
|
36
37
|
this.handleInit();
|
|
37
38
|
}
|
|
38
39
|
handleInit() {
|
|
@@ -142,11 +143,14 @@ export class MonkeyEcxCommonsService {
|
|
|
142
143
|
});
|
|
143
144
|
}
|
|
144
145
|
}
|
|
145
|
-
handlePaginationOptions(
|
|
146
|
-
const {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
146
|
+
handlePaginationOptions() {
|
|
147
|
+
const { __paginationOptions } = this;
|
|
148
|
+
if (__paginationOptions) {
|
|
149
|
+
const { service, callback } = __paginationOptions;
|
|
150
|
+
service?.setCallback((type) => {
|
|
151
|
+
this.doPaginationv2(type, callback);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
150
154
|
}
|
|
151
155
|
setPage(requestPaged) {
|
|
152
156
|
this.__requestPaged = {
|
|
@@ -238,7 +242,8 @@ export class MonkeyEcxCommonsService {
|
|
|
238
242
|
this.__callbackPagination = otherArgs.callbackPagination;
|
|
239
243
|
}
|
|
240
244
|
if (otherArgs?.paginationOptions) {
|
|
241
|
-
this.
|
|
245
|
+
this.__paginationOptions = otherArgs?.paginationOptions;
|
|
246
|
+
this.handlePaginationOptions();
|
|
242
247
|
}
|
|
243
248
|
if (otherArgs?.feature) {
|
|
244
249
|
const { flag, service } = otherArgs.feature;
|
|
@@ -321,6 +326,13 @@ export class MonkeyEcxCommonsService {
|
|
|
321
326
|
}
|
|
322
327
|
}
|
|
323
328
|
}
|
|
329
|
+
setLinks(links) {
|
|
330
|
+
this.__isAbleToDoPagination = {
|
|
331
|
+
first: !!links?.first,
|
|
332
|
+
next: !!links?.next
|
|
333
|
+
};
|
|
334
|
+
this.__links = links;
|
|
335
|
+
}
|
|
324
336
|
setSearchByUrl(router, url, search, extras) {
|
|
325
337
|
this.__data = null;
|
|
326
338
|
this.__page = null;
|
|
@@ -349,4 +361,4 @@ __decorate([
|
|
|
349
361
|
}
|
|
350
362
|
})
|
|
351
363
|
], MonkeyEcxCommonsService.prototype, "genericMethod", null);
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LWNvbW1vbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9jb21tb25zL21vbmtleWVjeC1jb21tb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxlQUFlLEVBR2hCLE1BQU0saUJBQWlCLENBQUM7QUFHekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFpQnpELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRTFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUk3RSxNQUFNLE9BQU8sdUJBQXVCO0lBb0RsQyxZQUNTLGdCQUFtQyxFQUNuQyxZQUEyQyxFQUMzQyxTQVdOO1FBYk0scUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyxpQkFBWSxHQUFaLFlBQVksQ0FBK0I7UUFDM0MsY0FBUyxHQUFULFNBQVMsQ0FXZjtRQWpFSyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUk3QixpQkFBWSxHQUErQixJQUFJLENBQUM7UUFJaEQsWUFBTyxHQUFrQyxJQUFJLENBQUM7UUFFOUMsbUJBQWMsR0FBeUMsSUFBSSxDQUFDO1FBRTVELFdBQU0sR0FBa0MsSUFBSSxDQUFDO1FBRTdDLFlBQU8sR0FBa0MsSUFBSSxDQUFDO1FBSTlDLG1CQUFjLEdBQWlDLElBQUksQ0FBQztRQUVwRCx1QkFBa0IsR0FBeUIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckUs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QWMsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO2FBQ3RDO1lBQ0QsbUJBQW1CLEVBQUUsT0FBTztZQUM1QixHQUFHLE1BQU07U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQTBCO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ2pCLEdBQUcsS0FBSztTQUNULENBQUM7SUFDSixDQUFDO0NBQ0Y7QUEzRUM7SUFMQyxvQkFBb0IsQ0FBQztRQUNwQixpQkFBaUIsRUFBRTtZQUNqQixZQUFZLEVBQUUsSUFBSTtTQUNuQjtLQUNGLENBQUM7NERBYUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTW9ua2V5RWN4RXJyb3JSZXNwb25zZSxcbiAgTW9ua2V5RWN4SGFuZGxlZEVycm9yUmVzcG9uc2UsXG4gIE1vbmtleUVjeFJlcXVlc3RQYWdlZCxcbiAgTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlLFxuICBNb25rZXlFY3hSZXNwb25zZVBhZ2VkLFxuICBNb25rZXlFY3hSZXNwb25zZUxpbmtzLFxuICBNb25rZXlFY3hUb2tlbkNyZWRlbnRpYWxzLFxuICBNb25rZXlFY3hUcmFuc2xhdGVPcHRpb25zLFxuICBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCxcbiAgTW9ua2V5RWN4Q291bnRyeVNlY3VyaXR5LFxuICBNb25rZXlFY3hTYXZlZFN0YXRlXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTW9ua2V5RWN4VG9rZW5TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3N0b3JhZ2UvbW9ua2V5ZWN4LXRva2VuLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBNb25rZXlFY3hSZXF1ZXN0U2NoZWR1bGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2NoZWR1bGVzL21vbmtleWVjeC1yZXF1ZXN0LXNjaGVkdWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ua2V5RWN4UmVxdWVzdFF1ZXVlSGFuZGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vcmVxdWVzdC1xdWV1ZS9tb25rZXllY3gtcmVxdWVzdC1xdWV1ZS1oYW5kbGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IE1vbmtleUVjeFJlcXVlc3RQYWdlZEhhbmRsaW5nIH0gZnJvbSAnLi4vcmVxdWVzdC1wYWdlZC9tb25rZXllY3gtcmVxdWVzdC1yZXF1ZXN0LXBhZ2VkLWhhbmRsaW5nJztcbmltcG9ydCB7IE1vbmtleUVjeEZlYXR1cmVUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29uZmlnL21vbmtleWVjeC1mZWF0dXJlLXRvZ2dsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vbmtleUVjeFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgTW9ua2V5RWN4Q29yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL21vbmtleWVjeC1kZWNvcmF0b3JzJztcbmltcG9ydCB7IE1vbmtleUVjeFNlcnZpY2UgfSBmcm9tICcuLi9tb25rZXllY3gtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vbmtleUVjeFBhZ2luYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vcGFnaW5hdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBNb25rZXlFY3hDb21tb25zU2VydmljZSB7XG4gIHByaXZhdGUgZmxhZ1ZhbGlkYXRvciA9IHRydWU7XG5cbiAgX19kYXRhOiBhbnkgfCBhbnlbXTtcblxuICBfX3NhdmVkU3RhdGU6IE1vbmtleUVjeFNhdmVkU3RhdGUgfCBudWxsID0gbnVsbDtcblxuICBfX3BhcmFtczogYW55IHwgYW55W107XG5cbiAgX19lcnJvcjogTW9ua2V5RWN4RXJyb3JSZXNwb25zZSB8IG51bGwgPSBudWxsO1xuXG4gIF9faGFuZGxlZEVycm9yOiBNb25rZXlFY3hIYW5kbGVkRXJyb3JSZXNwb25zZSB8IG51bGwgPSBudWxsO1xuXG4gIF9fcGFnZTogTW9ua2V5RWN4UmVzcG9uc2VQYWdlZCB8IG51bGwgPSBudWxsO1xuXG4gIF9fbGlua3M6IE1vbmtleUVjeFJlc3BvbnNlTGlua3MgfCBudWxsID0gbnVsbDtcblxuICBfX3NlYXJjaDogYW55O1xuXG4gIF9fcmVxdWVzdFBhZ2VkOiBNb25rZXlFY3hSZXF1ZXN0UGFnZWQgfCBudWxsID0gbnVsbDtcblxuICBfX29uU2VhcmNoQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBfX29uRGF0YUNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vbkxvYWRpbmdJblByb2dyZXNzJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBfX29uVXBsb2FkSW5Qcm9ncmVzcyQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgX19vbkRhdGFEZWxldGVkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25FcnJvckNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vbkdvdmVybm1lbnRJZERhdGFDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25aaXBDb2RlRGF0YUNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vbmkxOG5EYXRhQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBfX29uRG9TZWFyY2gkOiBCZWhhdmlvclN1YmplY3Q8TW9ua2V5RWN4UmVxdWVzdFBhZ2VkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuXG4gIF9fdG9rZW5DcmVkZW50aWFsczogTW9ua2V5RWN4VG9rZW5DcmVkZW50aWFscyB8IG51bGwgPSBudWxsO1xuXG4gIF9fc2NoZWR1bGU6IE1vbmtleUVjeFJlcXVlc3RTY2hlZHVsZSB8IG51bGwgPSBudWxsO1xuXG4gIF9faTE4bjogYW55O1xuXG4gIF9fY2FsbGJhY2tQYWdpbmF0aW9uOiBGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIHJldHVybiBjb25zb2xlLmVycm9yKCdNZXRob2QgY2FsbGJhY2tQYWdpbmF0aW9uIG5lZWRzIHRvIGJlIGRlY2xhcmVkJyk7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1vbmtleWVjeFNlcnZpY2U/OiBNb25rZXlFY3hTZXJ2aWNlLFxuICAgIHB1YmxpYyB0b2tlblN0b3JhZ2U/OiBNb25rZXlFY3hUb2tlblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBvdGhlckFyZ3M/OiB7XG4gICAgICByb3V0ZXI/OiBSb3V0ZXI7XG4gICAgICBzY2hlZHVsZT86IHtcbiAgICAgICAgc2VydmljZTogTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlU2VydmljZTtcbiAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICBjbGVhck9uQ2hhbmdlUm91dGU/OiBib29sZWFuO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHF1ZXVlPzoge1xuICAgICAgICBzZXJ2aWNlOiBNb25rZXlFY3hSZXF1ZXN0UXVldWVIYW5kbGluZ1NlcnZpY2U7XG4gICAgICB9O1xuICAgIH1cbiAgKSB7XG4gICAgdGhpcy5oYW5kbGVJbml0KCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUluaXQoKSB7XG4gICAgaWYgKHRoaXMudG9rZW5TdG9yYWdlKSB7XG4gICAgICB0aGlzLl9fdG9rZW5DcmVkZW50aWFscyA9IHRoaXMudG9rZW5TdG9yYWdlLmdldFRva2VuKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3RoZXJBcmdzPy5yb3V0ZXIpIHtcbiAgICAgIGNvbnN0IHsgY2xlYXJPbkNoYW5nZVJvdXRlIH0gPSB0aGlzLm90aGVyQXJncz8uc2NoZWR1bGU/Lm9wdGlvbnMgfHwge1xuICAgICAgICBjbGVhck9uQ2hhbmdlUm91dGU6IGZhbHNlXG4gICAgICB9O1xuICAgICAgdGhpcy5vdGhlckFyZ3Mucm91dGVyLmV2ZW50c1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlKDEpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX19zY2hlZHVsZSAmJiBjbGVhck9uQ2hhbmdlUm91dGUpIHtcbiAgICAgICAgICAgIHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8uc2VydmljZT8ucmVtb3ZlU2NoZWR1bGUodGhpcy5fX3NjaGVkdWxlKTtcbiAgICAgICAgICAgIHRoaXMuX19zY2hlZHVsZSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9QZW5kZW5jeVBhZ2UoYXJnOiBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCwgcm91dGVyPzogUm91dGVyKSB7XG4gICAgY29uc3QgeyBjb21wYW55VHlwZSB9ID0gdGhpcy5fX3Rva2VuQ3JlZGVudGlhbHMgfHwge1xuICAgICAgY29tcGFueVR5cGU6ICcnXG4gICAgfTtcbiAgICBsZXQgcm91dGUgPSAnL2FwcCc7XG5cbiAgICBpZiAoY29tcGFueVR5cGUpIHtcbiAgICAgIHJvdXRlID0gYCR7cm91dGV9LyR7Y29tcGFueVR5cGV9L3BhZ2VzYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcm91dGUgPSBgJHtyb3V0ZX0vdXNlci9wcm9maWxlL3BhZ2VzYDtcbiAgICB9XG5cbiAgICBpZiAoIXJvdXRlcikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1JvdXRlciBtdXN0IGJlIGRlY2xhcmVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdXRlci5uYXZpZ2F0ZShbYCR7cm91dGV9L2NvbXBhbnktcGVuZGVuY3lgLnRvTG93ZXJDYXNlKCldLCB7XG4gICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgcGVuZGVuY3lEYXRhOiBhcmdcbiAgICAgICAgfSxcbiAgICAgICAgc2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJvbGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IF9fdG9rZW5DcmVkZW50aWFscyB9ID0gdGhpcztcblxuICAgIGlmICghX190b2tlbkNyZWRlbnRpYWxzKSByZXR1cm4gJyc7XG5cbiAgICBpZiAoX190b2tlbkNyZWRlbnRpYWxzPy5wcm9ncmFtQWRtaW4gPT09ICd0cnVlJykge1xuICAgICAgcmV0dXJuICdQUk9HUkFNX0FETUlOJztcbiAgICB9XG5cbiAgICByZXR1cm4gX190b2tlbkNyZWRlbnRpYWxzPy5yb2xlIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhbGxvd2VkU2VjdXJpdHlBY2Nlc3NCeVBlbmRlbmN5KGFyZ3M6IGFueSk6IE1vbmtleUVjeENvbXBhbnlQZW5kZW5jaWVzVmFsaWRhdGVkIHtcbiAgICBpZiAoIWFyZ3MpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhhc1BlbmRlbmNpZXM6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB7IHNlcnZpY2UsIHR5cGUgfSA9IGFyZ3M7XG4gICAgcmV0dXJuIHNlcnZpY2UuaGFzUGVuZGVuY2llcyh0eXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlDb3VudHJ5KGFyZz86IE1vbmtleUVjeENvdW50cnlTZWN1cml0eSk6IGJvb2xlYW4ge1xuICAgIGlmICghYXJnKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gYXJnLmNvdW50cnkgPT09IGFyZy5lbnZDb3VudHJ5O1xuICB9XG5cbiAgcHJpdmF0ZSBhbGxvd2VkU2VjdXJpdHlBY2Nlc3MoYXJnczogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCFhcmdzKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCByb2xlcyA9IGFyZ3M/LnJvbGVzO1xuICAgIGNvbnN0IGJ5RXhjbHVzaW9uID0gYXJncz8uYnlFeGNsdXNpb247XG4gICAgY29uc3QgZm91bmQgPSByb2xlcz8uaW5kZXhPZih0aGlzLmdldFJvbGUoKSk7XG4gICAgbGV0IHJldCA9IGZhbHNlO1xuICAgIGlmIChieUV4Y2x1c2lvbikge1xuICAgICAgcmV0ID0gdHJ1ZTtcbiAgICAgIGlmIChmb3VuZCA+IC0xKSB7XG4gICAgICAgIHJldCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXQgPSBmYWxzZTtcbiAgICAgIGlmIChmb3VuZCA+IC0xKSB7XG4gICAgICAgIHJldCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghcm9sZXMgfHwgcm9sZXMubGVuZ3RoID09PSAwIHx8IHRoaXMuZ2V0Um9sZSgpID09PSAnUFJPR1JBTV9BRE1JTicpIHtcbiAgICAgIHJldCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9FcnJvclBhZ2Uoc3RhdHVzQ29kZTogbnVtYmVyLCByb3V0ZXI/OiBSb3V0ZXIpIHtcbiAgICBjb25zdCByb3V0ZXM6IGFueSA9IHtcbiAgICAgIDQwMzogJ2ZvcmJpZGRlbicsXG4gICAgICA0MDQ6ICdub3QtZm91bmQnLFxuICAgICAgNTAwOiAnc2VydmljZS1wcm9ibGVtcycsXG4gICAgICA1MDM6ICdzZXJ2aWNlLXByb2JsZW1zJ1xuICAgIH07XG5cbiAgICBpZiAoIXJvdXRlcikge1xuICAgICAgY29uc29sZS5lcnJvcignUm91dGVyIG11c3QgYmUgZGVjbGFyZWQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm91dGVyPy5uYXZpZ2F0ZShbYC9hcHAvcGFnZXMvJHtyb3V0ZXNbc3RhdHVzQ29kZV19YC50b0xvd2VyQ2FzZSgpXSwge1xuICAgICAgICBza2lwTG9jYXRpb25DaGFuZ2U6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUGFnaW5hdGlvbk9wdGlvbnMoYXJnczoge1xuICAgIHNlcnZpY2U6IE1vbmtleUVjeFBhZ2luYXRpb25TZXJ2aWNlLFxuICAgIGNhbGxiYWNrOiBGdW5jdGlvblxuICB9KSB7XG4gICAgY29uc3QgeyBzZXJ2aWNlLCBjYWxsYmFjayB9ID0gYXJncztcbiAgICBzZXJ2aWNlLnNldENhbGxiYWNrKCh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuZG9QYWdpbmF0aW9udjIuYmluZCh0aGlzLCB0eXBlLCBjYWxsYmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRQYWdlKHJlcXVlc3RQYWdlZDogTW9ua2V5RWN4UmVxdWVzdFBhZ2VkKSB7XG4gICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IHtcbiAgICAgIC4uLnRoaXMuX19yZXF1ZXN0UGFnZWQsXG4gICAgICAuLi5yZXF1ZXN0UGFnZWRcbiAgICB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbmV4dFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX19saW5rcykge1xuICAgICAgcmV0dXJuICEhdGhpcy5fX2xpbmtzPy5uZXh0O1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX19yZXF1ZXN0UGFnZWQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB7IHBhZ2UgfSA9IHRoaXMuX19yZXF1ZXN0UGFnZWQgYXMgYW55O1xuICAgIGNvbnN0IHsgbnVtYmVyLCB0b3RhbFBhZ2VzIH0gPSBwYWdlO1xuICAgIGlmIChudW1iZXIgPCB0b3RhbFBhZ2VzKSB7XG4gICAgICB0aGlzLl9fcmVxdWVzdFBhZ2VkID0ge1xuICAgICAgICAuLi50aGlzLl9fcmVxdWVzdFBhZ2VkLFxuICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgLi4ucGFnZSxcbiAgICAgICAgICBudW1iZXI6IG51bWJlciArIDFcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRFbWJlZGRlZERhdGEoZGF0YTogYW55LCBmaWVsZDogc3RyaW5nKTogYW55W10gfCBhbnkge1xuICAgIGNvbnN0IHsgX2VtYmVkZGVkIH0gPSBkYXRhO1xuICAgIHJldHVybiBfZW1iZWRkZWQgPyBfZW1iZWRkZWRbZmllbGRdIDogbnVsbDtcbiAgfVxuXG4gIGdldE5vcm1hbGl6ZWRVcmwodXJsOiBzdHJpbmcsIHNhbWVQYWdlID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgX19yZXF1ZXN0UGFnZWQsIF9fbGlua3MgfSA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBNb25rZXlFY3hSZXF1ZXN0UGFnZWRIYW5kbGluZyhcbiAgICAgIHVybCxcbiAgICAgIF9fcmVxdWVzdFBhZ2VkIHx8IHt9LFxuICAgICAgX19saW5rcyxcbiAgICAgIHNhbWVQYWdlXG4gICAgKS5nZXRSZXF1ZXN0V2l0aFBhZ2VkUGFyYW1zKCk7XG4gIH1cblxuICBjbGVhcihjbGVhckRhdGE6IGJvb2xlYW4pIHtcbiAgICBpZiAoY2xlYXJEYXRhKSB7XG4gICAgICB0aGlzLl9fZGF0YSA9IG51bGw7XG4gICAgICB0aGlzLl9fcmVxdWVzdFBhZ2VkID0gbnVsbDtcbiAgICAgIHRoaXMuX19wYXJhbXMgPSBudWxsO1xuICAgICAgdGhpcy5fX3BhZ2UgPSBudWxsO1xuICAgICAgdGhpcy5fX2xpbmtzID0gbnVsbDtcblxuICAgICAgaWYgKHRoaXMuX19zY2hlZHVsZSkge1xuICAgICAgICBjb25zdCB7IHF1ZXVlIH0gPSB0aGlzLl9fc2NoZWR1bGU7XG4gICAgICAgIGlmIChxdWV1ZSkge1xuICAgICAgICAgIHRoaXMub3RoZXJBcmdzPy5xdWV1ZT8uc2VydmljZT8ucmVtb3ZlUXVldWVJdGVtKHF1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm90aGVyQXJncz8uc2NoZWR1bGU/LnNlcnZpY2U/LnJlbW92ZVNjaGVkdWxlKHRoaXMuX19zY2hlZHVsZSk7XG4gICAgICAgIHRoaXMuX19zY2hlZHVsZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX19lcnJvciA9IG51bGw7XG4gICAgdGhpcy5fX2hhbmRsZWRFcnJvciA9IG51bGw7XG4gICAgdGhpcy5mbGFnVmFsaWRhdG9yID0gZmFsc2U7XG4gIH1cblxuICByZXNvbHZlKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCB8IG51bGwsXG4gICAgb3RoZXJBcmdzPzoge1xuICAgICAgY2FsbGJhY2tNYWluOiBGdW5jdGlvbjtcbiAgICAgIHJvdXRlcj86IFJvdXRlcjtcbiAgICAgIHNlY3VyaXR5Pzoge1xuICAgICAgICByb2xlczogc3RyaW5nW107XG4gICAgICAgIGJ5RXhjbHVzaW9uPzogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgICBjYWxsYmFja1BhZ2luYXRpb24/OiBGdW5jdGlvbjtcbiAgICAgIHRyYW5zbGF0ZU9wdGlvbnM/OiBNb25rZXlFY3hUcmFuc2xhdGVPcHRpb25zO1xuICAgICAgZmVhdHVyZT86IHtcbiAgICAgICAgc2VydmljZTogTW9ua2V5RWN4RmVhdHVyZVRvZ2dsZVNlcnZpY2U7XG4gICAgICAgIGZsYWc6IHN0cmluZztcbiAgICAgIH07XG4gICAgICBjb3VudHJ5U2VjdXJpdHk/OiBNb25rZXlFY3hDb3VudHJ5U2VjdXJpdHk7XG4gICAgICBwZW5kZW5jeT86IHtcbiAgICAgICAgc2VydmljZToge1xuICAgICAgICAgIGhhc1BlbmRlbmNpZXM6IEZ1bmN0aW9uO1xuICAgICAgICB9O1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgcGFnaW5hdGlvbk9wdGlvbnM/OiB7XG4gICAgICAgIHNlcnZpY2U6IE1vbmtleUVjeFBhZ2luYXRpb25TZXJ2aWNlLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25cbiAgICAgIH1cbiAgICB9XG4gICkge1xuICAgIGlmIChKU09OLnN0cmluZ2lmeShyb3V0ZT8ucXVlcnlQYXJhbXMpID09PSAne30nKSB7XG4gICAgICB0aGlzLl9fZGF0YSA9IG51bGw7XG4gICAgICB0aGlzLl9fcGFnZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IG51bGw7XG4gICAgdGhpcy5mbGFnVmFsaWRhdG9yID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLnRva2VuU3RvcmFnZSkge1xuICAgICAgdGhpcy5fX3Rva2VuQ3JlZGVudGlhbHMgPSB0aGlzLnRva2VuU3RvcmFnZS5nZXRUb2tlbigpO1xuICAgIH1cblxuICAgIGNvbnN0IHBlbmQgPSB0aGlzLmFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5UGVuZGVuY3kob3RoZXJBcmdzPy5wZW5kZW5jeSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmFsbG93ZWRTZWN1cml0eUFjY2VzcyhvdGhlckFyZ3M/LnNlY3VyaXR5KSAmJlxuICAgICAgdGhpcy5hbGxvd2VkU2VjdXJpdHlBY2Nlc3NCeUNvdW50cnkob3RoZXJBcmdzPy5jb3VudHJ5U2VjdXJpdHkpICYmXG4gICAgICAhcGVuZC5oYXNQZW5kZW5jaWVzXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5fX3NjaGVkdWxlKSB7XG4gICAgICAgIHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8uc2VydmljZT8ucmVtb3ZlU2NoZWR1bGUodGhpcy5fX3NjaGVkdWxlKTtcbiAgICAgICAgdGhpcy5fX3NjaGVkdWxlID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBfX3JlcXVlc3RQYWdlZCB9ID0gdGhpcztcbiAgICAgIGlmICghX19yZXF1ZXN0UGFnZWQpIHtcbiAgICAgICAgdGhpcy5zZXRQYWdlKHtcbiAgICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgICBudW1iZXI6IDAsXG4gICAgICAgICAgICBzaXplOiAxMFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvdGhlckFyZ3M/LnRyYW5zbGF0ZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBzZXJ2aWNlLCBrZXlzIH0gPSBvdGhlckFyZ3M/LnRyYW5zbGF0ZU9wdGlvbnM7XG4gICAgICAgIHRoaXMuZ2V0aTE4bihzZXJ2aWNlLCBrZXlzIHx8ICcnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG90aGVyQXJncz8uY2FsbGJhY2tQYWdpbmF0aW9uKSB7XG4gICAgICAgIHRoaXMuX19jYWxsYmFja1BhZ2luYXRpb24gPSBvdGhlckFyZ3MuY2FsbGJhY2tQYWdpbmF0aW9uO1xuICAgICAgfVxuXG4gICAgICBpZiAob3RoZXJBcmdzPy5wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgICB0aGlzLmhhbmRsZVBhZ2luYXRpb25PcHRpb25zKG90aGVyQXJncz8ucGFnaW5hdGlvbk9wdGlvbnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3RoZXJBcmdzPy5mZWF0dXJlKSB7XG4gICAgICAgIGNvbnN0IHsgZmxhZywgc2VydmljZSB9ID0gb3RoZXJBcmdzLmZlYXR1cmU7XG5cbiAgICAgICAgc2VydmljZS5vbkZsYWdzXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlV2hpbGUoKCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mbGFnVmFsaWRhdG9yO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgodmFsOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGhhc0ZsYWcgPSBzZXJ2aWNlLmdldEZsYWcoZmxhZyk7XG5cbiAgICAgICAgICAgICAgaWYgKE1vbmtleUVjeFV0aWxzLnBlcnNpc3ROdWxsRW1wdHlVbmRlZmluZWQoaGFzRmxhZykpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0ZsYWcpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGVUb0Vycm9yUGFnZSg0MDQsIG90aGVyQXJncz8ucm91dGVyKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb3RoZXJBcmdzPy5jYWxsYmFja01haW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG90aGVyQXJncz8uY2FsbGJhY2tNYWluKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwZW5kLmhhc1BlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMubmF2aWdhdGVUb1BlbmRlbmN5UGFnZShwZW5kLCBvdGhlckFyZ3M/LnJvdXRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmF2aWdhdGVUb0Vycm9yUGFnZSg0MDMsIG90aGVyQXJncz8ucm91dGVyKTtcbiAgICB9XG4gIH1cblxuICBnZXRIVFRQSGVhZGVyQXBwbGljYXRpb25QREYoKTogT2JqZWN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXG4gICAgfTtcbiAgfVxuXG4gIEBNb25rZXlFY3hDb3JlU2VydmljZSh7XG4gICAgcmVxdWVzdEluUHJvZ3Jlc3M6IHtcbiAgICAgIHNob3dQcm9ncmVzczogdHJ1ZVxuICAgIH1cbiAgfSlcbiAgZ2VuZXJpY01ldGhvZChsaW5rOiBhbnksIGRhdGE/OiBhbnksIGNhbGxiYWNrPzogRnVuY3Rpb24pIHtcbiAgICBjb25zdCB7IGhyZWYsIHR5cGUgPSAnZ2V0JyB9ID0gbGluaztcblxuICAgIHRoaXMubW9ua2V5ZWN4U2VydmljZT8uW3R5cGUudG9Mb3dlckNhc2UoKV0oYCR7aHJlZn1gLCBkYXRhKT8uc3Vic2NyaWJlKFxuICAgICAgKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKHJlc3ApO1xuICAgICAgfSxcbiAgICAgIChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICAgICAgdGhyb3dFcnJvcihlcnIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRpMThuKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsIGtleXM6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgdHJhbnNsYXRlU2VydmljZS5vbkRlZmF1bHRMYW5nQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl9faTE4biA9IHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChrZXlzKTtcbiAgICAgIHRoaXMuX19vbmkxOG5EYXRhQ2hhbmdlZCQubmV4dChudWxsKTtcbiAgICB9KTtcbiAgICB0cmFuc2xhdGVTZXJ2aWNlLmdldFN0cmVhbU9uVHJhbnNsYXRpb25DaGFuZ2Uoa2V5cykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX19pMThuID0gdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGtleXMpO1xuICAgICAgdGhpcy5fX29uaTE4bkRhdGFDaGFuZ2VkJC5uZXh0KG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgZG9QYWdpbmF0aW9uKCkge1xuICAgIGlmICghdGhpcy5fX29uTG9hZGluZ0luUHJvZ3Jlc3MkLnZhbHVlKSB7XG4gICAgICBjb25zdCBoYXNNb3JlUGFnZXMgPSB0aGlzLnNldFBhZ2Uoe1xuICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgLi4udGhpcy5fX3BhZ2VcbiAgICAgICAgfVxuICAgICAgfSkubmV4dFBhZ2UoKTtcblxuICAgICAgaWYgKGhhc01vcmVQYWdlcyAmJiB0aGlzLl9fY2FsbGJhY2tQYWdpbmF0aW9uKSB7XG4gICAgICAgIHRoaXMuX19jYWxsYmFja1BhZ2luYXRpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkb1BhZ2luYXRpb252Mih0eXBlOiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIGlmICghdGhpcy5fX29uTG9hZGluZ0luUHJvZ3Jlc3MkLnZhbHVlKSB7XG4gICAgICBjb25zdCBoYXNNb3JlUGFnZXMgPSB0aGlzLnNldFBhZ2Uoe1xuICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgLi4udGhpcy5fX3BhZ2VcbiAgICAgICAgfVxuICAgICAgfSkubmV4dFBhZ2UoKTtcblxuICAgICAgaWYgKGhhc01vcmVQYWdlcyAmJiBjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFNlYXJjaEJ5VXJsKHJvdXRlcjogUm91dGVyLCB1cmw6IHN0cmluZywgc2VhcmNoOiBhbnksIGV4dHJhcz86IGFueSkge1xuICAgIHRoaXMuX19kYXRhID0gbnVsbDtcbiAgICB0aGlzLl9fcGFnZSA9IG51bGw7XG4gICAgdGhpcy5fX29uRGF0YUNoYW5nZWQkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fX29uTG9hZGluZ0luUHJvZ3Jlc3MkLm5leHQoZmFsc2UpO1xuXG4gICAgcm91dGVyLm5hdmlnYXRlKFt1cmxdLCB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAuLi5zZWFyY2gsXG4gICAgICAgIHI6IE1vbmtleUVjeFV0aWxzLmdldFJhbmRvbVN0cmluZygzMClcbiAgICAgIH0sXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgICAgLi4uZXh0cmFzXG4gICAgfSk7XG4gIH1cblxuICBzYXZlU3RhdGUoc3RhdGU6IE1vbmtleUVjeFNhdmVkU3RhdGUpIHtcbiAgICB0aGlzLl9fc2F2ZWRTdGF0ZSA9IHtcbiAgICAgIHBhZ2U6IHRoaXMuX19wYWdlLFxuICAgICAgLi4uc3RhdGVcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
364
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LWNvbW1vbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9jb21tb25zL21vbmtleWVjeC1jb21tb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxlQUFlLEVBR2hCLE1BQU0saUJBQWlCLENBQUM7QUFHekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFpQnpELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRTFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUk3RSxNQUFNLE9BQU8sdUJBQXVCO0lBMkRsQyxZQUNTLGdCQUFtQyxFQUNuQyxZQUEyQyxFQUMzQyxTQVdOO1FBYk0scUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyxpQkFBWSxHQUFaLFlBQVksQ0FBK0I7UUFDM0MsY0FBUyxHQUFULFNBQVMsQ0FXZjtRQXhFSyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUk3QixpQkFBWSxHQUErQixJQUFJLENBQUM7UUFJaEQsWUFBTyxHQUFrQyxJQUFJLENBQUM7UUFFOUMsbUJBQWMsR0FBeUMsSUFBSSxDQUFDO1FBRTVELFdBQU0sR0FBa0MsSUFBSSxDQUFDO1FBRTdDLFlBQU8sR0FBa0MsSUFBSSxDQUFDO1FBSTlDLG1CQUFjLEdBQWlDLElBQUksQ0FBQztRQUVwRCx1QkFBa0IsR0FBeUIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckUs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QUFXLEVBQUUsTUFBWTtRQUNuRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLFdBQVcsRUFBRTtnQkFDWCxHQUFHLE1BQU07Z0JBQ1QsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO2FBQ3RDO1lBQ0QsbUJBQW1CLEVBQUUsT0FBTztZQUM1QixHQUFHLE1BQU07U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQTBCO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ2pCLEdBQUcsS0FBSztTQUNULENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFuRkM7SUFMQyxvQkFBb0IsQ0FBQztRQUNwQixpQkFBaUIsRUFBRTtZQUNqQixZQUFZLEVBQUUsSUFBSTtTQUNuQjtLQUNGLENBQUM7NERBYUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTW9ua2V5RWN4RXJyb3JSZXNwb25zZSxcbiAgTW9ua2V5RWN4SGFuZGxlZEVycm9yUmVzcG9uc2UsXG4gIE1vbmtleUVjeFJlcXVlc3RQYWdlZCxcbiAgTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlLFxuICBNb25rZXlFY3hSZXNwb25zZVBhZ2VkLFxuICBNb25rZXlFY3hSZXNwb25zZUxpbmtzLFxuICBNb25rZXlFY3hUb2tlbkNyZWRlbnRpYWxzLFxuICBNb25rZXlFY3hUcmFuc2xhdGVPcHRpb25zLFxuICBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCxcbiAgTW9ua2V5RWN4Q291bnRyeVNlY3VyaXR5LFxuICBNb25rZXlFY3hTYXZlZFN0YXRlXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTW9ua2V5RWN4VG9rZW5TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3N0b3JhZ2UvbW9ua2V5ZWN4LXRva2VuLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBNb25rZXlFY3hSZXF1ZXN0U2NoZWR1bGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2NoZWR1bGVzL21vbmtleWVjeC1yZXF1ZXN0LXNjaGVkdWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ua2V5RWN4UmVxdWVzdFF1ZXVlSGFuZGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vcmVxdWVzdC1xdWV1ZS9tb25rZXllY3gtcmVxdWVzdC1xdWV1ZS1oYW5kbGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IE1vbmtleUVjeFJlcXVlc3RQYWdlZEhhbmRsaW5nIH0gZnJvbSAnLi4vcmVxdWVzdC1wYWdlZC9tb25rZXllY3gtcmVxdWVzdC1yZXF1ZXN0LXBhZ2VkLWhhbmRsaW5nJztcbmltcG9ydCB7IE1vbmtleUVjeEZlYXR1cmVUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29uZmlnL21vbmtleWVjeC1mZWF0dXJlLXRvZ2dsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vbmtleUVjeFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgTW9ua2V5RWN4Q29yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL21vbmtleWVjeC1kZWNvcmF0b3JzJztcbmltcG9ydCB7IE1vbmtleUVjeFNlcnZpY2UgfSBmcm9tICcuLi9tb25rZXllY3gtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vbmtleUVjeFBhZ2luYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vcGFnaW5hdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBNb25rZXlFY3hDb21tb25zU2VydmljZSB7XG4gIHByaXZhdGUgZmxhZ1ZhbGlkYXRvciA9IHRydWU7XG5cbiAgX19kYXRhOiBhbnkgfCBhbnlbXTtcblxuICBfX3NhdmVkU3RhdGU6IE1vbmtleUVjeFNhdmVkU3RhdGUgfCBudWxsID0gbnVsbDtcblxuICBfX3BhcmFtczogYW55IHwgYW55W107XG5cbiAgX19lcnJvcjogTW9ua2V5RWN4RXJyb3JSZXNwb25zZSB8IG51bGwgPSBudWxsO1xuXG4gIF9faGFuZGxlZEVycm9yOiBNb25rZXlFY3hIYW5kbGVkRXJyb3JSZXNwb25zZSB8IG51bGwgPSBudWxsO1xuXG4gIF9fcGFnZTogTW9ua2V5RWN4UmVzcG9uc2VQYWdlZCB8IG51bGwgPSBudWxsO1xuXG4gIF9fbGlua3M6IE1vbmtleUVjeFJlc3BvbnNlTGlua3MgfCBudWxsID0gbnVsbDtcblxuICBfX3NlYXJjaDogYW55O1xuXG4gIF9fcmVxdWVzdFBhZ2VkOiBNb25rZXlFY3hSZXF1ZXN0UGFnZWQgfCBudWxsID0gbnVsbDtcblxuICBfX29uU2VhcmNoQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBfX29uRGF0YUNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vbkxvYWRpbmdJblByb2dyZXNzJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBfX29uVXBsb2FkSW5Qcm9ncmVzcyQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgX19vbkRhdGFEZWxldGVkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25FcnJvckNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vbkdvdmVybm1lbnRJZERhdGFDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25aaXBDb2RlRGF0YUNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vbmkxOG5EYXRhQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBfX29uRG9TZWFyY2gkOiBCZWhhdmlvclN1YmplY3Q8TW9ua2V5RWN4UmVxdWVzdFBhZ2VkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuXG4gIF9fdG9rZW5DcmVkZW50aWFsczogTW9ua2V5RWN4VG9rZW5DcmVkZW50aWFscyB8IG51bGwgPSBudWxsO1xuXG4gIF9fc2NoZWR1bGU6IE1vbmtleUVjeFJlcXVlc3RTY2hlZHVsZSB8IG51bGwgPSBudWxsO1xuXG4gIF9faTE4bjogYW55O1xuXG4gIF9fY2FsbGJhY2tQYWdpbmF0aW9uOiBGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIHJldHVybiBjb25zb2xlLmVycm9yKCdNZXRob2QgY2FsbGJhY2tQYWdpbmF0aW9uIG5lZWRzIHRvIGJlIGRlY2xhcmVkJyk7XG4gIH07XG5cbiAgX19wYWdpbmF0aW9uT3B0aW9uczoge1xuICAgIHNlcnZpY2U6IE1vbmtleUVjeFBhZ2luYXRpb25TZXJ2aWNlO1xuICAgIGNhbGxiYWNrOiBGdW5jdGlvbjtcbiAgfSB8IHVuZGVmaW5lZDtcblxuICBfX2lzQWJsZVRvRG9QYWdpbmF0aW9uID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1vbmtleWVjeFNlcnZpY2U/OiBNb25rZXlFY3hTZXJ2aWNlLFxuICAgIHB1YmxpYyB0b2tlblN0b3JhZ2U/OiBNb25rZXlFY3hUb2tlblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBvdGhlckFyZ3M/OiB7XG4gICAgICByb3V0ZXI/OiBSb3V0ZXI7XG4gICAgICBzY2hlZHVsZT86IHtcbiAgICAgICAgc2VydmljZTogTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlU2VydmljZTtcbiAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICBjbGVhck9uQ2hhbmdlUm91dGU/OiBib29sZWFuO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHF1ZXVlPzoge1xuICAgICAgICBzZXJ2aWNlOiBNb25rZXlFY3hSZXF1ZXN0UXVldWVIYW5kbGluZ1NlcnZpY2U7XG4gICAgICB9O1xuICAgIH1cbiAgKSB7XG4gICAgdGhpcy5oYW5kbGVJbml0KCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUluaXQoKSB7XG4gICAgaWYgKHRoaXMudG9rZW5TdG9yYWdlKSB7XG4gICAgICB0aGlzLl9fdG9rZW5DcmVkZW50aWFscyA9IHRoaXMudG9rZW5TdG9yYWdlLmdldFRva2VuKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3RoZXJBcmdzPy5yb3V0ZXIpIHtcbiAgICAgIGNvbnN0IHsgY2xlYXJPbkNoYW5nZVJvdXRlIH0gPSB0aGlzLm90aGVyQXJncz8uc2NoZWR1bGU/Lm9wdGlvbnMgfHwge1xuICAgICAgICBjbGVhck9uQ2hhbmdlUm91dGU6IGZhbHNlXG4gICAgICB9O1xuICAgICAgdGhpcy5vdGhlckFyZ3Mucm91dGVyLmV2ZW50c1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlKDEpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX19zY2hlZHVsZSAmJiBjbGVhck9uQ2hhbmdlUm91dGUpIHtcbiAgICAgICAgICAgIHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8uc2VydmljZT8ucmVtb3ZlU2NoZWR1bGUodGhpcy5fX3NjaGVkdWxlKTtcbiAgICAgICAgICAgIHRoaXMuX19zY2hlZHVsZSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9QZW5kZW5jeVBhZ2UoYXJnOiBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCwgcm91dGVyPzogUm91dGVyKSB7XG4gICAgY29uc3QgeyBjb21wYW55VHlwZSB9ID0gdGhpcy5fX3Rva2VuQ3JlZGVudGlhbHMgfHwge1xuICAgICAgY29tcGFueVR5cGU6ICcnXG4gICAgfTtcbiAgICBsZXQgcm91dGUgPSAnL2FwcCc7XG5cbiAgICBpZiAoY29tcGFueVR5cGUpIHtcbiAgICAgIHJvdXRlID0gYCR7cm91dGV9LyR7Y29tcGFueVR5cGV9L3BhZ2VzYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcm91dGUgPSBgJHtyb3V0ZX0vdXNlci9wcm9maWxlL3BhZ2VzYDtcbiAgICB9XG5cbiAgICBpZiAoIXJvdXRlcikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1JvdXRlciBtdXN0IGJlIGRlY2xhcmVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdXRlci5uYXZpZ2F0ZShbYCR7cm91dGV9L2NvbXBhbnktcGVuZGVuY3lgLnRvTG93ZXJDYXNlKCldLCB7XG4gICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgcGVuZGVuY3lEYXRhOiBhcmdcbiAgICAgICAgfSxcbiAgICAgICAgc2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJvbGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IF9fdG9rZW5DcmVkZW50aWFscyB9ID0gdGhpcztcblxuICAgIGlmICghX190b2tlbkNyZWRlbnRpYWxzKSByZXR1cm4gJyc7XG5cbiAgICBpZiAoX190b2tlbkNyZWRlbnRpYWxzPy5wcm9ncmFtQWRtaW4gPT09ICd0cnVlJykge1xuICAgICAgcmV0dXJuICdQUk9HUkFNX0FETUlOJztcbiAgICB9XG5cbiAgICByZXR1cm4gX190b2tlbkNyZWRlbnRpYWxzPy5yb2xlIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhbGxvd2VkU2VjdXJpdHlBY2Nlc3NCeVBlbmRlbmN5KGFyZ3M6IGFueSk6IE1vbmtleUVjeENvbXBhbnlQZW5kZW5jaWVzVmFsaWRhdGVkIHtcbiAgICBpZiAoIWFyZ3MpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhhc1BlbmRlbmNpZXM6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB7IHNlcnZpY2UsIHR5cGUgfSA9IGFyZ3M7XG4gICAgcmV0dXJuIHNlcnZpY2UuaGFzUGVuZGVuY2llcyh0eXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlDb3VudHJ5KGFyZz86IE1vbmtleUVjeENvdW50cnlTZWN1cml0eSk6IGJvb2xlYW4ge1xuICAgIGlmICghYXJnKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gYXJnLmNvdW50cnkgPT09IGFyZy5lbnZDb3VudHJ5O1xuICB9XG5cbiAgcHJpdmF0ZSBhbGxvd2VkU2VjdXJpdHlBY2Nlc3MoYXJnczogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCFhcmdzKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCByb2xlcyA9IGFyZ3M/LnJvbGVzO1xuICAgIGNvbnN0IGJ5RXhjbHVzaW9uID0gYXJncz8uYnlFeGNsdXNpb247XG4gICAgY29uc3QgZm91bmQgPSByb2xlcz8uaW5kZXhPZih0aGlzLmdldFJvbGUoKSk7XG4gICAgbGV0IHJldCA9IGZhbHNlO1xuICAgIGlmIChieUV4Y2x1c2lvbikge1xuICAgICAgcmV0ID0gdHJ1ZTtcbiAgICAgIGlmIChmb3VuZCA+IC0xKSB7XG4gICAgICAgIHJldCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXQgPSBmYWxzZTtcbiAgICAgIGlmIChmb3VuZCA+IC0xKSB7XG4gICAgICAgIHJldCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghcm9sZXMgfHwgcm9sZXMubGVuZ3RoID09PSAwIHx8IHRoaXMuZ2V0Um9sZSgpID09PSAnUFJPR1JBTV9BRE1JTicpIHtcbiAgICAgIHJldCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9FcnJvclBhZ2Uoc3RhdHVzQ29kZTogbnVtYmVyLCByb3V0ZXI/OiBSb3V0ZXIpIHtcbiAgICBjb25zdCByb3V0ZXM6IGFueSA9IHtcbiAgICAgIDQwMzogJ2ZvcmJpZGRlbicsXG4gICAgICA0MDQ6ICdub3QtZm91bmQnLFxuICAgICAgNTAwOiAnc2VydmljZS1wcm9ibGVtcycsXG4gICAgICA1MDM6ICdzZXJ2aWNlLXByb2JsZW1zJ1xuICAgIH07XG5cbiAgICBpZiAoIXJvdXRlcikge1xuICAgICAgY29uc29sZS5lcnJvcignUm91dGVyIG11c3QgYmUgZGVjbGFyZWQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm91dGVyPy5uYXZpZ2F0ZShbYC9hcHAvcGFnZXMvJHtyb3V0ZXNbc3RhdHVzQ29kZV19YC50b0xvd2VyQ2FzZSgpXSwge1xuICAgICAgICBza2lwTG9jYXRpb25DaGFuZ2U6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUGFnaW5hdGlvbk9wdGlvbnMoKSB7XG4gICAgY29uc3QgeyBfX3BhZ2luYXRpb25PcHRpb25zIH0gPSB0aGlzO1xuICAgIGlmIChfX3BhZ2luYXRpb25PcHRpb25zKSB7XG4gICAgICBjb25zdCB7IHNlcnZpY2UsIGNhbGxiYWNrIH0gPSBfX3BhZ2luYXRpb25PcHRpb25zO1xuICAgICAgc2VydmljZT8uc2V0Q2FsbGJhY2soKHR5cGU6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmRvUGFnaW5hdGlvbnYyKHR5cGUsIGNhbGxiYWNrKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFBhZ2UocmVxdWVzdFBhZ2VkOiBNb25rZXlFY3hSZXF1ZXN0UGFnZWQpIHtcbiAgICB0aGlzLl9fcmVxdWVzdFBhZ2VkID0ge1xuICAgICAgLi4udGhpcy5fX3JlcXVlc3RQYWdlZCxcbiAgICAgIC4uLnJlcXVlc3RQYWdlZFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBuZXh0UGFnZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fX2xpbmtzKSB7XG4gICAgICByZXR1cm4gISF0aGlzLl9fbGlua3M/Lm5leHQ7XG4gICAgfVxuICAgIGlmICghdGhpcy5fX3JlcXVlc3RQYWdlZCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHsgcGFnZSB9ID0gdGhpcy5fX3JlcXVlc3RQYWdlZCBhcyBhbnk7XG4gICAgY29uc3QgeyBudW1iZXIsIHRvdGFsUGFnZXMgfSA9IHBhZ2U7XG4gICAgaWYgKG51bWJlciA8IHRvdGFsUGFnZXMpIHtcbiAgICAgIHRoaXMuX19yZXF1ZXN0UGFnZWQgPSB7XG4gICAgICAgIC4uLnRoaXMuX19yZXF1ZXN0UGFnZWQsXG4gICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAuLi5wYWdlLFxuICAgICAgICAgIG51bWJlcjogbnVtYmVyICsgMVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldEVtYmVkZGVkRGF0YShkYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBhbnlbXSB8IGFueSB7XG4gICAgY29uc3QgeyBfZW1iZWRkZWQgfSA9IGRhdGE7XG4gICAgcmV0dXJuIF9lbWJlZGRlZCA/IF9lbWJlZGRlZFtmaWVsZF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0Tm9ybWFsaXplZFVybCh1cmw6IHN0cmluZywgc2FtZVBhZ2UgPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBfX3JlcXVlc3RQYWdlZCwgX19saW5rcyB9ID0gdGhpcztcbiAgICByZXR1cm4gbmV3IE1vbmtleUVjeFJlcXVlc3RQYWdlZEhhbmRsaW5nKFxuICAgICAgdXJsLFxuICAgICAgX19yZXF1ZXN0UGFnZWQgfHwge30sXG4gICAgICBfX2xpbmtzLFxuICAgICAgc2FtZVBhZ2VcbiAgICApLmdldFJlcXVlc3RXaXRoUGFnZWRQYXJhbXMoKTtcbiAgfVxuXG4gIGNsZWFyKGNsZWFyRGF0YTogYm9vbGVhbikge1xuICAgIGlmIChjbGVhckRhdGEpIHtcbiAgICAgIHRoaXMuX19kYXRhID0gbnVsbDtcbiAgICAgIHRoaXMuX19yZXF1ZXN0UGFnZWQgPSBudWxsO1xuICAgICAgdGhpcy5fX3BhcmFtcyA9IG51bGw7XG4gICAgICB0aGlzLl9fcGFnZSA9IG51bGw7XG4gICAgICB0aGlzLl9fbGlua3MgPSBudWxsO1xuXG4gICAgICBpZiAodGhpcy5fX3NjaGVkdWxlKSB7XG4gICAgICAgIGNvbnN0IHsgcXVldWUgfSA9IHRoaXMuX19zY2hlZHVsZTtcbiAgICAgICAgaWYgKHF1ZXVlKSB7XG4gICAgICAgICAgdGhpcy5vdGhlckFyZ3M/LnF1ZXVlPy5zZXJ2aWNlPy5yZW1vdmVRdWV1ZUl0ZW0ocXVldWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8uc2VydmljZT8ucmVtb3ZlU2NoZWR1bGUodGhpcy5fX3NjaGVkdWxlKTtcbiAgICAgICAgdGhpcy5fX3NjaGVkdWxlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fX2Vycm9yID0gbnVsbDtcbiAgICB0aGlzLl9faGFuZGxlZEVycm9yID0gbnVsbDtcbiAgICB0aGlzLmZsYWdWYWxpZGF0b3IgPSBmYWxzZTtcbiAgfVxuXG4gIHJlc29sdmUoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBudWxsLFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90IHwgbnVsbCxcbiAgICBvdGhlckFyZ3M/OiB7XG4gICAgICBjYWxsYmFja01haW46IEZ1bmN0aW9uO1xuICAgICAgcm91dGVyPzogUm91dGVyO1xuICAgICAgc2VjdXJpdHk/OiB7XG4gICAgICAgIHJvbGVzOiBzdHJpbmdbXTtcbiAgICAgICAgYnlFeGNsdXNpb24/OiBib29sZWFuO1xuICAgICAgfTtcbiAgICAgIGNhbGxiYWNrUGFnaW5hdGlvbj86IEZ1bmN0aW9uO1xuICAgICAgdHJhbnNsYXRlT3B0aW9ucz86IE1vbmtleUVjeFRyYW5zbGF0ZU9wdGlvbnM7XG4gICAgICBmZWF0dXJlPzoge1xuICAgICAgICBzZXJ2aWNlOiBNb25rZXlFY3hGZWF0dXJlVG9nZ2xlU2VydmljZTtcbiAgICAgICAgZmxhZzogc3RyaW5nO1xuICAgICAgfTtcbiAgICAgIGNvdW50cnlTZWN1cml0eT86IE1vbmtleUVjeENvdW50cnlTZWN1cml0eTtcbiAgICAgIHBlbmRlbmN5Pzoge1xuICAgICAgICBzZXJ2aWNlOiB7XG4gICAgICAgICAgaGFzUGVuZGVuY2llczogRnVuY3Rpb247XG4gICAgICAgIH07XG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgIH07XG4gICAgICBwYWdpbmF0aW9uT3B0aW9ucz86IHtcbiAgICAgICAgc2VydmljZTogTW9ua2V5RWN4UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblxuICAgICAgfVxuICAgIH1cbiAgKSB7XG4gICAgaWYgKEpTT04uc3RyaW5naWZ5KHJvdXRlPy5xdWVyeVBhcmFtcykgPT09ICd7fScpIHtcbiAgICAgIHRoaXMuX19kYXRhID0gbnVsbDtcbiAgICAgIHRoaXMuX19wYWdlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9fcmVxdWVzdFBhZ2VkID0gbnVsbDtcbiAgICB0aGlzLmZsYWdWYWxpZGF0b3IgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMudG9rZW5TdG9yYWdlKSB7XG4gICAgICB0aGlzLl9fdG9rZW5DcmVkZW50aWFscyA9IHRoaXMudG9rZW5TdG9yYWdlLmdldFRva2VuKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGVuZCA9IHRoaXMuYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlQZW5kZW5jeShvdGhlckFyZ3M/LnBlbmRlbmN5KTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuYWxsb3dlZFNlY3VyaXR5QWNjZXNzKG90aGVyQXJncz8uc2VjdXJpdHkpICYmXG4gICAgICB0aGlzLmFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5Q291bnRyeShvdGhlckFyZ3M/LmNvdW50cnlTZWN1cml0eSkgJiZcbiAgICAgICFwZW5kLmhhc1BlbmRlbmNpZXNcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLl9fc2NoZWR1bGUpIHtcbiAgICAgICAgdGhpcy5vdGhlckFyZ3M/LnNjaGVkdWxlPy5zZXJ2aWNlPy5yZW1vdmVTY2hlZHVsZSh0aGlzLl9fc2NoZWR1bGUpO1xuICAgICAgICB0aGlzLl9fc2NoZWR1bGUgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IF9fcmVxdWVzdFBhZ2VkIH0gPSB0aGlzO1xuICAgICAgaWYgKCFfX3JlcXVlc3RQYWdlZCkge1xuICAgICAgICB0aGlzLnNldFBhZ2Uoe1xuICAgICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAgIG51bWJlcjogMCxcbiAgICAgICAgICAgIHNpemU6IDEwXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKG90aGVyQXJncz8udHJhbnNsYXRlT3B0aW9ucykge1xuICAgICAgICBjb25zdCB7IHNlcnZpY2UsIGtleXMgfSA9IG90aGVyQXJncz8udHJhbnNsYXRlT3B0aW9ucztcbiAgICAgICAgdGhpcy5nZXRpMThuKHNlcnZpY2UsIGtleXMgfHwgJycpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3RoZXJBcmdzPy5jYWxsYmFja1BhZ2luYXRpb24pIHtcbiAgICAgICAgdGhpcy5fX2NhbGxiYWNrUGFnaW5hdGlvbiA9IG90aGVyQXJncy5jYWxsYmFja1BhZ2luYXRpb247XG4gICAgICB9XG5cbiAgICAgIGlmIChvdGhlckFyZ3M/LnBhZ2luYXRpb25PcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX19wYWdpbmF0aW9uT3B0aW9ucyA9IG90aGVyQXJncz8ucGFnaW5hdGlvbk9wdGlvbnM7XG4gICAgICAgIHRoaXMuaGFuZGxlUGFnaW5hdGlvbk9wdGlvbnMoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG90aGVyQXJncz8uZmVhdHVyZSkge1xuICAgICAgICBjb25zdCB7IGZsYWcsIHNlcnZpY2UgfSA9IG90aGVyQXJncy5mZWF0dXJlO1xuXG4gICAgICAgIHNlcnZpY2Uub25GbGFnc1xuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVdoaWxlKCgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmxhZ1ZhbGlkYXRvcjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICBjb25zdCBoYXNGbGFnID0gc2VydmljZS5nZXRGbGFnKGZsYWcpO1xuXG4gICAgICAgICAgICAgIGlmIChNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGhhc0ZsYWcpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNGbGFnKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9FcnJvclBhZ2UoNDA0LCBvdGhlckFyZ3M/LnJvdXRlcik7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG90aGVyQXJncz8uY2FsbGJhY2tNYWluKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdGhlckFyZ3M/LmNhbGxiYWNrTWFpbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocGVuZC5oYXNQZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9QZW5kZW5jeVBhZ2UocGVuZCwgb3RoZXJBcmdzPy5yb3V0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9FcnJvclBhZ2UoNDAzLCBvdGhlckFyZ3M/LnJvdXRlcik7XG4gICAgfVxuICB9XG5cbiAgZ2V0SFRUUEhlYWRlckFwcGxpY2F0aW9uUERGKCk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xuICAgIH07XG4gIH1cblxuICBATW9ua2V5RWN4Q29yZVNlcnZpY2Uoe1xuICAgIHJlcXVlc3RJblByb2dyZXNzOiB7XG4gICAgICBzaG93UHJvZ3Jlc3M6IHRydWVcbiAgICB9XG4gIH0pXG4gIGdlbmVyaWNNZXRob2QobGluazogYW55LCBkYXRhPzogYW55LCBjYWxsYmFjaz86IEZ1bmN0aW9uKSB7XG4gICAgY29uc3QgeyBocmVmLCB0eXBlID0gJ2dldCcgfSA9IGxpbms7XG5cbiAgICB0aGlzLm1vbmtleWVjeFNlcnZpY2U/Llt0eXBlLnRvTG93ZXJDYXNlKCldKGAke2hyZWZ9YCwgZGF0YSk/LnN1YnNjcmliZShcbiAgICAgIChyZXNwOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjayhyZXNwKTtcbiAgICAgIH0sXG4gICAgICAoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG4gICAgICAgIHRocm93RXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0aTE4bih0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBrZXlzOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIHRyYW5zbGF0ZVNlcnZpY2Uub25EZWZhdWx0TGFuZ0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fX2kxOG4gPSB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoa2V5cyk7XG4gICAgICB0aGlzLl9fb25pMThuRGF0YUNoYW5nZWQkLm5leHQobnVsbCk7XG4gICAgfSk7XG4gICAgdHJhbnNsYXRlU2VydmljZS5nZXRTdHJlYW1PblRyYW5zbGF0aW9uQ2hhbmdlKGtleXMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl9faTE4biA9IHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChrZXlzKTtcbiAgICAgIHRoaXMuX19vbmkxOG5EYXRhQ2hhbmdlZCQubmV4dChudWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRvUGFnaW5hdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuX19vbkxvYWRpbmdJblByb2dyZXNzJC52YWx1ZSkge1xuICAgICAgY29uc3QgaGFzTW9yZVBhZ2VzID0gdGhpcy5zZXRQYWdlKHtcbiAgICAgICAgcGFnZToge1xuICAgICAgICAgIC4uLnRoaXMuX19wYWdlXG4gICAgICAgIH1cbiAgICAgIH0pLm5leHRQYWdlKCk7XG5cbiAgICAgIGlmIChoYXNNb3JlUGFnZXMgJiYgdGhpcy5fX2NhbGxiYWNrUGFnaW5hdGlvbikge1xuICAgICAgICB0aGlzLl9fY2FsbGJhY2tQYWdpbmF0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZG9QYWdpbmF0aW9udjIodHlwZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICBpZiAoIXRoaXMuX19vbkxvYWRpbmdJblByb2dyZXNzJC52YWx1ZSkge1xuICAgICAgY29uc3QgaGFzTW9yZVBhZ2VzID0gdGhpcy5zZXRQYWdlKHtcbiAgICAgICAgcGFnZToge1xuICAgICAgICAgIC4uLnRoaXMuX19wYWdlXG4gICAgICAgIH1cbiAgICAgIH0pLm5leHRQYWdlKCk7XG5cbiAgICAgIGlmIChoYXNNb3JlUGFnZXMgJiYgY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRMaW5rcyhsaW5rczogYW55KSB7XG4gICAgdGhpcy5fX2lzQWJsZVRvRG9QYWdpbmF0aW9uID0ge1xuICAgICAgZmlyc3Q6ICEhbGlua3M/LmZpcnN0LFxuICAgICAgbmV4dDogISFsaW5rcz8ubmV4dFxuICAgIH07XG4gICAgdGhpcy5fX2xpbmtzID0gbGlua3M7XG4gIH1cblxuICBzZXRTZWFyY2hCeVVybChyb3V0ZXI6IFJvdXRlciwgdXJsOiBzdHJpbmcsIHNlYXJjaDogYW55LCBleHRyYXM/OiBhbnkpIHtcbiAgICB0aGlzLl9fZGF0YSA9IG51bGw7XG4gICAgdGhpcy5fX3BhZ2UgPSBudWxsO1xuICAgIHRoaXMuX19vbkRhdGFDaGFuZ2VkJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX19vbkxvYWRpbmdJblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcblxuICAgIHJvdXRlci5uYXZpZ2F0ZShbdXJsXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgLi4uc2VhcmNoLFxuICAgICAgICByOiBNb25rZXlFY3hVdGlscy5nZXRSYW5kb21TdHJpbmcoMzApXG4gICAgICB9LFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcbiAgICAgIC4uLmV4dHJhc1xuICAgIH0pO1xuICB9XG5cbiAgc2F2ZVN0YXRlKHN0YXRlOiBNb25rZXlFY3hTYXZlZFN0YXRlKSB7XG4gICAgdGhpcy5fX3NhdmVkU3RhdGUgPSB7XG4gICAgICBwYWdlOiB0aGlzLl9fcGFnZSxcbiAgICAgIC4uLnN0YXRlXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -11,6 +11,7 @@ export * from './config/monkeyecx-security-console-config.service';
|
|
|
11
11
|
export * from './config/monkeyecx-service-worker-config.service';
|
|
12
12
|
export * from './error';
|
|
13
13
|
export * from './logged';
|
|
14
|
+
export * from './pagination';
|
|
14
15
|
export * from './monkeyecx-service.service';
|
|
15
16
|
export * from './monkeyecx-handling.service';
|
|
16
17
|
export * from './request-download';
|
|
@@ -19,4 +20,4 @@ export * from './request-queue';
|
|
|
19
20
|
export * from './routes';
|
|
20
21
|
export * from './schedules';
|
|
21
22
|
export * from './storage';
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dGgnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tb25zL21vbmtleWVjeC1jb21tb25zLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcvbW9ua2V5ZWN4LWNvbmZpZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcvbW9ua2V5ZWN4LWNvbmZpZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnL21vbmtleWVjeC1lcnJvci1jb25maWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy9tb25rZXllY3gtZmVhdHVyZS10b2dnbGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy9tb25rZXllY3gtaTE4bi1jb25maWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy9tb25rZXllY3gtbG9ncy1jb25maWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy9tb25rZXllY3gtbWFpbnRlbmFuY2UtY29uZmlnLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcvbW9ua2V5ZWN4LXNlY3VyaXR5LWNvbnNvbGUtY29uZmlnLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcvbW9ua2V5ZWN4LXNlcnZpY2Utd29ya2VyLWNvbmZpZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi9sb2dnZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdpbmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbW9ua2V5ZWN4LXNlcnZpY2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1oYW5kbGluZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVxdWVzdC1kb3dubG9hZCc7XG5leHBvcnQgKiBmcm9tICcuL3JlcXVlc3QtcGFnZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXF1ZXN0LXF1ZXVlJztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc2NoZWR1bGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmFnZSc7XG4iXX0=
|
|
@@ -2163,6 +2163,7 @@ class MonkeyEcxCommonsService {
|
|
|
2163
2163
|
// eslint-disable-next-line no-console
|
|
2164
2164
|
return console.error('Method callbackPagination needs to be declared');
|
|
2165
2165
|
};
|
|
2166
|
+
this.__isAbleToDoPagination = {};
|
|
2166
2167
|
this.handleInit();
|
|
2167
2168
|
}
|
|
2168
2169
|
handleInit() {
|
|
@@ -2274,11 +2275,14 @@ class MonkeyEcxCommonsService {
|
|
|
2274
2275
|
});
|
|
2275
2276
|
}
|
|
2276
2277
|
}
|
|
2277
|
-
handlePaginationOptions(
|
|
2278
|
-
const {
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2278
|
+
handlePaginationOptions() {
|
|
2279
|
+
const { __paginationOptions } = this;
|
|
2280
|
+
if (__paginationOptions) {
|
|
2281
|
+
const { service, callback } = __paginationOptions;
|
|
2282
|
+
service === null || service === void 0 ? void 0 : service.setCallback((type) => {
|
|
2283
|
+
this.doPaginationv2(type, callback);
|
|
2284
|
+
});
|
|
2285
|
+
}
|
|
2282
2286
|
}
|
|
2283
2287
|
setPage(requestPaged) {
|
|
2284
2288
|
this.__requestPaged = Object.assign(Object.assign({}, this.__requestPaged), requestPaged);
|
|
@@ -2364,7 +2368,8 @@ class MonkeyEcxCommonsService {
|
|
|
2364
2368
|
this.__callbackPagination = otherArgs.callbackPagination;
|
|
2365
2369
|
}
|
|
2366
2370
|
if (otherArgs === null || otherArgs === void 0 ? void 0 : otherArgs.paginationOptions) {
|
|
2367
|
-
this.
|
|
2371
|
+
this.__paginationOptions = otherArgs === null || otherArgs === void 0 ? void 0 : otherArgs.paginationOptions;
|
|
2372
|
+
this.handlePaginationOptions();
|
|
2368
2373
|
}
|
|
2369
2374
|
if (otherArgs === null || otherArgs === void 0 ? void 0 : otherArgs.feature) {
|
|
2370
2375
|
const { flag, service } = otherArgs.feature;
|
|
@@ -2444,6 +2449,13 @@ class MonkeyEcxCommonsService {
|
|
|
2444
2449
|
}
|
|
2445
2450
|
}
|
|
2446
2451
|
}
|
|
2452
|
+
setLinks(links) {
|
|
2453
|
+
this.__isAbleToDoPagination = {
|
|
2454
|
+
first: !!(links === null || links === void 0 ? void 0 : links.first),
|
|
2455
|
+
next: !!(links === null || links === void 0 ? void 0 : links.next)
|
|
2456
|
+
};
|
|
2457
|
+
this.__links = links;
|
|
2458
|
+
}
|
|
2447
2459
|
setSearchByUrl(router, url, search, extras) {
|
|
2448
2460
|
this.__data = null;
|
|
2449
2461
|
this.__page = null;
|
|
@@ -4266,6 +4278,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
|
4266
4278
|
}]
|
|
4267
4279
|
}], ctorParameters: function () { return []; } });
|
|
4268
4280
|
|
|
4281
|
+
class MonkeyEcxPaginationService {
|
|
4282
|
+
constructor() {
|
|
4283
|
+
// not to do
|
|
4284
|
+
}
|
|
4285
|
+
setCallback(callback) {
|
|
4286
|
+
this.callback = callback;
|
|
4287
|
+
}
|
|
4288
|
+
execute(type) {
|
|
4289
|
+
const { callback } = this;
|
|
4290
|
+
if (callback)
|
|
4291
|
+
callback(type);
|
|
4292
|
+
}
|
|
4293
|
+
}
|
|
4294
|
+
MonkeyEcxPaginationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxPaginationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4295
|
+
MonkeyEcxPaginationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxPaginationService, providedIn: 'root' });
|
|
4296
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxPaginationService, decorators: [{
|
|
4297
|
+
type: Injectable,
|
|
4298
|
+
args: [{
|
|
4299
|
+
providedIn: 'root'
|
|
4300
|
+
}]
|
|
4301
|
+
}], ctorParameters: function () { return []; } });
|
|
4302
|
+
|
|
4269
4303
|
class MonkeyEcxRequestDownloadHandlingService {
|
|
4270
4304
|
constructor() {
|
|
4271
4305
|
this.download = [];
|
|
@@ -4743,5 +4777,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
|
4743
4777
|
* Generated bundle index. Do not edit.
|
|
4744
4778
|
*/
|
|
4745
4779
|
|
|
4746
|
-
export { ClosedToMaintenanceComponent, ClosedToMaintenanceModule, decoratorsUtils as DecoratorsUtils, Link, MonkeyEcxAuthGuard, MonkeyEcxAuthGuardCompany, MonkeyEcxAuthGuardLogin, MonkeyEcxAuthenticationService, MonkeyEcxCommonsService, MonkeyEcxConfigModule, MonkeyEcxConfigService, MonkeyEcxCookieStorageService, MonkeyEcxCoreCharts, MonkeyEcxCoreClearDecorators, MonkeyEcxCoreLog, MonkeyEcxCoreService, MonkeyEcxCoreServiceConstructor, MonkeyEcxCoreServicePaged, MonkeyEcxCoreServiceQueue, MonkeyEcxDirectivesModule, MonkeyEcxDiscoveryParamsService, MonkeyEcxDisplayFirstNamePipe, MonkeyEcxDragDropDirective, MonkeyEcxErrorConfigService, MonkeyEcxErrorHandlingModule, MonkeyEcxErrorHandlingService, MonkeyEcxFeatureDirective, MonkeyEcxFeatureToggleService, MonkeyEcxFormatAddressPipe, MonkeyEcxFormatBeaufityJSONPipe, MonkeyEcxFormatCurrency, MonkeyEcxFormatCurrencyPipe, MonkeyEcxFormatDateGroupPipe, MonkeyEcxFormatDateTimelapsePipe, MonkeyEcxFormatDateUnixTimelapsePipe, MonkeyEcxFormatDocumentPipe, MonkeyEcxFormatDocumentTypePipe, MonkeyEcxFormatNumberPipe, MonkeyEcxFormatPhonePipe, MonkeyEcxFormatSizePipe, MonkeyEcxFormatTaxPipe, MonkeyEcxFormatUpper, MonkeyEcxFormatValue, MonkeyEcxFormatZipCodePipe, MonkeyEcxHandlingService, MonkeyEcxHttpConfigErrorInterceptor, MonkeyEcxHttpConfigHeaderInterceptor, MonkeyEcxHttpConfigInterceptorModule, MonkeyEcxHttpConfigLoadingInProgressInterceptor, MonkeyEcxHttpConfigQueueInterceptor, MonkeyEcxHttpErrorHandlingService, MonkeyEcxLoggedHandlingService, MonkeyEcxLogsConfigService, MonkeyEcxMaintenanceConfigService, MonkeyEcxModel, MonkeyEcxOnlyAlphaNumericDirective, MonkeyEcxOnlyNumbersDirective, MonkeyEcxOthersErrorsHandlingService, MonkeyEcxPipesModule, MonkeyEcxPopoverDirective, MonkeyEcxPopoverOptionsDirective, MonkeyEcxProgressBarComponent, MonkeyEcxProgressBarModule, MonkeyEcxProgressBarService, MonkeyEcxRequestDownloadHandlingService, MonkeyEcxRequestDownloadedHandlingService, MonkeyEcxRequestPagedHandling, MonkeyEcxRequestQueueHandlingService, MonkeyEcxRequestQueueModalHandlingService, MonkeyEcxRequestScheduleService, MonkeyEcxSecurityConsoleConfigService, MonkeyEcxSecurityDirective, MonkeyEcxService, MonkeyEcxServiceDownload, MonkeyEcxServiceUpload, MonkeyEcxServiceWorkerConfigService, MonkeyEcxSpecificationSearch, MonkeyEcxTextTruncatePipe, MonkeyEcxTokenStorageService, MonkeyEcxTooltipDirective, MonkeyEcxTruncateQtdPipe, MonkeyEcxUtils, MonkeyEcxi18nConfigService, MonkeyFrontCoreModule, OpSearch, POPOVER_OPTIONS, statics as Statics, validateUtils as ValidateUtils, Validators, VersionChangedComponent, VersionChangedModule, comboValidator, dateRangeValidator, dateStartEndValidator, dateValidator, documentValidator, emailValidator, passwordConfirmValidator, registerValidator, trueValidator, urlValidator, valueGreaterThanZero, zipCodeValidator };
|
|
4780
|
+
export { ClosedToMaintenanceComponent, ClosedToMaintenanceModule, decoratorsUtils as DecoratorsUtils, Link, MonkeyEcxAuthGuard, MonkeyEcxAuthGuardCompany, MonkeyEcxAuthGuardLogin, MonkeyEcxAuthenticationService, MonkeyEcxCommonsService, MonkeyEcxConfigModule, MonkeyEcxConfigService, MonkeyEcxCookieStorageService, MonkeyEcxCoreCharts, MonkeyEcxCoreClearDecorators, MonkeyEcxCoreLog, MonkeyEcxCoreService, MonkeyEcxCoreServiceConstructor, MonkeyEcxCoreServicePaged, MonkeyEcxCoreServiceQueue, MonkeyEcxDirectivesModule, MonkeyEcxDiscoveryParamsService, MonkeyEcxDisplayFirstNamePipe, MonkeyEcxDragDropDirective, MonkeyEcxErrorConfigService, MonkeyEcxErrorHandlingModule, MonkeyEcxErrorHandlingService, MonkeyEcxFeatureDirective, MonkeyEcxFeatureToggleService, MonkeyEcxFormatAddressPipe, MonkeyEcxFormatBeaufityJSONPipe, MonkeyEcxFormatCurrency, MonkeyEcxFormatCurrencyPipe, MonkeyEcxFormatDateGroupPipe, MonkeyEcxFormatDateTimelapsePipe, MonkeyEcxFormatDateUnixTimelapsePipe, MonkeyEcxFormatDocumentPipe, MonkeyEcxFormatDocumentTypePipe, MonkeyEcxFormatNumberPipe, MonkeyEcxFormatPhonePipe, MonkeyEcxFormatSizePipe, MonkeyEcxFormatTaxPipe, MonkeyEcxFormatUpper, MonkeyEcxFormatValue, MonkeyEcxFormatZipCodePipe, MonkeyEcxHandlingService, MonkeyEcxHttpConfigErrorInterceptor, MonkeyEcxHttpConfigHeaderInterceptor, MonkeyEcxHttpConfigInterceptorModule, MonkeyEcxHttpConfigLoadingInProgressInterceptor, MonkeyEcxHttpConfigQueueInterceptor, MonkeyEcxHttpErrorHandlingService, MonkeyEcxLoggedHandlingService, MonkeyEcxLogsConfigService, MonkeyEcxMaintenanceConfigService, MonkeyEcxModel, MonkeyEcxOnlyAlphaNumericDirective, MonkeyEcxOnlyNumbersDirective, MonkeyEcxOthersErrorsHandlingService, MonkeyEcxPaginationService, MonkeyEcxPipesModule, MonkeyEcxPopoverDirective, MonkeyEcxPopoverOptionsDirective, MonkeyEcxProgressBarComponent, MonkeyEcxProgressBarModule, MonkeyEcxProgressBarService, MonkeyEcxRequestDownloadHandlingService, MonkeyEcxRequestDownloadedHandlingService, MonkeyEcxRequestPagedHandling, MonkeyEcxRequestQueueHandlingService, MonkeyEcxRequestQueueModalHandlingService, MonkeyEcxRequestScheduleService, MonkeyEcxSecurityConsoleConfigService, MonkeyEcxSecurityDirective, MonkeyEcxService, MonkeyEcxServiceDownload, MonkeyEcxServiceUpload, MonkeyEcxServiceWorkerConfigService, MonkeyEcxSpecificationSearch, MonkeyEcxTextTruncatePipe, MonkeyEcxTokenStorageService, MonkeyEcxTooltipDirective, MonkeyEcxTruncateQtdPipe, MonkeyEcxUtils, MonkeyEcxi18nConfigService, MonkeyFrontCoreModule, OpSearch, POPOVER_OPTIONS, statics as Statics, validateUtils as ValidateUtils, Validators, VersionChangedComponent, VersionChangedModule, comboValidator, dateRangeValidator, dateStartEndValidator, dateValidator, documentValidator, emailValidator, passwordConfirmValidator, registerValidator, trueValidator, urlValidator, valueGreaterThanZero, zipCodeValidator };
|
|
4747
4781
|
//# sourceMappingURL=monkey-front-core.mjs.map
|