@colijnit/corecomponents_v12 12.0.46 → 12.0.49
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/colijnit-corecomponents_v12.umd.js +421 -13
- package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
- package/colijnit-corecomponents_v12.d.ts +2 -0
- package/colijnit-corecomponents_v12.metadata.json +1 -1
- package/esm2015/colijnit-corecomponents_v12.js +3 -1
- package/esm2015/lib/components/base/base-input.component.js +2 -2
- package/esm2015/lib/components/drop-down-list/drop-down-list.component.js +8 -1
- package/esm2015/lib/components/input-date-range-picker/input-date-range-picker.component.js +2 -1
- package/esm2015/lib/components/input-search/input-search.component.js +15 -7
- package/esm2015/lib/components/input-text/input-text.component.js +2 -2
- package/esm2015/lib/components/pagination/paginate.pipe.js +106 -0
- package/esm2015/lib/components/pagination/pagination-instance.js +2 -0
- package/esm2015/lib/components/pagination/pagination.component.js +194 -0
- package/esm2015/lib/components/pagination/pagination.module.js +26 -0
- package/esm2015/lib/components/pagination/pagination.service.js +88 -0
- package/esm2015/lib/components/simple-grid/simple-grid-cell.component.js +1 -4
- package/esm2015/lib/core/interface/filter-item-viewmodel.js +1 -1
- package/esm2015/public-api.js +3 -1
- package/fesm2015/colijnit-corecomponents_v12.js +426 -13
- package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
- package/lib/components/drop-down-list/drop-down-list.component.d.ts +3 -0
- package/lib/components/input-search/input-search.component.d.ts +2 -2
- package/lib/components/input-text/style/_layout.scss +5 -2
- package/lib/components/pagination/paginate.pipe.d.ts +18 -0
- package/lib/components/pagination/pagination-instance.d.ts +14 -0
- package/lib/components/pagination/pagination.component.d.ts +46 -0
- package/lib/components/pagination/pagination.module.d.ts +2 -0
- package/lib/components/pagination/pagination.service.d.ts +24 -0
- package/lib/components/pagination/style/_layout.scss +87 -0
- package/lib/components/pagination/style/_material-definition.scss +6 -0
- package/lib/components/pagination/style/_theme.scss +5 -0
- package/lib/components/pagination/style/material.scss +5 -0
- package/lib/components/simple-grid/simple-grid-cell.component.d.ts +2 -3
- package/lib/core/interface/filter-item-viewmodel.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -10,6 +10,8 @@ export { BaseGridComponent as ɵq } from './lib/components/grid/base/base-grid.c
|
|
|
10
10
|
export { BaseInlineEditGridComponent as ɵo } from './lib/components/grid/base/base-inline-edit-grid.component';
|
|
11
11
|
export { BaseSelectionGridComponent as ɵn } from './lib/components/grid/base/base-selection-grid.component';
|
|
12
12
|
export { BaseToolbarGridComponent as ɵp } from './lib/components/grid/base/base-toolbar-grid.component';
|
|
13
|
+
export { PaginatePipe as ɵbg } from './lib/components/pagination/paginate.pipe';
|
|
14
|
+
export { PaginationService as ɵbf } from './lib/components/pagination/pagination.service';
|
|
13
15
|
export { PopupShowerService as ɵx } from './lib/components/popup/service/popup-shower.service';
|
|
14
16
|
export { BaseSimpleGridComponent as ɵy } from './lib/components/simple-grid/base-simple-grid.component';
|
|
15
17
|
export { SimpleGridCellComponent as ɵba } from './lib/components/simple-grid/simple-grid-cell.component';
|
|
@@ -32,4 +34,4 @@ export { AppendPipe as ɵs } from './lib/pipes/append.pipe';
|
|
|
32
34
|
export { AppendPipeModule as ɵr } from './lib/pipes/append.pipe.module';
|
|
33
35
|
export { PrependPipe as ɵbc } from './lib/pipes/prepend.pipe';
|
|
34
36
|
export { PrependPipeModule as ɵbb } from './lib/pipes/prepend.pipe.module';
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29saWpuaXQtY29yZWNvbXBvbmVudHNfdjEyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2NvbGlqbml0LWNvcmVjb21wb25lbnRzX3YxMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMzRyxPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDckcsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQywyQkFBMkIsSUFBSSxFQUFFLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUM3RyxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDMUcsT0FBTyxFQUFDLHdCQUF3QixJQUFJLEVBQUUsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxZQUFZLElBQUksR0FBRyxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDOUUsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEdBQUcsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUMsdUJBQXVCLElBQUksRUFBRSxFQUFDLE1BQU0seURBQXlELENBQUM7QUFDdEcsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEdBQUcsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUM1RyxPQUFPLEVBQUMscUJBQXFCLElBQUksRUFBRSxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDdEcsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUMsdUNBQXVDLElBQUksRUFBRSxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDekgsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyx5QkFBeUIsSUFBSSxHQUFHLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUM1RyxPQUFPLEVBQUMscUJBQXFCLElBQUksR0FBRyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDbkcsT0FBTyxFQUFDLDBCQUEwQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQ2xILE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUMsd0JBQXdCLElBQUksRUFBRSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDaEgsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMseUJBQXlCLElBQUksRUFBRSxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDbEcsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RixPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDekYsT0FBTyxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsV0FBVyxJQUFJLEdBQUcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxHQUFHLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtCYXNlSW5wdXRDb21wb25lbnQgYXMgybVtfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0IHtCYXNlTW9kdWxlIGFzIMm1an0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlL2Jhc2UubW9kdWxlJztcbmV4cG9ydCB7Q29tbWl0QnV0dG9uc0NvbXBvbmVudCBhcyDJtXd9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmFzZS9jb21taXQtYnV0dG9ucy9jb21taXQtYnV0dG9ucy5jb21wb25lbnQnO1xuZXhwb3J0IHtDb21taXRCdXR0b25zTW9kdWxlIGFzIMm1dn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlL2NvbW1pdC1idXR0b25zL2NvbW1pdC1idXR0b25zLm1vZHVsZSc7XG5leHBvcnQge0Jhc2VHcmlkQ29tcG9uZW50IGFzIMm1cX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9ncmlkL2Jhc2UvYmFzZS1ncmlkLmNvbXBvbmVudCc7XG5leHBvcnQge0Jhc2VJbmxpbmVFZGl0R3JpZENvbXBvbmVudCBhcyDJtW99IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZ3JpZC9iYXNlL2Jhc2UtaW5saW5lLWVkaXQtZ3JpZC5jb21wb25lbnQnO1xuZXhwb3J0IHtCYXNlU2VsZWN0aW9uR3JpZENvbXBvbmVudCBhcyDJtW59IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZ3JpZC9iYXNlL2Jhc2Utc2VsZWN0aW9uLWdyaWQuY29tcG9uZW50JztcbmV4cG9ydCB7QmFzZVRvb2xiYXJHcmlkQ29tcG9uZW50IGFzIMm1cH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9ncmlkL2Jhc2UvYmFzZS10b29sYmFyLWdyaWQuY29tcG9uZW50JztcbmV4cG9ydCB7UGFnaW5hdGVQaXBlIGFzIMm1Ymd9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0ZS5waXBlJztcbmV4cG9ydCB7UGFnaW5hdGlvblNlcnZpY2UgYXMgybViZn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uc2VydmljZSc7XG5leHBvcnQge1BvcHVwU2hvd2VyU2VydmljZSBhcyDJtXh9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcG9wdXAvc2VydmljZS9wb3B1cC1zaG93ZXIuc2VydmljZSc7XG5leHBvcnQge0Jhc2VTaW1wbGVHcmlkQ29tcG9uZW50IGFzIMm1eX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zaW1wbGUtZ3JpZC9iYXNlLXNpbXBsZS1ncmlkLmNvbXBvbmVudCc7XG5leHBvcnQge1NpbXBsZUdyaWRDZWxsQ29tcG9uZW50IGFzIMm1YmF9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2ltcGxlLWdyaWQvc2ltcGxlLWdyaWQtY2VsbC5jb21wb25lbnQnO1xuZXhwb3J0IHtWYWxpZGF0aW9uRXJyb3JDb21wb25lbnQgYXMgybV1fSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZhbGlkYXRpb24tZXJyb3IvdmFsaWRhdGlvbi1lcnJvci5jb21wb25lbnQnO1xuZXhwb3J0IHtWYWxpZGF0aW9uRXJyb3JNb2R1bGUgYXMgybV0fSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZhbGlkYXRpb24tZXJyb3IvdmFsaWRhdGlvbi1lcnJvci5tb2R1bGUnO1xuZXhwb3J0IHtJbnB1dEJvb2xlYW4gYXMgybVpfSBmcm9tICcuL2xpYi9jb3JlL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvcic7XG5leHBvcnQge0Zvcm1JbnB1dFVzZXJNb2RlbENoYW5nZUxpc3RlbmVyU2VydmljZSBhcyDJtWt9IGZyb20gJy4vbGliL2NvcmUvc2VydmljZS9mb3JtLWlucHV0LXVzZXItY2hhbmdlLWxpc3RlbmVyLnNlcnZpY2UnO1xuZXhwb3J0IHtOZ1pvbmVXcmFwcGVyU2VydmljZSBhcyDJtWx9IGZyb20gJy4vbGliL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZSc7XG5leHBvcnQge0NsaWNrT3V0c2lkZU1hc3RlclNlcnZpY2UgYXMgybViZX0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jbGlja291dHNpZGUvY2xpY2stb3V0c2lkZS1tYXN0ZXIuc2VydmljZSc7XG5leHBvcnQge0NsaWNrT3V0c2lkZURpcmVjdGl2ZSBhcyDJtWJkfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2NsaWNrb3V0c2lkZS9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZSc7XG5leHBvcnQge09ic2VydmVWaXNpYmlsaXR5RGlyZWN0aXZlIGFzIMm1en0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9vYnNlcnZlLXZpc2liaWxpdHkvb2JzZXJ2ZS12aXNpYmlsaXR5LmRpcmVjdGl2ZSc7XG5leHBvcnQge0NvUmlwcGxlRGlyZWN0aXZlIGFzIMm1YyxNRF9SSVBQTEVfR0xPQkFMX09QVElPTlMgYXMgybVifSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUuZGlyZWN0aXZlJztcbmV4cG9ydCB7UmlwcGxlTW9kdWxlIGFzIMm1YX0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLm1vZHVsZSc7XG5leHBvcnQge0NvU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UgYXMgybVlfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS9zY3JvbGwtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmV4cG9ydCB7Q29TY3JvbGxhYmxlRGlyZWN0aXZlIGFzIMm1Zn0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yaXBwbGUvc2Nyb2xsYWJsZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHtDb1ZpZXdwb3J0UnVsZXJTZXJ2aWNlIGFzIMm1ZH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yaXBwbGUvdmlld3BvcnQtcnVsZXIuc2VydmljZSc7XG5leHBvcnQge1N0b3BDbGlja0RpcmVjdGl2ZSBhcyDJtWh9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvc3RvcGNsaWNrL3N0b3AtY2xpY2suZGlyZWN0aXZlJztcbmV4cG9ydCB7U3RvcENsaWNrTW9kdWxlIGFzIMm1Z30gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9zdG9wY2xpY2svc3RvcC1jbGljay5tb2R1bGUnO1xuZXhwb3J0IHtBcHBlbmRQaXBlIGFzIMm1c30gZnJvbSAnLi9saWIvcGlwZXMvYXBwZW5kLnBpcGUnO1xuZXhwb3J0IHtBcHBlbmRQaXBlTW9kdWxlIGFzIMm1cn0gZnJvbSAnLi9saWIvcGlwZXMvYXBwZW5kLnBpcGUubW9kdWxlJztcbmV4cG9ydCB7UHJlcGVuZFBpcGUgYXMgybViY30gZnJvbSAnLi9saWIvcGlwZXMvcHJlcGVuZC5waXBlJztcbmV4cG9ydCB7UHJlcGVuZFBpcGVNb2R1bGUgYXMgybViYn0gZnJvbSAnLi9saWIvcGlwZXMvcHJlcGVuZC5waXBlLm1vZHVsZSc7Il19
|
|
@@ -603,7 +603,7 @@ export class BaseInputComponent {
|
|
|
603
603
|
break;
|
|
604
604
|
}
|
|
605
605
|
else if (node.children.length > 0) {
|
|
606
|
-
this._findInputNode(node.children);
|
|
606
|
+
return this._findInputNode(node.children);
|
|
607
607
|
}
|
|
608
608
|
}
|
|
609
609
|
}
|
|
@@ -768,4 +768,4 @@ __decorate([
|
|
|
768
768
|
__decorate([
|
|
769
769
|
InputBoolean()
|
|
770
770
|
], BaseInputComponent.prototype, "noFormGroupControl", void 0);
|
|
771
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUVqQix3QkFBd0IsRUFFeEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdDLE9BQU8sRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBRW5GLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2pHLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNuSCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFHaEYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7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SzVCLFdBQVcsU0FBQywwQkFBMEI7b0JBS3RDLFdBQVcsU0FBQyxhQUFhO2lDQUt6QixXQUFXLFNBQUMscUJBQXFCO3NCQUtqQyxZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO3dCQVVoQyxZQUFZLFNBQUMsU0FBUzttQ0FPdEIsWUFBWSxTQUFDLGlCQUFpQjtpQ0FLOUIsWUFBWSxTQUFDLGVBQWU7NEJBSzVCLFlBQVksU0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBaFRuQztJQURVLFlBQVksRUFBRTt3REFDYTtBQUdyQztJQURVLFlBQVksRUFBRTtxREFDRTtBQUcxQjtJQURVLFlBQVksRUFBRTt3REFDSztBQStFN0I7SUFEVSxZQUFZLEVBQUU7eURBQ2M7QUE2SHRDO0lBRFUsWUFBWSxFQUFFO3VEQUNZO0FBR3BDO0lBRFUsWUFBWSxFQUFFOzZEQUNrQjtBQUcxQztJQURVLFlBQVksRUFBRTtxREFDVTtBQUdsQztJQURVLFlBQVksRUFBRTtxREFDVTtBQUdsQztJQURVLFlBQVksRUFBRTtrRUFDdUI7QUFHL0M7SUFEVSxZQUFZLEVBQUU7OERBQ21CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudEZhY3RvcnksXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbXBvbmVudFJlZiwgQ29udGVudENoaWxkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QXN5bmNWYWxpZGF0b3JGbiwgRm9ybUNvbnRyb2wsIE5nTW9kZWwsIFZhbGlkYXRvckZufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtDb25maWd1cmF0aW9uQWRhcHRlckNvbXBvbmVudH0gZnJvbSBcIi4vY29uZmlndXJhdGlvbi1hZGFwdGVyLWNvbXBvbmVudC5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtpc05pbGx9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uL2lzLW5pbGwuZnVuY3Rpb25cIjtcclxuaW1wb3J0IHtub3ROaWxsfSBmcm9tIFwiLi4vLi4vY29yZS9mdW5jdGlvbi9ub3QtbmlsbC5mdW5jdGlvblwiO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbiwgSW5wdXRCb29sZWFuRGVjb3JhdG9yfSBmcm9tIFwiLi4vLi4vY29yZS9kZWNvcmF0b3IvaW5wdXQtYm9vbGVhbi5kZWNvcmF0b3JcIjtcclxuaW1wb3J0IHtyZXF1aXJlZFZhbGlkYXRvcn0gZnJvbSBcIi4uLy4uL2NvcmUvdmFsaWRhdG9yL3JlcXVpcmVkLnZhbGlkYXRvclwiO1xyXG5pbXBvcnQge3ByZWNpc2lvblNjYWxlVmFsaWRhdG9yfSBmcm9tIFwiLi4vLi4vY29yZS92YWxpZGF0b3IvcHJlY2lzaW9uLXNjYWxlLnZhbGlkYXRvclwiO1xyXG5pbXBvcnQge21heFN0cmluZ0xlbmd0aFZhbGlkYXRvcn0gZnJvbSBcIi4uLy4uL2NvcmUvdmFsaWRhdG9yL21heC1zdHJpbmctbGVuZ3RoLnZhbGlkYXRvclwiO1xyXG5pbXBvcnQge1N0cmluZ1V0aWxzfSBmcm9tIFwiLi4vLi4vY29yZS91dGlscy9zdHJpbmctdXRpbHNcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Rm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vY29yZS9zZXJ2aWNlL2Zvcm0taW5wdXQtdXNlci1jaGFuZ2UtbGlzdGVuZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge051bWJlclV0aWxzfSBmcm9tIFwiLi4vLi4vY29yZS91dGlscy9udW1iZXItdXRpbHNcIjtcclxuaW1wb3J0IHtOZ1pvbmVXcmFwcGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge0NvcmVDb21wb25lbnRzSWNvbn0gZnJvbSBcIi4uLy4uL2NvcmUvZW51bS9jb3JlLWNvbXBvbmVudHMtaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSBcIi4uL2Zvcm0vZm9ybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtWYWxpZGF0aW9uRXJyb3JDb21wb25lbnR9IGZyb20gXCIuLi92YWxpZGF0aW9uLWVycm9yL3ZhbGlkYXRpb24tZXJyb3IuY29tcG9uZW50XCI7XHJcblxyXG4vKipcclxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWxsIGNvbmNyZXRlIGZvcm0gaW5wdXQgY29tcG9uZW50cyB0aGF0IGNvbnRhaW4gYSBuYXRpdmUgPGlucHV0PiBlbGVtZW50LiBQcm92aWRlcyBjb21tb24gZGF0YSBhbmQgZnVuY3Rpb25hbGl0eSwgc3VjaCBhc1xyXG4gKiBhZGRpbmcgc2VsZiBhcyBhIGNvbnRyb2wgdG8gdGhlIHBhcmVudCBmb3JtLlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VJbnB1dENvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBDb25maWd1cmF0aW9uQWRhcHRlckNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZChcInZhbGlkYXRpb25FcnJvclwiLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXHJcbiAgcHVibGljIHZhbGlkYXRpb25FcnJvckNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZChOZ01vZGVsLCB7c3RhdGljOiB0cnVlfSlcclxuICBwdWJsaWMgX25nTW9kZWw6IE5nTW9kZWw7XHJcblxyXG4gIHB1YmxpYyBnZXQgbmdNb2RlbCgpOiBOZ01vZGVsIHtcclxuICAgIGlmICh0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlLm5nTW9kZWw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5fbmdNb2RlbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgQmFzZUZvcm1JbnB1dENvbXBvbmVudEluZGV4OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBzdGF0aWMgSGlkZGVuQ2xhc3M6IHN0cmluZyA9IFwiaGlkZGVuXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dTYXZlQ2FuY2VsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBtb2RlbCh2YWx1ZTogVCkge1xyXG4gICAgaWYgKCF0aGlzLl9pbml0aWFsTW9kZWxTZXQpIHtcclxuICAgICAgdGhpcy5faW5pdGlhbE1vZGVsID0gdGhpcy5fbW9kZWw7XHJcbiAgICAgIHRoaXMuX2luaXRpYWxNb2RlbFNldCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xyXG4gICAgdGhpcy5jYW5TYXZlT3JDYW5jZWwgPSB0aGlzLl9tb2RlbCAhPT0gdGhpcy5faW5pdGlhbE1vZGVsO1xyXG4gICAgdGhpcy5fY2xlYXJFcnJvckNvbXBvbmVudCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtb2RlbCgpOiBUIHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBub1ZhbGlkYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIGluaXRGb2N1czogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIG5vQ2xpY2tGb2N1czogYm9vbGVhbjtcclxuXHJcbiAgLy8gdXNlZCB0byBsaW5rIGZpZWxkIHRvIGJ1c2luZXNzIG9iamVjdCBmb3IgZGVlcC12YWxpZGF0aW9uXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYnVzaW5lc3NPYmplY3RJZDogYW55O1xyXG5cclxuICAvLyBASW5wdXQoKVxyXG4gIC8vIHB1YmxpYyBlcnJvck1lc3NhZ2U6IFZhbGlkYXRpb25NZXNzYWdlO1xyXG5cclxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChkaXNhYmxlZCA9PT0gdGhpcy5fZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBJbnB1dEJvb2xlYW5EZWNvcmF0b3IuSW5wdXRWYWx1ZVRvQm9vbGVhbihkaXNhYmxlZCk7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG1heExlbmd0aChtYXhMZW5ndGg6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZXRNYXhMZW5ndGgobWF4TGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbWF4TGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gbm90TmlsbCh0aGlzLmZvcmNlZE1heExlbmd0aCkgPyB0aGlzLmZvcmNlZE1heExlbmd0aCA6IHRoaXMuX21heExlbmd0aDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZvcmNlZE1heExlbmd0aDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcmVhZG9ubHkocmVhZG9ubHk6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl9mb3JjZVJlYWRvbmx5ICE9PSB1bmRlZmluZWQgfHwgcmVhZG9ubHkgPT09IHRoaXMuX3JlYWRvbmx5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3JlYWRvbmx5ID0gSW5wdXRCb29sZWFuRGVjb3JhdG9yLklucHV0VmFsdWVUb0Jvb2xlYW4ocmVhZG9ubHkpO1xyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9yY2VSZWFkb25seSB8fCB0aGlzLl9yZWFkb25seTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBmb3JjZVJlYWRvbmx5KGZvcmNlUmVhZG9ubHk6IGJvb2xlYW4pIHtcclxuICAgIGlmIChmb3JjZVJlYWRvbmx5ID09PSB0aGlzLl9mb3JjZVJlYWRvbmx5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2ZvcmNlUmVhZG9ubHkgPSBJbnB1dEJvb2xlYW5EZWNvcmF0b3IuSW5wdXRWYWx1ZVRvQm9vbGVhbihmb3JjZVJlYWRvbmx5KTtcclxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZm9yY2VSZWFkb25seSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JjZVJlYWRvbmx5O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAocmVxdWlyZWQgPT09IHRoaXMuX3JlcXVpcmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3JlcXVpcmVkID0gSW5wdXRCb29sZWFuRGVjb3JhdG9yLklucHV0VmFsdWVUb0Jvb2xlYW4ocmVxdWlyZWQpO1xyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZvcmNlUmVxdWlyZWQgfHwgdGhpcy5fcmVxdWlyZWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgZm9yY2VSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlOyAgLy8gYSBmb3JjZSBvdXRzaWRlIG9mIFtjZmdOYW1lXSdzIGluZmx1ZW5jZVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgdmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdKSB7XHJcbiAgICBpZiAodmFsaWRhdG9ycyA9PT0gdGhpcy5fdmFsaWRhdG9ycykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl92YWxpZGF0b3JzID0gdmFsaWRhdG9ycztcclxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0b3JzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGFzeW5jVmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW10pIHtcclxuICAgIHRoaXMuX2FzeW5jVmFsaWRhdG9ycyA9IHZhbGlkYXRvcnM7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFzeW5jVmFsaWRhdG9ycygpOiBBc3luY1ZhbGlkYXRvckZuW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FzeW5jVmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZyhcImNsYXNzLlwiICsgQmFzZUlucHV0Q29tcG9uZW50LkhpZGRlbkNsYXNzKVxyXG4gIHB1YmxpYyBzZXQgaGlkZGVuKGhpZGRlbjogYm9vbGVhbikge1xyXG4gICAgaWYgKGhpZGRlbiA9PT0gdGhpcy5faGlkZGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9oaWRkZW4gPSBoaWRkZW47XHJcblxyXG4gICAgdGhpcy5fYWRkT3JSZW1vdmVTZWxmRnJvbUZvcm0oKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuX2Rlc3Ryb3llZCkge1xyXG4gICAgICBpZiAoaGlkZGVuKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRhY2goKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLnJlYXR0YWNoKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc0FmdGVyQW5ndWxhcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaGlkZGVuQ2hhbmdlLmVtaXQoaGlkZGVuKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaGlkZGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hpZGRlbjtcclxuICB9XHJcblxyXG4gIC8vIG5vIGN1c3RvbSBzZXR0ZXIgbG9naWMgYXMgd2l0aCB0aGUgb3RoZXIgJ3NjcmVlbiBjb25maWcgcHJvcHMnLCBiZWNhdXNlIGNvbmNyZXRlIGZvcm0gaW5wdXQgY29tcG9uZW50cyBoYW5kbGUgdGhpcyB0aGVtc2VsdmVzLlxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBkZWNpbWFscyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9kZWNpbWFscyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkZWNpbWFscygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlY2ltYWxzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWNvbjogQ29yZUNvbXBvbmVudHNJY29uO1xyXG5cclxuICAvLyBHb2FsOiBhYmlsaXR5IHRvIGVtdWxhdGUgdGhlIHJlZCBiYWNrZ3JvdW5kIG9mIGlucHV0IGZpZWxkcyAoZm9ybS1zdWJtaXR0ZWQgaW52YWxpZCBzdGF0ZSlcclxuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoXCJjbGFzcy5jYy1yZWQtZXJyb3ItYmFja2dyb3VuZFwiKVxyXG4gIHB1YmxpYyByZWRFcnJvckJhY2tncm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbXlGb3JtSW5wdXRJbnN0YW5jZSh2YWx1ZTogQmFzZUlucHV0Q29tcG9uZW50PFQ+KSB7XHJcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbXlGb3JtSW5wdXRJbnN0YW5jZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG15Rm9ybUlucHV0SW5zdGFuY2UoKTogQmFzZUlucHV0Q29tcG9uZW50PFQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbXlGb3JtSW5wdXRJbnN0YW5jZTogQmFzZUlucHV0Q29tcG9uZW50PFQ+O1xyXG5cclxuICAvLyBAT3V0cHV0KClcclxuICAvLyBwdWJsaWMgY29tbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgbmF0aXZlQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gZW1pdHMgd2hlbiB0aGUgZW50ZXIgYnV0dG9uIG9uIGtleWJvYXJkIHdhcyBwcmVzc2VkIHdoaWxlIHRoaXMgZm9ybSBpbnB1dCBoYWQgZm9jdXNzZWRcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgZW50ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgZm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkga2V5RG93bjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBrZXlVcDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGhpZGRlbkNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jYy1pbnB1dC1mb2N1c2VkXCIpXHJcbiAgcHVibGljIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGZvcm1Db21wb25lbnQ6IEZvcm1Db21wb25lbnQ7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmZvcm0taW5wdXRcIilcclxuICBwdWJsaWMgZm9ybUlucHV0OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIEBIb3N0QmluZGluZyhcImNsYXNzLmN1c3RvbS13aWR0aFwiKVxyXG4gIHB1YmxpYyBjdXN0b21XaWR0aDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgbm9UcmlhbmdsZUdyYXBoaWM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIEBIb3N0QmluZGluZyhcImNsYXNzLmhhbGYtd2lkdGhcIilcclxuICBwdWJsaWMgaGFsZldpZHRoOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBASG9zdEJpbmRpbmcoXCJjbGFzcy5mdWxsLXdpZHRoLWltcG9ydGFudFwiKVxyXG4gIHB1YmxpYyBmdWxsV2lkdGg6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIGV4Y2x1ZGVVc2VyTW9kZWxDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIG5vRm9ybUdyb3VwQ29udHJvbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5mb3JtLXN1Ym1pdHRlZFwiKVxyXG4gIHB1YmxpYyBnZXQgZm9ybVN1Ym1pdHRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Db21wb25lbnQgJiYgdGhpcy5mb3JtQ29tcG9uZW50LnN1Ym1pdHRlZDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmhhc25vbGFiZWxcIilcclxuICBwdWJsaWMgZ2V0IGhhc05vTGFiZWwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaXNOaWxsKHRoaXMubGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaGFzdmFsdWVcIilcclxuICBwdWJsaWMgZ2V0IGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5tb2RlbCB8fCBTdHJpbmdVdGlscy5Jc1N0cmluZ1dpdGhMZW5ndGgodGhpcy5tb2RlbCkgfHwgTnVtYmVyVXRpbHMuSXNOdW1iZXIodGhpcy5tb2RlbCk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5pbnZhbGlkXCIpXHJcbiAgcHVibGljIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NoZWNrU3RhdGUoKSAmJiAhdGhpcy5jb250cm9sLnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuZGlzYWJsZWRcIilcclxuICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5yZWFkLW9ubHlcIilcclxuICBwdWJsaWMgZ2V0IGlzUmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLnJlcXVpcmVkXCIpXHJcbiAgcHVibGljIGdldCBpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWlyZWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jYy10b3VjaGVkLWludmFsaWRcIilcclxuICBwdWJsaWMgZ2V0IHRvdWNoZWRJbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xFeGlzdHMoKSAmJiB0aGlzLmNvbnRyb2wudG91Y2hlZCAmJiAhdGhpcy5jb250cm9sLnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MudmFsaWRcIilcclxuICBwdWJsaWMgZ2V0IHZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NoZWNrU3RhdGUoKSAmJiB0aGlzLmNvbnRyb2wudmFsaWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5uby12YWxpZGF0aW9uXCIpXHJcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMubm9WYWxpZGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcImNsaWNrXCIsIFtcIiRldmVudFwiXSlcclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYW5DaGFuZ2UgJiYgIXRoaXMubm9DbGlja0ZvY3VzKSB7XHJcbiAgICAgIHRoaXMucmVxdWVzdEZvY3VzKCk7XHJcbiAgICAgIGlmICghdGhpcy5leGNsdWRlVXNlck1vZGVsQ2hhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5tYXJrQXNVc2VyVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiZm9jdXNpblwiKVxyXG4gIG9uRm9jdXNJbigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5leGNsdWRlVXNlck1vZGVsQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMubWFya0FzVXNlclRvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpzY3JvbGxcIilcclxuICBwdWJsaWMgaGFuZGxlRG9jdW1lbnRTY3JvbGwoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wb3NpdGlvblZhbGlkYXRpb25FcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIilcclxuICBwdWJsaWMgaGFuZGxlV2luZG93UmVzaXplKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9zaXRpb25WYWxpZGF0aW9uRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duXCIsIFtcIiRldmVudFwiXSlcclxuICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2hvd1NhdmVDYW5jZWwgJiYgdGhpcy5jYW5TYXZlT3JDYW5jZWwpIHtcclxuICAgICAgdGhpcy5faGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhbkNoYW5nZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5yZWFkb25seSAmJiAhdGhpcy5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29udHJvbCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbXlGb3JtSW5wdXRJbnN0YW5jZSA/IHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2UuY29udHJvbCA6IHRoaXMubmdNb2RlbCAmJiB0aGlzLm5nTW9kZWwuY29udHJvbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZm9ybUlucHV0SW5zdGFuY2UoKTogQmFzZUlucHV0Q29tcG9uZW50PFQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlIHx8IHRoaXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzRGVzdHJveWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3llZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbnB1dDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQ7XHJcblxyXG4gIHB1YmxpYyBrZWVwRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgY2FuU2F2ZU9yQ2FuY2VsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIEBpbXBsZW1lbnRzIENvbmZpZ3VyYXRpb25BZGFwdGVyQ29tcG9uZW50XHJcbiAgcHVibGljIG9iamVjdENvbmZpZ05hbWU6IHN0cmluZztcclxuICBwdWJsaWMgY29tbWl0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjb21taXRGaW5pc2hlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cclxuICBwcm90ZWN0ZWQgX21hcmtlZEFzVXNlclRvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJvdGVjdGVkIF9kZXN0cm95ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgX2hhc09uUHVzaENkU3RyYXRlZ3k6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgX21vZGVsOiBUO1xyXG4gIHByb3RlY3RlZCBfaW5pdGlhbE1vZGVsOiBUO1xyXG4gIHByb3RlY3RlZCBfaW5pdGlhbE1vZGVsU2V0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2Vycm9yVmFsaWRhdGlvbkNvbXBvbmVudDogQ29tcG9uZW50UmVmPFZhbGlkYXRpb25FcnJvckNvbXBvbmVudD47XHJcbiAgcHJpdmF0ZSBfZGVjaW1hbHM6IG51bWJlcjtcclxuICBwcml2YXRlIF9oaWRkZW46IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfbWF4TGVuZ3RoOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfcmVhZG9ubHk6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgX2ZvcmNlUmVhZG9ubHk6IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgX3ZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICBwcml2YXRlIF9hc3luY1ZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9zcGVlY2hTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9tb2RlbENoYW5nZVN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX2Zvcm1BbnlTdWJtaXRTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9mb3JtUmVhZG9ubHlDaGFuZ2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9jbGVhck1hcmtlZEFzVXNlclRvdWNoZWRTdWI6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJvdGVjdGVkIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXI/OiBGb3JtSW5wdXRVc2VyTW9kZWxDaGFuZ2VMaXN0ZW5lclNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgbmdab25lV3JhcHBlcj86IE5nWm9uZVdyYXBwZXJTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmLFxyXG4gICkge1xyXG4gICAgQmFzZUlucHV0Q29tcG9uZW50LkJhc2VGb3JtSW5wdXRDb21wb25lbnRJbmRleCsrO1xyXG4gICAgdGhpcy5uYW1lID0gQmFzZUlucHV0Q29tcG9uZW50LkJhc2VGb3JtSW5wdXRDb21wb25lbnRJbmRleC50b1N0cmluZygpO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5fY2xlYXJNYXJrZWRBc1VzZXJUb3VjaGVkU3ViID0gdGhpcy5mb3JtVXNlckNoYW5nZUxpc3RlbmVyLmNsZWFyQWxsTWFya2VkQXNVc2VyVG91Y2hlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX21vZGVsQ2hhbmdlU3ViID0gdGhpcy5tb2RlbENoYW5nZS5zdWJzY3JpYmUoKHZhbDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSB2YWw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ByZXBhcmVJbnB1dCgpO1xyXG5cclxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuXHJcbiAgICB0aGlzLl9hZGRPclJlbW92ZVNlbGZGcm9tRm9ybSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm1Db21wb25lbnQpIHtcclxuICAgICAgdGhpcy5yZWFkb25seSA9IHRoaXMucmVhZG9ubHkgfHwgdGhpcy5mb3JtQ29tcG9uZW50LnJlYWRvbmx5O1xyXG4gICAgICB0aGlzLl9mb3JtUmVhZG9ubHlDaGFuZ2VTdWIgPSB0aGlzLmZvcm1Db21wb25lbnQucmVhZG9ubHlDaGFuZ2Uuc3Vic2NyaWJlKChpc0Zvcm1SZWFkb25seTogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIHRoaXMucmVhZG9ubHkgPSBpc0Zvcm1SZWFkb25seTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaW5pdEZvY3VzKSB7XHJcbiAgICAgIHNldFRpbWVvdXQodGhpcy5yZXF1ZXN0Rm9jdXMuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlbW92ZVNlbGZGcm9tRm9ybSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmlucHV0KSB7XHJcbiAgICAgIHRoaXMuaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIChldmVudCkgPT4gdGhpcy5kb0JsdXIoZXZlbnQpKTtcclxuICAgICAgdGhpcy5pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIChldmVudCkgPT4gdGhpcy5kb0ZvY3VzKGV2ZW50KSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZGVzdHJveWVkID0gdHJ1ZTtcclxuICAgIHRoaXMuX2NsZWFyRXJyb3JDb21wb25lbnQoKTtcclxuXHJcbiAgICAvLyBpZiAodGhpcy50b29sdGlwTWFuYWdlciAmJiB0aGlzLmVsZW1lbnRSZWYpIHtcclxuICAgIC8vICAgICB0aGlzLnRvb2x0aXBNYW5hZ2VyLmRlc3Ryb3lFcnJvclRvb2x0aXBPZkVsZW1lbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLl9tb2RlbENoYW5nZVN1Yikge1xyXG4gICAgICB0aGlzLl9tb2RlbENoYW5nZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3NwZWVjaFN1Yikge1xyXG4gICAgICB0aGlzLl9zcGVlY2hTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9mb3JtQW55U3VibWl0U3ViKSB7XHJcbiAgICAgIHRoaXMuX2Zvcm1BbnlTdWJtaXRTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9mb3JtUmVhZG9ubHlDaGFuZ2VTdWIpIHtcclxuICAgICAgdGhpcy5fZm9ybVJlYWRvbmx5Q2hhbmdlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fY2xlYXJNYXJrZWRBc1VzZXJUb3VjaGVkU3ViKSB7XHJcbiAgICAgIHRoaXMuX2NsZWFyTWFya2VkQXNVc2VyVG91Y2hlZFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5fcmVtb3ZlU2VsZkZyb21Gb3JtKCk7XHJcbiAgICB0aGlzLmVsZW1lbnRSZWYgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5pbnB1dCA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8vIGRlc2NlbmRlbnRzIHNob3VsZCBvdmVycmlkZSB0aGlzXHJcbiAgcHVibGljIGNvbW1pdCA9IGFzeW5jIChtb2RlbDogYW55KTogUHJvbWlzZTxib29sZWFuPiA9PiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGNvbW1pdENsaWNrKGV2ZW50PzogTW91c2VFdmVudCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgdGhpcy5rZWVwRm9jdXMgPSB0cnVlO1xyXG4gICAgdGhpcy5jb21taXRGaW5pc2hlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21taXR0aW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbW1pdCh0aGlzLm1vZGVsKTtcclxuICAgIHRoaXMua2VlcEZvY3VzID0gZmFsc2U7XHJcbiAgICBhd2FpdCB0aGlzLl9jb21taXRGaW5pc2hlZCgpO1xyXG4gICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5kb0JsdXIoZXZlbnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsQ2xpY2soZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmtlZXBGb2N1cyA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5faW5pdGlhbE1vZGVsU2V0KSB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSB0aGlzLl9pbml0aWFsTW9kZWw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmtlZXBGb2N1cyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dWYWxpZGF0aW9uRXJyb3IoZXJyb3I6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmFsaWRhdGlvbkVycm9yQ29udGFpbmVyKSB7XHJcbiAgICAgIGlmICh0aGlzLl9lcnJvclZhbGlkYXRpb25Db21wb25lbnQpIHtcclxuICAgICAgICB0aGlzLl9jbGVhckVycm9yQ29tcG9uZW50KCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxWYWxpZGF0aW9uRXJyb3JDb21wb25lbnQ+ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoVmFsaWRhdGlvbkVycm9yQ29tcG9uZW50KTtcclxuICAgICAgdGhpcy5fZXJyb3JWYWxpZGF0aW9uQ29tcG9uZW50ID0gdGhpcy52YWxpZGF0aW9uRXJyb3JDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudEZhY3RvcnkpO1xyXG4gICAgICB0aGlzLl9lcnJvclZhbGlkYXRpb25Db21wb25lbnQuaW5zdGFuY2UuZXJyb3IgPSBlcnJvcjtcclxuICAgICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3Bvc2l0aW9uVmFsaWRhdGlvbkVycm9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyBhIG1vZGVsQ2hhbmdlIGV2ZW50IHdpdGggZ2l2ZW4gdmFsdWUsIGluZGljYXRpbmcgdGhhdCB0aGUgbW9kZWwgb2YgdGhpcyBmb3JtIGlucHV0XHJcbiAgICogaGFzIGNoYW5nZWQgYW5kIGl0cyBuZXcgdmFsdWUgaXMgZ2l2ZW4gdmFsdWUuIEFsc28gZW1pdHMgdXNlck1vZGVsQ2hhbmdlIGlmIG1hcmtlZEFzVXNlclRvdWNoZWQuXHJcbiAgICovXHJcbiAgcHVibGljIHNldE1vZGVsKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwgPSB2YWx1ZTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQgJiYgdGhpcy5mb3JtVXNlckNoYW5nZUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lci51c2VyTW9kZWxDaGFuZ2UubmV4dCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMudXNlck1vZGVsQ2hhbmdlLm5leHQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlcXVlc3RGb2N1cygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNhbkNoYW5nZSAmJiB0aGlzLmlucHV0KSB7XHJcbiAgICAgIHRoaXMuaW5wdXQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG9Gb2N1cyhldmVudD86IGFueSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pbml0aWFsTW9kZWxTZXQgPSBmYWxzZTtcclxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcbiAgICB0aGlzLmNhblNhdmVPckNhbmNlbCA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9jdXMubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRvQmx1cihldmVudD86IGFueSk6IGFueSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMua2VlcEZvY3VzKSB7XHJcbiAgICAgICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSkge1xyXG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgICB0aGlzLmlucHV0LmJsdXIoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmJsdXIubmV4dCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9kZXN0cm95ZWQpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbWFya0ZvckNoZWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9kZXN0cm95ZWQpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZXRlY3RDaGFuZ2VzQWZ0ZXJBbmd1bGFyKCk6IHZvaWQge1xyXG4gICAgaWYgKCEhdGhpcy5uZ1pvbmVXcmFwcGVyKSB7XHJcbiAgICAgIHRoaXMubmdab25lV3JhcHBlci5zZXRUaW1lb3V0T3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5fZGVzdHJveWVkKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSkge1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpbmtzIHRoZSBnaXZlbiBmb3JtQ29tcC5zdWJtaXQgZXZlbnQgdG8gdGhlIGZpcmluZyBvZiBkZXRlY3RDaGFuZ2VzKCkgb2YgZ2l2ZW4gY2hhbmdlIGRldGVjdG9yLiBUaGlzIGlzIGEgJ3V0aWxpdHktbGlrZScgbWV0aG9kLFxyXG4gICAqIGJ1dCB3ZSBtYW5hZ2UgdGhlIGFjdHVhbCBzdWJzY3JpcHRpb24gKHdpdGggVU5TVUJTQ1JJQkUoKSEpIG9uIHRoaXMgYmFzZSBjbGFzcy5cclxuICAgKiBAcGFyYW0gZm9ybUNvbXAgVGhlIGZvcm0gd2hvc2Ugc3VibWl0IHdlIHdhbnQgdG8gbGluayB3aXRoIHRoZSBjYWxsIG9mIC5kZXRlY3RDaGFuZ2VzKCkgb24gZ2l2ZW4gY2hhbmdlIGRldGVjdG9yIHJlZi5cclxuICAgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWYgVGhpcyBzaG91bGQgYmUgZ2l2ZW4gYXMgcGFyYW0uIEkgY2hvb3NlIG5vdCB0byBtYWtlIHRoaXMgcGFydCBvZiBvdXIgKEJhc2VGb3JtSW5wdXRDb21wb25lbnQpIGNvbnN0cnVjdG9yLFxyXG4gICAqIGJlY2F1c2Ugd2UgYWxyZWFkeSBoYXZlIDIxIGV4dGVuZGVycy5cclxuICAgKi9cclxuICAvLyBwdWJsaWMgbGlua0Zvcm1BbnlTdWJtaXRXaXRoRGV0ZWN0Q2hhbmdlcyhmb3JtQ29tcDogRm9ybUNvbXBvbmVudCwgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgLy8gICAgIGlmIChmb3JtQ29tcCAmJiBjaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIC8vICAgICAgICAgdGhpcy5fZm9ybUFueVN1Ym1pdFN1YiA9IGZvcm1Db21wLmFueVN1Ym1pdC5zdWJzY3JpYmUoKCgpID0+IHtcclxuICAvLyAgICAgICAgICAgICBpZiAoIXRoaXMuX2Rlc3Ryb3llZCkge1xyXG4gIC8vICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSkpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgbWFya0FzVXNlclRvdWNoZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tYXJrZWRBc1VzZXJUb3VjaGVkID0gdHJ1ZTtcclxuICAgIHRoaXMucmVkRXJyb3JCYWNrZ3JvdW5kID0gZmFsc2U7IC8vIG5vdCBzdXJlIGlmIHRoaXMgaXMgdGhlIHJpZ2h0IHBsYWNlIHRvIGRvIHRoYXRcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhck1hcmtlZEFzVXNlclRvdWNoZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tYXJrZWRBc1VzZXJUb3VjaGVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvL3VzZWQgZm9yIGRlc2NlbmRlbnRzLCBiZWNhdXNlIGRlc2NlbmRlbnRzIGNhbid0IHNldCBzdXBlciBwcm9wZXJ0aWVzLCBzZWUgSW5wdXROdW1iZXJDb21wb25lbnRcclxuICBwcm90ZWN0ZWQgc2V0TWF4TGVuZ3RoKG1heExlbmd0aDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAobm90TmlsbCh0aGlzLmZvcmNlZE1heExlbmd0aCkgfHwgbWF4TGVuZ3RoID09PSB0aGlzLl9tYXhMZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNOYU4obWF4TGVuZ3RoKSkge1xyXG4gICAgICB0aGlzLl9tYXhMZW5ndGggPSBtYXhMZW5ndGg7XHJcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfbWFya0FzT25QdXNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2NoZWNrU3RhdGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5uZ01vZGVsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvcm1TdWJtaXR0ZWQgfHwgKHRoaXMuX2NvbnRyb2xFeGlzdHMoKSAmJiB0aGlzLmNvbnRyb2wudG91Y2hlZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBQbGFjZSB2YWxpZGF0b3JzIG9udG8gb3VyIEFuZ3VsYXIncyBGb3JtQ29udHJvbC5cclxuICBwcm90ZWN0ZWQgX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlcjogRWxlbWVudFJlZiA9IHRoaXMubXlGb3JtSW5wdXRJbnN0YW5jZSA/IHRoaXMubXlGb3JtSW5wdXRJbnN0YW5jZS5lbGVtZW50UmVmIDogdGhpcy5lbGVtZW50UmVmO1xyXG4gICAgLy8gaWYgKHRoaXMudG9vbHRpcE1hbmFnZXIgJiYgZXIpIHtcclxuICAgIC8vICAgICB0aGlzLnRvb2x0aXBNYW5hZ2VyLmRlc3Ryb3lFcnJvclRvb2x0aXBPZkVsZW1lbnQoZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLl9zZXROYXRpdmVSZXF1aXJlZCh0aGlzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuX3NldE5hdGl2ZU1heExlbmd0aCh0aGlzLm1heExlbmd0aCk7XHJcbiAgICB0aGlzLl9zZXROYXRpdmVEaXNhYmxlZCh0aGlzLmRpc2FibGVkKTtcclxuICAgIHRoaXMuX3NldE5hdGl2ZVJlYWRPbmx5KHRoaXMucmVhZG9ubHkgfHwgdGhpcy5mb3JjZVJlYWRvbmx5KTtcclxuXHJcbiAgICB0aGlzLnJlZEVycm9yQmFja2dyb3VuZCA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuX2NvbnRyb2xFeGlzdHMoKSkge1xyXG4gICAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gICAgICAvLyBhZGQgcmVxdWlyZWRcclxuICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2gocmVxdWlyZWRWYWxpZGF0b3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBhZGQgbWF4bGVuZ3RoXHJcbiAgICAgIGlmIChub3ROaWxsKHRoaXMuX21heExlbmd0aCkpIHtcclxuICAgICAgICBpZiAodGhpcy5kZWNpbWFscykge1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKHByZWNpc2lvblNjYWxlVmFsaWRhdG9yKHRoaXMuX21heExlbmd0aCwgdGhpcy5kZWNpbWFscykpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2gobWF4U3RyaW5nTGVuZ3RoVmFsaWRhdG9yKHRoaXMuX21heExlbmd0aCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gYWRkIEBJbnB1dCgpLWVkIHZhbGlkYXRvcnNcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKC4uLnRoaXMuX3ZhbGlkYXRvcnMpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuX3ZhbGlkYXRvcnMpIHtcclxuICAgICAgICB0aGlzLl92YWxpZGF0b3JzLmZvckVhY2godmFsaWRhdG9yID0+IHtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IgPT09IHJlcXVpcmVkVmFsaWRhdG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fc2V0TmF0aXZlUmVxdWlyZWQodHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7XHJcbiAgICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb21taXRGaW5pc2hlZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgdGhpcy5jb21taXRGaW5pc2hlZCA9IHRydWU7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgfSwgODAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xlYXJFcnJvckNvbXBvbmVudCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZhbGlkYXRpb25FcnJvckNvbnRhaW5lcikge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvckNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICBpZiAodGhpcy5fZXJyb3JWYWxpZGF0aW9uQ29tcG9uZW50KSB7XHJcbiAgICAgICAgdGhpcy5fZXJyb3JWYWxpZGF0aW9uQ29tcG9uZW50LmRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLl9lcnJvclZhbGlkYXRpb25Db21wb25lbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLyB3aGV0aGVyIHRoaXMubmdNb2RlbC5jb250cm9sIGhhcyBzYWZlIGFjY2Vzc1xyXG4gIHByaXZhdGUgX2NvbnRyb2xFeGlzdHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsICYmICEhdGhpcy5jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29udHJvbElzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbEV4aXN0cygpICYmIHRoaXMuY29udHJvbC52YWxpZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE5hdGl2ZURpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICB0aGlzLmlucHV0LmRpc2FibGVkID0gZGlzYWJsZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXROYXRpdmVNYXhMZW5ndGgobWF4bGVuZ3RoOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0ICYmICFpc05hTihtYXhsZW5ndGgpKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQubWF4TGVuZ3RoID0gbWF4bGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9zZXROYXRpdmVSZWFkT25seShyZWFkb25seTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgdGhpcy5pbnB1dC5yZWFkT25seSA9IHJlYWRvbmx5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0TmF0aXZlUmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0KSB7XHJcbiAgICAgIHRoaXMuaW5wdXQucmVxdWlyZWQgPSByZXF1aXJlZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvU3BlZWNoSW5wdXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLl9zcGVlY2hTdWIgPSB0aGlzLnNwZWVjaElucHV0LnNwZWVjaElucHV0LnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgLy8gICAgIGlmICh0aGlzLmZvY3VzZWQgJiYgdGhpcy5fY29udHJvbEV4aXN0cygpKSB7XHJcbiAgICAvLyAgICAgICAgIGNvbnN0IHZhbDogc3RyaW5nID0gdGhpcy5jb250cm9sLnZhbHVlO1xyXG4gICAgLy8gICAgICAgICB0aGlzLnNldE1vZGVsKChTdHJpbmdVdGlscy5Jc1N0cmluZyh2YWwpID8gdmFsIDogJycpICsgZGF0YSk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hZGRPclJlbW92ZVNlbGZGcm9tRm9ybSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhpZGRlbikge1xyXG4gICAgICB0aGlzLl9yZW1vdmVTZWxmRnJvbUZvcm0oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2FkZFNlbGZUb0Zvcm0oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZVNlbGZJbkZvcm0oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBvbmVudC51cGRhdGVGb3JtSW5wdXQodGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZW1vdmVTZWxmRnJvbUZvcm0oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29tcG9uZW50ICYmIHRoaXMubmdNb2RlbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db21wb25lbnQucmVtb3ZlRm9ybUlucHV0KHRoaXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYWRkU2VsZlRvRm9ybSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1Db21wb25lbnQgJiYgdGhpcy5uZ01vZGVsICYmICF0aGlzLm5vRm9ybUdyb3VwQ29udHJvbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db21wb25lbnQucmVtb3ZlRm9ybUlucHV0KHRoaXMpOyAvLyBwcmV2ZW50aW5nIHRoZXJlIGFyZSB0d28gY29udHJvbHMgaW4gZm9ybWdyb3VwIHdoZW4gbXlGb3JtSW5wdXRJbnN0YW5jZSBpcyAoYmVpbmcpIHNldFxyXG4gICAgICB0aGlzLmZvcm1Db21wb25lbnQuYWRkRm9ybUlucHV0KHRoaXMubXlGb3JtSW5wdXRJbnN0YW5jZSA/IHRoaXMubXlGb3JtSW5wdXRJbnN0YW5jZSA6IHRoaXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZUlucHV0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudFJlZiAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAvL3RyeSB0byBmaW5kIGlucHV0IGVsZW1lbnRcclxuICAgICAgdGhpcy5fZmluZElucHV0Tm9kZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbik7XHJcbiAgICAgIGlmICh0aGlzLmlucHV0KSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKGV2ZW50KSA9PiB0aGlzLmRvQmx1cihldmVudCkpO1xyXG4gICAgICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoZXZlbnQpID0+IHRoaXMuZG9Gb2N1cyhldmVudCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maW5kSW5wdXROb2RlKG5vZGVzKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcclxuICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dCA9IG5vZGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5fZmluZElucHV0Tm9kZShub2RlLmNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcG9zaXRpb25WYWxpZGF0aW9uRXJyb3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5lbGVtZW50UmVmICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ICYmIHRoaXMuX2Vycm9yVmFsaWRhdGlvbkNvbXBvbmVudCkge1xyXG4gICAgICBjb25zdCBjbGllbnRSZWN0OiBDbGllbnRSZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIHRoaXMuX2Vycm9yVmFsaWRhdGlvbkNvbXBvbmVudC5pbnN0YW5jZS50b3AgPSBjbGllbnRSZWN0LmJvdHRvbTtcclxuICAgICAgdGhpcy5fZXJyb3JWYWxpZGF0aW9uQ29tcG9uZW50Lmluc3RhbmNlLmxlZnQgPSBjbGllbnRSZWN0LmxlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xyXG4gICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNvbW1pdENsaWNrKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjYXNlICdUYWInOlxyXG4gICAgICAgIGNvbnN0IG5leHRTaWJsaW5nVG9Gb2N1cyA9IGV2ZW50LnNoaWZ0S2V5ID8gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgYW55KS5wcmV2aW91c1NpYmxpbmcgOiAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBhbnkpLm5leHRTaWJsaW5nO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuY29tbWl0Q2xpY2soKTtcclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgaWYgKG5leHRTaWJsaW5nVG9Gb2N1cykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3NldEZvY3VzT25OZXh0UG9zc2libGVJbnB1dChuZXh0U2libGluZ1RvRm9jdXMsIGV2ZW50LnNoaWZ0S2V5KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgY2FzZSAnRXNjYXBlJzpcclxuICAgICAgICB0aGlzLmNhbmNlbENsaWNrKCk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVOZXdGb2N1c0V2ZW50KGVsZW1lbnQ6IGFueSk6IEV2ZW50IHtcclxuICAgIGxldCBldmVudFR5cGUgPSBcIm9uZm9jdXNpblwiIGluIGVsZW1lbnQgPyBcImZvY3VzaW5cIiA6IFwiZm9jdXNcIixcclxuICAgICAgYnViYmxlcyA9IFwib25mb2N1c2luXCIgaW4gZWxlbWVudCxcclxuICAgICAgZm9jdXNFdmVudDtcclxuXHJcbiAgICBpZiAoXCJjcmVhdGVFdmVudFwiIGluIGRvY3VtZW50KSB7XHJcbiAgICAgIGZvY3VzRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50XCIpO1xyXG4gICAgICBmb2N1c0V2ZW50LmluaXRFdmVudChldmVudFR5cGUsIGJ1YmJsZXMsIHRydWUpO1xyXG4gICAgfSBlbHNlIGlmIChcIkV2ZW50XCIgaW4gd2luZG93KSB7XHJcbiAgICAgIGZvY3VzRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnRUeXBlLCB7IGJ1YmJsZXM6IGJ1YmJsZXMsIGNhbmNlbGFibGU6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9jdXNFdmVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEZvY3VzT25OZXh0UG9zc2libGVJbnB1dChlbGVtZW50OiBhbnksIHByZXZpb3VzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50Q29sbCA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7XHJcbiAgICBpZiAoZWxlbWVudENvbGwgJiYgZWxlbWVudENvbGwubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBlbGVtZW50Q29sbFswXTtcclxuICAgICAgaWYgKGlucHV0RWxlbWVudC5kaXNhYmxlZCB8fCBpbnB1dEVsZW1lbnQucmVhZE9ubHkpIHtcclxuICAgICAgICB0aGlzLl9zZXRGb2N1c09uTmV4dFBvc3NpYmxlSW5wdXQocHJldmlvdXMgPyBlbGVtZW50LnByZXZpb3VzU2libGluZyA6IGVsZW1lbnQubmV4dFNpYmxpbmcsIHByZXZpb3VzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBmb2N1c0V2ZW50ID0gdGhpcy5fY3JlYXRlTmV3Rm9jdXNFdmVudChlbGVtZW50KTtcclxuICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICBpbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChmb2N1c0V2ZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
771
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUVqQix3QkFBd0IsRUFFeEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdDLE9BQU8sRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBRW5GLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2pHLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNuSCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFHaEYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7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Qjs2QkFLNUIsV0FBVyxTQUFDLDBCQUEwQjtvQkFLdEMsV0FBVyxTQUFDLGFBQWE7aUNBS3pCLFdBQVcsU0FBQyxxQkFBcUI7c0JBS2pDLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7d0JBVWhDLFlBQVksU0FBQyxTQUFTO21DQU90QixZQUFZLFNBQUMsaUJBQWlCO2lDQUs5QixZQUFZLFNBQUMsZUFBZTs0QkFLNUIsWUFBWSxTQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFoVG5DO0lBRFUsWUFBWSxFQUFFO3dEQUNhO0FBR3JDO0lBRFUsWUFBWSxFQUFFO3FEQUNFO0FBRzFCO0lBRFUsWUFBWSxFQUFFO3dEQUNLO0FBK0U3QjtJQURVLFlBQVksRUFBRTt5REFDYztBQTZIdEM7SUFEVSxZQUFZLEVBQUU7dURBQ1k7QUFHcEM7SUFEVSxZQUFZLEVBQUU7NkRBQ2tCO0FBRzFDO0lBRFUsWUFBWSxFQUFFO3FEQUNVO0FBR2xDO0lBRFUsWUFBWSxFQUFFO3FEQUNVO0FBR2xDO0lBRFUsWUFBWSxFQUFFO2tFQUN1QjtBQUcvQztJQURVLFlBQVksRUFBRTs4REFDbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50RmFjdG9yeSxcclxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgQ29tcG9uZW50UmVmLCBDb250ZW50Q2hpbGQsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbmplY3RhYmxlLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtBc3luY1ZhbGlkYXRvckZuLCBGb3JtQ29udHJvbCwgTmdNb2RlbCwgVmFsaWRhdG9yRm59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25BZGFwdGVyQ29tcG9uZW50fSBmcm9tIFwiLi9jb25maWd1cmF0aW9uLWFkYXB0ZXItY29tcG9uZW50LmludGVyZmFjZVwiO1xyXG5pbXBvcnQge2lzTmlsbH0gZnJvbSBcIi4uLy4uL2NvcmUvZnVuY3Rpb24vaXMtbmlsbC5mdW5jdGlvblwiO1xyXG5pbXBvcnQge25vdE5pbGx9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uL25vdC1uaWxsLmZ1bmN0aW9uXCI7XHJcbmltcG9ydCB7SW5wdXRCb29sZWFuLCBJbnB1dEJvb2xlYW5EZWNvcmF0b3J9IGZyb20gXCIuLi8uLi9jb3JlL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvclwiO1xyXG5pbXBvcnQge3JlcXVpcmVkVmFsaWRhdG9yfSBmcm9tIFwiLi4vLi4vY29yZS92YWxpZGF0b3IvcmVxdWlyZWQudmFsaWRhdG9yXCI7XHJcbmltcG9ydCB7cHJlY2lzaW9uU2NhbGVWYWxpZGF0b3J9IGZyb20gXCIuLi8uLi9jb3JlL3ZhbGlkYXRvci9wcmVjaXNpb24tc2NhbGUudmFsaWRhdG9yXCI7XHJcbmltcG9ydCB7bWF4U3RyaW5nTGVuZ3RoVmFsaWRhdG9yfSBmcm9tIFwiLi4vLi4vY29yZS92YWxpZGF0b3IvbWF4LXN0cmluZy1sZW5ndGgudmFsaWRhdG9yXCI7XHJcbmltcG9ydCB7U3RyaW5nVXRpbHN9IGZyb20gXCIuLi8uLi9jb3JlL3V0aWxzL3N0cmluZy11dGlsc1wiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtGb3JtSW5wdXRVc2VyTW9kZWxDaGFuZ2VMaXN0ZW5lclNlcnZpY2V9IGZyb20gXCIuLi8uLi9jb3JlL3NlcnZpY2UvZm9ybS1pbnB1dC11c2VyLWNoYW5nZS1saXN0ZW5lci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TnVtYmVyVXRpbHN9IGZyb20gXCIuLi8uLi9jb3JlL3V0aWxzL251bWJlci11dGlsc1wiO1xyXG5pbXBvcnQge05nWm9uZVdyYXBwZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vY29yZS9zZXJ2aWNlL25nLXpvbmUtd3JhcHBlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29ufSBmcm9tIFwiLi4vLi4vY29yZS9lbnVtL2NvcmUtY29tcG9uZW50cy1pY29uLmVudW1cIjtcclxuaW1wb3J0IHtGb3JtQ29tcG9uZW50fSBmcm9tIFwiLi4vZm9ybS9mb3JtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1ZhbGlkYXRpb25FcnJvckNvbXBvbmVudH0gZnJvbSBcIi4uL3ZhbGlkYXRpb24tZXJyb3IvdmFsaWRhdGlvbi1lcnJvci5jb21wb25lbnRcIjtcclxuXHJcbi8qKlxyXG4gKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBhbGwgY29uY3JldGUgZm9ybSBpbnB1dCBjb21wb25lbnRzIHRoYXQgY29udGFpbiBhIG5hdGl2ZSA8aW5wdXQ+IGVsZW1lbnQuIFByb3ZpZGVzIGNvbW1vbiBkYXRhIGFuZCBmdW5jdGlvbmFsaXR5LCBzdWNoIGFzXHJcbiAqIGFkZGluZyBzZWxmIGFzIGEgY29udHJvbCB0byB0aGUgcGFyZW50IGZvcm0uXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUlucHV0Q29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIENvbmZpZ3VyYXRpb25BZGFwdGVyQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKFwidmFsaWRhdGlvbkVycm9yXCIsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmfSlcclxuICBwdWJsaWMgdmFsaWRhdGlvbkVycm9yQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xyXG5cclxuICBAVmlld0NoaWxkKE5nTW9kZWwsIHtzdGF0aWM6IHRydWV9KVxyXG4gIHB1YmxpYyBfbmdNb2RlbDogTmdNb2RlbDtcclxuXHJcbiAgcHVibGljIGdldCBuZ01vZGVsKCk6IE5nTW9kZWwge1xyXG4gICAgaWYgKHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2UpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2UubmdNb2RlbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9uZ01vZGVsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBCYXNlRm9ybUlucHV0Q29tcG9uZW50SW5kZXg6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIHN0YXRpYyBIaWRkZW5DbGFzczogc3RyaW5nID0gXCJoaWRkZW5cIjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd1NhdmVDYW5jZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG1vZGVsKHZhbHVlOiBUKSB7XHJcbiAgICBpZiAoIXRoaXMuX2luaXRpYWxNb2RlbFNldCkge1xyXG4gICAgICB0aGlzLl9pbml0aWFsTW9kZWwgPSB0aGlzLl9tb2RlbDtcclxuICAgICAgdGhpcy5faW5pdGlhbE1vZGVsU2V0ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX21vZGVsID0gdmFsdWU7XHJcbiAgICB0aGlzLmNhblNhdmVPckNhbmNlbCA9IHRoaXMuX21vZGVsICE9PSB0aGlzLl9pbml0aWFsTW9kZWw7XHJcbiAgICB0aGlzLl9jbGVhckVycm9yQ29tcG9uZW50KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1vZGVsKCk6IFQge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIG5vVmFsaWRhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgaW5pdEZvY3VzOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgbm9DbGlja0ZvY3VzOiBib29sZWFuO1xyXG5cclxuICAvLyB1c2VkIHRvIGxpbmsgZmllbGQgdG8gYnVzaW5lc3Mgb2JqZWN0IGZvciBkZWVwLXZhbGlkYXRpb25cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBidXNpbmVzc09iamVjdElkOiBhbnk7XHJcblxyXG4gIC8vIEBJbnB1dCgpXHJcbiAgLy8gcHVibGljIGVycm9yTWVzc2FnZTogVmFsaWRhdGlvbk1lc3NhZ2U7XHJcblxyXG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKGRpc2FibGVkID09PSB0aGlzLl9kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kaXNhYmxlZCA9IElucHV0Qm9vbGVhbkRlY29yYXRvci5JbnB1dFZhbHVlVG9Cb29sZWFuKGRpc2FibGVkKTtcclxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbWF4TGVuZ3RoKG1heExlbmd0aDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNldE1heExlbmd0aChtYXhMZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtYXhMZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBub3ROaWxsKHRoaXMuZm9yY2VkTWF4TGVuZ3RoKSA/IHRoaXMuZm9yY2VkTWF4TGVuZ3RoIDogdGhpcy5fbWF4TGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZm9yY2VkTWF4TGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCByZWFkb25seShyZWFkb25seTogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuX2ZvcmNlUmVhZG9ubHkgIT09IHVuZGVmaW5lZCB8fCByZWFkb25seSA9PT0gdGhpcy5fcmVhZG9ubHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcmVhZG9ubHkgPSBJbnB1dEJvb2xlYW5EZWNvcmF0b3IuSW5wdXRWYWx1ZVRvQm9vbGVhbihyZWFkb25seSk7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgICBpZiAodGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSkge1xyXG4gICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JjZVJlYWRvbmx5IHx8IHRoaXMuX3JlYWRvbmx5O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGZvcmNlUmVhZG9ubHkoZm9yY2VSZWFkb25seTogYm9vbGVhbikge1xyXG4gICAgaWYgKGZvcmNlUmVhZG9ubHkgPT09IHRoaXMuX2ZvcmNlUmVhZG9ubHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZm9yY2VSZWFkb25seSA9IElucHV0Qm9vbGVhbkRlY29yYXRvci5JbnB1dFZhbHVlVG9Cb29sZWFuKGZvcmNlUmVhZG9ubHkpO1xyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmb3JjZVJlYWRvbmx5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVhZG9ubHk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChyZXF1aXJlZCA9PT0gdGhpcy5fcmVxdWlyZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcmVxdWlyZWQgPSBJbnB1dEJvb2xlYW5EZWNvcmF0b3IuSW5wdXRWYWx1ZVRvQm9vbGVhbihyZXF1aXJlZCk7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9yY2VSZXF1aXJlZCB8fCB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBmb3JjZVJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7ICAvLyBhIGZvcmNlIG91dHNpZGUgb2YgW2NmZ05hbWVdJ3MgaW5mbHVlbmNlXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCB2YWxpZGF0b3JzKHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10pIHtcclxuICAgIGlmICh2YWxpZGF0b3JzID09PSB0aGlzLl92YWxpZGF0b3JzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3ZhbGlkYXRvcnMgPSB2YWxpZGF0b3JzO1xyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB2YWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRvcnM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgYXN5bmNWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXSkge1xyXG4gICAgdGhpcy5fYXN5bmNWYWxpZGF0b3JzID0gdmFsaWRhdG9ycztcclxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYXN5bmNWYWxpZGF0b3JzKCk6IEFzeW5jVmFsaWRhdG9yRm5bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXN5bmNWYWxpZGF0b3JzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKFwiY2xhc3MuXCIgKyBCYXNlSW5wdXRDb21wb25lbnQuSGlkZGVuQ2xhc3MpXHJcbiAgcHVibGljIHNldCBoaWRkZW4oaGlkZGVuOiBib29sZWFuKSB7XHJcbiAgICBpZiAoaGlkZGVuID09PSB0aGlzLl9oaWRkZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2hpZGRlbiA9IGhpZGRlbjtcclxuXHJcbiAgICB0aGlzLl9hZGRPclJlbW92ZVNlbGZGcm9tRm9ybSgpO1xyXG5cclxuICAgIGlmICghdGhpcy5fZGVzdHJveWVkKSB7XHJcbiAgICAgIGlmIChoaWRkZW4pIHtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGFjaCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IucmVhdHRhY2goKTtcclxuICAgICAgICBpZiAodGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSkge1xyXG4gICAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzQWZ0ZXJBbmd1bGFyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oaWRkZW5DaGFuZ2UuZW1pdChoaWRkZW4pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoaWRkZW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgLy8gbm8gY3VzdG9tIHNldHRlciBsb2dpYyBhcyB3aXRoIHRoZSBvdGhlciAnc2NyZWVuIGNvbmZpZyBwcm9wcycsIGJlY2F1c2UgY29uY3JldGUgZm9ybSBpbnB1dCBjb21wb25lbnRzIGhhbmRsZSB0aGlzIHRoZW1zZWx2ZXMuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGRlY2ltYWxzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2RlY2ltYWxzID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRlY2ltYWxzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVjaW1hbHM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpY29uOiBDb3JlQ29tcG9uZW50c0ljb247XHJcblxyXG4gIC8vIEdvYWw6IGFiaWxpdHkgdG8gZW11bGF0ZSB0aGUgcmVkIGJhY2tncm91bmQgb2YgaW5wdXQgZmllbGRzIChmb3JtLXN1Ym1pdHRlZCBpbnZhbGlkIHN0YXRlKVxyXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZyhcImNsYXNzLmNjLXJlZC1lcnJvci1iYWNrZ3JvdW5kXCIpXHJcbiAgcHVibGljIHJlZEVycm9yQmFja2dyb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBteUZvcm1JbnB1dEluc3RhbmNlKHZhbHVlOiBCYXNlSW5wdXRDb21wb25lbnQ8VD4pIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fbXlGb3JtSW5wdXRJbnN0YW5jZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlID0gdmFsdWU7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbXlGb3JtSW5wdXRJbnN0YW5jZSgpOiBCYXNlSW5wdXRDb21wb25lbnQ8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9teUZvcm1JbnB1dEluc3RhbmNlOiBCYXNlSW5wdXRDb21wb25lbnQ8VD47XHJcblxyXG4gIC8vIEBPdXRwdXQoKVxyXG4gIC8vIHB1YmxpYyBjb21taXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBuYXRpdmVCbHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvLyBlbWl0cyB3aGVuIHRoZSBlbnRlciBidXR0b24gb24ga2V5Ym9hcmQgd2FzIHByZXNzZWQgd2hpbGUgdGhpcyBmb3JtIGlucHV0IGhhZCBmb2N1c3NlZFxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBlbnRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBmb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBrZXlEb3duOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGtleVVwOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgdXNlck1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgaGlkZGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNjLWlucHV0LWZvY3VzZWRcIilcclxuICBwdWJsaWMgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZm9ybUNvbXBvbmVudDogRm9ybUNvbXBvbmVudDtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuZm9ybS1pbnB1dFwiKVxyXG4gIHB1YmxpYyBmb3JtSW5wdXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY3VzdG9tLXdpZHRoXCIpXHJcbiAgcHVibGljIGN1c3RvbVdpZHRoOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBub1RyaWFuZ2xlR3JhcGhpYzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaGFsZi13aWR0aFwiKVxyXG4gIHB1YmxpYyBoYWxmV2lkdGg6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIEBIb3N0QmluZGluZyhcImNsYXNzLmZ1bGwtd2lkdGgtaW1wb3J0YW50XCIpXHJcbiAgcHVibGljIGZ1bGxXaWR0aDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgZXhjbHVkZVVzZXJNb2RlbENoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgbm9Gb3JtR3JvdXBDb250cm9sOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmZvcm0tc3VibWl0dGVkXCIpXHJcbiAgcHVibGljIGdldCBmb3JtU3VibWl0dGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbXBvbmVudCAmJiB0aGlzLmZvcm1Db21wb25lbnQuc3VibWl0dGVkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaGFzbm9sYWJlbFwiKVxyXG4gIHB1YmxpYyBnZXQgaGFzTm9MYWJlbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBpc05pbGwodGhpcy5sYWJlbCk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5oYXN2YWx1ZVwiKVxyXG4gIHB1YmxpYyBnZXQgaGFzVmFsdWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLm1vZGVsIHx8IFN0cmluZ1V0aWxzLklzU3RyaW5nV2l0aExlbmd0aCh0aGlzLm1vZGVsKSB8fCBOdW1iZXJVdGlscy5Jc051bWJlcih0aGlzLm1vZGVsKTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmludmFsaWRcIilcclxuICBwdWJsaWMgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tTdGF0ZSgpICYmICF0aGlzLmNvbnRyb2wudmFsaWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5kaXNhYmxlZFwiKVxyXG4gIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLnJlYWQtb25seVwiKVxyXG4gIHB1YmxpYyBnZXQgaXNSZWFkb25seSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5O1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MucmVxdWlyZWRcIilcclxuICBwdWJsaWMgZ2V0IGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1aXJlZDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNjLXRvdWNoZWQtaW52YWxpZFwiKVxyXG4gIHB1YmxpYyBnZXQgdG91Y2hlZEludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbEV4aXN0cygpICYmIHRoaXMuY29udHJvbC50b3VjaGVkICYmICF0aGlzLmNvbnRyb2wudmFsaWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy52YWxpZFwiKVxyXG4gIHB1YmxpYyBnZXQgdmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tTdGF0ZSgpICYmIHRoaXMuY29udHJvbC52YWxpZDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm5vLXZhbGlkYXRpb25cIilcclxuICBwdWJsaWMgZ2V0IHZhbGlkYXRpb25EaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5ub1ZhbGlkYXRpb247XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiY2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNhbkNoYW5nZSAmJiAhdGhpcy5ub0NsaWNrRm9jdXMpIHtcclxuICAgICAgdGhpcy5yZXF1ZXN0Rm9jdXMoKTtcclxuICAgICAgaWYgKCF0aGlzLmV4Y2x1ZGVVc2VyTW9kZWxDaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLm1hcmtBc1VzZXJUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJmb2N1c2luXCIpXHJcbiAgb25Gb2N1c0luKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmV4Y2x1ZGVVc2VyTW9kZWxDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5tYXJrQXNVc2VyVG91Y2hlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OnNjcm9sbFwiKVxyXG4gIHB1YmxpYyBoYW5kbGVEb2N1bWVudFNjcm9sbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Bvc2l0aW9uVmFsaWRhdGlvbkVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxyXG4gIHB1YmxpYyBoYW5kbGVXaW5kb3dSZXNpemUoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wb3NpdGlvblZhbGlkYXRpb25FcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcImtleWRvd25cIiwgW1wiJGV2ZW50XCJdKVxyXG4gIHB1YmxpYyBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zaG93U2F2ZUNhbmNlbCAmJiB0aGlzLmNhblNhdmVPckNhbmNlbCkge1xyXG4gICAgICB0aGlzLl9oYW5kbGVLZXlEb3duKGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQ2hhbmdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLnJlYWRvbmx5ICYmICF0aGlzLmRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjb250cm9sKCk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlID8gdGhpcy5fbXlGb3JtSW5wdXRJbnN0YW5jZS5jb250cm9sIDogdGhpcy5uZ01vZGVsICYmIHRoaXMubmdNb2RlbC5jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmb3JtSW5wdXRJbnN0YW5jZSgpOiBCYXNlSW5wdXRDb21wb25lbnQ8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2UgfHwgdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNEZXN0cm95ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVzdHJveWVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudDtcclxuXHJcbiAgcHVibGljIGtlZXBGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYW5TYXZlT3JDYW5jZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gQGltcGxlbWVudHMgQ29uZmlndXJhdGlvbkFkYXB0ZXJDb21wb25lbnRcclxuICBwdWJsaWMgb2JqZWN0Q29uZmlnTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBjb21taXR0aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGNvbW1pdEZpbmlzaGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblxyXG4gIHByb3RlY3RlZCBfbWFya2VkQXNVc2VyVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcm90ZWN0ZWQgX2Rlc3Ryb3llZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBfaGFzT25QdXNoQ2RTdHJhdGVneTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBfbW9kZWw6IFQ7XHJcbiAgcHJvdGVjdGVkIF9pbml0aWFsTW9kZWw6IFQ7XHJcbiAgcHJvdGVjdGVkIF9pbml0aWFsTW9kZWxTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfZXJyb3JWYWxpZGF0aW9uQ29tcG9uZW50OiBDb21wb25lbnRSZWY8VmFsaWRhdGlvbkVycm9yQ29tcG9uZW50PjtcclxuICBwcml2YXRlIF9kZWNpbWFsczogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2hpZGRlbjogYm9vbGVhbjtcclxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcclxuICBwcml2YXRlIF9tYXhMZW5ndGg6IG51bWJlcjtcclxuICBwcml2YXRlIF9yZWFkb25seTogYm9vbGVhbjtcclxuICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBfZm9yY2VSZWFkb25seTogYm9vbGVhbiA9IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gIHByaXZhdGUgX2FzeW5jVmFsaWRhdG9yczogQXN5bmNWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gIHByaXZhdGUgX3NwZWVjaFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX21vZGVsQ2hhbmdlU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfZm9ybUFueVN1Ym1pdFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX2Zvcm1SZWFkb25seUNoYW5nZVN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX2NsZWFyTWFya2VkQXNVc2VyVG91Y2hlZFN1YjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcm90ZWN0ZWQgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lcj86IEZvcm1JbnB1dFVzZXJNb2RlbENoYW5nZUxpc3RlbmVyU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBuZ1pvbmVXcmFwcGVyPzogTmdab25lV3JhcHBlclNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZWxlbWVudFJlZj86IEVsZW1lbnRSZWYsXHJcbiAgKSB7XHJcbiAgICBCYXNlSW5wdXRDb21wb25lbnQuQmFzZUZvcm1JbnB1dENvbXBvbmVudEluZGV4Kys7XHJcbiAgICB0aGlzLm5hbWUgPSBCYXNlSW5wdXRDb21wb25lbnQuQmFzZUZvcm1JbnB1dENvbXBvbmVudEluZGV4LnRvU3RyaW5nKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLl9jbGVhck1hcmtlZEFzVXNlclRvdWNoZWRTdWIgPSB0aGlzLmZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIuY2xlYXJBbGxNYXJrZWRBc1VzZXJUb3VjaGVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fbWFya2VkQXNVc2VyVG91Y2hlZCA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbW9kZWxDaGFuZ2VTdWIgPSB0aGlzLm1vZGVsQ2hhbmdlLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5tb2RlbCA9IHZhbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcHJlcGFyZUlucHV0KCk7XHJcblxyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG5cclxuICAgIHRoaXMuX2FkZE9yUmVtb3ZlU2VsZkZyb21Gb3JtKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUNvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLnJlYWRvbmx5ID0gdGhpcy5yZWFkb25seSB8fCB0aGlzLmZvcm1Db21wb25lbnQucmVhZG9ubHk7XHJcbiAgICAgIHRoaXMuX2Zvcm1SZWFkb25seUNoYW5nZVN1YiA9IHRoaXMuZm9ybUNvbXBvbmVudC5yZWFkb25seUNoYW5nZS5zdWJzY3JpYmUoKGlzRm9ybVJlYWRvbmx5OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWFkb25seSA9IGlzRm9ybVJlYWRvbmx5O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pbml0Rm9jdXMpIHtcclxuICAgICAgc2V0VGltZW91dCh0aGlzLnJlcXVlc3RGb2N1cy5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVtb3ZlU2VsZkZyb21Gb3JtKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgdGhpcy5pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgKGV2ZW50KSA9PiB0aGlzLmRvQmx1cihldmVudCkpO1xyXG4gICAgICB0aGlzLmlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKGV2ZW50KSA9PiB0aGlzLmRvRm9jdXMoZXZlbnQpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fY2xlYXJFcnJvckNvbXBvbmVudCgpO1xyXG5cclxuICAgIC8vIGlmICh0aGlzLnRvb2x0aXBNYW5hZ2VyICYmIHRoaXMuZWxlbWVudFJlZikge1xyXG4gICAgLy8gICAgIHRoaXMudG9vbHRpcE1hbmFnZXIuZGVzdHJveUVycm9yVG9vbHRpcE9mRWxlbWVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKHRoaXMuX21vZGVsQ2hhbmdlU3ViKSB7XHJcbiAgICAgIHRoaXMuX21vZGVsQ2hhbmdlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fc3BlZWNoU3ViKSB7XHJcbiAgICAgIHRoaXMuX3NwZWVjaFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2Zvcm1BbnlTdWJtaXRTdWIpIHtcclxuICAgICAgdGhpcy5fZm9ybUFueVN1Ym1pdFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2Zvcm1SZWFkb25seUNoYW5nZVN1Yikge1xyXG4gICAgICB0aGlzLl9mb3JtUmVhZG9ubHlDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9jbGVhck1hcmtlZEFzVXNlclRvdWNoZWRTdWIpIHtcclxuICAgICAgdGhpcy5fY2xlYXJNYXJrZWRBc1VzZXJUb3VjaGVkU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLl9yZW1vdmVTZWxmRnJvbUZvcm0oKTtcclxuICAgIHRoaXMuZWxlbWVudFJlZiA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmlucHV0ID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLy8gZGVzY2VuZGVudHMgc2hvdWxkIG92ZXJyaWRlIHRoaXNcclxuICBwdWJsaWMgY29tbWl0ID0gYXN5bmMgKG1vZGVsOiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgY29tbWl0Q2xpY2soZXZlbnQ/OiBNb3VzZUV2ZW50KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0aGlzLmtlZXBGb2N1cyA9IHRydWU7XHJcbiAgICB0aGlzLmNvbW1pdEZpbmlzaGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1pdHRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuY29tbWl0KHRoaXMubW9kZWwpO1xyXG4gICAgdGhpcy5rZWVwRm9jdXMgPSBmYWxzZTtcclxuICAgIGF3YWl0IHRoaXMuX2NvbW1pdEZpbmlzaGVkKCk7XHJcbiAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICB0aGlzLmRvQmx1cihldmVudCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VjY2VzcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWxDbGljayhldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMua2VlcEZvY3VzID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLl9pbml0aWFsTW9kZWxTZXQpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuX2luaXRpYWxNb2RlbDtcclxuICAgIH1cclxuICAgIHRoaXMua2VlcEZvY3VzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1ZhbGlkYXRpb25FcnJvcihlcnJvcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52YWxpZGF0aW9uRXJyb3JDb250YWluZXIpIHtcclxuICAgICAgaWYgKHRoaXMuX2Vycm9yVmFsaWRhdGlvbkNvbXBvbmVudCkge1xyXG4gICAgICAgIHRoaXMuX2NsZWFyRXJyb3JDb21wb25lbnQoKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PFZhbGlkYXRpb25FcnJvckNvbXBvbmVudD4gPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShWYWxpZGF0aW9uRXJyb3JDb21wb25lbnQpO1xyXG4gICAgICB0aGlzLl9lcnJvclZhbGlkYXRpb25Db21wb25lbnQgPSB0aGlzLnZhbGlkYXRpb25FcnJvckNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XHJcbiAgICAgIHRoaXMuX2Vycm9yVmFsaWRhdGlvbkNvbXBvbmVudC5pbnN0YW5jZS5lcnJvciA9IGVycm9yO1xyXG4gICAgICBpZiAodGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fcG9zaXRpb25WYWxpZGF0aW9uRXJyb3IoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGEgbW9kZWxDaGFuZ2UgZXZlbnQgd2l0aCBnaXZlbiB2YWx1ZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBtb2RlbCBvZiB0aGlzIGZvcm0gaW5wdXRcclxuICAgKiBoYXMgY2hhbmdlZCBhbmQgaXRzIG5ldyB2YWx1ZSBpcyBnaXZlbiB2YWx1ZS4gQWxzbyBlbWl0cyB1c2VyTW9kZWxDaGFuZ2UgaWYgbWFya2VkQXNVc2VyVG91Y2hlZC5cclxuICAgKi9cclxuICBwdWJsaWMgc2V0TW9kZWwodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RlbCA9IHZhbHVlO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHZhbHVlKTtcclxuXHJcbiAgICBpZiAodGhpcy5fbWFya2VkQXNVc2VyVG91Y2hlZCAmJiB0aGlzLmZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5mb3JtVXNlckNoYW5nZUxpc3RlbmVyLnVzZXJNb2RlbENoYW5nZS5uZXh0KHZhbHVlKTtcclxuICAgICAgdGhpcy51c2VyTW9kZWxDaGFuZ2UubmV4dCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVxdWVzdEZvY3VzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2FuQ2hhbmdlICYmIHRoaXMuaW5wdXQpIHtcclxuICAgICAgdGhpcy5pbnB1dC5mb2N1cygpO1xyXG4gICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSkge1xyXG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb0ZvY3VzKGV2ZW50PzogYW55KTogYW55IHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2luaXRpYWxNb2RlbFNldCA9IGZhbHNlO1xyXG4gICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuY2FuU2F2ZU9yQ2FuY2VsID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSkge1xyXG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb2N1cy5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG9CbHVyKGV2ZW50PzogYW55KTogYW55IHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5rZWVwRm9jdXMpIHtcclxuICAgICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICAgIHRoaXMuaW5wdXQuYmx1cigpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYmx1ci5uZXh0KCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2Rlc3Ryb3llZCkge1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBtYXJrRm9yQ2hlY2soKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2Rlc3Ryb3llZCkge1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRldGVjdENoYW5nZXNBZnRlckFuZ3VsYXIoKTogdm9pZCB7XHJcbiAgICBpZiAoISF0aGlzLm5nWm9uZVdyYXBwZXIpIHtcclxuICAgICAgdGhpcy5uZ1pvbmVXcmFwcGVyLnNldFRpbWVvdXRPdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9kZXN0cm95ZWQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGlua3MgdGhlIGdpdmVuIGZvcm1Db21wLnN1Ym1pdCBldmVudCB0byB0aGUgZmlyaW5nIG9mIGRldGVjdENoYW5nZXMoKSBvZiBnaXZlbiBjaGFuZ2UgZGV0ZWN0b3IuIFRoaXMgaXMgYSAndXRpbGl0eS1saWtlJyBtZXRob2QsXHJcbiAgICogYnV0IHdlIG1hbmFnZSB0aGUgYWN0dWFsIHN1YnNjcmlwdGlvbiAod2l0aCBVTlNVQlNDUklCRSgpISkgb24gdGhpcyBiYXNlIGNsYXNzLlxyXG4gICAqIEBwYXJhbSBmb3JtQ29tcCBUaGUgZm9ybSB3aG9zZSBzdWJtaXQgd2Ugd2FudCB0byBsaW5rIHdpdGggdGhlIGNhbGwgb2YgLmRldGVjdENoYW5nZXMoKSBvbiBnaXZlbiBjaGFuZ2UgZGV0ZWN0b3IgcmVmLlxyXG4gICAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiBUaGlzIHNob3VsZCBiZSBnaXZlbiBhcyBwYXJhbS4gSSBjaG9vc2Ugbm90IHRvIG1ha2UgdGhpcyBwYXJ0IG9mIG91ciAoQmFzZUZvcm1JbnB1dENvbXBvbmVudCkgY29uc3RydWN0b3IsXHJcbiAgICogYmVjYXVzZSB3ZSBhbHJlYWR5IGhhdmUgMjEgZXh0ZW5kZXJzLlxyXG4gICAqL1xyXG4gIC8vIHB1YmxpYyBsaW5rRm9ybUFueVN1Ym1pdFdpdGhEZXRlY3RDaGFuZ2VzKGZvcm1Db21wOiBGb3JtQ29tcG9uZW50LCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAvLyAgICAgaWYgKGZvcm1Db21wICYmIGNoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgLy8gICAgICAgICB0aGlzLl9mb3JtQW55U3VibWl0U3ViID0gZm9ybUNvbXAuYW55U3VibWl0LnN1YnNjcmliZSgoKCkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgIGlmICghdGhpcy5fZGVzdHJveWVkKSB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBtYXJrQXNVc2VyVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5yZWRFcnJvckJhY2tncm91bmQgPSBmYWxzZTsgLy8gbm90IHN1cmUgaWYgdGhpcyBpcyB0aGUgcmlnaHQgcGxhY2UgdG8gZG8gdGhhdFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyTWFya2VkQXNVc2VyVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vdXNlZCBmb3IgZGVzY2VuZGVudHMsIGJlY2F1c2UgZGVzY2VuZGVudHMgY2FuJ3Qgc2V0IHN1cGVyIHByb3BlcnRpZXMsIHNlZSBJbnB1dE51bWJlckNvbXBvbmVudFxyXG4gIHByb3RlY3RlZCBzZXRNYXhMZW5ndGgobWF4TGVuZ3RoOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChub3ROaWxsKHRoaXMuZm9yY2VkTWF4TGVuZ3RoKSB8fCBtYXhMZW5ndGggPT09IHRoaXMuX21heExlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFpc05hTihtYXhMZW5ndGgpKSB7XHJcbiAgICAgIHRoaXMuX21heExlbmd0aCA9IG1heExlbmd0aDtcclxuICAgICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9tYXJrQXNPblB1c2goKTogdm9pZCB7XHJcbiAgICB0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfY2hlY2tTdGF0ZSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLm5nTW9kZWwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZm9ybVN1Ym1pdHRlZCB8fCAodGhpcy5fY29udHJvbEV4aXN0cygpICYmIHRoaXMuY29udHJvbC50b3VjaGVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFBsYWNlIHZhbGlkYXRvcnMgb250byBvdXIgQW5ndWxhcidzIEZvcm1Db250cm9sLlxyXG4gIHByb3RlY3RlZCBfdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVyOiBFbGVtZW50UmVmID0gdGhpcy5teUZvcm1JbnB1dEluc3RhbmNlID8gdGhpcy5teUZvcm1JbnB1dEluc3RhbmNlLmVsZW1lbnRSZWYgOiB0aGlzLmVsZW1lbnRSZWY7XHJcbiAgICAvLyBpZiAodGhpcy50b29sdGlwTWFuYWdlciAmJiBlcikge1xyXG4gICAgLy8gICAgIHRoaXMudG9vbHRpcE1hbmFnZXIuZGVzdHJveUVycm9yVG9vbHRpcE9mRWxlbWVudChlci5uYXRpdmVFbGVtZW50KTtcclxuICAgIC8vIH1cclxuICAgIHRoaXMuX3NldE5hdGl2ZVJlcXVpcmVkKHRoaXMucmVxdWlyZWQpO1xyXG4gICAgdGhpcy5fc2V0TmF0aXZlTWF4TGVuZ3RoKHRoaXMubWF4TGVuZ3RoKTtcclxuICAgIHRoaXMuX3NldE5hdGl2ZURpc2FibGVkKHRoaXMuZGlzYWJsZWQpO1xyXG4gICAgdGhpcy5fc2V0TmF0aXZlUmVhZE9ubHkodGhpcy5yZWFkb25seSB8fCB0aGlzLmZvcmNlUmVhZG9ubHkpO1xyXG5cclxuICAgIHRoaXMucmVkRXJyb3JCYWNrZ3JvdW5kID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5fY29udHJvbEV4aXN0cygpKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICAgIC8vIGFkZCByZXF1aXJlZFxyXG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChyZXF1aXJlZFZhbGlkYXRvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGFkZCBtYXhsZW5ndGhcclxuICAgICAgaWYgKG5vdE5pbGwodGhpcy5fbWF4TGVuZ3RoKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmRlY2ltYWxzKSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2gocHJlY2lzaW9uU2NhbGVWYWxpZGF0b3IodGhpcy5fbWF4TGVuZ3RoLCB0aGlzLmRlY2ltYWxzKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChtYXhTdHJpbmdMZW5ndGhWYWxpZGF0b3IodGhpcy5fbWF4TGVuZ3RoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBhZGQgQElucHV0KCktZWQgdmFsaWRhdG9yc1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goLi4udGhpcy5fdmFsaWRhdG9ycyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5fdmFsaWRhdG9ycykge1xyXG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvcnMuZm9yRWFjaCh2YWxpZGF0b3IgPT4ge1xyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvciA9PT0gcmVxdWlyZWRWYWxpZGF0b3IpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9zZXROYXRpdmVSZXF1aXJlZCh0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5fYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbW1pdEZpbmlzaGVkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICB0aGlzLmNvbW1pdEZpbmlzaGVkID0gdHJ1ZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21taXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9LCA4MDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbGVhckVycm9yQ29tcG9uZW50KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmFsaWRhdGlvbkVycm9yQ29udGFpbmVyKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yQ29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICAgIGlmICh0aGlzLl9lcnJvclZhbGlkYXRpb25Db21wb25lbnQpIHtcclxuICAgICAgICB0aGlzLl9lcnJvclZhbGlkYXRpb25Db21wb25lbnQuZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuX2Vycm9yVmFsaWRhdGlvbkNvbXBvbmVudCA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIHdoZXRoZXIgdGhpcy5uZ01vZGVsLmNvbnRyb2wgaGFzIHNhZmUgYWNjZXNzXHJcbiAgcHJpdmF0ZSBfY29udHJvbEV4aXN0cygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm5nTW9kZWwgJiYgISF0aGlzLmNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb250cm9sSXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9sRXhpc3RzKCkgJiYgdGhpcy5jb250cm9sLnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0TmF0aXZlRGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0KSB7XHJcbiAgICAgIHRoaXMuaW5wdXQuZGlzYWJsZWQgPSBkaXNhYmxlZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE5hdGl2ZU1heExlbmd0aChtYXhsZW5ndGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5wdXQgJiYgIWlzTmFOKG1heGxlbmd0aCkpIHtcclxuICAgICAgdGhpcy5pbnB1dC5tYXhMZW5ndGggPSBtYXhsZW5ndGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX3NldE5hdGl2ZVJlYWRPbmx5KHJlYWRvbmx5OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICB0aGlzLmlucHV0LnJlYWRPbmx5ID0gcmVhZG9ubHk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXROYXRpdmVSZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgdGhpcy5pbnB1dC5yZXF1aXJlZCA9IHJlcXVpcmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9TcGVlY2hJbnB1dCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuX3NwZWVjaFN1YiA9IHRoaXMuc3BlZWNoSW5wdXQuc3BlZWNoSW5wdXQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKHRoaXMuZm9jdXNlZCAmJiB0aGlzLl9jb250cm9sRXhpc3RzKCkpIHtcclxuICAgIC8vICAgICAgICAgY29uc3QgdmFsOiBzdHJpbmcgPSB0aGlzLmNvbnRyb2wudmFsdWU7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuc2V0TW9kZWwoKFN0cmluZ1V0aWxzLklzU3RyaW5nKHZhbCkgPyB2YWwgOiAnJykgKyBkYXRhKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FkZE9yUmVtb3ZlU2VsZkZyb21Gb3JtKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGlkZGVuKSB7XHJcbiAgICAgIHRoaXMuX3JlbW92ZVNlbGZGcm9tRm9ybSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fYWRkU2VsZlRvRm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlU2VsZkluRm9ybSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1Db21wb25lbnQpIHtcclxuICAgICAgdGhpcy5mb3JtQ29tcG9uZW50LnVwZGF0ZUZvcm1JbnB1dCh0aGlzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbW92ZVNlbGZGcm9tRm9ybSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1Db21wb25lbnQgJiYgdGhpcy5uZ01vZGVsKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBvbmVudC5yZW1vdmVGb3JtSW5wdXQodGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hZGRTZWxmVG9Gb3JtKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbXBvbmVudCAmJiB0aGlzLm5nTW9kZWwgJiYgIXRoaXMubm9Gb3JtR3JvdXBDb250cm9sKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBvbmVudC5yZW1vdmVGb3JtSW5wdXQodGhpcyk7IC8vIHByZXZlbnRpbmcgdGhlcmUgYXJlIHR3byBjb250cm9scyBpbiBmb3JtZ3JvdXAgd2hlbiBteUZvcm1JbnB1dEluc3RhbmNlIGlzIChiZWluZykgc2V0XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBvbmVudC5hZGRGb3JtSW5wdXQodGhpcy5teUZvcm1JbnB1dEluc3RhbmNlID8gdGhpcy5teUZvcm1JbnB1dEluc3RhbmNlIDogdGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlSW5wdXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5lbGVtZW50UmVmICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIC8vdHJ5IHRvIGZpbmQgaW5wdXQgZWxlbWVudFxyXG4gICAgICB0aGlzLl9maW5kSW5wdXROb2RlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKTtcclxuICAgICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZXZlbnQpID0+IHRoaXMuZG9CbHVyKGV2ZW50KSk7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIChldmVudCkgPT4gdGhpcy5kb0ZvY3VzKGV2ZW50KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbmRJbnB1dE5vZGUobm9kZXMpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xyXG4gICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmlucHV0ID0gbm9kZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfSBlbHNlIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZmluZElucHV0Tm9kZShub2RlLmNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcG9zaXRpb25WYWxpZGF0aW9uRXJyb3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5lbGVtZW50UmVmICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ICYmIHRoaXMuX2Vycm9yVmFsaWRhdGlvbkNvbXBvbmVudCkge1xyXG4gICAgICBjb25zdCBjbGllbnRSZWN0OiBDbGllbnRSZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIHRoaXMuX2Vycm9yVmFsaWRhdGlvbkNvbXBvbmVudC5pbnN0YW5jZS50b3AgPSBjbGllbnRSZWN0LmJvdHRvbTtcclxuICAgICAgdGhpcy5fZXJyb3JWYWxpZGF0aW9uQ29tcG9uZW50Lmluc3RhbmNlLmxlZnQgPSBjbGllbnRSZWN0LmxlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xyXG4gICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNvbW1pdENsaWNrKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjYXNlICdUYWInOlxyXG4gICAgICAgIGNvbnN0IG5leHRTaWJsaW5nVG9Gb2N1cyA9IGV2ZW50LnNoaWZ0S2V5ID8gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgYW55KS5wcmV2aW91c1NpYmxpbmcgOiAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBhbnkpLm5leHRTaWJsaW5nO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuY29tbWl0Q2xpY2soKTtcclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgaWYgKG5leHRTaWJsaW5nVG9Gb2N1cykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3NldEZvY3VzT25OZXh0UG9zc2libGVJbnB1dChuZXh0U2libGluZ1RvRm9jdXMsIGV2ZW50LnNoaWZ0S2V5KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgY2FzZSAnRXNjYXBlJzpcclxuICAgICAgICB0aGlzLmNhbmNlbENsaWNrKCk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVOZXdGb2N1c0V2ZW50KGVsZW1lbnQ6IGFueSk6IEV2ZW50IHtcclxuICAgIGxldCBldmVudFR5cGUgPSBcIm9uZm9jdXNpblwiIGluIGVsZW1lbnQgPyBcImZvY3VzaW5cIiA6IFwiZm9jdXNcIixcclxuICAgICAgYnViYmxlcyA9IFwib25mb2N1c2luXCIgaW4gZWxlbWVudCxcclxuICAgICAgZm9jdXNFdmVudDtcclxuXHJcbiAgICBpZiAoXCJjcmVhdGVFdmVudFwiIGluIGRvY3VtZW50KSB7XHJcbiAgICAgIGZvY3VzRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50XCIpO1xyXG4gICAgICBmb2N1c0V2ZW50LmluaXRFdmVudChldmVudFR5cGUsIGJ1YmJsZXMsIHRydWUpO1xyXG4gICAgfSBlbHNlIGlmIChcIkV2ZW50XCIgaW4gd2luZG93KSB7XHJcbiAgICAgIGZvY3VzRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnRUeXBlLCB7IGJ1YmJsZXM6IGJ1YmJsZXMsIGNhbmNlbGFibGU6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9jdXNFdmVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEZvY3VzT25OZXh0UG9zc2libGVJbnB1dChlbGVtZW50OiBhbnksIHByZXZpb3VzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50Q29sbCA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7XHJcbiAgICBpZiAoZWxlbWVudENvbGwgJiYgZWxlbWVudENvbGwubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBlbGVtZW50Q29sbFswXTtcclxuICAgICAgaWYgKGlucHV0RWxlbWVudC5kaXNhYmxlZCB8fCBpbnB1dEVsZW1lbnQucmVhZE9ubHkpIHtcclxuICAgICAgICB0aGlzLl9zZXRGb2N1c09uTmV4dFBvc3NpYmxlSW5wdXQocHJldmlvdXMgPyBlbGVtZW50LnByZXZpb3VzU2libGluZyA6IGVsZW1lbnQubmV4dFNpYmxpbmcsIHByZXZpb3VzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBmb2N1c0V2ZW50ID0gdGhpcy5fY3JlYXRlTmV3Rm9jdXNFdmVudChlbGVtZW50KTtcclxuICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICBpbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChmb2N1c0V2ZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -19,6 +19,7 @@ export class DropDownListComponent extends BaseInputComponent {
|
|
|
19
19
|
* Where 'text' is showing in the dropdown and 'id' used for the model binding
|
|
20
20
|
*/
|
|
21
21
|
this.fields = {};
|
|
22
|
+
this.allowFiltering = false;
|
|
22
23
|
super._markAsOnPush();
|
|
23
24
|
}
|
|
24
25
|
showClass() {
|
|
@@ -36,8 +37,11 @@ DropDownListComponent.decorators = [
|
|
|
36
37
|
template: `
|
|
37
38
|
<ejs-dropdownlist
|
|
38
39
|
[dataSource]="collection"
|
|
40
|
+
[allowFiltering]="allowFiltering"
|
|
39
41
|
[value]="model"
|
|
40
42
|
[fields]="fields"
|
|
43
|
+
[filterBarPlaceholder]="filterBarPlaceholder"
|
|
44
|
+
[filterType]="filterType"
|
|
41
45
|
[placeholder]="placeholder"
|
|
42
46
|
[readonly]="readonly"
|
|
43
47
|
[itemTemplate]="itemTemplate"
|
|
@@ -79,9 +83,12 @@ DropDownListComponent.propDecorators = {
|
|
|
79
83
|
collection: [{ type: Input }],
|
|
80
84
|
fields: [{ type: Input }],
|
|
81
85
|
placeholder: [{ type: Input }],
|
|
86
|
+
allowFiltering: [{ type: Input }],
|
|
87
|
+
filterBarPlaceholder: [{ type: Input }],
|
|
88
|
+
filterType: [{ type: Input }],
|
|
82
89
|
itemTemplate: [{ type: Input }],
|
|
83
90
|
headerTemplate: [{ type: Input }],
|
|
84
91
|
valueTemplate: [{ type: Input }],
|
|
85
92
|
showClass: [{ type: HostBinding, args: ["class.co-drop-down-list",] }]
|
|
86
93
|
};
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi1saXN0L2Ryb3AtZG93bi1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCx3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFFUixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDbkgsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBd0NyRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsa0JBQXVCO0lBdUNoRSxZQUNxQixhQUE0QixFQUNyQyxjQUFpQyxFQUNqQyx3QkFBa0QsRUFDbEQsc0JBQWdFLEVBQ2hFLGFBQW9DLEVBQ3ZDLFVBQXVCO1FBRTlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBUGhGLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3JDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBMEM7UUFDaEUsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQWE7UUF4Q2hDOzs7V0FHRztRQUVJLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFNcEIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFnQ3JDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBZE0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQWNNLGtCQUFrQixDQUFDLEtBQVU7UUFDbEMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7OztZQTdGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1Qsd0JBQXdCO29CQUN4Qjt3QkFDRSxPQUFPLEVBQUUsd0JBQXdCO3dCQUNqQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO3FCQUNyRCxFQUFFO3dCQUNELE9BQU8sRUFBRSxrQkFBa0I7d0JBQzNCLFdBQVcsRUFBRSxxQkFBcUI7cUJBQ25DO2lCQUNGO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUF2Q08sYUFBYSx1QkFnRmhCLFFBQVE7WUFoR1gsaUJBQWlCO1lBRWpCLHdCQUF3QjtZQVlsQix1Q0FBdUM7WUFDdkMsb0JBQW9CO1lBWjFCLFVBQVU7Ozt5QkF1RFQsS0FBSztxQkFPTCxLQUFLOzBCQUdMLEtBQUs7NkJBR0wsS0FBSzttQ0FHTCxLQUFLO3lCQUlMLEtBQUs7MkJBR0wsS0FBSzs2QkFHTCxLQUFLOzRCQUdMLEtBQUs7d0JBR0wsV0FBVyxTQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRX0gZnJvbSBcIi4uL2Jhc2UvY29tcG9uZW50LWludGVyZmFjZS1uYW1lXCI7XHJcbmltcG9ydCB7QmFzZUlucHV0Q29tcG9uZW50fSBmcm9tIFwiLi4vYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0NoZWNrQm94U2VsZWN0aW9uU2VydmljZX0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRyb3Bkb3duc1wiO1xyXG5pbXBvcnQge0Zvcm1JbnB1dFVzZXJNb2RlbENoYW5nZUxpc3RlbmVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9mb3JtLWlucHV0LXVzZXItY2hhbmdlLWxpc3RlbmVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtOZ1pvbmVXcmFwcGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gXCIuLi9mb3JtL2Zvcm0uY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1kcm9wLWRvd24tbGlzdFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZWpzLWRyb3Bkb3dubGlzdFxyXG4gICAgICBbZGF0YVNvdXJjZV09XCJjb2xsZWN0aW9uXCJcclxuICAgICAgW2FsbG93RmlsdGVyaW5nXT1cImFsbG93RmlsdGVyaW5nXCJcclxuICAgICAgW3ZhbHVlXT1cIm1vZGVsXCJcclxuICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxyXG4gICAgICBbZmlsdGVyQmFyUGxhY2Vob2xkZXJdPVwiZmlsdGVyQmFyUGxhY2Vob2xkZXJcIlxyXG4gICAgICBbZmlsdGVyVHlwZV09XCJmaWx0ZXJUeXBlXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxyXG4gICAgICBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIlxyXG4gICAgICBbdmFsdWVUZW1wbGF0ZV09XCJ2YWx1ZVRlbXBsYXRlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgW25nTW9kZWxdPVwibW9kZWxcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RlbENoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICBzaG93Q2xlYXJCdXR0b249XCJ0cnVlXCJcclxuICAgICAgZmxvYXRMYWJlbFR5cGU9XCJBdXRvXCJcclxuICAgID5cclxuICAgIDwvZWpzLWRyb3Bkb3dubGlzdD5cclxuICAgIDxkaXYgY2xhc3M9XCJyZXF1aXJlZC1pbmRpY2F0b3JcIj48L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdmFsaWRhdGlvbkVycm9yPjwvbmctdGVtcGxhdGU+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIENoZWNrQm94U2VsZWN0aW9uU2VydmljZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEcm9wRG93bkxpc3RDb21wb25lbnQpXHJcbiAgICB9LCB7XHJcbiAgICAgIHByb3ZpZGU6IEJhc2VJbnB1dENvbXBvbmVudCxcclxuICAgICAgdXNlRXhpc3Rpbmc6IERyb3BEb3duTGlzdENvbXBvbmVudFxyXG4gICAgfVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcERvd25MaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0Q29tcG9uZW50PGFueT4ge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb2xsZWN0aW9uOiBhbnlbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW4gdGhlIGZvcm0geyB0ZXh0OiAnbmFtZScsIHZhbHVlOiAnaWQnIH1cclxuICAgKiBXaGVyZSAndGV4dCcgaXMgc2hvd2luZyBpbiB0aGUgZHJvcGRvd24gYW5kICdpZCcgdXNlZCBmb3IgdGhlIG1vZGVsIGJpbmRpbmdcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBmaWVsZHM6IE9iamVjdCA9IHt9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhbGxvd0ZpbHRlcmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBmaWx0ZXJCYXJQbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICAvLyAnU3RhcnRzV2l0aCcgb3IgJ0VuZHNXaXRoJyBvciAnQ29udGFpbnMnXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZmlsdGVyVHlwZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB2YWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1kcm9wLWRvd24tbGlzdFwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGZvcm1Db21wb25lbnQ6IEZvcm1Db21wb25lbnQsXHJcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJvdGVjdGVkIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJvdGVjdGVkIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXI/OiBGb3JtSW5wdXRVc2VyTW9kZWxDaGFuZ2VMaXN0ZW5lclNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgbmdab25lV3JhcHBlcj86IE5nWm9uZVdyYXBwZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmLFxyXG4gICkge1xyXG4gICAgc3VwZXIoY2hhbmdlRGV0ZWN0b3IsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lciwgbmdab25lV3JhcHBlciwgZWxlbWVudFJlZik7XHJcbiAgICBzdXBlci5fbWFya0FzT25QdXNoKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5tb2RlbCkge1xyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLm5leHQodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -28,6 +28,7 @@ InputDateRangePickerComponent.decorators = [
|
|
|
28
28
|
selector: "co-input-date-range",
|
|
29
29
|
template: `
|
|
30
30
|
<ejs-daterangepicker
|
|
31
|
+
floatLabelType="Auto"
|
|
31
32
|
[format]="dateFormat"
|
|
32
33
|
[placeholder]="placeholder"
|
|
33
34
|
[ngModel]="model"
|
|
@@ -57,4 +58,4 @@ InputDateRangePickerComponent.propDecorators = {
|
|
|
57
58
|
cleared: [{ type: Output }],
|
|
58
59
|
showClass: [{ type: HostBinding, args: ["class.co-input-date-range-picker",] }]
|
|
59
60
|
};
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LWRhdGUtcmFuZ2UtcGlja2VyL2lucHV0LWRhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQXNCaEUsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGtCQUF3QjtJQXBCM0U7O1FBdUJTLGVBQVUsR0FBVyxZQUFZLENBQUM7UUFHbEMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFTekIsb0JBQWUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUcvRCxrQkFBYSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzdELG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFHbkUsVUFBSyxHQUFxQixJQUFJLFlBQVksRUFBTSxDQUFDO1FBR2pELFdBQU0sR0FBcUIsSUFBSSxZQUFZLEVBQU0sQ0FBQztRQUdsRCxZQUFPLEdBQXFCLElBQUksWUFBWSxFQUFNLENBQUM7SUFlNUQsQ0FBQztJQVpRLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQzs7O1lBaEVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7eUJBR0UsS0FBSzswQkFHTCxLQUFLO3dCQUdMLEtBQUs7c0JBR0wsS0FBSzs4QkFHTCxNQUFNOzRCQUdOLE1BQU07OEJBR04sTUFBTTtvQkFHTixNQUFNO3FCQUdOLE1BQU07c0JBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Jhc2VJbnB1dENvbXBvbmVudH0gZnJvbSBcIi4uL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLWlucHV0LWRhdGUtcmFuZ2VcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGVqcy1kYXRlcmFuZ2VwaWNrZXJcclxuICAgICAgZmxvYXRMYWJlbFR5cGU9XCJBdXRvXCJcclxuICAgICAgW2Zvcm1hdF09XCJkYXRlRm9ybWF0XCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgW25nTW9kZWxdPVwibW9kZWxcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJyYW5nZUNoYW5nZSgpXCJcclxuICAgICAgKGNsb3NlKT1cImNsb3NlLm5leHQoJGV2ZW50KVwiXHJcbiAgICAgIChzZWxlY3QpPVwic2VsZWN0Lm5leHQoJGV2ZW50KVwiXHJcbiAgICAgIChjbGVhcmVkKT1cImNsZWFyZWQubmV4dCgkZXZlbnQpXCJcclxuICAgICAgWyhzdGFydERhdGUpXT1cInN0YXJ0RGF0ZVwiXHJcbiAgICAgIFsoZW5kRGF0ZSldPVwiZW5kRGF0ZVwiXHJcbiAgICA+PC9lanMtZGF0ZXJhbmdlcGlja2VyPlxyXG4gICAgPGRpdiBjbGFzcz1cInJlcXVpcmVkLWluZGljYXRvclwiPjwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICN2YWxpZGF0aW9uRXJyb3I+PC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0Q29tcG9uZW50PERhdGU+IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGF0ZUZvcm1hdDogc3RyaW5nID0gXCJkZC1NTS15eXl5XCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdGFydERhdGU6IERhdGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVuZERhdGU6IERhdGU7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzdGFydERhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVuZERhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGRhdGVSYW5nZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGVbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsb3NlOiBFdmVudEVtaXR0ZXI8e30+ID0gbmV3IEV2ZW50RW1pdHRlcjx7fT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNlbGVjdDogRXZlbnRFbWl0dGVyPHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbGVhcmVkOiBFdmVudEVtaXR0ZXI8e30+ID0gbmV3IEV2ZW50RW1pdHRlcjx7fT4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28taW5wdXQtZGF0ZS1yYW5nZS1waWNrZXJcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmFuZ2VDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5lbWl0KHRoaXMuc3RhcnREYXRlKTtcclxuICAgIHRoaXMuZW5kRGF0ZUNoYW5nZS5lbWl0KHRoaXMuZW5kRGF0ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLmRhdGVSYW5nZUNoYW5nZS5lbWl0KFt0aGlzLnN0YXJ0RGF0ZSwgdGhpcy5lbmREYXRlXSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
1
2
|
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
3
|
import { CoreComponentsIcon } from '../../core/enum/core-components-icon.enum';
|
|
3
4
|
import { BaseInputComponent } from '../base/base-input.component';
|
|
5
|
+
import { InputBoolean } from "../../core/decorator/input-boolean.decorator";
|
|
4
6
|
export class InputSearchComponent extends BaseInputComponent {
|
|
5
7
|
constructor() {
|
|
6
8
|
super(...arguments);
|
|
7
9
|
this.searchIcon = CoreComponentsIcon.Magnifier;
|
|
8
|
-
this.iconRight = false;
|
|
9
|
-
this.noIcon = false;
|
|
10
10
|
this.search = new EventEmitter();
|
|
11
|
+
this.useLeftIcon = false;
|
|
12
|
+
this.useRightIcon = false;
|
|
11
13
|
}
|
|
12
14
|
showClass() {
|
|
13
15
|
return true;
|
|
@@ -27,8 +29,8 @@ InputSearchComponent.decorators = [
|
|
|
27
29
|
template: `
|
|
28
30
|
<co-input-text
|
|
29
31
|
[model]="model"
|
|
30
|
-
[leftIcon]="
|
|
31
|
-
[rightIcon]="
|
|
32
|
+
[leftIcon]="useLeftIcon ? searchIcon : null"
|
|
33
|
+
[rightIcon]="useRightIcon ? searchIcon : null"
|
|
32
34
|
[placeholder]="placeholder"
|
|
33
35
|
[showPlaceholderOnFocus]="false"
|
|
34
36
|
(modelChange)="modelChange.emit($event)"
|
|
@@ -40,9 +42,15 @@ InputSearchComponent.decorators = [
|
|
|
40
42
|
];
|
|
41
43
|
InputSearchComponent.propDecorators = {
|
|
42
44
|
placeholder: [{ type: Input }],
|
|
43
|
-
iconRight: [{ type: Input }],
|
|
44
|
-
noIcon: [{ type: HostBinding, args: ['class.no-icon',] }, { type: Input }],
|
|
45
45
|
search: [{ type: Output }],
|
|
46
|
+
useLeftIcon: [{ type: Input }],
|
|
47
|
+
useRightIcon: [{ type: Input }],
|
|
46
48
|
showClass: [{ type: HostBinding, args: ['class.co-input-search',] }]
|
|
47
49
|
};
|
|
48
|
-
|
|
50
|
+
__decorate([
|
|
51
|
+
InputBoolean()
|
|
52
|
+
], InputSearchComponent.prototype, "useLeftIcon", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
InputBoolean()
|
|
55
|
+
], InputSearchComponent.prototype, "useRightIcon", void 0);
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1zZWFyY2gvaW5wdXQtc2VhcmNoLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFFWCxLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFpQjFFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxrQkFBMEI7SUFmcEU7O1FBaUJrQixlQUFVLEdBQXVCLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztRQU12RSxXQUFNLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFJMUQsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFJN0IsaUJBQVksR0FBWSxLQUFLLENBQUM7SUFnQnZDLENBQUM7SUFaUSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQW9CO1FBQ3ZDLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNsQixLQUFLLE9BQU87Z0JBQ1YsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdCLE9BQU87U0FDVjtJQUNILENBQUM7OztZQTlDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsUUFBUSxFQUFFOzs7Ozs7Ozs7R0FTVDtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OzswQkFLRSxLQUFLO3FCQUdMLE1BQU07MEJBR04sS0FBSzsyQkFJTCxLQUFLO3dCQUtMLFdBQVcsU0FBQyx1QkFBdUI7O0FBUHBDO0lBREMsWUFBWSxFQUFFO3lEQUNxQjtBQUlwQztJQURDLFlBQVksRUFBRTswREFDc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb3JlQ29tcG9uZW50c0ljb259IGZyb20gJy4uLy4uL2NvcmUvZW51bS9jb3JlLWNvbXBvbmVudHMtaWNvbi5lbnVtJztcclxuaW1wb3J0IHtCYXNlSW5wdXRDb21wb25lbnR9IGZyb20gJy4uL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbn0gZnJvbSBcIi4uLy4uL2NvcmUvZGVjb3JhdG9yL2lucHV0LWJvb2xlYW4uZGVjb3JhdG9yXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLWlucHV0LXNlYXJjaCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1pbnB1dC10ZXh0XHJcbiAgICAgIFttb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgIFtsZWZ0SWNvbl09XCJ1c2VMZWZ0SWNvbiA/IHNlYXJjaEljb24gOiBudWxsXCJcclxuICAgICAgW3JpZ2h0SWNvbl09XCJ1c2VSaWdodEljb24gPyBzZWFyY2hJY29uIDogbnVsbFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFtzaG93UGxhY2Vob2xkZXJPbkZvY3VzXT1cImZhbHNlXCJcclxuICAgICAgKG1vZGVsQ2hhbmdlKT1cIm1vZGVsQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gIGAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRTZWFyY2hDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQ8c3RyaW5nPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hJY29uOiBDb3JlQ29tcG9uZW50c0ljb24gPSBDb3JlQ29tcG9uZW50c0ljb24uTWFnbmlmaWVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2VhcmNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyB1c2VMZWZ0SWNvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyB1c2VSaWdodEljb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28taW5wdXQtc2VhcmNoJylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgIGNhc2UgJ0VudGVyJzpcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoLm5leHQodGhpcy5tb2RlbCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -53,6 +53,7 @@ InputTextComponent.decorators = [
|
|
|
53
53
|
template: `
|
|
54
54
|
<label *ngIf="showPlaceholderOnFocus || (!showPlaceholderOnFocus && !hasValue && !focused)" [textContent]="placeholder"></label>
|
|
55
55
|
<co-icon *ngIf="leftIcon" class="input-text-left-icon" [icon]="leftIcon"></co-icon>
|
|
56
|
+
<co-icon *ngIf="rightIcon" class="input-text-right-icon" [icon]="rightIcon"></co-icon>
|
|
56
57
|
<input #input
|
|
57
58
|
[type]="type"
|
|
58
59
|
[ngModel]="model"
|
|
@@ -62,7 +63,6 @@ InputTextComponent.decorators = [
|
|
|
62
63
|
[required]="required"
|
|
63
64
|
(ngModelChange)="modelChange.emit($event)"
|
|
64
65
|
>
|
|
65
|
-
<co-icon *ngIf="rightIcon" class="input-text-right-icon" [icon]="rightIcon"></co-icon>
|
|
66
66
|
<co-commit-buttons *ngIf="showSaveCancel && focused && canSaveOrCancel"
|
|
67
67
|
[committing]="committing"
|
|
68
68
|
[commitFinished]="commitFinished"
|
|
@@ -107,4 +107,4 @@ InputTextComponent.propDecorators = {
|
|
|
107
107
|
hasOwnLabel: [{ type: HostBinding, args: ["class.has-own-label",] }],
|
|
108
108
|
hideArrowButtons: [{ type: Input }, { type: HostBinding, args: ['class.hideArrows',] }]
|
|
109
109
|
};
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQtdGV4dC9pbnB1dC10ZXh0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCx3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFDUixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFHMUUsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDbkgsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBcUNyRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsa0JBQXVCO0lBb0U3RCxZQUNxQixhQUE0QixFQUNyQyxjQUFpQyxFQUNqQyx3QkFBa0QsRUFDbEQsc0JBQWdFLEVBQ2hFLGFBQW9DLEVBQ3ZDLFVBQXVCO1FBRTlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBUGhGLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3JDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBMEM7UUFDaEUsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQWE7UUF2RXpCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBR3pCLFNBQUksR0FBVyxNQUFNLENBQUM7UUFTdEIsb0JBQWUsR0FBWSxTQUFTLENBQUM7UUFNckMsMkJBQXNCLEdBQVksSUFBSSxDQUFDO1FBeUN2QyxnQkFBVyxHQUFZLElBQUksQ0FBQztRQUk1QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFXdkMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFoREQsSUFBVyxLQUFLLENBQUMsS0FBVTtRQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNoRSxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7YUFDbEM7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7YUFDckI7U0FDRjthQUFNO1lBQ0wsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFHTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFDVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQ1csWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDO0lBQ2pFLENBQUM7OztZQTdGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCVDtnQkFDRCxTQUFTLEVBQUUsQ0FBQzt3QkFDVixPQUFPLEVBQUUsd0JBQXdCO3dCQUNqQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO3FCQUNsRCxFQUFFO3dCQUNELE9BQU8sRUFBRSxrQkFBa0I7d0JBQzNCLFdBQVcsRUFBRSxrQkFBa0I7cUJBQ2hDLENBQUM7Z0JBQ0YsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXBDTyxhQUFhLHVCQTBHaEIsUUFBUTtZQTFIWCxpQkFBaUI7WUFFakIsd0JBQXdCO1lBWWxCLHVDQUF1QztZQUN2QyxvQkFBb0I7WUFaMUIsVUFBVTs7OzBCQW9EVCxLQUFLO21CQUdMLEtBQUs7a0JBR0wsS0FBSztrQkFHTCxLQUFLOzhCQUdMLEtBQUs7K0JBR0wsS0FBSztxQ0FHTCxLQUFLO3VCQUdMLEtBQUs7d0JBSUwsS0FBSzt3QkFtQkwsV0FBVyxTQUFDLHFCQUFxQjswQkFLakMsV0FBVyxTQUFDLHFCQUFxQjsyQkFLakMsV0FBVyxTQUFDLHNCQUFzQjswQkFLbEMsV0FBVyxTQUFDLHFCQUFxQjsrQkFHakMsS0FBSyxZQUNMLFdBQVcsU0FBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Jhc2VJbnB1dENvbXBvbmVudH0gZnJvbSBcIi4uL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtDT01QT05FTlRfSU5URVJGQUNFX05BTUV9IGZyb20gXCIuLi9iYXNlL2NvbXBvbmVudC1pbnRlcmZhY2UtbmFtZVwiO1xyXG5pbXBvcnQge0NvcmVDb21wb25lbnRzSWNvbn0gZnJvbSBcIi4uLy4uL2NvcmUvZW51bS9jb3JlLWNvbXBvbmVudHMtaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7S2V5Ym9hcmRDb2RlfSBmcm9tIFwiLi4vLi4vY29yZS9lbnVtL2tleWJvYXJkLWNvZGUuZW51bVwiO1xyXG5pbXBvcnQge0Zvcm1JbnB1dFVzZXJNb2RlbENoYW5nZUxpc3RlbmVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9mb3JtLWlucHV0LXVzZXItY2hhbmdlLWxpc3RlbmVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtOZ1pvbmVXcmFwcGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gXCIuLi9mb3JtL2Zvcm0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28taW5wdXQtdGV4dFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bGFiZWwgKm5nSWY9XCJzaG93UGxhY2Vob2xkZXJPbkZvY3VzIHx8ICghc2hvd1BsYWNlaG9sZGVyT25Gb2N1cyAmJiAhaGFzVmFsdWUgJiYgIWZvY3VzZWQpXCIgW3RleHRDb250ZW50XT1cInBsYWNlaG9sZGVyXCI+PC9sYWJlbD5cclxuICAgIDxjby1pY29uICpuZ0lmPVwibGVmdEljb25cIiBjbGFzcz1cImlucHV0LXRleHQtbGVmdC1pY29uXCIgW2ljb25dPVwibGVmdEljb25cIj48L2NvLWljb24+XHJcbiAgICA8Y28taWNvbiAqbmdJZj1cInJpZ2h0SWNvblwiIGNsYXNzPVwiaW5wdXQtdGV4dC1yaWdodC1pY29uXCIgW2ljb25dPVwicmlnaHRJY29uXCI+PC9jby1pY29uPlxyXG4gICAgPGlucHV0ICNpbnB1dFxyXG4gICAgICAgICAgIFt0eXBlXT1cInR5cGVcIlxyXG4gICAgICAgICAgIFtuZ01vZGVsXT1cIm1vZGVsXCJcclxuICAgICAgICAgICBbbWluXT1cInR5cGUgPT09ICdudW1iZXInICYmIHRoaXMubWluID8gdGhpcy5taW4gOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgIFttYXhdPVwidHlwZSA9PT0gJ251bWJlcicgJiYgdGhpcy5tYXggPyB0aGlzLm1heCA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGVsQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8Y28tY29tbWl0LWJ1dHRvbnMgKm5nSWY9XCJzaG93U2F2ZUNhbmNlbCAmJiBmb2N1c2VkICYmIGNhblNhdmVPckNhbmNlbFwiXHJcbiAgICAgIFtjb21taXR0aW5nXT1cImNvbW1pdHRpbmdcIlxyXG4gICAgICBbY29tbWl0RmluaXNoZWRdPVwiY29tbWl0RmluaXNoZWRcIlxyXG4gICAgICAoY29tbWl0Q2xpY2spPVwiY29tbWl0Q2xpY2soJGV2ZW50KVwiXHJcbiAgICAgIChjYW5jZWxDbGljayk9XCJjYW5jZWxDbGljaygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvY28tY29tbWl0LWJ1dHRvbnM+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmVxdWlyZWQtaW5kaWNhdG9yXCI+PC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI3ZhbGlkYXRpb25FcnJvcj48L25nLXRlbXBsYXRlPlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRUZXh0Q29tcG9uZW50KVxyXG4gIH0sIHtcclxuICAgIHByb3ZpZGU6IEJhc2VJbnB1dENvbXBvbmVudCxcclxuICAgIHVzZUV4aXN0aW5nOiBJbnB1dFRleHRDb21wb25lbnRcclxuICB9XSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFRleHRDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQ8YW55PiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHlwZTogc3RyaW5nID0gXCJ0ZXh0XCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG1pbjogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtYXg6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0NsZWFyQnV0dG9uOiBib29sZWFuID0gdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBrZXlEb3duV2hpdGVMaXN0OiBLZXlib2FyZENvZGVbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd1BsYWNlaG9sZGVyT25Gb2N1czogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxlZnRJY29uOiBDb3JlQ29tcG9uZW50c0ljb247XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByaWdodEljb246IENvcmVDb21wb25lbnRzSWNvbjtcclxuXHJcbiAgcHVibGljIHNldCBtb2RlbCh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnbnVtYmVyJyAmJiAhaXNOYU4odmFsdWUpKSB7XHJcbiAgICAgIGlmICh0aGlzLm1pbiAmJiB2YWx1ZSA8IHRoaXMubWluIHx8IHRoaXMubWF4ICYmIHZhbHVlID4gdGhpcy5tYXgpIHtcclxuICAgICAgICBzdXBlci5tb2RlbCA9IHRoaXMuX2luaXRpYWxNb2RlbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzdXBlci5tb2RlbCA9IHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdXBlci5tb2RlbCA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtb2RlbCgpIHtcclxuICAgIHJldHVybiBzdXBlci5tb2RlbDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWlucHV0LXRleHRcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhhcy1sZWZ0LWljb24nKVxyXG4gIHB1YmxpYyBnZXQgaGFzTGVmdEljb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5sZWZ0SWNvbiAhPT0gdW5kZWZpbmVkICYmIHRoaXMubGVmdEljb24gIT09IG51bGw7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhhcy1yaWdodC1pY29uJylcclxuICBwdWJsaWMgZ2V0IGhhc1JpZ2h0SWNvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJpZ2h0SWNvbiAhPT0gdW5kZWZpbmVkICYmIHRoaXMucmlnaHRJY29uICE9PSBudWxsO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaGFzLW93bi1sYWJlbFwiKVxyXG4gIHB1YmxpYyBoYXNPd25MYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRlQXJyb3dzJylcclxuICBwdWJsaWMgaGlkZUFycm93QnV0dG9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBmb3JtQ29tcG9uZW50OiBGb3JtQ29tcG9uZW50LFxyXG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByb3RlY3RlZCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByb3RlY3RlZCBmb3JtVXNlckNoYW5nZUxpc3RlbmVyPzogRm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIG5nWm9uZVdyYXBwZXI/OiBOZ1pvbmVXcmFwcGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmPzogRWxlbWVudFJlZixcclxuICApIHtcclxuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIsIG5nWm9uZVdyYXBwZXIsIGVsZW1lbnRSZWYpO1xyXG4gICAgc3VwZXIuX21hcmtBc09uUHVzaCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|