@c8y/ngx-components 1018.0.196 → 1018.0.203

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/core/common/global-config.service.d.ts +1 -1
  2. package/core/common/permissions.service.d.ts +2 -2
  3. package/core/i18n/pattern-messages.data.d.ts +20 -20
  4. package/esm2020/assets-navigator/asset-node.service.mjs +9 -3
  5. package/esm2020/context-dashboard/add-dashboard.factory.mjs +10 -3
  6. package/esm2020/context-dashboard/context-dashboard.service.mjs +11 -3
  7. package/esm2020/context-dashboard/dashboard-detail.component.mjs +7 -2
  8. package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +4 -2
  9. package/esm2020/core/common/global-config.service.mjs +6 -2
  10. package/esm2020/core/common/permissions.service.mjs +2 -2
  11. package/esm2020/core/common/user-preferences/user-preferences.service.mjs +6 -2
  12. package/esm2020/core/i18n/pattern-messages.data.mjs +21 -21
  13. package/esm2020/files-repository/files-repository.guard.mjs +6 -5
  14. package/esm2020/map/map.model.mjs +3 -3
  15. package/esm2020/repository/configuration/device-tab/configuration-preview.component.mjs +11 -3
  16. package/esm2020/sub-assets/add-group/add-group.component.mjs +7 -2
  17. package/esm2020/sub-assets/groups.component.mjs +5 -2
  18. package/esm2020/sub-assets/sub-assets.component.mjs +7 -2
  19. package/esm2020/sub-assets/sub-assets.service.mjs +12 -6
  20. package/fesm2015/c8y-ngx-components-assets-navigator.mjs +8 -2
  21. package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  22. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +28 -6
  23. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  24. package/fesm2015/c8y-ngx-components-files-repository.mjs +5 -4
  25. package/fesm2015/c8y-ngx-components-files-repository.mjs.map +1 -1
  26. package/fesm2015/c8y-ngx-components-map.mjs +2 -2
  27. package/fesm2015/c8y-ngx-components-map.mjs.map +1 -1
  28. package/fesm2015/c8y-ngx-components-repository-configuration.mjs +10 -2
  29. package/fesm2015/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  30. package/fesm2015/c8y-ngx-components-sub-assets.mjs +27 -8
  31. package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
  32. package/fesm2015/c8y-ngx-components.mjs +31 -23
  33. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  34. package/fesm2020/c8y-ngx-components-assets-navigator.mjs +8 -2
  35. package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  36. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +28 -6
  37. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  38. package/fesm2020/c8y-ngx-components-files-repository.mjs +5 -4
  39. package/fesm2020/c8y-ngx-components-files-repository.mjs.map +1 -1
  40. package/fesm2020/c8y-ngx-components-map.mjs +2 -2
  41. package/fesm2020/c8y-ngx-components-map.mjs.map +1 -1
  42. package/fesm2020/c8y-ngx-components-repository-configuration.mjs +10 -2
  43. package/fesm2020/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  44. package/fesm2020/c8y-ngx-components-sub-assets.mjs +27 -8
  45. package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
  46. package/fesm2020/c8y-ngx-components.mjs +31 -23
  47. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  48. package/map/map.model.d.ts +1 -1
  49. package/package.json +1 -1
@@ -169,18 +169,20 @@ export class SubAssetsService extends DataGridService {
169
169
  return this.getAssetsStatistics(parentReference, filters);
170
170
  }
171
171
  async canEditGroup(group) {
172
- return await this.permissionsService.canEdit([Permissions.ROLE_INVENTORY_ADMIN], group);
172
+ return await this.permissionsService.canEdit([Permissions.ROLE_INVENTORY_ADMIN, Permissions.ROLE_MANAGED_OBJECT_ADMIN], group);
173
173
  }
174
174
  canCreateGroup() {
175
175
  const currentUser = this.appState.currentUser.value;
176
176
  const hasAdminRole = this.user.hasAnyRole(currentUser, [
177
177
  Permissions.ROLE_INVENTORY_ADMIN,
178
- Permissions.ROLE_INVENTORY_CREATE
178
+ Permissions.ROLE_INVENTORY_CREATE,
179
+ Permissions.ROLE_MANAGED_OBJECT_ADMIN,
180
+ Permissions.ROLE_MANAGED_OBJECT_CREATE
179
181
  ]);
180
182
  return hasAdminRole;
181
183
  }
182
184
  async canAssignDevice(group) {
183
- return await this.permissionsService.canEdit([Permissions.ROLE_INVENTORY_ADMIN], group);
185
+ return await this.permissionsService.canEdit([Permissions.ROLE_INVENTORY_ADMIN, Permissions.ROLE_MANAGED_OBJECT_ADMIN], group);
184
186
  }
185
187
  canEditSmartGroup() {
186
188
  const SMART_GROUPS_ROLES_EDIT = [
@@ -192,7 +194,8 @@ export class SubAssetsService extends DataGridService {
192
194
  canDeleteSmartGroup() {
193
195
  const SMART_GROUPS_ROLES_DELETE = [
194
196
  Permissions.ROLE_SMARTGROUP_ADMIN,
195
- Permissions.ROLE_INVENTORY_ADMIN
197
+ Permissions.ROLE_INVENTORY_ADMIN,
198
+ Permissions.ROLE_MANAGED_OBJECT_ADMIN
196
199
  ];
197
200
  return this.permissionsService.hasAnyRole(SMART_GROUPS_ROLES_DELETE);
198
201
  }
@@ -204,7 +207,10 @@ export class SubAssetsService extends DataGridService {
204
207
  const hasAnyInventoryRole = this.user.hasAnyRole(currentUser, [
205
208
  Permissions.ROLE_INVENTORY_ADMIN,
206
209
  Permissions.ROLE_INVENTORY_READ,
207
- Permissions.ROLE_INVENTORY_CREATE
210
+ Permissions.ROLE_INVENTORY_CREATE,
211
+ Permissions.ROLE_MANAGED_OBJECT_ADMIN,
212
+ Permissions.ROLE_MANAGED_OBJECT_CREATE,
213
+ Permissions.ROLE_MANAGED_OBJECT_READ
208
214
  ]);
209
215
  return !hasAnyInventoryRole;
210
216
  }
@@ -314,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
314
320
  type: Inject,
315
321
  args: [SUB_ASSETS_CONFIG]
316
322
  }] }]; } });
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWFzc2V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3ViLWFzc2V0cy9zdWItYXNzZXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUVMLGdCQUFnQixFQUdoQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBRUwsWUFBWSxFQUNaLGVBQWUsRUFDZixpQkFBaUIsRUFHakIsZUFBZSxFQUNmLE9BQU8sRUFHUCxXQUFXLEVBQ1gsc0JBQXNCLEVBQ3ZCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixnQ0FBZ0MsRUFDaEMsNEJBQTRCLEVBQzVCLHdCQUF3QixFQUN6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBS3hFLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxlQUFlO0lBTW5ELFlBQ1ksZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxRQUF5QixFQUN6QixJQUFpQixFQUNqQixnQkFBa0MsRUFDbEMsa0JBQXNDLEVBQ3RDLGlCQUFvQyxFQUNwQyxZQUEwQixFQUMxQixrQkFBK0IsRUFDL0IsVUFBNkIsRUFDN0Isc0JBQThDLEVBQ3RCLFlBQTZCO1FBRS9ELEtBQUssQ0FBQyxzQkFBc0Is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LElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzNEO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQWlCLEVBQUUsVUFBc0IsRUFBRSxTQUFTLEVBQUUsSUFBYTtRQUMxRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2xGLE9BQU87WUFDTCxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUN6QyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsaUJBQWlCO1lBQ3ZELFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVztZQUNuQyxjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDO0lBQ0osQ0FBQzs7NkdBM1dVLGdCQUFnQiw2V0FrQmpCLGlCQUFpQjtpSEFsQmhCLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBbUJJLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJTWFuYWdlZE9iamVjdCxcbiAgSW52ZW50b3J5U2VydmljZSxcbiAgSVJ1bGUsXG4gIFF1ZXJpZXNVdGlsLFxuICBTbWFydEdyb3Vwc1NlcnZpY2UsXG4gIFNtYXJ0UnVsZXNTZXJ2aWNlLFxuICBVc2VyU2VydmljZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBY3Rpb25Db250cm9sLFxuICBBbGVydFNlcnZpY2UsXG4gIEFwcFN0YXRlU2VydmljZSxcbiAgQXNzZXRUeXBlc1NlcnZpY2UsXG4gIEJ1bGtBY3Rpb25Db250cm9sLFxuICBDb2x1bW4sXG4gIERhdGFHcmlkU2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgR3JpZENvbmZpZyxcbiAgUGFnaW5hdGlvbixcbiAgUGVybWlzc2lvbnMsXG4gIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBc3NldE5vZGVTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hc3NldHMtbmF2aWdhdG9yJztcbmltcG9ydCB7XG4gIEFsYXJtc0RldmljZUdyaWRDb2x1bW4sXG4gIEltZWlEZXZpY2VHcmlkQ29sdW1uLFxuICBNb2RlbERldmljZUdyaWRDb2x1bW4sXG4gIE5hbWVEZXZpY2VHcmlkQ29sdW1uLFxuICBSZWdpc3RyYXRpb25EYXRlRGV2aWNlR3JpZENvbHVtbixcbiAgU2VyaWFsTnVtYmVyRGV2aWNlR3JpZENvbHVtbixcbiAgU3lzdGVtSWREZXZpY2VHcmlkQ29sdW1uXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGV2aWNlLWdyaWQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQXNzZXRUeXBlR3JpZENvbHVtbiB9IGZyb20gJy4vY29sdW1ucy9hc3NldC10eXBlLWdyaWQtY29sdW1uJztcbmltcG9ydCB7IFNVQl9BU1NFVFNfQ09ORklHLCBTdWJBc3NldHNDb25maWcgfSBmcm9tICcuL3N1Yi1hc3NldHMubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTdWJBc3NldHNTZXJ2aWNlIGV4dGVuZHMgRGF0YUdyaWRTZXJ2aWNlIHtcbiAgcXVlcmllc1V0aWw6IFF1ZXJpZXNVdGlsO1xuICBwcm90ZWN0ZWQgR1JJRF9DT05GSUdfREVGQVVMVF9TVE9SQUdFX0tFWSA9ICdzdWItYXNzZXRzLWdyaWQtY29uZmlnJztcbiAgcHJpdmF0ZSBJU19ERVZJQ0VfR1JPVVBfRlJBR01FTlQgPSAnYzh5X0lzRGV2aWNlR3JvdXAnO1xuICBwcml2YXRlIElTX0RZTkFNSUNfR1JPVVBfRlJBR01FTlQgPSAnYzh5X0lzRHluYW1pY0dyb3VwJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgaW52ZW50b3J5U2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlcjogVXNlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFzc2V0Tm9kZVNlcnZpY2U6IEFzc2V0Tm9kZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHNtYXJ0R3JvdXBzU2VydmljZTogU21hcnRHcm91cHNTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBzbWFydFJ1bGVzU2VydmljZTogU21hcnRSdWxlc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBwZXJtaXNzaW9uc1NlcnZpY2U6IFBlcm1pc3Npb25zLFxuICAgIHByb3RlY3RlZCBhc3NldFR5cGVzOiBBc3NldFR5cGVzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlclByZWZlcmVuY2VzU2VydmljZTogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBASW5qZWN0KFNVQl9BU1NFVFNfQ09ORklHKSBwdWJsaWMgbW9kdWxlQ29uZmlnOiBTdWJBc3NldHNDb25maWdcbiAgKSB7XG4gICAgc3VwZXIodXNlclByZWZlcmVuY2VzU2VydmljZSk7XG4gIH1cblxuICBhc3luYyBnZXRDdXN0b21Qcm9wZXJ0aWVzKGdyb3VwOiBJTWFuYWdlZE9iamVjdCk6IFByb21pc2U8SU1hbmFnZWRPYmplY3RbXT4ge1xuICAgIGNvbnN0IGFzc2V0VHlwZSA9IHRoaXMuYXNzZXRUeXBlcy5nZXRBc3NldFR5cGVCeU5hbWUoZ3JvdXAudHlwZSk7XG4gICAgaWYgKGFzc2V0VHlwZSkge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuY2hpbGRBZGRpdGlvbnNMaXN0KGFzc2V0VHlwZSwge1xuICAgICAgICBwYWdlU2l6ZTogMjAwMCxcbiAgICAgICAgcXVlcnk6IFwiJGZpbHRlcj0oaGFzKCdjOHlfSXNBc3NldFByb3BlcnR5JykpXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldERlZmF1bHRDb2x1bW5zKF9maWx0ZXJhYmxlID0gdHJ1ZSwgX3NvcnRhYmxlID0gdHJ1ZSk6IENvbHVtbltdIHtcbiAgICBjb25zdCBkZWZhdWx0Q29sdW1ucyA9IFtcbiAgICAgIG5ldyBBc3NldFR5cGVHcmlkQ29sdW1uKHsgc29ydE9yZGVyOiAnZGVzYycgfSksXG4gICAgICBuZXcgTmFtZURldmljZUdyaWRDb2x1bW4oeyBzb3J0T3JkZXI6ICdhc2MnIH0pLFxuICAgICAgbmV3IE1vZGVsRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IFNlcmlhbE51bWJlckRldmljZUdyaWRDb2x1bW4oeyB2aXNpYmxlOiBmYWxzZSB9KSxcbiAgICAgIG5ldyBSZWdpc3RyYXRpb25EYXRlRGV2aWNlR3JpZENvbHVtbih7IHZpc2libGU6IGZhbHNlIH0pLFxuICAgICAgbmV3IFN5c3RlbUlkRGV2aWNlR3JpZENvbHVtbih7IHZpc2libGU6IGZhbHNlIH0pLFxuICAgICAgbmV3IEltZWlEZXZpY2VHcmlkQ29sdW1uKHsgdmlzaWJsZTogZmFsc2UgfSksXG4gICAgICBuZXcgQWxhcm1zRGV2aWNlR3JpZENvbHVtbigpXG4gICAgXTtcbiAgICByZXR1cm4gZGVmYXVsdENvbHVtbnM7XG4gIH1cblxuICBnZXREZWZhdWx0UGFnaW5hdGlvbigpOiBQYWdpbmF0aW9uIHtcbiAgICBjb25zdCB7IHBhZ2luYXRpb24gfSA9IHRoaXMuZ2V0Q29uZmlnKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VTaXplOiBwYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICAgY3VycmVudFBhZ2U6IDFcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdEFjdGlvbkNvbnRyb2xzKCk6IEFjdGlvbkNvbnRyb2xbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBnZXRDb25maWckKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxHcmlkQ29uZmlnPiBpbnN0ZWFkLlxuICAgKi9cbiAgZ2V0Q29uZmlnKGtleTogc3RyaW5nID0gdGhpcy5HUklEX0NPTkZJR19ERUZBVUxUX1NUT1JBR0VfS0VZKTogR3JpZENvbmZpZyB7XG4gICAgcmV0dXJuIHN1cGVyLmdldENvbmZpZyhrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzYXZlQ29uZmlnJChjb25maWc6IEdyaWRDb25maWcsIGtleTogc3RyaW5nKTogUHJvbWlzZTxHcmlkQ29uZmlnPiBpbnN0ZWFkLlxuICAgKi9cbiAgc2F2ZUNvbmZpZyhjb25maWc6IEdyaWRDb25maWcsIGtleTogc3RyaW5nID0gdGhpcy5HUklEX0NPTkZJR19ERUZBVUxUX1NUT1JBR0VfS0VZKSB7XG4gICAgc3VwZXIuc2F2ZUNvbmZpZyhjb25maWcsIGtleSk7XG4gIH1cblxuICBhc3luYyB1bmFzc2lnbkFzc2V0KGFzc2V0OiBJTWFuYWdlZE9iamVjdCwgcGFyZW50UmVmOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IHsgaWQ6IGFzc2V0SWQgfSA9IGFzc2V0O1xuICAgIGNvbnN0IHsgaWQ6IHBhcmVudElkIH0gPSBwYXJlbnRSZWY7XG5cbiAgICBpZiAodGhpcy5pc0RldmljZShhc3NldCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5jaGlsZEFzc2V0c1JlbW92ZShhc3NldElkLCBwYXJlbnRJZCk7XG4gICAgICAgIGNvbnN0IGFsZXJ0TWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0RldmljZSB1bmFzc2lnbmVkLicpKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhhbGVydE1lc3NhZ2UpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgYWxlcnRNZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnQ291bGQgbm90IHVuYXNzaWduIGRldmljZS4nKSk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmRhbmdlcihhbGVydE1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5kZWFjdGl2YXRlU21hcnRydWxlc0ZvckFzc2V0KGFzc2V0LCBwYXJlbnRSZWYpO1xuICAgIH1cbiAgfVxuXG4gIGlzRGV2aWNlKGFzc2V0OiBJTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhYXNzZXQuaGFzT3duUHJvcGVydHkodGhpcy5JU19ERVZJQ0VfR1JPVVBfRlJBR01FTlQpICYmXG4gICAgICAhYXNzZXQuaGFzT3duUHJvcGVydHkodGhpcy5JU19EWU5BTUlDX0dST1VQX0ZSQUdNRU5UKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBkZWxldGVBc3NldChhc3NldDogSU1hbmFnZWRPYmplY3QsIHBhcmVudFJlZjogSU1hbmFnZWRPYmplY3QsIHBhcmFtcyA9IHt9KSB7XG4gICAgY29uc3QgaXNHcm91cCA9XG4gICAgICBhc3NldC5oYXNPd25Qcm9wZXJ0eSh0aGlzLklTX0RFVklDRV9HUk9VUF9GUkFHTUVOVCkgfHxcbiAgICAgIHRoaXMuc21hcnRHcm91cHNTZXJ2aWNlLmlzU21hcnRHcm91cChhc3NldCk7XG5cbiAgICBpZiAoaXNHcm91cCkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVHcm91cChhc3NldCwgcGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVEZXZpY2UoYXNzZXQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcGFyZW50UmVmICYmXG4gICAgICAhdGhpcy5zbWFydEdyb3Vwc1NlcnZpY2UuaXNTbWFydEdyb3VwKGFzc2V0KSAmJlxuICAgICAgIXRoaXMuc21hcnRHcm91cHNTZXJ2aWNlLmlzU21hcnRHcm91cFYyKGFzc2V0KVxuICAgICkge1xuICAgICAgYXdhaXQgdGhpcy5kZWFjdGl2YXRlU21hcnRydWxlc0ZvckFzc2V0KGFzc2V0LCBwYXJlbnRSZWYpO1xuICAgIH1cbiAgfVxuXG4gIHNob3VsZFNob3dXaXRoRGV2aWNlVXNlckNoZWNrYm94KGFzc2V0OiBJTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgb3duZXIsIGM4eV9Jc0RldmljZTogaXNSb290RGV2aWNlIH0gPSBhc3NldDtcbiAgICBjb25zdCBoYXNEZXZpY2VVc2VyQXNPd25lciA9IGFzc2V0Lm93bmVyICYmIHRoaXMuaXNEZXZpY2VVc2VyKG93bmVyKTtcblxuICAgIHJldHVybiBCb29sZWFuKGlzUm9vdERldmljZSAmJiBoYXNEZXZpY2VVc2VyQXNPd25lcik7XG4gIH1cblxuICBnZXREZWZhdWx0QnVsa0FjdGlvbkNvbnRyb2xzKCk6IEJ1bGtBY3Rpb25Db250cm9sW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGFzeW5jIGdldERhdGEoXG4gICAgY29sdW1uczogQ29sdW1uW10sXG4gICAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbixcbiAgICBwYXJlbnRSZWZlcmVuY2U6IElNYW5hZ2VkT2JqZWN0LFxuICAgIGJhc2VRdWVyeTogYW55ID0ge30sXG4gICAgdGV4dDogc3RyaW5nID0gbnVsbFxuICApIHtcbiAgICBjb25zdCBpc1Jvb3QgPSAhcGFyZW50UmVmZXJlbmNlO1xuICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5idWlsZENvbWJpbmVkUm9vdFF1ZXJ5RmlsdGVyKGNvbHVtbnMsIHBhZ2luYXRpb24sIGJhc2VRdWVyeSk7XG4gICAgICByZXR1cm4gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmdldFJvb3ROb2Rlcyh7IC4uLnBhZ2luYXRpb24sIC4uLih0ZXh0ICYmIHsgdGV4dCB9KSwgcXVlcnkgfSk7XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlcnMgPSB7XG4gICAgICAuLi50aGlzLmdldEFzc2V0c0ZpbHRlcnMoY29sdW1ucywgcGFnaW5hdGlvbiwgYmFzZVF1ZXJ5LCB0ZXh0KSxcbiAgICAgIHdpdGhQYXJlbnRzOiBmYWxzZVxuICAgIH07XG4gICAgaWYgKHRoaXMuYXNzZXROb2RlU2VydmljZS5pc0dyb3VwKHBhcmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuZ2V0R3JvdXBJdGVtcyhwYXJlbnRSZWZlcmVuY2UuaWQsIGZpbHRlcnMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzRHluYW1pY0dyb3VwKHBhcmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuZ2V0RHluYW1pY0dyb3VwSXRlbXMoXG4gICAgICAgIHBhcmVudFJlZmVyZW5jZS5jOHlfRGV2aWNlUXVlcnlTdHJpbmcsXG4gICAgICAgIGZpbHRlcnNcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNEZXZpY2UocGFyZW50UmVmZXJlbmNlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXNzZXROb2RlU2VydmljZS5nZXREZXZpY2VDaGlsZHJlbihwYXJlbnRSZWZlcmVuY2UuaWQsIGZpbHRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldENvdW50KFxuICAgIGNvbHVtbnM6IENvbHVtbltdLFxuICAgIHBhZ2luYXRpb246IFBhZ2luYXRpb24sXG4gICAgcGFyZW50UmVmZXJlbmNlOiBJTWFuYWdlZE9iamVjdCxcbiAgICBiYXNlUXVlcnk6IGFueSA9IHt9LFxuICAgIHRleHQ6IHN0cmluZyA9IG51bGxcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBkZWZhdWx0RmlsdGVycyA9IHtcbiAgICAgIHBhZ2VTaXplOiAxLFxuICAgICAgd2l0aENoaWxkcmVuOiBmYWxzZVxuICAgIH07XG4gICAgY29uc3QgZmlsdGVycyA9ICFwYXJlbnRSZWZlcmVuY2VcbiAgICAgID8ge1xuICAgICAgICAgIHF1ZXJ5OiB0aGlzLmJ1aWxkQ29tYmluZWRSb290UXVlcnlGaWx0ZXIoY29sdW1ucywgcGFnaW5hdGlvbiwgYmFzZVF1ZXJ5KSxcbiAgICAgICAgICAuLi5kZWZhdWx0RmlsdGVyc1xuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICAuLi50aGlzLmdldEFzc2V0c0ZpbHRlcnMoY29sdW1ucywgcGFnaW5hdGlvbiwgYmFzZVF1ZXJ5LCB0ZXh0KSxcbiAgICAgICAgICAuLi5kZWZhdWx0RmlsdGVyc1xuICAgICAgICB9O1xuICAgIHJldHVybiB0aGlzLmdldEFzc2V0c1N0YXRpc3RpY3MocGFyZW50UmVmZXJlbmNlLCBmaWx0ZXJzKTtcbiAgfVxuXG4gIGdldFRvdGFsKHBhcmVudFJlZmVyZW5jZTogSU1hbmFnZWRPYmplY3QsIGJhc2VRdWVyeTogYW55ID0ge30pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLnJvb3RRdWVyeUZpbHRlcigpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gIXBhcmVudFJlZmVyZW5jZVxuICAgICAgPyB0aGlzLnF1ZXJpZXNVdGlsLmFkZEFuZEZpbHRlcihxdWVyeUZpbHRlciwgYmFzZVF1ZXJ5KVxuICAgICAgOiBiYXNlUXVlcnk7XG4gICAgY29uc3QgZmlsdGVycyA9IHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXNVdGlsLmJ1aWxkUXVlcnkocXVlcnkpLFxuICAgICAgd2l0aENoaWxkcmVuOiBmYWxzZSxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgICAgcGFnZVNpemU6IDFcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmdldEFzc2V0c1N0YXRpc3RpY3MocGFyZW50UmVmZXJlbmNlLCBmaWx0ZXJzKTtcbiAgfVxuXG4gIGFzeW5jIGNhbkVkaXRHcm91cChncm91cDogSU1hbmFnZWRPYmplY3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuY2FuRWRpdChbUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU5dLCBncm91cCk7XG4gIH1cblxuICBjYW5DcmVhdGVHcm91cCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWU7XG4gICAgY29uc3QgaGFzQWRtaW5Sb2xlID0gdGhpcy51c2VyLmhhc0FueVJvbGUoY3VycmVudFVzZXIsIFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOLFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQ1JFQVRFXG4gICAgXSk7XG4gICAgcmV0dXJuIGhhc0FkbWluUm9sZTtcbiAgfVxuXG4gIGFzeW5jIGNhbkFzc2lnbkRldmljZShncm91cDogSU1hbmFnZWRPYmplY3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuY2FuRWRpdChbUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU5dLCBncm91cCk7XG4gIH1cblxuICBjYW5FZGl0U21hcnRHcm91cCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBTTUFSVF9HUk9VUFNfUk9MRVNfRURJVCA9IFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfU01BUlRHUk9VUF9VUERBVEUsXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX1NNQVJUR1JPVVBfQURNSU5cbiAgICBdO1xuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25zU2VydmljZS5oYXNBbnlSb2xlKFNNQVJUX0dST1VQU19ST0xFU19FRElUKTtcbiAgfVxuXG4gIGNhbkRlbGV0ZVNtYXJ0R3JvdXAoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgU01BUlRfR1JPVVBTX1JPTEVTX0RFTEVURSA9IFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfU01BUlRHUk9VUF9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOXG4gICAgXTtcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuaGFzQW55Um9sZShTTUFSVF9HUk9VUFNfUk9MRVNfREVMRVRFKTtcbiAgfVxuXG4gIGlzU21hcnRHcm91cChncm91cDogSU1hbmFnZWRPYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zbWFydEdyb3Vwc1NlcnZpY2UuaXNTbWFydEdyb3VwKGdyb3VwKSB8fCB0aGlzLnNtYXJ0R3JvdXBzU2VydmljZS5pc1NtYXJ0R3JvdXBWMihncm91cClcbiAgICApO1xuICB9XG5cbiAgaXNVc2luZ0ludmVudG9yeVJvbGVzKCkge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICBjb25zdCBoYXNBbnlJbnZlbnRvcnlSb2xlID0gdGhpcy51c2VyLmhhc0FueVJvbGUoY3VycmVudFVzZXIsIFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOLFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfUkVBRCxcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0NSRUFURVxuICAgIF0pO1xuICAgIHJldHVybiAhaGFzQW55SW52ZW50b3J5Um9sZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRBc3NldHNTdGF0aXN0aWNzKFxuICAgIHBhcmVudFJlZmVyZW5jZTogSU1hbmFnZWRPYmplY3QsXG4gICAgZmlsdGVyczogb2JqZWN0XG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgaXNSb290ID0gIXBhcmVudFJlZmVyZW5jZTtcbiAgICBpZiAoaXNSb290KSB7XG4gICAgICByZXR1cm4gKGF3YWl0IHRoaXMuYXNzZXROb2RlU2VydmljZS5nZXRSb290Tm9kZXMoZmlsdGVycykpLnBhZ2luZy50b3RhbFBhZ2VzO1xuICAgIH1cbiAgICBpZiAodGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzR3JvdXAocGFyZW50UmVmZXJlbmNlKSkge1xuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuZ2V0R3JvdXBJdGVtcyhwYXJlbnRSZWZlcmVuY2UuaWQsIGZpbHRlcnMpKS5wYWdpbmdcbiAgICAgICAgLnRvdGFsUGFnZXM7XG4gICAgfVxuICAgIGlmICh0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNEeW5hbWljR3JvdXAocGFyZW50UmVmZXJlbmNlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgYXdhaXQgdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmdldER5bmFtaWNHcm91cEl0ZW1zKFxuICAgICAgICAgIHBhcmVudFJlZmVyZW5jZS5jOHlfRGV2aWNlUXVlcnlTdHJpbmcsXG4gICAgICAgICAgZmlsdGVyc1xuICAgICAgICApXG4gICAgICApLnBhZ2luZy50b3RhbFBhZ2VzO1xuICAgIH1cbiAgICBpZiAodGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzRGV2aWNlKHBhcmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmdldERldmljZUNoaWxkcmVuKHBhcmVudFJlZmVyZW5jZS5pZCwgZmlsdGVycykpLnBhZ2luZ1xuICAgICAgICAudG90YWxQYWdlcztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRDb21iaW5lZFJvb3RRdWVyeUZpbHRlcihjb2x1bW5zLCBwYWdpbmF0aW9uLCBiYXNlUXVlcnkgPSB7fSkge1xuICAgIGNvbnN0IHVzZXJRdWVyeSA9IHRoaXMuZ2V0UXVlcnlPYmooY29sdW1ucywgcGFnaW5hdGlvbik7XG4gICAgY29uc3Qgcm9vdFF1ZXJ5ID0gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLnJvb3RRdWVyeUZpbHRlcigpO1xuICAgIGNvbnN0IG9yZGVyZWRSb290UXVlcnkgPSB0aGlzLnF1ZXJpZXNVdGlsLmFkZE9yZGVyYnlzKHJvb3RRdWVyeSwgdXNlclF1ZXJ5Ll9fb3JkZXJieSwgJ2FwcGVuZCcpO1xuICAgIGNvbnN0IHJvb3RBbmRVc2VyUXVlcnkgPSB0aGlzLnF1ZXJpZXNVdGlsLmFkZEFuZEZpbHRlcihvcmRlcmVkUm9vdFF1ZXJ5LCB1c2VyUXVlcnkuX19maWx0ZXIpO1xuICAgIGNvbnN0IGZ1bGxRdWVyeSA9IHRoaXMucXVlcmllc1V0aWwuYWRkQW5kRmlsdGVyKHJvb3RBbmRVc2VyUXVlcnksIGJhc2VRdWVyeSk7XG4gICAgcmV0dXJuIHRoaXMucXVlcmllc1V0aWwuYnVpbGRRdWVyeShmdWxsUXVlcnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkZWxldGVHcm91cChncm91cDogSU1hbmFnZWRPYmplY3QsIHBhcmFtczogYW55ID0ge30pIHtcbiAgICBjb25zdCB7IGNhc2NhZGUgfSA9IHBhcmFtcztcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnNtYXJ0R3JvdXBzU2VydmljZS5pc1NtYXJ0R3JvdXAoZ3JvdXApIHx8IHRoaXMuc21hcnRHcm91cHNTZXJ2aWNlLmlzU21hcnRHcm91cFYyKGdyb3VwKVxuICAgICAgICA/IGF3YWl0IHRoaXMuc21hcnRHcm91cHNTZXJ2aWNlLmRlbGV0ZShncm91cCwgeyBjYXNjYWRlIH0pXG4gICAgICAgIDogYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRlbGV0ZShncm91cCwgeyBjYXNjYWRlIH0pO1xuXG4gICAgICBjb25zdCBhbGVydE1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdcInt7IG5hbWUgfX1cIiBkZWxldGVkLicpLCB7XG4gICAgICAgIG5hbWU6IGdyb3VwLm5hbWVcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhhbGVydE1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBhbGVydE1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgZ2V0dGV4dCgnQ291bGQgbm90IGRlbGV0ZSBcInt7IG5hbWUgfX1cIi4nKSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGdyb3VwLm5hbWVcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmRhbmdlcihhbGVydE1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGVsZXRlRGV2aWNlKGRldmljZTogSU1hbmFnZWRPYmplY3QsIHBhcmFtczogYW55ID0ge30pIHtcbiAgICBjb25zdCB7IGNhc2NhZGUsIHdpdGhEZXZpY2VVc2VyIH0gPSBwYXJhbXM7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgb3duZXIgfSA9IGRldmljZTtcbiAgICAgIGNvbnN0IHNob3VsZFJlbW92ZU93bmVyID0gd2l0aERldmljZVVzZXIgJiYgb3duZXIgJiYgdGhpcy5pc0RldmljZVVzZXIob3duZXIpO1xuXG4gICAgICBzaG91bGRSZW1vdmVPd25lclxuICAgICAgICA/IGF3YWl0IHRoaXMuZGVsZXRlRGV2aWNlV2l0aFVzZXIoZGV2aWNlLCBjYXNjYWRlKVxuICAgICAgICA6IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZWxldGUoZGV2aWNlLCB7IGNhc2NhZGUgfSk7XG5cbiAgICAgIGNvbnN0IGFsZXJ0TWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0RldmljZSBkZWxldGVkLicpKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoYWxlcnRNZXNzYWdlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgYWxlcnRNZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnQ291bGQgbm90IGRlbGV0ZSBkZXZpY2UuJykpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZGFuZ2VyKGFsZXJ0TWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkZWFjdGl2YXRlU21hcnRydWxlc0ZvckFzc2V0KGFzc2V0OiBJTWFuYWdlZE9iamVjdCwgcGFyZW50UmVmOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IHsgaWQ6IGFzc2V0SWQgfSA9IGFzc2V0O1xuICAgIGNvbnN0IHsgaWQ6IHBhcmVudElkIH0gPSBwYXJlbnRSZWY7XG4gICAgY29uc3QgcnVsZXM6IElSdWxlW10gPSAoYXdhaXQgdGhpcy5zbWFydFJ1bGVzU2VydmljZS5saXN0QnlDb250ZXh0KHBhcmVudElkKSkuZGF0YTtcblxuICAgIGNvbnN0IHVwYXRlU21hcnRydWxlc1Byb21pc2VzID0gcnVsZXMubWFwKHJ1bGUgPT5cbiAgICAgIHRoaXMuc21hcnRSdWxlc1NlcnZpY2UuYnVsa0RlYWN0aXZhdGVFbmFibGVkU291cmNlcyhydWxlLCBbYXNzZXRJZF0pXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbCh1cGF0ZVNtYXJ0cnVsZXNQcm9taXNlcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGFsZXJ0TWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICBnZXR0ZXh0KCdDb3VsZCBub3QgZGVhY3RpdmF0ZSBzbWFydCBydWxlcy4nKVxuICAgICAgKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmRhbmdlcihhbGVydE1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNEZXZpY2VVc2VyKHVzZXJJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHVzZXJJZC5tYXRjaCgvXmRldmljZV8vKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGVsZXRlRGV2aWNlV2l0aFVzZXIoZGV2aWNlOiBJTWFuYWdlZE9iamVjdCwgY2FzY2FkZTogYm9vbGVhbikge1xuICAgIGNvbnN0IHBhcmFtcyA9IHsgY2FzY2FkZSwgd2l0aERldmljZVVzZXI6IHRydWUgfTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZWxldGUoZGV2aWNlLCBwYXJhbXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRlbGV0ZShkZXZpY2UsIHsgY2FzY2FkZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEFzc2V0c0ZpbHRlcnMoY29sdW1uczogQ29sdW1uW10sIHBhZ2luYXRpb246IFBhZ2luYXRpb24sIGJhc2VRdWVyeSwgdGV4dD86IHN0cmluZykge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5xdWVyaWVzVXRpbC5hZGRBbmRGaWx0ZXIodGhpcy5nZXRRdWVyeU9iaihjb2x1bW5zKSwgYmFzZVF1ZXJ5KTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uKHRleHQgJiYgeyB0ZXh0IH0pLFxuICAgICAgcXVlcnk6IHRoaXMucXVlcmllc1V0aWwuYnVpbGRRdWVyeShxdWVyeSksXG4gICAgICBwYWdlU2l6ZTogcGFnaW5hdGlvbi5wYWdlU2l6ZSB8fCB0aGlzLkRFRkFVTFRfUEFHRV9TSVpFLFxuICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudFBhZ2UsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWFzc2V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3ViLWFzc2V0cy9zdWItYXNzZXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUVMLGdCQUFnQixFQUdoQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBRUwsWUFBWSxFQUNaLGVBQWUsRUFDZixpQkFBaUIsRUFHakIsZUFBZSxFQUNmLE9BQU8sRUFHUCxXQUFXLEVBQ1gsc0JBQXNCLEVBQ3ZCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixnQ0FBZ0MsRUFDaEMsNEJBQTRCLEVBQzVCLHdCQUF3QixFQUN6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBS3hFLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxlQUFlO0lBTW5ELFlBQ1ksZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxRQUF5QixFQUN6QixJQUFpQixFQUNqQixnQkFBa0MsRUFDbEMsa0JBQXNDLEVBQ3RDLGlCQUFvQyxFQUNwQyxZQUEwQixFQUMxQixrQkFBK0IsRUFDL0IsVUFBNkIsRUFDN0Isc0JBQThDLEVBQ3RCLFlBQTZCO1FBRS9ELEtBQUssQ0FBQyxzQkFBc0Is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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSU1hbmFnZWRPYmplY3QsXG4gIEludmVudG9yeVNlcnZpY2UsXG4gIElSdWxlLFxuICBRdWVyaWVzVXRpbCxcbiAgU21hcnRHcm91cHNTZXJ2aWNlLFxuICBTbWFydFJ1bGVzU2VydmljZSxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWN0aW9uQ29udHJvbCxcbiAgQWxlcnRTZXJ2aWNlLFxuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEFzc2V0VHlwZXNTZXJ2aWNlLFxuICBCdWxrQWN0aW9uQ29udHJvbCxcbiAgQ29sdW1uLFxuICBEYXRhR3JpZFNlcnZpY2UsXG4gIGdldHRleHQsXG4gIEdyaWRDb25maWcsXG4gIFBhZ2luYXRpb24sXG4gIFBlcm1pc3Npb25zLFxuICBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQXNzZXROb2RlU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXNzZXRzLW5hdmlnYXRvcic7XG5pbXBvcnQge1xuICBBbGFybXNEZXZpY2VHcmlkQ29sdW1uLFxuICBJbWVpRGV2aWNlR3JpZENvbHVtbixcbiAgTW9kZWxEZXZpY2VHcmlkQ29sdW1uLFxuICBOYW1lRGV2aWNlR3JpZENvbHVtbixcbiAgUmVnaXN0cmF0aW9uRGF0ZURldmljZUdyaWRDb2x1bW4sXG4gIFNlcmlhbE51bWJlckRldmljZUdyaWRDb2x1bW4sXG4gIFN5c3RlbUlkRGV2aWNlR3JpZENvbHVtblxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RldmljZS1ncmlkJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFzc2V0VHlwZUdyaWRDb2x1bW4gfSBmcm9tICcuL2NvbHVtbnMvYXNzZXQtdHlwZS1ncmlkLWNvbHVtbic7XG5pbXBvcnQgeyBTVUJfQVNTRVRTX0NPTkZJRywgU3ViQXNzZXRzQ29uZmlnIH0gZnJvbSAnLi9zdWItYXNzZXRzLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3ViQXNzZXRzU2VydmljZSBleHRlbmRzIERhdGFHcmlkU2VydmljZSB7XG4gIHF1ZXJpZXNVdGlsOiBRdWVyaWVzVXRpbDtcbiAgcHJvdGVjdGVkIEdSSURfQ09ORklHX0RFRkFVTFRfU1RPUkFHRV9LRVkgPSAnc3ViLWFzc2V0cy1ncmlkLWNvbmZpZyc7XG4gIHByaXZhdGUgSVNfREVWSUNFX0dST1VQX0ZSQUdNRU5UID0gJ2M4eV9Jc0RldmljZUdyb3VwJztcbiAgcHJpdmF0ZSBJU19EWU5BTUlDX0dST1VQX0ZSQUdNRU5UID0gJ2M4eV9Jc0R5bmFtaWNHcm91cCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHVzZXI6IFVzZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhc3NldE5vZGVTZXJ2aWNlOiBBc3NldE5vZGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBzbWFydEdyb3Vwc1NlcnZpY2U6IFNtYXJ0R3JvdXBzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc21hcnRSdWxlc1NlcnZpY2U6IFNtYXJ0UnVsZXNTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcGVybWlzc2lvbnNTZXJ2aWNlOiBQZXJtaXNzaW9ucyxcbiAgICBwcm90ZWN0ZWQgYXNzZXRUeXBlczogQXNzZXRUeXBlc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgQEluamVjdChTVUJfQVNTRVRTX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogU3ViQXNzZXRzQ29uZmlnXG4gICkge1xuICAgIHN1cGVyKHVzZXJQcmVmZXJlbmNlc1NlcnZpY2UpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q3VzdG9tUHJvcGVydGllcyhncm91cDogSU1hbmFnZWRPYmplY3QpOiBQcm9taXNlPElNYW5hZ2VkT2JqZWN0W10+IHtcbiAgICBjb25zdCBhc3NldFR5cGUgPSB0aGlzLmFzc2V0VHlwZXMuZ2V0QXNzZXRUeXBlQnlOYW1lKGdyb3VwLnR5cGUpO1xuICAgIGlmIChhc3NldFR5cGUpIHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmNoaWxkQWRkaXRpb25zTGlzdChhc3NldFR5cGUsIHtcbiAgICAgICAgcGFnZVNpemU6IDIwMDAsXG4gICAgICAgIHF1ZXJ5OiBcIiRmaWx0ZXI9KGhhcygnYzh5X0lzQXNzZXRQcm9wZXJ0eScpKVwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXREZWZhdWx0Q29sdW1ucyhfZmlsdGVyYWJsZSA9IHRydWUsIF9zb3J0YWJsZSA9IHRydWUpOiBDb2x1bW5bXSB7XG4gICAgY29uc3QgZGVmYXVsdENvbHVtbnMgPSBbXG4gICAgICBuZXcgQXNzZXRUeXBlR3JpZENvbHVtbih7IHNvcnRPcmRlcjogJ2Rlc2MnIH0pLFxuICAgICAgbmV3IE5hbWVEZXZpY2VHcmlkQ29sdW1uKHsgc29ydE9yZGVyOiAnYXNjJyB9KSxcbiAgICAgIG5ldyBNb2RlbERldmljZUdyaWRDb2x1bW4oKSxcbiAgICAgIG5ldyBTZXJpYWxOdW1iZXJEZXZpY2VHcmlkQ29sdW1uKHsgdmlzaWJsZTogZmFsc2UgfSksXG4gICAgICBuZXcgUmVnaXN0cmF0aW9uRGF0ZURldmljZUdyaWRDb2x1bW4oeyB2aXNpYmxlOiBmYWxzZSB9KSxcbiAgICAgIG5ldyBTeXN0ZW1JZERldmljZUdyaWRDb2x1bW4oeyB2aXNpYmxlOiBmYWxzZSB9KSxcbiAgICAgIG5ldyBJbWVpRGV2aWNlR3JpZENvbHVtbih7IHZpc2libGU6IGZhbHNlIH0pLFxuICAgICAgbmV3IEFsYXJtc0RldmljZUdyaWRDb2x1bW4oKVxuICAgIF07XG4gICAgcmV0dXJuIGRlZmF1bHRDb2x1bW5zO1xuICB9XG5cbiAgZ2V0RGVmYXVsdFBhZ2luYXRpb24oKTogUGFnaW5hdGlvbiB7XG4gICAgY29uc3QgeyBwYWdpbmF0aW9uIH0gPSB0aGlzLmdldENvbmZpZygpO1xuICAgIHJldHVybiB7XG4gICAgICBwYWdlU2l6ZTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcbiAgICAgIGN1cnJlbnRQYWdlOiAxXG4gICAgfTtcbiAgfVxuXG4gIGdldERlZmF1bHRBY3Rpb25Db250cm9scygpOiBBY3Rpb25Db250cm9sW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0Q29uZmlnJChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8R3JpZENvbmZpZz4gaW5zdGVhZC5cbiAgICovXG4gIGdldENvbmZpZyhrZXk6IHN0cmluZyA9IHRoaXMuR1JJRF9DT05GSUdfREVGQVVMVF9TVE9SQUdFX0tFWSk6IEdyaWRDb25maWcge1xuICAgIHJldHVybiBzdXBlci5nZXRDb25maWcoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc2F2ZUNvbmZpZyQoY29uZmlnOiBHcmlkQ29uZmlnLCBrZXk6IHN0cmluZyk6IFByb21pc2U8R3JpZENvbmZpZz4gaW5zdGVhZC5cbiAgICovXG4gIHNhdmVDb25maWcoY29uZmlnOiBHcmlkQ29uZmlnLCBrZXk6IHN0cmluZyA9IHRoaXMuR1JJRF9DT05GSUdfREVGQVVMVF9TVE9SQUdFX0tFWSkge1xuICAgIHN1cGVyLnNhdmVDb25maWcoY29uZmlnLCBrZXkpO1xuICB9XG5cbiAgYXN5bmMgdW5hc3NpZ25Bc3NldChhc3NldDogSU1hbmFnZWRPYmplY3QsIHBhcmVudFJlZjogSU1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCB7IGlkOiBhc3NldElkIH0gPSBhc3NldDtcbiAgICBjb25zdCB7IGlkOiBwYXJlbnRJZCB9ID0gcGFyZW50UmVmO1xuXG4gICAgaWYgKHRoaXMuaXNEZXZpY2UoYXNzZXQpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuY2hpbGRBc3NldHNSZW1vdmUoYXNzZXRJZCwgcGFyZW50SWQpO1xuICAgICAgICBjb25zdCBhbGVydE1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdEZXZpY2UgdW5hc3NpZ25lZC4nKSk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoYWxlcnRNZXNzYWdlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IGFsZXJ0TWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0NvdWxkIG5vdCB1bmFzc2lnbiBkZXZpY2UuJykpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5kYW5nZXIoYWxlcnRNZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuZGVhY3RpdmF0ZVNtYXJ0cnVsZXNGb3JBc3NldChhc3NldCwgcGFyZW50UmVmKTtcbiAgICB9XG4gIH1cblxuICBpc0RldmljZShhc3NldDogSU1hbmFnZWRPYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIWFzc2V0Lmhhc093blByb3BlcnR5KHRoaXMuSVNfREVWSUNFX0dST1VQX0ZSQUdNRU5UKSAmJlxuICAgICAgIWFzc2V0Lmhhc093blByb3BlcnR5KHRoaXMuSVNfRFlOQU1JQ19HUk9VUF9GUkFHTUVOVClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQXNzZXQoYXNzZXQ6IElNYW5hZ2VkT2JqZWN0LCBwYXJlbnRSZWY6IElNYW5hZ2VkT2JqZWN0LCBwYXJhbXMgPSB7fSkge1xuICAgIGNvbnN0IGlzR3JvdXAgPVxuICAgICAgYXNzZXQuaGFzT3duUHJvcGVydHkodGhpcy5JU19ERVZJQ0VfR1JPVVBfRlJBR01FTlQpIHx8XG4gICAgICB0aGlzLnNtYXJ0R3JvdXBzU2VydmljZS5pc1NtYXJ0R3JvdXAoYXNzZXQpO1xuXG4gICAgaWYgKGlzR3JvdXApIHtcbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlR3JvdXAoYXNzZXQsIHBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlRGV2aWNlKGFzc2V0LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHBhcmVudFJlZiAmJlxuICAgICAgIXRoaXMuc21hcnRHcm91cHNTZXJ2aWNlLmlzU21hcnRHcm91cChhc3NldCkgJiZcbiAgICAgICF0aGlzLnNtYXJ0R3JvdXBzU2VydmljZS5pc1NtYXJ0R3JvdXBWMihhc3NldClcbiAgICApIHtcbiAgICAgIGF3YWl0IHRoaXMuZGVhY3RpdmF0ZVNtYXJ0cnVsZXNGb3JBc3NldChhc3NldCwgcGFyZW50UmVmKTtcbiAgICB9XG4gIH1cblxuICBzaG91bGRTaG93V2l0aERldmljZVVzZXJDaGVja2JveChhc3NldDogSU1hbmFnZWRPYmplY3QpOiBib29sZWFuIHtcbiAgICBjb25zdCB7IG93bmVyLCBjOHlfSXNEZXZpY2U6IGlzUm9vdERldmljZSB9ID0gYXNzZXQ7XG4gICAgY29uc3QgaGFzRGV2aWNlVXNlckFzT3duZXIgPSBhc3NldC5vd25lciAmJiB0aGlzLmlzRGV2aWNlVXNlcihvd25lcik7XG5cbiAgICByZXR1cm4gQm9vbGVhbihpc1Jvb3REZXZpY2UgJiYgaGFzRGV2aWNlVXNlckFzT3duZXIpO1xuICB9XG5cbiAgZ2V0RGVmYXVsdEJ1bGtBY3Rpb25Db250cm9scygpOiBCdWxrQWN0aW9uQ29udHJvbFtdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBhc3luYyBnZXREYXRhKFxuICAgIGNvbHVtbnM6IENvbHVtbltdLFxuICAgIHBhZ2luYXRpb246IFBhZ2luYXRpb24sXG4gICAgcGFyZW50UmVmZXJlbmNlOiBJTWFuYWdlZE9iamVjdCxcbiAgICBiYXNlUXVlcnk6IGFueSA9IHt9LFxuICAgIHRleHQ6IHN0cmluZyA9IG51bGxcbiAgKSB7XG4gICAgY29uc3QgaXNSb290ID0gIXBhcmVudFJlZmVyZW5jZTtcbiAgICBpZiAoaXNSb290KSB7XG4gICAgICBjb25zdCBxdWVyeSA9IHRoaXMuYnVpbGRDb21iaW5lZFJvb3RRdWVyeUZpbHRlcihjb2x1bW5zLCBwYWdpbmF0aW9uLCBiYXNlUXVlcnkpO1xuICAgICAgcmV0dXJuIHRoaXMuYXNzZXROb2RlU2VydmljZS5nZXRSb290Tm9kZXMoeyAuLi5wYWdpbmF0aW9uLCAuLi4odGV4dCAmJiB7IHRleHQgfSksIHF1ZXJ5IH0pO1xuICAgIH1cbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXRBc3NldHNGaWx0ZXJzKGNvbHVtbnMsIHBhZ2luYXRpb24sIGJhc2VRdWVyeSwgdGV4dCksXG4gICAgICB3aXRoUGFyZW50czogZmFsc2VcbiAgICB9O1xuICAgIGlmICh0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNHcm91cChwYXJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICByZXR1cm4gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmdldEdyb3VwSXRlbXMocGFyZW50UmVmZXJlbmNlLmlkLCBmaWx0ZXJzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYXNzZXROb2RlU2VydmljZS5pc0R5bmFtaWNHcm91cChwYXJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICByZXR1cm4gdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmdldER5bmFtaWNHcm91cEl0ZW1zKFxuICAgICAgICBwYXJlbnRSZWZlcmVuY2UuYzh5X0RldmljZVF1ZXJ5U3RyaW5nLFxuICAgICAgICBmaWx0ZXJzXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy5hc3NldE5vZGVTZXJ2aWNlLmlzRGV2aWNlKHBhcmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuZ2V0RGV2aWNlQ2hpbGRyZW4ocGFyZW50UmVmZXJlbmNlLmlkLCBmaWx0ZXJzKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRDb3VudChcbiAgICBjb2x1bW5zOiBDb2x1bW5bXSxcbiAgICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uLFxuICAgIHBhcmVudFJlZmVyZW5jZTogSU1hbmFnZWRPYmplY3QsXG4gICAgYmFzZVF1ZXJ5OiBhbnkgPSB7fSxcbiAgICB0ZXh0OiBzdHJpbmcgPSBudWxsXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgZGVmYXVsdEZpbHRlcnMgPSB7XG4gICAgICBwYWdlU2l6ZTogMSxcbiAgICAgIHdpdGhDaGlsZHJlbjogZmFsc2VcbiAgICB9O1xuICAgIGNvbnN0IGZpbHRlcnMgPSAhcGFyZW50UmVmZXJlbmNlXG4gICAgICA/IHtcbiAgICAgICAgICBxdWVyeTogdGhpcy5idWlsZENvbWJpbmVkUm9vdFF1ZXJ5RmlsdGVyKGNvbHVtbnMsIHBhZ2luYXRpb24sIGJhc2VRdWVyeSksXG4gICAgICAgICAgLi4uZGVmYXVsdEZpbHRlcnNcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgLi4udGhpcy5nZXRBc3NldHNGaWx0ZXJzKGNvbHVtbnMsIHBhZ2luYXRpb24sIGJhc2VRdWVyeSwgdGV4dCksXG4gICAgICAgICAgLi4uZGVmYXVsdEZpbHRlcnNcbiAgICAgICAgfTtcbiAgICByZXR1cm4gdGhpcy5nZXRBc3NldHNTdGF0aXN0aWNzKHBhcmVudFJlZmVyZW5jZSwgZmlsdGVycyk7XG4gIH1cblxuICBnZXRUb3RhbChwYXJlbnRSZWZlcmVuY2U6IElNYW5hZ2VkT2JqZWN0LCBiYXNlUXVlcnk6IGFueSA9IHt9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHRoaXMuYXNzZXROb2RlU2VydmljZS5yb290UXVlcnlGaWx0ZXIoKTtcbiAgICBjb25zdCBxdWVyeSA9ICFwYXJlbnRSZWZlcmVuY2VcbiAgICAgID8gdGhpcy5xdWVyaWVzVXRpbC5hZGRBbmRGaWx0ZXIocXVlcnlGaWx0ZXIsIGJhc2VRdWVyeSlcbiAgICAgIDogYmFzZVF1ZXJ5O1xuICAgIGNvbnN0IGZpbHRlcnMgPSB7XG4gICAgICBxdWVyeTogdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KHF1ZXJ5KSxcbiAgICAgIHdpdGhDaGlsZHJlbjogZmFsc2UsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICAgIHBhZ2VTaXplOiAxXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5nZXRBc3NldHNTdGF0aXN0aWNzKHBhcmVudFJlZmVyZW5jZSwgZmlsdGVycyk7XG4gIH1cblxuICBhc3luYyBjYW5FZGl0R3JvdXAoZ3JvdXA6IElNYW5hZ2VkT2JqZWN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmNhbkVkaXQoXG4gICAgICBbUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU4sIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU5dLFxuICAgICAgZ3JvdXBcbiAgICApO1xuICB9XG5cbiAgY2FuQ3JlYXRlR3JvdXAoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGNvbnN0IGhhc0FkbWluUm9sZSA9IHRoaXMudXNlci5oYXNBbnlSb2xlKGN1cnJlbnRVc2VyLCBbXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0NSRUFURSxcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU4sXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX0NSRUFURVxuICAgIF0pO1xuICAgIHJldHVybiBoYXNBZG1pblJvbGU7XG4gIH1cblxuICBhc3luYyBjYW5Bc3NpZ25EZXZpY2UoZ3JvdXA6IElNYW5hZ2VkT2JqZWN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmNhbkVkaXQoXG4gICAgICBbUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU4sIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU5dLFxuICAgICAgZ3JvdXBcbiAgICApO1xuICB9XG5cbiAgY2FuRWRpdFNtYXJ0R3JvdXAoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgU01BUlRfR1JPVVBTX1JPTEVTX0VESVQgPSBbXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX1NNQVJUR1JPVVBfVVBEQVRFLFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9TTUFSVEdST1VQX0FETUlOXG4gICAgXTtcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuaGFzQW55Um9sZShTTUFSVF9HUk9VUFNfUk9MRVNfRURJVCk7XG4gIH1cblxuICBjYW5EZWxldGVTbWFydEdyb3VwKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IFNNQVJUX0dST1VQU19ST0xFU19ERUxFVEUgPSBbXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX1NNQVJUR1JPVVBfQURNSU4sXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU5cbiAgICBdO1xuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25zU2VydmljZS5oYXNBbnlSb2xlKFNNQVJUX0dST1VQU19ST0xFU19ERUxFVEUpO1xuICB9XG5cbiAgaXNTbWFydEdyb3VwKGdyb3VwOiBJTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNtYXJ0R3JvdXBzU2VydmljZS5pc1NtYXJ0R3JvdXAoZ3JvdXApIHx8IHRoaXMuc21hcnRHcm91cHNTZXJ2aWNlLmlzU21hcnRHcm91cFYyKGdyb3VwKVxuICAgICk7XG4gIH1cblxuICBpc1VzaW5nSW52ZW50b3J5Um9sZXMoKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGNvbnN0IGhhc0FueUludmVudG9yeVJvbGUgPSB0aGlzLnVzZXIuaGFzQW55Um9sZShjdXJyZW50VXNlciwgW1xuICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU4sXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9SRUFELFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQ1JFQVRFLFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQ1JFQVRFLFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9SRUFEXG4gICAgXSk7XG4gICAgcmV0dXJuICFoYXNBbnlJbnZlbnRvcnlSb2xlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEFzc2V0c1N0YXRpc3RpY3MoXG4gICAgcGFyZW50UmVmZXJlbmNlOiBJTWFuYWdlZE9iamVjdCxcbiAgICBmaWx0ZXJzOiBvYmplY3RcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBpc1Jvb3QgPSAhcGFyZW50UmVmZXJlbmNlO1xuICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmdldFJvb3ROb2RlcyhmaWx0ZXJzKSkucGFnaW5nLnRvdGFsUGFnZXM7XG4gICAgfVxuICAgIGlmICh0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNHcm91cChwYXJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICByZXR1cm4gKGF3YWl0IHRoaXMuYXNzZXROb2RlU2VydmljZS5nZXRHcm91cEl0ZW1zKHBhcmVudFJlZmVyZW5jZS5pZCwgZmlsdGVycykpLnBhZ2luZ1xuICAgICAgICAudG90YWxQYWdlcztcbiAgICB9XG4gICAgaWYgKHRoaXMuYXNzZXROb2RlU2VydmljZS5pc0R5bmFtaWNHcm91cChwYXJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBhd2FpdCB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuZ2V0RHluYW1pY0dyb3VwSXRlbXMoXG4gICAgICAgICAgcGFyZW50UmVmZXJlbmNlLmM4eV9EZXZpY2VRdWVyeVN0cmluZyxcbiAgICAgICAgICBmaWx0ZXJzXG4gICAgICAgIClcbiAgICAgICkucGFnaW5nLnRvdGFsUGFnZXM7XG4gICAgfVxuICAgIGlmICh0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuaXNEZXZpY2UocGFyZW50UmVmZXJlbmNlKSkge1xuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuZ2V0RGV2aWNlQ2hpbGRyZW4ocGFyZW50UmVmZXJlbmNlLmlkLCBmaWx0ZXJzKSkucGFnaW5nXG4gICAgICAgIC50b3RhbFBhZ2VzO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZENvbWJpbmVkUm9vdFF1ZXJ5RmlsdGVyKGNvbHVtbnMsIHBhZ2luYXRpb24sIGJhc2VRdWVyeSA9IHt9KSB7XG4gICAgY29uc3QgdXNlclF1ZXJ5ID0gdGhpcy5nZXRRdWVyeU9iaihjb2x1bW5zLCBwYWdpbmF0aW9uKTtcbiAgICBjb25zdCByb290UXVlcnkgPSB0aGlzLmFzc2V0Tm9kZVNlcnZpY2Uucm9vdFF1ZXJ5RmlsdGVyKCk7XG4gICAgY29uc3Qgb3JkZXJlZFJvb3RRdWVyeSA9IHRoaXMucXVlcmllc1V0aWwuYWRkT3JkZXJieXMocm9vdFF1ZXJ5LCB1c2VyUXVlcnkuX19vcmRlcmJ5LCAnYXBwZW5kJyk7XG4gICAgY29uc3Qgcm9vdEFuZFVzZXJRdWVyeSA9IHRoaXMucXVlcmllc1V0aWwuYWRkQW5kRmlsdGVyKG9yZGVyZWRSb290UXVlcnksIHVzZXJRdWVyeS5fX2ZpbHRlcik7XG4gICAgY29uc3QgZnVsbFF1ZXJ5ID0gdGhpcy5xdWVyaWVzVXRpbC5hZGRBbmRGaWx0ZXIocm9vdEFuZFVzZXJRdWVyeSwgYmFzZVF1ZXJ5KTtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KGZ1bGxRdWVyeSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlbGV0ZUdyb3VwKGdyb3VwOiBJTWFuYWdlZE9iamVjdCwgcGFyYW1zOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IHsgY2FzY2FkZSB9ID0gcGFyYW1zO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc21hcnRHcm91cHNTZXJ2aWNlLmlzU21hcnRHcm91cChncm91cCkgfHwgdGhpcy5zbWFydEdyb3Vwc1NlcnZpY2UuaXNTbWFydEdyb3VwVjIoZ3JvdXApXG4gICAgICAgID8gYXdhaXQgdGhpcy5zbWFydEdyb3Vwc1NlcnZpY2UuZGVsZXRlKGdyb3VwLCB7IGNhc2NhZGUgfSlcbiAgICAgICAgOiBhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuZGVsZXRlKGdyb3VwLCB7IGNhc2NhZGUgfSk7XG5cbiAgICAgIGNvbnN0IGFsZXJ0TWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ1wie3sgbmFtZSB9fVwiIGRlbGV0ZWQuJyksIHtcbiAgICAgICAgbmFtZTogZ3JvdXAubmFtZVxuICAgICAgfSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGFsZXJ0TWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGFsZXJ0TWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICBnZXR0ZXh0KCdDb3VsZCBub3QgZGVsZXRlIFwie3sgbmFtZSB9fVwiLicpLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogZ3JvdXAubmFtZVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZGFuZ2VyKGFsZXJ0TWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkZWxldGVEZXZpY2UoZGV2aWNlOiBJTWFuYWdlZE9iamVjdCwgcGFyYW1zOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IHsgY2FzY2FkZSwgd2l0aERldmljZVVzZXIgfSA9IHBhcmFtcztcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBvd25lciB9ID0gZGV2aWNlO1xuICAgICAgY29uc3Qgc2hvdWxkUmVtb3ZlT3duZXIgPSB3aXRoRGV2aWNlVXNlciAmJiBvd25lciAmJiB0aGlzLmlzRGV2aWNlVXNlcihvd25lcik7XG5cbiAgICAgIHNob3VsZFJlbW92ZU93bmVyXG4gICAgICAgID8gYXdhaXQgdGhpcy5kZWxldGVEZXZpY2VXaXRoVXNlcihkZXZpY2UsIGNhc2NhZGUpXG4gICAgICAgIDogYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRlbGV0ZShkZXZpY2UsIHsgY2FzY2FkZSB9KTtcblxuICAgICAgY29uc3QgYWxlcnRNZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnRGV2aWNlIGRlbGV0ZWQuJykpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhhbGVydE1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBhbGVydE1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdDb3VsZCBub3QgZGVsZXRlIGRldmljZS4nKSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5kYW5nZXIoYWxlcnRNZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlYWN0aXZhdGVTbWFydHJ1bGVzRm9yQXNzZXQoYXNzZXQ6IElNYW5hZ2VkT2JqZWN0LCBwYXJlbnRSZWY6IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgY29uc3QgeyBpZDogYXNzZXRJZCB9ID0gYXNzZXQ7XG4gICAgY29uc3QgeyBpZDogcGFyZW50SWQgfSA9IHBhcmVudFJlZjtcbiAgICBjb25zdCBydWxlczogSVJ1bGVbXSA9IChhd2FpdCB0aGlzLnNtYXJ0UnVsZXNTZXJ2aWNlLmxpc3RCeUNvbnRleHQocGFyZW50SWQpKS5kYXRhO1xuXG4gICAgY29uc3QgdXBhdGVTbWFydHJ1bGVzUHJvbWlzZXMgPSBydWxlcy5tYXAocnVsZSA9PlxuICAgICAgdGhpcy5zbWFydFJ1bGVzU2VydmljZS5idWxrRGVhY3RpdmF0ZUVuYWJsZWRTb3VyY2VzKHJ1bGUsIFthc3NldElkXSlcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHVwYXRlU21hcnRydWxlc1Byb21pc2VzKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgYWxlcnRNZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgIGdldHRleHQoJ0NvdWxkIG5vdCBkZWFjdGl2YXRlIHNtYXJ0IHJ1bGVzLicpXG4gICAgICApO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZGFuZ2VyKGFsZXJ0TWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0RldmljZVVzZXIodXNlcklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdXNlcklkLm1hdGNoKC9eZGV2aWNlXy8pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkZWxldGVEZXZpY2VXaXRoVXNlcihkZXZpY2U6IElNYW5hZ2VkT2JqZWN0LCBjYXNjYWRlOiBib29sZWFuKSB7XG4gICAgY29uc3QgcGFyYW1zID0geyBjYXNjYWRlLCB3aXRoRGV2aWNlVXNlcjogdHJ1ZSB9O1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRlbGV0ZShkZXZpY2UsIHBhcmFtcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuZGVsZXRlKGRldmljZSwgeyBjYXNjYWRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXNzZXRzRmlsdGVycyhjb2x1bW5zOiBDb2x1bW5bXSwgcGFnaW5hdGlvbjogUGFnaW5hdGlvbiwgYmFzZVF1ZXJ5LCB0ZXh0Pzogc3RyaW5nKSB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnF1ZXJpZXNVdGlsLmFkZEFuZEZpbHRlcih0aGlzLmdldFF1ZXJ5T2JqKGNvbHVtbnMpLCBiYXNlUXVlcnkpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi4odGV4dCAmJiB7IHRleHQgfSksXG4gICAgICBxdWVyeTogdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KHF1ZXJ5KSxcbiAgICAgIHBhZ2VTaXplOiBwYWdpbmF0aW9uLnBhZ2VTaXplIHx8IHRoaXMuREVGQVVMVF9QQUdFX1NJWkUsXG4gICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50UGFnZSxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -524,7 +524,10 @@ class AssetNodeService {
524
524
  };
525
525
  const groupFilter = Object.assign(Object.assign({}, defaultFilter), customFilter);
526
526
  // due to BE performance limitations we do not allow filtering and sorting for a user without inventory roles
527
- if (!this.user.hasRole(this.appState.currentUser.value, Permissions.ROLE_INVENTORY_READ)) {
527
+ if (!this.user.hasAnyRole(this.appState.currentUser.value, [
528
+ Permissions.ROLE_INVENTORY_READ,
529
+ Permissions.ROLE_MANAGED_OBJECT_READ
530
+ ])) {
528
531
  delete groupFilter.query;
529
532
  Object.assign(groupFilter, {
530
533
  fragmentType: GroupFragment.groupFragmentType,
@@ -658,7 +661,10 @@ class AssetNodeService {
658
661
  */
659
662
  canDropNode(dropOnRoot) {
660
663
  return (!dropOnRoot ||
661
- this.user.hasRole(this.appState.currentUser.value, Permissions.ROLE_INVENTORY_ADMIN));
664
+ this.user.hasAnyRole(this.appState.currentUser.value, [
665
+ Permissions.ROLE_INVENTORY_ADMIN,
666
+ Permissions.ROLE_MANAGED_OBJECT_ADMIN
667
+ ]));
662
668
  }
663
669
  /**
664
670
  * There could be multiple breadcrumbs for devices,