@c8y/ngx-components 1018.0.67 → 1018.0.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/assets-navigator/asset-node.service.d.ts +1 -1
  2. package/assets-navigator/group.service.d.ts +1 -1
  3. package/core/asset-types/asset-types.service.d.ts +6 -14
  4. package/core/common/get-group-icon.pipe.d.ts +1 -1
  5. package/core/common/group.service.d.ts +1 -1
  6. package/esm2020/assets-navigator/asset-node.mjs +3 -3
  7. package/esm2020/assets-navigator/asset-node.service.mjs +1 -1
  8. package/esm2020/assets-navigator/group.service.mjs +1 -1
  9. package/esm2020/core/asset-types/asset-types.service.mjs +17 -36
  10. package/esm2020/core/common/get-group-icon.pipe.mjs +2 -2
  11. package/esm2020/core/common/group.service.mjs +4 -4
  12. package/esm2020/core/search/search-input.component.mjs +3 -3
  13. package/esm2020/search/columns/asset-type.cell-renderer.component.mjs +3 -3
  14. package/esm2020/sub-assets/columns/asset-type.cell-renderer.component.mjs +5 -5
  15. package/esm2020/sub-assets/group-info.component.mjs +2 -2
  16. package/fesm2015/c8y-ngx-components-assets-navigator.mjs +5 -3
  17. package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  18. package/fesm2015/c8y-ngx-components-search.mjs +7 -5
  19. package/fesm2015/c8y-ngx-components-search.mjs.map +1 -1
  20. package/fesm2015/c8y-ngx-components-sub-assets.mjs +10 -8
  21. package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
  22. package/fesm2015/c8y-ngx-components.mjs +31 -48
  23. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  24. package/fesm2020/c8y-ngx-components-assets-navigator.mjs +2 -2
  25. package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  26. package/fesm2020/c8y-ngx-components-search.mjs +2 -2
  27. package/fesm2020/c8y-ngx-components-search.mjs.map +1 -1
  28. package/fesm2020/c8y-ngx-components-sub-assets.mjs +5 -5
  29. package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
  30. package/fesm2020/c8y-ngx-components.mjs +22 -41
  31. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  32. package/package.json +1 -1
  33. package/search/columns/asset-type.cell-renderer.component.d.ts +1 -1
  34. package/sub-assets/columns/asset-type.cell-renderer.component.d.ts +2 -2
@@ -48,10 +48,10 @@ export class GroupService {
48
48
  * @param open Determines whether the method should return an alternative icon showing the open state.
49
49
  * @returns Returns an icon.
50
50
  */
51
- getIcon(mo, open = false) {
51
+ async getIcon(mo, open = false) {
52
52
  const genericMoType = this.determineMoType(mo);
53
53
  if (genericMoType === 'asset') {
54
- return this.getAssetCustomIcon(mo.type, open);
54
+ return await this.getAssetCustomIcon(mo.type, open);
55
55
  }
56
56
  const typeIcons = this.getDefaultIcon(genericMoType);
57
57
  return (open && typeIcons.iconOpen) || typeIcons.icon;
@@ -147,7 +147,7 @@ __decorate([
147
147
  memoize(property('id')),
148
148
  __metadata("design:type", Function),
149
149
  __metadata("design:paramtypes", [Object, Object]),
150
- __metadata("design:returntype", String)
150
+ __metadata("design:returntype", Promise)
151
151
  ], GroupService.prototype, "getIcon", null);
152
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: GroupService, decorators: [{
153
153
  type: Injectable,
@@ -155,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
155
155
  providedIn: 'root'
156
156
  }]
157
157
  }], ctorParameters: function () { return [{ type: i1.AssetTypesService }]; }, propDecorators: { getIcon: [] } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2dyb3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFOUMsTUFBTSxRQUFRLEdBQUc7SUFDZixPQUFPO0lBQ1AsY0FBYztJQUNkLGNBQWM7SUFDZCxzQkFBc0I7SUFDdEIsT0FBTztJQUNQLE9BQU87Q0FDQyxDQUFDO0FBV1gsTUFBTSxPQUFPLFlBQVk7SUF5QnZCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBeEIvQyxVQUFLLEdBQVU7WUFDdEIsb0JBQW9CLEVBQUU7Z0JBQ3BCLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLFFBQVEsRUFBRSwyQkFBMkI7YUFDdEM7WUFDRCxZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsUUFBUSxFQUFFLHVCQUF1QjthQUNsQztZQUNELEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsV0FBVztnQkFDakIsUUFBUSxFQUFFLGdCQUFnQjthQUMzQjtZQUNELFlBQVksRUFBRTtnQkFDWixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixRQUFRLEVBQUUsc0JBQXNCO2FBQ2pDO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRSxVQUFVO2dCQUNoQixTQUFTLEVBQUUsZUFBZTthQUMzQjtTQUNGLENBQUM7UUFDRixxQ0FBZ0MsR0FBRyxJQUFJ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T0FBTyxjQUFjLENBQUM7U0FDdkI7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDekIsT0FBTyxzQkFBc0IsQ0FBQztTQUMvQjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNwQixPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O3lHQW5KVSxZQUFZOzZHQUFaLFlBQVksY0FGWCxNQUFNO0FBcUNsQjtJQURDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7MkNBUXZCOzJGQTFDVSxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjt3R0FvQ0MsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQXNzZXRUeXBlc1NlcnZpY2UgfSBmcm9tICcuLi9hc3NldC10eXBlcy9hc3NldC10eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb3VwRnJhZ21lbnQgfSBmcm9tICcuL2dyb3VwLWZyYWdtZW50Lm1vZGVsJztcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tICcuL21lbW9pemUuZGVjb3JhdG9yJztcblxuY29uc3QgTU9fVFlQRVMgPSBbXG4gICdhc3NldCcsXG4gICdkeW5hbWljR3JvdXAnLFxuICAnYnJva2VyU291cmNlJyxcbiAgJ2Jyb2tlclNvdXJjZUluYWN0aXZlJyxcbiAgJ2dyb3VwJyxcbiAgJ290aGVyJ1xuXSBhcyBjb25zdDtcblxudHlwZSBNb1R5cGVzID0gdHlwZW9mIE1PX1RZUEVTW251bWJlcl07XG5cbnR5cGUgSWNvbiA9IFBhcnRpYWw8eyBpY29uOiBzdHJpbmc7IGljb25PcGVuPzogc3RyaW5nOyBpY29uQ2xhc3M/OiBzdHJpbmcgfT47XG5cbnR5cGUgSWNvbnMgPSBQYXJ0aWFsPFJlY29yZDxNb1R5cGVzLCBJY29uPj47XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdyb3VwU2VydmljZSB7XG4gIHJlYWRvbmx5IGljb25zOiBJY29ucyA9IHtcbiAgICBicm9rZXJTb3VyY2VJbmFjdGl2ZToge1xuICAgICAgaWNvbjogJ2M4eS1ncm91cC1yZW1vdGUtaW5hY3RpdmUnLFxuICAgICAgaWNvbk9wZW46ICdjOHktZ3JvdXAtcmVtb3RlLWluYWN0aXZlJ1xuICAgIH0sXG4gICAgYnJva2VyU291cmNlOiB7XG4gICAgICBpY29uOiAnYzh5LWdyb3VwLXJlbW90ZScsXG4gICAgICBpY29uT3BlbjogJ2M4eS1ncm91cC1yZW1vdGUtb3BlbidcbiAgICB9LFxuICAgIGdyb3VwOiB7XG4gICAgICBpY29uOiAnYzh5LWdyb3VwJyxcbiAgICAgIGljb25PcGVuOiAnYzh5LWdyb3VwLW9wZW4nXG4gICAgfSxcbiAgICBkeW5hbWljR3JvdXA6IHtcbiAgICAgIGljb246ICdjOHktZ3JvdXAtc21hcnQnLFxuICAgICAgaWNvbk9wZW46ICdjOHktZ3JvdXAtc21hcnQtb3BlbidcbiAgICB9LFxuICAgIG90aGVyOiB7XG4gICAgICBpY29uOiAnZXhjaGFuZ2UnLFxuICAgICAgaWNvbkNsYXNzOiAnc3RhdHVzVW5rbm93bidcbiAgICB9XG4gIH07XG4gIGRhdGFCcm9rZXJTb3VyY2VGcmFnbWVudEluYWN0aXZlID0gYF8ke0dyb3VwRnJhZ21lbnQuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50fWA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhc3NldFR5cGVzU2VydmljZTogQXNzZXRUeXBlc1NlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuIGljb24gYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgbWFuYWdlZCBvYmplY3QuXG4gICAqIEl0IHRha2VzIGludG8gYWNjb3VudCBmYWN0b3JzIHN1Y2ggYXMgdHlwZSwgYW5kIHNwZWNpZmljIGZyYWdtZW50cy5cbiAgICogQHBhcmFtIG1vIE1hbmFnZWQgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEBwYXJhbSBvcGVuIERldGVybWluZXMgd2hldGhlciB0aGUgbWV0aG9kIHNob3VsZCByZXR1cm4gYW4gYWx0ZXJuYXRpdmUgaWNvbiBzaG93aW5nIHRoZSBvcGVuIHN0YXRlLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGFuIGljb24uXG4gICAqL1xuICBAbWVtb2l6ZShwcm9wZXJ0eSgnaWQnKSlcbiAgZ2V0SWNvbihtbzogSU1hbmFnZWRPYmplY3QsIG9wZW4gPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2VuZXJpY01vVHlwZSA9IHRoaXMuZGV0ZXJtaW5lTW9UeXBlKG1vKTtcbiAgICBpZiAoZ2VuZXJpY01vVHlwZSA9PT0gJ2Fzc2V0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0QXNzZXRDdXN0b21JY29uKG1vLnR5cGUsIG9wZW4pO1xuICAgIH1cbiAgICBjb25zdCB0eXBlSWNvbnMgPSB0aGlzLmdldERlZmF1bHRJY29uKGdlbmVyaWNNb1R5cGUpO1xuICAgIHJldHVybiAob3BlbiAmJiB0eXBlSWNvbnMuaWNvbk9wZW4pIHx8IHR5cGVJY29ucy5pY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYSBncm91cC5cbiAgICogQHBhcmFtIG1vIE1hbmFnZWQgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWFuYWdlZCBvYmplY3QgaXMgYSBncm91cC5cbiAgICovXG4gIGlzR3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhbW9bR3JvdXBGcmFnbWVudC5ncm91cEZyYWdtZW50VHlwZV0gfHwgbW8udHlwZSA9PT0gR3JvdXBGcmFnbWVudC5ncm91cFR5cGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBtYW5hZ2VkIG9iamVjdCBpcyBhIGR5bmFtaWMgZ3JvdXAuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZHluYW1pYyBncm91cC5cbiAgICovXG4gIGlzRHluYW1pY0dyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIW1vW0dyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwRnJhZ21lbnRdIHx8IG1vLnR5cGUgPT09IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIuXG4gICAqL1xuICBpc0RhdGFCcm9rZXIobW86IElNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhbW9bR3JvdXBGcmFnbWVudC5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRdIHx8ICEhbW9bdGhpcy5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRJbmFjdGl2ZV1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYSBkYXRhIGJyb2tlciBhY3RpdmUuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIgYWN0aXZlLlxuICAgKi9cbiAgaXNEYXRhQnJva2VyQWN0aXZlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiAoXG4gICAgICAhIW1vW0dyb3VwRnJhZ21lbnQuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50XSAmJiAhbW9bdGhpcy5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRJbmFjdGl2ZV1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYW4gYXNzZXQuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGFuIGFzc2V0LlxuICAgKi9cbiAgaXNBc3NldChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gISFtby5jOHlfSXNBc3NldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgb2JqZWN0IGJlbG9uZ3MgdG8gYW55IHR5cGUgb2YgZ3JvdXAuXG4gICAqIFR5cGVzIG9mIGdyb3VwczogZ3JvdXAsIGR5bmFtaWMgZ3JvdXAsIGRhdGEgYnJva2VyLCBkYXRhIGJyb2tlciBhY3RpdmUuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGJlbG9uZ3MgdG8gdGhlIGdyb3VwIGNhdGVnb3J5LlxuICAgKi9cbiAgaXNBbnlHcm91cChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0dyb3VwKG1vKSB8fFxuICAgICAgdGhpcy5pc0R5bmFtaWNHcm91cChtbykgfHxcbiAgICAgIHRoaXMuaXNEYXRhQnJva2VyKG1vKSB8fFxuICAgICAgdGhpcy5pc0RhdGFCcm9rZXJBY3RpdmUobW8pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGV2aWNlLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhIGRldmljZS5cbiAgICovXG4gIGlzRGV2aWNlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiAhIW1vLmM4eV9Jc0RldmljZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXNzZXRDdXN0b21JY29uKG1vVHlwZTogc3RyaW5nLCBvcGVuID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFzc2V0VHlwZXNTZXJ2aWNlLmdldEljb24obW9UeXBlLCBvcGVuKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEljb24obW9UeXBlOiBNb1R5cGVzKTogSWNvbiB7XG4gICAgcmV0dXJuIHRoaXMuaWNvbnNbbW9UeXBlXTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lTW9UeXBlKG1vOiBJTWFuYWdlZE9iamVjdCk6IE1vVHlwZXMge1xuICAgIGlmICh0aGlzLmlzQXNzZXQobW8pKSB7XG4gICAgICByZXR1cm4gJ2Fzc2V0JztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0R5bmFtaWNHcm91cChtbykpIHtcbiAgICAgIHJldHVybiAnZHluYW1pY0dyb3VwJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0RhdGFCcm9rZXJBY3RpdmUobW8pKSB7XG4gICAgICByZXR1cm4gJ2Jyb2tlclNvdXJjZSc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEYXRhQnJva2VyKG1vKSkge1xuICAgICAgcmV0dXJuICdicm9rZXJTb3VyY2VJbmFjdGl2ZSc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHcm91cChtbykpIHtcbiAgICAgIHJldHVybiAnZ3JvdXAnO1xuICAgIH1cblxuICAgIHJldHVybiAnb3RoZXInO1xuICB9XG59XG4iXX0=
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2dyb3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFOUMsTUFBTSxRQUFRLEdBQUc7SUFDZixPQUFPO0lBQ1AsY0FBYztJQUNkLGNBQWM7SUFDZCxzQkFBc0I7SUFDdEIsT0FBTztJQUNQLE9BQU87Q0FDQyxDQUFDO0FBV1gsTUFBTSxPQUFPLFlBQVk7SUF5QnZCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBeEIvQyxVQUFLLEdBQVU7WUFDdEIsb0JBQW9CLEVBQUU7Z0JBQ3BCLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLFFBQVEsRUFBRSwyQkFBMkI7YUFDdEM7WUFDRCxZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsUUFBUSxFQUFFLHVCQUF1QjthQUNsQztZQUNELEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsV0FBVztnQkFDakIsUUFBUSxFQUFFLGdCQUFnQjthQUMzQjtZQUNELFlBQVksRUFBRTtnQkFDWixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixRQUFRLEVBQUUsc0JBQXNCO2FBQ2pDO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRSxVQUFVO2dCQUNoQixTQUFTLEVBQUUsZUFBZTthQUMzQjtTQUNGLENBQUM7UUFDRixxQ0FBZ0MsR0FBRyxJQUFJ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QUFDLEVBQUU7WUFDL0IsT0FBTyxjQUFjLENBQUM7U0FDdkI7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDekIsT0FBTyxzQkFBc0IsQ0FBQztTQUMvQjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNwQixPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O3lHQW5KVSxZQUFZOzZHQUFaLFlBQVksY0FGWCxNQUFNO0FBcUNsQjtJQURDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7MkNBUXZCOzJGQTFDVSxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjt3R0FvQ08sT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQXNzZXRUeXBlc1NlcnZpY2UgfSBmcm9tICcuLi9hc3NldC10eXBlcy9hc3NldC10eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb3VwRnJhZ21lbnQgfSBmcm9tICcuL2dyb3VwLWZyYWdtZW50Lm1vZGVsJztcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tICcuL21lbW9pemUuZGVjb3JhdG9yJztcblxuY29uc3QgTU9fVFlQRVMgPSBbXG4gICdhc3NldCcsXG4gICdkeW5hbWljR3JvdXAnLFxuICAnYnJva2VyU291cmNlJyxcbiAgJ2Jyb2tlclNvdXJjZUluYWN0aXZlJyxcbiAgJ2dyb3VwJyxcbiAgJ290aGVyJ1xuXSBhcyBjb25zdDtcblxudHlwZSBNb1R5cGVzID0gdHlwZW9mIE1PX1RZUEVTW251bWJlcl07XG5cbnR5cGUgSWNvbiA9IFBhcnRpYWw8eyBpY29uOiBzdHJpbmc7IGljb25PcGVuPzogc3RyaW5nOyBpY29uQ2xhc3M/OiBzdHJpbmcgfT47XG5cbnR5cGUgSWNvbnMgPSBQYXJ0aWFsPFJlY29yZDxNb1R5cGVzLCBJY29uPj47XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdyb3VwU2VydmljZSB7XG4gIHJlYWRvbmx5IGljb25zOiBJY29ucyA9IHtcbiAgICBicm9rZXJTb3VyY2VJbmFjdGl2ZToge1xuICAgICAgaWNvbjogJ2M4eS1ncm91cC1yZW1vdGUtaW5hY3RpdmUnLFxuICAgICAgaWNvbk9wZW46ICdjOHktZ3JvdXAtcmVtb3RlLWluYWN0aXZlJ1xuICAgIH0sXG4gICAgYnJva2VyU291cmNlOiB7XG4gICAgICBpY29uOiAnYzh5LWdyb3VwLXJlbW90ZScsXG4gICAgICBpY29uT3BlbjogJ2M4eS1ncm91cC1yZW1vdGUtb3BlbidcbiAgICB9LFxuICAgIGdyb3VwOiB7XG4gICAgICBpY29uOiAnYzh5LWdyb3VwJyxcbiAgICAgIGljb25PcGVuOiAnYzh5LWdyb3VwLW9wZW4nXG4gICAgfSxcbiAgICBkeW5hbWljR3JvdXA6IHtcbiAgICAgIGljb246ICdjOHktZ3JvdXAtc21hcnQnLFxuICAgICAgaWNvbk9wZW46ICdjOHktZ3JvdXAtc21hcnQtb3BlbidcbiAgICB9LFxuICAgIG90aGVyOiB7XG4gICAgICBpY29uOiAnZXhjaGFuZ2UnLFxuICAgICAgaWNvbkNsYXNzOiAnc3RhdHVzVW5rbm93bidcbiAgICB9XG4gIH07XG4gIGRhdGFCcm9rZXJTb3VyY2VGcmFnbWVudEluYWN0aXZlID0gYF8ke0dyb3VwRnJhZ21lbnQuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50fWA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhc3NldFR5cGVzU2VydmljZTogQXNzZXRUeXBlc1NlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuIGljb24gYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgbWFuYWdlZCBvYmplY3QuXG4gICAqIEl0IHRha2VzIGludG8gYWNjb3VudCBmYWN0b3JzIHN1Y2ggYXMgdHlwZSwgYW5kIHNwZWNpZmljIGZyYWdtZW50cy5cbiAgICogQHBhcmFtIG1vIE1hbmFnZWQgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEBwYXJhbSBvcGVuIERldGVybWluZXMgd2hldGhlciB0aGUgbWV0aG9kIHNob3VsZCByZXR1cm4gYW4gYWx0ZXJuYXRpdmUgaWNvbiBzaG93aW5nIHRoZSBvcGVuIHN0YXRlLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGFuIGljb24uXG4gICAqL1xuICBAbWVtb2l6ZShwcm9wZXJ0eSgnaWQnKSlcbiAgYXN5bmMgZ2V0SWNvbihtbzogSU1hbmFnZWRPYmplY3QsIG9wZW4gPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgZ2VuZXJpY01vVHlwZSA9IHRoaXMuZGV0ZXJtaW5lTW9UeXBlKG1vKTtcbiAgICBpZiAoZ2VuZXJpY01vVHlwZSA9PT0gJ2Fzc2V0Jykge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0QXNzZXRDdXN0b21JY29uKG1vLnR5cGUsIG9wZW4pO1xuICAgIH1cbiAgICBjb25zdCB0eXBlSWNvbnMgPSB0aGlzLmdldERlZmF1bHRJY29uKGdlbmVyaWNNb1R5cGUpO1xuICAgIHJldHVybiAob3BlbiAmJiB0eXBlSWNvbnMuaWNvbk9wZW4pIHx8IHR5cGVJY29ucy5pY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYSBncm91cC5cbiAgICogQHBhcmFtIG1vIE1hbmFnZWQgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWFuYWdlZCBvYmplY3QgaXMgYSBncm91cC5cbiAgICovXG4gIGlzR3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhbW9bR3JvdXBGcmFnbWVudC5ncm91cEZyYWdtZW50VHlwZV0gfHwgbW8udHlwZSA9PT0gR3JvdXBGcmFnbWVudC5ncm91cFR5cGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBtYW5hZ2VkIG9iamVjdCBpcyBhIGR5bmFtaWMgZ3JvdXAuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZHluYW1pYyBncm91cC5cbiAgICovXG4gIGlzRHluYW1pY0dyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIW1vW0dyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwRnJhZ21lbnRdIHx8IG1vLnR5cGUgPT09IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIuXG4gICAqL1xuICBpc0RhdGFCcm9rZXIobW86IElNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhbW9bR3JvdXBGcmFnbWVudC5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRdIHx8ICEhbW9bdGhpcy5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRJbmFjdGl2ZV1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYSBkYXRhIGJyb2tlciBhY3RpdmUuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIgYWN0aXZlLlxuICAgKi9cbiAgaXNEYXRhQnJva2VyQWN0aXZlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiAoXG4gICAgICAhIW1vW0dyb3VwRnJhZ21lbnQuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50XSAmJiAhbW9bdGhpcy5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRJbmFjdGl2ZV1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYW4gYXNzZXQuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGFuIGFzc2V0LlxuICAgKi9cbiAgaXNBc3NldChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gISFtby5jOHlfSXNBc3NldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgb2JqZWN0IGJlbG9uZ3MgdG8gYW55IHR5cGUgb2YgZ3JvdXAuXG4gICAqIFR5cGVzIG9mIGdyb3VwczogZ3JvdXAsIGR5bmFtaWMgZ3JvdXAsIGRhdGEgYnJva2VyLCBkYXRhIGJyb2tlciBhY3RpdmUuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGJlbG9uZ3MgdG8gdGhlIGdyb3VwIGNhdGVnb3J5LlxuICAgKi9cbiAgaXNBbnlHcm91cChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0dyb3VwKG1vKSB8fFxuICAgICAgdGhpcy5pc0R5bmFtaWNHcm91cChtbykgfHxcbiAgICAgIHRoaXMuaXNEYXRhQnJva2VyKG1vKSB8fFxuICAgICAgdGhpcy5pc0RhdGFCcm9rZXJBY3RpdmUobW8pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGV2aWNlLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhIGRldmljZS5cbiAgICovXG4gIGlzRGV2aWNlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiAhIW1vLmM4eV9Jc0RldmljZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXNzZXRDdXN0b21JY29uKG1vVHlwZTogc3RyaW5nLCBvcGVuID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmFzc2V0VHlwZXNTZXJ2aWNlLmdldEljb24obW9UeXBlLCBvcGVuKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEljb24obW9UeXBlOiBNb1R5cGVzKTogSWNvbiB7XG4gICAgcmV0dXJuIHRoaXMuaWNvbnNbbW9UeXBlXTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lTW9UeXBlKG1vOiBJTWFuYWdlZE9iamVjdCk6IE1vVHlwZXMge1xuICAgIGlmICh0aGlzLmlzQXNzZXQobW8pKSB7XG4gICAgICByZXR1cm4gJ2Fzc2V0JztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0R5bmFtaWNHcm91cChtbykpIHtcbiAgICAgIHJldHVybiAnZHluYW1pY0dyb3VwJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0RhdGFCcm9rZXJBY3RpdmUobW8pKSB7XG4gICAgICByZXR1cm4gJ2Jyb2tlclNvdXJjZSc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEYXRhQnJva2VyKG1vKSkge1xuICAgICAgcmV0dXJuICdicm9rZXJTb3VyY2VJbmFjdGl2ZSc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHcm91cChtbykpIHtcbiAgICAgIHJldHVybiAnZ3JvdXAnO1xuICAgIH1cblxuICAgIHJldHVybiAnb3RoZXInO1xuICB9XG59XG4iXX0=
@@ -203,10 +203,10 @@ export class SearchInputComponent {
203
203
  }
204
204
  }
205
205
  SearchInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SearchInputComponent, deps: [{ token: i1.Router }, { token: i2.InventoryService }, { token: i3.InventorySearchService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
206
- SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SearchInputComponent, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", customPlaceholder: "customPlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n type=\"button\"\n [title]=\"'Search' | translate\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i c8yIcon=\"search\" class=\"icon-2x\"></i>\n </button>\n\n <div\n id=\"searchDropdown\"\n *dropdownMenu\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div class=\"search-header-inline\" *ngIf=\"mode === 'select'\">\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\" novalidate #searchForm=\"ngForm\">\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n (keydown)=\"keyDown($event)\"\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n name=\"selected\"\n title=\"Search\"\n >\n <div\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0 && mode === 'search'\">\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Starts with' | translate }}\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Contains' | translate }}\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Ends with' | translate }}\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n class=\"p-l-24 p-r-24\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i [c8yIcon]=\"result | getGroupIcon\" class=\"c8y-icon-duocolor\"></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n class=\"p-l-24 p-r-24\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i [c8yIcon]=\"result | getGroupIcon\" class=\"c8y-icon-duocolor\"></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-24 p-r-24\" [selectable]=\"false\">\n <div class=\"legend form-block m-0\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n [title]=\"result.name\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i [c8yIcon]=\"result | getGroupIcon\" class=\"c8y-icon-duocolor\"></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state \n data-cy=\"search-input--empty-state\" \n [ngClass]=\"{ 'p-4': mode === 'search' }\"\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small translate *ngIf=\"mode === 'search'\">\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small translate *ngIf=\"mode === 'select'\">Try to rephrase your search word.</small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i c8yIcon=\"info-circle\" class=\"text-info m-r-4\"></i>\n <p translate class=\"m-r-8\">Need more filter possibilities?</p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: i7.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i8.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i9.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i11.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i12.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i13.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: i14.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i15.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i16.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i17.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i18.ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: i19.GetGroupIconPipe, name: "getGroupIcon" }] });
206
+ SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SearchInputComponent, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", customPlaceholder: "customPlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n type=\"button\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div \n class=\"search-header-inline\" \n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form \n [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\" \n novalidate \n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n (keydown)=\"keyDown($event)\"\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n name=\"selected\"\n title=\"Search\"\n >\n <div\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0 && mode === 'search'\">\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Starts with' | translate }}\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Contains' | translate }}\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Ends with' | translate }}\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n class=\"p-l-24 p-r-24\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\" \n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-24 p-r-24\" [selectable]=\"false\">\n <div class=\"legend form-block m-0\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n [title]=\"result.name\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state \n data-cy=\"search-input--empty-state\" \n [ngClass]=\"{ 'p-4': mode === 'search' }\"\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small translate *ngIf=\"mode === 'search'\">\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small translate *ngIf=\"mode === 'select'\">Try to rephrase your search word.</small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i c8yIcon=\"info-circle\" class=\"text-info m-r-4\"></i>\n <p translate class=\"m-r-8\">Need more filter possibilities?</p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: i7.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i8.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i9.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i11.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i12.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i13.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: i14.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i15.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i16.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i17.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i18.ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: i19.GetGroupIconPipe, name: "getGroupIcon" }] });
207
207
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SearchInputComponent, decorators: [{
208
208
  type: Component,
209
- args: [{ selector: 'c8y-search-input', template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n type=\"button\"\n [title]=\"'Search' | translate\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i c8yIcon=\"search\" class=\"icon-2x\"></i>\n </button>\n\n <div\n id=\"searchDropdown\"\n *dropdownMenu\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div class=\"search-header-inline\" *ngIf=\"mode === 'select'\">\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\" novalidate #searchForm=\"ngForm\">\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n (keydown)=\"keyDown($event)\"\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n name=\"selected\"\n title=\"Search\"\n >\n <div\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0 && mode === 'search'\">\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Starts with' | translate }}\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Contains' | translate }}\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Ends with' | translate }}\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n class=\"p-l-24 p-r-24\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i [c8yIcon]=\"result | getGroupIcon\" class=\"c8y-icon-duocolor\"></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n class=\"p-l-24 p-r-24\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i [c8yIcon]=\"result | getGroupIcon\" class=\"c8y-icon-duocolor\"></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-24 p-r-24\" [selectable]=\"false\">\n <div class=\"legend form-block m-0\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n [title]=\"result.name\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i [c8yIcon]=\"result | getGroupIcon\" class=\"c8y-icon-duocolor\"></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state \n data-cy=\"search-input--empty-state\" \n [ngClass]=\"{ 'p-4': mode === 'search' }\"\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small translate *ngIf=\"mode === 'search'\">\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small translate *ngIf=\"mode === 'select'\">Try to rephrase your search word.</small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i c8yIcon=\"info-circle\" class=\"text-info m-r-4\"></i>\n <p translate class=\"m-r-8\">Need more filter possibilities?</p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n" }]
209
+ args: [{ selector: 'c8y-search-input', template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n type=\"button\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div \n class=\"search-header-inline\" \n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form \n [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\" \n novalidate \n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n (keydown)=\"keyDown($event)\"\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n name=\"selected\"\n title=\"Search\"\n >\n <div\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0 && mode === 'search'\">\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Starts with' | translate }}\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Contains' | translate }}\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Ends with' | translate }}\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n class=\"p-l-24 p-r-24\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\" \n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-24 p-r-24\" [selectable]=\"false\">\n <div class=\"legend form-block m-0\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n [title]=\"result.name\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state \n data-cy=\"search-input--empty-state\" \n [ngClass]=\"{ 'p-4': mode === 'search' }\"\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small translate *ngIf=\"mode === 'search'\">\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small translate *ngIf=\"mode === 'select'\">Try to rephrase your search word.</small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i c8yIcon=\"info-circle\" class=\"text-info m-r-4\"></i>\n <p translate class=\"m-r-8\">Need more filter possibilities?</p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n" }]
210
210
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.InventoryService }, { type: i3.InventorySearchService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { mode: [{
211
211
  type: Input
212
212
  }], enableCustomTemplatePlaceholder: [{
@@ -239,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
239
239
  type: HostListener,
240
240
  args: ['document:keydown', ['$event']]
241
241
  }] } });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VhcmNoL3NlYXJjaC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlYXJjaC9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFrQixnQkFBZ0IsRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFpQixNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTXBFLE1BQU0sT0FBTyxvQkFBb0I7SUF5RS9CLFlBQ1UsTUFBYyxFQUNkLFNBQTJCLEVBQzNCLHNCQUE4QyxFQUM5QyxFQUFxQjtRQUhyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFU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QUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDOztpSEE5T1Usb0JBQW9CO3FHQUFwQixvQkFBb0IsMmZBbUVwQixrQkFBa0IsNklDMUYvQixrNFBBc09BOzJGRC9NYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCO2lNQUs1QixJQUFJO3NCQURILEtBQUs7Z0JBTUcsK0JBQStCO3NCQUF2QyxLQUFLO2dCQUtHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFNRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdOLE1BQU07c0JBREwsTUFBTTtnQkFJUCxNQUFNO3NCQURMLE1BQU07Z0JBSVAsS0FBSztzQkFESixNQUFNO2dCQUlQLE9BQU87c0JBRE4sTUFBTTtnQkEyQkMsU0FBUztzQkFEaEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXhDLFFBQVE7c0JBRGYsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBeUNBLGdCQUFnQjtzQkFBN0QsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIElSZXN1bHRMaXN0LCBQYWdpbmcgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IEJzRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IGRlZmVyLCBlbXB0eSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBVbmFyeUZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWFuYWdlZE9iamVjdFR5cGUgfSBmcm9tICcuLi9jb21tb24vbWFuYWdlZC1vYmplY3QtdHlwZSc7XG5pbXBvcnQgeyBUeXBlYWhlYWRDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QvdHlwZWFoZWFkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi9pbnZlbnRvcnktc2VhcmNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc2VhcmNoLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoSW5wdXRDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBtb2RlOiAnc2VhcmNoJyB8ICdzZWxlY3QnID0gJ3NlYXJjaCc7XG5cbiAgLyoqXG4gICAqIFVubG9ja3MgdGhlIGFiaWxpdHkgdG8gcGxhY2UgYSBjdXN0b20gdGVtcGxhdGUgdW5kZXIgdGhlIHNlYXJjaCBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZUN1c3RvbVRlbXBsYXRlUGxhY2Vob2xkZXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBjdXN0b20gcGxhY2Vob2xkZXIgaW4gdGhlIHNlYXJjaCBiYXIuXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21QbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFdmVudCwgd2hpY2ggaXMgdXNlZCB0byBzZXQgYSBuZXcgZXh0ZXJuYWwgdGVybS4gUGFzc2luZyBudWxsIHdpbGwgcmUtZXhlY3V0ZSB0aGUgcXVlcnkgdG8gQkUuXG4gICAqIFRoaXMgYWxsb3dzIG5ldyBmaWx0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0ZXJtLlxuICAgKi9cbiAgQElucHV0KCkgZXh0ZXJuYWxUZXJtOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcbiAgLyoqXG4gICAqIEEgY3VzdG9tIHF1ZXJ5IHNldHRlciB1c2VkIHRvIG92ZXJyaWRlIHRoZSBzdGFuZGFyZCBxdWVyeS4gSW4gb3JkZXIgdG8gb2J0YWluIGRhdGEuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY3VzdG9tRGF0YVF1ZXJ5KHF1ZXJ5OiBVbmFyeUZ1bmN0aW9uPHN0cmluZywgT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4+Pikge1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgdGhpcy5jdXN0b21RdWVyeSA9IHF1ZXJ5O1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBjb250YWluZXI6ICcnIHwgJ2JvZHknID0gJyc7XG5cbiAgQElucHV0KCkgZ3JvdXBzT25seSA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBmaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KClcbiAgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlc2V0ID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFuYWdlZE9iamVjdD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgZGV2aWNlVHlwZTogdHlwZW9mIE1hbmFnZWRPYmplY3RUeXBlID0gTWFuYWdlZE9iamVjdFR5cGU7XG4gIHRlcm0gPSAnJztcbiAgZGVmYXVsdFBsYWNlaG9sZGVyID0gZ2V0dGV4dCgnU2VhcmNoIGZvciBncm91cHMgb3IgYXNzZXRz4oCmJyk7XG4gIHNlbGVjdGVkO1xuXG4gIGN1c3RvbVF1ZXJ5OiAodGV4dDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlc3VsdHMkOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlY2VudFNlYXJjaFJlc3VsdHM6IElNYW5hZ2VkT2JqZWN0W10gPSBbXTtcbiAgcmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+PjtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIG5vTWF0Y2ggPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFJFQ0VOVF9TRUFSQ0hfU1RPUkFHRV9LRVkgPSAncmVjZW50X3NlYXJjaF92aWV3JztcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfUkVDRU5UX1NFQVJDSF9SRVNVTFRTID0gNTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0ZJTFRFUjogb2JqZWN0ID0ge1xuICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgIHBhZ2VTaXplOiA1LFxuICAgIHdpdGhDaGlsZHJlbjogZmFsc2VcbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VOVEVSID0gJ0VudGVyJztcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VTQyA9ICdFc2NhcGUnO1xuICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGQoVHlwZWFoZWFkQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSB0eXBlYWhlYWQ6IFR5cGVhaGVhZENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIGRyb3Bkb3duOiBCc0Ryb3Bkb3duRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZWFyY2hTZXJ2aWNlOiBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCByZWNlbnRTZWFyY2hJZHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSkpO1xuICAgIGlmIChyZWNlbnRTZWFyY2hJZHMgJiYgcmVjZW50U2VhcmNoSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkubGlzdCh7IGlkczogcmVjZW50U2VhcmNoSWRzLmpvaW4oJywnKSB9KTtcbiAgICAgIHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cyA9IHRoaXMuZ3JvdXBzT25seVxuICAgICAgICA/IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5maWx0ZXJPbmx5R3JvdXBzKGRhdGEpXG4gICAgICAgIDogZGF0YTtcbiAgICAgIHRoaXMucmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQgPSBkZWZlcigoKSA9PlxuICAgICAgICB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgICAgICBxOiAnJG9yZGVyYnk9Y3JlYXRpb25UaW1lIGRlc2MnLFxuICAgICAgICAgIC4uLnRoaXMuREVGQVVMVF9GSUxURVJcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZU9uU2VhcmNoKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHRlcm5hbFRlcm0pIHtcbiAgICAgIHRoaXMuZXh0ZXJuYWxUZXJtLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSh0ZXJtID0+IHtcbiAgICAgICAgaWYgKHRlcm0gPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5lbWl0KHRoaXMudGVybSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQodGVybSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMuS0VZQ09ERV9FU0MpIHtcbiAgICAgIHRoaXMuaGlkZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ2hhbmdlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIC8vIG5lZWRzIHRvIHJlcXVlc3QgYW4gYW5pbWF0aW9uIGZyYW1lIGFzXG4gICAgICAvLyBvdGhlcndpc2UgdGhlIHR5cGVhaGVhZCBpcyB1bmRlZmluZWRcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlT25TZWFyY2goKTtcbiAgICAgICAgdGhpcy50eXBlYWhlYWQuZHJvcGRvd24uc2hvdygpO1xuICAgICAgICB0aGlzLnR5cGVhaGVhZC5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9wZW4oZXZlbnQ6IEV2ZW50LCBtbzogSU1hbmFnZWRPYmplY3QsIHRlcm0/KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgaXNBbHJlYWR5UmVjZW50ID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IG1vLmlkKTtcbiAgICBpZiAoIWlzQWxyZWFkeVJlY2VudCkge1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnVuc2hpZnQobW8pO1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnNsaWNlKDAsIHRoaXMuTUFYX1JFQ0VOVF9TRUFSQ0hfUkVTVUxUUyk7XG4gICAgfVxuICAgIGNvbnN0IHJlY2VudFNlYXJjaElkcyA9IHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cy5tYXAoKHsgaWQgfSkgPT4gaWQpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkocmVjZW50U2VhcmNoSWRzKSk7XG4gICAgaWYgKHRlcm0pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBtbztcbiAgICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgfVxuICAgIHRoaXMub25DbGljay5lbWl0KG1vKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25SZXNldChzdGF0dXM6IHsgaWNvbjogc3RyaW5nOyAkZXZlbnQ6IE1vdXNlRXZlbnQgfSkge1xuICAgIHN0YXR1cy4kZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZXNldC5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xuICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQoJycpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50eXBlYWhlYWQuc2VhcmNoQ29udHJvbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5LRVlDT0RFX0VOVEVSKSB7XG4gICAgICAvLyBlbnRlciBoaXQgY2FuIGJlIGZhc3RlciB0aGVuIHR5cGVhaGVhZCBkZWJvdW5jZSxcbiAgICAgIC8vIHRoZXJlZm9yZSB3ZSB0YWtlIHRoZSB0ZXJtIGZyb20gdGhlIERPTSBlbGVtZW50XG4gICAgICAvLyBpdHNlbGY6XG4gICAgICBjb25zdCBzZWFyY2hUZXJtID0gKGV2ZW50LnRhcmdldCBhcyBhbnkpLnZhbHVlO1xuICAgICAgdGhpcy5vblNlYXJjaChzZWFyY2hUZXJtKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2g6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoLmVtaXQoc2VhcmNoKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25GaWx0ZXIoc2VhcmNoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlci5lbWl0KHNlYXJjaCk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG9uT3BlbkFzc2V0VGFibGUoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2Fzc2V0c2VhcmNoJyk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm9uRGVzdHJveSQpIHtcbiAgICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVEcm9wZG93bigpIHtcbiAgICBpZiAodGhpcy5kcm9wZG93bikge1xuICAgICAgdGhpcy5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZWFoZWFkICYmIHRoaXMudHlwZWFoZWFkLmRyb3Bkb3duKSB7XG4gICAgICB0aGlzLnR5cGVhaGVhZC5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVPblNlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMucmVzdWx0cyQpIHtcbiAgICAgIHRoaXMucmVzdWx0cyQgPSB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5waXBlKFxuICAgICAgICB0YXAodGVybSA9PiB0aGlzLm9uVHlwaW5nU3RhcnRlZCh0ZXJtKSksXG4gICAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMubWVyZ2VSZXF1ZXN0KHRlcm0pKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlUmVxdWVzdCh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4ge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgIG9mKHsgZGF0YTogW10gfSBhcyBJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgdGhpcy5oYW5kbGVRdWVyeSh0ZXJtKS5waXBlKHRhcCgoeyBkYXRhLCBwYWdpbmcgfSkgPT4gdGhpcy5vbkxvYWRpbmdEb25lKGRhdGEsIHBhZ2luZykpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVF1ZXJ5KHRlcm06IHN0cmluZykge1xuICAgIGlmICghdGVybSkge1xuICAgICAgcmV0dXJuIGVtcHR5KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmN1c3RvbVF1ZXJ5KSB7XG4gICAgICByZXR1cm4gZGVmZXIoKCkgPT4gdGhpcy5jdXN0b21RdWVyeSh0ZXJtKSk7XG4gICAgfVxuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgdGhpcy5ncm91cHNPbmx5XG4gICAgICAgID8gdGhpcy5pbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLnNlYXJjaEdyb3Vwcyh0ZXJtKVxuICAgICAgICA6IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5zZWFyY2godGVybSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkxvYWRpbmdEb25lKGRhdGE6IElNYW5hZ2VkT2JqZWN0W10sIHBhZ2luZzogUGFnaW5nPElNYW5hZ2VkT2JqZWN0Pikge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5ub01hdGNoID0gcGFnaW5nICYmIHBhZ2luZy5uZXh0UGFnZSA9PT0gbnVsbCAmJiBkYXRhLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgb25UeXBpbmdTdGFydGVkKHRlcm0pIHtcbiAgICB0aGlzLm5vTWF0Y2ggPSBmYWxzZTtcbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdGVybS5sZW5ndGggPiAwO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZHJvcGRvd25cIlxuICAjc2VhcmNoRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgKGlzT3BlbkNoYW5nZSk9XCJvbk9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gIFtjZGtUcmFwRm9jdXNdPVwic2VhcmNoRHJvcGRvd24uaXNPcGVuXCJcbiAgKm5nSWY9XCJtb2RlID09PSAnc2VhcmNoJ1wiXG4gIGRyb3Bkb3duXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cIm1haW4taGVhZGVyLWJ1dHRvbiBkcm9wZG93bi10b2dnbGUgYzh5LWRyb3Bkb3duXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbdGl0bGVdPVwiJ1NlYXJjaCcgfCB0cmFuc2xhdGVcIlxuICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLWJ0blwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwic2VhcmNoXCIgY2xhc3M9XCJpY29uLTJ4XCI+PC9pPlxuICA8L2J1dHRvbj5cblxuICA8ZGl2XG4gICAgaWQ9XCJzZWFyY2hEcm9wZG93blwiXG4gICAgKmRyb3Bkb3duTWVudVxuICAgIGNsYXNzPVwic2VhcmNoLWhlYWRlci1tZW51IGRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwic2VhcmNoLWhlYWRlci1pbmxpbmVcIiAqbmdJZj1cIm1vZGUgPT09ICdzZWxlY3QnXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZm9ybT5cbiAgPGZvcm0gW25nQ2xhc3NdPVwieyAnYzh5LXNlYXJjaC1mb3JtJzogbW9kZSA9PT0gJ3NlYXJjaCcgfVwiIG5vdmFsaWRhdGUgI3NlYXJjaEZvcm09XCJuZ0Zvcm1cIj5cbiAgICA8Yzh5LXR5cGVhaGVhZFxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7IGN1c3RvbVBsYWNlaG9sZGVyID8gY3VzdG9tUGxhY2Vob2xkZXIgOiBkZWZhdWx0UGxhY2Vob2xkZXIgfX1cIlxuICAgICAgKGtleWRvd24pPVwia2V5RG93bigkZXZlbnQpXCJcbiAgICAgIChvbkljb25DbGljayk9XCJvblJlc2V0KCRldmVudClcIlxuICAgICAgW2ljb25dPVwidGVybSA/ICd0aW1lcycgOiAnc2VhcmNoJ1wiXG4gICAgICBbYWxsb3dGcmVlRW50cmllc109XCJmYWxzZVwiXG4gICAgICBbY29udGFpbmVyXT1cImNvbnRhaW5lclwiXG4gICAgICBuYW1lPVwic2VsZWN0ZWRcIlxuICAgICAgdGl0bGU9XCJTZWFyY2hcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJlbmFibGVDdXN0b21UZW1wbGF0ZVBsYWNlaG9sZGVyICYmIG1vZGUgPT09ICdzZWFyY2gnXCJcbiAgICAgICAgY2xhc3M9XCJjOHktbGlzdF9faXRlbSBwLWwtMjQgcC1yLTI0IHAtYi04IHNlcGFyYXRvci1ib3R0b20gc3RpY2t5LXRvcCBwLXQtNFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIGZpbHRlciBidXR0b25zIC0tPlxuICAgICAgPGM4eS1saSAqbmdJZj1cInRlcm0ubGVuZ3RoICE9PSAwICYmIG1vZGUgPT09ICdzZWFyY2gnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cIm0tci00IHRleHQtbXV0ZWRcIj5cbiAgICAgICAgICAgIDxlbSB0cmFuc2xhdGU+U2VhcmNoaW5nIGJ5IGV4YWN0IG1hdGNoLiBDbGljayBmb3Igb3RoZXIgc2VhcmNoIG9wdGlvbnM6PC9lbT5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAtc21cIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU3RhcnRzIHdpdGgnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLXN0YXJ0cy13aXRoXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyKHRlcm0gKyAnKicpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ1N0YXJ0cyB3aXRoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0NvbnRhaW5zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIGRhdGEtY3k9XCJzZWFyY2gtaW5wdXQtLXNlYXJjaC1jb250YWluc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlcignKicgKyB0ZXJtICsgJyonKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdDb250YWlucycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdFbmRzIHdpdGgnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLWVuZHMtd2l0aFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlcignKicgKyB0ZXJtKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdFbmRzIHdpdGgnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cblxuICAgICAgPCEtLSBSZWNlbnQgc2VhcmNoIC0tPlxuICAgICAgPGM4eS1saVxuICAgICAgICAqbmdJZj1cInRlcm0ubGVuZ3RoID09PSAwICYmIHJlY2VudFNlYXJjaFJlc3VsdHMubGVuZ3RoID4gMFwiXG4gICAgICAgIFtzZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgY2xhc3M9XCJwLWwtMjQgcC1yLTI0XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlJlY2VudCBzZWFyY2ggdmlld3M8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgICpuZ0Zvcj1cImxldCByZXN1bHQgb2YgdGVybS5sZW5ndGggPT09IDAgPyByZWNlbnRTZWFyY2hSZXN1bHRzIDogW11cIlxuICAgICAgICBjbGFzcz1cImM4eS1saXN0X19pdGVtLS1saW5rIG0tbC0xNiBtLXItMTZcIlxuICAgICAgICAoY2xpY2spPVwib3BlbigkZXZlbnQsIHJlc3VsdCwgcmVzdWx0Lm5hbWUpXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN1bHQgfCBzaG91bGRTaG93TW86IGRldmljZVR5cGUuREVWSUNFOyBlbHNlIGdyb3VwXCI+XG4gICAgICAgICAgICA8ZGV2aWNlLXN0YXR1cyBbbW9dPVwicmVzdWx0XCI+PC9kZXZpY2Utc3RhdHVzPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXA+XG4gICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJyZXN1bHQgfCBnZXRHcm91cEljb25cIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCI+PC9pPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgIHt7IHJlc3VsdC5uYW1lIHx8ICctLScgfX1cbiAgICAgIDwvYzh5LWxpPlxuXG4gICAgICA8IS0tIFJlY2VudGx5IHJlZ2lzdGVyZWQgZGV2aWNlcyAtLT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICB0ZXJtLmxlbmd0aCA9PT0gMCAmJiAocmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQgfCBhc3luYyk/LmRhdGE/Lmxlbmd0aCA+IDAgJiYgIWdyb3Vwc09ubHlcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJwLWwtMjQgcC1yLTI0XCJcbiAgICAgICAgW3NlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2tcIj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+UmVjZW50bHkgcmVnaXN0ZXJlZCBkZXZpY2VzPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYzh5LWxpPlxuICAgICAgPGM4eS1saVxuICAgICAgICAqYzh5Rm9yPVwiXG4gICAgICAgICAgbGV0IHJlc3VsdCBvZiB0ZXJtLmxlbmd0aCA9PT0gMCAmJiAhZ3JvdXBzT25seVxuICAgICAgICAgICAgPyByZWNlbnRseVJlZ2lzdGVyZWRSZXN1bHRzJFxuICAgICAgICAgICAgOiB7IGRhdGE6IFtdIH07XG4gICAgICAgICAgbG9hZE1vcmU6ICdub25lJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImM4eS1saXN0X19pdGVtLS1saW5rIG0tbC0xNiBtLXItMTZcIlxuICAgICAgICAoY2xpY2spPVwib3BlbigkZXZlbnQsIHJlc3VsdCwgcmVzdWx0Lm5hbWUpXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN1bHQgfCBzaG91bGRTaG93TW86IGRldmljZVR5cGUuREVWSUNFOyBlbHNlIGdyb3VwXCI+XG4gICAgICAgICAgICA8ZGV2aWNlLXN0YXR1cyBbbW9dPVwicmVzdWx0XCI+PC9kZXZpY2Utc3RhdHVzPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXA+XG4gICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJyZXN1bHQgfCBnZXRHcm91cEljb25cIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCI+PC9pPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgIHt7IHJlc3VsdC5uYW1lIHx8ICctLScgfX1cbiAgICAgIDwvYzh5LWxpPlxuXG4gICAgICA8IS0tIFNlYXJjaCByZXN1bHRzIC0tPlxuICAgICAgPGM4eS1saSAqbmdJZj1cInRlcm0ubGVuZ3RoICE9PSAwXCIgY2xhc3M9XCJwLWwtMjQgcC1yLTI0XCIgW3NlbGVjdGFibGVdPVwiZmFsc2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIG0tMFwiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5TZWFyY2ggcmVzdWx0czwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgKmM4eUZvcj1cIlxuICAgICAgICAgIGxldCByZXN1bHQgb2YgcmVzdWx0cyQ7XG4gICAgICAgICAgbG9hZE1vcmU6ICdhdXRvJztcbiAgICAgICAgICBub3RGb3VuZDogbm90Rm91bmRUZW1wbGF0ZTtcbiAgICAgICAgICBsb2FkaW5nVGVtcGxhdGU6IGxvYWRpbmc7XG4gICAgICAgICAgbG9hZE5leHRMYWJlbDogJ0ZpbmQgbW9yZeKApidcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjOHktbGlzdF9faXRlbS0tbGluayBtLWwtMTYgbS1yLTE2XCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW4oJGV2ZW50LCByZXN1bHQsIHJlc3VsdC5uYW1lKVwiXG4gICAgICAgIFt0aXRsZV09XCJyZXN1bHQubmFtZVwiXG4gICAgICAgIGRhdGEtY3k9XCJzZWFyY2gtaW5wdXQtLXNlYXJjaC1yZXN1bHRzXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN1bHQgfCBzaG91bGRTaG93TW86IGRldmljZVR5cGUuREVWSUNFOyBlbHNlIGdyb3VwXCI+XG4gICAgICAgICAgICA8ZGV2aWNlLXN0YXR1cyBbbW9dPVwicmVzdWx0XCI+PC9kZXZpY2Utc3RhdHVzPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXA+XG4gICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJyZXN1bHQgfCBnZXRHcm91cEljb25cIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCI+PC9pPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgIHt7IHJlc3VsdC5uYW1lIHx8ICctLScgfX1cbiAgICAgIDwvYzh5LWxpPlxuXG4gICAgICA8IS0tIE5vIHNlYXJjaCByZXN1bHRzIGZvdW5kIGVudHJ5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNub3RGb3VuZFRlbXBsYXRlPlxuICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlIFxuICAgICAgICAgIGRhdGEtY3k9XCJzZWFyY2gtaW5wdXQtLWVtcHR5LXN0YXRlXCIgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAncC00JzogbW9kZSA9PT0gJ3NlYXJjaCcgfVwiXG4gICAgICAgICAgW2ljb25dPVwiJ3NlYXJjaCdcIlxuICAgICAgICAgIFt0aXRsZV09XCInTm8gbWF0Y2ggZm91bmQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgKm5nSWY9XCJub01hdGNoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGUgKm5nSWY9XCJtb2RlID09PSAnc2VhcmNoJ1wiPlxuICAgICAgICAgICAgVHJ5IHRvIGZpbHRlciBvciBvcGVuIHRoZSBhc3NldCBncmlkIHRvIHNob3cgYWxsIGRldmljZXMgYW5kIGdyb3Vwcy5cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGUgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0J1wiPlRyeSB0byByZXBocmFzZSB5b3VyIHNlYXJjaCB3b3JkLjwvc21hbGw+XG4gICAgICAgIDwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBsb2FkaW5nIGJhciBmaXJzdCBlbnRyaWVzIC0tPlxuICAgICAgPGM4eS1saSAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgIDwvYzh5LWxpPlxuXG4gICAgICA8IS0tIGxvYWRpbmcgYmFyIGZvciBsb2FkaW5nIG1vcmUgZW50cmllcyAoaW52ZW50b3J5IHJvbGVzKSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgICAgICAgPGM4eS1saT5cbiAgICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgICAgPC9jOHktbGk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIG1vcmUgZmlsdGVyIHBvc3NpYmlsaXRpZXMgLS0+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgIGNsYXNzPVwibS10LTI0IGJnLWxldmVsLTIgcC10LTE2IHAtYi0xNiBwLWwtMjQgcC1yLTI0IHN0aWNreS1ib3R0b21cIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3NlYXJjaCdcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICA8aSBjOHlJY29uPVwiaW5mby1jaXJjbGVcIiBjbGFzcz1cInRleHQtaW5mbyBtLXItNFwiPjwvaT5cbiAgICAgICAgICA8cCB0cmFuc2xhdGUgY2xhc3M9XCJtLXItOFwiPk5lZWQgbW9yZSBmaWx0ZXIgcG9zc2liaWxpdGllcz88L3A+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJtLWwtMTYgYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0dvIHRvIHRoZSBhc3NldCBkYXRhIHRhYmxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uT3BlbkFzc2V0VGFibGUoKVwiXG4gICAgICAgICAgICBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1hc3NldC10YWJsZS1idG5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdHbyB0byB0aGUgYXNzZXQgZGF0YSB0YWJsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICA8L2M4eS10eXBlYWhlYWQ+XG4gIDwvZm9ybT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VhcmNoL3NlYXJjaC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlYXJjaC9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFrQixnQkFBZ0IsRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFpQixNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTXBFLE1BQU0sT0FBTyxvQkFBb0I7SUF5RS9CLFlBQ1UsTUFBYyxFQUNkLFNBQTJCLEVBQzNCLHNCQUE4QyxFQUM5QyxFQUFxQjtRQUhyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFU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QUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDOztpSEE5T1Usb0JBQW9CO3FHQUFwQixvQkFBb0IsMmZBbUVwQixrQkFBa0IsNklDMUYvQiwyc1FBOFBBOzJGRHZPYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCO2lNQUs1QixJQUFJO3NCQURILEtBQUs7Z0JBTUcsK0JBQStCO3NCQUF2QyxLQUFLO2dCQUtHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFNRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdOLE1BQU07c0JBREwsTUFBTTtnQkFJUCxNQUFNO3NCQURMLE1BQU07Z0JBSVAsS0FBSztzQkFESixNQUFNO2dCQUlQLE9BQU87c0JBRE4sTUFBTTtnQkEyQkMsU0FBUztzQkFEaEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXhDLFFBQVE7c0JBRGYsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBeUNBLGdCQUFnQjtzQkFBN0QsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIElSZXN1bHRMaXN0LCBQYWdpbmcgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IEJzRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IGRlZmVyLCBlbXB0eSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBVbmFyeUZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWFuYWdlZE9iamVjdFR5cGUgfSBmcm9tICcuLi9jb21tb24vbWFuYWdlZC1vYmplY3QtdHlwZSc7XG5pbXBvcnQgeyBUeXBlYWhlYWRDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QvdHlwZWFoZWFkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi9pbnZlbnRvcnktc2VhcmNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc2VhcmNoLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoSW5wdXRDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBtb2RlOiAnc2VhcmNoJyB8ICdzZWxlY3QnID0gJ3NlYXJjaCc7XG5cbiAgLyoqXG4gICAqIFVubG9ja3MgdGhlIGFiaWxpdHkgdG8gcGxhY2UgYSBjdXN0b20gdGVtcGxhdGUgdW5kZXIgdGhlIHNlYXJjaCBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZUN1c3RvbVRlbXBsYXRlUGxhY2Vob2xkZXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBjdXN0b20gcGxhY2Vob2xkZXIgaW4gdGhlIHNlYXJjaCBiYXIuXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21QbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFdmVudCwgd2hpY2ggaXMgdXNlZCB0byBzZXQgYSBuZXcgZXh0ZXJuYWwgdGVybS4gUGFzc2luZyBudWxsIHdpbGwgcmUtZXhlY3V0ZSB0aGUgcXVlcnkgdG8gQkUuXG4gICAqIFRoaXMgYWxsb3dzIG5ldyBmaWx0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0ZXJtLlxuICAgKi9cbiAgQElucHV0KCkgZXh0ZXJuYWxUZXJtOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcbiAgLyoqXG4gICAqIEEgY3VzdG9tIHF1ZXJ5IHNldHRlciB1c2VkIHRvIG92ZXJyaWRlIHRoZSBzdGFuZGFyZCBxdWVyeS4gSW4gb3JkZXIgdG8gb2J0YWluIGRhdGEuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY3VzdG9tRGF0YVF1ZXJ5KHF1ZXJ5OiBVbmFyeUZ1bmN0aW9uPHN0cmluZywgT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4+Pikge1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgdGhpcy5jdXN0b21RdWVyeSA9IHF1ZXJ5O1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBjb250YWluZXI6ICcnIHwgJ2JvZHknID0gJyc7XG5cbiAgQElucHV0KCkgZ3JvdXBzT25seSA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBmaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KClcbiAgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlc2V0ID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFuYWdlZE9iamVjdD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgZGV2aWNlVHlwZTogdHlwZW9mIE1hbmFnZWRPYmplY3RUeXBlID0gTWFuYWdlZE9iamVjdFR5cGU7XG4gIHRlcm0gPSAnJztcbiAgZGVmYXVsdFBsYWNlaG9sZGVyID0gZ2V0dGV4dCgnU2VhcmNoIGZvciBncm91cHMgb3IgYXNzZXRz4oCmJyk7XG4gIHNlbGVjdGVkO1xuXG4gIGN1c3RvbVF1ZXJ5OiAodGV4dDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlc3VsdHMkOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlY2VudFNlYXJjaFJlc3VsdHM6IElNYW5hZ2VkT2JqZWN0W10gPSBbXTtcbiAgcmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+PjtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIG5vTWF0Y2ggPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFJFQ0VOVF9TRUFSQ0hfU1RPUkFHRV9LRVkgPSAncmVjZW50X3NlYXJjaF92aWV3JztcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfUkVDRU5UX1NFQVJDSF9SRVNVTFRTID0gNTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0ZJTFRFUjogb2JqZWN0ID0ge1xuICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgIHBhZ2VTaXplOiA1LFxuICAgIHdpdGhDaGlsZHJlbjogZmFsc2VcbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VOVEVSID0gJ0VudGVyJztcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VTQyA9ICdFc2NhcGUnO1xuICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGQoVHlwZWFoZWFkQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSB0eXBlYWhlYWQ6IFR5cGVhaGVhZENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIGRyb3Bkb3duOiBCc0Ryb3Bkb3duRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZWFyY2hTZXJ2aWNlOiBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCByZWNlbnRTZWFyY2hJZHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSkpO1xuICAgIGlmIChyZWNlbnRTZWFyY2hJZHMgJiYgcmVjZW50U2VhcmNoSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkubGlzdCh7IGlkczogcmVjZW50U2VhcmNoSWRzLmpvaW4oJywnKSB9KTtcbiAgICAgIHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cyA9IHRoaXMuZ3JvdXBzT25seVxuICAgICAgICA/IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5maWx0ZXJPbmx5R3JvdXBzKGRhdGEpXG4gICAgICAgIDogZGF0YTtcbiAgICAgIHRoaXMucmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQgPSBkZWZlcigoKSA9PlxuICAgICAgICB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgICAgICBxOiAnJG9yZGVyYnk9Y3JlYXRpb25UaW1lIGRlc2MnLFxuICAgICAgICAgIC4uLnRoaXMuREVGQVVMVF9GSUxURVJcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZU9uU2VhcmNoKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHRlcm5hbFRlcm0pIHtcbiAgICAgIHRoaXMuZXh0ZXJuYWxUZXJtLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSh0ZXJtID0+IHtcbiAgICAgICAgaWYgKHRlcm0gPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5lbWl0KHRoaXMudGVybSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQodGVybSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMuS0VZQ09ERV9FU0MpIHtcbiAgICAgIHRoaXMuaGlkZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ2hhbmdlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIC8vIG5lZWRzIHRvIHJlcXVlc3QgYW4gYW5pbWF0aW9uIGZyYW1lIGFzXG4gICAgICAvLyBvdGhlcndpc2UgdGhlIHR5cGVhaGVhZCBpcyB1bmRlZmluZWRcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlT25TZWFyY2goKTtcbiAgICAgICAgdGhpcy50eXBlYWhlYWQuZHJvcGRvd24uc2hvdygpO1xuICAgICAgICB0aGlzLnR5cGVhaGVhZC5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9wZW4oZXZlbnQ6IEV2ZW50LCBtbzogSU1hbmFnZWRPYmplY3QsIHRlcm0/KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgaXNBbHJlYWR5UmVjZW50ID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IG1vLmlkKTtcbiAgICBpZiAoIWlzQWxyZWFkeVJlY2VudCkge1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnVuc2hpZnQobW8pO1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnNsaWNlKDAsIHRoaXMuTUFYX1JFQ0VOVF9TRUFSQ0hfUkVTVUxUUyk7XG4gICAgfVxuICAgIGNvbnN0IHJlY2VudFNlYXJjaElkcyA9IHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cy5tYXAoKHsgaWQgfSkgPT4gaWQpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkocmVjZW50U2VhcmNoSWRzKSk7XG4gICAgaWYgKHRlcm0pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBtbztcbiAgICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgfVxuICAgIHRoaXMub25DbGljay5lbWl0KG1vKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25SZXNldChzdGF0dXM6IHsgaWNvbjogc3RyaW5nOyAkZXZlbnQ6IE1vdXNlRXZlbnQgfSkge1xuICAgIHN0YXR1cy4kZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZXNldC5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xuICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQoJycpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50eXBlYWhlYWQuc2VhcmNoQ29udHJvbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5LRVlDT0RFX0VOVEVSKSB7XG4gICAgICAvLyBlbnRlciBoaXQgY2FuIGJlIGZhc3RlciB0aGVuIHR5cGVhaGVhZCBkZWJvdW5jZSxcbiAgICAgIC8vIHRoZXJlZm9yZSB3ZSB0YWtlIHRoZSB0ZXJtIGZyb20gdGhlIERPTSBlbGVtZW50XG4gICAgICAvLyBpdHNlbGY6XG4gICAgICBjb25zdCBzZWFyY2hUZXJtID0gKGV2ZW50LnRhcmdldCBhcyBhbnkpLnZhbHVlO1xuICAgICAgdGhpcy5vblNlYXJjaChzZWFyY2hUZXJtKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2g6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoLmVtaXQoc2VhcmNoKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25GaWx0ZXIoc2VhcmNoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlci5lbWl0KHNlYXJjaCk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG9uT3BlbkFzc2V0VGFibGUoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2Fzc2V0c2VhcmNoJyk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm9uRGVzdHJveSQpIHtcbiAgICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVEcm9wZG93bigpIHtcbiAgICBpZiAodGhpcy5kcm9wZG93bikge1xuICAgICAgdGhpcy5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZWFoZWFkICYmIHRoaXMudHlwZWFoZWFkLmRyb3Bkb3duKSB7XG4gICAgICB0aGlzLnR5cGVhaGVhZC5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVPblNlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMucmVzdWx0cyQpIHtcbiAgICAgIHRoaXMucmVzdWx0cyQgPSB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5waXBlKFxuICAgICAgICB0YXAodGVybSA9PiB0aGlzLm9uVHlwaW5nU3RhcnRlZCh0ZXJtKSksXG4gICAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMubWVyZ2VSZXF1ZXN0KHRlcm0pKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlUmVxdWVzdCh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4ge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgIG9mKHsgZGF0YTogW10gfSBhcyBJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgdGhpcy5oYW5kbGVRdWVyeSh0ZXJtKS5waXBlKHRhcCgoeyBkYXRhLCBwYWdpbmcgfSkgPT4gdGhpcy5vbkxvYWRpbmdEb25lKGRhdGEsIHBhZ2luZykpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVF1ZXJ5KHRlcm06IHN0cmluZykge1xuICAgIGlmICghdGVybSkge1xuICAgICAgcmV0dXJuIGVtcHR5KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmN1c3RvbVF1ZXJ5KSB7XG4gICAgICByZXR1cm4gZGVmZXIoKCkgPT4gdGhpcy5jdXN0b21RdWVyeSh0ZXJtKSk7XG4gICAgfVxuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgdGhpcy5ncm91cHNPbmx5XG4gICAgICAgID8gdGhpcy5pbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLnNlYXJjaEdyb3Vwcyh0ZXJtKVxuICAgICAgICA6IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5zZWFyY2godGVybSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkxvYWRpbmdEb25lKGRhdGE6IElNYW5hZ2VkT2JqZWN0W10sIHBhZ2luZzogUGFnaW5nPElNYW5hZ2VkT2JqZWN0Pikge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5ub01hdGNoID0gcGFnaW5nICYmIHBhZ2luZy5uZXh0UGFnZSA9PT0gbnVsbCAmJiBkYXRhLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgb25UeXBpbmdTdGFydGVkKHRlcm0pIHtcbiAgICB0aGlzLm5vTWF0Y2ggPSBmYWxzZTtcbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdGVybS5sZW5ndGggPiAwO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZHJvcGRvd25cIlxuICAjc2VhcmNoRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgKGlzT3BlbkNoYW5nZSk9XCJvbk9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gIFtjZGtUcmFwRm9jdXNdPVwic2VhcmNoRHJvcGRvd24uaXNPcGVuXCJcbiAgKm5nSWY9XCJtb2RlID09PSAnc2VhcmNoJ1wiXG4gIGRyb3Bkb3duXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cIm1haW4taGVhZGVyLWJ1dHRvbiBkcm9wZG93bi10b2dnbGUgYzh5LWRyb3Bkb3duXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbdGl0bGVdPVwiJ1NlYXJjaCcgfCB0cmFuc2xhdGVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLWJ0blwiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJpY29uLTJ4XCJcbiAgICAgIGM4eUljb249XCJzZWFyY2hcIlxuICAgID48L2k+XG4gIDwvYnV0dG9uPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cInNlYXJjaC1oZWFkZXItbWVudSBkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIlxuICAgIGlkPVwic2VhcmNoRHJvcGRvd25cIlxuICAgICpkcm9wZG93bk1lbnVcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgXG4gIGNsYXNzPVwic2VhcmNoLWhlYWRlci1pbmxpbmVcIiBcbiAgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0J1wiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZm9ybT5cbiAgPGZvcm0gXG4gICAgW25nQ2xhc3NdPVwieyAnYzh5LXNlYXJjaC1mb3JtJzogbW9kZSA9PT0gJ3NlYXJjaCcgfVwiIFxuICAgIG5vdmFsaWRhdGUgXG4gICAgI3NlYXJjaEZvcm09XCJuZ0Zvcm1cIlxuICA+XG4gICAgPGM4eS10eXBlYWhlYWRcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBjdXN0b21QbGFjZWhvbGRlciA/IGN1c3RvbVBsYWNlaG9sZGVyIDogZGVmYXVsdFBsYWNlaG9sZGVyIH19XCJcbiAgICAgIChrZXlkb3duKT1cImtleURvd24oJGV2ZW50KVwiXG4gICAgICAob25JY29uQ2xpY2spPVwib25SZXNldCgkZXZlbnQpXCJcbiAgICAgIFtpY29uXT1cInRlcm0gPyAndGltZXMnIDogJ3NlYXJjaCdcIlxuICAgICAgW2FsbG93RnJlZUVudHJpZXNdPVwiZmFsc2VcIlxuICAgICAgW2NvbnRhaW5lcl09XCJjb250YWluZXJcIlxuICAgICAgbmFtZT1cInNlbGVjdGVkXCJcbiAgICAgIHRpdGxlPVwiU2VhcmNoXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0gcC1sLTI0IHAtci0yNCBwLWItOCBzZXBhcmF0b3ItYm90dG9tIHN0aWNreS10b3AgcC10LTRcIlxuICAgICAgICAqbmdJZj1cImVuYWJsZUN1c3RvbVRlbXBsYXRlUGxhY2Vob2xkZXIgJiYgbW9kZSA9PT0gJ3NlYXJjaCdcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBmaWx0ZXIgYnV0dG9ucyAtLT5cbiAgICAgIDxjOHktbGkgKm5nSWY9XCJ0ZXJtLmxlbmd0aCAhPT0gMCAmJiBtb2RlID09PSAnc2VhcmNoJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtLXItNCB0ZXh0LW11dGVkXCI+XG4gICAgICAgICAgICA8ZW0gdHJhbnNsYXRlPlNlYXJjaGluZyBieSBleGFjdCBtYXRjaC4gQ2xpY2sgZm9yIG90aGVyIHNlYXJjaCBvcHRpb25zOjwvZW0+XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXNtXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1N0YXJ0cyB3aXRoJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIGRhdGEtY3k9XCJzZWFyY2gtaW5wdXQtLXNlYXJjaC1zdGFydHMtd2l0aFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlcih0ZXJtICsgJyonKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdTdGFydHMgd2l0aCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdDb250YWlucycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1zZWFyY2gtY29udGFpbnNcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25GaWx0ZXIoJyonICsgdGVybSArICcqJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnQ29udGFpbnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRW5kcyB3aXRoJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIGRhdGEtY3k9XCJzZWFyY2gtaW5wdXQtLXNlYXJjaC1lbmRzLXdpdGhcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25GaWx0ZXIoJyonICsgdGVybSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnRW5kcyB3aXRoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG5cbiAgICAgIDwhLS0gUmVjZW50IHNlYXJjaCAtLT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgY2xhc3M9XCJwLWwtMjQgcC1yLTI0XCJcbiAgICAgICAgKm5nSWY9XCJ0ZXJtLmxlbmd0aCA9PT0gMCAmJiByZWNlbnRTZWFyY2hSZXN1bHRzLmxlbmd0aCA+IDBcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5SZWNlbnQgc2VhcmNoIHZpZXdzPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYzh5LWxpPlxuICAgICAgPGM4eS1saVxuICAgICAgICBjbGFzcz1cImM4eS1saXN0X19pdGVtLS1saW5rIG0tbC0xNiBtLXItMTZcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgcmVzdWx0IG9mIHRlcm0ubGVuZ3RoID09PSAwID8gcmVjZW50U2VhcmNoUmVzdWx0cyA6IFtdXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW4oJGV2ZW50LCByZXN1bHQsIHJlc3VsdC5uYW1lKVwiXG4gICAgICA+XG4gICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0IHwgc2hvdWxkU2hvd01vOiBkZXZpY2VUeXBlLkRFVklDRTsgZWxzZSBncm91cFwiPlxuICAgICAgICAgICAgPGRldmljZS1zdGF0dXMgW21vXT1cInJlc3VsdFwiPjwvZGV2aWNlLXN0YXR1cz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2dyb3VwPlxuICAgICAgICAgICAgPGkgXG4gICAgICAgICAgICAgIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3JcIlxuICAgICAgICAgICAgICBbYzh5SWNvbl09XCJyZXN1bHQgfCBnZXRHcm91cEljb24gfCBhc3luY1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICB7eyByZXN1bHQubmFtZSB8fCAnLS0nIH19XG4gICAgICA8L2M4eS1saT5cblxuICAgICAgPCEtLSBSZWNlbnRseSByZWdpc3RlcmVkIGRldmljZXMgLS0+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgdGVybS5sZW5ndGggPT09IDAgJiYgKHJlY2VudGx5UmVnaXN0ZXJlZFJlc3VsdHMkIHwgYXN5bmMpPy5kYXRhPy5sZW5ndGggPiAwICYmICFncm91cHNPbmx5XG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwicC1sLTI0IHAtci0yNFwiXG4gICAgICAgIFtzZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlJlY2VudGx5IHJlZ2lzdGVyZWQgZGV2aWNlczwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgKmM4eUZvcj1cIlxuICAgICAgICAgIGxldCByZXN1bHQgb2YgdGVybS5sZW5ndGggPT09IDAgJiYgIWdyb3Vwc09ubHlcbiAgICAgICAgICAgID8gcmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyRcbiAgICAgICAgICAgIDogeyBkYXRhOiBbXSB9O1xuICAgICAgICAgIGxvYWRNb3JlOiAnbm9uZSdcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjOHktbGlzdF9faXRlbS0tbGluayBtLWwtMTYgbS1yLTE2XCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW4oJGV2ZW50LCByZXN1bHQsIHJlc3VsdC5uYW1lKVwiXG4gICAgICA+XG4gICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0IHwgc2hvdWxkU2hvd01vOiBkZXZpY2VUeXBlLkRFVklDRTsgZWxzZSBncm91cFwiPlxuICAgICAgICAgICAgPGRldmljZS1zdGF0dXMgW21vXT1cInJlc3VsdFwiPjwvZGV2aWNlLXN0YXR1cz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2dyb3VwPlxuICAgICAgICAgICAgPGkgXG4gICAgICAgICAgICAgIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3JcIlxuICAgICAgICAgICAgICBbYzh5SWNvbl09XCJyZXN1bHQgfCBnZXRHcm91cEljb24gfCBhc3luY1wiIFxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2k+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAge3sgcmVzdWx0Lm5hbWUgfHwgJy0tJyB9fVxuICAgICAgPC9jOHktbGk+XG5cbiAgICAgIDwhLS0gU2VhcmNoIHJlc3VsdHMgLS0+XG4gICAgICA8Yzh5LWxpICpuZ0lmPVwidGVybS5sZW5ndGggIT09IDBcIiBjbGFzcz1cInAtbC0yNCBwLXItMjRcIiBbc2VsZWN0YWJsZV09XCJmYWxzZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2sgbS0wXCI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlNlYXJjaCByZXN1bHRzPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYzh5LWxpPlxuICAgICAgPGM4eS1saVxuICAgICAgICAqYzh5Rm9yPVwiXG4gICAgICAgICAgbGV0IHJlc3VsdCBvZiByZXN1bHRzJDtcbiAgICAgICAgICBsb2FkTW9yZTogJ2F1dG8nO1xuICAgICAgICAgIG5vdEZvdW5kOiBub3RGb3VuZFRlbXBsYXRlO1xuICAgICAgICAgIGxvYWRpbmdUZW1wbGF0ZTogbG9hZGluZztcbiAgICAgICAgICBsb2FkTmV4dExhYmVsOiAnRmluZCBtb3Jl4oCmJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImM4eS1saXN0X19pdGVtLS1saW5rIG0tbC0xNiBtLXItMTZcIlxuICAgICAgICAoY2xpY2spPVwib3BlbigkZXZlbnQsIHJlc3VsdCwgcmVzdWx0Lm5hbWUpXCJcbiAgICAgICAgW3RpdGxlXT1cInJlc3VsdC5uYW1lXCJcbiAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLXJlc3VsdHNcIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWxpLWljb24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdCB8IHNob3VsZFNob3dNbzogZGV2aWNlVHlwZS5ERVZJQ0U7IGVsc2UgZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkZXZpY2Utc3RhdHVzIFttb109XCJyZXN1bHRcIj48L2RldmljZS1zdGF0dXM+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNncm91cD5cbiAgICAgICAgICAgIDxpIFxuICAgICAgICAgICAgICBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCJcbiAgICAgICAgICAgICAgW2M4eUljb25dPVwicmVzdWx0IHwgZ2V0R3JvdXBJY29uIHwgYXN5bmNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2k+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAge3sgcmVzdWx0Lm5hbWUgfHwgJy0tJyB9fVxuICAgICAgPC9jOHktbGk+XG5cbiAgICAgIDwhLS0gTm8gc2VhcmNoIHJlc3VsdHMgZm91bmQgZW50cnkgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgI25vdEZvdW5kVGVtcGxhdGU+XG4gICAgICAgIDxjOHktdWktZW1wdHktc3RhdGUgXG4gICAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tZW1wdHktc3RhdGVcIiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwLTQnOiBtb2RlID09PSAnc2VhcmNoJyB9XCJcbiAgICAgICAgICBbaWNvbl09XCInc2VhcmNoJ1wiXG4gICAgICAgICAgW3RpdGxlXT1cIidObyBtYXRjaCBmb3VuZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICAgICAgICAqbmdJZj1cIm5vTWF0Y2hcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZSAqbmdJZj1cIm1vZGUgPT09ICdzZWFyY2gnXCI+XG4gICAgICAgICAgICBUcnkgdG8gZmlsdGVyIG9yIG9wZW4gdGhlIGFzc2V0IGdyaWQgdG8gc2hvdyBhbGwgZGV2aWNlcyBhbmQgZ3JvdXBzLlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZSAqbmdJZj1cIm1vZGUgPT09ICdzZWxlY3QnXCI+VHJ5IHRvIHJlcGhyYXNlIHlvdXIgc2VhcmNoIHdvcmQuPC9zbWFsbD5cbiAgICAgICAgPC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIGxvYWRpbmcgYmFyIGZpcnN0IGVudHJpZXMgLS0+XG4gICAgICA8Yzh5LWxpICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gICAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgICAgPC9jOHktbGk+XG5cbiAgICAgIDwhLS0gbG9hZGluZyBiYXIgZm9yIGxvYWRpbmcgbW9yZSBlbnRyaWVzIChpbnZlbnRvcnkgcm9sZXMpIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgICAgICA8Yzh5LWxpPlxuICAgICAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgICAgICA8L2M4eS1saT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gbW9yZSBmaWx0ZXIgcG9zc2liaWxpdGllcyAtLT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgY2xhc3M9XCJtLXQtMjQgYmctbGV2ZWwtMiBwLXQtMTYgcC1iLTE2IHAtbC0yNCBwLXItMjQgc3RpY2t5LWJvdHRvbVwiXG4gICAgICAgIFtzZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgKm5nSWY9XCJtb2RlID09PSAnc2VhcmNoJ1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgICAgIDxpIGM4eUljb249XCJpbmZvLWNpcmNsZVwiIGNsYXNzPVwidGV4dC1pbmZvIG0tci00XCI+PC9pPlxuICAgICAgICAgIDxwIHRyYW5zbGF0ZSBjbGFzcz1cIm0tci04XCI+TmVlZCBtb3JlIGZpbHRlciBwb3NzaWJpbGl0aWVzPzwvcD5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cIm0tbC0xNiBidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0dvIHRvIHRoZSBhc3NldCBkYXRhIHRhYmxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uT3BlbkFzc2V0VGFibGUoKVwiXG4gICAgICAgICAgICBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1hc3NldC10YWJsZS1idG5cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uT3BlbkFzc2V0VGFibGUoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0dvIHRvIHRoZSBhc3NldCBkYXRhIHRhYmxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYzh5LWxpPlxuICAgIDwvYzh5LXR5cGVhaGVhZD5cbiAgPC9mb3JtPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -10,9 +10,9 @@ export class AssetTypeCellRendererComponent {
10
10
  this.context = context;
11
11
  this.assetNodeService = assetNodeService;
12
12
  }
13
- ngOnInit() {
13
+ async ngOnInit() {
14
14
  this.isAnyGroup = this.assetNodeService.isAnyGroup(this.context.item);
15
- this.groupIcon = this.assetNodeService.icon(this.context.item);
15
+ this.groupIcon = await this.assetNodeService.icon(this.context.item);
16
16
  this.isDevice = this.assetNodeService.isDevice(this.context.item);
17
17
  this.isAsset = this.assetNodeService.isAsset(this.context.item);
18
18
  this.iconTitle = this.getIconTitle(this.groupIcon);
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
43
43
  type: Component,
44
44
  args: [{ template: "<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n" }]
45
45
  }], ctorParameters: function () { return [{ type: i1.CellRendererContext }, { type: i2.AssetNodeService }]; } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtdHlwZS5jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NlYXJjaC9jb2x1bW5zL2Fzc2V0LXR5cGUuY2VsbC1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zZWFyY2gvY29sdW1ucy9hc3NldC10eXBlLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBS3hFLE1BQU0sT0FBTyw4QkFBOEI7SUFNekMsWUFBbUIsT0FBNEIsRUFBWSxnQkFBa0M7UUFBMUUsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFBWSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQztJQUVqRyxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVk7UUFDL0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQy9CO1FBRUQsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUIsS0FBSyxpQkFBaUI7Z0JBQ3BCLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2hDLEtBQUssMkJBQTJCO2dCQUM5QixPQUFPLHVCQUF1QixDQUFDO1lBQ2pDLEtBQUssa0JBQWtCO2dCQUNyQixPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqQyxLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0I7Z0JBQ0UsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDOzsySEFuQ1UsOEJBQThCOytHQUE5Qiw4QkFBOEIsb0RDUDNDLHFQQU9BOzJGREFhLDhCQUE4QjtrQkFIMUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXJDb250ZXh0LCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBc3NldE5vZGVTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hc3NldHMtbmF2aWdhdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NldC10eXBlLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0VHlwZUNlbGxSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGdyb3VwSWNvbjogc3RyaW5nO1xuICBpc0FueUdyb3VwOiBib29sZWFuO1xuICBpc0RldmljZTogYm9vbGVhbjtcbiAgaXNBc3NldDogYm9vbGVhbjtcbiAgaWNvblRpdGxlOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250ZXh0OiBDZWxsUmVuZGVyZXJDb250ZXh0LCBwcm90ZWN0ZWQgYXNzZXROb2RlU2VydmljZTogQXNzZXROb2RlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzQW55R3JvdXAgPSB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNBbnlHcm91cCh0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5ncm91cEljb24gPSB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaWNvbih0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5pc0RldmljZSA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pc0RldmljZSh0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5pc0Fzc2V0ID0gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzQXNzZXQodGhpcy5jb250ZXh0Lml0ZW0pO1xuICAgIHRoaXMuaWNvblRpdGxlID0gdGhpcy5nZXRJY29uVGl0bGUodGhpcy5ncm91cEljb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJY29uVGl0bGUoaWNvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0Fzc2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250ZXh0Lml0ZW0udHlwZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGljb24pIHtcbiAgICAgIGNhc2UgJ2M4eS1ncm91cCc6XG4gICAgICAgIHJldHVybiBnZXR0ZXh0KCdHcm91cCcpO1xuICAgICAgY2FzZSAnYzh5LWdyb3VwLXNtYXJ0JzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ1NtYXJ0IGdyb3VwJyk7XG4gICAgICBjYXNlICdjOHktZ3JvdXAtcmVtb3RlLWluYWN0aXZlJzpcbiAgICAgICAgcmV0dXJuICdJbmFjdGl2ZSByZW1vdGUgZ3JvdXAnO1xuICAgICAgY2FzZSAnYzh5LWdyb3VwLXJlbW90ZSc6XG4gICAgICAgIHJldHVybiBnZXR0ZXh0KCdSZW1vdGUgZ3JvdXAnKTtcbiAgICAgIGNhc2UgJ2V4Y2hhbmdlJzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ0RldmljZScpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ0Fzc2V0Jyk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGV2aWNlLXN0YXR1cyBjbGFzcz1cIm0tbC04XCIgW21vXT1cImNvbnRleHQuaXRlbVwiICpuZ0lmPVwiaXNEZXZpY2VcIj48L2RldmljZS1zdGF0dXM+XG48aVxuICBbYzh5SWNvbl09XCJncm91cEljb25cIlxuICB0aXRsZT1cInt7IGljb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVwiXG4gIGNsYXNzPVwibS1sLTggYzh5LWljb24tZHVvY29sb3JcIlxuICAqbmdJZj1cImlzQW55R3JvdXAgfHwgIWlzRGV2aWNlXCJcbj48L2k+XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtdHlwZS5jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NlYXJjaC9jb2x1bW5zL2Fzc2V0LXR5cGUuY2VsbC1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zZWFyY2gvY29sdW1ucy9hc3NldC10eXBlLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBS3hFLE1BQU0sT0FBTyw4QkFBOEI7SUFNekMsWUFBbUIsT0FBNEIsRUFBWSxnQkFBa0M7UUFBMUUsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFBWSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQztJQUVqRyxLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVk7UUFDL0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQy9CO1FBRUQsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUIsS0FBSyxpQkFBaUI7Z0JBQ3BCLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2hDLEtBQUssMkJBQTJCO2dCQUM5QixPQUFPLHVCQUF1QixDQUFDO1lBQ2pDLEtBQUssa0JBQWtCO2dCQUNyQixPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqQyxLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0I7Z0JBQ0UsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDOzsySEFuQ1UsOEJBQThCOytHQUE5Qiw4QkFBOEIsb0RDUDNDLHFQQU9BOzJGREFhLDhCQUE4QjtrQkFIMUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXJDb250ZXh0LCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBc3NldE5vZGVTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hc3NldHMtbmF2aWdhdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NldC10eXBlLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0VHlwZUNlbGxSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGdyb3VwSWNvbjogc3RyaW5nO1xuICBpc0FueUdyb3VwOiBib29sZWFuO1xuICBpc0RldmljZTogYm9vbGVhbjtcbiAgaXNBc3NldDogYm9vbGVhbjtcbiAgaWNvblRpdGxlOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250ZXh0OiBDZWxsUmVuZGVyZXJDb250ZXh0LCBwcm90ZWN0ZWQgYXNzZXROb2RlU2VydmljZTogQXNzZXROb2RlU2VydmljZSkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzQW55R3JvdXAgPSB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNBbnlHcm91cCh0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5ncm91cEljb24gPSBhd2FpdCB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaWNvbih0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5pc0RldmljZSA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pc0RldmljZSh0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5pc0Fzc2V0ID0gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzQXNzZXQodGhpcy5jb250ZXh0Lml0ZW0pO1xuICAgIHRoaXMuaWNvblRpdGxlID0gdGhpcy5nZXRJY29uVGl0bGUodGhpcy5ncm91cEljb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJY29uVGl0bGUoaWNvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0Fzc2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250ZXh0Lml0ZW0udHlwZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGljb24pIHtcbiAgICAgIGNhc2UgJ2M4eS1ncm91cCc6XG4gICAgICAgIHJldHVybiBnZXR0ZXh0KCdHcm91cCcpO1xuICAgICAgY2FzZSAnYzh5LWdyb3VwLXNtYXJ0JzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ1NtYXJ0IGdyb3VwJyk7XG4gICAgICBjYXNlICdjOHktZ3JvdXAtcmVtb3RlLWluYWN0aXZlJzpcbiAgICAgICAgcmV0dXJuICdJbmFjdGl2ZSByZW1vdGUgZ3JvdXAnO1xuICAgICAgY2FzZSAnYzh5LWdyb3VwLXJlbW90ZSc6XG4gICAgICAgIHJldHVybiBnZXR0ZXh0KCdSZW1vdGUgZ3JvdXAnKTtcbiAgICAgIGNhc2UgJ2V4Y2hhbmdlJzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ0RldmljZScpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ0Fzc2V0Jyk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGV2aWNlLXN0YXR1cyBjbGFzcz1cIm0tbC04XCIgW21vXT1cImNvbnRleHQuaXRlbVwiICpuZ0lmPVwiaXNEZXZpY2VcIj48L2RldmljZS1zdGF0dXM+XG48aVxuICBbYzh5SWNvbl09XCJncm91cEljb25cIlxuICB0aXRsZT1cInt7IGljb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVwiXG4gIGNsYXNzPVwibS1sLTggYzh5LWljb24tZHVvY29sb3JcIlxuICAqbmdJZj1cImlzQW55R3JvdXAgfHwgIWlzRGV2aWNlXCJcbj48L2k+XG4iXX0=
@@ -10,12 +10,12 @@ export class AssetTypeCellRendererComponent {
10
10
  this.context = context;
11
11
  this.assetNodeService = assetNodeService;
12
12
  }
13
- ngOnInit() {
13
+ async ngOnInit() {
14
14
  this.isAnyGroup = this.assetNodeService.isAnyGroup(this.context.item);
15
15
  this.groupIcon = this.assetNodeService.icon(this.context.item);
16
16
  this.isDevice = this.assetNodeService.isDevice(this.context.item);
17
17
  this.isAsset = this.assetNodeService.isAsset(this.context.item);
18
- this.iconTitle = this.getIconTitle(this.groupIcon);
18
+ this.iconTitle = this.getIconTitle(await this.groupIcon);
19
19
  }
20
20
  getIconTitle(icon) {
21
21
  if (this.isAsset) {
@@ -38,9 +38,9 @@ export class AssetTypeCellRendererComponent {
38
38
  }
39
39
  }
40
40
  AssetTypeCellRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AssetTypeCellRendererComponent, deps: [{ token: i1.CellRendererContext }, { token: i2.AssetNodeService }], target: i0.ɵɵFactoryTarget.Component });
41
- AssetTypeCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AssetTypeCellRendererComponent, selector: "ng-component", ngImport: i0, template: "<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
41
+ AssetTypeCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AssetTypeCellRendererComponent, selector: "ng-component", ngImport: i0, template: "<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon | async\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
42
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AssetTypeCellRendererComponent, decorators: [{
43
43
  type: Component,
44
- args: [{ template: "<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n" }]
44
+ args: [{ template: "<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon | async\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n" }]
45
45
  }], ctorParameters: function () { return [{ type: i1.CellRendererContext }, { type: i2.AssetNodeService }]; } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtdHlwZS5jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3N1Yi1hc3NldHMvY29sdW1ucy9hc3NldC10eXBlLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3ViLWFzc2V0cy9jb2x1bW5zL2Fzc2V0LXR5cGUuY2VsbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7QUFLeEUsTUFBTSxPQUFPLDhCQUE4QjtJQU16QyxZQUFtQixPQUE0QixFQUFZLGdCQUFrQztRQUExRSxZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUFZLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRWpHLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxZQUFZLENBQUMsSUFBWTtRQUMvQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDL0I7UUFFRCxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssV0FBVztnQkFDZCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQixLQUFLLGlCQUFpQjtnQkFDcEIsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEMsS0FBSywyQkFBMkI7Z0JBQzlCLE9BQU8sdUJBQXVCLENBQUM7WUFDakMsS0FBSyxrQkFBa0I7Z0JBQ3JCLE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2pDLEtBQUssVUFBVTtnQkFDYixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQjtnQkFDRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7OzJIQW5DVSw4QkFBOEI7K0dBQTlCLDhCQUE4QixvRENQM0MscVBBT0E7MkZEQWEsOEJBQThCO2tCQUgxQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENlbGxSZW5kZXJlckNvbnRleHQsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFzc2V0Tm9kZVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LXR5cGUuY2VsbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRUeXBlQ2VsbFJlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZ3JvdXBJY29uOiBzdHJpbmc7XG4gIGlzQW55R3JvdXA6IGJvb2xlYW47XG4gIGlzRGV2aWNlOiBib29sZWFuO1xuICBpc0Fzc2V0OiBib29sZWFuO1xuICBpY29uVGl0bGU6IHN0cmluZztcbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRleHQ6IENlbGxSZW5kZXJlckNvbnRleHQsIHByb3RlY3RlZCBhc3NldE5vZGVTZXJ2aWNlOiBBc3NldE5vZGVTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNBbnlHcm91cCA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pc0FueUdyb3VwKHRoaXMuY29udGV4dC5pdGVtKTtcbiAgICB0aGlzLmdyb3VwSWNvbiA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pY29uKHRoaXMuY29udGV4dC5pdGVtKTtcbiAgICB0aGlzLmlzRGV2aWNlID0gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzRGV2aWNlKHRoaXMuY29udGV4dC5pdGVtKTtcbiAgICB0aGlzLmlzQXNzZXQgPSB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNBc3NldCh0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5pY29uVGl0bGUgPSB0aGlzLmdldEljb25UaXRsZSh0aGlzLmdyb3VwSWNvbik7XG4gIH1cblxuICBwcml2YXRlIGdldEljb25UaXRsZShpY29uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzQXNzZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRleHQuaXRlbS50eXBlO1xuICAgIH1cblxuICAgIHN3aXRjaCAoaWNvbikge1xuICAgICAgY2FzZSAnYzh5LWdyb3VwJzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ0dyb3VwJyk7XG4gICAgICBjYXNlICdjOHktZ3JvdXAtc21hcnQnOlxuICAgICAgICByZXR1cm4gZ2V0dGV4dCgnU21hcnQgZ3JvdXAnKTtcbiAgICAgIGNhc2UgJ2M4eS1ncm91cC1yZW1vdGUtaW5hY3RpdmUnOlxuICAgICAgICByZXR1cm4gJ0luYWN0aXZlIHJlbW90ZSBncm91cCc7XG4gICAgICBjYXNlICdjOHktZ3JvdXAtcmVtb3RlJzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ1JlbW90ZSBncm91cCcpO1xuICAgICAgY2FzZSAnZXhjaGFuZ2UnOlxuICAgICAgICByZXR1cm4gZ2V0dGV4dCgnRGV2aWNlJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZ2V0dGV4dCgnQXNzZXQnKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkZXZpY2Utc3RhdHVzIGNsYXNzPVwibS1sLThcIiBbbW9dPVwiY29udGV4dC5pdGVtXCIgKm5nSWY9XCJpc0RldmljZVwiPjwvZGV2aWNlLXN0YXR1cz5cbjxpXG4gIFtjOHlJY29uXT1cImdyb3VwSWNvblwiXG4gIHRpdGxlPVwie3sgaWNvblRpdGxlIHwgdHJhbnNsYXRlIH19XCJcbiAgY2xhc3M9XCJtLWwtOCBjOHktaWNvbi1kdW9jb2xvclwiXG4gICpuZ0lmPVwiaXNBbnlHcm91cCB8fCAhaXNEZXZpY2VcIlxuPjwvaT5cbiJdfQ==
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtdHlwZS5jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3N1Yi1hc3NldHMvY29sdW1ucy9hc3NldC10eXBlLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3ViLWFzc2V0cy9jb2x1bW5zL2Fzc2V0LXR5cGUuY2VsbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7QUFLeEUsTUFBTSxPQUFPLDhCQUE4QjtJQU16QyxZQUFtQixPQUE0QixFQUFZLGdCQUFrQztRQUExRSxZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUFZLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRWpHLEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxZQUFZLENBQUMsSUFBWTtRQUMvQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDL0I7UUFFRCxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssV0FBVztnQkFDZCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQixLQUFLLGlCQUFpQjtnQkFDcEIsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEMsS0FBSywyQkFBMkI7Z0JBQzlCLE9BQU8sdUJBQXVCLENBQUM7WUFDakMsS0FBSyxrQkFBa0I7Z0JBQ3JCLE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2pDLEtBQUssVUFBVTtnQkFDYixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQjtnQkFDRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7OzJIQW5DVSw4QkFBOEI7K0dBQTlCLDhCQUE4QixvRENQM0MsNlBBT0E7MkZEQWEsOEJBQThCO2tCQUgxQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENlbGxSZW5kZXJlckNvbnRleHQsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFzc2V0Tm9kZVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LXR5cGUuY2VsbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRUeXBlQ2VsbFJlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZ3JvdXBJY29uOiBQcm9taXNlPHN0cmluZz47XG4gIGlzQW55R3JvdXA6IGJvb2xlYW47XG4gIGlzRGV2aWNlOiBib29sZWFuO1xuICBpc0Fzc2V0OiBib29sZWFuO1xuICBpY29uVGl0bGU6IHN0cmluZztcbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRleHQ6IENlbGxSZW5kZXJlckNvbnRleHQsIHByb3RlY3RlZCBhc3NldE5vZGVTZXJ2aWNlOiBBc3NldE5vZGVTZXJ2aWNlKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNBbnlHcm91cCA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pc0FueUdyb3VwKHRoaXMuY29udGV4dC5pdGVtKTtcbiAgICB0aGlzLmdyb3VwSWNvbiA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pY29uKHRoaXMuY29udGV4dC5pdGVtKTtcbiAgICB0aGlzLmlzRGV2aWNlID0gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzRGV2aWNlKHRoaXMuY29udGV4dC5pdGVtKTtcbiAgICB0aGlzLmlzQXNzZXQgPSB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNBc3NldCh0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5pY29uVGl0bGUgPSB0aGlzLmdldEljb25UaXRsZShhd2FpdCB0aGlzLmdyb3VwSWNvbik7XG4gIH1cblxuICBwcml2YXRlIGdldEljb25UaXRsZShpY29uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzQXNzZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRleHQuaXRlbS50eXBlO1xuICAgIH1cblxuICAgIHN3aXRjaCAoaWNvbikge1xuICAgICAgY2FzZSAnYzh5LWdyb3VwJzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ0dyb3VwJyk7XG4gICAgICBjYXNlICdjOHktZ3JvdXAtc21hcnQnOlxuICAgICAgICByZXR1cm4gZ2V0dGV4dCgnU21hcnQgZ3JvdXAnKTtcbiAgICAgIGNhc2UgJ2M4eS1ncm91cC1yZW1vdGUtaW5hY3RpdmUnOlxuICAgICAgICByZXR1cm4gJ0luYWN0aXZlIHJlbW90ZSBncm91cCc7XG4gICAgICBjYXNlICdjOHktZ3JvdXAtcmVtb3RlJzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ1JlbW90ZSBncm91cCcpO1xuICAgICAgY2FzZSAnZXhjaGFuZ2UnOlxuICAgICAgICByZXR1cm4gZ2V0dGV4dCgnRGV2aWNlJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZ2V0dGV4dCgnQXNzZXQnKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkZXZpY2Utc3RhdHVzIGNsYXNzPVwibS1sLThcIiBbbW9dPVwiY29udGV4dC5pdGVtXCIgKm5nSWY9XCJpc0RldmljZVwiPjwvZGV2aWNlLXN0YXR1cz5cbjxpXG4gIFtjOHlJY29uXT1cImdyb3VwSWNvbiB8IGFzeW5jXCJcbiAgdGl0bGU9XCJ7eyBpY29uVGl0bGUgfCB0cmFuc2xhdGUgfX1cIlxuICBjbGFzcz1cIm0tbC04IGM4eS1pY29uLWR1b2NvbG9yXCJcbiAgKm5nSWY9XCJpc0FueUdyb3VwIHx8ICFpc0RldmljZVwiXG4+PC9pPlxuIl19
@@ -43,7 +43,7 @@ export class GroupInfoComponent {
43
43
  this.canEdit = this.smartGroupsService.isSmartGroupV2(this.group)
44
44
  ? this.subAssetsService.canEditSmartGroup()
45
45
  : await this.subAssetsService.canEditGroup(this.group);
46
- this.groupIcon = this.assetNodeService.icon(this.group);
46
+ this.groupIcon = await this.assetNodeService.icon(this.group);
47
47
  this.smartGroupFilter = this.group.c8y_DeviceQueryString;
48
48
  this.label = this.assetNodeService.isAsset(this.group)
49
49
  ? this.assetType.getAssetTypeByName(this.group.type).label
@@ -124,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
124
124
  }], groupChange: [{
125
125
  type: Output
126
126
  }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdWItYXNzZXRzL2dyb3VwLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3ViLWFzc2V0cy9ncm91cC1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkYsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsT0FBTyxFQUNQLFlBQVksRUFDWixNQUFNLEVBQ1AsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQW1CLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7QUFNeEUsTUFBTSxPQUFPLGtCQUFrQjtJQXdCN0IsWUFDVSxTQUEyQixFQUMzQixnQkFBa0MsRUFDbEMsa0JBQXNDLEVBQ3RDLFlBQTBCLEVBQzFCLFNBQTJCLEVBQzNCLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxTQUE0QixFQUNGLFlBQTZCO1FBUnZELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVks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RixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUM1QyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDaEUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO2FBQzFCLENBQUMsQ0FBQztZQUVILE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDckQ7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1RCxDQUFDO0lBRU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQWE7UUFDM0MsSUFBSTtZQUNGLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkM7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQzs7K0dBdkhVLGtCQUFrQiw2UUFpQ25CLGlCQUFpQjttR0FqQ2hCLGtCQUFrQixnSkMzQi9CLDB3U0F5TUE7MkZEOUthLGtCQUFrQjtrQkFKOUIsU0FBUzsrQkFDRSxnQkFBZ0I7OzBCQW9DdkIsTUFBTTsyQkFBQyxpQkFBaUI7NENBL0JsQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlLCBTbWFydEdyb3Vwc1NlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEFzc2V0VHlwZXNTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBNb2RhbFNlcnZpY2UsXG4gIFN0YXR1c1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFzc2V0Tm9kZVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgUFJPRFVDVF9FWFBFUklFTkNFIH0gZnJvbSAnLi9zaGFyZWQvc3ViLWFzc2V0cy5tb2RlbCc7XG5pbXBvcnQgeyBTdWJBc3NldHNTZXJ2aWNlIH0gZnJvbSAnLi9zdWItYXNzZXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU1VCX0FTU0VUU19DT05GSUcsIFN1YkFzc2V0c0NvbmZpZyB9IGZyb20gJy4vc3ViLWFzc2V0cy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1ncm91cC1pbmZvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyb3VwLWluZm8uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEdyb3VwSW5mb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIFBST0RVQ1RfRVhQRVJJRU5DRSA9IFBST0RVQ1RfRVhQRVJJRU5DRTtcbiAgQElucHV0KCkgZ3JvdXA6IElNYW5hZ2VkT2JqZWN0O1xuICBAT3V0cHV0KCkgZ3JvdXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElNYW5hZ2VkT2JqZWN0PigpO1xuICBjYW5FZGl0OiBib29sZWFuO1xuICBncm91cEljb246IHN0cmluZztcbiAgc21hcnRHcm91cEZpbHRlcjogc3RyaW5nO1xuICBmaWx0ZXJIaW50TXNnOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG5cbiAgZ3JvdXBJbmZvTW9kZWw6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYzh5X05vdGVzOiBzdHJpbmc7XG4gIH0gPSB7XG4gICAgbmFtZTogJycsXG4gICAgYzh5X05vdGVzOiAnJ1xuICB9O1xuXG4gIHByaXZhdGUgZmlsdGVyTXNnID0gZ2V0dGV4dChcbiAgICAnU21hcnQgZ3JvdXBzIGFyZSBncm91cHMgZHluYW1pY2FsbHkgY29uc3RydWN0ZWQgYmFzZWQgb24gZmlsdGVyaW5nIGNyaXRlcmlhLidcbiAgKTtcbiAgcHJpdmF0ZSBjYW5FZGl0TXNnID0gZ2V0dGV4dCgnWW91IGNhbiBlZGl0IHRoZSBmaWx0ZXIgaGVyZS4nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBHUk9VUF9VUERBVEVEX01TRyA9IGdldHRleHQoJ0dyb3VwIHVwZGF0ZWQuJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdWJBc3NldHNTZXJ2aWNlOiBTdWJBc3NldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc21hcnRHcm91cHNTZXJ2aWNlOiBTbWFydEdyb3Vwc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXNzZXROb2RlU2VydmljZTogQXNzZXROb2RlU2VydmljZSxcbiAgICBwcml2YXRlIGFzc2V0VHlwZTogQXNzZXRUeXBlc1NlcnZpY2UsXG4gICAgQEluamVjdChTVUJfQVNTRVRTX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogU3ViQXNzZXRzQ29uZmlnXG4gICkge31cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuZ3JvdXApIHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgYzh5X05vdGVzIH0gPSB0aGlzLmdyb3VwO1xuICAgICAgdGhpcy5ncm91cEluZm9Nb2RlbCA9IHsgbmFtZSwgYzh5X05vdGVzIH07XG4gICAgICB0aGlzLmNhbkVkaXQgPSB0aGlzLnNtYXJ0R3JvdXBzU2VydmljZS5pc1NtYXJ0R3JvdXBWMih0aGlzLmdyb3VwKVxuICAgICAgICA/IHRoaXMuc3ViQXNzZXRzU2VydmljZS5jYW5FZGl0U21hcnRHcm91cCgpXG4gICAgICAgIDogYXdhaXQgdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmNhbkVkaXRHcm91cCh0aGlzLmdyb3VwKTtcbiAgICAgIHRoaXMuZ3JvdXBJY29uID0gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmljb24odGhpcy5ncm91cCk7XG4gICAgICB0aGlzLnNtYXJ0R3JvdXBGaWx0ZXIgPSB0aGlzLmdyb3VwLmM4eV9EZXZpY2VRdWVyeVN0cmluZztcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNBc3NldCh0aGlzLmdyb3VwKVxuICAgICAgICA/IHRoaXMuYXNzZXRUeXBlLmdldEFzc2V0VHlwZUJ5TmFtZSh0aGlzLmdyb3VwLnR5cGUpLmxhYmVsXG4gICAgICAgIDogZ2V0dGV4dCgnR3JvdXAnKTtcbiAgICAgIHRoaXMuc2V0SGludE1zZygpO1xuICAgIH1cbiAgfVxuXG4gIGlzU21hcnRHcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmlzU21hcnRHcm91cCh0aGlzLmdyb3VwKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShwYXJ0aWFsR3JvdXA6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGlzU21hcnRHcm91cDogYm9vbGVhbiA9IHRoaXMuc3ViQXNzZXRzU2VydmljZS5pc1NtYXJ0R3JvdXAodGhpcy5ncm91cCk7XG4gICAgICBjb25zdCB1cGRhdGVkR3JvdXAgPSBpc1NtYXJ0R3JvdXBcbiAgICAgICAgPyBhd2FpdCB0aGlzLnVwZGF0ZVNtYXJ0R3JvdXAocGFydGlhbEdyb3VwKVxuICAgICAgICA6IGF3YWl0IHRoaXMudXBkYXRlR3JvdXAocGFydGlhbEdyb3VwKTtcblxuICAgICAgdGhpcy5ncm91cCA9IHVwZGF0ZWRHcm91cDtcbiAgICAgIHRoaXMuZ3JvdXBDaGFuZ2UuZW1pdCh0aGlzLmdyb3VwKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3ModGhpcy5HUk9VUF9VUERBVEVEX01TRyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0SGludE1zZygpIHtcbiAgICBjb25zdCBmaWx0ZXJNc2dUcmFuc2xhdGVkID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmZpbHRlck1zZyk7XG4gICAgY29uc3QgY2FuRWRpdE1zZ1RyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuY2FuRWRpdE1zZyk7XG4gICAgdGhpcy5maWx0ZXJIaW50TXNnID0gdGhpcy5jYW5FZGl0XG4gICAgICA/IGAke2ZpbHRlck1zZ1RyYW5zbGF0ZWR9ICR7Y2FuRWRpdE1zZ1RyYW5zbGF0ZWR9YFxuICAgICAgOiB0aGlzLmZpbHRlck1zZztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlR3JvdXAocGFydGlhbEdyb3VwOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0Pikge1xuICAgIGNvbnN0IHsgaWQgfSA9IHRoaXMuZ3JvdXA7XG4gICAgY29uc3QgZ3JvdXA6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0geyBpZCwgLi4ucGFydGlhbEdyb3VwIH07XG5cbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaW52ZW50b3J5LnVwZGF0ZShncm91cCkpLmRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVNtYXJ0R3JvdXAocGFydGlhbEdyb3VwOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0Pikge1xuICAgIGNvbnN0IHsgaWQgfSA9IHRoaXMuZ3JvdXA7XG4gICAgY29uc3QgeyBjOHlfRGV2aWNlUXVlcnlTdHJpbmcgfSA9IHBhcnRpYWxHcm91cDtcbiAgICBjb25zdCBncm91cDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSB7IGlkLCAuLi5wYXJ0aWFsR3JvdXAgfTtcblxuICAgIGlmICghYzh5X0RldmljZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICByZXR1cm4gKGF3YWl0IHRoaXMuc21hcnRHcm91cHNTZXJ2aWNlLnVwZGF0ZShncm91cCkpLmRhdGE7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1vZGFsQm9keSA9IGdldHRleHQoXG4gICAgICAgICdZb3UgYXJlIGFib3V0IHRvIGNoYW5nZSB0aGUgc21hcnQgZ3JvdXAgZmlsdGVyLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPydcbiAgICAgICk7XG4gICAgICBjb25zdCB0aXRsZSA9IGdldHRleHQoJ1NtYXJ0IGdyb3VwIGZpbHRlcicpO1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2UuY29uZmlybSh0aXRsZSwgbW9kYWxCb2R5LCBTdGF0dXMuV0FSTklORywge1xuICAgICAgICBvazogZ2V0dGV4dCgnU2F2ZScpLFxuICAgICAgICBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgdGhpcy5pc1F1ZXJ5RXhlY3V0YWJsZShjOHlfRGV2aWNlUXVlcnlTdHJpbmcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBFcnJvcihlcnJvcik7XG4gICAgfVxuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zbWFydEdyb3Vwc1NlcnZpY2UudXBkYXRlKGdyb3VwKSkuZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaXNRdWVyeUV4ZWN1dGFibGUocXVlcnk6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWx0ZXIgPSB7IHE6IHF1ZXJ5IH07XG4gICAgICBhd2FpdCB0aGlzLmludmVudG9yeS5saXN0KGZpbHRlcik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IEVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJiZy1sZXZlbC0xIHNlcGFyYXRvci1ib3R0b21cIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTI0IHAtYi0yNCBsYXJnZS1wYWRkaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZmxleC03MFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGNvbC0xXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3IgaWNvbi00OFwiIFtjOHlJY29uXT1cImdyb3VwSWNvblwiPjwvaT5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mb1wiICpuZ0lmPVwiZ3JvdXAuYzh5X0lzRHluYW1pY0dyb3VwXCI+XG4gICAgICAgICAgICB7eyAnU21hcnQgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mbyB0ZXh0LXRydW5jYXRlIGQtaW5saW5lLWJsb2NrXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgbGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgKm5nSWY9XCIhZ3JvdXAuYzh5X0lzRHluYW1pY0dyb3VwICYmICFncm91cC5jb21fY3VtdWxvY2l0eV9tb2RlbF9BZ2VudFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgbGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImxhYmVsIGxhYmVsLWluZm9cIiAqbmdJZj1cImdyb3VwLmNvbV9jdW11bG9jaXR5X21vZGVsX0FnZW50XCI+XG4gICAgICAgICAgICB7eyAnUmVtb3RlIGdyb3VwJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93IGNvbC0xMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTgwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XG4gICAgICAgICAgICA8Zm9ybSAjZ3JvdXBOYW1lRm9ybT1cIm5nRm9ybVwiPlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJmb3JtLWdyb3VwLWxnIG0tYi0wXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImdyb3VwTmFtZVwiIGNsYXNzPVwic3Itb25seVwiIHRyYW5zbGF0ZT5OYW1lPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIiFjYW5FZGl0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wtc3RhdGljXCI+e3sgZ3JvdXBJbmZvTW9kZWwubmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FuRWRpdFwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtbGcgaW5wdXQtZ3JvdXAtZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJncm91cEluZm9Nb2RlbC5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGdyb3VwSW5mb01vZGVsLm5hbWUgfX1cIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImdyb3VwTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJ7eyBncm91cEluZm9Nb2RlbC5uYW1lLmxlbmd0aCArIDIgfX1cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIE15IGdyb3VwJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NFwiXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVFwiXG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5HUk9VUF9JTkZPLkNPTVBPTkVOVFMuR1JPVVBfSU5GTyxcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5HUk9VUF9JTkZPLkFDVElPTlMuRURJVCxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogUFJPRFVDVF9FWFBFUklFTkNFLkdST1VQX0lORk8uUFJPUEVSVElFUy5OQU1FXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwTmFtZUZvcm0uZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUoeyBuYW1lOiBncm91cEluZm9Nb2RlbC5uYW1lIH0pOyBncm91cE5hbWVGb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FjdGlvbk5hbWVdPVwiJ2dyb3VwSW5mbzpFZGl0ZWROYW1lU2F2ZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuR1JPVVBfSU5GTy5DT01QT05FTlRTLkdST1VQX0lORk8sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5HUk9VUF9JTkZPLlJFU1VMVFMuRURJVF9TQVZFRCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBQUk9EVUNUX0VYUEVSSUVOQ0UuR1JPVVBfSU5GTy5QUk9QRVJUSUVTLk5BTUVcbiAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPGZvcm0gI2dyb3VwRGVzY3JpcHRpb25Gb3JtPVwibmdGb3JtXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZXNjcmlwdGlvblwiIGNsYXNzPVwic3Itb25seVwiIHRyYW5zbGF0ZT5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxwICpuZ0lmPVwiIWNhbkVkaXRcIiBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIj57eyBncm91cEluZm9Nb2RlbC5jOHlfTm90ZXMgfX08L3A+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5FZGl0XCIgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm8tcmVzaXplXCJcbiAgICAgICAgICAgICAgICAgIGM4eS10ZXh0YXJlYS1hdXRvcmVzaXplXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdyb3VwSW5mb01vZGVsLmM4eV9Ob3Rlc1wiXG4gICAgICAgICAgICAgICAgICBpZD1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cInt7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwSW5mb01vZGVsLmM4eV9Ob3Rlc1xuICAgICAgICAgICAgICAgICAgICAgID8gZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzXG4gICAgICAgICAgICAgICAgICAgICAgOiAoJ2UuZy4gTXkgZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgY29scz1cInt7IGdyb3VwSW5mb01vZGVsLmM4eV9Ob3RlcyA/IGdyb3VwSW5mb01vZGVsLmM4eV9Ob3Rlcy5sZW5ndGggOiAyNSB9fVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIE15IGRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UXCJcbiAgICAgICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuR1JPVVBfSU5GTy5DT01QT05FTlRTLkdST1VQX0lORk8sXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkdST1VQX0lORk8uQUNUSU9OUy5FRElULFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogUFJPRFVDVF9FWFBFUklFTkNFLkdST1VQX0lORk8uUFJPUEVSVElFUy5ERVNDUklQVElPTlxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDcwcHggIWltcG9ydGFudFwiXG4gICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ3JvdXBEZXNjcmlwdGlvbkZvcm0uZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSh7IGM4eV9Ob3RlczogZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIGdyb3VwRGVzY3JpcHRpb25Gb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICBbYWN0aW9uTmFtZV09XCJQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlRcIlxuICAgICAgICAgICAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuR1JPVVBfSU5GTy5DT01QT05FTlRTLkdST1VQX0lORk8sXG4gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuR1JPVVBfSU5GTy5SRVNVTFRTLkVESVRfU0FWRUQsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFBST0RVQ1RfRVhQRVJJRU5DRS5HUk9VUF9JTkZPLlBST1BFUlRJRVMuREVTQ1JJUFRJT05cbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuXG4gICAgICAgICAgICA8Zm9ybSAjc21hcnRHcm91cEZpbHRlckZvcm09XCJuZ0Zvcm1cIiAqbmdJZj1cImlzU21hcnRHcm91cCgpXCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cIm0tYi0wIG0tdC04XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS1iLTAgdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdTbWFydCBncm91cCBmaWx0ZXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtIG0tci00XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7IGZpbHRlckhpbnRNc2cgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIiFjYW5FZGl0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wtc3RhdGljXCI+XG4gICAgICAgICAgICAgICAgICB7eyBzbWFydEdyb3VwRmlsdGVyIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5FZGl0XCIgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNtYXJ0R3JvdXBGaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInt7IChzbWFydEdyb3VwRmlsdGVyIHx8ICcnKS5sZW5ndGggKyAyIH19XCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gJGZpbHRlcj0oaWQgZXEgJzEyKicpXCJcbiAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU0XCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU21hcnQgZ3JvdXAgZmlsdGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUoeyBjOHlfRGV2aWNlUXVlcnlTdHJpbmc6IHNtYXJ0R3JvdXBGaWx0ZXIgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzbWFydEdyb3VwRmlsdGVyRm9ybS5mb3JtLm1hcmtBc1ByaXN0aW5lKClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzbWFydEdyb3VwRmlsdGVyRm9ybS5mb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBzbWFsbFwiPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLXRvcC1ib3R0b20gdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOFwiPnt7ICdDcmVhdGVkJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0b1wiPnt7IGdyb3VwLmNyZWF0aW9uVGltZSB8IGM4eURhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleCBzZXBhcmF0b3ItYm90dG9tIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic21hbGwgbS1iLTAgbS1yLThcIj57eyAnTGFzdCB1cGRhdGVkJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0b1wiPnt7IGdyb3VwLmxhc3RVcGRhdGVkIHwgYzh5RGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cC5jb21fY3VtdWxvY2l0eV9tb2RlbF9BZ2VudFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLWJvdHRvbSB0ZXh0LW5vd3JhcFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOFwiPnt7ICdTdGF0dXMnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tbC1hdXRvXCIgKm5nSWY9XCJncm91cC5jOHlfQnJva2VyU291cmNlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cC5jOHlfQnJva2VyU291cmNlLnN0YXR1cyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tbC1hdXRvXCIgKm5nSWY9XCIhZ3JvdXAuYzh5X0Jyb2tlclNvdXJjZVwiPlxuICAgICAgICAgICAgICAgICAge3sgJ09mZmxpbmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdWItYXNzZXRzL2dyb3VwLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3ViLWFzc2V0cy9ncm91cC1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkYsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsT0FBTyxFQUNQLFlBQVksRUFDWixNQUFNLEVBQ1AsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQW1CLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7QUFNeEUsTUFBTSxPQUFPLGtCQUFrQjtJQXdCN0IsWUFDVSxTQUEyQixFQUMzQixnQkFBa0MsRUFDbEMsa0JBQXNDLEVBQ3RDLFlBQTBCLEVBQzFCLFNBQTJCLEVBQzNCLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxTQUE0QixFQUNGLFlBQTZCO1FBUnZELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVks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biAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIFNtYXJ0R3JvdXBzU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQXNzZXRUeXBlc1NlcnZpY2UsXG4gIGdldHRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgU3RhdHVzXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQXNzZXROb2RlU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXNzZXRzLW5hdmlnYXRvcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBQUk9EVUNUX0VYUEVSSUVOQ0UgfSBmcm9tICcuL3NoYXJlZC9zdWItYXNzZXRzLm1vZGVsJztcbmltcG9ydCB7IFN1YkFzc2V0c1NlcnZpY2UgfSBmcm9tICcuL3N1Yi1hc3NldHMuc2VydmljZSc7XG5pbXBvcnQgeyBTVUJfQVNTRVRTX0NPTkZJRywgU3ViQXNzZXRzQ29uZmlnIH0gZnJvbSAnLi9zdWItYXNzZXRzLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWdyb3VwLWluZm8nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXAtaW5mby5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR3JvdXBJbmZvQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgUFJPRFVDVF9FWFBFUklFTkNFID0gUFJPRFVDVF9FWFBFUklFTkNFO1xuICBASW5wdXQoKSBncm91cDogSU1hbmFnZWRPYmplY3Q7XG4gIEBPdXRwdXQoKSBncm91cENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hbmFnZWRPYmplY3Q+KCk7XG4gIGNhbkVkaXQ6IGJvb2xlYW47XG4gIGdyb3VwSWNvbjogc3RyaW5nO1xuICBzbWFydEdyb3VwRmlsdGVyOiBzdHJpbmc7XG4gIGZpbHRlckhpbnRNc2c6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcblxuICBncm91cEluZm9Nb2RlbDoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjOHlfTm90ZXM6IHN0cmluZztcbiAgfSA9IHtcbiAgICBuYW1lOiAnJyxcbiAgICBjOHlfTm90ZXM6ICcnXG4gIH07XG5cbiAgcHJpdmF0ZSBmaWx0ZXJNc2cgPSBnZXR0ZXh0KFxuICAgICdTbWFydCBncm91cHMgYXJlIGdyb3VwcyBkeW5hbWljYWxseSBjb25zdHJ1Y3RlZCBiYXNlZCBvbiBmaWx0ZXJpbmcgY3JpdGVyaWEuJ1xuICApO1xuICBwcml2YXRlIGNhbkVkaXRNc2cgPSBnZXR0ZXh0KCdZb3UgY2FuIGVkaXQgdGhlIGZpbHRlciBoZXJlLicpO1xuICBwcml2YXRlIHJlYWRvbmx5IEdST1VQX1VQREFURURfTVNHID0gZ2V0dGV4dCgnR3JvdXAgdXBkYXRlZC4nKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHN1YkFzc2V0c1NlcnZpY2U6IFN1YkFzc2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbWFydEdyb3Vwc1NlcnZpY2U6IFNtYXJ0R3JvdXBzU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhc3NldE5vZGVTZXJ2aWNlOiBBc3NldE5vZGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXNzZXRUeXBlOiBBc3NldFR5cGVzU2VydmljZSxcbiAgICBASW5qZWN0KFNVQl9BU1NFVFNfQ09ORklHKSBwdWJsaWMgbW9kdWxlQ29uZmlnOiBTdWJBc3NldHNDb25maWdcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5ncm91cCkge1xuICAgICAgY29uc3QgeyBuYW1lLCBjOHlfTm90ZXMgfSA9IHRoaXMuZ3JvdXA7XG4gICAgICB0aGlzLmdyb3VwSW5mb01vZGVsID0geyBuYW1lLCBjOHlfTm90ZXMgfTtcbiAgICAgIHRoaXMuY2FuRWRpdCA9IHRoaXMuc21hcnRHcm91cHNTZXJ2aWNlLmlzU21hcnRHcm91cFYyKHRoaXMuZ3JvdXApXG4gICAgICAgID8gdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmNhbkVkaXRTbWFydEdyb3VwKClcbiAgICAgICAgOiBhd2FpdCB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuY2FuRWRpdEdyb3VwKHRoaXMuZ3JvdXApO1xuICAgICAgdGhpcy5ncm91cEljb24gPSBhd2FpdCB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaWNvbih0aGlzLmdyb3VwKTtcbiAgICAgIHRoaXMuc21hcnRHcm91cEZpbHRlciA9IHRoaXMuZ3JvdXAuYzh5X0RldmljZVF1ZXJ5U3RyaW5nO1xuICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pc0Fzc2V0KHRoaXMuZ3JvdXApXG4gICAgICAgID8gdGhpcy5hc3NldFR5cGUuZ2V0QXNzZXRUeXBlQnlOYW1lKHRoaXMuZ3JvdXAudHlwZSkubGFiZWxcbiAgICAgICAgOiBnZXR0ZXh0KCdHcm91cCcpO1xuICAgICAgdGhpcy5zZXRIaW50TXNnKCk7XG4gICAgfVxuICB9XG5cbiAgaXNTbWFydEdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuaXNTbWFydEdyb3VwKHRoaXMuZ3JvdXApO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlKHBhcnRpYWxHcm91cDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4pIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaXNTbWFydEdyb3VwOiBib29sZWFuID0gdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmlzU21hcnRHcm91cCh0aGlzLmdyb3VwKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRHcm91cCA9IGlzU21hcnRHcm91cFxuICAgICAgICA/IGF3YWl0IHRoaXMudXBkYXRlU21hcnRHcm91cChwYXJ0aWFsR3JvdXApXG4gICAgICAgIDogYXdhaXQgdGhpcy51cGRhdGVHcm91cChwYXJ0aWFsR3JvdXApO1xuXG4gICAgICB0aGlzLmdyb3VwID0gdXBkYXRlZEdyb3VwO1xuICAgICAgdGhpcy5ncm91cENoYW5nZS5lbWl0KHRoaXMuZ3JvdXApO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2Vzcyh0aGlzLkdST1VQX1VQREFURURfTVNHKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRIaW50TXNnKCkge1xuICAgIGNvbnN0IGZpbHRlck1zZ1RyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuZmlsdGVyTXNnKTtcbiAgICBjb25zdCBjYW5FZGl0TXNnVHJhbnNsYXRlZCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5jYW5FZGl0TXNnKTtcbiAgICB0aGlzLmZpbHRlckhpbnRNc2cgPSB0aGlzLmNhbkVkaXRcbiAgICAgID8gYCR7ZmlsdGVyTXNnVHJhbnNsYXRlZH0gJHtjYW5FZGl0TXNnVHJhbnNsYXRlZH1gXG4gICAgICA6IHRoaXMuZmlsdGVyTXNnO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVHcm91cChwYXJ0aWFsR3JvdXA6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+KSB7XG4gICAgY29uc3QgeyBpZCB9ID0gdGhpcy5ncm91cDtcbiAgICBjb25zdCBncm91cDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSB7IGlkLCAuLi5wYXJ0aWFsR3JvdXAgfTtcblxuICAgIHJldHVybiAoYXdhaXQgdGhpcy5pbnZlbnRvcnkudXBkYXRlKGdyb3VwKSkuZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU21hcnRHcm91cChwYXJ0aWFsR3JvdXA6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+KSB7XG4gICAgY29uc3QgeyBpZCB9ID0gdGhpcy5ncm91cDtcbiAgICBjb25zdCB7IGM4eV9EZXZpY2VRdWVyeVN0cmluZyB9ID0gcGFydGlhbEdyb3VwO1xuICAgIGNvbnN0IGdyb3VwOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PiA9IHsgaWQsIC4uLnBhcnRpYWxHcm91cCB9O1xuXG4gICAgaWYgKCFjOHlfRGV2aWNlUXVlcnlTdHJpbmcpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5zbWFydEdyb3Vwc1NlcnZpY2UudXBkYXRlKGdyb3VwKSkuZGF0YTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbW9kYWxCb2R5ID0gZ2V0dGV4dChcbiAgICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gY2hhbmdlIHRoZSBzbWFydCBncm91cCBmaWx0ZXIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/J1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHRpdGxlID0gZ2V0dGV4dCgnU21hcnQgZ3JvdXAgZmlsdGVyJyk7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKHRpdGxlLCBtb2RhbEJvZHksIFN0YXR1cy5XQVJOSU5HLCB7XG4gICAgICAgIG9rOiBnZXR0ZXh0KCdTYXZlJyksXG4gICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCB0aGlzLmlzUXVlcnlFeGVjdXRhYmxlKGM4eV9EZXZpY2VRdWVyeVN0cmluZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IEVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNtYXJ0R3JvdXBzU2VydmljZS51cGRhdGUoZ3JvdXApKS5kYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpc1F1ZXJ5RXhlY3V0YWJsZShxdWVyeTogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbHRlciA9IHsgcTogcXVlcnkgfTtcbiAgICAgIGF3YWl0IHRoaXMuaW52ZW50b3J5Lmxpc3QoZmlsdGVyKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJnLWxldmVsLTEgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMjQgcC1iLTI0IGxhcmdlLXBhZGRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTcwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgY29sLTFcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvciBpY29uLTQ4XCIgW2M4eUljb25dPVwiZ3JvdXBJY29uXCI+PC9pPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJsYWJlbCBsYWJlbC1pbmZvXCIgKm5nSWY9XCJncm91cC5jOHlfSXNEeW5hbWljR3JvdXBcIj5cbiAgICAgICAgICAgIHt7ICdTbWFydCBncm91cCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgY2xhc3M9XCJsYWJlbCBsYWJlbC1pbmZvIHRleHQtdHJ1bmNhdGUgZC1pbmxpbmUtYmxvY2tcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAqbmdJZj1cIiFncm91cC5jOHlfSXNEeW5hbWljR3JvdXAgJiYgIWdyb3VwLmNvbV9jdW11bG9jaXR5X21vZGVsX0FnZW50XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mb1wiICpuZ0lmPVwiZ3JvdXAuY29tX2N1bXVsb2NpdHlfbW9kZWxfQWdlbnRcIj5cbiAgICAgICAgICAgIHt7ICdSZW1vdGUgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3cgY29sLTEwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtODBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cbiAgICAgICAgICAgIDxmb3JtICNncm91cE5hbWVGb3JtPVwibmdGb3JtXCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImZvcm0tZ3JvdXAtbGcgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZ3JvdXBOYW1lXCIgY2xhc3M9XCJzci1vbmx5XCIgdHJhbnNsYXRlPk5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiIWNhbkVkaXRcIiBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIj57eyBncm91cEluZm9Nb2RlbC5uYW1lIH19PC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5FZGl0XCIgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1sZyBpbnB1dC1ncm91cC1lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdyb3VwSW5mb01vZGVsLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgZ3JvdXBJbmZvTW9kZWwubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiZ3JvdXBOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInt7IGdyb3VwSW5mb01vZGVsLm5hbWUubGVuZ3RoICsgMiB9fVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gTXkgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU0XCJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkdST1VQX0lORk8uQ09NUE9ORU5UUy5HUk9VUF9JTkZPLFxuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkdST1VQX0lORk8uQUNUSU9OUy5FRElULFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBQUk9EVUNUX0VYUEVSSUVOQ0UuR1JPVVBfSU5GTy5QUk9QRVJUSUVTLk5BTUVcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ3JvdXBOYW1lRm9ybS5mb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSh7IG5hbWU6IGdyb3VwSW5mb01vZGVsLm5hbWUgfSk7IGdyb3VwTmFtZUZvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uTmFtZV09XCInZ3JvdXBJbmZvOkVkaXRlZE5hbWVTYXZlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5HUk9VUF9JTkZPLkNPTVBPTkVOVFMuR1JPVVBfSU5GTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkdST1VQX0lORk8uUkVTVUxUUy5FRElUX1NBVkVELFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFBST0RVQ1RfRVhQRVJJRU5DRS5HUk9VUF9JTkZPLlBST1BFUlRJRVMuTkFNRVxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8Zm9ybSAjZ3JvdXBEZXNjcmlwdGlvbkZvcm09XCJuZ0Zvcm1cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJzci1vbmx5XCIgdHJhbnNsYXRlPkRlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHAgKm5nSWY9XCIhY2FuRWRpdFwiIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPnt7IGdyb3VwSW5mb01vZGVsLmM4eV9Ob3RlcyB9fTwvcD5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhbkVkaXRcIiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBuby1yZXNpemVcIlxuICAgICAgICAgICAgICAgICAgYzh5LXRleHRhcmVhLWF1dG9yZXNpemVcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3tcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzXG4gICAgICAgICAgICAgICAgICAgICAgPyBncm91cEluZm9Nb2RlbC5jOHlfTm90ZXNcbiAgICAgICAgICAgICAgICAgICAgICA6ICgnZS5nLiBNeSBkZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICBjb2xzPVwie3sgZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzID8gZ3JvdXBJbmZvTW9kZWwuYzh5X05vdGVzLmxlbmd0aCA6IDI1IH19XCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gTXkgZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICBbYWN0aW9uTmFtZV09XCJQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlRcIlxuICAgICAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5HUk9VUF9JTkZPLkNPTVBPTkVOVFMuR1JPVVBfSU5GTyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuR1JPVVBfSU5GTy5BQ1RJT05TLkVESVQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBQUk9EVUNUX0VYUEVSSUVOQ0UuR1JPVVBfSU5GTy5QUk9QRVJUSUVTLkRFU0NSSVBUSU9OXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogNzBweCAhaW1wb3J0YW50XCJcbiAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJncm91cERlc2NyaXB0aW9uRm9ybS5mb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgdXBkYXRlKHsgYzh5X05vdGVzOiBncm91cEluZm9Nb2RlbC5jOHlfTm90ZXMgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgZ3JvdXBEZXNjcmlwdGlvbkZvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVFwiXG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5HUk9VUF9JTkZPLkNPTVBPTkVOVFMuR1JPVVBfSU5GTyxcbiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5HUk9VUF9JTkZPLlJFU1VMVFMuRURJVF9TQVZFRCxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogUFJPRFVDVF9FWFBFUklFTkNFLkdST1VQX0lORk8uUFJPUEVSVElFUy5ERVNDUklQVElPTlxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgICAgIDxmb3JtICNzbWFydEdyb3VwRmlsdGVyRm9ybT1cIm5nRm9ybVwiICpuZ0lmPVwiaXNTbWFydEdyb3VwKClcIj5cbiAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwibS1iLTAgbS10LThcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtLWItMCB0ZXh0LW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ1NtYXJ0IGdyb3VwIGZpbHRlcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc20gbS1yLTRcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3sgZmlsdGVySGludE1zZyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiIWNhbkVkaXRcIiBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNtYXJ0R3JvdXBGaWx0ZXIgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhbkVkaXRcIiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic21hcnRHcm91cEZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwie3sgKHNtYXJ0R3JvdXBGaWx0ZXIgfHwgJycpLmxlbmd0aCArIDIgfX1cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSAkZmlsdGVyPShpZCBlcSAnMTIqJylcIlxuICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTRcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTbWFydCBncm91cCBmaWx0ZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSh7IGM4eV9EZXZpY2VRdWVyeVN0cmluZzogc21hcnRHcm91cEZpbHRlciB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNtYXJ0R3JvdXBGaWx0ZXJGb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNtYXJ0R3JvdXBGaWx0ZXJGb3JtLmZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIHNtYWxsXCI+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleCBzZXBhcmF0b3ItdG9wLWJvdHRvbSB0ZXh0LW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNtYWxsIG0tYi0wIG0tci04XCI+e3sgJ0NyZWF0ZWQnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tbC1hdXRvXCI+e3sgZ3JvdXAuY3JlYXRpb25UaW1lIHwgYzh5RGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC10LTQgcC1iLTQgZC1mbGV4IHNlcGFyYXRvci1ib3R0b20gdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOFwiPnt7ICdMYXN0IHVwZGF0ZWQnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tbC1hdXRvXCI+e3sgZ3JvdXAubGFzdFVwZGF0ZWQgfCBjOHlEYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwLmNvbV9jdW11bG9jaXR5X21vZGVsX0FnZW50XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleCBzZXBhcmF0b3ItYm90dG9tIHRleHQtbm93cmFwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNtYWxsIG0tYi0wIG0tci04XCI+e3sgJ1N0YXR1cycgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG9cIiAqbmdJZj1cImdyb3VwLmM4eV9Ccm9rZXJTb3VyY2VcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdyb3VwLmM4eV9Ccm9rZXJTb3VyY2Uuc3RhdHVzIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG9cIiAqbmdJZj1cIiFncm91cC5jOHlfQnJva2VyU291cmNlXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnT2ZmbGluZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19