@c8y/ngx-components 1017.0.179 → 1017.0.181
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.
- package/assets-navigator/asset-node.service.d.ts +1 -1
- package/assets-navigator/group.service.d.ts +1 -1
- package/core/asset-types/asset-types.service.d.ts +6 -14
- package/core/common/get-group-icon.pipe.d.ts +1 -1
- package/core/common/group.service.d.ts +1 -1
- package/esm2020/assets-navigator/asset-node.mjs +3 -3
- package/esm2020/assets-navigator/asset-node.service.mjs +1 -1
- package/esm2020/assets-navigator/group.service.mjs +1 -1
- package/esm2020/cockpit-config/cockpit-config.service.mjs +15 -10
- package/esm2020/core/asset-types/asset-types.service.mjs +17 -36
- package/esm2020/core/common/get-group-icon.pipe.mjs +2 -2
- package/esm2020/core/common/group.service.mjs +5 -5
- package/esm2020/core/search/search-input.component.mjs +3 -3
- package/esm2020/search/columns/asset-type.cell-renderer.component.mjs +3 -3
- package/esm2020/sub-assets/columns/asset-type.cell-renderer.component.mjs +5 -5
- package/esm2020/sub-assets/group-info.component.mjs +2 -2
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs +5 -3
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs +14 -9
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-search.mjs +7 -5
- package/fesm2015/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sub-assets.mjs +10 -8
- package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +32 -49
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs +2 -2
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs +14 -9
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-search.mjs +2 -2
- package/fesm2020/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sub-assets.mjs +5 -5
- package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +23 -42
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +2 -2
- package/search/columns/asset-type.cell-renderer.component.d.ts +1 -1
- package/sub-assets/columns/asset-type.cell-renderer.component.d.ts +2 -2
|
@@ -11,7 +11,7 @@ import * as i3 from "../common/ui-state.service";
|
|
|
11
11
|
/**
|
|
12
12
|
* AssetTypesService is being used to manage a cache of all existing asset types.
|
|
13
13
|
* This service is injected in the AssetOverviewNavigationFactory class, which will trigger
|
|
14
|
-
* the initialization of the cache as the
|
|
14
|
+
* the initialization of the cache as the constructor is called.
|
|
15
15
|
*/
|
|
16
16
|
export class AssetTypesService {
|
|
17
17
|
constructor(inventory, apiService, appStateService) {
|
|
@@ -23,9 +23,10 @@ export class AssetTypesService {
|
|
|
23
23
|
__and: [{ __has: 'c8y_IsAssetType' }, { name: 'group' }]
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
|
-
this.assetTypesCache = {};
|
|
27
26
|
this.DEFAULT_GROUP_ICON = 'c8y-group';
|
|
28
27
|
this.DEFAULT_GROUP_ICON_OPEN = 'c8y-group-open';
|
|
28
|
+
this.assetTypesCache = {};
|
|
29
|
+
this.isCacheSet = false;
|
|
29
30
|
this.appStateService.currentUser
|
|
30
31
|
.pipe(map(user => user?.id), distinctUntilChanged(), switchMap(userId => {
|
|
31
32
|
if (userId) {
|
|
@@ -41,7 +42,7 @@ export class AssetTypesService {
|
|
|
41
42
|
}
|
|
42
43
|
/**
|
|
43
44
|
* Queries available asset types and adds every asset type to the local cache.
|
|
44
|
-
* @returns
|
|
45
|
+
* @returns IManagedObject table of asset types.
|
|
45
46
|
*/
|
|
46
47
|
async initAssetTypesCache() {
|
|
47
48
|
const { data } = await this.inventory.list({
|
|
@@ -50,7 +51,8 @@ export class AssetTypesService {
|
|
|
50
51
|
pageSize: 2000
|
|
51
52
|
});
|
|
52
53
|
data.forEach(assetType => this.addAssetType(assetType));
|
|
53
|
-
|
|
54
|
+
this.isCacheSet = true;
|
|
55
|
+
return data;
|
|
54
56
|
}
|
|
55
57
|
/**
|
|
56
58
|
* Returns an asset type from the cache based on the unique name property.
|
|
@@ -81,42 +83,21 @@ export class AssetTypesService {
|
|
|
81
83
|
* Defaults to false.
|
|
82
84
|
* @returns Returns an icon for a given asset type.
|
|
83
85
|
*/
|
|
84
|
-
getIcon(type, open = false) {
|
|
86
|
+
async getIcon(type, open = false) {
|
|
87
|
+
if (!this.isCacheSet) {
|
|
88
|
+
try {
|
|
89
|
+
await this.initAssetTypesCache();
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
// do nothing
|
|
93
|
+
}
|
|
94
|
+
}
|
|
85
95
|
const assetType = this.getAssetTypeByName(type);
|
|
86
|
-
|
|
87
|
-
return icon;
|
|
96
|
+
return assetType?.c8y_IsAssetType?.icon?.name || this.getDefaultGroupIcon(open);
|
|
88
97
|
}
|
|
89
98
|
getDefaultGroupIcon(open = false) {
|
|
90
99
|
return open ? this.DEFAULT_GROUP_ICON_OPEN : this.DEFAULT_GROUP_ICON;
|
|
91
100
|
}
|
|
92
|
-
/**
|
|
93
|
-
* Checks if the default asset type 'group' already exists and if it doesn't it will be created.
|
|
94
|
-
* @returns void.
|
|
95
|
-
*/
|
|
96
|
-
async createAssetTypeGroupIfNotExists() {
|
|
97
|
-
const managedObjects = (await this.inventory.listQuery(this.ASSET_TYPE_GROUP_QUERY)).data;
|
|
98
|
-
if (managedObjects.length > 0) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
// if default group asset type doesn't exit create it
|
|
102
|
-
await this.createDefaultAssetTypeGroup();
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* create the default asset type group in the Inventory.
|
|
106
|
-
*/
|
|
107
|
-
async createDefaultAssetTypeGroup() {
|
|
108
|
-
await this.inventory.create({
|
|
109
|
-
label: 'Group',
|
|
110
|
-
name: 'group',
|
|
111
|
-
description: 'Default group asset type',
|
|
112
|
-
c8y_IsAssetType: {
|
|
113
|
-
icon: 'folder',
|
|
114
|
-
propertyIds: [],
|
|
115
|
-
allowedAssetTypeIds: [],
|
|
116
|
-
isNoneChildAssetsAllowed: 'false'
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
101
|
/**
|
|
121
102
|
* Add an asset type to the local cache.
|
|
122
103
|
* @param assetType Asset type which should be added to the cache.
|
|
@@ -214,4 +195,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
214
195
|
type: Injectable,
|
|
215
196
|
args: [{ providedIn: 'root' }]
|
|
216
197
|
}], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.ApiService }, { type: i3.AppStateService }]; } });
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtdHlwZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYXNzZXQtdHlwZXMvYXNzZXQtdHlwZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFXLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUU3RDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUNVLFNBQTJCLEVBQzNCLFVBQXNCLEVBQ3RCLGVBQWdDO1FBRmhDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBYnpCLDJCQUFzQixHQUFHO1lBQ3hDLFFBQVEsRUFBRTtnQkFDUixLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQ3pEO1NBQ0YsQ0FBQztRQUVNLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLHVCQUFrQixHQUFHLFdBQVcsQ0FBQztRQUNqQyw0QkFBdUIsR0FBRyxnQkFBZ0IsQ0FBQztRQU8xRCxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVc7YUFDN0IsSUFBSSxDQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFB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QUssS0FBSyxDQUFDO1FBQzlFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0QsT0FBTyxpQkFBaUIsSUFBSSxjQUFjLENBQUM7SUFDN0MsQ0FBQzs7OEdBbE9VLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTsyRkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQXBpQ2FsbCwgQXBpU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXBpJztcbmltcG9ydCB7IE5FVkVSIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBBc3NldFR5cGVzU2VydmljZSBpcyBiZWluZyB1c2VkIHRvIG1hbmFnZSBhIGNhY2hlIG9mIGFsbCBleGlzdGluZyBhc3NldCB0eXBlcy5cbiAqIFRoaXMgc2VydmljZSBpcyBpbmplY3RlZCBpbiB0aGUgQXNzZXRPdmVydmlld05hdmlnYXRpb25GYWN0b3J5IGNsYXNzLCB3aGljaCB3aWxsIHRyaWdnZXJcbiAqIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY2FjaGUgYXMgdGhlIGNvbnRzdHJ1Y3RvciBpcyBjYWxsZWQuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXNzZXRUeXBlc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IEFTU0VUX1RZUEVfR1JPVVBfUVVFUlkgPSB7XG4gICAgX19maWx0ZXI6IHtcbiAgICAgIF9fYW5kOiBbeyBfX2hhczogJ2M4eV9Jc0Fzc2V0VHlwZScgfSwgeyBuYW1lOiAnZ3JvdXAnIH1dXG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgYXNzZXRUeXBlc0NhY2hlOiBvYmplY3QgPSB7fTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0dST1VQX0lDT04gPSAnYzh5LWdyb3VwJztcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0dST1VQX0lDT05fT1BFTiA9ICdjOHktZ3JvdXAtb3Blbic7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGVTZXJ2aWNlOiBBcHBTdGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFVzZXJcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAodXNlciA9PiB1c2VyPy5pZCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHN3aXRjaE1hcCh1c2VySWQgPT4ge1xuICAgICAgICAgIGlmICh1c2VySWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdEFzc2V0VHlwZXNDYWNoZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3Vic2NyaWJlRm9yQXNzZXRUeXBlVXBkYXRlcygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFzc2V0VHlwZXNDYWNoZSA9IHt9O1xuICAgICAgICAgICAgcmV0dXJuIE5FVkVSO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIGF2YWlsYWJsZSBhc3NldCB0eXBlcyBhbmQgYWRkcyBldmVyeSBhc3NldCB0eXBlIHRvIHRoZSBsb2NhbCBjYWNoZS5cbiAgICogQHJldHVybnMgdm9pZC5cbiAgICovXG4gIGFzeW5jIGluaXRBc3NldFR5cGVzQ2FjaGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgIGZyYWdtZW50VHlwZTogJ2M4eV9Jc0Fzc2V0VHlwZScsXG4gICAgICB3aXRoQ2hpbGRyZW46IGZhbHNlLFxuICAgICAgcGFnZVNpemU6IDIwMDBcbiAgICB9KTtcbiAgICBkYXRhLmZvckVhY2goYXNzZXRUeXBlID0+IHRoaXMuYWRkQXNzZXRUeXBlKGFzc2V0VHlwZSkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFzc2V0IHR5cGUgZnJvbSB0aGUgY2FjaGUgYmFzZWQgb24gdGhlIHVuaXF1ZSBuYW1lIHByb3BlcnR5LlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBhc3NldCB0eXBlLlxuICAgKiBAcmV0dXJucyBJTWFuYWdlZE9iamVjdCB3aGljaCByZXByZXNlbnRzIHRoZSBhc3NldCB0eXBlLlxuICAgKi9cbiAgZ2V0QXNzZXRUeXBlQnlOYW1lKG5hbWU6IHN0cmluZyk6IElNYW5hZ2VkT2JqZWN0IHtcbiAgICBpZiAoIXRoaXMuYXNzZXRUeXBlc0NhY2hlLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFzc2V0VHlwZXNDYWNoZVtuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFzc2V0IHR5cGUgZnJvbSB0aGUgY2FjaGUgYmFzZWQgb24gdGhlIGlkLlxuICAgKiBAcGFyYW0gYXNzZXRUeXBlSWQgSWQgb2YgdGhlIGFzc2V0IHR5cGUuXG4gICAqIEByZXR1cm5zIElNYW5hZ2VkT2JqZWN0IHdoaWNoIHJlcHJlc2VudHMgdGhlIGFzc2V0IHR5cGUuXG4gICAqL1xuICBnZXRBc3NldFR5cGVCeUlkKGFzc2V0VHlwZUlkOiBzdHJpbmcpOiBJTWFuYWdlZE9iamVjdCB7XG4gICAgaWYgKCFhc3NldFR5cGVJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuYXNzZXRUeXBlc0NhY2hlKS5maW5kKFxuICAgICAgKGFzc2V0VHlwZTogSU1hbmFnZWRPYmplY3QpID0+IGFzc2V0VHlwZS5pZCA9PT0gYXNzZXRUeXBlSWRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIGFuIGljb24gZnJvbSBhbiBhc3NldCB0eXBlLlxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIHRoZSBhc3NldCB0eXBlLlxuICAgKiBAcGFyYW0gb3BlbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIGFuIGFsdGVybmF0aXZlIGljb24gc2hvd2luZyB0aGUgb3BlbiBzdGF0ZS5cbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYW4gaWNvbiBmb3IgYSBnaXZlbiBhc3NldCB0eXBlLlxuICAgKi9cbiAgZ2V0SWNvbih0eXBlOiBzdHJpbmcsIG9wZW46IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgY29uc3QgYXNzZXRUeXBlID0gdGhpcy5nZXRBc3NldFR5cGVCeU5hbWUodHlwZSk7XG4gICAgY29uc3QgaWNvbiA9IGFzc2V0VHlwZT8uYzh5X0lzQXNzZXRUeXBlPy5pY29uPy5uYW1lIHx8IHRoaXMuZ2V0RGVmYXVsdEdyb3VwSWNvbihvcGVuKTtcbiAgICByZXR1cm4gaWNvbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEdyb3VwSWNvbihvcGVuOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gb3BlbiA/IHRoaXMuREVGQVVMVF9HUk9VUF9JQ09OX09QRU4gOiB0aGlzLkRFRkFVTFRfR1JPVVBfSUNPTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGRlZmF1bHQgYXNzZXQgdHlwZSAnZ3JvdXAnIGFscmVhZHkgZXhpc3RzIGFuZCBpZiBpdCBkb2Vzbid0IGl0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICogQHJldHVybnMgdm9pZC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQXNzZXRUeXBlR3JvdXBJZk5vdEV4aXN0cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtYW5hZ2VkT2JqZWN0cyA9IChhd2FpdCB0aGlzLmludmVudG9yeS5saXN0UXVlcnkodGhpcy5BU1NFVF9UWVBFX0dST1VQX1FVRVJZKSkuZGF0YTtcblxuICAgIGlmIChtYW5hZ2VkT2JqZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gaWYgZGVmYXVsdCBncm91cCBhc3NldCB0eXBlIGRvZXNuJ3QgZXhpdCBjcmVhdGUgaXRcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZURlZmF1bHRBc3NldFR5cGVHcm91cCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNyZWF0ZSB0aGUgZGVmYXVsdCBhc3NldCB0eXBlIGdyb3VwIGluIHRoZSBJbnZlbnRvcnkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNyZWF0ZURlZmF1bHRBc3NldFR5cGVHcm91cCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmludmVudG9yeS5jcmVhdGUoe1xuICAgICAgbGFiZWw6ICdHcm91cCcsXG4gICAgICBuYW1lOiAnZ3JvdXAnLFxuICAgICAgZGVzY3JpcHRpb246ICdEZWZhdWx0IGdyb3VwIGFzc2V0IHR5cGUnLFxuICAgICAgYzh5X0lzQXNzZXRUeXBlOiB7XG4gICAgICAgIGljb246ICdmb2xkZXInLFxuICAgICAgICBwcm9wZXJ0eUlkczogW10sXG4gICAgICAgIGFsbG93ZWRBc3NldFR5cGVJZHM6IFtdLFxuICAgICAgICBpc05vbmVDaGlsZEFzc2V0c0FsbG93ZWQ6ICdmYWxzZSdcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gYXNzZXQgdHlwZSB0byB0aGUgbG9jYWwgY2FjaGUuXG4gICAqIEBwYXJhbSBhc3NldFR5cGUgQXNzZXQgdHlwZSB3aGljaCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGNhY2hlLlxuICAgKiBAcmV0dXJucyB2b2lkLlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRBc3NldFR5cGUoYXNzZXRUeXBlOiBJTWFuYWdlZE9iamVjdCk6IHZvaWQge1xuICAgIGlmICghYXNzZXRUeXBlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdBc3NldCB0eXBlIG11c3Qgbm90IGJlIG51bGwnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFzc2V0VHlwZXNDYWNoZVthc3NldFR5cGUubmFtZV0gPSBhc3NldFR5cGU7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFuIGFzc2V0IHR5cGUgZnJvbSB0aGUgbG9jYWwgY2FjaGUgYmFzZWQgb24gdGhlIGdpdmVuIGFzc2V0IHR5cGUgaWQuXG4gICAqIEBwYXJhbSBhc3NldFR5cGVJZCBJZCBvZiB0aGUgYXNzZXQgdHlwZSB3aGljaCBzaG91bGQgYmUgZGVsZXRlZC5cbiAgICogQHJldHVybnMgdm9pZC5cbiAgICovXG4gIHByaXZhdGUgZGVsZXRlQXNzZXRUeXBlKGFzc2V0VHlwZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWFzc2V0VHlwZUlkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdBc3NldCB0eXBlIElEIG11c3Qgbm90IGJlIG51bGwnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhc3NldFR5cGUgPSB0aGlzLmdldEFzc2V0VHlwZUJ5SWQoYXNzZXRUeXBlSWQpO1xuICAgIGlmIChhc3NldFR5cGUpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmFzc2V0VHlwZXNDYWNoZVthc3NldFR5cGUubmFtZV07XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gYXNzZXQgdHlwZSBpbiB0aGUgbG9jYWwgY2FjaGUuXG4gICAqIEBwYXJhbSBhc3NldFR5cGUgQXNzZXQgdHlwZSB3aGljaCBzaG91bGQgYmUgdXBkYXRlZCBpbiB0aGUgY2FjaGUuXG4gICAqIEByZXR1cm5zIHZvaWQuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUFzc2V0VHlwZShhc3NldFR5cGU6IElNYW5hZ2VkT2JqZWN0KTogdm9pZCB7XG4gICAgaWYgKCFhc3NldFR5cGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Fzc2V0IHR5cGUgbXVzdCBub3QgYmUgbnVsbCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNhY2hlZEFzc2V0VHlwZSA9IHRoaXMuZ2V0QXNzZXRUeXBlQnlJZChhc3NldFR5cGUuaWQpO1xuICAgIGlmIChjYWNoZWRBc3NldFR5cGUpIHtcbiAgICAgIHRoaXMuYXNzZXRUeXBlc0NhY2hlW2NhY2hlZEFzc2V0VHlwZS5uYW1lXSA9IE9iamVjdC5hc3NpZ24oY2FjaGVkQXNzZXRUeXBlLCBhc3NldFR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmVzIHRvIGFwaSBQVVQsIFBPU1QgYW5kIERFTEVURSByZXF1ZXN0cyBpbnRlcmNlcHRvciB0byB1cGRhdGUgbG9jYWwgYXNzZXQgdHlwZXMgY2FjaGUuXG4gICAqIElmIGEgbmV3IGFzc2V0IHR5cGUgaGFzIGJlZW4gY3JlYXRlZCBpdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBsb2NhbCBjYWNoZS4gSWYgYW4gYXNzZXRcbiAgICogdHlwZSBoYXMgYmVlbiBkZWxldGVkIGl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBsb2NhbCBjYWNoZS5cbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlRm9yQXNzZXRUeXBlVXBkYXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuaG9va1Jlc3BvbnNlKGMgPT4gdGhpcy5jaGVja0lmSW52ZW50b3J5TW9BcGlDYWxsKGMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoY2FsbDogQXBpQ2FsbCkgPT4ge1xuICAgICAgICAgIGlmICghY2FsbCAmJiAhY2FsbC5tZXRob2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYm9keVRvUGFyc2UgPSBjYWxsLm9wdGlvbnM/LmJvZHk7XG4gICAgICAgICAgaWYgKGJvZHlUb1BhcnNlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBtbzogSU1hbmFnZWRPYmplY3QgPSBKU09OLnBhcnNlKGJvZHlUb1BhcnNlIGFzIHN0cmluZyk7XG5cbiAgICAgICAgICAgICAgaWYgKGNhbGwubWV0aG9kID09PSAnREVMRVRFJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlQXNzZXRUeXBlKG1vLmlkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIW1vLmhhc093blByb3BlcnR5KCdjOHlfSXNBc3NldFR5cGUnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjYWxsLm1ldGhvZCA9PT0gJ1BVVCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFzc2V0VHlwZShtbyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5hZGRBc3NldFR5cGUobW8pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWFuYWdlZCBvYmplY3RzIGludmVudG9yeSBhcGkgZmlsdGVyLCBhbGxvd2luZyBvbmx5IFBVVCwgUE9TVCBhbmQgREVMRVRFIG1ldGhvZHMuXG4gICAqIEBwYXJhbSBjYWxsIEFwaSBjYWxsIHRvIGZpbHRlci5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIGFwaSBjYWxsIG1lZXRzIHRoZSByZXF1aXJlZCBjcml0ZXJpYS5cbiAgICovXG4gIHByaXZhdGUgY2hlY2tJZkludmVudG9yeU1vQXBpQ2FsbChjYWxsOiBBcGlDYWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKCFjYWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzUmVxdWlyZWRNZXRob2QgPVxuICAgICAgY2FsbC5tZXRob2QgPT09ICdQT1NUJyB8fCBjYWxsLm1ldGhvZCA9PT0gJ0RFTEVURScgfHwgY2FsbC5tZXRob2QgPT09ICdQVVQnO1xuICAgIGNvbnN0IGhhc1JlcXVpcmVkVXJsID0gY2FsbC51cmwuaW5jbHVkZXMoJ21hbmFnZWRPYmplY3RzJyk7XG4gICAgcmV0dXJuIGhhc1JlcXVpcmVkTWV0aG9kICYmIGhhc1JlcXVpcmVkVXJsO1xuICB9XG59XG4iXX0=
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtdHlwZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYXNzZXQtdHlwZXMvYXNzZXQtdHlwZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFXLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUU3RDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUNVLFNBQTJCLEVBQzNCLFVBQXNCLEVBQ3RCLGVBQWdDO1FBRmhDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBYnpCLDJCQUFzQixHQUFHO1lBQ3hDLFFBQVEsRUFBRTtnQkFDUixLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQ3pEO1NBQ0YsQ0FBQztRQUNlLHVCQUFrQixHQUFHLFdBQVcsQ0FBQztRQUNqQyw0QkFBdUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUNwRCxvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUM3QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBT3pCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVzthQUM3QixJQUFJLENBQ0gsR0FBRyxDQUFDLElB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RUFBRTt3QkFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQzVCLE9BQU87cUJBQ1I7b0JBRUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsRUFBRTt3QkFDekMsT0FBTztxQkFDUjtvQkFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFO3dCQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN6QixPQUFPO3FCQUNSO29CQUVELElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3ZCO2dCQUFDLE9BQU8sS0FBSyxFQUFFO29CQUNkLGFBQWE7aUJBQ2Q7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHlCQUF5QixDQUFDLElBQWE7UUFDN0MsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLGlCQUFpQixHQUNyQixJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQztRQUM5RSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELE9BQU8saUJBQWlCLElBQUksY0FBYyxDQUFDO0lBQzdDLENBQUM7OzhHQTFNVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQURKLE1BQU07MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFwaUNhbGwsIEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBORVZFUiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5cbi8qKlxuICogQXNzZXRUeXBlc1NlcnZpY2UgaXMgYmVpbmcgdXNlZCB0byBtYW5hZ2UgYSBjYWNoZSBvZiBhbGwgZXhpc3RpbmcgYXNzZXQgdHlwZXMuXG4gKiBUaGlzIHNlcnZpY2UgaXMgaW5qZWN0ZWQgaW4gdGhlIEFzc2V0T3ZlcnZpZXdOYXZpZ2F0aW9uRmFjdG9yeSBjbGFzcywgd2hpY2ggd2lsbCB0cmlnZ2VyXG4gKiB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNhY2hlIGFzIHRoZSBjb25zdHJ1Y3RvciBpcyBjYWxsZWQuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXNzZXRUeXBlc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IEFTU0VUX1RZUEVfR1JPVVBfUVVFUlkgPSB7XG4gICAgX19maWx0ZXI6IHtcbiAgICAgIF9fYW5kOiBbeyBfX2hhczogJ2M4eV9Jc0Fzc2V0VHlwZScgfSwgeyBuYW1lOiAnZ3JvdXAnIH1dXG4gICAgfVxuICB9O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfR1JPVVBfSUNPTiA9ICdjOHktZ3JvdXAnO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfR1JPVVBfSUNPTl9PUEVOID0gJ2M4eS1ncm91cC1vcGVuJztcbiAgcHJpdmF0ZSBhc3NldFR5cGVzQ2FjaGU6IG9iamVjdCA9IHt9O1xuICBwcml2YXRlIGlzQ2FjaGVTZXQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VXNlclxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCh1c2VyID0+IHVzZXI/LmlkKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc3dpdGNoTWFwKHVzZXJJZCA9PiB7XG4gICAgICAgICAgaWYgKHVzZXJJZCkge1xuICAgICAgICAgICAgdGhpcy5pbml0QXNzZXRUeXBlc0NhY2hlKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJzY3JpYmVGb3JBc3NldFR5cGVVcGRhdGVzKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXNzZXRUeXBlc0NhY2hlID0ge307XG4gICAgICAgICAgICByZXR1cm4gTkVWRVI7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFF1ZXJpZXMgYXZhaWxhYmxlIGFzc2V0IHR5cGVzIGFuZCBhZGRzIGV2ZXJ5IGFzc2V0IHR5cGUgdG8gdGhlIGxvY2FsIGNhY2hlLlxuICAgKiBAcmV0dXJucyBJTWFuYWdlZE9iamVjdCB0YWJsZSBvZiBhc3NldCB0eXBlcy5cbiAgICovXG4gIGFzeW5jIGluaXRBc3NldFR5cGVzQ2FjaGUoKTogUHJvbWlzZTxJTWFuYWdlZE9iamVjdFtdPiB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgIGZyYWdtZW50VHlwZTogJ2M4eV9Jc0Fzc2V0VHlwZScsXG4gICAgICB3aXRoQ2hpbGRyZW46IGZhbHNlLFxuICAgICAgcGFnZVNpemU6IDIwMDBcbiAgICB9KTtcbiAgICBkYXRhLmZvckVhY2goYXNzZXRUeXBlID0+IHRoaXMuYWRkQXNzZXRUeXBlKGFzc2V0VHlwZSkpO1xuXG4gICAgdGhpcy5pc0NhY2hlU2V0ID0gdHJ1ZTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFzc2V0IHR5cGUgZnJvbSB0aGUgY2FjaGUgYmFzZWQgb24gdGhlIHVuaXF1ZSBuYW1lIHByb3BlcnR5LlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBhc3NldCB0eXBlLlxuICAgKiBAcmV0dXJucyBJTWFuYWdlZE9iamVjdCB3aGljaCByZXByZXNlbnRzIHRoZSBhc3NldCB0eXBlLlxuICAgKi9cbiAgZ2V0QXNzZXRUeXBlQnlOYW1lKG5hbWU6IHN0cmluZyk6IElNYW5hZ2VkT2JqZWN0IHtcbiAgICBpZiAoIXRoaXMuYXNzZXRUeXBlc0NhY2hlLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFzc2V0VHlwZXNDYWNoZVtuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFzc2V0IHR5cGUgZnJvbSB0aGUgY2FjaGUgYmFzZWQgb24gdGhlIGlkLlxuICAgKiBAcGFyYW0gYXNzZXRUeXBlSWQgSWQgb2YgdGhlIGFzc2V0IHR5cGUuXG4gICAqIEByZXR1cm5zIElNYW5hZ2VkT2JqZWN0IHdoaWNoIHJlcHJlc2VudHMgdGhlIGFzc2V0IHR5cGUuXG4gICAqL1xuICBnZXRBc3NldFR5cGVCeUlkKGFzc2V0VHlwZUlkOiBzdHJpbmcpOiBJTWFuYWdlZE9iamVjdCB7XG4gICAgaWYgKCFhc3NldFR5cGVJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuYXNzZXRUeXBlc0NhY2hlKS5maW5kKFxuICAgICAgKGFzc2V0VHlwZTogSU1hbmFnZWRPYmplY3QpID0+IGFzc2V0VHlwZS5pZCA9PT0gYXNzZXRUeXBlSWRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIGFuIGljb24gZnJvbSBhbiBhc3NldCB0eXBlLlxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIHRoZSBhc3NldCB0eXBlLlxuICAgKiBAcGFyYW0gb3BlbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIGFuIGFsdGVybmF0aXZlIGljb24gc2hvd2luZyB0aGUgb3BlbiBzdGF0ZS5cbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYW4gaWNvbiBmb3IgYSBnaXZlbiBhc3NldCB0eXBlLlxuICAgKi9cbiAgYXN5bmMgZ2V0SWNvbih0eXBlOiBzdHJpbmcsIG9wZW4gPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCF0aGlzLmlzQ2FjaGVTZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdEFzc2V0VHlwZXNDYWNoZSgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBhc3NldFR5cGUgPSB0aGlzLmdldEFzc2V0VHlwZUJ5TmFtZSh0eXBlKTtcbiAgICByZXR1cm4gYXNzZXRUeXBlPy5jOHlfSXNBc3NldFR5cGU/Lmljb24/Lm5hbWUgfHwgdGhpcy5nZXREZWZhdWx0R3JvdXBJY29uKG9wZW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0R3JvdXBJY29uKG9wZW46IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHJldHVybiBvcGVuID8gdGhpcy5ERUZBVUxUX0dST1VQX0lDT05fT1BFTiA6IHRoaXMuREVGQVVMVF9HUk9VUF9JQ09OO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBhc3NldCB0eXBlIHRvIHRoZSBsb2NhbCBjYWNoZS5cbiAgICogQHBhcmFtIGFzc2V0VHlwZSBBc3NldCB0eXBlIHdoaWNoIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY2FjaGUuXG4gICAqIEByZXR1cm5zIHZvaWQuXG4gICAqL1xuICBwcml2YXRlIGFkZEFzc2V0VHlwZShhc3NldFR5cGU6IElNYW5hZ2VkT2JqZWN0KTogdm9pZCB7XG4gICAgaWYgKCFhc3NldFR5cGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Fzc2V0IHR5cGUgbXVzdCBub3QgYmUgbnVsbCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYXNzZXRUeXBlc0NhY2hlW2Fzc2V0VHlwZS5uYW1lXSA9IGFzc2V0VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYW4gYXNzZXQgdHlwZSBmcm9tIHRoZSBsb2NhbCBjYWNoZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gYXNzZXQgdHlwZSBpZC5cbiAgICogQHBhcmFtIGFzc2V0VHlwZUlkIElkIG9mIHRoZSBhc3NldCB0eXBlIHdoaWNoIHNob3VsZCBiZSBkZWxldGVkLlxuICAgKiBAcmV0dXJucyB2b2lkLlxuICAgKi9cbiAgcHJpdmF0ZSBkZWxldGVBc3NldFR5cGUoYXNzZXRUeXBlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghYXNzZXRUeXBlSWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Fzc2V0IHR5cGUgSUQgbXVzdCBub3QgYmUgbnVsbCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0VHlwZSA9IHRoaXMuZ2V0QXNzZXRUeXBlQnlJZChhc3NldFR5cGVJZCk7XG4gICAgaWYgKGFzc2V0VHlwZSkge1xuICAgICAgZGVsZXRlIHRoaXMuYXNzZXRUeXBlc0NhY2hlW2Fzc2V0VHlwZS5uYW1lXTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiBhc3NldCB0eXBlIGluIHRoZSBsb2NhbCBjYWNoZS5cbiAgICogQHBhcmFtIGFzc2V0VHlwZSBBc3NldCB0eXBlIHdoaWNoIHNob3VsZCBiZSB1cGRhdGVkIGluIHRoZSBjYWNoZS5cbiAgICogQHJldHVybnMgdm9pZC5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQXNzZXRUeXBlKGFzc2V0VHlwZTogSU1hbmFnZWRPYmplY3QpOiB2b2lkIHtcbiAgICBpZiAoIWFzc2V0VHlwZSkge1xuICAgICAgY29uc29sZS5lcnJvcignQXNzZXQgdHlwZSBtdXN0IG5vdCBiZSBudWxsJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVkQXNzZXRUeXBlID0gdGhpcy5nZXRBc3NldFR5cGVCeUlkKGFzc2V0VHlwZS5pZCk7XG4gICAgaWYgKGNhY2hlZEFzc2V0VHlwZSkge1xuICAgICAgdGhpcy5hc3NldFR5cGVzQ2FjaGVbY2FjaGVkQXNzZXRUeXBlLm5hbWVdID0gT2JqZWN0LmFzc2lnbihjYWNoZWRBc3NldFR5cGUsIGFzc2V0VHlwZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gYXBpIFBVVCwgUE9TVCBhbmQgREVMRVRFIHJlcXVlc3RzIGludGVyY2VwdG9yIHRvIHVwZGF0ZSBsb2NhbCBhc3NldCB0eXBlcyBjYWNoZS5cbiAgICogSWYgYSBuZXcgYXNzZXQgdHlwZSBoYXMgYmVlbiBjcmVhdGVkIGl0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxvY2FsIGNhY2hlLiBJZiBhbiBhc3NldFxuICAgKiB0eXBlIGhhcyBiZWVuIGRlbGV0ZWQgaXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGxvY2FsIGNhY2hlLlxuICAgKi9cbiAgcHJpdmF0ZSBzdWJzY3JpYmVGb3JBc3NldFR5cGVVcGRhdGVzKCkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5ob29rUmVzcG9uc2UoYyA9PiB0aGlzLmNoZWNrSWZJbnZlbnRvcnlNb0FwaUNhbGwoYykpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChjYWxsOiBBcGlDYWxsKSA9PiB7XG4gICAgICAgICAgaWYgKCFjYWxsICYmICFjYWxsLm1ldGhvZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBib2R5VG9QYXJzZSA9IGNhbGwub3B0aW9ucz8uYm9keTtcbiAgICAgICAgICBpZiAoYm9keVRvUGFyc2UpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1vOiBJTWFuYWdlZE9iamVjdCA9IEpTT04ucGFyc2UoYm9keVRvUGFyc2UgYXMgc3RyaW5nKTtcblxuICAgICAgICAgICAgICBpZiAoY2FsbC5tZXRob2QgPT09ICdERUxFVEUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWxldGVBc3NldFR5cGUobW8uaWQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghbW8uaGFzT3duUHJvcGVydHkoJ2M4eV9Jc0Fzc2V0VHlwZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNhbGwubWV0aG9kID09PSAnUFVUJykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXNzZXRUeXBlKG1vKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLmFkZEFzc2V0VHlwZShtbyk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW5hZ2VkIG9iamVjdHMgaW52ZW50b3J5IGFwaSBmaWx0ZXIsIGFsbG93aW5nIG9ubHkgUFVULCBQT1NUIGFuZCBERUxFVEUgbWV0aG9kcy5cbiAgICogQHBhcmFtIGNhbGwgQXBpIGNhbGwgdG8gZmlsdGVyLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgYXBpIGNhbGwgbWVldHMgdGhlIHJlcXVpcmVkIGNyaXRlcmlhLlxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0lmSW52ZW50b3J5TW9BcGlDYWxsKGNhbGw6IEFwaUNhbGwpOiBib29sZWFuIHtcbiAgICBpZiAoIWNhbGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNSZXF1aXJlZE1ldGhvZCA9XG4gICAgICBjYWxsLm1ldGhvZCA9PT0gJ1BPU1QnIHx8IGNhbGwubWV0aG9kID09PSAnREVMRVRFJyB8fCBjYWxsLm1ldGhvZCA9PT0gJ1BVVCc7XG4gICAgY29uc3QgaGFzUmVxdWlyZWRVcmwgPSBjYWxsLnVybC5pbmNsdWRlcygnbWFuYWdlZE9iamVjdHMnKTtcbiAgICByZXR1cm4gaGFzUmVxdWlyZWRNZXRob2QgJiYgaGFzUmVxdWlyZWRVcmw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -6,7 +6,7 @@ export class GetGroupIconPipe {
|
|
|
6
6
|
constructor(groupService) {
|
|
7
7
|
this.groupService = groupService;
|
|
8
8
|
}
|
|
9
|
-
transform(mo) {
|
|
9
|
+
async transform(mo) {
|
|
10
10
|
return this.groupService.getIcon(mo);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
18
18
|
name: 'getGroupIcon'
|
|
19
19
|
}]
|
|
20
20
|
}], ctorParameters: function () { return [{ type: i1.GroupService }]; } });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWdyb3VwLWljb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2dldC1ncm91cC1pY29uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFLL0MsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUFHLENBQUM7SUFFbEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFrQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OzZHQUxVLGdCQUFnQjsyR0FBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBSDVCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGNBQWM7aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBHcm91cFNlcnZpY2UgfSBmcm9tICcuL2dyb3VwLnNlcnZpY2UnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdnZXRHcm91cEljb24nXG59KVxuZXhwb3J0IGNsYXNzIEdldEdyb3VwSWNvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBncm91cFNlcnZpY2U6IEdyb3VwU2VydmljZSkge31cblxuICBhc3luYyB0cmFuc2Zvcm0obW86IElNYW5hZ2VkT2JqZWN0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5ncm91cFNlcnZpY2UuZ2V0SWNvbihtbyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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;
|
|
@@ -146,8 +146,8 @@ GroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version
|
|
|
146
146
|
__decorate([
|
|
147
147
|
memoize(property('id')),
|
|
148
148
|
__metadata("design:type", Function),
|
|
149
|
-
__metadata("design:paramtypes", [Object,
|
|
150
|
-
__metadata("design:returntype",
|
|
149
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
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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YyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sc0JBQXNCLENBQUM7U0FDL0I7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDcEIsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzt5R0FuSlUsWUFBWTs2R0FBWixZQUFZLGNBRlgsTUFBTTtBQXFDbEI7SUFEQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7OzJDQVF2QjsyRkExQ1UsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7d0dBb0NDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEFzc2V0VHlwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vYXNzZXQtdHlwZXMvYXNzZXQtdHlwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBHcm91cEZyYWdtZW50IH0gZnJvbSAnLi9ncm91cC1mcmFnbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBtZW1vaXplIH0gZnJvbSAnLi9tZW1vaXplLmRlY29yYXRvcic7XG5cbmNvbnN0IE1PX1RZUEVTID0gW1xuICAnYXNzZXQnLFxuICAnZHluYW1pY0dyb3VwJyxcbiAgJ2Jyb2tlclNvdXJjZScsXG4gICdicm9rZXJTb3VyY2VJbmFjdGl2ZScsXG4gICdncm91cCcsXG4gICdvdGhlcidcbl0gYXMgY29uc3Q7XG5cbnR5cGUgTW9UeXBlcyA9IHR5cGVvZiBNT19UWVBFU1tudW1iZXJdO1xuXG50eXBlIEljb24gPSBQYXJ0aWFsPHsgaWNvbjogc3RyaW5nOyBpY29uT3Blbj86IHN0cmluZzsgaWNvbkNsYXNzPzogc3RyaW5nIH0+O1xuXG50eXBlIEljb25zID0gUGFydGlhbDxSZWNvcmQ8TW9UeXBlcywgSWNvbj4+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBHcm91cFNlcnZpY2Uge1xuICByZWFkb25seSBpY29uczogSWNvbnMgPSB7XG4gICAgYnJva2VyU291cmNlSW5hY3RpdmU6IHtcbiAgICAgIGljb246ICdjOHktZ3JvdXAtcmVtb3RlLWluYWN0aXZlJyxcbiAgICAgIGljb25PcGVuOiAnYzh5LWdyb3VwLXJlbW90ZS1pbmFjdGl2ZSdcbiAgICB9LFxuICAgIGJyb2tlclNvdXJjZToge1xuICAgICAgaWNvbjogJ2M4eS1ncm91cC1yZW1vdGUnLFxuICAgICAgaWNvbk9wZW46ICdjOHktZ3JvdXAtcmVtb3RlLW9wZW4nXG4gICAgfSxcbiAgICBncm91cDoge1xuICAgICAgaWNvbjogJ2M4eS1ncm91cCcsXG4gICAgICBpY29uT3BlbjogJ2M4eS1ncm91cC1vcGVuJ1xuICAgIH0sXG4gICAgZHluYW1pY0dyb3VwOiB7XG4gICAgICBpY29uOiAnYzh5LWdyb3VwLXNtYXJ0JyxcbiAgICAgIGljb25PcGVuOiAnYzh5LWdyb3VwLXNtYXJ0LW9wZW4nXG4gICAgfSxcbiAgICBvdGhlcjoge1xuICAgICAgaWNvbjogJ2V4Y2hhbmdlJyxcbiAgICAgIGljb25DbGFzczogJ3N0YXR1c1Vua25vd24nXG4gICAgfVxuICB9O1xuICBkYXRhQnJva2VyU291cmNlRnJhZ21lbnRJbmFjdGl2ZSA9IGBfJHtHcm91cEZyYWdtZW50LmRhdGFCcm9rZXJTb3VyY2VGcmFnbWVudH1gO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXNzZXRUeXBlc1NlcnZpY2U6IEFzc2V0VHlwZXNTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbiBpY29uIGJhc2VkIG9uIHRoZSBjb250ZW50cyBvZiBhIG1hbmFnZWQgb2JqZWN0LlxuICAgKiBJdCB0YWtlcyBpbnRvIGFjY291bnQgZmFjdG9ycyBzdWNoIGFzIHR5cGUsIGFuZCBzcGVjaWZpYyBmcmFnbWVudHMuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcGFyYW0gb3BlbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIGFuIGFsdGVybmF0aXZlIGljb24gc2hvd2luZyB0aGUgb3BlbiBzdGF0ZS5cbiAgICogQHJldHVybnMgUmV0dXJucyBhbiBpY29uLlxuICAgKi9cbiAgQG1lbW9pemUocHJvcGVydHkoJ2lkJykpXG4gIGdldEljb24obW86IElNYW5hZ2VkT2JqZWN0LCBvcGVuOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdlbmVyaWNNb1R5cGUgPSB0aGlzLmRldGVybWluZU1vVHlwZShtbyk7XG4gICAgaWYgKGdlbmVyaWNNb1R5cGUgPT09ICdhc3NldCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEFzc2V0Q3VzdG9tSWNvbihtby50eXBlLCBvcGVuKTtcbiAgICB9XG4gICAgY29uc3QgdHlwZUljb25zID0gdGhpcy5nZXREZWZhdWx0SWNvbihnZW5lcmljTW9UeXBlKTtcbiAgICByZXR1cm4gKG9wZW4gJiYgdHlwZUljb25zLmljb25PcGVuKSB8fCB0eXBlSWNvbnMuaWNvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZ3JvdXAuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZ3JvdXAuXG4gICAqL1xuICBpc0dyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIW1vW0dyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGVdIHx8IG1vLnR5cGUgPT09IEdyb3VwRnJhZ21lbnQuZ3JvdXBUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYSBkeW5hbWljIGdyb3VwLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhIGR5bmFtaWMgZ3JvdXAuXG4gICAqL1xuICBpc0R5bmFtaWNHcm91cChtbzogSU1hbmFnZWRPYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFtb1tHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50XSB8fCBtby50eXBlID09PSBHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cFR5cGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBtYW5hZ2VkIG9iamVjdCBpcyBhIGRhdGEgYnJva2VyLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhIGRhdGEgYnJva2VyLlxuICAgKi9cbiAgaXNEYXRhQnJva2VyKG1vOiBJTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhIW1vW0dyb3VwRnJhZ21lbnQuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50XSB8fCAhIW1vW3RoaXMuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50SW5hY3RpdmVdXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIgYWN0aXZlLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhIGRhdGEgYnJva2VyIGFjdGl2ZS5cbiAgICovXG4gIGlzRGF0YUJyb2tlckFjdGl2ZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gKFxuICAgICAgISFtb1tHcm91cEZyYWdtZW50LmRhdGFCcm9rZXJTb3VyY2VGcmFnbWVudF0gJiYgIW1vW3RoaXMuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50SW5hY3RpdmVdXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGFuIGFzc2V0LlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhbiBhc3NldC5cbiAgICovXG4gIGlzQXNzZXQobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuICEhbW8uYzh5X0lzQXNzZXQ7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIG9iamVjdCBiZWxvbmdzIHRvIGFueSB0eXBlIG9mIGdyb3VwLlxuICAgKiBUeXBlcyBvZiBncm91cHM6IGdyb3VwLCBkeW5hbWljIGdyb3VwLCBkYXRhIGJyb2tlciwgZGF0YSBicm9rZXIgYWN0aXZlLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBiZWxvbmdzIHRvIHRoZSBncm91cCBjYXRlZ29yeS5cbiAgICovXG4gIGlzQW55R3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaXNHcm91cChtbykgfHxcbiAgICAgIHRoaXMuaXNEeW5hbWljR3JvdXAobW8pIHx8XG4gICAgICB0aGlzLmlzRGF0YUJyb2tlcihtbykgfHxcbiAgICAgIHRoaXMuaXNEYXRhQnJva2VyQWN0aXZlKG1vKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBtYW5hZ2VkIG9iamVjdCBpcyBhIGRldmljZS5cbiAgICogQHBhcmFtIG1vIE1hbmFnZWQgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWFuYWdlZCBvYmplY3QgaXMgYSBkZXZpY2UuXG4gICAqL1xuICBpc0RldmljZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gISFtby5jOHlfSXNEZXZpY2U7XG4gIH1cblxuICBwcml2YXRlIGdldEFzc2V0Q3VzdG9tSWNvbihtb1R5cGU6IHN0cmluZywgb3BlbjogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hc3NldFR5cGVzU2VydmljZS5nZXRJY29uKG1vVHlwZSwgb3Blbik7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRJY29uKG1vVHlwZTogTW9UeXBlcyk6IEljb24ge1xuICAgIHJldHVybiB0aGlzLmljb25zW21vVHlwZV07XG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZU1vVHlwZShtbzogSU1hbmFnZWRPYmplY3QpOiBNb1R5cGVzIHtcbiAgICBpZiAodGhpcy5pc0Fzc2V0KG1vKSkge1xuICAgICAgcmV0dXJuICdhc3NldCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEeW5hbWljR3JvdXAobW8pKSB7XG4gICAgICByZXR1cm4gJ2R5bmFtaWNHcm91cCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEYXRhQnJva2VyQWN0aXZlKG1vKSkge1xuICAgICAgcmV0dXJuICdicm9rZXJTb3VyY2UnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRGF0YUJyb2tlcihtbykpIHtcbiAgICAgIHJldHVybiAnYnJva2VyU291cmNlSW5hY3RpdmUnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzR3JvdXAobW8pKSB7XG4gICAgICByZXR1cm4gJ2dyb3VwJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ290aGVyJztcbiAgfVxufVxuIl19
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2dyb3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFOUMsTUFBTSxRQUFRLEdBQUc7SUFDZixPQUFPO0lBQ1AsY0FBYztJQUNkLGNBQWM7SUFDZCxzQkFBc0I7SUFDdEIsT0FBTztJQUNQLE9BQU87Q0FDQyxDQUFDO0FBV1gsTUFBTSxPQUFPLFlBQVk7SUF5QnZCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBeEIvQyxVQUFLLEdBQVU7WUFDdEIsb0JBQW9CLEVBQUU7Z0JBQ3BCLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLFFBQVEsRUFBRSwyQkFBMkI7YUFDdEM7WUFDRCxZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsUUFBUSxFQUFFLHVCQUF1QjthQUNsQztZQUNELEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsV0FBVztnQkFDakIsUUFBUSxFQUFFLGdCQUFnQjthQUMzQjtZQUNELFlBQVksRUFBRTtnQkFDWixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixRQUFRLEVBQUUsc0JBQXNCO2FBQ2pDO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRSxVQUFVO2dCQUNoQixTQUFTLEVBQUUsZUFBZTthQUMzQjtTQUNGLENBQUM7UUFDRixxQ0FBZ0MsR0FBRyxJQUFJ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QUFDLEVBQUU7WUFDL0IsT0FBTyxjQUFjLENBQUM7U0FDdkI7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDekIsT0FBTyxzQkFBc0IsQ0FBQztTQUMvQjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNwQixPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O3lHQW5KVSxZQUFZOzZHQUFaLFlBQVksY0FGWCxNQUFNO0FBcUNsQjtJQURDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7MkNBUXZCOzJGQTFDVSxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjt3R0FvQ08sT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQXNzZXRUeXBlc1NlcnZpY2UgfSBmcm9tICcuLi9hc3NldC10eXBlcy9hc3NldC10eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb3VwRnJhZ21lbnQgfSBmcm9tICcuL2dyb3VwLWZyYWdtZW50Lm1vZGVsJztcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tICcuL21lbW9pemUuZGVjb3JhdG9yJztcblxuY29uc3QgTU9fVFlQRVMgPSBbXG4gICdhc3NldCcsXG4gICdkeW5hbWljR3JvdXAnLFxuICAnYnJva2VyU291cmNlJyxcbiAgJ2Jyb2tlclNvdXJjZUluYWN0aXZlJyxcbiAgJ2dyb3VwJyxcbiAgJ290aGVyJ1xuXSBhcyBjb25zdDtcblxudHlwZSBNb1R5cGVzID0gdHlwZW9mIE1PX1RZUEVTW251bWJlcl07XG5cbnR5cGUgSWNvbiA9IFBhcnRpYWw8eyBpY29uOiBzdHJpbmc7IGljb25PcGVuPzogc3RyaW5nOyBpY29uQ2xhc3M/OiBzdHJpbmcgfT47XG5cbnR5cGUgSWNvbnMgPSBQYXJ0aWFsPFJlY29yZDxNb1R5cGVzLCBJY29uPj47XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdyb3VwU2VydmljZSB7XG4gIHJlYWRvbmx5IGljb25zOiBJY29ucyA9IHtcbiAgICBicm9rZXJTb3VyY2VJbmFjdGl2ZToge1xuICAgICAgaWNvbjogJ2M4eS1ncm91cC1yZW1vdGUtaW5hY3RpdmUnLFxuICAgICAgaWNvbk9wZW46ICdjOHktZ3JvdXAtcmVtb3RlLWluYWN0aXZlJ1xuICAgIH0sXG4gICAgYnJva2VyU291cmNlOiB7XG4gICAgICBpY29uOiAnYzh5LWdyb3VwLXJlbW90ZScsXG4gICAgICBpY29uT3BlbjogJ2M4eS1ncm91cC1yZW1vdGUtb3BlbidcbiAgICB9LFxuICAgIGdyb3VwOiB7XG4gICAgICBpY29uOiAnYzh5LWdyb3VwJyxcbiAgICAgIGljb25PcGVuOiAnYzh5LWdyb3VwLW9wZW4nXG4gICAgfSxcbiAgICBkeW5hbWljR3JvdXA6IHtcbiAgICAgIGljb246ICdjOHktZ3JvdXAtc21hcnQnLFxuICAgICAgaWNvbk9wZW46ICdjOHktZ3JvdXAtc21hcnQtb3BlbidcbiAgICB9LFxuICAgIG90aGVyOiB7XG4gICAgICBpY29uOiAnZXhjaGFuZ2UnLFxuICAgICAgaWNvbkNsYXNzOiAnc3RhdHVzVW5rbm93bidcbiAgICB9XG4gIH07XG4gIGRhdGFCcm9rZXJTb3VyY2VGcmFnbWVudEluYWN0aXZlID0gYF8ke0dyb3VwRnJhZ21lbnQuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50fWA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhc3NldFR5cGVzU2VydmljZTogQXNzZXRUeXBlc1NlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuIGljb24gYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgbWFuYWdlZCBvYmplY3QuXG4gICAqIEl0IHRha2VzIGludG8gYWNjb3VudCBmYWN0b3JzIHN1Y2ggYXMgdHlwZSwgYW5kIHNwZWNpZmljIGZyYWdtZW50cy5cbiAgICogQHBhcmFtIG1vIE1hbmFnZWQgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEBwYXJhbSBvcGVuIERldGVybWluZXMgd2hldGhlciB0aGUgbWV0aG9kIHNob3VsZCByZXR1cm4gYW4gYWx0ZXJuYXRpdmUgaWNvbiBzaG93aW5nIHRoZSBvcGVuIHN0YXRlLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGFuIGljb24uXG4gICAqL1xuICBAbWVtb2l6ZShwcm9wZXJ0eSgnaWQnKSlcbiAgYXN5bmMgZ2V0SWNvbihtbzogSU1hbmFnZWRPYmplY3QsIG9wZW4gPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgZ2VuZXJpY01vVHlwZSA9IHRoaXMuZGV0ZXJtaW5lTW9UeXBlKG1vKTtcbiAgICBpZiAoZ2VuZXJpY01vVHlwZSA9PT0gJ2Fzc2V0Jykge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0QXNzZXRDdXN0b21JY29uKG1vLnR5cGUsIG9wZW4pO1xuICAgIH1cbiAgICBjb25zdCB0eXBlSWNvbnMgPSB0aGlzLmdldERlZmF1bHRJY29uKGdlbmVyaWNNb1R5cGUpO1xuICAgIHJldHVybiAob3BlbiAmJiB0eXBlSWNvbnMuaWNvbk9wZW4pIHx8IHR5cGVJY29ucy5pY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYSBncm91cC5cbiAgICogQHBhcmFtIG1vIE1hbmFnZWQgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWFuYWdlZCBvYmplY3QgaXMgYSBncm91cC5cbiAgICovXG4gIGlzR3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhbW9bR3JvdXBGcmFnbWVudC5ncm91cEZyYWdtZW50VHlwZV0gfHwgbW8udHlwZSA9PT0gR3JvdXBGcmFnbWVudC5ncm91cFR5cGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBtYW5hZ2VkIG9iamVjdCBpcyBhIGR5bmFtaWMgZ3JvdXAuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZHluYW1pYyBncm91cC5cbiAgICovXG4gIGlzRHluYW1pY0dyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIW1vW0dyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwRnJhZ21lbnRdIHx8IG1vLnR5cGUgPT09IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIuXG4gICAqL1xuICBpc0RhdGFCcm9rZXIobW86IElNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhbW9bR3JvdXBGcmFnbWVudC5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRdIHx8ICEhbW9bdGhpcy5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRJbmFjdGl2ZV1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYSBkYXRhIGJyb2tlciBhY3RpdmUuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGF0YSBicm9rZXIgYWN0aXZlLlxuICAgKi9cbiAgaXNEYXRhQnJva2VyQWN0aXZlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiAoXG4gICAgICAhIW1vW0dyb3VwRnJhZ21lbnQuZGF0YUJyb2tlclNvdXJjZUZyYWdtZW50XSAmJiAhbW9bdGhpcy5kYXRhQnJva2VyU291cmNlRnJhZ21lbnRJbmFjdGl2ZV1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYW4gYXNzZXQuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIGFuIGFzc2V0LlxuICAgKi9cbiAgaXNBc3NldChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gISFtby5jOHlfSXNBc3NldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgb2JqZWN0IGJlbG9uZ3MgdG8gYW55IHR5cGUgb2YgZ3JvdXAuXG4gICAqIFR5cGVzIG9mIGdyb3VwczogZ3JvdXAsIGR5bmFtaWMgZ3JvdXAsIGRhdGEgYnJva2VyLCBkYXRhIGJyb2tlciBhY3RpdmUuXG4gICAqIEBwYXJhbSBtbyBNYW5hZ2VkIG9iamVjdCB0byBiZSBjaGVja2VkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hbmFnZWQgb2JqZWN0IGJlbG9uZ3MgdG8gdGhlIGdyb3VwIGNhdGVnb3J5LlxuICAgKi9cbiAgaXNBbnlHcm91cChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0dyb3VwKG1vKSB8fFxuICAgICAgdGhpcy5pc0R5bmFtaWNHcm91cChtbykgfHxcbiAgICAgIHRoaXMuaXNEYXRhQnJva2VyKG1vKSB8fFxuICAgICAgdGhpcy5pc0RhdGFCcm9rZXJBY3RpdmUobW8pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGV2aWNlLlxuICAgKiBAcGFyYW0gbW8gTWFuYWdlZCBvYmplY3QgdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBhIGRldmljZS5cbiAgICovXG4gIGlzRGV2aWNlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiAhIW1vLmM4eV9Jc0RldmljZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXNzZXRDdXN0b21JY29uKG1vVHlwZTogc3RyaW5nLCBvcGVuID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmFzc2V0VHlwZXNTZXJ2aWNlLmdldEljb24obW9UeXBlLCBvcGVuKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEljb24obW9UeXBlOiBNb1R5cGVzKTogSWNvbiB7XG4gICAgcmV0dXJuIHRoaXMuaWNvbnNbbW9UeXBlXTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lTW9UeXBlKG1vOiBJTWFuYWdlZE9iamVjdCk6IE1vVHlwZXMge1xuICAgIGlmICh0aGlzLmlzQXNzZXQobW8pKSB7XG4gICAgICByZXR1cm4gJ2Fzc2V0JztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0R5bmFtaWNHcm91cChtbykpIHtcbiAgICAgIHJldHVybiAnZHluYW1pY0dyb3VwJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0RhdGFCcm9rZXJBY3RpdmUobW8pKSB7XG4gICAgICByZXR1cm4gJ2Jyb2tlclNvdXJjZSc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEYXRhQnJva2VyKG1vKSkge1xuICAgICAgcmV0dXJuICdicm9rZXJTb3VyY2VJbmFjdGl2ZSc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHcm91cChtbykpIHtcbiAgICAgIHJldHVybiAnZ3JvdXAnO1xuICAgIH1cblxuICAgIHJldHVybiAnb3RoZXInO1xuICB9XG59XG4iXX0=
|
|
@@ -199,10 +199,10 @@ export class SearchInputComponent {
|
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
201
|
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 });
|
|
202
|
-
SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SearchInputComponent, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", 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 dropdown\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n *ngIf=\"mode === 'search'\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n dropdownToggle\n type=\"button\"\n [title]=\"'Search' | translate\"\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=\"{{ 'Search for groups or assets\u2026' | translate }}\"\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\" class=\"p-l-16 p-r-16\">\n <div class=\"d-flex\" *ngIf=\"mode === 'search'\">\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 type=\"button\"\n class=\"btn btn-default\"\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 type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default\"\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=\"term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\"\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) ? recentlyRegisteredResults$ : { 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\">\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-li *ngIf=\"noMatch\" class=\"p-16 c8y-empty-state\" data-cy=\"search-input--empty-state\" [selectable]=\"false\">\n <c8y-li-icon [icon]=\"'search'\"></c8y-li-icon>\n <p><strong translate>No match found.</strong></p>\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-li>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\" class=\"p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\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 title=\"{{ 'Go to the asset data table' | translate }}\"\n data-cy=\"search-input--asset-table-btn\"\n type=\"button\"\n class=\"m-l-16 btn btn-default btn-sm\"\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: "directive", type: i7.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i8.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i10.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i11.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: i12.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i13.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i14.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i15.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i16.ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: i17.GetGroupIconPipe, name: "getGroupIcon" }] });
|
|
202
|
+
SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SearchInputComponent, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", 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 dropdown\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n *ngIf=\"mode === 'search'\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\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=\"{{ 'Search for groups or assets\u2026' | translate }}\"\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\" class=\"p-l-16 p-r-16\">\n <div class=\"d-flex\" *ngIf=\"mode === 'search'\">\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=\"term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\"\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) ? recentlyRegisteredResults$ : { 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\">\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-li *ngIf=\"noMatch\" class=\"p-16 c8y-empty-state\" data-cy=\"search-input--empty-state\" [selectable]=\"false\">\n <c8y-li-icon [icon]=\"'search'\"></c8y-li-icon>\n <p><strong translate>No match found.</strong></p>\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-li>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\" class=\"p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\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 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: "directive", type: i7.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i8.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i10.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i11.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: i12.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i13.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i14.DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: i15.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i16.ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: i17.GetGroupIconPipe, name: "getGroupIcon" }] });
|
|
203
203
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
204
204
|
type: Component,
|
|
205
|
-
args: [{ selector: 'c8y-search-input', template: "<div\n class=\"dropdown\"\n dropdown\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n *ngIf=\"mode === 'search'\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n
|
|
205
|
+
args: [{ selector: 'c8y-search-input', template: "<div\n class=\"dropdown\"\n dropdown\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n *ngIf=\"mode === 'search'\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\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=\"{{ 'Search for groups or assets\u2026' | translate }}\"\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\" class=\"p-l-16 p-r-16\">\n <div class=\"d-flex\" *ngIf=\"mode === 'search'\">\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=\"term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\"\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) ? recentlyRegisteredResults$ : { 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\">\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-li *ngIf=\"noMatch\" class=\"p-16 c8y-empty-state\" data-cy=\"search-input--empty-state\" [selectable]=\"false\">\n <c8y-li-icon [icon]=\"'search'\"></c8y-li-icon>\n <p><strong translate>No match found.</strong></p>\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-li>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\" class=\"p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\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 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" }]
|
|
206
206
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.InventoryService }, { type: i3.InventorySearchService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { mode: [{
|
|
207
207
|
type: Input
|
|
208
208
|
}], enableCustomTemplatePlaceholder: [{
|
|
@@ -233,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
233
233
|
type: HostListener,
|
|
234
234
|
args: ['document:keydown', ['$event']]
|
|
235
235
|
}] } });
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VhcmNoL3NlYXJjaC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlYXJjaC9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFrQixnQkFBZ0IsRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDcEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQWlCLE1BQU0sTUFBTSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTXBFLE1BQU0sT0FBTyxvQkFBb0I7SUFtRS9CLFlBQ1UsTUFBYyxFQUNkLFNBQTJCLEVBQzNCLHNCQUE4QyxFQUM5QyxFQUFxQjtRQUhyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtR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LE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDOztpSEF4T1Usb0JBQW9CO3FHQUFwQixvQkFBb0IsbWRBNkRwQixrQkFBa0IsNklDbkYvQixnMlFBeU9BOzJGRG5OYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCO2lNQUs1QixJQUFJO3NCQURILEtBQUs7Z0JBTUcsK0JBQStCO3NCQUF2QyxLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0YsZUFBZTtzQkFEbEIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxNQUFNO2dCQUlQLE1BQU07c0JBREwsTUFBTTtnQkFJUCxLQUFLO3NCQURKLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNO2dCQTBCQyxTQUFTO3NCQURoQixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJeEMsUUFBUTtzQkFEZixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkF5Q0EsZ0JBQWdCO3NCQUE3RCxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QsIFBhZ2luZyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEJzRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IGRlZmVyLCBlbXB0eSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBVbmFyeUZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWFuYWdlZE9iamVjdFR5cGUgfSBmcm9tICcuLi9jb21tb24vbWFuYWdlZC1vYmplY3QtdHlwZSc7XG5pbXBvcnQgeyBUeXBlYWhlYWRDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QvdHlwZWFoZWFkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi9pbnZlbnRvcnktc2VhcmNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc2VhcmNoLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoSW5wdXRDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBtb2RlOiAnc2VhcmNoJyB8ICdzZWxlY3QnID0gJ3NlYXJjaCc7XG5cbiAgLyoqXG4gICAqIFVubG9ja3MgdGhlIGFiaWxpdHkgdG8gcGxhY2UgYSBjdXN0b20gdGVtcGxhdGUgdW5kZXIgdGhlIHNlYXJjaCBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZUN1c3RvbVRlbXBsYXRlUGxhY2Vob2xkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRXZlbnQsIHdoaWNoIGlzIHVzZWQgdG8gc2V0IGEgbmV3IGV4dGVybmFsIHRlcm0uIFBhc3NpbmcgbnVsbCB3aWxsIHJlLWV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIEJFLlxuICAgKiBUaGlzIGFsbG93cyBuZXcgZmlsdGVycyB0byBiZSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGVybS5cbiAgICovXG4gIEBJbnB1dCgpIGV4dGVybmFsVGVybTogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gIC8qKlxuICAgKiBBIGN1c3RvbSBxdWVyeSBzZXR0ZXIgdXNlZCB0byBvdmVycmlkZSB0aGUgc3RhbmRhcmQgcXVlcnkuIEluIG9yZGVyIHRvIG9idGFpbiBkYXRhLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGN1c3RvbURhdGFRdWVyeShxdWVyeTogVW5hcnlGdW5jdGlvbjxzdHJpbmcsIE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+Pj4pIHtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIHRoaXMuY3VzdG9tUXVlcnkgPSBxdWVyeTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgY29udGFpbmVyOiAnJyB8ICdib2R5JyA9ICcnO1xuXG4gIEBJbnB1dCgpIGdyb3Vwc09ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgZmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICByZXNldCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElNYW5hZ2VkT2JqZWN0PigpO1xuXG4gIGRldmljZVR5cGU6IHR5cGVvZiBNYW5hZ2VkT2JqZWN0VHlwZSA9IE1hbmFnZWRPYmplY3RUeXBlO1xuICB0ZXJtID0gJyc7XG4gIHNlbGVjdGVkO1xuXG4gIGN1c3RvbVF1ZXJ5OiAodGV4dDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlc3VsdHMkOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlY2VudFNlYXJjaFJlc3VsdHM6IElNYW5hZ2VkT2JqZWN0W10gPSBbXTtcbiAgcmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+PjtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIG5vTWF0Y2ggPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFJFQ0VOVF9TRUFSQ0hfU1RPUkFHRV9LRVkgPSAncmVjZW50X3NlYXJjaF92aWV3JztcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfUkVDRU5UX1NFQVJDSF9SRVNVTFRTID0gNTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0ZJTFRFUjogb2JqZWN0ID0ge1xuICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgIHBhZ2VTaXplOiA1LFxuICAgIHdpdGhDaGlsZHJlbjogZmFsc2VcbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VOVEVSID0gJ0VudGVyJztcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VTQyA9ICdFc2NhcGUnO1xuICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGQoVHlwZWFoZWFkQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSB0eXBlYWhlYWQ6IFR5cGVhaGVhZENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIGRyb3Bkb3duOiBCc0Ryb3Bkb3duRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZWFyY2hTZXJ2aWNlOiBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCByZWNlbnRTZWFyY2hJZHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSkpO1xuICAgIGlmIChyZWNlbnRTZWFyY2hJZHMgJiYgcmVjZW50U2VhcmNoSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkubGlzdCh7IGlkczogcmVjZW50U2VhcmNoSWRzLmpvaW4oJywnKSB9KTtcbiAgICAgIHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cyA9IHRoaXMuZ3JvdXBzT25seVxuICAgICAgICA/IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5maWx0ZXJPbmx5R3JvdXBzKGRhdGEpXG4gICAgICAgIDogZGF0YTtcbiAgICAgIHRoaXMucmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQgPSBkZWZlcigoKSA9PlxuICAgICAgICB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgICAgICBxOiAnJG9yZGVyYnk9Y3JlYXRpb25UaW1lIGRlc2MnLFxuICAgICAgICAgIC4uLnRoaXMuREVGQVVMVF9GSUxURVJcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZU9uU2VhcmNoKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHRlcm5hbFRlcm0pIHtcbiAgICAgIHRoaXMuZXh0ZXJuYWxUZXJtLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSh0ZXJtID0+IHtcbiAgICAgICAgaWYgKHRlcm0gPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5lbWl0KHRoaXMudGVybSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQodGVybSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMuS0VZQ09ERV9FU0MpIHtcbiAgICAgIHRoaXMuaGlkZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ2hhbmdlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIC8vIG5lZWRzIHRvIHJlcXVlc3QgYW4gYW5pbWF0aW9uIGZyYW1lIGFzXG4gICAgICAvLyBvdGhlcndpc2UgdGhlIHR5cGVhaGVhZCBpcyB1bmRlZmluZWRcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlT25TZWFyY2goKTtcbiAgICAgICAgdGhpcy50eXBlYWhlYWQuZHJvcGRvd24uc2hvdygpO1xuICAgICAgICB0aGlzLnR5cGVhaGVhZC5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9wZW4oZXZlbnQ6IEV2ZW50LCBtbzogSU1hbmFnZWRPYmplY3QsIHRlcm0/KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgaXNBbHJlYWR5UmVjZW50ID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IG1vLmlkKTtcbiAgICBpZiAoIWlzQWxyZWFkeVJlY2VudCkge1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnVuc2hpZnQobW8pO1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnNsaWNlKDAsIHRoaXMuTUFYX1JFQ0VOVF9TRUFSQ0hfUkVTVUxUUyk7XG4gICAgfVxuICAgIGNvbnN0IHJlY2VudFNlYXJjaElkcyA9IHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cy5tYXAoKHsgaWQgfSkgPT4gaWQpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkocmVjZW50U2VhcmNoSWRzKSk7XG4gICAgaWYgKHRlcm0pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBtbztcbiAgICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgfVxuICAgIHRoaXMub25DbGljay5lbWl0KG1vKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25SZXNldChzdGF0dXM6IHsgaWNvbjogc3RyaW5nOyAkZXZlbnQ6IE1vdXNlRXZlbnQgfSkge1xuICAgIHN0YXR1cy4kZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZXNldC5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xuICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQoJycpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50eXBlYWhlYWQuc2VhcmNoQ29udHJvbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5LRVlDT0RFX0VOVEVSKSB7XG4gICAgICAvLyBlbnRlciBoaXQgY2FuIGJlIGZhc3RlciB0aGVuIHR5cGVhaGVhZCBkZWJvdW5jZSxcbiAgICAgIC8vIHRoZXJlZm9yZSB3ZSB0YWtlIHRoZSB0ZXJtIGZyb20gdGhlIERPTSBlbGVtZW50XG4gICAgICAvLyBpdHNlbGY6XG4gICAgICBjb25zdCBzZWFyY2hUZXJtID0gKGV2ZW50LnRhcmdldCBhcyBhbnkpLnZhbHVlO1xuICAgICAgdGhpcy5vblNlYXJjaChzZWFyY2hUZXJtKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2g6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoLmVtaXQoc2VhcmNoKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25GaWx0ZXIoc2VhcmNoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlci5lbWl0KHNlYXJjaCk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG9uT3BlbkFzc2V0VGFibGUoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2Fzc2V0c2VhcmNoJyk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm9uRGVzdHJveSQpIHtcbiAgICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVEcm9wZG93bigpIHtcbiAgICBpZiAodGhpcy5kcm9wZG93bikge1xuICAgICAgdGhpcy5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZWFoZWFkICYmIHRoaXMudHlwZWFoZWFkLmRyb3Bkb3duKSB7XG4gICAgICB0aGlzLnR5cGVhaGVhZC5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVPblNlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMucmVzdWx0cyQpIHtcbiAgICAgIHRoaXMucmVzdWx0cyQgPSB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5waXBlKFxuICAgICAgICB0YXAodGVybSA9PiB0aGlzLm9uVHlwaW5nU3RhcnRlZCh0ZXJtKSksXG4gICAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMubWVyZ2VSZXF1ZXN0KHRlcm0pKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlUmVxdWVzdCh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4ge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgIG9mKHsgZGF0YTogW10gfSBhcyBJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgdGhpcy5oYW5kbGVRdWVyeSh0ZXJtKS5waXBlKHRhcCgoeyBkYXRhLCBwYWdpbmcgfSkgPT4gdGhpcy5vbkxvYWRpbmdEb25lKGRhdGEsIHBhZ2luZykpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVF1ZXJ5KHRlcm06IHN0cmluZykge1xuICAgIGlmICghdGVybSkge1xuICAgICAgcmV0dXJuIGVtcHR5KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmN1c3RvbVF1ZXJ5KSB7XG4gICAgICByZXR1cm4gZGVmZXIoKCkgPT4gdGhpcy5jdXN0b21RdWVyeSh0ZXJtKSk7XG4gICAgfVxuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgdGhpcy5ncm91cHNPbmx5XG4gICAgICAgID8gdGhpcy5pbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLnNlYXJjaEdyb3Vwcyh0ZXJtKVxuICAgICAgICA6IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5zZWFyY2godGVybSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkxvYWRpbmdEb25lKGRhdGE6IElNYW5hZ2VkT2JqZWN0W10sIHBhZ2luZzogUGFnaW5nPElNYW5hZ2VkT2JqZWN0Pikge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5ub01hdGNoID0gcGFnaW5nICYmIHBhZ2luZy5uZXh0UGFnZSA9PT0gbnVsbCAmJiBkYXRhLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgb25UeXBpbmdTdGFydGVkKHRlcm0pIHtcbiAgICB0aGlzLm5vTWF0Y2ggPSBmYWxzZTtcbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdGVybS5sZW5ndGggPiAwO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZHJvcGRvd25cIlxuICBkcm9wZG93blxuICAjc2VhcmNoRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgKGlzT3BlbkNoYW5nZSk9XCJvbk9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gICpuZ0lmPVwibW9kZSA9PT0gJ3NlYXJjaCdcIlxuICBbY2RrVHJhcEZvY3VzXT1cInNlYXJjaERyb3Bkb3duLmlzT3BlblwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cIm1haW4taGVhZGVyLWJ1dHRvbiBkcm9wZG93bi10b2dnbGUgYzh5LWRyb3Bkb3duXCJcbiAgICBkcm9wZG93blRvZ2dsZVxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFt0aXRsZV09XCInU2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLWJ0blwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwic2VhcmNoXCIgY2xhc3M9XCJpY29uLTJ4XCI+PC9pPlxuICA8L2J1dHRvbj5cblxuICA8ZGl2XG4gICAgaWQ9XCJzZWFyY2hEcm9wZG93blwiXG4gICAgKmRyb3Bkb3duTWVudVxuICAgIGNsYXNzPVwic2VhcmNoLWhlYWRlci1tZW51IGRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwic2VhcmNoLWhlYWRlci1pbmxpbmVcIiAqbmdJZj1cIm1vZGUgPT09ICdzZWxlY3QnXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZm9ybT5cbiAgPGZvcm0gW25nQ2xhc3NdPVwieyAnYzh5LXNlYXJjaC1mb3JtJzogbW9kZSA9PT0gJ3NlYXJjaCcgfVwiIG5vdmFsaWRhdGUgI3NlYXJjaEZvcm09XCJuZ0Zvcm1cIj5cbiAgICA8Yzh5LXR5cGVhaGVhZFxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdTZWFyY2ggZm9yIGdyb3VwcyBvciBhc3NldHPigKYnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChrZXlkb3duKT1cImtleURvd24oJGV2ZW50KVwiXG4gICAgICAob25JY29uQ2xpY2spPVwib25SZXNldCgkZXZlbnQpXCJcbiAgICAgIFtpY29uXT1cInRlcm0gPyAndGltZXMnIDogJ3NlYXJjaCdcIlxuICAgICAgW2FsbG93RnJlZUVudHJpZXNdPVwiZmFsc2VcIlxuICAgICAgW2NvbnRhaW5lcl09XCJjb250YWluZXJcIlxuICAgICAgbmFtZT1cInNlbGVjdGVkXCJcbiAgICAgIHRpdGxlPVwiU2VhcmNoXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiZW5hYmxlQ3VzdG9tVGVtcGxhdGVQbGFjZWhvbGRlciAmJiBtb2RlID09PSAnc2VhcmNoJ1wiXG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0gcC1sLTI0IHAtci0yNCBwLWItOCBzZXBhcmF0b3ItYm90dG9tIHN0aWNreS10b3AgcC10LTRcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBmaWx0ZXIgYnV0dG9ucyAtLT5cbiAgICAgIDxjOHktbGkgKm5nSWY9XCJ0ZXJtLmxlbmd0aCAhPT0gMFwiIGNsYXNzPVwicC1sLTE2IHAtci0xNlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJtb2RlID09PSAnc2VhcmNoJ1wiPlxuICAgICAgICAgIDxwIGNsYXNzPVwibS1yLTQgdGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAgPGVtIHRyYW5zbGF0ZT5TZWFyY2hpbmcgYnkgZXhhY3QgbWF0Y2guIENsaWNrIGZvciBvdGhlciBzZWFyY2ggb3B0aW9uczo8L2VtPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC1zbVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTdGFydHMgd2l0aCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1zZWFyY2gtc3RhcnRzLXdpdGhcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25GaWx0ZXIodGVybSArICcqJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnU3RhcnRzIHdpdGgnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQ29udGFpbnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLWNvbnRhaW5zXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyKCcqJyArIHRlcm0gKyAnKicpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0NvbnRhaW5zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0VuZHMgd2l0aCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1zZWFyY2gtZW5kcy13aXRoXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyKCcqJyArIHRlcm0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0VuZHMgd2l0aCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYzh5LWxpPlxuXG4gICAgICA8IS0tIFJlY2VudCBzZWFyY2ggLS0+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgICpuZ0lmPVwidGVybS5sZW5ndGggPT09IDAgJiYgcmVjZW50U2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwXCJcbiAgICAgICAgW3NlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICBjbGFzcz1cInAtbC0yNCBwLXItMjRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2tcIj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+UmVjZW50IHNlYXJjaCB2aWV3czwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgKm5nRm9yPVwibGV0IHJlc3VsdCBvZiB0ZXJtLmxlbmd0aCA9PT0gMCA/IHJlY2VudFNlYXJjaFJlc3VsdHMgOiBbXVwiXG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWxpbmsgbS1sLTE2IG0tci0xNlwiXG4gICAgICAgIChjbGljayk9XCJvcGVuKCRldmVudCwgcmVzdWx0LCByZXN1bHQubmFtZSlcIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWxpLWljb24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdCB8IHNob3VsZFNob3dNbzogZGV2aWNlVHlwZS5ERVZJQ0U7IGVsc2UgZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkZXZpY2Utc3RhdHVzIFttb109XCJyZXN1bHRcIj48L2RldmljZS1zdGF0dXM+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNncm91cD5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cInJlc3VsdCB8IGdldEdyb3VwSWNvblwiIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3JcIj48L2k+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAge3sgcmVzdWx0Lm5hbWUgfHwgJy0tJyB9fVxuICAgICAgPC9jOHktbGk+XG5cbiAgICAgIDwhLS0gUmVjZW50bHkgcmVnaXN0ZXJlZCBkZXZpY2VzIC0tPlxuICAgICAgPGM4eS1saVxuICAgICAgICAqbmdJZj1cInRlcm0ubGVuZ3RoID09PSAwICYmIChyZWNlbnRseVJlZ2lzdGVyZWRSZXN1bHRzJCB8IGFzeW5jKT8uZGF0YT8ubGVuZ3RoID4gMCAmJiAhZ3JvdXBzT25seVwiXG4gICAgICAgIGNsYXNzPVwicC1sLTI0IHAtci0yNFwiXG4gICAgICAgIFtzZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlJlY2VudGx5IHJlZ2lzdGVyZWQgZGV2aWNlczwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgKmM4eUZvcj1cIlxuICAgICAgICAgIGxldCByZXN1bHQgb2YgKHRlcm0ubGVuZ3RoID09PSAwICYmICFncm91cHNPbmx5KSA/IHJlY2VudGx5UmVnaXN0ZXJlZFJlc3VsdHMkIDogeyBkYXRhOiBbXSB9O1xuICAgICAgICAgIGxvYWRNb3JlOiAnbm9uZSc7XG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWxpbmsgbS1sLTE2IG0tci0xNlwiXG4gICAgICAgIChjbGljayk9XCJvcGVuKCRldmVudCwgcmVzdWx0LCByZXN1bHQubmFtZSlcIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWxpLWljb24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdCB8IHNob3VsZFNob3dNbzogZGV2aWNlVHlwZS5ERVZJQ0U7IGVsc2UgZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkZXZpY2Utc3RhdHVzIFttb109XCJyZXN1bHRcIj48L2RldmljZS1zdGF0dXM+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNncm91cD5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cInJlc3VsdCB8IGdldEdyb3VwSWNvblwiIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3JcIj48L2k+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAge3sgcmVzdWx0Lm5hbWUgfHwgJy0tJyB9fVxuICAgICAgPC9jOHktbGk+XG5cbiAgICAgIDwhLS0gU2VhcmNoIHJlc3VsdHMgLS0+XG4gICAgICA8Yzh5LWxpICpuZ0lmPVwidGVybS5sZW5ndGggIT09IDBcIiBjbGFzcz1cInAtbC0yNCBwLXItMjRcIiBbc2VsZWN0YWJsZV09XCJmYWxzZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2tcIj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+U2VhcmNoIHJlc3VsdHM8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgICpjOHlGb3I9XCJcbiAgICAgICAgICBsZXQgcmVzdWx0IG9mIHJlc3VsdHMkO1xuICAgICAgICAgIGxvYWRNb3JlOiAnYXV0byc7XG4gICAgICAgICAgbm90Rm91bmQ6IG5vdEZvdW5kVGVtcGxhdGU7XG4gICAgICAgICAgbG9hZGluZ1RlbXBsYXRlOiBsb2FkaW5nO1xuICAgICAgICAgIGxvYWROZXh0TGFiZWw6ICdGaW5kIG1vcmXigKYnXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWxpbmsgbS1sLTE2IG0tci0xNlwiXG4gICAgICAgIChjbGljayk9XCJvcGVuKCRldmVudCwgcmVzdWx0LCByZXN1bHQubmFtZSlcIlxuICAgICAgICBbdGl0bGVdPVwicmVzdWx0Lm5hbWVcIlxuICAgICAgICBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1zZWFyY2gtcmVzdWx0c1wiXG4gICAgICA+XG4gICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0IHwgc2hvdWxkU2hvd01vOiBkZXZpY2VUeXBlLkRFVklDRTsgZWxzZSBncm91cFwiPlxuICAgICAgICAgICAgPGRldmljZS1zdGF0dXMgW21vXT1cInJlc3VsdFwiPjwvZGV2aWNlLXN0YXR1cz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2dyb3VwPlxuICAgICAgICAgICAgPGkgW2M4eUljb25dPVwicmVzdWx0IHwgZ2V0R3JvdXBJY29uXCIgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiPjwvaT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICB7eyByZXN1bHQubmFtZSB8fCAnLS0nIH19XG4gICAgICA8L2M4eS1saT5cblxuICAgICAgPCEtLSBObyBzZWFyY2ggcmVzdWx0cyBmb3VuZCBlbnRyeSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm90Rm91bmRUZW1wbGF0ZT5cbiAgICAgICAgPGM4eS1saSAqbmdJZj1cIm5vTWF0Y2hcIiBjbGFzcz1cInAtMTYgYzh5LWVtcHR5LXN0YXRlXCIgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tZW1wdHktc3RhdGVcIiBbc2VsZWN0YWJsZV09XCJmYWxzZVwiPlxuICAgICAgICAgIDxjOHktbGktaWNvbiBbaWNvbl09XCInc2VhcmNoJ1wiPjwvYzh5LWxpLWljb24+XG4gICAgICAgICAgPHA+PHN0cm9uZyB0cmFuc2xhdGU+Tm8gbWF0Y2ggZm91bmQuPC9zdHJvbmc+PC9wPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGUgKm5nSWY9XCJtb2RlID09PSAnc2VhcmNoJ1wiPlxuICAgICAgICAgICAgVHJ5IHRvIGZpbHRlciBvciBvcGVuIHRoZSBhc3NldCBncmlkIHRvIHNob3cgYWxsIGRldmljZXMgYW5kIGdyb3Vwcy5cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGUgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0J1wiPlRyeSB0byByZXBocmFzZSB5b3VyIHNlYXJjaCB3b3JkLjwvc21hbGw+XG4gICAgICAgIDwvYzh5LWxpPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBsb2FkaW5nIGJhciBmaXJzdCBlbnRyaWVzIC0tPlxuICAgICAgPGM4eS1saSAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwicC10LTMyIHAtYi0wXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIiBzdHlsZT1cInJpZ2h0OiAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3QxXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3QyXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3QzXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3Q0XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3Q1XCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG5cbiAgICAgIDwhLS0gbG9hZGluZyBiYXIgZm9yIGxvYWRpbmcgbW9yZSBlbnRyaWVzIChpbnZlbnRvcnkgcm9sZXMpIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgICAgICA8Yzh5LWxpIGNsYXNzPVwidGV4dC1jZW50ZXIgcC10LTMyIHAtYi0wXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiIHN0eWxlPVwicmlnaHQ6IDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWN0MVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3QyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDNcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWN0NFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3Q1XCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYzh5LWxpPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBtb3JlIGZpbHRlciBwb3NzaWJpbGl0aWVzIC0tPlxuICAgICAgPGM4eS1saVxuICAgICAgICBjbGFzcz1cIm0tdC0yNCBiZy1sZXZlbC0yIHAtdC0xNiBwLWItMTYgcC1sLTI0IHAtci0yNCBzdGlja3ktYm90dG9tXCJcbiAgICAgICAgW3NlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAqbmdJZj1cIm1vZGUgPT09ICdzZWFyY2gnXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImluZm8tY2lyY2xlXCIgY2xhc3M9XCJ0ZXh0LWluZm8gbS1yLTRcIj48L2k+XG4gICAgICAgICAgPHAgdHJhbnNsYXRlIGNsYXNzPVwibS1yLThcIj5OZWVkIG1vcmUgZmlsdGVyIHBvc3NpYmlsaXRpZXM/PC9wPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0dvIHRvIHRoZSBhc3NldCBkYXRhIHRhYmxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1hc3NldC10YWJsZS1idG5cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cIm0tbC0xNiBidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25PcGVuQXNzZXRUYWJsZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnR28gdG8gdGhlIGFzc2V0IGRhdGEgdGFibGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG4gICAgPC9jOHktdHlwZWFoZWFkPlxuICA8L2Zvcm0+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VhcmNoL3NlYXJjaC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlYXJjaC9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFrQixnQkFBZ0IsRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDcEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQWlCLE1BQU0sTUFBTSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTXBFLE1BQU0sT0FBTyxvQkFBb0I7SUFtRS9CLFlBQ1UsTUFBYyxFQUNkLFNBQTJCLEVBQzNCLHNCQUE4QyxFQUM5QyxFQUFxQjtRQUhyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXJFL0IsU0FBSSxHQUF3QixRQUFRLENBQUM7UUFFckM7O1dBRUc7UUFDTSxvQ0FBK0IsR0FBWSxLQUFLLENBQUM7UUFnQmpELGNBQVMsR0FBZ0IsRUFBRSxDQUFDO1FBRTVCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHckMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHcEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHcEMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRzNDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUU3QyxlQUFVLEdBQTZCLGlCQUFpQixDQUFDO1FBQ3pELFNBQUksR0FBRyxFQUFFLENBQUM7UUFLVix3QkFBbUIsR0FBcUIsRUFBRSxDQUFDO1FBRTNDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVDLDhCQUF5QixHQUFHLG9CQUFvQixDQUFDO1FBQ2pELDhCQUF5QixHQUFHLENBQUMsQ0FBQztRQUM5QixtQkFBYyxHQUFXO1lBQ3hDLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQztRQUNlLGtCQUFhLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLGdCQUFXLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBYWhDLENBQUM7SUExREo7O09BRUc7SUFDSCxJQUNJLGVBQWUsQ0FBQyxLQUFxRTtRQUN2RixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQW9ERCxLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLElBQUksZUFBZSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsVUFBVTtnQkFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BELENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsQ0FBQyxFQUFFLDRCQUE0QjtnQkFDL0IsR0FBRyxJQUFJLENBQUMsY0FBYzthQUN2QixDQUFDLENBQ0gsQ0FBQztTQUNIO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQixxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbEUsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO29CQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN4QyxPQUFPO2lCQUNSO2dCQUNELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUU2QyxnQkFBZ0IsQ0FBQyxLQUFvQjtRQUNqRixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWU7UUFDMUIsSUFBSSxNQUFNLEVBQUU7WUFDVix5Q0FBeUM7WUFDekMsdUNBQXVDO1lBQ3ZDLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtnQkFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBWSxFQUFFLEVBQWtCLEVBQUUsSUFBSztRQUMxQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM5RjtRQUNELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDdEYsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQTRDO1FBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFvQjtRQUMxQixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQyxtREFBbUQ7WUFDbkQsa0RBQWtEO1lBQ2xELFVBQVU7WUFDVixNQUFNLFVBQVUsR0FBSSxLQUFLLENBQUMsTUFBYyxDQUFDLEtBQUssQ0FBQztZQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFjO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQWM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9CLE9BQU87U0FDUjtJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDdkMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUMxQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUNuQyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVk7UUFDL0IsT0FBTyxLQUFLLENBQ1YsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBaUMsQ0FBQyxFQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUN6RixDQUFDO0lBQ0osQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFZO1FBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLEtBQUssRUFBRSxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUNoQixJQUFJLENBQUMsVUFBVTtZQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBc0IsRUFBRSxNQUE4QjtRQUMxRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDOztpSEF4T1Usb0JBQW9CO3FHQUFwQixvQkFBb0IsbWRBNkRwQixrQkFBa0IsNklDbkYvQixvbVJBK1BBOzJGRHpPYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCO2lNQUs1QixJQUFJO3NCQURILEtBQUs7Z0JBTUcsK0JBQStCO3NCQUF2QyxLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0YsZUFBZTtzQkFEbEIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxNQUFNO2dCQUlQLE1BQU07c0JBREwsTUFBTTtnQkFJUCxLQUFLO3NCQURKLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNO2dCQTBCQyxTQUFTO3NCQURoQixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJeEMsUUFBUTtzQkFEZixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkF5Q0EsZ0JBQWdCO3NCQUE3RCxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QsIFBhZ2luZyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEJzRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IGRlZmVyLCBlbXB0eSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBVbmFyeUZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWFuYWdlZE9iamVjdFR5cGUgfSBmcm9tICcuLi9jb21tb24vbWFuYWdlZC1vYmplY3QtdHlwZSc7XG5pbXBvcnQgeyBUeXBlYWhlYWRDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QvdHlwZWFoZWFkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi9pbnZlbnRvcnktc2VhcmNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc2VhcmNoLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoSW5wdXRDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBtb2RlOiAnc2VhcmNoJyB8ICdzZWxlY3QnID0gJ3NlYXJjaCc7XG5cbiAgLyoqXG4gICAqIFVubG9ja3MgdGhlIGFiaWxpdHkgdG8gcGxhY2UgYSBjdXN0b20gdGVtcGxhdGUgdW5kZXIgdGhlIHNlYXJjaCBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZUN1c3RvbVRlbXBsYXRlUGxhY2Vob2xkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRXZlbnQsIHdoaWNoIGlzIHVzZWQgdG8gc2V0IGEgbmV3IGV4dGVybmFsIHRlcm0uIFBhc3NpbmcgbnVsbCB3aWxsIHJlLWV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIEJFLlxuICAgKiBUaGlzIGFsbG93cyBuZXcgZmlsdGVycyB0byBiZSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGVybS5cbiAgICovXG4gIEBJbnB1dCgpIGV4dGVybmFsVGVybTogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gIC8qKlxuICAgKiBBIGN1c3RvbSBxdWVyeSBzZXR0ZXIgdXNlZCB0byBvdmVycmlkZSB0aGUgc3RhbmRhcmQgcXVlcnkuIEluIG9yZGVyIHRvIG9idGFpbiBkYXRhLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGN1c3RvbURhdGFRdWVyeShxdWVyeTogVW5hcnlGdW5jdGlvbjxzdHJpbmcsIE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+Pj4pIHtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIHRoaXMuY3VzdG9tUXVlcnkgPSBxdWVyeTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgY29udGFpbmVyOiAnJyB8ICdib2R5JyA9ICcnO1xuXG4gIEBJbnB1dCgpIGdyb3Vwc09ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgZmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICByZXNldCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElNYW5hZ2VkT2JqZWN0PigpO1xuXG4gIGRldmljZVR5cGU6IHR5cGVvZiBNYW5hZ2VkT2JqZWN0VHlwZSA9IE1hbmFnZWRPYmplY3RUeXBlO1xuICB0ZXJtID0gJyc7XG4gIHNlbGVjdGVkO1xuXG4gIGN1c3RvbVF1ZXJ5OiAodGV4dDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlc3VsdHMkOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj47XG4gIHJlY2VudFNlYXJjaFJlc3VsdHM6IElNYW5hZ2VkT2JqZWN0W10gPSBbXTtcbiAgcmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+PjtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIG5vTWF0Y2ggPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFJFQ0VOVF9TRUFSQ0hfU1RPUkFHRV9LRVkgPSAncmVjZW50X3NlYXJjaF92aWV3JztcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfUkVDRU5UX1NFQVJDSF9SRVNVTFRTID0gNTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0ZJTFRFUjogb2JqZWN0ID0ge1xuICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgIHBhZ2VTaXplOiA1LFxuICAgIHdpdGhDaGlsZHJlbjogZmFsc2VcbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VOVEVSID0gJ0VudGVyJztcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VTQyA9ICdFc2NhcGUnO1xuICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGQoVHlwZWFoZWFkQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSB0eXBlYWhlYWQ6IFR5cGVhaGVhZENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIGRyb3Bkb3duOiBCc0Ryb3Bkb3duRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZWFyY2hTZXJ2aWNlOiBJbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCByZWNlbnRTZWFyY2hJZHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSkpO1xuICAgIGlmIChyZWNlbnRTZWFyY2hJZHMgJiYgcmVjZW50U2VhcmNoSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkubGlzdCh7IGlkczogcmVjZW50U2VhcmNoSWRzLmpvaW4oJywnKSB9KTtcbiAgICAgIHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cyA9IHRoaXMuZ3JvdXBzT25seVxuICAgICAgICA/IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5maWx0ZXJPbmx5R3JvdXBzKGRhdGEpXG4gICAgICAgIDogZGF0YTtcbiAgICAgIHRoaXMucmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQgPSBkZWZlcigoKSA9PlxuICAgICAgICB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgICAgICBxOiAnJG9yZGVyYnk9Y3JlYXRpb25UaW1lIGRlc2MnLFxuICAgICAgICAgIC4uLnRoaXMuREVGQVVMVF9GSUxURVJcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZU9uU2VhcmNoKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHRlcm5hbFRlcm0pIHtcbiAgICAgIHRoaXMuZXh0ZXJuYWxUZXJtLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSh0ZXJtID0+IHtcbiAgICAgICAgaWYgKHRlcm0gPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5lbWl0KHRoaXMudGVybSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQodGVybSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgPT09IHRoaXMuS0VZQ09ERV9FU0MpIHtcbiAgICAgIHRoaXMuaGlkZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ2hhbmdlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIC8vIG5lZWRzIHRvIHJlcXVlc3QgYW4gYW5pbWF0aW9uIGZyYW1lIGFzXG4gICAgICAvLyBvdGhlcndpc2UgdGhlIHR5cGVhaGVhZCBpcyB1bmRlZmluZWRcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlT25TZWFyY2goKTtcbiAgICAgICAgdGhpcy50eXBlYWhlYWQuZHJvcGRvd24uc2hvdygpO1xuICAgICAgICB0aGlzLnR5cGVhaGVhZC5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9wZW4oZXZlbnQ6IEV2ZW50LCBtbzogSU1hbmFnZWRPYmplY3QsIHRlcm0/KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgaXNBbHJlYWR5UmVjZW50ID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IG1vLmlkKTtcbiAgICBpZiAoIWlzQWxyZWFkeVJlY2VudCkge1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnVuc2hpZnQobW8pO1xuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzID0gdGhpcy5yZWNlbnRTZWFyY2hSZXN1bHRzLnNsaWNlKDAsIHRoaXMuTUFYX1JFQ0VOVF9TRUFSQ0hfUkVTVUxUUyk7XG4gICAgfVxuICAgIGNvbnN0IHJlY2VudFNlYXJjaElkcyA9IHRoaXMucmVjZW50U2VhcmNoUmVzdWx0cy5tYXAoKHsgaWQgfSkgPT4gaWQpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUkVDRU5UX1NFQVJDSF9TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkocmVjZW50U2VhcmNoSWRzKSk7XG4gICAgaWYgKHRlcm0pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBtbztcbiAgICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgfVxuICAgIHRoaXMub25DbGljay5lbWl0KG1vKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25SZXNldChzdGF0dXM6IHsgaWNvbjogc3RyaW5nOyAkZXZlbnQ6IE1vdXNlRXZlbnQgfSkge1xuICAgIHN0YXR1cy4kZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZXNldC5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xuICAgIHRoaXMudHlwZWFoZWFkLm9uU2VhcmNoLmVtaXQoJycpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50eXBlYWhlYWQuc2VhcmNoQ29udHJvbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5LRVlDT0RFX0VOVEVSKSB7XG4gICAgICAvLyBlbnRlciBoaXQgY2FuIGJlIGZhc3RlciB0aGVuIHR5cGVhaGVhZCBkZWJvdW5jZSxcbiAgICAgIC8vIHRoZXJlZm9yZSB3ZSB0YWtlIHRoZSB0ZXJtIGZyb20gdGhlIERPTSBlbGVtZW50XG4gICAgICAvLyBpdHNlbGY6XG4gICAgICBjb25zdCBzZWFyY2hUZXJtID0gKGV2ZW50LnRhcmdldCBhcyBhbnkpLnZhbHVlO1xuICAgICAgdGhpcy5vblNlYXJjaChzZWFyY2hUZXJtKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2g6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoLmVtaXQoc2VhcmNoKTtcbiAgICB0aGlzLmhpZGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25GaWx0ZXIoc2VhcmNoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlci5lbWl0KHNlYXJjaCk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG9uT3BlbkFzc2V0VGFibGUoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2Fzc2V0c2VhcmNoJyk7XG4gICAgdGhpcy5oaWRlRHJvcGRvd24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm9uRGVzdHJveSQpIHtcbiAgICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGVEcm9wZG93bigpIHtcbiAgICBpZiAodGhpcy5kcm9wZG93bikge1xuICAgICAgdGhpcy5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZWFoZWFkICYmIHRoaXMudHlwZWFoZWFkLmRyb3Bkb3duKSB7XG4gICAgICB0aGlzLnR5cGVhaGVhZC5kcm9wZG93bi5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVPblNlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMucmVzdWx0cyQpIHtcbiAgICAgIHRoaXMucmVzdWx0cyQgPSB0aGlzLnR5cGVhaGVhZC5vblNlYXJjaC5waXBlKFxuICAgICAgICB0YXAodGVybSA9PiB0aGlzLm9uVHlwaW5nU3RhcnRlZCh0ZXJtKSksXG4gICAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMubWVyZ2VSZXF1ZXN0KHRlcm0pKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlUmVxdWVzdCh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4ge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgIG9mKHsgZGF0YTogW10gfSBhcyBJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgdGhpcy5oYW5kbGVRdWVyeSh0ZXJtKS5waXBlKHRhcCgoeyBkYXRhLCBwYWdpbmcgfSkgPT4gdGhpcy5vbkxvYWRpbmdEb25lKGRhdGEsIHBhZ2luZykpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVF1ZXJ5KHRlcm06IHN0cmluZykge1xuICAgIGlmICghdGVybSkge1xuICAgICAgcmV0dXJuIGVtcHR5KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmN1c3RvbVF1ZXJ5KSB7XG4gICAgICByZXR1cm4gZGVmZXIoKCkgPT4gdGhpcy5jdXN0b21RdWVyeSh0ZXJtKSk7XG4gICAgfVxuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgdGhpcy5ncm91cHNPbmx5XG4gICAgICAgID8gdGhpcy5pbnZlbnRvcnlTZWFyY2hTZXJ2aWNlLnNlYXJjaEdyb3Vwcyh0ZXJtKVxuICAgICAgICA6IHRoaXMuaW52ZW50b3J5U2VhcmNoU2VydmljZS5zZWFyY2godGVybSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkxvYWRpbmdEb25lKGRhdGE6IElNYW5hZ2VkT2JqZWN0W10sIHBhZ2luZzogUGFnaW5nPElNYW5hZ2VkT2JqZWN0Pikge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5ub01hdGNoID0gcGFnaW5nICYmIHBhZ2luZy5uZXh0UGFnZSA9PT0gbnVsbCAmJiBkYXRhLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgb25UeXBpbmdTdGFydGVkKHRlcm0pIHtcbiAgICB0aGlzLm5vTWF0Y2ggPSBmYWxzZTtcbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdGVybS5sZW5ndGggPiAwO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZHJvcGRvd25cIlxuICBkcm9wZG93blxuICAjc2VhcmNoRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgKGlzT3BlbkNoYW5nZSk9XCJvbk9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gICpuZ0lmPVwibW9kZSA9PT0gJ3NlYXJjaCdcIlxuICBbY2RrVHJhcEZvY3VzXT1cInNlYXJjaERyb3Bkb3duLmlzT3BlblwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cIm1haW4taGVhZGVyLWJ1dHRvbiBkcm9wZG93bi10b2dnbGUgYzh5LWRyb3Bkb3duXCJcbiAgICBbdGl0bGVdPVwiJ1NlYXJjaCcgfCB0cmFuc2xhdGVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLWJ0blwiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJpY29uLTJ4XCJcbiAgICAgIGM4eUljb249XCJzZWFyY2hcIlxuICAgID48L2k+XG4gIDwvYnV0dG9uPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cInNlYXJjaC1oZWFkZXItbWVudSBkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIlxuICAgIGlkPVwic2VhcmNoRHJvcGRvd25cIlxuICAgICpkcm9wZG93bk1lbnVcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgXG4gIGNsYXNzPVwic2VhcmNoLWhlYWRlci1pbmxpbmVcIiBcbiAgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0J1wiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZm9ybT5cbiAgPGZvcm0gXG4gICAgW25nQ2xhc3NdPVwieyAnYzh5LXNlYXJjaC1mb3JtJzogbW9kZSA9PT0gJ3NlYXJjaCcgfVwiIFxuICAgIG5vdmFsaWRhdGUgXG4gICAgI3NlYXJjaEZvcm09XCJuZ0Zvcm1cIlxuICA+XG4gICAgPGM4eS10eXBlYWhlYWRcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnU2VhcmNoIGZvciBncm91cHMgb3IgYXNzZXRz4oCmJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoa2V5ZG93bik9XCJrZXlEb3duKCRldmVudClcIlxuICAgICAgKG9uSWNvbkNsaWNrKT1cIm9uUmVzZXQoJGV2ZW50KVwiXG4gICAgICBbaWNvbl09XCJ0ZXJtID8gJ3RpbWVzJyA6ICdzZWFyY2gnXCJcbiAgICAgIFthbGxvd0ZyZWVFbnRyaWVzXT1cImZhbHNlXCJcbiAgICAgIFtjb250YWluZXJdPVwiY29udGFpbmVyXCJcbiAgICAgIG5hbWU9XCJzZWxlY3RlZFwiXG4gICAgICB0aXRsZT1cIlNlYXJjaFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImM4eS1saXN0X19pdGVtIHAtbC0yNCBwLXItMjQgcC1iLTggc2VwYXJhdG9yLWJvdHRvbSBzdGlja3ktdG9wIHAtdC00XCJcbiAgICAgICAgKm5nSWY9XCJlbmFibGVDdXN0b21UZW1wbGF0ZVBsYWNlaG9sZGVyICYmIG1vZGUgPT09ICdzZWFyY2gnXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gZmlsdGVyIGJ1dHRvbnMgLS0+XG4gICAgICA8Yzh5LWxpICpuZ0lmPVwidGVybS5sZW5ndGggIT09IDBcIiBjbGFzcz1cInAtbC0xNiBwLXItMTZcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwibW9kZSA9PT0gJ3NlYXJjaCdcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cIm0tci00IHRleHQtbXV0ZWRcIj5cbiAgICAgICAgICAgIDxlbSB0cmFuc2xhdGU+U2VhcmNoaW5nIGJ5IGV4YWN0IG1hdGNoLiBDbGljayBmb3Igb3RoZXIgc2VhcmNoIG9wdGlvbnM6PC9lbT5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAtc21cIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU3RhcnRzIHdpdGgnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLXN0YXJ0cy13aXRoXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyKHRlcm0gKyAnKicpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ1N0YXJ0cyB3aXRoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0NvbnRhaW5zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIGRhdGEtY3k9XCJzZWFyY2gtaW5wdXQtLXNlYXJjaC1jb250YWluc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlcignKicgKyB0ZXJtICsgJyonKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdDb250YWlucycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdFbmRzIHdpdGgnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tc2VhcmNoLWVuZHMtd2l0aFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlcignKicgKyB0ZXJtKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdFbmRzIHdpdGgnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cblxuICAgICAgPCEtLSBSZWNlbnQgc2VhcmNoIC0tPlxuICAgICAgPGM4eS1saVxuICAgICAgICBjbGFzcz1cInAtbC0yNCBwLXItMjRcIlxuICAgICAgICAqbmdJZj1cInRlcm0ubGVuZ3RoID09PSAwICYmIHJlY2VudFNlYXJjaFJlc3VsdHMubGVuZ3RoID4gMFwiXG4gICAgICAgIFtzZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlJlY2VudCBzZWFyY2ggdmlld3M8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWxpbmsgbS1sLTE2IG0tci0xNlwiXG4gICAgICAgICpuZ0Zvcj1cImxldCByZXN1bHQgb2YgdGVybS5sZW5ndGggPT09IDAgPyByZWNlbnRTZWFyY2hSZXN1bHRzIDogW11cIlxuICAgICAgICAoY2xpY2spPVwib3BlbigkZXZlbnQsIHJlc3VsdCwgcmVzdWx0Lm5hbWUpXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN1bHQgfCBzaG91bGRTaG93TW86IGRldmljZVR5cGUuREVWSUNFOyBlbHNlIGdyb3VwXCI+XG4gICAgICAgICAgICA8ZGV2aWNlLXN0YXR1cyBbbW9dPVwicmVzdWx0XCI+PC9kZXZpY2Utc3RhdHVzPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXA+XG4gICAgICAgICAgICA8aSBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiXG4gICAgICAgICAgICAgIFtjOHlJY29uXT1cInJlc3VsdCB8IGdldEdyb3VwSWNvbiB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9pPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgIHt7IHJlc3VsdC5uYW1lIHx8ICctLScgfX1cbiAgICAgIDwvYzh5LWxpPlxuXG4gICAgICA8IS0tIFJlY2VudGx5IHJlZ2lzdGVyZWQgZGV2aWNlcyAtLT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgKm5nSWY9XCJ0ZXJtLmxlbmd0aCA9PT0gMCAmJiAocmVjZW50bHlSZWdpc3RlcmVkUmVzdWx0cyQgfCBhc3luYyk/LmRhdGE/Lmxlbmd0aCA+IDAgJiYgIWdyb3Vwc09ubHlcIlxuICAgICAgICBjbGFzcz1cInAtbC0yNCBwLXItMjRcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5SZWNlbnRseSByZWdpc3RlcmVkIGRldmljZXM8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgICpjOHlGb3I9XCJcbiAgICAgICAgICBsZXQgcmVzdWx0IG9mICh0ZXJtLmxlbmd0aCA9PT0gMCAmJiAhZ3JvdXBzT25seSkgPyByZWNlbnRseVJlZ2lzdGVyZWRSZXN1bHRzJCA6IHsgZGF0YTogW10gfTtcbiAgICAgICAgICBsb2FkTW9yZTogJ25vbmUnO1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImM4eS1saXN0X19pdGVtLS1saW5rIG0tbC0xNiBtLXItMTZcIlxuICAgICAgICAoY2xpY2spPVwib3BlbigkZXZlbnQsIHJlc3VsdCwgcmVzdWx0Lm5hbWUpXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN1bHQgfCBzaG91bGRTaG93TW86IGRldmljZVR5cGUuREVWSUNFOyBlbHNlIGdyb3VwXCI+XG4gICAgICAgICAgICA8ZGV2aWNlLXN0YXR1cyBbbW9dPVwicmVzdWx0XCI+PC9kZXZpY2Utc3RhdHVzPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXA+XG4gICAgICAgICAgICA8aSBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiXG4gICAgICAgICAgICAgIFtjOHlJY29uXT1cInJlc3VsdCB8IGdldEdyb3VwSWNvbiB8IGFzeW5jXCIgXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICB7eyByZXN1bHQubmFtZSB8fCAnLS0nIH19XG4gICAgICA8L2M4eS1saT5cblxuICAgICAgPCEtLSBTZWFyY2ggcmVzdWx0cyAtLT5cbiAgICAgIDxjOHktbGkgKm5nSWY9XCJ0ZXJtLmxlbmd0aCAhPT0gMFwiIGNsYXNzPVwicC1sLTI0IHAtci0yNFwiIFtzZWxlY3RhYmxlXT1cImZhbHNlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5TZWFyY2ggcmVzdWx0czwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgKmM4eUZvcj1cIlxuICAgICAgICAgIGxldCByZXN1bHQgb2YgcmVzdWx0cyQ7XG4gICAgICAgICAgbG9hZE1vcmU6ICdhdXRvJztcbiAgICAgICAgICBub3RGb3VuZDogbm90Rm91bmRUZW1wbGF0ZTtcbiAgICAgICAgICBsb2FkaW5nVGVtcGxhdGU6IGxvYWRpbmc7XG4gICAgICAgICAgbG9hZE5leHRMYWJlbDogJ0ZpbmQgbW9yZeKApidcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjOHktbGlzdF9faXRlbS0tbGluayBtLWwtMTYgbS1yLTE2XCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW4oJGV2ZW50LCByZXN1bHQsIHJlc3VsdC5uYW1lKVwiXG4gICAgICAgIFt0aXRsZV09XCJyZXN1bHQubmFtZVwiXG4gICAgICAgIGRhdGEtY3k9XCJzZWFyY2gtaW5wdXQtLXNlYXJjaC1yZXN1bHRzXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN1bHQgfCBzaG91bGRTaG93TW86IGRldmljZVR5cGUuREVWSUNFOyBlbHNlIGdyb3VwXCI+XG4gICAgICAgICAgICA8ZGV2aWNlLXN0YXR1cyBbbW9dPVwicmVzdWx0XCI+PC9kZXZpY2Utc3RhdHVzPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXA+XG4gICAgICAgICAgICA8aSBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiXG4gICAgICAgICAgICAgIFtjOHlJY29uXT1cInJlc3VsdCB8IGdldEdyb3VwSWNvbiB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9pPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgIHt7IHJlc3VsdC5uYW1lIHx8ICctLScgfX1cbiAgICAgIDwvYzh5LWxpPlxuXG4gICAgICA8IS0tIE5vIHNlYXJjaCByZXN1bHRzIGZvdW5kIGVudHJ5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNub3RGb3VuZFRlbXBsYXRlPlxuICAgICAgICA8Yzh5LWxpICpuZ0lmPVwibm9NYXRjaFwiIGNsYXNzPVwicC0xNiBjOHktZW1wdHktc3RhdGVcIiBkYXRhLWN5PVwic2VhcmNoLWlucHV0LS1lbXB0eS1zdGF0ZVwiIFtzZWxlY3RhYmxlXT1cImZhbHNlXCI+XG4gICAgICAgICAgPGM4eS1saS1pY29uIFtpY29uXT1cIidzZWFyY2gnXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICA8cD48c3Ryb25nIHRyYW5zbGF0ZT5ObyBtYXRjaCBmb3VuZC48L3N0cm9uZz48L3A+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZSAqbmdJZj1cIm1vZGUgPT09ICdzZWFyY2gnXCI+XG4gICAgICAgICAgICBUcnkgdG8gZmlsdGVyIG9yIG9wZW4gdGhlIGFzc2V0IGdyaWQgdG8gc2hvdyBhbGwgZGV2aWNlcyBhbmQgZ3JvdXBzLlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZSAqbmdJZj1cIm1vZGUgPT09ICdzZWxlY3QnXCI+VHJ5IHRvIHJlcGhyYXNlIHlvdXIgc2VhcmNoIHdvcmQuPC9zbWFsbD5cbiAgICAgICAgPC9jOHktbGk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIGxvYWRpbmcgYmFyIGZpcnN0IGVudHJpZXMgLS0+XG4gICAgICA8Yzh5LWxpICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJwLXQtMzIgcC1iLTBcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiIHN0eWxlPVwicmlnaHQ6IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDFcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDNcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDRcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDVcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cblxuICAgICAgPCEtLSBsb2FkaW5nIGJhciBmb3IgbG9hZGluZyBtb3JlIGVudHJpZXMgKGludmVudG9yeSByb2xlcykgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICAgIDxjOHktbGkgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwLXQtMzIgcC1iLTBcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCIgc3R5bGU9XCJyaWdodDogMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3QxXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWN0M1wiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3Q0XCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDVcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jOHktbGk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIG1vcmUgZmlsdGVyIHBvc3NpYmlsaXRpZXMgLS0+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgIGNsYXNzPVwibS10LTI0IGJnLWxldmVsLTIgcC10LTE2IHAtYi0xNiBwLWwtMjQgcC1yLTI0IHN0aWNreS1ib3R0b21cIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3NlYXJjaCdcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICA8aSBjOHlJY29uPVwiaW5mby1jaXJjbGVcIiBjbGFzcz1cInRleHQtaW5mbyBtLXItNFwiPjwvaT5cbiAgICAgICAgICA8cCB0cmFuc2xhdGUgY2xhc3M9XCJtLXItOFwiPk5lZWQgbW9yZSBmaWx0ZXIgcG9zc2liaWxpdGllcz88L3A+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJtLWwtMTYgYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdHbyB0byB0aGUgYXNzZXQgZGF0YSB0YWJsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgZGF0YS1jeT1cInNlYXJjaC1pbnB1dC0tYXNzZXQtdGFibGUtYnRuXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk9wZW5Bc3NldFRhYmxlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdHbyB0byB0aGUgYXNzZXQgZGF0YSB0YWJsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICA8L2M4eS10eXBlYWhlYWQ+XG4gIDwvZm9ybT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -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,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtdHlwZS5jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NlYXJjaC9jb2x1bW5zL2Fzc2V0LXR5cGUuY2VsbC1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zZWFyY2gvY29sdW1ucy9hc3NldC10eXBlLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBS3hFLE1BQU0sT0FBTyw4QkFBOEI7SUFNekMsWUFBbUIsT0FBNEIsRUFBWSxnQkFBa0M7UUFBMUUsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFBWSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQztJQUVqRyxLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVk7UUFDL0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQy9CO1FBRUQsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUIsS0FBSyxpQkFBaUI7Z0JBQ3BCLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2hDLEtBQUssMkJBQTJCO2dCQUM5QixPQUFPLHVCQUF1QixDQUFDO1lBQ2pDLEtBQUssa0JBQWtCO2dCQUNyQixPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqQyxLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0I7Z0JBQ0UsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDOzsySEFuQ1UsOEJBQThCOytHQUE5Qiw4QkFBOEIsb0RDUDNDLHFQQU9BOzJGREFhLDhCQUE4QjtrQkFIMUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXJDb250ZXh0LCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBc3NldE5vZGVTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hc3NldHMtbmF2aWdhdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NldC10eXBlLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0VHlwZUNlbGxSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGdyb3VwSWNvbjogc3RyaW5nO1xuICBpc0FueUdyb3VwOiBib29sZWFuO1xuICBpc0RldmljZTogYm9vbGVhbjtcbiAgaXNBc3NldDogYm9vbGVhbjtcbiAgaWNvblRpdGxlOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250ZXh0OiBDZWxsUmVuZGVyZXJDb250ZXh0LCBwcm90ZWN0ZWQgYXNzZXROb2RlU2VydmljZTogQXNzZXROb2RlU2VydmljZSkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzQW55R3JvdXAgPSB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNBbnlHcm91cCh0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5ncm91cEljb24gPSBhd2FpdCB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaWNvbih0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5pc0RldmljZSA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5pc0RldmljZSh0aGlzLmNvbnRleHQuaXRlbSk7XG4gICAgdGhpcy5pc0Fzc2V0ID0gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzQXNzZXQodGhpcy5jb250ZXh0Lml0ZW0pO1xuICAgIHRoaXMuaWNvblRpdGxlID0gdGhpcy5nZXRJY29uVGl0bGUodGhpcy5ncm91cEljb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJY29uVGl0bGUoaWNvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0Fzc2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250ZXh0Lml0ZW0udHlwZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGljb24pIHtcbiAgICAgIGNhc2UgJ2M4eS1ncm91cCc6XG4gICAgICAgIHJldHVybiBnZXR0ZXh0KCdHcm91cCcpO1xuICAgICAgY2FzZSAnYzh5LWdyb3VwLXNtYXJ0JzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ1NtYXJ0IGdyb3VwJyk7XG4gICAgICBjYXNlICdjOHktZ3JvdXAtcmVtb3RlLWluYWN0aXZlJzpcbiAgICAgICAgcmV0dXJuICdJbmFjdGl2ZSByZW1vdGUgZ3JvdXAnO1xuICAgICAgY2FzZSAnYzh5LWdyb3VwLXJlbW90ZSc6XG4gICAgICAgIHJldHVybiBnZXR0ZXh0KCdSZW1vdGUgZ3JvdXAnKTtcbiAgICAgIGNhc2UgJ2V4Y2hhbmdlJzpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ0RldmljZScpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGdldHRleHQoJ0Fzc2V0Jyk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGV2aWNlLXN0YXR1cyBjbGFzcz1cIm0tbC04XCIgW21vXT1cImNvbnRleHQuaXRlbVwiICpuZ0lmPVwiaXNEZXZpY2VcIj48L2RldmljZS1zdGF0dXM+XG48aVxuICBbYzh5SWNvbl09XCJncm91cEljb25cIlxuICB0aXRsZT1cInt7IGljb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVwiXG4gIGNsYXNzPVwibS1sLTggYzh5LWljb24tZHVvY29sb3JcIlxuICAqbmdJZj1cImlzQW55R3JvdXAgfHwgIWlzRGV2aWNlXCJcbj48L2k+XG4iXX0=
|