@dsivd/prestations-ng 17.2.0-beta.1 → 17.2.0-beta.2
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/dsivd-prestations-ng-17.2.0-beta.2.tgz +0 -0
- package/esm2022/foehn-page/foehn-page-expiration-timer/current-session-expiration.mjs +3 -0
- package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration-interceptor.mjs +17 -8
- package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration.service.mjs +6 -6
- package/esm2022/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs +14 -4
- package/esm2022/sdk-appinfo/application-info.mjs +1 -1
- package/fesm2022/dsivd-prestations-ng.mjs +36 -15
- package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
- package/foehn-page/foehn-page-expiration-timer/current-session-expiration.d.ts +5 -0
- package/foehn-page/foehn-page-expiration-timer/demande-expiration.service.d.ts +3 -3
- package/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.d.ts +1 -0
- package/package.json +1 -1
- package/sdk-appinfo/application-info.d.ts +2 -1
- package/dsivd-prestations-ng-17.2.0-beta.1.tgz +0 -0
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class CurrentSessionExpiration {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC1zZXNzaW9uLWV4cGlyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tcGFnZS9mb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIvY3VycmVudC1zZXNzaW9uLWV4cGlyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHdCQUF3QjtDQUdwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5cbmV4cG9ydCBjbGFzcyBDdXJyZW50U2Vzc2lvbkV4cGlyYXRpb24ge1xuICAgIGV4cGlyYXRpb246IGRheWpzLkRheWpzO1xuICAgIHR5cGU6ICdJQU0nIHwgJ1NFU1NJT04tVE9LRU4nO1xufVxuIl19
|
|
@@ -2,6 +2,7 @@ import { HTTP_INTERCEPTORS, HttpEventType, HttpResponse } from '@angular/common/
|
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
3
|
import dayjs from 'dayjs';
|
|
4
4
|
import { tap } from 'rxjs';
|
|
5
|
+
import { CurrentSessionExpiration } from './current-session-expiration';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "./demande-expiration.service";
|
|
7
8
|
const EXPIRATION_HEADER = 'Demande-Expiration';
|
|
@@ -17,7 +18,8 @@ export class DemandeExpirationInterceptor {
|
|
|
17
18
|
if (httpEvent instanceof HttpResponse) {
|
|
18
19
|
const responseBody = httpEvent.body;
|
|
19
20
|
if (httpEvent.headers.has(EXPIRATION_HEADER) &&
|
|
20
|
-
!!responseBody)
|
|
21
|
+
!!responseBody // TODO LHE : handle any response (with or without body)
|
|
22
|
+
) {
|
|
21
23
|
this.manageDemandeExpirationHeader(httpEvent.headers.get(EXPIRATION_HEADER), responseBody);
|
|
22
24
|
}
|
|
23
25
|
}
|
|
@@ -25,13 +27,20 @@ export class DemandeExpirationInterceptor {
|
|
|
25
27
|
}
|
|
26
28
|
manageDemandeExpirationHeader(expirationByDemande, formPostResponse) {
|
|
27
29
|
const expirationByDemandeMap = this.getExpirationByDemandeMap(expirationByDemande);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
const expiration = new CurrentSessionExpiration();
|
|
31
|
+
const reference = formPostResponse.meta?.reference || '';
|
|
32
|
+
const dateTimeForReference = expirationByDemandeMap.get(reference);
|
|
33
|
+
const dateTimeForIam = expirationByDemandeMap.get('IAM');
|
|
34
|
+
if (dateTimeForReference) {
|
|
35
|
+
expiration.type = 'SESSION-TOKEN';
|
|
36
|
+
expiration.expiration = dayjs(dateTimeForReference);
|
|
31
37
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
else if (dateTimeForIam) {
|
|
39
|
+
expiration.type = 'IAM';
|
|
40
|
+
expiration.expiration = dayjs(dateTimeForIam);
|
|
41
|
+
}
|
|
42
|
+
if (expiration.expiration?.isValid()) {
|
|
43
|
+
this.demandeExpirationService.setDemandeExpirationDateTime(expiration);
|
|
35
44
|
}
|
|
36
45
|
}
|
|
37
46
|
getExpirationByDemandeMap(expirationByDemande) {
|
|
@@ -59,4 +68,4 @@ export const DEMANDE_EXPIRATION_INTERCEPTOR_PROVIDER = [
|
|
|
59
68
|
multi: true
|
|
60
69
|
}
|
|
61
70
|
];
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtYW5kZS1leHBpcmF0aW9uLWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXBhZ2UvZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyL2RlbWFuZGUtZXhwaXJhdGlvbi1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBRWpCLGFBQWEsRUFJYixZQUFZLEVBQ2YsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQW9CLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBR3hFLE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQUM7QUFLL0MsTUFBTSxPQUFPLDRCQUE0QjtJQUNyQyxZQUFvQix3QkFBa0Q7UUFBbEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtJQUFHLENBQUM7SUFFMUUsU0FBUyxDQUNMLE9BQTZCLEVBQzdCLElBQWlCO1FBRWpCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxDQUFDLFNBQTZCLEVBQUUsRUFBRTtZQUNsQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN4QyxPQUFPO1lBQ1gsQ0FBQztZQUNELElBQUksU0FBUyxZQUFZLFlBQVksRUFBRSxDQUFDO2dCQUNwQyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNwQyxJQUNJLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO29CQUN4QyxDQUFDLENBQUMsWUFBWSxDQUFDLHdEQUF3RDtrQkFDekUsQ0FBQztvQkFDQyxJQUFJLENBQUMsNkJBQTZCLENBQzlCLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEVBQ3hDLFlBQXVDLENBQzFDLENBQUM7Z0JBQ04sQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVPLDZCQUE2QixDQUNqQyxtQkFBMkIsRUFDM0IsZ0JBQXlDO1FBRXpDLE1BQU0sc0JBQXNCLEdBQ3hCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXhELE1BQU0sVUFBVSxHQUNaLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUVuQyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUV6RCxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRSxNQUFNLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekQsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDO1lBQ2xDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEQsQ0FBQzthQUFNLElBQUksY0FBYyxFQUFFLENBQUM7WUFDeEIsVUFBVSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDeEIsVUFBVSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyw0QkFBNEIsQ0FDdEQsVUFBVSxDQUNiLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVPLHlCQUF5QixDQUM3QixtQkFBMkI7UUFFM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUM7UUFDdEMsTUFBTSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkUsMkJBQTJCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hDLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7K0dBcEVRLDRCQUE0QjttSEFBNUIsNEJBQTRCLGNBRnpCLE1BQU07OzRGQUVULDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7O0FBd0VELE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUF1QjtJQUN2RTtRQUNJLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxLQUFLLEVBQUUsSUFBSTtLQUNkO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgSHR0cEV2ZW50LFxuICAgIEh0dHBFdmVudFR5cGUsXG4gICAgSHR0cEhhbmRsZXIsXG4gICAgSHR0cEludGVyY2VwdG9yLFxuICAgIEh0dHBSZXF1ZXN0LFxuICAgIEh0dHBSZXNwb25zZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBFeGlzdGluZ1Byb3ZpZGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZvcm1Qb3N0UmVzcG9uc2UgfSBmcm9tICcuLi8uLi9mb3JtLXBvc3QtcmVzcG9uc2UnO1xuaW1wb3J0IHsgQ3VycmVudFNlc3Npb25FeHBpcmF0aW9uIH0gZnJvbSAnLi9jdXJyZW50LXNlc3Npb24tZXhwaXJhdGlvbic7XG5pbXBvcnQgeyBEZW1hbmRlRXhwaXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL2RlbWFuZGUtZXhwaXJhdGlvbi5zZXJ2aWNlJztcblxuY29uc3QgRVhQSVJBVElPTl9IRUFERVIgPSAnRGVtYW5kZS1FeHBpcmF0aW9uJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEZW1hbmRlRXhwaXJhdGlvbkludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlbWFuZGVFeHBpcmF0aW9uU2VydmljZTogRGVtYW5kZUV4cGlyYXRpb25TZXJ2aWNlKSB7fVxuXG4gICAgaW50ZXJjZXB0KFxuICAgICAgICByZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPixcbiAgICAgICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4ge1xuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoaHR0cEV2ZW50OiBIdHRwRXZlbnQ8dW5rbm93bj4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaHR0cEV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuU2VudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChodHRwRXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VCb2R5ID0gaHR0cEV2ZW50LmJvZHk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBFdmVudC5oZWFkZXJzLmhhcyhFWFBJUkFUSU9OX0hFQURFUikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEhcmVzcG9uc2VCb2R5IC8vIFRPRE8gTEhFIDogaGFuZGxlIGFueSByZXNwb25zZSAod2l0aCBvciB3aXRob3V0IGJvZHkpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2VEZW1hbmRlRXhwaXJhdGlvbkhlYWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwRXZlbnQuaGVhZGVycy5nZXQoRVhQSVJBVElPTl9IRUFERVIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlQm9keSBhcyBGb3JtUG9zdFJlc3BvbnNlPG5ldmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VEZW1hbmRlRXhwaXJhdGlvbkhlYWRlcihcbiAgICAgICAgZXhwaXJhdGlvbkJ5RGVtYW5kZTogc3RyaW5nLFxuICAgICAgICBmb3JtUG9zdFJlc3BvbnNlOiBGb3JtUG9zdFJlc3BvbnNlPG5ldmVyPlxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBleHBpcmF0aW9uQnlEZW1hbmRlTWFwID1cbiAgICAgICAgICAgIHRoaXMuZ2V0RXhwaXJhdGlvbkJ5RGVtYW5kZU1hcChleHBpcmF0aW9uQnlEZW1hbmRlKTtcblxuICAgICAgICBjb25zdCBleHBpcmF0aW9uOiBDdXJyZW50U2Vzc2lvbkV4cGlyYXRpb24gPVxuICAgICAgICAgICAgbmV3IEN1cnJlbnRTZXNzaW9uRXhwaXJhdGlvbigpO1xuXG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IGZvcm1Qb3N0UmVzcG9uc2UubWV0YT8ucmVmZXJlbmNlIHx8ICcnO1xuXG4gICAgICAgIGNvbnN0IGRhdGVUaW1lRm9yUmVmZXJlbmNlID0gZXhwaXJhdGlvbkJ5RGVtYW5kZU1hcC5nZXQocmVmZXJlbmNlKTtcbiAgICAgICAgY29uc3QgZGF0ZVRpbWVGb3JJYW0gPSBleHBpcmF0aW9uQnlEZW1hbmRlTWFwLmdldCgnSUFNJyk7XG5cbiAgICAgICAgaWYgKGRhdGVUaW1lRm9yUmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBleHBpcmF0aW9uLnR5cGUgPSAnU0VTU0lPTi1UT0tFTic7XG4gICAgICAgICAgICBleHBpcmF0aW9uLmV4cGlyYXRpb24gPSBkYXlqcyhkYXRlVGltZUZvclJlZmVyZW5jZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVGb3JJYW0pIHtcbiAgICAgICAgICAgIGV4cGlyYXRpb24udHlwZSA9ICdJQU0nO1xuICAgICAgICAgICAgZXhwaXJhdGlvbi5leHBpcmF0aW9uID0gZGF5anMoZGF0ZVRpbWVGb3JJYW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV4cGlyYXRpb24uZXhwaXJhdGlvbj8uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmRlbWFuZGVFeHBpcmF0aW9uU2VydmljZS5zZXREZW1hbmRlRXhwaXJhdGlvbkRhdGVUaW1lKFxuICAgICAgICAgICAgICAgIGV4cGlyYXRpb25cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEV4cGlyYXRpb25CeURlbWFuZGVNYXAoXG4gICAgICAgIGV4cGlyYXRpb25CeURlbWFuZGU6IHN0cmluZ1xuICAgICk6IE1hcDxzdHJpbmcsIERhdGU+IHtcbiAgICAgICAgY29uc3QgbXlNYXAgPSBuZXcgTWFwPHN0cmluZywgRGF0ZT4oKTtcbiAgICAgICAgY29uc3QgZXhwaXJhdGlvbkJ5RGVtYW5kZXNBc0FycmF5ID0gZXhwaXJhdGlvbkJ5RGVtYW5kZS5zcGxpdCgnOycpO1xuICAgICAgICBleHBpcmF0aW9uQnlEZW1hbmRlc0FzQXJyYXkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZUFzQXJyYXkgPSB2YWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgbXlNYXAuc2V0KHZhbHVlQXNBcnJheVswXSwgbmV3IERhdGUodmFsdWVBc0FycmF5WzFdKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbXlNYXA7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgREVNQU5ERV9FWFBJUkFUSU9OX0lOVEVSQ0VQVE9SX1BST1ZJREVSOiBFeGlzdGluZ1Byb3ZpZGVyW10gPSBbXG4gICAge1xuICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgICAgdXNlRXhpc3Rpbmc6IERlbWFuZGVFeHBpcmF0aW9uSW50ZXJjZXB0b3IsXG4gICAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuXTtcbiJdfQ==
|
|
@@ -14,18 +14,18 @@ export class DemandeExpirationService {
|
|
|
14
14
|
return combineLatest([
|
|
15
15
|
this.getDemandeExpirationDateTime(),
|
|
16
16
|
this.intervalSubject.asObservable()
|
|
17
|
-
]).pipe(map(([value]) => !dayjs().isBefore(value)), tap(visible => {
|
|
17
|
+
]).pipe(map(([value]) => !dayjs().isBefore(value?.expiration)), tap(visible => {
|
|
18
18
|
if (visible) {
|
|
19
19
|
this.clearPulling();
|
|
20
20
|
}
|
|
21
21
|
}), shareReplay(1));
|
|
22
22
|
}
|
|
23
|
-
setDemandeExpirationDateTime(
|
|
24
|
-
this._demandeExpirationDateTimeSubject.next(
|
|
23
|
+
setDemandeExpirationDateTime(expiration) {
|
|
24
|
+
this._demandeExpirationDateTimeSubject.next(expiration);
|
|
25
25
|
}
|
|
26
26
|
getDemandeExpirationDateTime() {
|
|
27
|
-
return this._demandeExpirationDateTimeSubject.asObservable().pipe(filter(value => !!value && value.isValid()), tap(value => {
|
|
28
|
-
if (dayjs().isBefore(value)) {
|
|
27
|
+
return this._demandeExpirationDateTimeSubject.asObservable().pipe(filter(value => !!value && value.expiration?.isValid()), tap(value => {
|
|
28
|
+
if (dayjs().isBefore(value.expiration)) {
|
|
29
29
|
this.startPulling();
|
|
30
30
|
}
|
|
31
31
|
}), shareReplay(1));
|
|
@@ -50,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
50
50
|
providedIn: 'root'
|
|
51
51
|
}]
|
|
52
52
|
}] });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtYW5kZS1leHBpcmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tcGFnZS9mb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIvZGVtYW5kZS1leHBpcmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLHdCQUF3QjtJQUhyQztRQU9xQiw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFFeEMsc0NBQWlDLEdBQ3JDLElBQUksZUFBZSxDQUEyQixJQUFJLENBQUMsQ0FBQztRQUNoRCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFPLElBQUksQ0FBQyxDQUFDO0tBaUQ3RDtJQS9DRyxtQ0FBbUM7UUFDL0IsT0FBTyxhQUFhLENBQUM7WUFDakIsSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFO1NBQ3RDLENBQUMsQ0FBQyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQ3RELEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hCLENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUM7SUFDTixDQUFDO0lBRUQsNEJBQTRCLENBQUMsVUFBb0M7UUFDN0QsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsNEJBQTRCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGlDQUFpQyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDN0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQ3ZELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLElBQUksS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQztJQUNOLENBQUM7SUFFTyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FDM0MsR0FBRyxFQUFFO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxDQUFDLEVBQ0QsSUFBSSxDQUFDLHVCQUF1QixFQUM1QixHQUFHLEVBQUU7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7K0dBeERRLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnJCLE1BQU07OzRGQUVULHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ3VycmVudFNlc3Npb25FeHBpcmF0aW9uIH0gZnJvbSAnLi9jdXJyZW50LXNlc3Npb24tZXhwaXJhdGlvbic7XG5pbXBvcnQgeyBJbnRlcnZhbEhlbHBlciB9IGZyb20gJy4vaW50ZXJ2YWwuaGVscGVyJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEZW1hbmRlRXhwaXJhdGlvblNlcnZpY2Uge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBpbnRlcnZhbDogYW55O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBQVUxMSU5HX0lOX01JTExJU0VDT05EUyA9IDEwMDA7XG5cbiAgICBwcml2YXRlIF9kZW1hbmRlRXhwaXJhdGlvbkRhdGVUaW1lU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEN1cnJlbnRTZXNzaW9uRXhwaXJhdGlvbj4gPVxuICAgICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEN1cnJlbnRTZXNzaW9uRXhwaXJhdGlvbj4obnVsbCk7XG4gICAgcHJpdmF0ZSBpbnRlcnZhbFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KG51bGwpO1xuXG4gICAgc2hvdWxkRGlzcGxheUV4cGlyYXRpb25UaW1lck1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuZ2V0RGVtYW5kZUV4cGlyYXRpb25EYXRlVGltZSgpLFxuICAgICAgICAgICAgdGhpcy5pbnRlcnZhbFN1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3ZhbHVlXSkgPT4gIWRheWpzKCkuaXNCZWZvcmUodmFsdWU/LmV4cGlyYXRpb24pKSxcbiAgICAgICAgICAgIHRhcCh2aXNpYmxlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyUHVsbGluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzZXREZW1hbmRlRXhwaXJhdGlvbkRhdGVUaW1lKGV4cGlyYXRpb246IEN1cnJlbnRTZXNzaW9uRXhwaXJhdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZW1hbmRlRXhwaXJhdGlvbkRhdGVUaW1lU3ViamVjdC5uZXh0KGV4cGlyYXRpb24pO1xuICAgIH1cblxuICAgIGdldERlbWFuZGVFeHBpcmF0aW9uRGF0ZVRpbWUoKTogT2JzZXJ2YWJsZTxDdXJyZW50U2Vzc2lvbkV4cGlyYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbWFuZGVFeHBpcmF0aW9uRGF0ZVRpbWVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodmFsdWUgPT4gISF2YWx1ZSAmJiB2YWx1ZS5leHBpcmF0aW9uPy5pc1ZhbGlkKCkpLFxuICAgICAgICAgICAgdGFwKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGF5anMoKS5pc0JlZm9yZSh2YWx1ZS5leHBpcmF0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0UHVsbGluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0UHVsbGluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhclB1bGxpbmcoKTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IEludGVydmFsSGVscGVyLmFjY3VyYXRlSW50ZXJ2YWwoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcnZhbFN1YmplY3QubmV4dCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuUFVMTElOR19JTl9NSUxMSVNFQ09ORFMsXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFB1bGxpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyUHVsbGluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnRlcnZhbD8uY2xlYXIoKTtcbiAgICB9XG59XG4iXX0=
|
package/esm2022/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, withLatestFrom } from 'rxjs';
|
|
3
|
-
import { debounceTime,
|
|
3
|
+
import { debounceTime, map, shareReplay, tap } from 'rxjs/operators';
|
|
4
4
|
import { DateHelper } from '../../sdk-date/date.helper';
|
|
5
5
|
import { IntervalHelper } from './interval.helper';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -31,11 +31,12 @@ export class FoehnPageExpirationTimerComponent {
|
|
|
31
31
|
.pipe(tap(countDownTimeInSeconds => this.sessionHasExpired.next(countDownTimeInSeconds === 0)), map(countDownTimeInSeconds => this.formatTime(countDownTimeInSeconds)), shareReplay(1));
|
|
32
32
|
this.isVisible = this.demandeExpirationService
|
|
33
33
|
.getDemandeExpirationDateTime()
|
|
34
|
-
.pipe(
|
|
34
|
+
.pipe(withLatestFrom(this.applicationInfoService.data), tap(([expiration, appInfo]) => {
|
|
35
35
|
this.clearTimer();
|
|
36
|
+
const messageDelayInMinutes = this.getMessageDelayInMinutes(appInfo, expiration.type);
|
|
36
37
|
// Real session expiration to keep track of time
|
|
37
38
|
this.sessionExpirationDateTimeInMilliseconds =
|
|
38
|
-
|
|
39
|
+
expiration.expiration.valueOf() +
|
|
39
40
|
messageDelayInMinutes * 60 * 1000;
|
|
40
41
|
this.countDownTimeInSeconds.next(this.getAccurateCountDownTimeInSeconds());
|
|
41
42
|
this.startTimer();
|
|
@@ -155,6 +156,15 @@ export class FoehnPageExpirationTimerComponent {
|
|
|
155
156
|
return;
|
|
156
157
|
}
|
|
157
158
|
}
|
|
159
|
+
getMessageDelayInMinutes(info, type) {
|
|
160
|
+
switch (type) {
|
|
161
|
+
case 'IAM':
|
|
162
|
+
return info.configuration.session.iamMessageDelayInMinutes;
|
|
163
|
+
case 'SESSION-TOKEN':
|
|
164
|
+
return info.configuration.session
|
|
165
|
+
.sessionTokenMessageDelayInMinutes;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
158
168
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnPageExpirationTimerComponent, deps: [{ token: i1.ApplicationInfoService }, { token: i2.SdkDictionaryService }, { token: i3.DemandeExpirationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
159
169
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FoehnPageExpirationTimerComponent, selector: "foehn-page-expiration-timer", ngImport: i0, template: "<div\n *ngIf=\"isVisible | async\"\n id=\"foehn-page-expiration-timer\"\n class=\"sticky-top alert text-center my-0\"\n [class.alert-warning]=\"(sessionExpired | async) === false\"\n [class.alert-danger]=\"(sessionExpired | async) === true\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n>\n <div\n *ngIf=\"(sessionExpired | async) === false\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.count-down-message'\n | fromDictionary\n : { countDownValue: countDownTimeToDisplay | async }\n \"\n ></div>\n <div\n *ngIf=\"(sessionExpired | async) === true\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.expired-message' | fromDictionary\n \"\n ></div>\n</div>\n\n<p class=\"visually-hidden\" aria-live=\"assertive\" aria-atomic=\"true\">\n {{ srAnnouncements | async }}\n</p>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
160
170
|
}
|
|
@@ -162,4 +172,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
162
172
|
type: Component,
|
|
163
173
|
args: [{ selector: 'foehn-page-expiration-timer', template: "<div\n *ngIf=\"isVisible | async\"\n id=\"foehn-page-expiration-timer\"\n class=\"sticky-top alert text-center my-0\"\n [class.alert-warning]=\"(sessionExpired | async) === false\"\n [class.alert-danger]=\"(sessionExpired | async) === true\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n>\n <div\n *ngIf=\"(sessionExpired | async) === false\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.count-down-message'\n | fromDictionary\n : { countDownValue: countDownTimeToDisplay | async }\n \"\n ></div>\n <div\n *ngIf=\"(sessionExpired | async) === true\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.expired-message' | fromDictionary\n \"\n ></div>\n</div>\n\n<p class=\"visually-hidden\" aria-live=\"assertive\" aria-atomic=\"true\">\n {{ srAnnouncements | async }}\n</p>\n" }]
|
|
164
174
|
}], ctorParameters: () => [{ type: i1.ApplicationInfoService }, { type: i2.SdkDictionaryService }, { type: i3.DemandeExpirationService }] });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci9mb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXBhZ2UvZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyL2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQWMsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQU1uRCxNQUFNLE9BQU8saUNBQWlDO0lBcUIxQyxZQUNZLHNCQUE4QyxFQUM5QyxpQkFBdUMsRUFDdkMsd0JBQWtEO1FBRmxELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBbEJ0RCwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUMzRCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4RCwy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Q1YsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FDN0Isd0RBQXdELEVBQ3hELEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUMxQixDQUNKLENBQUM7WUFDRixPQUFPO1FBQ1gsQ0FBQztRQUNELG9DQUFvQztRQUNwQyxJQUNJLGFBQWEsSUFBSSxnQkFBZ0I7WUFDakMsYUFBYSxHQUFHLGdCQUFnQixLQUFLLENBQUMsRUFDeEMsQ0FBQztZQUNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FDNUMsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLENBQ1YsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FDN0Isd0RBQXdELEVBQ3hELEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUMxQixDQUNKLENBQUM7WUFDRixPQUFPO1FBQ1gsQ0FBQztJQUNMLENBQUM7K0dBcFJRLGlDQUFpQzttR0FBakMsaUNBQWlDLG1FQ2hCOUMsNDRCQTRCQTs7NEZEWmEsaUNBQWlDO2tCQUo3QyxTQUFTOytCQUNJLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mbyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi9zZGstZGF0ZS9kYXRlLmhlbHBlcic7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVtYW5kZUV4cGlyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9kZW1hbmRlLWV4cGlyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJbnRlcnZhbEhlbHBlciB9IGZyb20gJy4vaW50ZXJ2YWwuaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuUGFnZUV4cGlyYXRpb25UaW1lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgaXNWaXNpYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNvdW50RG93blRpbWVUb0Rpc3BsYXk6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBzZXNzaW9uRXhwaXJlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBzckFubm91bmNlbWVudHM6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAgIHByaXZhdGUgY291bnREb3duVGltZUluU2Vjb25kcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihudWxsKTtcbiAgICBwcml2YXRlIHNlc3Npb25IYXNFeHBpcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBzckFubm91bmNlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBpbnRlcnZhbDogYW55O1xuICAgIHByaXZhdGUgZGF0ZUhlbHBlciA9IG5ldyBEYXRlSGVscGVyKCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IFBVTExJTkdfSU5fTUlMTElTRUNPTkRTID0gMTAwMDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyOiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBTUl9BTk5PVU5DRU1FTlRfQ0xFQVJfVElNRU9VVF9JTlRFUlZBTF9NUyA9IDIwMDA7XG5cbiAgICBwcml2YXRlIHNlc3Npb25FeHBpcmF0aW9uRGF0ZVRpbWVJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25JbmZvU2VydmljZTogQXBwbGljYXRpb25JbmZvU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGVtYW5kZUV4cGlyYXRpb25TZXJ2aWNlOiBEZW1hbmRlRXhwaXJhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uRXhwaXJlZCA9IHRoaXMuc2Vzc2lvbkhhc0V4cGlyZWRcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuXG4gICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzID0gdGhpcy5zckFubm91bmNlbWVudHNTdWJqZWN0XG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgwKSk7IC8vIGRlYm91bmNlVGltZSB0byBcImF2b2lkIGV4cHJlc3Npb24gaGFzIGNoYW5nZXMgYmVmb3JlLi4uXCJcblxuICAgICAgICB0aGlzLmNvdW50RG93blRpbWVUb0Rpc3BsYXkgPSB0aGlzLmNvdW50RG93blRpbWVJblNlY29uZHNcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKGNvdW50RG93blRpbWVJblNlY29uZHMgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uSGFzRXhwaXJlZC5uZXh0KGNvdW50RG93blRpbWVJblNlY29uZHMgPT09IDApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtYXAoY291bnREb3duVGltZUluU2Vjb25kcyA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdFRpbWUoY291bnREb3duVGltZUluU2Vjb25kcylcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdGhpcy5kZW1hbmRlRXhwaXJhdGlvblNlcnZpY2VcbiAgICAgICAgICAgIC5nZXREZW1hbmRlRXhwaXJhdGlvbkRhdGVUaW1lKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoZGF0ZVRpbWU6IGRheWpzLkRheWpzKSA9PiBkYXRlVGltZS52YWx1ZU9mKCkpLFxuICAgICAgICAgICAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGxpY2F0aW9uSW5mb1NlcnZpY2UuZGF0YS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvOiBBcHBsaWNhdGlvbkluZm8pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uY29uZmlndXJhdGlvbi5zZXNzaW9uLm1lc3NhZ2VEZWxheUluTWludXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihtZXNzYWdlRGVsYXlJbk1pbnV0ZXMgPT4gISFtZXNzYWdlRGVsYXlJbk1pbnV0ZXMpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRhcChcbiAgICAgICAgICAgICAgICAgICAgKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbWFuZGVFeHBpcmF0aW9uRGF0ZVRpbWVJbk1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VEZWxheUluTWludXRlc1xuICAgICAgICAgICAgICAgICAgICBdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlYWwgc2Vzc2lvbiBleHBpcmF0aW9uIHRvIGtlZXAgdHJhY2sgb2YgdGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uRXhwaXJhdGlvbkRhdGVUaW1lSW5NaWxsaXNlY29uZHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbWFuZGVFeHBpcmF0aW9uRGF0ZVRpbWVJbk1pbGxpc2Vjb25kcyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZURlbGF5SW5NaW51dGVzICogNjAgKiAxMDAwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvdW50RG93blRpbWVJblNlY29uZHMubmV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFjY3VyYXRlQ291bnREb3duVGltZUluU2Vjb25kcygpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBY2N1cmF0ZUNvdW50RG93blRpbWVJblNlY29uZHMoKTogbnVtYmVyIHtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHJlYWwgdGltZSBsZWZ0LiBVc2UgTWF0aC5mbG9vciB0byBiZSBzdXJlIHRpbWVyIGRvZXMgbm90IHN0b3AgYWZ0ZXIgc2Vzc2lvbiBleHBpcmF0aW9uIHJlYWwgdGltZS5cbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAodGhpcy5zZXNzaW9uRXhwaXJhdGlvbkRhdGVUaW1lSW5NaWxsaXNlY29uZHMgLSBEYXRlLm5vdygpKSAvIDEwMDBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0VGltZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBJbnRlcnZhbEhlbHBlci5hY2N1cmF0ZUludGVydmFsKFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB0aW1lID0gdGhpcy5jb3VudERvd25UaW1lSW5TZWNvbmRzLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRpbWUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGltZSAtPSAxO1xuICAgICAgICAgICAgICAgIHRoaXMuY291bnREb3duVGltZUluU2Vjb25kcy5uZXh0KHRpbWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuUFVMTElOR19JTl9NSUxMSVNFQ09ORFMsXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVXNlIE1hdGgubWF4IHRvIGVuc3VyZSB3ZSBhcmUgbm90IGFmdGVyIHNlc3Npb25UaW1lb3V0XG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudERvd25UaW1lSW5TZWNvbmRzLm5leHQoXG4gICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KDAsIHRoaXMuZ2V0QWNjdXJhdGVDb3VudERvd25UaW1lSW5TZWNvbmRzKCkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyVGltZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWw/LmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRUaW1lKHRpbWVJblNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcih0aW1lSW5TZWNvbmRzIC8gKDYwICogNjApKTtcblxuICAgICAgICBjb25zdCBkaXZpc29yX2Zvcl9taW51dGVzID0gdGltZUluU2Vjb25kcyAlICg2MCAqIDYwKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoZGl2aXNvcl9mb3JfbWludXRlcyAvIDYwKTtcblxuICAgICAgICBjb25zdCBkaXZpc29yX2Zvcl9zZWNvbmRzID0gZGl2aXNvcl9mb3JfbWludXRlcyAlIDYwO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5jZWlsKGRpdmlzb3JfZm9yX3NlY29uZHMpO1xuXG4gICAgICAgIHRoaXMubWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KFxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyxcbiAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgbWludXRlcyxcbiAgICAgICAgICAgIHNlY29uZHNcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBsZWZ0UGFkSG91cnMgPSB0aGlzLmRhdGVIZWxwZXIubGVmdFBhZChob3Vycy50b1N0cmluZygpKTtcbiAgICAgICAgY29uc3QgbGVmdFBhZE1pbnV0ZXMgPSB0aGlzLmRhdGVIZWxwZXIubGVmdFBhZChtaW51dGVzLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGNvbnN0IGxlZnRQYWRTZWNvbmRzID0gdGhpcy5kYXRlSGVscGVyLmxlZnRQYWQoc2Vjb25kcy50b1N0cmluZygpKTtcbiAgICAgICAgcmV0dXJuIGAke2xlZnRQYWRIb3Vyc306JHtsZWZ0UGFkTWludXRlc306JHtsZWZ0UGFkU2Vjb25kc31gO1xuICAgIH1cblxuICAgIHByaXZhdGUgYW5ub3VuY2VTck1lc3NhZ2UobXNnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyKTtcbiAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHNTdWJqZWN0Lm5leHQobXNnKTtcblxuICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHNTdWJqZWN0Lm5leHQoJycpO1xuICAgICAgICB9LCB0aGlzLlNSX0FOTk9VTkNFTUVOVF9DTEVBUl9USU1FT1VUX0lOVEVSVkFMX01TKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJlYWRhYmxlVGltZXJGb3JTY3JlZW5SZWFkZXIoXG4gICAgICAgIGhvdXJzOiBudW1iZXIsXG4gICAgICAgIG1pbnV0ZXM6IG51bWJlcixcbiAgICAgICAgc2Vjb25kczogbnVtYmVyXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFob3VycyAmJiAhbWludXRlcyAmJiAhc2Vjb25kcykge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIWhvdXJzICYmICFtaW51dGVzICYmICFzZWNvbmRzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7aG91cnN9IGhldXJlc2A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhbWludXRlcyAmJiAhaG91cnMgJiYgIXNlY29uZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHttaW51dGVzfSBtaW51dGVzYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFzZWNvbmRzICYmICFtaW51dGVzICYmICFob3Vycykge1xuICAgICAgICAgICAgcmV0dXJuIGAke3NlY29uZHN9IHNlY29uZGVzYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFob3VycyAmJiAhIW1pbnV0ZXMgJiYgISFzZWNvbmRzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7aG91cnN9IGhldXJlcyAke21pbnV0ZXN9IG1pbnV0ZXMgZXQgJHtzZWNvbmRzfSBzZWNvbmRlc2A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhaG91cnMgJiYgISFtaW51dGVzICYmICFzZWNvbmRzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7aG91cnN9IGhldXJlcyBldCAke21pbnV0ZXN9IG1pbnV0ZXNgO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIWhvdXJzICYmICEhc2Vjb25kcyAmJiAhbWludXRlcykge1xuICAgICAgICAgICAgcmV0dXJuIGAke2hvdXJzfSBoZXVyZXMgZXQgJHtzZWNvbmRzfSBzZWNvbmRlc2A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhbWludXRlcyAmJiAhIXNlY29uZHMgJiYgIWhvdXJzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7bWludXRlc30gbWludXRlcyBldCAke3NlY29uZHN9IHNlY29uZGVzYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KFxuICAgICAgICB0aW1lSW5TZWNvbmRzOiBudW1iZXIsXG4gICAgICAgIGhvdXJzOiBudW1iZXIsXG4gICAgICAgIG1pbnV0ZXM6IG51bWJlcixcbiAgICAgICAgc2Vjb25kczogbnVtYmVyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IF8xX2hvdXJJblNlY29uZHMgPSA2MCAqIDYwO1xuICAgICAgICBjb25zdCBfNV9taW51dGVzSW5TZWNvbmRzID0gNSAqIDYwO1xuICAgICAgICBjb25zdCBfMTBfbWludXRlc0luU2Vjb25kcyA9IDEwICogNjA7XG4gICAgICAgIGNvbnN0IF8xX21pbnV0ZUluU2Vjb25kcyA9IDYwO1xuICAgICAgICBjb25zdCBfMl9taW51dGVJblNlY29uZHMgPSAyICogNjA7XG5cbiAgICAgICAgLy8gV2hlbiBmaW5pc2hlZCwgZGlzcGxheSBleHBpcmVkIG1lc3NhZ2VcbiAgICAgICAgaWYgKHRpbWVJblNlY29uZHMgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzU3ViamVjdC5uZXh0KFxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5leHBpcmVkLW1lc3NhZ2Uuc3Itb25seSdcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHNlY29uZCBmb3IgdGhlIGxhc3QgMTVzXG4gICAgICAgIGlmICh0aW1lSW5TZWNvbmRzIDw9IDE1KSB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50c1N1YmplY3QubmV4dCh0aW1lSW5TZWNvbmRzLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IDMwcyB3aGVuIGxlc3MgdGhhbiAyIG1pbnV0ZXNcbiAgICAgICAgaWYgKHRpbWVJblNlY29uZHMgPD0gXzJfbWludXRlSW5TZWNvbmRzICYmIHRpbWVJblNlY29uZHMgJSAzMCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5nZXRSZWFkYWJsZVRpbWVyRm9yU2NyZWVuUmVhZGVyKFxuICAgICAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VTck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvdW50LWRvd24tbWVzc2FnZS5zci1vbmx5JyxcbiAgICAgICAgICAgICAgICAgICAgeyBjb3VudERvd25WYWx1ZTogbXNnIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IG1pbnV0ZSBmb3IgdGhlIGxhc3QgNSBtaW51dGVzXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRpbWVJblNlY29uZHMgPD0gXzVfbWludXRlc0luU2Vjb25kcyAmJlxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyAlIF8xX21pbnV0ZUluU2Vjb25kcyA9PT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IHRoaXMuZ2V0UmVhZGFibGVUaW1lckZvclNjcmVlblJlYWRlcihcbiAgICAgICAgICAgICAgICBob3VycyxcbiAgICAgICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgICAgIHNlY29uZHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmFubm91bmNlU3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5jb3VudC1kb3duLW1lc3NhZ2Uuc3Itb25seScsXG4gICAgICAgICAgICAgICAgICAgIHsgY291bnREb3duVmFsdWU6IG1zZyB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBFdmVyeSAxMCBtaW51dGVzIHdoZW4gbGVzcyB0aGFuIGFuIGhvdXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyA8IF8xX2hvdXJJblNlY29uZHMgJiZcbiAgICAgICAgICAgIHRpbWVJblNlY29uZHMgJSBfMTBfbWludXRlc0luU2Vjb25kcyA9PT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IHRoaXMuZ2V0UmVhZGFibGVUaW1lckZvclNjcmVlblJlYWRlcihcbiAgICAgICAgICAgICAgICBob3VycyxcbiAgICAgICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgICAgIHNlY29uZHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmFubm91bmNlU3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5jb3VudC1kb3duLW1lc3NhZ2Uuc3Itb25seScsXG4gICAgICAgICAgICAgICAgICAgIHsgY291bnREb3duVmFsdWU6IG1zZyB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBFdmVyeSBob3VyIHdoZW4gbW9yZSB0aGFuIGFuIGhvdXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyA+PSBfMV9ob3VySW5TZWNvbmRzICYmXG4gICAgICAgICAgICB0aW1lSW5TZWNvbmRzICUgXzFfaG91ckluU2Vjb25kcyA9PT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IHRoaXMuZ2V0UmVhZGFibGVUaW1lckZvclNjcmVlblJlYWRlcihcbiAgICAgICAgICAgICAgICBob3VycyxcbiAgICAgICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgICAgIHNlY29uZHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmFubm91bmNlU3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5jb3VudC1kb3duLW1lc3NhZ2Uuc3Itb25seScsXG4gICAgICAgICAgICAgICAgICAgIHsgY291bnREb3duVmFsdWU6IG1zZyB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAqbmdJZj1cImlzVmlzaWJsZSB8IGFzeW5jXCJcbiAgICBpZD1cImZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lclwiXG4gICAgY2xhc3M9XCJzdGlja3ktdG9wIGFsZXJ0IHRleHQtY2VudGVyIG15LTBcIlxuICAgIFtjbGFzcy5hbGVydC13YXJuaW5nXT1cIihzZXNzaW9uRXhwaXJlZCB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgIFtjbGFzcy5hbGVydC1kYW5nZXJdPVwiKHNlc3Npb25FeHBpcmVkIHwgYXN5bmMpID09PSB0cnVlXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIoc2Vzc2lvbkV4cGlyZWQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICdmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuY291bnQtZG93bi1tZXNzYWdlJ1xuICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgOiB7IGNvdW50RG93blZhbHVlOiBjb3VudERvd25UaW1lVG9EaXNwbGF5IHwgYXN5bmMgfVxuICAgICAgICBcIlxuICAgID48L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiKHNlc3Npb25FeHBpcmVkIHwgYXN5bmMpID09PSB0cnVlXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICdmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuZXhwaXJlZC1tZXNzYWdlJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgIFwiXG4gICAgPjwvZGl2PlxuPC9kaXY+XG5cbjxwIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCI+XG4gICAge3sgc3JBbm5vdW5jZW1lbnRzIHwgYXN5bmMgfX1cbjwvcD5cbiJdfQ==
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci9mb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXBhZ2UvZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyL2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQWMsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBTW5ELE1BQU0sT0FBTyxpQ0FBaUM7SUFxQjFDLFlBQ1ksc0JBQThDLEVBQzlDLGlCQUF1QyxFQUN2Qyx3QkFBa0Q7UUFGbEQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFsQnRELDJCQUFzQixHQUFHLElBQUksZUFBZSxDQUFTLElBQUksQ0FBQyxDQUFDO1FBQzNELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3hELDJCQUFzQixHQUFH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Q0FBQztRQUNELG9DQUFvQztRQUNwQyxJQUNJLGFBQWEsSUFBSSxnQkFBZ0I7WUFDakMsYUFBYSxHQUFHLGdCQUFnQixLQUFLLENBQUMsRUFDeEMsQ0FBQztZQUNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FDNUMsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLENBQ1YsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FDN0Isd0RBQXdELEVBQ3hELEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUMxQixDQUNKLENBQUM7WUFDRixPQUFPO1FBQ1gsQ0FBQztJQUNMLENBQUM7SUFFTyx3QkFBd0IsQ0FDNUIsSUFBcUIsRUFDckIsSUFBNkI7UUFFN0IsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNYLEtBQUssS0FBSztnQkFDTixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDO1lBQy9ELEtBQUssZUFBZTtnQkFDaEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU87cUJBQzVCLGlDQUFpQyxDQUFDO1FBQy9DLENBQUM7SUFDTCxDQUFDOytHQXpSUSxpQ0FBaUM7bUdBQWpDLGlDQUFpQyxtRUNmOUMsNDRCQTRCQTs7NEZEYmEsaUNBQWlDO2tCQUo3QyxTQUFTOytCQUNJLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mbyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi9zZGstZGF0ZS9kYXRlLmhlbHBlcic7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVtYW5kZUV4cGlyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9kZW1hbmRlLWV4cGlyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJbnRlcnZhbEhlbHBlciB9IGZyb20gJy4vaW50ZXJ2YWwuaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuUGFnZUV4cGlyYXRpb25UaW1lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgaXNWaXNpYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNvdW50RG93blRpbWVUb0Rpc3BsYXk6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBzZXNzaW9uRXhwaXJlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBzckFubm91bmNlbWVudHM6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAgIHByaXZhdGUgY291bnREb3duVGltZUluU2Vjb25kcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihudWxsKTtcbiAgICBwcml2YXRlIHNlc3Npb25IYXNFeHBpcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBzckFubm91bmNlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBpbnRlcnZhbDogYW55O1xuICAgIHByaXZhdGUgZGF0ZUhlbHBlciA9IG5ldyBEYXRlSGVscGVyKCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IFBVTExJTkdfSU5fTUlMTElTRUNPTkRTID0gMTAwMDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyOiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBTUl9BTk5PVU5DRU1FTlRfQ0xFQVJfVElNRU9VVF9JTlRFUlZBTF9NUyA9IDIwMDA7XG5cbiAgICBwcml2YXRlIHNlc3Npb25FeHBpcmF0aW9uRGF0ZVRpbWVJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25JbmZvU2VydmljZTogQXBwbGljYXRpb25JbmZvU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGVtYW5kZUV4cGlyYXRpb25TZXJ2aWNlOiBEZW1hbmRlRXhwaXJhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uRXhwaXJlZCA9IHRoaXMuc2Vzc2lvbkhhc0V4cGlyZWRcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuXG4gICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzID0gdGhpcy5zckFubm91bmNlbWVudHNTdWJqZWN0XG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgwKSk7IC8vIGRlYm91bmNlVGltZSB0byBcImF2b2lkIGV4cHJlc3Npb24gaGFzIGNoYW5nZXMgYmVmb3JlLi4uXCJcblxuICAgICAgICB0aGlzLmNvdW50RG93blRpbWVUb0Rpc3BsYXkgPSB0aGlzLmNvdW50RG93blRpbWVJblNlY29uZHNcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKGNvdW50RG93blRpbWVJblNlY29uZHMgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uSGFzRXhwaXJlZC5uZXh0KGNvdW50RG93blRpbWVJblNlY29uZHMgPT09IDApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtYXAoY291bnREb3duVGltZUluU2Vjb25kcyA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdFRpbWUoY291bnREb3duVGltZUluU2Vjb25kcylcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdGhpcy5kZW1hbmRlRXhwaXJhdGlvblNlcnZpY2VcbiAgICAgICAgICAgIC5nZXREZW1hbmRlRXhwaXJhdGlvbkRhdGVUaW1lKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5kYXRhKSxcbiAgICAgICAgICAgICAgICB0YXAoKFtleHBpcmF0aW9uLCBhcHBJbmZvXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlRGVsYXlJbk1pbnV0ZXMgPSB0aGlzLmdldE1lc3NhZ2VEZWxheUluTWludXRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcEluZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmF0aW9uLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBSZWFsIHNlc3Npb24gZXhwaXJhdGlvbiB0byBrZWVwIHRyYWNrIG9mIHRpbWVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uRXhwaXJhdGlvbkRhdGVUaW1lSW5NaWxsaXNlY29uZHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJhdGlvbi5leHBpcmF0aW9uLnZhbHVlT2YoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlRGVsYXlJbk1pbnV0ZXMgKiA2MCAqIDEwMDA7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudERvd25UaW1lSW5TZWNvbmRzLm5leHQoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFjY3VyYXRlQ291bnREb3duVGltZUluU2Vjb25kcygpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lcigpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBY2N1cmF0ZUNvdW50RG93blRpbWVJblNlY29uZHMoKTogbnVtYmVyIHtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHJlYWwgdGltZSBsZWZ0LiBVc2UgTWF0aC5mbG9vciB0byBiZSBzdXJlIHRpbWVyIGRvZXMgbm90IHN0b3AgYWZ0ZXIgc2Vzc2lvbiBleHBpcmF0aW9uIHJlYWwgdGltZS5cbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAodGhpcy5zZXNzaW9uRXhwaXJhdGlvbkRhdGVUaW1lSW5NaWxsaXNlY29uZHMgLSBEYXRlLm5vdygpKSAvIDEwMDBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0VGltZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBJbnRlcnZhbEhlbHBlci5hY2N1cmF0ZUludGVydmFsKFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB0aW1lID0gdGhpcy5jb3VudERvd25UaW1lSW5TZWNvbmRzLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRpbWUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGltZSAtPSAxO1xuICAgICAgICAgICAgICAgIHRoaXMuY291bnREb3duVGltZUluU2Vjb25kcy5uZXh0KHRpbWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuUFVMTElOR19JTl9NSUxMSVNFQ09ORFMsXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVXNlIE1hdGgubWF4IHRvIGVuc3VyZSB3ZSBhcmUgbm90IGFmdGVyIHNlc3Npb25UaW1lb3V0XG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudERvd25UaW1lSW5TZWNvbmRzLm5leHQoXG4gICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KDAsIHRoaXMuZ2V0QWNjdXJhdGVDb3VudERvd25UaW1lSW5TZWNvbmRzKCkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyVGltZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWw/LmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRUaW1lKHRpbWVJblNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcih0aW1lSW5TZWNvbmRzIC8gKDYwICogNjApKTtcblxuICAgICAgICBjb25zdCBkaXZpc29yX2Zvcl9taW51dGVzID0gdGltZUluU2Vjb25kcyAlICg2MCAqIDYwKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoZGl2aXNvcl9mb3JfbWludXRlcyAvIDYwKTtcblxuICAgICAgICBjb25zdCBkaXZpc29yX2Zvcl9zZWNvbmRzID0gZGl2aXNvcl9mb3JfbWludXRlcyAlIDYwO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5jZWlsKGRpdmlzb3JfZm9yX3NlY29uZHMpO1xuXG4gICAgICAgIHRoaXMubWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KFxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyxcbiAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgbWludXRlcyxcbiAgICAgICAgICAgIHNlY29uZHNcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBsZWZ0UGFkSG91cnMgPSB0aGlzLmRhdGVIZWxwZXIubGVmdFBhZChob3Vycy50b1N0cmluZygpKTtcbiAgICAgICAgY29uc3QgbGVmdFBhZE1pbnV0ZXMgPSB0aGlzLmRhdGVIZWxwZXIubGVmdFBhZChtaW51dGVzLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGNvbnN0IGxlZnRQYWRTZWNvbmRzID0gdGhpcy5kYXRlSGVscGVyLmxlZnRQYWQoc2Vjb25kcy50b1N0cmluZygpKTtcbiAgICAgICAgcmV0dXJuIGAke2xlZnRQYWRIb3Vyc306JHtsZWZ0UGFkTWludXRlc306JHtsZWZ0UGFkU2Vjb25kc31gO1xuICAgIH1cblxuICAgIHByaXZhdGUgYW5ub3VuY2VTck1lc3NhZ2UobXNnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyKTtcbiAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHNTdWJqZWN0Lm5leHQobXNnKTtcblxuICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHNTdWJqZWN0Lm5leHQoJycpO1xuICAgICAgICB9LCB0aGlzLlNSX0FOTk9VTkNFTUVOVF9DTEVBUl9USU1FT1VUX0lOVEVSVkFMX01TKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJlYWRhYmxlVGltZXJGb3JTY3JlZW5SZWFkZXIoXG4gICAgICAgIGhvdXJzOiBudW1iZXIsXG4gICAgICAgIG1pbnV0ZXM6IG51bWJlcixcbiAgICAgICAgc2Vjb25kczogbnVtYmVyXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFob3VycyAmJiAhbWludXRlcyAmJiAhc2Vjb25kcykge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIWhvdXJzICYmICFtaW51dGVzICYmICFzZWNvbmRzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7aG91cnN9IGhldXJlc2A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhbWludXRlcyAmJiAhaG91cnMgJiYgIXNlY29uZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHttaW51dGVzfSBtaW51dGVzYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFzZWNvbmRzICYmICFtaW51dGVzICYmICFob3Vycykge1xuICAgICAgICAgICAgcmV0dXJuIGAke3NlY29uZHN9IHNlY29uZGVzYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFob3VycyAmJiAhIW1pbnV0ZXMgJiYgISFzZWNvbmRzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7aG91cnN9IGhldXJlcyAke21pbnV0ZXN9IG1pbnV0ZXMgZXQgJHtzZWNvbmRzfSBzZWNvbmRlc2A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhaG91cnMgJiYgISFtaW51dGVzICYmICFzZWNvbmRzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7aG91cnN9IGhldXJlcyBldCAke21pbnV0ZXN9IG1pbnV0ZXNgO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIWhvdXJzICYmICEhc2Vjb25kcyAmJiAhbWludXRlcykge1xuICAgICAgICAgICAgcmV0dXJuIGAke2hvdXJzfSBoZXVyZXMgZXQgJHtzZWNvbmRzfSBzZWNvbmRlc2A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhbWludXRlcyAmJiAhIXNlY29uZHMgJiYgIWhvdXJzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7bWludXRlc30gbWludXRlcyBldCAke3NlY29uZHN9IHNlY29uZGVzYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KFxuICAgICAgICB0aW1lSW5TZWNvbmRzOiBudW1iZXIsXG4gICAgICAgIGhvdXJzOiBudW1iZXIsXG4gICAgICAgIG1pbnV0ZXM6IG51bWJlcixcbiAgICAgICAgc2Vjb25kczogbnVtYmVyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IF8xX2hvdXJJblNlY29uZHMgPSA2MCAqIDYwO1xuICAgICAgICBjb25zdCBfNV9taW51dGVzSW5TZWNvbmRzID0gNSAqIDYwO1xuICAgICAgICBjb25zdCBfMTBfbWludXRlc0luU2Vjb25kcyA9IDEwICogNjA7XG4gICAgICAgIGNvbnN0IF8xX21pbnV0ZUluU2Vjb25kcyA9IDYwO1xuICAgICAgICBjb25zdCBfMl9taW51dGVJblNlY29uZHMgPSAyICogNjA7XG5cbiAgICAgICAgLy8gV2hlbiBmaW5pc2hlZCwgZGlzcGxheSBleHBpcmVkIG1lc3NhZ2VcbiAgICAgICAgaWYgKHRpbWVJblNlY29uZHMgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzU3ViamVjdC5uZXh0KFxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5leHBpcmVkLW1lc3NhZ2Uuc3Itb25seSdcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHNlY29uZCBmb3IgdGhlIGxhc3QgMTVzXG4gICAgICAgIGlmICh0aW1lSW5TZWNvbmRzIDw9IDE1KSB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50c1N1YmplY3QubmV4dCh0aW1lSW5TZWNvbmRzLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IDMwcyB3aGVuIGxlc3MgdGhhbiAyIG1pbnV0ZXNcbiAgICAgICAgaWYgKHRpbWVJblNlY29uZHMgPD0gXzJfbWludXRlSW5TZWNvbmRzICYmIHRpbWVJblNlY29uZHMgJSAzMCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5nZXRSZWFkYWJsZVRpbWVyRm9yU2NyZWVuUmVhZGVyKFxuICAgICAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VTck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvdW50LWRvd24tbWVzc2FnZS5zci1vbmx5JyxcbiAgICAgICAgICAgICAgICAgICAgeyBjb3VudERvd25WYWx1ZTogbXNnIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IG1pbnV0ZSBmb3IgdGhlIGxhc3QgNSBtaW51dGVzXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRpbWVJblNlY29uZHMgPD0gXzVfbWludXRlc0luU2Vjb25kcyAmJlxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyAlIF8xX21pbnV0ZUluU2Vjb25kcyA9PT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IHRoaXMuZ2V0UmVhZGFibGVUaW1lckZvclNjcmVlblJlYWRlcihcbiAgICAgICAgICAgICAgICBob3VycyxcbiAgICAgICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgICAgIHNlY29uZHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmFubm91bmNlU3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5jb3VudC1kb3duLW1lc3NhZ2Uuc3Itb25seScsXG4gICAgICAgICAgICAgICAgICAgIHsgY291bnREb3duVmFsdWU6IG1zZyB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBFdmVyeSAxMCBtaW51dGVzIHdoZW4gbGVzcyB0aGFuIGFuIGhvdXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyA8IF8xX2hvdXJJblNlY29uZHMgJiZcbiAgICAgICAgICAgIHRpbWVJblNlY29uZHMgJSBfMTBfbWludXRlc0luU2Vjb25kcyA9PT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IHRoaXMuZ2V0UmVhZGFibGVUaW1lckZvclNjcmVlblJlYWRlcihcbiAgICAgICAgICAgICAgICBob3VycyxcbiAgICAgICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgICAgIHNlY29uZHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmFubm91bmNlU3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5jb3VudC1kb3duLW1lc3NhZ2Uuc3Itb25seScsXG4gICAgICAgICAgICAgICAgICAgIHsgY291bnREb3duVmFsdWU6IG1zZyB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBFdmVyeSBob3VyIHdoZW4gbW9yZSB0aGFuIGFuIGhvdXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyA+PSBfMV9ob3VySW5TZWNvbmRzICYmXG4gICAgICAgICAgICB0aW1lSW5TZWNvbmRzICUgXzFfaG91ckluU2Vjb25kcyA9PT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IHRoaXMuZ2V0UmVhZGFibGVUaW1lckZvclNjcmVlblJlYWRlcihcbiAgICAgICAgICAgICAgICBob3VycyxcbiAgICAgICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgICAgIHNlY29uZHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmFubm91bmNlU3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5jb3VudC1kb3duLW1lc3NhZ2Uuc3Itb25seScsXG4gICAgICAgICAgICAgICAgICAgIHsgY291bnREb3duVmFsdWU6IG1zZyB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWVzc2FnZURlbGF5SW5NaW51dGVzKFxuICAgICAgICBpbmZvOiBBcHBsaWNhdGlvbkluZm8sXG4gICAgICAgIHR5cGU6ICdJQU0nIHwgJ1NFU1NJT04tVE9LRU4nXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdJQU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBpbmZvLmNvbmZpZ3VyYXRpb24uc2Vzc2lvbi5pYW1NZXNzYWdlRGVsYXlJbk1pbnV0ZXM7XG4gICAgICAgICAgICBjYXNlICdTRVNTSU9OLVRPS0VOJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5mby5jb25maWd1cmF0aW9uLnNlc3Npb25cbiAgICAgICAgICAgICAgICAgICAgLnNlc3Npb25Ub2tlbk1lc3NhZ2VEZWxheUluTWludXRlcztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAqbmdJZj1cImlzVmlzaWJsZSB8IGFzeW5jXCJcbiAgICBpZD1cImZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lclwiXG4gICAgY2xhc3M9XCJzdGlja3ktdG9wIGFsZXJ0IHRleHQtY2VudGVyIG15LTBcIlxuICAgIFtjbGFzcy5hbGVydC13YXJuaW5nXT1cIihzZXNzaW9uRXhwaXJlZCB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgIFtjbGFzcy5hbGVydC1kYW5nZXJdPVwiKHNlc3Npb25FeHBpcmVkIHwgYXN5bmMpID09PSB0cnVlXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIoc2Vzc2lvbkV4cGlyZWQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICdmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuY291bnQtZG93bi1tZXNzYWdlJ1xuICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgOiB7IGNvdW50RG93blZhbHVlOiBjb3VudERvd25UaW1lVG9EaXNwbGF5IHwgYXN5bmMgfVxuICAgICAgICBcIlxuICAgID48L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiKHNlc3Npb25FeHBpcmVkIHwgYXN5bmMpID09PSB0cnVlXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICdmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuZXhwaXJlZC1tZXNzYWdlJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgIFwiXG4gICAgPjwvZGl2PlxuPC9kaXY+XG5cbjxwIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCI+XG4gICAge3sgc3JBbm5vdW5jZW1lbnRzIHwgYXN5bmMgfX1cbjwvcD5cbiJdfQ==
|
|
@@ -19,4 +19,4 @@ export class Captcha {
|
|
|
19
19
|
}
|
|
20
20
|
export class Portail {
|
|
21
21
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24taW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQVFJLGtCQUFhLEdBQWtCLElBQUksYUFBYSxFQUFFLENBQUM7SUFFdkQsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLFNBQVM7Q0FhckI7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQUVJLFlBQU8sR0FBWSxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBR3JDLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxPQUFPO0NBR25CO0FBRUQsTUFBTSxPQUFPLFFBQVE7Q0FLcEI7QUFFRCxNQUFNLE9BQU8sT0FBTztDQUVuQjtBQUVELE1BQU0sT0FBTyxPQUFPO0NBTW5CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUgbWF4LWNsYXNzZXMtcGVyLWZpbGVcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkluZm8ge1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBidWlsZHRpbWU6IHN0cmluZztcbiAgICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAgIGVudmlyb25tZW50OiBzdHJpbmc7XG4gICAgZW52aXJvbm1lbnRMYWJlbDogc3RyaW5nO1xuICAgIGFwcFByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgZXRhcGVJbmZvczogeyBba2V5OiBzdHJpbmddOiBFdGFwZUluZm8gfTtcbiAgICBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcbiAgICBtb2NrZWRTZXJ2aWNlczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBFdGFwZUluZm8ge1xuICAgIHRpdHJlRXRhcGU6IHN0cmluZztcbiAgICBpZE1ldGllckV0YXBlOiBzdHJpbmc7XG4gICAgcmVwcmlzZVBvc3NpYmxlOiBib29sZWFuO1xuICAgIHRpdHJlUHJlc3RhdGlvbjogc3RyaW5nO1xuICAgIGlkTWV0aWVyUHJlc3RhdGlvbjogc3RyaW5nO1xuICAgIHB1YmxpY0NpYmxlOiBzdHJpbmdbXTtcbiAgICBkZWNpc2lvbkVsZWN0cm9uaXF1ZUF2YWlsYWJsZTogYm9vbGVhbjtcbiAgICBkZXBsb3llZUN5YmVyOiBib29sZWFuO1xuICAgIGxpZW5BY2Nlczogc3RyaW5nO1xuICAgIGRyYWZ0RGVtUmV0ZW50aW9uRGF5c1B1YmxpYzogbnVtYmVyO1xuICAgIGRyYWZ0RGVtUmV0ZW50aW9uRGF5c0Nvbm5lY3RlZDogbnVtYmVyO1xuICAgIHVzZXJGZWVkYmFja1JlcXVlc3RlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uIHtcbiAgICBjYXB0Y2hhPzogQ2FwdGNoYTtcbiAgICBwb3J0YWlsOiBQb3J0YWlsID0gbmV3IFBvcnRhaWwoKTtcbiAgICBkb2N1bWVudD86IERvY3VtZW50O1xuICAgIHNlc3Npb24/OiBTZXNzaW9uO1xufVxuXG5leHBvcnQgY2xhc3MgU2Vzc2lvbiB7XG4gICAgc2Vzc2lvblRva2VuTWVzc2FnZURlbGF5SW5NaW51dGVzOiBudW1iZXI7XG4gICAgaWFtTWVzc2FnZURlbGF5SW5NaW51dGVzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBEb2N1bWVudCB7XG4gICAgZmlsZU1heFNpemVJbkJ5dGVzQnlGb3JtS2V5OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9O1xuICAgIG1heEZpbGVOYW1lTGVuZ3RoOiBzdHJpbmc7XG4gICAgZmlsZUV4dGVuc2lvbnM6IHN0cmluZztcbiAgICBpbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FwdGNoYSB7XG4gICAgcHVibGlja2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUG9ydGFpbCB7XG4gICAgYmFzZVZkQ2hVcmw/OiBzdHJpbmc7XG4gICAgY3liZXJMb2dpblVybD86IHN0cmluZztcbiAgICBzdXBwb3J0Rm9ybVVybD86IHN0cmluZztcbiAgICBlc3BhY2VTZWN1cmlzZVVybD86IHN0cmluZztcbiAgICBwb3J0YWlsVGl0bGVzQnlQcmVzdGFDb2RlPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cbiJdfQ==
|
|
@@ -4761,18 +4761,18 @@ class DemandeExpirationService {
|
|
|
4761
4761
|
return combineLatest([
|
|
4762
4762
|
this.getDemandeExpirationDateTime(),
|
|
4763
4763
|
this.intervalSubject.asObservable()
|
|
4764
|
-
]).pipe(map(([value]) => !dayjs().isBefore(value)), tap(visible => {
|
|
4764
|
+
]).pipe(map(([value]) => !dayjs().isBefore(value?.expiration)), tap(visible => {
|
|
4765
4765
|
if (visible) {
|
|
4766
4766
|
this.clearPulling();
|
|
4767
4767
|
}
|
|
4768
4768
|
}), shareReplay(1));
|
|
4769
4769
|
}
|
|
4770
|
-
setDemandeExpirationDateTime(
|
|
4771
|
-
this._demandeExpirationDateTimeSubject.next(
|
|
4770
|
+
setDemandeExpirationDateTime(expiration) {
|
|
4771
|
+
this._demandeExpirationDateTimeSubject.next(expiration);
|
|
4772
4772
|
}
|
|
4773
4773
|
getDemandeExpirationDateTime() {
|
|
4774
|
-
return this._demandeExpirationDateTimeSubject.asObservable().pipe(filter(value => !!value && value.isValid()), tap(value => {
|
|
4775
|
-
if (dayjs().isBefore(value)) {
|
|
4774
|
+
return this._demandeExpirationDateTimeSubject.asObservable().pipe(filter(value => !!value && value.expiration?.isValid()), tap(value => {
|
|
4775
|
+
if (dayjs().isBefore(value.expiration)) {
|
|
4776
4776
|
this.startPulling();
|
|
4777
4777
|
}
|
|
4778
4778
|
}), shareReplay(1));
|
|
@@ -6648,11 +6648,12 @@ class FoehnPageExpirationTimerComponent {
|
|
|
6648
6648
|
.pipe(tap(countDownTimeInSeconds => this.sessionHasExpired.next(countDownTimeInSeconds === 0)), map(countDownTimeInSeconds => this.formatTime(countDownTimeInSeconds)), shareReplay(1));
|
|
6649
6649
|
this.isVisible = this.demandeExpirationService
|
|
6650
6650
|
.getDemandeExpirationDateTime()
|
|
6651
|
-
.pipe(
|
|
6651
|
+
.pipe(withLatestFrom(this.applicationInfoService.data), tap(([expiration, appInfo]) => {
|
|
6652
6652
|
this.clearTimer();
|
|
6653
|
+
const messageDelayInMinutes = this.getMessageDelayInMinutes(appInfo, expiration.type);
|
|
6653
6654
|
// Real session expiration to keep track of time
|
|
6654
6655
|
this.sessionExpirationDateTimeInMilliseconds =
|
|
6655
|
-
|
|
6656
|
+
expiration.expiration.valueOf() +
|
|
6656
6657
|
messageDelayInMinutes * 60 * 1000;
|
|
6657
6658
|
this.countDownTimeInSeconds.next(this.getAccurateCountDownTimeInSeconds());
|
|
6658
6659
|
this.startTimer();
|
|
@@ -6772,6 +6773,15 @@ class FoehnPageExpirationTimerComponent {
|
|
|
6772
6773
|
return;
|
|
6773
6774
|
}
|
|
6774
6775
|
}
|
|
6776
|
+
getMessageDelayInMinutes(info, type) {
|
|
6777
|
+
switch (type) {
|
|
6778
|
+
case 'IAM':
|
|
6779
|
+
return info.configuration.session.iamMessageDelayInMinutes;
|
|
6780
|
+
case 'SESSION-TOKEN':
|
|
6781
|
+
return info.configuration.session
|
|
6782
|
+
.sessionTokenMessageDelayInMinutes;
|
|
6783
|
+
}
|
|
6784
|
+
}
|
|
6775
6785
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnPageExpirationTimerComponent, deps: [{ token: ApplicationInfoService }, { token: SdkDictionaryService }, { token: DemandeExpirationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6776
6786
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FoehnPageExpirationTimerComponent, selector: "foehn-page-expiration-timer", ngImport: i0, template: "<div\n *ngIf=\"isVisible | async\"\n id=\"foehn-page-expiration-timer\"\n class=\"sticky-top alert text-center my-0\"\n [class.alert-warning]=\"(sessionExpired | async) === false\"\n [class.alert-danger]=\"(sessionExpired | async) === true\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n>\n <div\n *ngIf=\"(sessionExpired | async) === false\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.count-down-message'\n | fromDictionary\n : { countDownValue: countDownTimeToDisplay | async }\n \"\n ></div>\n <div\n *ngIf=\"(sessionExpired | async) === true\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.expired-message' | fromDictionary\n \"\n ></div>\n</div>\n\n<p class=\"visually-hidden\" aria-live=\"assertive\" aria-atomic=\"true\">\n {{ srAnnouncements | async }}\n</p>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
6777
6787
|
}
|
|
@@ -8526,6 +8536,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
8526
8536
|
type: Input
|
|
8527
8537
|
}] } });
|
|
8528
8538
|
|
|
8539
|
+
class CurrentSessionExpiration {
|
|
8540
|
+
}
|
|
8541
|
+
|
|
8529
8542
|
const EXPIRATION_HEADER = 'Demande-Expiration';
|
|
8530
8543
|
class DemandeExpirationInterceptor {
|
|
8531
8544
|
constructor(demandeExpirationService) {
|
|
@@ -8539,7 +8552,8 @@ class DemandeExpirationInterceptor {
|
|
|
8539
8552
|
if (httpEvent instanceof HttpResponse) {
|
|
8540
8553
|
const responseBody = httpEvent.body;
|
|
8541
8554
|
if (httpEvent.headers.has(EXPIRATION_HEADER) &&
|
|
8542
|
-
!!responseBody)
|
|
8555
|
+
!!responseBody // TODO LHE : handle any response (with or without body)
|
|
8556
|
+
) {
|
|
8543
8557
|
this.manageDemandeExpirationHeader(httpEvent.headers.get(EXPIRATION_HEADER), responseBody);
|
|
8544
8558
|
}
|
|
8545
8559
|
}
|
|
@@ -8547,13 +8561,20 @@ class DemandeExpirationInterceptor {
|
|
|
8547
8561
|
}
|
|
8548
8562
|
manageDemandeExpirationHeader(expirationByDemande, formPostResponse) {
|
|
8549
8563
|
const expirationByDemandeMap = this.getExpirationByDemandeMap(expirationByDemande);
|
|
8550
|
-
|
|
8551
|
-
|
|
8552
|
-
|
|
8553
|
-
|
|
8554
|
-
|
|
8555
|
-
|
|
8556
|
-
|
|
8564
|
+
const expiration = new CurrentSessionExpiration();
|
|
8565
|
+
const reference = formPostResponse.meta?.reference || '';
|
|
8566
|
+
const dateTimeForReference = expirationByDemandeMap.get(reference);
|
|
8567
|
+
const dateTimeForIam = expirationByDemandeMap.get('IAM');
|
|
8568
|
+
if (dateTimeForReference) {
|
|
8569
|
+
expiration.type = 'SESSION-TOKEN';
|
|
8570
|
+
expiration.expiration = dayjs(dateTimeForReference);
|
|
8571
|
+
}
|
|
8572
|
+
else if (dateTimeForIam) {
|
|
8573
|
+
expiration.type = 'IAM';
|
|
8574
|
+
expiration.expiration = dayjs(dateTimeForIam);
|
|
8575
|
+
}
|
|
8576
|
+
if (expiration.expiration?.isValid()) {
|
|
8577
|
+
this.demandeExpirationService.setDemandeExpirationDateTime(expiration);
|
|
8557
8578
|
}
|
|
8558
8579
|
}
|
|
8559
8580
|
getExpirationByDemandeMap(expirationByDemande) {
|