@energycap/components 0.28.7 → 0.28.8
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/bundles/energycap-components.umd.js +213 -11
- package/bundles/energycap-components.umd.js.map +1 -1
- package/bundles/energycap-components.umd.min.js +1 -1
- package/bundles/energycap-components.umd.min.js.map +1 -1
- package/energycap-components.metadata.json +1 -1
- package/esm2015/lib/components.module.js +6 -3
- package/esm2015/lib/controls/item-picker/item-picker.component.js +189 -0
- package/esm2015/lib/display/table/searchable-table.component.js +7 -4
- package/esm2015/lib/display/table/table-selectable-row.component.js +6 -3
- package/esm2015/lib/display/table/table.component.js +2 -2
- package/esm2015/lib/shared/wizard/wizard-buttons/wizard-buttons.component.js +4 -2
- package/esm2015/lib/shared/wizard/wizard-progress/wizard-progress.component.js +3 -3
- package/esm2015/public-api.js +2 -1
- package/fesm2015/energycap-components.js +205 -12
- package/fesm2015/energycap-components.js.map +1 -1
- package/lib/controls/item-picker/item-picker.component.d.ts +108 -0
- package/lib/display/table/searchable-table.component.d.ts +2 -0
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/assets/locales/en_US.json +3 -1
|
@@ -65,6 +65,7 @@ import { MockDateDisplayPipe } from './shared/testing/public-mocks.spec';
|
|
|
65
65
|
import { WizardButtonsComponent } from './shared/wizard/wizard-buttons/wizard-buttons.component';
|
|
66
66
|
import { WizardProgressComponent } from './shared/wizard/wizard-progress/wizard-progress.component';
|
|
67
67
|
import { FormControlLabelComponent } from './controls/form-control-label/form-control-label.component';
|
|
68
|
+
import { ItemPickerComponent } from './controls/item-picker/item-picker.component';
|
|
68
69
|
export class ComponentsModule {
|
|
69
70
|
/**
|
|
70
71
|
* Providing services through the forRoot pattern here ensures that the components module and the importing
|
|
@@ -143,7 +144,8 @@ ComponentsModule.decorators = [
|
|
|
143
144
|
RelativeDatePipe,
|
|
144
145
|
ResizableComponent,
|
|
145
146
|
HighlightTextPipe,
|
|
146
|
-
FormControlLabelComponent
|
|
147
|
+
FormControlLabelComponent,
|
|
148
|
+
ItemPickerComponent
|
|
147
149
|
],
|
|
148
150
|
imports: [
|
|
149
151
|
CommonModule,
|
|
@@ -219,8 +221,9 @@ ComponentsModule.decorators = [
|
|
|
219
221
|
RelativeDatePipe,
|
|
220
222
|
ResizableComponent,
|
|
221
223
|
HighlightTextPipe,
|
|
222
|
-
FormControlLabelComponent
|
|
224
|
+
FormControlLabelComponent,
|
|
225
|
+
ItemPickerComponent
|
|
223
226
|
]
|
|
224
227
|
},] }
|
|
225
228
|
];
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFB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b0JBQ3hCLGlCQUFpQjtvQkFDakIsYUFBYTtvQkFDYix1QkFBdUI7b0JBQ3ZCLGlCQUFpQjtvQkFDakIsZ0JBQWdCO29CQUNoQixlQUFlO29CQUNmLGVBQWU7b0JBQ2YsZUFBZTtvQkFDZixvQkFBb0I7b0JBQ3BCLGlCQUFpQjtvQkFDakIsbUJBQW1CO29CQUNuQixlQUFlO29CQUNmLGVBQWU7b0JBQ2YsZUFBZTtvQkFDZix3QkFBd0I7b0JBQ3hCLHFCQUFxQjtvQkFDckIsMEJBQTBCO29CQUMxQix1QkFBdUI7b0JBQ3ZCLDZCQUE2QjtvQkFDN0IsMEJBQTBCO29CQUMxQiwyQkFBMkI7b0JBQzNCLGdCQUFnQjtvQkFDaEIsbUJBQW1CO29CQUNuQix3QkFBd0I7b0JBQ3hCLGFBQWE7b0JBQ2Isb0JBQW9CO29CQUNwQixlQUFlO29CQUNmLG9CQUFvQjtvQkFDcEIsd0JBQXdCO29CQUN4QixvQkFBb0I7b0JBQ3BCLG1CQUFtQjtvQkFDbkIsa0JBQWtCO29CQUNsQixvQkFBb0I7b0JBQ3BCLGNBQWM7b0JBQ2QsZ0JBQWdCO29CQUNoQixpQkFBaUI7b0JBQ2pCLGtCQUFrQjtvQkFDbEIsdUJBQXVCO29CQUN2QixzQkFBc0I7b0JBQ3RCLHNCQUFzQjtvQkFDdEIsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLGtCQUFrQjtvQkFDbEIsaUJBQWlCO29CQUNqQix5QkFBeUI7aUJBQzFCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBCYW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2Jhbm5lci9iYW5uZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcHlCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRyb2xzL2J1dHRvbi9jb3B5LWJ1dHRvbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29sbGFwc2libGVUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2NvbGxhcHNpYmxlLXRvZ2dsZS9jb2xsYXBzaWJsZS10b2dnbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tYm9ib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2Zvcm0tZ3JvdXAvZm9ybS1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmF2SXRlbUFjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtaXRlbS1hY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTnVtZXJpY2JveENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvbnVtZXJpY2JveC9udW1lcmljYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSYWRpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFic0NvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvdGFicy90YWJzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3RleHRib3gvdGV4dGJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcHBCYXJDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvYXBwLWJhci9hcHAtYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmZpcm1Db21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvY29uZmlybS9jb25maXJtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L2RpYWxvZy9kaWFsb2ctZ3JvdXAvZGlhbG9nLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2Rpc3BsYXkvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGllcmFyY2h5VHJlZUNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9oaWVyYXJjaHkvaGllcmFyY2h5LXRyZWUvaGllcmFyY2h5LXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSXRlbURpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvaXRlbS1kaXNwbGF5L2l0ZW0tZGlzcGxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBKc29uRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9qc29uLWRpc3BsYXkvanNvbi1kaXNwbGF5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZUNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNwbGFzaENvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9zcGxhc2gvc3BsYXNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90YWJsZS9yZXNpemFibGUtY29sdW1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZVRhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3Jlc2l6YWJsZS10YWJsZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZWFyY2hhYmxlVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvc2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZURldGFpbFJvd0NvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90YWJsZS90YWJsZS1kZXRhaWwtcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlTG9ja2VkQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLWxvY2tlZC1jb2x1bW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVNYXN0ZXJIZWFkZXJSb3dDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUtbWFzdGVyLWhlYWRlci1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVNYXN0ZXJSb3dDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUtbWFzdGVyLXJvdy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFnc0NvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90YWdzL3RhZ3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9hc3RDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdG9hc3QvdG9hc3QvdG9hc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9hc3RlckNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90b2FzdC90b2FzdGVyL3RvYXN0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90cmVlL3RyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmlld092ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGlja0FyZWFGb3JEaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3RpdmVzL2NsaWNrLWFyZWEtZm9yL2NsaWNrLWFyZWEtZm9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IElmVmlld3BvcnRXaWR0aERpcmVjdGl2ZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGl2ZXMvaWYtdmlld3BvcnQtd2lkdGgvaWYtdmlld3BvcnQtd2lkdGguZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUG9wdXBDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3RpdmVzL3BvcHVwL3BvcHVwLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEYXRlRGlzcGxheVBpcGUgfSBmcm9tICcuL3NoYXJlZC9kaXNwbGF5L3BpcGVzL2RhdGUtZGlzcGxheS5waXBlJztcclxuaW1wb3J0IHsgSGlnaGxpZ2h0VGV4dFBpcGUgfSBmcm9tICcuL3NoYXJlZC9kaXNwbGF5L3BpcGVzL2hpZ2hsaWdodC10ZXh0LnBpcGUnO1xyXG5pbXBvcnQgeyBSZWxhdGl2ZURhdGVQaXBlIH0gZnJvbSAnLi9zaGFyZWQvZGlzcGxheS9waXBlcy9yZWxhdGl2ZS1kYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBSb3dDb3VudFBpcGUgfSBmcm9tICcuL3NoYXJlZC9kaXNwbGF5L3BpcGVzL3Jvdy1jb3VudC5waXBlJztcclxuaW1wb3J0IHsgVGltZURpc3BsYXlQaXBlIH0gZnJvbSAnLi9zaGFyZWQvZGlzcGxheS9waXBlcy90aW1lLWRpc3BsYXkucGlwZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cEhlbHBlciB9IGZyb20gJy4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgUGFnZVRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi9zaGFyZWQvcGFnZS9wYWdlLXRpdGxlL3BhZ2UtdGl0bGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL3NoYXJlZC9wYWdlL3BhZ2Utdmlldy9wYWdlLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTW9ja0RhdGVEaXNwbGF5UGlwZSB9IGZyb20gJy4vc2hhcmVkL3Rlc3RpbmcvcHVibGljLW1vY2tzLnNwZWMnO1xyXG5pbXBvcnQgeyBXaXphcmRCdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi9zaGFyZWQvd2l6YXJkL3dpemFyZC1idXR0b25zL3dpemFyZC1idXR0b25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi9zaGFyZWQvd2l6YXJkL3dpemFyZC1wcm9ncmVzcy93aXphcmQtcHJvZ3Jlc3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvZm9ybS1jb250cm9sLWxhYmVsL2Zvcm0tY29udHJvbC1sYWJlbC5jb21wb25lbnQnO1xyXG5cclxuXHJcbmV4cG9ydCB0eXBlIENvbXBvbmVudHNNb2R1bGVDb25maWcgPSB7XHJcbiAgdHJhY2tlcjogUHJvdmlkZXJcclxufTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBCdXR0b25Db21wb25lbnQsXHJcbiAgICBUYWJzQ29tcG9uZW50LFxyXG4gICAgVGV4dGJveENvbXBvbmVudCxcclxuICAgIE5hdkl0ZW1BY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBTcGlubmVyQ29tcG9uZW50LFxyXG4gICAgVmlld092ZXJsYXlDb21wb25lbnQsXHJcbiAgICBCYW5uZXJDb21wb25lbnQsXHJcbiAgICBSZXNpemFibGVUYWJsZURpcmVjdGl2ZSxcclxuICAgIFRhYnNDb21wb25lbnQsXHJcbiAgICBUYWJsZUNvbXBvbmVudCxcclxuICAgIFNlYXJjaGFibGVUYWJsZUNvbXBvbmVudCxcclxuICAgIENvbWJvYm94Q29tcG9uZW50LFxyXG4gICAgTWVudUNvbXBvbmVudCxcclxuICAgIFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlLFxyXG4gICAgRHJvcGRvd25Db21wb25lbnQsXHJcbiAgICBDb25maXJtQ29tcG9uZW50LFxyXG4gICAgRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgRGF0ZURpc3BsYXlQaXBlLFxyXG4gICAgVGltZURpc3BsYXlQaXBlLFxyXG4gICAgTW9ja0RhdGVEaXNwbGF5UGlwZSxcclxuICAgIFJhZGlvQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBOdW1lcmljYm94Q29tcG9uZW50LFxyXG4gICAgQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgQXBwQmFyQ29tcG9uZW50LFxyXG4gICAgU3BsYXNoQ29tcG9uZW50LFxyXG4gICAgSWZWaWV3cG9ydFdpZHRoRGlyZWN0aXZlLFxyXG4gICAgQ2xpY2tBcmVhRm9yRGlyZWN0aXZlLFxyXG4gICAgQ29sbGFwc2libGVUb2dnbGVDb21wb25lbnQsXHJcbiAgICBUYWJsZU1hc3RlclJvd0NvbXBvbmVudCxcclxuICAgIFRhYmxlTWFzdGVySGVhZGVyUm93Q29tcG9uZW50LFxyXG4gICAgVGFibGVEZXRhaWxSb3dDb21wb25lbnQsXHJcbiAgICBUYWJsZUxvY2tlZENvbHVtbkNvbXBvbmVudCxcclxuICAgIFRhYmxlU2VsZWN0YWJsZVJvd0NvbXBvbmVudCxcclxuICAgIFBvcG92ZXJDb21wb25lbnQsXHJcbiAgICBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQsXHJcbiAgICBSb3dDb3VudFBpcGUsXHJcbiAgICBDb3B5QnV0dG9uRGlyZWN0aXZlLFxyXG4gICAgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50LFxyXG4gICAgVGFnc0NvbXBvbmVudCxcclxuICAgIEZvcm1Db250cm9sQ29tcG9uZW50LFxyXG4gICAgU2VsZWN0Q29tcG9uZW50LFxyXG4gICAgSXRlbURpc3BsYXlDb21wb25lbnQsXHJcbiAgICBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnQsXHJcbiAgICBSZXNpemFibGVDb2x1bW5Db21wb25lbnQsXHJcbiAgICBEaWFsb2dHcm91cENvbXBvbmVudCxcclxuICAgIEZpbGVVcGxvYWRDb21wb25lbnQsXHJcbiAgICBGb3JtR3JvdXBDb21wb25lbnQsXHJcbiAgICBKc29uRGlzcGxheUNvbXBvbmVudCxcclxuICAgIFRvYXN0Q29tcG9uZW50LFxyXG4gICAgVG9hc3RlckNvbXBvbmVudCxcclxuICAgIFBhZ2VWaWV3Q29tcG9uZW50LFxyXG4gICAgUGFnZVRpdGxlQ29tcG9uZW50LFxyXG4gICAgV2l6YXJkUHJvZ3Jlc3NDb21wb25lbnQsXHJcbiAgICBXaXphcmRCdXR0b25zQ29tcG9uZW50LFxyXG4gICAgSGllcmFyY2h5VHJlZUNvbXBvbmVudCxcclxuICAgIFRyZWVDb21wb25lbnQsXHJcbiAgICBSZWxhdGl2ZURhdGVQaXBlLFxyXG4gICAgUmVzaXphYmxlQ29tcG9uZW50LFxyXG4gICAgSGlnaGxpZ2h0VGV4dFBpcGUsXHJcbiAgICBGb3JtQ29udHJvbExhYmVsQ29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuXHRcdFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBBMTF5TW9kdWxlLFxyXG4gICAgT3ZlcmxheU1vZHVsZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBGb3JtR3JvdXBIZWxwZXIsXHJcbiAgICBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgRGF0ZURpc3BsYXlQaXBlLFxyXG4gICAgVGltZURpc3BsYXlQaXBlLFxyXG4gICAgTW9ja0RhdGVEaXNwbGF5UGlwZSxcclxuICAgIFJvd0NvdW50UGlwZSxcclxuICAgIFJlbGF0aXZlRGF0ZVBpcGUsXHJcbiAgICBIaWdobGlnaHRUZXh0UGlwZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVGFic0NvbXBvbmVudCxcclxuICAgIFRleHRib3hDb21wb25lbnQsXHJcbiAgICBOYXZJdGVtQWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcclxuICAgIFZpZXdPdmVybGF5Q29tcG9uZW50LFxyXG4gICAgQmFubmVyQ29tcG9uZW50LFxyXG4gICAgVGFic0NvbXBvbmVudCxcclxuICAgIFRhYmxlQ29tcG9uZW50LFxyXG4gICAgU2VhcmNoYWJsZVRhYmxlQ29tcG9uZW50LFxyXG4gICAgQ29tYm9ib3hDb21wb25lbnQsXHJcbiAgICBNZW51Q29tcG9uZW50LFxyXG4gICAgUG9wdXBDb250YWluZXJEaXJlY3RpdmUsXHJcbiAgICBEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIENvbmZpcm1Db21wb25lbnQsXHJcbiAgICBEaWFsb2dDb21wb25lbnQsXHJcbiAgICBEYXRlRGlzcGxheVBpcGUsXHJcbiAgICBUaW1lRGlzcGxheVBpcGUsXHJcbiAgICBSYWRpb0J1dHRvbkNvbXBvbmVudCxcclxuICAgIENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgTnVtZXJpY2JveENvbXBvbmVudCxcclxuICAgIEF2YXRhckNvbXBvbmVudCxcclxuICAgIEFwcEJhckNvbXBvbmVudCxcclxuICAgIFNwbGFzaENvbXBvbmVudCxcclxuICAgIElmVmlld3BvcnRXaWR0aERpcmVjdGl2ZSxcclxuICAgIENsaWNrQXJlYUZvckRpcmVjdGl2ZSxcclxuICAgIENvbGxhcHNpYmxlVG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgVGFibGVNYXN0ZXJSb3dDb21wb25lbnQsXHJcbiAgICBUYWJsZU1hc3RlckhlYWRlclJvd0NvbXBvbmVudCxcclxuICAgIFRhYmxlTG9ja2VkQ29sdW1uQ29tcG9uZW50LFxyXG4gICAgVGFibGVTZWxlY3RhYmxlUm93Q29tcG9uZW50LFxyXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcclxuICAgIENvcHlCdXR0b25EaXJlY3RpdmUsXHJcbiAgICBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQsXHJcbiAgICBUYWdzQ29tcG9uZW50LFxyXG4gICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXHJcbiAgICBTZWxlY3RDb21wb25lbnQsXHJcbiAgICBJdGVtRGlzcGxheUNvbXBvbmVudCxcclxuICAgIFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCxcclxuICAgIERpYWxvZ0dyb3VwQ29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIEZvcm1Hcm91cENvbXBvbmVudCxcclxuICAgIEpzb25EaXNwbGF5Q29tcG9uZW50LFxyXG4gICAgVG9hc3RDb21wb25lbnQsXHJcbiAgICBUb2FzdGVyQ29tcG9uZW50LFxyXG4gICAgUGFnZVZpZXdDb21wb25lbnQsXHJcbiAgICBQYWdlVGl0bGVDb21wb25lbnQsXHJcbiAgICBXaXphcmRQcm9ncmVzc0NvbXBvbmVudCxcclxuICAgIFdpemFyZEJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICBIaWVyYXJjaHlUcmVlQ29tcG9uZW50LFxyXG4gICAgVHJlZUNvbXBvbmVudCxcclxuICAgIFJlbGF0aXZlRGF0ZVBpcGUsXHJcbiAgICBSZXNpemFibGVDb21wb25lbnQsXHJcbiAgICBIaWdobGlnaHRUZXh0UGlwZSxcclxuICAgIEZvcm1Db250cm9sTGFiZWxDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRzTW9kdWxlIHtcclxuICAvKipcclxuICAgKiBQcm92aWRpbmcgc2VydmljZXMgdGhyb3VnaCB0aGUgZm9yUm9vdCBwYXR0ZXJuIGhlcmUgZW5zdXJlcyB0aGF0IHRoZSBjb21wb25lbnRzIG1vZHVsZSBhbmQgdGhlIGltcG9ydGluZ1xyXG4gICAqIG1vZHVsZSB1c2UgdGhlIHNhbWUgc2luZ2xldG9uIHNlcnZpY2UgaW5zdGFuY2UuXHJcbiAgICogRm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL3NpbmdsZXRvbi1zZXJ2aWNlcyN0aGUtZm9ycm9vdC1wYXR0ZXJuXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQ29tcG9uZW50c01vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Q29tcG9uZW50c01vZHVsZT57XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogQ29tcG9uZW50c01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgY29uZmlnLnRyYWNrZXJcclxuICAgICAgXVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFB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QUNoQixvQkFBb0I7b0JBQ3BCLGVBQWU7b0JBQ2YsYUFBYTtvQkFDYixjQUFjO29CQUNkLHdCQUF3QjtvQkFDeEIsaUJBQWlCO29CQUNqQixhQUFhO29CQUNiLHVCQUF1QjtvQkFDdkIsaUJBQWlCO29CQUNqQixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2YsZUFBZTtvQkFDZixlQUFlO29CQUNmLG9CQUFvQjtvQkFDcEIsaUJBQWlCO29CQUNqQixtQkFBbUI7b0JBQ25CLGVBQWU7b0JBQ2YsZUFBZTtvQkFDZixlQUFlO29CQUNmLHdCQUF3QjtvQkFDeEIscUJBQXFCO29CQUNyQiwwQkFBMEI7b0JBQzFCLHVCQUF1QjtvQkFDdkIsNkJBQTZCO29CQUM3QiwwQkFBMEI7b0JBQzFCLDJCQUEyQjtvQkFDM0IsZ0JBQWdCO29CQUNoQixtQkFBbUI7b0JBQ25CLHdCQUF3QjtvQkFDeEIsYUFBYTtvQkFDYixvQkFBb0I7b0JBQ3BCLGVBQWU7b0JBQ2Ysb0JBQW9CO29CQUNwQix3QkFBd0I7b0JBQ3hCLG9CQUFvQjtvQkFDcEIsbUJBQW1CO29CQUNuQixrQkFBa0I7b0JBQ2xCLG9CQUFvQjtvQkFDcEIsY0FBYztvQkFDZCxnQkFBZ0I7b0JBQ2hCLGlCQUFpQjtvQkFDakIsa0JBQWtCO29CQUNsQix1QkFBdUI7b0JBQ3ZCLHNCQUFzQjtvQkFDdEIsc0JBQXNCO29CQUN0QixhQUFhO29CQUNiLGdCQUFnQjtvQkFDaEIsa0JBQWtCO29CQUNsQixpQkFBaUI7b0JBQ2pCLHlCQUF5QjtvQkFDekIsbUJBQW1CO2lCQUNwQjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9iYW5uZXIvYmFubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3B5QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250cm9scy9idXR0b24vY29weS1idXR0b24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbGxhcHNpYmxlVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9jb2xsYXBzaWJsZS10b2dnbGUvY29sbGFwc2libGUtdG9nZ2xlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbWJvYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2Zvcm0tY29udHJvbC9mb3JtLWNvbnRyb2wuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvbWVudS9tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5hdkl0ZW1BY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRyb2xzL25hdmlnYXRpb24vbmF2LWl0ZW0tYWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE51bWVyaWNib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL251bWVyaWNib3gvbnVtZXJpY2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmFkaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYnNDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3RhYnMvdGFicy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0Ym94Q29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy90ZXh0Ym94L3RleHRib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXBwQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L2FwcC1iYXIvYXBwLWJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dHcm91cENvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9kaWFsb2cvZGlhbG9nLWdyb3VwL2RpYWxvZy1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9kaXNwbGF5L2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEhpZXJhcmNoeVRyZWVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvaGllcmFyY2h5L2hpZXJhcmNoeS10cmVlL2hpZXJhcmNoeS10cmVlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEl0ZW1EaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L2l0ZW0tZGlzcGxheS9pdGVtLWRpc3BsYXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSnNvbkRpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvanNvbi1kaXNwbGF5L2pzb24tZGlzcGxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNpemFibGVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcGxhc2hDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvc3BsYXNoL3NwbGFzaC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNpemFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvcmVzaXphYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNpemFibGVUYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlzcGxheS90YWJsZS9yZXNpemFibGUtdGFibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2VhcmNoYWJsZVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3NlYXJjaGFibGUtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVEZXRhaWxSb3dDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUtZGV0YWlsLXJvdy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUxvY2tlZENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90YWJsZS90YWJsZS1sb2NrZWQtY29sdW1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlTWFzdGVySGVhZGVyUm93Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLW1hc3Rlci1oZWFkZXItcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlTWFzdGVyUm93Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLW1hc3Rlci1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVTZWxlY3RhYmxlUm93Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhZ3NDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFncy90YWdzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RvYXN0L3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvYXN0ZXJDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdG9hc3QvdG9hc3Rlci90b2FzdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyZWVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdHJlZS90cmVlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZpZXdPdmVybGF5Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3ZpZXctb3ZlcmxheS92aWV3LW92ZXJsYXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpY2tBcmVhRm9yRGlyZWN0aXZlIH0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aXZlcy9jbGljay1hcmVhLWZvci9jbGljay1hcmVhLWZvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJZlZpZXdwb3J0V2lkdGhEaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3RpdmVzL2lmLXZpZXdwb3J0LXdpZHRoL2lmLXZpZXdwb3J0LXdpZHRoLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aXZlcy9wb3B1cC9wb3B1cC1jb250YWluZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRGF0ZURpc3BsYXlQaXBlIH0gZnJvbSAnLi9zaGFyZWQvZGlzcGxheS9waXBlcy9kYXRlLWRpc3BsYXkucGlwZSc7XHJcbmltcG9ydCB7IEhpZ2hsaWdodFRleHRQaXBlIH0gZnJvbSAnLi9zaGFyZWQvZGlzcGxheS9waXBlcy9oaWdobGlnaHQtdGV4dC5waXBlJztcclxuaW1wb3J0IHsgUmVsYXRpdmVEYXRlUGlwZSB9IGZyb20gJy4vc2hhcmVkL2Rpc3BsYXkvcGlwZXMvcmVsYXRpdmUtZGF0ZS5waXBlJztcclxuaW1wb3J0IHsgUm93Q291bnRQaXBlIH0gZnJvbSAnLi9zaGFyZWQvZGlzcGxheS9waXBlcy9yb3ctY291bnQucGlwZSc7XHJcbmltcG9ydCB7IFRpbWVEaXNwbGF5UGlwZSB9IGZyb20gJy4vc2hhcmVkL2Rpc3BsYXkvcGlwZXMvdGltZS1kaXNwbGF5LnBpcGUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBIZWxwZXIgfSBmcm9tICcuL3NoYXJlZC9mb3JtLWdyb3VwLmhlbHBlcic7XHJcbmltcG9ydCB7IFBhZ2VUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vc2hhcmVkL3BhZ2UvcGFnZS10aXRsZS9wYWdlLXRpdGxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2VWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9zaGFyZWQvcGFnZS9wYWdlLXZpZXcvcGFnZS12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1vY2tEYXRlRGlzcGxheVBpcGUgfSBmcm9tICcuL3NoYXJlZC90ZXN0aW5nL3B1YmxpYy1tb2Nrcy5zcGVjJztcclxuaW1wb3J0IHsgV2l6YXJkQnV0dG9uc0NvbXBvbmVudCB9IGZyb20gJy4vc2hhcmVkL3dpemFyZC93aXphcmQtYnV0dG9ucy93aXphcmQtYnV0dG9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXaXphcmRQcm9ncmVzc0NvbXBvbmVudCB9IGZyb20gJy4vc2hhcmVkL3dpemFyZC93aXphcmQtcHJvZ3Jlc3Mvd2l6YXJkLXByb2dyZXNzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sTGFiZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2Zvcm0tY29udHJvbC1sYWJlbC9mb3JtLWNvbnRyb2wtbGFiZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSXRlbVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvaXRlbS1waWNrZXIvaXRlbS1waWNrZXIuY29tcG9uZW50JztcclxuXHJcblxyXG5leHBvcnQgdHlwZSBDb21wb25lbnRzTW9kdWxlQ29uZmlnID0ge1xyXG4gIHRyYWNrZXI6IFByb3ZpZGVyXHJcbn07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVGFic0NvbXBvbmVudCxcclxuICAgIFRleHRib3hDb21wb25lbnQsXHJcbiAgICBOYXZJdGVtQWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcclxuICAgIFZpZXdPdmVybGF5Q29tcG9uZW50LFxyXG4gICAgQmFubmVyQ29tcG9uZW50LFxyXG4gICAgUmVzaXphYmxlVGFibGVEaXJlY3RpdmUsXHJcbiAgICBUYWJzQ29tcG9uZW50LFxyXG4gICAgVGFibGVDb21wb25lbnQsXHJcbiAgICBTZWFyY2hhYmxlVGFibGVDb21wb25lbnQsXHJcbiAgICBDb21ib2JveENvbXBvbmVudCxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZSxcclxuICAgIERyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgQ29uZmlybUNvbXBvbmVudCxcclxuICAgIERpYWxvZ0NvbXBvbmVudCxcclxuICAgIERhdGVEaXNwbGF5UGlwZSxcclxuICAgIFRpbWVEaXNwbGF5UGlwZSxcclxuICAgIE1vY2tEYXRlRGlzcGxheVBpcGUsXHJcbiAgICBSYWRpb0J1dHRvbkNvbXBvbmVudCxcclxuICAgIENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgTnVtZXJpY2JveENvbXBvbmVudCxcclxuICAgIEF2YXRhckNvbXBvbmVudCxcclxuICAgIEFwcEJhckNvbXBvbmVudCxcclxuICAgIFNwbGFzaENvbXBvbmVudCxcclxuICAgIElmVmlld3BvcnRXaWR0aERpcmVjdGl2ZSxcclxuICAgIENsaWNrQXJlYUZvckRpcmVjdGl2ZSxcclxuICAgIENvbGxhcHNpYmxlVG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgVGFibGVNYXN0ZXJSb3dDb21wb25lbnQsXHJcbiAgICBUYWJsZU1hc3RlckhlYWRlclJvd0NvbXBvbmVudCxcclxuICAgIFRhYmxlRGV0YWlsUm93Q29tcG9uZW50LFxyXG4gICAgVGFibGVMb2NrZWRDb2x1bW5Db21wb25lbnQsXHJcbiAgICBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnQsXHJcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxyXG4gICAgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50LFxyXG4gICAgUm93Q291bnRQaXBlLFxyXG4gICAgQ29weUJ1dHRvbkRpcmVjdGl2ZSxcclxuICAgIFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudCxcclxuICAgIFRhZ3NDb21wb25lbnQsXHJcbiAgICBGb3JtQ29udHJvbENvbXBvbmVudCxcclxuICAgIFNlbGVjdENvbXBvbmVudCxcclxuICAgIEl0ZW1EaXNwbGF5Q29tcG9uZW50LFxyXG4gICAgVGFibGVTZWxlY3RhYmxlUm93Q29tcG9uZW50LFxyXG4gICAgUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50LFxyXG4gICAgRGlhbG9nR3JvdXBDb21wb25lbnQsXHJcbiAgICBGaWxlVXBsb2FkQ29tcG9uZW50LFxyXG4gICAgRm9ybUdyb3VwQ29tcG9uZW50LFxyXG4gICAgSnNvbkRpc3BsYXlDb21wb25lbnQsXHJcbiAgICBUb2FzdENvbXBvbmVudCxcclxuICAgIFRvYXN0ZXJDb21wb25lbnQsXHJcbiAgICBQYWdlVmlld0NvbXBvbmVudCxcclxuICAgIFBhZ2VUaXRsZUNvbXBvbmVudCxcclxuICAgIFdpemFyZFByb2dyZXNzQ29tcG9uZW50LFxyXG4gICAgV2l6YXJkQnV0dG9uc0NvbXBvbmVudCxcclxuICAgIEhpZXJhcmNoeVRyZWVDb21wb25lbnQsXHJcbiAgICBUcmVlQ29tcG9uZW50LFxyXG4gICAgUmVsYXRpdmVEYXRlUGlwZSxcclxuICAgIFJlc2l6YWJsZUNvbXBvbmVudCxcclxuICAgIEhpZ2hsaWdodFRleHRQaXBlLFxyXG4gICAgRm9ybUNvbnRyb2xMYWJlbENvbXBvbmVudCxcclxuICAgIEl0ZW1QaWNrZXJDb21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG5cdFx0UmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIEExMXlNb2R1bGUsXHJcbiAgICBPdmVybGF5TW9kdWxlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIEZvcm1Hcm91cEhlbHBlcixcclxuICAgIERpYWxvZ1NlcnZpY2UsXHJcbiAgICBEYXRlRGlzcGxheVBpcGUsXHJcbiAgICBUaW1lRGlzcGxheVBpcGUsXHJcbiAgICBNb2NrRGF0ZURpc3BsYXlQaXBlLFxyXG4gICAgUm93Q291bnRQaXBlLFxyXG4gICAgUmVsYXRpdmVEYXRlUGlwZSxcclxuICAgIEhpZ2hsaWdodFRleHRQaXBlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBCdXR0b25Db21wb25lbnQsXHJcbiAgICBUYWJzQ29tcG9uZW50LFxyXG4gICAgVGV4dGJveENvbXBvbmVudCxcclxuICAgIE5hdkl0ZW1BY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBTcGlubmVyQ29tcG9uZW50LFxyXG4gICAgVmlld092ZXJsYXlDb21wb25lbnQsXHJcbiAgICBCYW5uZXJDb21wb25lbnQsXHJcbiAgICBUYWJzQ29tcG9uZW50LFxyXG4gICAgVGFibGVDb21wb25lbnQsXHJcbiAgICBTZWFyY2hhYmxlVGFibGVDb21wb25lbnQsXHJcbiAgICBDb21ib2JveENvbXBvbmVudCxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZSxcclxuICAgIERyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgQ29uZmlybUNvbXBvbmVudCxcclxuICAgIERpYWxvZ0NvbXBvbmVudCxcclxuICAgIERhdGVEaXNwbGF5UGlwZSxcclxuICAgIFRpbWVEaXNwbGF5UGlwZSxcclxuICAgIFJhZGlvQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBOdW1lcmljYm94Q29tcG9uZW50LFxyXG4gICAgQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgQXBwQmFyQ29tcG9uZW50LFxyXG4gICAgU3BsYXNoQ29tcG9uZW50LFxyXG4gICAgSWZWaWV3cG9ydFdpZHRoRGlyZWN0aXZlLFxyXG4gICAgQ2xpY2tBcmVhRm9yRGlyZWN0aXZlLFxyXG4gICAgQ29sbGFwc2libGVUb2dnbGVDb21wb25lbnQsXHJcbiAgICBUYWJsZU1hc3RlclJvd0NvbXBvbmVudCxcclxuICAgIFRhYmxlTWFzdGVySGVhZGVyUm93Q29tcG9uZW50LFxyXG4gICAgVGFibGVMb2NrZWRDb2x1bW5Db21wb25lbnQsXHJcbiAgICBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnQsXHJcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxyXG4gICAgQ29weUJ1dHRvbkRpcmVjdGl2ZSxcclxuICAgIFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudCxcclxuICAgIFRhZ3NDb21wb25lbnQsXHJcbiAgICBGb3JtQ29udHJvbENvbXBvbmVudCxcclxuICAgIFNlbGVjdENvbXBvbmVudCxcclxuICAgIEl0ZW1EaXNwbGF5Q29tcG9uZW50LFxyXG4gICAgUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50LFxyXG4gICAgRGlhbG9nR3JvdXBDb21wb25lbnQsXHJcbiAgICBGaWxlVXBsb2FkQ29tcG9uZW50LFxyXG4gICAgRm9ybUdyb3VwQ29tcG9uZW50LFxyXG4gICAgSnNvbkRpc3BsYXlDb21wb25lbnQsXHJcbiAgICBUb2FzdENvbXBvbmVudCxcclxuICAgIFRvYXN0ZXJDb21wb25lbnQsXHJcbiAgICBQYWdlVmlld0NvbXBvbmVudCxcclxuICAgIFBhZ2VUaXRsZUNvbXBvbmVudCxcclxuICAgIFdpemFyZFByb2dyZXNzQ29tcG9uZW50LFxyXG4gICAgV2l6YXJkQnV0dG9uc0NvbXBvbmVudCxcclxuICAgIEhpZXJhcmNoeVRyZWVDb21wb25lbnQsXHJcbiAgICBUcmVlQ29tcG9uZW50LFxyXG4gICAgUmVsYXRpdmVEYXRlUGlwZSxcclxuICAgIFJlc2l6YWJsZUNvbXBvbmVudCxcclxuICAgIEhpZ2hsaWdodFRleHRQaXBlLFxyXG4gICAgRm9ybUNvbnRyb2xMYWJlbENvbXBvbmVudCxcclxuICAgIEl0ZW1QaWNrZXJDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRzTW9kdWxlIHtcclxuICAvKipcclxuICAgKiBQcm92aWRpbmcgc2VydmljZXMgdGhyb3VnaCB0aGUgZm9yUm9vdCBwYXR0ZXJuIGhlcmUgZW5zdXJlcyB0aGF0IHRoZSBjb21wb25lbnRzIG1vZHVsZSBhbmQgdGhlIGltcG9ydGluZ1xyXG4gICAqIG1vZHVsZSB1c2UgdGhlIHNhbWUgc2luZ2xldG9uIHNlcnZpY2UgaW5zdGFuY2UuXHJcbiAgICogRm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL3NpbmdsZXRvbi1zZXJ2aWNlcyN0aGUtZm9ycm9vdC1wYXR0ZXJuXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQ29tcG9uZW50c01vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Q29tcG9uZW50c01vZHVsZT57XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogQ29tcG9uZW50c01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgY29uZmlnLnRyYWNrZXJcclxuICAgICAgXVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { Component, Input, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { Observable, Subject } from 'rxjs';
|
|
4
|
+
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { TableSelectableRowContext } from '../../display/table/table-selectable-row.component';
|
|
6
|
+
import { Overlay } from '../../display/view-overlay/view-overlay.component';
|
|
7
|
+
;
|
|
8
|
+
export class ItemPickerSelectableContext extends TableSelectableRowContext {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
/** id/value map of the selected items. Used for keeping track of what is selected */
|
|
12
|
+
this.selectedItemsMap = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* Gives a way to tell the picker component that the map was modified externally and to update
|
|
15
|
+
* the available/selected lists
|
|
16
|
+
*/
|
|
17
|
+
this.selectedItemsMapChanged = new Subject();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class ItemPickerComponent {
|
|
21
|
+
constructor() {
|
|
22
|
+
/** Identifier for the component. This will be added to the beginning of all internal action elements */
|
|
23
|
+
this.id = '';
|
|
24
|
+
/** Title displayed above the available items table */
|
|
25
|
+
this.availableTitle = '';
|
|
26
|
+
/** Title displayed above the selected items list */
|
|
27
|
+
this.selectedTitle = '';
|
|
28
|
+
/** The type of item being selected. Ex. Meters, Addresses */
|
|
29
|
+
this.itemName = '';
|
|
30
|
+
/** Used by the internal Searchable Table when there is no available items to choose from based on the getItems results. Do not supply
|
|
31
|
+
* to inherit the default message.
|
|
32
|
+
*/
|
|
33
|
+
this.noDataMessage = '';
|
|
34
|
+
/** List of available items to pick from */
|
|
35
|
+
this.availableItems = [];
|
|
36
|
+
/**
|
|
37
|
+
* Selected items array. Created from the selected items map. Binding to the
|
|
38
|
+
* map iterate values caused angular "expression changed" errors so after a map
|
|
39
|
+
* update this gets set to the values
|
|
40
|
+
*/
|
|
41
|
+
this.selectedItems = [];
|
|
42
|
+
/** Track by used for the searchable table rows */
|
|
43
|
+
this.trackByIndex = (index) => index;
|
|
44
|
+
this.tableStatus = new Overlay('hasData');
|
|
45
|
+
/** Used to shut down our subscriptions when the component is destroyed */
|
|
46
|
+
this.destroyed = new Subject();
|
|
47
|
+
}
|
|
48
|
+
ngOnInit() {
|
|
49
|
+
this.setupRowCheckboxesWatcher();
|
|
50
|
+
this.setupSelectedItemsChangedWatcher();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Watch for changes and react if the custom item template value changes
|
|
54
|
+
*/
|
|
55
|
+
ngOnChanges() {
|
|
56
|
+
this.setInternalizedTemplates();
|
|
57
|
+
}
|
|
58
|
+
ngOnDestroy() {
|
|
59
|
+
this.destroyed.next();
|
|
60
|
+
this.destroyed.unsubscribe();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Called by the searchable table when a new set of items are returned from the getItems call
|
|
64
|
+
* @param results
|
|
65
|
+
*/
|
|
66
|
+
onItemsChange(results) {
|
|
67
|
+
// Check to see if any of the items are marked to be selected by default and if so
|
|
68
|
+
// add them to the map.
|
|
69
|
+
results.items.forEach(item => {
|
|
70
|
+
var _a, _b;
|
|
71
|
+
if (item.defaultSelected && !((_a = this.selectionContext) === null || _a === void 0 ? void 0 : _a.selectedItemsMap.has(item.id))) {
|
|
72
|
+
(_b = this.selectionContext) === null || _b === void 0 ? void 0 : _b.selectedItemsMap.set(item.id, item);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
this.availableItems = results.items;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Called when the clear selection link button is clicked
|
|
79
|
+
*/
|
|
80
|
+
onClearSelectionClick() {
|
|
81
|
+
this.selectionContext.selectedItemsMap = new Map();
|
|
82
|
+
this.selectionContext.rowCheckboxes.controls.forEach(control => control.setValue(false));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Called when the remove item button is clicked for a selected item
|
|
86
|
+
* @param removeItem
|
|
87
|
+
*/
|
|
88
|
+
removeSelectedItem(removeItem) {
|
|
89
|
+
let foundIndex = this.availableItems.findIndex(item => item.id === removeItem.id);
|
|
90
|
+
if (foundIndex > -1) {
|
|
91
|
+
// Update the row checkbox since the item exists in the page being viewed
|
|
92
|
+
// The value change handler for row checkboxes will update the map/selected items
|
|
93
|
+
this.selectionContext.rowCheckboxes.at(foundIndex).setValue(false);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
// The item being removed is not on the current page so just update the
|
|
97
|
+
// map/selected items
|
|
98
|
+
this.selectionContext.selectedItemsMap.delete(removeItem.id);
|
|
99
|
+
this.selectedItems = Array.from(this.selectionContext.selectedItemsMap.values());
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Watch for changes to the row checkboxes form array and update the selected items
|
|
104
|
+
* list
|
|
105
|
+
*/
|
|
106
|
+
setupRowCheckboxesWatcher() {
|
|
107
|
+
var _a;
|
|
108
|
+
(_a = this.selectionContext) === null || _a === void 0 ? void 0 : _a.rowCheckboxes.valueChanges.pipe(
|
|
109
|
+
// Debounce 10 is simply to not spam the change handler on load/page change
|
|
110
|
+
// Otherwise this will get called every time a new row is added to the table
|
|
111
|
+
debounceTime(10), takeUntil(this.destroyed)).subscribe((rowValues) => {
|
|
112
|
+
var _a;
|
|
113
|
+
rowValues.forEach((selected, index) => {
|
|
114
|
+
var _a, _b, _c, _d;
|
|
115
|
+
let availableItem = this.availableItems[index];
|
|
116
|
+
if (!selected && ((_a = this.selectionContext) === null || _a === void 0 ? void 0 : _a.selectedItemsMap.has(availableItem.id))) {
|
|
117
|
+
(_b = this.selectionContext) === null || _b === void 0 ? void 0 : _b.selectedItemsMap.delete(availableItem.id);
|
|
118
|
+
}
|
|
119
|
+
else if (selected && !((_c = this.selectionContext) === null || _c === void 0 ? void 0 : _c.selectedItemsMap.has(availableItem.id))) {
|
|
120
|
+
(_d = this.selectionContext) === null || _d === void 0 ? void 0 : _d.selectedItemsMap.set(availableItem.id, availableItem);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
this.selectedItems = Array.from((_a = this.selectionContext) === null || _a === void 0 ? void 0 : _a.selectedItemsMap.values());
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Watch to be told if changes to the map were made outside of the component and if so update
|
|
128
|
+
* the array displayed in the selected list and select checkboxes for visible available items
|
|
129
|
+
*/
|
|
130
|
+
setupSelectedItemsChangedWatcher() {
|
|
131
|
+
this.selectionContext.selectedItemsMapChanged.pipe(takeUntil(this.destroyed)).subscribe(() => {
|
|
132
|
+
var _a;
|
|
133
|
+
if (this.selectionContext) {
|
|
134
|
+
this.selectedItems = Array.from((_a = this.selectionContext) === null || _a === void 0 ? void 0 : _a.selectedItemsMap.values());
|
|
135
|
+
this.availableItems.forEach((item, index) => {
|
|
136
|
+
if (this.selectionContext.selectedItemsMap.has(item.id)) {
|
|
137
|
+
this.selectionContext.rowCheckboxes.at(index).setValue(true);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
setInternalizedTemplates() {
|
|
144
|
+
if (this.customAvailableHeaderTemplate) {
|
|
145
|
+
this.internalizedAvailableHeaderTemplate = this.customAvailableHeaderTemplate;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this.internalizedAvailableHeaderTemplate = this.defaultAvailableHeaderTemplate;
|
|
149
|
+
}
|
|
150
|
+
if (this.customAvailableItemTemplate) {
|
|
151
|
+
this.internalizedAvailableItemTemplate = this.customAvailableItemTemplate;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
this.internalizedAvailableItemTemplate = this.defaultAvailableItemTemplate;
|
|
155
|
+
}
|
|
156
|
+
if (this.customSelectedItemTemplate) {
|
|
157
|
+
this.internalizedSelectedItemTemplate = this.customSelectedItemTemplate;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
this.internalizedSelectedItemTemplate = this.defaultSelectedItemTemplate;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
ItemPickerComponent.decorators = [
|
|
165
|
+
{ type: Component, args: [{
|
|
166
|
+
selector: 'ec-item-picker',
|
|
167
|
+
template: "<div class=\"d-flex flex-grow card\">\r\n <ec-searchable-table id=\"{{id}}_searchableTable\"\r\n class=\"flex-grow\"\r\n [fillParentHeight]=\"true\"\r\n [hideHeader]=\"true\"\r\n [hideSearchControl]=\"true\"\r\n [removeCard]=\"true\"\r\n [pageable]=\"true\"\r\n [pageSize]=\"50\"\r\n [objectType]=\"itemName\"\r\n [formModel]=\"formModel\"\r\n [ready]=\"ready\"\r\n [getItems]=\"getItems\"\r\n [selectable]=\"true\"\r\n [noDataMessage]=\"noDataMessage\"\r\n [selectionContext]=\"selectionContext\"\r\n [status]=\"tableStatus\"\r\n (itemsChange)=\"onItemsChange($event)\"\r\n [style.--ec-flex-properties]=\"(availableItems.length || tableStatus.status === 'pending' || tableStatus.status === 'error' ) ? '1 1 auto' : '0 1 auto'\">\r\n <thead>\r\n <tr ecTableSelectableRow\r\n [selectionContext]=\"selectionContext\">\r\n <ng-container *ngTemplateOutlet=\"internalizedAvailableHeaderTemplate;\">\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let item of availableItems; index as rowIndex; trackBy: trackByIndex\">\r\n <tr ecTableSelectableRow\r\n [selectionContext]=\"selectionContext\"\r\n [rowIndex]=\"rowIndex\"\r\n [isSelected]=\"selectionContext?.selectedItemsMap.has(item.id)\">\r\n <ng-container *ngTemplateOutlet=\"internalizedAvailableItemTemplate; context: {$implicit: item}\">\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </ec-searchable-table>\r\n\r\n <div class=\"d-flex flex-column flex-grow\">\r\n <div class=\"d-flex flex-shrink align-items-center px-2\"\r\n [style.height.rem]=\"3\">\r\n <span class=\"text-heading-2\">{{selectedTitle | translate}}</span>\r\n <a *ngIf=\"selectedItems.length\"\r\n id=\"{{id}}_clearSelection\"\r\n class=\"ml-auto\"\r\n href=\"javascript:void(0)\"\r\n (click)=\"onClearSelectionClick()\"\r\n translate>\r\n ClearSelection_TC\r\n </a>\r\n </div>\r\n\r\n <div class=\"d-flex flex-column flex-grow scroll-y\">\r\n <ng-container *ngIf=\"selectedItems.length\">\r\n <div *ngFor=\"let item of selectedItems; last as isLast\"\r\n class=\"d-flex align-items-center pl-2\"\r\n [class.border-bottom]=\"!isLast\">\r\n <ng-container *ngTemplateOutlet=\"internalizedSelectedItemTemplate; context: {$implicit: item}\"></ng-container>\r\n\r\n <ec-button id=\"{{id}}_removeSelected_{{item.id}}\"\r\n class=\"ml-auto\"\r\n type=\"icon\"\r\n icon=\"ec-icon icon-cancel\"\r\n (clicked)=\"removeSelectedItem(item)\">\r\n </ec-button>\r\n </div>\r\n </ng-container>\r\n <span *ngIf=\"!selectedItems.length\"\r\n class=\"px-2 pt-2 font-size-small\"\r\n translate\r\n [translateParams]=\"{itemName: itemName | translate}\">\r\n ItemPickerNoItemsSelected_SC\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"selectedItems.length\"\r\n class=\"d-flex flex-shrink px-2 border-top align-items-center\"\r\n [style.height.px]=\"40\">\r\n <span class=\"ml-auto text-caption-1 font-color-hint\">\r\n {{selectedItems.length}} {{itemName | translate}}\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultAvailableHeaderTemplate>\r\n <th class=\"text-heading-2 font-color-primary\">{{availableTitle | translate}}</th>\r\n</ng-template>\r\n\r\n<ng-template #defaultAvailableItemTemplate let-item>\r\n <td>{{item.label}}</td>\r\n</ng-template>\r\n\r\n<ng-template #defaultSelectedItemTemplate let-item>\r\n {{item.label}}\r\n</ng-template>",
|
|
168
|
+
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}::ng-deep ec-table .main-table thead th{border-bottom:0}ec-searchable-table{border-right:2px solid #d2d7d9}.card{border:0}"]
|
|
169
|
+
},] }
|
|
170
|
+
];
|
|
171
|
+
ItemPickerComponent.ctorParameters = () => [];
|
|
172
|
+
ItemPickerComponent.propDecorators = {
|
|
173
|
+
id: [{ type: Input }],
|
|
174
|
+
availableTitle: [{ type: Input }],
|
|
175
|
+
selectedTitle: [{ type: Input }],
|
|
176
|
+
itemName: [{ type: Input }],
|
|
177
|
+
formModel: [{ type: Input }],
|
|
178
|
+
customAvailableHeaderTemplate: [{ type: Input }],
|
|
179
|
+
customAvailableItemTemplate: [{ type: Input }],
|
|
180
|
+
customSelectedItemTemplate: [{ type: Input }],
|
|
181
|
+
ready: [{ type: Input }],
|
|
182
|
+
getItems: [{ type: Input }],
|
|
183
|
+
selectionContext: [{ type: Input }],
|
|
184
|
+
noDataMessage: [{ type: Input }],
|
|
185
|
+
defaultAvailableHeaderTemplate: [{ type: ViewChild, args: ['defaultAvailableHeaderTemplate', { static: true },] }],
|
|
186
|
+
defaultAvailableItemTemplate: [{ type: ViewChild, args: ['defaultAvailableItemTemplate', { static: true },] }],
|
|
187
|
+
defaultSelectedItemTemplate: [{ type: ViewChild, args: ['defaultSelectedItemTemplate', { static: true },] }]
|
|
188
|
+
};
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2l0ZW0tcGlja2VyL2l0ZW0tcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZ0MsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBTSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFVM0UsQ0FBQztBQUVGLE1BQU0sT0FBTywyQkFBK0IsU0FBUSx5QkFBeUI7SUFBN0U7O1FBQ0UscUZBQXFGO1FBQzlFLHFCQUFnQixHQUErQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWhFOzs7V0FHRztRQUNJLDRCQUF1QixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2hFLENBQUM7Q0FBQTtBQU9ELE1BQU0sT0FBTyxtQkFBbUI7SUFxRTlCO1FBbkVBLHdHQUF3RztRQUN4RixPQUFFLEdBQVksRUFBRSxDQUFDO1FBRWpDLHNEQUFzRDtRQUN0QyxtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUU1QyxvREFBb0Q7UUFDcEMsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFFM0MsNkRBQTZEO1FBQzdDLGFBQVEsR0FBVyxFQUFFLENBQUM7UUF1QnRDOztXQUVHO1FBQ2Esa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFFM0Ms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R0wsS0FBSzt3QkFHTCxLQUFLOzRDQUdMLEtBQUs7MENBR0wsS0FBSzt5Q0FHTCxLQUFLO29CQUdMLEtBQUs7dUJBR0wsS0FBSzsrQkFHTCxLQUFLOzRCQUtMLEtBQUs7NkNBd0JMLFNBQVMsU0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7MkNBQzVELFNBQVMsU0FBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7MENBQzFELFNBQVMsU0FBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRhYmxlU2VhcmNoUmVzdWx0cyB9IGZyb20gJy4uLy4uL2Rpc3BsYXkvdGFibGUvc2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYWdpbmdJbmZvIH0gZnJvbSAnLi4vLi4vZGlzcGxheS90YWJsZS90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQgfSBmcm9tICcuLi8uLi9kaXNwbGF5L3RhYmxlL3RhYmxlLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi9kaXNwbGF5L3ZpZXctb3ZlcmxheS92aWV3LW92ZXJsYXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGlja2VySXRlbTxUVmFsdWUgPSBhbnksIFNJdGVtcyA9IGFueT4gZXh0ZW5kcyBNZW51SXRlbSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICAvKiogV2hlbiBzZXQgdG8gdHJ1ZSB0aGUgYXZhaWxhYmxlIGl0ZW0gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBzZWxlY3RlZCBsaXN0ICovXHJcbiAgZGVmYXVsdFNlbGVjdGVkPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIFJlZGVmaW5pbmcgdG8gZ2V0IHRoZSB0eXBpbmcgKi9cclxuICB2YWx1ZTogVFZhbHVlO1xyXG59O1xyXG5cclxuZXhwb3J0IGNsYXNzIEl0ZW1QaWNrZXJTZWxlY3RhYmxlQ29udGV4dDxUPiBleHRlbmRzIFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQge1xyXG4gIC8qKiBpZC92YWx1ZSBtYXAgb2YgdGhlIHNlbGVjdGVkIGl0ZW1zLiBVc2VkIGZvciBrZWVwaW5nIHRyYWNrIG9mIHdoYXQgaXMgc2VsZWN0ZWQgKi9cclxuICBwdWJsaWMgc2VsZWN0ZWRJdGVtc01hcDogTWFwPHN0cmluZywgUGlja2VySXRlbTxUPj4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdpdmVzIGEgd2F5IHRvIHRlbGwgdGhlIHBpY2tlciBjb21wb25lbnQgdGhhdCB0aGUgbWFwIHdhcyBtb2RpZmllZCBleHRlcm5hbGx5IGFuZCB0byB1cGRhdGVcclxuICAgKiB0aGUgYXZhaWxhYmxlL3NlbGVjdGVkIGxpc3RzXHJcbiAgICovXHJcbiAgcHVibGljIHNlbGVjdGVkSXRlbXNNYXBDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy1pdGVtLXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2l0ZW0tcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pdGVtLXBpY2tlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJdGVtUGlja2VyQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKiBJZGVudGlmaWVyIGZvciB0aGUgY29tcG9uZW50LiBUaGlzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGJlZ2lubmluZyBvZiBhbGwgaW50ZXJuYWwgYWN0aW9uIGVsZW1lbnRzICovXHJcbiAgQElucHV0KCkgcHVibGljIGlkPzogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBUaXRsZSBkaXNwbGF5ZWQgYWJvdmUgdGhlIGF2YWlsYWJsZSBpdGVtcyB0YWJsZSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhdmFpbGFibGVUaXRsZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBUaXRsZSBkaXNwbGF5ZWQgYWJvdmUgdGhlIHNlbGVjdGVkIGl0ZW1zIGxpc3QgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRUaXRsZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBUaGUgdHlwZSBvZiBpdGVtIGJlaW5nIHNlbGVjdGVkLiBFeC4gTWV0ZXJzLCBBZGRyZXNzZXMgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaXRlbU5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogRm9ybSBncm91cCB0aGF0IGlzIGdpdmVuIHRvIHRoZSBpbnRlcm5hbCBTZWFyY2hhYmxlIFRhYmxlICovXHJcbiAgQElucHV0KCkgcHVibGljIGZvcm1Nb2RlbD86IEZvcm1Hcm91cDtcclxuXHJcbiAgLyoqIFRlbXBsYXRlIGZvciB3aGVuIGEgY3VzdG9tIGhlYWRlciBpcyBuZWVkZWQgZm9yIHRoZSBhdmFpbGFibGUgaXRlbXMgdGFibGUgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQXZhaWxhYmxlSGVhZGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogVGVtcGxhdGUgZm9yIHdoZW4gYSBjdXN0b20gYXZhaWxhYmxlIGl0ZW0gaXMgbmVlZGVkLiBEZWZhdWx0IHRlbXBsYXRlIGlzIGEgbGFiZWwgb25seSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21BdmFpbGFibGVJdGVtVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogVGVtcGxhdGUgZm9yIHdoZW4gYSBjdXN0b20gc2VsZWN0ZWQgaXRlbSBpcyBuZWVkZWQuIERlZmF1bHQgdGVtcGxhdGUgaXMgYSBsYWJlbCBvbmx5ICovXHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbVNlbGVjdGVkSXRlbVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLyoqIFVzZWQgYnkgdGhlIGludGVybmFsIFNlYXJjaGFibGUgVGFibGUgdG8ga25vdyB3aGVuIHRoZSBwYWdlIGlzIHJlYWR5ICovXHJcbiAgQElucHV0KCkgcHVibGljIHJlYWR5PzogT2JzZXJ2YWJsZTx2b2lkPjtcclxuXHJcbiAgLyoqIFVzZWQgYnkgU2VhcmNoYWJsZSBUYWJsZSB0byByZXRyaWV2ZSB0aGUgYXZhaWxhYmxlIGl0ZW1zICovXHJcbiAgQElucHV0KCkgcHVibGljIGdldEl0ZW1zPzogKHNlYXJjaD86IHN0cmluZywgcGFnZUNoYW5nZUluZm8/OiBQYWdpbmdJbmZvKSA9PiBPYnNlcnZhYmxlPFRhYmxlU2VhcmNoUmVzdWx0cz47XHJcblxyXG4gIC8qKiBVc2VkIHRvIG1haW50YWluIHRoZSBhdmFpbGFibGUgaXRlbXMgY2hlY2tib3ggc2VsZWN0aW9uIGFzIHdlbGwgYXMgdGhlIHNlbGVjdGVkIGl0ZW1zIGxpc3QgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uQ29udGV4dCE6IEl0ZW1QaWNrZXJTZWxlY3RhYmxlQ29udGV4dDxUPjtcclxuXHJcbiAgLyoqIFVzZWQgYnkgdGhlIGludGVybmFsIFNlYXJjaGFibGUgVGFibGUgd2hlbiB0aGVyZSBpcyBubyBhdmFpbGFibGUgaXRlbXMgdG8gY2hvb3NlIGZyb20gYmFzZWQgb24gdGhlIGdldEl0ZW1zIHJlc3VsdHMuIERvIG5vdCBzdXBwbHlcclxuICAgKiAgdG8gaW5oZXJpdCB0aGUgZGVmYXVsdCBtZXNzYWdlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBub0RhdGFNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIExpc3Qgb2YgYXZhaWxhYmxlIGl0ZW1zIHRvIHBpY2sgZnJvbSAqL1xyXG4gIHB1YmxpYyBhdmFpbGFibGVJdGVtczogUGlja2VySXRlbVtdID0gW107XHJcbiAgLyoqIFxyXG4gICAqIFNlbGVjdGVkIGl0ZW1zIGFycmF5LiBDcmVhdGVkIGZyb20gdGhlIHNlbGVjdGVkIGl0ZW1zIG1hcC4gQmluZGluZyB0byB0aGUgXHJcbiAgICogbWFwIGl0ZXJhdGUgdmFsdWVzIGNhdXNlZCBhbmd1bGFyIFwiZXhwcmVzc2lvbiBjaGFuZ2VkXCIgZXJyb3JzIHNvIGFmdGVyIGEgbWFwXHJcbiAgICogdXBkYXRlIHRoaXMgZ2V0cyBzZXQgdG8gdGhlIHZhbHVlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBQaWNrZXJJdGVtW10gPSBbXTtcclxuXHJcbiAgLyoqIFRyYWNrIGJ5IHVzZWQgZm9yIHRoZSBzZWFyY2hhYmxlIHRhYmxlIHJvd3MgKi9cclxuICBwdWJsaWMgdHJhY2tCeUluZGV4ID0gKGluZGV4OiBudW1iZXIpID0+IGluZGV4O1xyXG5cclxuICBwdWJsaWMgdGFibGVTdGF0dXM6IE92ZXJsYXkgPSBuZXcgT3ZlcmxheSgnaGFzRGF0YScpO1xyXG4gIC8qKlxyXG4gICAqIFRlbXBsYXRlIHVzZWQgdG8gZGlzcGxheSB0aGUgYXZhaWxhYmxlIGFuZCBzZWxlY3RlZCBpdGVtcyBhcyB3ZWxsIGFzIHRoZSBhdmFpbGFibGUgaXRlbSBoZWFkZXIuIFxyXG4gICAqIFRoaXMgd2lsbCBiZSBzZXQgdG8gdGhlIGRlZmF1bHQgdGVtcGxhdGUgaWYgYSBjdXN0b20gaXMgbm90IHByb3ZpZGVkXHJcbiAgICovXHJcbiAgcHVibGljIGludGVybmFsaXplZEF2YWlsYWJsZUhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBwdWJsaWMgaW50ZXJuYWxpemVkQXZhaWxhYmxlSXRlbVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBwdWJsaWMgaW50ZXJuYWxpemVkU2VsZWN0ZWRJdGVtVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogRGVmYXVsdCB0ZW1wbGF0ZXMgdXNlZCBpZiBhIGN1c3RvbSB0ZW1wbGF0ZSBpcyBub3QgcHJvdmlkZWQgKi9cclxuICBAVmlld0NoaWxkKCdkZWZhdWx0QXZhaWxhYmxlSGVhZGVyVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGRlZmF1bHRBdmFpbGFibGVIZWFkZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdEF2YWlsYWJsZUl0ZW1UZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgZGVmYXVsdEF2YWlsYWJsZUl0ZW1UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdFNlbGVjdGVkSXRlbVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBkZWZhdWx0U2VsZWN0ZWRJdGVtVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogVXNlZCB0byBzaHV0IGRvd24gb3VyIHN1YnNjcmlwdGlvbnMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZCAqL1xyXG4gIHByaXZhdGUgZGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXR1cFJvd0NoZWNrYm94ZXNXYXRjaGVyKCk7XHJcbiAgICB0aGlzLnNldHVwU2VsZWN0ZWRJdGVtc0NoYW5nZWRXYXRjaGVyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXYXRjaCBmb3IgY2hhbmdlcyBhbmQgcmVhY3QgaWYgdGhlIGN1c3RvbSBpdGVtIHRlbXBsYXRlIHZhbHVlIGNoYW5nZXNcclxuICAgKi9cclxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEludGVybmFsaXplZFRlbXBsYXRlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCBieSB0aGUgc2VhcmNoYWJsZSB0YWJsZSB3aGVuIGEgbmV3IHNldCBvZiBpdGVtcyBhcmUgcmV0dXJuZWQgZnJvbSB0aGUgZ2V0SXRlbXMgY2FsbFxyXG4gICAqIEBwYXJhbSByZXN1bHRzIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBvbkl0ZW1zQ2hhbmdlKHJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cykge1xyXG4gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGFueSBvZiB0aGUgaXRlbXMgYXJlIG1hcmtlZCB0byBiZSBzZWxlY3RlZCBieSBkZWZhdWx0IGFuZCBpZiBzb1xyXG4gICAgLy8gYWRkIHRoZW0gdG8gdGhlIG1hcC5cclxuICAgICg8UGlja2VySXRlbVtdPnJlc3VsdHMuaXRlbXMpLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmRlZmF1bHRTZWxlY3RlZCAmJiAhdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5zZWxlY3RlZEl0ZW1zTWFwLmhhcyhpdGVtLmlkKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dD8uc2VsZWN0ZWRJdGVtc01hcC5zZXQoaXRlbS5pZCwgaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9ICg8UGlja2VySXRlbVtdPnJlc3VsdHMuaXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGNsZWFyIHNlbGVjdGlvbiBsaW5rIGJ1dHRvbiBpcyBjbGlja2VkXHJcbiAgICovXHJcbiAgcHVibGljIG9uQ2xlYXJTZWxlY3Rpb25DbGljaygpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dC5zZWxlY3RlZEl0ZW1zTWFwID0gbmV3IE1hcCgpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0LnJvd0NoZWNrYm94ZXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IGNvbnRyb2wuc2V0VmFsdWUoZmFsc2UpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCB3aGVuIHRoZSByZW1vdmUgaXRlbSBidXR0b24gaXMgY2xpY2tlZCBmb3IgYSBzZWxlY3RlZCBpdGVtXHJcbiAgICogQHBhcmFtIHJlbW92ZUl0ZW0gXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZVNlbGVjdGVkSXRlbShyZW1vdmVJdGVtOiBQaWNrZXJJdGVtKTogdm9pZCB7XHJcbiAgICBsZXQgZm91bmRJbmRleCA9IHRoaXMuYXZhaWxhYmxlSXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0gcmVtb3ZlSXRlbS5pZCk7XHJcbiAgICBpZiAoZm91bmRJbmRleCA+IC0xKSB7XHJcbiAgICAgIC8vIFVwZGF0ZSB0aGUgcm93IGNoZWNrYm94IHNpbmNlIHRoZSBpdGVtIGV4aXN0cyBpbiB0aGUgcGFnZSBiZWluZyB2aWV3ZWRcclxuICAgICAgLy8gVGhlIHZhbHVlIGNoYW5nZSBoYW5kbGVyIGZvciByb3cgY2hlY2tib3hlcyB3aWxsIHVwZGF0ZSB0aGUgbWFwL3NlbGVjdGVkIGl0ZW1zXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dC5yb3dDaGVja2JveGVzLmF0KGZvdW5kSW5kZXgpLnNldFZhbHVlKGZhbHNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFRoZSBpdGVtIGJlaW5nIHJlbW92ZWQgaXMgbm90IG9uIHRoZSBjdXJyZW50IHBhZ2Ugc28ganVzdCB1cGRhdGUgdGhlXHJcbiAgICAgIC8vIG1hcC9zZWxlY3RlZCBpdGVtc1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQuc2VsZWN0ZWRJdGVtc01hcC5kZWxldGUocmVtb3ZlSXRlbS5pZCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3Rpb25Db250ZXh0LnNlbGVjdGVkSXRlbXNNYXAudmFsdWVzKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2F0Y2ggZm9yIGNoYW5nZXMgdG8gdGhlIHJvdyBjaGVja2JveGVzIGZvcm0gYXJyYXkgYW5kIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgaXRlbXNcclxuICAgKiBsaXN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXR1cFJvd0NoZWNrYm94ZXNXYXRjaGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5yb3dDaGVja2JveGVzLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAvLyBEZWJvdW5jZSAxMCBpcyBzaW1wbHkgdG8gbm90IHNwYW0gdGhlIGNoYW5nZSBoYW5kbGVyIG9uIGxvYWQvcGFnZSBjaGFuZ2VcclxuICAgICAgLy8gT3RoZXJ3aXNlIHRoaXMgd2lsbCBnZXQgY2FsbGVkIGV2ZXJ5IHRpbWUgYSBuZXcgcm93IGlzIGFkZGVkIHRvIHRoZSB0YWJsZVxyXG4gICAgICBkZWJvdW5jZVRpbWUoMTApLFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpXHJcbiAgICApLnN1YnNjcmliZSgocm93VmFsdWVzOiBib29sZWFuW10pID0+IHtcclxuICAgICAgcm93VmFsdWVzLmZvckVhY2goKHNlbGVjdGVkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGxldCBhdmFpbGFibGVJdGVtID0gdGhpcy5hdmFpbGFibGVJdGVtc1tpbmRleF07XHJcblxyXG4gICAgICAgIGlmICghc2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5zZWxlY3RlZEl0ZW1zTWFwLmhhcyhhdmFpbGFibGVJdGVtLmlkKSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5zZWxlY3RlZEl0ZW1zTWFwLmRlbGV0ZShhdmFpbGFibGVJdGVtLmlkKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkICYmICF0aGlzLnNlbGVjdGlvbkNvbnRleHQ/LnNlbGVjdGVkSXRlbXNNYXAuaGFzKGF2YWlsYWJsZUl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQ/LnNlbGVjdGVkSXRlbXNNYXAuc2V0KGF2YWlsYWJsZUl0ZW0uaWQsIGF2YWlsYWJsZUl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0aW9uQ29udGV4dD8uc2VsZWN0ZWRJdGVtc01hcC52YWx1ZXMoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdhdGNoIHRvIGJlIHRvbGQgaWYgY2hhbmdlcyB0byB0aGUgbWFwIHdlcmUgbWFkZSBvdXRzaWRlIG9mIHRoZSBjb21wb25lbnQgYW5kIGlmIHNvIHVwZGF0ZVxyXG4gICAqIHRoZSBhcnJheSBkaXNwbGF5ZWQgaW4gdGhlIHNlbGVjdGVkIGxpc3QgYW5kIHNlbGVjdCBjaGVja2JveGVzIGZvciB2aXNpYmxlIGF2YWlsYWJsZSBpdGVtc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0dXBTZWxlY3RlZEl0ZW1zQ2hhbmdlZFdhdGNoZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQuc2VsZWN0ZWRJdGVtc01hcENoYW5nZWQucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Db250ZXh0KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGlvbkNvbnRleHQ/LnNlbGVjdGVkSXRlbXNNYXAudmFsdWVzKCkpO1xyXG5cclxuICAgICAgICB0aGlzLmF2YWlsYWJsZUl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Db250ZXh0LnNlbGVjdGVkSXRlbXNNYXAuaGFzKGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dC5yb3dDaGVja2JveGVzLmF0KGluZGV4KS5zZXRWYWx1ZSh0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEludGVybmFsaXplZFRlbXBsYXRlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbUF2YWlsYWJsZUhlYWRlclRlbXBsYXRlKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWxpemVkQXZhaWxhYmxlSGVhZGVyVGVtcGxhdGUgPSB0aGlzLmN1c3RvbUF2YWlsYWJsZUhlYWRlclRlbXBsYXRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbGl6ZWRBdmFpbGFibGVIZWFkZXJUZW1wbGF0ZSA9IHRoaXMuZGVmYXVsdEF2YWlsYWJsZUhlYWRlclRlbXBsYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmN1c3RvbUF2YWlsYWJsZUl0ZW1UZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLmludGVybmFsaXplZEF2YWlsYWJsZUl0ZW1UZW1wbGF0ZSA9IHRoaXMuY3VzdG9tQXZhaWxhYmxlSXRlbVRlbXBsYXRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbGl6ZWRBdmFpbGFibGVJdGVtVGVtcGxhdGUgPSB0aGlzLmRlZmF1bHRBdmFpbGFibGVJdGVtVGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY3VzdG9tU2VsZWN0ZWRJdGVtVGVtcGxhdGUpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbGl6ZWRTZWxlY3RlZEl0ZW1UZW1wbGF0ZSA9IHRoaXMuY3VzdG9tU2VsZWN0ZWRJdGVtVGVtcGxhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmludGVybmFsaXplZFNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGhpcy5kZWZhdWx0U2VsZWN0ZWRJdGVtVGVtcGxhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -100,6 +100,8 @@ export class SearchableTableComponent {
|
|
|
100
100
|
this.removeCard = false;
|
|
101
101
|
/** Classes to add to the overlay/card element */
|
|
102
102
|
this.overlayClasses = '';
|
|
103
|
+
/** When true the overlay and table will not have flex-shrink-max but instead flex-grow */
|
|
104
|
+
this.fillParentHeight = false;
|
|
103
105
|
/**
|
|
104
106
|
* Text displayed in the footer.
|
|
105
107
|
* Sometimes `noDataMessage`, sometimes `noSearchResultsMessage`
|
|
@@ -250,8 +252,8 @@ export class SearchableTableComponent {
|
|
|
250
252
|
SearchableTableComponent.decorators = [
|
|
251
253
|
{ type: Component, args: [{
|
|
252
254
|
selector: 'ec-searchable-table',
|
|
253
|
-
template: "<header *ngIf=\"!hideHeader\"\r\n class=\"d-flex flex-shrink align-items-center mb-3\">\r\n <ec-textbox id=\"{{id}}_searchbox\"\r\n *ngIf=\"!hideSearchControl\"\r\n class=\"mb-0 flex-grow mr-2\"\r\n [autofocus]=\"autofocus\"\r\n [formModel]=\"searchModel\"\r\n [tabindex]=\"searchboxTabIndex\"\r\n [placeholder]=\"searchboxPlaceholder\"\r\n [readonly]=\"searchboxReadonly\"></ec-textbox>\r\n <div class=\"flex-grow\">\r\n <ng-content select=\".searchable-table-controls\"></ng-content>\r\n </div>\r\n</header>\r\n<section id=\"{{id}}_card\"\r\n class=\"d-flex flex-column
|
|
254
|
-
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{display:flex;flex:1 1;flex-direction:column;min-height:0}:host ::ng-deep .card-header+ec-table.is-selectable th{height:2.5rem;padding-bottom:.9375rem}:host ::ng-deep .card-header+ec-table.is-selectable th.is-resizable .handle{padding-top:.5rem}:host ::ng-deep .card-header+ec-table.is-selectable th.is-resizable .handle:before{top:.5rem}:host ::ng-deep .card-header+ec-table.is-selectable .selectable-table-toolbar{height:2.5rem;padding-bottom:.5rem}footer{font-size:.75rem;line-height:1rem}footer.has-results{color:rgba(26,26,35,.38);text-align:right}.card.has-mask{min-height:15rem}"]
|
|
255
|
+
template: "<header *ngIf=\"!hideHeader\"\r\n class=\"d-flex flex-shrink align-items-center mb-3\">\r\n <ec-textbox id=\"{{id}}_searchbox\"\r\n *ngIf=\"!hideSearchControl\"\r\n class=\"mb-0 flex-grow mr-2\"\r\n [autofocus]=\"autofocus\"\r\n [formModel]=\"searchModel\"\r\n [tabindex]=\"searchboxTabIndex\"\r\n [placeholder]=\"searchboxPlaceholder\"\r\n [readonly]=\"searchboxReadonly\"></ec-textbox>\r\n <div class=\"flex-grow\">\r\n <ng-content select=\".searchable-table-controls\"></ng-content>\r\n </div>\r\n</header>\r\n<section id=\"{{id}}_card\"\r\n class=\"d-flex flex-column {{overlayClasses}}\"\r\n [ngClass]=\"{'is-translucent': status.status !== 'error', 'has-mask': status.status !== 'hasData', 'card m-0 bg-content': !customContentTemplate && !removeCard}\"\r\n ecOverlay\r\n [status]=\"status.status\"\r\n [message]=\"status.message\"\r\n [displayAsMask]=\"true\">\r\n <ng-content select=\".card-header\"></ng-content>\r\n <ng-container *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\">\r\n </ng-container>\r\n\r\n <!-- the default template is an ec-table with proxied-over searchable table inputs. \r\n If that doesn't work for you then you can specify a customContentTemplate to use instead\r\n and still retain all the event handling, header, footer pagination, etc support -->\r\n <ng-template #defaultContentTemplate>\r\n <ec-table id=\"{{id}}_table\"\r\n class=\"{{tableClasses}}\"\r\n [class.is-fixed]=\"tableLayoutFixed\"\r\n [sortable]=\"sortable\"\r\n [sort]=\"sort\"\r\n (sortChange)=\"onSortChange($event)\"\r\n [resizable]=\"resizable\"\r\n [scrollable]=\"true\"\r\n [selectable]=\"selectable\"\r\n [selectionContext]=\"selectionContext\"\r\n [selectionToolbarTemplate]=\"selectionToolbarTemplate\"\r\n [resizableColumns]=\"resizableColumns\">\r\n <ng-content></ng-content>\r\n </ec-table>\r\n </ng-template>\r\n\r\n <!-- pagination footer visible if table is page-able and there are more than one page of results -->\r\n <footer *ngIf=\"!hideFooter && pageable && searchResults.totalItemsBeforePaging! > pageSize!\"\r\n class=\"d-flex flex-shrink align-items-center\"\r\n [class.border-top]=\"!customContentTemplate\">\r\n <ec-table-pagination id=\"{{id}}_pager\"\r\n class=\"font-color-primary\"\r\n [totalItems]=\"searchResults.totalItemsBeforePaging\"\r\n [pageSize]=\"pageSize\"\r\n [maxTabs]=\"maxTabs\"\r\n [pageNumber]=\"pageInfo?.pageNumber\"\r\n (pageChanged)=\"onPageChange($event)\">\r\n </ec-table-pagination>\r\n <div id=\"resultsCount\"\r\n *ngIf=\"searchResults?.items?.length\"\r\n class=\"ml-auto mr-2 font-color-hint text-truncate\" \r\n title=\"{{resultsCount}} {{additionalCountText}}\">{{resultsCount}} {{additionalCountText}}</div>\r\n </footer>\r\n\r\n <!-- default footer: visible if hideFooter is false and table is not page-able or there are only one page of results (always shows if there is a caption to indicate no results) -->\r\n <footer *ngIf=\"(!hideFooter && (!pageable || searchResults.totalItemsBeforePaging! <= pageSize!)) || tableCaption\"\r\n class=\"p-2 d-flex\"\r\n [ngClass]=\"{'has-results': searchResults?.items?.length, 'border-top': searchResults?.items?.length && !customContentTemplate}\">\r\n <ng-content *ngIf=\"!tableCaption\"\r\n select=\".searchable-table-footer\"></ng-content>\r\n <div id=\"tableCaption\"\r\n *ngIf=\"tableCaption\"\r\n [innerHTML]=\"tableCaption\"></div>\r\n <div id=\"resultsCount\"\r\n *ngIf=\"searchResults?.items?.length\"\r\n class=\"ml-auto text-truncate\"\r\n title=\"{{resultsCount}} {{additionalCountText}}\">{{resultsCount}} {{additionalCountText}}</div>\r\n </footer>\r\n</section>",
|
|
256
|
+
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{--ec-flex-ec-table:var(--ec-flex-properties,0 1 auto);--ec-flex-overlay-section:var(--ec-flex-properties,0 1 auto);--ec-flex-properties:0 1 auto;display:flex;flex:1 1;flex-direction:column;min-height:0}:host ::ng-deep .card-header+ec-table.is-selectable th{height:2.5rem;padding-bottom:.9375rem}:host ::ng-deep .card-header+ec-table.is-selectable th.is-resizable .handle{padding-top:.5rem}:host ::ng-deep .card-header+ec-table.is-selectable th.is-resizable .handle:before{top:.5rem}:host ::ng-deep .card-header+ec-table.is-selectable .selectable-table-toolbar{height:2.5rem;padding-bottom:.5rem}section{flex:var(--ec-flex-overlay-section);min-height:0}ec-table{flex:var(--ec-flex-ec-table);min-height:0}footer{font-size:.75rem;line-height:1rem}footer.has-results{color:rgba(26,26,35,.38);text-align:right}.card.has-mask{min-height:15rem}"]
|
|
255
257
|
},] }
|
|
256
258
|
];
|
|
257
259
|
SearchableTableComponent.ctorParameters = () => [
|
|
@@ -295,6 +297,7 @@ SearchableTableComponent.propDecorators = {
|
|
|
295
297
|
selectable: [{ type: Input }],
|
|
296
298
|
customContentTemplate: [{ type: Input }],
|
|
297
299
|
removeCard: [{ type: Input }],
|
|
298
|
-
overlayClasses: [{ type: Input }]
|
|
300
|
+
overlayClasses: [{ type: Input }],
|
|
301
|
+
fillParentHeight: [{ type: Input }]
|
|
299
302
|
};
|
|
300
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQUUsU0FBUyxFQUFpQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQWMsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQWE3RSxNQUFNLE9BQU8sd0JBQXdCO0lBb01uQyxZQUNVLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxZQUEwQjtR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dGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRU1QVFksIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgbWFwLCBwbHVjaywgc2tpcFVudGlsLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2Vycm9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3dDb3VudFBpcGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGlzcGxheS9waXBlcy9yb3ctY291bnQucGlwZSc7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi92aWV3LW92ZXJsYXkvdmlldy1vdmVybGF5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vcmVzaXphYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYWdpbmdJbmZvLCBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuL3RhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVTZWxlY3RhYmxlUm93Q29udGV4dCB9IGZyb20gJy4vdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVTb3J0IH0gZnJvbSAnLi90YWJsZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVTZWFyY2hSZXN1bHRzID0geyBpdGVtczogdW5rbm93bltdLCB0b3RhbEl0ZW1zOiBudW1iZXIsIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmc/OiBudW1iZXIgfTtcclxuZXhwb3J0IHR5cGUgU2VhcmNoYWJsZVRhYmxlUmVmcmVzaE9wdGlvbnMgPSB7IGNsZWFyU2VhcmNoPzogYm9vbGVhbiB9O1xyXG5cclxudHlwZSBTZWFyY2hhYmxlVGFibGVGb3JtTW9kZWwgPSB7IHNlYXJjaE1vZGVsPzogc3RyaW5nIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXNlYXJjaGFibGUtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaGFibGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG5cclxuICBASW5wdXQoKSBpZCA9ICcnO1xyXG4gIEBJbnB1dCgpIHJlc2l6YWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvcnRhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc29ydD86IFRhYmxlU29ydDtcclxuICBASW5wdXQoKSBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqU2V0IHRvIGEgc3BhY2Utc2VwYXJhdGVkIHNldCBvZiBzdHJpbmdzIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBlYy10YWJsZSBjbGFzcyBhdHRyaWJ1dGVcclxuICAgKiB0aGlzIGFsbG93cyBmaW5lciBjb250cm9sIG92ZXIgc3R5bGluZy5cclxuICAgKi9cclxuICBASW5wdXQoKSB0YWJsZUNsYXNzZXM6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogRW1pdHMgd2hlbiB0YWJsZSBzb3J0IGhhcyBjaGFuZ2VkICovXHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUYWJsZVNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVNvcnQ+KCk7XHJcblxyXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSB0YWJsZSBwYWdlIGhhcyBjaGFuZ2VkICovXHJcbiAgQE91dHB1dCgncGFnZUNoYW5nZScpIHBhZ2VDaGFuZ2VFbWl0dGVyOiBFdmVudEVtaXR0ZXI8UGFnaW5nSW5mbz4gPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2luZ0luZm8+KCk7XHJcblxyXG4gIC8qKiBQbGFjZWhvbGRlciB0ZXh0IGZvciB0aGUgc2VhcmNoYm94ICovXHJcbiAgQElucHV0KCkgc2VhcmNoYm94UGxhY2Vob2xkZXIgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybUdyb3VwIGZvciB0aGUgc2VhcmNoYm94XHJcbiAgICpcclxuICAgKiBUaGUgcmVmZXJlbmNlZCBGb3JtR3JvdXAgKiptdXN0KiogY29udGFpbiBhIEZvcm1Db250cm9sIGNhbGxlZCAnc2VhcmNoTW9kZWwnLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtTW9kZWwhOiBGb3JtR3JvdXA7XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXllZCBpbiBvdmVybGF5IHdoZW4gbm8gZGF0YSBpcyByZXR1cm5lZCAod2l0aG91dCBzZWFyY2hpbmcpLlxyXG4gICAqXHJcbiAgICogRGVmYXVsdHMgdG8gXCJTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0NcIlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG5vRGF0YU1lc3NhZ2U6IHN0cmluZyA9ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0MnO1xyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5ZWQgaW4gb3ZlcmxheSB3aGVuIG5vIGRhdGEgaXMgcmV0dXJuZWQgKGFmdGVyIHNlYXJjaGluZykuXHJcbiAgICogRW5zdXJlIHRyYW5zbGF0aW9uIGhhcyBhbiBpbnRlcnBvbGF0aW9uIHBsYWNlaG9sZGVyIGZvciBcInNlYXJjaFRleHRcIi5cclxuICAgKlxyXG4gICAqIERlZmF1bHRzIHRvIFwiU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9NYXRjaGVzX1NDXCJcclxuICAgKlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogLy8gNyByZXF1aXJlcyBzaW5nbGUgY3VybHkgYnJhY2VzXHJcbiAgICogTm8gaXRlbXMgZm91bmQgbWF0Y2hpbmcgPHN0cm9uZz57e3NlYXJjaFRleHR9fTwvc3Ryb25nPlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG5vU2VhcmNoUmVzdWx0c01lc3NhZ2U6IHN0cmluZyA9ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob01hdGNoZXNfU0MnO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgaG9zdGluZyBwYWdlIGlzIHJlYWR5IGZvciB0aGUgdGFibGUgdG8gbG9hZCBkYXRhLlxyXG4gICAqXHJcbiAgICogTmV4dCBhbmQgQ29tcGxldGUgdGhpcyBvYnNlcnZhYmxlIGFmdGVyIGhvc3RpbmcgcGFnZSBoYXMgbWFkZSBhbnkgcHJlbGltaW5hcnlcclxuICAgKiBBUEkgKG9yIG90aGVyIGFzeW5jaHJvbm91cykgY2FsbHMgdG8gbG9hZCBwcmVyZXF1aXNpdGUgZGF0YSB1cG9uIHdoaWNoIHRoZSBjb2RlXHJcbiAgICogaW4gdGhlIGBnZXRJdGVtc2AgZnVuY3Rpb24gZGVwZW5kcy4gIFVzZSBhIGBSZXBsYXlTdWJqZWN0YCB0byBlbnN1cmUgZXZlcnkgY29tcG9uZW50XHJcbiAgICogdGhhdCB1c2VzIHRoaXMgb2JzZXJ2YWJsZSBnZXRzIHRoZSBOZXh0IGFuZCBDb21wbGV0ZSBub3RpZmljYXRpb25zLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHJlYWR5ITogT2JzZXJ2YWJsZTx2b2lkPjtcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gY2FsbGVkIHRvIGdldCBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSB0YWJsZS5cclxuICAgKiBJZiBwYWdlYWJsZSBpcyB0cnVlLCB0aGUgVGFibGVTZWFyY2hSZXN1bHRzIG5lZWQgdG8gaW5jbHVkZSB0b3RhbEl0ZW1zQmVmb3JlUGFnaW5nLCB3aGljaCBpcyB0aGVcclxuICAgKiBjb3VudCBvZiBpdGVtcyBiZWZvcmUgeW91J3ZlIGFwcGxpZWQgYW55IHBhZ2luYXRpb24gKGkuZS4gdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyB0aGF0IGNhbWUgYmFjayBmcm9tIHRoZSBzZWFyY2gpLlxyXG4gICAqXHJcbiAgICogTWFrZSBzdXJlIHRvIGJpbmQgdGhlIHNjb3BlIGluIHRoZSB0ZW1wbGF0ZVxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogW2dldEl0ZW1zXT1cInlvdXJGdW5jdGlvbi5iaW5kKHRoaXMpXCJcclxuICAgKi9cclxuICBASW5wdXQoKSBnZXRJdGVtcyE6IChzZWFyY2g/OiBzdHJpbmcsIHBhZ2VDaGFuZ2VJbmZvPzogUGFnaW5nSW5mbykgPT4gT2JzZXJ2YWJsZTxUYWJsZVNlYXJjaFJlc3VsdHM+O1xyXG5cclxuICAvKiogT2JzZXJ2YWJsZSB0aGF0IHdpbGwgZm9yY2UgdGhlIGdldEl0ZW1zIGZ1bmN0aW9uIHRvIGdldCBjYWxsZWQgYWdhaW4gKi9cclxuICBASW5wdXQoKSByZWZyZXNoPzogT2JzZXJ2YWJsZTxTZWFyY2hhYmxlVGFibGVSZWZyZXNoT3B0aW9ucyB8IHVuZGVmaW5lZD47XHJcblxyXG4gIC8qKiBBbGxvdyB0aGUgaG9zdCBjb21wb25lbnQgdG8gc3VwcGx5IGFuIG92ZXJsYXkgdG8gY29udHJvbCB0aGUgcGVuZGluZyBzdGF0ZSBvZiB0aGUgdGFibGUgKi9cclxuICBASW5wdXQoKSBzdGF0dXM6IE92ZXJsYXkgPSBuZXcgT3ZlcmxheSgnaGFzRGF0YScpO1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB1bmRlcmx5aW5nIHRhYmxlJ3MgbGF5b3V0IHRvIGZpeGVkLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRhYmxlTGF5b3V0Rml4ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIEVtaXRzIGl0ZW1zIHJldHVybmVkIGJ5IHRoZSBnZXRJdGVtcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCB0b3RhbCBjb3VudCAqL1xyXG4gIEBPdXRwdXQoKSBpdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPFRhYmxlU2VhcmNoUmVzdWx0cz4gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlU2VhcmNoUmVzdWx0cz4oKTtcclxuXHJcbiAgLyoqIE9wdGlvbmFsIHRhYiBpbmRleCBmb3IgdGhlIHNlYXJjaGJveCAqL1xyXG4gIEBJbnB1dCgpIHNlYXJjaGJveFRhYkluZGV4PzogbnVtYmVyO1xyXG5cclxuICAvKiogTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gc2hvdyBpbiB0aGUgdGFibGUgKGRlZmF1bHQ6IDEwMCkgKi9cclxuICBASW5wdXQoKSBtYXhJdGVtQ291bnQ6IG51bWJlciA9IDEwMDtcclxuXHJcbiAgLyoqIFNldCB0byB0cnVlIHRvIGhpZGUgc2VhcmNoIGJveCAoZG9lcyBub3QgaGlkZSB0aGUgb3RoZXIgc2VhcmNoYWJsZSB0YWJsZSBjb250cm9scyAqL1xyXG4gIEBJbnB1dCgpIGhpZGVTZWFyY2hDb250cm9sOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBTZXQgdG8gdHJ1ZSB0byBoaWRlIHRoZSBlbnRpcmUgaGVhZGVyICovXHJcbiAgQElucHV0KCkgaGlkZUhlYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogVHlwZSBvZiBvYmplY3QgaW4gdGhlIHRhYmxlLiBEaXNwbGF5ZWQgaW4gZm9vdGVyIChkZWZhdWx0OiAncmVzdWx0cycpKi9cclxuICBASW5wdXQoKSBvYmplY3RUeXBlOiBzdHJpbmcgPSAncmVzdWx0cyc7XHJcblxyXG4gIC8qKiBTZXQgdG8gdHJ1ZSB0byBoaWRlIHRoZSB0YWJsZSBmb290ZXIgKi9cclxuICBASW5wdXQoKSBoaWRlRm9vdGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0byB0cnVlIHRvIGVuYWJsZSBwYWdpbmcuIElmIHBhZ2luZyBpcyBlbmFibGVkLCBwYWdlU2l6ZSBtdXN0IGJlIHByb3ZpZGVkLlxyXG4gICAqIGdldEl0ZW1zIHdpbGwgYmUgcGFzc2VkIGJvdGggYSBzZWFyY2ggYW5kIGEgUGFnaW5nSW5mbyBvYmplY3Qgd2hlbiBjYWxsZWQuIEl0IG11c3QgaW5jbHVkZSB0b3RhbEl0ZW1zQmVmb3JlUGFnaW5nIGluIHRoZSBUYWJsZVNlYXJjaFJlc3VsdHMgb3V0cHV0LlxyXG4gICAqIEhlcmUgaXMgYSBzaW1wbGUgaW1wbGVtZW50YXRpb246IFxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogZ2V0SXRlbXMoc2VhcmNoPzogc3RyaW5nLCBwYWdlQ2hhbmdlSW5mbz86IFBhZ2luZ0luZm8pOiBPYnNlcnZhYmxlPFRhYmxlU2VhcmNoUmVzdWx0cz4ge1xyXG4gICAgICBsZXQgcmVzdWx0czogU2ltcGxlSXRlbVtdID0gWy4uLnRoaXMucGFnaW5hdGVkVGFibGVJdGVtc107XHJcbiAgICAgIC8vYXBwbHkgc2VhcmNoXHJcbiAgICAgIGlmKHNlYXJjaCkge1xyXG4gICAgICAgIHJlc3VsdHMgPSB0aGlzLnBhZ2luYXRlZFRhYmxlSXRlbXMuZmlsdGVyKGkgPT4gaS5hLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgfVxyXG4gICAgICAvL2dldCBjb3VudCBiZWZvcmUgYXBwbHlpbmcgcGFnaW5nXHJcbiAgICAgIGxldCBjb3VudEJlZm9yZVBhZ2luZyA9IHJlc3VsdHMubGVuZ3RoO1xyXG4gICAgICAvL2FwcGx5IHBhZ2luZ1xyXG4gICAgICBpZihwYWdlQ2hhbmdlSW5mbykge1xyXG4gICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLnNsaWNlKHBhZ2VDaGFuZ2VJbmZvIS5za2lwLCBwYWdlQ2hhbmdlSW5mbyEuc2tpcCArIHBhZ2VDaGFuZ2VJbmZvIS5wYWdlU2l6ZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG9mKHsgaXRlbXM6IHJlc3VsdHMsIHRvdGFsSXRlbXM6IHJlc3VsdHMubGVuZ3RoLCB0b3RhbEl0ZW1zQmVmb3JlUGFnaW5nOiBjb3VudEJlZm9yZVBhZ2luZyB9KTtcclxuICAgIH1cclxuICAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBzaXplIG9mIGEgcGFnZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBwYWdlU2l6ZT86IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAqIE1heGltdW0gbnVtYmVyIG9mIHBhZ2UgdGFicyB0byBzaG93XHJcbiAqL1xyXG4gIEBJbnB1dCgpIG1heFRhYnM/OiBudW1iZXIgPSAxMDtcclxuXHJcbiAgLyoqXHJcbiAgICogTWFrZXMgdGhlIHNlYXJjaGJveCByZWFkb25seSBpZiB0cnVlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNlYXJjaGJveFJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBQYXNzZWQgdG8gdGhlIGlubmVyIFRhYmxlQ29tcG9uZW50IHRvIGVuYWJsZSByb3cgc2VsZWN0aW9uICovXHJcbiAgQElucHV0KCkgc2VsZWN0aW9uQ29udGV4dD86IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQ7XHJcblxyXG4gIC8qKiBQYXNzZWQgdG8gdGhlIGlubmVyIFRhYmxlQ29tcG9uZW50IHRvIGRpc3BsYXkgYSB0b29sYmFyIHdoZW4gMSBvciBtb3JlIHJvd3MgYXJlIHNlbGVjdGVkLiBSZXF1aXJlcyBgW3NlbGVjdGlvbkNvbnRleHRdYCB0byBiZSBkZWZpbmVkLiAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvblRvb2xiYXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgXHJcbiAgQENvbnRlbnRDaGlsZHJlbihSZXNpemFibGVDb2x1bW5Db21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pIHJlc2l6YWJsZUNvbHVtbnMhOiBRdWVyeUxpc3Q8UmVzaXphYmxlQ29sdW1uQ29tcG9uZW50PjtcclxuXHJcbiAgLyoqIE9wdGlvbmFsIHRleHQgdG8gYWRkIHRvIHRoZSByZXN1bHRzIGNvdW50IGluIHRoZSB0YWJsZSBmb290ZXIuIFRoaXMgdGV4dCB3aWxsIGJlIGFkZGVkIGFmdGVyIHRoZSBjb3VudCBhbmQgb2JqZWN0VHlwZS4gKi9cclxuICBASW5wdXQoKSBhZGRpdGlvbmFsQ291bnRUZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIEVuYWJsZXMgdGFibGUgcm93IHNlbGVjdGlvbiBhbmQgcm93IGhpZ2hsaWdodGluZyBzdHlsZXMgd2hlbiB0cnVlICovXHJcbiAgQElucHV0KCkgc2VsZWN0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipEZWZhdWx0cyB0byB1bmRlZmluZWQuIFNwZWNpZnkgeW91ciBvd24gdGVtcGxhdGUgaWYgYW4gZWMtdGFibGUgd3JhcHBlZCBhcm91bmQgeW91ciB0cmFuc2NsdWRlZCBjb250ZW50IHdvbid0IG1lZXQgeW91ciBuZWVkc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNvbnRlbnRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKiBXaGVuIHRydWUsIHJlbW92ZXMgdGhlIGNhcmQgc3R5bGVzIGZyb20gdGhlIHRhYmxlIHdyYXBwZXIgKi9cclxuICBASW5wdXQoKSByZW1vdmVDYXJkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBDbGFzc2VzIHRvIGFkZCB0byB0aGUgb3ZlcmxheS9jYXJkIGVsZW1lbnQgKi9cclxuICBASW5wdXQoKSBvdmVybGF5Q2xhc3Nlczogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhZ2luZ0luZm8gZm9yIHRoZSBjdXJyZW50IHBhZ2UuXHJcbiAgICovXHJcbiAgcHVibGljIHBhZ2VJbmZvPzogUGFnaW5nSW5mbztcclxuXHJcbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2VhcmNoTW9kZWwgKi9cclxuICBwdWJsaWMgZ2V0IHNlYXJjaE1vZGVsKCk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Nb2RlbC5jb250cm9scy5zZWFyY2hNb2RlbCBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRleHQgZGlzcGxheWVkIGluIHRoZSBmb290ZXIuXHJcbiAgICogU29tZXRpbWVzIGBub0RhdGFNZXNzYWdlYCwgc29tZXRpbWVzIGBub1NlYXJjaFJlc3VsdHNNZXNzYWdlYFxyXG4gICAqL1xyXG4gIHB1YmxpYyB0YWJsZUNhcHRpb246IHN0cmluZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMubm9EYXRhTWVzc2FnZSB8fCAnU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9EYXRhX1NDJyk7XHJcblxyXG4gIC8qKiBjb3VudCBvZiByZXN1bHRzIGRpc3BsYXllZCBpbiB0aGUgdGFibGUgKi9cclxuICBwdWJsaWMgcmVzdWx0c0NvdW50OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIEl0ZW1zIHJldHVybmVkIGJ5IHRoZSBnZXRJdGVtcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCB0b3RhbCBjb3VudCAqL1xyXG4gIHB1YmxpYyBzZWFyY2hSZXN1bHRzOiBUYWJsZVNlYXJjaFJlc3VsdHMgPSB7IGl0ZW1zOiBbXSwgdG90YWxJdGVtczogMCB9O1xyXG5cclxuICAvKipcclxuICAgKiBJZiBwYXNzZWQgYW4gaW5wdXQgZm9yIHJlZnJlc2gsIHRyaWdnZXJzIHJlbG9hZGluZyBpdGVtcy5cclxuICAgKiBPdGhlcndpc2UsIGNvbXBsZXRlcyBpbW1lZGlhdGVseSAod2lsbCBuZXZlciB0cmlnZ2VyIHJlbG9hZCkuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWZyZXNoVHJpZ2dlcjogT2JzZXJ2YWJsZTxTZWFyY2hhYmxlVGFibGVGb3JtTW9kZWwgfCB1bmRlZmluZWQ+ID0gRU1QVFk7XHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwcml2YXRlIHBhZ2VDaGFuZ2VkOiBTdWJqZWN0PFNlYXJjaGFibGVUYWJsZUZvcm1Nb2RlbD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAvKiogVHJpZ2dlcnMgdGhlIGluaXRpYWwgbG9hZCBvZiB0aGUgdGFibGUgKi9cclxuICBwcml2YXRlIGluaXRUYWJsZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVycm9yU2VydmljZTogRXJyb3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3dDb3VudFBpcGU6IFJvd0NvdW50UGlwZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLnBhZ2VTaXplICYmICFjaGFuZ2VzLnBhZ2VTaXplLmZpcnN0Q2hhbmdlICYmIHRoaXMucGFnZWFibGUpIHtcclxuICAgICAgLy8gSWYgdGhlIHBhZ2VTaXplIGNoYW5nZXMsIHJlc2V0IHRvIHRoZSBmaXJzdCBwYWdlIGFuZCByZWZyZXNoLlxyXG4gICAgICB0aGlzLnBhZ2VJbmZvID0gVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50LmdldFBhZ2luZ0luZm8oMSwgdGhpcy5wYWdlU2l6ZSEpO1xyXG4gICAgICB0aGlzLm9uUGFnZUNoYW5nZSh0aGlzLnBhZ2VJbmZvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdwZW5kaW5nJywgJ0xvYWRpbmcnKTtcclxuICAgIHRoaXMuc2V0VXBSZWZyZXNoVHJpZ2dlcigpO1xyXG5cclxuICAgIC8vIFdhdGNoIGZvciBzZWFyY2hib3gvb3RoZXIgY29udHJvbCBjaGFuZ2VzIG9yIHJlZnJlc2ggcmVxdWVzdHNcclxuICAgIGNvbnN0IHNlYXJjaE9yUmVmcmVzaCA9IG1lcmdlKFxyXG4gICAgICB0aGlzLmZvcm1Nb2RlbC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgICBza2lwVW50aWwodGhpcy5yZWFkeSksXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMClcclxuICAgICAgKSxcclxuICAgICAgdGhpcy5yZWZyZXNoVHJpZ2dlcixcclxuICAgICAgdGhpcy5pbml0VGFibGVcclxuICAgICkucGlwZSh0YXAoKCk9PiB7XHJcbiAgICAgIC8vYSBjaGFuZ2UgdG8gYW55IGZvcm0gY29udHJvbCBvciBhIHJlZnJlc2ggc2hvdWxkIHJlc2V0IHRoZSBwYWdlSW5mbyB0byB0aGUgZmlyc3QgcGFnZSBpZiB0aGUgdGFibGUgaXMgcGFnZWFibGUuXHJcbiAgICAgIC8vKGlmIHdlIGRpZG50IHJlc2V0IHRoZSBwYWdlSW5mbywgd2UnZCBoYXZlIHRvIGNhbGwgZ2V0SXRlbXMgd2l0aCB0aGUgcHJldmlvdXMgcGFnZUluZm8sIHdoaWNoIG1heSBub3QgYmUgdmFsaWQgZm9yIHRoZSBuZXcgcmVzdWx0cylcclxuICAgICAgaWYodGhpcy5wYWdlYWJsZSkge1xyXG4gICAgICAgIHRoaXMucGFnZUluZm8gPSBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQuZ2V0UGFnaW5nSW5mbygxLCB0aGlzLnBhZ2VTaXplISk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVSZXN1bHRzID0gbWVyZ2UoXHJcbiAgICAgIHNlYXJjaE9yUmVmcmVzaCxcclxuICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5waXBlKFxyXG4gICAgICAgIC8vIFByZXZlbnQgYSBjYWxsIHRvIGdldEl0ZW1zIHdoZW4gdGhlIHBhZ2VTaXplIGlzIHNldCBkdXJpbmcgcGFnZSBpbml0IGFuZCBiZWZvcmUgcmVhZHkgaXMgY29tcGxldGVkXHJcbiAgICAgICAgc2tpcFVudGlsKHRoaXMucmVhZHkpXHJcbiAgICAgIClcclxuICAgIClcclxuXHJcbiAgICAvLyBDYWxsIGdldEl0ZW1zIGFuZCB3YXRjaCBmb3IgZXJyb3JzXHJcbiAgICBjb25zdCBnZXREYXRhID0gdXBkYXRlUmVzdWx0cy5waXBlKFxyXG4gICAgICAvLyBQbHVjayB0aGUgc2VhcmNoTW9kZWwgdmFsdWUgb3V0IG9mIHRoZSBmb3JtTW9kZWxcclxuICAgICAgcGx1Y2soJ3NlYXJjaE1vZGVsJyksXHJcblxyXG4gICAgICAvLyBFbnN1cmUgc2VhcmNoIHN0cmluZyBpcyBkZWZpbmVkXHJcbiAgICAgIC8vIFRyaW0gYW5kIGxvd2VyY2FzZSBpdCB0byBhaWQgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2hpbmdcclxuICAgICAgbWFwKChzZWFyY2hTdHJpbmc/OiBzdHJpbmcpID0+IHtcclxuICAgICAgICBsZXQgc2VhcmNoID0gc2VhcmNoU3RyaW5nIHx8ICcnO1xyXG4gICAgICAgIHJldHVybiBzZWFyY2gudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH0pLFxyXG5cclxuICAgICAgLy8gU2hvdyBzdGF0dXMgb3ZlcmxheVxyXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdwZW5kaW5nJywgJ0xvYWRpbmcnKSksXHJcblxyXG4gICAgICAvLyBDYWxsIHBhc3NlZCBmdW5jdGlvblxyXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaFN0cmluZzogc3RyaW5nKSA9PiBcclxuICAgICAgICAvL2lmIHRoZSB0YWJsZSBpcyBwYWdlYWJsZSwgcGFnZUluZm8gd2lsbCBiZSBkZWZpbmVkLlxyXG4gICAgICAgIHRoaXMuZ2V0SXRlbXMoc2VhcmNoU3RyaW5nLCB0aGlzLnBhZ2VJbmZvKVxyXG4gICAgICApLFxyXG5cclxuICAgICAgLy8gSWYgcGFzc2VkIGZ1bmN0aW9uIGZhaWxzLCBzaG93IGVycm9yIHN0YXR1c1xyXG4gICAgICBjYXRjaEVycm9yKChlcnIsIGNhdWdodCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygnZXJyb3InLCB0aGlzLmVycm9yU2VydmljZS5wYXJzZUFwaUVycm9yKGVycikpO1xyXG4gICAgICAgIC8vIHJldHVybiB0aGUgY2F1Z2h0IG9ic2VydmFibGUgc28gdGhlIHN1YnNjcmlwdGlvbiBkb2Vzbid0IGNvbXBsZXRlXHJcbiAgICAgICAgcmV0dXJuIGNhdWdodDtcclxuICAgICAgfSksXHJcblxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpLFxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBIYW5kbGUgcmV0dXJuZWQgZGF0YSBhbmQgbm90aWZ5IHBhcmVudFxyXG4gICAgZ2V0RGF0YS5zdWJzY3JpYmUoKHJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cykgPT4ge1xyXG4gICAgICAvLyBMaW1pdGluZyBudW1iZXIgb2YgcmVzdWx0cyB0byBzaG93IGlmIG5vdCBwYWdlYWJsZSAoaWYgcGFnZWFibGUgdGhlIG1heCBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIHRhYmxlXHJcbiAgICAgIC8vIGNhbiBiZSBtb2RpZmllZCBieSBpbmNyZWFzaW5nL2RlY3JlYXNpbmcgdGhlIHBhZ2VTaXplLilcclxuICAgICAgaWYoIXRoaXMucGFnZWFibGUpIHtcclxuICAgICAgICByZXN1bHRzLml0ZW1zID0gcmVzdWx0cy5pdGVtcy5zbGljZSgwLCB0aGlzLm1heEl0ZW1Db3VudCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE5lZWQgdG8ga25vdyB0aGlzIChhbG9uZyB3aXRoIGlmIHRoZXJlJ3MgYSB2YWx1ZSBpbiB0aGUgZm9ybU1vZGVsKSB0byBkZXRlcm1pbmUgd2hhdCB0byBzaG93IGluIHRoZSBmb290ZXJcclxuICAgICAgdGhpcy5zZWFyY2hSZXN1bHRzID0gcmVzdWx0cztcclxuICAgIFxyXG4gICAgICB0aGlzLnRhYmxlQ2FwdGlvbiA9IHRoaXMuZ2V0Q2FwdGlvbihyZXN1bHRzKTtcclxuICAgICAgdGhpcy5yZXN1bHRzQ291bnQgPSB0aGlzLnBhZ2VhYmxlID8gdGhpcy5yb3dDb3VudFBpcGUudHJhbnNmb3JtKHJlc3VsdHMsIHRoaXMub2JqZWN0VHlwZSwgdW5kZWZpbmVkLCB0aGlzLnBhZ2VJbmZvKTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dDb3VudFBpcGUudHJhbnNmb3JtKHJlc3VsdHMsIHRoaXMub2JqZWN0VHlwZSwgdGhpcy5tYXhJdGVtQ291bnQpO1xyXG5cclxuICAgICAgLy8gRGlzYWJsZSBzZWFyY2hib3ggd2hlbiBpbiBuby1kYXRhIHN0YXRlXHJcbiAgICAgIGlmICghcmVzdWx0cy5pdGVtcy5sZW5ndGggJiYgIXRoaXMuc2VhcmNoTW9kZWwudmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaE1vZGVsLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoTW9kZWwuZGlzYWJsZWQpIHtcclxuICAgICAgICAvLyByZS1lbmFibGUgaWYgaXQgd2FzIGRpc2FibGVkLCBidXQgbm93IGhhcyBpdGVtc1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTW9kZWwuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdoYXNEYXRhJyk7XHJcbiAgICAgIC8vIFNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHBhcmVudCBjb21wb25lbnRcclxuICAgICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KHJlc3VsdHMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gV2hlbiAncmVhZHknIGlzIGNvbXBsZXRlZCBieSB0aGUgaG9zdCwgaW5pdGlhbGl6ZSB0aGUgdGFibGUgd2l0aCB0aGUgY3VycmVudCBmb3JtIG1vZGVsIHZhbHVlc1xyXG4gICAgdGhpcy5yZWFkeS5zdWJzY3JpYmUoe1xyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW5pdFRhYmxlLm5leHQodGhpcy5mb3JtTW9kZWwudmFsdWUpO1xyXG4gICAgICAgIHRoaXMuaW5pdFRhYmxlLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBhc3MgYWxvbmcgc29ydCB0byBwYXJlbnQgY29tcG9uZW50ICovXHJcbiAgb25Tb3J0Q2hhbmdlKHNvcnQ6IFRhYmxlU29ydCk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoc29ydCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGVuIGEgcGFnZSBjaGFuZ2VzLCBzdG9yZSB0aGUgbmV3IHBhZ2luZ0luZm8gYW5kIGVtaXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZvcm0gdG8gdHJpZ2dlciBnZXREYXRhLlxyXG4gICAqL1xyXG4gIG9uUGFnZUNoYW5nZShwYWdpbmdJbmZvOiBQYWdpbmdJbmZvKSB7XHJcbiAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ3BlbmRpbmcnLCAnTG9hZGluZycpO1xyXG4gICAgdGhpcy5wYWdlSW5mbyA9IHBhZ2luZ0luZm87XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2VFbWl0dGVyLmVtaXQocGFnaW5nSW5mbyk7XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLm5leHQodGhpcy5mb3JtTW9kZWwudmFsdWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFdpcmUgdXAgYSBoYW5kbGVyIHRvIHRoZSBgcmVmcmVzaGAgb2JzZXJ2YWJsZSBzbyB0aGF0IHdoZW5cclxuICAgKiB0aGUgaG9zdCBwYWdlIGNvbnRleHQgY2hhbmdlcyBpdCBjYW4gZm9yY2UgdGhlIHRhYmxlIHRvIHVwZGF0ZSBhcyB3ZWxsLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGByZWZyZXNoYCBvYnNlcnZhYmxlIHBhc3NlcyBvcHRpb25zIGFuZCB0aGUgYGNsZWFyU2VhcmNoYCBwcm9wZXJ0eVxyXG4gICAqIGlzIHNldCB0byB0cnVlLCByZXNldCB0aGUgc2VhcmNoTW9kZWwgYW5kIHBhc3MgYW4gZW1wdHkgc3RyaW5nLlxyXG4gICAqXHJcbiAgICogSWYgYHJlZnJlc2hgIG9ic2VydmFibGUgZG9lcyBub3QgcGFzcyBvcHRpb25zIG9yIHRoZSBgY2xlYXJTZWFyY2hgIHByb3BlcnR5XHJcbiAgICogaXMgc2V0IHRvIGZhbHNlLCBwYXNzIGFsb25nIHRoZSBjdXJyZW50IHNlYXJjaE1vZGVsIFZhbHVlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0VXBSZWZyZXNoVHJpZ2dlcigpIHtcclxuICAgIGlmICh0aGlzLnJlZnJlc2gpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoVHJpZ2dlciA9IHRoaXMucmVmcmVzaC5waXBlKFxyXG4gICAgICAgIG1hcChvcHRzID0+IHtcclxuICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMuY2xlYXJTZWFyY2gpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNb2RlbC5yZXNldCgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmZvcm1Nb2RlbCwgc2VhcmNoTW9kZWw6ICcnIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtTW9kZWwudmFsdWU7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEdldCB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGZvb3Rlci4gKi9cclxuICBwcml2YXRlIGdldENhcHRpb24ocmVzdWx0czogVGFibGVTZWFyY2hSZXN1bHRzKTogc3RyaW5nIHtcclxuICAgIGlmIChyZXN1bHRzLml0ZW1zLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VhcmNoTW9kZWwudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMubm9TZWFyY2hSZXN1bHRzTWVzc2FnZSB8fCAnU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9NYXRjaGVzX1NDJywgeyBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaE1vZGVsLnZhbHVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm5vRGF0YU1lc3NhZ2UgfHwgJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vRGF0YV9TQycpO1xyXG4gIH1cclxuXHJcbn0iXX0=
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQUUsU0FBUyxFQUFpQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQWMsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQWE3RSxNQUFNLE9BQU8sd0JBQXdCO0lBdU1uQyxZQUNVLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxZQUEwQjtR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TCxLQUFLO3lCQUdMLEtBQUs7NkJBR0wsS0FBSzsrQkFHTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEVNUFRZLCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIG1hcCwgcGx1Y2ssIHNraXBVbnRpbCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9lcnJvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm93Q291bnRQaXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Rpc3BsYXkvcGlwZXMvcm93LWNvdW50LnBpcGUnO1xyXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnLi4vdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNpemFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL3Jlc2l6YWJsZS1jb2x1bW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnaW5nSW5mbywgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQgfSBmcm9tICcuL3RhYmxlLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlU29ydCB9IGZyb20gJy4vdGFibGUuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCB0eXBlIFRhYmxlU2VhcmNoUmVzdWx0cyA9IHsgaXRlbXM6IHVua25vd25bXSwgdG90YWxJdGVtczogbnVtYmVyLCB0b3RhbEl0ZW1zQmVmb3JlUGFnaW5nPzogbnVtYmVyIH07XHJcbmV4cG9ydCB0eXBlIFNlYXJjaGFibGVUYWJsZVJlZnJlc2hPcHRpb25zID0geyBjbGVhclNlYXJjaD86IGJvb2xlYW4gfTtcclxuXHJcbnR5cGUgU2VhcmNoYWJsZVRhYmxlRm9ybU1vZGVsID0geyBzZWFyY2hNb2RlbD86IHN0cmluZyB9O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy1zZWFyY2hhYmxlLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hhYmxlVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgaWQgPSAnJztcclxuICBASW5wdXQoKSByZXNpemFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzb3J0YWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvcnQ/OiBUYWJsZVNvcnQ7XHJcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlNldCB0byBhIHNwYWNlLXNlcGFyYXRlZCBzZXQgb2Ygc3RyaW5ncyB0aGF0IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZWMtdGFibGUgY2xhc3MgYXR0cmlidXRlXHJcbiAgICogdGhpcyBhbGxvd3MgZmluZXIgY29udHJvbCBvdmVyIHN0eWxpbmcuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGFibGVDbGFzc2VzOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIEVtaXRzIHdoZW4gdGFibGUgc29ydCBoYXMgY2hhbmdlZCAqL1xyXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFibGVTb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTb3J0PigpO1xyXG5cclxuICAvKiogRW1pdHMgd2hlbiB0aGUgdGFibGUgcGFnZSBoYXMgY2hhbmdlZCAqL1xyXG4gIEBPdXRwdXQoJ3BhZ2VDaGFuZ2UnKSBwYWdlQ2hhbmdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPFBhZ2luZ0luZm8+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmdJbmZvPigpO1xyXG5cclxuICAvKiogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIHNlYXJjaGJveCAqL1xyXG4gIEBJbnB1dCgpIHNlYXJjaGJveFBsYWNlaG9sZGVyID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1Hcm91cCBmb3IgdGhlIHNlYXJjaGJveFxyXG4gICAqXHJcbiAgICogVGhlIHJlZmVyZW5jZWQgRm9ybUdyb3VwICoqbXVzdCoqIGNvbnRhaW4gYSBGb3JtQ29udHJvbCBjYWxsZWQgJ3NlYXJjaE1vZGVsJy5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZm9ybU1vZGVsITogRm9ybUdyb3VwO1xyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5ZWQgaW4gb3ZlcmxheSB3aGVuIG5vIGRhdGEgaXMgcmV0dXJuZWQgKHdpdGhvdXQgc2VhcmNoaW5nKS5cclxuICAgKlxyXG4gICAqIERlZmF1bHRzIHRvIFwiU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9EYXRhX1NDXCJcclxuICAgKi9cclxuICBASW5wdXQoKSBub0RhdGFNZXNzYWdlOiBzdHJpbmcgPSAnU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9EYXRhX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheWVkIGluIG92ZXJsYXkgd2hlbiBubyBkYXRhIGlzIHJldHVybmVkIChhZnRlciBzZWFyY2hpbmcpLlxyXG4gICAqIEVuc3VyZSB0cmFuc2xhdGlvbiBoYXMgYW4gaW50ZXJwb2xhdGlvbiBwbGFjZWhvbGRlciBmb3IgXCJzZWFyY2hUZXh0XCIuXHJcbiAgICpcclxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQ1wiXHJcbiAgICpcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIC8vIDcgcmVxdWlyZXMgc2luZ2xlIGN1cmx5IGJyYWNlc1xyXG4gICAqIE5vIGl0ZW1zIGZvdW5kIG1hdGNoaW5nIDxzdHJvbmc+e3tzZWFyY2hUZXh0fX08L3N0cm9uZz5cclxuICAgKi9cclxuICBASW5wdXQoKSBub1NlYXJjaFJlc3VsdHNNZXNzYWdlOiBzdHJpbmcgPSAnU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9NYXRjaGVzX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhdGVzIGhvc3RpbmcgcGFnZSBpcyByZWFkeSBmb3IgdGhlIHRhYmxlIHRvIGxvYWQgZGF0YS5cclxuICAgKlxyXG4gICAqIE5leHQgYW5kIENvbXBsZXRlIHRoaXMgb2JzZXJ2YWJsZSBhZnRlciBob3N0aW5nIHBhZ2UgaGFzIG1hZGUgYW55IHByZWxpbWluYXJ5XHJcbiAgICogQVBJIChvciBvdGhlciBhc3luY2hyb25vdXMpIGNhbGxzIHRvIGxvYWQgcHJlcmVxdWlzaXRlIGRhdGEgdXBvbiB3aGljaCB0aGUgY29kZVxyXG4gICAqIGluIHRoZSBgZ2V0SXRlbXNgIGZ1bmN0aW9uIGRlcGVuZHMuICBVc2UgYSBgUmVwbGF5U3ViamVjdGAgdG8gZW5zdXJlIGV2ZXJ5IGNvbXBvbmVudFxyXG4gICAqIHRoYXQgdXNlcyB0aGlzIG9ic2VydmFibGUgZ2V0cyB0aGUgTmV4dCBhbmQgQ29tcGxldGUgbm90aWZpY2F0aW9ucy5cclxuICAgKi9cclxuICBASW5wdXQoKSByZWFkeSE6IE9ic2VydmFibGU8dm9pZD47XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIGNhbGxlZCB0byBnZXQgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgdGFibGUuXHJcbiAgICogSWYgcGFnZWFibGUgaXMgdHJ1ZSwgdGhlIFRhYmxlU2VhcmNoUmVzdWx0cyBuZWVkIHRvIGluY2x1ZGUgdG90YWxJdGVtc0JlZm9yZVBhZ2luZywgd2hpY2ggaXMgdGhlXHJcbiAgICogY291bnQgb2YgaXRlbXMgYmVmb3JlIHlvdSd2ZSBhcHBsaWVkIGFueSBwYWdpbmF0aW9uIChpLmUuIHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgdGhhdCBjYW1lIGJhY2sgZnJvbSB0aGUgc2VhcmNoKS5cclxuICAgKlxyXG4gICAqIE1ha2Ugc3VyZSB0byBiaW5kIHRoZSBzY29wZSBpbiB0aGUgdGVtcGxhdGVcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIFtnZXRJdGVtc109XCJ5b3VyRnVuY3Rpb24uYmluZCh0aGlzKVwiXHJcbiAgICovXHJcbiAgQElucHV0KCkgZ2V0SXRlbXMhOiAoc2VhcmNoPzogc3RyaW5nLCBwYWdlQ2hhbmdlSW5mbz86IFBhZ2luZ0luZm8pID0+IE9ic2VydmFibGU8VGFibGVTZWFyY2hSZXN1bHRzPjtcclxuXHJcbiAgLyoqIE9ic2VydmFibGUgdGhhdCB3aWxsIGZvcmNlIHRoZSBnZXRJdGVtcyBmdW5jdGlvbiB0byBnZXQgY2FsbGVkIGFnYWluICovXHJcbiAgQElucHV0KCkgcmVmcmVzaD86IE9ic2VydmFibGU8U2VhcmNoYWJsZVRhYmxlUmVmcmVzaE9wdGlvbnMgfCB1bmRlZmluZWQ+O1xyXG5cclxuICAvKiogQWxsb3cgdGhlIGhvc3QgY29tcG9uZW50IHRvIHN1cHBseSBhbiBvdmVybGF5IHRvIGNvbnRyb2wgdGhlIHBlbmRpbmcgc3RhdGUgb2YgdGhlIHRhYmxlICovXHJcbiAgQElucHV0KCkgc3RhdHVzOiBPdmVybGF5ID0gbmV3IE92ZXJsYXkoJ2hhc0RhdGEnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdW5kZXJseWluZyB0YWJsZSdzIGxheW91dCB0byBmaXhlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSB0YWJsZUxheW91dEZpeGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBFbWl0cyBpdGVtcyByZXR1cm5lZCBieSB0aGUgZ2V0SXRlbXMgZnVuY3Rpb24sIGFsb25nIHdpdGggdG90YWwgY291bnQgKi9cclxuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUYWJsZVNlYXJjaFJlc3VsdHM+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVNlYXJjaFJlc3VsdHM+KCk7XHJcblxyXG4gIC8qKiBPcHRpb25hbCB0YWIgaW5kZXggZm9yIHRoZSBzZWFyY2hib3ggKi9cclxuICBASW5wdXQoKSBzZWFyY2hib3hUYWJJbmRleD86IG51bWJlcjtcclxuXHJcbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIHNob3cgaW4gdGhlIHRhYmxlIChkZWZhdWx0OiAxMDApICovXHJcbiAgQElucHV0KCkgbWF4SXRlbUNvdW50OiBudW1iZXIgPSAxMDA7XHJcblxyXG4gIC8qKiBTZXQgdG8gdHJ1ZSB0byBoaWRlIHNlYXJjaCBib3ggKGRvZXMgbm90IGhpZGUgdGhlIG90aGVyIHNlYXJjaGFibGUgdGFibGUgY29udHJvbHMgKi9cclxuICBASW5wdXQoKSBoaWRlU2VhcmNoQ29udHJvbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogU2V0IHRvIHRydWUgdG8gaGlkZSB0aGUgZW50aXJlIGhlYWRlciAqL1xyXG4gIEBJbnB1dCgpIGhpZGVIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFR5cGUgb2Ygb2JqZWN0IGluIHRoZSB0YWJsZS4gRGlzcGxheWVkIGluIGZvb3RlciAoZGVmYXVsdDogJ3Jlc3VsdHMnKSovXHJcbiAgQElucHV0KCkgb2JqZWN0VHlwZTogc3RyaW5nID0gJ3Jlc3VsdHMnO1xyXG5cclxuICAvKiogU2V0IHRvIHRydWUgdG8gaGlkZSB0aGUgdGFibGUgZm9vdGVyICovXHJcbiAgQElucHV0KCkgaGlkZUZvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgcGFnaW5nLiBJZiBwYWdpbmcgaXMgZW5hYmxlZCwgcGFnZVNpemUgbXVzdCBiZSBwcm92aWRlZC5cclxuICAgKiBnZXRJdGVtcyB3aWxsIGJlIHBhc3NlZCBib3RoIGEgc2VhcmNoIGFuZCBhIFBhZ2luZ0luZm8gb2JqZWN0IHdoZW4gY2FsbGVkLiBJdCBtdXN0IGluY2x1ZGUgdG90YWxJdGVtc0JlZm9yZVBhZ2luZyBpbiB0aGUgVGFibGVTZWFyY2hSZXN1bHRzIG91dHB1dC5cclxuICAgKiBIZXJlIGlzIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uOiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGdldEl0ZW1zKHNlYXJjaD86IHN0cmluZywgcGFnZUNoYW5nZUluZm8/OiBQYWdpbmdJbmZvKTogT2JzZXJ2YWJsZTxUYWJsZVNlYXJjaFJlc3VsdHM+IHtcclxuICAgICAgbGV0IHJlc3VsdHM6IFNpbXBsZUl0ZW1bXSA9IFsuLi50aGlzLnBhZ2luYXRlZFRhYmxlSXRlbXNdO1xyXG4gICAgICAvL2FwcGx5IHNlYXJjaFxyXG4gICAgICBpZihzZWFyY2gpIHtcclxuICAgICAgICByZXN1bHRzID0gdGhpcy5wYWdpbmF0ZWRUYWJsZUl0ZW1zLmZpbHRlcihpID0+IGkuYS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgIH1cclxuICAgICAgLy9nZXQgY291bnQgYmVmb3JlIGFwcGx5aW5nIHBhZ2luZ1xyXG4gICAgICBsZXQgY291bnRCZWZvcmVQYWdpbmcgPSByZXN1bHRzLmxlbmd0aDtcclxuICAgICAgLy9hcHBseSBwYWdpbmdcclxuICAgICAgaWYocGFnZUNoYW5nZUluZm8pIHtcclxuICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5zbGljZShwYWdlQ2hhbmdlSW5mbyEuc2tpcCwgcGFnZUNoYW5nZUluZm8hLnNraXAgKyBwYWdlQ2hhbmdlSW5mbyEucGFnZVNpemUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBvZih7IGl0ZW1zOiByZXN1bHRzLCB0b3RhbEl0ZW1zOiByZXN1bHRzLmxlbmd0aCwgdG90YWxJdGVtc0JlZm9yZVBhZ2luZzogY291bnRCZWZvcmVQYWdpbmcgfSk7XHJcbiAgICB9XHJcbiAgKi9cclxuICBASW5wdXQoKSBwYWdlYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggc2l6ZSBvZiBhIHBhZ2UuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnZVNpemU/OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gKiBNYXhpbXVtIG51bWJlciBvZiBwYWdlIHRhYnMgdG8gc2hvd1xyXG4gKi9cclxuICBASW5wdXQoKSBtYXhUYWJzPzogbnVtYmVyID0gMTA7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIHRoZSBzZWFyY2hib3ggcmVhZG9ubHkgaWYgdHJ1ZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBzZWFyY2hib3hSZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogUGFzc2VkIHRvIHRoZSBpbm5lciBUYWJsZUNvbXBvbmVudCB0byBlbmFibGUgcm93IHNlbGVjdGlvbiAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvbkNvbnRleHQ/OiBUYWJsZVNlbGVjdGFibGVSb3dDb250ZXh0O1xyXG5cclxuICAvKiogUGFzc2VkIHRvIHRoZSBpbm5lciBUYWJsZUNvbXBvbmVudCB0byBkaXNwbGF5IGEgdG9vbGJhciB3aGVuIDEgb3IgbW9yZSByb3dzIGFyZSBzZWxlY3RlZC4gUmVxdWlyZXMgYFtzZWxlY3Rpb25Db250ZXh0XWAgdG8gYmUgZGVmaW5lZC4gKi9cclxuICBASW5wdXQoKSBzZWxlY3Rpb25Ub29sYmFyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIFxyXG4gIEBDb250ZW50Q2hpbGRyZW4oUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KSByZXNpemFibGVDb2x1bW5zITogUXVlcnlMaXN0PFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudD47XHJcblxyXG4gIC8qKiBPcHRpb25hbCB0ZXh0IHRvIGFkZCB0byB0aGUgcmVzdWx0cyBjb3VudCBpbiB0aGUgdGFibGUgZm9vdGVyLiBUaGlzIHRleHQgd2lsbCBiZSBhZGRlZCBhZnRlciB0aGUgY291bnQgYW5kIG9iamVjdFR5cGUuICovXHJcbiAgQElucHV0KCkgYWRkaXRpb25hbENvdW50VGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBFbmFibGVzIHRhYmxlIHJvdyBzZWxlY3Rpb24gYW5kIHJvdyBoaWdobGlnaHRpbmcgc3R5bGVzIHdoZW4gdHJ1ZSAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqRGVmYXVsdHMgdG8gdW5kZWZpbmVkLiBTcGVjaWZ5IHlvdXIgb3duIHRlbXBsYXRlIGlmIGFuIGVjLXRhYmxlIHdyYXBwZWQgYXJvdW5kIHlvdXIgdHJhbnNjbHVkZWQgY29udGVudCB3b24ndCBtZWV0IHlvdXIgbmVlZHNcclxuICAgKi9cclxuICBASW5wdXQoKSBjdXN0b21Db250ZW50VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogV2hlbiB0cnVlLCByZW1vdmVzIHRoZSBjYXJkIHN0eWxlcyBmcm9tIHRoZSB0YWJsZSB3cmFwcGVyICovXHJcbiAgQElucHV0KCkgcmVtb3ZlQ2FyZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogQ2xhc3NlcyB0byBhZGQgdG8gdGhlIG92ZXJsYXkvY2FyZCBlbGVtZW50ICovXHJcbiAgQElucHV0KCkgb3ZlcmxheUNsYXNzZXM6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogV2hlbiB0cnVlIHRoZSBvdmVybGF5IGFuZCB0YWJsZSB3aWxsIG5vdCBoYXZlIGZsZXgtc2hyaW5rLW1heCBidXQgaW5zdGVhZCBmbGV4LWdyb3cgKi9cclxuICBASW5wdXQoKSBmaWxsUGFyZW50SGVpZ2h0PzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBQYWdpbmdJbmZvIGZvciB0aGUgY3VycmVudCBwYWdlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBwYWdlSW5mbz86IFBhZ2luZ0luZm87XHJcblxyXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNlYXJjaE1vZGVsICovXHJcbiAgcHVibGljIGdldCBzZWFyY2hNb2RlbCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtTW9kZWwuY29udHJvbHMuc2VhcmNoTW9kZWwgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZXh0IGRpc3BsYXllZCBpbiB0aGUgZm9vdGVyLlxyXG4gICAqIFNvbWV0aW1lcyBgbm9EYXRhTWVzc2FnZWAsIHNvbWV0aW1lcyBgbm9TZWFyY2hSZXN1bHRzTWVzc2FnZWBcclxuICAgKi9cclxuICBwdWJsaWMgdGFibGVDYXB0aW9uOiBzdHJpbmcgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm5vRGF0YU1lc3NhZ2UgfHwgJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vRGF0YV9TQycpO1xyXG5cclxuICAvKiogY291bnQgb2YgcmVzdWx0cyBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlICovXHJcbiAgcHVibGljIHJlc3VsdHNDb3VudDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBJdGVtcyByZXR1cm5lZCBieSB0aGUgZ2V0SXRlbXMgZnVuY3Rpb24sIGFsb25nIHdpdGggdG90YWwgY291bnQgKi9cclxuICBwdWJsaWMgc2VhcmNoUmVzdWx0czogVGFibGVTZWFyY2hSZXN1bHRzID0geyBpdGVtczogW10sIHRvdGFsSXRlbXM6IDAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgcGFzc2VkIGFuIGlucHV0IGZvciByZWZyZXNoLCB0cmlnZ2VycyByZWxvYWRpbmcgaXRlbXMuXHJcbiAgICogT3RoZXJ3aXNlLCBjb21wbGV0ZXMgaW1tZWRpYXRlbHkgKHdpbGwgbmV2ZXIgdHJpZ2dlciByZWxvYWQpLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVmcmVzaFRyaWdnZXI6IE9ic2VydmFibGU8U2VhcmNoYWJsZVRhYmxlRm9ybU1vZGVsIHwgdW5kZWZpbmVkPiA9IEVNUFRZO1xyXG4gIHByaXZhdGUgZGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBwYWdlQ2hhbmdlZDogU3ViamVjdDxTZWFyY2hhYmxlVGFibGVGb3JtTW9kZWw+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgLyoqIFRyaWdnZXJzIHRoZSBpbml0aWFsIGxvYWQgb2YgdGhlIHRhYmxlICovXHJcbiAgcHJpdmF0ZSBpbml0VGFibGUgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlcnJvclNlcnZpY2U6IEVycm9yU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm93Q291bnRQaXBlOiBSb3dDb3VudFBpcGVcclxuICApIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5wYWdlU2l6ZSAmJiAhY2hhbmdlcy5wYWdlU2l6ZS5maXJzdENoYW5nZSAmJiB0aGlzLnBhZ2VhYmxlKSB7XHJcbiAgICAgIC8vIElmIHRoZSBwYWdlU2l6ZSBjaGFuZ2VzLCByZXNldCB0byB0aGUgZmlyc3QgcGFnZSBhbmQgcmVmcmVzaC5cclxuICAgICAgdGhpcy5wYWdlSW5mbyA9IFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudC5nZXRQYWdpbmdJbmZvKDEsIHRoaXMucGFnZVNpemUhKTtcclxuICAgICAgdGhpcy5vblBhZ2VDaGFuZ2UodGhpcy5wYWdlSW5mbyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygncGVuZGluZycsICdMb2FkaW5nJyk7XHJcbiAgICB0aGlzLnNldFVwUmVmcmVzaFRyaWdnZXIoKTtcclxuXHJcbiAgICAvLyBXYXRjaCBmb3Igc2VhcmNoYm94L290aGVyIGNvbnRyb2wgY2hhbmdlcyBvciByZWZyZXNoIHJlcXVlc3RzXHJcbiAgICBjb25zdCBzZWFyY2hPclJlZnJlc2ggPSBtZXJnZShcclxuICAgICAgdGhpcy5mb3JtTW9kZWwudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgc2tpcFVudGlsKHRoaXMucmVhZHkpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApXHJcbiAgICAgICksXHJcbiAgICAgIHRoaXMucmVmcmVzaFRyaWdnZXIsXHJcbiAgICAgIHRoaXMuaW5pdFRhYmxlXHJcbiAgICApLnBpcGUodGFwKCgpPT4ge1xyXG4gICAgICAvL2EgY2hhbmdlIHRvIGFueSBmb3JtIGNvbnRyb2wgb3IgYSByZWZyZXNoIHNob3VsZCByZXNldCB0aGUgcGFnZUluZm8gdG8gdGhlIGZpcnN0IHBhZ2UgaWYgdGhlIHRhYmxlIGlzIHBhZ2VhYmxlLlxyXG4gICAgICAvLyhpZiB3ZSBkaWRudCByZXNldCB0aGUgcGFnZUluZm8sIHdlJ2QgaGF2ZSB0byBjYWxsIGdldEl0ZW1zIHdpdGggdGhlIHByZXZpb3VzIHBhZ2VJbmZvLCB3aGljaCBtYXkgbm90IGJlIHZhbGlkIGZvciB0aGUgbmV3IHJlc3VsdHMpXHJcbiAgICAgIGlmKHRoaXMucGFnZWFibGUpIHtcclxuICAgICAgICB0aGlzLnBhZ2VJbmZvID0gVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50LmdldFBhZ2luZ0luZm8oMSwgdGhpcy5wYWdlU2l6ZSEpO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3QgdXBkYXRlUmVzdWx0cyA9IG1lcmdlKFxyXG4gICAgICBzZWFyY2hPclJlZnJlc2gsXHJcbiAgICAgIHRoaXMucGFnZUNoYW5nZWQucGlwZShcclxuICAgICAgICAvLyBQcmV2ZW50IGEgY2FsbCB0byBnZXRJdGVtcyB3aGVuIHRoZSBwYWdlU2l6ZSBpcyBzZXQgZHVyaW5nIHBhZ2UgaW5pdCBhbmQgYmVmb3JlIHJlYWR5IGlzIGNvbXBsZXRlZFxyXG4gICAgICAgIHNraXBVbnRpbCh0aGlzLnJlYWR5KVxyXG4gICAgICApXHJcbiAgICApXHJcblxyXG4gICAgLy8gQ2FsbCBnZXRJdGVtcyBhbmQgd2F0Y2ggZm9yIGVycm9yc1xyXG4gICAgY29uc3QgZ2V0RGF0YSA9IHVwZGF0ZVJlc3VsdHMucGlwZShcclxuICAgICAgLy8gUGx1Y2sgdGhlIHNlYXJjaE1vZGVsIHZhbHVlIG91dCBvZiB0aGUgZm9ybU1vZGVsXHJcbiAgICAgIHBsdWNrKCdzZWFyY2hNb2RlbCcpLFxyXG5cclxuICAgICAgLy8gRW5zdXJlIHNlYXJjaCBzdHJpbmcgaXMgZGVmaW5lZFxyXG4gICAgICAvLyBUcmltIGFuZCBsb3dlcmNhc2UgaXQgdG8gYWlkIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoaW5nXHJcbiAgICAgIG1hcCgoc2VhcmNoU3RyaW5nPzogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgbGV0IHNlYXJjaCA9IHNlYXJjaFN0cmluZyB8fCAnJztcclxuICAgICAgICByZXR1cm4gc2VhcmNoLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9KSxcclxuXHJcbiAgICAgIC8vIFNob3cgc3RhdHVzIG92ZXJsYXlcclxuICAgICAgdGFwKCgpID0+IHRoaXMuc3RhdHVzLnNldFN0YXR1cygncGVuZGluZycsICdMb2FkaW5nJykpLFxyXG5cclxuICAgICAgLy8gQ2FsbCBwYXNzZWQgZnVuY3Rpb25cclxuICAgICAgc3dpdGNoTWFwKChzZWFyY2hTdHJpbmc6IHN0cmluZykgPT4gXHJcbiAgICAgICAgLy9pZiB0aGUgdGFibGUgaXMgcGFnZWFibGUsIHBhZ2VJbmZvIHdpbGwgYmUgZGVmaW5lZC5cclxuICAgICAgICB0aGlzLmdldEl0ZW1zKHNlYXJjaFN0cmluZywgdGhpcy5wYWdlSW5mbylcclxuICAgICAgKSxcclxuXHJcbiAgICAgIC8vIElmIHBhc3NlZCBmdW5jdGlvbiBmYWlscywgc2hvdyBlcnJvciBzdGF0dXNcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcclxuICAgICAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ2Vycm9yJywgdGhpcy5lcnJvclNlcnZpY2UucGFyc2VBcGlFcnJvcihlcnIpKTtcclxuICAgICAgICAvLyByZXR1cm4gdGhlIGNhdWdodCBvYnNlcnZhYmxlIHNvIHRoZSBzdWJzY3JpcHRpb24gZG9lc24ndCBjb21wbGV0ZVxyXG4gICAgICAgIHJldHVybiBjYXVnaHQ7XHJcbiAgICAgIH0pLFxyXG5cclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSxcclxuICAgICk7XHJcblxyXG4gICAgLy8gSGFuZGxlIHJldHVybmVkIGRhdGEgYW5kIG5vdGlmeSBwYXJlbnRcclxuICAgIGdldERhdGEuc3Vic2NyaWJlKChyZXN1bHRzOiBUYWJsZVNlYXJjaFJlc3VsdHMpID0+IHtcclxuICAgICAgLy8gTGltaXRpbmcgbnVtYmVyIG9mIHJlc3VsdHMgdG8gc2hvdyBpZiBub3QgcGFnZWFibGUgKGlmIHBhZ2VhYmxlIHRoZSBtYXggbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSB0YWJsZVxyXG4gICAgICAvLyBjYW4gYmUgbW9kaWZpZWQgYnkgaW5jcmVhc2luZy9kZWNyZWFzaW5nIHRoZSBwYWdlU2l6ZS4pXHJcbiAgICAgIGlmKCF0aGlzLnBhZ2VhYmxlKSB7XHJcbiAgICAgICAgcmVzdWx0cy5pdGVtcyA9IHJlc3VsdHMuaXRlbXMuc2xpY2UoMCwgdGhpcy5tYXhJdGVtQ291bnQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBOZWVkIHRvIGtub3cgdGhpcyAoYWxvbmcgd2l0aCBpZiB0aGVyZSdzIGEgdmFsdWUgaW4gdGhlIGZvcm1Nb2RlbCkgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gc2hvdyBpbiB0aGUgZm9vdGVyXHJcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IHJlc3VsdHM7XHJcbiAgICBcclxuICAgICAgdGhpcy50YWJsZUNhcHRpb24gPSB0aGlzLmdldENhcHRpb24ocmVzdWx0cyk7XHJcbiAgICAgIHRoaXMucmVzdWx0c0NvdW50ID0gdGhpcy5wYWdlYWJsZSA/IHRoaXMucm93Q291bnRQaXBlLnRyYW5zZm9ybShyZXN1bHRzLCB0aGlzLm9iamVjdFR5cGUsIHVuZGVmaW5lZCwgdGhpcy5wYWdlSW5mbyk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm93Q291bnRQaXBlLnRyYW5zZm9ybShyZXN1bHRzLCB0aGlzLm9iamVjdFR5cGUsIHRoaXMubWF4SXRlbUNvdW50KTtcclxuXHJcbiAgICAgIC8vIERpc2FibGUgc2VhcmNoYm94IHdoZW4gaW4gbm8tZGF0YSBzdGF0ZVxyXG4gICAgICBpZiAoIXJlc3VsdHMuaXRlbXMubGVuZ3RoICYmICF0aGlzLnNlYXJjaE1vZGVsLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNb2RlbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaE1vZGVsLmRpc2FibGVkKSB7XHJcbiAgICAgICAgLy8gcmUtZW5hYmxlIGlmIGl0IHdhcyBkaXNhYmxlZCwgYnV0IG5vdyBoYXMgaXRlbXNcclxuICAgICAgICB0aGlzLnNlYXJjaE1vZGVsLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygnaGFzRGF0YScpO1xyXG4gICAgICAvLyBTZW5kIHRoZSByZXN1bHRzIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XHJcbiAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdChyZXN1bHRzKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFdoZW4gJ3JlYWR5JyBpcyBjb21wbGV0ZWQgYnkgdGhlIGhvc3QsIGluaXRpYWxpemUgdGhlIHRhYmxlIHdpdGggdGhlIGN1cnJlbnQgZm9ybSBtb2RlbCB2YWx1ZXNcclxuICAgIHRoaXMucmVhZHkuc3Vic2NyaWJlKHtcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmluaXRUYWJsZS5uZXh0KHRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmluaXRUYWJsZS5jb21wbGV0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKiBQYXNzIGFsb25nIHNvcnQgdG8gcGFyZW50IGNvbXBvbmVudCAqL1xyXG4gIG9uU29ydENoYW5nZShzb3J0OiBUYWJsZVNvcnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBhIHBhZ2UgY2hhbmdlcywgc3RvcmUgdGhlIG5ldyBwYWdpbmdJbmZvIGFuZCBlbWl0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmb3JtIHRvIHRyaWdnZXIgZ2V0RGF0YS5cclxuICAgKi9cclxuICBvblBhZ2VDaGFuZ2UocGFnaW5nSW5mbzogUGFnaW5nSW5mbykge1xyXG4gICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdwZW5kaW5nJywgJ0xvYWRpbmcnKTtcclxuICAgIHRoaXMucGFnZUluZm8gPSBwYWdpbmdJbmZvO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlRW1pdHRlci5lbWl0KHBhZ2luZ0luZm8pO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5uZXh0KHRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBXaXJlIHVwIGEgaGFuZGxlciB0byB0aGUgYHJlZnJlc2hgIG9ic2VydmFibGUgc28gdGhhdCB3aGVuXHJcbiAgICogdGhlIGhvc3QgcGFnZSBjb250ZXh0IGNoYW5nZXMgaXQgY2FuIGZvcmNlIHRoZSB0YWJsZSB0byB1cGRhdGUgYXMgd2VsbC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBgcmVmcmVzaGAgb2JzZXJ2YWJsZSBwYXNzZXMgb3B0aW9ucyBhbmQgdGhlIGBjbGVhclNlYXJjaGAgcHJvcGVydHlcclxuICAgKiBpcyBzZXQgdG8gdHJ1ZSwgcmVzZXQgdGhlIHNlYXJjaE1vZGVsIGFuZCBwYXNzIGFuIGVtcHR5IHN0cmluZy5cclxuICAgKlxyXG4gICAqIElmIGByZWZyZXNoYCBvYnNlcnZhYmxlIGRvZXMgbm90IHBhc3Mgb3B0aW9ucyBvciB0aGUgYGNsZWFyU2VhcmNoYCBwcm9wZXJ0eVxyXG4gICAqIGlzIHNldCB0byBmYWxzZSwgcGFzcyBhbG9uZyB0aGUgY3VycmVudCBzZWFyY2hNb2RlbCBWYWx1ZS5cclxuICAgKi9cclxuICBwcml2YXRlIHNldFVwUmVmcmVzaFRyaWdnZXIoKSB7XHJcbiAgICBpZiAodGhpcy5yZWZyZXNoKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFRyaWdnZXIgPSB0aGlzLnJlZnJlc2gucGlwZShcclxuICAgICAgICBtYXAob3B0cyA9PiB7XHJcbiAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmNsZWFyU2VhcmNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTW9kZWwucmVzZXQoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5mb3JtTW9kZWwsIHNlYXJjaE1vZGVsOiAnJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybU1vZGVsLnZhbHVlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBHZXQgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBmb290ZXIuICovXHJcbiAgcHJpdmF0ZSBnZXRDYXB0aW9uKHJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cyk6IHN0cmluZyB7XHJcbiAgICBpZiAocmVzdWx0cy5pdGVtcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlYXJjaE1vZGVsLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm5vU2VhcmNoUmVzdWx0c01lc3NhZ2UgfHwgJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQycsIHsgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hNb2RlbC52YWx1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5ub0RhdGFNZXNzYWdlIHx8ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0MnKTtcclxuICB9XHJcblxyXG59Il19
|