@experteam-mx/ngx-services
Version:
Angular common services for Experteam apps
104 lines • 14.4 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 ApiNotificationsService {
environments;
http;
constructor(environments, http) {
this.environments = environments;
this.http = http;
}
/**
* Retrieves the URL for the notifications API from the environment settings.
* If the URL is not defined, an empty string is returned.
*
* @return {string} The API Notifications URL or an empty string if not defined.
*/
get url() {
return this.environments.apiNotificationsUrl ?? '';
}
/**
* Retrieves notifications based on the provided query parameters.
*
* @param {QueryParams} params - The query parameters used to filter and retrieve notifications.
* @return {Observable<NotificationsOut>} An observable that emits the fetched notifications.
*/
getNotifications(params) {
return this.http.get(`${this.url}/notifications`, { params })
.pipe(map(({ data }) => data));
}
/**
* Sends a notification request to the server using the provided body.
*
* @param {NotificationIn} body - The notification data to be sent in the request body.
* @return {Observable<NotificationOut>} An observable emitting the response containing the notification output data.
*/
postNotification(body) {
return this.http.post(`${this.url}/notifications`, { body })
.pipe(map(({ data }) => data));
}
/**
* Sends a PUT request to update a notification with the provided ID and body.
*
* @param {number} id - The unique identifier of the notification to be updated.
* @param {NotificationIn} body - The data to update the notification with.
* @return {Observable<NotificationOut>} An observable containing the updated notification data.
*/
putNotification(id, body) {
return this.http.put(`${this.url}/notifications/${id}`, { body })
.pipe(map(({ data }) => data));
}
/**
* Deletes a notification by its unique identifier.
*
* @param {number} id - The unique identifier of the notification to delete.
* @return {Observable<{}>} An observable that emits the response after deleting the notification.
*/
deleteNotification(id) {
return this.http.delete(`${this.url}/notifications/${id}`)
.pipe(map(({ data }) => data));
}
/**
* Marks the notification as finished for the specified notification ID.
*
* @param {number} id - The unique identifier of the notification to be marked as finished.
* @return {Observable<NotificationOut>} An Observable emitting the updated notification object.
*/
putNotificationFinish(id) {
return this.http.put(`${this.url}/notifications/finish/${id}`, {})
.pipe(map(({ data }) => data));
}
/**
* Sends a POST request to create or update notification configurations.
*
* @param {NotificationConfigurationIn} body - The notification configuration payload to be sent in the request.
* @return {Observable<NotificationConfigurationOut>} An observable emitting the response containing the created or updated notification configuration.
*/
postNotificationConfigurations(body) {
return this.http.post(`${this.url}/notification-configurations`, { body })
.pipe(map(({ data }) => data));
}
/**
* Retrieves the notification types based on the provided query parameters.
*
* @param {QueryParams} params - The query parameters for fetching the notification types.
* @return {Observable<NotificationsTypeOut>} An observable that emits the fetched notification types.
*/
getNotificationsType(params) {
return this.http.get(`${this.url}/notifications-type`, { params })
.pipe(map(({ data }) => data));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiNotificationsService, 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: ApiNotificationsService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiNotificationsService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Inject,
args: ['env']
}] }, { type: i1.HttpClient }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLW5vdGlmaWNhdGlvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS1teC9uZ3gtc2VydmljZXMvc3JjL2xpYi9hcGlzL2FwaS1ub3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFXbEQsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQTs7O0FBS3RDLE1BQU0sT0FBTyx1QkFBdUI7SUFFVDtJQUNmO0lBRlYsWUFDeUIsWUFBeUIsRUFDeEMsSUFBZ0I7UUFERCxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN4QyxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3RCLENBQUM7SUFFTDs7Ozs7T0FLRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUE7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZ0JBQWdCLENBQUUsTUFBbUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBK0IsR0FBRyxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3hGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFFLElBQW9CO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQThCLEdBQUcsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN0RixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFFLEVBQVUsRUFBRSxJQUFvQjtRQUMvQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE4QixHQUFHLElBQUksQ0FBQyxHQUFHLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzNGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGtCQUFrQixDQUFFLEVBQVU7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBaUIsR0FBRyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7YUFDdkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUUsRUFBVTtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE4QixHQUFHLElBQUksQ0FBQyxHQUFHLHlCQUF5QixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7YUFDNUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsOEJBQThCLENBQUUsSUFBaUM7UUFDL0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBMkMsR0FBRyxJQUFJLENBQUMsR0FBRyw4QkFBOEIsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ2pILElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILG9CQUFvQixDQUFFLE1BQW1CO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQW1DLEdBQUcsSUFBSSxDQUFDLEdBQUcscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUNqRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO3dHQTVGVSx1QkFBdUIsa0JBRXhCLEtBQUs7NEdBRkosdUJBQXVCLGNBRnRCLE1BQU07OzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9uZ3gtc2VydmljZXMubW9kZWxzJ1xyXG5pbXBvcnQgeyBBcGlTdWNjZXNzLCBRdWVyeVBhcmFtcyB9IGZyb20gJy4vbW9kZWxzL2FwaS5tb2RlbHMnXHJcbmltcG9ydCB7XHJcbiAgTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkluLFxyXG4gIE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25PdXQsXHJcbiAgTm90aWZpY2F0aW9uSW4sXHJcbiAgTm90aWZpY2F0aW9uT3V0LFxyXG4gIE5vdGlmaWNhdGlvbnNPdXQsXHJcbiAgTm90aWZpY2F0aW9uc1R5cGVPdXRcclxufSBmcm9tICcuL21vZGVscy9hcGktbm90aWZpY2F0aW9ucy50eXBlcydcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaU5vdGlmaWNhdGlvbnNTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvciAoXHJcbiAgICBASW5qZWN0KCdlbnYnKSBwcml2YXRlIGVudmlyb25tZW50czogRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIFVSTCBmb3IgdGhlIG5vdGlmaWNhdGlvbnMgQVBJIGZyb20gdGhlIGVudmlyb25tZW50IHNldHRpbmdzLlxyXG4gICAqIElmIHRoZSBVUkwgaXMgbm90IGRlZmluZWQsIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIEFQSSBOb3RpZmljYXRpb25zIFVSTCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgbm90IGRlZmluZWQuXHJcbiAgICovXHJcbiAgZ2V0IHVybCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50cy5hcGlOb3RpZmljYXRpb25zVXJsID8/ICcnXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgbm90aWZpY2F0aW9ucyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIGFuZCByZXRyaWV2ZSBub3RpZmljYXRpb25zLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Tm90aWZpY2F0aW9uc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZmV0Y2hlZCBub3RpZmljYXRpb25zLlxyXG4gICAqL1xyXG4gIGdldE5vdGlmaWNhdGlvbnMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbnNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Tm90aWZpY2F0aW9uc091dD4+KGAke3RoaXMudXJsfS9ub3RpZmljYXRpb25zYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIG5vdGlmaWNhdGlvbiByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIHByb3ZpZGVkIGJvZHkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge05vdGlmaWNhdGlvbklufSBib2R5IC0gVGhlIG5vdGlmaWNhdGlvbiBkYXRhIHRvIGJlIHNlbnQgaW4gdGhlIHJlcXVlc3QgYm9keS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbk91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGNvbnRhaW5pbmcgdGhlIG5vdGlmaWNhdGlvbiBvdXRwdXQgZGF0YS5cclxuICAgKi9cclxuICBwb3N0Tm90aWZpY2F0aW9uIChib2R5OiBOb3RpZmljYXRpb25Jbik6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxOb3RpZmljYXRpb25PdXQ+PihgJHt0aGlzLnVybH0vbm90aWZpY2F0aW9uc2AsIHsgYm9keSB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgUFVUIHJlcXVlc3QgdG8gdXBkYXRlIGEgbm90aWZpY2F0aW9uIHdpdGggdGhlIHByb3ZpZGVkIElEIGFuZCBib2R5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge05vdGlmaWNhdGlvbklufSBib2R5IC0gVGhlIGRhdGEgdG8gdXBkYXRlIHRoZSBub3RpZmljYXRpb24gd2l0aC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbk91dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgdXBkYXRlZCBub3RpZmljYXRpb24gZGF0YS5cclxuICAgKi9cclxuICBwdXROb3RpZmljYXRpb24gKGlkOiBudW1iZXIsIGJvZHk6IE5vdGlmaWNhdGlvbkluKTogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8Tm90aWZpY2F0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L25vdGlmaWNhdGlvbnMvJHtpZH1gLCB7IGJvZHkgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgbm90aWZpY2F0aW9uIGJ5IGl0cyB1bmlxdWUgaWRlbnRpZmllci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgbm90aWZpY2F0aW9uIHRvIGRlbGV0ZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPHt9Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZSBhZnRlciBkZWxldGluZyB0aGUgbm90aWZpY2F0aW9uLlxyXG4gICAqL1xyXG4gIGRlbGV0ZU5vdGlmaWNhdGlvbiAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8e30+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPEFwaVN1Y2Nlc3M8e30+PihgJHt0aGlzLnVybH0vbm90aWZpY2F0aW9ucy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFya3MgdGhlIG5vdGlmaWNhdGlvbiBhcyBmaW5pc2hlZCBmb3IgdGhlIHNwZWNpZmllZCBub3RpZmljYXRpb24gSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG5vdGlmaWNhdGlvbiB0byBiZSBtYXJrZWQgYXMgZmluaXNoZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxOb3RpZmljYXRpb25PdXQ+fSBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSB1cGRhdGVkIG5vdGlmaWNhdGlvbiBvYmplY3QuXHJcbiAgICovXHJcbiAgcHV0Tm90aWZpY2F0aW9uRmluaXNoIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8Tm90aWZpY2F0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L25vdGlmaWNhdGlvbnMvZmluaXNoLyR7aWR9YCwge30pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBQT1NUIHJlcXVlc3QgdG8gY3JlYXRlIG9yIHVwZGF0ZSBub3RpZmljYXRpb24gY29uZmlndXJhdGlvbnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge05vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25Jbn0gYm9keSAtIFRoZSBub3RpZmljYXRpb24gY29uZmlndXJhdGlvbiBwYXlsb2FkIHRvIGJlIHNlbnQgaW4gdGhlIHJlcXVlc3QuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Db25maWd1cmF0aW9uT3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzcG9uc2UgY29udGFpbmluZyB0aGUgY3JlYXRlZCBvciB1cGRhdGVkIG5vdGlmaWNhdGlvbiBjb25maWd1cmF0aW9uLlxyXG4gICAqL1xyXG4gIHBvc3ROb3RpZmljYXRpb25Db25maWd1cmF0aW9ucyAoYm9keTogTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkluKTogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Db25maWd1cmF0aW9uT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxOb3RpZmljYXRpb25Db25maWd1cmF0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L25vdGlmaWNhdGlvbi1jb25maWd1cmF0aW9uc2AsIHsgYm9keSB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgbm90aWZpY2F0aW9uIHR5cGVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZldGNoaW5nIHRoZSBub3RpZmljYXRpb24gdHlwZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxOb3RpZmljYXRpb25zVHlwZU91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZmV0Y2hlZCBub3RpZmljYXRpb24gdHlwZXMuXHJcbiAgICovXHJcbiAgZ2V0Tm90aWZpY2F0aW9uc1R5cGUgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbnNUeXBlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPE5vdGlmaWNhdGlvbnNUeXBlT3V0Pj4oYCR7dGhpcy51cmx9L25vdGlmaWNhdGlvbnMtdHlwZWAsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxufVxyXG4iXX0=