@wertzui/ngx-restworld-client 8.2.1 → 9.0.0

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.
@@ -50,6 +50,7 @@ import { RestWorldTableComponent } from './components/restworld-table/restworld-
50
50
  import { RestWorldMenuButtonComponent } from './components/restworld-menu-button/restworld-menu-button.component';
51
51
  import { RestWorldIdNavigationComponent } from './components/restworld-id-navigation/restworld-id-navigation.component';
52
52
  import { RestWorldFormElementComponent, RestWorldInputCollectionComponent, RestWorldInputComponent, RestWorldInputDropdownComponent, RestWorldInputObjectComponent, RestWorldInputSimpleComponent, RestWorldInputTemplateComponent } from './components/restworld-inputs/restworld-inputs';
53
+ import { HalClientModule } from '@wertzui/ngx-hal-client';
53
54
  import * as i0 from "@angular/core";
54
55
  export function initializeSettings(settingsService) {
55
56
  return async () => await settingsService.ensureInitialized();
@@ -110,7 +111,8 @@ RestworldClientModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", v
110
111
  SplitButtonModule,
111
112
  AvatarModule,
112
113
  ContextMenuModule,
113
- ChipModule], exports: [RESTworldListViewComponent,
114
+ ChipModule,
115
+ HalClientModule], exports: [RESTworldListViewComponent,
114
116
  RESTworldEditViewComponent,
115
117
  RestWorldImageComponent,
116
118
  RestWorldFileComponent,
@@ -175,7 +177,8 @@ RestworldClientModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
175
177
  SplitButtonModule,
176
178
  AvatarModule,
177
179
  ContextMenuModule,
178
- ChipModule] });
180
+ ChipModule,
181
+ HalClientModule] });
179
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: RestworldClientModule, decorators: [{
180
183
  type: NgModule,
181
184
  args: [{
@@ -237,6 +240,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
237
240
  AvatarModule,
238
241
  ContextMenuModule,
239
242
  ChipModule,
243
+ HalClientModule,
240
244
  ],
241
245
  exports: [
242
246
  RESTworldListViewComponent,
@@ -275,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
275
279
  ]
276
280
  }]
277
281
  }] });
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3Jlc3R3b3JsZC1jbGllbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNs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QUN2QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJ1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBJbnB1dE51bWJlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VzTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wYW5lbCc7XHJcbmltcG9ydCB7IFRhYlZpZXdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xyXG5pbXBvcnQgeyBTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2tlbGV0b24nO1xyXG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Byb2dyZXNzc3Bpbm5lcic7XHJcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcclxuaW1wb3J0IHsgVHJpU3RhdGVDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdHJpc3RhdGVjaGVja2JveCc7XHJcbmltcG9ydCB7IEF2YXRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXZhdGFyJztcclxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IFZhbGRlbW9ydE1vZHVsZSB9IGZyb20gJ25neC12YWxkZW1vcnQnO1xyXG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJNb2R1bGUgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XHJcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcclxuaW1wb3J0IHsgQ29sb3JQaWNrZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbG9ycGlja2VyJztcclxuaW1wb3J0IHsgQ29udGV4dE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbnRleHRtZW51JztcclxuaW1wb3J0IHsgQ2hpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hpcCc7XHJcblxyXG5pbXBvcnQgeyBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vdmlld3MvcmVzdHdvcmxkLWxpc3Qtdmlldy9yZXN0d29ybGQtbGlzdC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi92aWV3cy9yZXN0d29ybGQtZWRpdC12aWV3L3Jlc3R3b3JsZC1lZGl0LXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbiB9IGZyb20gJy4vc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC1jb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgQXZhdGFyR2VuZXJhdG9yIH0gZnJvbSAnLi9zZXJ2aWNlcy9hdmF0YXItZ2VuZXJhdG9yJztcclxuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWltYWdlL3Jlc3R3b3JsZC1pbWFnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IFJlc3RXb3JsZEZpbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWZpbGUvcmVzdHdvcmxkLWZpbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2FmZVVybFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtdXJsLnBpcGUnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXNQaXBlIH0gZnJvbSAnLi9waXBlcy9hcy5waXBlJztcclxuaW1wb3J0IHsgU3BsaXRCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3NwbGl0YnV0dG9uJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1hdmF0YXIvcmVzdHdvcmxkLWF2YXRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtbGFiZWwvcmVzdHdvcmxkLWxhYmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLXZhbGlkYXRpb24tZXJyb3JzL3Jlc3R3b3JsZC12YWxpZGF0aW9uLWVycm9ycy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1mb3JtL3Jlc3R3b3JsZC1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC10YWJsZS9yZXN0d29ybGQtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkTWVudUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtbWVudS1idXR0b24vcmVzdHdvcmxkLW1lbnUtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZElkTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtaWQtbmF2aWdhdGlvbi9yZXN0d29ybGQtaWQtbmF2aWdhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRGb3JtRWxlbWVudENvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXRDb2xsZWN0aW9uQ29tcG9uZW50LCBSZXN0V29ybGRJbnB1dENvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXREcm9wZG93bkNvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXRPYmplY3RDb21wb25lbnQsIFJlc3RXb3JsZElucHV0U2ltcGxlQ29tcG9uZW50LCBSZXN0V29ybGRJbnB1dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0cyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZVNldHRpbmdzKHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlKTogKCkgPT4gUHJvbWlzZTx2b2lkPiB7XHJcbiAgcmV0dXJuIGFzeW5jICgpID0+IGF3YWl0IHNldHRpbmdzU2VydmljZS5lbnN1cmVJbml0aWFsaXplZCgpO1xyXG59XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgUkVTVHdvcmxkTGlzdFZpZXdDb21wb25lbnQsXHJcbiAgICBSRVNUd29ybGRFZGl0Vmlld0NvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEltYWdlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRmlsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEF2YXRhckNvbXBvbmVudCxcclxuICAgIFNhZmVVcmxQaXBlLFxyXG4gICAgQXNQaXBlLFxyXG4gICAgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRMYWJlbENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZvcm1FbGVtZW50Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXREcm9wZG93bkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0Q29sbGVjdGlvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0T2JqZWN0Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRTaW1wbGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRWYWxpZGF0aW9uRXJyb3JzQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRUZW1wbGF0ZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZvcm1Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRUYWJsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZE1lbnVCdXR0b25Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJZE5hdmlnYXRpb25Db21wb25lbnQsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUYWJsZU1vZHVsZSxcclxuICAgIFRvb2x0aXBNb2R1bGUsXHJcbiAgICBTY3JvbGxpbmdNb2R1bGUsXHJcbiAgICBJbnB1dFRleHRNb2R1bGUsXHJcbiAgICBJbnB1dE51bWJlck1vZHVsZSxcclxuICAgIENhbGVuZGFyTW9kdWxlLFxyXG4gICAgQ2hlY2tib3hNb2R1bGUsXHJcbiAgICBDb25maXJtRGlhbG9nTW9kdWxlLFxyXG4gICAgVG9hc3RNb2R1bGUsXHJcbiAgICBNZXNzYWdlc01vZHVsZSxcclxuICAgIFBhbmVsTW9kdWxlLFxyXG4gICAgVGFiVmlld01vZHVsZSxcclxuICAgIFNrZWxldG9uTW9kdWxlLFxyXG4gICAgUHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxyXG4gICAgUmlwcGxlTW9kdWxlLFxyXG4gICAgVHJpU3RhdGVDaGVja2JveE1vZHVsZSxcclxuICAgIEF2YXRhck1vZHVsZSxcclxuICAgIERyb3Bkb3duTW9kdWxlLFxyXG4gICAgTXVsdGlTZWxlY3RNb2R1bGUsXHJcbiAgICBGaWxlVXBsb2FkTW9kdWxlLFxyXG4gICAgVmFsZGVtb3J0TW9kdWxlLFxyXG4gICAgSW1hZ2VDcm9wcGVyTW9kdWxlLFxyXG4gICAgRGlhbG9nTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgQ29sb3JQaWNrZXJNb2R1bGUsXHJcbiAgICBEcmFnRHJvcE1vZHVsZSxcclxuICAgIFNwbGl0QnV0dG9uTW9kdWxlLFxyXG4gICAgQXZhdGFyTW9kdWxlLFxyXG4gICAgQ29udGV4dE1lbnVNb2R1bGUsXHJcbiAgICBDaGlwTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgUkVTVHdvcmxkTGlzdFZpZXdDb21wb25lbnQsXHJcbiAgICBSRVNUd29ybGRFZGl0Vmlld0NvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEltYWdlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRmlsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEF2YXRhckNvbXBvbmVudCxcclxuICAgIFNhZmVVcmxQaXBlLFxyXG4gICAgQXNQaXBlLFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRMYWJlbENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZvcm1FbGVtZW50Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXREcm9wZG93bkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0Q29sbGVjdGlvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0T2JqZWN0Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRTaW1wbGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRWYWxpZGF0aW9uRXJyb3JzQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRUZW1wbGF0ZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZvcm1Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRUYWJsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZE1lbnVCdXR0b25Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJZE5hdmlnYXRpb25Db21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbixcclxuICAgIEF2YXRhckdlbmVyYXRvcixcclxuICAgIENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBGb3JtU2VydmljZSxcclxuICAgIE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IGluaXRpYWxpemVTZXR0aW5ncyxcclxuICAgICAgZGVwczogW1NldHRpbmdzU2VydmljZV0sXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3R3b3JsZENsaWVudE1vZHVsZSB7IH1cclxuIl19
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3Jlc3R3b3JsZC1jbGllbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNs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RSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsVUFBVSxFQUFFLGtCQUFrQjs0QkFDOUIsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDOzRCQUN2QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJ1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBJbnB1dE51bWJlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VzTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wYW5lbCc7XHJcbmltcG9ydCB7IFRhYlZpZXdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xyXG5pbXBvcnQgeyBTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2tlbGV0b24nO1xyXG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Byb2dyZXNzc3Bpbm5lcic7XHJcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcclxuaW1wb3J0IHsgVHJpU3RhdGVDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdHJpc3RhdGVjaGVja2JveCc7XHJcbmltcG9ydCB7IEF2YXRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXZhdGFyJztcclxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IFZhbGRlbW9ydE1vZHVsZSB9IGZyb20gJ25neC12YWxkZW1vcnQnO1xyXG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJNb2R1bGUgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XHJcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcclxuaW1wb3J0IHsgQ29sb3JQaWNrZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbG9ycGlja2VyJztcclxuaW1wb3J0IHsgQ29udGV4dE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbnRleHRtZW51JztcclxuaW1wb3J0IHsgQ2hpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hpcCc7XHJcblxyXG5pbXBvcnQgeyBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vdmlld3MvcmVzdHdvcmxkLWxpc3Qtdmlldy9yZXN0d29ybGQtbGlzdC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi92aWV3cy9yZXN0d29ybGQtZWRpdC12aWV3L3Jlc3R3b3JsZC1lZGl0LXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbiB9IGZyb20gJy4vc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC1jb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgQXZhdGFyR2VuZXJhdG9yIH0gZnJvbSAnLi9zZXJ2aWNlcy9hdmF0YXItZ2VuZXJhdG9yJztcclxuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWltYWdlL3Jlc3R3b3JsZC1pbWFnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IFJlc3RXb3JsZEZpbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWZpbGUvcmVzdHdvcmxkLWZpbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2FmZVVybFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtdXJsLnBpcGUnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXNQaXBlIH0gZnJvbSAnLi9waXBlcy9hcy5waXBlJztcclxuaW1wb3J0IHsgU3BsaXRCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3NwbGl0YnV0dG9uJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1hdmF0YXIvcmVzdHdvcmxkLWF2YXRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtbGFiZWwvcmVzdHdvcmxkLWxhYmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLXZhbGlkYXRpb24tZXJyb3JzL3Jlc3R3b3JsZC12YWxpZGF0aW9uLWVycm9ycy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1mb3JtL3Jlc3R3b3JsZC1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC10YWJsZS9yZXN0d29ybGQtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkTWVudUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtbWVudS1idXR0b24vcmVzdHdvcmxkLW1lbnUtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZElkTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtaWQtbmF2aWdhdGlvbi9yZXN0d29ybGQtaWQtbmF2aWdhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRGb3JtRWxlbWVudENvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXRDb2xsZWN0aW9uQ29tcG9uZW50LCBSZXN0V29ybGRJbnB1dENvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXREcm9wZG93bkNvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXRPYmplY3RDb21wb25lbnQsIFJlc3RXb3JsZElucHV0U2ltcGxlQ29tcG9uZW50LCBSZXN0V29ybGRJbnB1dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0cyc7XHJcbmltcG9ydCB7IEhhbENsaWVudE1vZHVsZSB9IGZyb20gJ0B3ZXJ0enVpL25neC1oYWwtY2xpZW50JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplU2V0dGluZ3Moc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UpOiAoKSA9PiBQcm9taXNlPHZvaWQ+IHtcclxuICByZXR1cm4gYXN5bmMgKCkgPT4gYXdhaXQgc2V0dGluZ3NTZXJ2aWNlLmVuc3VyZUluaXRpYWxpemVkKCk7XHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCxcclxuICAgIFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW1hZ2VDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRGaWxlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgU2FmZVVybFBpcGUsXHJcbiAgICBBc1BpcGUsXHJcbiAgICBSZXN0V29ybGRBdmF0YXJDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZExhYmVsQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRm9ybUVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb2xsZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRPYmplY3RDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFNpbXBsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFRlbXBsYXRlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRm9ybUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkTWVudUJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElkTmF2aWdhdGlvbkNvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFRhYmxlTW9kdWxlLFxyXG4gICAgVG9vbHRpcE1vZHVsZSxcclxuICAgIFNjcm9sbGluZ01vZHVsZSxcclxuICAgIElucHV0VGV4dE1vZHVsZSxcclxuICAgIElucHV0TnVtYmVyTW9kdWxlLFxyXG4gICAgQ2FsZW5kYXJNb2R1bGUsXHJcbiAgICBDaGVja2JveE1vZHVsZSxcclxuICAgIENvbmZpcm1EaWFsb2dNb2R1bGUsXHJcbiAgICBUb2FzdE1vZHVsZSxcclxuICAgIE1lc3NhZ2VzTW9kdWxlLFxyXG4gICAgUGFuZWxNb2R1bGUsXHJcbiAgICBUYWJWaWV3TW9kdWxlLFxyXG4gICAgU2tlbGV0b25Nb2R1bGUsXHJcbiAgICBQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXHJcbiAgICBSaXBwbGVNb2R1bGUsXHJcbiAgICBUcmlTdGF0ZUNoZWNrYm94TW9kdWxlLFxyXG4gICAgQXZhdGFyTW9kdWxlLFxyXG4gICAgRHJvcGRvd25Nb2R1bGUsXHJcbiAgICBNdWx0aVNlbGVjdE1vZHVsZSxcclxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXHJcbiAgICBWYWxkZW1vcnRNb2R1bGUsXHJcbiAgICBJbWFnZUNyb3BwZXJNb2R1bGUsXHJcbiAgICBEaWFsb2dNb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBDb2xvclBpY2tlck1vZHVsZSxcclxuICAgIERyYWdEcm9wTW9kdWxlLFxyXG4gICAgU3BsaXRCdXR0b25Nb2R1bGUsXHJcbiAgICBBdmF0YXJNb2R1bGUsXHJcbiAgICBDb250ZXh0TWVudU1vZHVsZSxcclxuICAgIENoaXBNb2R1bGUsXHJcbiAgICBIYWxDbGllbnRNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCxcclxuICAgIFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW1hZ2VDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRGaWxlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgU2FmZVVybFBpcGUsXHJcbiAgICBBc1BpcGUsXHJcbiAgICBSZXN0V29ybGRJbnB1dENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZExhYmVsQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRm9ybUVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb2xsZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRPYmplY3RDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFNpbXBsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFRlbXBsYXRlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRm9ybUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkTWVudUJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElkTmF2aWdhdGlvbkNvbXBvbmVudFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBSZXN0V29ybGRDbGllbnRDb2xsZWN0aW9uLFxyXG4gICAgQXZhdGFyR2VuZXJhdG9yLFxyXG4gICAgQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIEZvcm1TZXJ2aWNlLFxyXG4gICAgTWVzc2FnZVNlcnZpY2UsXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcclxuICAgICAgdXNlRmFjdG9yeTogaW5pdGlhbGl6ZVNldHRpbmdzLFxyXG4gICAgICBkZXBzOiBbU2V0dGluZ3NTZXJ2aWNlXSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdHdvcmxkQ2xpZW50TW9kdWxlIHsgfVxyXG4iXX0=
@@ -27,20 +27,33 @@ export class RestWorldClient {
27
27
  }
28
28
  return combinedHeaders;
29
29
  }
30
- static createHeaders(mediaType, version) {
30
+ static createHeadersWithoutBody(version, accept) {
31
31
  if (version)
32
32
  return new HttpHeaders({
33
- 'Accept': `${mediaType || 'application/hal+json'}; v=${version}`,
34
- 'Content-Type': `${mediaType || 'application/hal+json'}; v=${version}`
33
+ 'Accept': `${accept ?? 'application/hal+json'}; v=${version}`,
34
+ 'Content-Type': `v=${version}`
35
35
  });
36
- return new HttpHeaders();
36
+ return new HttpHeaders({
37
+ 'Accept': `${accept ?? 'application/hal+json'};`,
38
+ });
39
+ }
40
+ static createHeadersWithBody(version, accept, contentType) {
41
+ if (version)
42
+ return new HttpHeaders({
43
+ 'Accept': `${accept ?? 'application/hal+json'}; v=${version}`,
44
+ 'Content-Type': `${contentType ?? 'application/json'}; v=${version}`
45
+ });
46
+ return new HttpHeaders({
47
+ 'Accept': `${accept ?? 'application/hal+json'};`,
48
+ 'Content-Type': `${contentType ?? 'application/json'};`
49
+ });
37
50
  }
38
51
  async delete(resource) {
39
52
  const deleteLink = resource.findLink('delete');
40
53
  if (!deleteLink)
41
54
  throw new Error(`The resource ${resource} does not have a delete link.`);
42
55
  const uri = deleteLink.href;
43
- const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
56
+ const header = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'application/hal+json');
44
57
  const response = await this.halClient.delete(uri, ProblemDetails, header);
45
58
  return response;
46
59
  }
@@ -63,7 +76,7 @@ export class RestWorldClient {
63
76
  return formsAndProblems;
64
77
  }
65
78
  async getForm(url) {
66
- const header = RestWorldClient.createHeaders('application/prs.hal-forms+json', this._options.Version);
79
+ const header = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'application/prs.hal-forms+json');
67
80
  return this._halClient.get(url, FormsResource, ProblemDetails, header);
68
81
  }
69
82
  getAllLinksFromHome() {
@@ -145,7 +158,7 @@ export class RestWorldClient {
145
158
  const link = new Link();
146
159
  link.href = uri;
147
160
  const filledUri = link.fillTemplate(parameters);
148
- const defaultHeaders = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
161
+ const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version);
149
162
  const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
150
163
  const response = await this.halClient.get(filledUri, PagedListResource, ProblemDetails, combinedHeaders);
151
164
  return response;
@@ -154,11 +167,20 @@ export class RestWorldClient {
154
167
  const link = new Link();
155
168
  link.href = uri;
156
169
  const filledUri = link.fillTemplate(parameters);
157
- const defaultHeaders = RestWorldClient.createHeaders('text/csv', this._options.Version);
170
+ const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'text/csv');
158
171
  const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
159
172
  const response = await lastValueFrom(this.halClient.httpClient.get(filledUri, { headers: combinedHeaders, responseType: 'blob', observe: 'response' }));
160
173
  return response;
161
174
  }
175
+ async postListByUriAsCsv(uri, parameters, body, headers) {
176
+ const link = new Link();
177
+ link.href = uri;
178
+ const filledUri = link.fillTemplate(parameters);
179
+ const defaultHeaders = RestWorldClient.createHeadersWithBody(this._options.Version, 'text/csv');
180
+ const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
181
+ const response = await lastValueFrom(this.halClient.httpClient.post(filledUri, body, { headers: combinedHeaders, responseType: 'blob', observe: 'response' }));
182
+ return response;
183
+ }
162
184
  async getSingle(rel, id, headers, curie) {
163
185
  if (!_.isNumber(id))
164
186
  throw new Error('When supplying a rel, an ID must be supplied too.');
@@ -168,7 +190,7 @@ export class RestWorldClient {
168
190
  return response;
169
191
  }
170
192
  async getSingleByUri(uri, headers) {
171
- const defaultHeaders = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
193
+ const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version);
172
194
  const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
173
195
  const response = await this.halClient.get(uri, Resource, ProblemDetails, combinedHeaders);
174
196
  return response;
@@ -181,7 +203,7 @@ export class RestWorldClient {
181
203
  throw new Error(`The save link ${saveLink} does not have a save name.`);
182
204
  const uri = saveLink.href;
183
205
  const method = saveLink.name.toLowerCase();
184
- const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
206
+ const header = RestWorldClient.createHeadersWithBody(this._options.Version);
185
207
  let response;
186
208
  switch (method) {
187
209
  case 'put':
@@ -198,7 +220,7 @@ export class RestWorldClient {
198
220
  async submit(template, formValues) {
199
221
  const uri = template.target || '';
200
222
  const method = template.method?.toLowerCase();
201
- const header = RestWorldClient.createHeaders('application/prs.hal-forms+json', this._options.Version);
223
+ const header = RestWorldClient.createHeadersWithBody(this._options.Version, 'application/prs.hal-forms+json');
202
224
  let response;
203
225
  switch (method) {
204
226
  case 'put':
@@ -224,7 +246,7 @@ export class RestWorldClient {
224
246
  return fullRel;
225
247
  }
226
248
  async getHomeForced() {
227
- const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
249
+ const header = RestWorldClient.createHeadersWithoutBody(this._options.Version);
228
250
  const response = await this.halClient.get(this._options.BaseUrl, Resource, ProblemDetails, header);
229
251
  return response;
230
252
  }
@@ -243,11 +265,11 @@ export class RestWorldClient {
243
265
  return this.deleteByUrl(url, timestamp);
244
266
  }
245
267
  async deleteByUrl(url, timestamp) {
246
- let header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
268
+ let header = RestWorldClient.createHeadersWithoutBody(this._options.Version);
247
269
  if (timestamp !== undefined)
248
270
  header = header.append("ETag", timestamp);
249
271
  const response = await this.halClient.delete(url, ProblemDetails, header);
250
272
  return response;
251
273
  }
252
274
  }
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQWEsSUFBSSxFQUFFLGlCQUFpQixFQUFZLFFBQVEsRUFBb0MsTUFBTSx5QkFBeUIsQ0FBQztBQUNsSixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHckMsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxVQUFxQixFQUNyQixRQUEwQjtRQUQxQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQ2hDLENBQUM7SUFFTCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLGVBQXdDLEVBQUUsWUFBcUMsRUFBRSxpQkFBMEI7UUFDdkksSUFBSSxDQUFDLFlBQVk7WUFDZixPQUFPLGVBQWUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZTtZQUNsQixPQUFPLFlBQVksQ0FBQztRQUV0QixJQUFJLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFFdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFp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LFdBQVcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBVyxFQUFFLFNBQWtCO1FBQ3RELElBQUksTUFBTSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxRixJQUFJLFNBQVMsS0FBSyxTQUFTO1lBQ3pCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUU1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFMUUsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IEZvcm1zUmVzb3VyY2UsIEhhbENsaWVudCwgTGluaywgUGFnZWRMaXN0UmVzb3VyY2UsIFByb3BlcnR5LCBSZXNvdXJjZSwgUmVzb3VyY2VEdG8sIFRlbXBsYXRlLCBUZW1wbGF0ZXMgfSBmcm9tIFwiQHdlcnR6dWkvbmd4LWhhbC1jbGllbnRcIjtcclxuaW1wb3J0IHsgTGlua05hbWVzIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9saW5rLW5hbWVzXCI7XHJcbmltcG9ydCB7IFByb2JsZW1EZXRhaWxzIH0gZnJvbSBcIi4uL21vZGVscy9wcm9ibGVtLWRldGFpbHNcIjtcclxuaW1wb3J0IHsgUmVzdFdvcmxkT3B0aW9ucyB9IGZyb20gXCIuLi9tb2RlbHMvcmVzdHdvcmxkLW9wdGlvbnNcIjtcclxuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRDbGllbnQge1xyXG4gIHByaXZhdGUgX2RlZmF1bHRDdXJpZT86IHN0cmluZztcclxuICBwcml2YXRlIF9ob21lUmVzb3VyY2U/OiBSZXNvdXJjZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9oYWxDbGllbnQ6IEhhbENsaWVudCxcclxuICAgIHByaXZhdGUgX29wdGlvbnM6IFJlc3RXb3JsZE9wdGlvbnNcclxuICApIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhbENsaWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9oYWxDbGllbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb21iaW5lSGVhZGVycyhvcmlnaW5hbEhlYWRlcnM6IEh0dHBIZWFkZXJzIHwgdW5kZWZpbmVkLCBoZWFkZXJzVG9BZGQ6IEh0dHBIZWFkZXJzIHwgdW5kZWZpbmVkLCBvdmVyd3JpdGVFeGlzdGluZzogYm9vbGVhbikge1xyXG4gICAgaWYgKCFoZWFkZXJzVG9BZGQpXHJcbiAgICAgIHJldHVybiBvcmlnaW5hbEhlYWRlcnM7XHJcbiAgICBpZiAoIW9yaWdpbmFsSGVhZGVycylcclxuICAgICAgcmV0dXJuIGhlYWRlcnNUb0FkZDtcclxuXHJcbiAgICBsZXQgY29tYmluZWRIZWFkZXJzID0gb3JpZ2luYWxIZWFkZXJzO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGhlYWRlcnNUb0FkZC5rZXlzKSB7XHJcbiAgICAgIGlmICghY29tYmluZWRIZWFkZXJzLmhhcyhrZXkpIHx8IG92ZXJ3cml0ZUV4aXN0aW5nKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyVmFsdWVzVG9BZGQgPSBoZWFkZXJzVG9BZGQuZ2V0QWxsKGtleSk7XHJcbiAgICAgICAgaWYgKGhlYWRlclZhbHVlc1RvQWRkKVxyXG4gICAgICAgICAgY29tYmluZWRIZWFkZXJzID0gY29tYmluZWRIZWFkZXJzLnNldChrZXksIGhlYWRlclZhbHVlc1RvQWRkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb21iaW5lZEhlYWRlcnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVIZWFkZXJzKG1lZGlhVHlwZT86ICdhcHBsaWNhdGlvbi9oYWwranNvbicgfCAnYXBwbGljYXRpb24vcHJzLmhhbC1mb3Jtcytqc29uJyB8ICd0ZXh0L2NzdicsIHZlcnNpb24/OiBudW1iZXIpOiBIdHRwSGVhZGVycyB7XHJcbiAgICBpZiAodmVyc2lvbilcclxuICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0FjY2VwdCc6IGAke21lZGlhVHlwZSB8fCAnYXBwbGljYXRpb24vaGFsK2pzb24nfTsgdj0ke3ZlcnNpb259YCxcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogYCR7bWVkaWFUeXBlIHx8ICdhcHBsaWNhdGlvbi9oYWwranNvbid9OyB2PSR7dmVyc2lvbn1gXHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZShyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTx2b2lkIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBkZWxldGVMaW5rID0gcmVzb3VyY2UuZmluZExpbmsoJ2RlbGV0ZScpO1xyXG4gICAgaWYgKCFkZWxldGVMaW5rKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSByZXNvdXJjZSAke3Jlc291cmNlfSBkb2VzIG5vdCBoYXZlIGEgZGVsZXRlIGxpbmsuYCk7XHJcbiAgICBjb25zdCB1cmkgPSBkZWxldGVMaW5rLmhyZWY7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZGVsZXRlKHVyaSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGVuc3VyZUhvbWVSZXNvdXJjZUlzU2V0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLl9ob21lUmVzb3VyY2UpIHtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldEhvbWVGb3JjZWQoKTtcclxuICAgICAgaWYgKFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIGhvbWUgcmVzb3VyY2UgZnJvbSAke3RoaXMuX29wdGlvbnMuQmFzZVVybH0gd2l0aCBWZXJzaW9uICR7dGhpcy5fb3B0aW9ucy5WZXJzaW9ufS4gUmVzcG9uc2Ugd2FzOiAke3Jlc3BvbnNlfWApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghcmVzcG9uc2UuYm9keSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIGhvbWUgcmVzb3VyY2UgZnJvbSAke3RoaXMuX29wdGlvbnMuQmFzZVVybH0gd2l0aCBWZXJzaW9uICR7dGhpcy5fb3B0aW9ucy5WZXJzaW9ufS4gUmVzcG9uc2Ugd2FzIGVtcHR5LmApO1xyXG4gICAgICB0aGlzLl9ob21lUmVzb3VyY2UgPSByZXNwb25zZS5ib2R5O1xyXG4gICAgICB0aGlzLnNldERlZmF1bHRDdXJpZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbEZvcm1zKHJlc291cmNlOiBSZXNvdXJjZSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEZvcm1zUmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz5bXT4ge1xyXG4gICAgY29uc3QgdXJscyA9IHJlc291cmNlLmdldEZvcm1MaW5rSHJlZnMoKTtcclxuICAgIGNvbnN0IGZvcm1zUHJvbWlzZXMgPSB1cmxzLm1hcCh1cmwgPT4gdGhpcy5nZXRGb3JtKHVybCkpO1xyXG4gICAgY29uc3QgZm9ybXNBbmRQcm9ibGVtcyA9IGF3YWl0IFByb21pc2UuYWxsKGZvcm1zUHJvbWlzZXMpO1xyXG4gICAgcmV0dXJuIGZvcm1zQW5kUHJvYmxlbXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybSh1cmw6IHN0cmluZyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEZvcm1zUmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9wcnMuaGFsLWZvcm1zK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhbENsaWVudC5nZXQodXJsLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBbGxMaW5rc0Zyb21Ib21lKCk6IHsgW3JlbDogc3RyaW5nXTogTGlua1tdIHwgdW5kZWZpbmVkOyB9IHtcclxuICAgIGlmICghdGhpcy5faG9tZVJlc291cmNlKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0hvbWUgcmVzb3VyY2UgaXMgbm90IHNldC4gQ2FsbCBlbnN1cmVIb21lUmVzb3VyY2VJc1NldCgpIGZpcnN0LicpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9ob21lUmVzb3VyY2UuX2xpbmtzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFBhZ2VzRnJvbUxpc3Q8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4ocmVsOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRBbGxQYWdlc0Zyb21MaXN0QnlVcmk8VExpc3REdG8+KHVyaSwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFBhZ2VzRnJvbUxpc3RCeVVyaTxUTGlzdER0byBleHRlbmRzIFJlc291cmNlRHRvPih1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaTxUTGlzdER0bz4odXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHk/Ll9lbWJlZGRlZD8uaXRlbXMpXHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuXHJcbiAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlLmJvZHkuX2VtYmVkZGVkLml0ZW1zO1xyXG4gICAgbGV0IGxhc3RSZXNwb25zZSA9IHJlc3BvbnNlO1xyXG5cclxuICAgIHdoaWxlICgobGFzdFJlc3BvbnNlPy5ib2R5Py5fbGlua3M/Lm5leHQ/Lmxlbmd0aCA/PyAwKSA+IDApIHtcclxuICAgICAgLy8gR2V0IHRoZSBuZXh0IHJlc3BvbnNlXHJcbiAgICAgIGNvbnN0IG5leHRMaW5rcyA9IGxhc3RSZXNwb25zZS5ib2R5Py5fbGlua3MubmV4dDtcclxuICAgICAgY29uc3QgbmV4dExpbmsgPSBuZXh0TGlua3MgPyBuZXh0TGlua3NbMF06IHVuZGVmaW5lZDtcclxuICAgICAgY29uc3QgbmV4dEhyZWYgPSBuZXh0TGluaz8uaHJlZjtcclxuICAgICAgaWYgKG5leHRIcmVmKSB7XHJcbiAgICAgICAgbGFzdFJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRMaXN0QnlVcmk8VExpc3REdG8+KG5leHRIcmVmLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICAgICAgaWYgKCFsYXN0UmVzcG9uc2Uub2sgfHwgUHJvYmxlbURldGFpbHMuaXNQcm9ibGVtRGV0YWlscyhsYXN0UmVzcG9uc2UuYm9keSkgfHwgIWxhc3RSZXNwb25zZS5ib2R5KVxyXG4gICAgICAgICAgcmV0dXJuIGxhc3RSZXNwb25zZTtcclxuXHJcbiAgICAgICAgLy8gQ29tYmluZSB0aGUgZW1iZWRkZWQgaXRlbXNcclxuICAgICAgICBsYXN0UmVzcG9uc2UuYm9keT8uX2VtYmVkZGVkPy5pdGVtcz8uZm9yRWFjaChyID0+IGl0ZW1zLnB1c2gocikpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gV2UgY29tYmluZWQgZXZlcnl0aGluZywgc28gdGhlcmUgaXMganVzdCBvbmUgYmlnIHBhZ2VcclxuICAgIHJlc3BvbnNlLmJvZHkudG90YWxQYWdlcyA9IDE7XHJcbiAgICByZXNwb25zZS5ib2R5Ll9saW5rcy5uZXh0ID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxUZW1wbGF0ZXMocmVzb3VyY2U6IFJlc291cmNlKTogUHJvbWlzZTxUZW1wbGF0ZXM+IHtcclxuICAgIGNvbnN0IGZvcm1SZXNwb25zZXMgPSBhd2FpdCB0aGlzLmdldEFsbEZvcm1zKHJlc291cmNlKTtcclxuXHJcbiAgICBjb25zdCBmYWlsZWRSZXNwb25zZXMgPSBmb3JtUmVzcG9uc2VzLmZpbHRlcihyZXNwb25zZSA9PiAhcmVzcG9uc2Uub2sgfHwgUHJvYmxlbURldGFpbHMuaXNQcm9ibGVtRGV0YWlscyhyZXNwb25zZS5ib2R5KSB8fCAhcmVzcG9uc2UuYm9keSk7XHJcbiAgICBpZiAoZmFpbGVkUmVzcG9uc2VzLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IHJlc3BvbnNlIG9mIGZhaWxlZFJlc3BvbnNlcykge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3Igd2hpbGUgbG9hZGluZyB0aGUgcmVzcG9uc2UgZnJvbSAke3Jlc3BvbnNlLnVybH0sIFN0YXR1cyAke3Jlc3BvbnNlLnN0YXR1c30gLSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9LCBDb250ZW50OiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmJvZHkpfWApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1UZW1wbGF0ZXMgPSBPYmplY3QuYXNzaWduKHt9LCAuLi5mb3JtUmVzcG9uc2VzLm1hcChyZXNwb25zZSA9PiAocmVzcG9uc2UuYm9keSBhcyBGb3Jtc1Jlc291cmNlKS5fdGVtcGxhdGVzKSkgYXMgVGVtcGxhdGVzO1xyXG5cclxuICAgIHJldHVybiBmb3JtVGVtcGxhdGVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldExpbmtGcm9tSG9tZShyZWw6IHN0cmluZywgbmFtZT86IHN0cmluZywgY3VyaWU/OiBzdHJpbmcpOiBMaW5rIHtcclxuICAgIGNvbnN0IGxpbmtzID0gdGhpcy5nZXRMaW5rc0Zyb21Ib21lKHJlbCwgY3VyaWUpO1xyXG5cclxuICAgIGNvbnN0IGxpbmsgPSBuYW1lID8gbGlua3MuZmluZChsID0+IGwubmFtZSA9PT0gbmFtZSkgOiBsaW5rc1swXTtcclxuXHJcbiAgICBpZiAoIWxpbmspXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGhvbWUgcmVzb3VyY2UgZG9lcyBub3QgaGF2ZSBhIGxpbmsgd2l0aCB0aGUgcmVsICcke3RoaXMuZ2V0RnVsbFJlbChyZWwsIGN1cmllKX0nIGFuZCB0aGUgbmFtZSAnJHtuYW1lfScuYCk7XHJcblxyXG4gICAgcmV0dXJuIGxpbms7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TGlua3NGcm9tSG9tZShyZWw6IHN0cmluZywgY3VyaWU/OiBzdHJpbmcpOiBMaW5rW10ge1xyXG4gICAgaWYgKCF0aGlzLl9ob21lUmVzb3VyY2UpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSG9tZSByZXNvdXJjZSBpcyBub3Qgc2V0LiBDYWxsIGVuc3VyZUhvbWVSZXNvdXJjZUlzU2V0KCkgZmlyc3QuJyk7XHJcblxyXG4gICAgY29uc3QgZnVsbFJlbCA9IHRoaXMuZ2V0RnVsbFJlbChyZWwsIGN1cmllKTtcclxuICAgIGNvbnN0IGxpbmtzID0gdGhpcy5faG9tZVJlc291cmNlLl9saW5rc1tmdWxsUmVsXTtcclxuICAgIGlmICghbGlua3MgfHwgbGlua3MubGVuZ3RoID09PSAwKVxyXG4gICAgICB0aHJvdyBFcnJvcihgVGhlIGhvbWUgcmVzb3VyY2UgZG9lcyBub3QgaGF2ZSBhIGxpbmsgd2l0aCB0aGUgcmVsICcke2Z1bGxSZWx9Jy5gKTtcclxuXHJcbiAgICByZXR1cm4gbGlua3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlzdDxUTGlzdER0byBleHRlbmRzIFJlc291cmNlRHRvPihyZWw6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgY3VyaWU/OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxQYWdlZExpc3RSZXNvdXJjZTxUTGlzdER0bz4gfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtGcm9tSG9tZShyZWwsIExpbmtOYW1lcy5nZXRMaXN0LCBjdXJpZSk7XHJcbiAgICBjb25zdCB1cmkgPSBsaW5rLmhyZWZcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0TGlzdEJ5VXJpPFRMaXN0RHRvPih1cmksIHBhcmFtZXRlcnMsIGhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRMaXN0QXNDc3YocmVsOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8QmxvYj4gfCB1bmRlZmluZWQ+IHtcclxuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtGcm9tSG9tZShyZWwsIExpbmtOYW1lcy5nZXRMaXN0LCBjdXJpZSk7XHJcbiAgICBjb25zdCB1cmkgPSBsaW5rLmhyZWY7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaUFzQ3N2KHVyaSwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldExpc3RCeVVyaTxUTGlzdER0byBleHRlbmRzIFJlc291cmNlRHRvPih1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgbGluayA9IG5ldyBMaW5rKCk7XHJcbiAgICBsaW5rLmhyZWYgPSB1cmk7XHJcbiAgICBjb25zdCBmaWxsZWRVcmkgPSBsaW5rLmZpbGxUZW1wbGF0ZShwYXJhbWV0ZXJzKTtcclxuICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL2hhbCtqc29uJywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuICAgIGNvbnN0IGNvbWJpbmVkSGVhZGVycyA9IFJlc3RXb3JsZENsaWVudC5jb21iaW5lSGVhZGVycyhoZWFkZXJzLCBkZWZhdWx0SGVhZGVycywgZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0PFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiwgUHJvYmxlbURldGFpbHM+KGZpbGxlZFVyaSwgUGFnZWRMaXN0UmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBjb21iaW5lZEhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRMaXN0QnlVcmlBc0Nzdih1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEJsb2I+IHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBsaW5rID0gbmV3IExpbmsoKTtcclxuICAgIGxpbmsuaHJlZiA9IHVyaTtcclxuICAgIGNvbnN0IGZpbGxlZFVyaSA9IGxpbmsuZmlsbFRlbXBsYXRlKHBhcmFtZXRlcnMpO1xyXG4gICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygndGV4dC9jc3YnLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuaGFsQ2xpZW50Lmh0dHBDbGllbnQuZ2V0KGZpbGxlZFVyaSwgeyBoZWFkZXJzOiBjb21iaW5lZEhlYWRlcnMsIHJlc3BvbnNlVHlwZTogJ2Jsb2InLCBvYnNlcnZlOiAncmVzcG9uc2UnIH0pKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2luZ2xlKHJlbDogc3RyaW5nLCBpZDogbnVtYmVyLCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGlmICghXy5pc051bWJlcihpZCkpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignV2hlbiBzdXBwbHlpbmcgYSByZWwsIGFuIElEIG11c3QgYmUgc3VwcGxpZWQgdG9vLicpO1xyXG5cclxuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtGcm9tSG9tZShyZWwsIExpbmtOYW1lcy5nZXQsIGN1cmllKTtcclxuICAgIGNvbnN0IHVyaSA9IGxpbmsuZmlsbFRlbXBsYXRlKHsgaWQ6IGlkLnRvU3RyaW5nKCkgfSk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmdldFNpbmdsZUJ5VXJpKHVyaSwgaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNpbmdsZUJ5VXJpKHVyaTogc3RyaW5nLCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldCh1cmksIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgY29tYmluZWRIZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2F2ZShyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3Qgc2F2ZUxpbmsgPSByZXNvdXJjZS5maW5kTGluaygnc2F2ZScpO1xyXG4gICAgaWYgKCFzYXZlTGluaylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcmVzb3VyY2UgJHtyZXNvdXJjZX0gZG9lcyBub3QgaGF2ZSBhIHNhdmUgbGluay5gKTtcclxuICAgIGlmICghc2F2ZUxpbmsubmFtZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc2F2ZSBsaW5rICR7c2F2ZUxpbmt9IGRvZXMgbm90IGhhdmUgYSBzYXZlIG5hbWUuYCk7XHJcblxyXG4gICAgY29uc3QgdXJpID0gc2F2ZUxpbmsuaHJlZjtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHNhdmVMaW5rLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9oYWwranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcblxyXG4gICAgbGV0IHJlc3BvbnNlO1xyXG4gICAgc3dpdGNoIChtZXRob2QpIHtcclxuICAgICAgY2FzZSAncHV0JzpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LnB1dCh1cmksIHJlc291cmNlLCBSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Bvc3QnOlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQucG9zdCh1cmksIHJlc291cmNlLCBSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHttZXRob2R9JyBpcyBub3QgYWxsb3dlZCBhcyBsaW5rIG5hbWUgZm9yIHRoZSBzYXZlIGxpbmsuIE9ubHkgJ1BPU1QnIGFuZCAnUFVUJyBhcmUgYWxsb3dlZC5gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc3VibWl0KHRlbXBsYXRlOiBUZW1wbGF0ZSwgZm9ybVZhbHVlczoge30pOiBQcm9taXNlPEh0dHBSZXNwb25zZTxGb3Jtc1Jlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCB1cmkgPSB0ZW1wbGF0ZS50YXJnZXQgfHwgJyc7XHJcbiAgICBjb25zdCBtZXRob2QgPSB0ZW1wbGF0ZS5tZXRob2Q/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vcHJzLmhhbC1mb3Jtcytqc29uJywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuXHJcbiAgICBsZXQgcmVzcG9uc2U7XHJcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xyXG4gICAgICBjYXNlICdwdXQnOlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQucHV0KHVyaSwgZm9ybVZhbHVlcywgRm9ybXNSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Bvc3QnOlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQucG9zdCh1cmksIGZvcm1WYWx1ZXMsIEZvcm1zUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0KHVyaSwgRm9ybXNSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGdWxsUmVsKHJlbDogc3RyaW5nLCBjdXJpZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAvLyByZWwgYWxyZWFkeSBpbmNsdWRlcyBhIGN1cmllID0+IGp1c3QgcmV0dXJuIGl0XHJcbiAgICBpZiAocmVsLmluY2x1ZGVzKCc6JykpXHJcbiAgICAgIHJldHVybiByZWw7XHJcblxyXG4gICAgLy8gTm8gY3VyaWUgZ2l2ZW4gPT4gdXNlIGRlZmF1bHQgY3VyaWUuXHJcbiAgICBpZiAoIWN1cmllKVxyXG4gICAgICBjdXJpZSA9IHRoaXMuX2RlZmF1bHRDdXJpZTtcclxuXHJcbiAgICAvLyBDb21iaW5lIGN1cmllIGFuZCByZWxcclxuICAgIGNvbnN0IGZ1bGxSZWwgPSBgJHtjdXJpZX06JHtyZWx9YDtcclxuXHJcbiAgICByZXR1cm4gZnVsbFJlbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZ2V0SG9tZUZvcmNlZCgpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgaGVhZGVyID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL2hhbCtqc29uJywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0KHRoaXMuX29wdGlvbnMuQmFzZVVybCwgUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0Q3VyaWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJpZXMgPSB0aGlzLl9ob21lUmVzb3VyY2U/Ll9saW5rcz8uY3VyaWVzO1xyXG4gICAgaWYgKCFjdXJpZXMgfHwgY3VyaWVzLmxlbmd0aCA9PT0gMCB8fCAhY3VyaWVzWzBdKVxyXG4gICAgICB0aGlzLl9kZWZhdWx0Q3VyaWUgPSB1bmRlZmluZWQ7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2RlZmF1bHRDdXJpZSA9IGN1cmllc1swXS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZUJ5VGVtcGxhdGVBbmRGb3JtKHRlbXBsYXRlOiBUZW1wbGF0ZSwgZm9ybUdyb3VwOiBGb3JtR3JvdXA8e3RpbWVzdGFtcDogQWJzdHJhY3RDb250cm9sPHN0cmluZz59Pik6IFByb21pc2U8SHR0cFJlc3BvbnNlPHZvaWQgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IHVybCA9IHRlbXBsYXRlLnRhcmdldDtcclxuICAgIGlmKHVybCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgdGFyZ2V0IG9mIHRoZSBnaXZlbiB0ZW1wbGF0ZSBjYW5ub3QgYmUgdW5kZWZpbmVkLlwiKTtcclxuXHJcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBmb3JtR3JvdXAudmFsdWUudGltZXN0YW1wXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlQnlVcmwodXJsLCB0aW1lc3RhbXApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZUJ5VXJsKHVybDogc3RyaW5nLCB0aW1lc3RhbXA/OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTx2b2lkIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBsZXQgaGVhZGVyID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL2hhbCtqc29uJywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuXHJcbiAgICBpZiAodGltZXN0YW1wICE9PSB1bmRlZmluZWQpXHJcbiAgICAgIGhlYWRlciA9IGhlYWRlci5hcHBlbmQoXCJFVGFnXCIsIHRpbWVzdGFtcCk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5kZWxldGUodXJsLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQWEsSUFBSSxFQUFFLGlCQUFpQixFQUFZLFFBQVEsRUFBb0MsTUFBTSx5QkFBeUIsQ0FBQztBQUNsSixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHckMsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxVQUFxQixFQUNyQixRQUEwQjtRQUQxQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQ2hDLENBQUM7SUFFTCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLGVBQXdDLEVBQUUsWUFBcUMsRUFBRSxpQkFBMEI7UUFDdkksSUFBSSxDQUFDLFlBQVk7WUFDZixPQUFPLGVBQWUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZTtZQUNsQixPQUFPLFlBQVksQ0FBQztRQUV0QixJQUFJLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFFdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFp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UyxDQUFBO1FBRTNDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBVyxFQUFFLFNBQWtCO1FBQ3RELElBQUksTUFBTSxHQUFHLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdFLElBQUksU0FBUyxLQUFLLFNBQVM7WUFDekIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUxRSxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgRm9ybXNSZXNvdXJjZSwgSGFsQ2xpZW50LCBMaW5rLCBQYWdlZExpc3RSZXNvdXJjZSwgUHJvcGVydHksIFJlc291cmNlLCBSZXNvdXJjZUR0bywgVGVtcGxhdGUsIFRlbXBsYXRlcyB9IGZyb20gXCJAd2VydHp1aS9uZ3gtaGFsLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBMaW5rTmFtZXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2xpbmstbmFtZXNcIjtcclxuaW1wb3J0IHsgUHJvYmxlbURldGFpbHMgfSBmcm9tIFwiLi4vbW9kZWxzL3Byb2JsZW0tZGV0YWlsc1wiO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRPcHRpb25zIH0gZnJvbSBcIi4uL21vZGVscy9yZXN0d29ybGQtb3B0aW9uc1wiO1xyXG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJlc3RXb3JsZENsaWVudCB7XHJcbiAgcHJpdmF0ZSBfZGVmYXVsdEN1cmllPzogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2hvbWVSZXNvdXJjZT86IFJlc291cmNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2hhbENsaWVudDogSGFsQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBfb3B0aW9uczogUmVzdFdvcmxkT3B0aW9uc1xyXG4gICkgeyB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaGFsQ2xpZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhbENsaWVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbWJpbmVIZWFkZXJzKG9yaWdpbmFsSGVhZGVyczogSHR0cEhlYWRlcnMgfCB1bmRlZmluZWQsIGhlYWRlcnNUb0FkZDogSHR0cEhlYWRlcnMgfCB1bmRlZmluZWQsIG92ZXJ3cml0ZUV4aXN0aW5nOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWhlYWRlcnNUb0FkZClcclxuICAgICAgcmV0dXJuIG9yaWdpbmFsSGVhZGVycztcclxuICAgIGlmICghb3JpZ2luYWxIZWFkZXJzKVxyXG4gICAgICByZXR1cm4gaGVhZGVyc1RvQWRkO1xyXG5cclxuICAgIGxldCBjb21iaW5lZEhlYWRlcnMgPSBvcmlnaW5hbEhlYWRlcnM7XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaGVhZGVyc1RvQWRkLmtleXMpIHtcclxuICAgICAgaWYgKCFjb21iaW5lZEhlYWRlcnMuaGFzKGtleSkgfHwgb3ZlcndyaXRlRXhpc3RpbmcpIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJWYWx1ZXNUb0FkZCA9IGhlYWRlcnNUb0FkZC5nZXRBbGwoa2V5KTtcclxuICAgICAgICBpZiAoaGVhZGVyVmFsdWVzVG9BZGQpXHJcbiAgICAgICAgICBjb21iaW5lZEhlYWRlcnMgPSBjb21iaW5lZEhlYWRlcnMuc2V0KGtleSwgaGVhZGVyVmFsdWVzVG9BZGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbWJpbmVkSGVhZGVycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZUhlYWRlcnNXaXRob3V0Qm9keShcclxuICAgIHZlcnNpb24/OiBudW1iZXIsXHJcbiAgICBhY2NlcHQ/OiBzdHJpbmcpXHJcbiAgICA6IEh0dHBIZWFkZXJzIHtcclxuICAgIGlmICh2ZXJzaW9uKVxyXG4gICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQWNjZXB0JzogYCR7YWNjZXB0ID8/ICdhcHBsaWNhdGlvbi9oYWwranNvbid9OyB2PSR7dmVyc2lvbn1gLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiBgdj0ke3ZlcnNpb259YFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdBY2NlcHQnOiBgJHthY2NlcHQgPz8gJ2FwcGxpY2F0aW9uL2hhbCtqc29uJ307YCxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVIZWFkZXJzV2l0aEJvZHkoXHJcbiAgICB2ZXJzaW9uPzogbnVtYmVyLFxyXG4gICAgYWNjZXB0Pzogc3RyaW5nLFxyXG4gICAgY29udGVudFR5cGU/OiBzdHJpbmcpXHJcbiAgICA6IEh0dHBIZWFkZXJzIHtcclxuICAgIGlmICh2ZXJzaW9uKVxyXG4gICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQWNjZXB0JzogYCR7YWNjZXB0ID8/ICdhcHBsaWNhdGlvbi9oYWwranNvbid9OyB2PSR7dmVyc2lvbn1gLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiBgJHtjb250ZW50VHlwZSA/PyAnYXBwbGljYXRpb24vanNvbid9OyB2PSR7dmVyc2lvbn1gXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0FjY2VwdCc6IGAke2FjY2VwdCA/PyAnYXBwbGljYXRpb24vaGFsK2pzb24nfTtgLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiBgJHtjb250ZW50VHlwZSA/PyAnYXBwbGljYXRpb24vanNvbid9O2BcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZGVsZXRlKHJlc291cmNlOiBSZXNvdXJjZSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPHZvaWQgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGRlbGV0ZUxpbmsgPSByZXNvdXJjZS5maW5kTGluaygnZGVsZXRlJyk7XHJcbiAgICBpZiAoIWRlbGV0ZUxpbmspXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHJlc291cmNlICR7cmVzb3VyY2V9IGRvZXMgbm90IGhhdmUgYSBkZWxldGUgbGluay5gKTtcclxuICAgIGNvbnN0IHVyaSA9IGRlbGV0ZUxpbmsuaHJlZjtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzV2l0aG91dEJvZHkodGhpcy5fb3B0aW9ucy5WZXJzaW9uLCAnYXBwbGljYXRpb24vaGFsK2pzb24nKTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmRlbGV0ZSh1cmksIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBlbnN1cmVIb21lUmVzb3VyY2VJc1NldCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5faG9tZVJlc291cmNlKSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRIb21lRm9yY2VkKCk7XHJcbiAgICAgIGlmIChQcm9ibGVtRGV0YWlscy5pc1Byb2JsZW1EZXRhaWxzKHJlc3BvbnNlLmJvZHkpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IHRoZSBob21lIHJlc291cmNlIGZyb20gJHt0aGlzLl9vcHRpb25zLkJhc2VVcmx9IHdpdGggVmVyc2lvbiAke3RoaXMuX29wdGlvbnMuVmVyc2lvbn0uIFJlc3BvbnNlIHdhczogJHtyZXNwb25zZX1gKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXJlc3BvbnNlLmJvZHkpXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IHRoZSBob21lIHJlc291cmNlIGZyb20gJHt0aGlzLl9vcHRpb25zLkJhc2VVcmx9IHdpdGggVmVyc2lvbiAke3RoaXMuX29wdGlvbnMuVmVyc2lvbn0uIFJlc3BvbnNlIHdhcyBlbXB0eS5gKTtcclxuICAgICAgdGhpcy5faG9tZVJlc291cmNlID0gcmVzcG9uc2UuYm9keTtcclxuICAgICAgdGhpcy5zZXREZWZhdWx0Q3VyaWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxGb3JtcyhyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxGb3Jtc1Jlc291cmNlIHwgUHJvYmxlbURldGFpbHM+W10+IHtcclxuICAgIGNvbnN0IHVybHMgPSByZXNvdXJjZS5nZXRGb3JtTGlua0hyZWZzKCk7XHJcbiAgICBjb25zdCBmb3Jtc1Byb21pc2VzID0gdXJscy5tYXAodXJsID0+IHRoaXMuZ2V0Rm9ybSh1cmwpKTtcclxuICAgIGNvbnN0IGZvcm1zQW5kUHJvYmxlbXMgPSBhd2FpdCBQcm9taXNlLmFsbChmb3Jtc1Byb21pc2VzKTtcclxuICAgIHJldHVybiBmb3Jtc0FuZFByb2JsZW1zO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEZvcm0odXJsOiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxGb3Jtc1Jlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVyc1dpdGhvdXRCb2R5KHRoaXMuX29wdGlvbnMuVmVyc2lvbiwgJ2FwcGxpY2F0aW9uL3Bycy5oYWwtZm9ybXMranNvbicpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhbENsaWVudC5nZXQodXJsLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBbGxMaW5rc0Zyb21Ib21lKCk6IHsgW3JlbDogc3RyaW5nXTogTGlua1tdIHwgdW5kZWZpbmVkOyB9IHtcclxuICAgIGlmICghdGhpcy5faG9tZVJlc291cmNlKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0hvbWUgcmVzb3VyY2UgaXMgbm90IHNldC4gQ2FsbCBlbnN1cmVIb21lUmVzb3VyY2VJc1NldCgpIGZpcnN0LicpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9ob21lUmVzb3VyY2UuX2xpbmtzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFBhZ2VzRnJvbUxpc3Q8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4ocmVsOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRBbGxQYWdlc0Zyb21MaXN0QnlVcmk8VExpc3REdG8+KHVyaSwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFBhZ2VzRnJvbUxpc3RCeVVyaTxUTGlzdER0byBleHRlbmRzIFJlc291cmNlRHRvPih1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaTxUTGlzdER0bz4odXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHk/Ll9lbWJlZGRlZD8uaXRlbXMpXHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuXHJcbiAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlLmJvZHkuX2VtYmVkZGVkLml0ZW1zO1xyXG4gICAgbGV0IGxhc3RSZXNwb25zZSA9IHJlc3BvbnNlO1xyXG5cclxuICAgIHdoaWxlICgobGFzdFJlc3BvbnNlPy5ib2R5Py5fbGlua3M/Lm5leHQ/Lmxlbmd0aCA/PyAwKSA+IDApIHtcclxuICAgICAgLy8gR2V0IHRoZSBuZXh0IHJlc3BvbnNlXHJcbiAgICAgIGNvbnN0IG5leHRMaW5rcyA9IGxhc3RSZXNwb25zZS5ib2R5Py5fbGlua3MubmV4dDtcclxuICAgICAgY29uc3QgbmV4dExpbmsgPSBuZXh0TGlua3MgPyBuZXh0TGlua3NbMF0gOiB1bmRlZmluZWQ7XHJcbiAgICAgIGNvbnN0IG5leHRIcmVmID0gbmV4dExpbms/LmhyZWY7XHJcbiAgICAgIGlmIChuZXh0SHJlZikge1xyXG4gICAgICAgIGxhc3RSZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0TGlzdEJ5VXJpPFRMaXN0RHRvPihuZXh0SHJlZiwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgICAgIGlmICghbGFzdFJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMobGFzdFJlc3BvbnNlLmJvZHkpIHx8ICFsYXN0UmVzcG9uc2UuYm9keSlcclxuICAgICAgICAgIHJldHVybiBsYXN0UmVzcG9uc2U7XHJcblxyXG4gICAgICAgIC8vIENvbWJpbmUgdGhlIGVtYmVkZGVkIGl0ZW1zXHJcbiAgICAgICAgbGFzdFJlc3BvbnNlLmJvZHk/Ll9lbWJlZGRlZD8uaXRlbXM/LmZvckVhY2gociA9PiBpdGVtcy5wdXNoKHIpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFdlIGNvbWJpbmVkIGV2ZXJ5dGhpbmcsIHNvIHRoZXJlIGlzIGp1c3Qgb25lIGJpZyBwYWdlXHJcbiAgICByZXNwb25zZS5ib2R5LnRvdGFsUGFnZXMgPSAxO1xyXG4gICAgcmVzcG9uc2UuYm9keS5fbGlua3MubmV4dCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsVGVtcGxhdGVzKHJlc291cmNlOiBSZXNvdXJjZSk6IFByb21pc2U8VGVtcGxhdGVzPiB7XHJcbiAgICBjb25zdCBmb3JtUmVzcG9uc2VzID0gYXdhaXQgdGhpcy5nZXRBbGxGb3JtcyhyZXNvdXJjZSk7XHJcblxyXG4gICAgY29uc3QgZmFpbGVkUmVzcG9uc2VzID0gZm9ybVJlc3BvbnNlcy5maWx0ZXIocmVzcG9uc2UgPT4gIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHkpO1xyXG4gICAgaWYgKGZhaWxlZFJlc3BvbnNlcy5sZW5ndGggIT09IDApIHtcclxuICAgICAgZm9yIChjb25zdCByZXNwb25zZSBvZiBmYWlsZWRSZXNwb25zZXMpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHdoaWxlIGxvYWRpbmcgdGhlIHJlc3BvbnNlIGZyb20gJHtyZXNwb25zZS51cmx9LCBTdGF0dXMgJHtyZXNwb25zZS5zdGF0dXN9IC0gJHtyZXNwb25zZS5zdGF0dXNUZXh0fSwgQ29udGVudDogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZS5ib2R5KX1gKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtVGVtcGxhdGVzID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uZm9ybVJlc3BvbnNlcy5tYXAocmVzcG9uc2UgPT4gKHJlc3BvbnNlLmJvZHkgYXMgRm9ybXNSZXNvdXJjZSkuX3RlbXBsYXRlcykpIGFzIFRlbXBsYXRlcztcclxuXHJcbiAgICByZXR1cm4gZm9ybVRlbXBsYXRlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRMaW5rRnJvbUhvbWUocmVsOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcsIGN1cmllPzogc3RyaW5nKTogTGluayB7XHJcbiAgICBjb25zdCBsaW5rcyA9IHRoaXMuZ2V0TGlua3NGcm9tSG9tZShyZWwsIGN1cmllKTtcclxuXHJcbiAgICBjb25zdCBsaW5rID0gbmFtZSA/IGxpbmtzLmZpbmQobCA9PiBsLm5hbWUgPT09IG5hbWUpIDogbGlua3NbMF07XHJcblxyXG4gICAgaWYgKCFsaW5rKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBob21lIHJlc291cmNlIGRvZXMgbm90IGhhdmUgYSBsaW5rIHdpdGggdGhlIHJlbCAnJHt0aGlzLmdldEZ1bGxSZWwocmVsLCBjdXJpZSl9JyBhbmQgdGhlIG5hbWUgJyR7bmFtZX0nLmApO1xyXG5cclxuICAgIHJldHVybiBsaW5rO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldExpbmtzRnJvbUhvbWUocmVsOiBzdHJpbmcsIGN1cmllPzogc3RyaW5nKTogTGlua1tdIHtcclxuICAgIGlmICghdGhpcy5faG9tZVJlc291cmNlKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0hvbWUgcmVzb3VyY2UgaXMgbm90IHNldC4gQ2FsbCBlbnN1cmVIb21lUmVzb3VyY2VJc1NldCgpIGZpcnN0LicpO1xyXG5cclxuICAgIGNvbnN0IGZ1bGxSZWwgPSB0aGlzLmdldEZ1bGxSZWwocmVsLCBjdXJpZSk7XHJcbiAgICBjb25zdCBsaW5rcyA9IHRoaXMuX2hvbWVSZXNvdXJjZS5fbGlua3NbZnVsbFJlbF07XHJcbiAgICBpZiAoIWxpbmtzIHx8IGxpbmtzLmxlbmd0aCA9PT0gMClcclxuICAgICAgdGhyb3cgRXJyb3IoYFRoZSBob21lIHJlc291cmNlIGRvZXMgbm90IGhhdmUgYSBsaW5rIHdpdGggdGhlIHJlbCAnJHtmdWxsUmVsfScuYCk7XHJcblxyXG4gICAgcmV0dXJuIGxpbmtzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldExpc3Q8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4ocmVsOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmXHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaTxUTGlzdER0bz4odXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlzdEFzQ3N2KHJlbDogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7fSwgaGVhZGVycz86IEh0dHBIZWFkZXJzLCBjdXJpZT86IHN0cmluZyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEJsb2I+IHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRMaXN0QnlVcmlBc0Nzdih1cmksIHBhcmFtZXRlcnMsIGhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRMaXN0QnlVcmk8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4odXJpOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxQYWdlZExpc3RSZXNvdXJjZTxUTGlzdER0bz4gfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGxpbmsgPSBuZXcgTGluaygpO1xyXG4gICAgbGluay5ocmVmID0gdXJpO1xyXG4gICAgY29uc3QgZmlsbGVkVXJpID0gbGluay5maWxsVGVtcGxhdGUocGFyYW1ldGVycyk7XHJcbiAgICBjb25zdCBkZWZhdWx0SGVhZGVycyA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzV2l0aG91dEJvZHkodGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuICAgIGNvbnN0IGNvbWJpbmVkSGVhZGVycyA9IFJlc3RXb3JsZENsaWVudC5jb21iaW5lSGVhZGVycyhoZWFkZXJzLCBkZWZhdWx0SGVhZGVycywgZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0PFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiwgUHJvYmxlbURldGFpbHM+KGZpbGxlZFVyaSwgUGFnZWRMaXN0UmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBjb21iaW5lZEhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRMaXN0QnlVcmlBc0Nzdih1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEJsb2I+IHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBsaW5rID0gbmV3IExpbmsoKTtcclxuICAgIGxpbmsuaHJlZiA9IHVyaTtcclxuICAgIGNvbnN0IGZpbGxlZFVyaSA9IGxpbmsuZmlsbFRlbXBsYXRlKHBhcmFtZXRlcnMpO1xyXG4gICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVyc1dpdGhvdXRCb2R5KHRoaXMuX29wdGlvbnMuVmVyc2lvbiwgJ3RleHQvY3N2Jyk7XHJcbiAgICBjb25zdCBjb21iaW5lZEhlYWRlcnMgPSBSZXN0V29ybGRDbGllbnQuY29tYmluZUhlYWRlcnMoaGVhZGVycywgZGVmYXVsdEhlYWRlcnMsIGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5oYWxDbGllbnQuaHR0cENsaWVudC5nZXQoZmlsbGVkVXJpLCB7IGhlYWRlcnM6IGNvbWJpbmVkSGVhZGVycywgcmVzcG9uc2VUeXBlOiAnYmxvYicsIG9ic2VydmU6ICdyZXNwb25zZScgfSkpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwb3N0TGlzdEJ5VXJpQXNDc3YodXJpOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBib2R5PzogYW55LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxCbG9iPiB8IHVuZGVmaW5lZD4ge1xyXG4gICAgY29uc3QgbGluayA9IG5ldyBMaW5rKCk7XHJcbiAgICBsaW5rLmhyZWYgPSB1cmk7XHJcbiAgICBjb25zdCBmaWxsZWRVcmkgPSBsaW5rLmZpbGxUZW1wbGF0ZShwYXJhbWV0ZXJzKTtcclxuICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnNXaXRoQm9keSh0aGlzLl9vcHRpb25zLlZlcnNpb24sICd0ZXh0L2NzdicpO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuaGFsQ2xpZW50Lmh0dHBDbGllbnQucG9zdChmaWxsZWRVcmksIGJvZHksIHsgaGVhZGVyczogY29tYmluZWRIZWFkZXJzLCByZXNwb25zZVR5cGU6ICdibG9iJywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyB9KSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNpbmdsZShyZWw6IHN0cmluZywgaWQ6IG51bWJlciwgaGVhZGVycz86IEh0dHBIZWFkZXJzLCBjdXJpZT86IHN0cmluZyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFJlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBpZiAoIV8uaXNOdW1iZXIoaWQpKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1doZW4gc3VwcGx5aW5nIGEgcmVsLCBhbiBJRCBtdXN0IGJlIHN1cHBsaWVkIHRvby4nKTtcclxuXHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0LCBjdXJpZSk7XHJcbiAgICBjb25zdCB1cmkgPSBsaW5rLmZpbGxUZW1wbGF0ZSh7IGlkOiBpZC50b1N0cmluZygpIH0pO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5nZXRTaW5nbGVCeVVyaSh1cmksIGhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRTaW5nbGVCeVVyaSh1cmk6IHN0cmluZywgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnNXaXRob3V0Qm9keSh0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldCh1cmksIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgY29tYmluZWRIZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2F2ZShyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3Qgc2F2ZUxpbmsgPSByZXNvdXJjZS5maW5kTGluaygnc2F2ZScpO1xyXG4gICAgaWYgKCFzYXZlTGluaylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcmVzb3VyY2UgJHtyZXNvdXJjZX0gZG9lcyBub3QgaGF2ZSBhIHNhdmUgbGluay5gKTtcclxuICAgIGlmICghc2F2ZUxpbmsubmFtZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc2F2ZSBsaW5rICR7c2F2ZUxpbmt9IGRvZXMgbm90IGhhdmUgYSBzYXZlIG5hbWUuYCk7XHJcblxyXG4gICAgY29uc3QgdXJpID0gc2F2ZUxpbmsuaHJlZjtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHNhdmVMaW5rLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzV2l0aEJvZHkodGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuXHJcbiAgICBsZXQgcmVzcG9uc2U7XHJcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xyXG4gICAgICBjYXNlICdwdXQnOlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQucHV0KHVyaSwgcmVzb3VyY2UsIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncG9zdCc6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5wb3N0KHVyaSwgcmVzb3VyY2UsIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke21ldGhvZH0nIGlzIG5vdCBhbGxvd2VkIGFzIGxpbmsgbmFtZSBmb3IgdGhlIHNhdmUgbGluay4gT25seSAnUE9TVCcgYW5kICdQVVQnIGFyZSBhbGxvd2VkLmApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzdWJtaXQodGVtcGxhdGU6IFRlbXBsYXRlLCBmb3JtVmFsdWVzOiB7fSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEZvcm1zUmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IHVyaSA9IHRlbXBsYXRlLnRhcmdldCB8fCAnJztcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRlbXBsYXRlLm1ldGhvZD8udG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzV2l0aEJvZHkodGhpcy5fb3B0aW9ucy5WZXJzaW9uLCAnYXBwbGljYXRpb24vcHJzLmhhbC1mb3Jtcytqc29uJyk7XHJcblxyXG4gICAgbGV0IHJlc3BvbnNlO1xyXG4gICAgc3dpdGNoIChtZXRob2QpIHtcclxuICAgICAgY2FzZSAncHV0JzpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LnB1dCh1cmksIGZvcm1WYWx1ZXMsIEZvcm1zUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwb3N0JzpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LnBvc3QodXJpLCBmb3JtVmFsdWVzLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldCh1cmksIEZvcm1zUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RnVsbFJlbChyZWw6IHN0cmluZywgY3VyaWU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gcmVsIGFscmVhZHkgaW5jbHVkZXMgYSBjdXJpZSA9PiBqdXN0IHJldHVybiBpdFxyXG4gICAgaWYgKHJlbC5pbmNsdWRlcygnOicpKVxyXG4gICAgICByZXR1cm4gcmVsO1xyXG5cclxuICAgIC8vIE5vIGN1cmllIGdpdmVuID0+IHVzZSBkZWZhdWx0IGN1cmllLlxyXG4gICAgaWYgKCFjdXJpZSlcclxuICAgICAgY3VyaWUgPSB0aGlzLl9kZWZhdWx0Q3VyaWU7XHJcblxyXG4gICAgLy8gQ29tYmluZSBjdXJpZSBhbmQgcmVsXHJcbiAgICBjb25zdCBmdWxsUmVsID0gYCR7Y3VyaWV9OiR7cmVsfWA7XHJcblxyXG4gICAgcmV0dXJuIGZ1bGxSZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldEhvbWVGb3JjZWQoKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzV2l0aG91dEJvZHkodGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0KHRoaXMuX29wdGlvbnMuQmFzZVVybCwgUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0Q3VyaWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJpZXMgPSB0aGlzLl9ob21lUmVzb3VyY2U/Ll9saW5rcz8uY3VyaWVzO1xyXG4gICAgaWYgKCFjdXJpZXMgfHwgY3VyaWVzLmxlbmd0aCA9PT0gMCB8fCAhY3VyaWVzWzBdKVxyXG4gICAgICB0aGlzLl9kZWZhdWx0Q3VyaWUgPSB1bmRlZmluZWQ7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2RlZmF1bHRDdXJpZSA9IGN1cmllc1swXS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZUJ5VGVtcGxhdGVBbmRGb3JtKHRlbXBsYXRlOiBUZW1wbGF0ZSwgZm9ybUdyb3VwOiBGb3JtR3JvdXA8eyB0aW1lc3RhbXA6IEFic3RyYWN0Q29udHJvbDxzdHJpbmc+IH0+KTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8dm9pZCB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgdXJsID0gdGVtcGxhdGUudGFyZ2V0O1xyXG4gICAgaWYgKHVybCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgdGFyZ2V0IG9mIHRoZSBnaXZlbiB0ZW1wbGF0ZSBjYW5ub3QgYmUgdW5kZWZpbmVkLlwiKTtcclxuXHJcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBmb3JtR3JvdXAudmFsdWUudGltZXN0YW1wXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlQnlVcmwodXJsLCB0aW1lc3RhbXApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZUJ5VXJsKHVybDogc3RyaW5nLCB0aW1lc3RhbXA/OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTx2b2lkIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBsZXQgaGVhZGVyID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnNXaXRob3V0Qm9keSh0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG5cclxuICAgIGlmICh0aW1lc3RhbXAgIT09IHVuZGVmaW5lZClcclxuICAgICAgaGVhZGVyID0gaGVhZGVyLmFwcGVuZChcIkVUYWdcIiwgdGltZXN0YW1wKTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmRlbGV0ZSh1cmwsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -16,7 +16,7 @@ import { ButtonModule } from 'primeng/button';
16
16
  import * as _ from 'lodash';
17
17
  import * as i1 from '@angular/platform-browser';
18
18
  import * as i1$1 from '@wertzui/ngx-hal-client';
19
- import { Resource, FormsResource, Link, PagedListResource, PropertyType, Property, NumberTemplate } from '@wertzui/ngx-hal-client';
19
+ import { Resource, FormsResource, Link, PagedListResource, PropertyType, Property, NumberTemplate, HalClientModule } from '@wertzui/ngx-hal-client';
20
20
  import { HttpHeaders } from '@angular/common/http';
21
21
  import { lastValueFrom } from 'rxjs';
22
22
  import * as i2$3 from 'primeng/api';
@@ -315,13 +315,26 @@ class RestWorldClient {
315
315
  }
316
316
  return combinedHeaders;
317
317
  }
318
- static createHeaders(mediaType, version) {
318
+ static createHeadersWithoutBody(version, accept) {
319
319
  if (version)
320
320
  return new HttpHeaders({
321
- 'Accept': `${mediaType || 'application/hal+json'}; v=${version}`,
322
- 'Content-Type': `${mediaType || 'application/hal+json'}; v=${version}`
321
+ 'Accept': `${accept !== null && accept !== void 0 ? accept : 'application/hal+json'}; v=${version}`,
322
+ 'Content-Type': `v=${version}`
323
323
  });
324
- return new HttpHeaders();
324
+ return new HttpHeaders({
325
+ 'Accept': `${accept !== null && accept !== void 0 ? accept : 'application/hal+json'};`,
326
+ });
327
+ }
328
+ static createHeadersWithBody(version, accept, contentType) {
329
+ if (version)
330
+ return new HttpHeaders({
331
+ 'Accept': `${accept !== null && accept !== void 0 ? accept : 'application/hal+json'}; v=${version}`,
332
+ 'Content-Type': `${contentType !== null && contentType !== void 0 ? contentType : 'application/json'}; v=${version}`
333
+ });
334
+ return new HttpHeaders({
335
+ 'Accept': `${accept !== null && accept !== void 0 ? accept : 'application/hal+json'};`,
336
+ 'Content-Type': `${contentType !== null && contentType !== void 0 ? contentType : 'application/json'};`
337
+ });
325
338
  }
326
339
  delete(resource) {
327
340
  return __awaiter(this, void 0, void 0, function* () {
@@ -329,7 +342,7 @@ class RestWorldClient {
329
342
  if (!deleteLink)
330
343
  throw new Error(`The resource ${resource} does not have a delete link.`);
331
344
  const uri = deleteLink.href;
332
- const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
345
+ const header = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'application/hal+json');
333
346
  const response = yield this.halClient.delete(uri, ProblemDetails, header);
334
347
  return response;
335
348
  });
@@ -358,7 +371,7 @@ class RestWorldClient {
358
371
  }
359
372
  getForm(url) {
360
373
  return __awaiter(this, void 0, void 0, function* () {
361
- const header = RestWorldClient.createHeaders('application/prs.hal-forms+json', this._options.Version);
374
+ const header = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'application/prs.hal-forms+json');
362
375
  return this._halClient.get(url, FormsResource, ProblemDetails, header);
363
376
  });
364
377
  }
@@ -453,7 +466,7 @@ class RestWorldClient {
453
466
  const link = new Link();
454
467
  link.href = uri;
455
468
  const filledUri = link.fillTemplate(parameters);
456
- const defaultHeaders = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
469
+ const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version);
457
470
  const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
458
471
  const response = yield this.halClient.get(filledUri, PagedListResource, ProblemDetails, combinedHeaders);
459
472
  return response;
@@ -464,12 +477,23 @@ class RestWorldClient {
464
477
  const link = new Link();
465
478
  link.href = uri;
466
479
  const filledUri = link.fillTemplate(parameters);
467
- const defaultHeaders = RestWorldClient.createHeaders('text/csv', this._options.Version);
480
+ const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'text/csv');
468
481
  const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
469
482
  const response = yield lastValueFrom(this.halClient.httpClient.get(filledUri, { headers: combinedHeaders, responseType: 'blob', observe: 'response' }));
470
483
  return response;
471
484
  });
472
485
  }
486
+ postListByUriAsCsv(uri, parameters, body, headers) {
487
+ return __awaiter(this, void 0, void 0, function* () {
488
+ const link = new Link();
489
+ link.href = uri;
490
+ const filledUri = link.fillTemplate(parameters);
491
+ const defaultHeaders = RestWorldClient.createHeadersWithBody(this._options.Version, 'text/csv');
492
+ const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
493
+ const response = yield lastValueFrom(this.halClient.httpClient.post(filledUri, body, { headers: combinedHeaders, responseType: 'blob', observe: 'response' }));
494
+ return response;
495
+ });
496
+ }
473
497
  getSingle(rel, id, headers, curie) {
474
498
  return __awaiter(this, void 0, void 0, function* () {
475
499
  if (!_.isNumber(id))
@@ -482,7 +506,7 @@ class RestWorldClient {
482
506
  }
483
507
  getSingleByUri(uri, headers) {
484
508
  return __awaiter(this, void 0, void 0, function* () {
485
- const defaultHeaders = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
509
+ const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version);
486
510
  const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
487
511
  const response = yield this.halClient.get(uri, Resource, ProblemDetails, combinedHeaders);
488
512
  return response;
@@ -497,7 +521,7 @@ class RestWorldClient {
497
521
  throw new Error(`The save link ${saveLink} does not have a save name.`);
498
522
  const uri = saveLink.href;
499
523
  const method = saveLink.name.toLowerCase();
500
- const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
524
+ const header = RestWorldClient.createHeadersWithBody(this._options.Version);
501
525
  let response;
502
526
  switch (method) {
503
527
  case 'put':
@@ -517,7 +541,7 @@ class RestWorldClient {
517
541
  return __awaiter(this, void 0, void 0, function* () {
518
542
  const uri = template.target || '';
519
543
  const method = (_a = template.method) === null || _a === void 0 ? void 0 : _a.toLowerCase();
520
- const header = RestWorldClient.createHeaders('application/prs.hal-forms+json', this._options.Version);
544
+ const header = RestWorldClient.createHeadersWithBody(this._options.Version, 'application/prs.hal-forms+json');
521
545
  let response;
522
546
  switch (method) {
523
547
  case 'put':
@@ -545,7 +569,7 @@ class RestWorldClient {
545
569
  }
546
570
  getHomeForced() {
547
571
  return __awaiter(this, void 0, void 0, function* () {
548
- const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
572
+ const header = RestWorldClient.createHeadersWithoutBody(this._options.Version);
549
573
  const response = yield this.halClient.get(this._options.BaseUrl, Resource, ProblemDetails, header);
550
574
  return response;
551
575
  });
@@ -569,7 +593,7 @@ class RestWorldClient {
569
593
  }
570
594
  deleteByUrl(url, timestamp) {
571
595
  return __awaiter(this, void 0, void 0, function* () {
572
- let header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);
596
+ let header = RestWorldClient.createHeadersWithoutBody(this._options.Version);
573
597
  if (timestamp !== undefined)
574
598
  header = header.append("ETag", timestamp);
575
599
  const response = yield this.halClient.delete(url, ProblemDetails, header);
@@ -2213,7 +2237,8 @@ RestworldClientModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", v
2213
2237
  SplitButtonModule,
2214
2238
  AvatarModule,
2215
2239
  ContextMenuModule,
2216
- ChipModule], exports: [RESTworldListViewComponent,
2240
+ ChipModule,
2241
+ HalClientModule], exports: [RESTworldListViewComponent,
2217
2242
  RESTworldEditViewComponent,
2218
2243
  RestWorldImageComponent,
2219
2244
  RestWorldFileComponent,
@@ -2278,7 +2303,8 @@ RestworldClientModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
2278
2303
  SplitButtonModule,
2279
2304
  AvatarModule,
2280
2305
  ContextMenuModule,
2281
- ChipModule] });
2306
+ ChipModule,
2307
+ HalClientModule] });
2282
2308
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: RestworldClientModule, decorators: [{
2283
2309
  type: NgModule,
2284
2310
  args: [{
@@ -2340,6 +2366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
2340
2366
  AvatarModule,
2341
2367
  ContextMenuModule,
2342
2368
  ChipModule,
2369
+ HalClientModule,
2343
2370
  ],
2344
2371
  exports: [
2345
2372
  RESTworldListViewComponent,
@@ -2389,4 +2416,3 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
2389
2416
 
2390
2417
  export { AsPipe, AvatarGenerator, FormService, LinkNames, ODataService, ProblemDetails, PropertyWithImage, PropertyWithOptions, RESTworldEditViewComponent, RESTworldListViewComponent, RestWorldAvatarComponent, RestWorldClient, RestWorldClientCollection, RestWorldFileComponent, RestWorldFormComponent, RestWorldFormElementComponent, RestWorldIdNavigationComponent, RestWorldImageComponent, RestWorldInputCollectionComponent, RestWorldInputComponent, RestWorldInputDropdownComponent, RestWorldInputObjectComponent, RestWorldInputSimpleComponent, RestWorldInputTemplateComponent, RestWorldLabelComponent, RestWorldMenuButtonComponent, RestWorldOptions, RestWorldTableComponent, RestWorldValidationErrorsComponent, RestworldClientModule, SafeUrlPipe, SettingsService, initializeSettings };
2391
2418
  //# sourceMappingURL=wertzui-ngx-restworld-client.mjs.map
2392
- //# sourceMappingURL=wertzui-ngx-restworld-client.mjs.map