@sapphire-ion/framework 1.0.17 → 1.0.20

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 (99) hide show
  1. package/esm2022/lib/classes/inputs/table-field-form-builder.mjs +1 -1
  2. package/esm2022/lib/components/default/default-list/abstract-list.mjs +1 -1
  3. package/esm2022/lib/components/default/default-list/default-list.component.mjs +4 -4
  4. package/esm2022/lib/components/default/default-list/header-list/header-list.component.mjs +1 -1
  5. package/esm2022/lib/components/default/default-list/list.mjs +1 -1
  6. package/esm2022/lib/components/default/default-pagination/default-pagination.component.mjs +5 -5
  7. package/esm2022/lib/components/default/default-table/default-table.component.mjs +161 -163
  8. package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +3 -3
  9. package/esm2022/lib/components/default/default-view/abstract-view.mjs +1 -1
  10. package/esm2022/lib/components/default/default-view/default-view.component.mjs +3 -3
  11. package/esm2022/lib/components/default/default-view/view.mjs +19 -6
  12. package/esm2022/lib/components/default-page/default.page.mjs +3 -3
  13. package/esm2022/lib/components/drawer/drawer-group/drawer-group.component.mjs +3 -3
  14. package/esm2022/lib/components/drawer/drawer.component.mjs +5 -5
  15. package/esm2022/lib/components/filter/filter.component.mjs +8 -3
  16. package/esm2022/lib/components/inputs/custom-input.mjs +1 -1
  17. package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +11 -5
  18. package/esm2022/lib/components/inputs/input-cep/input-cep.component.mjs +19 -10
  19. package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +15 -8
  20. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +46 -15
  21. package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +12 -6
  22. package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +11 -5
  23. package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +14 -6
  24. package/esm2022/lib/components/inputs/input-icon/input-icon.component.mjs +12 -6
  25. package/esm2022/lib/components/inputs/input-select/directives/sion-label-template.directive.mjs +1 -1
  26. package/esm2022/lib/components/inputs/input-select/directives/sion-option-template.directive.mjs +1 -3
  27. package/esm2022/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.mjs +1 -1
  28. package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +13 -5
  29. package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +5 -5
  30. package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +12 -6
  31. package/esm2022/lib/components/inputs/input-telefone/input-telefone.component.mjs +22 -11
  32. package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +12 -6
  33. package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +2 -2
  34. package/esm2022/lib/components/login/login.component.mjs +4 -4
  35. package/esm2022/lib/components/popover/sion-popover/sion-popover.component.mjs +15 -4
  36. package/esm2022/lib/components/sion-card/sion-card.component.mjs +26 -0
  37. package/esm2022/lib/components/stepper/stepper.component.mjs +4 -4
  38. package/esm2022/lib/guards/error.interceptor.mjs +3 -3
  39. package/esm2022/lib/index.mjs +4 -2
  40. package/esm2022/lib/services/generic.service.mjs +84 -0
  41. package/esm2022/lib/services/usuario.service.mjs +3 -3
  42. package/esm2022/lib/services/web/http.ativo.service.mjs +4 -22
  43. package/esm2022/lib/services/web/http.service.mjs +26 -15
  44. package/esm2022/lib/services/web/storage.service.mjs +3 -3
  45. package/fesm2022/sapphire-ion-framework.mjs +662 -510
  46. package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
  47. package/lib/classes/inputs/table-field-form-builder.d.ts +1 -1
  48. package/lib/components/default/default-list/abstract-list.d.ts +1 -1
  49. package/lib/components/default/default-list/default-list.component.d.ts +1 -1
  50. package/lib/components/default/default-list/list.d.ts +1 -1
  51. package/lib/components/default/default-pagination/default-pagination.component.d.ts +1 -1
  52. package/lib/components/default/default-table/default-table.component.d.ts +60 -44
  53. package/lib/components/default/default-view/abstract-view.d.ts +1 -1
  54. package/lib/components/default/default-view/default-view.component.d.ts +1 -1
  55. package/lib/components/default/default-view/view.d.ts +5 -2
  56. package/lib/components/default-page/default.page.d.ts +1 -1
  57. package/lib/components/drawer/drawer-group/drawer-group.component.d.ts +1 -1
  58. package/lib/components/drawer/drawer.component.d.ts +1 -1
  59. package/lib/components/inputs/custom-input.d.ts +1 -1
  60. package/lib/components/inputs/input-bool/input-bool.component.d.ts +1 -1
  61. package/lib/components/inputs/input-cep/input-cep.component.d.ts +3 -3
  62. package/lib/components/inputs/input-color/input-color.component.d.ts +2 -2
  63. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +3 -4
  64. package/lib/components/inputs/input-date/input-date.component.d.ts +1 -1
  65. package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +1 -1
  66. package/lib/components/inputs/input-file/input-file.component.d.ts +1 -1
  67. package/lib/components/inputs/input-icon/input-icon.component.d.ts +1 -1
  68. package/lib/components/inputs/input-select/directives/sion-label-template.directive.d.ts +6 -0
  69. package/lib/components/inputs/input-select/directives/sion-option-template.directive.d.ts +4 -1
  70. package/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.d.ts +8 -2
  71. package/lib/components/inputs/input-select/input-select.component.d.ts +1 -1
  72. package/lib/components/inputs/input-select/input.select.configuration.d.ts +1 -1
  73. package/lib/components/inputs/input-string/input-string.component.d.ts +1 -1
  74. package/lib/components/inputs/input-telefone/input-telefone.component.d.ts +2 -1
  75. package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +1 -1
  76. package/lib/components/login/login.component.d.ts +1 -1
  77. package/lib/components/popover/sion-popover/sion-popover.component.d.ts +1 -0
  78. package/lib/components/sion-card/sion-card.component.d.ts +11 -0
  79. package/lib/components/stepper/stepper.component.d.ts +2 -2
  80. package/lib/guards/error.interceptor.d.ts +1 -1
  81. package/lib/index.d.ts +2 -1
  82. package/lib/services/usuario.service.d.ts +1 -1
  83. package/lib/services/web/http.ativo.service.d.ts +1 -12
  84. package/lib/services/web/http.service.d.ts +16 -7
  85. package/lib/services/web/storage.service.d.ts +1 -1
  86. package/package.json +5 -5
  87. package/themes/compiled-styles.scss +17 -6
  88. package/themes/components/default/default-pagination/default-pagination.component.scss +1 -4
  89. package/themes/components/default/default-table/default-table.component.scss +3 -19
  90. package/themes/components/inputs/inputs.scss +1 -1
  91. package/themes/components/popover/sion-popover/sion-popover.component.scss +1 -1
  92. package/themes/components/sion-card/sion-card.component.scss +0 -0
  93. package/themes/styles/core.styles.scss +16 -12
  94. package/themes/styles/login-default.scss +1 -1
  95. package/themes/styles/styles.scss +1 -1
  96. package/esm2022/lib/components/inputs/input-cep/input-cep.configuration.mjs +0 -6
  97. package/esm2022/lib/services/generics.service.mjs +0 -84
  98. package/lib/components/inputs/input-cep/input-cep.configuration.d.ts +0 -5
  99. /package/lib/services/{generics.service.d.ts → generic.service.d.ts} +0 -0
@@ -169,15 +169,15 @@ export class ThFilterComponent {
169
169
  return;
170
170
  }
171
171
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
172
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ThFilterComponent, selector: "th-filter", inputs: { field: "field" }, outputs: { changeEmitter: "change" }, ngImport: i0, template: "<div #anchor class=\"h-5 aspect-square mr-1 flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<sion-popover fill=\"solid\" #popover [anchor]=\"anchor\" triggerAction=\"click\">\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </div>\r\n <!-- <ion-card class=\"m-0 !border-0 bg-primary/30 w-72\">\r\n <ion-card-header class=\"bg-transparent\">\r\n <ion-card-title class=\"text-center text-sm\">\r\n Filtro - {{field.header}}\r\n </ion-card-title>\r\n </ion-card-header>\r\n <ion-card-content [ngClass]=\"{'!p-0': ['Select', 'Bool', 'String', 'TextArea'].includes(field.type)}\" class=\"!p-2 bg-light rounded-t-2xl\">\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n</sion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"], dependencies: [{ kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i3.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i4.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i5.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss", "isVisibleChange"] }] }); }
172
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ThFilterComponent, selector: "th-filter", inputs: { field: "field" }, outputs: { changeEmitter: "change" }, ngImport: i0, template: "<div #anchor class=\"h-5 aspect-square flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<sion-popover fill=\"solid\" #popover [anchor]=\"anchor\" triggerAction=\"click\">\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </div>\r\n <!-- <ion-card class=\"m-0 !border-0 bg-primary/30 w-72\">\r\n <ion-card-header class=\"bg-transparent\">\r\n <ion-card-title class=\"text-center text-sm\">\r\n Filtro - {{field.header}}\r\n </ion-card-title>\r\n </ion-card-header>\r\n <ion-card-content [ngClass]=\"{'!p-0': ['Select', 'Bool', 'String', 'TextArea'].includes(field.type)}\" class=\"!p-2 bg-light rounded-t-2xl\">\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n</sion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"], dependencies: [{ kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: ["configuration"] }, { kind: "component", type: i3.InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: ["configuration"], outputs: ["configurationChange"] }, { kind: "component", type: i4.InputSelectComponent, selector: "input-select", inputs: ["items", "configuration"], outputs: ["itemsChange"] }, { kind: "component", type: i5.InputStringComponent, selector: "input-string", inputs: ["configuration"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss", "isVisibleChange"] }] }); }
173
173
  }
174
174
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThFilterComponent, decorators: [{
175
175
  type: Component,
176
- args: [{ selector: 'th-filter', template: "<div #anchor class=\"h-5 aspect-square mr-1 flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<sion-popover fill=\"solid\" #popover [anchor]=\"anchor\" triggerAction=\"click\">\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </div>\r\n <!-- <ion-card class=\"m-0 !border-0 bg-primary/30 w-72\">\r\n <ion-card-header class=\"bg-transparent\">\r\n <ion-card-title class=\"text-center text-sm\">\r\n Filtro - {{field.header}}\r\n </ion-card-title>\r\n </ion-card-header>\r\n <ion-card-content [ngClass]=\"{'!p-0': ['Select', 'Bool', 'String', 'TextArea'].includes(field.type)}\" class=\"!p-2 bg-light rounded-t-2xl\">\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n</sion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"] }]
176
+ args: [{ selector: 'th-filter', template: "<div #anchor class=\"h-5 aspect-square flex items-center justify-center cursor-pointer\">\r\n <ion-icon name=\"filter-circle\" (click)=\"popover.present($event)\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<sion-popover fill=\"solid\" #popover [anchor]=\"anchor\" triggerAction=\"click\">\r\n <div class=\"w-72 flex flex-col gap-2 p-2\" >\r\n @if(!['Select', 'Bool', 'String', 'TextArea'].includes(field.type)){\r\n <ion-label class=\"w-full flex items-center justify-center\"> Filtro - {{field.header}} </ion-label>\r\n }\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </div>\r\n <!-- <ion-card class=\"m-0 !border-0 bg-primary/30 w-72\">\r\n <ion-card-header class=\"bg-transparent\">\r\n <ion-card-title class=\"text-center text-sm\">\r\n Filtro - {{field.header}}\r\n </ion-card-title>\r\n </ion-card-header>\r\n <ion-card-content [ngClass]=\"{'!p-0': ['Select', 'Bool', 'String', 'TextArea'].includes(field.type)}\" class=\"!p-2 bg-light rounded-t-2xl\">\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor M\u00EDnimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"Filtro - {{field.header}}\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data M\u00EDnima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n</sion-popover>\r\n", styles: [".th-select{border-radius:0!important}.th-select ion-card{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card ion-item{--border-radius: 0 !important;--border-width: 0 !important;border-radius:0!important;border-width:0!important}.th-select ion-card div.w-12 ion-button{--border-width: 1px !important;--border-radius: 0rem 0rem 1rem 0rem !important}\n"] }]
177
177
  }], ctorParameters: () => [], propDecorators: { field: [{
178
178
  type: Input
179
179
  }], changeEmitter: [{
180
180
  type: Output,
181
181
  args: ['change']
182
182
  }] } });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGgtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdGFibGUvdGgtZmlsdGVyL3RoLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC9kZWZhdWx0LXRhYmxlL3RoLWZpbHRlci90aC1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsMEJBQTBCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUM1SixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUc3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxN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QWE7c0JBQTlCLE1BQU07dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFRhYmxlRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2lucHV0cy90YWJsZS1maWVsZCc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC10eXBlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24sIElucHV0Q3VycmVuY3lDb25maWd1cmF0aW9uLCBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtZGVjaW1hbC9pbnB1dC1kZWNpbWFsLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dFN0cmluZ0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtc3RyaW5nL2lucHV0LXN0cmluZy5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LXNlbGVjdC9pbnB1dC5zZWxlY3QuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0RGF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtZGF0ZS9pbnB1dC1kYXRlLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dEZpbGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRCb29sQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1ib29sL2lucHV0LWJvb2wuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1jb25maWd1cmF0aW9uJztcclxuXHJcbmltcG9ydCB7IEltcGxpY2l0UHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vcHJvcGVydGllcy9pbXBsaWNpdC1wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IERlY2ltYWxQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL2RlY2ltYWwtcHJvcGVydHknO1xyXG5pbXBvcnQgeyBTdHJpbmdQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL3N0cmluZy1wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IEJvb2xQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL2Jvb2wtcHJvcGVydHknO1xyXG5pbXBvcnQgeyBEYXRlUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vcHJvcGVydGllcy9kYXRlLXByb3BlcnR5JztcclxuXHJcbmltcG9ydCB7IENvbXBhcmlzb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vY29tcGFyaXNvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RoLWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RoLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGgtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkIDogVGFibGVGaWVsZCBcclxuXHJcbiAgZ3VpZDogc3RyaW5nID0gVXRpbHMuR2VuZXJhdGVHVUlEKCk7XHJcbiAgY29uZmlndXJhdGlvbjogSW5wdXRDb25maWd1cmF0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHRoaXMuZmllbGQuY29uZmlndXJhdGlvbjtcclxuICAgIFxyXG4gICAgaWYoIXRoaXMuY29uZmlndXJhdGlvbil7XHJcbiAgICAgIGlmKFtJbnB1dFR5cGUuRGF0ZSwgSW5wdXRUeXBlLkRhdGVUaW1lLCBJbnB1dFR5cGUuVGltZV0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERhdGVDb25maWd1cmF0aW9uKCkgfSBlbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuRmlsZSAgICApeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRGaWxlQ29uZmlndXJhdGlvbigpICAgICB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLk51bWJlciAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbigpICAgfWVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5EZWNpbWFsICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uKCkgIH1lbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuQ3VycmVuY3kpeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24oKSB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLlN0cmluZyAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U3RyaW5nQ29uZmlndXJhdGlvbigpICAgfWVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5TZWxlY3QgICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24oKSAgIH1lbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuVGV4dEFyZWEpeyBcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRTdHJpbmdDb25maWd1cmF0aW9uKCk7IFxyXG4gICAgICB9ZWxzZSBcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5Cb29sICAgICl7IFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dEJvb2xDb25maWd1cmF0aW9uKCk7IFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uIGluc3RhbmNlb2YgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKXtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbihcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uYmluZFZhbHVlLFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5iaW5kTGFiZWwsXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICApO1xyXG4gICAgICAodGhpcy5jb25maWd1cmF0aW9uIGFzIElucHV0U2VsZWN0Q29uZmlndXJhdGlvbikucG9wb3ZlckNvbmZpZ3VyYXRpb24uZmxpcCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbiBpbnN0YW5jZW9mIElucHV0RGF0ZUNvbmZpZ3VyYXRpb24pe1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXREYXRlQ29uZmlndXJhdGlvbih0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkJvb2wpe1xyXG4gICAgICBpZih0aGlzLmZpZWxkLmluZGV4ID09IFwiYXRpdm9cIil7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbigndmFsdWUnLCAnbGFiZWwnLCB0cnVlLCB0cnVlLCBbXHJcbiAgICAgICAgICB7IGxhYmVsOiAnU29tZW50ZSBBdGl2b3MnICAgICwgdmFsdWU6IHRydWUgIH0sXHJcbiAgICAgICAgICB7IGxhYmVsOiAnU29tZW50ZSBOw6NvIEF0aXZvcycsIHZhbHVlOiBmYWxzZSB9LFxyXG4gICAgICAgIF0pO1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbigndmFsdWUnLCAnbGFiZWwnLCB0cnVlLCBmYWxzZSwgW1xyXG4gICAgICAgICAgeyBsYWJlbDogJ1NpbScsIHZhbHVlOiB0cnVlICB9LFxyXG4gICAgICAgICAgeyBsYWJlbDogJ07Do28nLCB2YWx1ZTogZmFsc2UgfSxcclxuICAgICAgICBdKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0ZpbHRlckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBtb2RlbDogYW55IHwgbnVsbCA9IG51bGw7XHJcbiAgbW9kZWxNaW5pbXVtOiBhbnkgfCBudWxsID0gbnVsbDtcclxuICBtb2RlbE1heGltdW06IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoJ2NoYW5nZScpIGNoYW5nZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQ2hhbmdlKCk6IHZvaWR7XHJcbiAgICBpZigoKHR5cGVvZih0aGlzLm1vZGVsKSA9PSAnc3RyaW5nJyAmJiAhdGhpcy5tb2RlbCkgfHwgXHJcbiAgICAgICAgIHRoaXMubW9kZWwgPT0gbnVsbCB8fCBcclxuICAgICAgICAgKEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbCkgJiYgdGhpcy5tb2RlbC5sZW5ndGggPT0gMCkpICYmIFxyXG4gICAgICAhdGhpcy5tb2RlbE1pbmltdW0gJiYgIXRoaXMubW9kZWxNYXhpbXVtKVxyXG4gICAge1xyXG4gICAgICB0aGlzLlNldEluYWN0aXZlKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZihbSW5wdXRUeXBlLkN1cnJlbmN5LCBJbnB1dFR5cGUuRGVjaW1hbCwgSW5wdXRUeXBlLk51bWJlcl0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSl7XHJcbiAgICAgIHZhciBDb21wYXJpc29uOiBDb21wYXJpc29uW10gPSBbXTtcclxuICAgICAgaWYodGhpcy5tb2RlbE1pbmltdW0pe1xyXG4gICAgICAgIHZhciBCaWdnZXIgID0gbmV3IERlY2ltYWxQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5HcmVhdGVyVGhhbk9yRXF1YWwodGhpcy5tb2RlbE1pbmltdW0pO1xyXG4gICAgICAgIENvbXBhcmlzb24gPSBbQmlnZ2VyXTtcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLm1vZGVsTWF4aW11bSl7XHJcbiAgICAgICAgdmFyIFNtYWxsZXIgPSBuZXcgRGVjaW1hbFByb3BlcnR5KHRoaXMuZmllbGQuaW5kZXgpLkxlc3NUaGFuT3JFcXVhbCh0aGlzLm1vZGVsTWF4aW11bSk7XHJcbiAgICAgICAgaWYoQ29tcGFyaXNvbi5sZW5ndGgpeyBDb21wYXJpc29uLnB1c2goU21hbGxlcik7IH0gXHJcbiAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgeyBDb21wYXJpc29uID0gW1NtYWxsZXJdOyB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmllbGQuZmlsdGVyID0gQ29tcGFyaXNvbjtcclxuICAgICAgdGhpcy5pc0ZpbHRlckFjdGl2ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlRW1pdHRlci5lbWl0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1lbHNlXHJcbiAgICBpZihbSW5wdXRUeXBlLlN0cmluZywgSW5wdXRUeXBlLlRleHRBcmVhXS5pbmNsdWRlcyh0aGlzLmZpZWxkLnR5cGUpKXtcclxuICAgICAgdGhpcy5maWVsZC5maWx0ZXIgICA9IFtuZXcgU3RyaW5nUHJvcGVydHkodGhpcy5maWVsZC5pbmRleCkuSXNDb250YWluZWRJbih0aGlzLm1vZGVsKV07XHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJBY3RpdmUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZUVtaXR0ZXIuZW1pdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9ZWxzZVxyXG4gICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5TZWxlY3Qpe1xyXG4gICAgICB0aGlzLmZpZWxkLmZpbHRlciAgID0gW25ldyBJbXBsaWNpdFByb3BlcnR5KHRoaXMuZmllbGQuaW5kZXgpLklzQ29udGFpbmVkSW4odGhpcy5tb2RlbCldO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfWVsc2VcclxuICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuQm9vbCl7XHJcbiAgICAgIHRoaXMuZmllbGQuZmlsdGVyICAgPSBbbmV3IEJvb2xQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5FcXVhbHModGhpcy5tb2RlbCldO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZihbSW5wdXRUeXBlLkRhdGUsIElucHV0VHlwZS5EYXRlVGltZV0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSl7XHJcbiAgICAgIGlmKHRoaXMubW9kZWxNaW5pbXVtKXtcclxuICAgICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkRhdGUpeyB0aGlzLm1vZGVsTWluaW11bSA9IHRoaXMubW9kZWxNaW5pbXVtLnNwbGl0KFwiVFwiKVswXSArIFwiVDIzOjU5OjU5XCIgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMubW9kZWxNYXhpbXVtKXtcclxuICAgICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkRhdGUpeyB0aGlzLm1vZGVsTWF4aW11bSA9IHRoaXMubW9kZWxNYXhpbXVtLnNwbGl0KFwiVFwiKVswXSArIFwiVDIzOjU5OjU5XCIgfVxyXG4gICAgICB9XHJcbiAgICBcclxuICAgICAgdmFyIENvbXBhcmlzb246IENvbXBhcmlzb25bXSA9IFtdO1xyXG4gICAgICBpZih0aGlzLm1vZGVsTWluaW11bSl7XHJcbiAgICAgICAgdmFyIEJpZ2dlckRhdGUgID0gbmV3IERhdGVQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5HcmVhdGVyVGhhbk9yRXF1YWwodGhpcy5tb2RlbE1pbmltdW0pO1xyXG4gICAgICAgIENvbXBhcmlzb24gPSBbQmlnZ2VyRGF0ZV07XHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5tb2RlbE1heGltdW0pe1xyXG4gICAgICAgIHZhciBTbWFsbGVyRGF0ZSA9IG5ldyBEYXRlUHJvcGVydHkodGhpcy5maWVsZC5pbmRleCkuTGVzc1RoYW5PckVxdWFsKHRoaXMubW9kZWxNYXhpbXVtKTtcclxuICAgICAgICBpZihDb21wYXJpc29uLmxlbmd0aCl7IENvbXBhcmlzb24ucHVzaChTbWFsbGVyRGF0ZSk7IH0gXHJcbiAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgeyBDb21wYXJpc29uID0gW1NtYWxsZXJEYXRlXSAgOyB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5maWVsZC5maWx0ZXIgPSBDb21wYXJpc29uO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRW1pdHRlci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBTZXRJbmFjdGl2ZSgpOiB2b2lke1xyXG4gICAgdGhpcy5maWVsZC5maWx0ZXIgPSBudWxsO1xyXG4gICAgdGhpcy5pc0ZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjYW5jaG9yIGNsYXNzPVwiaC01IGFzcGVjdC1zcXVhcmUgbXItMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBjdXJzb3ItcG9pbnRlclwiPlxyXG4gIDxpb24taWNvbiBuYW1lPVwiZmlsdGVyLWNpcmNsZVwiIChjbGljayk9XCJwb3BvdmVyLnByZXNlbnQoJGV2ZW50KVwiIGNsYXNzPVwidGV4dC14bCBhbGlnbi1zdWIgc2l6ZS1mdWxsXCIgW2NvbG9yXT1cImlzRmlsdGVyQWN0aXZlID8gJ3NlY29uZGFyeScgOiAnbWVkaXVtJyBcIj48L2lvbi1pY29uPlxyXG48L2Rpdj5cclxuXHJcbjxzaW9uLXBvcG92ZXIgZmlsbD1cInNvbGlkXCIgI3BvcG92ZXIgW2FuY2hvcl09XCJhbmNob3JcIiB0cmlnZ2VyQWN0aW9uPVwiY2xpY2tcIj5cclxuICA8ZGl2IGNsYXNzPVwidy03MiBmbGV4IGZsZXgtY29sIGdhcC0yIHAtMlwiID5cclxuICAgIEBpZighWydTZWxlY3QnLCAnQm9vbCcsICdTdHJpbmcnLCAnVGV4dEFyZWEnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSl7XHJcbiAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJ3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj4gIEZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX0gPC9pb24tbGFiZWw+XHJcbiAgICB9XHJcbiAgICBAc3dpdGNoIChmaWVsZC50eXBlKSB7XHJcbiAgICAgIEBjYXNlICgnU3RyaW5nJykge1xyXG4gICAgICAgIDxpbnB1dC1zdHJpbmcgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCIgKGJsdXIpPVwiQ2hhbmdlKClcIj48L2lucHV0LXN0cmluZz5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ051bWJlcicpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgPGlucHV0LW51bWJlciAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1pbmltdW1cIiBsYWJlbD1cIlZhbG9yIE3DrW5pbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgICA8aW5wdXQtbnVtYmVyIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWF4aW11bVwiIGxhYmVsPVwiVmFsb3IgTWF4aW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtbnVtYmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnRGVjaW1hbCcpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgPGlucHV0LWRlY2ltYWwgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJWYWxvciBNw61uaW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGVjaW1hbD5cclxuICAgICAgICAgIDxpbnB1dC1kZWNpbWFsIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWF4aW11bVwiIGxhYmVsPVwiVmFsb3IgTWF4aW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGVjaW1hbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ0N1cnJlbmN5Jykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIGdhcC0yXCI+XHJcbiAgICAgICAgICA8aW5wdXQtY3VycmVuY3kgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJWYWxvciBNw61uaW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY3VycmVuY3k+XHJcbiAgICAgICAgICA8aW5wdXQtY3VycmVuY3kgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJWYWxvciBNYXhpbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1jdXJyZW5jeT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ1NlbGVjdCcpIHtcclxuICAgICAgICA8aW5wdXQtc2VsZWN0IChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsXCIgY2xhc3M9XCJ0aC1zZWxlY3RcIiBsYWJlbD1cIkZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX1cIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1zZWxlY3Q+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdUZXh0QXJlYScpIHtcclxuICAgICAgICA8aW5wdXQtc3RyaW5nIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsXCIgY2xhc3M9XCJ0aC1zZWxlY3RcIiBsYWJlbD1cIkZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX1cIj48L2lucHV0LXN0cmluZz5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ0Jvb2wnKSB7XHJcbiAgICAgICAgPGlucHV0LXNlbGVjdCAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCIgcGxhY2Vob2xkZXI9XCJcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1zZWxlY3Q+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdEYXRlJykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgPGlucHV0LWRhdGUgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJEYXRhIE3DrW5pbWFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kYXRlPlxyXG4gICAgICAgICAgPGlucHV0LWRhdGUgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJEYXRhIE1heGltYVwiIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdEYXRlVGltZScpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgPGlucHV0LWRhdGUtdGltZSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1pbmltdW1cIiBsYWJlbD1cIkRhdGEgTcOtbmltYVwiIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGUtdGltZT5cclxuICAgICAgICAgIDxpbnB1dC1kYXRlLXRpbWUgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJEYXRhIE1heGltYVwiIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGUtdGltZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gPGlvbi1jYXJkIGNsYXNzPVwibS0wICFib3JkZXItMCBiZy1wcmltYXJ5LzMwIHctNzJcIj5cclxuICAgIDxpb24tY2FyZC1oZWFkZXIgY2xhc3M9XCJiZy10cmFuc3BhcmVudFwiPlxyXG4gICAgICA8aW9uLWNhcmQtdGl0bGUgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LXNtXCI+XHJcbiAgICAgICAgRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVxyXG4gICAgICA8L2lvbi1jYXJkLXRpdGxlPlxyXG4gICAgPC9pb24tY2FyZC1oZWFkZXI+XHJcbiAgICA8aW9uLWNhcmQtY29udGVudCBbbmdDbGFzc109XCJ7JyFwLTAnOiBbJ1NlbGVjdCcsICdCb29sJywgJ1N0cmluZycsICdUZXh0QXJlYSddLmluY2x1ZGVzKGZpZWxkLnR5cGUpfVwiIGNsYXNzPVwiIXAtMiBiZy1saWdodCByb3VuZGVkLXQtMnhsXCI+XHJcbiAgICAgIEBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcclxuICAgICAgICBAY2FzZSAoJ1N0cmluZycpIHtcclxuICAgICAgICAgIDxpbnB1dC1zdHJpbmcgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCIgKGJsdXIpPVwiQ2hhbmdlKClcIj48L2lucHV0LXN0cmluZz5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdOdW1iZXInKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8aW5wdXQtbnVtYmVyIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWluaW11bVwiIGxhYmVsPVwiVmFsb3IgTcOtbmltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LW51bWJlcj5cclxuICAgICAgICAgICAgPGlucHV0LW51bWJlciAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIlZhbG9yIE1heGltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LW51bWJlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0RlY2ltYWwnKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8aW5wdXQtZGVjaW1hbCAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1pbmltdW1cIiBsYWJlbD1cIlZhbG9yIE3DrW5pbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kZWNpbWFsPlxyXG4gICAgICAgICAgICA8aW5wdXQtZGVjaW1hbCAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIlZhbG9yIE1heGltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRlY2ltYWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdDdXJyZW5jeScpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIGdhcC0yXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dC1jdXJyZW5jeSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1pbmltdW1cIiBsYWJlbD1cIlZhbG9yIE3DrW5pbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1jdXJyZW5jeT5cclxuICAgICAgICAgICAgPGlucHV0LWN1cnJlbmN5IChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWF4aW11bVwiIGxhYmVsPVwiVmFsb3IgTWF4aW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY3VycmVuY3k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdTZWxlY3QnKSB7XHJcbiAgICAgICAgICA8aW5wdXQtc2VsZWN0IChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsXCIgY2xhc3M9XCJ0aC1zZWxlY3RcIiBsYWJlbD1cIkZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX1cIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1zZWxlY3Q+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnVGV4dEFyZWEnKSB7XHJcbiAgICAgICAgICA8aW5wdXQtc3RyaW5nIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsXCIgY2xhc3M9XCJ0aC1zZWxlY3RcIiBsYWJlbD1cIkZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX1cIj48L2lucHV0LXN0cmluZz5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdCb29sJykge1xyXG4gICAgICAgICAgPGlucHV0LXNlbGVjdCAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCIgcGxhY2Vob2xkZXI9XCJcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1zZWxlY3Q+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnRGF0ZScpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8aW5wdXQtZGF0ZSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1pbmltdW1cIiBsYWJlbD1cIkRhdGEgTcOtbmltYVwiIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGU+XHJcbiAgICAgICAgICAgIDxpbnB1dC1kYXRlIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWF4aW11bVwiIGxhYmVsPVwiRGF0YSBNYXhpbWFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnRGF0ZVRpbWUnKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8aW5wdXQtZGF0ZS10aW1lIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWluaW11bVwiIGxhYmVsPVwiRGF0YSBNw61uaW1hXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZS10aW1lPlxyXG4gICAgICAgICAgICA8aW5wdXQtZGF0ZS10aW1lIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWF4aW11bVwiIGxhYmVsPVwiRGF0YSBNYXhpbWFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kYXRlLXRpbWU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIDwvaW9uLWNhcmQtY29udGVudD5cclxuICA8L2lvbi1jYXJkPiAtLT5cclxuPC9zaW9uLXBvcG92ZXI+XHJcbiJdfQ==
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGgtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdGFibGUvdGgtZmlsdGVyL3RoLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC9kZWZhdWx0LXRhYmxlL3RoLWZpbHRlci90aC1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsMEJBQTBCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUM1SixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUc3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxN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QWE7c0JBQTlCLE1BQU07dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFRhYmxlRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2lucHV0cy90YWJsZS1maWVsZCc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC10eXBlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24sIElucHV0Q3VycmVuY3lDb25maWd1cmF0aW9uLCBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtZGVjaW1hbC9pbnB1dC1kZWNpbWFsLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dFN0cmluZ0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtc3RyaW5nL2lucHV0LXN0cmluZy5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LXNlbGVjdC9pbnB1dC5zZWxlY3QuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0RGF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9pbnB1dHMvaW5wdXQtZGF0ZS9pbnB1dC1kYXRlLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dEZpbGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRCb29sQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1ib29sL2lucHV0LWJvb2wuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2lucHV0cy9pbnB1dC1jb25maWd1cmF0aW9uJztcclxuXHJcbmltcG9ydCB7IEltcGxpY2l0UHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vcHJvcGVydGllcy9pbXBsaWNpdC1wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IERlY2ltYWxQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL2RlY2ltYWwtcHJvcGVydHknO1xyXG5pbXBvcnQgeyBTdHJpbmdQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL3N0cmluZy1wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IEJvb2xQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL2Jvb2wtcHJvcGVydHknO1xyXG5pbXBvcnQgeyBEYXRlUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vcHJvcGVydGllcy9kYXRlLXByb3BlcnR5JztcclxuXHJcbmltcG9ydCB7IENvbXBhcmlzb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vY29tcGFyaXNvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RoLWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RoLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGgtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkIDogVGFibGVGaWVsZCBcclxuXHJcbiAgZ3VpZDogc3RyaW5nID0gVXRpbHMuR2VuZXJhdGVHVUlEKCk7XHJcbiAgY29uZmlndXJhdGlvbjogSW5wdXRDb25maWd1cmF0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHRoaXMuZmllbGQuY29uZmlndXJhdGlvbjtcclxuICAgIFxyXG4gICAgaWYoIXRoaXMuY29uZmlndXJhdGlvbil7XHJcbiAgICAgIGlmKFtJbnB1dFR5cGUuRGF0ZSwgSW5wdXRUeXBlLkRhdGVUaW1lLCBJbnB1dFR5cGUuVGltZV0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERhdGVDb25maWd1cmF0aW9uKCkgfSBlbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuRmlsZSAgICApeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRGaWxlQ29uZmlndXJhdGlvbigpICAgICB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLk51bWJlciAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbigpICAgfWVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5EZWNpbWFsICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uKCkgIH1lbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuQ3VycmVuY3kpeyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24oKSB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLlN0cmluZyAgKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U3RyaW5nQ29uZmlndXJhdGlvbigpICAgfWVsc2VcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5TZWxlY3QgICl7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24oKSAgIH1lbHNlXHJcbiAgICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuVGV4dEFyZWEpeyBcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRTdHJpbmdDb25maWd1cmF0aW9uKCk7IFxyXG4gICAgICB9ZWxzZSBcclxuICAgICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5Cb29sICAgICl7IFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dEJvb2xDb25maWd1cmF0aW9uKCk7IFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5jb25maWd1cmF0aW9uIGluc3RhbmNlb2YgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKXtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbihcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uYmluZFZhbHVlLFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5iaW5kTGFiZWwsXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICApO1xyXG4gICAgICAodGhpcy5jb25maWd1cmF0aW9uIGFzIElucHV0U2VsZWN0Q29uZmlndXJhdGlvbikucG9wb3ZlckNvbmZpZ3VyYXRpb24uZmxpcCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbiBpbnN0YW5jZW9mIElucHV0RGF0ZUNvbmZpZ3VyYXRpb24pe1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXREYXRlQ29uZmlndXJhdGlvbih0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkJvb2wpe1xyXG4gICAgICBpZih0aGlzLmZpZWxkLmluZGV4ID09IFwiYXRpdm9cIil7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbigndmFsdWUnLCAnbGFiZWwnLCB0cnVlLCB0cnVlLCBbXHJcbiAgICAgICAgICB7IGxhYmVsOiAnU29tZW50ZSBBdGl2b3MnICAgICwgdmFsdWU6IHRydWUgIH0sXHJcbiAgICAgICAgICB7IGxhYmVsOiAnU29tZW50ZSBOw6NvIEF0aXZvcycsIHZhbHVlOiBmYWxzZSB9LFxyXG4gICAgICAgIF0pO1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbigndmFsdWUnLCAnbGFiZWwnLCB0cnVlLCBmYWxzZSwgW1xyXG4gICAgICAgICAgeyBsYWJlbDogJ1NpbScsIHZhbHVlOiB0cnVlICB9LFxyXG4gICAgICAgICAgeyBsYWJlbDogJ07Do28nLCB2YWx1ZTogZmFsc2UgfSxcclxuICAgICAgICBdKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0ZpbHRlckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBtb2RlbDogYW55IHwgbnVsbCA9IG51bGw7XHJcbiAgbW9kZWxNaW5pbXVtOiBhbnkgfCBudWxsID0gbnVsbDtcclxuICBtb2RlbE1heGltdW06IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoJ2NoYW5nZScpIGNoYW5nZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQ2hhbmdlKCk6IHZvaWR7XHJcbiAgICBpZigoKHR5cGVvZih0aGlzLm1vZGVsKSA9PSAnc3RyaW5nJyAmJiAhdGhpcy5tb2RlbCkgfHwgXHJcbiAgICAgICAgIHRoaXMubW9kZWwgPT0gbnVsbCB8fCBcclxuICAgICAgICAgKEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbCkgJiYgdGhpcy5tb2RlbC5sZW5ndGggPT0gMCkpICYmIFxyXG4gICAgICAhdGhpcy5tb2RlbE1pbmltdW0gJiYgIXRoaXMubW9kZWxNYXhpbXVtKVxyXG4gICAge1xyXG4gICAgICB0aGlzLlNldEluYWN0aXZlKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZihbSW5wdXRUeXBlLkN1cnJlbmN5LCBJbnB1dFR5cGUuRGVjaW1hbCwgSW5wdXRUeXBlLk51bWJlcl0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSl7XHJcbiAgICAgIHZhciBDb21wYXJpc29uOiBDb21wYXJpc29uW10gPSBbXTtcclxuICAgICAgaWYodGhpcy5tb2RlbE1pbmltdW0pe1xyXG4gICAgICAgIHZhciBCaWdnZXIgID0gbmV3IERlY2ltYWxQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5HcmVhdGVyVGhhbk9yRXF1YWwodGhpcy5tb2RlbE1pbmltdW0pO1xyXG4gICAgICAgIENvbXBhcmlzb24gPSBbQmlnZ2VyXTtcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLm1vZGVsTWF4aW11bSl7XHJcbiAgICAgICAgdmFyIFNtYWxsZXIgPSBuZXcgRGVjaW1hbFByb3BlcnR5KHRoaXMuZmllbGQuaW5kZXgpLkxlc3NUaGFuT3JFcXVhbCh0aGlzLm1vZGVsTWF4aW11bSk7XHJcbiAgICAgICAgaWYoQ29tcGFyaXNvbi5sZW5ndGgpeyBDb21wYXJpc29uLnB1c2goU21hbGxlcik7IH0gXHJcbiAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgeyBDb21wYXJpc29uID0gW1NtYWxsZXJdOyB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmllbGQuZmlsdGVyID0gQ29tcGFyaXNvbjtcclxuICAgICAgdGhpcy5pc0ZpbHRlckFjdGl2ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlRW1pdHRlci5lbWl0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1lbHNlXHJcbiAgICBpZihbSW5wdXRUeXBlLlN0cmluZywgSW5wdXRUeXBlLlRleHRBcmVhXS5pbmNsdWRlcyh0aGlzLmZpZWxkLnR5cGUpKXtcclxuICAgICAgdGhpcy5maWVsZC5maWx0ZXIgICA9IFtuZXcgU3RyaW5nUHJvcGVydHkodGhpcy5maWVsZC5pbmRleCkuSXNDb250YWluZWRJbih0aGlzLm1vZGVsKV07XHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJBY3RpdmUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZUVtaXR0ZXIuZW1pdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9ZWxzZVxyXG4gICAgaWYodGhpcy5maWVsZC50eXBlID09IElucHV0VHlwZS5TZWxlY3Qpe1xyXG4gICAgICB0aGlzLmZpZWxkLmZpbHRlciAgID0gW25ldyBJbXBsaWNpdFByb3BlcnR5KHRoaXMuZmllbGQuaW5kZXgpLklzQ29udGFpbmVkSW4odGhpcy5tb2RlbCldO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfWVsc2VcclxuICAgIGlmKHRoaXMuZmllbGQudHlwZSA9PSBJbnB1dFR5cGUuQm9vbCl7XHJcbiAgICAgIHRoaXMuZmllbGQuZmlsdGVyICAgPSBbbmV3IEJvb2xQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5FcXVhbHModGhpcy5tb2RlbCldO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZihbSW5wdXRUeXBlLkRhdGUsIElucHV0VHlwZS5EYXRlVGltZV0uaW5jbHVkZXModGhpcy5maWVsZC50eXBlKSl7XHJcbiAgICAgIGlmKHRoaXMubW9kZWxNaW5pbXVtKXtcclxuICAgICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkRhdGUpeyB0aGlzLm1vZGVsTWluaW11bSA9IHRoaXMubW9kZWxNaW5pbXVtLnNwbGl0KFwiVFwiKVswXSArIFwiVDIzOjU5OjU5XCIgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMubW9kZWxNYXhpbXVtKXtcclxuICAgICAgICBpZih0aGlzLmZpZWxkLnR5cGUgPT0gSW5wdXRUeXBlLkRhdGUpeyB0aGlzLm1vZGVsTWF4aW11bSA9IHRoaXMubW9kZWxNYXhpbXVtLnNwbGl0KFwiVFwiKVswXSArIFwiVDIzOjU5OjU5XCIgfVxyXG4gICAgICB9XHJcbiAgICBcclxuICAgICAgdmFyIENvbXBhcmlzb246IENvbXBhcmlzb25bXSA9IFtdO1xyXG4gICAgICBpZih0aGlzLm1vZGVsTWluaW11bSl7XHJcbiAgICAgICAgdmFyIEJpZ2dlckRhdGUgID0gbmV3IERhdGVQcm9wZXJ0eSh0aGlzLmZpZWxkLmluZGV4KS5HcmVhdGVyVGhhbk9yRXF1YWwodGhpcy5tb2RlbE1pbmltdW0pO1xyXG4gICAgICAgIENvbXBhcmlzb24gPSBbQmlnZ2VyRGF0ZV07XHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5tb2RlbE1heGltdW0pe1xyXG4gICAgICAgIHZhciBTbWFsbGVyRGF0ZSA9IG5ldyBEYXRlUHJvcGVydHkodGhpcy5maWVsZC5pbmRleCkuTGVzc1RoYW5PckVxdWFsKHRoaXMubW9kZWxNYXhpbXVtKTtcclxuICAgICAgICBpZihDb21wYXJpc29uLmxlbmd0aCl7IENvbXBhcmlzb24ucHVzaChTbWFsbGVyRGF0ZSk7IH0gXHJcbiAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgeyBDb21wYXJpc29uID0gW1NtYWxsZXJEYXRlXSAgOyB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5maWVsZC5maWx0ZXIgPSBDb21wYXJpc29uO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRW1pdHRlci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBTZXRJbmFjdGl2ZSgpOiB2b2lke1xyXG4gICAgdGhpcy5maWVsZC5maWx0ZXIgPSBudWxsO1xyXG4gICAgdGhpcy5pc0ZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jaGFuZ2VFbWl0dGVyLmVtaXQoKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjYW5jaG9yIGNsYXNzPVwiaC01IGFzcGVjdC1zcXVhcmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIj5cclxuICA8aW9uLWljb24gbmFtZT1cImZpbHRlci1jaXJjbGVcIiAoY2xpY2spPVwicG9wb3Zlci5wcmVzZW50KCRldmVudClcIiBjbGFzcz1cInRleHQteGwgYWxpZ24tc3ViIHNpemUtZnVsbFwiIFtjb2xvcl09XCJpc0ZpbHRlckFjdGl2ZSA/ICdzZWNvbmRhcnknIDogJ21lZGl1bScgXCI+PC9pb24taWNvbj5cclxuPC9kaXY+XHJcblxyXG48c2lvbi1wb3BvdmVyIGZpbGw9XCJzb2xpZFwiICNwb3BvdmVyIFthbmNob3JdPVwiYW5jaG9yXCIgdHJpZ2dlckFjdGlvbj1cImNsaWNrXCI+XHJcbiAgPGRpdiBjbGFzcz1cInctNzIgZmxleCBmbGV4LWNvbCBnYXAtMiBwLTJcIiA+XHJcbiAgICBAaWYoIVsnU2VsZWN0JywgJ0Jvb2wnLCAnU3RyaW5nJywgJ1RleHRBcmVhJ10uaW5jbHVkZXMoZmllbGQudHlwZSkpe1xyXG4gICAgICA8aW9uLWxhYmVsIGNsYXNzPVwidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+ICBGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19IDwvaW9uLWxhYmVsPlxyXG4gICAgfVxyXG4gICAgQHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICBAY2FzZSAoJ1N0cmluZycpIHtcclxuICAgICAgICA8aW5wdXQtc3RyaW5nIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiIChibHVyKT1cIkNoYW5nZSgpXCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdOdW1iZXInKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgIDxpbnB1dC1udW1iZXIgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJWYWxvciBNw61uaW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtbnVtYmVyPlxyXG4gICAgICAgICAgPGlucHV0LW51bWJlciAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIlZhbG9yIE1heGltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LW51bWJlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ0RlY2ltYWwnKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgIDxpbnB1dC1kZWNpbWFsIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWluaW11bVwiIGxhYmVsPVwiVmFsb3IgTcOtbmltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRlY2ltYWw+XHJcbiAgICAgICAgICA8aW5wdXQtZGVjaW1hbCAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIlZhbG9yIE1heGltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRlY2ltYWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdDdXJyZW5jeScpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgPGlucHV0LWN1cnJlbmN5IChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWluaW11bVwiIGxhYmVsPVwiVmFsb3IgTcOtbmltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWN1cnJlbmN5PlxyXG4gICAgICAgICAgPGlucHV0LWN1cnJlbmN5IChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWF4aW11bVwiIGxhYmVsPVwiVmFsb3IgTWF4aW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY3VycmVuY3k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdTZWxlY3QnKSB7XHJcbiAgICAgICAgPGlucHV0LXNlbGVjdCAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc2VsZWN0PlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnVGV4dEFyZWEnKSB7XHJcbiAgICAgICAgPGlucHV0LXN0cmluZyAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdCb29sJykge1xyXG4gICAgICAgIDxpbnB1dC1zZWxlY3QgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiIHBsYWNlaG9sZGVyPVwiXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc2VsZWN0PlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnRGF0ZScpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgIDxpbnB1dC1kYXRlIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWluaW11bVwiIGxhYmVsPVwiRGF0YSBNw61uaW1hXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZT5cclxuICAgICAgICAgIDxpbnB1dC1kYXRlIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWF4aW11bVwiIGxhYmVsPVwiRGF0YSBNYXhpbWFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnRGF0ZVRpbWUnKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgIDxpbnB1dC1kYXRlLXRpbWUgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJEYXRhIE3DrW5pbWFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kYXRlLXRpbWU+XHJcbiAgICAgICAgICA8aW5wdXQtZGF0ZS10aW1lIChjaGFuZ2UpPVwiQ2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsTWF4aW11bVwiIGxhYmVsPVwiRGF0YSBNYXhpbWFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kYXRlLXRpbWU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICA8IS0tIDxpb24tY2FyZCBjbGFzcz1cIm0tMCAhYm9yZGVyLTAgYmctcHJpbWFyeS8zMCB3LTcyXCI+XHJcbiAgICA8aW9uLWNhcmQtaGVhZGVyIGNsYXNzPVwiYmctdHJhbnNwYXJlbnRcIj5cclxuICAgICAgPGlvbi1jYXJkLXRpdGxlIGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1zbVwiPlxyXG4gICAgICAgIEZpbHRybyAtIHt7ZmllbGQuaGVhZGVyfX1cclxuICAgICAgPC9pb24tY2FyZC10aXRsZT5cclxuICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxyXG4gICAgPGlvbi1jYXJkLWNvbnRlbnQgW25nQ2xhc3NdPVwieychcC0wJzogWydTZWxlY3QnLCAnQm9vbCcsICdTdHJpbmcnLCAnVGV4dEFyZWEnXS5pbmNsdWRlcyhmaWVsZC50eXBlKX1cIiBjbGFzcz1cIiFwLTIgYmctbGlnaHQgcm91bmRlZC10LTJ4bFwiPlxyXG4gICAgICBAc3dpdGNoIChmaWVsZC50eXBlKSB7XHJcbiAgICAgICAgQGNhc2UgKCdTdHJpbmcnKSB7XHJcbiAgICAgICAgICA8aW5wdXQtc3RyaW5nIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiIChibHVyKT1cIkNoYW5nZSgpXCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnTnVtYmVyJykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LW51bWJlciAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1pbmltdW1cIiBsYWJlbD1cIlZhbG9yIE3DrW5pbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgICAgIDxpbnB1dC1udW1iZXIgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJWYWxvciBNYXhpbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGNhc2UgKCdEZWNpbWFsJykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LWRlY2ltYWwgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJWYWxvciBNw61uaW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGVjaW1hbD5cclxuICAgICAgICAgICAgPGlucHV0LWRlY2ltYWwgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNYXhpbXVtXCIgbGFiZWw9XCJWYWxvciBNYXhpbW9cIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kZWNpbWFsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnQ3VycmVuY3knKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8aW5wdXQtY3VycmVuY3kgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJWYWxvciBNw61uaW1vXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY3VycmVuY3k+XHJcbiAgICAgICAgICAgIDxpbnB1dC1jdXJyZW5jeSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIlZhbG9yIE1heGltb1wiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWN1cnJlbmN5PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnU2VsZWN0Jykge1xyXG4gICAgICAgICAgPGlucHV0LXNlbGVjdCAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc2VsZWN0PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ1RleHRBcmVhJykge1xyXG4gICAgICAgICAgPGlucHV0LXN0cmluZyAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIGNsYXNzPVwidGgtc2VsZWN0XCIgbGFiZWw9XCJGaWx0cm8gLSB7e2ZpZWxkLmhlYWRlcn19XCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBjYXNlICgnQm9vbCcpIHtcclxuICAgICAgICAgIDxpbnB1dC1zZWxlY3QgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxcIiBjbGFzcz1cInRoLXNlbGVjdFwiIGxhYmVsPVwiRmlsdHJvIC0ge3tmaWVsZC5oZWFkZXJ9fVwiIHBsYWNlaG9sZGVyPVwiXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc2VsZWN0PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0RhdGUnKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LWRhdGUgKGNoYW5nZSk9XCJDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwibW9kZWxNaW5pbXVtXCIgbGFiZWw9XCJEYXRhIE3DrW5pbWFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+PC9pbnB1dC1kYXRlPlxyXG4gICAgICAgICAgICA8aW5wdXQtZGF0ZSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIkRhdGEgTWF4aW1hXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAY2FzZSAoJ0RhdGVUaW1lJykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGlucHV0LWRhdGUtdGltZSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1pbmltdW1cIiBsYWJlbD1cIkRhdGEgTcOtbmltYVwiIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGUtdGltZT5cclxuICAgICAgICAgICAgPGlucHV0LWRhdGUtdGltZSAoY2hhbmdlKT1cIkNoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJtb2RlbE1heGltdW1cIiBsYWJlbD1cIkRhdGEgTWF4aW1hXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZS10aW1lPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgPC9pb24tY2FyZD4gLS0+XHJcbjwvc2lvbi1wb3BvdmVyPlxyXG4iXX0=
@@ -19,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
19
19
  type: ViewChild,
20
20
  args: [(DefaultViewComponent)]
21
21
  }] } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy9hYnN0cmFjdC12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUVoRSx3REFBd0Q7QUFFeEQsTUFBTSxPQUFnQixZQUFZO0lBT2hDLFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUdNLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUztRQUNqQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQzVELENBQUM7K0dBZG1CLFlBQVk7bUdBQVosWUFBWSxpR0FXckIsQ0FBQSxvQkFBeUIsQ0FBQSxnREFaZixFQUFFOzs0RkFDSCxZQUFZO2tCQURqQyxTQUFTOytCQUFhLEVBQUU7OEJBWXNCLFdBQVc7c0JBQXZELFNBQVM7dUJBQUMsQ0FBQSxvQkFBeUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2dlbmVyaWNzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvd2ViL2h0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Vmlld0NvbXBvbmVudCB9IGZyb20gXCIuL2RlZmF1bHQtdmlldy5jb21wb25lbnRcIjtcclxuXHJcbi8qKiBDb21wb25lbnRlIHBhZHLDo28gcGFyYSBhIGludm9jYcOnw6NvIGRvIERlZmF1bHRWaWV3ICovXHJcbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycsIHN0eWxlczogJycgfSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VmlldzxUIGV4dGVuZHMgSHR0cFNlcnZpY2U+IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwdWJsaWMgc2VydmljZSAgICAgICA6IFQ7XHJcbiAgcHVibGljIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZTtcclxuICBwdWJsaWMgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xyXG4gIFxyXG4gIHB1YmxpYyBpZDogbnVtYmVyO1xyXG4gIFxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pZCA9IHRoaXMuZ2VuZXJpY1NlcnZpY2UuR2V0SWQodGhpcy5hY3RpdmF0ZWRSb3V0ZSwgMCk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKERlZmF1bHRWaWV3Q29tcG9uZW50PGFueT4pIHB1YmxpYyBEZWZhdWx0VmlldzogRGVmYXVsdFZpZXdDb21wb25lbnQ8YW55PjtcclxuICBwdWJsaWMgc3RhdGljIEdldFByb3ZpZGVyKGNvbXBvbmVudCk6IGFueVtde1xyXG4gICAgcmV0dXJuIFt7IHByb3ZpZGU6IEFic3RyYWN0VmlldywgdXNlRXhpc3Rpbmc6IGNvbXBvbmVudCB9XVxyXG4gIH1cclxufVxyXG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy9hYnN0cmFjdC12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUVoRSx3REFBd0Q7QUFFeEQsTUFBTSxPQUFnQixZQUFZO0lBT2hDLFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUdNLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUztRQUNqQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQzVELENBQUM7K0dBZG1CLFlBQVk7bUdBQVosWUFBWSxpR0FXckIsQ0FBQSxvQkFBeUIsQ0FBQSxnREFaZixFQUFFOzs0RkFDSCxZQUFZO2tCQURqQyxTQUFTOytCQUFhLEVBQUU7OEJBWXNCLFdBQVc7c0JBQXZELFNBQVM7dUJBQUMsQ0FBQSxvQkFBeUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERlZmF1bHRWaWV3Q29tcG9uZW50IH0gZnJvbSBcIi4vZGVmYXVsdC12aWV3LmNvbXBvbmVudFwiO1xyXG5cclxuLyoqIENvbXBvbmVudGUgcGFkcsOjbyBwYXJhIGEgaW52b2Nhw6fDo28gZG8gRGVmYXVsdFZpZXcgKi9cclxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJywgc3R5bGVzOiAnJyB9KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RWaWV3PFQgZXh0ZW5kcyBIdHRwU2VydmljZT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyBzZXJ2aWNlICAgICAgIDogVDtcclxuICBwdWJsaWMgZ2VuZXJpY1NlcnZpY2U6IEdlbmVyaWNTZXJ2aWNlO1xyXG4gIHB1YmxpYyBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGU7XHJcbiAgXHJcbiAgcHVibGljIGlkOiBudW1iZXI7XHJcbiAgXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlkID0gdGhpcy5nZW5lcmljU2VydmljZS5HZXRJZCh0aGlzLmFjdGl2YXRlZFJvdXRlLCAwKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoRGVmYXVsdFZpZXdDb21wb25lbnQ8YW55PikgcHVibGljIERlZmF1bHRWaWV3OiBEZWZhdWx0Vmlld0NvbXBvbmVudDxhbnk+O1xyXG4gIHB1YmxpYyBzdGF0aWMgR2V0UHJvdmlkZXIoY29tcG9uZW50KTogYW55W117XHJcbiAgICByZXR1cm4gW3sgcHJvdmlkZTogQWJzdHJhY3RWaWV3LCB1c2VFeGlzdGluZzogY29tcG9uZW50IH1dXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -2,13 +2,13 @@ import { FormBuilder } from '@angular/forms';
2
2
  import { Component, ElementRef, Input } from '@angular/core';
3
3
  import { ActivatedRoute } from '@angular/router';
4
4
  import { NavController } from '@ionic/angular';
5
- import { GenericService } from './../../../services/generics.service';
5
+ import { GenericService } from '../../../services/generic.service';
6
6
  import { View } from './view';
7
7
  import { InputType } from '../../inputs/input-type';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/forms";
10
10
  import * as i2 from "@angular/router";
11
- import * as i3 from "./../../../services/generics.service";
11
+ import * as i3 from "../../../services/generic.service";
12
12
  import * as i4 from "@ionic/angular";
13
13
  import * as i5 from "@angular/common";
14
14
  import * as i6 from "../../inputs/input-bool/input-bool.component";
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
54
54
  }], noBreadcrumbs: [{
55
55
  type: Input
56
56
  }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy9kZWZhdWx0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC12aWV3L2RlZmF1bHQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVwRCw0QkFBNEI7QUFNNUIsTUFBTSxPQUFPLG9CQUErRCxTQUFRLElBQU87SUFXekYsWUFDa0IsRUFBZSxFQUNmLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLGNBQThCLEVBQzlCLGFBQTRCO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBTE0sT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWQ5QywrQkFBK0I7UUFDdEIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUNqQyxzQ0FBc0M7UUFDN0IsVUFBSyxHQUFhLEtBQUssQ0FBQztRQUNqQyx3Q0FBd0M7UUFDL0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFeEMsY0FBUyxHQUFHLFNBQVMsQ0FBQztJQVFULENBQUM7K0dBakJILG9CQUFvQjttR0FBcEIsb0JBQW9CLHlKQ2xCakMseWdRQWtHYzs7NEZEaEZELG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjOytMQU9mLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5cclxuXHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlQXRpdm8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5hdGl2by5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgICAgICB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vc2VydmljZXMvZ2VuZXJpY3Muc2VydmljZSc7XHJcbmltcG9ydCB7IFZpZXcgfSBmcm9tICcuL3ZpZXcnO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9pbnB1dHMvaW5wdXQtdHlwZSc7XHJcblxyXG4vKiogQ29tcG9uZW50ZSBWaWV3IFBhZMOjbyAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RlZmF1bHQtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlZmF1bHQtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGVmYXVsdC12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0Vmlld0NvbXBvbmVudDxUIGV4dGVuZHMgSHR0cFNlcnZpY2UgfCBIdHRwU2VydmljZUF0aXZvPiBleHRlbmRzIFZpZXc8VD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvKiogUmVtb3ZlIG8gYm90w6NvIGRlIHZvbHRhciAqL1xyXG4gIEBJbnB1dCgpIG5vQmFjazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBSZW1vdmUgbyBib3TDo28gTk9WTyBkYSBsaXN0YWdlbSAqL1xyXG4gIEBJbnB1dCgpIG5vTmV3IDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBSZW1vdmUgb3MgYnJlYWRjcnVtYnMgZGEgbGlzdGFnZW0gKi9cclxuICBASW5wdXQoKSBub0JyZWFkY3J1bWJzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIElucHV0VHlwZSA9IElucHV0VHlwZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZSxcclxuICAgIHB1YmxpYyBvdmVycmlkZSBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxyXG4gICkgeyBzdXBlcigpOyB9XHJcbn0iLCI8aW9uLWNvbnRlbnQgY2xhc3M9XCJiZy10cmFuc3BhcmVudFwiPiBcclxuICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiIFtuZ0NsYXNzXT1cInsnIXAtMCB0cmFuc2x1Y2lkLXByaW1hcnktYmFja2dyb3VuZCc6IG5lc3RlZH1cIiB0YWJpbmRleD1cIi0xXCI+XHJcbiAgICBAaWYgKCFub0JyZWFkY3J1bWJzKSB7XHJcbiAgICAgIDxpb24tYnJlYWRjcnVtYnM+XHJcbiAgICAgICAgPGlvbi1icmVhZGNydW1iIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiTmF2aWdhdGVUb0xpc3QoKVwiPlxyXG4gICAgICAgICAge3tzZXJ2aWNlLnRpdGxlfX1cclxuICAgICAgICA8L2lvbi1icmVhZGNydW1iPlxyXG4gICAgICAgIDxpb24tYnJlYWRjcnVtYj4gXHJcbiAgICAgICAgICB7e2lkID09IDAgPyAnTm92byBSZWdpc3RybycgOiAnRWRpdGFyIFJlZ2lzdHJvJyB9fSBcclxuICAgICAgICA8L2lvbi1icmVhZGNydW1iPlxyXG4gICAgICA8L2lvbi1icmVhZGNydW1icz5cclxuICAgIH1cclxuICAgIFxyXG4gICAgPGlvbi1jYXJkPlxyXG4gICAgICA8aW9uLWNhcmQtaGVhZGVyIGNsYXNzPVwiIWJsb2NrXCI+XHJcbiAgICAgICAgPGhlYWRlci12aWV3ICpuZ0lmPVwic2VydmljZVwiIFtub3ZvXT1cImlkID09IDBcIiBbdXNlRGVmYXVsdFJvdXRpbmddPVwibmVzdGVkXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtwcm9ncmVzc109XCJwcm9ncmVzc1wiIChzYXZlKT1cIlNhdmUoKVwiIFtub0JhY2tdPVwibm9CYWNrXCIgW25vTmV3XT1cIm5vTmV3XCI+PC9oZWFkZXItdmlldz5cclxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwicC0wIGgtZnVsbCAhb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEyIGdhcC0yIHctZnVsbFwiICpuZ0lmPVwiZnJtXCIgW2Zvcm1Hcm91cF09XCJmcm1cIj5cclxuICBcclxuICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIGxzdFRhYmxlRmllbGRzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgQGlmIChmaWVsZC5pbmRleCAhPSAnaWQnKSB7XHJcbiAgICAgICAgICAgICAgQGlmICghZmllbGQuaGlkZGVuVmlldykge1xyXG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkJvb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtYm9vbCAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiID48L2lucHV0LWJvb2w+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5DZXApe1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1jZXAgICAgICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L2lucHV0LWNlcD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNvbG9yKXtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY29sb3IgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC9pbnB1dC1jb2xvcj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNwZkNucGopIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY3BmICAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY3BmPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuQ3BmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWNwZiAgICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWNwZj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNucGopIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY25waiAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY25waj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZGF0ZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRhdGVUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWRhdGUtdGltZSBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGUtdGltZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLlRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtdGltZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtdGltZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRlY2ltYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZGVjaW1hbCAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGVjaW1hbD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkN1cnJlbmN5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWN1cnJlbmN5ICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWN1cnJlbmN5PlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LW51bWJlciAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LW51bWJlcj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZmlsZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZmlsZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkljb24pIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtaWNvbiAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC9pbnB1dC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LXNlbGVjdCAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLlN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1zdHJpbmcgICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5UZWxlZm9uZUNlbHVsYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtc3RyaW5nICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc3RyaW5nPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuVGVsZWZvbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtdGVsZWZvbmUgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtdGVsZWZvbmU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5DZWx1bGFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWNlbHVsYXIgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWNlbHVsYXI+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5UZXh0QXJlYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC10ZXh0YXJlYSAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC10ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zcGFuLWZ1bGwgcm91bmRlZC0yeGwgcC0zIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCIgKm5nSWY9XCIhc2VydmljZSB8fCBzZXJ2aWNlLmxzdFRhYmxlRmllbGRzLmxlbmd0aCA9PSAwXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcIj5cclxuICAgICAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwidGV4dC0yeGwgdGV4dC1saWdodFwiPlxyXG4gICAgICAgICAgICAgIDxpb24taWNvbiBjbGFzcz1cImFsaWduLXN1YiB0ZXh0LTN4bFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPiBbIEludmFsaWQgQ29uZmlndXJhdGlvbiBdXHJcbiAgICAgICAgICAgIDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgPC9pb24tY2FyZD5cclxuICA8L2Rpdj5cclxuPC9pb24tY29udGVudD4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy9kZWZhdWx0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC12aWV3L2RlZmF1bHQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVwRCw0QkFBNEI7QUFNNUIsTUFBTSxPQUFPLG9CQUErRCxTQUFRLElBQU87SUFXekYsWUFDa0IsRUFBZSxFQUNmLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLGNBQThCLEVBQzlCLGFBQTRCO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBTE0sT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWQ5QywrQkFBK0I7UUFDdEIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUNqQyxzQ0FBc0M7UUFDN0IsVUFBSyxHQUFhLEtBQUssQ0FBQztRQUNqQyx3Q0FBd0M7UUFDL0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFeEMsY0FBUyxHQUFHLFNBQVMsQ0FBQztJQVFULENBQUM7K0dBakJILG9CQUFvQjttR0FBcEIsb0JBQW9CLHlKQ2xCakMseWdRQWtHYzs7NEZEaEZELG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjOytMQU9mLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5cclxuXHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlQXRpdm8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5hdGl2by5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgICAgICB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFZpZXcgfSBmcm9tICcuL3ZpZXcnO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9pbnB1dHMvaW5wdXQtdHlwZSc7XHJcblxyXG4vKiogQ29tcG9uZW50ZSBWaWV3IFBhZMOjbyAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RlZmF1bHQtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlZmF1bHQtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGVmYXVsdC12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0Vmlld0NvbXBvbmVudDxUIGV4dGVuZHMgSHR0cFNlcnZpY2UgfCBIdHRwU2VydmljZUF0aXZvPiBleHRlbmRzIFZpZXc8VD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvKiogUmVtb3ZlIG8gYm90w6NvIGRlIHZvbHRhciAqL1xyXG4gIEBJbnB1dCgpIG5vQmFjazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBSZW1vdmUgbyBib3TDo28gTk9WTyBkYSBsaXN0YWdlbSAqL1xyXG4gIEBJbnB1dCgpIG5vTmV3IDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBSZW1vdmUgb3MgYnJlYWRjcnVtYnMgZGEgbGlzdGFnZW0gKi9cclxuICBASW5wdXQoKSBub0JyZWFkY3J1bWJzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIElucHV0VHlwZSA9IElucHV0VHlwZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZSxcclxuICAgIHB1YmxpYyBvdmVycmlkZSBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxyXG4gICkgeyBzdXBlcigpOyB9XHJcbn0iLCI8aW9uLWNvbnRlbnQgY2xhc3M9XCJiZy10cmFuc3BhcmVudFwiPiBcclxuICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiIFtuZ0NsYXNzXT1cInsnIXAtMCB0cmFuc2x1Y2lkLXByaW1hcnktYmFja2dyb3VuZCc6IG5lc3RlZH1cIiB0YWJpbmRleD1cIi0xXCI+XHJcbiAgICBAaWYgKCFub0JyZWFkY3J1bWJzKSB7XHJcbiAgICAgIDxpb24tYnJlYWRjcnVtYnM+XHJcbiAgICAgICAgPGlvbi1icmVhZGNydW1iIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiTmF2aWdhdGVUb0xpc3QoKVwiPlxyXG4gICAgICAgICAge3tzZXJ2aWNlLnRpdGxlfX1cclxuICAgICAgICA8L2lvbi1icmVhZGNydW1iPlxyXG4gICAgICAgIDxpb24tYnJlYWRjcnVtYj4gXHJcbiAgICAgICAgICB7e2lkID09IDAgPyAnTm92byBSZWdpc3RybycgOiAnRWRpdGFyIFJlZ2lzdHJvJyB9fSBcclxuICAgICAgICA8L2lvbi1icmVhZGNydW1iPlxyXG4gICAgICA8L2lvbi1icmVhZGNydW1icz5cclxuICAgIH1cclxuICAgIFxyXG4gICAgPGlvbi1jYXJkPlxyXG4gICAgICA8aW9uLWNhcmQtaGVhZGVyIGNsYXNzPVwiIWJsb2NrXCI+XHJcbiAgICAgICAgPGhlYWRlci12aWV3ICpuZ0lmPVwic2VydmljZVwiIFtub3ZvXT1cImlkID09IDBcIiBbdXNlRGVmYXVsdFJvdXRpbmddPVwibmVzdGVkXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtwcm9ncmVzc109XCJwcm9ncmVzc1wiIChzYXZlKT1cIlNhdmUoKVwiIFtub0JhY2tdPVwibm9CYWNrXCIgW25vTmV3XT1cIm5vTmV3XCI+PC9oZWFkZXItdmlldz5cclxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwicC0wIGgtZnVsbCAhb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEyIGdhcC0yIHctZnVsbFwiICpuZ0lmPVwiZnJtXCIgW2Zvcm1Hcm91cF09XCJmcm1cIj5cclxuICBcclxuICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIGxzdFRhYmxlRmllbGRzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgQGlmIChmaWVsZC5pbmRleCAhPSAnaWQnKSB7XHJcbiAgICAgICAgICAgICAgQGlmICghZmllbGQuaGlkZGVuVmlldykge1xyXG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkJvb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtYm9vbCAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiID48L2lucHV0LWJvb2w+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5DZXApe1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1jZXAgICAgICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L2lucHV0LWNlcD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNvbG9yKXtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY29sb3IgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC9pbnB1dC1jb2xvcj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNwZkNucGopIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY3BmICAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY3BmPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuQ3BmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWNwZiAgICAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWNwZj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkNucGopIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtY25waiAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtY25waj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZGF0ZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGF0ZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRhdGVUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWRhdGUtdGltZSBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWRhdGUtdGltZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLlRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtdGltZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtdGltZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkRlY2ltYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZGVjaW1hbCAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZGVjaW1hbD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkN1cnJlbmN5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWN1cnJlbmN5ICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWN1cnJlbmN5PlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LW51bWJlciAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LW51bWJlcj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkZpbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtZmlsZSAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtZmlsZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLkljb24pIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtaWNvbiAgICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC9pbnB1dC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LXNlbGVjdCAgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAY2FzZSAoSW5wdXRUeXBlLlN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC1zdHJpbmcgICAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC1zdHJpbmc+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5UZWxlZm9uZUNlbHVsYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtc3RyaW5nICAgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtc3RyaW5nPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBjYXNlIChJbnB1dFR5cGUuVGVsZWZvbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQtdGVsZWZvbmUgIFtjbGFzc109XCJmaWVsZC5jbGFzc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuaW5kZXhcIiBbbGFiZWxdPVwiZmllbGQuaGVhZGVyXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtkaXNhYmxlZF09XCJmaWVsZC5kaXNhYmxlZFwiIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvaW5wdXQtdGVsZWZvbmU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5DZWx1bGFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0LWNlbHVsYXIgICBbY2xhc3NdPVwiZmllbGQuY2xhc3NcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmluZGV4XCIgW2xhYmVsXT1cImZpZWxkLmhlYWRlclwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWRcIiBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2lucHV0LWNlbHVsYXI+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgQGNhc2UgKElucHV0VHlwZS5UZXh0QXJlYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dC10ZXh0YXJlYSAgW2NsYXNzXT1cImZpZWxkLmNsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5pbmRleFwiIFtsYWJlbF09XCJmaWVsZC5oZWFkZXJcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Rpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkXCIgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIiBbY29uZmlndXJhdGlvbl09XCJmaWVsZC5jb25maWd1cmF0aW9uXCI+PC9pbnB1dC10ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zcGFuLWZ1bGwgcm91bmRlZC0yeGwgcC0zIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCIgKm5nSWY9XCIhc2VydmljZSB8fCBzZXJ2aWNlLmxzdFRhYmxlRmllbGRzLmxlbmd0aCA9PSAwXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcIj5cclxuICAgICAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwidGV4dC0yeGwgdGV4dC1saWdodFwiPlxyXG4gICAgICAgICAgICAgIDxpb24taWNvbiBjbGFzcz1cImFsaWduLXN1YiB0ZXh0LTN4bFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPiBbIEludmFsaWQgQ29uZmlndXJhdGlvbiBdXHJcbiAgICAgICAgICAgIDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgPC9pb24tY2FyZD5cclxuICA8L2Rpdj5cclxuPC9pb24tY29udGVudD4iXX0=
@@ -1,10 +1,12 @@
1
- import { Component, ElementRef, EventEmitter, HostListener, inject, Input, Output, ViewChild } from "@angular/core";
1
+ import { Component, ElementRef, EventEmitter, HostListener, inject, Input, Output, QueryList, ViewChild, ViewChildren } from "@angular/core";
2
2
  import { FormBuilder } from "@angular/forms";
3
3
  import { ActivatedRoute } from "@angular/router";
4
- import { GenericService } from "../../../services/generics.service";
4
+ import { GenericService } from "../../../services/generic.service";
5
5
  import { TableFieldFormBuilder } from "../../../classes/inputs/table-field-form-builder";
6
6
  import { firstValueFrom, lastValueFrom } from "rxjs";
7
7
  import { HeaderViewComponent } from "./header-view/header-view.component";
8
+ import { CustomInput } from "../../inputs/custom-input";
9
+ import { Timeout } from "../../../services/utils.service";
8
10
  import * as i0 from "@angular/core";
9
11
  export class View {
10
12
  constructor() {
@@ -54,7 +56,15 @@ export class View {
54
56
  else {
55
57
  this.nested = true;
56
58
  }
57
- this.Refresh();
59
+ await this.Refresh();
60
+ await this.FocusOnFirstField();
61
+ }
62
+ async FocusOnFirstField() {
63
+ try {
64
+ await Timeout(100);
65
+ this.lstCustomInputs.first.setFocus(null);
66
+ }
67
+ catch { }
58
68
  }
59
69
  async Refresh() {
60
70
  this.loading = true;
@@ -66,7 +76,7 @@ export class View {
66
76
  this.ViewDidRefreshEmitter.emit();
67
77
  }
68
78
  async Load() {
69
- if (this.id == 0) {
79
+ if (!this.id) {
70
80
  return;
71
81
  }
72
82
  const res = await firstValueFrom(this.service.Get(this.id));
@@ -131,7 +141,7 @@ export class View {
131
141
  }
132
142
  }
133
143
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: View, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
134
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: View, selector: "ng-component", inputs: { id: "id", loading: "loading", submitted: "submitted", progress: "progress", service: "service", lstTableFields: "lstTableFields", redirectPath: "redirectPath" }, outputs: { ViewDidRefreshEmitter: "ViewDidRefresh", SaveEmitter: "Save" }, host: { listeners: { "window:keydown": "onKeyPress($event)" } }, viewQueries: [{ propertyName: "Wrapper", first: true, predicate: [".wrapper"], descendants: true }, { propertyName: "HeaderViewComponentElement", first: true, predicate: HeaderViewComponent, descendants: true }], ngImport: i0, template: '', isInline: true, styles: [""] }); }
144
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: View, selector: "ng-component", inputs: { id: "id", loading: "loading", submitted: "submitted", progress: "progress", service: "service", lstTableFields: "lstTableFields", redirectPath: "redirectPath" }, outputs: { ViewDidRefreshEmitter: "ViewDidRefresh", SaveEmitter: "Save" }, host: { listeners: { "window:keydown": "onKeyPress($event)" } }, viewQueries: [{ propertyName: "Wrapper", first: true, predicate: [".wrapper"], descendants: true }, { propertyName: "HeaderViewComponentElement", first: true, predicate: HeaderViewComponent, descendants: true }, { propertyName: "lstCustomInputs", predicate: CustomInput, descendants: true }], ngImport: i0, template: '', isInline: true, styles: [""] }); }
135
145
  }
136
146
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: View, decorators: [{
137
147
  type: Component,
@@ -153,6 +163,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
153
163
  }], Wrapper: [{
154
164
  type: ViewChild,
155
165
  args: ['.wrapper']
166
+ }], lstCustomInputs: [{
167
+ type: ViewChildren,
168
+ args: [CustomInput]
156
169
  }], ViewDidRefreshEmitter: [{
157
170
  type: Output,
158
171
  args: ['ViewDidRefresh']
@@ -172,4 +185,4 @@ function instanceOfViewWillCreateForm(object) {
172
185
  function instanceOfViewDidCreateForm(object) {
173
186
  return 'OnViewDidCreateForm' in object;
174
187
  }
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy92aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3ZJLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJakQsT0FBTyxFQUFFLGNBQWMsRUFBSSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUsxRSxNQUFNLE9BQWdCLElBQUk7SUFpQnhCO1FBaEJBLGlDQUFpQztRQUN4QixPQUFFLEdBQXlCLElBQUksQ0FBQztRQUNoQyxZQUFPLEdBQWMsS0FBSyxDQUFDO1FBQzNCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFXMUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQVNsQzs7WUFFSTtRQUNLLG1CQUFjLEdBQWlCLEVBQUUsQ0FBQztRQUMzQixpQkFBWSxHQUFrQixXQUFXLENBQUE7UUErQi9CLDBCQUFxQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBbUMvRixxREFBcUQ7UUFDckMsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQTdFN0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDeEMsSUFBSSxDQUFDLEVBQUUsR0FBZSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQVVELEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUMsQ0FBQztZQUNsQyxJQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7WUFDeEQsQ0FBQztpQkFBSSxDQUFDO2dCQUNKLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFHLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxJQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBQyxDQUFDO1lBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUNwRSxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtRQUFDLENBQUM7UUFDdkUsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEIsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUE7UUFBQyxDQUFDO1FBRXJFLElBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsTUFBTSxHQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFrQixDQUFDLFdBQVcsRUFBRSxJQUFJLGFBQWEsQ0FBQztRQUMvRyxDQUFDO2FBQUksQ0FBQztZQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUdELEtBQUssQ0FBQyxPQUFPO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBRyxDQUFDO1lBQ0YsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsQ0FBQztnQkFBTyxDQUFDLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFHLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFDLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBR0QsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLENBQUMsR0FBRyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCO1FBQ3BCLElBQUcsQ0FBQztZQUNGLE1BQU0sSUFBSSxHQUFjLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFjLENBQUM7WUFDcEYsSUFBRyxDQUFDLElBQUksRUFBQyxDQUFDO2dCQUFDLE9BQU87WUFBQyxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxHQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXRHLElBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQztnQkFBQyxPQUFPO1lBQUMsQ0FBQztZQUVsQixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2RyxDQUFDO1FBQUEsTUFBSyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFJRCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFckQsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBRyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQztZQUFDLE1BQU0sRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUMzQixJQUFJLEtBQUssR0FBYSxFQUFFLENBQUE7UUFDeEIsS0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDLENBQUM7WUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUMvRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVNLGlCQUFpQixLQUFxQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBR2hFLGNBQWMsS0FBVSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBTXBGLFVBQVUsQ0FBQyxNQUFxQjtRQUM5QixJQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBQyxDQUFDO1lBQy9ILE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBRyxNQUFNLENBQUMsR0FBRyxJQUFJLFFBQVEsRUFBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQUMsRUFBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLFFBQVEsRUFBQyxDQUFDO1lBQzFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN0QyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNULENBQUM7SUFDSCxDQUFDOytHQTVJbUIsSUFBSTttR0FBSixJQUFJLDhmQXNIYixtQkFBbUIsZ0RBdkhULEVBQUU7OzRGQUNILElBQUk7a0JBRHpCLFNBQVM7K0JBQWEsRUFBRTt3REFHZCxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBbUJHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFHaUIsT0FBTztzQkFBN0IsU0FBUzt1QkFBQyxVQUFVO2dCQTRCSyxxQkFBcUI7c0JBQTlDLE1BQU07dUJBQUMsZ0JBQWdCO2dCQW9DUixXQUFXO3NCQUExQixNQUFNO3VCQUFDLE1BQU07Z0JBdUJrQiwwQkFBMEI7c0JBQXpELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUc5QixVQUFVO3NCQURULFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUMsQ0FBQyxRQUFRLENBQUM7O0FBMEIzQyxTQUFTLDRCQUE0QixDQUFDLE1BQVc7SUFDL0MsT0FBTyxzQkFBc0IsSUFBSSxNQUFNLENBQUM7QUFDMUMsQ0FBQztBQUlELFNBQVMsMkJBQTJCLENBQUMsTUFBVztJQUM5QyxPQUFPLHFCQUFxQixJQUFJLE1BQU0sQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgdmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlICAgICAgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvd2ViL2h0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZUF0aXZvIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLmF0aXZvLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgICB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9nZW5lcmljcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRhYmxlRmllbGRGb3JtQnVpbGRlciB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL2lucHV0cy90YWJsZS1maWVsZC1mb3JtLWJ1aWxkZXJcIjtcclxuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gXCJAaW9uaWMvYW5ndWxhclwiO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgbGFzdFZhbHVlRnJvbSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEhlYWRlclZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi9oZWFkZXItdmlldy9oZWFkZXItdmlldy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgVGFibGVGaWVsZCB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL2lucHV0cy90YWJsZS1maWVsZFwiO1xyXG5pbXBvcnQgeyBSb3V0ZURhdGEgfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9yb3V0ZXMvcm91dGUtZGF0YVwiO1xyXG5cclxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJywgc3R5bGVzOiAnJyB9KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVmlldzxUIGV4dGVuZHMgSHR0cFNlcnZpY2UgfCBIdHRwU2VydmljZUF0aXZvPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLyoqIElkIGRvIGRhZG8gYSBzZXIgY2FycmVnYWRvICovXHJcbiAgQElucHV0KCkgaWQgICAgICAgOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBsb2FkaW5nICA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogUHJvZ3Jlc3NvIGRlIHNhbHZhbWVudG8gKi9cclxuICBASW5wdXQoKSBwcm9ncmVzcyA6IG51bWJlcjtcclxuICAvKiogU2VydmljZSBhIHNlciB1dGxpemFkbyBuYSB2aWV3ICovXHJcbiAgQElucHV0KCkgc2VydmljZSAgOiBUO1xyXG4gIFxyXG4gIHByb3RlY3RlZCBnZW5lcmljU2VydmljZTogR2VuZXJpY1NlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcclxuICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcclxuICBwcm90ZWN0ZWQgZmI6IEZvcm1CdWlsZGVyO1xyXG5cclxuICBwcm90ZWN0ZWQgbmVzdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCl7XHJcbiAgICB0aGlzLmdlbmVyaWNTZXJ2aWNlID0gaW5qZWN0KEdlbmVyaWNTZXJ2aWNlKVxyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSlcclxuICAgIHRoaXMuZWxlbWVudFJlZiAgICAgPSBpbmplY3QoRWxlbWVudFJlZilcclxuICAgIHRoaXMuZmIgICAgICAgICAgICAgPSBpbmplY3QoRm9ybUJ1aWxkZXIpXHJcbiAgfVxyXG5cclxuICAvKiogTGlzdGEgZGUgVGFibGVGaWVsZHMgYSBzZXJlbSBpbnZvY2Fkb3MgZGUgYWNvcmRvIGNvbSBzdWEgY29uZmlndXJhw6fDo28uXHJcbiAgICogQXV0b21hdGljYW1lbnRlIHByZWVuY2hpZG8gY29tIHNlcnZpY2UubHN0VGFibGVGaWVsZHNWaWV3IG91IHNlcnZpY2UubHN0VGFibGVGaWVsZHMgcXVhbmRvIG7Do28gaW5mb3JtYWRvXHJcbiAgICAqL1xyXG4gIEBJbnB1dCgpIGxzdFRhYmxlRmllbGRzOiBUYWJsZUZpZWxkW10gPSBbXTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVkaXJlY3RQYXRoOiBzdHJpbmcgfCBudWxsID0gXCIvdmlldy86aWRcIlxyXG4gIFxyXG4gIFxyXG4gIEBWaWV3Q2hpbGQoJy53cmFwcGVyJykgV3JhcHBlcjogSFRNTEVsZW1lbnQ7XHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBpZih0aGlzLmxzdFRhYmxlRmllbGRzLmxlbmd0aCA9PSAwKXtcclxuICAgICAgaWYodGhpcy5zZXJ2aWNlLmxzdFRhYmxlRmllbGRzVmlldy5sZW5ndGggIT0gMCl7XHJcbiAgICAgICAgdGhpcy5sc3RUYWJsZUZpZWxkcyA9IHRoaXMuc2VydmljZS5sc3RUYWJsZUZpZWxkc1ZpZXc7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMubHN0VGFibGVGaWVsZHMgPSB0aGlzLnNlcnZpY2UubHN0VGFibGVGaWVsZHM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmlkID09IG51bGwpe1xyXG4gICAgICB0aGlzLmlkID0gdGhpcy5nZW5lcmljU2VydmljZS5HZXRJZCh0aGlzLmFjdGl2YXRlZFJvdXRlLCAwKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYoIXRoaXMuc2VydmljZSl7IGNvbnNvbGUud2FybihcIlsgVmlldyBzZXJ2aWNlIGlzIG5vdCB2YWxpZCEgXVwiKTsgfVxyXG4gICAgaWYgKGluc3RhbmNlT2ZWaWV3V2lsbENyZWF0ZUZvcm0odGhpcykpIHsgdGhpcy5PblZpZXdXaWxsQ3JlYXRlRm9ybSgpIH1cclxuICAgIGF3YWl0IHRoaXMuQ3JlYXRlRm9ybSgpO1xyXG4gICAgaWYgKGluc3RhbmNlT2ZWaWV3RGlkQ3JlYXRlRm9ybSh0aGlzKSkgeyB0aGlzLk9uVmlld0RpZENyZWF0ZUZvcm0oKSB9XHJcbiAgXHJcbiAgICBpZih0aGlzLmVsZW1lbnRSZWYgJiYgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCl7XHJcbiAgICAgIHRoaXMubmVzdGVkID0gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQudGFnTmFtZSBhcyBzdHJpbmcpLnRvVXBwZXJDYXNlKCkgIT0gXCJJT04tQ09OVEVOVFwiO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubmVzdGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLlJlZnJlc2goKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoJ1ZpZXdEaWRSZWZyZXNoJykgVmlld0RpZFJlZnJlc2hFbWl0dGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgYXN5bmMgUmVmcmVzaCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0cnl7XHJcbiAgICAgIGF3YWl0IHRoaXMuTG9hZCgpO1xyXG4gICAgfWZpbmFsbHl7IH1cclxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5WaWV3RGlkUmVmcmVzaEVtaXR0ZXIuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgTG9hZCgpOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgaWYodGhpcy5pZCA9PSAwKXsgcmV0dXJuOyB9XHJcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuR2V0KHRoaXMuaWQpKTtcclxuICAgIHRoaXMuZnJtLnBhdGNoVmFsdWUocmVzKTtcclxuICB9XHJcblxyXG4gIGZybTogRm9ybUdyb3VwO1xyXG4gIGFzeW5jIENyZWF0ZUZvcm0oKSB7XHJcbiAgICB0aGlzLmZybSA9IFRhYmxlRmllbGRGb3JtQnVpbGRlci5jcmVhdGUodGhpcy5sc3RUYWJsZUZpZWxkcywgdGhpcy5mYik7XHJcbiAgICBhd2FpdCB0aGlzLkxvYWRJZENvbXBhcmlzb24oKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIExvYWRJZENvbXBhcmlzb24oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnN0IGRhdGE6IFJvdXRlRGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYWN0aXZhdGVkUm91dGUuZGF0YSkgYXMgUm91dGVEYXRhO1xyXG4gICAgICBpZighZGF0YSl7IHJldHVybjsgfVxyXG4gICAgICBjb25zdCBpZCAgID0gdGhpcy5nZW5lcmljU2VydmljZS5HZXRJZCh0aGlzLmFjdGl2YXRlZFJvdXRlLCBkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5yb3V0ZURlcHRoKTtcclxuICAgICAgXHJcbiAgICAgIGlmKCFpZCl7IHJldHVybjsgfVxyXG5cclxuICAgICAgdGhpcy5mcm0uY29udHJvbHNbZGF0YS5pZFByZWxvYWRlckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lXS5zZXRWYWx1ZShpZCk7XHJcbiAgICAgIHRoaXMubHN0VGFibGVGaWVsZHMuZmluZChwID0+IHAuaW5kZXggPT0gZGF0YS5pZFByZWxvYWRlckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lKS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9Y2F0Y2h7IH1cclxuICB9XHJcblxyXG4gIC8qKiBFbWl0ZSBvIGlkIGRhIGVudGlkYWRlIHNhbHZhIGFwb3MgbyBzYWx2YW1lbnRvICovXHJcbiAgQE91dHB1dCgnU2F2ZScpIFNhdmVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIGFzeW5jIFNhdmUoKSB7XHJcbiAgICBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5TYXZlKHRoaXMuZnJtLCB0aGlzKSk7XHJcbiAgICB0aGlzLlNhdmVFbWl0dGVyLmVtaXQodGhpcy5pZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IEJhY2tSb3V0ZSgpe1xyXG4gICAgY29uc3QgZnVsbFJvdXRlID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnNwbGl0KCcvJylcclxuXHJcbiAgICBjb25zdCBsaSA9IGZ1bGxSb3V0ZVtmdWxsUm91dGUubGVuZ3RoIC0gMV07XHJcbiAgICB2YXIgb2Zmc2V0ID0gMTtcclxuICAgIGlmKE51bWJlcihsaSkpeyBvZmZzZXQrKzsgfVxyXG4gICAgbGV0IHJvdXRlOiBzdHJpbmdbXSA9IFtdXHJcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgZnVsbFJvdXRlLmxlbmd0aCAtIG9mZnNldDsgaSsrKXsgcm91dGUucHVzaChmdWxsUm91dGVbaV0pOyB9XHJcbiAgICByZXR1cm4gcm91dGUuam9pbignLycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEN1cnJlbnRSb3V0aW5nKCk6IEFjdGl2YXRlZFJvdXRlIHsgcmV0dXJuIHRoaXMuYWN0aXZhdGVkUm91dGU7IH1cclxuXHJcbiAgcHJvdGVjdGVkIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXI7XHJcbiAgcHJvdGVjdGVkIE5hdmlnYXRlVG9MaXN0KCk6IHZvaWR7IHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZUJhY2sodGhpcy5CYWNrUm91dGUpOyB9XHJcblxyXG5cclxuICBAVmlld0NoaWxkKEhlYWRlclZpZXdDb21wb25lbnQpIEhlYWRlclZpZXdDb21wb25lbnRFbGVtZW50OiBIZWFkZXJWaWV3Q29tcG9uZW50O1xyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsWyckZXZlbnQnXSlcclxuICBvbktleVByZXNzKCRldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYoISh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmKCRldmVudC5rZXkgPT0gJ0VzY2FwZScpe1xyXG4gICAgICB0aGlzLkhlYWRlclZpZXdDb21wb25lbnRFbGVtZW50LkJhY2soJGV2ZW50KTtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmKCgkZXZlbnQuY3RybEtleSB8fCAkZXZlbnQubWV0YUtleSkgJiYgKCRldmVudC5rZXkgPT0gJ0VudGVyJykpe1xyXG4gICAgICB0aGlzLlNhdmUoKTtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmKCRldmVudC5hbHRLZXkgJiYgJGV2ZW50LmtleSA9PSAnSW5zZXJ0Jyl7XHJcbiAgICAgIHRoaXMuSGVhZGVyVmlld0NvbXBvbmVudEVsZW1lbnQuTmV3KCk7XHJcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdXaWxsQ3JlYXRlRm9ybXtcclxuICBPblZpZXdXaWxsQ3JlYXRlRm9ybSgpOiB2b2lkIHwgYW55O1xyXG59IFxyXG5mdW5jdGlvbiBpbnN0YW5jZU9mVmlld1dpbGxDcmVhdGVGb3JtKG9iamVjdDogYW55KTogb2JqZWN0IGlzIFZpZXdXaWxsQ3JlYXRlRm9ybSB7XHJcbiAgcmV0dXJuICdPblZpZXdXaWxsQ3JlYXRlRm9ybScgaW4gb2JqZWN0O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgVmlld0RpZENyZWF0ZUZvcm0ge1xyXG4gIE9uVmlld0RpZENyZWF0ZUZvcm0oKTogdm9pZCB8IGFueTtcclxufSBcclxuZnVuY3Rpb24gaW5zdGFuY2VPZlZpZXdEaWRDcmVhdGVGb3JtKG9iamVjdDogYW55KTogb2JqZWN0IGlzIFZpZXdEaWRDcmVhdGVGb3JtIHtcclxuICByZXR1cm4gJ09uVmlld0RpZENyZWF0ZUZvcm0nIGluIG9iamVjdDtcclxufVxyXG5cclxuIl19
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtdmlldy92aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBYSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEssT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUlqRCxPQUFPLEVBQUUsY0FBYyxFQUFJLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFekYsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHMUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHMUQsTUFBTSxPQUFnQixJQUFJO0lBaUJ4QjtRQWhCQSxpQ0FBaUM7UUFDeEIsT0FBRSxHQUF5QixJQUFJLENBQUM7UUFDaEMsWUFBTyxHQUFjLEtBQUssQ0FBQztRQUMzQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBVzFCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFTbEM7O1lBRUk7UUFDSyxtQkFBYyxHQUFpQixFQUFFLENBQUM7UUFDM0IsaUJBQVksR0FBa0IsV0FBVyxDQUFBO1FBeUMvQiwwQkFBcUIsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQW1DL0YscURB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RyxjQUFjO3NCQUF0QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBR2lCLE9BQU87c0JBQTdCLFNBQVM7dUJBQUMsVUFBVTtnQkE4Qk0sZUFBZTtzQkFBekMsWUFBWTt1QkFBQyxXQUFXO2dCQVFDLHFCQUFxQjtzQkFBOUMsTUFBTTt1QkFBQyxnQkFBZ0I7Z0JBb0NSLFdBQVc7c0JBQTFCLE1BQU07dUJBQUMsTUFBTTtnQkF1QmtCLDBCQUEwQjtzQkFBekQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBRzlCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBQyxDQUFDLFFBQVEsQ0FBQzs7QUEwQjNDLFNBQVMsNEJBQTRCLENBQUMsTUFBVztJQUMvQyxPQUFPLHNCQUFzQixJQUFJLE1BQU0sQ0FBQztBQUMxQyxDQUFDO0FBSUQsU0FBUywyQkFBMkIsQ0FBQyxNQUFXO0lBQzlDLE9BQU8scUJBQXFCLElBQUksTUFBTSxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIHZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlICAgICAgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvd2ViL2h0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZUF0aXZvIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLmF0aXZvLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgICB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9nZW5lcmljLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVGFibGVGaWVsZEZvcm1CdWlsZGVyIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvaW5wdXRzL3RhYmxlLWZpZWxkLWZvcm0tYnVpbGRlclwiO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSBcIkBpb25pYy9hbmd1bGFyXCI7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBsYXN0VmFsdWVGcm9tIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgSGVhZGVyVmlld0NvbXBvbmVudCB9IGZyb20gXCIuL2hlYWRlci12aWV3L2hlYWRlci12aWV3LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUYWJsZUZpZWxkIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvaW5wdXRzL3RhYmxlLWZpZWxkXCI7XHJcbmltcG9ydCB7IFJvdXRlRGF0YSB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL3JvdXRlcy9yb3V0ZS1kYXRhXCI7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSBcIi4uLy4uL2lucHV0cy9jdXN0b20taW5wdXRcIjtcclxuaW1wb3J0IHsgVGltZW91dCB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnLCBzdHlsZXM6ICcnIH0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWaWV3PFQgZXh0ZW5kcyBIdHRwU2VydmljZSB8IEh0dHBTZXJ2aWNlQXRpdm8+IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvKiogSWQgZG8gZGFkbyBhIHNlciBjYXJyZWdhZG8gKi9cclxuICBASW5wdXQoKSBpZCAgICAgICA6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmcgIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBQcm9ncmVzc28gZGUgc2FsdmFtZW50byAqL1xyXG4gIEBJbnB1dCgpIHByb2dyZXNzIDogbnVtYmVyO1xyXG4gIC8qKiBTZXJ2aWNlIGEgc2VyIHV0bGl6YWRvIG5hIHZpZXcgKi9cclxuICBASW5wdXQoKSBzZXJ2aWNlICA6IFQ7XHJcbiAgXHJcbiAgcHJvdGVjdGVkIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZTtcclxuICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xyXG4gIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xyXG4gIHByb3RlY3RlZCBmYjogRm9ybUJ1aWxkZXI7XHJcblxyXG4gIHByb3RlY3RlZCBuZXN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKXtcclxuICAgIHRoaXMuZ2VuZXJpY1NlcnZpY2UgPSBpbmplY3QoR2VuZXJpY1NlcnZpY2UpXHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKVxyXG4gICAgdGhpcy5lbGVtZW50UmVmICAgICA9IGluamVjdChFbGVtZW50UmVmKVxyXG4gICAgdGhpcy5mYiAgICAgICAgICAgICA9IGluamVjdChGb3JtQnVpbGRlcilcclxuICB9XHJcblxyXG4gIC8qKiBMaXN0YSBkZSBUYWJsZUZpZWxkcyBhIHNlcmVtIGludm9jYWRvcyBkZSBhY29yZG8gY29tIHN1YSBjb25maWd1cmHDp8Ojby5cclxuICAgKiBBdXRvbWF0aWNhbWVudGUgcHJlZW5jaGlkbyBjb20gc2VydmljZS5sc3RUYWJsZUZpZWxkc1ZpZXcgb3Ugc2VydmljZS5sc3RUYWJsZUZpZWxkcyBxdWFuZG8gbsOjbyBpbmZvcm1hZG9cclxuICAgICovXHJcbiAgQElucHV0KCkgbHN0VGFibGVGaWVsZHM6IFRhYmxlRmllbGRbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZWRpcmVjdFBhdGg6IHN0cmluZyB8IG51bGwgPSBcIi92aWV3LzppZFwiXHJcbiAgXHJcbiAgXHJcbiAgQFZpZXdDaGlsZCgnLndyYXBwZXInKSBXcmFwcGVyOiBIVE1MRWxlbWVudDtcclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIGlmKHRoaXMubHN0VGFibGVGaWVsZHMubGVuZ3RoID09IDApe1xyXG4gICAgICBpZih0aGlzLnNlcnZpY2UubHN0VGFibGVGaWVsZHNWaWV3Lmxlbmd0aCAhPSAwKXtcclxuICAgICAgICB0aGlzLmxzdFRhYmxlRmllbGRzID0gdGhpcy5zZXJ2aWNlLmxzdFRhYmxlRmllbGRzVmlldztcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5sc3RUYWJsZUZpZWxkcyA9IHRoaXMuc2VydmljZS5sc3RUYWJsZUZpZWxkcztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuaWQgPT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuaWQgPSB0aGlzLmdlbmVyaWNTZXJ2aWNlLkdldElkKHRoaXMuYWN0aXZhdGVkUm91dGUsIDApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZighdGhpcy5zZXJ2aWNlKXsgY29uc29sZS53YXJuKFwiWyBWaWV3IHNlcnZpY2UgaXMgbm90IHZhbGlkISBdXCIpOyB9XHJcbiAgICBpZiAoaW5zdGFuY2VPZlZpZXdXaWxsQ3JlYXRlRm9ybSh0aGlzKSkgeyB0aGlzLk9uVmlld1dpbGxDcmVhdGVGb3JtKCkgfVxyXG4gICAgYXdhaXQgdGhpcy5DcmVhdGVGb3JtKCk7XHJcbiAgICBpZiAoaW5zdGFuY2VPZlZpZXdEaWRDcmVhdGVGb3JtKHRoaXMpKSB7IHRoaXMuT25WaWV3RGlkQ3JlYXRlRm9ybSgpIH1cclxuICBcclxuICAgIGlmKHRoaXMuZWxlbWVudFJlZiAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KXtcclxuICAgICAgdGhpcy5uZXN0ZWQgPSAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC50YWdOYW1lIGFzIHN0cmluZykudG9VcHBlckNhc2UoKSAhPSBcIklPTi1DT05URU5UXCI7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5uZXN0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHRoaXMuUmVmcmVzaCgpO1xyXG4gICAgYXdhaXQgdGhpcy5Gb2N1c09uRmlyc3RGaWVsZCgpO1xyXG5cclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oQ3VzdG9tSW5wdXQpIGxzdEN1c3RvbUlucHV0czogUXVlcnlMaXN0PEN1c3RvbUlucHV0PGFueT4+O1xyXG4gIGFzeW5jIEZvY3VzT25GaXJzdEZpZWxkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdHJ5e1xyXG4gICAgICBhd2FpdCBUaW1lb3V0KDEwMCk7XHJcbiAgICAgIHRoaXMubHN0Q3VzdG9tSW5wdXRzLmZpcnN0LnNldEZvY3VzKG51bGwpO1xyXG4gICAgfWNhdGNoe31cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoJ1ZpZXdEaWRSZWZyZXNoJykgVmlld0RpZFJlZnJlc2hFbWl0dGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgYXN5bmMgUmVmcmVzaCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0cnl7XHJcbiAgICAgIGF3YWl0IHRoaXMuTG9hZCgpO1xyXG4gICAgfWZpbmFsbHl7IH1cclxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5WaWV3RGlkUmVmcmVzaEVtaXR0ZXIuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgTG9hZCgpOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgaWYoIXRoaXMuaWQpeyByZXR1cm47IH1cclxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5HZXQodGhpcy5pZCkpO1xyXG4gICAgdGhpcy5mcm0ucGF0Y2hWYWx1ZShyZXMpO1xyXG4gIH1cclxuXHJcbiAgZnJtOiBGb3JtR3JvdXA7XHJcbiAgYXN5bmMgQ3JlYXRlRm9ybSgpIHtcclxuICAgIHRoaXMuZnJtID0gVGFibGVGaWVsZEZvcm1CdWlsZGVyLmNyZWF0ZSh0aGlzLmxzdFRhYmxlRmllbGRzLCB0aGlzLmZiKTtcclxuICAgIGF3YWl0IHRoaXMuTG9hZElkQ29tcGFyaXNvbigpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgTG9hZElkQ29tcGFyaXNvbigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRyeXtcclxuICAgICAgY29uc3QgZGF0YTogUm91dGVEYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hY3RpdmF0ZWRSb3V0ZS5kYXRhKSBhcyBSb3V0ZURhdGE7XHJcbiAgICAgIGlmKCFkYXRhKXsgcmV0dXJuOyB9XHJcbiAgICAgIGNvbnN0IGlkICAgPSB0aGlzLmdlbmVyaWNTZXJ2aWNlLkdldElkKHRoaXMuYWN0aXZhdGVkUm91dGUsIGRhdGEuaWRQcmVsb2FkZXJDb25maWd1cmF0aW9uLnJvdXRlRGVwdGgpO1xyXG4gICAgICBcclxuICAgICAgaWYoIWlkKXsgcmV0dXJuOyB9XHJcblxyXG4gICAgICB0aGlzLmZybS5jb250cm9sc1tkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWVdLnNldFZhbHVlKGlkKTtcclxuICAgICAgdGhpcy5sc3RUYWJsZUZpZWxkcy5maW5kKHAgPT4gcC5pbmRleCA9PSBkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUpLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1jYXRjaHsgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEVtaXRlIG8gaWQgZGEgZW50aWRhZGUgc2FsdmEgYXBvcyBvIHNhbHZhbWVudG8gKi9cclxuICBAT3V0cHV0KCdTYXZlJykgU2F2ZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgYXN5bmMgU2F2ZSgpIHtcclxuICAgIGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLlNhdmUodGhpcy5mcm0sIHRoaXMpKTtcclxuICAgIHRoaXMuU2F2ZUVtaXR0ZXIuZW1pdCh0aGlzLmlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgQmFja1JvdXRlKCl7XHJcbiAgICBjb25zdCBmdWxsUm91dGUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoJy8nKVxyXG5cclxuICAgIGNvbnN0IGxpID0gZnVsbFJvdXRlW2Z1bGxSb3V0ZS5sZW5ndGggLSAxXTtcclxuICAgIHZhciBvZmZzZXQgPSAxO1xyXG4gICAgaWYoTnVtYmVyKGxpKSl7IG9mZnNldCsrOyB9XHJcbiAgICBsZXQgcm91dGU6IHN0cmluZ1tdID0gW11cclxuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBmdWxsUm91dGUubGVuZ3RoIC0gb2Zmc2V0OyBpKyspeyByb3V0ZS5wdXNoKGZ1bGxSb3V0ZVtpXSk7IH1cclxuICAgIHJldHVybiByb3V0ZS5qb2luKCcvJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0Q3VycmVudFJvdXRpbmcoKTogQWN0aXZhdGVkUm91dGUgeyByZXR1cm4gdGhpcy5hY3RpdmF0ZWRSb3V0ZTsgfVxyXG5cclxuICBwcm90ZWN0ZWQgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcjtcclxuICBwcm90ZWN0ZWQgTmF2aWdhdGVUb0xpc3QoKTogdm9pZHsgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlQmFjayh0aGlzLkJhY2tSb3V0ZSk7IH1cclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoSGVhZGVyVmlld0NvbXBvbmVudCkgSGVhZGVyVmlld0NvbXBvbmVudEVsZW1lbnQ6IEhlYWRlclZpZXdDb21wb25lbnQ7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duJyxbJyRldmVudCddKVxyXG4gIG9uS2V5UHJlc3MoJGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZighKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYoJGV2ZW50LmtleSA9PSAnRXNjYXBlJyl7XHJcbiAgICAgIHRoaXMuSGVhZGVyVmlld0NvbXBvbmVudEVsZW1lbnQuQmFjaygkZXZlbnQpO1xyXG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYoKCRldmVudC5jdHJsS2V5IHx8ICRldmVudC5tZXRhS2V5KSAmJiAoJGV2ZW50LmtleSA9PSAnRW50ZXInKSl7XHJcbiAgICAgIHRoaXMuU2F2ZSgpO1xyXG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYoJGV2ZW50LmFsdEtleSAmJiAkZXZlbnQua2V5ID09ICdJbnNlcnQnKXtcclxuICAgICAgdGhpcy5IZWFkZXJWaWV3Q29tcG9uZW50RWxlbWVudC5OZXcoKTtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmlld1dpbGxDcmVhdGVGb3Jte1xyXG4gIE9uVmlld1dpbGxDcmVhdGVGb3JtKCk6IHZvaWQgfCBhbnk7XHJcbn0gXHJcbmZ1bmN0aW9uIGluc3RhbmNlT2ZWaWV3V2lsbENyZWF0ZUZvcm0ob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgVmlld1dpbGxDcmVhdGVGb3JtIHtcclxuICByZXR1cm4gJ09uVmlld1dpbGxDcmVhdGVGb3JtJyBpbiBvYmplY3Q7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBWaWV3RGlkQ3JlYXRlRm9ybSB7XHJcbiAgT25WaWV3RGlkQ3JlYXRlRm9ybSgpOiB2b2lkIHwgYW55O1xyXG59IFxyXG5mdW5jdGlvbiBpbnN0YW5jZU9mVmlld0RpZENyZWF0ZUZvcm0ob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgVmlld0RpZENyZWF0ZUZvcm0ge1xyXG4gIHJldHVybiAnT25WaWV3RGlkQ3JlYXRlRm9ybScgaW4gb2JqZWN0O1xyXG59XHJcblxyXG4iXX0=
@@ -8,12 +8,12 @@ import { FormsModule } from '@angular/forms';
8
8
  import { RouteProviderService } from '../../services/route/route.provider.service';
9
9
  import { EnvironmentService } from '../../services/environment.service';
10
10
  import { LoadingComponent } from '../loading/loading.component';
11
- import { GenericService } from '../../services/generics.service';
11
+ import { GenericService } from '../../services/generic.service';
12
12
  import { InputsModule } from '../inputs/inputs.module';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "@angular/router";
15
15
  import * as i2 from "../../services/environment.service";
16
- import * as i3 from "../../services/generics.service";
16
+ import * as i3 from "../../services/generic.service";
17
17
  import * as i4 from "../../services/route/route.provider.service";
18
18
  import * as i5 from "@angular/common";
19
19
  import * as i6 from "@ionic/angular";
@@ -70,4 +70,4 @@ export class DefaultPageImage {
70
70
  this.classes = classes;
71
71
  }
72
72
  }
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQtcGFnZS9kZWZhdWx0LnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC1wYWdlL2RlZmF1bHQucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQUd2RCxxRkFBcUY7QUFnQnJGLE1BQU0sT0FBTyxXQUFXO0lBUXRCLFlBQ1UsS0FBcUIsRUFDckIsV0FBK0IsRUFDL0IsY0FBOEIsRUFDOUIsb0JBQTBDO1FBSDFDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQVZwRCxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxzQkFBaUIsR0FBUTtZQUN2QixTQUFTLEVBQU8scUJBQXFCO1lBQ3JDLGNBQWMsRUFBRSwwQkFBMEI7U0FDM0MsQ0FBQztRQVVGLFVBQUssR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7UUFFN0QsWUFBTyxHQUFXLEVBQUUsQ0FBQTtRQUNwQixrQkFBYSxHQUFvQyxJQUFJLENBQUM7SUFMdEQsQ0FBQztJQU1ELEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBNkIsQ0FBQztRQUN2RixJQUFJLENBQUMsT0FBTyxHQUFTLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBVTtRQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQzsrR0E3QlUsV0FBVzttR0FBWCxXQUFXLHVFQy9CeEIsaTJGQW9EYyxzR0RoQ1YsWUFBWSwySkFDWixXQUFXLDhCQUNYLFdBQVcsa2hFQUNYLFlBQVksK0JBQ1osa0JBQWtCLG9PQUNsQixnQkFBZ0Isd0ZBQ2hCLGVBQWU7OzRGQUtOLFdBQVc7a0JBZnZCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGFBQWEsV0FDZDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixlQUFlO3FCQUNoQjs7QUFvQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUNTLFFBQWlDLElBQUksRUFDckMsaUJBQTBCLEtBQUs7UUFEL0IsVUFBSyxHQUFMLEtBQUssQ0FBZ0M7UUFDckMsbUJBQWMsR0FBZCxjQUFjLENBQWlCO0lBRXhDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFDUyxNQUFxQixJQUFJLEVBQ3pCLFVBQWtCLEVBQUU7UUFEcEIsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtJQUMzQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTGlua1dpdGhIcmVmIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IFJvdXRlUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGUvcm91dGUucHJvdmlkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGluZy9sb2FkaW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ2VuZXJpY3Muc2VydmljZSc7XHJcbmltcG9ydCB7IElucHV0c01vZHVsZSB9IGZyb20gJy4uL2lucHV0cy9pbnB1dHMubW9kdWxlJztcclxuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4uL2RyYXdlci9tZW51JztcclxuXHJcbi8qKiBQYWdpbmEgRGVmYXVsdCAtIG1vc3RyYSBvcyBib3TDtWVzIGRlIHJvdGFzIGhvcml6b250YWxtZW50ZSAtIGNvbXBvbmVudGUgcGFkcsOjbyAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNlbGVjdG9yOiAnYXBwLWRlZmF1bHQnLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgSW9uaWNNb2R1bGUsXHJcbiAgICBJbnB1dHNNb2R1bGUsXHJcbiAgICBSb3V0ZXJMaW5rV2l0aEhyZWYsXHJcbiAgICBMb2FkaW5nQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlZmF1bHQucGFnZS5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kZWZhdWx0LnBhZ2Uuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdFBhZ2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIFxyXG4gIHVzZVRyYW5zbGF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgVHJhbnNsYXRpb25Nb2R1bGU6IGFueSA9IHtcclxuICAgIFBlcm1pc3NhbyAgICAgOiAnRW50aXRpZXMuUGVybWlzc2FvLicsXHJcbiAgICBQZXJtaXNzYW9HcnVwbzogJ0VudGl0aWVzLlBlcm1pc3Nhb0dydXBvLidcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBjb3JlU2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnZW5lcmljU2VydmljZTogR2VuZXJpY1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlUHJvdmlkZXJTZXJ2aWNlOiBSb3V0ZVByb3ZpZGVyU2VydmljZSBcclxuICApIHsgXHJcbiAgfVxyXG4gIFxyXG4gIHRpdGxlOiBzdHJpbmcgPSB0aGlzLmNvcmVTZXJ2aWNlLmVudmlyb25tZW50LmFwcGxpY2F0aW9uTmFtZTtcclxuICBsb2FkaW5nOiBib29sZWFuO1xyXG4gIGxzdE1lbnU6IE1lbnVbXSA9IFtdIFxyXG4gIGNvbmZpZ3VyYXRpb246IERlZmF1bHRQYWdlQ29uZmlndXJhdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucm91dGUuZGF0YSkgYXMgRGVmYXVsdFBhZ2VDb25maWd1cmF0aW9uO1xyXG4gICAgdGhpcy5sc3RNZW51ICAgICAgID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yb3V0ZVByb3ZpZGVyU2VydmljZS5HZXREYXRhKCkpO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBTZXRUaXRsZShpdGVtOiBNZW51KXtcclxuICAgIHRoaXMuZ2VuZXJpY1NlcnZpY2UuU2V0VGl0bGUoaXRlbS50aXRsZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdFBhZ2VDb25maWd1cmF0aW9ue1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGltYWdlOiBEZWZhdWx0UGFnZUltYWdlIHwgbnVsbCA9IG51bGwsXHJcbiAgICBwdWJsaWMgdXNlVHJhbnNsYXRpb246IGJvb2xlYW4gPSBmYWxzZVxyXG4gICl7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdFBhZ2VJbWFnZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc3JjOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcclxuICAgIHB1YmxpYyBjbGFzc2VzOiBzdHJpbmcgPSAnJ1xyXG4gICl7fVxyXG59XHJcbiIsIjxpb24tY29udGVudCBbZnVsbHNjcmVlbl09XCJ0cnVlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgIDxpb24tYnJlYWRjcnVtYnM+XHJcbiAgICAgIDxpb24tYnJlYWRjcnVtYiBbcm91dGVyTGlua109XCJbbnVsbF1cIj5cclxuICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImhvbWVcIj48L2lvbi1pY29uPiBJbmljaW9cclxuICAgICAgPC9pb24tYnJlYWRjcnVtYj5cclxuICAgIDwvaW9uLWJyZWFkY3J1bWJzPlxyXG4gIFxyXG4gICAgPGlvbi1jYXJkPlxyXG4gICAgICA8aW9uLWNhcmQtY29udGVudCBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyICFwLThcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHNocmluay0wIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICBAaWYoY29uZmlndXJhdGlvbj8uaW1hZ2Upe1xyXG4gICAgICAgICAgICA8aW9uLWltZyBbY2xhc3NdPVwiY29uZmlndXJhdGlvbi5pbWFnZS5jbGFzc2VzXCIgW3NyY109XCJjb25maWd1cmF0aW9uLmltYWdlLnNyY1wiIChpb24tZXJyb3IpPVwiY29uZmlndXJhdGlvbi5pbWFnZSA9IG51bGxcIj48L2lvbi1pbWc+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxpb24tdGV4dCBjbGFzcz1cInRleHQtOHhsIGZvbnQtcG9wcGlucyB3LWZ1bGxcIj4ge3t0aXRsZX19IDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIiFvdmVyZmxvdy15LWF1dG8gdy1mdWxsIHBvcnRyYWl0Omdyb3cgcmVsYXRpdmVcIj5cclxuICAgICAgICAgIDxsb2FkaW5nIFt0eXBlXT1cIjNcIiBbbG9hZGluZ109XCJsb2FkaW5nXCI+PC9sb2FkaW5nPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLXN0YXJ0IGp1c3RpZnktc3RhcnQgbXQtNCBwb3J0cmFpdDohZ3JpZCBwb3J0cmFpdDohZ3JpZC1jb2xzLTFcIj4gXHJcbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbHN0TWVudTsgdHJhY2sgaXRlbTsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICBAaWYoaXRlbS50eXBlID09IFwiTWVudVwiKXtcclxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJvdXRsaW5lXCIgY2xhc3M9XCJteC0xIG10LTIgZmxleC1ncm93IHNocmluay0wXCIgW3JvdXRlckxpbmtdPVwiW2l0ZW0ucm91dGVdXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBbbmFtZV09XCJpdGVtLmljb25cIj48L2lvbi1pY29uPiBcclxuICAgICAgICAgICAgICAgICAge3t1c2VUcmFuc2xhdGlvbiA/IChUcmFuc2xhdGlvbk1vZHVsZS5QZXJtaXNzYW8gKyBpdGVtLmlkIHwgdHJhbnNsYXRlKSA6IGl0ZW0udGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBAaWYoaXRlbS50eXBlID09IFwiTWVudUdyb3VwXCIpe1xyXG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBjbGFzcz1cIm14LTEgbXQtMiBmbGV4LWdyb3cgc2hyaW5rLTBcIiAoY2xpY2spPVwicG9wb3Zlci5wcmVzZW50KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+IFxyXG4gICAgICAgICAgICAgICAgICB7e3VzZVRyYW5zbGF0aW9uID8gKFRyYW5zbGF0aW9uTW9kdWxlLlBlcm1pc3Nhb0dydXBvICsgaXRlbS5pZCB8IHRyYW5zbGF0ZSkgOiBpdGVtLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxpb24tcG9wb3ZlciAjcG9wb3ZlciBjbGFzcz1cIm92ZXJmbG93LXktYXV0b1wiIFtkaXNtaXNzT25TZWxlY3RdPVwidHJ1ZVwiIHRyaWdnZXJBY3Rpb249XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1saXN0IGNsYXNzPVwibm8tb3V0ZXItYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWl0ZW0gY2xhc3M9XCJiZy10cmFuc3BhcmVudFwiIChjbGljayk9XCJTZXRUaXRsZShtZW51KVwiICpuZ0Zvcj1cImxldCBtZW51IG9mIGl0ZW0ubHN0TWVudVwiIFtyb3V0ZXJMaW5rXT1cIlsnLi8nICsgbWVudS5yb3V0ZV1cIiBsaW5lcz1cIm5vbmVcIiBkZXRhaWw9XCJmYWxzZVwiIHJvdXRlckxpbmtBY3RpdmU9XCJzZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwibWVudS5pY29uXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7dXNlVHJhbnNsYXRpb24gPyAoVHJhbnNsYXRpb25Nb2R1bGUuUGVybWlzc2FvICsgbWVudS5pZCB8IHRyYW5zbGF0ZSkgOiBtZW51LnRpdGxlfX0gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tbGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgPC9pb24tY2FyZD5cclxuICA8L2Rpdj5cclxuPC9pb24tY29udGVudD4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQtcGFnZS9kZWZhdWx0LnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC1wYWdlL2RlZmF1bHQucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQUd2RCxxRkFBcUY7QUFnQnJGLE1BQU0sT0FBTyxXQUFXO0lBUXRCLFlBQ1UsS0FBcUIsRUFDckIsV0FBK0IsRUFDL0IsY0FBOEIsRUFDOUIsb0JBQTBDO1FBSDFDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQVZwRCxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxzQkFBaUIsR0FBUTtZQUN2QixTQUFTLEVBQU8scUJBQXFCO1lBQ3JDLGNBQWMsRUFBRSwwQkFBMEI7U0FDM0MsQ0FBQztRQVVGLFVBQUssR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7UUFFN0QsWUFBTyxHQUFXLEVBQUUsQ0FBQTtRQUNwQixrQkFBYSxHQUFvQyxJQUFJLENBQUM7SUFMdEQsQ0FBQztJQU1ELEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBNkIsQ0FBQztRQUN2RixJQUFJLENBQUMsT0FBTyxHQUFTLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBVTtRQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQzsrR0E3QlUsV0FBVzttR0FBWCxXQUFXLHVFQy9CeEIsaTJGQW9EYyxzR0RoQ1YsWUFBWSwySkFDWixXQUFXLDhCQUNYLFdBQVcsa2hFQUNYLFlBQVksK0JBQ1osa0JBQWtCLG9PQUNsQixnQkFBZ0Isd0ZBQ2hCLGVBQWU7OzRGQUtOLFdBQVc7a0JBZnZCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGFBQWEsV0FDZDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixlQUFlO3FCQUNoQjs7QUFvQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUNTLFFBQWlDLElBQUksRUFDckMsaUJBQTBCLEtBQUs7UUFEL0IsVUFBSyxHQUFMLEtBQUssQ0FBZ0M7UUFDckMsbUJBQWMsR0FBZCxjQUFjLENBQWlCO0lBRXhDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFDUyxNQUFxQixJQUFJLEVBQ3pCLFVBQWtCLEVBQUU7UUFEcEIsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtJQUMzQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTGlua1dpdGhIcmVmIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IFJvdXRlUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGUvcm91dGUucHJvdmlkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGluZy9sb2FkaW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ2VuZXJpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5wdXRzTW9kdWxlIH0gZnJvbSAnLi4vaW5wdXRzL2lucHV0cy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnLi4vZHJhd2VyL21lbnUnO1xyXG5cclxuLyoqIFBhZ2luYSBEZWZhdWx0IC0gbW9zdHJhIG9zIGJvdMO1ZXMgZGUgcm90YXMgaG9yaXpvbnRhbG1lbnRlIC0gY29tcG9uZW50ZSBwYWRyw6NvICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdhcHAtZGVmYXVsdCcsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBJb25pY01vZHVsZSxcclxuICAgIElucHV0c01vZHVsZSxcclxuICAgIFJvdXRlckxpbmtXaXRoSHJlZixcclxuICAgIExvYWRpbmdDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGVmYXVsdC5wYWdlLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RlZmF1bHQucGFnZS5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0UGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgXHJcbiAgdXNlVHJhbnNsYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBUcmFuc2xhdGlvbk1vZHVsZTogYW55ID0ge1xyXG4gICAgUGVybWlzc2FvICAgICA6ICdFbnRpdGllcy5QZXJtaXNzYW8uJyxcclxuICAgIFBlcm1pc3Nhb0dydXBvOiAnRW50aXRpZXMuUGVybWlzc2FvR3J1cG8uJ1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGNvcmVTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVQcm92aWRlclNlcnZpY2U6IFJvdXRlUHJvdmlkZXJTZXJ2aWNlIFxyXG4gICkgeyBcclxuICB9XHJcbiAgXHJcbiAgdGl0bGU6IHN0cmluZyA9IHRoaXMuY29yZVNlcnZpY2UuZW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgbHN0TWVudTogTWVudVtdID0gW10gXHJcbiAgY29uZmlndXJhdGlvbjogRGVmYXVsdFBhZ2VDb25maWd1cmF0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yb3V0ZS5kYXRhKSBhcyBEZWZhdWx0UGFnZUNvbmZpZ3VyYXRpb247XHJcbiAgICB0aGlzLmxzdE1lbnUgICAgICAgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJvdXRlUHJvdmlkZXJTZXJ2aWNlLkdldERhdGEoKSk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIFNldFRpdGxlKGl0ZW06IE1lbnUpe1xyXG4gICAgdGhpcy5nZW5lcmljU2VydmljZS5TZXRUaXRsZShpdGVtLnRpdGxlKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0UGFnZUNvbmZpZ3VyYXRpb257XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaW1hZ2U6IERlZmF1bHRQYWdlSW1hZ2UgfCBudWxsID0gbnVsbCxcclxuICAgIHB1YmxpYyB1c2VUcmFuc2xhdGlvbjogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKXtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0UGFnZUltYWdlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzcmM6IHN0cmluZyB8IG51bGwgPSBudWxsLFxyXG4gICAgcHVibGljIGNsYXNzZXM6IHN0cmluZyA9ICcnXHJcbiAgKXt9XHJcbn1cclxuIiwiPGlvbi1jb250ZW50IFtmdWxsc2NyZWVuXT1cInRydWVcIj5cclxuICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgPGlvbi1icmVhZGNydW1icz5cclxuICAgICAgPGlvbi1icmVhZGNydW1iIFtyb3V0ZXJMaW5rXT1cIltudWxsXVwiPlxyXG4gICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwiaG9tZVwiPjwvaW9uLWljb24+IEluaWNpb1xyXG4gICAgICA8L2lvbi1icmVhZGNydW1iPlxyXG4gICAgPC9pb24tYnJlYWRjcnVtYnM+XHJcbiAgXHJcbiAgICA8aW9uLWNhcmQ+XHJcbiAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgIXAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgc2hyaW5rLTAgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgIEBpZihjb25maWd1cmF0aW9uPy5pbWFnZSl7XHJcbiAgICAgICAgICAgIDxpb24taW1nIFtjbGFzc109XCJjb25maWd1cmF0aW9uLmltYWdlLmNsYXNzZXNcIiBbc3JjXT1cImNvbmZpZ3VyYXRpb24uaW1hZ2Uuc3JjXCIgKGlvbi1lcnJvcik9XCJjb25maWd1cmF0aW9uLmltYWdlID0gbnVsbFwiPjwvaW9uLWltZz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwidGV4dC04eGwgZm9udC1wb3BwaW5zIHctZnVsbFwiPiB7e3RpdGxlfX0gPC9pb24tdGV4dD5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiIW92ZXJmbG93LXktYXV0byB3LWZ1bGwgcG9ydHJhaXQ6Z3JvdyByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgPGxvYWRpbmcgW3R5cGVdPVwiM1wiIFtsb2FkaW5nXT1cImxvYWRpbmdcIj48L2xvYWRpbmc+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtc3RhcnQganVzdGlmeS1zdGFydCBtdC00IHBvcnRyYWl0OiFncmlkIHBvcnRyYWl0OiFncmlkLWNvbHMtMVwiPiBcclxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBsc3RNZW51OyB0cmFjayBpdGVtOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgICAgIEBpZihpdGVtLnR5cGUgPT0gXCJNZW51XCIpe1xyXG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBjbGFzcz1cIm14LTEgbXQtMiBmbGV4LWdyb3cgc2hyaW5rLTBcIiBbcm91dGVyTGlua109XCJbaXRlbS5yb3V0ZV1cIj5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+IFxyXG4gICAgICAgICAgICAgICAgICB7e3VzZVRyYW5zbGF0aW9uID8gKFRyYW5zbGF0aW9uTW9kdWxlLlBlcm1pc3NhbyArIGl0ZW0uaWQgfCB0cmFuc2xhdGUpIDogaXRlbS50aXRsZX19XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBpZihpdGVtLnR5cGUgPT0gXCJNZW51R3JvdXBcIil7XHJcbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIGNsYXNzPVwibXgtMSBtdC0yIGZsZXgtZ3JvdyBzaHJpbmstMFwiIChjbGljayk9XCJwb3BvdmVyLnByZXNlbnQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgW25hbWVdPVwiaXRlbS5pY29uXCI+PC9pb24taWNvbj4gXHJcbiAgICAgICAgICAgICAgICAgIHt7dXNlVHJhbnNsYXRpb24gPyAoVHJhbnNsYXRpb25Nb2R1bGUuUGVybWlzc2FvR3J1cG8gKyBpdGVtLmlkIHwgdHJhbnNsYXRlKSA6IGl0ZW0udGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1wb3BvdmVyICNwb3BvdmVyIGNsYXNzPVwib3ZlcmZsb3cteS1hdXRvXCIgW2Rpc21pc3NPblNlbGVjdF09XCJ0cnVlXCIgdHJpZ2dlckFjdGlvbj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWxpc3QgY2xhc3M9XCJuby1vdXRlci1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taXRlbSBjbGFzcz1cImJnLXRyYW5zcGFyZW50XCIgKGNsaWNrKT1cIlNldFRpdGxlKG1lbnUpXCIgKm5nRm9yPVwibGV0IG1lbnUgb2YgaXRlbS5sc3RNZW51XCIgW3JvdXRlckxpbmtdPVwiWycuLycgKyBtZW51LnJvdXRlXVwiIGxpbmVzPVwibm9uZVwiIGRldGFpbD1cImZhbHNlXCIgcm91dGVyTGlua0FjdGl2ZT1cInNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJtZW51Lmljb25cIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbD4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3t1c2VUcmFuc2xhdGlvbiA/IChUcmFuc2xhdGlvbk1vZHVsZS5QZXJtaXNzYW8gKyBtZW51LmlkIHwgdHJhbnNsYXRlKSA6IG1lbnUudGl0bGV9fSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24taXRlbT5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1saXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcG9wb3Zlcj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L2lvbi1jYXJkPlxyXG4gIDwvZGl2PlxyXG48L2lvbi1jb250ZW50PiJdfQ==