@experteam-mx/ngx-services
Version:
Angular common services for Experteam apps
194 lines • 26.6 kB
JavaScript
import { Inject, Injectable } from '@angular/core';
import { map } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
export class ApiInventoriesService {
environments;
http;
constructor(environments, http) {
this.environments = environments;
this.http = http;
}
/**
* Retrieves the URL for the Inventories API from the environment configurations.
*
* @return {string} The URL of the Inventories API.
*/
get url() {
return this.environments.apiInventoriesUrl ?? '';
}
/**
* Retrieves a list of checkpoints based on query parameters.
*
* @param {QueryParams} params - Query parameters for filtering the checkpoints.
* @returns {Observable<CheckpointsOut>} The list of checkpoints.
*/
getCheckpoints(params) {
return this.http.get(`${this.url}/checkpoints`, {
params
}).pipe(map(({ data }) => data));
}
/**
* Retrieves a list of checkpoint event reasons based on query parameters.
*
* @param {QueryParams} params - Query parameters for filtering the checkpoint event reasons.
* @returns {Observable<CheckpointEventReasonsOut>} The list of checkpoint event reasons.
*/
getCheckpointEventReasons(params) {
return this.http.get(`${this.url}/checkpoint-event-reasons`, {
params
}).pipe(map(({ data }) => data));
}
/**
* Retrieves a list of incidents based on query parameters.
*
* @param {QueryParams} params - Query parameters for filtering the incidents.
* @returns {Observable<IncidentsOut>} An observable that emits the list of incidents.
*/
getIncidents(params) {
return this.http.get(`${this.url}/incidents`, {
params
}).pipe(map(({ data }) => data));
}
/**
* Fetches the incident details based on the provided incident ID.
*
* @param {number} id - The identifier of the incident record to get detail.
* @return {Observable<IncidentOut>} An observable that emits the detail incident data.
*/
getIncident(id) {
return this.http.get(`${this.url}/incidents/${id}`)
.pipe(map(({ data }) => data));
}
/**
* Creates a new incident.
*
* @param {IncidentIn} body - The data for the new incident.
* @returns {Observable<IncidentOut>} An observable the created incident detail.
*/
postIncident(body) {
return this.http.post(`${this.url}/incidents`, body).pipe(map(({ data }) => data));
}
/**
* Updates an existing incident.
*
* @param {number} id - The identifier of the incident record to update.
* @param {IncidentIn} body - The incident data to be updated.
* @returns {Observable<IncidentOut>} An observable detail of the updated incident.
*/
putIncident(id, body) {
return this.http.put(`${this.url}/incidents/${id}`, body).pipe(map(({ data }) => data));
}
/**
* Delete an existing incident.
*
* @param {number} id - The unique identifier of the incident to be deleted.
* @returns {Observable<IncidentOut>} An observable that emits the result of the delete incident.
*/
deleteIncident(id) {
return this.http.delete(`${this.url}/incidents/${id}`)
.pipe(map(({ data }) => data));
}
/**
* Retrieves a list of incident reasons based on query parameters.
*
* @param {QueryParams} params - Query parameters for filtering the incident reasons.
* @returns {Observable<IncidentReasonsOut>} An observable that emits the list of incident reasons.
*/
getIncidentReasons(params) {
return this.http.get(`${this.url}/incident-reasons`, {
params
}).pipe(map(({ data }) => data));
}
/**
* Fetches the incident reason details based on the provided incident reason ID.
*
* @param {number} id - The identifier of the incident reason record to get detail.
* @return {Observable<IncidentReasonOut>} An observable that emits the detail incident reason data.
*/
getIncidentReason(id) {
return this.http.get(`${this.url}/incident-reasons/${id}`)
.pipe(map(({ data }) => data));
}
/**
* Creates a new incident reason.
*
* @param {IncidentReasonIn} body - The data for the new incident reason.
* @returns {Observable<IncidentReasonOut>} An observable the created incident reason detail.
*/
postIncidentReason(body) {
return this.http.post(`${this.url}/incident-reasons`, body).pipe(map(({ data }) => data));
}
/**
* Updates an existing incident reason.
*
* @param {number} id - The identifier of the incident reason record to update.
* @param {IncidentIn} body - The incident reason data to be updated.
* @returns {Observable<IncidentReasonOut>} An observable detail of the updated incident reason.
*/
putIncidentReason(id, body) {
return this.http.put(`${this.url}/incident-reasons/${id}`, body).pipe(map(({ data }) => data));
}
/**
* Delete an existing incident reason.
*
* @param {number} id - The unique identifier of the incident reason to be deleted.
* @returns {Observable<IncidentReasonOut>} An observable that emits the result of the delete incident reason.
*/
deleteIncidentReason(id) {
return this.http.delete(`${this.url}/incident-reasons/${id}`)
.pipe(map(({ data }) => data));
}
/**
* Retrieves a list of incident reason complements based on query parameters.
*
* @param {QueryParams} params - Query parameters for filtering the incident reason complements.
* @returns {Observable<IncidentReasonComplementsOut>} An observable that emits the list of incident reason complements.
*/
getIncidentReasonComplements(params) {
return this.http.get(`${this.url}/incident-reason-complements`, {
params
}).pipe(map(({ data }) => data));
}
/**
* Creates a new incident reason complement.
*
* @param {IncidentReasonIn} body - The data for the new incident reason complement.
* @returns {Observable<IncidentReasonComplementOut>} An observable the created incident reason complement detail.
*/
postIncidentReasonComplement(body) {
return this.http.post(`${this.url}/incident-reason-complements`, body).pipe(map(({ data }) => data));
}
/**
* Updates an existing incident reason complement.
*
* @param {number} id - The identifier of the incident reason complement record to update.
* @param {IncidentIn} body - The incident reason complement data to be updated.
* @returns {Observable<IncidentReasonComplementOut>} An observable detail of the updated incident reason complement.
*/
putIncidentReasonComplement(id, body) {
return this.http.put(`${this.url}/incident-reason-complements/${id}`, body).pipe(map(({ data }) => data));
}
/**
* Delete an existing incident reason complement.
*
* @param {number} id - The unique identifier of the incident reason complement to be deleted.
* @returns {Observable<IncidentReasonComplementOut>} An observable that emits the result of the delete incident reason complement.
*/
deleteIncidentReasonComplement(id) {
return this.http.delete(`${this.url}/incident-reason-complements/${id}`)
.pipe(map(({ data }) => data));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiInventoriesService, deps: [{ token: 'env' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiInventoriesService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiInventoriesService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Inject,
args: ['env']
}] }, { type: i1.HttpClient }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWludmVudG9yaWVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcnRlYW0tbXgvbmd4LXNlcnZpY2VzL3NyYy9saWIvYXBpcy9hcGktaW52ZW50b3JpZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUlsRCxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFBOzs7QUFNdEMsTUFBTSxPQUFPLHFCQUFxQjtJQUVQO0lBQ2Y7SUFGVixZQUN5QixZQUF5QixFQUN4QyxJQUFnQjtRQURELGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3hDLFNBQUksR0FBSixJQUFJLENBQVk7SUFDdEIsQ0FBQztJQUVMOzs7O09BSUc7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFBO0lBQ2xELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBRSxNQUFtQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE2QixHQUFHLElBQUksQ0FBQyxHQUFHLGNBQWMsRUFBRTtZQUMxRSxNQUFNO1NBQ1AsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHlCQUF5QixDQUFFLE1BQW1CO1FBQzVDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXdDLEdBQUcsSUFBSSxDQUFDLEdBQUcsMkJBQTJCLEVBQUU7WUFDbEcsTUFBTTtTQUNQLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUs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Q3ZFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTBDLEdBQUcsSUFBSSxDQUFDLEdBQUcsZ0NBQWdDLEVBQUUsRUFBRSxFQUMzRyxJQUFJLENBQ0wsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw4QkFBOEIsQ0FBRSxFQUFVO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQTBDLEdBQUcsSUFBSSxDQUFDLEdBQUcsZ0NBQWdDLEVBQUUsRUFBRSxDQUFDO2FBQzlHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7d0dBM01VLHFCQUFxQixrQkFFdEIsS0FBSzs0R0FGSixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBR0ksTUFBTTsyQkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9uZ3gtc2VydmljZXMubW9kZWxzJ1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IEFwaVN1Y2Nlc3MsIFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi9tb2RlbHMvYXBpLm1vZGVscydcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgQ2hlY2twb2ludEV2ZW50UmVhc29uc091dCwgQ2hlY2twb2ludHNPdXQsIEluY2lkZW50SW4sIEluY2lkZW50T3V0LCBJbmNpZGVudFJlYXNvbkNvbXBsZW1lbnRJbiwgSW5jaWRlbnRSZWFzb25Db21wbGVtZW50T3V0LCBJbmNpZGVudFJlYXNvbkNvbXBsZW1lbnRzT3V0LCBJbmNpZGVudFJlYXNvbkluLCBJbmNpZGVudFJlYXNvbk91dCwgSW5jaWRlbnRSZWFzb25zT3V0LCBJbmNpZGVudHNPdXQgfSBmcm9tICcuL21vZGVscy9hcGktaW52ZW50b3JpZXMudHlwZXMnXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlJbnZlbnRvcmllc1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yIChcclxuICAgIEBJbmplY3QoJ2VudicpIHByaXZhdGUgZW52aXJvbm1lbnRzOiBFbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG4gICkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgVVJMIGZvciB0aGUgSW52ZW50b3JpZXMgQVBJIGZyb20gdGhlIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25zLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgVVJMIG9mIHRoZSBJbnZlbnRvcmllcyBBUEkuXHJcbiAgICovXHJcbiAgZ2V0IHVybCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50cy5hcGlJbnZlbnRvcmllc1VybCA/PyAnJ1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBjaGVja3BvaW50cyBiYXNlZCBvbiBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gUXVlcnkgcGFyYW1ldGVycyBmb3IgZmlsdGVyaW5nIHRoZSBjaGVja3BvaW50cy5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxDaGVja3BvaW50c091dD59IFRoZSBsaXN0IG9mIGNoZWNrcG9pbnRzLlxyXG4gICAqL1xyXG4gIGdldENoZWNrcG9pbnRzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxDaGVja3BvaW50c091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDaGVja3BvaW50c091dD4+KGAke3RoaXMudXJsfS9jaGVja3BvaW50c2AsIHtcclxuICAgICAgcGFyYW1zXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBjaGVja3BvaW50IGV2ZW50IHJlYXNvbnMgYmFzZWQgb24gcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZpbHRlcmluZyB0aGUgY2hlY2twb2ludCBldmVudCByZWFzb25zLlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPENoZWNrcG9pbnRFdmVudFJlYXNvbnNPdXQ+fSBUaGUgbGlzdCBvZiBjaGVja3BvaW50IGV2ZW50IHJlYXNvbnMuXHJcbiAgICovXHJcbiAgZ2V0Q2hlY2twb2ludEV2ZW50UmVhc29ucyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q2hlY2twb2ludEV2ZW50UmVhc29uc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDaGVja3BvaW50RXZlbnRSZWFzb25zT3V0Pj4oYCR7dGhpcy51cmx9L2NoZWNrcG9pbnQtZXZlbnQtcmVhc29uc2AsIHtcclxuICAgICAgcGFyYW1zXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBpbmNpZGVudHMgYmFzZWQgb24gcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZpbHRlcmluZyB0aGUgaW5jaWRlbnRzLlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEluY2lkZW50c091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgbGlzdCBvZiBpbmNpZGVudHMuXHJcbiAgICovXHJcbiAgZ2V0SW5jaWRlbnRzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxJbmNpZGVudHNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8SW5jaWRlbnRzT3V0Pj4oYCR7dGhpcy51cmx9L2luY2lkZW50c2AsIHtcclxuICAgICAgcGFyYW1zXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgaW5jaWRlbnQgZGV0YWlscyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgaW5jaWRlbnQgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgaWRlbnRpZmllciBvZiB0aGUgaW5jaWRlbnQgcmVjb3JkIHRvIGdldCBkZXRhaWwuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxJbmNpZGVudE91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZGV0YWlsIGluY2lkZW50IGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0SW5jaWRlbnQgKGlkOiBOdW1iZXIpOiBPYnNlcnZhYmxlPEluY2lkZW50T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEluY2lkZW50T3V0Pj4oYCR7dGhpcy51cmx9L2luY2lkZW50cy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBpbmNpZGVudC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7SW5jaWRlbnRJbn0gYm9keSAtIFRoZSBkYXRhIGZvciB0aGUgbmV3IGluY2lkZW50LlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEluY2lkZW50T3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGUgY3JlYXRlZCBpbmNpZGVudCBkZXRhaWwuXHJcbiAgICovXHJcbiAgcG9zdEluY2lkZW50IChib2R5OiBJbmNpZGVudEluKTogT2JzZXJ2YWJsZTxJbmNpZGVudE91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8SW5jaWRlbnRPdXQ+PihgJHt0aGlzLnVybH0vaW5jaWRlbnRzYCxcclxuICAgICAgYm9keVxyXG4gICAgKS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBhbiBleGlzdGluZyBpbmNpZGVudC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpbmNpZGVudCByZWNvcmQgdG8gdXBkYXRlLlxyXG4gICAqIEBwYXJhbSB7SW5jaWRlbnRJbn0gYm9keSAtIFRoZSBpbmNpZGVudCBkYXRhIHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8SW5jaWRlbnRPdXQ+fSBBbiBvYnNlcnZhYmxlIGRldGFpbCBvZiB0aGUgdXBkYXRlZCBpbmNpZGVudC5cclxuICAgKi9cclxuICBwdXRJbmNpZGVudCAoaWQ6IE51bWJlciwgYm9keTogSW5jaWRlbnRJbik6IE9ic2VydmFibGU8SW5jaWRlbnRPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8SW5jaWRlbnRPdXQ+PihgJHt0aGlzLnVybH0vaW5jaWRlbnRzLyR7aWR9YCxcclxuICAgICAgYm9keVxyXG4gICAgKS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlIGFuIGV4aXN0aW5nIGluY2lkZW50LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBpbmNpZGVudCB0byBiZSBkZWxldGVkLlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEluY2lkZW50T3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXN1bHQgb2YgdGhlIGRlbGV0ZSBpbmNpZGVudC5cclxuICAgKi9cclxuICBkZWxldGVJbmNpZGVudCAoaWQ6IE51bWJlcik6IE9ic2VydmFibGU8SW5jaWRlbnRPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPEFwaVN1Y2Nlc3M8SW5jaWRlbnRPdXQ+PihgJHt0aGlzLnVybH0vaW5jaWRlbnRzLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGluY2lkZW50IHJlYXNvbnMgYmFzZWQgb24gcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZpbHRlcmluZyB0aGUgaW5jaWRlbnQgcmVhc29ucy5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxJbmNpZGVudFJlYXNvbnNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGxpc3Qgb2YgaW5jaWRlbnQgcmVhc29ucy5cclxuICAgKi9cclxuICBnZXRJbmNpZGVudFJlYXNvbnMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPEluY2lkZW50UmVhc29uc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxJbmNpZGVudFJlYXNvbnNPdXQ+PihgJHt0aGlzLnVybH0vaW5jaWRlbnQtcmVhc29uc2AsIHtcclxuICAgICAgcGFyYW1zXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgaW5jaWRlbnQgcmVhc29uIGRldGFpbHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGluY2lkZW50IHJlYXNvbiBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpbmNpZGVudCByZWFzb24gcmVjb3JkIHRvIGdldCBkZXRhaWwuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxJbmNpZGVudFJlYXNvbk91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZGV0YWlsIGluY2lkZW50IHJlYXNvbiBkYXRhLlxyXG4gICAqL1xyXG4gIGdldEluY2lkZW50UmVhc29uIChpZDogTnVtYmVyKTogT2JzZXJ2YWJsZTxJbmNpZGVudFJlYXNvbk91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxJbmNpZGVudFJlYXNvbk91dD4+KGAke3RoaXMudXJsfS9pbmNpZGVudC1yZWFzb25zLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgbmV3IGluY2lkZW50IHJlYXNvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7SW5jaWRlbnRSZWFzb25Jbn0gYm9keSAtIFRoZSBkYXRhIGZvciB0aGUgbmV3IGluY2lkZW50IHJlYXNvbi5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxJbmNpZGVudFJlYXNvbk91dD59IEFuIG9ic2VydmFibGUgdGhlIGNyZWF0ZWQgaW5jaWRlbnQgcmVhc29uIGRldGFpbC5cclxuICAgKi9cclxuICBwb3N0SW5jaWRlbnRSZWFzb24gKGJvZHk6IEluY2lkZW50UmVhc29uSW4pOiBPYnNlcnZhYmxlPEluY2lkZW50UmVhc29uT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxJbmNpZGVudFJlYXNvbk91dD4+KGAke3RoaXMudXJsfS9pbmNpZGVudC1yZWFzb25zYCxcclxuICAgICAgYm9keVxyXG4gICAgKS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBhbiBleGlzdGluZyBpbmNpZGVudCByZWFzb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgaWRlbnRpZmllciBvZiB0aGUgaW5jaWRlbnQgcmVhc29uIHJlY29yZCB0byB1cGRhdGUuXHJcbiAgICogQHBhcmFtIHtJbmNpZGVudElufSBib2R5IC0gVGhlIGluY2lkZW50IHJlYXNvbiBkYXRhIHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8SW5jaWRlbnRSZWFzb25PdXQ+fSBBbiBvYnNlcnZhYmxlIGRldGFpbCBvZiB0aGUgdXBkYXRlZCBpbmNpZGVudCByZWFzb24uXHJcbiAgICovXHJcbiAgcHV0SW5jaWRlbnRSZWFzb24gKGlkOiBOdW1iZXIsIGJvZHk6IEluY2lkZW50UmVhc29uSW4pOiBPYnNlcnZhYmxlPEluY2lkZW50UmVhc29uT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPEluY2lkZW50UmVhc29uT3V0Pj4oYCR7dGhpcy51cmx9L2luY2lkZW50LXJlYXNvbnMvJHtpZH1gLFxyXG4gICAgICBib2R5XHJcbiAgICApLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGUgYW4gZXhpc3RpbmcgaW5jaWRlbnQgcmVhc29uLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBpbmNpZGVudCByZWFzb24gdG8gYmUgZGVsZXRlZC5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxJbmNpZGVudFJlYXNvbk91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzdWx0IG9mIHRoZSBkZWxldGUgaW5jaWRlbnQgcmVhc29uLlxyXG4gICAqL1xyXG4gIGRlbGV0ZUluY2lkZW50UmVhc29uIChpZDogTnVtYmVyKTogT2JzZXJ2YWJsZTxJbmNpZGVudFJlYXNvbk91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8QXBpU3VjY2VzczxJbmNpZGVudFJlYXNvbk91dD4+KGAke3RoaXMudXJsfS9pbmNpZGVudC1yZWFzb25zLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGluY2lkZW50IHJlYXNvbiBjb21wbGVtZW50cyBiYXNlZCBvbiBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gUXVlcnkgcGFyYW1ldGVycyBmb3IgZmlsdGVyaW5nIHRoZSBpbmNpZGVudCByZWFzb24gY29tcGxlbWVudHMuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8SW5jaWRlbnRSZWFzb25Db21wbGVtZW50c091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgbGlzdCBvZiBpbmNpZGVudCByZWFzb24gY29tcGxlbWVudHMuXHJcbiAgICovXHJcbiAgZ2V0SW5jaWRlbnRSZWFzb25Db21wbGVtZW50cyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8SW5jaWRlbnRSZWFzb25Db21wbGVtZW50c091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxJbmNpZGVudFJlYXNvbkNvbXBsZW1lbnRzT3V0Pj4oYCR7dGhpcy51cmx9L2luY2lkZW50LXJlYXNvbi1jb21wbGVtZW50c2AsIHtcclxuICAgICAgcGFyYW1zXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBpbmNpZGVudCByZWFzb24gY29tcGxlbWVudC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7SW5jaWRlbnRSZWFzb25Jbn0gYm9keSAtIFRoZSBkYXRhIGZvciB0aGUgbmV3IGluY2lkZW50IHJlYXNvbiBjb21wbGVtZW50LlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEluY2lkZW50UmVhc29uQ29tcGxlbWVudE91dD59IEFuIG9ic2VydmFibGUgdGhlIGNyZWF0ZWQgaW5jaWRlbnQgcmVhc29uIGNvbXBsZW1lbnQgZGV0YWlsLlxyXG4gICAqL1xyXG4gIHBvc3RJbmNpZGVudFJlYXNvbkNvbXBsZW1lbnQgKGJvZHk6IEluY2lkZW50UmVhc29uQ29tcGxlbWVudEluKTogT2JzZXJ2YWJsZTxJbmNpZGVudFJlYXNvbkNvbXBsZW1lbnRPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPEluY2lkZW50UmVhc29uQ29tcGxlbWVudE91dD4+KGAke3RoaXMudXJsfS9pbmNpZGVudC1yZWFzb24tY29tcGxlbWVudHNgLFxyXG4gICAgICBib2R5XHJcbiAgICApLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGluY2lkZW50IHJlYXNvbiBjb21wbGVtZW50LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIGlkZW50aWZpZXIgb2YgdGhlIGluY2lkZW50IHJlYXNvbiBjb21wbGVtZW50IHJlY29yZCB0byB1cGRhdGUuXHJcbiAgICogQHBhcmFtIHtJbmNpZGVudElufSBib2R5IC0gVGhlIGluY2lkZW50IHJlYXNvbiBjb21wbGVtZW50IGRhdGEgdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxJbmNpZGVudFJlYXNvbkNvbXBsZW1lbnRPdXQ+fSBBbiBvYnNlcnZhYmxlIGRldGFpbCBvZiB0aGUgdXBkYXRlZCBpbmNpZGVudCByZWFzb24gY29tcGxlbWVudC5cclxuICAgKi9cclxuICBwdXRJbmNpZGVudFJlYXNvbkNvbXBsZW1lbnQgKGlkOiBOdW1iZXIsIGJvZHk6IEluY2lkZW50UmVhc29uQ29tcGxlbWVudEluKTogT2JzZXJ2YWJsZTxJbmNpZGVudFJlYXNvbkNvbXBsZW1lbnRPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8SW5jaWRlbnRSZWFzb25Db21wbGVtZW50T3V0Pj4oYCR7dGhpcy51cmx9L2luY2lkZW50LXJlYXNvbi1jb21wbGVtZW50cy8ke2lkfWAsXHJcbiAgICAgIGJvZHlcclxuICAgICkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZSBhbiBleGlzdGluZyBpbmNpZGVudCByZWFzb24gY29tcGxlbWVudC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgaW5jaWRlbnQgcmVhc29uIGNvbXBsZW1lbnQgdG8gYmUgZGVsZXRlZC5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxJbmNpZGVudFJlYXNvbkNvbXBsZW1lbnRPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3VsdCBvZiB0aGUgZGVsZXRlIGluY2lkZW50IHJlYXNvbiBjb21wbGVtZW50LlxyXG4gICAqL1xyXG4gIGRlbGV0ZUluY2lkZW50UmVhc29uQ29tcGxlbWVudCAoaWQ6IE51bWJlcik6IE9ic2VydmFibGU8SW5jaWRlbnRSZWFzb25Db21wbGVtZW50T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxBcGlTdWNjZXNzPEluY2lkZW50UmVhc29uQ29tcGxlbWVudE91dD4+KGAke3RoaXMudXJsfS9pbmNpZGVudC1yZWFzb24tY29tcGxlbWVudHMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcbn1cclxuIl19