UNPKG

ionic-image-loader-v5

Version:
266 lines 19.7 kB
/** * @fileoverview added by tsickle * Generated from: lib/services/image-loader-config.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; export class ImageLoaderConfigService { constructor() { this.debugMode = false; this.spinnerEnabled = true; this.fallbackAsPlaceholder = false; this.backgroundSize = 'contain'; this.backgroundRepeat = 'no-repeat'; this.display = 'block'; this.width = '100%'; this.height = '100%'; this.useImg = false; this.concurrency = 5; this.maxCacheSize = -1; this.maxCacheAge = -1; this.imageReturnType = 'uri'; // Must be default 'true' for the new WebView to show images this.fileNameCachedWithExtension = true; this.fallbackFileNameCachedExtension = '.jpg'; this.cacheDirectoryType = 'cache'; this._cacheDirectoryName = 'image-loader-cache'; } /** * @return {?} */ get cacheDirectoryName() { return this._cacheDirectoryName; } /** * @param {?} name * @return {?} */ set cacheDirectoryName(name) { name.replace(/\W/g, ''); this._cacheDirectoryName = name; } /** * Enables debug mode to receive console logs, errors, warnings * @return {?} */ enableDebugMode() { this.debugMode = true; } /** * Enable/Disable the spinner by default. Defaults to true. * @param {?} enable set to true to enable * @return {?} */ enableSpinner(enable) { this.spinnerEnabled = enable; } /** * Enable/Disable the fallback image as placeholder instead of the spinner. Defaults to false. * @param {?} enable set to true to enable * @return {?} */ enableFallbackAsPlaceholder(enable) { this.fallbackAsPlaceholder = enable; } /** * Sets the cache directory name. Defaults to 'image-loader-cache' * @param {?} name name of directory * @return {?} */ setCacheDirectoryName(name) { this.cacheDirectoryName = name; } /** * Set default height for images that are not using <img> tag * @param {?} height height * @return {?} */ setHeight(height) { this.height = height; } /** * Set default width for images that are not using <img> tag * @param {?} width Width * @return {?} */ setWidth(width) { this.width = width; } /** * Enable display mode for images that are not using <img> tag * @param {?} display Display mode * @return {?} */ setDisplay(display) { this.display = display; } /** * Use <img> tag by default * @param {?} use set to true to use <img> tag by default * @return {?} */ useImageTag(use) { this.useImg = use; } /** * Set default background size for images that are not using <img> tag * @param {?} backgroundSize Background size * @return {?} */ setBackgroundSize(backgroundSize) { this.backgroundSize = backgroundSize; } /** * Set background repeat for images that are not using <img> tag * @param {?} backgroundRepeat Background repeat * @return {?} */ setBackgroundRepeat(backgroundRepeat) { this.backgroundRepeat = backgroundRepeat; } /** * Set fallback URL to use when image src is undefined or did not resolve. * This image will not be cached. This should ideally be a locally saved image. * @param {?} fallbackUrl The remote or local URL of the image * @return {?} */ setFallbackUrl(fallbackUrl) { this.fallbackUrl = fallbackUrl; } /** * Set the maximum number of allowed connections at the same time. * @param {?} concurrency * @return {?} */ setConcurrency(concurrency) { this.concurrency = concurrency; } /** * Sets the maximum allowed cache size * @param {?} cacheSize Cache size in bytes * @return {?} */ setMaximumCacheSize(cacheSize) { this.maxCacheSize = cacheSize; } /** * Sets the maximum allowed cache age * @param {?} cacheAge Maximum cache age in milliseconds * @return {?} */ setMaximumCacheAge(cacheAge) { this.maxCacheAge = cacheAge; } /** * Set the return type of cached images * @param {?} imageReturnType The return type; either 'base64' or 'uri' * @return {?} */ setImageReturnType(imageReturnType) { this.imageReturnType = imageReturnType; } /** * Set the default spinner name * @param {?} name * @return {?} */ setSpinnerName(name) { this.spinnerName = name; } /** * Set the default spinner color * @param {?} color * @return {?} */ setSpinnerColor(color) { this.spinnerColor = color; } /** * Set headers options for the HttpClient transfers. * @param {?} headers * @return {?} */ setHttpHeaders(headers) { this.httpHeaders = headers; } /** * Set options for the FileTransfer plugin * @deprecated FileTransfer plugin removed. * @param {?} options * @return {?} */ setFileTransferOptions(options) { // do nothing, plugin deprecated. } /** * Enable/Disable the save filename of cached images with extension. Defaults to false. * @param {?} enable set to true to enable * @return {?} */ setFileNameCachedWithExtension(enable) { this.fileNameCachedWithExtension = enable; } /** * Set fallback extension filename of cached images. Defaults to '.jpg'. * @param {?} extension fallback extension (e.x .jpg) * @return {?} */ setFallbackFileNameCachedExtension(extension) { this.fallbackFileNameCachedExtension = extension; } } ImageLoaderConfigService.decorators = [ { type: Injectable, args: [{ providedIn: 'root', },] } ]; /** @nocollapse */ ImageLoaderConfigService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ImageLoaderConfigService_Factory() { return new ImageLoaderConfigService(); }, token: ImageLoaderConfigService, providedIn: "root" }); if (false) { /** @type {?} */ ImageLoaderConfigService.prototype.debugMode; /** @type {?} */ ImageLoaderConfigService.prototype.spinnerEnabled; /** @type {?} */ ImageLoaderConfigService.prototype.fallbackAsPlaceholder; /** @type {?} */ ImageLoaderConfigService.prototype.backgroundSize; /** @type {?} */ ImageLoaderConfigService.prototype.backgroundRepeat; /** @type {?} */ ImageLoaderConfigService.prototype.display; /** @type {?} */ ImageLoaderConfigService.prototype.width; /** @type {?} */ ImageLoaderConfigService.prototype.height; /** @type {?} */ ImageLoaderConfigService.prototype.useImg; /** @type {?} */ ImageLoaderConfigService.prototype.fallbackUrl; /** @type {?} */ ImageLoaderConfigService.prototype.concurrency; /** @type {?} */ ImageLoaderConfigService.prototype.maxCacheSize; /** @type {?} */ ImageLoaderConfigService.prototype.maxCacheAge; /** @type {?} */ ImageLoaderConfigService.prototype.imageReturnType; /** @type {?} */ ImageLoaderConfigService.prototype.spinnerName; /** @type {?} */ ImageLoaderConfigService.prototype.spinnerColor; /** @type {?} */ ImageLoaderConfigService.prototype.httpHeaders; /** @type {?} */ ImageLoaderConfigService.prototype.fileNameCachedWithExtension; /** @type {?} */ ImageLoaderConfigService.prototype.fallbackFileNameCachedExtension; /** @type {?} */ ImageLoaderConfigService.prototype.cacheDirectoryType; /** * @type {?} * @private */ ImageLoaderConfigService.prototype._cacheDirectoryName; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtbG9hZGVyLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaW9uaWMtaW1hZ2UtbG9hZGVyLXY1LyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2ltYWdlLWxvYWRlci1jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBS3pDLE1BQU0sT0FBTyx3QkFBd0I7SUFIckM7UUFJSSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBRXRCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUU5QixtQkFBYyxHQUFHLFNBQVMsQ0FBQztRQUUzQixxQkFBZ0IsR0FBRyxXQUFXLENBQUM7UUFFL0IsWUFBTyxHQUFHLE9BQU8sQ0FBQztRQUVsQixVQUFLLEdBQUcsTUFBTSxDQUFDO1FBRWYsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUVoQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBSWYsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFFaEIsaUJBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVsQixnQkFBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWpCLG9CQUFlLEdBQXFCLEtBQUssQ0FBQzs7UUFTMUMsZ0NBQTJCLEdBQUcsSUFBSSxDQUFDO1FBRW5DLG9DQUErQixHQUFHLE1BQU0sQ0FBQztRQUV6Qyx1QkFBa0IsR0FBa0MsT0FBTyxDQUFDO1FBRXBELHdCQUFtQixHQUFHLG9CQUFvQixDQUFDO0tBdUx0RDs7OztJQXBMRyxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDOzs7OztJQUVELElBQUksa0JBQWtCLENBQUMsSUFBSTtRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsbUJBQW1C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QUVaLGdEQUFhOztJQUViLCtDQUF5Qjs7SUFHekIsK0RBQW1DOztJQUVuQyxtRUFBeUM7O0lBRXpDLHNEQUE0RDs7Ozs7SUFFNUQsdURBQW1EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VMb2FkZXJDb25maWdTZXJ2aWNlIHtcbiAgICBkZWJ1Z01vZGUgPSBmYWxzZTtcblxuICAgIHNwaW5uZXJFbmFibGVkID0gdHJ1ZTtcblxuICAgIGZhbGxiYWNrQXNQbGFjZWhvbGRlciA9IGZhbHNlO1xuXG4gICAgYmFja2dyb3VuZFNpemUgPSAnY29udGFpbic7XG5cbiAgICBiYWNrZ3JvdW5kUmVwZWF0ID0gJ25vLXJlcGVhdCc7XG5cbiAgICBkaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgIHdpZHRoID0gJzEwMCUnO1xuXG4gICAgaGVpZ2h0ID0gJzEwMCUnO1xuXG4gICAgdXNlSW1nID0gZmFsc2U7XG5cbiAgICBmYWxsYmFja1VybDtcblxuICAgIGNvbmN1cnJlbmN5ID0gNTtcblxuICAgIG1heENhY2hlU2l6ZSA9IC0xO1xuXG4gICAgbWF4Q2FjaGVBZ2UgPSAtMTtcblxuICAgIGltYWdlUmV0dXJuVHlwZTogJ2Jhc2U2NCcgfCAndXJpJyA9ICd1cmknO1xuXG4gICAgc3Bpbm5lck5hbWU7XG5cbiAgICBzcGlubmVyQ29sb3I7XG5cbiAgICBodHRwSGVhZGVyczogSHR0cEhlYWRlcnM7XG5cbiAgICAvLyBNdXN0IGJlIGRlZmF1bHQgJ3RydWUnIGZvciB0aGUgbmV3IFdlYlZpZXcgdG8gc2hvdyBpbWFnZXNcbiAgICBmaWxlTmFtZUNhY2hlZFdpdGhFeHRlbnNpb24gPSB0cnVlO1xuXG4gICAgZmFsbGJhY2tGaWxlTmFtZUNhY2hlZEV4dGVuc2lvbiA9ICcuanBnJztcblxuICAgIGNhY2hlRGlyZWN0b3J5VHlwZTogJ2NhY2hlJyB8ICdkYXRhJyB8ICdleHRlcm5hbCcgPSAnY2FjaGUnO1xuXG4gICAgcHJpdmF0ZSBfY2FjaGVEaXJlY3RvcnlOYW1lID0gJ2ltYWdlLWxvYWRlci1jYWNoZSc7XG5cblxuICAgIGdldCBjYWNoZURpcmVjdG9yeU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWNoZURpcmVjdG9yeU5hbWU7XG4gICAgfVxuXG4gICAgc2V0IGNhY2hlRGlyZWN0b3J5TmFtZShuYW1lKSB7XG4gICAgICAgIG5hbWUucmVwbGFjZSgvXFxXL2csICcnKTtcbiAgICAgICAgdGhpcy5fY2FjaGVEaXJlY3RvcnlOYW1lID0gbmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzIGRlYnVnIG1vZGUgdG8gcmVjZWl2ZSBjb25zb2xlIGxvZ3MsIGVycm9ycywgd2FybmluZ3NcbiAgICAgKi9cbiAgICBlbmFibGVEZWJ1Z01vZGUoKSB7XG4gICAgICAgIHRoaXMuZGVidWdNb2RlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUvRGlzYWJsZSB0aGUgc3Bpbm5lciBieSBkZWZhdWx0LiBEZWZhdWx0cyB0byB0cnVlLlxuICAgICAqIEBwYXJhbSBlbmFibGUgc2V0IHRvIHRydWUgdG8gZW5hYmxlXG4gICAgICovXG4gICAgZW5hYmxlU3Bpbm5lcihlbmFibGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zcGlubmVyRW5hYmxlZCA9IGVuYWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUvRGlzYWJsZSB0aGUgZmFsbGJhY2sgaW1hZ2UgYXMgcGxhY2Vob2xkZXIgaW5zdGVhZCBvZiB0aGUgc3Bpbm5lci4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICogQHBhcmFtIGVuYWJsZSBzZXQgdG8gdHJ1ZSB0byBlbmFibGVcbiAgICAgKi9cbiAgICBlbmFibGVGYWxsYmFja0FzUGxhY2Vob2xkZXIoZW5hYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZmFsbGJhY2tBc1BsYWNlaG9sZGVyID0gZW5hYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGNhY2hlIGRpcmVjdG9yeSBuYW1lLiBEZWZhdWx0cyB0byAnaW1hZ2UtbG9hZGVyLWNhY2hlJ1xuICAgICAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgZGlyZWN0b3J5XG4gICAgICovXG4gICAgc2V0Q2FjaGVEaXJlY3RvcnlOYW1lKG5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNhY2hlRGlyZWN0b3J5TmFtZSA9IG5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGRlZmF1bHQgaGVpZ2h0IGZvciBpbWFnZXMgdGhhdCBhcmUgbm90IHVzaW5nIDxpbWc+IHRhZ1xuICAgICAqIEBwYXJhbSBoZWlnaHQgaGVpZ2h0XG4gICAgICovXG4gICAgc2V0SGVpZ2h0KGhlaWdodDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBkZWZhdWx0IHdpZHRoIGZvciBpbWFnZXMgdGhhdCBhcmUgbm90IHVzaW5nIDxpbWc+IHRhZ1xuICAgICAqIEBwYXJhbSB3aWR0aCBXaWR0aFxuICAgICAqL1xuICAgIHNldFdpZHRoKHdpZHRoOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZSBkaXNwbGF5IG1vZGUgZm9yIGltYWdlcyB0aGF0IGFyZSBub3QgdXNpbmcgPGltZz4gdGFnXG4gICAgICogQHBhcmFtIGRpc3BsYXkgRGlzcGxheSBtb2RlXG4gICAgICovXG4gICAgc2V0RGlzcGxheShkaXNwbGF5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gZGlzcGxheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2UgPGltZz4gdGFnIGJ5IGRlZmF1bHRcbiAgICAgKiBAcGFyYW0gdXNlIHNldCB0byB0cnVlIHRvIHVzZSA8aW1nPiB0YWcgYnkgZGVmYXVsdFxuICAgICAqL1xuICAgIHVzZUltYWdlVGFnKHVzZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnVzZUltZyA9IHVzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgZGVmYXVsdCBiYWNrZ3JvdW5kIHNpemUgZm9yIGltYWdlcyB0aGF0IGFyZSBub3QgdXNpbmcgPGltZz4gdGFnXG4gICAgICogQHBhcmFtIGJhY2tncm91bmRTaXplIEJhY2tncm91bmQgc2l6ZVxuICAgICAqL1xuICAgIHNldEJhY2tncm91bmRTaXplKGJhY2tncm91bmRTaXplOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kU2l6ZSA9IGJhY2tncm91bmRTaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBiYWNrZ3JvdW5kIHJlcGVhdCBmb3IgaW1hZ2VzIHRoYXQgYXJlIG5vdCB1c2luZyA8aW1nPiB0YWdcbiAgICAgKiBAcGFyYW0gYmFja2dyb3VuZFJlcGVhdCBCYWNrZ3JvdW5kIHJlcGVhdFxuICAgICAqL1xuICAgIHNldEJhY2tncm91bmRSZXBlYXQoYmFja2dyb3VuZFJlcGVhdDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYmFja2dyb3VuZFJlcGVhdCA9IGJhY2tncm91bmRSZXBlYXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGZhbGxiYWNrIFVSTCB0byB1c2Ugd2hlbiBpbWFnZSBzcmMgaXMgdW5kZWZpbmVkIG9yIGRpZCBub3QgcmVzb2x2ZS5cbiAgICAgKiBUaGlzIGltYWdlIHdpbGwgbm90IGJlIGNhY2hlZC4gVGhpcyBzaG91bGQgaWRlYWxseSBiZSBhIGxvY2FsbHkgc2F2ZWQgaW1hZ2UuXG4gICAgICogQHBhcmFtIGZhbGxiYWNrVXJsIFRoZSByZW1vdGUgb3IgbG9jYWwgVVJMIG9mIHRoZSBpbWFnZVxuICAgICAqL1xuICAgIHNldEZhbGxiYWNrVXJsKGZhbGxiYWNrVXJsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5mYWxsYmFja1VybCA9IGZhbGxiYWNrVXJsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCBjb25uZWN0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLlxuICAgICAqIEBwYXJhbSBjb25jdXJyZW5jeVxuICAgICAqL1xuICAgIHNldENvbmN1cnJlbmN5KGNvbmN1cnJlbmN5OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5jb25jdXJyZW5jeSA9IGNvbmN1cnJlbmN5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1heGltdW0gYWxsb3dlZCBjYWNoZSBzaXplXG4gICAgICogQHBhcmFtIGNhY2hlU2l6ZSBDYWNoZSBzaXplIGluIGJ5dGVzXG4gICAgICovXG4gICAgc2V0TWF4aW11bUNhY2hlU2l6ZShjYWNoZVNpemU6IG51bWJlcikge1xuICAgICAgICB0aGlzLm1heENhY2hlU2l6ZSA9IGNhY2hlU2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgY2FjaGUgYWdlXG4gICAgICogQHBhcmFtIGNhY2hlQWdlIE1heGltdW0gY2FjaGUgYWdlIGluIG1pbGxpc2Vjb25kc1xuICAgICAqL1xuICAgIHNldE1heGltdW1DYWNoZUFnZShjYWNoZUFnZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubWF4Q2FjaGVBZ2UgPSBjYWNoZUFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHJldHVybiB0eXBlIG9mIGNhY2hlZCBpbWFnZXNcbiAgICAgKiBAcGFyYW0gaW1hZ2VSZXR1cm5UeXBlIFRoZSByZXR1cm4gdHlwZTsgZWl0aGVyICdiYXNlNjQnIG9yICd1cmknXG4gICAgICovXG4gICAgc2V0SW1hZ2VSZXR1cm5UeXBlKGltYWdlUmV0dXJuVHlwZTogJ2Jhc2U2NCcgfCAndXJpJykge1xuICAgICAgICB0aGlzLmltYWdlUmV0dXJuVHlwZSA9IGltYWdlUmV0dXJuVHlwZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgc3Bpbm5lciBuYW1lXG4gICAgICogQHBhcmFtIG5hbWVcbiAgICAgKi9cbiAgICBzZXRTcGlubmVyTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zcGlubmVyTmFtZSA9IG5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBkZWZhdWx0IHNwaW5uZXIgY29sb3JcbiAgICAgKiBAcGFyYW0gY29sb3JcbiAgICAgKi9cbiAgICBzZXRTcGlubmVyQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNwaW5uZXJDb2xvciA9IGNvbG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBoZWFkZXJzIG9wdGlvbnMgZm9yIHRoZSBIdHRwQ2xpZW50IHRyYW5zZmVycy5cbiAgICAgKiBAcGFyYW0gaGVhZGVyc1xuICAgICAqL1xuICAgIHNldEh0dHBIZWFkZXJzKGhlYWRlcnM6IEh0dHBIZWFkZXJzKSB7XG4gICAgICAgIHRoaXMuaHR0cEhlYWRlcnMgPSBoZWFkZXJzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBvcHRpb25zIGZvciB0aGUgRmlsZVRyYW5zZmVyIHBsdWdpblxuICAgICAqIEBwYXJhbSBvcHRpb25zXG4gICAgICogQGRlcHJlY2F0ZWQgRmlsZVRyYW5zZmVyIHBsdWdpbiByZW1vdmVkLlxuICAgICAqL1xuICAgIHNldEZpbGVUcmFuc2Zlck9wdGlvbnMob3B0aW9uczoge1xuICAgICAgICB0cnVzdEFsbEhvc3RzOiBib29sZWFuO1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfSkge1xuICAgICAgICAvLyBkbyBub3RoaW5nLCBwbHVnaW4gZGVwcmVjYXRlZC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUvRGlzYWJsZSB0aGUgc2F2ZSBmaWxlbmFtZSBvZiBjYWNoZWQgaW1hZ2VzIHdpdGggZXh0ZW5zaW9uLiAgRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICogQHBhcmFtIGVuYWJsZSBzZXQgdG8gdHJ1ZSB0byBlbmFibGVcbiAgICAgKi9cbiAgICBzZXRGaWxlTmFtZUNhY2hlZFdpdGhFeHRlbnNpb24oZW5hYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZmlsZU5hbWVDYWNoZWRXaXRoRXh0ZW5zaW9uID0gZW5hYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBmYWxsYmFjayBleHRlbnNpb24gZmlsZW5hbWUgb2YgY2FjaGVkIGltYWdlcy4gIERlZmF1bHRzIHRvICcuanBnJy5cbiAgICAgKiBAcGFyYW0gZXh0ZW5zaW9uIGZhbGxiYWNrIGV4dGVuc2lvbiAoZS54IC5qcGcpXG4gICAgICovXG4gICAgc2V0RmFsbGJhY2tGaWxlTmFtZUNhY2hlZEV4dGVuc2lvbihleHRlbnNpb246IHN0cmluZykge1xuICAgICAgICB0aGlzLmZhbGxiYWNrRmlsZU5hbWVDYWNoZWRFeHRlbnNpb24gPSBleHRlbnNpb247XG4gICAgfVxufVxuIl19