@c8y/ngx-components 1018.503.23 → 1018.503.37
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/api/services.d.ts +1 -1
- package/core/forms/validation-pattern.d.ts +4 -0
- package/device-grid/device-grid.component.d.ts +7 -2
- package/esm2020/api/services.mjs +2 -2
- package/esm2020/child-devices/child-devices.component.mjs +1 -1
- package/esm2020/core/bootstrap/bootstrap.component.mjs +3 -3
- package/esm2020/core/dynamic-forms/json-schema/c8y-json-schema.service.mjs +8 -2
- package/esm2020/core/forms/validation-pattern.mjs +5 -1
- package/esm2020/device-grid/device-grid-extension.service.mjs +13 -8
- package/esm2020/device-grid/device-grid.component.mjs +30 -15
- package/esm2020/device-list/device-list.component.mjs +1 -1
- package/esm2020/operations/device-selector/device-selector.component.mjs +1 -1
- package/esm2020/replace-device-wizard/replace-device-wizard.component.mjs +2 -2
- package/esm2020/sub-assets/add-group/add-group.component.mjs +4 -3
- package/esm2020/sub-assets/asset-properties-item.component.mjs +7 -3
- package/esm2020/sub-assets/asset-properties.component.mjs +25 -10
- package/esm2020/sub-assets/assign-devices/assign-devices.component.mjs +4 -3
- package/esm2020/sub-assets/location/asset-location.component.mjs +5 -3
- package/esm2020/trusted-certificates/crl/crl-check-settings.component.mjs +39 -0
- package/esm2020/trusted-certificates/crl/crl-settings.component.mjs +109 -0
- package/esm2020/trusted-certificates/crl/crl-settings.module.mjs +46 -0
- package/esm2020/trusted-certificates/factories/tabs.factory.mjs +36 -0
- package/esm2020/trusted-certificates/factories/trusted-certificates-navigation.factory.mjs +26 -0
- package/esm2020/trusted-certificates/index.mjs +4 -4
- package/esm2020/trusted-certificates/{add-trusted-certificate.component.mjs → list/add-trusted-certificate.component.mjs} +1 -1
- package/esm2020/trusted-certificates/list/trusted-certificate-list.component.mjs +184 -0
- package/esm2020/trusted-certificates/list/trusted-certificate-list.module.mjs +54 -0
- package/esm2020/trusted-certificates/list/trusted-certificate.model.mjs +36 -0
- package/esm2020/trusted-certificates/trusted-certificates.module.mjs +24 -35
- package/fesm2015/c8y-ngx-components-api.mjs +3 -2
- package/fesm2015/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-child-devices.mjs +1 -1
- package/fesm2015/c8y-ngx-components-child-devices.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-device-grid.mjs +41 -21
- package/fesm2015/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-device-list.mjs +1 -1
- package/fesm2015/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-operations-device-selector.mjs +1 -1
- package/fesm2015/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-replace-device-wizard.mjs +1 -1
- package/fesm2015/c8y-ngx-components-replace-device-wizard.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sub-assets.mjs +39 -18
- package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-trusted-certificates.mjs +329 -86
- package/fesm2015/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +10 -3
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-api.mjs +3 -2
- package/fesm2020/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-child-devices.mjs +1 -1
- package/fesm2020/c8y-ngx-components-child-devices.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-device-grid.mjs +41 -21
- package/fesm2020/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-device-list.mjs +1 -1
- package/fesm2020/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-operations-device-selector.mjs +1 -1
- package/fesm2020/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-replace-device-wizard.mjs +1 -1
- package/fesm2020/c8y-ngx-components-replace-device-wizard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sub-assets.mjs +38 -17
- package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-trusted-certificates.mjs +314 -85
- package/fesm2020/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +13 -3
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +48 -0
- package/package.json +1 -1
- package/sub-assets/add-group/add-group.component.d.ts +2 -1
- package/sub-assets/asset-properties.component.d.ts +6 -0
- package/sub-assets/assign-devices/assign-devices.component.d.ts +2 -1
- package/trusted-certificates/crl/crl-check-settings.component.d.ts +18 -0
- package/trusted-certificates/crl/crl-settings.component.d.ts +28 -0
- package/trusted-certificates/crl/crl-settings.module.d.ts +13 -0
- package/trusted-certificates/factories/tabs.factory.d.ts +10 -0
- package/trusted-certificates/index.d.ts +3 -3
- package/trusted-certificates/{trusted-certificates.component.d.ts → list/trusted-certificate-list.component.d.ts} +4 -4
- package/trusted-certificates/list/trusted-certificate-list.module.d.ts +15 -0
- package/trusted-certificates/trusted-certificates.module.d.ts +4 -10
- package/esm2020/trusted-certificates/trusted-certificate.model.mjs +0 -36
- package/esm2020/trusted-certificates/trusted-certificates-navigation.factory.mjs +0 -26
- package/esm2020/trusted-certificates/trusted-certificates.component.mjs +0 -184
- /package/trusted-certificates/{trusted-certificates-navigation.factory.d.ts → factories/trusted-certificates-navigation.factory.d.ts} +0 -0
- /package/trusted-certificates/{add-trusted-certificate.component.d.ts → list/add-trusted-certificate.component.d.ts} +0 -0
- /package/trusted-certificates/{trusted-certificate.model.d.ts → list/trusted-certificate.model.d.ts} +0 -0
|
@@ -64,6 +64,11 @@ export class DeviceGridComponent {
|
|
|
64
64
|
this.loadingItemsLabel = gettext('Loading devices…');
|
|
65
65
|
/** The list of columns to be displayed in the grid. If not given, it defaults to standard columns. */
|
|
66
66
|
this.columns = this.deviceGridService.getDefaultColumns();
|
|
67
|
+
/**
|
|
68
|
+
* Represents the input property for hiding specific built-in action types.
|
|
69
|
+
* The `actionsToHide` input allows specifying an array of `BuiltInActionType` values or the string 'ALL' to hide all action controls
|
|
70
|
+
*/
|
|
71
|
+
this.builtInActionsToHide = [];
|
|
67
72
|
/** Determines whether items can be selected by clicking a checkbox in the first column. */
|
|
68
73
|
this.selectable = false;
|
|
69
74
|
/** Restricts selection to a single row only. Selection column displays radio button instead of checkboxes */
|
|
@@ -143,29 +148,37 @@ export class DeviceGridComponent {
|
|
|
143
148
|
return serverSideDataResult;
|
|
144
149
|
}
|
|
145
150
|
setActionControls() {
|
|
151
|
+
if (this.builtInActionsToHide === 'ALL') {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
146
154
|
const asArrayOfGroupedActionHooks = (hooks) => Object.values(groupBy(hooks, 'type'));
|
|
147
155
|
this.dgExtensionService.items$
|
|
148
156
|
.pipe(map(asArrayOfGroupedActionHooks), switchMap(from), map((hooks) => {
|
|
149
157
|
const { type, icon, text, showOnHover } = hooks[0];
|
|
158
|
+
const actionsToHide = this.builtInActionsToHide;
|
|
159
|
+
const shouldPushToActionControls = actionsToHide.length === 0 || !actionsToHide.includes(type);
|
|
150
160
|
const matchingHooks = (device) => hooks.filter(hook => hook.deviceMatches(device));
|
|
151
161
|
const hasMatchingHooks = (device) => !!matchingHooks(device).length;
|
|
152
162
|
const useInventoryDelete = (device) => !hasMatchingHooks(device) && type === "DELETE" /* BuiltInActionType.Delete */;
|
|
153
163
|
const resolveAction = (device) => useInventoryDelete(device)
|
|
154
164
|
? this.deviceGridService.delete(device)
|
|
155
165
|
: matchingHooks(device)[0].onAction(device);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
166
|
+
if (shouldPushToActionControls) {
|
|
167
|
+
this.actionControls.push({
|
|
168
|
+
type,
|
|
169
|
+
icon,
|
|
170
|
+
text,
|
|
171
|
+
showOnHover,
|
|
172
|
+
showIf: (device) => type === "DELETE" /* BuiltInActionType.Delete */ || hasMatchingHooks(device),
|
|
173
|
+
callback: (device) => toObservable(resolveAction(device))
|
|
174
|
+
.pipe(catchError(_err => EMPTY), takeUntil(this.destroyed$))
|
|
175
|
+
.subscribe(_success => {
|
|
176
|
+
if (useInventoryDelete(device) ||
|
|
177
|
+
matchingHooks(device)[0].refreshAfterActionDone)
|
|
178
|
+
this.refresh.emit();
|
|
179
|
+
})
|
|
180
|
+
});
|
|
181
|
+
}
|
|
169
182
|
}), takeUntil(this.destroyed$))
|
|
170
183
|
.subscribe();
|
|
171
184
|
}
|
|
@@ -180,7 +193,7 @@ export class DeviceGridComponent {
|
|
|
180
193
|
}
|
|
181
194
|
}
|
|
182
195
|
DeviceGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DeviceGridComponent, deps: [{ token: i1.DeviceGridService }, { token: i2.DeviceGridExtensionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
183
|
-
DeviceGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DeviceGridComponent, selector: "c8y-device-grid", inputs: { dataCallback: "dataCallback", refresh: "refresh", title: "title", loadMoreItemsLabel: "loadMoreItemsLabel", loadingItemsLabel: "loadingItemsLabel", legacyConfigKey: "legacyConfigKey", legacyFilterKey: "legacyFilterKey", columns: "columns", _pagination: ["pagination", "_pagination"], _infiniteScroll: ["infiniteScroll", "_infiniteScroll"], _actionControls: ["actionControls", "_actionControls"], selectable: "selectable", singleSelection: "singleSelection", baseQuery: "baseQuery", _bulkActionControls: ["bulkActionControls", "_bulkActionControls"], _headerActionControls: ["headerActionControls", "_headerActionControls"], childDeviceGrid: "childDeviceGrid", parentDeviceId: "parentDeviceId", withChildren: "withChildren", showSearch: "showSearch", activeClassName: "activeClassName" }, outputs: { onColumnsChange: "onColumnsChange", onFilterChange: "onFilterChange", onDeviceQueryStringChange: "onDeviceQueryStringChange", itemsSelect: "itemsSelect" }, providers: [
|
|
196
|
+
DeviceGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DeviceGridComponent, selector: "c8y-device-grid", inputs: { dataCallback: "dataCallback", refresh: "refresh", title: "title", loadMoreItemsLabel: "loadMoreItemsLabel", loadingItemsLabel: "loadingItemsLabel", legacyConfigKey: "legacyConfigKey", legacyFilterKey: "legacyFilterKey", columns: "columns", _pagination: ["pagination", "_pagination"], _infiniteScroll: ["infiniteScroll", "_infiniteScroll"], builtInActionsToHide: "builtInActionsToHide", _actionControls: ["actionControls", "_actionControls"], selectable: "selectable", singleSelection: "singleSelection", baseQuery: "baseQuery", _bulkActionControls: ["bulkActionControls", "_bulkActionControls"], _headerActionControls: ["headerActionControls", "_headerActionControls"], childDeviceGrid: "childDeviceGrid", parentDeviceId: "parentDeviceId", withChildren: "withChildren", showSearch: "showSearch", activeClassName: "activeClassName" }, outputs: { onColumnsChange: "onColumnsChange", onFilterChange: "onFilterChange", onDeviceQueryStringChange: "onDeviceQueryStringChange", itemsSelect: "itemsSelect" }, providers: [
|
|
184
197
|
{
|
|
185
198
|
provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
|
|
186
199
|
useExisting: forwardRef(() => DeviceGridComponent)
|
|
@@ -217,6 +230,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
217
230
|
}], _infiniteScroll: [{
|
|
218
231
|
type: Input,
|
|
219
232
|
args: ['infiniteScroll']
|
|
233
|
+
}], builtInActionsToHide: [{
|
|
234
|
+
type: Input
|
|
220
235
|
}], _actionControls: [{
|
|
221
236
|
type: Input,
|
|
222
237
|
args: ['actionControls']
|
|
@@ -254,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
254
269
|
type: ViewChild,
|
|
255
270
|
args: [DataGridComponent, { static: true }]
|
|
256
271
|
}] } });
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLWdyaWQvZGV2aWNlLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGV2aWNlLWdyaWQvZGV2aWNlLWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFFTCxZQUFZLEVBSVosaUJBQWlCLEVBRWpCLG1CQUFtQixFQUVuQixPQUFPLEVBTVAsK0JBQStCLEVBSS9CLFlBQVksRUFDYixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBWTFELE1BQU0sT0FBTyxtQkFBbUI7SUF5QjlCLDJIQUEySDtJQUMzSCxJQUF5QixXQUFXLENBQUMsS0FBaUI7UUFDcEQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsSUFBNkIsZUFBZSxDQUFDLGNBQTRCO1FBQ3ZFLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksY0FBYyxFQUFFO1lBQ2xCLElB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QWxDLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFXUCxRQUFRO3NCQURQLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFjdGlvbkNvbnRyb2wsXG4gIGFsZXJ0T25FcnJvcixcbiAgQnVpbHRJbkFjdGlvblR5cGUsXG4gIEJ1bGtBY3Rpb25Db250cm9sLFxuICBDb2x1bW4sXG4gIERhdGFHcmlkQ29tcG9uZW50LFxuICBEYXRhU291cmNlTW9kaWZpZXIsXG4gIEZpbHRlcmluZ0FjdGlvblR5cGUsXG4gIEZpbHRlcmluZ01vZGlmaWVyLFxuICBnZXR0ZXh0LFxuICBIZWFkZXJBY3Rpb25Db250cm9sLFxuICBMb2FkTW9yZU1vZGUsXG4gIFBhZ2luYXRpb24sXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2UsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0UsXG4gIFJvdyxcbiAgU2VydmVyU2lkZURhdGFDYWxsYmFjayxcbiAgU2VydmVyU2lkZURhdGFSZXN1bHQsXG4gIHRvT2JzZXJ2YWJsZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGdyb3VwQnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgRU1QVFksIGZyb20sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEZXZpY2VHcmlkRXh0ZW5zaW9uU2VydmljZSB9IGZyb20gJy4vZGV2aWNlLWdyaWQtZXh0ZW5zaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YUNhbGxiYWNrLCBEZXZpY2VHcmlkQWN0aW9uSG9vaywgRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi9kZXZpY2UtZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBEZXZpY2VHcmlkU2VydmljZSB9IGZyb20gJy4vZGV2aWNlLWdyaWQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kZXZpY2UtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2UtZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0UsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEZXZpY2VHcmlkQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2Uge1xuICAvKiogT3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBhbGxvd3MgdG8gbW9kaWZ5IHNlcnZlciBzaWRlIGRhdGEgcmVzdWx0IGJlZm9yZSBpdCdzIHJlbmRlcmVkLiAqL1xuICBASW5wdXQoKSBkYXRhQ2FsbGJhY2s6IERhdGFDYWxsYmFjaztcbiAgLyoqIFRha2VzIGFuIGV2ZW50IGVtaXR0ZXIuIFdoZW4gYW4gZXZlbnQgaXMgZW1pdHRlZCwgdGhlIGdyaWQgd2lsbCBiZSByZWxvYWRlZC4gKi9cbiAgQElucHV0KCkgcmVmcmVzaDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKiogVGhlIHRpdGxlIGZvciB0aGUgZGF0YSBncmlkLCBpdCdzIGRpc3BsYXllZCBpbiB0aGUgZ3JpZCdzIGhlYWRlci4gKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9IGdldHRleHQoJ0RldmljZXMnKTtcbiAgLyoqIFRoZSBsYWJlbCBmb3IgbG9hZCBtb3JlIGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgbG9hZE1vcmVJdGVtc0xhYmVsID0gZ2V0dGV4dCgnTG9hZCBtb3JlIGRldmljZXMnKTtcbiAgLyoqIFRoZSBsYWJlbCBmb3IgbG9hZGluZyBpbmRpY2F0b3IuICovXG4gIEBJbnB1dCgpIGxvYWRpbmdJdGVtc0xhYmVsOiBzdHJpbmcgPSBnZXR0ZXh0KCdMb2FkaW5nIGRldmljZXPigKYnKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqXG4gICAqIEludGVybmFsIHVzZSBvbmx5OiB1c2VkIHRvIGRlZmluZSB1c2VyIHByZWZlcmVuY2VzIGtleSB1bmRlciB3aGljaCAnQWxsIGRldmljZXMnIGNvbHVtbiBjb25maWcgaXMgc3RvcmVkLlxuICAgKi9cbiAgQElucHV0KCkgbGVnYWN5Q29uZmlnS2V5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKlxuICAgKiBJbnRlcm5hbCB1c2Ugb25seTogdXNlZCB0byBkZWZpbmUgdXNlciBwcmVmZXJlbmNlcyBrZXkgdW5kZXIgd2hpY2ggJ0FsbCBkZXZpY2VzJyBmaWx0ZXIvc29ydGluZyBjb25maWcgaXMgc3RvcmVkLlxuICAgKi9cbiAgQElucHV0KCkgbGVnYWN5RmlsdGVyS2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgbGlzdCBvZiBjb2x1bW5zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZ3JpZC4gSWYgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byBzdGFuZGFyZCBjb2x1bW5zLiAqL1xuICBASW5wdXQoJ2NvbHVtbnMnKSBjb2x1bW5zOiBDb2x1bW5bXSA9IHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0RGVmYXVsdENvbHVtbnMoKTtcbiAgLyoqIFBhZ2luYXRpb24gc2V0dGluZ3MsIGUuZy4gYWxsb3dzIGZvciBzZXR0aW5nIGN1cnJlbnQgcGFnZSBvciBwYWdlIHNpemUuIElmIG5vdCBnaXZlbiwgZGVmYXVsdHMgdG8gc3RhbmRhcmQgc2V0dGluZ3MuICovXG4gIEBJbnB1dCgncGFnaW5hdGlvbicpIHNldCBfcGFnaW5hdGlvbih2YWx1ZTogUGFnaW5hdGlvbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIGluZmluaXRlU2Nyb2xsOiBMb2FkTW9yZU1vZGU7XG4gIC8qKiBTZXRzIGxvYWQgbW9yZSBtb2RlLiAqL1xuICBASW5wdXQoJ2luZmluaXRlU2Nyb2xsJykgc2V0IF9pbmZpbml0ZVNjcm9sbChpbmZpbml0ZVNjcm9sbDogTG9hZE1vcmVNb2RlKSB7XG4gICAgdGhpcy5pbmZpbml0ZVNjcm9sbCA9IGluZmluaXRlU2Nyb2xsO1xuICAgIGlmIChpbmZpbml0ZVNjcm9sbCkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uID0gdGhpcy5kZXZpY2VHcmlkU2VydmljZS5nZXRJbmZpbml0ZVNjcm9sbFBhZ2luYXRpb24oKTtcbiAgICB9XG4gIH1cbiAgLyoqIFNldHMgYWN0aW9uIGNvbnRyb2xzIChhY3Rpb25zIGF2YWlsYWJsZSBmb3IgaW5kaXZpZHVhbCBpdGVtcykuIElmIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gc3RhbmRhcmQgYWN0aW9ucy4gKi9cbiAgQElucHV0KCdhY3Rpb25Db250cm9scycpIHNldCBfYWN0aW9uQ29udHJvbHModmFsdWU6IEFjdGlvbkNvbnRyb2xbXSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5hY3Rpb25Db250cm9scyA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGlvbkNvbnRyb2xzID0gdGhpcy5kZXZpY2VHcmlkU2VydmljZS5nZXREZWZhdWx0QWN0aW9uQ29udHJvbHMoKTtcbiAgICB9XG4gIH1cbiAgLyoqIERldGVybWluZXMgd2hldGhlciBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQgYnkgY2xpY2tpbmcgYSBjaGVja2JveCBpbiB0aGUgZmlyc3QgY29sdW1uLiAqL1xuICBASW5wdXQoKSBzZWxlY3RhYmxlID0gZmFsc2U7XG4gIC8qKiBSZXN0cmljdHMgc2VsZWN0aW9uIHRvIGEgc2luZ2xlIHJvdyBvbmx5LiBTZWxlY3Rpb24gY29sdW1uIGRpc3BsYXlzIHJhZGlvIGJ1dHRvbiBpbnN0ZWFkIG9mIGNoZWNrYm94ZXMgKi9cbiAgQElucHV0KCkgc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XG4gIC8qKiBTZXRzIHRoZSBiYXNlIHF1ZXJ5IHdoaWNoIGlzIGFwcGVuZGVkIHRvIHRoZSByZXF1ZXN0IGZvciBkYXRhLiAqL1xuICBASW5wdXQoKSBiYXNlUXVlcnk6IG9iamVjdCA9IHt9O1xuICAvKiogU2V0cyBidWxrIGFjdGlvbiBjb250cm9scyAoYWN0aW9ucyBhdmFpbGFibGUgZm9yIGl0ZW1zIHNlbGVjdGVkIGJ5IHVzZXIpLiBJZiBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIHN0YW5kYXJkIGJ1bGsgYWN0aW9ucy4gKi9cbiAgQElucHV0KCdidWxrQWN0aW9uQ29udHJvbHMnKSBzZXQgX2J1bGtBY3Rpb25Db250cm9scyh2YWx1ZTogQnVsa0FjdGlvbkNvbnRyb2xbXSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5idWxrQWN0aW9uQ29udHJvbHMgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWxrQWN0aW9uQ29udHJvbHMgPSB0aGlzLmRldmljZUdyaWRTZXJ2aWNlLmdldERlZmF1bHRCdWxrQWN0aW9uQ29udHJvbHMoKTtcbiAgICB9XG4gIH1cbiAgLyoqIFNldHMgaGVhZGVyIGFjdGlvbiBjb250cm9scyAoYWN0aW9ucyBhdmFpbGFibGUgZnJvbSB0aGUgZ3JpZCBoZWFkZXIpLiBJZiBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIGVtcHR5IGxpc3Qgb2YgYWN0aW9ucy4gKi9cbiAgQElucHV0KCdoZWFkZXJBY3Rpb25Db250cm9scycpIHNldCBfaGVhZGVyQWN0aW9uQ29udHJvbHModmFsdWU6IEhlYWRlckFjdGlvbkNvbnRyb2xbXSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5oZWFkZXJBY3Rpb25Db250cm9scyA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlYWRlckFjdGlvbkNvbnRyb2xzID0gdGhpcy5kZXZpY2VHcmlkU2VydmljZS5nZXREZWZhdWx0SGVhZGVyQWN0aW9uQ29udHJvbHMoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgY2hpbGREZXZpY2VHcmlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBhcmVudERldmljZUlkOiBzdHJpbmc7XG4gIC8qKiBTZXRzIHRoZSB3aXRoQ2hpbGRyZW4gcXVlcnkgd2hpY2ggaXMgYXBwZW5kZWQgdG8gdGhlIHJlcXVlc3QuICovXG4gIEBJbnB1dCgpIHdpdGhDaGlsZHJlbiA9IGZhbHNlO1xuICAvKipcbiAgICogRW5hYmxlcyB0aGUgc2VhcmNoIGZvciBkZXZpY2VzIHdoZXJlIGFueSBkZXZpY2UgcHJvcGVyeSBpcyBtYXRjaGVkIGFnYWlucyB0aGUgc2VhcmNoIHRlcm0uXG4gICAqIEVuYWJsZWQgYnkgZGVmYXVsdC4gVGhpcyBpbnB1dCBkb2VzIG5vdCB0YWtlIGVmZmVjdCBpZiB0aGUgPGNvZGU+Y2hpbGREZXZpY2VHcmlkPC9jb2RlPiBpbnB1dCBpcyBzZXQgdG8gPGNvZGU+dHJ1ZTwvY29kZT5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dTZWFyY2ggPSB0cnVlO1xuICAvKipcbiAgICogU2V0cyB0aGUgY2xhc3MgbmFtZSB1c2VkIGZvciBhY3RpdmUgcm93cyAobGFzdCBjbGlja2VkKS5cbiAgICogU2V0IGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIGFwcGVuZGluZyBhY3RpdmUgY2xhc3MgdG8gZ3JpZCByb3dzLlxuICAgKi9cbiAgQElucHV0KClcbiAgYWN0aXZlQ2xhc3NOYW1lID0gJ2FjdGl2ZSc7XG4gIC8qKiBFbWl0cyBhbiBldmVudCB3aGVuIGNvbHVtbnMgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiAqL1xuICBAT3V0cHV0KCkgb25Db2x1bW5zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q29sdW1uW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb2x1bW5bXT4oKTtcbiAgQE91dHB1dCgpIG9uRmlsdGVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RmlsdGVyQ29uZmlnW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJDb25maWdbXT4oKTtcbiAgQE91dHB1dCgpIG9uRGV2aWNlUXVlcnlTdHJpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIC8qKiBFbWl0cyBhbiBldmVudCB3aGVuIGl0ZW1zIHNlbGVjdGlvbiBjaGFuZ2VzLiBUaGUgYXJyYXkgY29udGFpbnMgaWRzIG9mIHNlbGVjdGVkIGl0ZW1zLiAqL1xuICBAT3V0cHV0KCkgaXRlbXNTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIGFjdGlvbkNvbnRyb2xzOiBBY3Rpb25Db250cm9sW10gPSBbXTtcbiAgYXBwbGllZEZpbHRlcnM6IEZpbHRlckNvbmZpZ1tdID0gW107XG4gIHBhZ2luYXRpb246IFBhZ2luYXRpb24gPSB0aGlzLmRldmljZUdyaWRTZXJ2aWNlLmdldERlZmF1bHRQYWdpbmF0aW9uKCk7XG4gIGJ1bGtBY3Rpb25Db250cm9sczogQnVsa0FjdGlvbkNvbnRyb2xbXSA9IHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0RGVmYXVsdEJ1bGtBY3Rpb25Db250cm9scygpO1xuICBoZWFkZXJBY3Rpb25Db250cm9sczogSGVhZGVyQWN0aW9uQ29udHJvbFtdID1cbiAgICB0aGlzLmRldmljZUdyaWRTZXJ2aWNlLmdldERlZmF1bHRIZWFkZXJBY3Rpb25Db250cm9scygpO1xuICBzZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrOiBTZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrO1xuXG4gIEBWaWV3Q2hpbGQoRGF0YUdyaWRDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGRhdGFHcmlkOiBEYXRhR3JpZENvbXBvbmVudDtcbiAgcHJvZHVjdEV4cGVyaWVuY2VFdmVudDogUHJvZHVjdEV4cGVyaWVuY2VFdmVudDtcblxuICBwcml2YXRlIGRlc3Ryb3llZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkZXZpY2VHcmlkU2VydmljZTogRGV2aWNlR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZ0V4dGVuc2lvblNlcnZpY2U6IERldmljZUdyaWRFeHRlbnNpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc2VydmVyU2lkZURhdGFDYWxsYmFjayA9IHRoaXMub25EYXRhU291cmNlTW9kaWZpZXIuYmluZCh0aGlzKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0QWN0aW9uQ29udHJvbHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB0cmFja0J5TmFtZShfaW5kZXgsIGNvbHVtbjogQ29sdW1uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29sdW1uLm5hbWU7XG4gIH1cblxuICBhc3luYyBvbkRhdGFTb3VyY2VNb2RpZmllcihcbiAgICBkYXRhU291cmNlTW9kaWZpZXI6IERhdGFTb3VyY2VNb2RpZmllclxuICApOiBQcm9taXNlPFNlcnZlclNpZGVEYXRhUmVzdWx0PiB7XG4gICAgbGV0IHNlcnZlclNpZGVEYXRhUmVzdWx0OiBTZXJ2ZXJTaWRlRGF0YVJlc3VsdDtcbiAgICBsZXQgZmlsdGVyZWRTaXplOiBudW1iZXI7XG4gICAgbGV0IHNpemU6IG51bWJlcjtcbiAgICBpZiAodGhpcy5jaGlsZERldmljZUdyaWQpIHtcbiAgICAgIGNvbnN0IHsgcmVzLCBkYXRhLCBwYWdpbmcgfSA9IGF3YWl0IGFsZXJ0T25FcnJvcihcbiAgICAgICAgdGhpcy5kZXZpY2VHcmlkU2VydmljZS5nZXRDaGlsZERldmljZURhdGEoXG4gICAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLmNvbHVtbnMsXG4gICAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLnBhZ2luYXRpb24sXG4gICAgICAgICAgdGhpcy5iYXNlUXVlcnksXG4gICAgICAgICAgdGhpcy53aXRoQ2hpbGRyZW4sXG4gICAgICAgICAgdGhpcy5wYXJlbnREZXZpY2VJZFxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICBmaWx0ZXJlZFNpemUgPSBhd2FpdCBhbGVydE9uRXJyb3IoXG4gICAgICAgIHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0Q291bnRDaGlsZERldmljZXMoXG4gICAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLmNvbHVtbnMsXG4gICAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLnBhZ2luYXRpb24sXG4gICAgICAgICAgdGhpcy5iYXNlUXVlcnksXG4gICAgICAgICAgdGhpcy5wYXJlbnREZXZpY2VJZFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgc2l6ZSA9IGF3YWl0IGFsZXJ0T25FcnJvcihcbiAgICAgICAgdGhpcy5kZXZpY2VHcmlkU2VydmljZS5nZXRUb3RhbENoaWxkRGV2aWNlcyh0aGlzLmJhc2VRdWVyeSwgdGhpcy5wYXJlbnREZXZpY2VJZClcbiAgICAgICk7XG5cbiAgICAgIHNlcnZlclNpZGVEYXRhUmVzdWx0ID0ge1xuICAgICAgICByZXMsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIHBhZ2luZyxcbiAgICAgICAgZmlsdGVyZWRTaXplLFxuICAgICAgICBzaXplXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IHJlcywgZGF0YSwgcGFnaW5nIH0gPSBhd2FpdCBhbGVydE9uRXJyb3IoXG4gICAgICAgIHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0RGF0YShcbiAgICAgICAgICBkYXRhU291cmNlTW9kaWZpZXIuY29sdW1ucyxcbiAgICAgICAgICBkYXRhU291cmNlTW9kaWZpZXIucGFnaW5hdGlvbixcbiAgICAgICAgICB0aGlzLmJhc2VRdWVyeSxcbiAgICAgICAgICB0aGlzLndpdGhDaGlsZHJlbixcbiAgICAgICAgICBkYXRhU291cmNlTW9kaWZpZXIuc2VhcmNoVGV4dFxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICBmaWx0ZXJlZFNpemUgPSBhd2FpdCBhbGVydE9uRXJyb3IoXG4gICAgICAgIHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0Q291bnQoXG4gICAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLmNvbHVtbnMsXG4gICAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLnBhZ2luYXRpb24sXG4gICAgICAgICAgdGhpcy5iYXNlUXVlcnksXG4gICAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLnNlYXJjaFRleHRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHNpemUgPSBhd2FpdCBhbGVydE9uRXJyb3IodGhpcy5kZXZpY2VHcmlkU2VydmljZS5nZXRUb3RhbCh0aGlzLmJhc2VRdWVyeSkpO1xuXG4gICAgICBzZXJ2ZXJTaWRlRGF0YVJlc3VsdCA9IHtcbiAgICAgICAgcmVzLFxuICAgICAgICBkYXRhLFxuICAgICAgICBwYWdpbmcsXG4gICAgICAgIGZpbHRlcmVkU2l6ZSxcbiAgICAgICAgc2l6ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ29sdW1uc0NoYW5nZS5lbWl0KGRhdGFTb3VyY2VNb2RpZmllci5jb2x1bW5zKTtcbiAgICB0aGlzLm9uRGV2aWNlUXVlcnlTdHJpbmdDaGFuZ2UuZW1pdChcbiAgICAgIHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0RGV2aWNlUXVlcnlTdHJpbmcoZGF0YVNvdXJjZU1vZGlmaWVyLmNvbHVtbnMsIHRoaXMuYmFzZVF1ZXJ5KVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5kYXRhQ2FsbGJhY2spIHtcbiAgICAgIHNlcnZlclNpZGVEYXRhUmVzdWx0ID0gdGhpcy5kYXRhQ2FsbGJhY2soc2VydmVyU2lkZURhdGFSZXN1bHQpO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJ2ZXJTaWRlRGF0YVJlc3VsdDtcbiAgfVxuXG4gIHNldEFjdGlvbkNvbnRyb2xzKCkge1xuICAgIGNvbnN0IGFzQXJyYXlPZkdyb3VwZWRBY3Rpb25Ib29rcyA9IChob29rczogRGV2aWNlR3JpZEFjdGlvbkhvb2tbXSkgPT5cbiAgICAgIE9iamVjdC52YWx1ZXMoZ3JvdXBCeShob29rcywgJ3R5cGUnKSkgYXMgRGV2aWNlR3JpZEFjdGlvbkhvb2tbXTtcblxuICAgIHRoaXMuZGdFeHRlbnNpb25TZXJ2aWNlLml0ZW1zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChhc0FycmF5T2ZHcm91cGVkQWN0aW9uSG9va3MpLFxuICAgICAgICBzd2l0Y2hNYXAoZnJvbSksXG4gICAgICAgIG1hcCgoaG9va3M6IERldmljZUdyaWRBY3Rpb25Ib29rW10pID0+IHtcbiAgICAgICAgICBjb25zdCB7IHR5cGUsIGljb24sIHRleHQsIHNob3dPbkhvdmVyIH0gPSBob29rc1swXTtcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ0hvb2tzID0gKGRldmljZTogUm93KSA9PlxuICAgICAgICAgICAgaG9va3MuZmlsdGVyKGhvb2sgPT4gaG9vay5kZXZpY2VNYXRjaGVzKGRldmljZSBhcyBJTWFuYWdlZE9iamVjdCkpO1xuXG4gICAgICAgICAgY29uc3QgaGFzTWF0Y2hpbmdIb29rcyA9IChkZXZpY2U6IFJvdykgPT4gISFtYXRjaGluZ0hvb2tzKGRldmljZSkubGVuZ3RoO1xuICAgICAgICAgIGNvbnN0IHVzZUludmVudG9yeURlbGV0ZSA9IChkZXZpY2U6IFJvdykgPT5cbiAgICAgICAgICAgICFoYXNNYXRjaGluZ0hvb2tzKGRldmljZSkgJiYgdHlwZSA9PT0gQnVpbHRJbkFjdGlvblR5cGUuRGVsZXRlO1xuXG4gICAgICAgICAgY29uc3QgcmVzb2x2ZUFjdGlvbiA9IChkZXZpY2U6IFJvdykgPT5cbiAgICAgICAgICAgIHVzZUludmVudG9yeURlbGV0ZShkZXZpY2UpXG4gICAgICAgICAgICAgID8gdGhpcy5kZXZpY2VHcmlkU2VydmljZS5kZWxldGUoZGV2aWNlIGFzIElNYW5hZ2VkT2JqZWN0KVxuICAgICAgICAgICAgICA6IG1hdGNoaW5nSG9va3MoZGV2aWNlKVswXS5vbkFjdGlvbihkZXZpY2UgYXMgSU1hbmFnZWRPYmplY3QpO1xuXG4gICAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgIHNob3dPbkhvdmVyLFxuICAgICAgICAgICAgc2hvd0lmOiAoZGV2aWNlOiBSb3cpID0+IHR5cGUgPT09IEJ1aWx0SW5BY3Rpb25UeXBlLkRlbGV0ZSB8fCBoYXNNYXRjaGluZ0hvb2tzKGRldmljZSksXG4gICAgICAgICAgICBjYWxsYmFjazogKGRldmljZTogUm93KSA9PlxuICAgICAgICAgICAgICB0b09ic2VydmFibGUocmVzb2x2ZUFjdGlvbihkZXZpY2UpKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihfZXJyID0+IEVNUFRZKSxcbiAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoX3N1Y2Nlc3MgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHVzZUludmVudG9yeURlbGV0ZShkZXZpY2UpIHx8IG1hdGNoaW5nSG9va3MoZGV2aWNlKVswXS5yZWZyZXNoQWZ0ZXJBY3Rpb25Eb25lKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2guZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgdXBkYXRlRmlsdGVyaW5nKFxuICAgIGNvbHVtbk5hbWVzOiBzdHJpbmdbXSxcbiAgICBhY3Rpb246IHtcbiAgICAgIHR5cGU6IEZpbHRlcmluZ0FjdGlvblR5cGU7XG4gICAgICBwYXlsb2FkPzogeyBmaWx0ZXJpbmdNb2RpZmllcjogRmlsdGVyaW5nTW9kaWZpZXIgfTtcbiAgICB9XG4gICkge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gYWN0aW9uO1xuICAgIGlmICh0eXBlID09PSBGaWx0ZXJpbmdBY3Rpb25UeXBlLlJlc2V0RmlsdGVyKSB7XG4gICAgICB0aGlzLmRhdGFHcmlkLmNsZWFyRmlsdGVycygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFHcmlkLnVwZGF0ZUZpbHRlcmluZyhjb2x1bW5OYW1lcywgYWN0aW9uKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxjOHktZGF0YS1ncmlkXG4gIFt0aXRsZV09XCJ0aXRsZVwiXG4gIFtsb2FkTW9yZUl0ZW1zTGFiZWxdPVwibG9hZE1vcmVJdGVtc0xhYmVsXCJcbiAgW2xvYWRpbmdJdGVtc0xhYmVsXT1cImxvYWRpbmdJdGVtc0xhYmVsXCJcbiAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb25cIlxuICBbaW5maW5pdGVTY3JvbGxdPVwiaW5maW5pdGVTY3JvbGxcIlxuICBbYWN0aW9uQ29udHJvbHNdPVwiYWN0aW9uQ29udHJvbHNcIlxuICBbc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlXCJcbiAgW3NpbmdsZVNlbGVjdGlvbl09XCJzaW5nbGVTZWxlY3Rpb25cIlxuICBbYnVsa0FjdGlvbkNvbnRyb2xzXT1cImJ1bGtBY3Rpb25Db250cm9sc1wiXG4gIFtzZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrXT1cInNlcnZlclNpZGVEYXRhQ2FsbGJhY2tcIlxuICAoaXRlbXNTZWxlY3QpPVwiaXRlbXNTZWxlY3QuZW1pdCgkZXZlbnQpXCJcbiAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gIFtzaG93U2VhcmNoXT1cInNob3dTZWFyY2ggJiYgIWNoaWxkRGV2aWNlR3JpZFwiXG4gIFtoZWFkZXJBY3Rpb25Db250cm9sc109XCJoZWFkZXJBY3Rpb25Db250cm9sc1wiXG4gIFthY3RpdmVDbGFzc05hbWVdPVwiYWN0aXZlQ2xhc3NOYW1lXCJcbiAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgaW5oZXJpdFxuPlxuICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgW2ljb25dPVwiJ3NlYXJjaCdcIlxuICAgIFt0aXRsZV09XCInTm8gbWF0Y2hpbmcgZGV2aWNlcy4nIHwgdHJhbnNsYXRlXCJcbiAgICBbc3VidGl0bGVdPVwiJ1JlZmluZSB5b3VyIHNlYXJjaCB0ZXJtcycgfCB0cmFuc2xhdGVcIlxuICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlOYW1lXCI+XG4gICAgPGM4eS1jb2x1bW4gW25hbWVdPVwiY29sdW1uLm5hbWVcIj48L2M4eS1jb2x1bW4+XG4gIDwvbmctY29udGFpbmVyPlxuPC9jOHktZGF0YS1ncmlkPlxuIl19
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLWdyaWQvZGV2aWNlLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGV2aWNlLWdyaWQvZGV2aWNlLWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFFTCxZQUFZLEVBSVosaUJBQWlCLEVBRWpCLG1CQUFtQixFQUVuQixPQUFPLEVBTVAsK0JBQStCLEVBSS9CLFlBQVksRUFDYixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBWTFELE1BQU0sT0FBTyxtQkFBbUI7SUF5QjlCLDJIQUEySDtJQUMzSCxJQUF5QixXQUFXLENBQUMsS0FBaUI7UUFDcEQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsSUFBNkIsZUFBZSxDQUFDLGNBQTRCO1FBQ3ZFLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDJCQUEyQixFQUFFLENBQUM7U0FDeEU7SUFDSCxDQUFDO0lBTUQsb0hBQW9IO0lBQ3BILElBQTZCLGVBQWUsQ0FBQyxLQUFzQjtRQUNqRSxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQzdCO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ3pFO0lBQ0gsQ0FBQztJQU9ELG9JQUFvSTtJQUNwSSxJQUFpQyxtQkFBbUIsQ0FBQyxLQUEwQjtRQUM3RSxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7U0FDakM7YUFBTTtZQUNMLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztTQUNqRjtJQUNILENBQUM7SUFDRCxnSUFBZ0k7SUFDaEksSUFBbUMscUJBQXFCLENBQUMsS0FBNEI7UUFDbkYsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1NBQ25DO2FBQU07WUFDTCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDhCQUE4QixFQUFFLENBQUM7U0FDckY7SUFDSCxDQUFDO0lBcUNELFlBQ1MsaUJBQW9DLEVBQ25DLGtCQUE4QztRQUQvQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBNEI7UUE3R3hELG1GQUFtRjtRQUMxRSxZQUFPLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUQsd0VBQXdFO1FBQy9ELFVBQUssR0FBVyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUMsc0NBQXNDO1FBQzdCLHVCQUFrQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNELHVDQUF1QztRQUM5QixzQkFBaUIsR0FBVyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQWFqRSxzR0FBc0c7UUFDcEYsWUFBTyxHQUFhLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBZWpGOzs7V0FHRztRQUNNLHlCQUFvQixHQUFnQyxFQUFFLENBQUM7UUFTaEUsMkZBQTJGO1FBQ2xGLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDNUIsNkdBQTZHO1FBQ3BHLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLHFFQUFxRTtRQUM1RCxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBaUJ2QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUVqQyxvRUFBb0U7UUFDM0QsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDOUI7OztXQUdHO1FBQ00sZUFBVSxHQUFHLElBQUksQ0FBQztRQUMzQjs7O1dBR0c7UUFFSCxvQkFBZSxHQUFHLFFBQVEsQ0FBQztRQUMzQix5REFBeUQ7UUFDL0Msb0JBQWUsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUN2RSxtQkFBYyxHQUFpQyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUNsRiw4QkFBeUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN2Riw2RkFBNkY7UUFDbkYsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBRXJELG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUNyQyxtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFDcEMsZUFBVSxHQUFlLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3ZFLHVCQUFrQixHQUF3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNoRyx5QkFBb0IsR0FDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFPbEQsZUFBVSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBTWhELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBYztRQUNoQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FDeEIsa0JBQXNDO1FBRXRDLElBQUksb0JBQTBDLENBQUM7UUFDL0MsSUFBSSxZQUFvQixDQUFDO1FBQ3pCLElBQUksSUFBWSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLFlBQVksQ0FDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUN2QyxrQkFBa0IsQ0FBQyxPQUFPLEVBQzFCLGtCQUFrQixDQUFDLFVBQVUsRUFDN0IsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsY0FBYyxDQUNwQixDQUNGLENBQUM7WUFFRixZQUFZLEdBQUcsTUFBTSxZQUFZLENBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FDekMsa0JBQWtCLENBQUMsT0FBTyxFQUMxQixrQkFBa0IsQ0FBQyxVQUFVLEVBQzdCLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FDcEIsQ0FDRixDQUFDO1lBQ0YsSUFBSSxHQUFHLE1BQU0sWUFBWSxDQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQ2pGLENBQUM7WUFFRixvQkFBb0IsR0FBRztnQkFDckIsR0FBRztnQkFDSCxJQUFJO2dCQUNKLE1BQU07Z0JBQ04sWUFBWTtnQkFDWixJQUFJO2FBQ0wsQ0FBQztTQUNIO2FBQU07WUFDTCxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLFlBQVksQ0FDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FDNUIsa0JBQWtCLENBQUMsT0FBTyxFQUMxQixrQkFBa0IsQ0FBQyxVQUFVLEVBQzdCLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLFlBQVksRUFDakIsa0JBQWtCLENBQUMsVUFBVSxDQUM5QixDQUNGLENBQUM7WUFFRixZQUFZLEdBQUcsTUFBTSxZQUFZLENBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQzdCLGtCQUFrQixDQUFDLE9BQU8sRUFDMUIsa0JBQWtCLENBQUMsVUFBVSxFQUM3QixJQUFJLENBQUMsU0FBUyxFQUNkLGtCQUFrQixDQUFDLFVBQVUsQ0FDOUIsQ0FDRixDQUFDO1lBQ0YsSUFBSSxHQUFHLE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFFM0Usb0JBQW9CLEdBQUc7Z0JBQ3JCLEdBQUc7Z0JBQ0gsSUFBSTtnQkFDSixNQUFNO2dCQUNOLFlBQVk7Z0JBQ1osSUFBSTthQUNMLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUN4RixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLG9CQUFvQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUNoRTtRQUVELE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLEtBQUssRUFBRTtZQUN2QyxPQUFPO1NBQ1I7UUFDRCxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBNkIsRUFBRSxFQUFFLENBQ3BFLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBMkIsQ0FBQztRQUVsRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTTthQUMzQixJQUFJLENBQ0gsR0FBRyxDQUFDLDJCQUEyQixDQUFDLEVBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixHQUFHLENBQUMsQ0FBQyxLQUE2QixFQUFFLEVBQUU7WUFDcEMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW1DLENBQUM7WUFDL0QsTUFBTSwwQkFBMEIsR0FDOUIsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTlELE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FDcEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBd0IsQ0FBQyxDQUFDLENBQUM7WUFFckUsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDekUsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQ3pDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSw0Q0FBNkIsQ0FBQztZQUVqRSxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQ3BDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztnQkFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsTUFBd0IsQ0FBQztnQkFDekQsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBd0IsQ0FBQyxDQUFDO1lBRWxFLElBQUksMEJBQTBCLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO29CQUN2QixJQUFJO29CQUNKLElBQUk7b0JBQ0osSUFBSTtvQkFDSixXQUFXO29CQUNYLE1BQU0sRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQ3RCLElBQUksNENBQTZCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDO29CQUMvRCxRQUFRLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUN4QixZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3lCQUNoQyxJQUFJLENBQ0gsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQ3pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzNCO3lCQUNBLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTt3QkFDcEIsSUFDRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7NEJBQzFCLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7NEJBRS9DLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3hCLENBQUMsQ0FBQztpQkFDUCxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzNCO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELGVBQWUsQ0FDYixXQUFxQixFQUNyQixNQUdDO1FBRUQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUN4QixJQUFJLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUM5QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQzs7Z0hBdlJVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDZoQ0FQbkI7UUFDVDtZQUNFLE9BQU8sRUFBRSwrQkFBK0I7WUFDeEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztTQUNuRDtLQUNGLG9FQTBHVSxpQkFBaUIsOERDMUo5Qiw2aUNBK0JBOzJGRG1CYSxtQkFBbUI7a0JBVi9CLFNBQVM7K0JBQ0UsaUJBQWlCLGFBRWhCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwrQkFBK0I7NEJBQ3hDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDO3lCQUNuRDtxQkFDRjtpSkFJUSxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFNRyxlQUFlO3NCQUF2QixLQUFLO2dCQU1HLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRVksT0FBTztzQkFBeEIsS0FBSzt1QkFBQyxTQUFTO2dCQUVTLFdBQVc7c0JBQW5DLEtBQUs7dUJBQUMsWUFBWTtnQkFPVSxlQUFlO3NCQUEzQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFVZCxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRXVCLGVBQWU7c0JBQTNDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQVFkLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUUyQixtQkFBbUI7c0JBQW5ELEtBQUs7dUJBQUMsb0JBQW9CO2dCQVFRLHFCQUFxQjtzQkFBdkQsS0FBSzt1QkFBQyxzQkFBc0I7Z0JBT3BCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTU4sZUFBZTtzQkFEZCxLQUFLO2dCQUdJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFXUCxRQUFRO3NCQURQLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFjdGlvbkNvbnRyb2wsXG4gIGFsZXJ0T25FcnJvcixcbiAgQnVpbHRJbkFjdGlvblR5cGUsXG4gIEJ1bGtBY3Rpb25Db250cm9sLFxuICBDb2x1bW4sXG4gIERhdGFHcmlkQ29tcG9uZW50LFxuICBEYXRhU291cmNlTW9kaWZpZXIsXG4gIEZpbHRlcmluZ0FjdGlvblR5cGUsXG4gIEZpbHRlcmluZ01vZGlmaWVyLFxuICBnZXR0ZXh0LFxuICBIZWFkZXJBY3Rpb25Db250cm9sLFxuICBMb2FkTW9yZU1vZGUsXG4gIFBhZ2luYXRpb24sXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2UsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0UsXG4gIFJvdyxcbiAgU2VydmVyU2lkZURhdGFDYWxsYmFjayxcbiAgU2VydmVyU2lkZURhdGFSZXN1bHQsXG4gIHRvT2JzZXJ2YWJsZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGdyb3VwQnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgRU1QVFksIGZyb20sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEZXZpY2VHcmlkRXh0ZW5zaW9uU2VydmljZSB9IGZyb20gJy4vZGV2aWNlLWdyaWQtZXh0ZW5zaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YUNhbGxiYWNrLCBEZXZpY2VHcmlkQWN0aW9uSG9vaywgRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi9kZXZpY2UtZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBEZXZpY2VHcmlkU2VydmljZSB9IGZyb20gJy4vZGV2aWNlLWdyaWQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kZXZpY2UtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2UtZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0UsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEZXZpY2VHcmlkQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2Uge1xuICAvKiogT3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBhbGxvd3MgdG8gbW9kaWZ5IHNlcnZlciBzaWRlIGRhdGEgcmVzdWx0IGJlZm9yZSBpdCdzIHJlbmRlcmVkLiAqL1xuICBASW5wdXQoKSBkYXRhQ2FsbGJhY2s6IERhdGFDYWxsYmFjaztcbiAgLyoqIFRha2VzIGFuIGV2ZW50IGVtaXR0ZXIuIFdoZW4gYW4gZXZlbnQgaXMgZW1pdHRlZCwgdGhlIGdyaWQgd2lsbCBiZSByZWxvYWRlZC4gKi9cbiAgQElucHV0KCkgcmVmcmVzaDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKiogVGhlIHRpdGxlIGZvciB0aGUgZGF0YSBncmlkLCBpdCdzIGRpc3BsYXllZCBpbiB0aGUgZ3JpZCdzIGhlYWRlci4gKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9IGdldHRleHQoJ0RldmljZXMnKTtcbiAgLyoqIFRoZSBsYWJlbCBmb3IgbG9hZCBtb3JlIGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgbG9hZE1vcmVJdGVtc0xhYmVsID0gZ2V0dGV4dCgnTG9hZCBtb3JlIGRldmljZXMnKTtcbiAgLyoqIFRoZSBsYWJlbCBmb3IgbG9hZGluZyBpbmRpY2F0b3IuICovXG4gIEBJbnB1dCgpIGxvYWRpbmdJdGVtc0xhYmVsOiBzdHJpbmcgPSBnZXR0ZXh0KCdMb2FkaW5nIGRldmljZXPigKYnKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqXG4gICAqIEludGVybmFsIHVzZSBvbmx5OiB1c2VkIHRvIGRlZmluZSB1c2VyIHByZWZlcmVuY2VzIGtleSB1bmRlciB3aGljaCAnQWxsIGRldmljZXMnIGNvbHVtbiBjb25maWcgaXMgc3RvcmVkLlxuICAgKi9cbiAgQElucHV0KCkgbGVnYWN5Q29uZmlnS2V5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKlxuICAgKiBJbnRlcm5hbCB1c2Ugb25seTogdXNlZCB0byBkZWZpbmUgdXNlciBwcmVmZXJlbmNlcyBrZXkgdW5kZXIgd2hpY2ggJ0FsbCBkZXZpY2VzJyBmaWx0ZXIvc29ydGluZyBjb25maWcgaXMgc3RvcmVkLlxuICAgKi9cbiAgQElucHV0KCkgbGVnYWN5RmlsdGVyS2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgbGlzdCBvZiBjb2x1bW5zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZ3JpZC4gSWYgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byBzdGFuZGFyZCBjb2x1bW5zLiAqL1xuICBASW5wdXQoJ2NvbHVtbnMnKSBjb2x1bW5zOiBDb2x1bW5bXSA9IHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0RGVmYXVsdENvbHVtbnMoKTtcbiAgLyoqIFBhZ2luYXRpb24gc2V0dGluZ3MsIGUuZy4gYWxsb3dzIGZvciBzZXR0aW5nIGN1cnJlbnQgcGFnZSBvciBwYWdlIHNpemUuIElmIG5vdCBnaXZlbiwgZGVmYXVsdHMgdG8gc3RhbmRhcmQgc2V0dGluZ3MuICovXG4gIEBJbnB1dCgncGFnaW5hdGlvbicpIHNldCBfcGFnaW5hdGlvbih2YWx1ZTogUGFnaW5hdGlvbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIGluZmluaXRlU2Nyb2xsOiBMb2FkTW9yZU1vZGU7XG4gIC8qKiBTZXRzIGxvYWQgbW9yZSBtb2RlLiAqL1xuICBASW5wdXQoJ2luZmluaXRlU2Nyb2xsJykgc2V0IF9pbmZpbml0ZVNjcm9sbChpbmZpbml0ZVNjcm9sbDogTG9hZE1vcmVNb2RlKSB7XG4gICAgdGhpcy5pbmZpbml0ZVNjcm9sbCA9IGluZmluaXRlU2Nyb2xsO1xuICAgIGlmIChpbmZpbml0ZVNjcm9sbCkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uID0gdGhpcy5kZXZpY2VHcmlkU2VydmljZS5nZXRJbmZpbml0ZVNjcm9sbFBhZ2luYXRpb24oKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIGlucHV0IHByb3BlcnR5IGZvciBoaWRpbmcgc3BlY2lmaWMgYnVpbHQtaW4gYWN0aW9uIHR5cGVzLlxuICAgKiBUaGUgYGFjdGlvbnNUb0hpZGVgIGlucHV0IGFsbG93cyBzcGVjaWZ5aW5nIGFuIGFycmF5IG9mIGBCdWlsdEluQWN0aW9uVHlwZWAgdmFsdWVzIG9yIHRoZSBzdHJpbmcgJ0FMTCcgdG8gaGlkZSBhbGwgYWN0aW9uIGNvbnRyb2xzXG4gICAqL1xuICBASW5wdXQoKSBidWlsdEluQWN0aW9uc1RvSGlkZTogQnVpbHRJbkFjdGlvblR5cGVbXSB8ICdBTEwnID0gW107XG4gIC8qKiBTZXRzIGFjdGlvbiBjb250cm9scyAoYWN0aW9ucyBhdmFpbGFibGUgZm9yIGluZGl2aWR1YWwgaXRlbXMpLiBJZiBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIHN0YW5kYXJkIGFjdGlvbnMuICovXG4gIEBJbnB1dCgnYWN0aW9uQ29udHJvbHMnKSBzZXQgX2FjdGlvbkNvbnRyb2xzKHZhbHVlOiBBY3Rpb25Db250cm9sW10pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuYWN0aW9uQ29udHJvbHMgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3Rpb25Db250cm9scyA9IHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0RGVmYXVsdEFjdGlvbkNvbnRyb2xzKCk7XG4gICAgfVxuICB9XG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaXRlbXMgY2FuIGJlIHNlbGVjdGVkIGJ5IGNsaWNraW5nIGEgY2hlY2tib3ggaW4gdGhlIGZpcnN0IGNvbHVtbi4gKi9cbiAgQElucHV0KCkgc2VsZWN0YWJsZSA9IGZhbHNlO1xuICAvKiogUmVzdHJpY3RzIHNlbGVjdGlvbiB0byBhIHNpbmdsZSByb3cgb25seS4gU2VsZWN0aW9uIGNvbHVtbiBkaXNwbGF5cyByYWRpbyBidXR0b24gaW5zdGVhZCBvZiBjaGVja2JveGVzICovXG4gIEBJbnB1dCgpIHNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xuICAvKiogU2V0cyB0aGUgYmFzZSBxdWVyeSB3aGljaCBpcyBhcHBlbmRlZCB0byB0aGUgcmVxdWVzdCBmb3IgZGF0YS4gKi9cbiAgQElucHV0KCkgYmFzZVF1ZXJ5OiBvYmplY3QgPSB7fTtcbiAgLyoqIFNldHMgYnVsayBhY3Rpb24gY29udHJvbHMgKGFjdGlvbnMgYXZhaWxhYmxlIGZvciBpdGVtcyBzZWxlY3RlZCBieSB1c2VyKS4gSWYgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byBzdGFuZGFyZCBidWxrIGFjdGlvbnMuICovXG4gIEBJbnB1dCgnYnVsa0FjdGlvbkNvbnRyb2xzJykgc2V0IF9idWxrQWN0aW9uQ29udHJvbHModmFsdWU6IEJ1bGtBY3Rpb25Db250cm9sW10pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuYnVsa0FjdGlvbkNvbnRyb2xzID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVsa0FjdGlvbkNvbnRyb2xzID0gdGhpcy5kZXZpY2VHcmlkU2VydmljZS5nZXREZWZhdWx0QnVsa0FjdGlvbkNvbnRyb2xzKCk7XG4gICAgfVxuICB9XG4gIC8qKiBTZXRzIGhlYWRlciBhY3Rpb24gY29udHJvbHMgKGFjdGlvbnMgYXZhaWxhYmxlIGZyb20gdGhlIGdyaWQgaGVhZGVyKS4gSWYgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byBlbXB0eSBsaXN0IG9mIGFjdGlvbnMuICovXG4gIEBJbnB1dCgnaGVhZGVyQWN0aW9uQ29udHJvbHMnKSBzZXQgX2hlYWRlckFjdGlvbkNvbnRyb2xzKHZhbHVlOiBIZWFkZXJBY3Rpb25Db250cm9sW10pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuaGVhZGVyQWN0aW9uQ29udHJvbHMgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFkZXJBY3Rpb25Db250cm9scyA9IHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0RGVmYXVsdEhlYWRlckFjdGlvbkNvbnRyb2xzKCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIGNoaWxkRGV2aWNlR3JpZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwYXJlbnREZXZpY2VJZDogc3RyaW5nO1xuICAvKiogU2V0cyB0aGUgd2l0aENoaWxkcmVuIHF1ZXJ5IHdoaWNoIGlzIGFwcGVuZGVkIHRvIHRoZSByZXF1ZXN0LiAqL1xuICBASW5wdXQoKSB3aXRoQ2hpbGRyZW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIHNlYXJjaCBmb3IgZGV2aWNlcyB3aGVyZSBhbnkgZGV2aWNlIHByb3BlcnkgaXMgbWF0Y2hlZCBhZ2FpbnMgdGhlIHNlYXJjaCB0ZXJtLlxuICAgKiBFbmFibGVkIGJ5IGRlZmF1bHQuIFRoaXMgaW5wdXQgZG9lcyBub3QgdGFrZSBlZmZlY3QgaWYgdGhlIDxjb2RlPmNoaWxkRGV2aWNlR3JpZDwvY29kZT4gaW5wdXQgaXMgc2V0IHRvIDxjb2RlPnRydWU8L2NvZGU+XG4gICAqL1xuICBASW5wdXQoKSBzaG93U2VhcmNoID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFNldHMgdGhlIGNsYXNzIG5hbWUgdXNlZCBmb3IgYWN0aXZlIHJvd3MgKGxhc3QgY2xpY2tlZCkuXG4gICAqIFNldCBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSBhcHBlbmRpbmcgYWN0aXZlIGNsYXNzIHRvIGdyaWQgcm93cy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGFjdGl2ZUNsYXNzTmFtZSA9ICdhY3RpdmUnO1xuICAvKiogRW1pdHMgYW4gZXZlbnQgd2hlbiBjb2x1bW5zIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gKi9cbiAgQE91dHB1dCgpIG9uQ29sdW1uc0NoYW5nZTogRXZlbnRFbWl0dGVyPENvbHVtbltdPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uW10+KCk7XG4gIEBPdXRwdXQoKSBvbkZpbHRlckNoYW5nZTogRXZlbnRFbWl0dGVyPEZpbHRlckNvbmZpZ1tdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyQ29uZmlnW10+KCk7XG4gIEBPdXRwdXQoKSBvbkRldmljZVF1ZXJ5U3RyaW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAvKiogRW1pdHMgYW4gZXZlbnQgd2hlbiBpdGVtcyBzZWxlY3Rpb24gY2hhbmdlcy4gVGhlIGFycmF5IGNvbnRhaW5zIGlkcyBvZiBzZWxlY3RlZCBpdGVtcy4gKi9cbiAgQE91dHB1dCgpIGl0ZW1zU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBhY3Rpb25Db250cm9sczogQWN0aW9uQ29udHJvbFtdID0gW107XG4gIGFwcGxpZWRGaWx0ZXJzOiBGaWx0ZXJDb25maWdbXSA9IFtdO1xuICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uID0gdGhpcy5kZXZpY2VHcmlkU2VydmljZS5nZXREZWZhdWx0UGFnaW5hdGlvbigpO1xuICBidWxrQWN0aW9uQ29udHJvbHM6IEJ1bGtBY3Rpb25Db250cm9sW10gPSB0aGlzLmRldmljZUdyaWRTZXJ2aWNlLmdldERlZmF1bHRCdWxrQWN0aW9uQ29udHJvbHMoKTtcbiAgaGVhZGVyQWN0aW9uQ29udHJvbHM6IEhlYWRlckFjdGlvbkNvbnRyb2xbXSA9XG4gICAgdGhpcy5kZXZpY2VHcmlkU2VydmljZS5nZXREZWZhdWx0SGVhZGVyQWN0aW9uQ29udHJvbHMoKTtcbiAgc2VydmVyU2lkZURhdGFDYWxsYmFjazogU2VydmVyU2lkZURhdGFDYWxsYmFjaztcblxuICBAVmlld0NoaWxkKERhdGFHcmlkQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBkYXRhR3JpZDogRGF0YUdyaWRDb21wb25lbnQ7XG4gIHByb2R1Y3RFeHBlcmllbmNlRXZlbnQ6IFByb2R1Y3RFeHBlcmllbmNlRXZlbnQ7XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGV2aWNlR3JpZFNlcnZpY2U6IERldmljZUdyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGdFeHRlbnNpb25TZXJ2aWNlOiBEZXZpY2VHcmlkRXh0ZW5zaW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNlcnZlclNpZGVEYXRhQ2FsbGJhY2sgPSB0aGlzLm9uRGF0YVNvdXJjZU1vZGlmaWVyLmJpbmQodGhpcyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldEFjdGlvbkNvbnRyb2xzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgdHJhY2tCeU5hbWUoX2luZGV4LCBjb2x1bW46IENvbHVtbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbHVtbi5uYW1lO1xuICB9XG5cbiAgYXN5bmMgb25EYXRhU291cmNlTW9kaWZpZXIoXG4gICAgZGF0YVNvdXJjZU1vZGlmaWVyOiBEYXRhU291cmNlTW9kaWZpZXJcbiAgKTogUHJvbWlzZTxTZXJ2ZXJTaWRlRGF0YVJlc3VsdD4ge1xuICAgIGxldCBzZXJ2ZXJTaWRlRGF0YVJlc3VsdDogU2VydmVyU2lkZURhdGFSZXN1bHQ7XG4gICAgbGV0IGZpbHRlcmVkU2l6ZTogbnVtYmVyO1xuICAgIGxldCBzaXplOiBudW1iZXI7XG4gICAgaWYgKHRoaXMuY2hpbGREZXZpY2VHcmlkKSB7XG4gICAgICBjb25zdCB7IHJlcywgZGF0YSwgcGFnaW5nIH0gPSBhd2FpdCBhbGVydE9uRXJyb3IoXG4gICAgICAgIHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0Q2hpbGREZXZpY2VEYXRhKFxuICAgICAgICAgIGRhdGFTb3VyY2VNb2RpZmllci5jb2x1bW5zLFxuICAgICAgICAgIGRhdGFTb3VyY2VNb2RpZmllci5wYWdpbmF0aW9uLFxuICAgICAgICAgIHRoaXMuYmFzZVF1ZXJ5LFxuICAgICAgICAgIHRoaXMud2l0aENoaWxkcmVuLFxuICAgICAgICAgIHRoaXMucGFyZW50RGV2aWNlSWRcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgZmlsdGVyZWRTaXplID0gYXdhaXQgYWxlcnRPbkVycm9yKFxuICAgICAgICB0aGlzLmRldmljZUdyaWRTZXJ2aWNlLmdldENvdW50Q2hpbGREZXZpY2VzKFxuICAgICAgICAgIGRhdGFTb3VyY2VNb2RpZmllci5jb2x1bW5zLFxuICAgICAgICAgIGRhdGFTb3VyY2VNb2RpZmllci5wYWdpbmF0aW9uLFxuICAgICAgICAgIHRoaXMuYmFzZVF1ZXJ5LFxuICAgICAgICAgIHRoaXMucGFyZW50RGV2aWNlSWRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHNpemUgPSBhd2FpdCBhbGVydE9uRXJyb3IoXG4gICAgICAgIHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0VG90YWxDaGlsZERldmljZXModGhpcy5iYXNlUXVlcnksIHRoaXMucGFyZW50RGV2aWNlSWQpXG4gICAgICApO1xuXG4gICAgICBzZXJ2ZXJTaWRlRGF0YVJlc3VsdCA9IHtcbiAgICAgICAgcmVzLFxuICAgICAgICBkYXRhLFxuICAgICAgICBwYWdpbmcsXG4gICAgICAgIGZpbHRlcmVkU2l6ZSxcbiAgICAgICAgc2l6ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyByZXMsIGRhdGEsIHBhZ2luZyB9ID0gYXdhaXQgYWxlcnRPbkVycm9yKFxuICAgICAgICB0aGlzLmRldmljZUdyaWRTZXJ2aWNlLmdldERhdGEoXG4gICAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLmNvbHVtbnMsXG4gICAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLnBhZ2luYXRpb24sXG4gICAgICAgICAgdGhpcy5iYXNlUXVlcnksXG4gICAgICAgICAgdGhpcy53aXRoQ2hpbGRyZW4sXG4gICAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLnNlYXJjaFRleHRcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgZmlsdGVyZWRTaXplID0gYXdhaXQgYWxlcnRPbkVycm9yKFxuICAgICAgICB0aGlzLmRldmljZUdyaWRTZXJ2aWNlLmdldENvdW50KFxuICAgICAgICAgIGRhdGFTb3VyY2VNb2RpZmllci5jb2x1bW5zLFxuICAgICAgICAgIGRhdGFTb3VyY2VNb2RpZmllci5wYWdpbmF0aW9uLFxuICAgICAgICAgIHRoaXMuYmFzZVF1ZXJ5LFxuICAgICAgICAgIGRhdGFTb3VyY2VNb2RpZmllci5zZWFyY2hUZXh0XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBzaXplID0gYXdhaXQgYWxlcnRPbkVycm9yKHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0VG90YWwodGhpcy5iYXNlUXVlcnkpKTtcblxuICAgICAgc2VydmVyU2lkZURhdGFSZXN1bHQgPSB7XG4gICAgICAgIHJlcyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgcGFnaW5nLFxuICAgICAgICBmaWx0ZXJlZFNpemUsXG4gICAgICAgIHNpemVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5vbkNvbHVtbnNDaGFuZ2UuZW1pdChkYXRhU291cmNlTW9kaWZpZXIuY29sdW1ucyk7XG4gICAgdGhpcy5vbkRldmljZVF1ZXJ5U3RyaW5nQ2hhbmdlLmVtaXQoXG4gICAgICB0aGlzLmRldmljZUdyaWRTZXJ2aWNlLmdldERldmljZVF1ZXJ5U3RyaW5nKGRhdGFTb3VyY2VNb2RpZmllci5jb2x1bW5zLCB0aGlzLmJhc2VRdWVyeSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuZGF0YUNhbGxiYWNrKSB7XG4gICAgICBzZXJ2ZXJTaWRlRGF0YVJlc3VsdCA9IHRoaXMuZGF0YUNhbGxiYWNrKHNlcnZlclNpZGVEYXRhUmVzdWx0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VydmVyU2lkZURhdGFSZXN1bHQ7XG4gIH1cblxuICBzZXRBY3Rpb25Db250cm9scygpIHtcbiAgICBpZiAodGhpcy5idWlsdEluQWN0aW9uc1RvSGlkZSA9PT0gJ0FMTCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYXNBcnJheU9mR3JvdXBlZEFjdGlvbkhvb2tzID0gKGhvb2tzOiBEZXZpY2VHcmlkQWN0aW9uSG9va1tdKSA9PlxuICAgICAgT2JqZWN0LnZhbHVlcyhncm91cEJ5KGhvb2tzLCAndHlwZScpKSBhcyBEZXZpY2VHcmlkQWN0aW9uSG9va1tdO1xuXG4gICAgdGhpcy5kZ0V4dGVuc2lvblNlcnZpY2UuaXRlbXMkXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGFzQXJyYXlPZkdyb3VwZWRBY3Rpb25Ib29rcyksXG4gICAgICAgIHN3aXRjaE1hcChmcm9tKSxcbiAgICAgICAgbWFwKChob29rczogRGV2aWNlR3JpZEFjdGlvbkhvb2tbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgdHlwZSwgaWNvbiwgdGV4dCwgc2hvd09uSG92ZXIgfSA9IGhvb2tzWzBdO1xuICAgICAgICAgIGNvbnN0IGFjdGlvbnNUb0hpZGUgPSB0aGlzLmJ1aWx0SW5BY3Rpb25zVG9IaWRlIGFzIHR5cGVvZiB0eXBlO1xuICAgICAgICAgIGNvbnN0IHNob3VsZFB1c2hUb0FjdGlvbkNvbnRyb2xzID1cbiAgICAgICAgICAgIGFjdGlvbnNUb0hpZGUubGVuZ3RoID09PSAwIHx8ICFhY3Rpb25zVG9IaWRlLmluY2x1ZGVzKHR5cGUpO1xuXG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdIb29rcyA9IChkZXZpY2U6IFJvdykgPT5cbiAgICAgICAgICAgIGhvb2tzLmZpbHRlcihob29rID0+IGhvb2suZGV2aWNlTWF0Y2hlcyhkZXZpY2UgYXMgSU1hbmFnZWRPYmplY3QpKTtcblxuICAgICAgICAgIGNvbnN0IGhhc01hdGNoaW5nSG9va3MgPSAoZGV2aWNlOiBSb3cpID0+ICEhbWF0Y2hpbmdIb29rcyhkZXZpY2UpLmxlbmd0aDtcbiAgICAgICAgICBjb25zdCB1c2VJbnZlbnRvcnlEZWxldGUgPSAoZGV2aWNlOiBSb3cpID0+XG4gICAgICAgICAgICAhaGFzTWF0Y2hpbmdIb29rcyhkZXZpY2UpICYmIHR5cGUgPT09IEJ1aWx0SW5BY3Rpb25UeXBlLkRlbGV0ZTtcblxuICAgICAgICAgIGNvbnN0IHJlc29sdmVBY3Rpb24gPSAoZGV2aWNlOiBSb3cpID0+XG4gICAgICAgICAgICB1c2VJbnZlbnRvcnlEZWxldGUoZGV2aWNlKVxuICAgICAgICAgICAgICA/IHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZGVsZXRlKGRldmljZSBhcyBJTWFuYWdlZE9iamVjdClcbiAgICAgICAgICAgICAgOiBtYXRjaGluZ0hvb2tzKGRldmljZSlbMF0ub25BY3Rpb24oZGV2aWNlIGFzIElNYW5hZ2VkT2JqZWN0KTtcblxuICAgICAgICAgIGlmIChzaG91bGRQdXNoVG9BY3Rpb25Db250cm9scykge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25Db250cm9scy5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgaWNvbixcbiAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgc2hvd09uSG92ZXIsXG4gICAgICAgICAgICAgIHNob3dJZjogKGRldmljZTogUm93KSA9PlxuICAgICAgICAgICAgICAgIHR5cGUgPT09IEJ1aWx0SW5BY3Rpb25UeXBlLkRlbGV0ZSB8fCBoYXNNYXRjaGluZ0hvb2tzKGRldmljZSksXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiAoZGV2aWNlOiBSb3cpID0+XG4gICAgICAgICAgICAgICAgdG9PYnNlcnZhYmxlKHJlc29sdmVBY3Rpb24oZGV2aWNlKSlcbiAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKF9lcnIgPT4gRU1QVFkpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShfc3VjY2VzcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICB1c2VJbnZlbnRvcnlEZWxldGUoZGV2aWNlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nSG9va3MoZGV2aWNlKVswXS5yZWZyZXNoQWZ0ZXJBY3Rpb25Eb25lXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2guZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB1cGRhdGVGaWx0ZXJpbmcoXG4gICAgY29sdW1uTmFtZXM6IHN0cmluZ1tdLFxuICAgIGFjdGlvbjoge1xuICAgICAgdHlwZTogRmlsdGVyaW5nQWN0aW9uVHlwZTtcbiAgICAgIHBheWxvYWQ/OiB7IGZpbHRlcmluZ01vZGlmaWVyOiBGaWx0ZXJpbmdNb2RpZmllciB9O1xuICAgIH1cbiAgKSB7XG4gICAgY29uc3QgeyB0eXBlIH0gPSBhY3Rpb247XG4gICAgaWYgKHR5cGUgPT09IEZpbHRlcmluZ0FjdGlvblR5cGUuUmVzZXRGaWx0ZXIpIHtcbiAgICAgIHRoaXMuZGF0YUdyaWQuY2xlYXJGaWx0ZXJzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YUdyaWQudXBkYXRlRmlsdGVyaW5nKGNvbHVtbk5hbWVzLCBhY3Rpb24pO1xuICAgIH1cbiAgfVxufVxuIiwiPGM4eS1kYXRhLWdyaWRcbiAgW3RpdGxlXT1cInRpdGxlXCJcbiAgW2xvYWRNb3JlSXRlbXNMYWJlbF09XCJsb2FkTW9yZUl0ZW1zTGFiZWxcIlxuICBbbG9hZGluZ0l0ZW1zTGFiZWxdPVwibG9hZGluZ0l0ZW1zTGFiZWxcIlxuICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gIFtpbmZpbml0ZVNjcm9sbF09XCJpbmZpbml0ZVNjcm9sbFwiXG4gIFthY3Rpb25Db250cm9sc109XCJhY3Rpb25Db250cm9sc1wiXG4gIFtzZWxlY3RhYmxlXT1cInNlbGVjdGFibGVcIlxuICBbc2luZ2xlU2VsZWN0aW9uXT1cInNpbmdsZVNlbGVjdGlvblwiXG4gIFtidWxrQWN0aW9uQ29udHJvbHNdPVwiYnVsa0FjdGlvbkNvbnRyb2xzXCJcbiAgW3NlcnZlclNpZGVEYXRhQ2FsbGJhY2tdPVwic2VydmVyU2lkZURhdGFDYWxsYmFja1wiXG4gIChpdGVtc1NlbGVjdCk9XCJpdGVtc1NlbGVjdC5lbWl0KCRldmVudClcIlxuICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgW3Nob3dTZWFyY2hdPVwic2hvd1NlYXJjaCAmJiAhY2hpbGREZXZpY2VHcmlkXCJcbiAgW2hlYWRlckFjdGlvbkNvbnRyb2xzXT1cImhlYWRlckFjdGlvbkNvbnRyb2xzXCJcbiAgW2FjdGl2ZUNsYXNzTmFtZV09XCJhY3RpdmVDbGFzc05hbWVcIlxuICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICBpbmhlcml0XG4+XG4gIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICBbaWNvbl09XCInc2VhcmNoJ1wiXG4gICAgW3RpdGxlXT1cIidObyBtYXRjaGluZyBkZXZpY2VzLicgfCB0cmFuc2xhdGVcIlxuICAgIFtzdWJ0aXRsZV09XCInUmVmaW5lIHlvdXIgc2VhcmNoIHRlcm1zJyB8IHRyYW5zbGF0ZVwiXG4gICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cblxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeU5hbWVcIj5cbiAgICA8Yzh5LWNvbHVtbiBbbmFtZV09XCJjb2x1bW4ubmFtZVwiPjwvYzh5LWNvbHVtbj5cbiAgPC9uZy1jb250YWluZXI+XG48L2M4eS1kYXRhLWdyaWQ+XG4iXX0=
|
|
@@ -67,7 +67,7 @@ DeviceListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
|
|
|
67
67
|
provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,
|
|
68
68
|
useExisting: DeviceListComponent
|
|
69
69
|
}
|
|
70
|
-
], ngImport: i0, template: "<c8y-title>\n {{ 'All devices' | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'exchange'\"\n [label]=\"'Devices' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-management'\"\n [label]=\"'All devices' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add smart group' | translate }}\"\n (click)=\"createSmartGroup()\"\n >\n <i c8yIcon=\"c8y-group-smart\"></i>\n {{ 'Add smart group' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/device-management/#viewing-devices\"></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-device-grid\n [columns]=\"columns$ | async\"\n [infiniteScroll]=\"(count$ | async) === undefined ? 'auto' : undefined\"\n (onDeviceQueryStringChange)=\"deviceQueryStringOutput = $event\"\n [actionControls]=\"actionControls\"\n c8yProductExperience\n [actionName]=\"'allDevices'\"\n ></c8y-device-grid>\n</div>\n", dependencies: [{ kind: "component", type: i5.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i5.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i5.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: i5.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i5.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i5.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: i1.DeviceGridComponent, selector: "c8y-device-grid", inputs: ["dataCallback", "refresh", "title", "loadMoreItemsLabel", "loadingItemsLabel", "legacyConfigKey", "legacyFilterKey", "columns", "pagination", "infiniteScroll", "actionControls", "selectable", "singleSelection", "baseQuery", "bulkActionControls", "headerActionControls", "childDeviceGrid", "parentDeviceId", "withChildren", "showSearch", "activeClassName"], outputs: ["onColumnsChange", "onFilterChange", "onDeviceQueryStringChange", "itemsSelect"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] });
|
|
70
|
+
], ngImport: i0, template: "<c8y-title>\n {{ 'All devices' | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'exchange'\"\n [label]=\"'Devices' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-management'\"\n [label]=\"'All devices' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add smart group' | translate }}\"\n (click)=\"createSmartGroup()\"\n >\n <i c8yIcon=\"c8y-group-smart\"></i>\n {{ 'Add smart group' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/device-management/#viewing-devices\"></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-device-grid\n [columns]=\"columns$ | async\"\n [infiniteScroll]=\"(count$ | async) === undefined ? 'auto' : undefined\"\n (onDeviceQueryStringChange)=\"deviceQueryStringOutput = $event\"\n [actionControls]=\"actionControls\"\n c8yProductExperience\n [actionName]=\"'allDevices'\"\n ></c8y-device-grid>\n</div>\n", dependencies: [{ kind: "component", type: i5.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i5.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i5.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: i5.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i5.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i5.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: i1.DeviceGridComponent, selector: "c8y-device-grid", inputs: ["dataCallback", "refresh", "title", "loadMoreItemsLabel", "loadingItemsLabel", "legacyConfigKey", "legacyFilterKey", "columns", "pagination", "infiniteScroll", "builtInActionsToHide", "actionControls", "selectable", "singleSelection", "baseQuery", "bulkActionControls", "headerActionControls", "childDeviceGrid", "parentDeviceId", "withChildren", "showSearch", "activeClassName"], outputs: ["onColumnsChange", "onFilterChange", "onDeviceQueryStringChange", "itemsSelect"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] });
|
|
71
71
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DeviceListComponent, decorators: [{
|
|
72
72
|
type: Component,
|
|
73
73
|
args: [{ selector: 'c8y-device-list', providers: [
|
|
@@ -65,7 +65,7 @@ DeviceSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
65
65
|
provide: DATA_GRID_CONFIGURATION_CONTEXT,
|
|
66
66
|
useValue: DeviceSelectorComponent.GRID_CONFIG_CONTEXT
|
|
67
67
|
}
|
|
68
|
-
], viewQueries: [{ propertyName: "deviceGrid", first: true, predicate: DeviceGridComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-device-grid\n [title]=\"'Target devices' | translate\"\n [columns]=\"columns\"\n [infiniteScroll]=\"'auto'\"\n [showSearch]=\"false\"\n (onDeviceQueryStringChange)=\"onDeviceQueryStringChange.emit($event)\"\n c8yProductExperience\n [actionName]=\"'bulkOperations'\"\n></c8y-device-grid>\n", dependencies: [{ kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i2.DeviceGridComponent, selector: "c8y-device-grid", inputs: ["dataCallback", "refresh", "title", "loadMoreItemsLabel", "loadingItemsLabel", "legacyConfigKey", "legacyFilterKey", "columns", "pagination", "infiniteScroll", "actionControls", "selectable", "singleSelection", "baseQuery", "bulkActionControls", "headerActionControls", "childDeviceGrid", "parentDeviceId", "withChildren", "showSearch", "activeClassName"], outputs: ["onColumnsChange", "onFilterChange", "onDeviceQueryStringChange", "itemsSelect"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
|
|
68
|
+
], viewQueries: [{ propertyName: "deviceGrid", first: true, predicate: DeviceGridComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-device-grid\n [title]=\"'Target devices' | translate\"\n [columns]=\"columns\"\n [infiniteScroll]=\"'auto'\"\n [showSearch]=\"false\"\n (onDeviceQueryStringChange)=\"onDeviceQueryStringChange.emit($event)\"\n c8yProductExperience\n [actionName]=\"'bulkOperations'\"\n></c8y-device-grid>\n", dependencies: [{ kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i2.DeviceGridComponent, selector: "c8y-device-grid", inputs: ["dataCallback", "refresh", "title", "loadMoreItemsLabel", "loadingItemsLabel", "legacyConfigKey", "legacyFilterKey", "columns", "pagination", "infiniteScroll", "builtInActionsToHide", "actionControls", "selectable", "singleSelection", "baseQuery", "bulkActionControls", "headerActionControls", "childDeviceGrid", "parentDeviceId", "withChildren", "showSearch", "activeClassName"], outputs: ["onColumnsChange", "onFilterChange", "onDeviceQueryStringChange", "itemsSelect"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
|
|
69
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DeviceSelectorComponent, decorators: [{
|
|
70
70
|
type: Component,
|
|
71
71
|
args: [{ selector: 'c8y-device-selector', providers: [
|
|
@@ -91,7 +91,7 @@ ReplaceDeviceWizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14
|
|
|
91
91
|
provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,
|
|
92
92
|
useExisting: ReplaceDeviceWizardComponent
|
|
93
93
|
}
|
|
94
|
-
], viewQueries: [{ propertyName: "stepper", first: true, predicate: C8yStepper, descendants: true, static: true }], ngImport: i0, template: "<c8y-stepper\n class=\"d-contents c8y-stepper--no-btns\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n id=\"modal-body\"\n [customClasses]=\"[\n 'col-xs-10',\n 'col-xs-offset-1',\n 'col-sm-8',\n 'col-sm-offset-2',\n 'm-t-24',\n 'm-b-40',\n 'p-0',\n 'flex-no-shrink'\n ]\"\n linear\n>\n <cdk-step [label]=\"'Replacement device' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink separator-bottom col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Replacement device' | translate }}\n </div>\n </div>\n </div>\n </div>\n <c8y-device-grid\n class=\"flex-grow col-xs-12 no-gutter\"\n [title]=\"'Select replacement device' | translate\"\n [infiniteScroll]=\"'auto'\"\n [actionControls]=\"[]\"\n [columns]=\"columns\"\n [selectable]=\"true\"\n [singleSelection]=\"true\"\n [baseQuery]=\"baseQuery$ | async\"\n (itemsSelect)=\"replacementDeviceId = $event[0]\"\n ></c8y-device-grid>\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n [disabled]=\"!replacementDeviceId\"\n (onCancel)=\"cancel()\"\n (onNext)=\"service.changeReplacementDeviceId(replacementDeviceId); continue()\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step [label]=\"'Select external IDs' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Select external IDs' | translate }}\n </div>\n </div>\n </div>\n </div>\n <c8y-li class=\"page-sticky-header hidden-sm hidden-xs\">\n <c8y-li-icon><i class=\"p-l-24\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-4\">\n <span\n class=\"text-medium text-truncate\"\n title=\" {{ 'Type' | translate }} \"\n >\n {{ 'Type' | translate }}\n </span>\n </div>\n <div class=\"col-6\">\n <span\n class=\"text-medium text-truncate\"\n title=\"{{ 'External ID' | translate }}\"\n >\n {{ 'External ID' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <div\n class=\"col-xs-12 flex-grow no-gutter\"\n *ngIf=\"!(service.externalIdsLoading$ | async); else loading\"\n >\n <div\n class=\"card-inner-scroll fit-h\"\n *ngIf=\"(service.externalIdsWithSelection$ | async)?.length > 0; else noIds\"\n >\n <div class=\"card-block p-t-0 p-b-0\">\n <c8y-list-group>\n <c8y-li *ngFor=\"let extId of service.externalIdsWithSelection$ | async\">\n <c8y-li-checkbox\n [selected]=\"extId.selected\"\n (onSelect)=\"service.checkExternalId(extId.id, $event)\"\n ></c8y-li-checkbox>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-4 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Type' | translate }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Type\n </span>\n {{ extId.id.type }}\n </div>\n </div>\n <div class=\"col-6 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'External ID' | translate }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n External ID\n </span>\n {{ extId.id.externalId }}\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n </div>\n <ng-template #noIds>\n <c8y-ui-empty-state\n [icon]=\"'barcode'\"\n [title]=\"'No external IDs assigned.'\"\n [subtitle]=\"\n 'The selected replacement device does not have external IDs assigned. Go back to "Replacement device" and select a different device.'\n | translate\n \"\n *ngIf=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n </div>\n <ng-template #loading>\n <div class=\"d-flex d-col a-i-center j-c-center fit-h\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n [disabled]=\"\n (service.externalIdsLoading$ | async) || !(service.selectedExternalIds$ | async)?.length\n \"\n (onCancel)=\"cancel()\"\n (onNext)=\"replace()\"\n [labels]=\"{ next: ('Replace' | translate) }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step [label]=\"'Replace' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink col-xs-12 separator-bottom\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Replace' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex d-col a-i-center j-c-center inner-scroll\">\n <c8y-list-group class=\"col-sm-8 col-md-6\">\n <c8y-li\n *ngFor=\"let step of service.steps\"\n [attr.data-cy]=\"'c8y-replace-device-wizard--step-' + step.label\"\n >\n <c8y-li-icon>\n <i\n [c8yIcon]=\"REPLACE_DEVICE_STEP_STATES_MAP[step.state || 'Pending']?.icon\"\n [tooltip]=\"(step.state || 'Pending').toString() | translate\"\n [ngClass]=\"REPLACE_DEVICE_STEP_STATES_MAP[step.state || 'Pending']?.styleClass\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <span [ngClass]=\"{ 'text-bold': !!step.error }\">{{ step.label | translate }}</span>\n <button\n class=\"btn-help btn-help--sm pull-right\"\n [attr.aria-label]=\"'Help' | translate\"\n [attr.aria-label]=\"step.info.msg | translate\"\n [popover]=\"step.info.msg | translate\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n *ngIf=\"!!step.info?.msg\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </c8y-li-body>\n <c8y-li-collapse\n #alert\n *ngIf=\"step.error\"\n >\n <span class=\"message\">{{ step.error?.text | translate }}</span>\n <p\n class=\"text-muted m-t-8\"\n *ngIf=\"step?.error?.detailedData\"\n >\n <button\n class=\"btn btn-clean\"\n (click)=\"alert.expanded = !alert.expanded\"\n >\n <i c8yIcon=\"chevron-down\"></i>\n <span *ngIf=\"!alert.expanded\">Show details</span>\n <span *ngIf=\"alert.expanded\">Hide details</span>\n </button>\n </p>\n <div\n [collapse]=\"!alert.expanded\"\n [isAnimated]=\"true\"\n >\n {{ step.error.detailedData | json }}\n </div>\n </c8y-li-collapse>\n <c8y-li-action\n icon=\"play\"\n label=\"{{ 'Retry this step`button`' | translate }}\"\n *ngIf=\"step.state === 'Failed' && !step.overrideContext\"\n (click)=\"service.retryStep(step)\"\n data-cy=\"c8y-replace-device-wizard--retry-step\"\n ></c8y-li-action>\n </c8y-li>\n </c8y-list-group>\n </div>\n\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n [pending]=\"service.deviceReplacementInProgress$ | async\"\n (onBack)=\"close()\"\n [labels]=\"{ back: 'Close' | translate }\"\n >\n <button\n class=\"btn btn-primary\"\n [title]=\"'Retry' | translate\"\n type=\"button\"\n *ngIf=\"(service.deviceReplaced$ | async) === false\"\n (click)=\"service.retryStep()\"\n [ngClass]=\"{ 'btn-pending': service.deviceReplacementInProgress$ | async }\"\n [disabled]=\"service.deviceReplacementInProgress$ | async\"\n data-cy=\"c8y-replace-device-wizard--btn-retry\"\n >\n {{ 'Retry' | translate }}\n </button>\n </c8y-stepper-buttons>\n </cdk-step>\n</c8y-stepper>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.JsonPipe, name: "json" }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i3.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: i5.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i3.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon"], outputs: ["click"] }, { kind: "component", type: i3.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i3.ListItemCheckboxComponent, selector: "c8y-list-item-checkbox, c8y-li-checkbox", inputs: ["selected", "disabled", "displayAsSwitch"], outputs: ["onSelect"] }, { kind: "ngmodule", type: DeviceGridModule }, { kind: "component", type: i2.DeviceGridComponent, selector: "c8y-device-grid", inputs: ["dataCallback", "refresh", "title", "loadMoreItemsLabel", "loadingItemsLabel", "legacyConfigKey", "legacyFilterKey", "columns", "pagination", "infiniteScroll", "actionControls", "selectable", "singleSelection", "baseQuery", "bulkActionControls", "headerActionControls", "childDeviceGrid", "parentDeviceId", "withChildren", "showSearch", "activeClassName"], outputs: ["onColumnsChange", "onFilterChange", "onDeviceQueryStringChange", "itemsSelect"] }, { kind: "ngmodule", type: DeviceSelectorModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i6.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "ngmodule", type: CollapseModule }, { kind: "directive", type: i7.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i8.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }] });
|
|
94
|
+
], viewQueries: [{ propertyName: "stepper", first: true, predicate: C8yStepper, descendants: true, static: true }], ngImport: i0, template: "<c8y-stepper\n class=\"d-contents c8y-stepper--no-btns\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n id=\"modal-body\"\n [customClasses]=\"[\n 'col-xs-10',\n 'col-xs-offset-1',\n 'col-sm-8',\n 'col-sm-offset-2',\n 'm-t-24',\n 'm-b-40',\n 'p-0',\n 'flex-no-shrink'\n ]\"\n linear\n>\n <cdk-step [label]=\"'Replacement device' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink separator-bottom col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Replacement device' | translate }}\n </div>\n </div>\n </div>\n </div>\n <c8y-device-grid\n class=\"flex-grow col-xs-12 no-gutter\"\n [title]=\"'Select replacement device' | translate\"\n [infiniteScroll]=\"'auto'\"\n [actionControls]=\"[]\"\n [columns]=\"columns\"\n [selectable]=\"true\"\n [singleSelection]=\"true\"\n [baseQuery]=\"baseQuery$ | async\"\n (itemsSelect)=\"replacementDeviceId = $event[0]\"\n ></c8y-device-grid>\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n [disabled]=\"!replacementDeviceId\"\n (onCancel)=\"cancel()\"\n (onNext)=\"service.changeReplacementDeviceId(replacementDeviceId); continue()\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step [label]=\"'Select external IDs' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Select external IDs' | translate }}\n </div>\n </div>\n </div>\n </div>\n <c8y-li class=\"page-sticky-header hidden-sm hidden-xs\">\n <c8y-li-icon><i class=\"p-l-24\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-4\">\n <span\n class=\"text-medium text-truncate\"\n title=\" {{ 'Type' | translate }} \"\n >\n {{ 'Type' | translate }}\n </span>\n </div>\n <div class=\"col-6\">\n <span\n class=\"text-medium text-truncate\"\n title=\"{{ 'External ID' | translate }}\"\n >\n {{ 'External ID' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <div\n class=\"col-xs-12 flex-grow no-gutter\"\n *ngIf=\"!(service.externalIdsLoading$ | async); else loading\"\n >\n <div\n class=\"card-inner-scroll fit-h\"\n *ngIf=\"(service.externalIdsWithSelection$ | async)?.length > 0; else noIds\"\n >\n <div class=\"card-block p-t-0 p-b-0\">\n <c8y-list-group>\n <c8y-li *ngFor=\"let extId of service.externalIdsWithSelection$ | async\">\n <c8y-li-checkbox\n [selected]=\"extId.selected\"\n (onSelect)=\"service.checkExternalId(extId.id, $event)\"\n ></c8y-li-checkbox>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-4 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Type' | translate }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Type\n </span>\n {{ extId.id.type }}\n </div>\n </div>\n <div class=\"col-6 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'External ID' | translate }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n External ID\n </span>\n {{ extId.id.externalId }}\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n </div>\n <ng-template #noIds>\n <c8y-ui-empty-state\n [icon]=\"'barcode'\"\n [title]=\"'No external IDs assigned.'\"\n [subtitle]=\"\n 'The selected replacement device does not have external IDs assigned. Go back to "Replacement device" and select a different device.'\n | translate\n \"\n *ngIf=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n </div>\n <ng-template #loading>\n <div class=\"d-flex d-col a-i-center j-c-center fit-h\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n [disabled]=\"\n (service.externalIdsLoading$ | async) || !(service.selectedExternalIds$ | async)?.length\n \"\n (onCancel)=\"cancel()\"\n (onNext)=\"replace()\"\n [labels]=\"{ next: ('Replace' | translate) }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step [label]=\"'Replace' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink col-xs-12 separator-bottom\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Replace' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex d-col a-i-center j-c-center inner-scroll\">\n <c8y-list-group class=\"col-sm-8 col-md-6\">\n <c8y-li\n *ngFor=\"let step of service.steps\"\n [attr.data-cy]=\"'c8y-replace-device-wizard--step-' + step.label\"\n >\n <c8y-li-icon>\n <i\n [c8yIcon]=\"REPLACE_DEVICE_STEP_STATES_MAP[step.state || 'Pending']?.icon\"\n [tooltip]=\"(step.state || 'Pending').toString() | translate\"\n [ngClass]=\"REPLACE_DEVICE_STEP_STATES_MAP[step.state || 'Pending']?.styleClass\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <span [ngClass]=\"{ 'text-bold': !!step.error }\">{{ step.label | translate }}</span>\n <button\n class=\"btn-help btn-help--sm pull-right\"\n [attr.aria-label]=\"'Help' | translate\"\n [attr.aria-label]=\"step.info.msg | translate\"\n [popover]=\"step.info.msg | translate\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n *ngIf=\"!!step.info?.msg\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </c8y-li-body>\n <c8y-li-collapse\n #alert\n *ngIf=\"step.error\"\n >\n <span class=\"message\">{{ step.error?.text | translate }}</span>\n <p\n class=\"text-muted m-t-8\"\n *ngIf=\"step?.error?.detailedData\"\n >\n <button\n class=\"btn btn-clean\"\n (click)=\"alert.expanded = !alert.expanded\"\n >\n <i c8yIcon=\"chevron-down\"></i>\n <span *ngIf=\"!alert.expanded\">Show details</span>\n <span *ngIf=\"alert.expanded\">Hide details</span>\n </button>\n </p>\n <div\n [collapse]=\"!alert.expanded\"\n [isAnimated]=\"true\"\n >\n {{ step.error.detailedData | json }}\n </div>\n </c8y-li-collapse>\n <c8y-li-action\n icon=\"play\"\n label=\"{{ 'Retry this step`button`' | translate }}\"\n *ngIf=\"step.state === 'Failed' && !step.overrideContext\"\n (click)=\"service.retryStep(step)\"\n data-cy=\"c8y-replace-device-wizard--retry-step\"\n ></c8y-li-action>\n </c8y-li>\n </c8y-list-group>\n </div>\n\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n [pending]=\"service.deviceReplacementInProgress$ | async\"\n (onBack)=\"close()\"\n [labels]=\"{ back: 'Close' | translate }\"\n >\n <button\n class=\"btn btn-primary\"\n [title]=\"'Retry' | translate\"\n type=\"button\"\n *ngIf=\"(service.deviceReplaced$ | async) === false\"\n (click)=\"service.retryStep()\"\n [ngClass]=\"{ 'btn-pending': service.deviceReplacementInProgress$ | async }\"\n [disabled]=\"service.deviceReplacementInProgress$ | async\"\n data-cy=\"c8y-replace-device-wizard--btn-retry\"\n >\n {{ 'Retry' | translate }}\n </button>\n </c8y-stepper-buttons>\n </cdk-step>\n</c8y-stepper>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.JsonPipe, name: "json" }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i3.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: i5.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i3.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon"], outputs: ["click"] }, { kind: "component", type: i3.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i3.ListItemCheckboxComponent, selector: "c8y-list-item-checkbox, c8y-li-checkbox", inputs: ["selected", "disabled", "displayAsSwitch"], outputs: ["onSelect"] }, { kind: "ngmodule", type: DeviceGridModule }, { kind: "component", type: i2.DeviceGridComponent, selector: "c8y-device-grid", inputs: ["dataCallback", "refresh", "title", "loadMoreItemsLabel", "loadingItemsLabel", "legacyConfigKey", "legacyFilterKey", "columns", "pagination", "infiniteScroll", "builtInActionsToHide", "actionControls", "selectable", "singleSelection", "baseQuery", "bulkActionControls", "headerActionControls", "childDeviceGrid", "parentDeviceId", "withChildren", "showSearch", "activeClassName"], outputs: ["onColumnsChange", "onFilterChange", "onDeviceQueryStringChange", "itemsSelect"] }, { kind: "ngmodule", type: DeviceSelectorModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i6.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "ngmodule", type: CollapseModule }, { kind: "directive", type: i7.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i8.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }] });
|
|
95
95
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ReplaceDeviceWizardComponent, decorators: [{
|
|
96
96
|
type: Component,
|
|
97
97
|
args: [{ standalone: true, selector: 'c8y-replace-device-wizard', imports: [
|
|
@@ -124,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
124
124
|
}], deviceToReplace: [{
|
|
125
125
|
type: Input
|
|
126
126
|
}] } });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1kZXZpY2Utd2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3JlcGxhY2UtZGV2aWNlLXdpemFyZC9yZXBsYWNlLWRldmljZS13aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcmVwbGFjZS1kZXZpY2Utd2l6YXJkL3JlcGxhY2UtZGV2aWNlLXdpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFFVixVQUFVLEVBQ1Ysd0NBQXdDLEVBQ3hDLGdDQUFnQyxFQUNoQyxPQUFPLEVBRVAsWUFBWSxFQUNaLE1BQU0sRUFDTixvQ0FBb0MsRUFFckMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7QUEyQjdFLE1BQU0sT0FBTyw0QkFBNEI7SUFrQnZDLElBQ0ksZUFBZSxDQUFDLGVBQStCO1FBQ2pELElBQUksQ0FBQyxP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NEI7a0JBekJ4QyxTQUFTO2lDQUNJLElBQUksWUFDTiwyQkFBMkIsV0FDNUI7d0JBQ1AsVUFBVTt3QkFDVixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGFBQWE7cUJBQ2QsYUFDVTt3QkFDVCxpQkFBaUI7d0JBQ2pCLDBCQUEwQjt3QkFDMUI7NEJBQ0UsT0FBTyxFQUFFLGdDQUFnQzs0QkFDekMsUUFBUSxFQUFFLG9DQUFvQzt5QkFDL0M7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHdDQUF3Qzs0QkFDakQsV0FBVyw4QkFBOEI7eUJBQzFDO3FCQUNGOzswQkEyQ0UsUUFBUTs0Q0EzQlgsT0FBTztzQkFETixXQUFXO3VCQUFDLE9BQU87Z0JBSXBCLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUluQyxlQUFlO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9wdGlvbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQm90dG9tRHJhd2VyUmVmLFxuICBDOHlTdGVwcGVyLFxuICBDb2x1bW4sXG4gIENvcmVNb2R1bGUsXG4gIERBVEFfR1JJRF9DT05GSUdVUkFUSU9OX0NPTlRFWFRfUFJPVklERVIsXG4gIERBVEFfR1JJRF9DT05GSUdVUkFUSU9OX1NUUkFURUdZLFxuICBnZXR0ZXh0LFxuICBHcmlkQ29uZmlnQ29udGV4dFByb3ZpZGVyLFxuICBNb2RhbFNlcnZpY2UsXG4gIFN0YXR1cyxcbiAgVXNlclByZWZlcmVuY2VzQ29uZmlndXJhdGlvblN0cmF0ZWd5LFxuICBVc2VyUHJlZmVyZW5jZXNHcmlkQ29uZmlnQ29udGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IERldmljZUdyaWRNb2R1bGUsIERldmljZUdyaWRTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kZXZpY2UtZ3JpZCc7XG5pbXBvcnQgeyBEZXZpY2VTZWxlY3Rvck1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9kZXZpY2Utc2VsZWN0b3InO1xuaW1wb3J0IHsgQ29sbGFwc2VNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2NvbGxhcHNlJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BvcG92ZXInO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSRVBMQUNFX0RFVklDRV9TVEVQX1NUQVRFU19NQVAgfSBmcm9tICcuL3JlcGxhY2UtZGV2aWNlLXdpemFyZC5tb2RlbCc7XG5pbXBvcnQgeyBSZXBsYWNlRGV2aWNlV2l6YXJkU2VydmljZSB9IGZyb20gJy4vcmVwbGFjZS1kZXZpY2Utd2l6YXJkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdjOHktcmVwbGFjZS1kZXZpY2Utd2l6YXJkJyxcbiAgaW1wb3J0czogW1xuICAgIENvcmVNb2R1bGUsXG4gICAgRGV2aWNlR3JpZE1vZHVsZSxcbiAgICBEZXZpY2VTZWxlY3Rvck1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIENvbGxhcHNlTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRGV2aWNlR3JpZFNlcnZpY2UsXG4gICAgUmVwbGFjZURldmljZVdpemFyZFNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogREFUQV9HUklEX0NPTkZJR1VSQVRJT05fU1RSQVRFR1ksXG4gICAgICB1c2VDbGFzczogVXNlclByZWZlcmVuY2VzQ29uZmlndXJhdGlvblN0cmF0ZWd5XG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBEQVRBX0dSSURfQ09ORklHVVJBVElPTl9DT05URVhUX1BST1ZJREVSLFxuICAgICAgdXNlRXhpc3Rpbmc6IFJlcGxhY2VEZXZpY2VXaXphcmRDb21wb25lbnRcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBsYWNlLWRldmljZS13aXphcmQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFJlcGxhY2VEZXZpY2VXaXphcmRDb21wb25lbnQgaW1wbGVtZW50cyBHcmlkQ29uZmlnQ29udGV4dFByb3ZpZGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9WSVNJQkxFX0NPTFVNTlMgPSBbXG4gICAgJ3N0YXR1cycsXG4gICAgJ25hbWUnLFxuICAgICdzZXJpYWxOdW1iZXInLFxuICAgICdyZWdpc3RyYXRpb25EYXRlJyxcbiAgICAnc3lzdGVtSWQnLFxuICAgICdpbWVpJ1xuICBdO1xuXG4gIFJFUExBQ0VfREVWSUNFX1NURVBfU1RBVEVTX01BUCA9IFJFUExBQ0VfREVWSUNFX1NURVBfU1RBVEVTX01BUDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgY2xhc3NlcyA9ICdkLWNvbnRlbnRzJztcblxuICBAVmlld0NoaWxkKEM4eVN0ZXBwZXIsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHN0ZXBwZXI6IEM4eVN0ZXBwZXI7XG5cbiAgQElucHV0KClcbiAgc2V0IGRldmljZVRvUmVwbGFjZShkZXZpY2VUb1JlcGxhY2U6IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgdGhpcy5zZXJ2aWNlLmZvckRldmljZShkZXZpY2VUb1JlcGxhY2UpO1xuICB9XG5cbiAgcmVwbGFjZW1lbnREZXZpY2VJZDogc3RyaW5nO1xuXG4gIGJhc2VRdWVyeSQ6IE9ic2VydmFibGU8b2JqZWN0PiA9IHRoaXMuc2VydmljZS5kZXZpY2VUb1JlcGxhY2UkLnBpcGUoXG4gICAgbWFwKGRldmljZSA9PiAoe1xuICAgICAgX19ub3Q6IHtcbiAgICAgICAgaWQ6IHtcbiAgICAgICAgICBfX2VxOiBkZXZpY2U/LmlkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSlcbiAgKTtcbiAgY29sdW1uczogQ29sdW1uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHNlcnZpY2U6IFJlcGxhY2VEZXZpY2VXaXphcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGV2aWNlR3JpZFNlcnZpY2U6IERldmljZUdyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRyYXdlclJlZjogQm90dG9tRHJhd2VyUmVmPFJlcGxhY2VEZXZpY2VXaXphcmRDb21wb25lbnQ+XG4gICkge1xuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0RGVmYXVsdENvbHVtbnMoKS5tYXAoY29sdW1uID0+IHtcbiAgICAgIGNvbHVtbi52aXNpYmxlID0gUmVwbGFjZURldmljZVdpemFyZENvbXBvbmVudC5ERUZBVUxUX1ZJU0lCTEVfQ09MVU1OUy5pbmNsdWRlcyhjb2x1bW4ubmFtZSk7XG4gICAgICByZXR1cm4gY29sdW1uO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0R3JpZENvbmZpZ0NvbnRleHQoKTogVXNlclByZWZlcmVuY2VzR3JpZENvbmZpZ0NvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6ICdyZXBsYWNlLWRldmljZS13aXphcmQtZ3JpZCcsXG4gICAgICBjb25maWdGaWx0ZXI6IHtcbiAgICAgICAgZmlsdGVyOiBmYWxzZVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBhc3luYyByZXBsYWNlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ1JlcGxhY2UgZGV2aWNlJyksXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gcmVwbGFjZSBhIGRldmljZS4gV2hlbiB0aGUgcHJvY2VzcyBpcyBmaW5pc2hlZCwgdGhlIHJlcGxhY2VtZW50IGRldmljZSBhbmQgaXRzIGRhdGEgd2lsbCBiZSBkZWxldGVkLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPydcbiAgICAgICAgKSxcbiAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAgeyBvazogZ2V0dGV4dCgnUmVwbGFjZScpLCBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpIH1cbiAgICAgICk7XG4gICAgICB0aGlzLnNlcnZpY2UucmVwbGFjZURldmljZSgpO1xuICAgICAgdGhpcy5jb250aW51ZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBJbnRlbnRpb25hbGx5IGVtcHR5XG4gICAgfVxuICB9XG5cbiAgY29udGludWUoKSB7XG4gICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5kcmF3ZXJSZWYpIHtcbiAgICAgIHRoaXMuZHJhd2VyUmVmLmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LXN0ZXBwZXJcbiAgY2xhc3M9XCJkLWNvbnRlbnRzIGM4eS1zdGVwcGVyLS1uby1idG5zXCJcbiAgW2Rpc2FibGVEZWZhdWx0SWNvbnNdPVwieyBlZGl0OiB0cnVlLCBkb25lOiBmYWxzZSB9XCJcbiAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgW2N1c3RvbUNsYXNzZXNdPVwiW1xuICAgICdjb2wteHMtMTAnLFxuICAgICdjb2wteHMtb2Zmc2V0LTEnLFxuICAgICdjb2wtc20tOCcsXG4gICAgJ2NvbC1zbS1vZmZzZXQtMicsXG4gICAgJ20tdC0yNCcsXG4gICAgJ20tYi00MCcsXG4gICAgJ3AtMCcsXG4gICAgJ2ZsZXgtbm8tc2hyaW5rJ1xuICBdXCJcbiAgbGluZWFyXG4+XG4gIDxjZGstc3RlcCBbbGFiZWxdPVwiJ1JlcGxhY2VtZW50IGRldmljZScgfCB0cmFuc2xhdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC0xNiBwLXQtMCBmbGV4LW5vLXNocmluayBzZXBhcmF0b3ItYm90dG9tIGNvbC14cy0xMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAge3sgJ1JlcGxhY2VtZW50IGRldmljZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8Yzh5LWRldmljZS1ncmlkXG4gICAgICBjbGFzcz1cImZsZXgtZ3JvdyBjb2wteHMtMTIgbm8tZ3V0dGVyXCJcbiAgICAgIFt0aXRsZV09XCInU2VsZWN0IHJlcGxhY2VtZW50IGRldmljZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW2luZmluaXRlU2Nyb2xsXT1cIidhdXRvJ1wiXG4gICAgICBbYWN0aW9uQ29udHJvbHNdPVwiW11cIlxuICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICAgIFtzaW5nbGVTZWxlY3Rpb25dPVwidHJ1ZVwiXG4gICAgICBbYmFzZVF1ZXJ5XT1cImJhc2VRdWVyeSQgfCBhc3luY1wiXG4gICAgICAoaXRlbXNTZWxlY3QpPVwicmVwbGFjZW1lbnREZXZpY2VJZCA9ICRldmVudFswXVwiXG4gICAgPjwvYzh5LWRldmljZS1ncmlkPlxuICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICBjbGFzcz1cImQtYmxvY2sgY2FyZC1mb290ZXIgcC0yNCBzZXBhcmF0b3JcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFyZXBsYWNlbWVudERldmljZUlkXCJcbiAgICAgIChvbkNhbmNlbCk9XCJjYW5jZWwoKVwiXG4gICAgICAob25OZXh0KT1cInNlcnZpY2UuY2hhbmdlUmVwbGFjZW1lbnREZXZpY2VJZChyZXBsYWNlbWVudERldmljZUlkKTsgY29udGludWUoKVwiXG4gICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgPC9jZGstc3RlcD5cblxuICA8Y2RrLXN0ZXAgW2xhYmVsXT1cIidTZWxlY3QgZXh0ZXJuYWwgSURzJyB8IHRyYW5zbGF0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwLTE2IHAtdC0wIGZsZXgtbm8tc2hyaW5rIGNvbC14cy0xMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAge3sgJ1NlbGVjdCBleHRlcm5hbCBJRHMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGM4eS1saSBjbGFzcz1cInBhZ2Utc3RpY2t5LWhlYWRlciBoaWRkZW4tc20gaGlkZGVuLXhzXCI+XG4gICAgICA8Yzh5LWxpLWljb24+PGkgY2xhc3M9XCJwLWwtMjRcIj48L2k+PC9jOHktbGktaWNvbj5cbiAgICAgIDxjOHktbGktYm9keSBjbGFzcz1cImNvbnRlbnQtZmxleC00MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LW1lZGl1bSB0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgIHRpdGxlPVwiIHt7ICdUeXBlJyB8IHRyYW5zbGF0ZSB9fSBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdUeXBlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtbWVkaXVtIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRXh0ZXJuYWwgSUQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnRXh0ZXJuYWwgSUQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgPC9jOHktbGk+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb2wteHMtMTIgZmxleC1ncm93IG5vLWd1dHRlclwiXG4gICAgICAqbmdJZj1cIiEoc2VydmljZS5leHRlcm5hbElkc0xvYWRpbmckIHwgYXN5bmMpOyBlbHNlIGxvYWRpbmdcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjYXJkLWlubmVyLXNjcm9sbCBmaXQtaFwiXG4gICAgICAgICpuZ0lmPVwiKHNlcnZpY2UuZXh0ZXJuYWxJZHNXaXRoU2VsZWN0aW9uJCB8IGFzeW5jKT8ubGVuZ3RoID4gMDsgZWxzZSBub0lkc1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0wIHAtYi0wXCI+XG4gICAgICAgICAgPGM4eS1saXN0LWdyb3VwPlxuICAgICAgICAgICAgPGM4eS1saSAqbmdGb3I9XCJsZXQgZXh0SWQgb2Ygc2VydmljZS5leHRlcm5hbElkc1dpdGhTZWxlY3Rpb24kIHwgYXN5bmNcIj5cbiAgICAgICAgICAgICAgPGM4eS1saS1jaGVja2JveFxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJleHRJZC5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cInNlcnZpY2UuY2hlY2tFeHRlcm5hbElkKGV4dElkLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvYzh5LWxpLWNoZWNrYm94PlxuICAgICAgICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtNDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgbS1iLXhzLThcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnVHlwZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItOCB2aXNpYmxlLXhzIHZpc2libGUtc21cIlxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgVHlwZVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dElkLmlkLnR5cGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtLWIteHMtOFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdFeHRlcm5hbCBJRCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItOCB2aXNpYmxlLXhzIHZpc2libGUtc21cIlxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWwgSURcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBleHRJZC5pZC5leHRlcm5hbElkIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktbGktYm9keT5cbiAgICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI25vSWRzPlxuICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgW2ljb25dPVwiJ2JhcmNvZGUnXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ05vIGV4dGVybmFsIElEcyBhc3NpZ25lZC4nXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgICAnVGhlIHNlbGVjdGVkIHJlcGxhY2VtZW50IGRldmljZSBkb2VzIG5vdCBoYXZlIGV4dGVybmFsIElEcyBhc3NpZ25lZC4gR28gYmFjayB0byAmcXVvdDtSZXBsYWNlbWVudCBkZXZpY2UmcXVvdDsgYW5kIHNlbGVjdCBhIGRpZmZlcmVudCBkZXZpY2UuJ1xuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIFwiXG4gICAgICAgICAgKm5nSWY9XCJ0cnVlXCJcbiAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGQtY29sIGEtaS1jZW50ZXIgai1jLWNlbnRlciBmaXQtaFwiPlxuICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgIGNsYXNzPVwiZC1ibG9jayBjYXJkLWZvb3RlciBwLTI0IHNlcGFyYXRvclwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIChzZXJ2aWNlLmV4dGVybmFsSWRzTG9hZGluZyQgfCBhc3luYykgfHwgIShzZXJ2aWNlLnNlbGVjdGVkRXh0ZXJuYWxJZHMkIHwgYXN5bmMpPy5sZW5ndGhcbiAgICAgIFwiXG4gICAgICAob25DYW5jZWwpPVwiY2FuY2VsKClcIlxuICAgICAgKG9uTmV4dCk9XCJyZXBsYWNlKClcIlxuICAgICAgW2xhYmVsc109XCJ7IG5leHQ6ICgnUmVwbGFjZScgfCB0cmFuc2xhdGUpIH1cIlxuICAgID48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gIDwvY2RrLXN0ZXA+XG5cbiAgPGNkay1zdGVwIFtsYWJlbF09XCInUmVwbGFjZScgfCB0cmFuc2xhdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC0xNiBwLXQtMCBmbGV4LW5vLXNocmluayBjb2wteHMtMTIgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAge3sgJ1JlcGxhY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWNvbCBhLWktY2VudGVyIGotYy1jZW50ZXIgaW5uZXItc2Nyb2xsXCI+XG4gICAgICA8Yzh5LWxpc3QtZ3JvdXAgY2xhc3M9XCJjb2wtc20tOCBjb2wtbWQtNlwiPlxuICAgICAgICA8Yzh5LWxpXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc2VydmljZS5zdGVwc1wiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCInYzh5LXJlcGxhY2UtZGV2aWNlLXdpemFyZC0tc3RlcC0nICsgc3RlcC5sYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LWxpLWljb24+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBbYzh5SWNvbl09XCJSRVBMQUNFX0RFVklDRV9TVEVQX1NUQVRFU19NQVBbc3RlcC5zdGF0ZSB8fCAnUGVuZGluZyddPy5pY29uXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiKHN0ZXAuc3RhdGUgfHwgJ1BlbmRpbmcnKS50b1N0cmluZygpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiUkVQTEFDRV9ERVZJQ0VfU1RFUF9TVEFURVNfTUFQW3N0ZXAuc3RhdGUgfHwgJ1BlbmRpbmcnXT8uc3R5bGVDbGFzc1wiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgICAgPGM4eS1saS1ib2R5PlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieyAndGV4dC1ib2xkJzogISFzdGVwLmVycm9yIH1cIj57eyBzdGVwLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbSBwdWxsLXJpZ2h0XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN0ZXAuaW5mby5tc2cgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJzdGVwLmluZm8ubXNnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiISFzdGVwLmluZm8/Lm1zZ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJxdWVzdGlvbi1jaXJjbGUtb1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgPGM4eS1saS1jb2xsYXBzZVxuICAgICAgICAgICAgI2FsZXJ0XG4gICAgICAgICAgICAqbmdJZj1cInN0ZXAuZXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVzc2FnZVwiPnt7IHN0ZXAuZXJyb3I/LnRleHQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8cFxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtbXV0ZWQgbS10LThcIlxuICAgICAgICAgICAgICAqbmdJZj1cInN0ZXA/LmVycm9yPy5kZXRhaWxlZERhdGFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNsZWFuXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWxlcnQuZXhwYW5kZWQgPSAhYWxlcnQuZXhwYW5kZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImNoZXZyb24tZG93blwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFhbGVydC5leHBhbmRlZFwiPlNob3cgZGV0YWlsczwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFsZXJ0LmV4cGFuZGVkXCI+SGlkZSBkZXRhaWxzPC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgW2NvbGxhcHNlXT1cIiFhbGVydC5leHBhbmRlZFwiXG4gICAgICAgICAgICAgIFtpc0FuaW1hdGVkXT1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBzdGVwLmVycm9yLmRldGFpbGVkRGF0YSB8IGpzb24gfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgIDxjOHktbGktYWN0aW9uXG4gICAgICAgICAgICBpY29uPVwicGxheVwiXG4gICAgICAgICAgICBsYWJlbD1cInt7ICdSZXRyeSB0aGlzIHN0ZXBgYnV0dG9uYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgKm5nSWY9XCJzdGVwLnN0YXRlID09PSAnRmFpbGVkJyAmJiAhc3RlcC5vdmVycmlkZUNvbnRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlcnZpY2UucmV0cnlTdGVwKHN0ZXApXCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktcmVwbGFjZS1kZXZpY2Utd2l6YXJkLS1yZXRyeS1zdGVwXCJcbiAgICAgICAgICA+PC9jOHktbGktYWN0aW9uPlxuICAgICAgICA8L2M4eS1saT5cbiAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgPC9kaXY+XG5cbiAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgY2xhc3M9XCJkLWJsb2NrIGNhcmQtZm9vdGVyIHAtMjQgc2VwYXJhdG9yXCJcbiAgICAgIFtwZW5kaW5nXT1cInNlcnZpY2UuZGV2aWNlUmVwbGFjZW1lbnRJblByb2dyZXNzJCB8IGFzeW5jXCJcbiAgICAgIChvbkJhY2spPVwiY2xvc2UoKVwiXG4gICAgICBbbGFiZWxzXT1cInsgYmFjazogJ0Nsb3NlJyB8IHRyYW5zbGF0ZSB9XCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgW3RpdGxlXT1cIidSZXRyeScgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCIoc2VydmljZS5kZXZpY2VSZXBsYWNlZCQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICAgICAgKGNsaWNrKT1cInNlcnZpY2UucmV0cnlTdGVwKClcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdidG4tcGVuZGluZyc6IHNlcnZpY2UuZGV2aWNlUmVwbGFjZW1lbnRJblByb2dyZXNzJCB8IGFzeW5jIH1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwic2VydmljZS5kZXZpY2VSZXBsYWNlbWVudEluUHJvZ3Jlc3MkIHwgYXN5bmNcIlxuICAgICAgICBkYXRhLWN5PVwiYzh5LXJlcGxhY2UtZGV2aWNlLXdpemFyZC0tYnRuLXJldHJ5XCJcbiAgICAgID5cbiAgICAgICAge3sgJ1JldHJ5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9jOHktc3RlcHBlci1idXR0b25zPlxuICA8L2Nkay1zdGVwPlxuPC9jOHktc3RlcHBlcj5cbiJdfQ==
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1kZXZpY2Utd2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3JlcGxhY2UtZGV2aWNlLXdpemFyZC9yZXBsYWNlLWRldmljZS13aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcmVwbGFjZS1kZXZpY2Utd2l6YXJkL3JlcGxhY2UtZGV2aWNlLXdpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFFVixVQUFVLEVBQ1Ysd0NBQXdDLEVBQ3hDLGdDQUFnQyxFQUNoQyxPQUFPLEVBRVAsWUFBWSxFQUNaLE1BQU0sRUFDTixvQ0FBb0MsRUFFckMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7QUEyQjdFLE1BQU0sT0FBTyw0QkFBNEI7SUFrQnZDLElBQ0ksZUFBZSxDQUFDLGVBQStCO1FBQ2pELElBQUksQ0FBQyxP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NEI7a0JBekJ4QyxTQUFTO2lDQUNJLElBQUksWUFDTiwyQkFBMkIsV0FDNUI7d0JBQ1AsVUFBVTt3QkFDVixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGFBQWE7cUJBQ2QsYUFDVTt3QkFDVCxpQkFBaUI7d0JBQ2pCLDBCQUEwQjt3QkFDMUI7NEJBQ0UsT0FBTyxFQUFFLGdDQUFnQzs0QkFDekMsUUFBUSxFQUFFLG9DQUFvQzt5QkFDL0M7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHdDQUF3Qzs0QkFDakQsV0FBVyw4QkFBOEI7eUJBQzFDO3FCQUNGOzswQkEyQ0UsUUFBUTs0Q0EzQlgsT0FBTztzQkFETixXQUFXO3VCQUFDLE9BQU87Z0JBSXBCLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUluQyxlQUFlO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9wdGlvbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQm90dG9tRHJhd2VyUmVmLFxuICBDOHlTdGVwcGVyLFxuICBDb2x1bW4sXG4gIENvcmVNb2R1bGUsXG4gIERBVEFfR1JJRF9DT05GSUdVUkFUSU9OX0NPTlRFWFRfUFJPVklERVIsXG4gIERBVEFfR1JJRF9DT05GSUdVUkFUSU9OX1NUUkFURUdZLFxuICBnZXR0ZXh0LFxuICBHcmlkQ29uZmlnQ29udGV4dFByb3ZpZGVyLFxuICBNb2RhbFNlcnZpY2UsXG4gIFN0YXR1cyxcbiAgVXNlclByZWZlcmVuY2VzQ29uZmlndXJhdGlvblN0cmF0ZWd5LFxuICBVc2VyUHJlZmVyZW5jZXNHcmlkQ29uZmlnQ29udGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IERldmljZUdyaWRNb2R1bGUsIERldmljZUdyaWRTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kZXZpY2UtZ3JpZCc7XG5pbXBvcnQgeyBEZXZpY2VTZWxlY3Rvck1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9kZXZpY2Utc2VsZWN0b3InO1xuaW1wb3J0IHsgQ29sbGFwc2VNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2NvbGxhcHNlJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BvcG92ZXInO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSRVBMQUNFX0RFVklDRV9TVEVQX1NUQVRFU19NQVAgfSBmcm9tICcuL3JlcGxhY2UtZGV2aWNlLXdpemFyZC5tb2RlbCc7XG5pbXBvcnQgeyBSZXBsYWNlRGV2aWNlV2l6YXJkU2VydmljZSB9IGZyb20gJy4vcmVwbGFjZS1kZXZpY2Utd2l6YXJkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdjOHktcmVwbGFjZS1kZXZpY2Utd2l6YXJkJyxcbiAgaW1wb3J0czogW1xuICAgIENvcmVNb2R1bGUsXG4gICAgRGV2aWNlR3JpZE1vZHVsZSxcbiAgICBEZXZpY2VTZWxlY3Rvck1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIENvbGxhcHNlTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRGV2aWNlR3JpZFNlcnZpY2UsXG4gICAgUmVwbGFjZURldmljZVdpemFyZFNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogREFUQV9HUklEX0NPTkZJR1VSQVRJT05fU1RSQVRFR1ksXG4gICAgICB1c2VDbGFzczogVXNlclByZWZlcmVuY2VzQ29uZmlndXJhdGlvblN0cmF0ZWd5XG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBEQVRBX0dSSURfQ09ORklHVVJBVElPTl9DT05URVhUX1BST1ZJREVSLFxuICAgICAgdXNlRXhpc3Rpbmc6IFJlcGxhY2VEZXZpY2VXaXphcmRDb21wb25lbnRcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBsYWNlLWRldmljZS13aXphcmQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFJlcGxhY2VEZXZpY2VXaXphcmRDb21wb25lbnQgaW1wbGVtZW50cyBHcmlkQ29uZmlnQ29udGV4dFByb3ZpZGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9WSVNJQkxFX0NPTFVNTlMgPSBbXG4gICAgJ3N0YXR1cycsXG4gICAgJ25hbWUnLFxuICAgICdzZXJpYWxOdW1iZXInLFxuICAgICdyZWdpc3RyYXRpb25EYXRlJyxcbiAgICAnc3lzdGVtSWQnLFxuICAgICdpbWVpJ1xuICBdO1xuXG4gIFJFUExBQ0VfREVWSUNFX1NURVBfU1RBVEVTX01BUCA9IFJFUExBQ0VfREVWSUNFX1NURVBfU1RBVEVTX01BUDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgY2xhc3NlcyA9ICdkLWNvbnRlbnRzJztcblxuICBAVmlld0NoaWxkKEM4eVN0ZXBwZXIsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHN0ZXBwZXI6IEM4eVN0ZXBwZXI7XG5cbiAgQElucHV0KClcbiAgc2V0IGRldmljZVRvUmVwbGFjZShkZXZpY2VUb1JlcGxhY2U6IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgdGhpcy5zZXJ2aWNlLmZvckRldmljZShkZXZpY2VUb1JlcGxhY2UpO1xuICB9XG5cbiAgcmVwbGFjZW1lbnREZXZpY2VJZDogc3RyaW5nO1xuXG4gIGJhc2VRdWVyeSQ6IE9ic2VydmFibGU8b2JqZWN0PiA9IHRoaXMuc2VydmljZS5kZXZpY2VUb1JlcGxhY2UkLnBpcGUoXG4gICAgbWFwKGRldmljZSA9PiAoe1xuICAgICAgX19ub3Q6IHtcbiAgICAgICAgaWQ6IHtcbiAgICAgICAgICBfX2VxOiBkZXZpY2U/LmlkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSlcbiAgKTtcbiAgY29sdW1uczogQ29sdW1uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHNlcnZpY2U6IFJlcGxhY2VEZXZpY2VXaXphcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGV2aWNlR3JpZFNlcnZpY2U6IERldmljZUdyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRyYXdlclJlZjogQm90dG9tRHJhd2VyUmVmPFJlcGxhY2VEZXZpY2VXaXphcmRDb21wb25lbnQ+XG4gICkge1xuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0RGVmYXVsdENvbHVtbnMoKS5tYXAoY29sdW1uID0+IHtcbiAgICAgIGNvbHVtbi52aXNpYmxlID0gUmVwbGFjZURldmljZVdpemFyZENvbXBvbmVudC5ERUZBVUxUX1ZJU0lCTEVfQ09MVU1OUy5pbmNsdWRlcyhjb2x1bW4ubmFtZSk7XG4gICAgICByZXR1cm4gY29sdW1uO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0R3JpZENvbmZpZ0NvbnRleHQoKTogVXNlclByZWZlcmVuY2VzR3JpZENvbmZpZ0NvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6ICdyZXBsYWNlLWRldmljZS13aXphcmQtZ3JpZCcsXG4gICAgICBjb25maWdGaWx0ZXI6IHtcbiAgICAgICAgZmlsdGVyOiBmYWxzZVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBhc3luYyByZXBsYWNlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ1JlcGxhY2UgZGV2aWNlJyksXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gcmVwbGFjZSBhIGRldmljZS4gV2hlbiB0aGUgcHJvY2VzcyBpcyBmaW5pc2hlZCwgdGhlIHJlcGxhY2VtZW50IGRldmljZSBhbmQgaXRzIGRhdGEgd2lsbCBiZSBkZWxldGVkLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPydcbiAgICAgICAgKSxcbiAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAgeyBvazogZ2V0dGV4dCgnUmVwbGFjZScpLCBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpIH1cbiAgICAgICk7XG4gICAgICB0aGlzLnNlcnZpY2UucmVwbGFjZURldmljZSgpO1xuICAgICAgdGhpcy5jb250aW51ZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBJbnRlbnRpb25hbGx5IGVtcHR5XG4gICAgfVxuICB9XG5cbiAgY29udGludWUoKSB7XG4gICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5kcmF3ZXJSZWYpIHtcbiAgICAgIHRoaXMuZHJhd2VyUmVmLmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LXN0ZXBwZXJcbiAgY2xhc3M9XCJkLWNvbnRlbnRzIGM4eS1zdGVwcGVyLS1uby1idG5zXCJcbiAgW2Rpc2FibGVEZWZhdWx0SWNvbnNdPVwieyBlZGl0OiB0cnVlLCBkb25lOiBmYWxzZSB9XCJcbiAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgW2N1c3RvbUNsYXNzZXNdPVwiW1xuICAgICdjb2wteHMtMTAnLFxuICAgICdjb2wteHMtb2Zmc2V0LTEnLFxuICAgICdjb2wtc20tOCcsXG4gICAgJ2NvbC1zbS1vZmZzZXQtMicsXG4gICAgJ20tdC0yNCcsXG4gICAgJ20tYi00MCcsXG4gICAgJ3AtMCcsXG4gICAgJ2ZsZXgtbm8tc2hyaW5rJ1xuICBdXCJcbiAgbGluZWFyXG4+XG4gIDxjZGstc3RlcCBbbGFiZWxdPVwiJ1JlcGxhY2VtZW50IGRldmljZScgfCB0cmFuc2xhdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC0xNiBwLXQtMCBmbGV4LW5vLXNocmluayBzZXBhcmF0b3ItYm90dG9tIGNvbC14cy0xMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAge3sgJ1JlcGxhY2VtZW50IGRldmljZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8Yzh5LWRldmljZS1ncmlkXG4gICAgICBjbGFzcz1cImZsZXgtZ3JvdyBjb2wteHMtMTIgbm8tZ3V0dGVyXCJcbiAgICAgIFt0aXRsZV09XCInU2VsZWN0IHJlcGxhY2VtZW50IGRldmljZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW2luZmluaXRlU2Nyb2xsXT1cIidhdXRvJ1wiXG4gICAgICBbYWN0aW9uQ29udHJvbHNdPVwiW11cIlxuICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICAgIFtzaW5nbGVTZWxlY3Rpb25dPVwidHJ1ZVwiXG4gICAgICBbYmFzZVF1ZXJ5XT1cImJhc2VRdWVyeSQgfCBhc3luY1wiXG4gICAgICAoaXRlbXNTZWxlY3QpPVwicmVwbGFjZW1lbnREZXZpY2VJZCA9ICRldmVudFswXVwiXG4gICAgPjwvYzh5LWRldmljZS1ncmlkPlxuICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICBjbGFzcz1cImQtYmxvY2sgY2FyZC1mb290ZXIgcC0yNCBzZXBhcmF0b3JcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFyZXBsYWNlbWVudERldmljZUlkXCJcbiAgICAgIChvbkNhbmNlbCk9XCJjYW5jZWwoKVwiXG4gICAgICAob25OZXh0KT1cInNlcnZpY2UuY2hhbmdlUmVwbGFjZW1lbnREZXZpY2VJZChyZXBsYWNlbWVudERldmljZUlkKTsgY29udGludWUoKVwiXG4gICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgPC9jZGstc3RlcD5cblxuICA8Y2RrLXN0ZXAgW2xhYmVsXT1cIidTZWxlY3QgZXh0ZXJuYWwgSURzJyB8IHRyYW5zbGF0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwLTE2IHAtdC0wIGZsZXgtbm8tc2hyaW5rIGNvbC14cy0xMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAge3sgJ1NlbGVjdCBleHRlcm5hbCBJRHMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGM4eS1saSBjbGFzcz1cInBhZ2Utc3RpY2t5LWhlYWRlciBoaWRkZW4tc20gaGlkZGVuLXhzXCI+XG4gICAgICA8Yzh5LWxpLWljb24+PGkgY2xhc3M9XCJwLWwtMjRcIj48L2k+PC9jOHktbGktaWNvbj5cbiAgICAgIDxjOHktbGktYm9keSBjbGFzcz1cImNvbnRlbnQtZmxleC00MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LW1lZGl1bSB0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgIHRpdGxlPVwiIHt7ICdUeXBlJyB8IHRyYW5zbGF0ZSB9fSBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdUeXBlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtbWVkaXVtIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRXh0ZXJuYWwgSUQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnRXh0ZXJuYWwgSUQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgPC9jOHktbGk+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb2wteHMtMTIgZmxleC1ncm93IG5vLWd1dHRlclwiXG4gICAgICAqbmdJZj1cIiEoc2VydmljZS5leHRlcm5hbElkc0xvYWRpbmckIHwgYXN5bmMpOyBlbHNlIGxvYWRpbmdcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjYXJkLWlubmVyLXNjcm9sbCBmaXQtaFwiXG4gICAgICAgICpuZ0lmPVwiKHNlcnZpY2UuZXh0ZXJuYWxJZHNXaXRoU2VsZWN0aW9uJCB8IGFzeW5jKT8ubGVuZ3RoID4gMDsgZWxzZSBub0lkc1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0wIHAtYi0wXCI+XG4gICAgICAgICAgPGM4eS1saXN0LWdyb3VwPlxuICAgICAgICAgICAgPGM4eS1saSAqbmdGb3I9XCJsZXQgZXh0SWQgb2Ygc2VydmljZS5leHRlcm5hbElkc1dpdGhTZWxlY3Rpb24kIHwgYXN5bmNcIj5cbiAgICAgICAgICAgICAgPGM4eS1saS1jaGVja2JveFxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJleHRJZC5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cInNlcnZpY2UuY2hlY2tFeHRlcm5hbElkKGV4dElkLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvYzh5LWxpLWNoZWNrYm94PlxuICAgICAgICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtNDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgbS1iLXhzLThcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnVHlwZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItOCB2aXNpYmxlLXhzIHZpc2libGUtc21cIlxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgVHlwZVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dElkLmlkLnR5cGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtLWIteHMtOFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdFeHRlcm5hbCBJRCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItOCB2aXNpYmxlLXhzIHZpc2libGUtc21cIlxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWwgSURcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBleHRJZC5pZC5leHRlcm5hbElkIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktbGktYm9keT5cbiAgICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI25vSWRzPlxuICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgW2ljb25dPVwiJ2JhcmNvZGUnXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ05vIGV4dGVybmFsIElEcyBhc3NpZ25lZC4nXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgICAnVGhlIHNlbGVjdGVkIHJlcGxhY2VtZW50IGRldmljZSBkb2VzIG5vdCBoYXZlIGV4dGVybmFsIElEcyBhc3NpZ25lZC4gR28gYmFjayB0byAmcXVvdDtSZXBsYWNlbWVudCBkZXZpY2UmcXVvdDsgYW5kIHNlbGVjdCBhIGRpZmZlcmVudCBkZXZpY2UuJ1xuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIFwiXG4gICAgICAgICAgKm5nSWY9XCJ0cnVlXCJcbiAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGQtY29sIGEtaS1jZW50ZXIgai1jLWNlbnRlciBmaXQtaFwiPlxuICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgIGNsYXNzPVwiZC1ibG9jayBjYXJkLWZvb3RlciBwLTI0IHNlcGFyYXRvclwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIChzZXJ2aWNlLmV4dGVybmFsSWRzTG9hZGluZyQgfCBhc3luYykgfHwgIShzZXJ2aWNlLnNlbGVjdGVkRXh0ZXJuYWxJZHMkIHwgYXN5bmMpPy5sZW5ndGhcbiAgICAgIFwiXG4gICAgICAob25DYW5jZWwpPVwiY2FuY2VsKClcIlxuICAgICAgKG9uTmV4dCk9XCJyZXBsYWNlKClcIlxuICAgICAgW2xhYmVsc109XCJ7IG5leHQ6ICgnUmVwbGFjZScgfCB0cmFuc2xhdGUpIH1cIlxuICAgID48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gIDwvY2RrLXN0ZXA+XG5cbiAgPGNkay1zdGVwIFtsYWJlbF09XCInUmVwbGFjZScgfCB0cmFuc2xhdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC0xNiBwLXQtMCBmbGV4LW5vLXNocmluayBjb2wteHMtMTIgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAge3sgJ1JlcGxhY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWNvbCBhLWktY2VudGVyIGotYy1jZW50ZXIgaW5uZXItc2Nyb2xsXCI+XG4gICAgICA8Yzh5LWxpc3QtZ3JvdXAgY2xhc3M9XCJjb2wtc20tOCBjb2wtbWQtNlwiPlxuICAgICAgICA8Yzh5LWxpXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc2VydmljZS5zdGVwc1wiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCInYzh5LXJlcGxhY2UtZGV2aWNlLXdpemFyZC0tc3RlcC0nICsgc3RlcC5sYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LWxpLWljb24+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBbYzh5SWNvbl09XCJSRVBMQUNFX0RFVklDRV9TVEVQX1NUQVRFU19NQVBbc3RlcC5zdGF0ZSB8fCAnUGVuZGluZyddPy5pY29uXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiKHN0ZXAuc3RhdGUgfHwgJ1BlbmRpbmcnKS50b1N0cmluZygpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiUkVQTEFDRV9ERVZJQ0VfU1RFUF9TVEFURVNfTUFQW3N0ZXAuc3RhdGUgfHwgJ1BlbmRpbmcnXT8uc3R5bGVDbGFzc1wiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgICAgPGM4eS1saS1ib2R5PlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieyAndGV4dC1ib2xkJzogISFzdGVwLmVycm9yIH1cIj57eyBzdGVwLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbSBwdWxsLXJpZ2h0XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN0ZXAuaW5mby5tc2cgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJzdGVwLmluZm8ubXNnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiISFzdGVwLmluZm8/Lm1zZ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJxdWVzdGlvbi1jaXJjbGUtb1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgPGM4eS1saS1jb2xsYXBzZVxuICAgICAgICAgICAgI2FsZXJ0XG4gICAgICAgICAgICAqbmdJZj1cInN0ZXAuZXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVzc2FnZVwiPnt7IHN0ZXAuZXJyb3I/LnRleHQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8cFxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtbXV0ZWQgbS10LThcIlxuICAgICAgICAgICAgICAqbmdJZj1cInN0ZXA/LmVycm9yPy5kZXRhaWxlZERhdGFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNsZWFuXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWxlcnQuZXhwYW5kZWQgPSAhYWxlcnQuZXhwYW5kZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImNoZXZyb24tZG93blwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFhbGVydC5leHBhbmRlZFwiPlNob3cgZGV0YWlsczwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFsZXJ0LmV4cGFuZGVkXCI+SGlkZSBkZXRhaWxzPC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgW2NvbGxhcHNlXT1cIiFhbGVydC5leHBhbmRlZFwiXG4gICAgICAgICAgICAgIFtpc0FuaW1hdGVkXT1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBzdGVwLmVycm9yLmRldGFpbGVkRGF0YSB8IGpzb24gfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgIDxjOHktbGktYWN0aW9uXG4gICAgICAgICAgICBpY29uPVwicGxheVwiXG4gICAgICAgICAgICBsYWJlbD1cInt7ICdSZXRyeSB0aGlzIHN0ZXBgYnV0dG9uYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgKm5nSWY9XCJzdGVwLnN0YXRlID09PSAnRmFpbGVkJyAmJiAhc3RlcC5vdmVycmlkZUNvbnRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlcnZpY2UucmV0cnlTdGVwKHN0ZXApXCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktcmVwbGFjZS1kZXZpY2Utd2l6YXJkLS1yZXRyeS1zdGVwXCJcbiAgICAgICAgICA+PC9jOHktbGktYWN0aW9uPlxuICAgICAgICA8L2M4eS1saT5cbiAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgPC9kaXY+XG5cbiAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgY2xhc3M9XCJkLWJsb2NrIGNhcmQtZm9vdGVyIHAtMjQgc2VwYXJhdG9yXCJcbiAgICAgIFtwZW5kaW5nXT1cInNlcnZpY2UuZGV2aWNlUmVwbGFjZW1lbnRJblByb2dyZXNzJCB8IGFzeW5jXCJcbiAgICAgIChvbkJhY2spPVwiY2xvc2UoKVwiXG4gICAgICBbbGFiZWxzXT1cInsgYmFjazogJ0Nsb3NlJyB8IHRyYW5zbGF0ZSB9XCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgW3RpdGxlXT1cIidSZXRyeScgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCIoc2VydmljZS5kZXZpY2VSZXBsYWNlZCQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICAgICAgKGNsaWNrKT1cInNlcnZpY2UucmV0cnlTdGVwKClcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdidG4tcGVuZGluZyc6IHNlcnZpY2UuZGV2aWNlUmVwbGFjZW1lbnRJblByb2dyZXNzJCB8IGFzeW5jIH1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwic2VydmljZS5kZXZpY2VSZXBsYWNlbWVudEluUHJvZ3Jlc3MkIHwgYXN5bmNcIlxuICAgICAgICBkYXRhLWN5PVwiYzh5LXJlcGxhY2UtZGV2aWNlLXdpemFyZC0tYnRuLXJldHJ5XCJcbiAgICAgID5cbiAgICAgICAge3sgJ1JldHJ5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9jOHktc3RlcHBlci1idXR0b25zPlxuICA8L2Nkay1zdGVwPlxuPC9jOHktc3RlcHBlcj5cbiJdfQ==
|