@helgoland/core
Version: 
351 lines (350 loc) • 19.7 kB
JavaScript
/**
 * @fileoverview added by tsickle
 * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
 */
import * as tslib_1 from "tslib";
import { HttpParams } from '@angular/common/http';
import { ApiInterface } from '../abstract-services/api-interface';
var UriParameterCoder = /** @class */ (function () {
    function UriParameterCoder() {
    }
    /**
     * @param {?} key
     * @return {?}
     */
    UriParameterCoder.prototype.encodeKey = /**
     * @param {?} key
     * @return {?}
     */
    function (key) {
        return encodeURIComponent(key);
    };
    /**
     * @param {?} value
     * @return {?}
     */
    UriParameterCoder.prototype.encodeValue = /**
     * @param {?} value
     * @return {?}
     */
    function (value) {
        return encodeURIComponent(value);
    };
    /**
     * @param {?} key
     * @return {?}
     */
    UriParameterCoder.prototype.decodeKey = /**
     * @param {?} key
     * @return {?}
     */
    function (key) {
        return key;
    };
    /**
     * @param {?} value
     * @return {?}
     */
    UriParameterCoder.prototype.decodeValue = /**
     * @param {?} value
     * @return {?}
     */
    function (value) {
        return value;
    };
    return UriParameterCoder;
}());
export { UriParameterCoder };
/**
 * @abstract
 */
var /**
 * @abstract
 */
DatasetApiInterface = /** @class */ (function (_super) {
    tslib_1.__extends(DatasetApiInterface, _super);
    function DatasetApiInterface(httpService, translate) {
        var _this = _super.call(this) || this;
        _this.httpService = httpService;
        _this.translate = translate;
        return _this;
    }
    /**
     * @template T
     * @param {?} url
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.requestApi = /**
     * @template T
     * @param {?} url
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    function (url, params, options) {
        if (params === void 0) { params = {}; }
        if (options === void 0) { options = {}; }
        return this.httpService.client(options).get(url, {
            params: this.prepareParams(params),
            headers: this.createBasicAuthHeader(options.basicAuthToken)
        });
    };
    /**
     * @param {?} params
     * @return {?}
     */
    DatasetApiInterface.prototype.prepareParams = /**
     * @param {?} params
     * @return {?}
     */
    function (params) {
        if (this.translate && this.translate.currentLang) {
            params["locale"] = this.translate.currentLang;
        }
        /** @type {?} */
        var httpParams = new HttpParams({
            encoder: new UriParameterCoder()
        });
        Object.getOwnPropertyNames(params)
            .forEach(function (key) { return httpParams = httpParams.set(key, params[key]); });
        return httpParams;
    };
    return DatasetApiInterface;
}(ApiInterface));
/**
 * @abstract
 */
export { DatasetApiInterface };
if (false) {
    /** @type {?} */
    DatasetApiInterface.prototype.httpService;
    /** @type {?} */
    DatasetApiInterface.prototype.translate;
    /**
     * @abstract
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getPlatforms = function (apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} id
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getPlatform = function (id, apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getDatasets = function (apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} id
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getDataset = function (id, apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} internalId
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getDatasetByInternalId = function (internalId, params, options) { };
    /**
     * @abstract
     * @template T
     * @param {?} id
     * @param {?} apiUrl
     * @param {?} timespan
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getData = function (id, apiUrl, timespan, params, options) { };
    /**
     * @abstract
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getServices = function (apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} id
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getService = function (id, apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getStations = function (apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} id
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getStation = function (id, apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getTimeseries = function (apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} apiUrl
     * @param {?} ids
     * @param {?} timespan
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getTimeseriesData = function (apiUrl, ids, timespan, options) { };
    /**
     * @abstract
     * @param {?} id
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getSingleTimeseries = function (id, apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} internalId
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getSingleTimeseriesByInternalId = function (internalId, params, options) { };
    /**
     * @abstract
     * @param {?} id
     * @param {?} apiUrl
     * @return {?}
     */
    DatasetApiInterface.prototype.getTimeseriesExtras = function (id, apiUrl) { };
    /**
     * @abstract
     * @template T
     * @param {?} id
     * @param {?} apiUrl
     * @param {?} timespan
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getTsData = function (id, apiUrl, timespan, params, options) { };
    /**
     * @abstract
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getCategories = function (apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} id
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getCategory = function (id, apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getPhenomena = function (apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} id
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getPhenomenon = function (id, apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getOfferings = function (apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} id
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getOffering = function (id, apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getFeatures = function (apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} id
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getFeature = function (id, apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getProcedures = function (apiUrl, params, options) { };
    /**
     * @abstract
     * @param {?} id
     * @param {?} apiUrl
     * @param {?=} params
     * @param {?=} options
     * @return {?}
     */
    DatasetApiInterface.prototype.getProcedure = function (id, apiUrl, params, options) { };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BoZWxnb2xhbmQvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9kYXRhc2V0LWFwaS9hcGktaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFzQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUl0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFnQmxFLElBQUE7Ozs7Ozs7SUFFVyxxQ0FBUzs7OztjQUFDLEdBQVc7UUFDeEIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDOzs7Ozs7SUFHNUIsdUNBQVc7Ozs7Y0FBQyxLQUFhO1FBQzVCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7Ozs7O0lBRzlCLHFDQUFTOzs7O2NBQUMsR0FBVztRQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDOzs7Ozs7SUFHUix1Q0FBVzs7OztjQUFDLEtBQWE7UUFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQzs7NEJBbkNyQjtJQXFDQyxDQUFBO0FBakJELDZCQWlCQzs7OztBQUVEOzs7QUFBQTtJQUFrRCwrQ0FBWTtJQUUxRCw2QkFDYyxXQUF3QixFQUN4QixTQUEyQjtRQUZ6QyxZQUdJLGlCQUFPLFNBQUc7UUFGQSxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixlQUFTLEdBQVQsU0FBUyxDQUFrQjs7S0FDM0I7Ozs7Ozs7O0lBNkJKLHdDQUFVOzs7Ozs7O0lBQXBCLFVBQ0ksR0FBVyxFQUFFLE1BQTRCLEVBQUUsT0FBZ0M7UUFBOUQsdUJBQUEsRUFBQSxXQUE0QjtRQUFFLHdCQUFBLEVBQUEsWUFBZ0M7UUFFM0UsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBSSxHQUFHLEVBQzlDO1lBQ0ksTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ2xDLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztTQUM5RCxDQUNKLENBQUM7S0FDTDs7Ozs7SUFFUywyQ0FBYTs7OztJQUF2QixVQUF3QixNQUF1QjtRQUMzQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUMvQyxNQUFNLGFBQVUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7U0FDOUM7O1FBQ0QsSUFBSSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDNUIsT0FBTyxFQUFFLElBQUksaUJBQWlCLEVBQUU7U0FDbkMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQzthQUM3QixPQUFPLENBQUMsVUFBQyxHQUFHLElBQUssT0FBQSxVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQTdDLENBQTZDLENBQUMsQ0FBQztRQUNyRSxNQUFNLENBQUMsVUFBVSxDQUFDO0tBQ3JCOzhCQTlGTDtFQXVDa0QsWUFBWSxFQXdEN0QsQ0FBQTs7OztBQXhERCwrQkF3REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1ldGVyQ29kZWMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwaUludGVyZmFjZSB9IGZyb20gJy4uL2Fic3RyYWN0LXNlcnZpY2VzL2FwaS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICcuLi9tb2RlbC9kYXRhc2V0LWFwaS9jYXRlZ29yeSc7XG5pbXBvcnQgeyBEYXRhIH0gZnJvbSAnLi4vbW9kZWwvZGF0YXNldC1hcGkvZGF0YSc7XG5pbXBvcnQgeyBEYXRhc2V0LCBUaW1lc2VyaWVzLCBUaW1lc2VyaWVzRGF0YSwgVGltZXNlcmllc0V4dHJhcyB9IGZyb20gJy4uL21vZGVsL2RhdGFzZXQtYXBpL2RhdGFzZXQnO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uL21vZGVsL2RhdGFzZXQtYXBpL2ZlYXR1cmUnO1xuaW1wb3J0IHsgT2ZmZXJpbmcgfSBmcm9tICcuLi9tb2RlbC9kYXRhc2V0LWFwaS9vZmZlcmluZyc7XG5pbXBvcnQgeyBQaGVub21lbm9uIH0gZnJvbSAnLi4vbW9kZWwvZGF0YXNldC1hcGkvcGhlbm9tZW5vbic7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJy4uL21vZGVsL2RhdGFzZXQtYXBpL3BsYXRmb3JtJztcbmltcG9ydCB7IFByb2NlZHVyZSB9IGZyb20gJy4uL21vZGVsL2RhdGFzZXQtYXBpL3Byb2NlZHVyZSc7XG5pbXBvcnQgeyBTZXJ2aWNlIH0gZnJvbSAnLi4vbW9kZWwvZGF0YXNldC1hcGkvc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0aW9uIH0gZnJvbSAnLi4vbW9kZWwvZGF0YXNldC1hcGkvc3RhdGlvbic7XG5pbXBvcnQgeyBEYXRhUGFyYW1ldGVyRmlsdGVyLCBIdHRwUmVxdWVzdE9wdGlvbnMsIFBhcmFtZXRlckZpbHRlciB9IGZyb20gJy4uL21vZGVsL2ludGVybmFsL2h0dHAtcmVxdWVzdHMnO1xuaW1wb3J0IHsgVGltZXNwYW4gfSBmcm9tICcuLi9tb2RlbC9pbnRlcm5hbC90aW1lSW50ZXJ2YWwnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHAuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhc2V0QXBpVjIgfSBmcm9tICcuL2ludGVyZmFjZXMvYXBpLXYyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBVcmlQYXJhbWV0ZXJDb2RlciBpbXBsZW1lbnRzIEh0dHBQYXJhbWV0ZXJDb2RlYyB7XG5cbiAgICBwdWJsaWMgZW5jb2RlS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChrZXkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbmNvZGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlY29kZUtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlY29kZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGF0YXNldEFwaUludGVyZmFjZSBleHRlbmRzIEFwaUludGVyZmFjZSBpbXBsZW1lbnRzIERhdGFzZXRBcGlWMiB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkgeyBzdXBlcigpOyB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0UGxhdGZvcm1zKGFwaVVybDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbWV0ZXJGaWx0ZXIsIG9wdGlvbnM/OiBIdHRwUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPFBsYXRmb3JtW10+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRQbGF0Zm9ybShpZDogc3RyaW5nLCBhcGlVcmw6IHN0cmluZywgcGFyYW1zPzogUGFyYW1ldGVyRmlsdGVyLCBvcHRpb25zPzogSHR0cFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxQbGF0Zm9ybT47XG4gICAgcHVibGljIGFic3RyYWN0IGdldERhdGFzZXRzKGFwaVVybDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbWV0ZXJGaWx0ZXIsIG9wdGlvbnM/OiBIdHRwUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPERhdGFzZXRbXT47XG4gICAgcHVibGljIGFic3RyYWN0IGdldERhdGFzZXQoaWQ6IHN0cmluZywgYXBpVXJsOiBzdHJpbmcsIHBhcmFtcz86IFBhcmFtZXRlckZpbHRlciwgb3B0aW9ucz86IEh0dHBSZXF1ZXN0T3B0aW9ucyk6IE9ic2VydmFibGU8RGF0YXNldD47XG4gICAgcHVibGljIGFic3RyYWN0IGdldERhdGFzZXRCeUludGVybmFsSWQoaW50ZXJuYWxJZDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbWV0ZXJGaWx0ZXIsIG9wdGlvbnM/OiBIdHRwUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPERhdGFzZXQ+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRhPFQ+KGlkOiBzdHJpbmcsIGFwaVVybDogc3RyaW5nLCB0aW1lc3BhbjogVGltZXNwYW4sIHBhcmFtcz86IERhdGFQYXJhbWV0ZXJGaWx0ZXIsIG9wdGlvbnM/OiBIdHRwUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPERhdGE8VD4+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRTZXJ2aWNlcyhhcGlVcmw6IHN0cmluZywgcGFyYW1zPzogUGFyYW1ldGVyRmlsdGVyLCBvcHRpb25zPzogSHR0cFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxTZXJ2aWNlW10+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRTZXJ2aWNlKGlkOiBzdHJpbmcsIGFwaVVybDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbWV0ZXJGaWx0ZXIsIG9wdGlvbnM/OiBIdHRwUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPFNlcnZpY2U+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRTdGF0aW9ucyhhcGlVcmw6IHN0cmluZywgcGFyYW1zPzogUGFyYW1ldGVyRmlsdGVyLCBvcHRpb25zPzogSHR0cFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxTdGF0aW9uW10+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRTdGF0aW9uKGlkOiBzdHJpbmcsIGFwaVVybDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbWV0ZXJGaWx0ZXIsIG9wdGlvbnM/OiBIdHRwUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPFN0YXRpb24+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRUaW1lc2VyaWVzKGFwaVVybDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbWV0ZXJGaWx0ZXIsIG9wdGlvbnM/OiBIdHRwUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPFRpbWVzZXJpZXNbXT47XG4gICAgcHVibGljIGFic3RyYWN0IGdldFRpbWVzZXJpZXNEYXRhKGFwaVVybDogc3RyaW5nLCBpZHM6IHN0cmluZ1tdLCB0aW1lc3BhbjogVGltZXNwYW4sIG9wdGlvbnM/OiBIdHRwUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPFRpbWVzZXJpZXNEYXRhW10+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRTaW5nbGVUaW1lc2VyaWVzKGlkOiBzdHJpbmcsIGFwaVVybDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbWV0ZXJGaWx0ZXIsIG9wdGlvbnM/OiBIdHRwUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPFRpbWVzZXJpZXM+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRTaW5nbGVUaW1lc2VyaWVzQnlJbnRlcm5hbElkKGludGVybmFsSWQ6IHN0cmluZywgcGFyYW1zPzogUGFyYW1ldGVyRmlsdGVyLCBvcHRpb25zPzogSHR0cFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxUaW1lc2VyaWVzPjtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0VGltZXNlcmllc0V4dHJhcyhpZDogc3RyaW5nLCBhcGlVcmw6IHN0cmluZyk6IE9ic2VydmFibGU8VGltZXNlcmllc0V4dHJhcz47XG4gICAgcHVibGljIGFic3RyYWN0IGdldFRzRGF0YTxUPihpZDogc3RyaW5nLCBhcGlVcmw6IHN0cmluZywgdGltZXNwYW46IFRpbWVzcGFuLCBwYXJhbXM/OiBEYXRhUGFyYW1ldGVyRmlsdGVyLCBvcHRpb25zPzogSHR0cFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxEYXRhPFQ+PjtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0Q2F0ZWdvcmllcyhhcGlVcmw6IHN0cmluZywgcGFyYW1zPzogUGFyYW1ldGVyRmlsdGVyLCBvcHRpb25zPzogSHR0cFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxDYXRlZ29yeVtdPjtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0Q2F0ZWdvcnkoaWQ6IHN0cmluZywgYXBpVXJsOiBzdHJpbmcsIHBhcmFtcz86IFBhcmFtZXRlckZpbHRlciwgb3B0aW9ucz86IEh0dHBSZXF1ZXN0T3B0aW9ucyk6IE9ic2VydmFibGU8Q2F0ZWdvcnk+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRQaGVub21lbmEoYXBpVXJsOiBzdHJpbmcsIHBhcmFtcz86IFBhcmFtZXRlckZpbHRlciwgb3B0aW9ucz86IEh0dHBSZXF1ZXN0T3B0aW9ucyk6IE9ic2VydmFibGU8UGhlbm9tZW5vbltdPjtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0UGhlbm9tZW5vbihpZDogc3RyaW5nLCBhcGlVcmw6IHN0cmluZywgcGFyYW1zPzogUGFyYW1ldGVyRmlsdGVyLCBvcHRpb25zPzogSHR0cFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxQaGVub21lbm9uPjtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0T2ZmZXJpbmdzKGFwaVVybDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbWV0ZXJGaWx0ZXIsIG9wdGlvbnM/OiBIdHRwUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPE9mZmVyaW5nW10+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRPZmZlcmluZyhpZDogc3RyaW5nLCBhcGlVcmw6IHN0cmluZywgcGFyYW1zPzogUGFyYW1ldGVyRmlsdGVyLCBvcHRpb25zPzogSHR0cFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxPZmZlcmluZz47XG4gICAgcHVibGljIGFic3RyYWN0IGdldEZlYXR1cmVzKGFwaVVybDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbWV0ZXJGaWx0ZXIsIG9wdGlvbnM/OiBIdHRwUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPEZlYXR1cmVbXT47XG4gICAgcHVibGljIGFic3RyYWN0IGdldEZlYXR1cmUoaWQ6IHN0cmluZywgYXBpVXJsOiBzdHJpbmcsIHBhcmFtcz86IFBhcmFtZXRlckZpbHRlciwgb3B0aW9ucz86IEh0dHBSZXF1ZXN0T3B0aW9ucyk6IE9ic2VydmFibGU8RmVhdHVyZT47XG4gICAgcHVibGljIGFic3RyYWN0IGdldFByb2NlZHVyZXMoYXBpVXJsOiBzdHJpbmcsIHBhcmFtcz86IFBhcmFtZXRlckZpbHRlciwgb3B0aW9ucz86IEh0dHBSZXF1ZXN0T3B0aW9ucyk6IE9ic2VydmFibGU8UHJvY2VkdXJlW10+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRQcm9jZWR1cmUoaWQ6IHN0cmluZywgYXBpVXJsOiBzdHJpbmcsIHBhcmFtcz86IFBhcmFtZXRlckZpbHRlciwgb3B0aW9ucz86IEh0dHBSZXF1ZXN0T3B0aW9ucyk6IE9ic2VydmFibGU8UHJvY2VkdXJlPjtcblxuICAgIHByb3RlY3RlZCByZXF1ZXN0QXBpPFQ+KFxuICAgICAgICB1cmw6IHN0cmluZywgcGFyYW1zOiBQYXJhbWV0ZXJGaWx0ZXIgPSB7fSwgb3B0aW9uczogSHR0cFJlcXVlc3RPcHRpb25zID0ge31cbiAgICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuY2xpZW50KG9wdGlvbnMpLmdldDxUPih1cmwsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB0aGlzLnByZXBhcmVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmNyZWF0ZUJhc2ljQXV0aEhlYWRlcihvcHRpb25zLmJhc2ljQXV0aFRva2VuKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwcmVwYXJlUGFyYW1zKHBhcmFtczogUGFyYW1ldGVyRmlsdGVyKTogSHR0cFBhcmFtcyB7XG4gICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZSAmJiB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZykge1xuICAgICAgICAgICAgcGFyYW1zLmxvY2FsZSA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgICAgICB9XG4gICAgICAgIGxldCBodHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZW5jb2RlcjogbmV3IFVyaVBhcmFtZXRlckNvZGVyKClcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHBhcmFtcylcbiAgICAgICAgICAgIC5mb3JFYWNoKChrZXkpID0+IGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldChrZXksIHBhcmFtc1trZXldKSk7XG4gICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xuICAgIH1cbn1cbiJdfQ==