UNPKG

@harbor/ui

Version:

Harbor shared UI components based on Clarity and Angular6

250 lines (249 loc) 16.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { InjectionToken } from '@angular/core'; /** @type {?} */ export let SERVICE_CONFIG = new InjectionToken("service.config"); /** * @record */ export function IServiceConfig() { } /** * The base endpoint of service used to retrieve the system configuration information. * The configurations may include but not limit: * Notary configurations * Registry configuration * Volume information * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.systemInfoEndpoint; /** * The base endpoint of the service used to handle the repositories of registry and/or tags of repository. * The endpoints of repository or tag(s) will be built based on this endpoint. * E.g: * If the base endpoint is '/api/repositories', * the repository endpoint will be '/api/repositories/:repo_id', * the tag(s) endpoint will be '/api/repositories/:repo_id/tags[/:tag_id]'. * * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.repositoryBaseEndpoint; /** * The base endpoint of the service used to handle the recent access logs. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.logBaseEndpoint; /** * The base endpoint of the service used to handle the registry targets. * Registry target related endpoints will be built based on this endpoint. * E.g: * If the base endpoint is '/api/endpoints', * the endpoint for registry target will be '/api/endpoints/:endpoint_id', * the endpoint for pinging registry target will be '/api/endpoints/:endpoint_id/ping'. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.targetBaseEndpoint; /** * The base endpoint of the service used to handle the replications. * @type {?|undefined} */ IServiceConfig.prototype.replicationBaseEndpoint; /** * The base endpoint of the service used to handle the replication rules. * Replication rule related endpoints will be built based on this endpoint. * E.g: * If the base endpoint is '/api/replication/rules', * the endpoint for rule will be '/api/replication/rules/:rule_id'. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.replicationRuleEndpoint; /** * The base endpoint of the service used to handle the replication jobs. * * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.replicationJobEndpoint; /** * The base endpoint of the service used to handle vulnerability scanning. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.vulnerabilityScanningBaseEndpoint; /** * The base endpoint of the service used to handle project policy. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.projectPolicyEndpoint; /** * The base endpoint of service used to handle projects * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.projectBaseEndpoint; /** * To determine whether or not to enable the i18 multiple languages supporting. * * * {boolean} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.enablei18Support; /** * The cookie key used to store the current used language preference. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.langCookieKey; /** * Declare what languages are supported. * * * {string[]} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.supportedLangs; /** * Define the default language the translate service uses. * * * {string} * \@memberOf I18nConfig * @type {?|undefined} */ IServiceConfig.prototype.defaultLang; /** * To determine which loader will be used to load the required lang messages. * Support two loaders: * One is 'http', use async http to load json files with the specified url/path. * Another is 'local', use local json variable to store the lang message. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.langMessageLoader; /** * Define the basic url/path prefix for the loader to find the json files if the 'langMessageLoader' is 'http'. * For example, 'src/i18n/langs'. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.langMessagePathForHttpLoader; /** * Define the suffix of the json file names without lang name if 'langMessageLoader' is 'http'. * For example, '-lang.json' is suffix of message file 'en-us-lang.json'. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.langMessageFileSuffixForHttpLoader; /** * If set 'local' loader in configuration property 'langMessageLoader' to load the i18n messages, * this property must be defined to tell local JSON loader where to get the related messages. * E.g: * If declare the following messages storage variables, * * export const EN_US_LANG: any = { * "APP_TITLE": { * "VMW_HARBOR": "VMware Harbor", * "HARBOR": "Harbor" * } * } * * export const ZH_CN_LANG: any = { * "APP_TITLE": { * "VMW_HARBOR": "VMware Harbor中文版", * "HARBOR": "Harbor" * } * } * * then this property should be set to: * { * "en-us": EN_US_LANG, * "zh-cn": ZH_CN_LANG * }; * * * * {{ [key: string]: any }} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.localI18nMessageVariableMap; /** * The base endpoint of configuration service. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.configurationEndpoint; /** * The base endpoint of scan job service. * * * {string} * \@memberof IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.scanJobEndpoint; /** * The base endpoint of the service used to handle the labels. * labels related endpoints will be built based on this endpoint. * E.g: * If the base endpoint is '/api/labels', * the label endpoint will be '/api/labels/:id'. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.labelEndpoint; /** * The base endpoint of the service used to handle the helm chart. * helm charts related endpoints will be built based on this endpoint. * E.g: * If the base endpoint is '/api/helmcharts', * the helm chart endpoint will be '/api/helmcharts/:id'. * * * {string} * \@memberOf IServiceConfig * @type {?|undefined} */ IServiceConfig.prototype.helmChartEndpoint; /** * The base endpoint of the chart download url * * {string} * @type {?|undefined} */ IServiceConfig.prototype.downloadChartEndpoint; /** @type {?|undefined} */ IServiceConfig.prototype.gcEndpoint; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5jb25maWcuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaGFyYm9yL3VpLyIsInNvdXJjZXMiOlsic3JjL3NlcnZpY2UuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUvQyxXQUFXLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGxldCBTRVJWSUNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbihcInNlcnZpY2UuY29uZmlnXCIpO1xuZXhwb3J0IGludGVyZmFjZSBJU2VydmljZUNvbmZpZyB7XG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZW5kcG9pbnQgb2Ygc2VydmljZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cbiAgICAgKiBUaGUgY29uZmlndXJhdGlvbnMgbWF5IGluY2x1ZGUgYnV0IG5vdCBsaW1pdDpcbiAgICAgKiAgIE5vdGFyeSBjb25maWd1cmF0aW9uc1xuICAgICAqICAgUmVnaXN0cnkgY29uZmlndXJhdGlvblxuICAgICAqICAgVm9sdW1lIGluZm9ybWF0aW9uXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgc3lzdGVtSW5mb0VuZHBvaW50Pzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZW5kcG9pbnQgb2YgdGhlIHNlcnZpY2UgdXNlZCB0byBoYW5kbGUgdGhlIHJlcG9zaXRvcmllcyBvZiByZWdpc3RyeSBhbmQvb3IgdGFncyBvZiByZXBvc2l0b3J5LlxuICAgICAqIFRoZSBlbmRwb2ludHMgb2YgcmVwb3NpdG9yeSBvciB0YWcocykgd2lsbCBiZSBidWlsdCBiYXNlZCBvbiB0aGlzIGVuZHBvaW50LlxuICAgICAqIEUuZzpcbiAgICAgKiAgIElmIHRoZSBiYXNlIGVuZHBvaW50IGlzICcvYXBpL3JlcG9zaXRvcmllcycsXG4gICAgICogICB0aGUgcmVwb3NpdG9yeSBlbmRwb2ludCB3aWxsIGJlICcvYXBpL3JlcG9zaXRvcmllcy86cmVwb19pZCcsXG4gICAgICogICB0aGUgdGFnKHMpIGVuZHBvaW50IHdpbGwgYmUgJy9hcGkvcmVwb3NpdG9yaWVzLzpyZXBvX2lkL3RhZ3NbLzp0YWdfaWRdJy5cbiAgICAgKlxuICAgICAqXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIHJlcG9zaXRvcnlCYXNlRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiB0aGUgc2VydmljZSB1c2VkIHRvIGhhbmRsZSB0aGUgcmVjZW50IGFjY2VzcyBsb2dzLlxuICAgICAqXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIGxvZ0Jhc2VFbmRwb2ludD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGVuZHBvaW50IG9mIHRoZSBzZXJ2aWNlIHVzZWQgdG8gaGFuZGxlIHRoZSByZWdpc3RyeSB0YXJnZXRzLlxuICAgICAqIFJlZ2lzdHJ5IHRhcmdldCByZWxhdGVkIGVuZHBvaW50cyB3aWxsIGJlIGJ1aWx0IGJhc2VkIG9uIHRoaXMgZW5kcG9pbnQuXG4gICAgICogRS5nOlxuICAgICAqICAgSWYgdGhlIGJhc2UgZW5kcG9pbnQgaXMgJy9hcGkvZW5kcG9pbnRzJyxcbiAgICAgKiAgIHRoZSBlbmRwb2ludCBmb3IgcmVnaXN0cnkgdGFyZ2V0IHdpbGwgYmUgJy9hcGkvZW5kcG9pbnRzLzplbmRwb2ludF9pZCcsXG4gICAgICogICB0aGUgZW5kcG9pbnQgZm9yIHBpbmdpbmcgcmVnaXN0cnkgdGFyZ2V0IHdpbGwgYmUgJy9hcGkvZW5kcG9pbnRzLzplbmRwb2ludF9pZC9waW5nJy5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICB0YXJnZXRCYXNlRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiB0aGUgc2VydmljZSB1c2VkIHRvIGhhbmRsZSB0aGUgcmVwbGljYXRpb25zLlxuICAgICAqL1xuICAgIHJlcGxpY2F0aW9uQmFzZUVuZHBvaW50Pzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZW5kcG9pbnQgb2YgdGhlIHNlcnZpY2UgdXNlZCB0byBoYW5kbGUgdGhlIHJlcGxpY2F0aW9uIHJ1bGVzLlxuICAgICAqIFJlcGxpY2F0aW9uIHJ1bGUgcmVsYXRlZCBlbmRwb2ludHMgd2lsbCBiZSBidWlsdCBiYXNlZCBvbiB0aGlzIGVuZHBvaW50LlxuICAgICAqIEUuZzpcbiAgICAgKiAgIElmIHRoZSBiYXNlIGVuZHBvaW50IGlzICcvYXBpL3JlcGxpY2F0aW9uL3J1bGVzJyxcbiAgICAgKiAgIHRoZSBlbmRwb2ludCBmb3IgcnVsZSB3aWxsIGJlICcvYXBpL3JlcGxpY2F0aW9uL3J1bGVzLzpydWxlX2lkJy5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICByZXBsaWNhdGlvblJ1bGVFbmRwb2ludD86IHN0cmluZztcblxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZW5kcG9pbnQgb2YgdGhlIHNlcnZpY2UgdXNlZCB0byBoYW5kbGUgdGhlIHJlcGxpY2F0aW9uIGpvYnMuXG4gICAgICpcbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICByZXBsaWNhdGlvbkpvYkVuZHBvaW50Pzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZW5kcG9pbnQgb2YgdGhlIHNlcnZpY2UgdXNlZCB0byBoYW5kbGUgdnVsbmVyYWJpbGl0eSBzY2FubmluZy5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICB2dWxuZXJhYmlsaXR5U2Nhbm5pbmdCYXNlRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiB0aGUgc2VydmljZSB1c2VkIHRvIGhhbmRsZSBwcm9qZWN0IHBvbGljeS5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICBwcm9qZWN0UG9saWN5RW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiBzZXJ2aWNlIHVzZWQgdG8gaGFuZGxlIHByb2plY3RzXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIHByb2plY3RCYXNlRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUbyBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8gZW5hYmxlIHRoZSBpMTggbXVsdGlwbGUgbGFuZ3VhZ2VzIHN1cHBvcnRpbmcuXG4gICAgICpcbiAgICAgKiAqIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIGVuYWJsZWkxOFN1cHBvcnQ/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNvb2tpZSBrZXkgdXNlZCB0byBzdG9yZSB0aGUgY3VycmVudCB1c2VkIGxhbmd1YWdlIHByZWZlcmVuY2UuXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgbGFuZ0Nvb2tpZUtleT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERlY2xhcmUgd2hhdCBsYW5ndWFnZXMgYXJlIHN1cHBvcnRlZC5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ1tdfVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIHN1cHBvcnRlZExhbmdzPzogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmUgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgdGhlIHRyYW5zbGF0ZSBzZXJ2aWNlIHVzZXMuXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIEkxOG5Db25maWdcbiAgICAgKi9cbiAgICBkZWZhdWx0TGFuZz86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRvIGRldGVybWluZSB3aGljaCBsb2FkZXIgd2lsbCBiZSB1c2VkIHRvIGxvYWQgdGhlIHJlcXVpcmVkIGxhbmcgbWVzc2FnZXMuXG4gICAgICogU3VwcG9ydCB0d28gbG9hZGVyczpcbiAgICAgKiAgIE9uZSBpcyAnaHR0cCcsIHVzZSBhc3luYyBodHRwIHRvIGxvYWQganNvbiBmaWxlcyB3aXRoIHRoZSBzcGVjaWZpZWQgdXJsL3BhdGguXG4gICAgICogICBBbm90aGVyIGlzICdsb2NhbCcsIHVzZSBsb2NhbCBqc29uIHZhcmlhYmxlIHRvIHN0b3JlIHRoZSBsYW5nIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgbGFuZ01lc3NhZ2VMb2FkZXI/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmUgdGhlIGJhc2ljIHVybC9wYXRoIHByZWZpeCBmb3IgdGhlIGxvYWRlciB0byBmaW5kIHRoZSBqc29uIGZpbGVzIGlmIHRoZSAnbGFuZ01lc3NhZ2VMb2FkZXInIGlzICdodHRwJy5cbiAgICAgKiBGb3IgZXhhbXBsZSwgJ3NyYy9pMThuL2xhbmdzJy5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICBsYW5nTWVzc2FnZVBhdGhGb3JIdHRwTG9hZGVyPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lIHRoZSBzdWZmaXggb2YgdGhlIGpzb24gZmlsZSBuYW1lcyB3aXRob3V0IGxhbmcgbmFtZSBpZiAnbGFuZ01lc3NhZ2VMb2FkZXInIGlzICdodHRwJy5cbiAgICAgKiBGb3IgZXhhbXBsZSwgJy1sYW5nLmpzb24nIGlzIHN1ZmZpeCBvZiBtZXNzYWdlIGZpbGUgJ2VuLXVzLWxhbmcuanNvbicuXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgbGFuZ01lc3NhZ2VGaWxlU3VmZml4Rm9ySHR0cExvYWRlcj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIElmIHNldCAnbG9jYWwnIGxvYWRlciBpbiBjb25maWd1cmF0aW9uIHByb3BlcnR5ICdsYW5nTWVzc2FnZUxvYWRlcicgdG8gbG9hZCB0aGUgaTE4biBtZXNzYWdlcyxcbiAgICAgKiB0aGlzIHByb3BlcnR5IG11c3QgYmUgZGVmaW5lZCB0byB0ZWxsIGxvY2FsIEpTT04gbG9hZGVyIHdoZXJlIHRvIGdldCB0aGUgcmVsYXRlZCBtZXNzYWdlcy5cbiAgICAgKiBFLmc6XG4gICAgICogICBJZiBkZWNsYXJlIHRoZSBmb2xsb3dpbmcgbWVzc2FnZXMgc3RvcmFnZSB2YXJpYWJsZXMsXG4gICAgICpcbiAgICAgKiAgIGV4cG9ydCBjb25zdCBFTl9VU19MQU5HOiBhbnkgPSB7XG4gICAgICogICAgICAgXCJBUFBfVElUTEVcIjoge1xuICAgICAqICAgICAgICAgICBcIlZNV19IQVJCT1JcIjogXCJWTXdhcmUgSGFyYm9yXCIsXG4gICAgICogICAgICAgICAgIFwiSEFSQk9SXCI6IFwiSGFyYm9yXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiAgIGV4cG9ydCBjb25zdCBaSF9DTl9MQU5HOiBhbnkgPSB7XG4gICAgICogICAgICAgXCJBUFBfVElUTEVcIjoge1xuICAgICAqICAgICAgICAgICBcIlZNV19IQVJCT1JcIjogXCJWTXdhcmUgSGFyYm9y5Lit5paH54mIXCIsXG4gICAgICogICAgICAgICAgIFwiSEFSQk9SXCI6IFwiSGFyYm9yXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiAgIHRoZW4gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IHRvOlxuICAgICAqICAge1xuICAgICAqICAgICAgIFwiZW4tdXNcIjogRU5fVVNfTEFORyxcbiAgICAgKiAgICAgICBcInpoLWNuXCI6IFpIX0NOX0xBTkdcbiAgICAgKiAgIH07XG4gICAgICpcbiAgICAgKlxuICAgICAqICoge3sgW2tleTogc3RyaW5nXTogYW55IH19XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgbG9jYWxJMThuTWVzc2FnZVZhcmlhYmxlTWFwPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGVuZHBvaW50IG9mIGNvbmZpZ3VyYXRpb24gc2VydmljZS5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICBjb25maWd1cmF0aW9uRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiBzY2FuIGpvYiBzZXJ2aWNlLlxuICAgICAqXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqIEBtZW1iZXJvZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIHNjYW5Kb2JFbmRwb2ludD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGVuZHBvaW50IG9mIHRoZSBzZXJ2aWNlIHVzZWQgdG8gaGFuZGxlIHRoZSBsYWJlbHMuXG4gICAgICogbGFiZWxzIHJlbGF0ZWQgZW5kcG9pbnRzIHdpbGwgYmUgYnVpbHQgYmFzZWQgb24gdGhpcyBlbmRwb2ludC5cbiAgICAgKiBFLmc6XG4gICAgICogICBJZiB0aGUgYmFzZSBlbmRwb2ludCBpcyAnL2FwaS9sYWJlbHMnLFxuICAgICAqICAgdGhlIGxhYmVsIGVuZHBvaW50ICB3aWxsIGJlICcvYXBpL2xhYmVscy86aWQnLlxuICAgICAqXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIGxhYmVsRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiB0aGUgc2VydmljZSB1c2VkIHRvIGhhbmRsZSB0aGUgaGVsbSBjaGFydC5cbiAgICAgKiBoZWxtIGNoYXJ0cyByZWxhdGVkIGVuZHBvaW50cyB3aWxsIGJlIGJ1aWx0IGJhc2VkIG9uIHRoaXMgZW5kcG9pbnQuXG4gICAgICogRS5nOlxuICAgICAqICAgSWYgdGhlIGJhc2UgZW5kcG9pbnQgaXMgJy9hcGkvaGVsbWNoYXJ0cycsXG4gICAgICogICB0aGUgaGVsbSBjaGFydCBlbmRwb2ludCAgd2lsbCBiZSAnL2FwaS9oZWxtY2hhcnRzLzppZCcuXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgaGVsbUNoYXJ0RW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiB0aGUgY2hhcnQgZG93bmxvYWQgdXJsXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqL1xuICAgIGRvd25sb2FkQ2hhcnRFbmRwb2ludD86IHN0cmluZztcblxuICAgIGdjRW5kcG9pbnQ/OiBzdHJpbmc7XG59XG4iXX0=