@ohioepa/oepa-ui-lib 1.3.10 → 1.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/oepa-user-account/oepa-user-account.service.mjs +24 -14
- package/fesm2022/ohioepa-oepa-ui-lib.mjs +23 -13
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
- package/lib/oepa-user-account/oepa-user-account.service.d.ts +3 -1
- package/ohioepa-oepa-ui-lib-1.3.12.tgz +0 -0
- package/package.json +1 -1
- package/ohioepa-oepa-ui-lib-1.3.10.tgz +0 -0
|
@@ -10,10 +10,11 @@ import * as i1 from "@angular/common/http";
|
|
|
10
10
|
export class OepaUserAccountService {
|
|
11
11
|
http;
|
|
12
12
|
ebizRootURL;
|
|
13
|
+
app;
|
|
13
14
|
hostUrl = '/ebiz';
|
|
14
15
|
accountsUrl = '/api/v1/user-accounts';
|
|
15
|
-
ebizAccountsUrl = '/api/
|
|
16
|
-
ebizSessionUrl = '/api/
|
|
16
|
+
ebizAccountsUrl = '/api/v2/accounts';
|
|
17
|
+
ebizSessionUrl = '/api/v2/session';
|
|
17
18
|
account;
|
|
18
19
|
personID = '';
|
|
19
20
|
sessionID = '';
|
|
@@ -28,11 +29,14 @@ export class OepaUserAccountService {
|
|
|
28
29
|
userAccount$ = new Subject();
|
|
29
30
|
sessionID$ = new Subject(); // session ID is used for "backdoor" processing of internal (webapps) accounts
|
|
30
31
|
authToken = '';
|
|
31
|
-
|
|
32
|
+
params = {};
|
|
33
|
+
constructor(http, ebizRootURL, app) {
|
|
32
34
|
this.http = http;
|
|
33
35
|
this.ebizRootURL = ebizRootURL;
|
|
36
|
+
this.app = app;
|
|
34
37
|
this.hostUrl = this.ebizRootURL + this.hostUrl;
|
|
35
|
-
this.logoutPath = '/jsp/logout.jsp';
|
|
38
|
+
this.logoutPath = this.ebizRootURL + '/jsp/logout.jsp';
|
|
39
|
+
this.params = { 'app': this.app };
|
|
36
40
|
}
|
|
37
41
|
/**
|
|
38
42
|
* Retrieve the User Account for the user userid.
|
|
@@ -214,7 +218,7 @@ export class OepaUserAccountService {
|
|
|
214
218
|
*/
|
|
215
219
|
searchPrivileges(programPrivilegeRequest, altUserID) {
|
|
216
220
|
const url = this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/search' + (altUserID ? '?userid=' + altUserID : '');
|
|
217
|
-
return this.http.post(url, programPrivilegeRequest);
|
|
221
|
+
return this.http.post(url, programPrivilegeRequest, { params: this.params });
|
|
218
222
|
}
|
|
219
223
|
/**
|
|
220
224
|
* Create a new ProgramPrivilege based on contents of ProgramPrivilegeRequest.
|
|
@@ -222,7 +226,7 @@ export class OepaUserAccountService {
|
|
|
222
226
|
* @returns Observable<ProgramPrivilege?
|
|
223
227
|
*/
|
|
224
228
|
createProgramPrivilege(programPrivilegeRequest, altUserID) {
|
|
225
|
-
return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges' + (altUserID ? '?userid=' + altUserID : ''), programPrivilegeRequest);
|
|
229
|
+
return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges' + (altUserID ? '?userid=' + altUserID : ''), programPrivilegeRequest, { params: this.params });
|
|
226
230
|
}
|
|
227
231
|
/**
|
|
228
232
|
* Delete the ProgramPrivilege identified by programPrivilegeID.
|
|
@@ -230,7 +234,7 @@ export class OepaUserAccountService {
|
|
|
230
234
|
* @returns Observable<void>
|
|
231
235
|
*/
|
|
232
236
|
deleteProgramPrivilege(programPrivilegeID, altUserID) {
|
|
233
|
-
return this.http.delete(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/' + programPrivilegeID + (altUserID ? '?userid=' + altUserID : ''), { responseType: 'text' });
|
|
237
|
+
return this.http.delete(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/' + programPrivilegeID + (altUserID ? '?userid=' + altUserID : ''), { responseType: 'text', params: this.params });
|
|
234
238
|
}
|
|
235
239
|
/**
|
|
236
240
|
* Delegate a program privilege based on information in delegation.
|
|
@@ -238,7 +242,7 @@ export class OepaUserAccountService {
|
|
|
238
242
|
* @returns Observable<void>
|
|
239
243
|
*/
|
|
240
244
|
delegateProgramPrivilege(delegation, altUserID) {
|
|
241
|
-
return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/delegation' + (altUserID ? '?userid=' + altUserID : ''), delegation, { responseType: 'text' });
|
|
245
|
+
return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/delegation' + (altUserID ? '?userid=' + altUserID : ''), delegation, { responseType: 'text', params: this.params });
|
|
242
246
|
}
|
|
243
247
|
/**
|
|
244
248
|
* ===========================================================================================================================
|
|
@@ -261,7 +265,7 @@ export class OepaUserAccountService {
|
|
|
261
265
|
storeUserInSession(accountUserID) {
|
|
262
266
|
let acct = {};
|
|
263
267
|
acct.accountID = accountUserID;
|
|
264
|
-
return this.http.post(this.hostUrl + this.ebizSessionUrl + '/storeUser/' + accountUserID, null);
|
|
268
|
+
return this.http.post(this.hostUrl + this.ebizSessionUrl + '/storeUser/' + accountUserID, null, { params: this.params });
|
|
265
269
|
}
|
|
266
270
|
/**
|
|
267
271
|
* See if the current user should be allowed to see "demo" capabilities
|
|
@@ -322,15 +326,21 @@ export class OepaUserAccountService {
|
|
|
322
326
|
response: message
|
|
323
327
|
};
|
|
324
328
|
const url = this.hostUrl + '/api/v1/userAccounts/logs/message';
|
|
325
|
-
return this.http.post(url, messageResponse);
|
|
329
|
+
return this.http.post(url, messageResponse, { params: this.params });
|
|
326
330
|
}
|
|
327
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
328
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService });
|
|
331
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }, { token: 'app' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
332
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, providedIn: 'root' });
|
|
329
333
|
}
|
|
330
334
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, decorators: [{
|
|
331
|
-
type: Injectable
|
|
335
|
+
type: Injectable,
|
|
336
|
+
args: [{
|
|
337
|
+
providedIn: 'root'
|
|
338
|
+
}]
|
|
332
339
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
333
340
|
type: Inject,
|
|
334
341
|
args: ['ebizRootURL']
|
|
342
|
+
}] }, { type: undefined, decorators: [{
|
|
343
|
+
type: Inject,
|
|
344
|
+
args: ['app']
|
|
335
345
|
}] }] });
|
|
336
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS11c2VyLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvb2VwYS11c2VyLWFjY291bnQvb2VwYS11c2VyLWFjY291bnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLMUI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBb0JiO0lBQWlEO0lBbkI3RCxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ2xCLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQztJQUN0QyxlQUFlLEdBQUcsa0JBQWtCLENBQUM7SUFDckMsY0FBYyxHQUFHLGlCQUFpQixDQUFDO0lBQ25DLE9BQU8sQ0FBbUI7SUFDMUIsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUN0QixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3ZCLGNBQWMsR0FBVyxFQUFFLENBQUM7SUFDNUIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixRQUFRLEdBQVUsQ0FBQyxDQUFDO0lBQ3BCLGFBQWEsR0FBRyxDQUFDLEVBQUUsR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztJQUNsRSxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUNwQyxTQUFTLENBQU07SUFDaEIsWUFBWSxHQUE2QixJQUFJLE9BQU8sRUFBbUIsQ0FBQztJQUN4RSxVQUFVLEdBQW9CLElBQUks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RUFBRSxDQUFDO29CQUNuQixZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMvQixDQUFDO2dCQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksa0JBQWtCLENBQUMsT0FBZ0I7UUFDeEMsTUFBTSxlQUFlLEdBQVE7WUFDM0IsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQTtRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsbUNBQW1DLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQzt3R0FuVlEsc0JBQXNCLDRDQW9CYSxhQUFhOzRHQXBCaEQsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVOzswQkFxQjhCLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9lcGFVc2VyQWNjb3VudCwgUHJvZ3JhbVByaXZpbGVnZSwgUHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QsIERlbGVnYXRpb24sIE9FUEFSb2xlLCBPZXBhUHJpdmlsZWdlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcblxuLyoqXG4gKiBPZXBhVXNlckFjY291bnRTZXJ2aWNlIC0gQSBjb2xsZWN0aW9uIG9mIG1ldGhvZHMgZm9yIGFjY2Vzc2luZyBhbmQgbWFuaXB1bGF0aW5nIHVzZXIgYWNjb3VudHMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPZXBhVXNlckFjY291bnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBob3N0VXJsID0gJy9lYml6JztcbiAgcHJpdmF0ZSBhY2NvdW50c1VybCA9ICcvYXBpL3YxL3VzZXItYWNjb3VudHMnO1xuICBwcml2YXRlIGViaXpBY2NvdW50c1VybCA9ICcvYXBpL3YxL2FjY291bnRzJztcbiAgcHJpdmF0ZSBlYml6U2Vzc2lvblVybCA9ICcvYXBpL3YxL3Nlc3Npb24nO1xuICBwcml2YXRlIGFjY291bnQhOiBPZXBhVXNlckFjY291bnQ7XG4gIHByaXZhdGUgcGVyc29uSUQ6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHNlc3Npb25JRDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgd2ViYXBwc1Jvb3RVUkw6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGViaXpWZXJzaW9uOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBsb2dvdXRQYXRoOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBpZGxlVGltZXJSdW5uaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgaWRsZVRpbWU6bnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBpZGxlVGhyZXNob2xkID0gKDI5KjYwKTsgLy8gMjkgbWludXRlIHRpbWVvdXQgdGhyZXNob2xkIGJ5IGRlZmF1bHRcbiAgcHJpdmF0ZSBpZGxlU3ViamVjdCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgcHJpdmF0ZSB0aW1lb3V0SUQ6IGFueTtcbiAgcHVibGljIHVzZXJBY2NvdW50JDogU3ViamVjdDxPZXBhVXNlckFjY291bnQ+ID0gbmV3IFN1YmplY3Q8T2VwYVVzZXJBY2NvdW50PigpO1xuICBwdWJsaWMgc2Vzc2lvbklEJDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpOyAvLyBzZXNzaW9uIElEIGlzIHVzZWQgZm9yIFwiYmFja2Rvb3JcIiBwcm9jZXNzaW5nIG9mIGludGVybmFsICh3ZWJhcHBzKSBhY2NvdW50c1xuICBwcml2YXRlIGF1dGhUb2tlbjogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBASW5qZWN0KCdlYml6Um9vdFVSTCcpIHByaXZhdGUgZWJpelJvb3RVUkw6IHN0cmluZykge1xuICAgIHRoaXMuaG9zdFVybCA9IHRoaXMuZWJpelJvb3RVUkwgKyB0aGlzLmhvc3RVcmw7XG4gICAgdGhpcy5sb2dvdXRQYXRoID0gJy9qc3AvbG9nb3V0LmpzcCc7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIFVzZXIgQWNjb3VudCBmb3IgdGhlIHVzZXIgdXNlcmlkLlxuICAgKiBAcGFyYW0gdXNlcmlkXG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVBY2NvdW50Rm9yVXNlcih1c2VyaWQ6IHN0cmluZywgYXBwOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odGhpcy5ob3N0VXJsICsgdGhpcy5hY2NvdW50c1VybCArICcvJyArIHVzZXJpZCwgeyBwYXJhbXM6IHsgJ2FwcCc6IGFwcCB9IH0pO1xuICB9XG5cbiAgcHVibGljIHJldHJpZXZlQWNjb3VudEJ5T0hJRChvaGlkOiBzdHJpbmcsIGFwcDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9vaGlkLycgKyBvaGlkIDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxPZXBhVXNlckFjY291bnQ+KHVybCwgeyBwYXJhbXM6IHsgJ2FwcCc6IGFwcCB9IH0pLnBpcGUoXG4gICAgICBtYXAoKHVzZXJBY2NvdW50OiBPZXBhVXNlckFjY291bnQpID0+IHtcbiAgICAgICAgdGhpcy51c2VyQWNjb3VudCQubmV4dCh1c2VyQWNjb3VudCk7XG4gICAgICAgIHJldHVybiB1c2VyQWNjb3VudDtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgdXNlciBhY2NvdW50IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRGb3JDdXJyZW50VXNlcihhcHA6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyAnL2FwaS92MS91c2VyQWNjb3VudHMvbG9naW4nKS5waXBlKG1hcCgoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSA9PiB7XG4gICAgICBpZiAoIWFjY291bnQpIHtcbiAgICAgICAgaWYgKHRoaXMucGVyc29uSUQgJiYgdGhpcy5zZXNzaW9uSUQpIHtcbiAgICAgICAgICB0aGlzLnJldHJpZXZlQWNjb3VudEZvckludGVybmFsU2Vzc2lvbih0aGlzLnBlcnNvbklELCB0aGlzLnNlc3Npb25JRCwgYXBwKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogaW50ZXJuYWxBY2NvdW50ID0+IHtcbiAgICAgICAgICAgIGlmIChpbnRlcm5hbEFjY291bnQpIHtcbiAgICAgICAgICAgICAgdGhpcy5hY2NvdW50ID0gaW50ZXJuYWxBY2NvdW50XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Mb2dvdXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb0xvZ291dCgpO1xuICAgICAgICAgIH19KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Mb2dvdXQoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hY2NvdW50ID0gYWNjb3VudDtcbiAgICAgICAgY29uc29sZS5sb2coJ3JldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyOiAnICsgdGhpcy5hY2NvdW50Py5sb2dpbk5hbWUgfHwgJzx1bmtub3duPicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuYWNjb3VudDtcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVkaXJlY3QgdG8gbG9nb3V0IHNjcmVlbiBpZiB1c2VyIGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgcHVibGljIHJlZGlyZWN0VG9Mb2dvdXQobXNnID86IHN0cmluZykge1xuICAgIGxldCBsb2dvdXRVcmwgPSB0aGlzLmxvZ291dFBhdGg7XG4gICAgaWYgKHRoaXMud2ViYXBwc1Jvb3RVUkwpIHtcbiAgICAgIGxvZ291dFVybCA9IHRoaXMud2ViYXBwc1Jvb3RVUkwgKyAodGhpcy5sb2dvdXRQYXRoIHx8ICcnKTtcbiAgICB9XG4gICAgYWxlcnQobXNnIHx8ICdDb25uZWN0aW9uIGxvc3QuIFlvdSB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGxvZ2luIHBhZ2UuJyk7XG4gICAgY29uc29sZS5sb2coJ3JlZGlyZWN0aW5nIHRvIGxvZ291dFVybDonICsgbG9nb3V0VXJsKTtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ291dFVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgdXNlciBhY2NvdW50IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLlxuICAgKiBAcGFyYW0gc2Vzc2lvbklEIHBlcnNvbiBJRCBmb3IgaW50ZXJuYWwgdXNlclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRGb3JJbnRlcm5hbFNlc3Npb24ocGVyc29uSUQ6IHN0cmluZywgc2Vzc2lvbklEOiBzdHJpbmcsIGFwcDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICB0aGlzLmFjY291bnQgPSB7fTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9pbnRlcm5hbC9wZXJzb25JRC8nICsgcGVyc29uSUQgKyAnL3Nlc3Npb25JRC8nICsgc2Vzc2lvbklEO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odXJsLCB7IHBhcmFtczogeyAnYXBwJzogYXBwIH0gfSkucGlwZShtYXAoKGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCkgPT4ge1xuICAgICAgdGhpcy5hY2NvdW50ID0gYWNjb3VudDtcbiAgICAgIHRoaXMucGVyc29uSUQgPSBwZXJzb25JRDtcbiAgICAgIHRoaXMuc2Vzc2lvbklEID0gc2Vzc2lvbklEO1xuICAgICAgdGhpcy5zZXNzaW9uSUQkLm5leHQoc2Vzc2lvbklEKTtcbiAgICAgIHJldHVybiBhY2NvdW50O1xuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBhY2NvdW50IGhhcyB0aGUgcm9sZSByb2xlTmFtZS5cbiAgICogQHBhcmFtIGFjY291bnRcbiAgICogQHBhcmFtIHJvbGVOYW1lXG4gICAqL1xuICBwdWJsaWMgYWNjb3VudEhhc1JvbGUoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50LCByb2xlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IGhhc1JvbGUgPSBmYWxzZTtcbiAgICBjb25zdCByb2xlTGlzdCA9IHRoaXMuZ2V0Um9sZUxpc3QoYWNjb3VudCk7XG4gICAgaWYgKHJvbGVMaXN0ICYmIHJvbGVMaXN0Lmxlbmd0aCkge1xuICAgICAgaGFzUm9sZSA9IChyb2xlTGlzdC5pbmRleE9mKHJvbGVOYW1lKSA+IC0xKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc1JvbGU7XG4gIH1cblxuICBwcml2YXRlIGdldFJvbGVMaXN0KGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHJvbGVMaXN0OiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgaWYgKGFjY291bnQucm9sZUxpc3QgJiYgYWNjb3VudC5yb2xlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBhY2NvdW50LnJvbGVMaXN0LmZvckVhY2goKHJvbGU6IE9FUEFSb2xlKSA9PiB7XG4gICAgICAgIHJvbGVMaXN0LnB1c2gocm9sZS5uYW1lIHx8ICcnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm9sZUxpc3Q7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgYWNjb3VudCBoYXMgdGhlIHByaXZpbGVnZSBwcml2aWxlZ2VUeXBlLlxuICAgKiBAcGFyYW0gYWNjb3VudFxuICAgKiBAcGFyYW0gcHJpdmlsZWdlVHlwZVxuICAgKi9cbiAgcHVibGljIGFjY291bnRIYXNQcml2aWxlZ2UoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50LCBwcml2aWxlZ2VUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzUHJpdmlsZWdlID0gZmFsc2U7XG4gICAgY29uc3QgcHJpdmlsZWdlTGlzdCA9IHRoaXMuZ2V0UHJpdmlsZWdlTGlzdChhY2NvdW50KTtcbiAgICBpZiAocHJpdmlsZWdlTGlzdCAmJiBwcml2aWxlZ2VMaXN0Lmxlbmd0aCkge1xuICAgICAgaGFzUHJpdmlsZWdlID0gKHByaXZpbGVnZUxpc3QuaW5kZXhPZihwcml2aWxlZ2VUeXBlKSA+IC0xKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc1ByaXZpbGVnZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcml2aWxlZ2VMaXN0KGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHByaXZpbGVnZUxpc3Q6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBpZiAoYWNjb3VudC5yb2xlTGlzdCAmJiBhY2NvdW50LnJvbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGFjY291bnQucm9sZUxpc3QuZm9yRWFjaCgocm9sZTogT0VQQVJvbGUpID0+IHtcbiAgICAgICAgaWYgKHJvbGUucHJpdmlsZWdlTGlzdCAmJiByb2xlLnByaXZpbGVnZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJvbGUucHJpdmlsZWdlTGlzdC5mb3JFYWNoKChwcml2aWxlZ2U6IE9lcGFQcml2aWxlZ2UpID0+IHtcbiAgICAgICAgICAgIHByaXZpbGVnZUxpc3QucHVzaChwcml2aWxlZ2UudHlwZSB8fCAnJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcHJpdmlsZWdlTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgdXNlckFjY291bnQgb2YgdGhlIGN1cnJlbnQgdXNlci4gVGhlIHJldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyIG1ldGhvZFxuICAgKiBtdXN0IGJlIGludm9rZWQgcHJpb3IgdG8gaW52b2tpbmcgdGhpcyBtZXRob2QuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudFVzZXJBY2NvdW50KCk6IE9lcGFVc2VyQWNjb3VudCB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDdXJyZW50VXNlckFjY291bnQoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSB7XG4gICAgdGhpcy5hY2NvdW50ID0gYWNjb3VudDtcbiAgICB0aGlzLnVzZXJBY2NvdW50JC5uZXh0KHRoaXMuYWNjb3VudCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXV0aFRva2VuKCkgOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmF1dGhUb2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBdXRoVG9rZW4odG9rZW46IHN0cmluZykge1xuICAgIHRoaXMuYXV0aFRva2VuID0gdG9rZW47XG4gIH1cbiBcbiAgLyoqXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKiBFQklaIE1FVEhPRFM6XG4gICAqIFRoZSBtZXRob2RzIGJlbG93IGN1cnJlbnRseSBhcHBseSBvbmx5IHRvIGVCaXouXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKi9cblxuICBwdWJsaWMgZ2V0V2ViYXBwc1Jvb3RVUkwoYXBwOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLndlYmFwcHNSb290VVJMKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy53ZWJhcHBzUm9vdFVSTCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArICcvYXBpL3YxL2dhdGV3YXkvZ2F0ZXdheUNvbmZpZyc7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCwgeyBwYXJhbXM6IHsgJ2FwcCc6IGFwcCB9IH0pLnBpcGUobWFwKChnYXRld2F5Q29uZmlnOmFueSkgPT4ge1xuICAgICAgICBpZiAoZ2F0ZXdheUNvbmZpZykge1xuICAgICAgICAgIHRoaXMud2ViYXBwc1Jvb3RVUkwgPSBnYXRld2F5Q29uZmlnLndlYmFwcHNSb290VVJMO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLndlYmFwcHNSb290VVJMO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RUJpelZlcnNpb24oYXBwOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgaWYgKHRoaXMuZWJpelZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuZWJpelZlcnNpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgJy9hcGkvdjEvZ2F0ZXdheS9nYXRld2F5Q29uZmlnJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwsIHsgcGFyYW1zOiB7ICdhcHAnOiBhcHAgfSB9KS5waXBlKG1hcCgoZ2F0ZXdheUNvbmZpZzphbnkpID0+IHtcbiAgICAgICAgICBpZiAoZ2F0ZXdheUNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5lYml6VmVyc2lvbiA9IGdhdGV3YXlDb25maWcudmVyc2lvbk51bWJlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZWJpelZlcnNpb247XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICAgIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFycmF5IG9mIFByb2dyYW1Qcml2aWxlZ2VzIG1hdGNoaW5nIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxBcnJheTxQcm9ncmFtUHJpdmlsZWdlPj5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2hQcml2aWxlZ2VzKHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0OiBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxQcm9ncmFtUHJpdmlsZWdlPj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy9zZWFyY2gnICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFycmF5PFByb2dyYW1Qcml2aWxlZ2U+Pih1cmwsIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgUHJvZ3JhbVByaXZpbGVnZSBiYXNlZCBvbiBjb250ZW50cyBvZiBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdC5cbiAgICogQHBhcmFtIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8UHJvZ3JhbVByaXZpbGVnZT9cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVQcm9ncmFtUHJpdmlsZWdlKHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0OiBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm9ncmFtUHJpdmlsZWdlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFByb2dyYW1Qcml2aWxlZ2U+KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcycrIChhbHRVc2VySUQgPyAnP3VzZXJpZD0nICsgYWx0VXNlcklEIDogJycpLCBcbiAgICBwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIHRoZSBQcm9ncmFtUHJpdmlsZWdlIGlkZW50aWZpZWQgYnkgcHJvZ3JhbVByaXZpbGVnZUlELlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZUlEXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dm9pZD5cbiAgICovXG4gIHB1YmxpYyBkZWxldGVQcm9ncmFtUHJpdmlsZWdlKHByb2dyYW1Qcml2aWxlZ2VJRDogc3RyaW5nLCBhbHRVc2VySUQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy8nICsgcHJvZ3JhbVByaXZpbGVnZUlEICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyksIFxuICAgIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZWdhdGUgYSBwcm9ncmFtIHByaXZpbGVnZSBiYXNlZCBvbiBpbmZvcm1hdGlvbiBpbiBkZWxlZ2F0aW9uLlxuICAgKiBAcGFyYW0gZGVsZWdhdGlvblxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHZvaWQ+XG4gICAqL1xuICBwdWJsaWMgZGVsZWdhdGVQcm9ncmFtUHJpdmlsZWdlKGRlbGVnYXRpb246IERlbGVnYXRpb24sIGFsdFVzZXJJRD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy9kZWxlZ2F0aW9uJyArIChhbHRVc2VySUQgPyAnP3VzZXJpZD0nICsgYWx0VXNlcklEIDogJycpLFxuICAgIGRlbGVnYXRpb24sIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XG4gIH1cblxuIC8qKlxuICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICogSGVscGVyIE1FVEhPRFM6XG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKi9cblxuICAgLyoqXG4gICAgKiBTZXQgdGhlIHVzZXIgYWNjb3VudCB0byBiZSB1c2VkIGZvciBcImxpdmUgcmVsb2FkIG1vZGVcIlxuICAgICogQHBhcmFtIHVzZXJBY2NvdW50IFxuICAgICovXG4gICAgcHVibGljIHNldExpdmVSZWxvYWRVc2VyKHVzZXJBY2NvdW50OiBPZXBhVXNlckFjY291bnQpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgICAgdGhpcy5hY2NvdW50ID0gdXNlckFjY291bnQ7XG4gICAgICBjb25zb2xlLmxvZygnc2V0TGl2ZVJlbG9hZFVzZXI6ICcgKyB0aGlzLmFjY291bnQ/LmxvZ2luTmFtZSB8fCAnPHVua25vd24+Jyk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmViaXpBY2NvdW50c1VybCArICcvbGl2ZVJlbG9hZCcsIHVzZXJBY2NvdW50KTtcbiAgICB9XG5cbiAgIC8qKlxuICAgICogU3RvcmVzIHRoZSBnaXZlbiB1c2VyIGluIHRoZSBlQml6IHNlc3Npb24uXG4gICAgKiBAcGFyYW0gYWNjb3VudFVzZXJJRCBcbiAgICAqL1xuICAgcHVibGljIHN0b3JlVXNlckluU2Vzc2lvbihhY2NvdW50VXNlcklEOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgICBsZXQgYWNjdCA9IHt9IGFzIE9lcGFVc2VyQWNjb3VudDtcbiAgICAgYWNjdC5hY2NvdW50SUQgPSBhY2NvdW50VXNlcklEO1xuICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmViaXpTZXNzaW9uVXJsICsgJy9zdG9yZVVzZXIvJyArIGFjY291bnRVc2VySUQsIG51bGwpO1xuICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VlIGlmIHRoZSBjdXJyZW50IHVzZXIgc2hvdWxkIGJlIGFsbG93ZWQgdG8gc2VlIFwiZGVtb1wiIGNhcGFiaWxpdGllc1xuICAgICAqL1xuICAgIHB1YmxpYyBkZW1vQ2FwYWJpbGl0aWVzQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICAgIGxldCBkZW1vQWxsb3dlZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuYWNjb3VudCAmJiB0aGlzLmFjY291bnQucm9sZUxpc3QpIHtcbiAgICAgICAgdGhpcy5hY2NvdW50LnJvbGVMaXN0LmZvckVhY2gocm9sZSA9PiB7XG4gICAgICAgICAgaWYgKHJvbGUubmFtZSA9PT0gJ0FsbG93RGVtbycpIHtcbiAgICAgICAgICAgIGRlbW9BbGxvd2VkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlbW9BbGxvd2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydElkbGVUaW1lcih0aHJlc2hvbGQ/OiBudW1iZXIpIHtcbiAgICAgIGlmICh0aGlzLnRpbWVvdXRJRCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SUQpO1xuICAgICAgfVxuICAgICAgdGhpcy5pZGxlVGhyZXNob2xkID0gdGhyZXNob2xkIHx8IHRoaXMuaWRsZVRocmVzaG9sZDtcbiAgICAgIGlmICghdGhpcy5pZGxlVGltZXJSdW5uaW5nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdUaGUgaWRsZSB0aW1lb3V0IHN0YXJ0ZWQgd2l0aCB0aHJlc2hvbGQ6ICcgKyB0aGlzLmlkbGVUaHJlc2hvbGQpO1xuICAgICAgICB0aGlzLmlkbGVUaW1lclJ1bm5pbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmNoZWNrVGltZW91dCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZXNldElkbGVUaW1lKCkge1xuICAgICAgY29uc29sZS5sb2coJ2lkbGUgdGltZXIgcmVzZXQnKTtcbiAgICAgIHRoaXMuaWRsZVRpbWUgPSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tUaW1lb3V0KCkge1xuICAgICAgdGhpcy50aW1lb3V0SUQgPSBzZXRUaW1lb3V0KCgpPT4ge1xuICAgICAgICB0aGlzLmlkbGVUaW1lICs9IDYwO1xuICAgICAgICBjb25zb2xlLmxvZygnaWRsZSB0aW1lID0gJyArIHRoaXMuaWRsZVRpbWUgKyBcIiwgdGhyZXNob2xkID0gXCIgKyB0aGlzLmlkbGVUaHJlc2hvbGQpO1xuICAgICAgICBpZiAodGhpcy5pZGxlVGltZSA+PSB0aGlzLmlkbGVUaHJlc2hvbGQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnZmlyaW5nIG5leHQgaWRsZVN1YmplY3QuLi4nKTtcbiAgICAgICAgICB0aGlzLmlkbGVUaW1lclJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlkbGVTdWJqZWN0Lm5leHQodGhpcy5pZGxlVGltZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMudGltZW91dElEKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SUQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNoZWNrVGltZW91dCgpO1xuICAgICAgICB9XG4gICAgICB9LCA2MDAwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldElkbGVUaW1lb3V0KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICByZXR1cm4gdGhpcy5pZGxlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgV2UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBzdXBwb3J0IHRoaXMgZ29pbmcgZm9yd2FyZFxuICAgICAqIEBwYXJhbSBtZXNzYWdlXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHVibGljIGxvZ01lc3NhZ2VPblNlcnZlcihtZXNzYWdlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2VSZXNwb25zZTogYW55ID0ge1xuICAgICAgICByZXNwb25zZTogbWVzc2FnZVxuICAgICAgfVxuICAgICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgJy9hcGkvdjEvdXNlckFjY291bnRzL2xvZ3MvbWVzc2FnZSc7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmwsIG1lc3NhZ2VSZXNwb25zZSk7XG4gICAgfVxufVxuIl19
|
|
346
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS11c2VyLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvb2VwYS11c2VyLWFjY291bnQvb2VwYS11c2VyLWFjY291bnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLMUI7O0dBRUc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBcUJiO0lBQ2E7SUFDUjtJQXRCakIsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNsQixXQUFXLEdBQUcsdUJBQXVCLENBQUM7SUFDdEMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO0lBQ3JDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztJQUNuQyxPQUFPLENBQW1CO0lBQzFCLFFBQVEsR0FBVyxFQUFFLENBQUM7SUFDdEIsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUN2QixjQUFjLEdBQVcsRUFBRSxDQUFDO0lBQzVCLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDekIsUUFBUSxHQUFVLENBQUMsQ0FBQztJQUNwQixhQUFhLEdBQUcsQ0FBQyxFQUFFLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5Q0FBeUM7SUFDbEUsV0FBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFDcEMsU0FBUyxDQUFNO0lBQ2hCLFlBQVksR0FBNkIsSUFBSSxPQUFPLEVBQW1CLENBQUM7SUFDeEUsVUFBVSxHQUFvQixJ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VixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXVCSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNwQixNQUFNOzJCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPZXBhVXNlckFjY291bnQsIFByb2dyYW1Qcml2aWxlZ2UsIFByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LCBEZWxlZ2F0aW9uLCBPRVBBUm9sZSwgT2VwYVByaXZpbGVnZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5cbi8qKlxuICogT2VwYVVzZXJBY2NvdW50U2VydmljZSAtIEEgY29sbGVjdGlvbiBvZiBtZXRob2RzIGZvciBhY2Nlc3NpbmcgYW5kIG1hbmlwdWxhdGluZyB1c2VyIGFjY291bnRzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPZXBhVXNlckFjY291bnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBob3N0VXJsID0gJy9lYml6JztcbiAgcHJpdmF0ZSBhY2NvdW50c1VybCA9ICcvYXBpL3YxL3VzZXItYWNjb3VudHMnO1xuICBwcml2YXRlIGViaXpBY2NvdW50c1VybCA9ICcvYXBpL3YyL2FjY291bnRzJztcbiAgcHJpdmF0ZSBlYml6U2Vzc2lvblVybCA9ICcvYXBpL3YyL3Nlc3Npb24nO1xuICBwcml2YXRlIGFjY291bnQhOiBPZXBhVXNlckFjY291bnQ7XG4gIHByaXZhdGUgcGVyc29uSUQ6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHNlc3Npb25JRDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgd2ViYXBwc1Jvb3RVUkw6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGViaXpWZXJzaW9uOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBsb2dvdXRQYXRoOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBpZGxlVGltZXJSdW5uaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgaWRsZVRpbWU6bnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBpZGxlVGhyZXNob2xkID0gKDI5KjYwKTsgLy8gMjkgbWludXRlIHRpbWVvdXQgdGhyZXNob2xkIGJ5IGRlZmF1bHRcbiAgcHJpdmF0ZSBpZGxlU3ViamVjdCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgcHJpdmF0ZSB0aW1lb3V0SUQ6IGFueTtcbiAgcHVibGljIHVzZXJBY2NvdW50JDogU3ViamVjdDxPZXBhVXNlckFjY291bnQ+ID0gbmV3IFN1YmplY3Q8T2VwYVVzZXJBY2NvdW50PigpO1xuICBwdWJsaWMgc2Vzc2lvbklEJDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpOyAvLyBzZXNzaW9uIElEIGlzIHVzZWQgZm9yIFwiYmFja2Rvb3JcIiBwcm9jZXNzaW5nIG9mIGludGVybmFsICh3ZWJhcHBzKSBhY2NvdW50c1xuICBwcml2YXRlIGF1dGhUb2tlbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgcGFyYW1zOiBhbnkgPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIFxuICAgIEBJbmplY3QoJ2ViaXpSb290VVJMJykgcHJpdmF0ZSBlYml6Um9vdFVSTDogc3RyaW5nLFxuICAgIEBJbmplY3QoJ2FwcCcpIHByaXZhdGUgYXBwOiBzdHJpbmcpIHtcbiAgICB0aGlzLmhvc3RVcmwgPSB0aGlzLmViaXpSb290VVJMICsgdGhpcy5ob3N0VXJsO1xuICAgIHRoaXMubG9nb3V0UGF0aCA9IHRoaXMuZWJpelJvb3RVUkwgKyAnL2pzcC9sb2dvdXQuanNwJztcbiAgICB0aGlzLnBhcmFtcyA9IHsgJ2FwcCc6IHRoaXMuYXBwIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIFVzZXIgQWNjb3VudCBmb3IgdGhlIHVzZXIgdXNlcmlkLlxuICAgKiBAcGFyYW0gdXNlcmlkXG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVBY2NvdW50Rm9yVXNlcih1c2VyaWQ6IHN0cmluZywgYXBwOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odGhpcy5ob3N0VXJsICsgdGhpcy5hY2NvdW50c1VybCArICcvJyArIHVzZXJpZCwgeyBwYXJhbXM6IHsgJ2FwcCc6IGFwcCB9IH0pO1xuICB9XG5cbiAgcHVibGljIHJldHJpZXZlQWNjb3VudEJ5T0hJRChvaGlkOiBzdHJpbmcsIGFwcDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9vaGlkLycgKyBvaGlkIDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxPZXBhVXNlckFjY291bnQ+KHVybCwgeyBwYXJhbXM6IHsgJ2FwcCc6IGFwcCB9IH0pLnBpcGUoXG4gICAgICBtYXAoKHVzZXJBY2NvdW50OiBPZXBhVXNlckFjY291bnQpID0+IHtcbiAgICAgICAgdGhpcy51c2VyQWNjb3VudCQubmV4dCh1c2VyQWNjb3VudCk7XG4gICAgICAgIHJldHVybiB1c2VyQWNjb3VudDtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgdXNlciBhY2NvdW50IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRGb3JDdXJyZW50VXNlcihhcHA6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyAnL2FwaS92MS91c2VyQWNjb3VudHMvbG9naW4nKS5waXBlKG1hcCgoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSA9PiB7XG4gICAgICBpZiAoIWFjY291bnQpIHtcbiAgICAgICAgaWYgKHRoaXMucGVyc29uSUQgJiYgdGhpcy5zZXNzaW9uSUQpIHtcbiAgICAgICAgICB0aGlzLnJldHJpZXZlQWNjb3VudEZvckludGVybmFsU2Vzc2lvbih0aGlzLnBlcnNvbklELCB0aGlzLnNlc3Npb25JRCwgYXBwKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogaW50ZXJuYWxBY2NvdW50ID0+IHtcbiAgICAgICAgICAgIGlmIChpbnRlcm5hbEFjY291bnQpIHtcbiAgICAgICAgICAgICAgdGhpcy5hY2NvdW50ID0gaW50ZXJuYWxBY2NvdW50XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Mb2dvdXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb0xvZ291dCgpO1xuICAgICAgICAgIH19KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Mb2dvdXQoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hY2NvdW50ID0gYWNjb3VudDtcbiAgICAgICAgY29uc29sZS5sb2coJ3JldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyOiAnICsgdGhpcy5hY2NvdW50Py5sb2dpbk5hbWUgfHwgJzx1bmtub3duPicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuYWNjb3VudDtcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVkaXJlY3QgdG8gbG9nb3V0IHNjcmVlbiBpZiB1c2VyIGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgcHVibGljIHJlZGlyZWN0VG9Mb2dvdXQobXNnID86IHN0cmluZykge1xuICAgIGxldCBsb2dvdXRVcmwgPSB0aGlzLmxvZ291dFBhdGg7XG4gICAgaWYgKHRoaXMud2ViYXBwc1Jvb3RVUkwpIHtcbiAgICAgIGxvZ291dFVybCA9IHRoaXMud2ViYXBwc1Jvb3RVUkwgKyAodGhpcy5sb2dvdXRQYXRoIHx8ICcnKTtcbiAgICB9XG4gICAgYWxlcnQobXNnIHx8ICdDb25uZWN0aW9uIGxvc3QuIFlvdSB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGxvZ2luIHBhZ2UuJyk7XG4gICAgY29uc29sZS5sb2coJ3JlZGlyZWN0aW5nIHRvIGxvZ291dFVybDonICsgbG9nb3V0VXJsKTtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ291dFVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgdXNlciBhY2NvdW50IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLlxuICAgKiBAcGFyYW0gc2Vzc2lvbklEIHBlcnNvbiBJRCBmb3IgaW50ZXJuYWwgdXNlclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRGb3JJbnRlcm5hbFNlc3Npb24ocGVyc29uSUQ6IHN0cmluZywgc2Vzc2lvbklEOiBzdHJpbmcsIGFwcDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICB0aGlzLmFjY291bnQgPSB7fTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9pbnRlcm5hbC9wZXJzb25JRC8nICsgcGVyc29uSUQgKyAnL3Nlc3Npb25JRC8nICsgc2Vzc2lvbklEO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odXJsLCB7IHBhcmFtczogeyAnYXBwJzogYXBwIH0gfSkucGlwZShtYXAoKGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCkgPT4ge1xuICAgICAgdGhpcy5hY2NvdW50ID0gYWNjb3VudDtcbiAgICAgIHRoaXMucGVyc29uSUQgPSBwZXJzb25JRDtcbiAgICAgIHRoaXMuc2Vzc2lvbklEID0gc2Vzc2lvbklEO1xuICAgICAgdGhpcy5zZXNzaW9uSUQkLm5leHQoc2Vzc2lvbklEKTtcbiAgICAgIHJldHVybiBhY2NvdW50O1xuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBhY2NvdW50IGhhcyB0aGUgcm9sZSByb2xlTmFtZS5cbiAgICogQHBhcmFtIGFjY291bnRcbiAgICogQHBhcmFtIHJvbGVOYW1lXG4gICAqL1xuICBwdWJsaWMgYWNjb3VudEhhc1JvbGUoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50LCByb2xlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IGhhc1JvbGUgPSBmYWxzZTtcbiAgICBjb25zdCByb2xlTGlzdCA9IHRoaXMuZ2V0Um9sZUxpc3QoYWNjb3VudCk7XG4gICAgaWYgKHJvbGVMaXN0ICYmIHJvbGVMaXN0Lmxlbmd0aCkge1xuICAgICAgaGFzUm9sZSA9IChyb2xlTGlzdC5pbmRleE9mKHJvbGVOYW1lKSA+IC0xKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc1JvbGU7XG4gIH1cblxuICBwcml2YXRlIGdldFJvbGVMaXN0KGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHJvbGVMaXN0OiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgaWYgKGFjY291bnQucm9sZUxpc3QgJiYgYWNjb3VudC5yb2xlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBhY2NvdW50LnJvbGVMaXN0LmZvckVhY2goKHJvbGU6IE9FUEFSb2xlKSA9PiB7XG4gICAgICAgIHJvbGVMaXN0LnB1c2gocm9sZS5uYW1lIHx8ICcnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm9sZUxpc3Q7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgYWNjb3VudCBoYXMgdGhlIHByaXZpbGVnZSBwcml2aWxlZ2VUeXBlLlxuICAgKiBAcGFyYW0gYWNjb3VudFxuICAgKiBAcGFyYW0gcHJpdmlsZWdlVHlwZVxuICAgKi9cbiAgcHVibGljIGFjY291bnRIYXNQcml2aWxlZ2UoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50LCBwcml2aWxlZ2VUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzUHJpdmlsZWdlID0gZmFsc2U7XG4gICAgY29uc3QgcHJpdmlsZWdlTGlzdCA9IHRoaXMuZ2V0UHJpdmlsZWdlTGlzdChhY2NvdW50KTtcbiAgICBpZiAocHJpdmlsZWdlTGlzdCAmJiBwcml2aWxlZ2VMaXN0Lmxlbmd0aCkge1xuICAgICAgaGFzUHJpdmlsZWdlID0gKHByaXZpbGVnZUxpc3QuaW5kZXhPZihwcml2aWxlZ2VUeXBlKSA+IC0xKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc1ByaXZpbGVnZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcml2aWxlZ2VMaXN0KGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHByaXZpbGVnZUxpc3Q6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBpZiAoYWNjb3VudC5yb2xlTGlzdCAmJiBhY2NvdW50LnJvbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGFjY291bnQucm9sZUxpc3QuZm9yRWFjaCgocm9sZTogT0VQQVJvbGUpID0+IHtcbiAgICAgICAgaWYgKHJvbGUucHJpdmlsZWdlTGlzdCAmJiByb2xlLnByaXZpbGVnZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJvbGUucHJpdmlsZWdlTGlzdC5mb3JFYWNoKChwcml2aWxlZ2U6IE9lcGFQcml2aWxlZ2UpID0+IHtcbiAgICAgICAgICAgIHByaXZpbGVnZUxpc3QucHVzaChwcml2aWxlZ2UudHlwZSB8fCAnJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcHJpdmlsZWdlTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgdXNlckFjY291bnQgb2YgdGhlIGN1cnJlbnQgdXNlci4gVGhlIHJldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyIG1ldGhvZFxuICAgKiBtdXN0IGJlIGludm9rZWQgcHJpb3IgdG8gaW52b2tpbmcgdGhpcyBtZXRob2QuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudFVzZXJBY2NvdW50KCk6IE9lcGFVc2VyQWNjb3VudCB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDdXJyZW50VXNlckFjY291bnQoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSB7XG4gICAgdGhpcy5hY2NvdW50ID0gYWNjb3VudDtcbiAgICB0aGlzLnVzZXJBY2NvdW50JC5uZXh0KHRoaXMuYWNjb3VudCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXV0aFRva2VuKCkgOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmF1dGhUb2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBdXRoVG9rZW4odG9rZW46IHN0cmluZykge1xuICAgIHRoaXMuYXV0aFRva2VuID0gdG9rZW47XG4gIH1cbiBcbiAgLyoqXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKiBFQklaIE1FVEhPRFM6XG4gICAqIFRoZSBtZXRob2RzIGJlbG93IGN1cnJlbnRseSBhcHBseSBvbmx5IHRvIGVCaXouXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKi9cblxuICBwdWJsaWMgZ2V0V2ViYXBwc1Jvb3RVUkwoYXBwOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLndlYmFwcHNSb290VVJMKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy53ZWJhcHBzUm9vdFVSTCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArICcvYXBpL3YxL2dhdGV3YXkvZ2F0ZXdheUNvbmZpZyc7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCwgeyBwYXJhbXM6IHsgJ2FwcCc6IGFwcCB9IH0pLnBpcGUobWFwKChnYXRld2F5Q29uZmlnOmFueSkgPT4ge1xuICAgICAgICBpZiAoZ2F0ZXdheUNvbmZpZykge1xuICAgICAgICAgIHRoaXMud2ViYXBwc1Jvb3RVUkwgPSBnYXRld2F5Q29uZmlnLndlYmFwcHNSb290VVJMO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLndlYmFwcHNSb290VVJMO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RUJpelZlcnNpb24oYXBwOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgaWYgKHRoaXMuZWJpelZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuZWJpelZlcnNpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgJy9hcGkvdjEvZ2F0ZXdheS9nYXRld2F5Q29uZmlnJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwsIHsgcGFyYW1zOiB7ICdhcHAnOiBhcHAgfSB9KS5waXBlKG1hcCgoZ2F0ZXdheUNvbmZpZzphbnkpID0+IHtcbiAgICAgICAgICBpZiAoZ2F0ZXdheUNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5lYml6VmVyc2lvbiA9IGdhdGV3YXlDb25maWcudmVyc2lvbk51bWJlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZWJpelZlcnNpb247XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICAgIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFycmF5IG9mIFByb2dyYW1Qcml2aWxlZ2VzIG1hdGNoaW5nIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxBcnJheTxQcm9ncmFtUHJpdmlsZWdlPj5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2hQcml2aWxlZ2VzKHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0OiBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxQcm9ncmFtUHJpdmlsZWdlPj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy9zZWFyY2gnICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFycmF5PFByb2dyYW1Qcml2aWxlZ2U+Pih1cmwsIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LCB7IHBhcmFtczogdGhpcy5wYXJhbXMgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IFByb2dyYW1Qcml2aWxlZ2UgYmFzZWQgb24gY29udGVudHMgb2YgUHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QuXG4gICAqIEBwYXJhbSBwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByb2dyYW1Qcml2aWxlZ2U/XG4gICAqL1xuICBwdWJsaWMgY3JlYXRlUHJvZ3JhbVByaXZpbGVnZShwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdDogUHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QsIGFsdFVzZXJJRD86IHN0cmluZyk6IE9ic2VydmFibGU8UHJvZ3JhbVByaXZpbGVnZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxQcm9ncmFtUHJpdmlsZWdlPih0aGlzLmhvc3RVcmwgKyB0aGlzLmViaXpBY2NvdW50c1VybCArICcvcHJvZ3JhbVByaXZpbGVnZXMnKyAoYWx0VXNlcklEID8gJz91c2VyaWQ9JyArIGFsdFVzZXJJRCA6ICcnKSwgXG4gICAgcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QsIHsgcGFyYW1zOiB0aGlzLnBhcmFtcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIFByb2dyYW1Qcml2aWxlZ2UgaWRlbnRpZmllZCBieSBwcm9ncmFtUHJpdmlsZWdlSUQuXG4gICAqIEBwYXJhbSBwcm9ncmFtUHJpdmlsZWdlSURcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx2b2lkPlxuICAgKi9cbiAgcHVibGljIGRlbGV0ZVByb2dyYW1Qcml2aWxlZ2UocHJvZ3JhbVByaXZpbGVnZUlEOiBzdHJpbmcsIGFsdFVzZXJJRD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzLycgKyBwcm9ncmFtUHJpdmlsZWdlSUQgKyAoYWx0VXNlcklEID8gJz91c2VyaWQ9JyArIGFsdFVzZXJJRCA6ICcnKSwgXG4gICAgeyByZXNwb25zZVR5cGU6ICd0ZXh0JywgcGFyYW1zOiB0aGlzLnBhcmFtcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxlZ2F0ZSBhIHByb2dyYW0gcHJpdmlsZWdlIGJhc2VkIG9uIGluZm9ybWF0aW9uIGluIGRlbGVnYXRpb24uXG4gICAqIEBwYXJhbSBkZWxlZ2F0aW9uXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dm9pZD5cbiAgICovXG4gIHB1YmxpYyBkZWxlZ2F0ZVByb2dyYW1Qcml2aWxlZ2UoZGVsZWdhdGlvbjogRGVsZWdhdGlvbiwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzL2RlbGVnYXRpb24nICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyksXG4gICAgZGVsZWdhdGlvbiwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JywgcGFyYW1zOiB0aGlzLnBhcmFtcyB9KTtcbiAgfVxuXG4gLyoqXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKiBIZWxwZXIgTUVUSE9EUzpcbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqL1xuXG4gICAvKipcbiAgICAqIFNldCB0aGUgdXNlciBhY2NvdW50IHRvIGJlIHVzZWQgZm9yIFwibGl2ZSByZWxvYWQgbW9kZVwiXG4gICAgKiBAcGFyYW0gdXNlckFjY291bnQgXG4gICAgKi9cbiAgICBwdWJsaWMgc2V0TGl2ZVJlbG9hZFVzZXIodXNlckFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgICB0aGlzLmFjY291bnQgPSB1c2VyQWNjb3VudDtcbiAgICAgIGNvbnNvbGUubG9nKCdzZXRMaXZlUmVsb2FkVXNlcjogJyArIHRoaXMuYWNjb3VudD8ubG9naW5OYW1lIHx8ICc8dW5rbm93bj4nKTtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxPZXBhVXNlckFjY291bnQ+KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9saXZlUmVsb2FkJywgdXNlckFjY291bnQpO1xuICAgIH1cblxuICAgLyoqXG4gICAgKiBTdG9yZXMgdGhlIGdpdmVuIHVzZXIgaW4gdGhlIGVCaXogc2Vzc2lvbi5cbiAgICAqIEBwYXJhbSBhY2NvdW50VXNlcklEIFxuICAgICovXG4gICBwdWJsaWMgc3RvcmVVc2VySW5TZXNzaW9uKGFjY291bnRVc2VySUQ6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgIGxldCBhY2N0ID0ge30gYXMgT2VwYVVzZXJBY2NvdW50O1xuICAgICBhY2N0LmFjY291bnRJRCA9IGFjY291bnRVc2VySUQ7XG4gICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxPZXBhVXNlckFjY291bnQ+KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpelNlc3Npb25VcmwgKyAnL3N0b3JlVXNlci8nICsgYWNjb3VudFVzZXJJRCwgbnVsbCAsIHsgcGFyYW1zOiB0aGlzLnBhcmFtcyB9KTtcbiAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlZSBpZiB0aGUgY3VycmVudCB1c2VyIHNob3VsZCBiZSBhbGxvd2VkIHRvIHNlZSBcImRlbW9cIiBjYXBhYmlsaXRpZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVtb0NhcGFiaWxpdGllc0FsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgICBsZXQgZGVtb0FsbG93ZWQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmFjY291bnQgJiYgdGhpcy5hY2NvdW50LnJvbGVMaXN0KSB7XG4gICAgICAgIHRoaXMuYWNjb3VudC5yb2xlTGlzdC5mb3JFYWNoKHJvbGUgPT4ge1xuICAgICAgICAgIGlmIChyb2xlLm5hbWUgPT09ICdBbGxvd0RlbW8nKSB7XG4gICAgICAgICAgICBkZW1vQWxsb3dlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkZW1vQWxsb3dlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhcnRJZGxlVGltZXIodGhyZXNob2xkPzogbnVtYmVyKSB7XG4gICAgICBpZiAodGhpcy50aW1lb3V0SUQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dElEKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaWRsZVRocmVzaG9sZCA9IHRocmVzaG9sZCB8fCB0aGlzLmlkbGVUaHJlc2hvbGQ7XG4gICAgICBpZiAoIXRoaXMuaWRsZVRpbWVyUnVubmluZykge1xuICAgICAgICBjb25zb2xlLmxvZygnVGhlIGlkbGUgdGltZW91dCBzdGFydGVkIHdpdGggdGhyZXNob2xkOiAnICsgdGhpcy5pZGxlVGhyZXNob2xkKTtcbiAgICAgICAgdGhpcy5pZGxlVGltZXJSdW5uaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jaGVja1RpbWVvdXQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRJZGxlVGltZSgpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdpZGxlIHRpbWVyIHJlc2V0Jyk7XG4gICAgICB0aGlzLmlkbGVUaW1lID0gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrVGltZW91dCgpIHtcbiAgICAgIHRoaXMudGltZW91dElEID0gc2V0VGltZW91dCgoKT0+IHtcbiAgICAgICAgdGhpcy5pZGxlVGltZSArPSA2MDtcbiAgICAgICAgY29uc29sZS5sb2coJ2lkbGUgdGltZSA9ICcgKyB0aGlzLmlkbGVUaW1lICsgXCIsIHRocmVzaG9sZCA9IFwiICsgdGhpcy5pZGxlVGhyZXNob2xkKTtcbiAgICAgICAgaWYgKHRoaXMuaWRsZVRpbWUgPj0gdGhpcy5pZGxlVGhyZXNob2xkKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2ZpcmluZyBuZXh0IGlkbGVTdWJqZWN0Li4uJyk7XG4gICAgICAgICAgdGhpcy5pZGxlVGltZXJSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pZGxlU3ViamVjdC5uZXh0KHRoaXMuaWRsZVRpbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnRpbWVvdXRJRCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dElEKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jaGVja1RpbWVvdXQoKTtcbiAgICAgICAgfVxuICAgICAgfSwgNjAwMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJZGxlVGltZW91dCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgcmV0dXJuIHRoaXMuaWRsZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIFxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFdlIHByb2JhYmx5IGRvbid0IHdhbnQgdG8gc3VwcG9ydCB0aGlzIGdvaW5nIGZvcndhcmRcbiAgICAgKiBAcGFyYW0gbWVzc2FnZVxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHB1YmxpYyBsb2dNZXNzYWdlT25TZXJ2ZXIobWVzc2FnZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICBjb25zdCBtZXNzYWdlUmVzcG9uc2U6IGFueSA9IHtcbiAgICAgICAgcmVzcG9uc2U6IG1lc3NhZ2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArICcvYXBpL3YxL3VzZXJBY2NvdW50cy9sb2dzL21lc3NhZ2UnO1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odXJsLCBtZXNzYWdlUmVzcG9uc2UsIHsgcGFyYW1zOiB0aGlzLnBhcmFtcyB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -7048,10 +7048,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
7048
7048
|
class OepaUserAccountService {
|
|
7049
7049
|
http;
|
|
7050
7050
|
ebizRootURL;
|
|
7051
|
+
app;
|
|
7051
7052
|
hostUrl = '/ebiz';
|
|
7052
7053
|
accountsUrl = '/api/v1/user-accounts';
|
|
7053
|
-
ebizAccountsUrl = '/api/
|
|
7054
|
-
ebizSessionUrl = '/api/
|
|
7054
|
+
ebizAccountsUrl = '/api/v2/accounts';
|
|
7055
|
+
ebizSessionUrl = '/api/v2/session';
|
|
7055
7056
|
account;
|
|
7056
7057
|
personID = '';
|
|
7057
7058
|
sessionID = '';
|
|
@@ -7066,11 +7067,14 @@ class OepaUserAccountService {
|
|
|
7066
7067
|
userAccount$ = new Subject();
|
|
7067
7068
|
sessionID$ = new Subject(); // session ID is used for "backdoor" processing of internal (webapps) accounts
|
|
7068
7069
|
authToken = '';
|
|
7069
|
-
|
|
7070
|
+
params = {};
|
|
7071
|
+
constructor(http, ebizRootURL, app) {
|
|
7070
7072
|
this.http = http;
|
|
7071
7073
|
this.ebizRootURL = ebizRootURL;
|
|
7074
|
+
this.app = app;
|
|
7072
7075
|
this.hostUrl = this.ebizRootURL + this.hostUrl;
|
|
7073
|
-
this.logoutPath = '/jsp/logout.jsp';
|
|
7076
|
+
this.logoutPath = this.ebizRootURL + '/jsp/logout.jsp';
|
|
7077
|
+
this.params = { 'app': this.app };
|
|
7074
7078
|
}
|
|
7075
7079
|
/**
|
|
7076
7080
|
* Retrieve the User Account for the user userid.
|
|
@@ -7252,7 +7256,7 @@ class OepaUserAccountService {
|
|
|
7252
7256
|
*/
|
|
7253
7257
|
searchPrivileges(programPrivilegeRequest, altUserID) {
|
|
7254
7258
|
const url = this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/search' + (altUserID ? '?userid=' + altUserID : '');
|
|
7255
|
-
return this.http.post(url, programPrivilegeRequest);
|
|
7259
|
+
return this.http.post(url, programPrivilegeRequest, { params: this.params });
|
|
7256
7260
|
}
|
|
7257
7261
|
/**
|
|
7258
7262
|
* Create a new ProgramPrivilege based on contents of ProgramPrivilegeRequest.
|
|
@@ -7260,7 +7264,7 @@ class OepaUserAccountService {
|
|
|
7260
7264
|
* @returns Observable<ProgramPrivilege?
|
|
7261
7265
|
*/
|
|
7262
7266
|
createProgramPrivilege(programPrivilegeRequest, altUserID) {
|
|
7263
|
-
return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges' + (altUserID ? '?userid=' + altUserID : ''), programPrivilegeRequest);
|
|
7267
|
+
return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges' + (altUserID ? '?userid=' + altUserID : ''), programPrivilegeRequest, { params: this.params });
|
|
7264
7268
|
}
|
|
7265
7269
|
/**
|
|
7266
7270
|
* Delete the ProgramPrivilege identified by programPrivilegeID.
|
|
@@ -7268,7 +7272,7 @@ class OepaUserAccountService {
|
|
|
7268
7272
|
* @returns Observable<void>
|
|
7269
7273
|
*/
|
|
7270
7274
|
deleteProgramPrivilege(programPrivilegeID, altUserID) {
|
|
7271
|
-
return this.http.delete(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/' + programPrivilegeID + (altUserID ? '?userid=' + altUserID : ''), { responseType: 'text' });
|
|
7275
|
+
return this.http.delete(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/' + programPrivilegeID + (altUserID ? '?userid=' + altUserID : ''), { responseType: 'text', params: this.params });
|
|
7272
7276
|
}
|
|
7273
7277
|
/**
|
|
7274
7278
|
* Delegate a program privilege based on information in delegation.
|
|
@@ -7276,7 +7280,7 @@ class OepaUserAccountService {
|
|
|
7276
7280
|
* @returns Observable<void>
|
|
7277
7281
|
*/
|
|
7278
7282
|
delegateProgramPrivilege(delegation, altUserID) {
|
|
7279
|
-
return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/delegation' + (altUserID ? '?userid=' + altUserID : ''), delegation, { responseType: 'text' });
|
|
7283
|
+
return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/delegation' + (altUserID ? '?userid=' + altUserID : ''), delegation, { responseType: 'text', params: this.params });
|
|
7280
7284
|
}
|
|
7281
7285
|
/**
|
|
7282
7286
|
* ===========================================================================================================================
|
|
@@ -7299,7 +7303,7 @@ class OepaUserAccountService {
|
|
|
7299
7303
|
storeUserInSession(accountUserID) {
|
|
7300
7304
|
let acct = {};
|
|
7301
7305
|
acct.accountID = accountUserID;
|
|
7302
|
-
return this.http.post(this.hostUrl + this.ebizSessionUrl + '/storeUser/' + accountUserID, null);
|
|
7306
|
+
return this.http.post(this.hostUrl + this.ebizSessionUrl + '/storeUser/' + accountUserID, null, { params: this.params });
|
|
7303
7307
|
}
|
|
7304
7308
|
/**
|
|
7305
7309
|
* See if the current user should be allowed to see "demo" capabilities
|
|
@@ -7360,16 +7364,22 @@ class OepaUserAccountService {
|
|
|
7360
7364
|
response: message
|
|
7361
7365
|
};
|
|
7362
7366
|
const url = this.hostUrl + '/api/v1/userAccounts/logs/message';
|
|
7363
|
-
return this.http.post(url, messageResponse);
|
|
7367
|
+
return this.http.post(url, messageResponse, { params: this.params });
|
|
7364
7368
|
}
|
|
7365
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
7366
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService });
|
|
7369
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }, { token: 'app' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
7370
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, providedIn: 'root' });
|
|
7367
7371
|
}
|
|
7368
7372
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, decorators: [{
|
|
7369
|
-
type: Injectable
|
|
7373
|
+
type: Injectable,
|
|
7374
|
+
args: [{
|
|
7375
|
+
providedIn: 'root'
|
|
7376
|
+
}]
|
|
7370
7377
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
7371
7378
|
type: Inject,
|
|
7372
7379
|
args: ['ebizRootURL']
|
|
7380
|
+
}] }, { type: undefined, decorators: [{
|
|
7381
|
+
type: Inject,
|
|
7382
|
+
args: ['app']
|
|
7373
7383
|
}] }] });
|
|
7374
7384
|
|
|
7375
7385
|
class OepaPinService {
|