@solidev/data 0.4.0 → 0.4.2

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 (76) hide show
  1. package/esm2022/lib/auth/auth-interceptor.service.mjs +4 -4
  2. package/esm2022/lib/auth/auth.service.mjs +1 -1
  3. package/esm2022/lib/auth/jwt.mjs +1 -1
  4. package/esm2022/lib/data/data-backend.mjs +45 -15
  5. package/esm2022/lib/data/data-collection.mjs +1 -1
  6. package/esm2022/lib/data/data-collection.mock.mjs +1 -1
  7. package/esm2022/lib/data/data-model.mjs +1 -1
  8. package/esm2022/lib/data/data-query.mjs +1 -1
  9. package/esm2022/lib/data/fields/base.mjs +1 -1
  10. package/esm2022/lib/data/fields/boolean.mjs +1 -1
  11. package/esm2022/lib/data/fields/datetime.mjs +1 -1
  12. package/esm2022/lib/data/fields/numbers.mjs +1 -1
  13. package/esm2022/lib/data/fields/relations.mjs +1 -1
  14. package/esm2022/lib/data/fields/stringfields.mjs +1 -1
  15. package/esm2022/lib/dispedit/choice.pipe.mjs +7 -7
  16. package/esm2022/lib/dispedit/dispedit/dispedit.component.mjs +4 -4
  17. package/esm2022/lib/dispedit/factor.pipe.mjs +7 -7
  18. package/esm2022/lib/dispedit/factorc.pipe.mjs +7 -7
  19. package/esm2022/lib/dispedit/fkselect/fkselect.component.mjs +4 -4
  20. package/esm2022/lib/dispedit/flags/flags.component.mjs +4 -4
  21. package/esm2022/lib/dispedit/m2mselect/m2mselect.component.mjs +4 -4
  22. package/esm2022/lib/dispedit/richedit/richedit.component.mjs +4 -4
  23. package/esm2022/lib/dispedit/sdelete/sdelete.component.mjs +4 -4
  24. package/esm2022/lib/messages/message-zone/message-zone.component.mjs +3 -3
  25. package/esm2022/lib/messages/message.service.mjs +4 -4
  26. package/esm2022/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +3 -3
  27. package/esm2022/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +4 -4
  28. package/esm2022/lib/modellist/model-list-fields/model-list-fields.mjs +1 -1
  29. package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +4 -4
  30. package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +1 -1
  31. package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +3 -3
  32. package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +4 -4
  33. package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.mjs +1 -1
  34. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +4 -4
  35. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +1 -1
  36. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +3 -3
  37. package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +1 -1
  38. package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +4 -4
  39. package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +1 -1
  40. package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.mjs +1 -1
  41. package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +4 -4
  42. package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +1 -1
  43. package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +4 -4
  44. package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +1 -1
  45. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +4 -4
  46. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +1 -1
  47. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +4 -4
  48. package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +1 -1
  49. package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +4 -4
  50. package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +1 -1
  51. package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +4 -4
  52. package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +1 -1
  53. package/esm2022/lib/modellist/model-list-filters/model-list-filter.mjs +1 -1
  54. package/esm2022/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +3 -3
  55. package/esm2022/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +4 -4
  56. package/esm2022/lib/modellist/model-list-filters/model-list-filters.mjs +1 -1
  57. package/esm2022/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +4 -4
  58. package/esm2022/lib/modellist/model-list-paginator/model-list-paginator.mjs +1 -1
  59. package/esm2022/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +4 -4
  60. package/esm2022/lib/modellist/model-list-sorter/model-list-sorter.mjs +1 -1
  61. package/esm2022/lib/modellist/model-list.service.mjs +4 -4
  62. package/esm2022/lib/routing/breadcrumb/breadcrumb.component.mjs +4 -4
  63. package/esm2022/lib/routing/routing.mjs +1 -1
  64. package/esm2022/lib/updates/update/update.component.mjs +3 -3
  65. package/esm2022/lib/updates/update.service.mjs +4 -4
  66. package/esm2022/lib/uploader/ng-file-drop.directive.mjs +4 -4
  67. package/esm2022/lib/uploader/ng-file-select.directive.mjs +4 -4
  68. package/esm2022/lib/uploader/ngx-uploader.class.mjs +1 -1
  69. package/esm2022/lib/uploader/ngx-uploader.module.mjs +4 -4
  70. package/esm2022/lib/utils/slugify.mjs +1 -1
  71. package/esm2022/lib/utils/tab-memory.service.mjs +4 -4
  72. package/esm2022/lib/utils/template.mjs +1 -1
  73. package/fesm2022/solidev-data.mjs +167 -137
  74. package/fesm2022/solidev-data.mjs.map +1 -1
  75. package/lib/data/data-backend.d.ts +10 -0
  76. package/package.json +1 -1
@@ -421,10 +421,10 @@ export class DispeditComponent {
421
421
  }
422
422
  }
423
423
  _setDisplayClasses() { }
424
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DispeditComponent, deps: [{ token: DATA_DISPLAY_CONFIG, optional: true }, { token: i1.DataMessageService }], target: i0.ɵɵFactoryTarget.Component }); }
425
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: DispeditComponent, isStandalone: true, selector: "data-dispedit", inputs: { model: "model", field: "field", form: "form", edit: "edit", editable: "editable", mode: "mode", choices: "choices", inputClasses: "inputClasses", editor: "editor", viewer: "viewer", default: "default", placeholder: "placeholder", help: "help", hideLabel: "hideLabel", queryset: "queryset", collection: "collection", display: "display", filter: "filter" }, outputs: { changed: "changed" }, usesOnChanges: true, ngImport: i0, template: "\n<ng-template #titleTpl>\n <ng-content></ng-content>\n</ng-template>\n<ng-template #dispTpl>\n <ng-container [ngSwitch]=\"realDisplay\"><span class=\"editable disp-text\" *ngSwitchCase=\"'text'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-choice\" *ngSwitchCase=\"'choice'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-decimal\" *ngSwitchCase=\"'decimal'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-boolean\" *ngSwitchCase=\"'boolean'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-fkdetails\" *ngSwitchCase=\"'fkdetails'\" (click)=\"enableEditMode()\">\n <div class=\"fkitem\">{{txtValue}}</div></span><span class=\"editable disp-m2mdetails\" *ngSwitchCase=\"'m2mdetails'\" (click)=\"enableEditMode()\">\n <div class=\"m2mitem\" *ngFor=\"let v of txtValues\">{{v}}</div></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'datetime'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'short'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'date'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'shortDate'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span></ng-container>\n</ng-template>\n<ng-template #editTpl let-form=\"form\">\n <ng-container [ngSwitch]=\"realEditor\">\n <ng-container *ngSwitchCase=\"'input.text'\">\n <input type=\"text\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.email'\">\n <input type=\"email\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['email']\">Format d'email invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.password'\">\n <input type=\"password\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.datetime'\">\n <input type=\"datetime-local\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.date'\">\n <input type=\"date\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.number'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.decimal'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.checkbox'\">\n <input class=\"form-check-input\" type=\"checkbox\" [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'textarea'\">\n <textarea [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" [ngClass]=\"inputClasses\" (keyup.control.enter)=\"update()\" [placeholder]=\"realPlaceholder\"></textarea>\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'fkselect'\">\n <data-fkselect [collection]=\"collection\" [filter]=\"filter\" (selected)=\"selectedRefItem($event)\" [placeholder]=\"placeholder\" (cancelled)=\"unsetEdit()\" (cleared)=\"selectedRefItem(null)\"></data-fkselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'m2mselect'\">\n <data-m2mselect [collection]=\"collection\" [filter]=\"filter\" (changed)=\"update()\" [formControl]=\"form.get(field)\" (detailsChanged)=\"onM2MValuesChanges($event)\" [model]=\"model\" [field]=\"field\" [placeholder]=\"placeholder\"></data-m2mselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'select'\">\n <select [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\" [ngClass]=\"inputClasses\">\n <option *ngFor=\"let c of realChoices\" [ngValue]=\"c.value!==undefined ? c.value : c\">{{c.desc ? c.desc : c}}</option>\n </select>\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Disp/edit toggler-->\n<ng-template #dispeditTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"fg\">\n <form [formGroup]=\"fg\" (submit)=\"update()\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: fg}\"></ng-container>\n </form>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- DispEdit noform-->\n<ng-template #dispeditFormTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"form\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: form}\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Dd display-->\n<ng-container *ngIf=\"mode==='dd'\">\n <dt [class.required]=\"required\" *ngIf=\"!hideLabel\"><span class=\"editable\" (click)=\"toggleEdit()\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container></span><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined &amp;&amp; edit\"><i class=\"bi bi-trash ms-2\"></i></span></dt>\n <dd [class.mb-0]=\"hideLabel\">\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n </dd>\n</ng-container>\n<!-- Inline display-->\n<ng-container *ngIf=\"mode==='inline'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined &amp;&amp; edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n</ng-container>\n<!-- Form display-->\n<ng-container *ngIf=\"mode==='form'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined &amp;&amp; edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditFormTpl\"></ng-container>\n</ng-container>", styles: [".editable{cursor:pointer}form.inline{display:inline-block}.required{font-weight:700}.required:after{content:\" (*)\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FkselectComponent, selector: "data-fkselect", inputs: ["model", "field", "edit", "value", "queryset", "collection", "update", "filter", "mode", "display", "search", "label", "placeholder", "inputClasses"], outputs: ["selected", "cancelled", "cleared"] }, { kind: "component", type: M2mselectComponent, selector: "data-m2mselect", inputs: ["model", "field", "edit", "values", "queryset", "collection", "filter", "mode", "display", "search", "label", "placeholder", "emptyLabel", "inputClasses"], outputs: ["added", "removed", "cancelled", "cleared", "detailsChanged", "changed"] }] }); }
424
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: DispeditComponent, deps: [{ token: DATA_DISPLAY_CONFIG, optional: true }, { token: i1.DataMessageService }], target: i0.ɵɵFactoryTarget.Component }); }
425
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: DispeditComponent, isStandalone: true, selector: "data-dispedit", inputs: { model: "model", field: "field", form: "form", edit: "edit", editable: "editable", mode: "mode", choices: "choices", inputClasses: "inputClasses", editor: "editor", viewer: "viewer", default: "default", placeholder: "placeholder", help: "help", hideLabel: "hideLabel", queryset: "queryset", collection: "collection", display: "display", filter: "filter" }, outputs: { changed: "changed" }, usesOnChanges: true, ngImport: i0, template: "\n<ng-template #titleTpl>\n <ng-content></ng-content>\n</ng-template>\n<ng-template #dispTpl>\n <ng-container [ngSwitch]=\"realDisplay\"><span class=\"editable disp-text\" *ngSwitchCase=\"'text'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-choice\" *ngSwitchCase=\"'choice'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-decimal\" *ngSwitchCase=\"'decimal'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-boolean\" *ngSwitchCase=\"'boolean'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-fkdetails\" *ngSwitchCase=\"'fkdetails'\" (click)=\"enableEditMode()\">\n <div class=\"fkitem\">{{txtValue}}</div></span><span class=\"editable disp-m2mdetails\" *ngSwitchCase=\"'m2mdetails'\" (click)=\"enableEditMode()\">\n <div class=\"m2mitem\" *ngFor=\"let v of txtValues\">{{v}}</div></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'datetime'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'short'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'date'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'shortDate'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span></ng-container>\n</ng-template>\n<ng-template #editTpl let-form=\"form\">\n <ng-container [ngSwitch]=\"realEditor\">\n <ng-container *ngSwitchCase=\"'input.text'\">\n <input type=\"text\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.email'\">\n <input type=\"email\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['email']\">Format d'email invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.password'\">\n <input type=\"password\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.datetime'\">\n <input type=\"datetime-local\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.date'\">\n <input type=\"date\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.number'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.decimal'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.checkbox'\">\n <input class=\"form-check-input\" type=\"checkbox\" [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'textarea'\">\n <textarea [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" [ngClass]=\"inputClasses\" (keyup.control.enter)=\"update()\" [placeholder]=\"realPlaceholder\"></textarea>\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form &amp;&amp; !form.controls[field].pristine &amp;&amp; form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'fkselect'\">\n <data-fkselect [collection]=\"collection\" [filter]=\"filter\" (selected)=\"selectedRefItem($event)\" [placeholder]=\"placeholder\" (cancelled)=\"unsetEdit()\" (cleared)=\"selectedRefItem(null)\"></data-fkselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'m2mselect'\">\n <data-m2mselect [collection]=\"collection\" [filter]=\"filter\" (changed)=\"update()\" [formControl]=\"form.get(field)\" (detailsChanged)=\"onM2MValuesChanges($event)\" [model]=\"model\" [field]=\"field\" [placeholder]=\"placeholder\"></data-m2mselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'select'\">\n <select [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\" [ngClass]=\"inputClasses\">\n <option *ngFor=\"let c of realChoices\" [ngValue]=\"c.value!==undefined ? c.value : c\">{{c.desc ? c.desc : c}}</option>\n </select>\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Disp/edit toggler-->\n<ng-template #dispeditTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"fg\">\n <form [formGroup]=\"fg\" (submit)=\"update()\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: fg}\"></ng-container>\n </form>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- DispEdit noform-->\n<ng-template #dispeditFormTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"form\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: form}\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Dd display-->\n<ng-container *ngIf=\"mode==='dd'\">\n <dt [class.required]=\"required\" *ngIf=\"!hideLabel\"><span class=\"editable\" (click)=\"toggleEdit()\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container></span><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined &amp;&amp; edit\"><i class=\"bi bi-trash ms-2\"></i></span></dt>\n <dd [class.mb-0]=\"hideLabel\">\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n </dd>\n</ng-container>\n<!-- Inline display-->\n<ng-container *ngIf=\"mode==='inline'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined &amp;&amp; edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n</ng-container>\n<!-- Form display-->\n<ng-container *ngIf=\"mode==='form'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined &amp;&amp; edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditFormTpl\"></ng-container>\n</ng-container>", styles: [".editable{cursor:pointer}form.inline{display:inline-block}.required{font-weight:700}.required:after{content:\" (*)\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FkselectComponent, selector: "data-fkselect", inputs: ["model", "field", "edit", "value", "queryset", "collection", "update", "filter", "mode", "display", "search", "label", "placeholder", "inputClasses"], outputs: ["selected", "cancelled", "cleared"] }, { kind: "component", type: M2mselectComponent, selector: "data-m2mselect", inputs: ["model", "field", "edit", "values", "queryset", "collection", "filter", "mode", "display", "search", "label", "placeholder", "emptyLabel", "inputClasses"], outputs: ["added", "removed", "cancelled", "cleared", "detailsChanged", "changed"] }] }); }
426
426
  }
427
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DispeditComponent, decorators: [{
427
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: DispeditComponent, decorators: [{
428
428
  type: Component,
429
429
  args: [{ selector: 'data-dispedit', standalone: true, imports: [
430
430
  CommonModule,
@@ -477,4 +477,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
477
477
  }], changed: [{
478
478
  type: Output
479
479
  }] } });
480
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2Rpc3BlZGl0L2Rpc3BlZGl0L2Rpc3BlZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kaXNwZWRpdC9kaXNwZWRpdC9kaXNwZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLG1CQUFtQixFQUVuQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUXRDLE9BQU8sRUFBRSxpQkFBaUIsRUFBVSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNFLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsbUJBQW1CLEdBRXBCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFlNUMsTUFBTSxPQUFPLGlCQUFpQjtJQTJHNUI7Ozs7O09BS0c7SUFDSCxZQUNrRCxLQUF3QixFQUNoRSxLQUF5QjtRQURlLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ2hFLFVBQUssR0FBTCxLQUFLLENBQW9CO1FBMUduQzs7O1dBR0c7UUFDYSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQzdCOzs7V0FHRztRQUNhLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFRaEM7Ozs7YUFJ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O3dCQUNaLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLFVBQVU7cUJBQ1g7OzBCQW9IRSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1CQUFtQjswRUE5R3pCLEtBQUs7c0JBQXBCLEtBQUs7Z0JBRVUsS0FBSztzQkFBcEIsS0FBSztnQkFFVSxJQUFJO3NCQUFuQixLQUFLO2dCQUtVLElBQUk7c0JBQW5CLEtBQUs7Z0JBS1UsUUFBUTtzQkFBdkIsS0FBSztnQkFhVSxJQUFJO3NCQUFuQixLQUFLO2dCQUtVLE9BQU87c0JBQXRCLEtBQUs7Z0JBRVUsWUFBWTtzQkFBM0IsS0FBSztnQkFFVSxNQUFNO3NCQUFyQixLQUFLO2dCQUVVLE1BQU07c0JBQXJCLEtBQUs7Z0JBRVUsT0FBTztzQkFBdEIsS0FBSztnQkFLVSxXQUFXO3NCQUExQixLQUFLO2dCQUtVLElBQUk7c0JBQW5CLEtBQUs7Z0JBSVUsU0FBUztzQkFBeEIsS0FBSztnQkFLVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBRVUsT0FBTztzQkFBdEIsS0FBSztnQkFFVSxNQUFNO3NCQUFyQixLQUFLO2dCQUdXLE9BQU87c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi4vLi4vZGF0YS9kYXRhLW1vZGVsJztcbmltcG9ydCB7IEJhc2VGaWVsZE1hbmFnZXIgfSBmcm9tICcuLi8uLi9kYXRhL2ZpZWxkcy9iYXNlJztcbmltcG9ydCB7XG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Hcm91cCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERJU1BFRElUX0RJU1BMQVlfVFlQRVMsXG4gIERJU1BFRElUX0VESVRPUl9UWVBFUyxcbiAgSURpc3BFZGl0Q2hvaWNlLFxufSBmcm9tICcuL2Rpc3BlZGl0LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGaWx0ZXJEYXRhLCBRdWVyeXNldCB9IGZyb20gJy4uLy4uL2RhdGEvZGF0YS1xdWVyeSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vZGF0YS9kYXRhLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgRmtzZWxlY3RDb21wb25lbnQsIFRwbEZ1biB9IGZyb20gJy4uL2Zrc2VsZWN0L2Zrc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWNpbWFsRmllbGRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vZGF0YS9maWVsZHMvbnVtYmVycyc7XG5pbXBvcnQge1xuICBCb290c3RyYXBEYXRhRGlzcGxheUNvbmZpZyxcbiAgREFUQV9ESVNQTEFZX0NPTkZJRyxcbiAgRGF0YURpc3BsYXlDb25maWcsXG59IGZyb20gJy4uLy4uL2RhdGEvZGF0YS1wYXJhbWV0ZXJzJztcbmltcG9ydCB7IERhdGFNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTTJtc2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vbTJtc2VsZWN0L20ybXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hvaWNlUGlwZSB9IGZyb20gJy4uL2Nob2ljZS5waXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1kaXNwZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXNwZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rpc3BlZGl0LmNvbXBvbmVudC5zYXNzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGa3NlbGVjdENvbXBvbmVudCxcbiAgICBNMm1zZWxlY3RDb21wb25lbnQsXG4gICAgQ2hvaWNlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGlzcGVkaXRDb21wb25lbnQ8RlQsIFQgZXh0ZW5kcyBEYXRhTW9kZWwsIFIgZXh0ZW5kcyBEYXRhTW9kZWw+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgLyoqIE1vZGVsIChtYW5kYXRvcnkpICovXG4gIEBJbnB1dCgpIHB1YmxpYyBtb2RlbCE6IFQ7XG4gIC8qKiBGaWVsZCAobWFuZGF0b3J5KSAqL1xuICBASW5wdXQoKSBwdWJsaWMgZmllbGQhOiBzdHJpbmc7XG4gIC8qKiBFeHRlcm5hbCBmb3JtICovXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtPzogVW50eXBlZEZvcm1Hcm91cDtcbiAgLyoqXG4gICAqIFN0YXJ0aW5nIGVkaXQgbW9kZVxuICAgKiBJZiBtb2RlIGlzIGlubGluZSwgZWRpdCBpcyBhbHdheXMgdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBlZGl0ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBDYW4gYmUgc3dpdGNoZWQgdG8gZWRpdCBtb2RlP1xuICAgKiBkZWZhdWx0IDogdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGVkaXRhYmxlID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFNhdmUgdXBkYXRlZCB2YWx1ZXMgP1xuICAgKiBJZiBub3QgZ2l2ZW4sIGRlZmF1bHQgdmFsdWUgZGVwZW5kcyBvbiBtb2RlIDpcbiAgICogLSBzYXZlIGlmIG1vZGUgaXMgZGRcbiAgICogLSBkb24ndCBzYXZlIGlmIG1vZGUgaXMgaW5saW5lXG4gICAqL1xuICBwdWJsaWMgc2F2ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNwbGF5IG1vZGVcbiAgICogLSBkZCBwcm92aWRlcyBkaXNwbGF5IC8gZWRpdCB3aXRoaW4gYSBkdC9kZCBibG9ja1xuICAgKiAtIGlubGluZSAodG8gYmUgcmVuYW1lZCB0byBmb3JtKSBwcm92aWRlcyBhIChsYWJlbD8gYW5kKSBmb3JtIGNvbnRyb2xcbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIG1vZGU6ICdkZCcgfCAnaW5saW5lJyB8ICdmb3JtJyA9ICdpbmxpbmUnO1xuICAvKipcbiAgICogQ3VzdG9tIGNob2ljZXNcbiAgICogSWYgcHJvdmlkZWQsIGEgc2VsZWN0IGZvcm0gY29udHJvbCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBiYXNlIGVkaXRvclxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGNob2ljZXM6IElEaXNwRWRpdENob2ljZVtdID0gW107XG4gIC8qKiBDdXN0b20gaW5wdXQgY2xhc3NlcyAqL1xuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRDbGFzc2VzITogc3RyaW5nW10gfCBzdHJpbmc7XG4gIC8qKiBPdmVycmlkZSBlZGl0b3IsIGlmIHByb3ZpZGVkICovXG4gIEBJbnB1dCgpIHB1YmxpYyBlZGl0b3I/OiBESVNQRURJVF9FRElUT1JfVFlQRVM7XG4gIC8qKiBPdmVycmlkZSB2aWV3ZXIsIGlmIHByb3ZpZGVkICovXG4gIEBJbnB1dCgpIHB1YmxpYyB2aWV3ZXI/OiBESVNQRURJVF9ESVNQTEFZX1RZUEVTO1xuICAvKiogT3ZlcnJpZGUgZGVmYXVsdCB2YWx1ZSAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGVmYXVsdD86IGFueTtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHBsYWNlaG9sZGVyLCBpZiBwcm92aWRlZC5cbiAgICogQnkgZGVmYXVsdCwgbWFuYWdlci5kZXNjcmlwdGlvbiBpcyB1c2VkXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICAvKipcbiAgICogT3ZlcnJpZGUgaGVscCwgaWYgcHJvdmlkZWQuXG4gICAqIEJ5IGRlZmF1bHQsIG1hbmFnZXIuaGVscCBpcyB1c2VkLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGhlbHA6IHN0cmluZyA9ICcnO1xuICAvKipcbiAgICogIEhpZGUgbGFiZWwgKGZvciBpbmxpbmUgZm9ybXMpXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZUxhYmVsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gRksgZmllbGRzXG4gIC8vIFRPRE86IHJlbmFtZSBhcyBma18gb3IgcmVsYXRlZF9cbiAgLyoqIEZrIHF1ZXJ5c2V0ICovXG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeXNldD86IFF1ZXJ5c2V0PFI+O1xuICAvKiogRmsgY29sbGVjdGlvbiAqL1xuICBASW5wdXQoKSBwdWJsaWMgY29sbGVjdGlvbj86IENvbGxlY3Rpb248Uj47XG4gIC8qKiBGayBkaXNwbGF5ICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5Pzogc3RyaW5nIHwgVHBsRnVuPFI+O1xuICAvKiogRmsgZmlsdGVyICovXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXI6IEZpbHRlckRhdGEgPSB7fTtcblxuICAvKiogT3V0cHV0IGVtaXR0ZXIsIG91dHB1dCBtb2RlbCBvbiBldmVyeSBjaGFuZ2UgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gIC8qKiBGaWVsZCBtYW5hZ2VyICovXG4gIHB1YmxpYyBtYW5hZ2VyPzogQmFzZUZpZWxkTWFuYWdlcjxGVD47XG5cbiAgLyoqIFRleHQgdmFsdWUgdXNlZCBmb3IgZGlzcGxheSAqL1xuICBwdWJsaWMgdHh0VmFsdWU/OiBzdHJpbmc7XG4gIC8qKiBUZXh0IHZhbHVlcyB1c2VkIGZvciBtYW55IGRpc3BsYXlzICovXG4gIHB1YmxpYyB0eHRWYWx1ZXM/OiBzdHJpbmdbXTtcblxuICAvKiogQ29tcHV0ZWQgZWRpdG9yIHR5cGUgKi9cbiAgcHVibGljIHJlYWxFZGl0b3I6IERJU1BFRElUX0VESVRPUl9UWVBFUyA9ICdpbnB1dC50ZXh0JztcbiAgLyoqIENvbXB1dGVkIGRpc3BsYXkgdHlwZSAqL1xuICBwdWJsaWMgcmVhbERpc3BsYXk6IERJU1BFRElUX0RJU1BMQVlfVFlQRVMgPSAndGV4dCc7XG4gIC8qKiBDdXJyZW50IGRpc3AgcmF3IHZhbHVlICovXG4gIHB1YmxpYyBkaXNwVmFsdWU/OiBhbnk7XG4gIC8qKiBDb21wdXRlZCBjaG9jaWVzIHR5cGUgKi9cbiAgcHVibGljIHJlYWxDaG9pY2VzPzogSURpc3BFZGl0Q2hvaWNlW10gPSBbXTtcbiAgLyoqIENvbXB1dGVkIGhlbHAgKi9cbiAgcHVibGljIHJlYWxIZWxwITogc3RyaW5nO1xuICAvKiogQ29tcHV0ZWQgcGxhY2Vob2xkZXIgKi9cbiAgcHVibGljIHJlYWxQbGFjZWhvbGRlciE6IHN0cmluZztcbiAgLyoqIENvbXB1dGVkIHJlcXVpcmVkICovXG4gIHB1YmxpYyByZXF1aXJlZCE6IGJvb2xlYW47XG4gIC8qKiBDb21wdXRlZCBkZWZhdWx0IHZhbHVlICovXG4gIHB1YmxpYyByZWFsRGVmYXVsdCE6IGFueTtcblxuICBwdWJsaWMgbTJtVmFsdWVzPzogYW55W107XG5cbiAgLy8gTG9jYWwgZm9ybSBncm91cFxuICBwdWJsaWMgZmc/OiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8vIERpc3BsYXkgdGVtcGxhdGUgZnVuY3Rpb25cbiAgcHJpdmF0ZSBfdHBsITogVHBsRnVuPFI+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RvciwgY2FuIGJlIGdpdmVuIERBVEFfRElTUExBWV9DT05GSUcgaW5qZWN0aW9uIHRva2VuIHRvIG92ZXJyaWRlIGRpc3BsYXkgY2xhc3Nlcy5cbiAgICogQnkgZGVmYXVsdCwgYnM1IGNvbmZpZyBpcyB1c2VkXG4gICAqIEBwYXJhbSBkY29uZiBEYXRhRGlzcGxheUNvbmZpZyBpdGVtXG4gICAqIEBwYXJhbSBfbXNncyBtZXNzYWdlcyBzZXJ2aWNlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEFfRElTUExBWV9DT05GSUcpIHB1YmxpYyBkY29uZjogRGF0YURpc3BsYXlDb25maWcsXG4gICAgcHJpdmF0ZSBfbXNnczogRGF0YU1lc3NhZ2VTZXJ2aWNlXG4gICkge1xuICAgIGlmICh0aGlzLmRjb25mID09PSBudWxsKSB7XG4gICAgICB0aGlzLmRjb25mID0gQm9vdHN0cmFwRGF0YURpc3BsYXlDb25maWc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXQgc2VxdWVuY2UuXG4gICAqIC0gU2V0cyBtb2RlXG4gICAqIC0gU2V0cyBkaXNwbGF5IGZ1bmN0aW9uXG4gICAqIC0gTG9hZHMgbWFuYWdlclxuICAgKiAtIFJ1biBtaXNjIGNoZWNrcyBvbiBzcGVjaWFsIHZhbHVlc1xuICAgKiAtIEdldCBoZWxwLCBwbGFjZWhvbGRlciBzdHJpbmdzXG4gICAqL1xuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc2V0TW9kZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZ3JhZGUgYWxsIHZhbHVlcyBvbiBhbnkgY2hhbmdlLlxuICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgKi9cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXREaXNwbGF5Rm4oKTtcbiAgICB0aGlzLm1hbmFnZXIgPSB0aGlzLm1vZGVsPy5GTSh0aGlzLmZpZWxkKTtcbiAgICB0aGlzLnJlcXVpcmVkID0gdGhpcy5tYW5hZ2VyPy5yZXF1aXJlZCB8fCBmYWxzZTtcbiAgICB0aGlzLl9jaGVja3MoKTtcbiAgICB0aGlzLnJlYWxIZWxwID0gdGhpcy5oZWxwIHx8IHRoaXMubWFuYWdlcj8uaGVscCB8fCAnJztcbiAgICB0aGlzLnJlYWxQbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIgfHwgdGhpcy5tYW5hZ2VyPy5kZXNjcmlwdGlvbiB8fCAnJztcbiAgICB0aGlzLnJlYWxEZWZhdWx0ID0gdGhpcy5kZWZhdWx0O1xuICAgIHRoaXMuc2F2ZSA9IHRoaXMuc2F2ZSA9PT0gdW5kZWZpbmVkID8gdGhpcy5tb2RlID09PSAnZGQnIDogdGhpcy5zYXZlO1xuICAgIGlmIChcbiAgICAgICghdGhpcy5lZGl0ICYmIHRoaXMubW9kZSA9PT0gJ2RkJykgfHxcbiAgICAgICghdGhpcy5lZGl0YWJsZSAmJiB0aGlzLm1vZGUgPT09ICdpbmxpbmUnKVxuICAgICkge1xuICAgICAgdGhpcy5lbmFibGVEaXNwbGF5TW9kZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuYWJsZUVkaXRNb2RlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBkaXNwbGF5IG1vZGUuXG4gICAqIC0gZ2V0IGNob2ljZXMgaWYgYXZhaWxhYmxlXG4gICAqIC0gZ2V0IGRpc3BsYXkgdHlwZVxuICAgKiAtIHByb2Nlc3MgY3VycmVudCB2YWx1ZSBmb3IgZGlzcGxheVxuICAgKiAtIHNldCBkaXNwbGF5IGNsYXNzZXNcbiAgICovXG4gIHB1YmxpYyBlbmFibGVEaXNwbGF5TW9kZSgpIHtcbiAgICB0aGlzLl9nZXRDaG9pY2VzKCk7XG4gICAgdGhpcy5fZ2V0UmVhbERpc3BsYXkoKTtcbiAgICB0aGlzLl9nZXREaXNwbGF5VmFsdWUoKTtcbiAgICB0aGlzLl9zZXREaXNwbGF5Q2xhc3NlcygpO1xuICAgIHRoaXMuZWRpdCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBlZGl0IG1vZGUgOlxuICAgKiAtIGdldCBjaG9pY2VzIGlmIGF2YWlsYWJsZVxuICAgKiAtIGdldCBlZGl0b3IgdHlwZVxuICAgKiAtIHByZXBhcmUgZm9ybSBjb250cm9sZVxuICAgKiAtIHNldCBmb3JtIGNvbnRyb2wgdmFsdWVcbiAgICogLSB1cGRhdGUgZm9ybSBjb250cm9sIGNsYXNzZXNcbiAgICovXG4gIHB1YmxpYyBlbmFibGVFZGl0TW9kZSgpIHtcbiAgICBpZiAoIXRoaXMuZWRpdGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZ2V0Q2hvaWNlcygpO1xuICAgIHRoaXMuX2dldFJlYWxFZGl0b3IoKTtcbiAgICB0aGlzLl9zZXRGb3JtQ29udHJvbCgpO1xuICAgIHRoaXMuX3NldEZvcm1Db250cm9sVmFsdWUoKTtcbiAgICB0aGlzLl9zZXRFZGl0b3JDbGFzc2VzKCk7XG4gICAgdGhpcy5lZGl0ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgbW9kZWwgZmllbGQgZnJvbSBmb3JtIGNvbnRyb2wgdmFsdWUgKGlmIHZhbHVlIGlzIHZhbGlkKS5cbiAgICogSWYgc2F2ZSBib29sZWFuIGlzIHRydWUsIHNhdmUgdmFsdWVzIHRvIEFQSS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB1cGRhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZmcgJiYgdGhpcy5tb2RlbCAmJiB0aGlzLmZnLnZhbGlkKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucmVhbEVkaXRvcikge1xuICAgICAgICBjYXNlICdpbnB1dC5kZWNpbWFsJzpcbiAgICAgICAgICAodGhpcy5tb2RlbCBhcyBhbnkpW3RoaXMuZmllbGRdID0gTWF0aC5yb3VuZChcbiAgICAgICAgICAgIHRoaXMuZmcudmFsdWVbdGhpcy5maWVsZF0gKiAodGhpcy5tYW5hZ2VyIGFzIGFueSkuZmFjdG9yXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAodGhpcy5tb2RlbCBhcyBhbnkpW3RoaXMuZmllbGRdID0gdGhpcy5mZy52YWx1ZVt0aGlzLmZpZWxkXTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNhdmUgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NhdmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1bnNldEVkaXQoKSB7XG4gICAgaWYgKHRoaXMubW9kZSA9PSAnZGQnICYmIHRoaXMuZWRpdCkge1xuICAgICAgdGhpcy5lZGl0ID0gZmFsc2U7XG4gICAgICBkZWxldGUgdGhpcy5mZztcbiAgICB9XG4gIH1cblxuICB0b2dnbGVFZGl0KCkge1xuICAgIGlmICghdGhpcy5lZGl0KSB7XG4gICAgICB0aGlzLmVuYWJsZUVkaXRNb2RlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5zZXRFZGl0KCk7XG4gICAgICB0aGlzLmVuYWJsZURpc3BsYXlNb2RlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGZpZWxkIHRvIGRlZmF1bHQgdmFsdWVcbiAgICogVE9ETzogY2hlY2sgaWYgZWRpdCBtb2RlIG5lZWRzIHRvIGJlIGNoYW5nZWQgLyBzYXZlZFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNldERlZmF1bHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubW9kZWwpIHtcbiAgICAgICh0aGlzLm1vZGVsIGFzIGFueSlbdGhpcy5maWVsZF0gPSB0aGlzLnJlYWxEZWZhdWx0O1xuICAgICAgdGhpcy5mZyEuY29udHJvbHNbdGhpcy5maWVsZF0uc2V0VmFsdWUodGhpcy5yZWFsRGVmYXVsdCwge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VsZWN0ZWRSZWZJdGVtKCRldmVudDogVCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgaWYgKCRldmVudCAhPT0gbnVsbCkge1xuICAgICAgICAodGhpcy5tb2RlbCBhcyBhbnkpW3RoaXMuZmllbGRdID0gJGV2ZW50LmlkO1xuICAgICAgICAodGhpcy5tb2RlbCBhcyBhbnkpW2Ake3RoaXMuZmllbGR9X2RldGFpbHNgXSA9ICRldmVudDtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgICAgIGNvbnN0IGZ2OiB7IFtpbmRleDogc3RyaW5nXTogbnVtYmVyIHwgbnVsbCB9ID0ge307XG4gICAgICAgICAgZnZbdGhpcy5maWVsZF0gPSAkZXZlbnQuaWQ7XG4gICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoZnYsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgICAgICAgIHRoaXMuZm9ybS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICh0aGlzLm1vZGVsIGFzIGFueSlbdGhpcy5maWVsZF0gPSBudWxsO1xuICAgICAgICBkZWxldGUgKHRoaXMubW9kZWwgYXMgYW55KVtgJHt0aGlzLmZpZWxkfV9kZXRhaWxzYF07XG4gICAgICAgIGlmICh0aGlzLmZvcm0pIHtcbiAgICAgICAgICBjb25zdCBmdjogeyBbaW5kZXg6IHN0cmluZ106IG51bWJlciB8IG51bGwgfSA9IHt9O1xuICAgICAgICAgIGZ2W3RoaXMuZmllbGRdID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShmdiwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgICAgICAgdGhpcy5mb3JtLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICB0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX3NhdmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25NMk1WYWx1ZXNDaGFuZ2VzKHY6IGFueVtdKSB7XG4gICAgdGhpcy5tMm1WYWx1ZXMgPSB2O1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tzKCkge1xuICAgIGlmICh0aGlzLmVkaXRvciA9PT0gJ3F1aWxsJyAmJiAhdGhpcy52aWV3ZXIpIHtcbiAgICAgIHRoaXMudmlld2VyID0gJ3F1aWxsJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB2YWx1ZSB0byBkYXRhYmFzZSwgb25seSBpZiBtb2RlbCBoYXZlIGFuIGlkLlxuICAgKiBJZiBtb2RlIGlzIGRkLCB0b2dnbGUgZWRpdCAvIGRpc3BsYXkgbW9kZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX3NhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubW9kZWwpIHtcbiAgICAgIGlmICh0aGlzLm1vZGVsLmlkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnVwZGF0ZShbdGhpcy5maWVsZF0sIHsgdXBkYXRlTW9kZWw6IHRydWUgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICBsZXQgbXNnOiBzdHJpbmcgPSAnJztcbiAgICAgICAgICBpZiAoZSAmJiAoZSBhcyBhbnkpLmVycm9yICYmIChlIGFzIGFueSkuZXJyb3JbdGhpcy5maWVsZF0pIHtcbiAgICAgICAgICAgIG1zZyA9IGAkeyhlIGFzIGFueSkuZXJyb3JbdGhpcy5maWVsZF19YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fbXNncy5lcnJvcihcbiAgICAgICAgICAgIFwiRXJyZXVyIGxvcnMgZGUgbCdlbnJlZ2lzdHJlbWVudFwiLFxuICAgICAgICAgICAgbXNnLFxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2RkJykge1xuICAgICAgICB0aGlzLnVuc2V0RWRpdCgpO1xuICAgICAgICB0aGlzLmVuYWJsZURpc3BsYXlNb2RlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZWQubmV4dCh0aGlzLm1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kaXNwbGF5KHg6IGFueSk6IGFueSB7XG4gICAgaWYgKHgpIHtcbiAgICAgIGlmICh4Ll9kaXNwbGF5KSB7XG4gICAgICAgIGlmICh4Ll9kaXNwbGF5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICByZXR1cm4geC5fZGlzcGxheSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB4Ll9kaXNwbGF5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fdHBsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cGwoeCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGlzcGxheSBtb2RlIGJhc2VkIG9uIGN1cnJlbnQgZGlzcGxheSBjb25maWdcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3NldE1vZGUoKSB7XG4gICAgaWYgKCF0aGlzLm1vZGUpIHtcbiAgICAgIHRoaXMubW9kZSA9IHRoaXMuZGNvbmYuZGlzcEVkaXQuZGVmYXVsdE1vZGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RGlzcGxheUZuKCkge1xuICAgIGlmICh0aGlzLmRpc3BsYXkpIHtcbiAgICAgIGlmICh0aGlzLmRpc3BsYXkgJiYgdHlwZW9mIHRoaXMuZGlzcGxheSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5fdHBsID0gKG1vZGVsOiBSKSA9PiBgJHsobW9kZWwgYXMgYW55KVt0aGlzLmRpc3BsYXkgYXMgc3RyaW5nXX1gO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmRpc3BsYXkgJiYgdHlwZW9mIHRoaXMuZGlzcGxheSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLl90cGwgPSB0aGlzLmRpc3BsYXkuYmluZCh0aGlzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdHBsID0gKG1vZGVsOiBSKSA9PlxuICAgICAgICBgJHtcbiAgICAgICAgICAobW9kZWwgYXMgYW55KVsnbmFtZSddIHx8XG4gICAgICAgICAgKG1vZGVsIGFzIGFueSlbJ3RpdGxlJ10gfHxcbiAgICAgICAgICAobW9kZWwgYXMgYW55KVsnaWQnXVxuICAgICAgICB9YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRDaG9pY2VzKCkge1xuICAgIC8vIFNldCBkaXNwbGF5IGNob2ljZXNcbiAgICBsZXQgY2hvaWNlczogSURpc3BFZGl0Q2hvaWNlW10gfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuY2hvaWNlcyAmJiB0aGlzLmNob2ljZXMubGVuZ3RoKSB7XG4gICAgICBjaG9pY2VzID0gdGhpcy5jaG9pY2VzO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMubWFuYWdlciBhcyBhbnkpPy5jaG9pY2VzKSB7XG4gICAgICBjaG9pY2VzID0gKHRoaXMubWFuYWdlciBhcyBhbnkpPy5jaG9pY2VzO1xuICAgIH1cbiAgICAvLyBTZXQgZGlzcGxheSB2YWx1ZVxuICAgIGlmIChjaG9pY2VzICYmIGNob2ljZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5yZWFsQ2hvaWNlcyA9IGNob2ljZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnJlYWxDaG9pY2VzO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlYWxEaXNwbGF5KCkge1xuICAgIHRoaXMucmVhbERpc3BsYXkgPSB0aGlzLnZpZXdlclxuICAgICAgPyB0aGlzLnZpZXdlclxuICAgICAgOiB0aGlzLm1hbmFnZXI/LmRpc3BsYXlUeXBlXG4gICAgICA/IHRoaXMubWFuYWdlci5kaXNwbGF5VHlwZVxuICAgICAgOiAndGV4dCc7XG4gICAgaWYgKHRoaXMucmVhbENob2ljZXMgJiYgdGhpcy5yZWFsQ2hvaWNlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucmVhbERpc3BsYXkgPSAnY2hvaWNlJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZWFsRWRpdG9yKCkge1xuICAgIHRoaXMucmVhbEVkaXRvciA9IHRoaXMuZWRpdG9yXG4gICAgICA/IHRoaXMuZWRpdG9yXG4gICAgICA6IHRoaXMubWFuYWdlcj8uZWRpdG9yVHlwZSB8fCAnaW5wdXQudGV4dCc7XG4gICAgaWYgKHRoaXMucmVhbENob2ljZXMgJiYgdGhpcy5yZWFsQ2hvaWNlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucmVhbEVkaXRvciA9ICdzZWxlY3QnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEZvcm1Db250cm9sKCkge1xuICAgIGlmICghdGhpcy5mb3JtKSB7XG4gICAgICBjb25zdCBmZ2M6IHsgW2luZGV4OiBzdHJpbmddOiBVbnR5cGVkRm9ybUNvbnRyb2wgfSA9IHt9O1xuICAgICAgZmdjW3RoaXMuZmllbGRdID0gdGhpcy5tb2RlbC5GQyh0aGlzLmZpZWxkKTtcbiAgICAgIHRoaXMuZmcgPSBuZXcgVW50eXBlZEZvcm1Hcm91cChmZ2MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZnID0gdGhpcy5mb3JtO1xuICAgICAgdGhpcy5mZy5zZXRDb250cm9sKHRoaXMuZmllbGQsIHRoaXMubW9kZWwuRkModGhpcy5maWVsZCksIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RlID09PSAnaW5saW5lJykge1xuICAgICAgdGhpcy5mZy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEZvcm1Db250cm9sVmFsdWUoKSB7XG4gICAgc3dpdGNoICh0aGlzLnJlYWxFZGl0b3IpIHtcbiAgICAgIGNhc2UgJ2lucHV0LmRhdGV0aW1lJzpcbiAgICAgICAgY29uc3QgdmFsdWUgPSAodGhpcy5tb2RlbCBhcyBhbnkpW3RoaXMuZmllbGRdO1xuICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBsb2NhbG5vdyA9IG5ldyBEYXRlKFxuICAgICAgICAgIG5vdy5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwXG4gICAgICAgICk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuZmchLmNvbnRyb2xzW3RoaXMuZmllbGRdLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRpbWUgPSB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IG5ldyBEYXRlKCk7XG4gICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGltZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgICAgICAgIGNvbnN0IGxvY2FsdGltZSA9IG5ldyBEYXRlKHRpbWUuZ2V0VGltZSgpIC0gb2Zmc2V0ICogNjAwMDApO1xuICAgICAgICAgIHRoaXMuZmchLmNvbnRyb2xzW3RoaXMuZmllbGRdLnNldFZhbHVlKFxuICAgICAgICAgICAgbG9jYWx0aW1lLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDE2KSxcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiB0cnVlIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVhbERlZmF1bHQgPVxuICAgICAgICAgIHRoaXMuZGVmYXVsdCB8fCB0aGlzLm1hbmFnZXI/LnJlcXVpcmVkXG4gICAgICAgICAgICA/IGxvY2Fsbm93LnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDE2KVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lucHV0LmRhdGUnOlxuICAgICAgICBjb25zdCBkdCA9IHRoaXMubW9kZWwudG9Kc29uKFt0aGlzLmZpZWxkXSlbdGhpcy5maWVsZF07XG4gICAgICAgIHRoaXMuZmchLmNvbnRyb2xzW3RoaXMuZmllbGRdLnNldFZhbHVlKGR0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbnB1dC5kZWNpbWFsJzpcbiAgICAgICAgdGhpcy5mZyEuY29udHJvbHNbdGhpcy5maWVsZF0uc2V0VmFsdWUoXG4gICAgICAgICAgKHRoaXMubW9kZWwgYXMgYW55KVt0aGlzLmZpZWxkXSAvXG4gICAgICAgICAgICAoKHRoaXMubWFuYWdlciBhcyB1bmtub3duIGFzIERlY2ltYWxGaWVsZE1hbmFnZXIpLmZhY3RvciB8fCAxKVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEVkaXRvckNsYXNzZXMoKSB7XG4gICAgLy8gRklYTUU6IHVzZSByZWFsRWRpdG9yQ2xhc3Nlc1xuICAgIGlmICghdGhpcy5pbnB1dENsYXNzZXMpIHtcbiAgICAgIHRoaXMuaW5wdXRDbGFzc2VzID1cbiAgICAgICAgdGhpcy5kY29uZi5kaXNwRWRpdC5pbnB1dENsYXNzZXNbdGhpcy5yZWFsRWRpdG9yXSB8fCAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXREaXNwbGF5VmFsdWUoKSB7XG4gICAgY29uc3QgdmFsdWUgPSAodGhpcy5tb2RlbCBhcyBhbnkpW3RoaXMuZmllbGRdO1xuICAgIHRoaXMuZGlzcFZhbHVlID0gdmFsdWU7XG4gICAgaWYgKHRoaXMucmVhbENob2ljZXMpIHtcbiAgICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLnJlYWxDaG9pY2VzKSB7XG4gICAgICAgIGlmIChjID09PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudHh0VmFsdWUgPSBjIGFzIGFueTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoYy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGMudmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgdGhpcy50eHRWYWx1ZSA9IGMuZGVzYztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gU2V0IGRpc3BsYXkgdGV4dCBkZXBlbmRpbmcgb24gdmFsdWUgYW5kIHJlYWxEaXNwbGF5IHZhbHVlXG4gICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnR4dFZhbHVlID0gJ09VSSc7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMudHh0VmFsdWUgPSAnTk9OJztcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHRoaXMudHh0VmFsdWUgPSAnbm9uIGTDqWZpbmknO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucmVhbERpc3BsYXkpIHtcbiAgICAgICAgY2FzZSAnZmtkZXRhaWxzJzpcbiAgICAgICAgICBjb25zdCBkZXRhaWxzID0gKHRoaXMubW9kZWwgYXMgYW55KVtgJHt0aGlzLmZpZWxkfV9kZXRhaWxzYF0gYXMgYW55O1xuICAgICAgICAgIHRoaXMudHh0VmFsdWUgPSB0aGlzLl9kaXNwbGF5KGRldGFpbHMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtMm1kZXRhaWxzJzpcbiAgICAgICAgICBjb25zdCBtMm1EZXRhaWxzID1cbiAgICAgICAgICAgIHRoaXMubTJtVmFsdWVzIHx8XG4gICAgICAgICAgICAoKHRoaXMubW9kZWwgYXMgYW55KVtgJHt0aGlzLmZpZWxkfV9kZXRhaWxzYF0gYXMgYW55W10pO1xuICAgICAgICAgIHRoaXMudHh0VmFsdWVzID0gW107XG4gICAgICAgICAgZm9yIChjb25zdCB2IG9mIG0ybURldGFpbHMpIHtcbiAgICAgICAgICAgIHRoaXMudHh0VmFsdWVzLnB1c2godGhpcy5fZGlzcGxheSh2KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkZWNpbWFsJzpcbiAgICAgICAgICB0aGlzLnR4dFZhbHVlID0gYCR7XG4gICAgICAgICAgICB2YWx1ZSAvXG4gICAgICAgICAgICAoKHRoaXMubWFuYWdlciBhcyB1bmtub3duIGFzIERlY2ltYWxGaWVsZE1hbmFnZXIpLmZhY3RvciB8fCAxKVxuICAgICAgICAgIH1gO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMudHh0VmFsdWUgPSBgJHt2YWx1ZX1gO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldERpc3BsYXlDbGFzc2VzKCkge31cbn1cbiIsIlxuPG5nLXRlbXBsYXRlICN0aXRsZVRwbD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGlzcFRwbD5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicmVhbERpc3BsYXlcIj48c3BhbiBjbGFzcz1cImVkaXRhYmxlIGRpc3AtdGV4dFwiICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIiAoY2xpY2spPVwiZW5hYmxlRWRpdE1vZGUoKVwiPnt7dHh0VmFsdWV9fTwvc3Bhbj48c3BhbiBjbGFzcz1cImVkaXRhYmxlIGRpc3AtY2hvaWNlXCIgKm5nU3dpdGNoQ2FzZT1cIidjaG9pY2UnXCIgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIj57e3R4dFZhbHVlfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJlZGl0YWJsZSBkaXNwLWRlY2ltYWxcIiAqbmdTd2l0Y2hDYXNlPVwiJ2RlY2ltYWwnXCIgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIj57e3R4dFZhbHVlfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJlZGl0YWJsZSBkaXNwLWJvb2xlYW5cIiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCIgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIj57e3R4dFZhbHVlfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJlZGl0YWJsZSBkaXNwLWZrZGV0YWlsc1wiICpuZ1N3aXRjaENhc2U9XCInZmtkZXRhaWxzJ1wiIChjbGljayk9XCJlbmFibGVFZGl0TW9kZSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmtpdGVtXCI+e3t0eHRWYWx1ZX19PC9kaXY+PC9zcGFuPjxzcGFuIGNsYXNzPVwiZWRpdGFibGUgZGlzcC1tMm1kZXRhaWxzXCIgKm5nU3dpdGNoQ2FzZT1cIidtMm1kZXRhaWxzJ1wiIChjbGljayk9XCJlbmFibGVFZGl0TW9kZSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibTJtaXRlbVwiICpuZ0Zvcj1cImxldCB2IG9mIHR4dFZhbHVlc1wiPnt7dn19PC9kaXY+PC9zcGFuPjxzcGFuIGNsYXNzPVwiZWRpdGFibGUgZGlzcC1kYXRldGltZVwiICpuZ1N3aXRjaENhc2U9XCInZGF0ZXRpbWUnXCIgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwVmFsdWVcIj57e3R4dFZhbHVlfGRhdGU6J3Nob3J0J319PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRpc3BWYWx1ZVwiPnt7dHh0VmFsdWV9fTwvbmctY29udGFpbmVyPjwvc3Bhbj48c3BhbiBjbGFzcz1cImVkaXRhYmxlIGRpc3AtZGF0ZXRpbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCIgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwVmFsdWVcIj57e3R4dFZhbHVlfGRhdGU6J3Nob3J0RGF0ZSd9fTwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkaXNwVmFsdWVcIj57e3R4dFZhbHVlfX08L25nLWNvbnRhaW5lcj48L3NwYW4+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNlZGl0VHBsIGxldC1mb3JtPVwiZm9ybVwiPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJyZWFsRWRpdG9yXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LnRleHQnXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoZmllbGQpXCIgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc2VzXCIgKGtleXVwLmVzY2FwZSk9XCJ1bnNldEVkaXQoKVwiIFtwbGFjZWhvbGRlcl09XCJyZWFsUGxhY2Vob2xkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRleHRcIiAqbmdJZj1cInJlYWxIZWxwXCI+e3tyZWFsSGVscH19PHNwYW4gY2xhc3M9XCJtcy0xXCIgKm5nSWY9XCJyZXF1aXJlZFwiPihyZXF1aXMpPC9zcGFuPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsnbWlubGVuZ3RoJ11cIj5Ucm9wIGNvdXJ0IDoge3skYW55KG1hbmFnZXIpLm1pbkxlbmd0aH19IGNhcmFjdMOocmVzIG1pbmltdW0uLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21heGxlbmd0aCddXCI+VHJvcCBsb25nIDoge3skYW55KG1hbmFnZXIpLm1heExlbmd0aH19IGNhcmFjdMOocmVzIG1heGltdW0uLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPkZvcm1hdCBpbnZhbGlkZS4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkNlIGNoYW1wIGVzdCByZXF1aXMuLi48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW5wdXQuZW1haWwnXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KGZpZWxkKVwiIFtuZ0NsYXNzXT1cImlucHV0Q2xhc3Nlc1wiIChrZXl1cC5lc2NhcGUpPVwidW5zZXRFZGl0KClcIiBbcGxhY2Vob2xkZXJdPVwicmVhbFBsYWNlaG9sZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCIgKm5nSWY9XCJyZWFsSGVscFwiPnt7cmVhbEhlbHB9fTxzcGFuIGNsYXNzPVwibXMtMVwiICpuZ0lmPVwicmVxdWlyZWRcIj4ocmVxdWlzKTwvc3Bhbj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21pbmxlbmd0aCddXCI+VHJvcCBjb3VydCA6IHt7JGFueShtYW5hZ2VyKS5taW5MZW5ndGh9fSBjYXJhY3TDqHJlcyBtaW5pbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydtYXhsZW5ndGgnXVwiPlRyb3AgbG9uZyA6IHt7JGFueShtYW5hZ2VyKS5tYXhMZW5ndGh9fSBjYXJhY3TDqHJlcyBtYXhpbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5Gb3JtYXQgaW52YWxpZGUuLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ2VtYWlsJ11cIj5Gb3JtYXQgZCdlbWFpbCBpbnZhbGlkZS4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkNlIGNoYW1wIGVzdCByZXF1aXMuLi48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW5wdXQucGFzc3dvcmQnXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KGZpZWxkKVwiIFtuZ0NsYXNzXT1cImlucHV0Q2xhc3Nlc1wiIChrZXl1cC5lc2NhcGUpPVwidW5zZXRFZGl0KClcIiBbcGxhY2Vob2xkZXJdPVwicmVhbFBsYWNlaG9sZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCIgKm5nSWY9XCJyZWFsSGVscFwiPnt7cmVhbEhlbHB9fTxzcGFuIGNsYXNzPVwibXMtMVwiICpuZ0lmPVwicmVxdWlyZWRcIj4ocmVxdWlzKTwvc3Bhbj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21pbmxlbmd0aCddXCI+VHJvcCBjb3VydCA6IHt7JGFueShtYW5hZ2VyKS5taW5MZW5ndGh9fSBjYXJhY3TDqHJlcyBtaW5pbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydtYXhsZW5ndGgnXVwiPlRyb3AgbG9uZyA6IHt7JGFueShtYW5hZ2VyKS5tYXhMZW5ndGh9fSBjYXJhY3TDqHJlcyBtYXhpbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5Gb3JtYXQgaW52YWxpZGUuLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5DZSBjaGFtcCBlc3QgcmVxdWlzLi4uPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LmRhdGV0aW1lJ1wiPlxuICAgICAgPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmdldChmaWVsZClcIiBbbmdDbGFzc109XCJpbnB1dENsYXNzZXNcIiAoa2V5dXAuZXNjYXBlKT1cInVuc2V0RWRpdCgpXCIgKGtleXVwLmVudGVyKT1cInVwZGF0ZSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCI+e3tyZWFsSGVscH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydyZXF1aXJlZCddXCI+Q2UgY2hhbXAgZXN0IHJlcXVpcy4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsnbWluRGF0ZSddXCI+RG9pdCDDqnRyZSBwb3N0w6lyaWV1ciDDoCAge3skYW55KG1hbmFnZXIpLm1pbnxkYXRlOidzaG9ydCd9fS4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsnbWF4RGF0ZSddXCI+RG9pdCDDqnRyZSBhbnTDqXJpZXVyIMOgICB7eyRhbnkobWFuYWdlcikubWF4fGRhdGU6J3Nob3J0J319Li4uPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LmRhdGUnXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoZmllbGQpXCIgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc2VzXCIgKGtleXVwLmVzY2FwZSk9XCJ1bnNldEVkaXQoKVwiIChrZXl1cC5lbnRlcik9XCJ1cGRhdGUoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dFwiPnt7cmVhbEhlbHB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkNlIGNoYW1wIGVzdCByZXF1aXMuLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21pbkRhdGUnXVwiPkRvaXQgw6p0cmUgcG9zdMOpcmlldXIgw6AgIHt7JGFueShtYW5hZ2VyKS5taW58ZGF0ZTonc2hvcnQnfX0uLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21heERhdGUnXVwiPkRvaXQgw6p0cmUgYW50w6lyaWV1ciDDoCAge3skYW55KG1hbmFnZXIpLm1heHxkYXRlOidzaG9ydCd9fS4uLjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbnB1dC5udW1iZXInXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmdldChmaWVsZClcIiBbbmdDbGFzc109XCJpbnB1dENsYXNzZXNcIiAoa2V5dXAuZXNjYXBlKT1cInVuc2V0RWRpdCgpXCIgW3BsYWNlaG9sZGVyXT1cInJlYWxQbGFjZWhvbGRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dFwiICpuZ0lmPVwicmVhbEhlbHBcIj57e3JlYWxIZWxwfX08c3BhbiBjbGFzcz1cIm1zLTFcIiAqbmdJZj1cInJlcXVpcmVkXCI+KHJlcXVpcyk8L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydtaW4nXVwiPlRyb3AgcGV0aXQgOiBtaW5pbXVtIHt7JGFueShtYW5hZ2VyKS5taW59fS4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsnbWF4J11cIj5Ucm9wIGdyYW5kIDogbWF4aW11bSB7eyRhbnkobWFuYWdlcikubWF4fX0uLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5DZSBjaGFtcCBlc3QgcmVxdWlzLi4uPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LmRlY2ltYWwnXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmdldChmaWVsZClcIiBbbmdDbGFzc109XCJpbnB1dENsYXNzZXNcIiAoa2V5dXAuZXNjYXBlKT1cInVuc2V0RWRpdCgpXCIgW3BsYWNlaG9sZGVyXT1cInJlYWxQbGFjZWhvbGRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dFwiICpuZ0lmPVwicmVhbEhlbHBcIj57e3JlYWxIZWxwfX08c3BhbiBjbGFzcz1cIm1zLTFcIiAqbmdJZj1cInJlcXVpcmVkXCI+KHJlcXVpcyk8L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydtaW4nXVwiPlRyb3AgcGV0aXQgOiBtaW5pbXVtIHt7JGFueShtYW5hZ2VyKS5taW59fS4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsnbWF4J11cIj5Ucm9wIGdyYW5kIDogbWF4aW11bSB7eyRhbnkobWFuYWdlcikubWF4fX0uLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5DZSBjaGFtcCBlc3QgcmVxdWlzLi4uPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LmNoZWNrYm94J1wiPlxuICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmdldChmaWVsZClcIiAoa2V5dXAuZXNjYXBlKT1cInVuc2V0RWRpdCgpXCIgKGNoYW5nZSk9XCJ1cGRhdGUoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dFwiPnt7cmVhbEhlbHB9fTwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0YXJlYSdcIj5cbiAgICAgIDx0ZXh0YXJlYSBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoZmllbGQpXCIgKGtleXVwLmVzY2FwZSk9XCJ1bnNldEVkaXQoKVwiIFtuZ0NsYXNzXT1cImlucHV0Q2xhc3Nlc1wiIChrZXl1cC5jb250cm9sLmVudGVyKT1cInVwZGF0ZSgpXCIgW3BsYWNlaG9sZGVyXT1cInJlYWxQbGFjZWhvbGRlclwiPjwvdGV4dGFyZWE+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCIgKm5nSWY9XCJyZWFsSGVscFwiPnt7cmVhbEhlbHB9fTxzcGFuIGNsYXNzPVwibXMtMVwiICpuZ0lmPVwicmVxdWlyZWRcIj4ocmVxdWlzKTwvc3Bhbj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21pbmxlbmd0aCddXCI+VHJvcCBjb3VydCA6IHt7JGFueShtYW5hZ2VyKS5taW5MZW5ndGh9fSBjYXJhY3TDqHJlcyBtaW5pbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydtYXhsZW5ndGgnXVwiPlRyb3AgbG9uZyA6IHt7JGFueShtYW5hZ2VyKS5tYXhMZW5ndGh9fSBjYXJhY3TDqHJlcyBtYXhpbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5Gb3JtYXQgaW52YWxpZGUuLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5DZSBjaGFtcCBlc3QgcmVxdWlzLi4uPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Zrc2VsZWN0J1wiPlxuICAgICAgPGRhdGEtZmtzZWxlY3QgW2NvbGxlY3Rpb25dPVwiY29sbGVjdGlvblwiIFtmaWx0ZXJdPVwiZmlsdGVyXCIgKHNlbGVjdGVkKT1cInNlbGVjdGVkUmVmSXRlbSgkZXZlbnQpXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgKGNhbmNlbGxlZCk9XCJ1bnNldEVkaXQoKVwiIChjbGVhcmVkKT1cInNlbGVjdGVkUmVmSXRlbShudWxsKVwiPjwvZGF0YS1ma3NlbGVjdD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbTJtc2VsZWN0J1wiPlxuICAgICAgPGRhdGEtbTJtc2VsZWN0IFtjb2xsZWN0aW9uXT1cImNvbGxlY3Rpb25cIiBbZmlsdGVyXT1cImZpbHRlclwiIChjaGFuZ2VkKT1cInVwZGF0ZSgpXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KGZpZWxkKVwiIChkZXRhaWxzQ2hhbmdlZCk9XCJvbk0yTVZhbHVlc0NoYW5nZXMoJGV2ZW50KVwiIFttb2RlbF09XCJtb2RlbFwiIFtmaWVsZF09XCJmaWVsZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiPjwvZGF0YS1tMm1zZWxlY3Q+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdCdcIj5cbiAgICAgIDxzZWxlY3QgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KGZpZWxkKVwiIChrZXl1cC5lc2NhcGUpPVwidW5zZXRFZGl0KClcIiAoY2hhbmdlKT1cInVwZGF0ZSgpXCIgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc2VzXCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGMgb2YgcmVhbENob2ljZXNcIiBbbmdWYWx1ZV09XCJjLnZhbHVlIT09dW5kZWZpbmVkID8gYy52YWx1ZSA6IGNcIj57e2MuZGVzYyA/IGMuZGVzYyA6IGN9fTwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCI+e3tyZWFsSGVscH19PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjwhLS0gRGlzcC9lZGl0IHRvZ2dsZXItLT5cbjxuZy10ZW1wbGF0ZSAjZGlzcGVkaXRUcGw+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZWRpdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkaXNwVHBsXCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmZ1wiPlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmZ1wiIChzdWJtaXQpPVwidXBkYXRlKClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXRUcGw7IGNvbnRleHQ6IHtmb3JtOiBmZ31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPCEtLSBEaXNwRWRpdCBub2Zvcm0tLT5cbjxuZy10ZW1wbGF0ZSAjZGlzcGVkaXRGb3JtVHBsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVkaXRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcFRwbFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXRUcGw7IGNvbnRleHQ6IHtmb3JtOiBmb3JtfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48IS0tIERkIGRpc3BsYXktLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlPT09J2RkJ1wiPlxuICA8ZHQgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkXCIgKm5nSWY9XCIhaGlkZUxhYmVsXCI+PHNwYW4gY2xhc3M9XCJlZGl0YWJsZVwiIChjbGljayk9XCJ0b2dnbGVFZGl0KClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRwbFwiPjwvbmctY29udGFpbmVyPjwvc3Bhbj48c3BhbiBjbGFzcz1cInBvaW50ZXIgZmxvYXQtZW5kXCIgKGNsaWNrKT1cInNldERlZmF1bHQoKVwiICpuZ0lmPVwicmVhbERlZmF1bHQhPT0gdW5kZWZpbmVkICZhbXA7JmFtcDsgZWRpdFwiPjxpIGNsYXNzPVwiYmkgYmktdHJhc2ggbXMtMlwiPjwvaT48L3NwYW4+PC9kdD5cbiAgPGRkIFtjbGFzcy5tYi0wXT1cImhpZGVMYWJlbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkaXNwZWRpdFRwbFwiPjwvbmctY29udGFpbmVyPlxuICA8L2RkPlxuPC9uZy1jb250YWluZXI+XG48IS0tIElubGluZSBkaXNwbGF5LS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwibW9kZT09PSdpbmxpbmUnXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZUxhYmVsXCI+PHNwYW4gY2xhc3M9XCJwb2ludGVyIGZsb2F0LWVuZFwiIChjbGljayk9XCJzZXREZWZhdWx0KClcIiAqbmdJZj1cInJlYWxEZWZhdWx0IT09IHVuZGVmaW5lZCAmYW1wOyZhbXA7IGVkaXRcIj48aSBjbGFzcz1cImJpIGJpLXRyYXNoIG1zLTJcIj48L2k+PC9zcGFuPlxuICAgIDxsYWJlbCBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGVkaXRUcGxcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPCEtLSBGb3JtIGRpc3BsYXktLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlPT09J2Zvcm0nXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZUxhYmVsXCI+PHNwYW4gY2xhc3M9XCJwb2ludGVyIGZsb2F0LWVuZFwiIChjbGljayk9XCJzZXREZWZhdWx0KClcIiAqbmdJZj1cInJlYWxEZWZhdWx0IT09IHVuZGVmaW5lZCAmYW1wOyZhbXA7IGVkaXRcIj48aSBjbGFzcz1cImJpIGJpLXRyYXNoIG1zLTJcIj48L2k+PC9zcGFuPlxuICAgIDxsYWJlbCBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGVkaXRGb3JtVHBsXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4iXX0=
480
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2Rpc3BlZGl0L2Rpc3BlZGl0L2Rpc3BlZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kaXNwZWRpdC9kaXNwZWRpdC9kaXNwZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLG1CQUFtQixFQUVuQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUXRDLE9BQU8sRUFBRSxpQkFBaUIsRUFBVSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNFLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsbUJBQW1CLEdBRXBCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFlNUMsTUFBTSxPQUFPLGlCQUFpQjtJQTJHNUI7Ozs7O09BS0c7SUFDSCxZQUNrRCxLQUF3QixFQUNoRSxLQUF5QjtRQURlLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ2hFLFVBQUssR0FBTCxLQUFLLENBQW9CO1FBMUduQzs7O1dBR0c7UUFDYSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQzdCOzs7V0FHRztRQUNhLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFRaEM7Ozs7YUFJ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TztzQkFBdEIsS0FBSztnQkFLVSxXQUFXO3NCQUExQixLQUFLO2dCQUtVLElBQUk7c0JBQW5CLEtBQUs7Z0JBSVUsU0FBUztzQkFBeEIsS0FBSztnQkFLVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBRVUsT0FBTztzQkFBdEIsS0FBSztnQkFFVSxNQUFNO3NCQUFyQixLQUFLO2dCQUdXLE9BQU87c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi4vLi4vZGF0YS9kYXRhLW1vZGVsJztcbmltcG9ydCB7IEJhc2VGaWVsZE1hbmFnZXIgfSBmcm9tICcuLi8uLi9kYXRhL2ZpZWxkcy9iYXNlJztcbmltcG9ydCB7XG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Hcm91cCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERJU1BFRElUX0RJU1BMQVlfVFlQRVMsXG4gIERJU1BFRElUX0VESVRPUl9UWVBFUyxcbiAgSURpc3BFZGl0Q2hvaWNlLFxufSBmcm9tICcuL2Rpc3BlZGl0LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGaWx0ZXJEYXRhLCBRdWVyeXNldCB9IGZyb20gJy4uLy4uL2RhdGEvZGF0YS1xdWVyeSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vZGF0YS9kYXRhLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgRmtzZWxlY3RDb21wb25lbnQsIFRwbEZ1biB9IGZyb20gJy4uL2Zrc2VsZWN0L2Zrc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWNpbWFsRmllbGRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vZGF0YS9maWVsZHMvbnVtYmVycyc7XG5pbXBvcnQge1xuICBCb290c3RyYXBEYXRhRGlzcGxheUNvbmZpZyxcbiAgREFUQV9ESVNQTEFZX0NPTkZJRyxcbiAgRGF0YURpc3BsYXlDb25maWcsXG59IGZyb20gJy4uLy4uL2RhdGEvZGF0YS1wYXJhbWV0ZXJzJztcbmltcG9ydCB7IERhdGFNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTTJtc2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vbTJtc2VsZWN0L20ybXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hvaWNlUGlwZSB9IGZyb20gJy4uL2Nob2ljZS5waXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1kaXNwZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXNwZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rpc3BlZGl0LmNvbXBvbmVudC5zYXNzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGa3NlbGVjdENvbXBvbmVudCxcbiAgICBNMm1zZWxlY3RDb21wb25lbnQsXG4gICAgQ2hvaWNlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGlzcGVkaXRDb21wb25lbnQ8RlQsIFQgZXh0ZW5kcyBEYXRhTW9kZWwsIFIgZXh0ZW5kcyBEYXRhTW9kZWw+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgLyoqIE1vZGVsIChtYW5kYXRvcnkpICovXG4gIEBJbnB1dCgpIHB1YmxpYyBtb2RlbCE6IFQ7XG4gIC8qKiBGaWVsZCAobWFuZGF0b3J5KSAqL1xuICBASW5wdXQoKSBwdWJsaWMgZmllbGQhOiBzdHJpbmc7XG4gIC8qKiBFeHRlcm5hbCBmb3JtICovXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtPzogVW50eXBlZEZvcm1Hcm91cDtcbiAgLyoqXG4gICAqIFN0YXJ0aW5nIGVkaXQgbW9kZVxuICAgKiBJZiBtb2RlIGlzIGlubGluZSwgZWRpdCBpcyBhbHdheXMgdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBlZGl0ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBDYW4gYmUgc3dpdGNoZWQgdG8gZWRpdCBtb2RlP1xuICAgKiBkZWZhdWx0IDogdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGVkaXRhYmxlID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFNhdmUgdXBkYXRlZCB2YWx1ZXMgP1xuICAgKiBJZiBub3QgZ2l2ZW4sIGRlZmF1bHQgdmFsdWUgZGVwZW5kcyBvbiBtb2RlIDpcbiAgICogLSBzYXZlIGlmIG1vZGUgaXMgZGRcbiAgICogLSBkb24ndCBzYXZlIGlmIG1vZGUgaXMgaW5saW5lXG4gICAqL1xuICBwdWJsaWMgc2F2ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNwbGF5IG1vZGVcbiAgICogLSBkZCBwcm92aWRlcyBkaXNwbGF5IC8gZWRpdCB3aXRoaW4gYSBkdC9kZCBibG9ja1xuICAgKiAtIGlubGluZSAodG8gYmUgcmVuYW1lZCB0byBmb3JtKSBwcm92aWRlcyBhIChsYWJlbD8gYW5kKSBmb3JtIGNvbnRyb2xcbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIG1vZGU6ICdkZCcgfCAnaW5saW5lJyB8ICdmb3JtJyA9ICdpbmxpbmUnO1xuICAvKipcbiAgICogQ3VzdG9tIGNob2ljZXNcbiAgICogSWYgcHJvdmlkZWQsIGEgc2VsZWN0IGZvcm0gY29udHJvbCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBiYXNlIGVkaXRvclxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGNob2ljZXM6IElEaXNwRWRpdENob2ljZVtdID0gW107XG4gIC8qKiBDdXN0b20gaW5wdXQgY2xhc3NlcyAqL1xuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRDbGFzc2VzITogc3RyaW5nW10gfCBzdHJpbmc7XG4gIC8qKiBPdmVycmlkZSBlZGl0b3IsIGlmIHByb3ZpZGVkICovXG4gIEBJbnB1dCgpIHB1YmxpYyBlZGl0b3I/OiBESVNQRURJVF9FRElUT1JfVFlQRVM7XG4gIC8qKiBPdmVycmlkZSB2aWV3ZXIsIGlmIHByb3ZpZGVkICovXG4gIEBJbnB1dCgpIHB1YmxpYyB2aWV3ZXI/OiBESVNQRURJVF9ESVNQTEFZX1RZUEVTO1xuICAvKiogT3ZlcnJpZGUgZGVmYXVsdCB2YWx1ZSAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGVmYXVsdD86IGFueTtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHBsYWNlaG9sZGVyLCBpZiBwcm92aWRlZC5cbiAgICogQnkgZGVmYXVsdCwgbWFuYWdlci5kZXNjcmlwdGlvbiBpcyB1c2VkXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICAvKipcbiAgICogT3ZlcnJpZGUgaGVscCwgaWYgcHJvdmlkZWQuXG4gICAqIEJ5IGRlZmF1bHQsIG1hbmFnZXIuaGVscCBpcyB1c2VkLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGhlbHA6IHN0cmluZyA9ICcnO1xuICAvKipcbiAgICogIEhpZGUgbGFiZWwgKGZvciBpbmxpbmUgZm9ybXMpXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZUxhYmVsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gRksgZmllbGRzXG4gIC8vIFRPRE86IHJlbmFtZSBhcyBma18gb3IgcmVsYXRlZF9cbiAgLyoqIEZrIHF1ZXJ5c2V0ICovXG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeXNldD86IFF1ZXJ5c2V0PFI+O1xuICAvKiogRmsgY29sbGVjdGlvbiAqL1xuICBASW5wdXQoKSBwdWJsaWMgY29sbGVjdGlvbj86IENvbGxlY3Rpb248Uj47XG4gIC8qKiBGayBkaXNwbGF5ICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5Pzogc3RyaW5nIHwgVHBsRnVuPFI+O1xuICAvKiogRmsgZmlsdGVyICovXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXI6IEZpbHRlckRhdGEgPSB7fTtcblxuICAvKiogT3V0cHV0IGVtaXR0ZXIsIG91dHB1dCBtb2RlbCBvbiBldmVyeSBjaGFuZ2UgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gIC8qKiBGaWVsZCBtYW5hZ2VyICovXG4gIHB1YmxpYyBtYW5hZ2VyPzogQmFzZUZpZWxkTWFuYWdlcjxGVD47XG5cbiAgLyoqIFRleHQgdmFsdWUgdXNlZCBmb3IgZGlzcGxheSAqL1xuICBwdWJsaWMgdHh0VmFsdWU/OiBzdHJpbmc7XG4gIC8qKiBUZXh0IHZhbHVlcyB1c2VkIGZvciBtYW55IGRpc3BsYXlzICovXG4gIHB1YmxpYyB0eHRWYWx1ZXM/OiBzdHJpbmdbXTtcblxuICAvKiogQ29tcHV0ZWQgZWRpdG9yIHR5cGUgKi9cbiAgcHVibGljIHJlYWxFZGl0b3I6IERJU1BFRElUX0VESVRPUl9UWVBFUyA9ICdpbnB1dC50ZXh0JztcbiAgLyoqIENvbXB1dGVkIGRpc3BsYXkgdHlwZSAqL1xuICBwdWJsaWMgcmVhbERpc3BsYXk6IERJU1BFRElUX0RJU1BMQVlfVFlQRVMgPSAndGV4dCc7XG4gIC8qKiBDdXJyZW50IGRpc3AgcmF3IHZhbHVlICovXG4gIHB1YmxpYyBkaXNwVmFsdWU/OiBhbnk7XG4gIC8qKiBDb21wdXRlZCBjaG9jaWVzIHR5cGUgKi9cbiAgcHVibGljIHJlYWxDaG9pY2VzPzogSURpc3BFZGl0Q2hvaWNlW10gPSBbXTtcbiAgLyoqIENvbXB1dGVkIGhlbHAgKi9cbiAgcHVibGljIHJlYWxIZWxwITogc3RyaW5nO1xuICAvKiogQ29tcHV0ZWQgcGxhY2Vob2xkZXIgKi9cbiAgcHVibGljIHJlYWxQbGFjZWhvbGRlciE6IHN0cmluZztcbiAgLyoqIENvbXB1dGVkIHJlcXVpcmVkICovXG4gIHB1YmxpYyByZXF1aXJlZCE6IGJvb2xlYW47XG4gIC8qKiBDb21wdXRlZCBkZWZhdWx0IHZhbHVlICovXG4gIHB1YmxpYyByZWFsRGVmYXVsdCE6IGFueTtcblxuICBwdWJsaWMgbTJtVmFsdWVzPzogYW55W107XG5cbiAgLy8gTG9jYWwgZm9ybSBncm91cFxuICBwdWJsaWMgZmc/OiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8vIERpc3BsYXkgdGVtcGxhdGUgZnVuY3Rpb25cbiAgcHJpdmF0ZSBfdHBsITogVHBsRnVuPFI+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RvciwgY2FuIGJlIGdpdmVuIERBVEFfRElTUExBWV9DT05GSUcgaW5qZWN0aW9uIHRva2VuIHRvIG92ZXJyaWRlIGRpc3BsYXkgY2xhc3Nlcy5cbiAgICogQnkgZGVmYXVsdCwgYnM1IGNvbmZpZyBpcyB1c2VkXG4gICAqIEBwYXJhbSBkY29uZiBEYXRhRGlzcGxheUNvbmZpZyBpdGVtXG4gICAqIEBwYXJhbSBfbXNncyBtZXNzYWdlcyBzZXJ2aWNlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEFfRElTUExBWV9DT05GSUcpIHB1YmxpYyBkY29uZjogRGF0YURpc3BsYXlDb25maWcsXG4gICAgcHJpdmF0ZSBfbXNnczogRGF0YU1lc3NhZ2VTZXJ2aWNlXG4gICkge1xuICAgIGlmICh0aGlzLmRjb25mID09PSBudWxsKSB7XG4gICAgICB0aGlzLmRjb25mID0gQm9vdHN0cmFwRGF0YURpc3BsYXlDb25maWc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXQgc2VxdWVuY2UuXG4gICAqIC0gU2V0cyBtb2RlXG4gICAqIC0gU2V0cyBkaXNwbGF5IGZ1bmN0aW9uXG4gICAqIC0gTG9hZHMgbWFuYWdlclxuICAgKiAtIFJ1biBtaXNjIGNoZWNrcyBvbiBzcGVjaWFsIHZhbHVlc1xuICAgKiAtIEdldCBoZWxwLCBwbGFjZWhvbGRlciBzdHJpbmdzXG4gICAqL1xuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc2V0TW9kZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZ3JhZGUgYWxsIHZhbHVlcyBvbiBhbnkgY2hhbmdlLlxuICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgKi9cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXREaXNwbGF5Rm4oKTtcbiAgICB0aGlzLm1hbmFnZXIgPSB0aGlzLm1vZGVsPy5GTSh0aGlzLmZpZWxkKTtcbiAgICB0aGlzLnJlcXVpcmVkID0gdGhpcy5tYW5hZ2VyPy5yZXF1aXJlZCB8fCBmYWxzZTtcbiAgICB0aGlzLl9jaGVja3MoKTtcbiAgICB0aGlzLnJlYWxIZWxwID0gdGhpcy5oZWxwIHx8IHRoaXMubWFuYWdlcj8uaGVscCB8fCAnJztcbiAgICB0aGlzLnJlYWxQbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIgfHwgdGhpcy5tYW5hZ2VyPy5kZXNjcmlwdGlvbiB8fCAnJztcbiAgICB0aGlzLnJlYWxEZWZhdWx0ID0gdGhpcy5kZWZhdWx0O1xuICAgIHRoaXMuc2F2ZSA9IHRoaXMuc2F2ZSA9PT0gdW5kZWZpbmVkID8gdGhpcy5tb2RlID09PSAnZGQnIDogdGhpcy5zYXZlO1xuICAgIGlmIChcbiAgICAgICghdGhpcy5lZGl0ICYmIHRoaXMubW9kZSA9PT0gJ2RkJykgfHxcbiAgICAgICghdGhpcy5lZGl0YWJsZSAmJiB0aGlzLm1vZGUgPT09ICdpbmxpbmUnKVxuICAgICkge1xuICAgICAgdGhpcy5lbmFibGVEaXNwbGF5TW9kZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuYWJsZUVkaXRNb2RlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBkaXNwbGF5IG1vZGUuXG4gICAqIC0gZ2V0IGNob2ljZXMgaWYgYXZhaWxhYmxlXG4gICAqIC0gZ2V0IGRpc3BsYXkgdHlwZVxuICAgKiAtIHByb2Nlc3MgY3VycmVudCB2YWx1ZSBmb3IgZGlzcGxheVxuICAgKiAtIHNldCBkaXNwbGF5IGNsYXNzZXNcbiAgICovXG4gIHB1YmxpYyBlbmFibGVEaXNwbGF5TW9kZSgpIHtcbiAgICB0aGlzLl9nZXRDaG9pY2VzKCk7XG4gICAgdGhpcy5fZ2V0UmVhbERpc3BsYXkoKTtcbiAgICB0aGlzLl9nZXREaXNwbGF5VmFsdWUoKTtcbiAgICB0aGlzLl9zZXREaXNwbGF5Q2xhc3NlcygpO1xuICAgIHRoaXMuZWRpdCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBlZGl0IG1vZGUgOlxuICAgKiAtIGdldCBjaG9pY2VzIGlmIGF2YWlsYWJsZVxuICAgKiAtIGdldCBlZGl0b3IgdHlwZVxuICAgKiAtIHByZXBhcmUgZm9ybSBjb250cm9sZVxuICAgKiAtIHNldCBmb3JtIGNvbnRyb2wgdmFsdWVcbiAgICogLSB1cGRhdGUgZm9ybSBjb250cm9sIGNsYXNzZXNcbiAgICovXG4gIHB1YmxpYyBlbmFibGVFZGl0TW9kZSgpIHtcbiAgICBpZiAoIXRoaXMuZWRpdGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZ2V0Q2hvaWNlcygpO1xuICAgIHRoaXMuX2dldFJlYWxFZGl0b3IoKTtcbiAgICB0aGlzLl9zZXRGb3JtQ29udHJvbCgpO1xuICAgIHRoaXMuX3NldEZvcm1Db250cm9sVmFsdWUoKTtcbiAgICB0aGlzLl9zZXRFZGl0b3JDbGFzc2VzKCk7XG4gICAgdGhpcy5lZGl0ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgbW9kZWwgZmllbGQgZnJvbSBmb3JtIGNvbnRyb2wgdmFsdWUgKGlmIHZhbHVlIGlzIHZhbGlkKS5cbiAgICogSWYgc2F2ZSBib29sZWFuIGlzIHRydWUsIHNhdmUgdmFsdWVzIHRvIEFQSS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB1cGRhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZmcgJiYgdGhpcy5tb2RlbCAmJiB0aGlzLmZnLnZhbGlkKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucmVhbEVkaXRvcikge1xuICAgICAgICBjYXNlICdpbnB1dC5kZWNpbWFsJzpcbiAgICAgICAgICAodGhpcy5tb2RlbCBhcyBhbnkpW3RoaXMuZmllbGRdID0gTWF0aC5yb3VuZChcbiAgICAgICAgICAgIHRoaXMuZmcudmFsdWVbdGhpcy5maWVsZF0gKiAodGhpcy5tYW5hZ2VyIGFzIGFueSkuZmFjdG9yXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAodGhpcy5tb2RlbCBhcyBhbnkpW3RoaXMuZmllbGRdID0gdGhpcy5mZy52YWx1ZVt0aGlzLmZpZWxkXTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNhdmUgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NhdmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1bnNldEVkaXQoKSB7XG4gICAgaWYgKHRoaXMubW9kZSA9PSAnZGQnICYmIHRoaXMuZWRpdCkge1xuICAgICAgdGhpcy5lZGl0ID0gZmFsc2U7XG4gICAgICBkZWxldGUgdGhpcy5mZztcbiAgICB9XG4gIH1cblxuICB0b2dnbGVFZGl0KCkge1xuICAgIGlmICghdGhpcy5lZGl0KSB7XG4gICAgICB0aGlzLmVuYWJsZUVkaXRNb2RlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5zZXRFZGl0KCk7XG4gICAgICB0aGlzLmVuYWJsZURpc3BsYXlNb2RlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGZpZWxkIHRvIGRlZmF1bHQgdmFsdWVcbiAgICogVE9ETzogY2hlY2sgaWYgZWRpdCBtb2RlIG5lZWRzIHRvIGJlIGNoYW5nZWQgLyBzYXZlZFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNldERlZmF1bHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubW9kZWwpIHtcbiAgICAgICh0aGlzLm1vZGVsIGFzIGFueSlbdGhpcy5maWVsZF0gPSB0aGlzLnJlYWxEZWZhdWx0O1xuICAgICAgdGhpcy5mZyEuY29udHJvbHNbdGhpcy5maWVsZF0uc2V0VmFsdWUodGhpcy5yZWFsRGVmYXVsdCwge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VsZWN0ZWRSZWZJdGVtKCRldmVudDogVCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgaWYgKCRldmVudCAhPT0gbnVsbCkge1xuICAgICAgICAodGhpcy5tb2RlbCBhcyBhbnkpW3RoaXMuZmllbGRdID0gJGV2ZW50LmlkO1xuICAgICAgICAodGhpcy5tb2RlbCBhcyBhbnkpW2Ake3RoaXMuZmllbGR9X2RldGFpbHNgXSA9ICRldmVudDtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgICAgIGNvbnN0IGZ2OiB7IFtpbmRleDogc3RyaW5nXTogbnVtYmVyIHwgbnVsbCB9ID0ge307XG4gICAgICAgICAgZnZbdGhpcy5maWVsZF0gPSAkZXZlbnQuaWQ7XG4gICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoZnYsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgICAgICAgIHRoaXMuZm9ybS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICh0aGlzLm1vZGVsIGFzIGFueSlbdGhpcy5maWVsZF0gPSBudWxsO1xuICAgICAgICBkZWxldGUgKHRoaXMubW9kZWwgYXMgYW55KVtgJHt0aGlzLmZpZWxkfV9kZXRhaWxzYF07XG4gICAgICAgIGlmICh0aGlzLmZvcm0pIHtcbiAgICAgICAgICBjb25zdCBmdjogeyBbaW5kZXg6IHN0cmluZ106IG51bWJlciB8IG51bGwgfSA9IHt9O1xuICAgICAgICAgIGZ2W3RoaXMuZmllbGRdID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShmdiwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgICAgICAgdGhpcy5mb3JtLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICB0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX3NhdmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25NMk1WYWx1ZXNDaGFuZ2VzKHY6IGFueVtdKSB7XG4gICAgdGhpcy5tMm1WYWx1ZXMgPSB2O1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tzKCkge1xuICAgIGlmICh0aGlzLmVkaXRvciA9PT0gJ3F1aWxsJyAmJiAhdGhpcy52aWV3ZXIpIHtcbiAgICAgIHRoaXMudmlld2VyID0gJ3F1aWxsJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB2YWx1ZSB0byBkYXRhYmFzZSwgb25seSBpZiBtb2RlbCBoYXZlIGFuIGlkLlxuICAgKiBJZiBtb2RlIGlzIGRkLCB0b2dnbGUgZWRpdCAvIGRpc3BsYXkgbW9kZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX3NhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubW9kZWwpIHtcbiAgICAgIGlmICh0aGlzLm1vZGVsLmlkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnVwZGF0ZShbdGhpcy5maWVsZF0sIHsgdXBkYXRlTW9kZWw6IHRydWUgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICBsZXQgbXNnOiBzdHJpbmcgPSAnJztcbiAgICAgICAgICBpZiAoZSAmJiAoZSBhcyBhbnkpLmVycm9yICYmIChlIGFzIGFueSkuZXJyb3JbdGhpcy5maWVsZF0pIHtcbiAgICAgICAgICAgIG1zZyA9IGAkeyhlIGFzIGFueSkuZXJyb3JbdGhpcy5maWVsZF19YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fbXNncy5lcnJvcihcbiAgICAgICAgICAgIFwiRXJyZXVyIGxvcnMgZGUgbCdlbnJlZ2lzdHJlbWVudFwiLFxuICAgICAgICAgICAgbXNnLFxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2RkJykge1xuICAgICAgICB0aGlzLnVuc2V0RWRpdCgpO1xuICAgICAgICB0aGlzLmVuYWJsZURpc3BsYXlNb2RlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZWQubmV4dCh0aGlzLm1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kaXNwbGF5KHg6IGFueSk6IGFueSB7XG4gICAgaWYgKHgpIHtcbiAgICAgIGlmICh4Ll9kaXNwbGF5KSB7XG4gICAgICAgIGlmICh4Ll9kaXNwbGF5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICByZXR1cm4geC5fZGlzcGxheSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB4Ll9kaXNwbGF5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fdHBsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cGwoeCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGlzcGxheSBtb2RlIGJhc2VkIG9uIGN1cnJlbnQgZGlzcGxheSBjb25maWdcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3NldE1vZGUoKSB7XG4gICAgaWYgKCF0aGlzLm1vZGUpIHtcbiAgICAgIHRoaXMubW9kZSA9IHRoaXMuZGNvbmYuZGlzcEVkaXQuZGVmYXVsdE1vZGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RGlzcGxheUZuKCkge1xuICAgIGlmICh0aGlzLmRpc3BsYXkpIHtcbiAgICAgIGlmICh0aGlzLmRpc3BsYXkgJiYgdHlwZW9mIHRoaXMuZGlzcGxheSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5fdHBsID0gKG1vZGVsOiBSKSA9PiBgJHsobW9kZWwgYXMgYW55KVt0aGlzLmRpc3BsYXkgYXMgc3RyaW5nXX1gO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmRpc3BsYXkgJiYgdHlwZW9mIHRoaXMuZGlzcGxheSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLl90cGwgPSB0aGlzLmRpc3BsYXkuYmluZCh0aGlzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdHBsID0gKG1vZGVsOiBSKSA9PlxuICAgICAgICBgJHtcbiAgICAgICAgICAobW9kZWwgYXMgYW55KVsnbmFtZSddIHx8XG4gICAgICAgICAgKG1vZGVsIGFzIGFueSlbJ3RpdGxlJ10gfHxcbiAgICAgICAgICAobW9kZWwgYXMgYW55KVsnaWQnXVxuICAgICAgICB9YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRDaG9pY2VzKCkge1xuICAgIC8vIFNldCBkaXNwbGF5IGNob2ljZXNcbiAgICBsZXQgY2hvaWNlczogSURpc3BFZGl0Q2hvaWNlW10gfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuY2hvaWNlcyAmJiB0aGlzLmNob2ljZXMubGVuZ3RoKSB7XG4gICAgICBjaG9pY2VzID0gdGhpcy5jaG9pY2VzO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMubWFuYWdlciBhcyBhbnkpPy5jaG9pY2VzKSB7XG4gICAgICBjaG9pY2VzID0gKHRoaXMubWFuYWdlciBhcyBhbnkpPy5jaG9pY2VzO1xuICAgIH1cbiAgICAvLyBTZXQgZGlzcGxheSB2YWx1ZVxuICAgIGlmIChjaG9pY2VzICYmIGNob2ljZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5yZWFsQ2hvaWNlcyA9IGNob2ljZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnJlYWxDaG9pY2VzO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlYWxEaXNwbGF5KCkge1xuICAgIHRoaXMucmVhbERpc3BsYXkgPSB0aGlzLnZpZXdlclxuICAgICAgPyB0aGlzLnZpZXdlclxuICAgICAgOiB0aGlzLm1hbmFnZXI/LmRpc3BsYXlUeXBlXG4gICAgICA/IHRoaXMubWFuYWdlci5kaXNwbGF5VHlwZVxuICAgICAgOiAndGV4dCc7XG4gICAgaWYgKHRoaXMucmVhbENob2ljZXMgJiYgdGhpcy5yZWFsQ2hvaWNlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucmVhbERpc3BsYXkgPSAnY2hvaWNlJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZWFsRWRpdG9yKCkge1xuICAgIHRoaXMucmVhbEVkaXRvciA9IHRoaXMuZWRpdG9yXG4gICAgICA/IHRoaXMuZWRpdG9yXG4gICAgICA6IHRoaXMubWFuYWdlcj8uZWRpdG9yVHlwZSB8fCAnaW5wdXQudGV4dCc7XG4gICAgaWYgKHRoaXMucmVhbENob2ljZXMgJiYgdGhpcy5yZWFsQ2hvaWNlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucmVhbEVkaXRvciA9ICdzZWxlY3QnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEZvcm1Db250cm9sKCkge1xuICAgIGlmICghdGhpcy5mb3JtKSB7XG4gICAgICBjb25zdCBmZ2M6IHsgW2luZGV4OiBzdHJpbmddOiBVbnR5cGVkRm9ybUNvbnRyb2wgfSA9IHt9O1xuICAgICAgZmdjW3RoaXMuZmllbGRdID0gdGhpcy5tb2RlbC5GQyh0aGlzLmZpZWxkKTtcbiAgICAgIHRoaXMuZmcgPSBuZXcgVW50eXBlZEZvcm1Hcm91cChmZ2MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZnID0gdGhpcy5mb3JtO1xuICAgICAgdGhpcy5mZy5zZXRDb250cm9sKHRoaXMuZmllbGQsIHRoaXMubW9kZWwuRkModGhpcy5maWVsZCksIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RlID09PSAnaW5saW5lJykge1xuICAgICAgdGhpcy5mZy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEZvcm1Db250cm9sVmFsdWUoKSB7XG4gICAgc3dpdGNoICh0aGlzLnJlYWxFZGl0b3IpIHtcbiAgICAgIGNhc2UgJ2lucHV0LmRhdGV0aW1lJzpcbiAgICAgICAgY29uc3QgdmFsdWUgPSAodGhpcy5tb2RlbCBhcyBhbnkpW3RoaXMuZmllbGRdO1xuICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBsb2NhbG5vdyA9IG5ldyBEYXRlKFxuICAgICAgICAgIG5vdy5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwXG4gICAgICAgICk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuZmchLmNvbnRyb2xzW3RoaXMuZmllbGRdLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRpbWUgPSB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IG5ldyBEYXRlKCk7XG4gICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGltZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgICAgICAgIGNvbnN0IGxvY2FsdGltZSA9IG5ldyBEYXRlKHRpbWUuZ2V0VGltZSgpIC0gb2Zmc2V0ICogNjAwMDApO1xuICAgICAgICAgIHRoaXMuZmchLmNvbnRyb2xzW3RoaXMuZmllbGRdLnNldFZhbHVlKFxuICAgICAgICAgICAgbG9jYWx0aW1lLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDE2KSxcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiB0cnVlIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVhbERlZmF1bHQgPVxuICAgICAgICAgIHRoaXMuZGVmYXVsdCB8fCB0aGlzLm1hbmFnZXI/LnJlcXVpcmVkXG4gICAgICAgICAgICA/IGxvY2Fsbm93LnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDE2KVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lucHV0LmRhdGUnOlxuICAgICAgICBjb25zdCBkdCA9IHRoaXMubW9kZWwudG9Kc29uKFt0aGlzLmZpZWxkXSlbdGhpcy5maWVsZF07XG4gICAgICAgIHRoaXMuZmchLmNvbnRyb2xzW3RoaXMuZmllbGRdLnNldFZhbHVlKGR0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbnB1dC5kZWNpbWFsJzpcbiAgICAgICAgdGhpcy5mZyEuY29udHJvbHNbdGhpcy5maWVsZF0uc2V0VmFsdWUoXG4gICAgICAgICAgKHRoaXMubW9kZWwgYXMgYW55KVt0aGlzLmZpZWxkXSAvXG4gICAgICAgICAgICAoKHRoaXMubWFuYWdlciBhcyB1bmtub3duIGFzIERlY2ltYWxGaWVsZE1hbmFnZXIpLmZhY3RvciB8fCAxKVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEVkaXRvckNsYXNzZXMoKSB7XG4gICAgLy8gRklYTUU6IHVzZSByZWFsRWRpdG9yQ2xhc3Nlc1xuICAgIGlmICghdGhpcy5pbnB1dENsYXNzZXMpIHtcbiAgICAgIHRoaXMuaW5wdXRDbGFzc2VzID1cbiAgICAgICAgdGhpcy5kY29uZi5kaXNwRWRpdC5pbnB1dENsYXNzZXNbdGhpcy5yZWFsRWRpdG9yXSB8fCAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXREaXNwbGF5VmFsdWUoKSB7XG4gICAgY29uc3QgdmFsdWUgPSAodGhpcy5tb2RlbCBhcyBhbnkpW3RoaXMuZmllbGRdO1xuICAgIHRoaXMuZGlzcFZhbHVlID0gdmFsdWU7XG4gICAgaWYgKHRoaXMucmVhbENob2ljZXMpIHtcbiAgICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLnJlYWxDaG9pY2VzKSB7XG4gICAgICAgIGlmIChjID09PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudHh0VmFsdWUgPSBjIGFzIGFueTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoYy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGMudmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgdGhpcy50eHRWYWx1ZSA9IGMuZGVzYztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gU2V0IGRpc3BsYXkgdGV4dCBkZXBlbmRpbmcgb24gdmFsdWUgYW5kIHJlYWxEaXNwbGF5IHZhbHVlXG4gICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnR4dFZhbHVlID0gJ09VSSc7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMudHh0VmFsdWUgPSAnTk9OJztcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHRoaXMudHh0VmFsdWUgPSAnbm9uIGTDqWZpbmknO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucmVhbERpc3BsYXkpIHtcbiAgICAgICAgY2FzZSAnZmtkZXRhaWxzJzpcbiAgICAgICAgICBjb25zdCBkZXRhaWxzID0gKHRoaXMubW9kZWwgYXMgYW55KVtgJHt0aGlzLmZpZWxkfV9kZXRhaWxzYF0gYXMgYW55O1xuICAgICAgICAgIHRoaXMudHh0VmFsdWUgPSB0aGlzLl9kaXNwbGF5KGRldGFpbHMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtMm1kZXRhaWxzJzpcbiAgICAgICAgICBjb25zdCBtMm1EZXRhaWxzID1cbiAgICAgICAgICAgIHRoaXMubTJtVmFsdWVzIHx8XG4gICAgICAgICAgICAoKHRoaXMubW9kZWwgYXMgYW55KVtgJHt0aGlzLmZpZWxkfV9kZXRhaWxzYF0gYXMgYW55W10pO1xuICAgICAgICAgIHRoaXMudHh0VmFsdWVzID0gW107XG4gICAgICAgICAgZm9yIChjb25zdCB2IG9mIG0ybURldGFpbHMpIHtcbiAgICAgICAgICAgIHRoaXMudHh0VmFsdWVzLnB1c2godGhpcy5fZGlzcGxheSh2KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkZWNpbWFsJzpcbiAgICAgICAgICB0aGlzLnR4dFZhbHVlID0gYCR7XG4gICAgICAgICAgICB2YWx1ZSAvXG4gICAgICAgICAgICAoKHRoaXMubWFuYWdlciBhcyB1bmtub3duIGFzIERlY2ltYWxGaWVsZE1hbmFnZXIpLmZhY3RvciB8fCAxKVxuICAgICAgICAgIH1gO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMudHh0VmFsdWUgPSBgJHt2YWx1ZX1gO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldERpc3BsYXlDbGFzc2VzKCkge31cbn1cbiIsIlxuPG5nLXRlbXBsYXRlICN0aXRsZVRwbD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGlzcFRwbD5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicmVhbERpc3BsYXlcIj48c3BhbiBjbGFzcz1cImVkaXRhYmxlIGRpc3AtdGV4dFwiICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIiAoY2xpY2spPVwiZW5hYmxlRWRpdE1vZGUoKVwiPnt7dHh0VmFsdWV9fTwvc3Bhbj48c3BhbiBjbGFzcz1cImVkaXRhYmxlIGRpc3AtY2hvaWNlXCIgKm5nU3dpdGNoQ2FzZT1cIidjaG9pY2UnXCIgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIj57e3R4dFZhbHVlfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJlZGl0YWJsZSBkaXNwLWRlY2ltYWxcIiAqbmdTd2l0Y2hDYXNlPVwiJ2RlY2ltYWwnXCIgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIj57e3R4dFZhbHVlfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJlZGl0YWJsZSBkaXNwLWJvb2xlYW5cIiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCIgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIj57e3R4dFZhbHVlfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJlZGl0YWJsZSBkaXNwLWZrZGV0YWlsc1wiICpuZ1N3aXRjaENhc2U9XCInZmtkZXRhaWxzJ1wiIChjbGljayk9XCJlbmFibGVFZGl0TW9kZSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmtpdGVtXCI+e3t0eHRWYWx1ZX19PC9kaXY+PC9zcGFuPjxzcGFuIGNsYXNzPVwiZWRpdGFibGUgZGlzcC1tMm1kZXRhaWxzXCIgKm5nU3dpdGNoQ2FzZT1cIidtMm1kZXRhaWxzJ1wiIChjbGljayk9XCJlbmFibGVFZGl0TW9kZSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibTJtaXRlbVwiICpuZ0Zvcj1cImxldCB2IG9mIHR4dFZhbHVlc1wiPnt7dn19PC9kaXY+PC9zcGFuPjxzcGFuIGNsYXNzPVwiZWRpdGFibGUgZGlzcC1kYXRldGltZVwiICpuZ1N3aXRjaENhc2U9XCInZGF0ZXRpbWUnXCIgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwVmFsdWVcIj57e3R4dFZhbHVlfGRhdGU6J3Nob3J0J319PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRpc3BWYWx1ZVwiPnt7dHh0VmFsdWV9fTwvbmctY29udGFpbmVyPjwvc3Bhbj48c3BhbiBjbGFzcz1cImVkaXRhYmxlIGRpc3AtZGF0ZXRpbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCIgKGNsaWNrKT1cImVuYWJsZUVkaXRNb2RlKClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwVmFsdWVcIj57e3R4dFZhbHVlfGRhdGU6J3Nob3J0RGF0ZSd9fTwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkaXNwVmFsdWVcIj57e3R4dFZhbHVlfX08L25nLWNvbnRhaW5lcj48L3NwYW4+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNlZGl0VHBsIGxldC1mb3JtPVwiZm9ybVwiPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJyZWFsRWRpdG9yXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LnRleHQnXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoZmllbGQpXCIgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc2VzXCIgKGtleXVwLmVzY2FwZSk9XCJ1bnNldEVkaXQoKVwiIFtwbGFjZWhvbGRlcl09XCJyZWFsUGxhY2Vob2xkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRleHRcIiAqbmdJZj1cInJlYWxIZWxwXCI+e3tyZWFsSGVscH19PHNwYW4gY2xhc3M9XCJtcy0xXCIgKm5nSWY9XCJyZXF1aXJlZFwiPihyZXF1aXMpPC9zcGFuPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsnbWlubGVuZ3RoJ11cIj5Ucm9wIGNvdXJ0IDoge3skYW55KG1hbmFnZXIpLm1pbkxlbmd0aH19IGNhcmFjdMOocmVzIG1pbmltdW0uLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21heGxlbmd0aCddXCI+VHJvcCBsb25nIDoge3skYW55KG1hbmFnZXIpLm1heExlbmd0aH19IGNhcmFjdMOocmVzIG1heGltdW0uLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPkZvcm1hdCBpbnZhbGlkZS4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkNlIGNoYW1wIGVzdCByZXF1aXMuLi48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW5wdXQuZW1haWwnXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KGZpZWxkKVwiIFtuZ0NsYXNzXT1cImlucHV0Q2xhc3Nlc1wiIChrZXl1cC5lc2NhcGUpPVwidW5zZXRFZGl0KClcIiBbcGxhY2Vob2xkZXJdPVwicmVhbFBsYWNlaG9sZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCIgKm5nSWY9XCJyZWFsSGVscFwiPnt7cmVhbEhlbHB9fTxzcGFuIGNsYXNzPVwibXMtMVwiICpuZ0lmPVwicmVxdWlyZWRcIj4ocmVxdWlzKTwvc3Bhbj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21pbmxlbmd0aCddXCI+VHJvcCBjb3VydCA6IHt7JGFueShtYW5hZ2VyKS5taW5MZW5ndGh9fSBjYXJhY3TDqHJlcyBtaW5pbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydtYXhsZW5ndGgnXVwiPlRyb3AgbG9uZyA6IHt7JGFueShtYW5hZ2VyKS5tYXhMZW5ndGh9fSBjYXJhY3TDqHJlcyBtYXhpbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5Gb3JtYXQgaW52YWxpZGUuLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ2VtYWlsJ11cIj5Gb3JtYXQgZCdlbWFpbCBpbnZhbGlkZS4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkNlIGNoYW1wIGVzdCByZXF1aXMuLi48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW5wdXQucGFzc3dvcmQnXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KGZpZWxkKVwiIFtuZ0NsYXNzXT1cImlucHV0Q2xhc3Nlc1wiIChrZXl1cC5lc2NhcGUpPVwidW5zZXRFZGl0KClcIiBbcGxhY2Vob2xkZXJdPVwicmVhbFBsYWNlaG9sZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCIgKm5nSWY9XCJyZWFsSGVscFwiPnt7cmVhbEhlbHB9fTxzcGFuIGNsYXNzPVwibXMtMVwiICpuZ0lmPVwicmVxdWlyZWRcIj4ocmVxdWlzKTwvc3Bhbj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21pbmxlbmd0aCddXCI+VHJvcCBjb3VydCA6IHt7JGFueShtYW5hZ2VyKS5taW5MZW5ndGh9fSBjYXJhY3TDqHJlcyBtaW5pbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydtYXhsZW5ndGgnXVwiPlRyb3AgbG9uZyA6IHt7JGFueShtYW5hZ2VyKS5tYXhMZW5ndGh9fSBjYXJhY3TDqHJlcyBtYXhpbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5Gb3JtYXQgaW52YWxpZGUuLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5DZSBjaGFtcCBlc3QgcmVxdWlzLi4uPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LmRhdGV0aW1lJ1wiPlxuICAgICAgPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmdldChmaWVsZClcIiBbbmdDbGFzc109XCJpbnB1dENsYXNzZXNcIiAoa2V5dXAuZXNjYXBlKT1cInVuc2V0RWRpdCgpXCIgKGtleXVwLmVudGVyKT1cInVwZGF0ZSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCI+e3tyZWFsSGVscH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydyZXF1aXJlZCddXCI+Q2UgY2hhbXAgZXN0IHJlcXVpcy4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsnbWluRGF0ZSddXCI+RG9pdCDDqnRyZSBwb3N0w6lyaWV1ciDDoCAge3skYW55KG1hbmFnZXIpLm1pbnxkYXRlOidzaG9ydCd9fS4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsnbWF4RGF0ZSddXCI+RG9pdCDDqnRyZSBhbnTDqXJpZXVyIMOgICB7eyRhbnkobWFuYWdlcikubWF4fGRhdGU6J3Nob3J0J319Li4uPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LmRhdGUnXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoZmllbGQpXCIgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc2VzXCIgKGtleXVwLmVzY2FwZSk9XCJ1bnNldEVkaXQoKVwiIChrZXl1cC5lbnRlcik9XCJ1cGRhdGUoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dFwiPnt7cmVhbEhlbHB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkNlIGNoYW1wIGVzdCByZXF1aXMuLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21pbkRhdGUnXVwiPkRvaXQgw6p0cmUgcG9zdMOpcmlldXIgw6AgIHt7JGFueShtYW5hZ2VyKS5taW58ZGF0ZTonc2hvcnQnfX0uLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21heERhdGUnXVwiPkRvaXQgw6p0cmUgYW50w6lyaWV1ciDDoCAge3skYW55KG1hbmFnZXIpLm1heHxkYXRlOidzaG9ydCd9fS4uLjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbnB1dC5udW1iZXInXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmdldChmaWVsZClcIiBbbmdDbGFzc109XCJpbnB1dENsYXNzZXNcIiAoa2V5dXAuZXNjYXBlKT1cInVuc2V0RWRpdCgpXCIgW3BsYWNlaG9sZGVyXT1cInJlYWxQbGFjZWhvbGRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dFwiICpuZ0lmPVwicmVhbEhlbHBcIj57e3JlYWxIZWxwfX08c3BhbiBjbGFzcz1cIm1zLTFcIiAqbmdJZj1cInJlcXVpcmVkXCI+KHJlcXVpcyk8L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydtaW4nXVwiPlRyb3AgcGV0aXQgOiBtaW5pbXVtIHt7JGFueShtYW5hZ2VyKS5taW59fS4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsnbWF4J11cIj5Ucm9wIGdyYW5kIDogbWF4aW11bSB7eyRhbnkobWFuYWdlcikubWF4fX0uLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5DZSBjaGFtcCBlc3QgcmVxdWlzLi4uPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LmRlY2ltYWwnXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmdldChmaWVsZClcIiBbbmdDbGFzc109XCJpbnB1dENsYXNzZXNcIiAoa2V5dXAuZXNjYXBlKT1cInVuc2V0RWRpdCgpXCIgW3BsYWNlaG9sZGVyXT1cInJlYWxQbGFjZWhvbGRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dFwiICpuZ0lmPVwicmVhbEhlbHBcIj57e3JlYWxIZWxwfX08c3BhbiBjbGFzcz1cIm1zLTFcIiAqbmdJZj1cInJlcXVpcmVkXCI+KHJlcXVpcyk8L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydtaW4nXVwiPlRyb3AgcGV0aXQgOiBtaW5pbXVtIHt7JGFueShtYW5hZ2VyKS5taW59fS4uLjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbXQtMFwiIFtjbGFzcy5kLWJsb2NrXT1cImZvcm0gJmFtcDsmYW1wOyAhZm9ybS5jb250cm9sc1tmaWVsZF0ucHJpc3RpbmUgJmFtcDsmYW1wOyBmb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnM/LlsnbWF4J11cIj5Ucm9wIGdyYW5kIDogbWF4aW11bSB7eyRhbnkobWFuYWdlcikubWF4fX0uLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5DZSBjaGFtcCBlc3QgcmVxdWlzLi4uPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0LmNoZWNrYm94J1wiPlxuICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmdldChmaWVsZClcIiAoa2V5dXAuZXNjYXBlKT1cInVuc2V0RWRpdCgpXCIgKGNoYW5nZSk9XCJ1cGRhdGUoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dFwiPnt7cmVhbEhlbHB9fTwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0YXJlYSdcIj5cbiAgICAgIDx0ZXh0YXJlYSBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoZmllbGQpXCIgKGtleXVwLmVzY2FwZSk9XCJ1bnNldEVkaXQoKVwiIFtuZ0NsYXNzXT1cImlucHV0Q2xhc3Nlc1wiIChrZXl1cC5jb250cm9sLmVudGVyKT1cInVwZGF0ZSgpXCIgW3BsYWNlaG9sZGVyXT1cInJlYWxQbGFjZWhvbGRlclwiPjwvdGV4dGFyZWE+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCIgKm5nSWY9XCJyZWFsSGVscFwiPnt7cmVhbEhlbHB9fTxzcGFuIGNsYXNzPVwibXMtMVwiICpuZ0lmPVwicmVxdWlyZWRcIj4ocmVxdWlzKTwvc3Bhbj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ21pbmxlbmd0aCddXCI+VHJvcCBjb3VydCA6IHt7JGFueShtYW5hZ2VyKS5taW5MZW5ndGh9fSBjYXJhY3TDqHJlcyBtaW5pbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydtYXhsZW5ndGgnXVwiPlRyb3AgbG9uZyA6IHt7JGFueShtYW5hZ2VyKS5tYXhMZW5ndGh9fSBjYXJhY3TDqHJlcyBtYXhpbXVtLi4uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtdC0wXCIgW2NsYXNzLmQtYmxvY2tdPVwiZm9ybSAmYW1wOyZhbXA7ICFmb3JtLmNvbnRyb2xzW2ZpZWxkXS5wcmlzdGluZSAmYW1wOyZhbXA7IGZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5Gb3JtYXQgaW52YWxpZGUuLi48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG10LTBcIiBbY2xhc3MuZC1ibG9ja109XCJmb3JtICZhbXA7JmFtcDsgIWZvcm0uY29udHJvbHNbZmllbGRdLnByaXN0aW5lICZhbXA7JmFtcDsgZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5DZSBjaGFtcCBlc3QgcmVxdWlzLi4uPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Zrc2VsZWN0J1wiPlxuICAgICAgPGRhdGEtZmtzZWxlY3QgW2NvbGxlY3Rpb25dPVwiY29sbGVjdGlvblwiIFtmaWx0ZXJdPVwiZmlsdGVyXCIgKHNlbGVjdGVkKT1cInNlbGVjdGVkUmVmSXRlbSgkZXZlbnQpXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgKGNhbmNlbGxlZCk9XCJ1bnNldEVkaXQoKVwiIChjbGVhcmVkKT1cInNlbGVjdGVkUmVmSXRlbShudWxsKVwiPjwvZGF0YS1ma3NlbGVjdD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbTJtc2VsZWN0J1wiPlxuICAgICAgPGRhdGEtbTJtc2VsZWN0IFtjb2xsZWN0aW9uXT1cImNvbGxlY3Rpb25cIiBbZmlsdGVyXT1cImZpbHRlclwiIChjaGFuZ2VkKT1cInVwZGF0ZSgpXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KGZpZWxkKVwiIChkZXRhaWxzQ2hhbmdlZCk9XCJvbk0yTVZhbHVlc0NoYW5nZXMoJGV2ZW50KVwiIFttb2RlbF09XCJtb2RlbFwiIFtmaWVsZF09XCJmaWVsZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiPjwvZGF0YS1tMm1zZWxlY3Q+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdCdcIj5cbiAgICAgIDxzZWxlY3QgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KGZpZWxkKVwiIChrZXl1cC5lc2NhcGUpPVwidW5zZXRFZGl0KClcIiAoY2hhbmdlKT1cInVwZGF0ZSgpXCIgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc2VzXCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGMgb2YgcmVhbENob2ljZXNcIiBbbmdWYWx1ZV09XCJjLnZhbHVlIT09dW5kZWZpbmVkID8gYy52YWx1ZSA6IGNcIj57e2MuZGVzYyA/IGMuZGVzYyA6IGN9fTwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCI+e3tyZWFsSGVscH19PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjwhLS0gRGlzcC9lZGl0IHRvZ2dsZXItLT5cbjxuZy10ZW1wbGF0ZSAjZGlzcGVkaXRUcGw+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZWRpdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkaXNwVHBsXCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmZ1wiPlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmZ1wiIChzdWJtaXQpPVwidXBkYXRlKClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXRUcGw7IGNvbnRleHQ6IHtmb3JtOiBmZ31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPCEtLSBEaXNwRWRpdCBub2Zvcm0tLT5cbjxuZy10ZW1wbGF0ZSAjZGlzcGVkaXRGb3JtVHBsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVkaXRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcFRwbFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXRUcGw7IGNvbnRleHQ6IHtmb3JtOiBmb3JtfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48IS0tIERkIGRpc3BsYXktLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlPT09J2RkJ1wiPlxuICA8ZHQgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkXCIgKm5nSWY9XCIhaGlkZUxhYmVsXCI+PHNwYW4gY2xhc3M9XCJlZGl0YWJsZVwiIChjbGljayk9XCJ0b2dnbGVFZGl0KClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRwbFwiPjwvbmctY29udGFpbmVyPjwvc3Bhbj48c3BhbiBjbGFzcz1cInBvaW50ZXIgZmxvYXQtZW5kXCIgKGNsaWNrKT1cInNldERlZmF1bHQoKVwiICpuZ0lmPVwicmVhbERlZmF1bHQhPT0gdW5kZWZpbmVkICZhbXA7JmFtcDsgZWRpdFwiPjxpIGNsYXNzPVwiYmkgYmktdHJhc2ggbXMtMlwiPjwvaT48L3NwYW4+PC9kdD5cbiAgPGRkIFtjbGFzcy5tYi0wXT1cImhpZGVMYWJlbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkaXNwZWRpdFRwbFwiPjwvbmctY29udGFpbmVyPlxuICA8L2RkPlxuPC9uZy1jb250YWluZXI+XG48IS0tIElubGluZSBkaXNwbGF5LS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwibW9kZT09PSdpbmxpbmUnXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZUxhYmVsXCI+PHNwYW4gY2xhc3M9XCJwb2ludGVyIGZsb2F0LWVuZFwiIChjbGljayk9XCJzZXREZWZhdWx0KClcIiAqbmdJZj1cInJlYWxEZWZhdWx0IT09IHVuZGVmaW5lZCAmYW1wOyZhbXA7IGVkaXRcIj48aSBjbGFzcz1cImJpIGJpLXRyYXNoIG1zLTJcIj48L2k+PC9zcGFuPlxuICAgIDxsYWJlbCBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGVkaXRUcGxcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPCEtLSBGb3JtIGRpc3BsYXktLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlPT09J2Zvcm0nXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZUxhYmVsXCI+PHNwYW4gY2xhc3M9XCJwb2ludGVyIGZsb2F0LWVuZFwiIChjbGljayk9XCJzZXREZWZhdWx0KClcIiAqbmdJZj1cInJlYWxEZWZhdWx0IT09IHVuZGVmaW5lZCAmYW1wOyZhbXA7IGVkaXRcIj48aSBjbGFzcz1cImJpIGJpLXRyYXNoIG1zLTJcIj48L2k+PC9zcGFuPlxuICAgIDxsYWJlbCBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGVkaXRGb3JtVHBsXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -32,10 +32,10 @@ export class FactorPipe {
32
32
  const num = strToNumber(fvalue);
33
33
  return formatNumber(num / factor, locale, digitsInfo);
34
34
  }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FactorPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }
36
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: FactorPipe, isStandalone: true, name: "factor" }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FactorPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }
36
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: FactorPipe, isStandalone: true, name: "factor" }); }
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FactorPipe, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FactorPipe, decorators: [{
39
39
  type: Pipe,
40
40
  args: [{
41
41
  name: 'factor',
@@ -65,10 +65,10 @@ export class PFactorPipe {
65
65
  const num = strToNumber(fvalue);
66
66
  return formatNumber(num / factor, locale, digitsInfo);
67
67
  }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PFactorPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }
69
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: PFactorPipe, isStandalone: true, name: "pfactor" }); }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: PFactorPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }
69
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: PFactorPipe, isStandalone: true, name: "pfactor" }); }
70
70
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PFactorPipe, decorators: [{
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: PFactorPipe, decorators: [{
72
72
  type: Pipe,
73
73
  args: [{
74
74
  name: 'pfactor',
@@ -78,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
78
78
  type: Inject,
79
79
  args: [LOCALE_ID]
80
80
  }] }] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvZGlzcGVkaXQvZmFjdG9yLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRS9DLE1BQU0sVUFBVSxPQUFPLENBQ3JCLEtBQXlDO0lBRXpDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBc0I7SUFDaEQsNkJBQTZCO0lBQzdCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUMxRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN0QjtJQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLGtCQUFrQixDQUFDLENBQUM7S0FDN0M7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFNRCxNQUFNLE9BQU8sVUFBVTtJQUNyQixZQUF1QyxPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFFMUQsU0FBUyxDQUNQLEtBQWUsRUFDZixLQUFhLEVBQ2IsVUFBbUIsRUFDbkIsTUFBZTtRQUVmLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2hDLE1BQU0sTUFBTSxHQUFJLEtBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxNQUFNLEdBQUksT0FBZSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNyQixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsT0FBTyxZQUFZLENBQUMsR0FBRyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs4R0FwQlUsVUFBVSxrQkFDRCxTQUFTOzRHQURsQixVQUFVOzsyRkFBVixVQUFVO2tCQUp0QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBRWMsTUFBTTsyQkFBQyxTQUFTOztBQTBCL0IsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBdUMsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0lBRTFELFNBQVMsQ0FDUCxLQUF5QyxFQUN6QyxLQUFlLEVBQ2YsS0FBYSxFQUNiLFVBQW1CLEVBQ25CLE1BQWU7UUFFZixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFeEIsTUFBTSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2hDLHVDQUF1QztRQUN2QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyx5QkFBeUI7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksTUFBTSxHQUFJLE9BQWUsQ0FBQyxNQUFNLENBQUM7UUFDckMsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDckIsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sWUFBWSxDQUFDLEdBQUcsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OEdBdEJVLFdBQVcsa0JBQ0YsU0FBUzs0R0FEbEIsV0FBVzs7MkZBQVgsV0FBVztrQkFKdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQUVjLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTE9DQUxFX0lELCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsdWUoXG4gIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiB2YWx1ZSBpcyBudW1iZXIgfCBzdHJpbmcge1xuICByZXR1cm4gISh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJyB8fCB2YWx1ZSAhPT0gdmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyVG9OdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG4gIC8vIENvbnZlcnQgc3RyaW5ncyB0byBudW1iZXJzXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihOdW1iZXIodmFsdWUpIC0gcGFyc2VGbG9hdCh2YWx1ZSkpKSB7XG4gICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dmFsdWV9IGlzIG5vdCBhIG51bWJlcmApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnZmFjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmFjdG9yUGlwZTxUIGV4dGVuZHMgRGF0YU1vZGVsPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmcpIHt9XG5cbiAgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBUIHwgbnVsbCxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIGRpZ2l0c0luZm8/OiBzdHJpbmcsXG4gICAgbG9jYWxlPzogc3RyaW5nXG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5fbG9jYWxlO1xuICAgIGNvbnN0IGZ2YWx1ZSA9ICh2YWx1ZSBhcyBhbnkpW2ZpZWxkXTtcbiAgICBpZiAoIWlzVmFsdWUoZnZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgbWFuYWdlciA9IHZhbHVlLkZNKGZpZWxkKTtcbiAgICBsZXQgZmFjdG9yID0gKG1hbmFnZXIgYXMgYW55KS5mYWN0b3I7XG4gICAgZmFjdG9yID0gZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0TnVtYmVyKG51bSAvIGZhY3RvciwgbG9jYWxlLCBkaWdpdHNJbmZvKTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdwZmFjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUEZhY3RvclBpcGU8VCBleHRlbmRzIERhdGFNb2RlbD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nKSB7fVxuXG4gIHRyYW5zZm9ybShcbiAgICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBtb2RlbDogVCB8IG51bGwsXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBkaWdpdHNJbmZvPzogc3RyaW5nLFxuICAgIGxvY2FsZT86IHN0cmluZ1xuICApOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIW1vZGVsKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcblxuICAgIGxvY2FsZSA9IGxvY2FsZSB8fCB0aGlzLl9sb2NhbGU7XG4gICAgLy8gVXNlIHZhbHVlIGZyb20gaW5wdXQsIG5vdCBmcm9tIG1vZGVsXG4gICAgY29uc3QgZnZhbHVlID0gdmFsdWU7IC8vIChtb2RlbCBhcyBhbnkpW2ZpZWxkXTtcbiAgICBpZiAoIWlzVmFsdWUoZnZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgbWFuYWdlciA9IG1vZGVsLkZNKGZpZWxkKTtcbiAgICBsZXQgZmFjdG9yID0gKG1hbmFnZXIgYXMgYW55KS5mYWN0b3I7XG4gICAgZmFjdG9yID0gZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0TnVtYmVyKG51bSAvIGZhY3RvciwgbG9jYWxlLCBkaWdpdHNJbmZvKTtcbiAgfVxufVxuIl19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvZGlzcGVkaXQvZmFjdG9yLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRS9DLE1BQU0sVUFBVSxPQUFPLENBQ3JCLEtBQXlDO0lBRXpDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBc0I7SUFDaEQsNkJBQTZCO0lBQzdCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLGtCQUFrQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQU1ELE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFlBQXVDLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQUcsQ0FBQztJQUUxRCxTQUFTLENBQ1AsS0FBZSxFQUNmLEtBQWEsRUFDYixVQUFtQixFQUNuQixNQUFlO1FBRWYsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2hDLE1BQU0sTUFBTSxHQUFJLEtBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxNQUFNLEdBQUksT0FBZSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNyQixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsT0FBTyxZQUFZLENBQUMsR0FBRyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs4R0FwQlUsVUFBVSxrQkFDRCxTQUFTOzRHQURsQixVQUFVOzsyRkFBVixVQUFVO2tCQUp0QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBRWMsTUFBTTsyQkFBQyxTQUFTOztBQTBCL0IsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBdUMsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0lBRTFELFNBQVMsQ0FDUCxLQUF5QyxFQUN6QyxLQUFlLEVBQ2YsS0FBYSxFQUNiLFVBQW1CLEVBQ25CLE1BQWU7UUFFZixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFeEIsTUFBTSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2hDLHVDQUF1QztRQUN2QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyx5QkFBeUI7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksTUFBTSxHQUFJLE9BQWUsQ0FBQyxNQUFNLENBQUM7UUFDckMsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDckIsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sWUFBWSxDQUFDLEdBQUcsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OEdBdEJVLFdBQVcsa0JBQ0YsU0FBUzs0R0FEbEIsV0FBVzs7MkZBQVgsV0FBVztrQkFKdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQUVjLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTE9DQUxFX0lELCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsdWUoXG4gIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiB2YWx1ZSBpcyBudW1iZXIgfCBzdHJpbmcge1xuICByZXR1cm4gISh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJyB8fCB2YWx1ZSAhPT0gdmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyVG9OdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG4gIC8vIENvbnZlcnQgc3RyaW5ncyB0byBudW1iZXJzXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihOdW1iZXIodmFsdWUpIC0gcGFyc2VGbG9hdCh2YWx1ZSkpKSB7XG4gICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dmFsdWV9IGlzIG5vdCBhIG51bWJlcmApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnZmFjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmFjdG9yUGlwZTxUIGV4dGVuZHMgRGF0YU1vZGVsPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmcpIHt9XG5cbiAgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBUIHwgbnVsbCxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIGRpZ2l0c0luZm8/OiBzdHJpbmcsXG4gICAgbG9jYWxlPzogc3RyaW5nXG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5fbG9jYWxlO1xuICAgIGNvbnN0IGZ2YWx1ZSA9ICh2YWx1ZSBhcyBhbnkpW2ZpZWxkXTtcbiAgICBpZiAoIWlzVmFsdWUoZnZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgbWFuYWdlciA9IHZhbHVlLkZNKGZpZWxkKTtcbiAgICBsZXQgZmFjdG9yID0gKG1hbmFnZXIgYXMgYW55KS5mYWN0b3I7XG4gICAgZmFjdG9yID0gZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0TnVtYmVyKG51bSAvIGZhY3RvciwgbG9jYWxlLCBkaWdpdHNJbmZvKTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdwZmFjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUEZhY3RvclBpcGU8VCBleHRlbmRzIERhdGFNb2RlbD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nKSB7fVxuXG4gIHRyYW5zZm9ybShcbiAgICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBtb2RlbDogVCB8IG51bGwsXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBkaWdpdHNJbmZvPzogc3RyaW5nLFxuICAgIGxvY2FsZT86IHN0cmluZ1xuICApOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIW1vZGVsKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcblxuICAgIGxvY2FsZSA9IGxvY2FsZSB8fCB0aGlzLl9sb2NhbGU7XG4gICAgLy8gVXNlIHZhbHVlIGZyb20gaW5wdXQsIG5vdCBmcm9tIG1vZGVsXG4gICAgY29uc3QgZnZhbHVlID0gdmFsdWU7IC8vIChtb2RlbCBhcyBhbnkpW2ZpZWxkXTtcbiAgICBpZiAoIWlzVmFsdWUoZnZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgbWFuYWdlciA9IG1vZGVsLkZNKGZpZWxkKTtcbiAgICBsZXQgZmFjdG9yID0gKG1hbmFnZXIgYXMgYW55KS5mYWN0b3I7XG4gICAgZmFjdG9yID0gZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0TnVtYmVyKG51bSAvIGZhY3RvciwgbG9jYWxlLCBkaWdpdHNJbmZvKTtcbiAgfVxufVxuIl19
@@ -31,10 +31,10 @@ export class FactorcPipe {
31
31
  const num = strToNumber(fvalue);
32
32
  return formatCurrency(num / factor, locale, currency, currencyCode, digitsInfo);
33
33
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FactorcPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe }); }
35
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: FactorcPipe, isStandalone: true, name: "factorc" }); }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FactorcPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe }); }
35
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: FactorcPipe, isStandalone: true, name: "factorc" }); }
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FactorcPipe, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: FactorcPipe, decorators: [{
38
38
  type: Pipe,
39
39
  args: [{
40
40
  name: 'factorc',
@@ -80,10 +80,10 @@ export class PFactorcPipe {
80
80
  const num = strToNumber(fvalue);
81
81
  return formatCurrency(num / factor, locale, currency, currencyCode, digitsInfo);
82
82
  }
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PFactorcPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe }); }
84
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: PFactorcPipe, isStandalone: true, name: "pfactorc" }); }
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: PFactorcPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe }); }
84
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: PFactorcPipe, isStandalone: true, name: "pfactorc" }); }
85
85
  }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PFactorcPipe, decorators: [{
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: PFactorcPipe, decorators: [{
87
87
  type: Pipe,
88
88
  args: [{
89
89
  name: 'pfactorc',
@@ -96,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
96
96
  type: Inject,
97
97
  args: [DEFAULT_CURRENCY_CODE]
98
98
  }] }] });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2Rpc3BlZGl0L2ZhY3RvcmMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxHQUVMLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFNcEUsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDNkIsT0FBZSxFQUNILHVCQUErQixLQUFLO1FBRGhELFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDSCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWdCO0lBQzFFLENBQUM7SUFFSixTQUFTLENBQ1AsS0FBZSxFQUNmLEtBQWEsRUFDYixZQUFxQixFQUNyQixPQUFzRCxFQUN0RCxVQUFtQixFQUNuQixNQUFlO1FBRWYsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4QixNQUFNLE1BQU0sR0FBSSxLQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDaEMsSUFBSSxRQUFRLEdBQVcsWUFBWSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxHQUFHLFFBQVEsQ0FBQztTQUNwQjtRQUNELElBQUksT0FBTyxLQUFLLE1BQU0sRUFBRTtZQUN0QixJQUFJLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxLQUFL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QUFNOzJCQUFDLFNBQVM7OzBCQUNoQixNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERFRkFVTFRfQ1VSUkVOQ1lfQ09ERSxcbiAgSW5qZWN0LFxuICBMT0NBTEVfSUQsXG4gIFBpcGUsXG4gIFBpcGVUcmFuc2Zvcm0sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi4vZGF0YS9kYXRhLW1vZGVsJztcbmltcG9ydCB7IGlzVmFsdWUsIHN0clRvTnVtYmVyIH0gZnJvbSAnLi9mYWN0b3IucGlwZSc7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSwgZ2V0Q3VycmVuY3lTeW1ib2wgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdmYWN0b3JjJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmFjdG9yY1BpcGU8VCBleHRlbmRzIERhdGFNb2RlbD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nLFxuICAgIEBJbmplY3QoREVGQVVMVF9DVVJSRU5DWV9DT0RFKSBwcml2YXRlIF9kZWZhdWx0Q3VycmVuY3lDb2RlOiBzdHJpbmcgPSAnRVVSJ1xuICApIHt9XG5cbiAgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBUIHwgbnVsbCxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIGN1cnJlbmN5Q29kZT86IHN0cmluZyxcbiAgICBkaXNwbGF5PzogJ2NvZGUnIHwgJ3N5bWJvbCcgfCAnc3ltYm9sLW5hcnJvdycgfCBzdHJpbmcsXG4gICAgZGlnaXRzSW5mbz86IHN0cmluZyxcbiAgICBsb2NhbGU/OiBzdHJpbmdcbiAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZnZhbHVlID0gKHZhbHVlIGFzIGFueSlbZmllbGRdO1xuICAgIGlmICghaXNWYWx1ZShmdmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICBsb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5fbG9jYWxlO1xuICAgIGxldCBjdXJyZW5jeTogc3RyaW5nID0gY3VycmVuY3lDb2RlIHx8IHRoaXMuX2RlZmF1bHRDdXJyZW5jeUNvZGU7XG4gICAgaWYgKCFkaXNwbGF5KSB7XG4gICAgICBkaXNwbGF5ID0gJ3N5bWJvbCc7XG4gICAgfVxuICAgIGlmIChkaXNwbGF5ICE9PSAnY29kZScpIHtcbiAgICAgIGlmIChkaXNwbGF5ID09PSAnc3ltYm9sJyB8fCBkaXNwbGF5ID09PSAnc3ltYm9sLW5hcnJvdycpIHtcbiAgICAgICAgY3VycmVuY3kgPSBnZXRDdXJyZW5jeVN5bWJvbChcbiAgICAgICAgICBjdXJyZW5jeSxcbiAgICAgICAgICBkaXNwbGF5ID09PSAnc3ltYm9sJyA/ICd3aWRlJyA6ICduYXJyb3cnLFxuICAgICAgICAgIGxvY2FsZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVuY3kgPSBkaXNwbGF5ITtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtYW5hZ2VyID0gdmFsdWUuRk0oZmllbGQpO1xuICAgIGNvbnN0IGZhY3RvciA9IChtYW5hZ2VyIGFzIGFueSkuZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3koXG4gICAgICBudW0gLyBmYWN0b3IsXG4gICAgICBsb2NhbGUsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgIGRpZ2l0c0luZm9cbiAgICApO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3BmYWN0b3JjJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUEZhY3RvcmNQaXBlPFQgZXh0ZW5kcyBEYXRhTW9kZWw+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIF9sb2NhbGU6IHN0cmluZyxcbiAgICBASW5qZWN0KERFRkFVTFRfQ1VSUkVOQ1lfQ09ERSkgcHJpdmF0ZSBfZGVmYXVsdEN1cnJlbmN5Q29kZTogc3RyaW5nID0gJ0VVUidcbiAgKSB7fVxuXG4gIHRyYW5zZm9ybShcbiAgICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgICBtb2RlbDogVCB8IG51bGwsXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBjdXJyZW5jeUNvZGU/OiBzdHJpbmcsXG4gICAgZGlzcGxheT86ICdjb2RlJyB8ICdzeW1ib2wnIHwgJ3N5bWJvbC1uYXJyb3cnIHwgc3RyaW5nLFxuICAgIGRpZ2l0c0luZm8/OiBzdHJpbmcsXG4gICAgbG9jYWxlPzogc3RyaW5nXG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghbW9kZWwpIHJldHVybiBudWxsO1xuICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuICAgIC8vIFVzZSB2YWx1ZSBmcm9tIGlucHV0LCBub3QgZnJvbSBtb2RlbFxuICAgIGNvbnN0IGZ2YWx1ZSA9IHZhbHVlOyAvLyAobW9kZWwgYXMgYW55KVtmaWVsZF07XG4gICAgaWYgKCFpc1ZhbHVlKGZ2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5fbG9jYWxlO1xuICAgIGxldCBjdXJyZW5jeTogc3RyaW5nID0gY3VycmVuY3lDb2RlIHx8IHRoaXMuX2RlZmF1bHRDdXJyZW5jeUNvZGU7XG4gICAgaWYgKCFkaXNwbGF5KSB7XG4gICAgICBkaXNwbGF5ID0gJ3N5bWJvbCc7XG4gICAgfVxuICAgIGlmIChkaXNwbGF5ICE9PSAnY29kZScpIHtcbiAgICAgIGlmIChkaXNwbGF5ID09PSAnc3ltYm9sJyB8fCBkaXNwbGF5ID09PSAnc3ltYm9sLW5hcnJvdycpIHtcbiAgICAgICAgY3VycmVuY3kgPSBnZXRDdXJyZW5jeVN5bWJvbChcbiAgICAgICAgICBjdXJyZW5jeSxcbiAgICAgICAgICBkaXNwbGF5ID09PSAnc3ltYm9sJyA/ICd3aWRlJyA6ICduYXJyb3cnLFxuICAgICAgICAgIGxvY2FsZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVuY3kgPSBkaXNwbGF5ITtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtYW5hZ2VyID0gbW9kZWwuRk0oZmllbGQpO1xuICAgIGNvbnN0IGZhY3RvciA9IChtYW5hZ2VyIGFzIGFueSkuZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3koXG4gICAgICBudW0gLyBmYWN0b3IsXG4gICAgICBsb2NhbGUsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgIGRpZ2l0c0luZm9cbiAgICApO1xuICB9XG59XG4iXX0=
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2Rpc3BlZGl0L2ZhY3RvcmMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxHQUVMLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFNcEUsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDNkIsT0FBZSxFQUNILHVCQUErQixLQUFLO1FBRGhELFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDSCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWdCO0lBQzFFLENBQUM7SUFFSixTQUFTLENBQ1AsS0FBZSxFQUNmLEtBQWEsRUFDYixZQUFxQixFQUNyQixPQUFzRCxFQUN0RCxVQUFtQixFQUNuQixNQUFlO1FBRWYsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4QixNQUFNLE1BQU0sR0FBSSxLQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDaEMsSUFBSSxRQUFRLEdBQVcsWUFBWSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLEdBQUcsUUFBUSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLE9BQU8sS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN2QixJQUFJLE9BQU8sS0FBSyxRQUFR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WTs7MkZBQVosWUFBWTtrQkFKeEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFHSSxNQUFNOzJCQUFDLFNBQVM7OzBCQUNoQixNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERFRkFVTFRfQ1VSUkVOQ1lfQ09ERSxcbiAgSW5qZWN0LFxuICBMT0NBTEVfSUQsXG4gIFBpcGUsXG4gIFBpcGVUcmFuc2Zvcm0sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi4vZGF0YS9kYXRhLW1vZGVsJztcbmltcG9ydCB7IGlzVmFsdWUsIHN0clRvTnVtYmVyIH0gZnJvbSAnLi9mYWN0b3IucGlwZSc7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSwgZ2V0Q3VycmVuY3lTeW1ib2wgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdmYWN0b3JjJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmFjdG9yY1BpcGU8VCBleHRlbmRzIERhdGFNb2RlbD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nLFxuICAgIEBJbmplY3QoREVGQVVMVF9DVVJSRU5DWV9DT0RFKSBwcml2YXRlIF9kZWZhdWx0Q3VycmVuY3lDb2RlOiBzdHJpbmcgPSAnRVVSJ1xuICApIHt9XG5cbiAgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBUIHwgbnVsbCxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIGN1cnJlbmN5Q29kZT86IHN0cmluZyxcbiAgICBkaXNwbGF5PzogJ2NvZGUnIHwgJ3N5bWJvbCcgfCAnc3ltYm9sLW5hcnJvdycgfCBzdHJpbmcsXG4gICAgZGlnaXRzSW5mbz86IHN0cmluZyxcbiAgICBsb2NhbGU/OiBzdHJpbmdcbiAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZnZhbHVlID0gKHZhbHVlIGFzIGFueSlbZmllbGRdO1xuICAgIGlmICghaXNWYWx1ZShmdmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICBsb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5fbG9jYWxlO1xuICAgIGxldCBjdXJyZW5jeTogc3RyaW5nID0gY3VycmVuY3lDb2RlIHx8IHRoaXMuX2RlZmF1bHRDdXJyZW5jeUNvZGU7XG4gICAgaWYgKCFkaXNwbGF5KSB7XG4gICAgICBkaXNwbGF5ID0gJ3N5bWJvbCc7XG4gICAgfVxuICAgIGlmIChkaXNwbGF5ICE9PSAnY29kZScpIHtcbiAgICAgIGlmIChkaXNwbGF5ID09PSAnc3ltYm9sJyB8fCBkaXNwbGF5ID09PSAnc3ltYm9sLW5hcnJvdycpIHtcbiAgICAgICAgY3VycmVuY3kgPSBnZXRDdXJyZW5jeVN5bWJvbChcbiAgICAgICAgICBjdXJyZW5jeSxcbiAgICAgICAgICBkaXNwbGF5ID09PSAnc3ltYm9sJyA/ICd3aWRlJyA6ICduYXJyb3cnLFxuICAgICAgICAgIGxvY2FsZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVuY3kgPSBkaXNwbGF5ITtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtYW5hZ2VyID0gdmFsdWUuRk0oZmllbGQpO1xuICAgIGNvbnN0IGZhY3RvciA9IChtYW5hZ2VyIGFzIGFueSkuZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3koXG4gICAgICBudW0gLyBmYWN0b3IsXG4gICAgICBsb2NhbGUsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgIGRpZ2l0c0luZm9cbiAgICApO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3BmYWN0b3JjJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUEZhY3RvcmNQaXBlPFQgZXh0ZW5kcyBEYXRhTW9kZWw+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIF9sb2NhbGU6IHN0cmluZyxcbiAgICBASW5qZWN0KERFRkFVTFRfQ1VSUkVOQ1lfQ09ERSkgcHJpdmF0ZSBfZGVmYXVsdEN1cnJlbmN5Q29kZTogc3RyaW5nID0gJ0VVUidcbiAgKSB7fVxuXG4gIHRyYW5zZm9ybShcbiAgICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgICBtb2RlbDogVCB8IG51bGwsXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBjdXJyZW5jeUNvZGU/OiBzdHJpbmcsXG4gICAgZGlzcGxheT86ICdjb2RlJyB8ICdzeW1ib2wnIHwgJ3N5bWJvbC1uYXJyb3cnIHwgc3RyaW5nLFxuICAgIGRpZ2l0c0luZm8/OiBzdHJpbmcsXG4gICAgbG9jYWxlPzogc3RyaW5nXG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghbW9kZWwpIHJldHVybiBudWxsO1xuICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuICAgIC8vIFVzZSB2YWx1ZSBmcm9tIGlucHV0LCBub3QgZnJvbSBtb2RlbFxuICAgIGNvbnN0IGZ2YWx1ZSA9IHZhbHVlOyAvLyAobW9kZWwgYXMgYW55KVtmaWVsZF07XG4gICAgaWYgKCFpc1ZhbHVlKGZ2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5fbG9jYWxlO1xuICAgIGxldCBjdXJyZW5jeTogc3RyaW5nID0gY3VycmVuY3lDb2RlIHx8IHRoaXMuX2RlZmF1bHRDdXJyZW5jeUNvZGU7XG4gICAgaWYgKCFkaXNwbGF5KSB7XG4gICAgICBkaXNwbGF5ID0gJ3N5bWJvbCc7XG4gICAgfVxuICAgIGlmIChkaXNwbGF5ICE9PSAnY29kZScpIHtcbiAgICAgIGlmIChkaXNwbGF5ID09PSAnc3ltYm9sJyB8fCBkaXNwbGF5ID09PSAnc3ltYm9sLW5hcnJvdycpIHtcbiAgICAgICAgY3VycmVuY3kgPSBnZXRDdXJyZW5jeVN5bWJvbChcbiAgICAgICAgICBjdXJyZW5jeSxcbiAgICAgICAgICBkaXNwbGF5ID09PSAnc3ltYm9sJyA/ICd3aWRlJyA6ICduYXJyb3cnLFxuICAgICAgICAgIGxvY2FsZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVuY3kgPSBkaXNwbGF5ITtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtYW5hZ2VyID0gbW9kZWwuRk0oZmllbGQpO1xuICAgIGNvbnN0IGZhY3RvciA9IChtYW5hZ2VyIGFzIGFueSkuZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3koXG4gICAgICBudW0gLyBmYWN0b3IsXG4gICAgICBsb2NhbGUsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgIGRpZ2l0c0luZm9cbiAgICApO1xuICB9XG59XG4iXX0=