ontimize-web-ngx 15.0.0-beta.5 → 15.0.0-rc.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.
Files changed (40) hide show
  1. package/esm2020/lib/components/form/navigation/o-form.navigation.class.mjs +5 -2
  2. package/esm2020/lib/components/image/o-image.component.mjs +3 -3
  3. package/esm2020/lib/components/index.mjs +2 -1
  4. package/esm2020/lib/components/tree/header/index.mjs +2 -0
  5. package/esm2020/lib/components/tree/header/tree-menu/o-tree-menu.component.mjs +33 -0
  6. package/esm2020/lib/components/tree/index.mjs +5 -0
  7. package/esm2020/lib/components/tree/o-tree-dao.service.mjs +43 -0
  8. package/esm2020/lib/components/tree/o-tree.component.mjs +523 -0
  9. package/esm2020/lib/components/tree/o-tree.datasource.mjs +79 -0
  10. package/esm2020/lib/components/tree/o-tree.module.mjs +24 -0
  11. package/esm2020/lib/components/tree/tree-node/tree-node.component.mjs +49 -0
  12. package/esm2020/lib/config/o-modules.mjs +8 -6
  13. package/esm2020/lib/i18n/i18n.mjs +6 -3
  14. package/esm2020/lib/ontimize-web-ngx.module.mjs +4 -3
  15. package/esm2020/lib/services/permissions/o-permissions.module.mjs +1 -3
  16. package/esm2020/lib/services/permissions/permissions.service.mjs +18 -8
  17. package/esm2020/lib/services/state/o-tree-component-state.class.mjs +4 -0
  18. package/esm2020/lib/services/state/o-tree-component-state.service.mjs +50 -0
  19. package/fesm2015/ontimize-web-ngx.mjs +6233 -5518
  20. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  21. package/fesm2020/ontimize-web-ngx.mjs +10871 -10160
  22. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  23. package/lib/components/index.d.ts +1 -0
  24. package/lib/components/tree/header/index.d.ts +1 -0
  25. package/lib/components/tree/header/tree-menu/o-tree-menu.component.d.ts +13 -0
  26. package/lib/components/tree/index.d.ts +4 -0
  27. package/lib/components/tree/o-tree-dao.service.d.ts +18 -0
  28. package/lib/components/tree/o-tree.component.d.ts +111 -0
  29. package/lib/components/tree/o-tree.datasource.d.ts +22 -0
  30. package/lib/components/tree/o-tree.module.d.ts +14 -0
  31. package/lib/components/tree/tree-node/tree-node.component.d.ts +14 -0
  32. package/lib/i18n/i18n.d.ts +3 -0
  33. package/lib/ontimize-web-ngx.module.d.ts +2 -1
  34. package/lib/services/state/o-tree-component-state.class.d.ts +3 -0
  35. package/lib/services/state/o-tree-component-state.service.d.ts +13 -0
  36. package/package.json +1 -1
  37. package/theme.scss +69 -69
  38. package/theming/ontimize-style-v8.scss +2 -1
  39. package/theming/styles/density.scss +6 -2
  40. package/theming/themes/ontimize-black-yellow.scss +13 -3
@@ -238,7 +238,10 @@ export class OFormNavigationClass {
238
238
  navData = this.navigationService.getLastItem();
239
239
  }
240
240
  const extras = {};
241
- extras[Codes.QUERY_PARAMS] = navData.queryParams;
241
+ extras.queryParams = navData.queryParams;
242
+ if (options && options.exitWithoutConfirmation) {
243
+ extras.queryParams[Codes.IGNORE_CAN_DEACTIVATE] = options.exitWithoutConfirmation;
244
+ }
242
245
  this.router.navigate([navData.url], extras).then(val => {
243
246
  if (val && options && options.changeToolbarMode) {
244
247
  this.form.getFormToolbar().setInitialMode();
@@ -409,4 +412,4 @@ export class OFormNavigationClass {
409
412
  }, activeMode);
410
413
  }
411
414
  }
412
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLm5hdmlnYXRpb24uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL25hdmlnYXRpb24vby1mb3JtLm5hdmlnYXRpb24uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsaUJBQWlCLEVBQW1CLE1BQU0sc0NBQXNDLENBQUM7QUFLMUYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFFdkcsTUFBTSxPQUFPLG9CQUFvQjtJQTBCL0IsWUFDWSxRQUFrQixFQUNsQixJQUFlLEVBQ2YsTUFBYyxFQUNkLFFBQXdCO1FBSHhCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNmLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQWYxQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUl0Qiw0QkFBdUIsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUVoRixxQkFBZ0IsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVczRSxJQUFJLENBQUMsaUJB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Q0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7WUFDL0UsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLG9CQUFvQjtZQUNyRiw4QkFBOEI7U0FDL0IsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyLCBVcmxTZWdtZW50R3JvdXAgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vbGF5b3V0cy9mb3JtLWxheW91dC9kaWFsb2cvby1mb3JtLWxheW91dC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlLCBPTmF2aWdhdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyxcbiAgRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGFcbn0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZm9ybS1sYXlvdXQtZGV0YWlsLWNvbXBvbmVudC1kYXRhLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFNRTFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9zcWx0eXBlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtQ29uZmlybUV4aXRTZXJ2aWNlIH0gZnJvbSAnLi9vLWZvcm0tY29uZmlybS1leGl0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1CYXNlIH0gZnJvbSAnLi4vby1mb3JtLWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSB9IGZyb20gJy4uLy4uLy4uL2xheW91dHMvZm9ybS1sYXlvdXQvby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgT0Zvcm1OYXZpZ2F0aW9uQ2xhc3Mge1xuXG4gIGZvcm1MYXlvdXRNYW5hZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlO1xuICBmb3JtTGF5b3V0RGlhbG9nOiBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlO1xuICBwcm90ZWN0ZWQgY29uZmlybUV4aXRTZXJ2aWNlOiBPRm9ybUNvbmZpcm1FeGl0U2VydmljZTtcblxuICBwcm90ZWN0ZWQgcVBhcmFtU3ViOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBxdWVyeVBhcmFtczogYW55O1xuXG4gIHByb3RlY3RlZCB1cmxQYXJhbVN1YjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgdXJsUGFyYW1zOiBvYmplY3Q7XG5cbiAgcHJvdGVjdGVkIHVybFN1YjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgdXJsU2VnbWVudHM6IGFueSA9IFtdO1xuXG4gIHByb3RlY3RlZCBjb21iaW5lZE5hdmlnYXRpb25TdHJlYW06IE9ic2VydmFibGU8YW55PjtcbiAgcHJvdGVjdGVkIGNvbWJpbmVkTmF2aWdhdGlvblN0cmVhbVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgb25VcmxQYXJhbUNoYW5nZWRTdHJlYW06IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgbmF2aWdhdGlvblN0cmVhbTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByb3RlY3RlZCBvbkNsb3NlVGFiU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBjYWNoZVN0YXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgZm9ybTogT0Zvcm1CYXNlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgYWN0Um91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoTmF2aWdhdGlvblNlcnZpY2UpO1xuICAgIHRoaXMuY29uZmlybUV4aXRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE9Gb3JtQ29uZmlybUV4aXRTZXJ2aWNlKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyID0gdGhpcy5pbmplY3Rvci5nZXQoT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gTm8gcGFyZW50IGZvcm1MYXlvdXRNYW5hZ2VyXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZm9ybUxheW91dERpYWxvZyA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBObyBwYXJlbnQgZm9ybSBsYXlvdXQgZGlhbG9nXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybUxheW91dERpYWxvZyAmJiAhdGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlciA9IHRoaXMuZm9ybUxheW91dERpYWxvZy5mb3JtTGF5b3V0TWFuYWdlcjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICB0aGlzLmNvbWJpbmVkTmF2aWdhdGlvblN0cmVhbSA9IGNvbWJpbmVMYXRlc3QoW3NlbGYub25VcmxQYXJhbUNoYW5nZWRTdHJlYW0uYXNPYnNlcnZhYmxlKCldKTtcblxuICAgIHRoaXMuY29tYmluZWROYXZpZ2F0aW9uU3RyZWFtLnN1YnNjcmliZSh2YWxBcnIgPT4ge1xuICAgICAgaWYgKFV0aWwuaXNBcnJheSh2YWxBcnIpICYmIHZhbEFyci5sZW5ndGggPT09IDEgJiYgdmFsQXJyWzBdKSB7XG4gICAgICAgIHNlbGYubmF2aWdhdGlvblN0cmVhbS5lbWl0KHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZSgpIHtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucVBhcmFtU3ViKSB7XG4gICAgICB0aGlzLnFQYXJhbVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy51cmxQYXJhbVN1Yikge1xuICAgICAgdGhpcy51cmxQYXJhbVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy51cmxTdWIpIHtcbiAgICAgIHRoaXMudXJsU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbWJpbmVkTmF2aWdhdGlvblN0cmVhbVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jb21iaW5lZE5hdmlnYXRpb25TdHJlYW1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBzdWJzY3JpYmVUb1F1ZXJ5UGFyYW1zKCkge1xuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICBjb25zdCBjYWNoZURhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5nZXRGb3JtQ2FjaGVEYXRhKCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQoY2FjaGVEYXRhKSkge1xuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gY2FjaGVEYXRhLnF1ZXJ5UGFyYW1zIHx8IHt9O1xuICAgICAgICB0aGlzLnBhcnNlUXVlcnlQYXJhbXMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLnFQYXJhbVN1YiA9IHRoaXMuYWN0Um91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgIGlmIChwYXJhbXMpIHtcbiAgICAgICAgICBzZWxmLnF1ZXJ5UGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgIHNlbGYucGFyc2VRdWVyeVBhcmFtcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlUXVlcnlQYXJhbXMoKSB7XG4gICAgY29uc3QgaXNEZXRhaWwgPSB0aGlzLnF1ZXJ5UGFyYW1zW0NvZGVzLklTX0RFVEFJTF07XG4gICAgLy8gZW5zdXJpbmcgaXNkZXRhaWwgPSBmYWxzZSB3aGVuIHVzaW5nIGZvcm0gbGF5b3V0IG1hbmFnZXJcbiAgICB0aGlzLmZvcm0uaXNEZXRhaWxGb3JtID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlciA/IGZhbHNlIDogKGlzRGV0YWlsID09PSAndHJ1ZScpO1xuICB9XG5cbiAgc3Vic2NyaWJlVG9VcmxQYXJhbXMoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIGNvbnN0IGNhY2hlRGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgPSB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmdldEZvcm1DYWNoZURhdGEoKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChjYWNoZURhdGEpKSB7XG4gICAgICAgIHRoaXMudXJsUGFyYW1zID0gY2FjaGVEYXRhLnBhcmFtcztcbiAgICAgICAgdGhpcy5wYXJzZVVybFBhcmFtcygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMudXJsUGFyYW1TdWIgPSB0aGlzLmFjdFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgc2VsZi51cmxQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHRoaXMucGFyc2VVcmxQYXJhbXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VVcmxQYXJhbXMoKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMudXJsUGFyYW1zKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnVybFBhcmFtc1tDb2Rlcy5QQVJFTlRfS0VZU19LRVldKSkge1xuICAgICAgdGhpcy5mb3JtLmZvcm1QYXJlbnRLZXlzVmFsdWVzID0gVXRpbC5kZWNvZGVQYXJlbnRLZXlzKHRoaXMudXJsUGFyYW1zW0NvZGVzLlBBUkVOVF9LRVlTX0tFWV0pO1xuICAgIH1cbiAgICAvLyBUT0RPIE9idGFpbiAnZGF0YXR5cGUnIG9mIGVhY2gga2V5IGNvbnRhaW5lZCBpbnRvIHVybFBhcmFtcyBmb3JcbiAgICAvLyBmb3IgYnVpbGRpbmcgY29ycmVjdGx5IHF1ZXJ5IGZpbHRlciEhISFcbiAgICBpZiAodGhpcy51cmxQYXJhbXMpIHtcbiAgICAgIHRoaXMub25VcmxQYXJhbUNoYW5nZWRTdHJlYW0uZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBzdWJzY3JpYmVUb1VybCgpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgY29uc3QgY2FjaGVEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHRoaXMuZm9ybUxheW91dE1hbmFnZXIuZ2V0Rm9ybUNhY2hlRGF0YSgpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNhY2hlRGF0YSkpIHtcbiAgICAgICAgdGhpcy51cmxTZWdtZW50cyA9IGNhY2hlRGF0YS51cmxTZWdtZW50cztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLnVybFN1YiA9IHRoaXMuYWN0Um91dGUudXJsLnN1YnNjcmliZSh1cmxTZWdtZW50cyA9PiB7XG4gICAgICAgIHNlbGYudXJsU2VnbWVudHMgPSB1cmxTZWdtZW50cztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHN1YnNjcmliZVRvQ2FjaGVDaGFuZ2VzKCkge1xuICAgIGNvbnN0IGZvcm1DYWNoZSA9IHRoaXMuZm9ybS5nZXRGb3JtQ2FjaGUoKTtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKGZvcm1DYWNoZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYWNoZVN0YXRlU3Vic2NyaXB0aW9uID0gZm9ybUNhY2hlLm9uQ2FjaGVTdGF0ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxTdGF0ZUNoYW5nZWQgPSB0aGlzLmZvcm0uaXNJbml0aWFsU3RhdGVDaGFuZ2VkKCk7XG4gICAgICBjb25zdCB0cmlnZ2VyRXhpdENvbmZpcm0gPSB0aGlzLmZvcm0uY29uZmlybUV4aXQgJiYgdGhpcy5mb3JtLmlzSW5pdGlhbFN0YXRlQ2hhbmdlZCh0aGlzLmZvcm0uaWdub3JlT25FeGl0KTtcbiAgICAgIHRoaXMuc2V0TW9kaWZpZWRTdGF0ZShpbml0aWFsU3RhdGVDaGFuZ2VkLCB0cmlnZ2VyRXhpdENvbmZpcm0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q3VycmVudEtleXNWYWx1ZXMoKTogb2JqZWN0IHtcbiAgICBsZXQgZmlsdGVyID0ge307XG4gICAgaWYgKHRoaXMudXJsUGFyYW1zKSB7XG4gICAgICBmaWx0ZXIgPSB0aGlzLmdldEZpbHRlckZyb21PYmplY3QodGhpcy51cmxQYXJhbXMpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJGcm9tT2JqZWN0KG9iamVjdFBhcmFtOiBhbnkpIHtcbiAgICBjb25zdCBmaWx0ZXIgPSB7fTtcbiAgICBpZiAoIW9iamVjdFBhcmFtIHx8IE9iamVjdC5rZXlzKG9iamVjdFBhcmFtKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmaWx0ZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm0ua2V5c0FycmF5KSB7XG4gICAgICB0aGlzLmZvcm0ua2V5c0FycmF5LmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKG9iamVjdFBhcmFtW2tleV0pIHtcbiAgICAgICAgICBmaWx0ZXJba2V5XSA9IFNRTFR5cGVzLnBhcnNlVXNpbmdTUUxUeXBlKG9iamVjdFBhcmFtW2tleV0sIHRoaXMuZm9ybS5rZXlzU3FsVHlwZXNBcnJheVtpbmRleF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLl9wS2V5c0VxdWl2KS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgdXJsVmFsID0gb2JqZWN0UGFyYW1bdGhpcy5mb3JtLl9wS2V5c0VxdWl2W2l0ZW1dXTtcbiAgICAgIGlmICh1cmxWYWwpIHtcbiAgICAgICAgZmlsdGVyW2l0ZW1dID0gU1FMVHlwZXMucGFyc2VVc2luZ1NRTFR5cGUodXJsVmFsLCB0aGlzLmZvcm0ua2V5c1NxbFR5cGVzQXJyYXlbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgZ2V0RmlsdGVyRnJvbVVybFBhcmFtcygpIHtcbiAgICBjb25zdCBmaWx0ZXIgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdldFVybFBhcmFtcygpIHx8IHt9KTtcbiAgICBjb25zdCB1cmxQYXJhbXNLZXlzID0gT2JqZWN0LmtleXMoZmlsdGVyIHx8IHt9KTtcbiAgICBpZiAodXJsUGFyYW1zS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICB1cmxQYXJhbXNLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKGtleSA9PT0gQ29kZXMuUEFSRU5UX0tFWVNfS0VZKSB7XG4gICAgICAgICAgZGVsZXRlIGZpbHRlcltrZXldO1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oZmlsdGVyLCB0aGlzLmZvcm0uZm9ybVBhcmVudEtleXNWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGdldFVybFNlZ21lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnVybFNlZ21lbnRzO1xuICB9XG5cbiAgZ2V0UXVlcnlQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlQYXJhbXM7XG4gIH1cblxuICBzZXRVcmxQYXJhbXModmFsOiBvYmplY3QpIHtcbiAgICB0aGlzLnVybFBhcmFtcyA9IHZhbDtcbiAgfVxuXG4gIGdldFVybFBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy51cmxQYXJhbXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TW9kaWZpZWRTdGF0ZShtb2RpZmllZDogYm9vbGVhbiwgY29uZmlybUV4aXQ6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5zZXRNb2RpZmllZFN0YXRlKHRoaXMuZm9ybS5nZXRBdHRyaWJ1dGUoKSwgbW9kaWZpZWQsIGNvbmZpcm1FeGl0KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVOYXZpZ2F0aW9uKCkge1xuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICBjb25zdCBpc0luSW5zZXJ0TW9kZSA9IHRoaXMuZm9ybS5pc0luSW5zZXJ0TW9kZSgpO1xuICAgICAgbGV0IGZvcm1EYXRhO1xuICAgICAgaWYgKGlzSW5JbnNlcnRNb2RlKSB7XG4gICAgICAgIGZvcm1EYXRhID0ge307XG4gICAgICAgIGZvcm1EYXRhLm5ld190YWJfdGl0bGUgPSAnTEFZT1VUX01BTkFOR0VSLklOU0VSVElPTl9NT0RFX1RJVExFJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlci5hbGxvd1RvVXBkYXRlTmF2aWdhdGlvbih0aGlzLmZvcm0uZ2V0QXR0cmlidXRlKCkpKSB7XG4gICAgICAgIGZvcm1EYXRhID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5mb3JtRGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGZvcm1EYXRhW2tleV0gPSB0aGlzLmZvcm0uZm9ybURhdGFba2V5XS52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybURhdGEpIHtcbiAgICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci51cGRhdGVOYXZpZ2F0aW9uKGZvcm1EYXRhLCB0aGlzLmZvcm0uZ2V0S2V5c1ZhbHVlcygpLCBpc0luSW5zZXJ0TW9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVCYWNrKG9wdGlvbnM/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5jbG9zZURldGFpbChvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UpIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW0oKTtcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaWdub3JlTmF2aWdhdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBuYXZEYXRhOiBPTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldExhc3RJdGVtKCk7XG4gICAgICBpZiAobmF2RGF0YSkge1xuICAgICAgICBjb25zdCBleHRyYXMgPSB7fTtcbiAgICAgICAgZXh0cmFzW0NvZGVzLlFVRVJZX1BBUkFNU10gPSBuYXZEYXRhLnF1ZXJ5UGFyYW1zO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbmF2RGF0YS51cmxdLCBleHRyYXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNsb3NlRGV0YWlsQWN0aW9uKG9wdGlvbnM/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5jbG9zZURldGFpbChvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UpIHtcbiAgICAgIHRoaXMuZm9ybS5iZWZvcmVDbG9zZURldGFpbC5lbWl0KCk7XG4gICAgICAvLyBgcmVtb3ZlTGFzdEl0ZW1zVW50aWxNYWluYCBtYXkgbm90IHJlbW92ZSBhbGwgbmVjZXNzYXJ5IGl0ZW1zIHNvIGN1cnJlbnQgcm91dGUgd2lsbCBiZSBjaGVja2VkIGJlbG93XG4gICAgICBpZiAoIXRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW1zVW50aWxNYWluKCkpIHtcbiAgICAgICAgLy8gYHJlbW92ZUxhc3RJdGVtc1VudGlsTWFpbmAgZGlkbid0IGZpbmQgdGhlIG1haW4gbmF2aWdhdGlvbiBpdGVtXG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaWdub3JlTmF2aWdhdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgbmF2RGF0YTogT05hdmlnYXRpb25JdGVtID0gdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXRMYXN0SXRlbSgpO1xuICAgICAgaWYgKG5hdkRhdGEpIHtcbiAgICAgICAgLy8gaWYgbmF2RGF0YSByb3V0ZSBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCByb3V0ZSwgcmVtb3ZlIGxhc3QgaXRlbVxuICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU2VydmljZS5pc0N1cnJlbnRSb3V0ZShuYXZEYXRhLnVybCkpIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLnJlbW92ZUxhc3RJdGVtKCk7XG4gICAgICAgICAgbmF2RGF0YSA9IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TGFzdEl0ZW0oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7fTtcbiAgICAgICAgZXh0cmFzW0NvZGVzLlFVRVJZX1BBUkFNU10gPSBuYXZEYXRhLnF1ZXJ5UGFyYW1zO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbmF2RGF0YS51cmxdLCBleHRyYXMpLnRoZW4odmFsID0+IHtcbiAgICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5jaGFuZ2VUb29sYmFyTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmdldEZvcm1Ub29sYmFyKCkuc2V0SW5pdGlhbE1vZGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXlJblJlY29yZEFmdGVySW5zZXJ0KGluc2VydGVkS2V5czogb2JqZWN0KSB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UgJiYgdGhpcy5mb3JtLmtleXNBcnJheSAmJiBpbnNlcnRlZEtleXMpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICAgIGNvbnN0IGNsb3NlT3B0czogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyA9IHsgZXhpdFdpdGhvdXRDb25maXJtYXRpb246IHRydWUgfTtcbiAgICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5jbG9zZURldGFpbChjbG9zZU9wdHMpO1xuICAgICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZSAnbmV3JyBuYXZpZ2F0aW9uIGl0ZW0gZnJvbSBoaXN0b3J5XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICAgIGxldCBwYXJhbXM6IGFueVtdID0gW107XG4gICAgICB0aGlzLmZvcm0ua2V5c0FycmF5LmZvckVhY2goKGN1cnJlbnQpID0+IHtcbiAgICAgICAgaWYgKGluc2VydGVkS2V5c1tjdXJyZW50XSkge1xuICAgICAgICAgIHBhcmFtcy5wdXNoKGluc2VydGVkS2V5c1tjdXJyZW50XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbGV0IGV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHt9O1xuICAgICAgbGV0IHFQYXJhbXM6IGFueSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ2V0UXVlcnlQYXJhbXMoKSwgQ29kZXMuZ2V0SXNEZXRhaWxPYmplY3QoKSk7XG4gICAgICAvLyBkZWxldGluZyBpbnNlcnRpb25Nb2RlIGN1cnJlbnQgcXVlcnlQYXJhbVxuICAgICAgZGVsZXRlIHFQYXJhbXNbQ29kZXMuSU5TRVJUSU9OX01PREVdO1xuICAgICAgLy8gSWdub3JpbmcgY3VycmVudCBjbG9zZWQgZm9ybSAodGhlIGluc2VydGlvbiBmb3JtKVxuICAgICAgcVBhcmFtc1tDb2Rlcy5JR05PUkVfQ0FOX0RFQUNUSVZBVEVdID0gdHJ1ZTtcbiAgICAgIGV4dHJhc1tDb2Rlcy5RVUVSWV9QQVJBTVNdID0gcVBhcmFtcztcbiAgICAgIGxldCByb3V0ZSA9IFtdO1xuICAgICAgY29uc3QgbmF2RGF0YTogT05hdmlnYXRpb25JdGVtID0gdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXRMYXN0TWFpbk5hdmlnYXRpb25Sb3V0ZURhdGEoKTtcbiAgICAgIGlmIChuYXZEYXRhKSB7XG4gICAgICAgIGxldCB1cmwgPSBuYXZEYXRhLnVybDtcbiAgICAgICAgY29uc3QgZGV0YWlsUm91dGUgPSBuYXZEYXRhLmdldERldGFpbEZvcm1Sb3V0ZSgpO1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQoZGV0YWlsUm91dGUpKSB7XG4gICAgICAgICAgcm91dGUucHVzaChkZXRhaWxSb3V0ZSk7XG4gICAgICAgICAgY29uc3QgZGV0YWlsSW5kZXggPSB1cmwubGFzdEluZGV4T2YoJy8nICsgZGV0YWlsUm91dGUpO1xuICAgICAgICAgIGlmIChkZXRhaWxJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHVybCA9IHVybC5zdWJzdHJpbmcoMCwgZGV0YWlsSW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByb3V0ZS51bnNoaWZ0KHVybCk7XG4gICAgICAgIHJvdXRlLnB1c2goLi4ucGFyYW1zKTtcbiAgICAgICAgLy8gZGVsZXRpbmcgaW5zZXJ0Rm9ybVJvdXRlIGFzIGFjdGl2ZSBtb2RlIChiZWNhdXNlIHN0YXlJblJlY29yZEFmdGVySW5zZXJ0IGNoYW5nZXMgaXQpXG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZGVsZXRlQWN0aXZlRm9ybU1vZGUobmF2RGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHRyYXMucmVsYXRpdmVUbyA9IHRoaXMuYWN0Um91dGU7XG4gICAgICAgIHJvdXRlID0gWycuLi8nLCAuLi5wYXJhbXNdO1xuICAgICAgfVxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUocm91dGUsIGV4dHJhcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byAnaW5zZXJ0JyBtb2RlXG4gICAqL1xuICBnb0luc2VydE1vZGUob3B0aW9ucz86IGFueSkge1xuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyICYmIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuYWxsb3dOYXZpZ2F0aW9uKCkpIHtcbiAgICAgIHRoaXMuZm9ybS5zZXRJbnNlcnRNb2RlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm5hdmlnYXRpb25TZXJ2aWNlKSB7XG4gICAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJvdXRlID0gW107XG4gICAgICBjb25zdCBleHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7fTtcbiAgICAgIGNvbnN0IG5hdkRhdGE6IE9OYXZpZ2F0aW9uSXRlbSA9IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TGFzdE1haW5OYXZpZ2F0aW9uUm91dGVEYXRhKCk7XG4gICAgICBpZiAoIXRoaXMuZm9ybUxheW91dE1hbmFnZXIgJiYgbmF2RGF0YSkge1xuICAgICAgICByb3V0ZS5wdXNoKG5hdkRhdGEudXJsKTtcbiAgICAgICAgY29uc3QgZGV0YWlsUm91dGUgPSBuYXZEYXRhLmdldERldGFpbEZvcm1Sb3V0ZSgpO1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQoZGV0YWlsUm91dGUpKSB7XG4gICAgICAgICAgcm91dGUucHVzaChkZXRhaWxSb3V0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLmdldEluc2VydEZvcm1Sb3V0ZSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4dHJhcy5yZWxhdGl2ZVRvID0gdGhpcy5hY3RSb3V0ZTtcbiAgICAgICAgcm91dGUgPSBbQ29kZXMuREVGQVVMVF9JTlNFUlRfUk9VVEVdO1xuICAgICAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlciAmJiB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmlzVGFiTW9kZSgpKSB7XG4gICAgICAgICAgZXh0cmFzLnF1ZXJ5UGFyYW1zID0ge307XG4gICAgICAgICAgZXh0cmFzLnF1ZXJ5UGFyYW1zW0NvZGVzLklOU0VSVElPTl9NT0RFXSA9ICd0cnVlJztcbiAgICAgICAgICBleHRyYXMucXVlcnlQYXJhbXNbQ29kZXMuSUdOT1JFX0NBTl9ERUFDVElWQVRFXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmVOYXZpZ2F0aW9uRm9ybVJvdXRlcygnaW5zZXJ0Rm9ybVJvdXRlJywgISF0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlLCBleHRyYXMpLnRoZW4oKHZhbCkgPT4ge1xuICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5jaGFuZ2VUb29sYmFyTW9kZSkge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXRGb3JtVG9vbGJhcigpLnNldEluc2VydE1vZGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byAnZWRpdCcgbW9kZVxuICAgKi9cbiAgZ29FZGl0TW9kZShvcHRpb25zPzogYW55KSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIgJiYgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5hbGxvd05hdmlnYXRpb24oKSkge1xuICAgICAgdGhpcy5mb3JtLnNldFVwZGF0ZU1vZGUoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UpIHtcbiAgICAgIGxldCByb3V0ZSA9IFtdO1xuICAgICAgY29uc3QgZXh0cmFzOiBOYXZpZ2F0aW9uRXh0cmFzID0ge307XG4gICAgICBpZiAodGhpcy5mb3JtLmlzRGV0YWlsRm9ybSkge1xuICAgICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXSA9IENvZGVzLmdldElzRGV0YWlsT2JqZWN0KCk7XG4gICAgICB9XG4gICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ2V0UXVlcnlQYXJhbXMoKSwgZXh0cmFzW0NvZGVzLlFVRVJZX1BBUkFNU10gfHwge30pO1xuXG4gICAgICBjb25zdCBwYXJhbXM6IGFueVtdID0gW107XG4gICAgICBjb25zdCB1cmxQYXJhbXMgPSB0aGlzLmdldFVybFBhcmFtcygpO1xuICAgICAgdGhpcy5mb3JtLmtleXNBcnJheS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmICh1cmxQYXJhbXNba2V5XSkge1xuICAgICAgICAgIHBhcmFtcy5wdXNoKHVybFBhcmFtc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBuYXZEYXRhOiBPTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldFByZXZpb3VzUm91dGVEYXRhKCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQobmF2RGF0YSkpIHtcbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLnVybCk7XG4gICAgICAgIGNvbnN0IGRldGFpbFJvdXRlID0gbmF2RGF0YS5nZXREZXRhaWxGb3JtUm91dGUoKTtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGRldGFpbFJvdXRlKSkge1xuICAgICAgICAgIHJvdXRlLnB1c2goZGV0YWlsUm91dGUpO1xuICAgICAgICB9XG4gICAgICAgIHJvdXRlLnB1c2goLi4ucGFyYW1zKTtcbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLmdldEVkaXRGb3JtUm91dGUoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHRyYXMucmVsYXRpdmVUbyA9IHRoaXMuYWN0Um91dGU7XG4gICAgICAgIHJvdXRlID0gWycuLi8nLCAuLi5wYXJhbXMsIENvZGVzLkRFRkFVTFRfRURJVF9ST1VURV07XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlTmF2aWdhdGlvbkZvcm1Sb3V0ZXMoJ2VkaXRGb3JtUm91dGUnKTtcbiAgICAgIHRoaXMuZm9ybS5iZWZvcmVVcGRhdGVNb2RlLmVtaXQoKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlLCBleHRyYXMpLnRoZW4oKHZhbCkgPT4ge1xuICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5jaGFuZ2VUb29sYmFyTW9kZSkge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXRGb3JtVG9vbGJhcigpLnNldEVkaXRNb2RlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZ2V0TmVzdGVkTGV2ZWxzTnVtYmVyKCkge1xuICAgIGxldCBhY3RSb3V0ZSA9IHRoaXMuYWN0Um91dGU7XG4gICAgbGV0IGkgPSAwO1xuICAgIHdoaWxlIChhY3RSb3V0ZS5wYXJlbnQpIHtcbiAgICAgIGFjdFJvdXRlID0gYWN0Um91dGUucGFyZW50O1xuICAgICAgYWN0Um91dGUudXJsLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBpZiAoeCAmJiB4Lmxlbmd0aCkge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBnZXRGdWxsVXJsU2VnbWVudHMoKSB7XG4gICAgbGV0IGZ1bGxVcmxTZWdtZW50cyA9IFtdO1xuICAgIGNvbnN0IHJvdXRlciA9IHRoaXMucm91dGVyO1xuICAgIGlmIChyb3V0ZXIgJiYgcm91dGVyLnVybCAmJiByb3V0ZXIudXJsLmxlbmd0aCkge1xuICAgICAgY29uc3Qgcm9vdDogVXJsU2VnbWVudEdyb3VwID0gcm91dGVyLnBhcnNlVXJsKHJvdXRlci51cmwpLnJvb3Q7XG4gICAgICBpZiAocm9vdCAmJiByb290Lmhhc0NoaWxkcmVuKCkgJiYgcm9vdC5jaGlsZHJlbi5wcmltYXJ5KSB7XG4gICAgICAgIGZ1bGxVcmxTZWdtZW50cyA9IHJvb3QuY2hpbGRyZW4ucHJpbWFyeS5zZWdtZW50cztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZ1bGxVcmxTZWdtZW50cztcbiAgfVxuXG4gIHNob3dDb25maXJtRGlzY2FyZENoYW5nZXMoaWdub3JlQXR0cnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maXJtRXhpdFNlcnZpY2Uuc3Vic2NyaWJlVG9EaXNjYXJkQ2hhbmdlcyh0aGlzLmZvcm0sIGlnbm9yZUF0dHJzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdG9yZU5hdmlnYXRpb25Gb3JtUm91dGVzKGFjdGl2ZU1vZGU6IHN0cmluZywgbWFpbkZvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50PzogYm9vbGVhbikge1xuICAgIGNvbnN0IHByZXZSb3V0ZURhdGEgPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldFByZXZpb3VzUm91dGVEYXRhKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChwcmV2Um91dGVEYXRhKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb3JtUm91dGVzID0gcHJldlJvdXRlRGF0YS5mb3JtUm91dGVzO1xuICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2Uuc3RvcmVGb3JtUm91dGVzKHtcbiAgICAgIGRldGFpbEZvcm1Sb3V0ZTogZm9ybVJvdXRlcyA/IGZvcm1Sb3V0ZXMuZGV0YWlsRm9ybVJvdXRlIDogQ29kZXMuREVGQVVMVF9ERVRBSUxfUk9VVEUsXG4gICAgICBlZGl0Rm9ybVJvdXRlOiBmb3JtUm91dGVzID8gZm9ybVJvdXRlcy5lZGl0Rm9ybVJvdXRlIDogQ29kZXMuREVGQVVMVF9FRElUX1JPVVRFLFxuICAgICAgaW5zZXJ0Rm9ybVJvdXRlOiBmb3JtUm91dGVzID8gZm9ybVJvdXRlcy5pbnNlcnRGb3JtUm91dGUgOiBDb2Rlcy5ERUZBVUxUX0lOU0VSVF9ST1VURSxcbiAgICAgIG1haW5Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFxuICAgIH0sIGFjdGl2ZU1vZGUpO1xuICB9XG5cbn1cbiJdfQ==
415
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLm5hdmlnYXRpb24uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL25hdmlnYXRpb24vby1mb3JtLm5hdmlnYXRpb24uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsaUJBQWlCLEVBQW1CLE1BQU0sc0NBQXNDLENBQUM7QUFLMUYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFFdkcsTUFBTSxPQUFPLG9CQUFvQjtJQTBCL0IsWUFDWSxRQUFrQixFQUNsQixJQUFlLEVBQ2YsTUFBYyxFQUNkLFFBQXdCO1FBSHhCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNmLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQWYxQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUl0Qiw0QkFBdUIsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUVoRixxQkFBZ0IsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVczRSxJQUFJLENBQUMsaUJB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QUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CO1lBQ3JGLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7WUFDL0UsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLG9CQUFvQjtZQUNyRiw4QkFBOEI7U0FDL0IsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyLCBVcmxTZWdtZW50R3JvdXAgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vbGF5b3V0cy9mb3JtLWxheW91dC9kaWFsb2cvby1mb3JtLWxheW91dC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlLCBPTmF2aWdhdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyxcbiAgRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGFcbn0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZm9ybS1sYXlvdXQtZGV0YWlsLWNvbXBvbmVudC1kYXRhLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFNRTFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9zcWx0eXBlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtQ29uZmlybUV4aXRTZXJ2aWNlIH0gZnJvbSAnLi9vLWZvcm0tY29uZmlybS1leGl0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1CYXNlIH0gZnJvbSAnLi4vby1mb3JtLWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSB9IGZyb20gJy4uLy4uLy4uL2xheW91dHMvZm9ybS1sYXlvdXQvby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgT0Zvcm1OYXZpZ2F0aW9uQ2xhc3Mge1xuXG4gIGZvcm1MYXlvdXRNYW5hZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlO1xuICBmb3JtTGF5b3V0RGlhbG9nOiBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlO1xuICBwcm90ZWN0ZWQgY29uZmlybUV4aXRTZXJ2aWNlOiBPRm9ybUNvbmZpcm1FeGl0U2VydmljZTtcblxuICBwcm90ZWN0ZWQgcVBhcmFtU3ViOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBxdWVyeVBhcmFtczogYW55O1xuXG4gIHByb3RlY3RlZCB1cmxQYXJhbVN1YjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgdXJsUGFyYW1zOiBvYmplY3Q7XG5cbiAgcHJvdGVjdGVkIHVybFN1YjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgdXJsU2VnbWVudHM6IGFueSA9IFtdO1xuXG4gIHByb3RlY3RlZCBjb21iaW5lZE5hdmlnYXRpb25TdHJlYW06IE9ic2VydmFibGU8YW55PjtcbiAgcHJvdGVjdGVkIGNvbWJpbmVkTmF2aWdhdGlvblN0cmVhbVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgb25VcmxQYXJhbUNoYW5nZWRTdHJlYW06IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgbmF2aWdhdGlvblN0cmVhbTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByb3RlY3RlZCBvbkNsb3NlVGFiU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBjYWNoZVN0YXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgZm9ybTogT0Zvcm1CYXNlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgYWN0Um91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoTmF2aWdhdGlvblNlcnZpY2UpO1xuICAgIHRoaXMuY29uZmlybUV4aXRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE9Gb3JtQ29uZmlybUV4aXRTZXJ2aWNlKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyID0gdGhpcy5pbmplY3Rvci5nZXQoT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gTm8gcGFyZW50IGZvcm1MYXlvdXRNYW5hZ2VyXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZm9ybUxheW91dERpYWxvZyA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBObyBwYXJlbnQgZm9ybSBsYXlvdXQgZGlhbG9nXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybUxheW91dERpYWxvZyAmJiAhdGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlciA9IHRoaXMuZm9ybUxheW91dERpYWxvZy5mb3JtTGF5b3V0TWFuYWdlcjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICB0aGlzLmNvbWJpbmVkTmF2aWdhdGlvblN0cmVhbSA9IGNvbWJpbmVMYXRlc3QoW3NlbGYub25VcmxQYXJhbUNoYW5nZWRTdHJlYW0uYXNPYnNlcnZhYmxlKCldKTtcblxuICAgIHRoaXMuY29tYmluZWROYXZpZ2F0aW9uU3RyZWFtLnN1YnNjcmliZSh2YWxBcnIgPT4ge1xuICAgICAgaWYgKFV0aWwuaXNBcnJheSh2YWxBcnIpICYmIHZhbEFyci5sZW5ndGggPT09IDEgJiYgdmFsQXJyWzBdKSB7XG4gICAgICAgIHNlbGYubmF2aWdhdGlvblN0cmVhbS5lbWl0KHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZSgpIHtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucVBhcmFtU3ViKSB7XG4gICAgICB0aGlzLnFQYXJhbVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy51cmxQYXJhbVN1Yikge1xuICAgICAgdGhpcy51cmxQYXJhbVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy51cmxTdWIpIHtcbiAgICAgIHRoaXMudXJsU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbWJpbmVkTmF2aWdhdGlvblN0cmVhbVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jb21iaW5lZE5hdmlnYXRpb25TdHJlYW1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBzdWJzY3JpYmVUb1F1ZXJ5UGFyYW1zKCkge1xuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICBjb25zdCBjYWNoZURhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5nZXRGb3JtQ2FjaGVEYXRhKCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQoY2FjaGVEYXRhKSkge1xuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gY2FjaGVEYXRhLnF1ZXJ5UGFyYW1zIHx8IHt9O1xuICAgICAgICB0aGlzLnBhcnNlUXVlcnlQYXJhbXMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLnFQYXJhbVN1YiA9IHRoaXMuYWN0Um91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgIGlmIChwYXJhbXMpIHtcbiAgICAgICAgICBzZWxmLnF1ZXJ5UGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgIHNlbGYucGFyc2VRdWVyeVBhcmFtcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlUXVlcnlQYXJhbXMoKSB7XG4gICAgY29uc3QgaXNEZXRhaWwgPSB0aGlzLnF1ZXJ5UGFyYW1zW0NvZGVzLklTX0RFVEFJTF07XG4gICAgLy8gZW5zdXJpbmcgaXNkZXRhaWwgPSBmYWxzZSB3aGVuIHVzaW5nIGZvcm0gbGF5b3V0IG1hbmFnZXJcbiAgICB0aGlzLmZvcm0uaXNEZXRhaWxGb3JtID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlciA/IGZhbHNlIDogKGlzRGV0YWlsID09PSAndHJ1ZScpO1xuICB9XG5cbiAgc3Vic2NyaWJlVG9VcmxQYXJhbXMoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIGNvbnN0IGNhY2hlRGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgPSB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmdldEZvcm1DYWNoZURhdGEoKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChjYWNoZURhdGEpKSB7XG4gICAgICAgIHRoaXMudXJsUGFyYW1zID0gY2FjaGVEYXRhLnBhcmFtcztcbiAgICAgICAgdGhpcy5wYXJzZVVybFBhcmFtcygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMudXJsUGFyYW1TdWIgPSB0aGlzLmFjdFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgc2VsZi51cmxQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHRoaXMucGFyc2VVcmxQYXJhbXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VVcmxQYXJhbXMoKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMudXJsUGFyYW1zKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnVybFBhcmFtc1tDb2Rlcy5QQVJFTlRfS0VZU19LRVldKSkge1xuICAgICAgdGhpcy5mb3JtLmZvcm1QYXJlbnRLZXlzVmFsdWVzID0gVXRpbC5kZWNvZGVQYXJlbnRLZXlzKHRoaXMudXJsUGFyYW1zW0NvZGVzLlBBUkVOVF9LRVlTX0tFWV0pO1xuICAgIH1cbiAgICAvLyBUT0RPIE9idGFpbiAnZGF0YXR5cGUnIG9mIGVhY2gga2V5IGNvbnRhaW5lZCBpbnRvIHVybFBhcmFtcyBmb3JcbiAgICAvLyBmb3IgYnVpbGRpbmcgY29ycmVjdGx5IHF1ZXJ5IGZpbHRlciEhISFcbiAgICBpZiAodGhpcy51cmxQYXJhbXMpIHtcbiAgICAgIHRoaXMub25VcmxQYXJhbUNoYW5nZWRTdHJlYW0uZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBzdWJzY3JpYmVUb1VybCgpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgY29uc3QgY2FjaGVEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHRoaXMuZm9ybUxheW91dE1hbmFnZXIuZ2V0Rm9ybUNhY2hlRGF0YSgpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNhY2hlRGF0YSkpIHtcbiAgICAgICAgdGhpcy51cmxTZWdtZW50cyA9IGNhY2hlRGF0YS51cmxTZWdtZW50cztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLnVybFN1YiA9IHRoaXMuYWN0Um91dGUudXJsLnN1YnNjcmliZSh1cmxTZWdtZW50cyA9PiB7XG4gICAgICAgIHNlbGYudXJsU2VnbWVudHMgPSB1cmxTZWdtZW50cztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHN1YnNjcmliZVRvQ2FjaGVDaGFuZ2VzKCkge1xuICAgIGNvbnN0IGZvcm1DYWNoZSA9IHRoaXMuZm9ybS5nZXRGb3JtQ2FjaGUoKTtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKGZvcm1DYWNoZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYWNoZVN0YXRlU3Vic2NyaXB0aW9uID0gZm9ybUNhY2hlLm9uQ2FjaGVTdGF0ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxTdGF0ZUNoYW5nZWQgPSB0aGlzLmZvcm0uaXNJbml0aWFsU3RhdGVDaGFuZ2VkKCk7XG4gICAgICBjb25zdCB0cmlnZ2VyRXhpdENvbmZpcm0gPSB0aGlzLmZvcm0uY29uZmlybUV4aXQgJiYgdGhpcy5mb3JtLmlzSW5pdGlhbFN0YXRlQ2hhbmdlZCh0aGlzLmZvcm0uaWdub3JlT25FeGl0KTtcbiAgICAgIHRoaXMuc2V0TW9kaWZpZWRTdGF0ZShpbml0aWFsU3RhdGVDaGFuZ2VkLCB0cmlnZ2VyRXhpdENvbmZpcm0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q3VycmVudEtleXNWYWx1ZXMoKTogb2JqZWN0IHtcbiAgICBsZXQgZmlsdGVyID0ge307XG4gICAgaWYgKHRoaXMudXJsUGFyYW1zKSB7XG4gICAgICBmaWx0ZXIgPSB0aGlzLmdldEZpbHRlckZyb21PYmplY3QodGhpcy51cmxQYXJhbXMpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJGcm9tT2JqZWN0KG9iamVjdFBhcmFtOiBhbnkpIHtcbiAgICBjb25zdCBmaWx0ZXIgPSB7fTtcbiAgICBpZiAoIW9iamVjdFBhcmFtIHx8IE9iamVjdC5rZXlzKG9iamVjdFBhcmFtKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmaWx0ZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm0ua2V5c0FycmF5KSB7XG4gICAgICB0aGlzLmZvcm0ua2V5c0FycmF5LmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKG9iamVjdFBhcmFtW2tleV0pIHtcbiAgICAgICAgICBmaWx0ZXJba2V5XSA9IFNRTFR5cGVzLnBhcnNlVXNpbmdTUUxUeXBlKG9iamVjdFBhcmFtW2tleV0sIHRoaXMuZm9ybS5rZXlzU3FsVHlwZXNBcnJheVtpbmRleF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLl9wS2V5c0VxdWl2KS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgdXJsVmFsID0gb2JqZWN0UGFyYW1bdGhpcy5mb3JtLl9wS2V5c0VxdWl2W2l0ZW1dXTtcbiAgICAgIGlmICh1cmxWYWwpIHtcbiAgICAgICAgZmlsdGVyW2l0ZW1dID0gU1FMVHlwZXMucGFyc2VVc2luZ1NRTFR5cGUodXJsVmFsLCB0aGlzLmZvcm0ua2V5c1NxbFR5cGVzQXJyYXlbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgZ2V0RmlsdGVyRnJvbVVybFBhcmFtcygpIHtcbiAgICBjb25zdCBmaWx0ZXIgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdldFVybFBhcmFtcygpIHx8IHt9KTtcbiAgICBjb25zdCB1cmxQYXJhbXNLZXlzID0gT2JqZWN0LmtleXMoZmlsdGVyIHx8IHt9KTtcbiAgICBpZiAodXJsUGFyYW1zS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICB1cmxQYXJhbXNLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKGtleSA9PT0gQ29kZXMuUEFSRU5UX0tFWVNfS0VZKSB7XG4gICAgICAgICAgZGVsZXRlIGZpbHRlcltrZXldO1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oZmlsdGVyLCB0aGlzLmZvcm0uZm9ybVBhcmVudEtleXNWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGdldFVybFNlZ21lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnVybFNlZ21lbnRzO1xuICB9XG5cbiAgZ2V0UXVlcnlQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlQYXJhbXM7XG4gIH1cblxuICBzZXRVcmxQYXJhbXModmFsOiBvYmplY3QpIHtcbiAgICB0aGlzLnVybFBhcmFtcyA9IHZhbDtcbiAgfVxuXG4gIGdldFVybFBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy51cmxQYXJhbXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TW9kaWZpZWRTdGF0ZShtb2RpZmllZDogYm9vbGVhbiwgY29uZmlybUV4aXQ6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5zZXRNb2RpZmllZFN0YXRlKHRoaXMuZm9ybS5nZXRBdHRyaWJ1dGUoKSwgbW9kaWZpZWQsIGNvbmZpcm1FeGl0KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVOYXZpZ2F0aW9uKCkge1xuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICBjb25zdCBpc0luSW5zZXJ0TW9kZSA9IHRoaXMuZm9ybS5pc0luSW5zZXJ0TW9kZSgpO1xuICAgICAgbGV0IGZvcm1EYXRhO1xuICAgICAgaWYgKGlzSW5JbnNlcnRNb2RlKSB7XG4gICAgICAgIGZvcm1EYXRhID0ge307XG4gICAgICAgIGZvcm1EYXRhLm5ld190YWJfdGl0bGUgPSAnTEFZT1VUX01BTkFOR0VSLklOU0VSVElPTl9NT0RFX1RJVExFJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlci5hbGxvd1RvVXBkYXRlTmF2aWdhdGlvbih0aGlzLmZvcm0uZ2V0QXR0cmlidXRlKCkpKSB7XG4gICAgICAgIGZvcm1EYXRhID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5mb3JtRGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGZvcm1EYXRhW2tleV0gPSB0aGlzLmZvcm0uZm9ybURhdGFba2V5XS52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybURhdGEpIHtcbiAgICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci51cGRhdGVOYXZpZ2F0aW9uKGZvcm1EYXRhLCB0aGlzLmZvcm0uZ2V0S2V5c1ZhbHVlcygpLCBpc0luSW5zZXJ0TW9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVCYWNrKG9wdGlvbnM/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5jbG9zZURldGFpbChvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UpIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW0oKTtcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaWdub3JlTmF2aWdhdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBuYXZEYXRhOiBPTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldExhc3RJdGVtKCk7XG4gICAgICBpZiAobmF2RGF0YSkge1xuICAgICAgICBjb25zdCBleHRyYXMgPSB7fTtcbiAgICAgICAgZXh0cmFzW0NvZGVzLlFVRVJZX1BBUkFNU10gPSBuYXZEYXRhLnF1ZXJ5UGFyYW1zO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbmF2RGF0YS51cmxdLCBleHRyYXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNsb3NlRGV0YWlsQWN0aW9uKG9wdGlvbnM/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5jbG9zZURldGFpbChvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UpIHtcbiAgICAgIHRoaXMuZm9ybS5iZWZvcmVDbG9zZURldGFpbC5lbWl0KCk7XG4gICAgICAvLyBgcmVtb3ZlTGFzdEl0ZW1zVW50aWxNYWluYCBtYXkgbm90IHJlbW92ZSBhbGwgbmVjZXNzYXJ5IGl0ZW1zIHNvIGN1cnJlbnQgcm91dGUgd2lsbCBiZSBjaGVja2VkIGJlbG93XG4gICAgICBpZiAoIXRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW1zVW50aWxNYWluKCkpIHtcbiAgICAgICAgLy8gYHJlbW92ZUxhc3RJdGVtc1VudGlsTWFpbmAgZGlkbid0IGZpbmQgdGhlIG1haW4gbmF2aWdhdGlvbiBpdGVtXG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaWdub3JlTmF2aWdhdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgbmF2RGF0YTogT05hdmlnYXRpb25JdGVtID0gdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXRMYXN0SXRlbSgpO1xuICAgICAgaWYgKG5hdkRhdGEpIHtcbiAgICAgICAgLy8gaWYgbmF2RGF0YSByb3V0ZSBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCByb3V0ZSwgcmVtb3ZlIGxhc3QgaXRlbVxuICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU2VydmljZS5pc0N1cnJlbnRSb3V0ZShuYXZEYXRhLnVybCkpIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLnJlbW92ZUxhc3RJdGVtKCk7XG4gICAgICAgICAgbmF2RGF0YSA9IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TGFzdEl0ZW0oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7fTtcbiAgICAgICAgZXh0cmFzLnF1ZXJ5UGFyYW1zID0gbmF2RGF0YS5xdWVyeVBhcmFtcztcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5leGl0V2l0aG91dENvbmZpcm1hdGlvbikge1xuICAgICAgICAgIGV4dHJhcy5xdWVyeVBhcmFtc1tDb2Rlcy5JR05PUkVfQ0FOX0RFQUNUSVZBVEVdID0gb3B0aW9ucy5leGl0V2l0aG91dENvbmZpcm1hdGlvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbmF2RGF0YS51cmxdLCBleHRyYXMpLnRoZW4odmFsID0+IHtcbiAgICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5jaGFuZ2VUb29sYmFyTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmdldEZvcm1Ub29sYmFyKCkuc2V0SW5pdGlhbE1vZGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXlJblJlY29yZEFmdGVySW5zZXJ0KGluc2VydGVkS2V5czogb2JqZWN0KSB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UgJiYgdGhpcy5mb3JtLmtleXNBcnJheSAmJiBpbnNlcnRlZEtleXMpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICAgIGNvbnN0IGNsb3NlT3B0czogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyA9IHsgZXhpdFdpdGhvdXRDb25maXJtYXRpb246IHRydWUgfTtcbiAgICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5jbG9zZURldGFpbChjbG9zZU9wdHMpO1xuICAgICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZSAnbmV3JyBuYXZpZ2F0aW9uIGl0ZW0gZnJvbSBoaXN0b3J5XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UucmVtb3ZlTGFzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICAgIGxldCBwYXJhbXM6IGFueVtdID0gW107XG4gICAgICB0aGlzLmZvcm0ua2V5c0FycmF5LmZvckVhY2goKGN1cnJlbnQpID0+IHtcbiAgICAgICAgaWYgKGluc2VydGVkS2V5c1tjdXJyZW50XSkge1xuICAgICAgICAgIHBhcmFtcy5wdXNoKGluc2VydGVkS2V5c1tjdXJyZW50XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbGV0IGV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHt9O1xuICAgICAgbGV0IHFQYXJhbXM6IGFueSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ2V0UXVlcnlQYXJhbXMoKSwgQ29kZXMuZ2V0SXNEZXRhaWxPYmplY3QoKSk7XG4gICAgICAvLyBkZWxldGluZyBpbnNlcnRpb25Nb2RlIGN1cnJlbnQgcXVlcnlQYXJhbVxuICAgICAgZGVsZXRlIHFQYXJhbXNbQ29kZXMuSU5TRVJUSU9OX01PREVdO1xuICAgICAgLy8gSWdub3JpbmcgY3VycmVudCBjbG9zZWQgZm9ybSAodGhlIGluc2VydGlvbiBmb3JtKVxuICAgICAgcVBhcmFtc1tDb2Rlcy5JR05PUkVfQ0FOX0RFQUNUSVZBVEVdID0gdHJ1ZTtcbiAgICAgIGV4dHJhc1tDb2Rlcy5RVUVSWV9QQVJBTVNdID0gcVBhcmFtcztcbiAgICAgIGxldCByb3V0ZSA9IFtdO1xuICAgICAgY29uc3QgbmF2RGF0YTogT05hdmlnYXRpb25JdGVtID0gdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXRMYXN0TWFpbk5hdmlnYXRpb25Sb3V0ZURhdGEoKTtcbiAgICAgIGlmIChuYXZEYXRhKSB7XG4gICAgICAgIGxldCB1cmwgPSBuYXZEYXRhLnVybDtcbiAgICAgICAgY29uc3QgZGV0YWlsUm91dGUgPSBuYXZEYXRhLmdldERldGFpbEZvcm1Sb3V0ZSgpO1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQoZGV0YWlsUm91dGUpKSB7XG4gICAgICAgICAgcm91dGUucHVzaChkZXRhaWxSb3V0ZSk7XG4gICAgICAgICAgY29uc3QgZGV0YWlsSW5kZXggPSB1cmwubGFzdEluZGV4T2YoJy8nICsgZGV0YWlsUm91dGUpO1xuICAgICAgICAgIGlmIChkZXRhaWxJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHVybCA9IHVybC5zdWJzdHJpbmcoMCwgZGV0YWlsSW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByb3V0ZS51bnNoaWZ0KHVybCk7XG4gICAgICAgIHJvdXRlLnB1c2goLi4ucGFyYW1zKTtcbiAgICAgICAgLy8gZGVsZXRpbmcgaW5zZXJ0Rm9ybVJvdXRlIGFzIGFjdGl2ZSBtb2RlIChiZWNhdXNlIHN0YXlJblJlY29yZEFmdGVySW5zZXJ0IGNoYW5nZXMgaXQpXG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZGVsZXRlQWN0aXZlRm9ybU1vZGUobmF2RGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHRyYXMucmVsYXRpdmVUbyA9IHRoaXMuYWN0Um91dGU7XG4gICAgICAgIHJvdXRlID0gWycuLi8nLCAuLi5wYXJhbXNdO1xuICAgICAgfVxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUocm91dGUsIGV4dHJhcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byAnaW5zZXJ0JyBtb2RlXG4gICAqL1xuICBnb0luc2VydE1vZGUob3B0aW9ucz86IGFueSkge1xuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyICYmIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuYWxsb3dOYXZpZ2F0aW9uKCkpIHtcbiAgICAgIHRoaXMuZm9ybS5zZXRJbnNlcnRNb2RlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm5hdmlnYXRpb25TZXJ2aWNlKSB7XG4gICAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJvdXRlID0gW107XG4gICAgICBjb25zdCBleHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7fTtcbiAgICAgIGNvbnN0IG5hdkRhdGE6IE9OYXZpZ2F0aW9uSXRlbSA9IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TGFzdE1haW5OYXZpZ2F0aW9uUm91dGVEYXRhKCk7XG4gICAgICBpZiAoIXRoaXMuZm9ybUxheW91dE1hbmFnZXIgJiYgbmF2RGF0YSkge1xuICAgICAgICByb3V0ZS5wdXNoKG5hdkRhdGEudXJsKTtcbiAgICAgICAgY29uc3QgZGV0YWlsUm91dGUgPSBuYXZEYXRhLmdldERldGFpbEZvcm1Sb3V0ZSgpO1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQoZGV0YWlsUm91dGUpKSB7XG4gICAgICAgICAgcm91dGUucHVzaChkZXRhaWxSb3V0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLmdldEluc2VydEZvcm1Sb3V0ZSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4dHJhcy5yZWxhdGl2ZVRvID0gdGhpcy5hY3RSb3V0ZTtcbiAgICAgICAgcm91dGUgPSBbQ29kZXMuREVGQVVMVF9JTlNFUlRfUk9VVEVdO1xuICAgICAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlciAmJiB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmlzVGFiTW9kZSgpKSB7XG4gICAgICAgICAgZXh0cmFzLnF1ZXJ5UGFyYW1zID0ge307XG4gICAgICAgICAgZXh0cmFzLnF1ZXJ5UGFyYW1zW0NvZGVzLklOU0VSVElPTl9NT0RFXSA9ICd0cnVlJztcbiAgICAgICAgICBleHRyYXMucXVlcnlQYXJhbXNbQ29kZXMuSUdOT1JFX0NBTl9ERUFDVElWQVRFXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmVOYXZpZ2F0aW9uRm9ybVJvdXRlcygnaW5zZXJ0Rm9ybVJvdXRlJywgISF0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlLCBleHRyYXMpLnRoZW4oKHZhbCkgPT4ge1xuICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5jaGFuZ2VUb29sYmFyTW9kZSkge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXRGb3JtVG9vbGJhcigpLnNldEluc2VydE1vZGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byAnZWRpdCcgbW9kZVxuICAgKi9cbiAgZ29FZGl0TW9kZShvcHRpb25zPzogYW55KSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIgJiYgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5hbGxvd05hdmlnYXRpb24oKSkge1xuICAgICAgdGhpcy5mb3JtLnNldFVwZGF0ZU1vZGUoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblNlcnZpY2UpIHtcbiAgICAgIGxldCByb3V0ZSA9IFtdO1xuICAgICAgY29uc3QgZXh0cmFzOiBOYXZpZ2F0aW9uRXh0cmFzID0ge307XG4gICAgICBpZiAodGhpcy5mb3JtLmlzRGV0YWlsRm9ybSkge1xuICAgICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXSA9IENvZGVzLmdldElzRGV0YWlsT2JqZWN0KCk7XG4gICAgICB9XG4gICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ2V0UXVlcnlQYXJhbXMoKSwgZXh0cmFzW0NvZGVzLlFVRVJZX1BBUkFNU10gfHwge30pO1xuXG4gICAgICBjb25zdCBwYXJhbXM6IGFueVtdID0gW107XG4gICAgICBjb25zdCB1cmxQYXJhbXMgPSB0aGlzLmdldFVybFBhcmFtcygpO1xuICAgICAgdGhpcy5mb3JtLmtleXNBcnJheS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmICh1cmxQYXJhbXNba2V5XSkge1xuICAgICAgICAgIHBhcmFtcy5wdXNoKHVybFBhcmFtc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBuYXZEYXRhOiBPTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldFByZXZpb3VzUm91dGVEYXRhKCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQobmF2RGF0YSkpIHtcbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLnVybCk7XG4gICAgICAgIGNvbnN0IGRldGFpbFJvdXRlID0gbmF2RGF0YS5nZXREZXRhaWxGb3JtUm91dGUoKTtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGRldGFpbFJvdXRlKSkge1xuICAgICAgICAgIHJvdXRlLnB1c2goZGV0YWlsUm91dGUpO1xuICAgICAgICB9XG4gICAgICAgIHJvdXRlLnB1c2goLi4ucGFyYW1zKTtcbiAgICAgICAgcm91dGUucHVzaChuYXZEYXRhLmdldEVkaXRGb3JtUm91dGUoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHRyYXMucmVsYXRpdmVUbyA9IHRoaXMuYWN0Um91dGU7XG4gICAgICAgIHJvdXRlID0gWycuLi8nLCAuLi5wYXJhbXMsIENvZGVzLkRFRkFVTFRfRURJVF9ST1VURV07XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlTmF2aWdhdGlvbkZvcm1Sb3V0ZXMoJ2VkaXRGb3JtUm91dGUnKTtcbiAgICAgIHRoaXMuZm9ybS5iZWZvcmVVcGRhdGVNb2RlLmVtaXQoKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlLCBleHRyYXMpLnRoZW4oKHZhbCkgPT4ge1xuICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5jaGFuZ2VUb29sYmFyTW9kZSkge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXRGb3JtVG9vbGJhcigpLnNldEVkaXRNb2RlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZ2V0TmVzdGVkTGV2ZWxzTnVtYmVyKCkge1xuICAgIGxldCBhY3RSb3V0ZSA9IHRoaXMuYWN0Um91dGU7XG4gICAgbGV0IGkgPSAwO1xuICAgIHdoaWxlIChhY3RSb3V0ZS5wYXJlbnQpIHtcbiAgICAgIGFjdFJvdXRlID0gYWN0Um91dGUucGFyZW50O1xuICAgICAgYWN0Um91dGUudXJsLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBpZiAoeCAmJiB4Lmxlbmd0aCkge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBnZXRGdWxsVXJsU2VnbWVudHMoKSB7XG4gICAgbGV0IGZ1bGxVcmxTZWdtZW50cyA9IFtdO1xuICAgIGNvbnN0IHJvdXRlciA9IHRoaXMucm91dGVyO1xuICAgIGlmIChyb3V0ZXIgJiYgcm91dGVyLnVybCAmJiByb3V0ZXIudXJsLmxlbmd0aCkge1xuICAgICAgY29uc3Qgcm9vdDogVXJsU2VnbWVudEdyb3VwID0gcm91dGVyLnBhcnNlVXJsKHJvdXRlci51cmwpLnJvb3Q7XG4gICAgICBpZiAocm9vdCAmJiByb290Lmhhc0NoaWxkcmVuKCkgJiYgcm9vdC5jaGlsZHJlbi5wcmltYXJ5KSB7XG4gICAgICAgIGZ1bGxVcmxTZWdtZW50cyA9IHJvb3QuY2hpbGRyZW4ucHJpbWFyeS5zZWdtZW50cztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZ1bGxVcmxTZWdtZW50cztcbiAgfVxuXG4gIHNob3dDb25maXJtRGlzY2FyZENoYW5nZXMoaWdub3JlQXR0cnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maXJtRXhpdFNlcnZpY2Uuc3Vic2NyaWJlVG9EaXNjYXJkQ2hhbmdlcyh0aGlzLmZvcm0sIGlnbm9yZUF0dHJzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdG9yZU5hdmlnYXRpb25Gb3JtUm91dGVzKGFjdGl2ZU1vZGU6IHN0cmluZywgbWFpbkZvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50PzogYm9vbGVhbikge1xuICAgIGNvbnN0IHByZXZSb3V0ZURhdGEgPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldFByZXZpb3VzUm91dGVEYXRhKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChwcmV2Um91dGVEYXRhKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb3JtUm91dGVzID0gcHJldlJvdXRlRGF0YS5mb3JtUm91dGVzO1xuICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2Uuc3RvcmVGb3JtUm91dGVzKHtcbiAgICAgIGRldGFpbEZvcm1Sb3V0ZTogZm9ybVJvdXRlcyA/IGZvcm1Sb3V0ZXMuZGV0YWlsRm9ybVJvdXRlIDogQ29kZXMuREVGQVVMVF9ERVRBSUxfUk9VVEUsXG4gICAgICBlZGl0Rm9ybVJvdXRlOiBmb3JtUm91dGVzID8gZm9ybVJvdXRlcy5lZGl0Rm9ybVJvdXRlIDogQ29kZXMuREVGQVVMVF9FRElUX1JPVVRFLFxuICAgICAgaW5zZXJ0Rm9ybVJvdXRlOiBmb3JtUm91dGVzID8gZm9ybVJvdXRlcy5pbnNlcnRGb3JtUm91dGUgOiBDb2Rlcy5ERUZBVUxUX0lOU0VSVF9ST1VURSxcbiAgICAgIG1haW5Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFxuICAgIH0sIGFjdGl2ZU1vZGUpO1xuICB9XG5cbn1cbiJdfQ==
@@ -271,7 +271,7 @@ export class OImageComponent extends OFormDataComponent {
271
271
  }
272
272
  }
273
273
  OImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OImageComponent, deps: [{ token: forwardRef(() => OFormComponent), optional: true }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
274
- OImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OImageComponent, selector: "o-image", inputs: { emptyimage: ["empty-image", "emptyimage"], notfoundimage: ["not-found-image", "notfoundimage"], emptyicon: ["empty-icon", "emptyicon"], showControls: ["show-controls", "showControls"], height: "height", autoFit: ["auto-fit", "autoFit"], fullScreenButton: ["full-screen-button", "fullScreenButton"], acceptFileType: ["accept-file-type", "acceptFileType"], maxFileSize: ["max-file-size", "maxFileSize"] }, host: { properties: { "class.o-image": "true", "style.height": "this.hostHeight" } }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"column\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" [class.o-image-auto-fit]=\"autoFit\" class=\"o-image-content\" fxFill>\n\n <input #input type=\"file\" [disabled]=\"!enabled\" [accept]=\"acceptFileType ? acceptFileType.replace(';',',') : 'image/*'\" readonly\n (change)=\"fileChange(input)\" class=\"o-image-form-field-hidden\" />\n\n <mat-form-field *ngIf=\"hasControls()\" class=\"o-image-form-field\">\n <input type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" readonly\n (click)=\"input.click()\" (change)=\"onChangeEvent($event)\" class=\"o-image-form-field-input\">\n <input matInput readonly (click)=\"input.click()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" [formControl]=\"stateCtrl\" />\n\n <button type=\"button\" *ngIf=\"fullScreenButton\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"openFullScreen($event)\">\n <mat-icon svgIcon=\"ontimize:fullscreen\"></mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"input.click()\">\n <mat-icon svgIcon=\"ontimize:folder_open\"></mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"></ng-container>\n </mat-form-field>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"o-image-display-container\"\n [ngClass]=\"{'o-image-drag-and-drop': isEmpty() , 'o-image-drag-and-drop-required': hasErrorInDragAndDrop() }\" fxLayoutGap=\"15px\" oFileDragAndDrop\n (onFileDropped)=\"onFileDropped($event)\">\n\n <button mat-icon-button *ngIf=\"!isEmpty() && !hasControls() && enabled && !isReadOnly\" (click)=\"onClickClearValue($event)\"\n class=\"o-image-button-remove\">\n <mat-icon>close</mat-icon>\n </button>\n\n <img *ngIf=\"!(isEmpty())\" [src]=\"src\" alt=\"\" (click)=\"openFileSelector()\" (error)=\"notFoundImageUrl($event)\"\n [ngClass]=\"{'o-image-cursor': !isReadOnly}\" />\n\n <mat-icon class=\"empty-icon\" [class.mat-disabled]=\"!enabled\" aria-label=\"empty image\" *ngIf=\"useEmptyIcon()\">\n {{ emptyicon }}\n </mat-icon>\n\n <img [src]=\"src\" alt=\"empty image\" *ngIf=\"useEmptyImage()\" />\n\n <span class=\"mat-subtitle-2\" *ngIf=\"isEmpty()\">{{ 'OIMAGE.TEXT.DROP&DRAG' | oTranslate }}</span>\n\n <button mat-button color=\"primary\" (click)=\"openFileSelector()\" *ngIf=\"!hasControls() && isEmpty()\">\n {{ 'OIMAGE.BUTTON.BROWSEFILE' | oTranslate }}\n </button>\n\n <ng-container *ngIf=\"!hasControls() && enabled && !isReadOnly\">\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"> </ng-container>\n </ng-container>\n </div>\n <div *ngIf=\"isReadOnly\" fxFill class=\"read-only-blocker\" (click)=\"onClickBlocker($event)\"></div>\n</div>\n\n<ng-template #errorsTemplate>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('fileSize')\">\n {{ 'FORM_VALIDATION.FILE_MAXSIZE' | oTranslate }}: {{ getErrorValue('fileSize', 'maxFileSize') }} bytes\n </mat-error>\n</ng-template>\n", styles: [".o-image{display:flex;height:inherit}.o-image .o-image-content{position:relative;width:100%}.o-image .o-image-content .o-image-form-field-hidden{display:none}.o-image .o-image-content .o-image-form-field{width:100%}.o-image .o-image-content .o-image-form-field .o-image-form-field-input{display:none;height:0;opacity:0;outline:none;width:0}.o-image .o-image-content .o-image-display-container{margin:16px;text-align:center;padding:1px;border-color:transparent;height:calc(100% - 32px)}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop-required:not(.o-file-dragging){border-style:solid;border-width:1px}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop{padding:40px}.o-image .o-image-content .o-image-display-container .o-image-button-remove{position:absolute;right:24px;top:24px;border-radius:50%;width:16px;height:16px;line-height:16px}.o-image .o-image-content .o-image-display-container .o-image-button-remove .mat-icon{width:14px;height:14px;line-height:14px;font-size:14px}.o-image .o-image-content .o-image-display-container .empty-icon.mat-icon{width:42px;height:42px;font-size:42px;display:flex;align-items:center;place-content:center}.o-image .o-image-content .o-image-display-container>img{height:100%;width:100%}.o-image .o-image-content .o-image-display-container>img.o-image-cursor{cursor:pointer}.o-image .o-image-content.o-image-auto-fit .o-image-display-container>img{height:auto;max-height:100%;max-width:100%;object-fit:contain;width:auto}.o-image .o-image-content .read-only-blocker{left:0;right:0;position:absolute;top:0;z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "directive", type: i6.OFileDragAndDropDirective, selector: "[oFileDragAndDrop]", outputs: ["onFileDropped"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i10.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i12.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
274
+ OImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OImageComponent, selector: "o-image", inputs: { emptyimage: ["empty-image", "emptyimage"], notfoundimage: ["not-found-image", "notfoundimage"], emptyicon: ["empty-icon", "emptyicon"], showControls: ["show-controls", "showControls"], height: "height", autoFit: ["auto-fit", "autoFit"], fullScreenButton: ["full-screen-button", "fullScreenButton"], acceptFileType: ["accept-file-type", "acceptFileType"], maxFileSize: ["max-file-size", "maxFileSize"] }, host: { properties: { "class.o-image": "true", "style.height": "this.hostHeight" } }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"column\" [formGroup]=\"getFormGroup()\" [class.o-image-auto-fit]=\"autoFit\" class=\"o-image-content\" fxFill>\n\n <input #input type=\"file\" [disabled]=\"!enabled\" [accept]=\"acceptFileType ? acceptFileType.replace(';',',') : 'image/*'\" readonly\n (change)=\"fileChange(input)\" class=\"o-image-form-field-hidden\" />\n\n <mat-form-field *ngIf=\"hasControls()\" class=\"o-image-form-field\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\"\n [subscriptSizing]=\"subscriptSizing\">\n <input type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" readonly\n (click)=\"input.click()\" (change)=\"onChangeEvent($event)\" class=\"o-image-form-field-input\">\n <input matInput readonly (click)=\"input.click()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" [formControl]=\"stateCtrl\" />\n\n <button type=\"button\" *ngIf=\"fullScreenButton\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"openFullScreen($event)\">\n <mat-icon svgIcon=\"ontimize:fullscreen\"></mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"input.click()\">\n <mat-icon svgIcon=\"ontimize:folder_open\"></mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"></ng-container>\n </mat-form-field>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"o-image-display-container\"\n [ngClass]=\"{'o-image-drag-and-drop': isEmpty() , 'o-image-drag-and-drop-required': hasErrorInDragAndDrop() }\" fxLayoutGap=\"15px\" oFileDragAndDrop\n (onFileDropped)=\"onFileDropped($event)\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" [matTooltipDisabled]=\"hasControls()\">\n\n <button mat-icon-button *ngIf=\"!isEmpty() && !hasControls() && enabled && !isReadOnly\" (click)=\"onClickClearValue($event)\"\n class=\"o-image-button-remove\">\n <mat-icon>close</mat-icon>\n </button>\n\n <img *ngIf=\"!(isEmpty())\" [src]=\"src\" alt=\"\" (click)=\"openFileSelector()\" (error)=\"notFoundImageUrl($event)\"\n [ngClass]=\"{'o-image-cursor': !isReadOnly}\" />\n\n <mat-icon class=\"empty-icon\" [class.mat-disabled]=\"!enabled\" aria-label=\"empty image\" *ngIf=\"useEmptyIcon()\">\n {{ emptyicon }}\n </mat-icon>\n\n <img [src]=\"src\" alt=\"empty image\" *ngIf=\"useEmptyImage()\" />\n\n <span class=\"mat-subtitle-2\" *ngIf=\"isEmpty()\">{{ 'OIMAGE.TEXT.DROP&DRAG' | oTranslate }}</span>\n\n <button mat-button color=\"primary\" (click)=\"openFileSelector()\" *ngIf=\"!hasControls() && isEmpty()\">\n {{ 'OIMAGE.BUTTON.BROWSEFILE' | oTranslate }}\n </button>\n\n <ng-container *ngIf=\"!hasControls() && enabled && !isReadOnly\">\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"> </ng-container>\n </ng-container>\n </div>\n <div *ngIf=\"isReadOnly\" fxFill class=\"read-only-blocker\" (click)=\"onClickBlocker($event)\"></div>\n</div>\n\n<ng-template #errorsTemplate>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('fileSize')\">\n {{ 'FORM_VALIDATION.FILE_MAXSIZE' | oTranslate }}: {{ getErrorValue('fileSize', 'maxFileSize') }} bytes\n </mat-error>\n</ng-template>\n", styles: [".o-image{display:flex;height:inherit}.o-image .o-image-content{position:relative;width:100%}.o-image .o-image-content .o-image-form-field-hidden{display:none}.o-image .o-image-content .o-image-form-field{width:100%}.o-image .o-image-content .o-image-form-field .o-image-form-field-input{display:none;height:0;opacity:0;outline:none;width:0}.o-image .o-image-content .o-image-display-container{margin:16px;text-align:center;padding:1px;border-color:transparent;height:calc(100% - 32px)}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop-required:not(.o-file-dragging){border-style:solid;border-width:1px}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop{padding:40px}.o-image .o-image-content .o-image-display-container .o-image-button-remove{position:absolute;right:24px;top:24px;border-radius:50%;width:16px;height:16px;line-height:16px}.o-image .o-image-content .o-image-display-container .o-image-button-remove .mat-icon{width:14px;height:14px;line-height:14px;font-size:14px}.o-image .o-image-content .o-image-display-container .empty-icon.mat-icon{width:42px;height:42px;font-size:42px;display:flex;align-items:center;place-content:center}.o-image .o-image-content .o-image-display-container>img{height:100%;width:100%}.o-image .o-image-content .o-image-display-container>img.o-image-cursor{cursor:pointer}.o-image .o-image-content.o-image-auto-fit .o-image-display-container>img{height:auto;max-height:100%;max-width:100%;object-fit:contain;width:auto}.o-image .o-image-content .read-only-blocker{left:0;right:0;position:absolute;top:0;z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "directive", type: i6.OFileDragAndDropDirective, selector: "[oFileDragAndDrop]", outputs: ["onFileDropped"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i10.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i12.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
275
275
  __decorate([
276
276
  NumberInputConverter(),
277
277
  __metadata("design:type", Number)
@@ -288,7 +288,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
288
288
  type: Component,
289
289
  args: [{ selector: 'o-image', inputs: DEFAULT_INPUTS_O_IMAGE, encapsulation: ViewEncapsulation.None, host: {
290
290
  '[class.o-image]': 'true'
291
- }, template: "<div fxLayout=\"column\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" [class.o-image-auto-fit]=\"autoFit\" class=\"o-image-content\" fxFill>\n\n <input #input type=\"file\" [disabled]=\"!enabled\" [accept]=\"acceptFileType ? acceptFileType.replace(';',',') : 'image/*'\" readonly\n (change)=\"fileChange(input)\" class=\"o-image-form-field-hidden\" />\n\n <mat-form-field *ngIf=\"hasControls()\" class=\"o-image-form-field\">\n <input type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" readonly\n (click)=\"input.click()\" (change)=\"onChangeEvent($event)\" class=\"o-image-form-field-input\">\n <input matInput readonly (click)=\"input.click()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" [formControl]=\"stateCtrl\" />\n\n <button type=\"button\" *ngIf=\"fullScreenButton\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"openFullScreen($event)\">\n <mat-icon svgIcon=\"ontimize:fullscreen\"></mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"input.click()\">\n <mat-icon svgIcon=\"ontimize:folder_open\"></mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"></ng-container>\n </mat-form-field>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"o-image-display-container\"\n [ngClass]=\"{'o-image-drag-and-drop': isEmpty() , 'o-image-drag-and-drop-required': hasErrorInDragAndDrop() }\" fxLayoutGap=\"15px\" oFileDragAndDrop\n (onFileDropped)=\"onFileDropped($event)\">\n\n <button mat-icon-button *ngIf=\"!isEmpty() && !hasControls() && enabled && !isReadOnly\" (click)=\"onClickClearValue($event)\"\n class=\"o-image-button-remove\">\n <mat-icon>close</mat-icon>\n </button>\n\n <img *ngIf=\"!(isEmpty())\" [src]=\"src\" alt=\"\" (click)=\"openFileSelector()\" (error)=\"notFoundImageUrl($event)\"\n [ngClass]=\"{'o-image-cursor': !isReadOnly}\" />\n\n <mat-icon class=\"empty-icon\" [class.mat-disabled]=\"!enabled\" aria-label=\"empty image\" *ngIf=\"useEmptyIcon()\">\n {{ emptyicon }}\n </mat-icon>\n\n <img [src]=\"src\" alt=\"empty image\" *ngIf=\"useEmptyImage()\" />\n\n <span class=\"mat-subtitle-2\" *ngIf=\"isEmpty()\">{{ 'OIMAGE.TEXT.DROP&DRAG' | oTranslate }}</span>\n\n <button mat-button color=\"primary\" (click)=\"openFileSelector()\" *ngIf=\"!hasControls() && isEmpty()\">\n {{ 'OIMAGE.BUTTON.BROWSEFILE' | oTranslate }}\n </button>\n\n <ng-container *ngIf=\"!hasControls() && enabled && !isReadOnly\">\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"> </ng-container>\n </ng-container>\n </div>\n <div *ngIf=\"isReadOnly\" fxFill class=\"read-only-blocker\" (click)=\"onClickBlocker($event)\"></div>\n</div>\n\n<ng-template #errorsTemplate>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('fileSize')\">\n {{ 'FORM_VALIDATION.FILE_MAXSIZE' | oTranslate }}: {{ getErrorValue('fileSize', 'maxFileSize') }} bytes\n </mat-error>\n</ng-template>\n", styles: [".o-image{display:flex;height:inherit}.o-image .o-image-content{position:relative;width:100%}.o-image .o-image-content .o-image-form-field-hidden{display:none}.o-image .o-image-content .o-image-form-field{width:100%}.o-image .o-image-content .o-image-form-field .o-image-form-field-input{display:none;height:0;opacity:0;outline:none;width:0}.o-image .o-image-content .o-image-display-container{margin:16px;text-align:center;padding:1px;border-color:transparent;height:calc(100% - 32px)}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop-required:not(.o-file-dragging){border-style:solid;border-width:1px}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop{padding:40px}.o-image .o-image-content .o-image-display-container .o-image-button-remove{position:absolute;right:24px;top:24px;border-radius:50%;width:16px;height:16px;line-height:16px}.o-image .o-image-content .o-image-display-container .o-image-button-remove .mat-icon{width:14px;height:14px;line-height:14px;font-size:14px}.o-image .o-image-content .o-image-display-container .empty-icon.mat-icon{width:42px;height:42px;font-size:42px;display:flex;align-items:center;place-content:center}.o-image .o-image-content .o-image-display-container>img{height:100%;width:100%}.o-image .o-image-content .o-image-display-container>img.o-image-cursor{cursor:pointer}.o-image .o-image-content.o-image-auto-fit .o-image-display-container>img{height:auto;max-height:100%;max-width:100%;object-fit:contain;width:auto}.o-image .o-image-content .read-only-blocker{left:0;right:0;position:absolute;top:0;z-index:2}\n"] }]
291
+ }, template: "<div fxLayout=\"column\" [formGroup]=\"getFormGroup()\" [class.o-image-auto-fit]=\"autoFit\" class=\"o-image-content\" fxFill>\n\n <input #input type=\"file\" [disabled]=\"!enabled\" [accept]=\"acceptFileType ? acceptFileType.replace(';',',') : 'image/*'\" readonly\n (change)=\"fileChange(input)\" class=\"o-image-form-field-hidden\" />\n\n <mat-form-field *ngIf=\"hasControls()\" class=\"o-image-form-field\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\"\n [subscriptSizing]=\"subscriptSizing\">\n <input type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" readonly\n (click)=\"input.click()\" (change)=\"onChangeEvent($event)\" class=\"o-image-form-field-input\">\n <input matInput readonly (click)=\"input.click()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" [formControl]=\"stateCtrl\" />\n\n <button type=\"button\" *ngIf=\"fullScreenButton\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"openFullScreen($event)\">\n <mat-icon svgIcon=\"ontimize:fullscreen\"></mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"input.click()\">\n <mat-icon svgIcon=\"ontimize:folder_open\"></mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"></ng-container>\n </mat-form-field>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"o-image-display-container\"\n [ngClass]=\"{'o-image-drag-and-drop': isEmpty() , 'o-image-drag-and-drop-required': hasErrorInDragAndDrop() }\" fxLayoutGap=\"15px\" oFileDragAndDrop\n (onFileDropped)=\"onFileDropped($event)\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" [matTooltipDisabled]=\"hasControls()\">\n\n <button mat-icon-button *ngIf=\"!isEmpty() && !hasControls() && enabled && !isReadOnly\" (click)=\"onClickClearValue($event)\"\n class=\"o-image-button-remove\">\n <mat-icon>close</mat-icon>\n </button>\n\n <img *ngIf=\"!(isEmpty())\" [src]=\"src\" alt=\"\" (click)=\"openFileSelector()\" (error)=\"notFoundImageUrl($event)\"\n [ngClass]=\"{'o-image-cursor': !isReadOnly}\" />\n\n <mat-icon class=\"empty-icon\" [class.mat-disabled]=\"!enabled\" aria-label=\"empty image\" *ngIf=\"useEmptyIcon()\">\n {{ emptyicon }}\n </mat-icon>\n\n <img [src]=\"src\" alt=\"empty image\" *ngIf=\"useEmptyImage()\" />\n\n <span class=\"mat-subtitle-2\" *ngIf=\"isEmpty()\">{{ 'OIMAGE.TEXT.DROP&DRAG' | oTranslate }}</span>\n\n <button mat-button color=\"primary\" (click)=\"openFileSelector()\" *ngIf=\"!hasControls() && isEmpty()\">\n {{ 'OIMAGE.BUTTON.BROWSEFILE' | oTranslate }}\n </button>\n\n <ng-container *ngIf=\"!hasControls() && enabled && !isReadOnly\">\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"> </ng-container>\n </ng-container>\n </div>\n <div *ngIf=\"isReadOnly\" fxFill class=\"read-only-blocker\" (click)=\"onClickBlocker($event)\"></div>\n</div>\n\n<ng-template #errorsTemplate>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('fileSize')\">\n {{ 'FORM_VALIDATION.FILE_MAXSIZE' | oTranslate }}: {{ getErrorValue('fileSize', 'maxFileSize') }} bytes\n </mat-error>\n</ng-template>\n", styles: [".o-image{display:flex;height:inherit}.o-image .o-image-content{position:relative;width:100%}.o-image .o-image-content .o-image-form-field-hidden{display:none}.o-image .o-image-content .o-image-form-field{width:100%}.o-image .o-image-content .o-image-form-field .o-image-form-field-input{display:none;height:0;opacity:0;outline:none;width:0}.o-image .o-image-content .o-image-display-container{margin:16px;text-align:center;padding:1px;border-color:transparent;height:calc(100% - 32px)}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop-required:not(.o-file-dragging){border-style:solid;border-width:1px}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop{padding:40px}.o-image .o-image-content .o-image-display-container .o-image-button-remove{position:absolute;right:24px;top:24px;border-radius:50%;width:16px;height:16px;line-height:16px}.o-image .o-image-content .o-image-display-container .o-image-button-remove .mat-icon{width:14px;height:14px;line-height:14px;font-size:14px}.o-image .o-image-content .o-image-display-container .empty-icon.mat-icon{width:42px;height:42px;font-size:42px;display:flex;align-items:center;place-content:center}.o-image .o-image-content .o-image-display-container>img{height:100%;width:100%}.o-image .o-image-content .o-image-display-container>img.o-image-cursor{cursor:pointer}.o-image .o-image-content.o-image-auto-fit .o-image-display-container>img{height:auto;max-height:100%;max-width:100%;object-fit:contain;width:auto}.o-image .o-image-content .read-only-blocker{left:0;right:0;position:absolute;top:0;z-index:2}\n"] }]
292
292
  }], ctorParameters: function () { return [{ type: i13.OFormComponent, decorators: [{
293
293
  type: Optional
294
294
  }, {
@@ -301,4 +301,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
301
301
  type: HostBinding,
302
302
  args: ['style.height']
303
303
  }] } });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbWFnZS9vLWltYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlL28taW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBcUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWlDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBR3RGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLHlCQUF5QjtJQUV6QixnQ0FBZ0M7SUFFaEMsdUJB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OlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyLCBOdW1iZXJJbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE9TYWZlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL28tc2FmZS5waXBlJztcbmltcG9ydCB7IEZvcm1WYWx1ZU9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtVmFsdWUgfSBmcm9tICcuLi9mb3JtL28tZm9ybS12YWx1ZSc7XG5pbXBvcnQgeyBPRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vby1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRm9ybUNvbnRyb2wgfSBmcm9tICcuLi9pbnB1dC9vLWZvcm0tY29udHJvbC5jbGFzcyc7XG5pbXBvcnQgeyBPRm9ybURhdGFDb21wb25lbnQgfSBmcm9tICcuLi9vLWZvcm0tZGF0YS1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgT0Z1bGxTY3JlZW5EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2Z1bGxzY3JlZW4vZnVsbHNjcmVlbi1kaWFsb2cuY29tcG9uZW50JztcblxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19JTUFHRSA9IFtcbiAgJ2VtcHR5aW1hZ2U6IGVtcHR5LWltYWdlJyxcbiAgLy8gbm90LWZvdW5kLWltYWdlIFtzdHJpbmddOiBEZWZhdWx0IGltYWdlIGZvciA0MDQgZXJyb3IuXG4gICdub3Rmb3VuZGltYWdlOiBub3QtZm91bmQtaW1hZ2UnLFxuICAvLyBlbXB0eS1pY29uIFtzdHJpbmddOiBtYXRlcmlhbCBpY29uLiBEZWZhdWx0OiBwaG90by5cbiAgJ2VtcHR5aWNvbjogZW1wdHktaWNvbicsXG4gIC8vIHNob3ctY29udHJvbHMgW3llc3xubyB0cnVlfGZhbHNlXTogU2hvd3Mgb3IgaGlkZXMgc2VsZWN0aW9uIGNvbnRyb2xzLiBEZWZhdWx0OiB0cnVlLlxuICAnc2hvd0NvbnRyb2xzOiBzaG93LWNvbnRyb2xzJyxcbiAgLy8gaGVpZ2h0IFslIHwgcHhdOiBTZXQgdGhlIGhlaWdodCBvZiB0aGUgaW1hZ2UuXG4gICdoZWlnaHQnLFxuICAvLyBhdXRvLWZpdCBbeWVzfG5vIHRydWV8ZmFsc2VdOiBBZGp1c3RzIHRoZSBpbWFnZSB0byB0aGUgY29udGVudCBvciBub3QuIERlZmF1bHQ6IHRydWUuXG4gICdhdXRvRml0OiBhdXRvLWZpdCcsXG4gICdmdWxsU2NyZWVuQnV0dG9uOiBmdWxsLXNjcmVlbi1idXR0b24nLFxuICAvLyBhY2NlcHQtZmlsZS10eXBlIFtzdHJpbmddOiBmaWxlIHR5cGVzIGFsbG93ZWQgb24gdGhlIGZpbGUgaW5wdXQsIHNlcGFyYXRlZCBieSAnOycuIERlZmF1bHQ6IGltYWdlLyouXG4gIC8vIGZpbGVfZXh0ZW5zaW9uLCBpbWFnZS8qLCBtZWRpYV90eXBlLiBTZWUgaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL2F0dF9pbnB1dF9hY2NlcHQuYXNwXG4gICdhY2NlcHRGaWxlVHlwZTogYWNjZXB0LWZpbGUtdHlwZScsXG4gIC8vIG1heC1maWxlLXNpemUgW251bWJlcl06IG1heGltdW0gZmlsZSBzaXplIGFsbG93ZWQsIGluIGJ5dGVzLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ21heEZpbGVTaXplOiBtYXgtZmlsZS1zaXplJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1pbWFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWltYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1pbWFnZS5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fSU1BR0UsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8taW1hZ2VdJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0ltYWdlQ29tcG9uZW50IGV4dGVuZHMgT0Zvcm1EYXRhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBhY2NlcHRGaWxlVHlwZTogc3RyaW5nID0gJ2ltYWdlLyonO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlcjtcbiAgcHVibGljIGVtcHR5aW1hZ2U6IHN0cmluZztcbiAgcHVibGljIG5vdGZvdW5kaW1hZ2U6IHN0cmluZztcbiAgcHVibGljIGVtcHR5aWNvbjogc3RyaW5nO1xuICBwdWJsaWMgaGVpZ2h0OiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgYXV0b0ZpdDogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBjdXJyZW50RmlsZU5hbWU6IHN0cmluZyA9ICcnO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIHNob3dDb250cm9sczogYm9vbGVhbiA9IHRydWU7XG4gIHNldCBmdWxsU2NyZWVuQnV0dG9uKHZhbDogYm9vbGVhbikge1xuICAgIHZhbCA9IFV0aWwucGFyc2VCb29sZWFuKFN0cmluZyh2YWwpKTtcbiAgICB0aGlzLl9mdWxsU2NyZWVuQnV0dG9uID0gdmFsO1xuICB9XG4gIGdldCBmdWxsU2NyZWVuQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mdWxsU2NyZWVuQnV0dG9uO1xuICB9XG4gIHByb3RlY3RlZCBfZnVsbFNjcmVlbkJ1dHRvbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JylcbiAgcHJvdGVjdGVkIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcbiAgcHJvdGVjdGVkIF91c2VFbXB0eUljb246IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgX3VzZUVtcHR5SW1hZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIG9TYWZlOiBPU2FmZVBpcGU7XG4gIHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZztcbiAgcHVibGljIHN0YXRlQ3RybDogVW50eXBlZEZvcm1Db250cm9sO1xuICBwdWJsaWMgc3JjID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9Gb3JtQ29tcG9uZW50KSkgZm9ybTogT0Zvcm1Db21wb25lbnQsXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIHN1cGVyKGZvcm0sIGVsUmVmLCBpbmplY3Rvcik7XG4gICAgdGhpcy5vU2FmZSA9IG5ldyBPU2FmZVBpcGUoaW5qZWN0b3IpO1xuICAgIHRoaXMuX2RlZmF1bHRTUUxUeXBlS2V5ID0gJ0JBU0U2NCc7XG4gICAgdGhpcy5kaWFsb2cgPSB0aGlzLmluamVjdG9yLmdldChNYXREaWFsb2cpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICBpZiAodGhpcy5lbXB0eWltYWdlICYmIHRoaXMuZW1wdHlpbWFnZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl91c2VFbXB0eUljb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuX3VzZUVtcHR5SW1hZ2UgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVtcHR5aWNvbiA9PT0gdW5kZWZpbmVkICYmICF0aGlzLl91c2VFbXB0eUltYWdlKSB7XG4gICAgICB0aGlzLmVtcHR5aWNvbiA9ICdwaG90byc7XG4gICAgICB0aGlzLl91c2VFbXB0eUljb24gPSB0cnVlO1xuICAgICAgdGhpcy5fdXNlRW1wdHlJbWFnZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHVibGljIGVuc3VyZU9Gb3JtVmFsdWUodmFsOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsIGluc3RhbmNlb2YgT0Zvcm1WYWx1ZSkge1xuICAgICAgaWYgKHZhbC52YWx1ZSAmJiB2YWwudmFsdWUuYnl0ZXMpIHtcbiAgICAgICAgdmFsID0gdmFsLnZhbHVlLmJ5dGVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gdmFsLnZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsKSB7XG4gICAgICBpZiAodmFsLmJ5dGVzKSB7XG4gICAgICAgIHZhbCA9IHZhbC5ieXRlcztcbiAgICAgIH0gZWxzZSBpZiAoVXRpbC5pc0Jhc2U2NCh2YWwpICYmIHZhbC5zdWJzdHJpbmcoMCwgNCkgPT09ICdkYXRhJykge1xuICAgICAgICAvLyBSZW1vdmluZyBcImRhdGE6aW1hZ2UvKjtiYXNlNjQsXCJcbiAgICAgICAgdmFsID0gdmFsLnN1YnN0cmluZyh2YWwuaW5kZXhPZignYmFzZTY0JykgKyA3KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFsID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlID0gbmV3IE9Gb3JtVmFsdWUodmFsKTtcblxuICAgIHRoaXMuc3JjID0gdGhpcy5nZXRTcmNWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmdldFZhbHVlKCkgfHwgdGhpcy5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVGb3JtQ29udHJvbChjZmc/OiB7IHZhbHVlOiBhbnksIGRpc2FibGVkOiBib29sZWFuIH0sIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JGbltdKTogT0Zvcm1Db250cm9sIHtcbiAgICB0aGlzLl9mQ29udHJvbCA9IHN1cGVyLmNyZWF0ZUZvcm1Db250cm9sKGNmZywgdmFsaWRhdG9ycyk7XG4gICAgdGhpcy5zdGF0ZUN0cmwgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHZvaWQgMCwgdGhpcy5yZXNvbHZlVmFsaWRhdG9ycygpKTtcbiAgICB0aGlzLl9mQ29udHJvbC5mQ29udHJvbENoaWxkcmVuID0gW3RoaXMuc3RhdGVDdHJsXTtcbiAgICByZXR1cm4gdGhpcy5fZkNvbnRyb2w7XG4gIH1cblxuICBwdWJsaWMgZmlsZUNoYW5nZShpbnB1dCk6IHZvaWQge1xuICAgIGlmIChpbnB1dC5maWxlc1swXSkge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZXZlbnQgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZXZlbnQudGFyZ2V0WydyZXN1bHQnXTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgKHJlc3VsdCkgPT09ICdzdHJpbmcnICYmIFV0aWwuaXNCYXNlNjQocmVzdWx0KSkge1xuICAgICAgICAgIC8vIFJlbW92aW5nIFwiZGF0YTppbWFnZS8qO2Jhc2U2NCxcIlxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHJpbmcocmVzdWx0LmluZGV4T2YoJ2Jhc2U2NCcpICsgNyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWYWx1ZShyZXN1bHQpO1xuICAgICAgICBpZiAodGhpcy5fZkNvbnRyb2wpIHtcbiAgICAgICAgICB0aGlzLl9mQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9LCBmYWxzZSk7XG4gICAgICBpZiAoaW5wdXQuZmlsZXNbMF0pIHtcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoaW5wdXQuZmlsZXNbMF0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRGaWxlTmFtZSA9IGlucHV0LmZpbGVzWzBdLm5hbWU7XG4gICAgICB0aGlzLnN0YXRlQ3RybC5zZXRWYWx1ZSh0aGlzLmN1cnJlbnRGaWxlTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5vdEZvdW5kSW1hZ2VVcmwoZXZlbnQpOiBhbnkge1xuICAgIGV2ZW50LnRhcmdldC5zcmMgPSBVdGlsLmlzRGVmaW5lZCh0aGlzLm5vdGZvdW5kaW1hZ2UpID8gdGhpcy5ub3Rmb3VuZGltYWdlIDogJyc7XG4gIH1cblxuICBwcml2YXRlIGdldFNyY1ZhbHVlKCk6IGFueSB7XG5cbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZS52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiB0aGlzLnZhbHVlLnZhbHVlLmJ5dGVzKSB7XG4gICAgICAgIGxldCBzcmM6IHN0cmluZyA9ICcnO1xuICAgICAgICBpZiAodGhpcy52YWx1ZS52YWx1ZS5ieXRlcy5zdWJzdHJpbmcoMCwgNCkgPT09ICdkYXRhJykge1xuICAgICAgICAgIHNyYyA9ICdkYXRhOmltYWdlLyo7YmFzZTY0LCcgKyB0aGlzLnZhbHVlLnZhbHVlLmJ5dGVzLnN1YnN0cmluZyh0aGlzLnZhbHVlLnZhbHVlLmJ5dGVzLmluZGV4T2YoJ2Jhc2U2NCcpICsgNyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3JjID0gJ2RhdGE6aW1hZ2UvKjtiYXNlNjQsJyArIHRoaXMudmFsdWUudmFsdWUuYnl0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMub1NhZmUudHJhbnNmb3JtKHNyYywgJ3VybCcpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZS52YWx1ZSA9PT0gJ3N0cmluZycgJiYgVXRpbC5pc0Jhc2U2NCh0aGlzLnZhbHVlLnZhbHVlKSkge1xuICAgICAgICBsZXQgc3JjOiBzdHJpbmcgPSAnJztcbiAgICAgICAgaWYgKHRoaXMudmFsdWUudmFsdWUuc3Vic3RyaW5nKDAsIDQpID09PSAnZGF0YScpIHtcbiAgICAgICAgICBzcmMgPSAnZGF0YTppbWFnZS8qO2Jhc2U2NCwnICsgdGhpcy52YWx1ZS52YWx1ZS5zdWJzdHJpbmcodGhpcy52YWx1ZS52YWx1ZS5pbmRleE9mKCdiYXNlNjQnKSArIDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNyYyA9ICdkYXRhOmltYWdlLyo7YmFzZTY0LCcgKyB0aGlzLnZhbHVlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9TYWZlLnRyYW5zZm9ybShzcmMsICd1cmwnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlpbWFnZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuZW1wdHlpbWFnZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZW1wdHlpbWFnZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DbGlja0Jsb2NrZXIoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrQ2xlYXJWYWx1ZShlOiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1JlYWRPbmx5ICYmIHRoaXMuZW5hYmxlZCkge1xuICAgICAgc3VwZXIub25DbGlja0NsZWFyVmFsdWUoZSk7XG4gICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB0aGlzLnN0YXRlQ3RybC5yZXNldCgpO1xuICAgICAgdGhpcy5jdXJyZW50RmlsZU5hbWUgPSAnJztcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZDb250cm9sKSB7XG4gICAgICB0aGlzLl9mQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc0NvbnRyb2xzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dDb250cm9scztcbiAgfVxuXG4gIHB1YmxpYyB1c2VFbXB0eUljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZUVtcHR5SWNvbiAmJiB0aGlzLmlzRW1wdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyB1c2VFbXB0eUltYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl91c2VFbXB0eUltYWdlICYmIHRoaXMuaXNFbXB0eSgpO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1Hcm91cCgpOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICBsZXQgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwID0gc3VwZXIuZ2V0Rm9ybUdyb3VwKCk7XG4gICAgaWYgKCFmb3JtR3JvdXApIHtcbiAgICAgIGZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcbiAgICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKHRoaXMuZ2V0QXR0cmlidXRlKCksIHRoaXMuZ2V0Q29udHJvbCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1Hcm91cDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0JylcbiAgZ2V0IGhvc3RIZWlnaHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5oZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgb3BlbkZ1bGxTY3JlZW4oZT86IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2cub3BlbihPRnVsbFNjcmVlbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc5MCUnLFxuICAgICAgaGVpZ2h0OiAnOTAlJyxcbiAgICAgIHJvbGU6ICdkaWFsb2cnLFxuICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgIHBhbmVsQ2xhc3M6ICdvLWltYWdlLWZ1bGxzY3JlZW4tZGlhbG9nLWNkay1vdmVybGF5JyxcbiAgICAgIGRhdGE6IHRoaXMuZ2V0U3JjVmFsdWUoKVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9wZW5GaWxlU2VsZWN0b3IoZT86IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuZmlsZUlucHV0KSkge1xuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbnRlcm5hbEZvcm1Db250cm9sKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKCkgKyAnX3ZhbHVlJztcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlVmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gc3VwZXIucmVzb2x2ZVZhbGlkYXRvcnMoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5tYXhGaWxlU2l6ZSkpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLm1heEZpbGVTaXplVmFsaWRhdG9yLmJpbmQodGhpcykpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWw6IGFueSwgb3B0aW9uczogRm9ybVZhbHVlT3B0aW9ucyA9IHt9LCBzZXREaXJ0eTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0VmFsdWUodmFsLCBvcHRpb25zLCBzZXREaXJ0eSk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmdldFZhbHVlKCkpIHx8ICF0aGlzLmN1cnJlbnRGaWxlTmFtZSkge1xuICAgICAgdGhpcy5zdGF0ZUN0cmwucmVzZXQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbWF4RmlsZVNpemVWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZS5sZW5ndGggPiAwICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMubWF4RmlsZVNpemUpKSB7XG4gICAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzICYmICFBcnJheS5mcm9tPEZpbGU+KHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpLmV2ZXJ5KGZpbGUgPT4gZmlsZS5zaXplIDwgdGhpcy5tYXhGaWxlU2l6ZSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmaWxlU2l6ZToge1xuICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRoaXMubWF4RmlsZVNpemVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qIFRoaXMgbWV0aG9kIGJlIHRyaWdnZXJlZCB3aGVuIGEgaW1hZ2UgaXMgZHJvcHBlZCBvbiBvdXIgaG9zdCBET00gZWxlbWVudCAuKi9cbiAgb25GaWxlRHJvcHBlZChwRmlsZUxpc3Q6IEZpbGVbXSkge1xuICAgIGNvbnN0IGZpbGVzID0gT2JqZWN0LmtleXMocEZpbGVMaXN0KS5tYXAoa2V5ID0+IHBGaWxlTGlzdFtrZXldKTtcbiAgICBjb25zdCBmaWxlTGlzdCA9IHRoaXMuY3JlYXRlRmlsZUxpc3RJdGVtcyhmaWxlcyk7XG5cblxuICAgIGNvbnN0IHZhbGlkID0gdGhpcy5hY2NlcHRGaWxlVHlwZS5yZXBsYWNlKC9cXHMvZywgJycpLnNwbGl0KCcsJykuZmlsdGVyKGFjY2VwdCA9PiBuZXcgUmVnRXhwKGFjY2VwdC5yZXBsYWNlKC9cXCovZywgJy5cXConKS5yZXBsYWNlKC9cXCwvZywgJ3wnKSkudGVzdChmaWxlTGlzdFswXS50eXBlKSkubGVuZ3RoID4gMFxuXG4gICAgaWYgKHZhbGlkKSB7XG4gICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzID0gZmlsZUxpc3Q7XG4gICAgICB0aGlzLmZpbGVDaGFuZ2UodGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlRmlsZUxpc3RJdGVtcyhmaWxlcykge1xuICAgIGNvbnN0IGIgPSBuZXcgQ2xpcGJvYXJkRXZlbnQoXCJcIikuY2xpcGJvYXJkRGF0YSB8fCBuZXcgRGF0YVRyYW5zZmVyKClcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gZmlsZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIGIuaXRlbXMuYWRkKGZpbGVzW2ldKVxuICAgIHJldHVybiBiLmZpbGVzXG4gIH1cblxuICBnZXRGaWxlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWxlTmFtZTtcbiAgfVxuXG4gIGdldEltYWdlRmlsZSgpOiBGaWxlIHtcbiAgICBpZiAodGhpcy5maWxlSW5wdXQgJiYgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZvaWQgKDApO1xuICAgIH1cbiAgfVxuXG4gIGhhc0Vycm9ySW5EcmFnQW5kRHJvcCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGb3JtQ29udHJvbCgpICYmIHRoaXMuZ2V0Rm9ybUNvbnRyb2woKS50b3VjaGVkICYmIHRoaXMuZ2V0Rm9ybUNvbnRyb2woKS5pbnZhbGlkICYmICF0aGlzLmhhc0NvbnRyb2xzKCkgJiYgdGhpcy5lbmFibGVkICYmICF0aGlzLmlzUmVhZE9ubHk7XG5cbiAgfVxuXG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgW2Zvcm1Hcm91cF09XCJnZXRGb3JtR3JvdXAoKVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIiBbbWF0VG9vbHRpcENsYXNzXT1cInRvb2x0aXBDbGFzc1wiIFttYXRUb29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcbiAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiIFttYXRUb29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIiBbY2xhc3Muby1pbWFnZS1hdXRvLWZpdF09XCJhdXRvRml0XCIgY2xhc3M9XCJvLWltYWdlLWNvbnRlbnRcIiBmeEZpbGw+XG5cbiAgPGlucHV0ICNpbnB1dCB0eXBlPVwiZmlsZVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIFthY2NlcHRdPVwiYWNjZXB0RmlsZVR5cGUgPyBhY2NlcHRGaWxlVHlwZS5yZXBsYWNlKCc7JywnLCcpIDogJ2ltYWdlLyonXCIgcmVhZG9ubHlcbiAgICAoY2hhbmdlKT1cImZpbGVDaGFuZ2UoaW5wdXQpXCIgY2xhc3M9XCJvLWltYWdlLWZvcm0tZmllbGQtaGlkZGVuXCIgLz5cblxuICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJoYXNDb250cm9scygpXCIgY2xhc3M9XCJvLWltYWdlLWZvcm0tZmllbGRcIj5cbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwiZ2V0QXR0cmlidXRlKClcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImdldEF0dHJpYnV0ZSgpXCIgW3BsYWNlaG9sZGVyXT1cIm9sYWJlbCB8IG9UcmFuc2xhdGVcIiBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiIHJlYWRvbmx5XG4gICAgICAoY2xpY2spPVwiaW5wdXQuY2xpY2soKVwiIChjaGFuZ2UpPVwib25DaGFuZ2VFdmVudCgkZXZlbnQpXCIgY2xhc3M9XCJvLWltYWdlLWZvcm0tZmllbGQtaW5wdXRcIj5cbiAgICA8aW5wdXQgbWF0SW5wdXQgcmVhZG9ubHkgKGNsaWNrKT1cImlucHV0LmNsaWNrKClcIiBbcGxhY2Vob2xkZXJdPVwib2xhYmVsIHwgb1RyYW5zbGF0ZVwiIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCIgW2Zvcm1Db250cm9sXT1cInN0YXRlQ3RybFwiIC8+XG5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImZ1bGxTY3JlZW5CdXR0b25cIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWRcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvcGVuRnVsbFNjcmVlbigkZXZlbnQpXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmZ1bGxzY3JlZW5cIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImlucHV0LmNsaWNrKClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6Zm9sZGVyX29wZW5cIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2tDbGVhclZhbHVlKCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvcnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGNsYXNzPVwiby1pbWFnZS1kaXNwbGF5LWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwieydvLWltYWdlLWRyYWctYW5kLWRyb3AnOiBpc0VtcHR5KCkgLCAnby1pbWFnZS1kcmFnLWFuZC1kcm9wLXJlcXVpcmVkJzogaGFzRXJyb3JJbkRyYWdBbmREcm9wKCkgfVwiIGZ4TGF5b3V0R2FwPVwiMTVweFwiIG9GaWxlRHJhZ0FuZERyb3BcbiAgICAob25GaWxlRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIj5cblxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIWlzRW1wdHkoKSAmJiAhaGFzQ29udHJvbHMoKSAmJiBlbmFibGVkICYmICFpc1JlYWRPbmx5XCIgKGNsaWNrKT1cIm9uQ2xpY2tDbGVhclZhbHVlKCRldmVudClcIlxuICAgICAgY2xhc3M9XCJvLWltYWdlLWJ1dHRvbi1yZW1vdmVcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8aW1nICpuZ0lmPVwiIShpc0VtcHR5KCkpXCIgW3NyY109XCJzcmNcIiBhbHQ9XCJcIiAoY2xpY2spPVwib3BlbkZpbGVTZWxlY3RvcigpXCIgKGVycm9yKT1cIm5vdEZvdW5kSW1hZ2VVcmwoJGV2ZW50KVwiXG4gICAgICBbbmdDbGFzc109XCJ7J28taW1hZ2UtY3Vyc29yJzogIWlzUmVhZE9ubHl9XCIgLz5cblxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImVtcHR5LWljb25cIiBbY2xhc3MubWF0LWRpc2FibGVkXT1cIiFlbmFibGVkXCIgYXJpYS1sYWJlbD1cImVtcHR5IGltYWdlXCIgKm5nSWY9XCJ1c2VFbXB0eUljb24oKVwiPlxuICAgICAge3sgZW1wdHlpY29uIH19XG4gICAgPC9tYXQtaWNvbj5cblxuICAgIDxpbWcgW3NyY109XCJzcmNcIiBhbHQ9XCJlbXB0eSBpbWFnZVwiICpuZ0lmPVwidXNlRW1wdHlJbWFnZSgpXCIgLz5cblxuICAgIDxzcGFuIGNsYXNzPVwibWF0LXN1YnRpdGxlLTJcIiAqbmdJZj1cImlzRW1wdHkoKVwiPnt7ICdPSU1BR0UuVEVYVC5EUk9QJkRSQUcnIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cblxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib3BlbkZpbGVTZWxlY3RvcigpXCIgKm5nSWY9XCIhaGFzQ29udHJvbHMoKSAmJiBpc0VtcHR5KClcIj5cbiAgICAgIHt7ICdPSU1BR0UuQlVUVE9OLkJST1dTRUZJTEUnIHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoYXNDb250cm9scygpICYmIGVuYWJsZWQgJiYgIWlzUmVhZE9ubHlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvcnNUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpc1JlYWRPbmx5XCIgZnhGaWxsIGNsYXNzPVwicmVhZC1vbmx5LWJsb2NrZXJcIiAoY2xpY2spPVwib25DbGlja0Jsb2NrZXIoJGV2ZW50KVwiPjwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZXJyb3JzVGVtcGxhdGU+XG4gIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAge3sgJ0ZPUk1fVkFMSURBVElPTi5SRVFVSVJFRCcgfCBvVHJhbnNsYXRlIH19XG4gIDwvbWF0LWVycm9yPlxuICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignZmlsZVNpemUnKVwiPlxuICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uRklMRV9NQVhTSVpFJyB8IG9UcmFuc2xhdGUgfX06IHt7IGdldEVycm9yVmFsdWUoJ2ZpbGVTaXplJywgJ21heEZpbGVTaXplJykgfX0gYnl0ZXNcbiAgPC9tYXQtZXJyb3I+XG48L25nLXRlbXBsYXRlPlxuIl19
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbWFnZS9vLWltYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlL28taW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBcUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWlDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBR3RGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLHlCQUF5QjtJQUV6QixnQ0FBZ0M7SUFFaEMsdUJB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IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciwgTnVtYmVySW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBPU2FmZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9vLXNhZmUucGlwZSc7XG5pbXBvcnQgeyBGb3JtVmFsdWVPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybVZhbHVlIH0gZnJvbSAnLi4vZm9ybS9vLWZvcm0tdmFsdWUnO1xuaW1wb3J0IHsgT0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL28tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0Zvcm1Db250cm9sIH0gZnJvbSAnLi4vaW5wdXQvby1mb3JtLWNvbnRyb2wuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1EYXRhQ29tcG9uZW50IH0gZnJvbSAnLi4vby1mb3JtLWRhdGEtY29tcG9uZW50LmNsYXNzJztcbmltcG9ydCB7IE9GdWxsU2NyZWVuRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9mdWxsc2NyZWVuL2Z1bGxzY3JlZW4tZGlhbG9nLmNvbXBvbmVudCc7XG5cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fSU1BR0UgPSBbXG4gICdlbXB0eWltYWdlOiBlbXB0eS1pbWFnZScsXG4gIC8vIG5vdC1mb3VuZC1pbWFnZSBbc3RyaW5nXTogRGVmYXVsdCBpbWFnZSBmb3IgNDA0IGVycm9yLlxuICAnbm90Zm91bmRpbWFnZTogbm90LWZvdW5kLWltYWdlJyxcbiAgLy8gZW1wdHktaWNvbiBbc3RyaW5nXTogbWF0ZXJpYWwgaWNvbi4gRGVmYXVsdDogcGhvdG8uXG4gICdlbXB0eWljb246IGVtcHR5LWljb24nLFxuICAvLyBzaG93LWNvbnRyb2xzIFt5ZXN8bm8gdHJ1ZXxmYWxzZV06IFNob3dzIG9yIGhpZGVzIHNlbGVjdGlvbiBjb250cm9scy4gRGVmYXVsdDogdHJ1ZS5cbiAgJ3Nob3dDb250cm9sczogc2hvdy1jb250cm9scycsXG4gIC8vIGhlaWdodCBbJSB8IHB4XTogU2V0IHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlLlxuICAnaGVpZ2h0JyxcbiAgLy8gYXV0by1maXQgW3llc3xubyB0cnVlfGZhbHNlXTogQWRqdXN0cyB0aGUgaW1hZ2UgdG8gdGhlIGNvbnRlbnQgb3Igbm90LiBEZWZhdWx0OiB0cnVlLlxuICAnYXV0b0ZpdDogYXV0by1maXQnLFxuICAnZnVsbFNjcmVlbkJ1dHRvbjogZnVsbC1zY3JlZW4tYnV0dG9uJyxcbiAgLy8gYWNjZXB0LWZpbGUtdHlwZSBbc3RyaW5nXTogZmlsZSB0eXBlcyBhbGxvd2VkIG9uIHRoZSBmaWxlIGlucHV0LCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBpbWFnZS8qLlxuICAvLyBmaWxlX2V4dGVuc2lvbiwgaW1hZ2UvKiwgbWVkaWFfdHlwZS4gU2VlIGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9hdHRfaW5wdXRfYWNjZXB0LmFzcFxuICAnYWNjZXB0RmlsZVR5cGU6IGFjY2VwdC1maWxlLXR5cGUnLFxuICAvLyBtYXgtZmlsZS1zaXplIFtudW1iZXJdOiBtYXhpbXVtIGZpbGUgc2l6ZSBhbGxvd2VkLCBpbiBieXRlcy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdtYXhGaWxlU2l6ZTogbWF4LWZpbGUtc2l6ZSdcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28taW1hZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vby1pbWFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28taW1hZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0lNQUdFLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWltYWdlXSc6ICd0cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9JbWFnZUNvbXBvbmVudCBleHRlbmRzIE9Gb3JtRGF0YUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgYWNjZXB0RmlsZVR5cGU6IHN0cmluZyA9ICdpbWFnZS8qJztcbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgcHVibGljIG1heEZpbGVTaXplOiBudW1iZXI7XG4gIHB1YmxpYyBlbXB0eWltYWdlOiBzdHJpbmc7XG4gIHB1YmxpYyBub3Rmb3VuZGltYWdlOiBzdHJpbmc7XG4gIHB1YmxpYyBlbXB0eWljb246IHN0cmluZztcbiAgcHVibGljIGhlaWdodDogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIGF1dG9GaXQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgY3VycmVudEZpbGVOYW1lOiBzdHJpbmcgPSAnJztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHByb3RlY3RlZCBzaG93Q29udHJvbHM6IGJvb2xlYW4gPSB0cnVlO1xuICBzZXQgZnVsbFNjcmVlbkJ1dHRvbih2YWw6IGJvb2xlYW4pIHtcbiAgICB2YWwgPSBVdGlsLnBhcnNlQm9vbGVhbihTdHJpbmcodmFsKSk7XG4gICAgdGhpcy5fZnVsbFNjcmVlbkJ1dHRvbiA9IHZhbDtcbiAgfVxuICBnZXQgZnVsbFNjcmVlbkJ1dHRvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZnVsbFNjcmVlbkJ1dHRvbjtcbiAgfVxuICBwcm90ZWN0ZWQgX2Z1bGxTY3JlZW5CdXR0b24gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdpbnB1dCcpXG4gIHByb3RlY3RlZCBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIHByb3RlY3RlZCBfdXNlRW1wdHlJY29uOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIF91c2VFbXB0eUltYWdlOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBvU2FmZTogT1NhZmVQaXBlO1xuICBwcm90ZWN0ZWQgZGlhbG9nOiBNYXREaWFsb2c7XG4gIHB1YmxpYyBzdGF0ZUN0cmw6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgcHVibGljIHNyYyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPRm9ybUNvbXBvbmVudCkpIGZvcm06IE9Gb3JtQ29tcG9uZW50LFxuICAgIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICBzdXBlcihmb3JtLCBlbFJlZiwgaW5qZWN0b3IpO1xuICAgIHRoaXMub1NhZmUgPSBuZXcgT1NhZmVQaXBlKGluamVjdG9yKTtcbiAgICB0aGlzLl9kZWZhdWx0U1FMVHlwZUtleSA9ICdCQVNFNjQnO1xuICAgIHRoaXMuZGlhbG9nID0gdGhpcy5pbmplY3Rvci5nZXQoTWF0RGlhbG9nKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgaWYgKHRoaXMuZW1wdHlpbWFnZSAmJiB0aGlzLmVtcHR5aW1hZ2UubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fdXNlRW1wdHlJY29uID0gZmFsc2U7XG4gICAgICB0aGlzLl91c2VFbXB0eUltYWdlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbXB0eWljb24gPT09IHVuZGVmaW5lZCAmJiAhdGhpcy5fdXNlRW1wdHlJbWFnZSkge1xuICAgICAgdGhpcy5lbXB0eWljb24gPSAncGhvdG8nO1xuICAgICAgdGhpcy5fdXNlRW1wdHlJY29uID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3VzZUVtcHR5SW1hZ2UgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIHB1YmxpYyBlbnN1cmVPRm9ybVZhbHVlKHZhbDogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbCBpbnN0YW5jZW9mIE9Gb3JtVmFsdWUpIHtcbiAgICAgIGlmICh2YWwudmFsdWUgJiYgdmFsLnZhbHVlLmJ5dGVzKSB7XG4gICAgICAgIHZhbCA9IHZhbC52YWx1ZS5ieXRlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbCA9IHZhbC52YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHZhbCkge1xuICAgICAgaWYgKHZhbC5ieXRlcykge1xuICAgICAgICB2YWwgPSB2YWwuYnl0ZXM7XG4gICAgICB9IGVsc2UgaWYgKFV0aWwuaXNCYXNlNjQodmFsKSAmJiB2YWwuc3Vic3RyaW5nKDAsIDQpID09PSAnZGF0YScpIHtcbiAgICAgICAgLy8gUmVtb3ZpbmcgXCJkYXRhOmltYWdlLyo7YmFzZTY0LFwiXG4gICAgICAgIHZhbCA9IHZhbC5zdWJzdHJpbmcodmFsLmluZGV4T2YoJ2Jhc2U2NCcpICsgNyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IG5ldyBPRm9ybVZhbHVlKHZhbCk7XG5cbiAgICB0aGlzLnNyYyA9IHRoaXMuZ2V0U3JjVmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5nZXRWYWx1ZSgpIHx8IHRoaXMuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlRm9ybUNvbnRyb2woY2ZnPzogeyB2YWx1ZTogYW55LCBkaXNhYmxlZDogYm9vbGVhbiB9LCB2YWxpZGF0b3JzPzogVmFsaWRhdG9yRm5bXSk6IE9Gb3JtQ29udHJvbCB7XG4gICAgdGhpcy5fZkNvbnRyb2wgPSBzdXBlci5jcmVhdGVGb3JtQ29udHJvbChjZmcsIHZhbGlkYXRvcnMpO1xuICAgIHRoaXMuc3RhdGVDdHJsID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCh2b2lkIDAsIHRoaXMucmVzb2x2ZVZhbGlkYXRvcnMoKSk7XG4gICAgdGhpcy5fZkNvbnRyb2wuZkNvbnRyb2xDaGlsZHJlbiA9IFt0aGlzLnN0YXRlQ3RybF07XG4gICAgcmV0dXJuIHRoaXMuX2ZDb250cm9sO1xuICB9XG5cbiAgcHVibGljIGZpbGVDaGFuZ2UoaW5wdXQpOiB2b2lkIHtcbiAgICBpZiAoaW5wdXQuZmlsZXNbMF0pIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGV2ZW50ID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGV2ZW50LnRhcmdldFsncmVzdWx0J107XG4gICAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIChyZXN1bHQpID09PSAnc3RyaW5nJyAmJiBVdGlsLmlzQmFzZTY0KHJlc3VsdCkpIHtcbiAgICAgICAgICAvLyBSZW1vdmluZyBcImRhdGE6aW1hZ2UvKjtiYXNlNjQsXCJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKHJlc3VsdC5pbmRleE9mKCdiYXNlNjQnKSArIDcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0VmFsdWUocmVzdWx0KTtcbiAgICAgICAgaWYgKHRoaXMuX2ZDb250cm9sKSB7XG4gICAgICAgICAgdGhpcy5fZkNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfSwgZmFsc2UpO1xuICAgICAgaWYgKGlucHV0LmZpbGVzWzBdKSB7XG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGlucHV0LmZpbGVzWzBdKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50RmlsZU5hbWUgPSBpbnB1dC5maWxlc1swXS5uYW1lO1xuICAgICAgdGhpcy5zdGF0ZUN0cmwuc2V0VmFsdWUodGhpcy5jdXJyZW50RmlsZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBub3RGb3VuZEltYWdlVXJsKGV2ZW50KTogYW55IHtcbiAgICBldmVudC50YXJnZXQuc3JjID0gVXRpbC5pc0RlZmluZWQodGhpcy5ub3Rmb3VuZGltYWdlKSA/IHRoaXMubm90Zm91bmRpbWFnZSA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTcmNWYWx1ZSgpOiBhbnkge1xuXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMudmFsdWUudmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgdGhpcy52YWx1ZS52YWx1ZS5ieXRlcykge1xuICAgICAgICBsZXQgc3JjOiBzdHJpbmcgPSAnJztcbiAgICAgICAgaWYgKHRoaXMudmFsdWUudmFsdWUuYnl0ZXMuc3Vic3RyaW5nKDAsIDQpID09PSAnZGF0YScpIHtcbiAgICAgICAgICBzcmMgPSAnZGF0YTppbWFnZS8qO2Jhc2U2NCwnICsgdGhpcy52YWx1ZS52YWx1ZS5ieXRlcy5zdWJzdHJpbmcodGhpcy52YWx1ZS52YWx1ZS5ieXRlcy5pbmRleE9mKCdiYXNlNjQnKSArIDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNyYyA9ICdkYXRhOmltYWdlLyo7YmFzZTY0LCcgKyB0aGlzLnZhbHVlLnZhbHVlLmJ5dGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9TYWZlLnRyYW5zZm9ybShzcmMsICd1cmwnKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWUudmFsdWUgPT09ICdzdHJpbmcnICYmIFV0aWwuaXNCYXNlNjQodGhpcy52YWx1ZS52YWx1ZSkpIHtcbiAgICAgICAgbGV0IHNyYzogc3RyaW5nID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLnZhbHVlLnN1YnN0cmluZygwLCA0KSA9PT0gJ2RhdGEnKSB7XG4gICAgICAgICAgc3JjID0gJ2RhdGE6aW1hZ2UvKjtiYXNlNjQsJyArIHRoaXMudmFsdWUudmFsdWUuc3Vic3RyaW5nKHRoaXMudmFsdWUudmFsdWUuaW5kZXhPZignYmFzZTY0JykgKyA3KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzcmMgPSAnZGF0YTppbWFnZS8qO2Jhc2U2NCwnICsgdGhpcy52YWx1ZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5vU2FmZS50cmFuc2Zvcm0oc3JjLCAndXJsJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52YWx1ZS52YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtcHR5aW1hZ2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmVtcHR5aW1hZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmVtcHR5aW1hZ2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQ2xpY2tCbG9ja2VyKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbGlja0NsZWFyVmFsdWUoZTogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHN1cGVyLm9uQ2xpY2tDbGVhclZhbHVlKGUpO1xuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgdGhpcy5zdGF0ZUN0cmwucmVzZXQoKTtcbiAgICAgIHRoaXMuY3VycmVudEZpbGVOYW1lID0gJyc7XG4gICAgfVxuICAgIGlmICh0aGlzLl9mQ29udHJvbCkge1xuICAgICAgdGhpcy5fZkNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNDb250cm9scygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93Q29udHJvbHM7XG4gIH1cblxuICBwdWJsaWMgdXNlRW1wdHlJY29uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl91c2VFbXB0eUljb24gJiYgdGhpcy5pc0VtcHR5KCk7XG4gIH1cblxuICBwdWJsaWMgdXNlRW1wdHlJbWFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlRW1wdHlJbWFnZSAmJiB0aGlzLmlzRW1wdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtR3JvdXAoKTogVW50eXBlZEZvcm1Hcm91cCB7XG4gICAgbGV0IGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCA9IHN1cGVyLmdldEZvcm1Hcm91cCgpO1xuICAgIGlmICghZm9ybUdyb3VwKSB7XG4gICAgICBmb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG4gICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLmdldEF0dHJpYnV0ZSgpLCB0aGlzLmdldENvbnRyb2woKSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtR3JvdXA7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpXG4gIGdldCBob3N0SGVpZ2h0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaGVpZ2h0O1xuICB9XG5cbiAgcHVibGljIG9wZW5GdWxsU2NyZWVuKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nLm9wZW4oT0Z1bGxTY3JlZW5EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgIGhlaWdodDogJzkwJScsXG4gICAgICByb2xlOiAnZGlhbG9nJyxcbiAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gICAgICBwYW5lbENsYXNzOiAnby1pbWFnZS1mdWxsc2NyZWVuLWRpYWxvZy1jZGstb3ZlcmxheScsXG4gICAgICBkYXRhOiB0aGlzLmdldFNyY1ZhbHVlKClcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRmlsZVNlbGVjdG9yKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmZpbGVJbnB1dCkpIHtcbiAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW50ZXJuYWxGb3JtQ29udHJvbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgpICsgJ192YWx1ZSc7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZVZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IHN1cGVyLnJlc29sdmVWYWxpZGF0b3JzKCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMubWF4RmlsZVNpemUpKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5tYXhGaWxlU2l6ZVZhbGlkYXRvci5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gIH1cblxuICBwdWJsaWMgc2V0VmFsdWUodmFsOiBhbnksIG9wdGlvbnM6IEZvcm1WYWx1ZU9wdGlvbnMgPSB7fSwgc2V0RGlydHk6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIHN1cGVyLnNldFZhbHVlKHZhbCwgb3B0aW9ucywgc2V0RGlydHkpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5nZXRWYWx1ZSgpKSB8fCAhdGhpcy5jdXJyZW50RmlsZU5hbWUpIHtcbiAgICAgIHRoaXMuc3RhdGVDdHJsLnJlc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG1heEZpbGVTaXplVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm1heEZpbGVTaXplKSkge1xuICAgICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyAmJiAhQXJyYXkuZnJvbTxGaWxlPih0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKS5ldmVyeShmaWxlID0+IGZpbGUuc2l6ZSA8IHRoaXMubWF4RmlsZVNpemUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZmlsZVNpemU6IHtcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiB0aGlzLm1heEZpbGVTaXplXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKiBUaGlzIG1ldGhvZCBiZSB0cmlnZ2VyZWQgd2hlbiBhIGltYWdlIGlzIGRyb3BwZWQgb24gb3VyIGhvc3QgRE9NIGVsZW1lbnQgLiovXG4gIG9uRmlsZURyb3BwZWQocEZpbGVMaXN0OiBGaWxlW10pIHtcbiAgICBjb25zdCBmaWxlcyA9IE9iamVjdC5rZXlzKHBGaWxlTGlzdCkubWFwKGtleSA9PiBwRmlsZUxpc3Rba2V5XSk7XG4gICAgY29uc3QgZmlsZUxpc3QgPSB0aGlzLmNyZWF0ZUZpbGVMaXN0SXRlbXMoZmlsZXMpO1xuXG5cbiAgICBjb25zdCB2YWxpZCA9IHRoaXMuYWNjZXB0RmlsZVR5cGUucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpLmZpbHRlcihhY2NlcHQgPT4gbmV3IFJlZ0V4cChhY2NlcHQucmVwbGFjZSgvXFwqL2csICcuXFwqJykucmVwbGFjZSgvXFwsL2csICd8JykpLnRlc3QoZmlsZUxpc3RbMF0udHlwZSkpLmxlbmd0aCA+IDBcblxuICAgIGlmICh2YWxpZCkge1xuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyA9IGZpbGVMaXN0O1xuICAgICAgdGhpcy5maWxlQ2hhbmdlKHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUZpbGVMaXN0SXRlbXMoZmlsZXMpIHtcbiAgICBjb25zdCBiID0gbmV3IENsaXBib2FyZEV2ZW50KFwiXCIpLmNsaXBib2FyZERhdGEgfHwgbmV3IERhdGFUcmFuc2ZlcigpXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGZpbGVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSBiLml0ZW1zLmFkZChmaWxlc1tpXSlcbiAgICByZXR1cm4gYi5maWxlc1xuICB9XG5cbiAgZ2V0RmlsZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsZU5hbWU7XG4gIH1cblxuICBnZXRJbWFnZUZpbGUoKTogRmlsZSB7XG4gICAgaWYgKHRoaXMuZmlsZUlucHV0ICYmIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2b2lkICgwKTtcbiAgICB9XG4gIH1cblxuICBoYXNFcnJvckluRHJhZ0FuZERyb3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybUNvbnRyb2woKSAmJiB0aGlzLmdldEZvcm1Db250cm9sKCkudG91Y2hlZCAmJiB0aGlzLmdldEZvcm1Db250cm9sKCkuaW52YWxpZCAmJiAhdGhpcy5oYXNDb250cm9scygpICYmIHRoaXMuZW5hYmxlZCAmJiAhdGhpcy5pc1JlYWRPbmx5O1xuXG4gIH1cblxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIFtmb3JtR3JvdXBdPVwiZ2V0Rm9ybUdyb3VwKClcIiBbY2xhc3Muby1pbWFnZS1hdXRvLWZpdF09XCJhdXRvRml0XCIgY2xhc3M9XCJvLWltYWdlLWNvbnRlbnRcIiBmeEZpbGw+XG5cbiAgPGlucHV0ICNpbnB1dCB0eXBlPVwiZmlsZVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIFthY2NlcHRdPVwiYWNjZXB0RmlsZVR5cGUgPyBhY2NlcHRGaWxlVHlwZS5yZXBsYWNlKCc7JywnLCcpIDogJ2ltYWdlLyonXCIgcmVhZG9ubHlcbiAgICAoY2hhbmdlKT1cImZpbGVDaGFuZ2UoaW5wdXQpXCIgY2xhc3M9XCJvLWltYWdlLWZvcm0tZmllbGQtaGlkZGVuXCIgLz5cblxuICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJoYXNDb250cm9scygpXCIgY2xhc3M9XCJvLWltYWdlLWZvcm0tZmllbGRcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCIgW21hdFRvb2x0aXBDbGFzc109XCJ0b29sdGlwQ2xhc3NcIlxuICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiIFttYXRUb29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIlxuICAgIFtzdWJzY3JpcHRTaXppbmddPVwic3Vic2NyaXB0U2l6aW5nXCI+XG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cImdldEF0dHJpYnV0ZSgpXCIgW2Zvcm1Db250cm9sTmFtZV09XCJnZXRBdHRyaWJ1dGUoKVwiIFtwbGFjZWhvbGRlcl09XCJvbGFiZWwgfCBvVHJhbnNsYXRlXCIgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIiByZWFkb25seVxuICAgICAgKGNsaWNrKT1cImlucHV0LmNsaWNrKClcIiAoY2hhbmdlKT1cIm9uQ2hhbmdlRXZlbnQoJGV2ZW50KVwiIGNsYXNzPVwiby1pbWFnZS1mb3JtLWZpZWxkLWlucHV0XCI+XG4gICAgPGlucHV0IG1hdElucHV0IHJlYWRvbmx5IChjbGljayk9XCJpbnB1dC5jbGljaygpXCIgW3BsYWNlaG9sZGVyXT1cIm9sYWJlbCB8IG9UcmFuc2xhdGVcIiBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiIFtmb3JtQ29udHJvbF09XCJzdGF0ZUN0cmxcIiAvPlxuXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJmdWxsU2NyZWVuQnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkZ1bGxTY3JlZW4oJGV2ZW50KVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpmdWxsc2NyZWVuXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWRcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJpbnB1dC5jbGljaygpXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmZvbGRlcl9vcGVuXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWRcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNsaWNrQ2xlYXJWYWx1ZSgkZXZlbnQpXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXJyb3JzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBjbGFzcz1cIm8taW1hZ2UtZGlzcGxheS1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cInsnby1pbWFnZS1kcmFnLWFuZC1kcm9wJzogaXNFbXB0eSgpICwgJ28taW1hZ2UtZHJhZy1hbmQtZHJvcC1yZXF1aXJlZCc6IGhhc0Vycm9ySW5EcmFnQW5kRHJvcCgpIH1cIiBmeExheW91dEdhcD1cIjE1cHhcIiBvRmlsZURyYWdBbmREcm9wXG4gICAgKG9uRmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcFwiIFttYXRUb29sdGlwQ2xhc3NdPVwidG9vbHRpcENsYXNzXCIgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIiBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCJ0b29sdGlwSGlkZURlbGF5XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJoYXNDb250cm9scygpXCI+XG5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFpc0VtcHR5KCkgJiYgIWhhc0NvbnRyb2xzKCkgJiYgZW5hYmxlZCAmJiAhaXNSZWFkT25seVwiIChjbGljayk9XCJvbkNsaWNrQ2xlYXJWYWx1ZSgkZXZlbnQpXCJcbiAgICAgIGNsYXNzPVwiby1pbWFnZS1idXR0b24tcmVtb3ZlXCI+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGltZyAqbmdJZj1cIiEoaXNFbXB0eSgpKVwiIFtzcmNdPVwic3JjXCIgYWx0PVwiXCIgKGNsaWNrKT1cIm9wZW5GaWxlU2VsZWN0b3IoKVwiIChlcnJvcik9XCJub3RGb3VuZEltYWdlVXJsKCRldmVudClcIlxuICAgICAgW25nQ2xhc3NdPVwieydvLWltYWdlLWN1cnNvcic6ICFpc1JlYWRPbmx5fVwiIC8+XG5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJlbXB0eS1pY29uXCIgW2NsYXNzLm1hdC1kaXNhYmxlZF09XCIhZW5hYmxlZFwiIGFyaWEtbGFiZWw9XCJlbXB0eSBpbWFnZVwiICpuZ0lmPVwidXNlRW1wdHlJY29uKClcIj5cbiAgICAgIHt7IGVtcHR5aWNvbiB9fVxuICAgIDwvbWF0LWljb24+XG5cbiAgICA8aW1nIFtzcmNdPVwic3JjXCIgYWx0PVwiZW1wdHkgaW1hZ2VcIiAqbmdJZj1cInVzZUVtcHR5SW1hZ2UoKVwiIC8+XG5cbiAgICA8c3BhbiBjbGFzcz1cIm1hdC1zdWJ0aXRsZS0yXCIgKm5nSWY9XCJpc0VtcHR5KClcIj57eyAnT0lNQUdFLlRFWFQuRFJPUCZEUkFHJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5GaWxlU2VsZWN0b3IoKVwiICpuZ0lmPVwiIWhhc0NvbnRyb2xzKCkgJiYgaXNFbXB0eSgpXCI+XG4gICAgICB7eyAnT0lNQUdFLkJVVFRPTi5CUk9XU0VGSUxFJyB8IG9UcmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGFzQ29udHJvbHMoKSAmJiBlbmFibGVkICYmICFpc1JlYWRPbmx5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXJyb3JzVGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaXNSZWFkT25seVwiIGZ4RmlsbCBjbGFzcz1cInJlYWQtb25seS1ibG9ja2VyXCIgKGNsaWNrKT1cIm9uQ2xpY2tCbG9ja2VyKCRldmVudClcIj48L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Vycm9yc1RlbXBsYXRlPlxuICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uUkVRVUlSRUQnIHwgb1RyYW5zbGF0ZSB9fVxuICA8L21hdC1lcnJvcj5cbiAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ2ZpbGVTaXplJylcIj5cbiAgICB7eyAnRk9STV9WQUxJREFUSU9OLkZJTEVfTUFYU0laRScgfCBvVHJhbnNsYXRlIH19OiB7eyBnZXRFcnJvclZhbHVlKCdmaWxlU2l6ZScsICdtYXhGaWxlU2l6ZScpIH19IGJ5dGVzXG4gIDwvbWF0LWVycm9yPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -41,4 +41,5 @@ export * from './dual-list-selector/index';
41
41
  export * from './o-data-toolbar/index';
42
42
  export * from './expandable-container/o-expandable-container.component';
43
43
  export * from './expandable-container/o-expandable-container.module';
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxzREFBc0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwLWhlYWRlci9vLWFwcC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXBwLWhlYWRlci9vLWFwcC1oZWFkZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwLXNpZGVuYXYvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXItbWVudS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWIvby1icmVhZGNydW1iLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWIvby1icmVhZGNydW1iLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbi10b2dnbGUvby1idXR0b24tdG9nZ2xlLWdyb3VwL28tYnV0dG9uLXRvZ2dsZS1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tdG9nZ2xlL28tYnV0dG9uLXRvZ2dsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tdG9nZ2xlL28tYnV0dG9uLXRvZ2dsZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24vby1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uL28tYnV0dG9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtbWVudS1pdGVtL28tY2FyZC1tZW51LWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1tZW51LWl0ZW0vby1jYXJkLW1lbnUtaXRlbS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250YWluZXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0bWVudS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1idWlsZGVyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1jb250YWluZXIvby1mb3JtLWNvbnRhaW5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWNvbnRhaW5lci9vLWZvcm0tY29udGFpbmVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL2dyaWQtaXRlbS9vLWdyaWQtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL2dyaWQtaXRlbS9vLWdyaWQtaXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL28tZ3JpZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL28tZ3JpZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZS9mdWxsc2NyZWVuL2Z1bGxzY3JlZW4tZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlL28taW1hZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2Uvby1pbWFnZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xhbmd1YWdlLXNlbGVjdG9yL28tbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGFuZ3VhZ2Utc2VsZWN0b3Ivby1sYW5ndWFnZS1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbWF0ZXJpYWwvY2tlZGl0b3IvY2stZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21hdGVyaWFsL2NrZWRpdG9yL2NrLWVkaXRvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tZm9ybS1kYXRhLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tc2VydmljZS1iYXNlLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tc2VydmljZS1jb21wb25lbnQuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9vLXZhbHVlLWNoYW5nZS1ldmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1pbmZvL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZHVhbC1saXN0LXNlbGVjdG9yL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vby1kYXRhLXRvb2xiYXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9leHBhbmRhYmxlLWNvbnRhaW5lci9vLWV4cGFuZGFibGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2V4cGFuZGFibGUtY29udGFpbmVyL28tZXhwYW5kYWJsZS1jb250YWluZXIubW9kdWxlJztcbiJdfQ==
44
+ export * from './tree/index';
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwLWhlYWRlci9vLWFwcC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXBwLWhlYWRlci9vLWFwcC1oZWFkZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwLXNpZGVuYXYvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXItbWVudS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWIvby1icmVhZGNydW1iLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWIvby1icmVhZGNydW1iLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbi10b2dnbGUvby1idXR0b24tdG9nZ2xlLWdyb3VwL28tYnV0dG9uLXRvZ2dsZS1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tdG9nZ2xlL28tYnV0dG9uLXRvZ2dsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24tdG9nZ2xlL28tYnV0dG9uLXRvZ2dsZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24vby1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uL28tYnV0dG9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtbWVudS1pdGVtL28tY2FyZC1tZW51LWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1tZW51LWl0ZW0vby1jYXJkLW1lbnUtaXRlbS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250YWluZXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0bWVudS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1idWlsZGVyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1jb250YWluZXIvby1mb3JtLWNvbnRhaW5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWNvbnRhaW5lci9vLWZvcm0tY29udGFpbmVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL2dyaWQtaXRlbS9vLWdyaWQtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL2dyaWQtaXRlbS9vLWdyaWQtaXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL28tZ3JpZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkL28tZ3JpZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZS9mdWxsc2NyZWVuL2Z1bGxzY3JlZW4tZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlL28taW1hZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2Uvby1pbWFnZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xhbmd1YWdlLXNlbGVjdG9yL28tbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGFuZ3VhZ2Utc2VsZWN0b3Ivby1sYW5ndWFnZS1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbWF0ZXJpYWwvY2tlZGl0b3IvY2stZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21hdGVyaWFsL2NrZWRpdG9yL2NrLWVkaXRvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tZm9ybS1kYXRhLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tc2VydmljZS1iYXNlLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tc2VydmljZS1jb21wb25lbnQuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9vLXZhbHVlLWNoYW5nZS1ldmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1pbmZvL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZHVhbC1saXN0LXNlbGVjdG9yL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vby1kYXRhLXRvb2xiYXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9leHBhbmRhYmxlLWNvbnRhaW5lci9vLWV4cGFuZGFibGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2V4cGFuZGFibGUtY29udGFpbmVyL28tZXhwYW5kYWJsZS1jb250YWluZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJlZS9pbmRleCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './tree-menu/o-tree-menu.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90cmVlL2hlYWRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90cmVlLW1lbnUvby10cmVlLW1lbnUuY29tcG9uZW50JzsiXX0=
@@ -0,0 +1,33 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, ViewChild } from '@angular/core';
2
+ import { MatMenu } from '@angular/material/menu';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "@angular/material/checkbox";
7
+ import * as i4 from "@angular/material/menu";
8
+ import * as i5 from "../../../../pipes/o-translate.pipe";
9
+ export class OTreeMenuComponent {
10
+ constructor() {
11
+ this.selectAllCheckbox = false;
12
+ this.selectAllCheckboxVisible = false;
13
+ this.onSelectCheckboxChange = new EventEmitter();
14
+ }
15
+ toggleShowCheckbox(event) {
16
+ this.onSelectCheckboxChange.emit(event.checked);
17
+ }
18
+ }
19
+ OTreeMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTreeMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ OTreeMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OTreeMenuComponent, selector: "o-tree-menu", inputs: { selectAllCheckbox: ["select-all-checkbox", "selectAllCheckbox"], selectAllCheckboxVisible: ["select-all-checkbox-visible", "selectAllCheckboxVisible"] }, outputs: { onSelectCheckboxChange: "onSelectCheckboxChange" }, viewQueries: [{ propertyName: "matMenu", first: true, predicate: ["menu"], descendants: true, static: true }], ngImport: i0, template: "<mat-menu #menu=\"matMenu\" x-position=\"before\" class=\"o-tree-menu o-mat-menu\">\n <span mat-menu-item *ngIf=\"selectAllCheckbox\">\n <mat-checkbox (change)=\"toggleShowCheckbox($event)\" [(ngModel)]=\"selectAllCheckboxVisible\">\n {{ 'TREE.BUTTONS.SELECT' | oTranslate }}\n </mat-checkbox>\n </span>\n</mat-menu>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "pipe", type: i5.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTreeMenuComponent, decorators: [{
22
+ type: Component,
23
+ args: [{ selector: 'o-tree-menu', changeDetection: ChangeDetectionStrategy.OnPush, inputs: [
24
+ 'selectAllCheckbox: select-all-checkbox',
25
+ 'selectAllCheckboxVisible: select-all-checkbox-visible',
26
+ ], outputs: [
27
+ 'onSelectCheckboxChange'
28
+ ], template: "<mat-menu #menu=\"matMenu\" x-position=\"before\" class=\"o-tree-menu o-mat-menu\">\n <span mat-menu-item *ngIf=\"selectAllCheckbox\">\n <mat-checkbox (change)=\"toggleShowCheckbox($event)\" [(ngModel)]=\"selectAllCheckboxVisible\">\n {{ 'TREE.BUTTONS.SELECT' | oTranslate }}\n </mat-checkbox>\n </span>\n</mat-menu>\n" }]
29
+ }], propDecorators: { matMenu: [{
30
+ type: ViewChild,
31
+ args: ['menu', { static: true }]
32
+ }] } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmVlLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS9oZWFkZXIvdHJlZS1tZW51L28tdHJlZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvaGVhZGVyL3RyZWUtbWVudS9vLXRyZWUtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBZWpELE1BQU0sT0FBTyxrQkFBa0I7SUFaL0I7UUFnQkUsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUUxQiwyQkFBc0IsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQU0zRTtJQUpDLGtCQUFrQixDQUFDLEtBQXdCO1FBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7OytHQVhVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHFZQ2pCL0IsOFVBT0E7MkZEVWEsa0JBQWtCO2tCQVo5QixTQUFTOytCQUNFLGFBQWEsbUJBRU4sdUJBQXVCLENBQUMsTUFBTSxVQUN2Qzt3QkFDTix3Q0FBd0M7d0JBQ3hDLHVEQUF1RDtxQkFDeEQsV0FDUTt3QkFDUCx3QkFBd0I7cUJBQ3pCOzhCQUlELE9BQU87c0JBRE4sU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdHJlZS1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdHJlZS1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogW1xuICAgICdzZWxlY3RBbGxDaGVja2JveDogc2VsZWN0LWFsbC1jaGVja2JveCcsXG4gICAgJ3NlbGVjdEFsbENoZWNrYm94VmlzaWJsZTogc2VsZWN0LWFsbC1jaGVja2JveC12aXNpYmxlJyxcbiAgXSxcbiAgb3V0cHV0czogW1xuICAgICdvblNlbGVjdENoZWNrYm94Q2hhbmdlJ1xuICBdXG59KVxuZXhwb3J0IGNsYXNzIE9UcmVlTWVudUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBtYXRNZW51OiBNYXRNZW51O1xuXG4gIHNlbGVjdEFsbENoZWNrYm94ID0gZmFsc2U7XG4gIHNlbGVjdEFsbENoZWNrYm94VmlzaWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBvblNlbGVjdENoZWNrYm94Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdG9nZ2xlU2hvd0NoZWNrYm94KGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMub25TZWxlY3RDaGVja2JveENoYW5nZS5lbWl0KGV2ZW50LmNoZWNrZWQpO1xuICB9XG5cbn1cblxuXG4iLCI8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgeC1wb3NpdGlvbj1cImJlZm9yZVwiIGNsYXNzPVwiby10cmVlLW1lbnUgby1tYXQtbWVudVwiPlxuICA8c3BhbiBtYXQtbWVudS1pdGVtICpuZ0lmPVwic2VsZWN0QWxsQ2hlY2tib3hcIj5cbiAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwidG9nZ2xlU2hvd0NoZWNrYm94KCRldmVudClcIiAgWyhuZ01vZGVsKV09XCJzZWxlY3RBbGxDaGVja2JveFZpc2libGVcIj5cbiAgICAgIHt7ICdUUkVFLkJVVFRPTlMuU0VMRUNUJyB8IG9UcmFuc2xhdGUgfX1cbiAgICA8L21hdC1jaGVja2JveD5cbiAgPC9zcGFuPlxuPC9tYXQtbWVudT5cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from './o-tree.module';
2
+ export * from './o-tree.component';
3
+ export * from './tree-node/tree-node.component';
4
+ export * from './header/index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90cmVlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL28tdHJlZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vLXRyZWUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdHJlZS1ub2RlL3RyZWUtbm9kZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWFkZXIvaW5kZXgnO1xuXG4iXX0=