@talrace/ngx-noder 0.0.2 → 0.0.4

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 (47) hide show
  1. package/esm2022/lib/+shared/add-link-dialog/add-link-dialog.component.mjs +67 -0
  2. package/esm2022/lib/+shared/editor/core/edit.session.mjs +7 -10
  3. package/esm2022/lib/+shared/editor/core/editor.mjs +7 -5
  4. package/esm2022/lib/+shared/editor/core/helpers/paragraph.helper.mjs +53 -16
  5. package/esm2022/lib/+shared/editor/core/helpers/position.helper.mjs +4 -1
  6. package/esm2022/lib/+shared/editor/core/models/line-info.model.mjs +1 -1
  7. package/esm2022/lib/+shared/editor/core/paging/pages.wrap.mjs +19 -12
  8. package/esm2022/lib/+shared/editor/core/paging/paragraph.mjs +3 -3
  9. package/esm2022/lib/+shared/editor/core/paging/text-line-info.mjs +3 -3
  10. package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-element.model.mjs +3 -2
  11. package/esm2022/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.mjs +4 -3
  12. package/esm2022/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.mjs +4 -4
  13. package/esm2022/lib/+shared/editor/custom-components/table/components/table.component.mjs +116 -10
  14. package/esm2022/lib/+shared/editor/custom-components/table/selection/table-selection.mjs +7 -1
  15. package/esm2022/lib/+shared/editor/editor.component.mjs +6 -4
  16. package/esm2022/lib/+shared/editor/execution/regulator.service.mjs +3 -3
  17. package/esm2022/lib/+shared/editor/operations/helpers/table-operations.helper.mjs +6 -3
  18. package/esm2022/lib/+shared/helpers/revision.helper.mjs +91 -0
  19. package/esm2022/lib/+shared/helpers/validation.helper.mjs +7 -0
  20. package/esm2022/lib/models/generated/cell.model.mjs +1 -1
  21. package/esm2022/public-api.mjs +5 -2
  22. package/fesm2022/talrace-ngx-noder.mjs +384 -79
  23. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  24. package/lib/+shared/add-link-dialog/add-link-dialog.component.d.ts +26 -0
  25. package/lib/+shared/editor/core/editor.d.ts +2 -1
  26. package/lib/+shared/editor/core/helpers/paragraph.helper.d.ts +5 -2
  27. package/lib/+shared/editor/core/models/line-info.model.d.ts +1 -0
  28. package/lib/+shared/editor/core/paging/pages.wrap.d.ts +6 -5
  29. package/lib/+shared/editor/core/paging/paragraph.d.ts +5 -2
  30. package/lib/+shared/editor/core/paging/text-line-info.d.ts +2 -0
  31. package/lib/+shared/editor/custom-components/external-element/models/external-element.model.d.ts +2 -1
  32. package/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.d.ts +2 -1
  33. package/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.d.ts +1 -0
  34. package/lib/+shared/editor/custom-components/table/components/table.component.d.ts +18 -1
  35. package/lib/+shared/editor/editor.component.d.ts +2 -1
  36. package/lib/+shared/editor/execution/regulator.service.d.ts +1 -1
  37. package/lib/+shared/helpers/revision.helper.d.ts +15 -0
  38. package/lib/+shared/helpers/validation.helper.d.ts +5 -0
  39. package/lib/models/generated/cell.model.d.ts +1 -0
  40. package/package.json +1 -1
  41. package/public-api.d.ts +4 -1
  42. package/src/lib/+shared/confirm-dialog/_theme.scss +30 -0
  43. package/src/lib/+shared/editor/_theme.scss +7 -0
  44. package/src/lib/+shared/editor-toolbar/_theme.scss +7 -0
  45. package/src/scss/_fonts.scss +3 -0
  46. package/src/scss/_mixins.scss +49 -0
  47. package/src/scss/_variables.scss +1 -0
@@ -50,7 +50,7 @@ export class EditorComponent {
50
50
  }
51
51
  initEditor(content) {
52
52
  this.ngOnDestroy();
53
- this.editor = new Editor(content, this.container, this.editorService, this.regulatorService, this.commandsService, this.clipboard);
53
+ this.editor = new Editor(content, this.container, this.editorService, this.regulatorService, this.commandsService, this.clipboard, this.customPageWidth);
54
54
  this.subscriptions.push(this.toggleSidenavSubscription());
55
55
  }
56
56
  createElement(model) {
@@ -80,12 +80,14 @@ export class EditorComponent {
80
80
  });
81
81
  }
82
82
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ComponentService }, { token: i2.EditorService }, { token: i0.Injector }, { token: i3.RegulatorService }, { token: i4.CommandsService }, { token: i5.Clipboard }], target: i0.ɵɵFactoryTarget.Component }); }
83
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EditorComponent, selector: "app-editor", inputs: { content: "content" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "sidenavContainer", first: true, predicate: ["drawerContainer"], descendants: true, static: true }, { propertyName: "sidenav", first: true, predicate: ["drawer"], descendants: true, static: true }], ngImport: i0, template: "<mat-drawer-container\n class=\"sidenav-container\"\n [hasBackdrop]=\"sidenavProperties.hasBackdrop\">\n <mat-drawer-content>\n <div class=\"container\">\n <div\n #container\n class=\"edit-container\"></div>\n <app-element-toolbar\n *ngIf=\"elements.length\"\n [elements]=\"elements\"\n [isDisabled]=\"isViewOnly$ | async\"\n (createElement)=\"createElement($event)\"></app-element-toolbar>\n </div>\n </mat-drawer-content>\n <mat-drawer\n #drawer\n [autoFocus]=\"sidenavProperties.autoFocus\"\n [position]=\"sidenavProperties.position\"\n [mode]=\"sidenavProperties.mode\">\n <div\n #drawerContainer\n class=\"drawer-container\"></div>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}app-element-toolbar{right:15px;top:50px}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i7.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i7.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i8.ElementToolbarComponent, selector: "app-element-toolbar", inputs: ["isDisabled", "elements"], outputs: ["createElement"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
83
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: EditorComponent, selector: "app-editor", inputs: { customPageWidth: "customPageWidth", content: "content" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "sidenavContainer", first: true, predicate: ["drawerContainer"], descendants: true, static: true }, { propertyName: "sidenav", first: true, predicate: ["drawer"], descendants: true, static: true }], ngImport: i0, template: "<mat-drawer-container\n class=\"sidenav-container\"\n [hasBackdrop]=\"sidenavProperties.hasBackdrop\">\n <mat-drawer-content>\n <div class=\"container\">\n <div\n #container\n class=\"edit-container\"></div>\n <app-element-toolbar\n *ngIf=\"elements.length\"\n [elements]=\"elements\"\n [isDisabled]=\"isViewOnly$ | async\"\n (createElement)=\"createElement($event)\"></app-element-toolbar>\n </div>\n </mat-drawer-content>\n <mat-drawer\n #drawer\n [autoFocus]=\"sidenavProperties.autoFocus\"\n [position]=\"sidenavProperties.position\"\n [mode]=\"sidenavProperties.mode\">\n <div\n #drawerContainer\n class=\"drawer-container\"></div>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}app-element-toolbar{right:15px;top:50px}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i7.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i7.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i8.ElementToolbarComponent, selector: "app-element-toolbar", inputs: ["isDisabled", "elements"], outputs: ["createElement"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
84
84
  }
85
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditorComponent, decorators: [{
86
86
  type: Component,
87
87
  args: [{ selector: 'app-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-drawer-container\n class=\"sidenav-container\"\n [hasBackdrop]=\"sidenavProperties.hasBackdrop\">\n <mat-drawer-content>\n <div class=\"container\">\n <div\n #container\n class=\"edit-container\"></div>\n <app-element-toolbar\n *ngIf=\"elements.length\"\n [elements]=\"elements\"\n [isDisabled]=\"isViewOnly$ | async\"\n (createElement)=\"createElement($event)\"></app-element-toolbar>\n </div>\n </mat-drawer-content>\n <mat-drawer\n #drawer\n [autoFocus]=\"sidenavProperties.autoFocus\"\n [position]=\"sidenavProperties.position\"\n [mode]=\"sidenavProperties.mode\">\n <div\n #drawerContainer\n class=\"drawer-container\"></div>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}app-element-toolbar{right:15px;top:50px}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n"] }]
88
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ComponentService }, { type: i2.EditorService }, { type: i0.Injector }, { type: i3.RegulatorService }, { type: i4.CommandsService }, { type: i5.Clipboard }], propDecorators: { content: [{
88
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ComponentService }, { type: i2.EditorService }, { type: i0.Injector }, { type: i3.RegulatorService }, { type: i4.CommandsService }, { type: i5.Clipboard }], propDecorators: { customPageWidth: [{
89
+ type: Input
90
+ }], content: [{
89
91
  type: Input
90
92
  }], container: [{
91
93
  type: ViewChild,
@@ -100,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
100
102
  type: HostBinding,
101
103
  args: ['class']
102
104
  }] } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBR1QsV0FBVyxFQUVYLEtBQUssRUFFTCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFPdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBR2xJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7OztBQVNqRSxNQUFNLE9BQU8sZUFBZTtJQUN4QixJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUNJLE9BQU8sQ0FBQyxLQUFnQjtRQUN4QixJQUFJLEtBQUssRUFBRTtZQUNQLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQUMsUUFBcUIsQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFD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ZSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2FBQ25DO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUM3QiwrQkFBK0I7WUFDbkMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0F6RlEsZUFBZTtrR0FBZixlQUFlLCtjQ25DNUIsazNCQXlCQTs7MkZEVWEsZUFBZTtrQkFOM0IsU0FBUzsrQkFDSSxZQUFZLG1CQUdMLHVCQUF1QixDQUFDLE1BQU07NlBBUTNDLE9BQU87c0JBRFYsS0FBSztnQkFjb0MsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVRLGdCQUFnQjtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRVAsT0FBTztzQkFBN0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVmLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbGlwYm9hcmQgfSBmcm9tICdAYW5ndWxhci9jZGsvY2xpcGJvYXJkJztcbmltcG9ydCB7IE1hdERyYXdlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbW1hbmRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbW1hbmRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4vY3VzdG9tLWNvbXBvbmVudHMvc2hhcmVkL3NlcnZpY2VzL2NvbXBvbmVudC9jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBEb2N4TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2RvY3gubW9kZWwnO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnLi9jb3JlL2VkaXRvcic7XG5pbXBvcnQgeyBFRElUT1JfVkVSU0lPTiB9IGZyb20gJy4vY29yZS9jb25zdGFudHMvZWRpdG9yLXZlcnNpb24uY29uc3QnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4vaW50ZXJhY3Rpb24vZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudERhdGFNb2RlbCB9IGZyb20gJy4vY3VzdG9tLWNvbXBvbmVudHMvZXh0ZXJuYWwtZWxlbWVudC9tb2RlbHMvZWxlbWVudC1kYXRhLm1vZGVsJztcbmltcG9ydCB7IEVYVEVSTkFMX0VMRU1FTlRfU0VSVklDRSwgRVhURVJOQUxfRUxFTUVOVF9TSURFTkFWIH0gZnJvbSAnLi9jdXN0b20tY29tcG9uZW50cy9leHRlcm5hbC1lbGVtZW50L2V4dGVybmFsLWVsZW1lbnRzLmNvbnN0JztcbmltcG9ydCB7IEV4dGVybmFsRWxlbWVudE1vZGVsIH0gZnJvbSAnLi9jdXN0b20tY29tcG9uZW50cy9leHRlcm5hbC1lbGVtZW50L21vZGVscy9leHRlcm5hbC1lbGVtZW50Lm1vZGVsJztcbmltcG9ydCB7IEV4dGVybmFsU2lkZW5hdk1vZGVsIH0gZnJvbSAnLi9jdXN0b20tY29tcG9uZW50cy9leHRlcm5hbC1lbGVtZW50L21vZGVscy9leHRlcm5hbC1zaWRlbmF2Lm1vZGVsJztcbmltcG9ydCB7IEZvbnRNZXRyaWNzIH0gZnJvbSAnLi9jb3JlL2hlbHBlcnMvZm9udC1tZXRyaWNzLmhlbHBlcic7XG5pbXBvcnQgeyBSZWd1bGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi9leGVjdXRpb24vcmVndWxhdG9yLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1lZGl0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgZ2V0IGlzVmlld09ubHkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3JTZXJ2aWNlLmlzVmlld09ubHkkO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvbnRlbnQobW9kZWw6IERvY3hNb2RlbCkge1xuICAgICAgICBpZiAobW9kZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZXBDb3B5ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShtb2RlbCkpO1xuICAgICAgICAgICAgdGhpcy5fY29udGVudCA9IG5ldyBEb2N4TW9kZWwoZGVlcENvcHkgYXMgRG9jeE1vZGVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdEVkaXRvcih0aGlzLl9jb250ZW50KTtcbiAgICB9XG4gICAgZ2V0IGNvbnRlbnQoKTogRG9jeE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnQ7XG4gICAgfVxuICAgIHByaXZhdGUgX2NvbnRlbnQ6IERvY3hNb2RlbDtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdkcmF3ZXJDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBzaWRlbmF2Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2RyYXdlcicsIHsgc3RhdGljOiB0cnVlIH0pIHNpZGVuYXY6IE1hdERyYXdlcjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICdiYXNlLWVkaXRvcic7XG5cbiAgICBlZGl0b3I6IEVkaXRvcjtcblxuICAgIGVsZW1lbnRzOiBFeHRlcm5hbEVsZW1lbnRNb2RlbFtdO1xuXG4gICAgc2lkZW5hdlByb3BlcnRpZXM6IEV4dGVybmFsU2lkZW5hdk1vZGVsO1xuXG4gICAgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIHByaXZhdGUgc2lkZW5hdkNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWd1bGF0b3JTZXJ2aWNlOiBSZWd1bGF0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbW1hbmRzU2VydmljZTogQ29tbWFuZHNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNsaXBib2FyZDogQ2xpcGJvYXJkXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMgPSB0aGlzLmluamVjdG9yLmdldChFWFRFUk5BTF9FTEVNRU5UX1NFUlZJQ0UpLmVsZW1lbnRzO1xuICAgICAgICB0aGlzLnNpZGVuYXZQcm9wZXJ0aWVzID0gdGhpcy5pbmplY3Rvci5nZXQoRVhURVJOQUxfRUxFTUVOVF9TSURFTkFWKTtcbiAgICAgICAgRm9udE1ldHJpY3MuY2hlY2tWZXJzaW9uKEVESVRPUl9WRVJTSU9OKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3I/LmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5yZWd1bGF0b3JTZXJ2aWNlLmNsZWFyQWxsU2Vzc2lvbnMoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goeCA9PiB4Py51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnNwbGljZSgwKTtcbiAgICB9XG5cbiAgICBpbml0RWRpdG9yKGNvbnRlbnQ6IERvY3hNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gbmV3IEVkaXRvcihjb250ZW50LCB0aGlzLmNvbnRhaW5lciwgdGhpcy5lZGl0b3JTZXJ2aWNlLCB0aGlzLnJlZ3VsYXRvclNlcnZpY2UsIHRoaXMuY29tbWFuZHNTZXJ2aWNlLCB0aGlzLmNsaXBib2FyZCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMudG9nZ2xlU2lkZW5hdlN1YnNjcmlwdGlvbigpKTtcbiAgICB9XG5cbiAgICBjcmVhdGVFbGVtZW50KG1vZGVsOiBFbGVtZW50RGF0YU1vZGVsKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLmNyZWF0ZUN1c3RvbUVsZW1lbnQobW9kZWwpO1xuICAgICAgICB0aGlzLmVkaXRvci5mb2N1cygpO1xuICAgIH1cblxuICAgIHRvZ2dsZVNpZGVuYXZTdWJzY3JpcHRpb24oKTogU3Vic2NyaXB0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yU2VydmljZS50b2dnbGVTaWRlbmF2JC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zaWRlbmF2Lm9wZW5lZCA9PT0gZGF0YS5vcGVuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEub3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2lkZW5hdkNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50U2VydmljZS5jcmVhdGVDb21wb25lbnQoZGF0YS5jb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZWw6IGRhdGEubW9kZWwsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRXaWR0aDogZGF0YS5jb250ZW50V2lkdGhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuYXR0YWNoQ29tcG9uZW50KHRoaXMuc2lkZW5hdkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB0aGlzLnNpZGVuYXZDb21wb25lbnRSZWYpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KHRoaXMuc2lkZW5hdkNvbXBvbmVudFJlZik7XG4gICAgICAgICAgICAgICAgdGhpcy5zaWRlbmF2Q29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2lkZW5hdi50b2dnbGUoKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gY29udGludWUgcmVnYXJkbGVzcyBvZiBlcnJvclxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG1hdC1kcmF3ZXItY29udGFpbmVyXG4gICAgY2xhc3M9XCJzaWRlbmF2LWNvbnRhaW5lclwiXG4gICAgW2hhc0JhY2tkcm9wXT1cInNpZGVuYXZQcm9wZXJ0aWVzLmhhc0JhY2tkcm9wXCI+XG4gICAgPG1hdC1kcmF3ZXItY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICNjb250YWluZXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXQtY29udGFpbmVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8YXBwLWVsZW1lbnQtdG9vbGJhclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZWxlbWVudHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudHNdPVwiZWxlbWVudHNcIlxuICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImlzVmlld09ubHkkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIChjcmVhdGVFbGVtZW50KT1cImNyZWF0ZUVsZW1lbnQoJGV2ZW50KVwiPjwvYXBwLWVsZW1lbnQtdG9vbGJhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtZHJhd2VyLWNvbnRlbnQ+XG4gICAgPG1hdC1kcmF3ZXJcbiAgICAgICAgI2RyYXdlclxuICAgICAgICBbYXV0b0ZvY3VzXT1cInNpZGVuYXZQcm9wZXJ0aWVzLmF1dG9Gb2N1c1wiXG4gICAgICAgIFtwb3NpdGlvbl09XCJzaWRlbmF2UHJvcGVydGllcy5wb3NpdGlvblwiXG4gICAgICAgIFttb2RlXT1cInNpZGVuYXZQcm9wZXJ0aWVzLm1vZGVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI2RyYXdlckNvbnRhaW5lclxuICAgICAgICAgICAgY2xhc3M9XCJkcmF3ZXItY29udGFpbmVyXCI+PC9kaXY+XG4gICAgPC9tYXQtZHJhd2VyPlxuPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj5cbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBR1QsV0FBVyxFQUVYLEtBQUssRUFFTCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFPdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBR2xJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7OztBQVNqRSxNQUFNLE9BQU8sZUFBZTtJQUN4QixJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQzFDLENBQUM7SUFJRCxJQUNJLE9BQU8sQ0FBQyxLQUFnQjtRQUN4QixJQUFJLEtBQUssRUFBRTtZQUNQLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQUMsUUFBcUIsQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFD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QUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2FBQ25DO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUM3QiwrQkFBK0I7WUFDbkMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0FuR1EsZUFBZTtrR0FBZixlQUFlLG1mQ25DNUIsazNCQXlCQTs7MkZEVWEsZUFBZTtrQkFOM0IsU0FBUzsrQkFDSSxZQUFZLG1CQUdMLHVCQUF1QixDQUFDLE1BQU07NlBBT3RDLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0YsT0FBTztzQkFEVixLQUFLO2dCQWNvQyxTQUFTO3NCQUFsRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRVEsZ0JBQWdCO3NCQUEvRCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFUCxPQUFPO3NCQUE3QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRWYsS0FBSztzQkFBMUIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsaXBib2FyZCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgTWF0RHJhd2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ29tbWFuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbWFuZHMuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi9jdXN0b20tY29tcG9uZW50cy9zaGFyZWQvc2VydmljZXMvY29tcG9uZW50L2NvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3hNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZG9jeC5tb2RlbCc7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICcuL2NvcmUvZWRpdG9yJztcbmltcG9ydCB7IEVESVRPUl9WRVJTSU9OIH0gZnJvbSAnLi9jb3JlL2NvbnN0YW50cy9lZGl0b3ItdmVyc2lvbi5jb25zdCc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi9pbnRlcmFjdGlvbi9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBFbGVtZW50RGF0YU1vZGVsIH0gZnJvbSAnLi9jdXN0b20tY29tcG9uZW50cy9leHRlcm5hbC1lbGVtZW50L21vZGVscy9lbGVtZW50LWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgRVhURVJOQUxfRUxFTUVOVF9TRVJWSUNFLCBFWFRFUk5BTF9FTEVNRU5UX1NJREVOQVYgfSBmcm9tICcuL2N1c3RvbS1jb21wb25lbnRzL2V4dGVybmFsLWVsZW1lbnQvZXh0ZXJuYWwtZWxlbWVudHMuY29uc3QnO1xuaW1wb3J0IHsgRXh0ZXJuYWxFbGVtZW50TW9kZWwgfSBmcm9tICcuL2N1c3RvbS1jb21wb25lbnRzL2V4dGVybmFsLWVsZW1lbnQvbW9kZWxzL2V4dGVybmFsLWVsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgRXh0ZXJuYWxTaWRlbmF2TW9kZWwgfSBmcm9tICcuL2N1c3RvbS1jb21wb25lbnRzL2V4dGVybmFsLWVsZW1lbnQvbW9kZWxzL2V4dGVybmFsLXNpZGVuYXYubW9kZWwnO1xuaW1wb3J0IHsgRm9udE1ldHJpY3MgfSBmcm9tICcuL2NvcmUvaGVscGVycy9mb250LW1ldHJpY3MuaGVscGVyJztcbmltcG9ydCB7IFJlZ3VsYXRvclNlcnZpY2UgfSBmcm9tICcuL2V4ZWN1dGlvbi9yZWd1bGF0b3Iuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWVkaXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBnZXQgaXNWaWV3T25seSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvclNlcnZpY2UuaXNWaWV3T25seSQ7XG4gICAgfVxuXG4gICAgQElucHV0KCkgY3VzdG9tUGFnZVdpZHRoPzogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgY29udGVudChtb2RlbDogRG9jeE1vZGVsKSB7XG4gICAgICAgIGlmIChtb2RlbCkge1xuICAgICAgICAgICAgY29uc3QgZGVlcENvcHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1vZGVsKSk7XG4gICAgICAgICAgICB0aGlzLl9jb250ZW50ID0gbmV3IERvY3hNb2RlbChkZWVwQ29weSBhcyBEb2N4TW9kZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbml0RWRpdG9yKHRoaXMuX2NvbnRlbnQpO1xuICAgIH1cbiAgICBnZXQgY29udGVudCgpOiBEb2N4TW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudDtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY29udGVudDogRG9jeE1vZGVsO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkgY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2RyYXdlckNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIHNpZGVuYXZDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnZHJhd2VyJywgeyBzdGF0aWM6IHRydWUgfSkgc2lkZW5hdjogTWF0RHJhd2VyO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ2Jhc2UtZWRpdG9yJztcblxuICAgIGVkaXRvcjogRWRpdG9yO1xuXG4gICAgZWxlbWVudHM6IEV4dGVybmFsRWxlbWVudE1vZGVsW107XG5cbiAgICBzaWRlbmF2UHJvcGVydGllczogRXh0ZXJuYWxTaWRlbmF2TW9kZWw7XG5cbiAgICByZWFkb25seSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBzaWRlbmF2Q29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRTZXJ2aWNlOiBDb21wb25lbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlZ3VsYXRvclNlcnZpY2U6IFJlZ3VsYXRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29tbWFuZHNTZXJ2aWNlOiBDb21tYW5kc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2xpcGJvYXJkOiBDbGlwYm9hcmRcbiAgICApIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEVYVEVSTkFMX0VMRU1FTlRfU0VSVklDRSkuZWxlbWVudHM7XG4gICAgICAgIHRoaXMuc2lkZW5hdlByb3BlcnRpZXMgPSB0aGlzLmluamVjdG9yLmdldChFWFRFUk5BTF9FTEVNRU5UX1NJREVOQVYpO1xuICAgICAgICBGb250TWV0cmljcy5jaGVja1ZlcnNpb24oRURJVE9SX1ZFUlNJT04pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRvcj8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnJlZ3VsYXRvclNlcnZpY2UuY2xlYXJBbGxTZXNzaW9ucygpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuc3BsaWNlKDApO1xuICAgIH1cblxuICAgIGluaXRFZGl0b3IoY29udGVudDogRG9jeE1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBuZXcgRWRpdG9yKFxuICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLFxuICAgICAgICAgICAgdGhpcy5yZWd1bGF0b3JTZXJ2aWNlLFxuICAgICAgICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UsXG4gICAgICAgICAgICB0aGlzLmNsaXBib2FyZCxcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tUGFnZVdpZHRoXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMudG9nZ2xlU2lkZW5hdlN1YnNjcmlwdGlvbigpKTtcbiAgICB9XG5cbiAgICBjcmVhdGVFbGVtZW50KG1vZGVsOiBFbGVtZW50RGF0YU1vZGVsKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLmNyZWF0ZUN1c3RvbUVsZW1lbnQobW9kZWwpO1xuICAgICAgICB0aGlzLmVkaXRvci5mb2N1cygpO1xuICAgIH1cblxuICAgIHRvZ2dsZVNpZGVuYXZTdWJzY3JpcHRpb24oKTogU3Vic2NyaXB0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yU2VydmljZS50b2dnbGVTaWRlbmF2JC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zaWRlbmF2Lm9wZW5lZCA9PT0gZGF0YS5vcGVuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEub3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2lkZW5hdkNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50U2VydmljZS5jcmVhdGVDb21wb25lbnQoZGF0YS5jb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZWw6IGRhdGEubW9kZWwsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRXaWR0aDogZGF0YS5jb250ZW50V2lkdGhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuYXR0YWNoQ29tcG9uZW50KHRoaXMuc2lkZW5hdkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB0aGlzLnNpZGVuYXZDb21wb25lbnRSZWYpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KHRoaXMuc2lkZW5hdkNvbXBvbmVudFJlZik7XG4gICAgICAgICAgICAgICAgdGhpcy5zaWRlbmF2Q29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2lkZW5hdi50b2dnbGUoKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gY29udGludWUgcmVnYXJkbGVzcyBvZiBlcnJvclxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG1hdC1kcmF3ZXItY29udGFpbmVyXG4gICAgY2xhc3M9XCJzaWRlbmF2LWNvbnRhaW5lclwiXG4gICAgW2hhc0JhY2tkcm9wXT1cInNpZGVuYXZQcm9wZXJ0aWVzLmhhc0JhY2tkcm9wXCI+XG4gICAgPG1hdC1kcmF3ZXItY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICNjb250YWluZXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXQtY29udGFpbmVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8YXBwLWVsZW1lbnQtdG9vbGJhclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZWxlbWVudHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudHNdPVwiZWxlbWVudHNcIlxuICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImlzVmlld09ubHkkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIChjcmVhdGVFbGVtZW50KT1cImNyZWF0ZUVsZW1lbnQoJGV2ZW50KVwiPjwvYXBwLWVsZW1lbnQtdG9vbGJhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtZHJhd2VyLWNvbnRlbnQ+XG4gICAgPG1hdC1kcmF3ZXJcbiAgICAgICAgI2RyYXdlclxuICAgICAgICBbYXV0b0ZvY3VzXT1cInNpZGVuYXZQcm9wZXJ0aWVzLmF1dG9Gb2N1c1wiXG4gICAgICAgIFtwb3NpdGlvbl09XCJzaWRlbmF2UHJvcGVydGllcy5wb3NpdGlvblwiXG4gICAgICAgIFttb2RlXT1cInNpZGVuYXZQcm9wZXJ0aWVzLm1vZGVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI2RyYXdlckNvbnRhaW5lclxuICAgICAgICAgICAgY2xhc3M9XCJkcmF3ZXItY29udGFpbmVyXCI+PC9kaXY+XG4gICAgPC9tYXQtZHJhd2VyPlxuPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj5cbiJdfQ==
@@ -22,9 +22,9 @@ export class RegulatorService {
22
22
  this.sessionIdIncrement = 0;
23
23
  this.edgeEditingPage = null;
24
24
  }
25
- addMainSession(model, margins, container) {
25
+ addMainSession(model, margins, pageWidth, container) {
26
26
  const currentSessionId = ++this.sessionIdIncrement;
27
- const document = new Document(model, margins, DocumentInfo.pagesSpace, model.pageWidth, model.pageHeight);
27
+ const document = new Document(model, margins, DocumentInfo.pagesSpace, pageWidth, model.pageHeight);
28
28
  const renderer = new VirtualRenderer(container.nativeElement, this.editorService);
29
29
  const session = new EditSession(document, currentSessionId, this.customContentService, model, this.selection, new GeneralPropertiesModel({
30
30
  numberings: model.numberings,
@@ -190,4 +190,4 @@ export class RegulatorService {
190
190
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RegulatorService, decorators: [{
191
191
  type: Injectable
192
192
  }], ctorParameters: () => [{ type: i1.CustomContentService }, { type: i2.EditorService }] });
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVndWxhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9leGVjdXRpb24vcmVndWxhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUs1RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFHM0QsTUFBTSxPQUFPLGdCQUFnQjtJQWF6QixZQUFvQixvQkFBMEMsRUFBVSxhQUE0QjtRQUFoRix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFWcEcsYUFBUSxHQUFtQixFQUFFLENBQUM7UUFN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QUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztvQkFDM0MsTUFBTTtpQkFDVDthQUNKO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsY0FBNkIsSUFBSTtRQUNoRCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1lBQ2xELE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQTJCLENBQUM7UUFDbEUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELENBQUM7OEdBMU5RLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZWxsU2Vzc2lvblNvdXJjZU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvY2VsbC1zZXNzaW9uLXNvdXJjZS5tb2RlbCc7XG5pbXBvcnQgeyBDdXN0b21Db250ZW50U2VydmljZSB9IGZyb20gJy4uL2N1c3RvbS1jb21wb25lbnRzL3NoYXJlZC9zZXJ2aWNlcy9jdXN0b20tY29udGVudC9jdXN0b20tY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERFRkFVTFRfRURHRV9NQVhfSEVJR0hUX01VTFRJUExJRVIgfSBmcm9tICcuLi9jb3JlL2NvbnN0YW50cy9lZGl0b3IuY29uc3QnO1xuaW1wb3J0IHsgRG9jdW1lbnQgfSBmcm9tICcuLi9jb3JlL2RvY3VtZW50JztcbmltcG9ydCB7IERvY3VtZW50SW5mbyB9IGZyb20gJy4uL2NvcmUvY29uc3RhbnRzL2RvY3VtZW50LWluZm8uY29uc3QnO1xuaW1wb3J0IHsgRG9jeE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9kb2N4Lm1vZGVsJztcbmltcG9ydCB7IEVkZ2VTZXNzaW9uU291cmNlTW9kZWwgfSBmcm9tICcuL21vZGVscy9lZGdlLXNlc3Npb24tc291cmNlLm1vZGVsJztcbmltcG9ydCB7IEVkZ2VUeXBlIH0gZnJvbSAnLi4vY29yZS9jb21wb25lbnRzL2VkZ2VzL2VkZ2UtdHlwZS5lbnVtJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmFjdGlvbi9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0U2Vzc2lvbiB9IGZyb20gJy4uL2NvcmUvZWRpdC5zZXNzaW9uJztcbmltcG9ydCB7IEdlbmVyYWxQcm9wZXJ0aWVzTW9kZWwgfSBmcm9tICcuL21vZGVscy9nZW5lcmFsLXByb3BlcnRpZXMubW9kZWwnO1xuaW1wb3J0IHsgTWFpblNlc3Npb25Tb3VyY2VNb2RlbCB9IGZyb20gJy4vbW9kZWxzL21haW4tc2Vzc2lvbi1zb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgTWFyZ2luTW9kZWwgfSBmcm9tICcuLi9jb3JlL21vZGVscy9tYXJnaW4ubW9kZWwnO1xuaW1wb3J0IHsgTm9kZXJFZGdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS9jb21wb25lbnRzL2VkZ2VzL2VkZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE5vZGVyVGFibGVDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9tLWNvbXBvbmVudHMvdGFibGUvY29tcG9uZW50cy90YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdlVHlwZSB9IGZyb20gJy4uL2NvcmUvZW51bXMvcGFnZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICcuLi9jb3JlL3JlbmRlcmVyJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uL3Bvc2l0aW9uaW5nL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBTZXNzaW9uTW9kZWwgfSBmcm9tICcuL21vZGVscy9zZXNzaW9uLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFRhcmdldE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YXJnZXQubW9kZWwnO1xuaW1wb3J0IHsgVGFyZ2V0VHlwZSB9IGZyb20gJy4uL29wZXJhdGlvbnMvZW51bXMvdGFyZ2V0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBWaXJ0dWFsUmVuZGVyZXIgfSBmcm9tICcuLi9jb3JlL3ZpcnR1YWwucmVuZGVyZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVndWxhdG9yU2VydmljZSB7XG4gICAgbWFpblNlc3Npb246IFNlc3Npb25Nb2RlbDtcblxuICAgIHNlc3Npb25zOiBTZXNzaW9uTW9kZWxbXSA9IFtdO1xuXG4gICAgY3VycmVudFNlc3Npb246IFNlc3Npb25Nb2RlbDtcblxuICAgIHNlbGVjdGlvbjogU2VsZWN0aW9uO1xuXG4gICAgc2Vzc2lvbklkSW5jcmVtZW50ID0gMDtcblxuICAgIGVkZ2VFZGl0aW5nUGFnZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN1c3RvbUNvbnRlbnRTZXJ2aWNlOiBDdXN0b21Db250ZW50U2VydmljZSwgcHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlKSB7fVxuXG4gICAgYWRkTWFpblNlc3Npb24obW9kZWw6IERvY3hNb2RlbCwgbWFyZ2luczogTWFyZ2luTW9kZWwsIGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFNlc3Npb25JZCA9ICsrdGhpcy5zZXNzaW9uSWRJbmNyZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gbmV3IERvY3VtZW50KG1vZGVsLCBtYXJnaW5zLCBEb2N1bWVudEluZm8ucGFnZXNTcGFjZSwgbW9kZWwucGFnZVdpZHRoLCBtb2RlbC5wYWdlSGVpZ2h0KTtcbiAgICAgICAgY29uc3QgcmVuZGVyZXIgPSBuZXcgVmlydHVhbFJlbmRlcmVyKGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB0aGlzLmVkaXRvclNlcnZpY2UpO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IEVkaXRTZXNzaW9uKFxuICAgICAgICAgICAgZG9jdW1lbnQsXG4gICAgICAgICAgICBjdXJyZW50U2Vzc2lvbklkLFxuICAgICAgICAgICAgdGhpcy5jdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24sXG4gICAgICAgICAgICBuZXcgR2VuZXJhbFByb3BlcnRpZXNNb2RlbCh7XG4gICAgICAgICAgICAgICAgbnVtYmVyaW5nczogbW9kZWwubnVtYmVyaW5ncyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0VGFiV2lkdGg6IG1vZGVsLmRlZmF1bHRUYWJXaWR0aCxcbiAgICAgICAgICAgICAgICBtYXhFZGdlSGVpZ2h0OiBtb2RlbC5wYWdlSGVpZ2h0ICogREVGQVVMVF9FREdFX01BWF9IRUlHSFRfTVVMVElQTElFUlxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgcmVuZGVyZXIuc2V0U2Vzc2lvbihzZXNzaW9uKTtcbiAgICAgICAgcmVuZGVyZXIuc2Nyb2xsVG8oc2Vzc2lvbi5zY3JvbGxUb3ApO1xuICAgICAgICBzZXNzaW9uLmNvbnRlbnRXaWR0aCA9IGRvY3VtZW50LnBhZ2VXaWR0aCAtIChkb2N1bWVudC5wYWdlTWFyZ2luLmxlZnQgKyBkb2N1bWVudC5wYWdlTWFyZ2luLnJpZ2h0KTtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0eWxlcyA9IHNlc3Npb24uc3R5bGVzTWFwO1xuICAgICAgICB0aGlzLm1haW5TZXNzaW9uID0gbmV3IFNlc3Npb25Nb2RlbChzZXNzaW9uLCByZW5kZXJlciwgY3VycmVudFNlc3Npb25JZCwgbnVsbCwgbmV3IE1haW5TZXNzaW9uU291cmNlTW9kZWwoKSk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbnMucHVzaCh0aGlzLm1haW5TZXNzaW9uKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbiA9IHRoaXMubWFpblNlc3Npb247XG4gICAgfVxuXG4gICAgYWRkQ2VsbFNlc3Npb24oXG4gICAgICAgIHRhYmxlOiBUYWJsZU1vZGVsLFxuICAgICAgICBtYXJnaW5zOiBNYXJnaW5Nb2RlbCxcbiAgICAgICAgY29tcG9uZW50OiBOb2RlclRhYmxlQ2VsbENvbXBvbmVudCxcbiAgICAgICAgcHJvcGVydGllczogR2VuZXJhbFByb3BlcnRpZXNNb2RlbFxuICAgICk6IFNlc3Npb25Nb2RlbCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZXNzaW9uSWQgPSArK3RoaXMuc2Vzc2lvbklkSW5jcmVtZW50O1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IG5ldyBEb2N1bWVudChjb21wb25lbnQuY2VsbCwgbWFyZ2lucywgMCwgY29tcG9uZW50LndpZHRoLCAwKTtcbiAgICAgICAgY29uc3QgcmVuZGVyZXIgPSBuZXcgUmVuZGVyZXIoY29tcG9uZW50LmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB0aGlzLmVkaXRvclNlcnZpY2UpO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IEVkaXRTZXNzaW9uKGRvY3VtZW50LCBjdXJyZW50U2Vzc2lvbklkLCB0aGlzLmN1c3RvbUNvbnRlbnRTZXJ2aWNlLCBjb21wb25lbnQuY2VsbCwgdGhpcy5zZWxlY3Rpb24sIHByb3BlcnRpZXMpO1xuICAgICAgICByZW5kZXJlci5zZXRTZXNzaW9uKHNlc3Npb24pO1xuICAgICAgICBjb25zdCBjb250ZW50V2lkdGggPSBjb21wb25lbnQud2lkdGggLSAoZG9jdW1lbnQucGFnZU1hcmdpbi5sZWZ0ICsgZG9jdW1lbnQucGFnZU1hcmdpbi5yaWdodCk7XG4gICAgICAgIHNlc3Npb24uY29udGVudFdpZHRoID0gY29udGVudFdpZHRoID09PSAwID8gMSA6IGNvbnRlbnRXaWR0aDtcbiAgICAgICAgY29uc3Qgc291cmNlID0gbmV3IENlbGxTZXNzaW9uU291cmNlTW9kZWwodGFibGUsIGNvbXBvbmVudCk7XG4gICAgICAgIGNvbnN0IG5ld1Nlc3Npb24gPSBuZXcgU2Vzc2lvbk1vZGVsKHNlc3Npb24sIHJlbmRlcmVyLCBjdXJyZW50U2Vzc2lvbklkLCBjb21wb25lbnQucGFyZW50U2Vzc2lvbklkLCBzb3VyY2UpO1xuICAgICAgICB0aGlzLnNlc3Npb25zLnB1c2gobmV3U2Vzc2lvbik7XG4gICAgICAgIHJldHVybiBuZXdTZXNzaW9uO1xuICAgIH1cblxuICAgIGFkZEVkZ2VTZXNzaW9uKGNvbXBvbmVudDogTm9kZXJFZGdlQ29tcG9uZW50KTogU2Vzc2lvbk1vZGVsIHtcbiAgICAgICAgY29uc3QgY3VycmVudFNlc3Npb25JZCA9ICsrdGhpcy5zZXNzaW9uSWRJbmNyZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gbmV3IERvY3VtZW50KGNvbXBvbmVudC5tb2RlbCwgY29tcG9uZW50Lm1hcmdpbnMsIDAsIGNvbXBvbmVudC53aWR0aCwgMCk7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVyID0gbmV3IFJlbmRlcmVyKGNvbXBvbmVudC5jb250YWluZXIubmF0aXZlRWxlbWVudCwgdGhpcy5lZGl0b3JTZXJ2aWNlKTtcbiAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IG5ldyBFZGl0U2Vzc2lvbihcbiAgICAgICAgICAgIGRvY3VtZW50LFxuICAgICAgICAgICAgY3VycmVudFNlc3Npb25JZCxcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29udGVudFNlcnZpY2UsXG4gICAgICAgICAgICBjb21wb25lbnQubW9kZWwsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbixcbiAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wZXJ0aWVzXG4gICAgICAgICk7XG4gICAgICAgIHJlbmRlcmVyLnNldFNlc3Npb24oc2Vzc2lvbik7XG4gICAgICAgIHNlc3Npb24uY29udGVudFdpZHRoID0gY29tcG9uZW50LndpZHRoIC0gKGRvY3VtZW50LnBhZ2VNYXJnaW4ubGVmdCArIGRvY3VtZW50LnBhZ2VNYXJnaW4ucmlnaHQpO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBuZXcgRWRnZVNlc3Npb25Tb3VyY2VNb2RlbChjb21wb25lbnQubW9kZWwucGFnZVR5cGUgYXMgUGFnZVR5cGUsIGNvbXBvbmVudC50eXBlKTtcbiAgICAgICAgY29uc3QgbmV3U2Vzc2lvbiA9IG5ldyBTZXNzaW9uTW9kZWwoc2Vzc2lvbiwgcmVuZGVyZXIsIGN1cnJlbnRTZXNzaW9uSWQsIGNvbXBvbmVudC5wYXJlbnRTZXNzaW9uSWQsIHNvdXJjZSk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbnMucHVzaChuZXdTZXNzaW9uKTtcbiAgICAgICAgcmV0dXJuIG5ld1Nlc3Npb247XG4gICAgfVxuXG4gICAgcmVtb3ZlU2Vzc2lvbihzZXNzaW9uSWQ6IG51bWJlcikge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2Vzc2lvbnMuZmluZEluZGV4KHggPT4geC5zZXNzaW9uSWQgPT09IHNlc3Npb25JZCk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbnNbaW5kZXhdLnNlc3Npb24uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnNlc3Npb25zW2luZGV4XS5yZW5kZXJlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBzZXRNYWluU2Vzc2lvbkFzQ3VycmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWFpblNlc3Npb24uc2Vzc2lvbklkID09PSB0aGlzLmN1cnJlbnRTZXNzaW9uLnNlc3Npb25JZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9nZ2xlRWRnZUVkaXRNb2RlKCk7XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFNlc3Npb24odGhpcy5tYWluU2Vzc2lvbik7XG4gICAgfVxuXG4gICAgc2V0Q3VzdG9tU2Vzc2lvbkFzQ3VycmVudChzZXNzaW9uSWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoc2Vzc2lvbklkID09PSB0aGlzLmN1cnJlbnRTZXNzaW9uLnNlc3Npb25JZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9nZ2xlRWRnZUVkaXRNb2RlKCk7XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFNlc3Npb25CeUlkKHNlc3Npb25JZCk7XG4gICAgfVxuXG4gICAgc2V0RWRnZVNlc3Npb25Bc0N1cnJlbnQoc2Vzc2lvbklkOiBudW1iZXIsIGNsaWNrZWRQYWdlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy50b2dnbGVFZGdlRWRpdE1vZGUoY2xpY2tlZFBhZ2UpO1xuICAgICAgICBpZiAoc2Vzc2lvbklkID09PSB0aGlzLmN1cnJlbnRTZXNzaW9uLnNlc3Npb25JZCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5zb3VyY2UuZWRnZUVkaXRQYWdlID0gY2xpY2tlZFBhZ2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRDdXJyZW50U2Vzc2lvbkJ5SWQoc2Vzc2lvbklkKTtcbiAgICB9XG5cbiAgICBzZXRUYXJnZXRlZFNlc3Npb25Bc0N1cnJlbnQodGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YXJnZXRlZFNlc3Npb24gPSB0aGlzLmdldFRhcmdldGVkU2Vzc2lvbih0YXJnZXRzKTtcbiAgICAgICAgaWYgKHRhcmdldGVkU2Vzc2lvbi5zZXNzaW9uSWQgPT09IHRoaXMuY3VycmVudFNlc3Npb24uc2Vzc2lvbklkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZmluZCh4ID0+IHguc2Vzc2lvbklkID09PSB0YXJnZXRlZFNlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgY29uc3QgZWRnZUVkaXRQYWdlID0gdGFyZ2V0cy5sZW5ndGggPyB0YXJnZXRzW3RhcmdldHMubGVuZ3RoIC0gMV0uZWRnZUVkaXRQYWdlIDogbnVsbDtcbiAgICAgICAgdGhpcy50b2dnbGVFZGdlRWRpdE1vZGUoZWRnZUVkaXRQYWdlKTtcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50U2Vzc2lvbihzZXNzaW9uKTtcbiAgICB9XG5cbiAgICBzZXRDdXJyZW50U2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlc3Npb25zLmZpbmRJbmRleCh4ID0+IHguc2Vzc2lvbklkID09PSBzZXNzaW9uSWQpO1xuICAgICAgICB0aGlzLnNldEN1cnJlbnRTZXNzaW9uKHRoaXMuc2Vzc2lvbnNbaW5kZXhdKTtcbiAgICB9XG5cbiAgICBzZXRDdXJyZW50U2Vzc2lvbihzZXNzaW9uOiBTZXNzaW9uTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5yZW5kZXJlci5oaWRlQ3Vyc29yKCk7XG4gICAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ucmVuZGVyZXIudXBkYXRlU2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uLnJhbmdlKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbiA9IHNlc3Npb247XG4gICAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ucmVuZGVyZXIuc2hvd0N1cnNvcigpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLnNvdXJjZS5lZGdlRWRpdFBhZ2UgPSB0aGlzLmVkZ2VFZGl0aW5nUGFnZTtcbiAgICB9XG5cbiAgICBnZXRTZXNzaW9uKHNlc3Npb25JZDogbnVtYmVyKTogRWRpdFNlc3Npb24ge1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5maW5kKHggPT4geC5zZXNzaW9uSWQgPT09IHNlc3Npb25JZCk7XG4gICAgICAgIHJldHVybiBzZXNzaW9uLnNlc3Npb247XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbjogU2VsZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIGNsZWFyQWxsU2Vzc2lvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbnMuZm9yRWFjaChzZXNzaW9uID0+IHtcbiAgICAgICAgICAgIHNlc3Npb24uc2Vzc2lvbi5kZXN0cm95KCk7XG4gICAgICAgICAgICBzZXNzaW9uLnJlbmRlcmVyLmRlc3Ryb3koKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbnMgPSBbXTtcbiAgICB9XG5cbiAgICBnZXRDdXJyZW50U2Vzc2lvblRhcmdldHMoKTogVGFyZ2V0TW9kZWxbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhcmdldHModGhpcy5jdXJyZW50U2Vzc2lvbik7XG4gICAgfVxuXG4gICAgZ2V0VGFyZ2V0cyhzZXNzaW9uOiBTZXNzaW9uTW9kZWwpOiBUYXJnZXRNb2RlbFtdIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBUYXJnZXRNb2RlbFtdID0gW107XG4gICAgICAgIGxldCBwYXJlbnRTZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5maW5kKHggPT4geC5zZXNzaW9uSWQgPT09IHNlc3Npb24ucGFyZW50U2Vzc2lvbklkKTtcbiAgICAgICAgd2hpbGUgKHBhcmVudFNlc3Npb24pIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHNlc3Npb24uc291cmNlLmdldFRhcmdldCgpO1xuICAgICAgICAgICAgcmVzdWx0LnNwbGljZSgwLCAwLCB0YXJnZXQpO1xuICAgICAgICAgICAgc2Vzc2lvbiA9IHBhcmVudFNlc3Npb247XG4gICAgICAgICAgICBwYXJlbnRTZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5maW5kKHggPT4geC5zZXNzaW9uSWQgPT09IHBhcmVudFNlc3Npb24ucGFyZW50U2Vzc2lvbklkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGdldEVkZ2VUYXJnZXQoc2Vzc2lvbklkOiBudW1iZXIpOiBUYXJnZXRNb2RlbCB8IG51bGwge1xuICAgICAgICBsZXQgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZmluZCh4ID0+IHguc2Vzc2lvbklkID09PSBzZXNzaW9uSWQpO1xuICAgICAgICBsZXQgcGFyZW50U2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZmluZCh4ID0+IHguc2Vzc2lvbklkID09PSBzZXNzaW9uLnBhcmVudFNlc3Npb25JZCk7XG4gICAgICAgIHdoaWxlIChwYXJlbnRTZXNzaW9uKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBzZXNzaW9uLnNvdXJjZS5nZXRUYXJnZXQoKTtcbiAgICAgICAgICAgIGlmICh0YXJnZXQudHlwZSA9PT0gVGFyZ2V0VHlwZS5FZGdlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2Vzc2lvbiA9IHBhcmVudFNlc3Npb247XG4gICAgICAgICAgICBwYXJlbnRTZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5maW5kKHggPT4geC5zZXNzaW9uSWQgPT09IHBhcmVudFNlc3Npb24ucGFyZW50U2Vzc2lvbklkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGdldFRhcmdldGVkU2Vzc2lvbih0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogRWRpdFNlc3Npb24ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5tYWluU2Vzc2lvbi5zZXNzaW9uO1xuICAgICAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRhcmdldC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBUYXJnZXRUeXBlLkRvY3VtZW50OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRhcmdldFR5cGUuVGFibGVDZWxsOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gcmVzdWx0LmN1c3RvbUNvbXBvbmVudHMudGFibGVzLmZpbmQoeCA9PiB4Lmluc3RhbmNlLmNvbnRlbnQuaW5zZXJ0SW5kZXggPT09IHRhcmdldC50YWJsZUNlbGwuaW5zZXJ0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0YWJsZS5pbnN0YW5jZS5nZXRDZWxsU2Vzc2lvbih0YXJnZXQudGFibGVDZWxsLnJvdywgdGFyZ2V0LnRhYmxlQ2VsbC5jb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBUYXJnZXRUeXBlLkVkZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWRnZSA9IHJlc3VsdC5jdXN0b21Db21wb25lbnRzLmVkZ2VzLmdldENvbXBvbmVudEJ5UGFnZVR5cGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZWRnZURhdGEucGFnZVR5cGUgYXMgUGFnZVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZWRnZURhdGEudHlwZSBhcyBFZGdlVHlwZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBlZGdlLmluc3RhbmNlLmVkZ2VTZXNzaW9uLnNlc3Npb247XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHRvZ2dsZUVkZ2VFZGl0TW9kZShjbGlja2VkUGFnZTogbnVtYmVyIHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGdlRWRpdGluZ1BhZ2UgPSBjbGlja2VkUGFnZTtcbiAgICAgICAgaWYgKCF0aGlzLm1haW5TZXNzaW9uLnNlc3Npb24uY3VzdG9tQ29tcG9uZW50cy5lZGdlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tYWluU2Vzc2lvbi5zZXNzaW9uLmN1c3RvbUNvbXBvbmVudHMuZWRnZXMudG9nZ2xlRWRpdE1vZGUoISF0aGlzLmVkZ2VFZGl0aW5nUGFnZSk7XG4gICAgICAgIGNvbnN0IG1haW5SZW5kZXJlciA9IHRoaXMubWFpblNlc3Npb24ucmVuZGVyZXIgYXMgVmlydHVhbFJlbmRlcmVyO1xuICAgICAgICBtYWluUmVuZGVyZXIuZWRnZXNMYXllci51cGRhdGUobWFpblJlbmRlcmVyLmxheWVyQ29uZmlnKTtcbiAgICB9XG59XG4iXX0=
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVndWxhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9leGVjdXRpb24vcmVndWxhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUs1RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFHM0QsTUFBTSxPQUFPLGdCQUFnQjtJQWF6QixZQUFvQixvQkFBMEMsRUFBVSxhQUE0QjtRQUFoRix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFWcEcsYUFBUSxHQUFtQixFQUFFLENBQUM7UUFN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QUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7b0JBQzNDLE1BQU07aUJBQ1Q7YUFDSjtTQUNKO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQixDQUFDLGNBQTZCLElBQUk7UUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtZQUNsRCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUEyQixDQUFDO1FBQ2xFLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDOzhHQTFOUSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2VsbFNlc3Npb25Tb3VyY2VNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2NlbGwtc2Vzc2lvbi1zb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgQ3VzdG9tQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tY29tcG9uZW50cy9zaGFyZWQvc2VydmljZXMvY3VzdG9tLWNvbnRlbnQvY3VzdG9tLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBERUZBVUxUX0VER0VfTUFYX0hFSUdIVF9NVUxUSVBMSUVSIH0gZnJvbSAnLi4vY29yZS9jb25zdGFudHMvZWRpdG9yLmNvbnN0JztcbmltcG9ydCB7IERvY3VtZW50IH0gZnJvbSAnLi4vY29yZS9kb2N1bWVudCc7XG5pbXBvcnQgeyBEb2N1bWVudEluZm8gfSBmcm9tICcuLi9jb3JlL2NvbnN0YW50cy9kb2N1bWVudC1pbmZvLmNvbnN0JztcbmltcG9ydCB7IERvY3hNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZG9jeC5tb2RlbCc7XG5pbXBvcnQgeyBFZGdlU2Vzc2lvblNvdXJjZU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvZWRnZS1zZXNzaW9uLXNvdXJjZS5tb2RlbCc7XG5pbXBvcnQgeyBFZGdlVHlwZSB9IGZyb20gJy4uL2NvcmUvY29tcG9uZW50cy9lZGdlcy9lZGdlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRpdFNlc3Npb24gfSBmcm9tICcuLi9jb3JlL2VkaXQuc2Vzc2lvbic7XG5pbXBvcnQgeyBHZW5lcmFsUHJvcGVydGllc01vZGVsIH0gZnJvbSAnLi9tb2RlbHMvZ2VuZXJhbC1wcm9wZXJ0aWVzLm1vZGVsJztcbmltcG9ydCB7IE1haW5TZXNzaW9uU291cmNlTW9kZWwgfSBmcm9tICcuL21vZGVscy9tYWluLXNlc3Npb24tc291cmNlLm1vZGVsJztcbmltcG9ydCB7IE1hcmdpbk1vZGVsIH0gZnJvbSAnLi4vY29yZS9tb2RlbHMvbWFyZ2luLm1vZGVsJztcbmltcG9ydCB7IE5vZGVyRWRnZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUvY29tcG9uZW50cy9lZGdlcy9lZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlclRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbS1jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnZVR5cGUgfSBmcm9tICcuLi9jb3JlL2VudW1zL3BhZ2UtdHlwZS5lbnVtJztcbmltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSAnLi4vY29yZS9yZW5kZXJlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9wb3NpdGlvbmluZy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgU2Vzc2lvbk1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvc2Vzc2lvbi5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBUYXJnZXRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGFyZ2V0Lm1vZGVsJztcbmltcG9ydCB7IFRhcmdldFR5cGUgfSBmcm9tICcuLi9vcGVyYXRpb25zL2VudW1zL3RhcmdldC10eXBlLmVudW0nO1xuaW1wb3J0IHsgVmlydHVhbFJlbmRlcmVyIH0gZnJvbSAnLi4vY29yZS92aXJ0dWFsLnJlbmRlcmVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlZ3VsYXRvclNlcnZpY2Uge1xuICAgIG1haW5TZXNzaW9uOiBTZXNzaW9uTW9kZWw7XG5cbiAgICBzZXNzaW9uczogU2Vzc2lvbk1vZGVsW10gPSBbXTtcblxuICAgIGN1cnJlbnRTZXNzaW9uOiBTZXNzaW9uTW9kZWw7XG5cbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbjtcblxuICAgIHNlc3Npb25JZEluY3JlbWVudCA9IDA7XG5cbiAgICBlZGdlRWRpdGluZ1BhZ2U6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjdXN0b21Db250ZW50U2VydmljZTogQ3VzdG9tQ29udGVudFNlcnZpY2UsIHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSkge31cblxuICAgIGFkZE1haW5TZXNzaW9uKG1vZGVsOiBEb2N4TW9kZWwsIG1hcmdpbnM6IE1hcmdpbk1vZGVsLCBwYWdlV2lkdGg6IG51bWJlciwgY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U2Vzc2lvbklkID0gKyt0aGlzLnNlc3Npb25JZEluY3JlbWVudDtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBuZXcgRG9jdW1lbnQobW9kZWwsIG1hcmdpbnMsIERvY3VtZW50SW5mby5wYWdlc1NwYWNlLCBwYWdlV2lkdGgsIG1vZGVsLnBhZ2VIZWlnaHQpO1xuICAgICAgICBjb25zdCByZW5kZXJlciA9IG5ldyBWaXJ0dWFsUmVuZGVyZXIoY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZWRpdG9yU2VydmljZSk7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgRWRpdFNlc3Npb24oXG4gICAgICAgICAgICBkb2N1bWVudCxcbiAgICAgICAgICAgIGN1cnJlbnRTZXNzaW9uSWQsXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbixcbiAgICAgICAgICAgIG5ldyBHZW5lcmFsUHJvcGVydGllc01vZGVsKHtcbiAgICAgICAgICAgICAgICBudW1iZXJpbmdzOiBtb2RlbC5udW1iZXJpbmdzLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRUYWJXaWR0aDogbW9kZWwuZGVmYXVsdFRhYldpZHRoLFxuICAgICAgICAgICAgICAgIG1heEVkZ2VIZWlnaHQ6IG1vZGVsLnBhZ2VIZWlnaHQgKiBERUZBVUxUX0VER0VfTUFYX0hFSUdIVF9NVUxUSVBMSUVSXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICByZW5kZXJlci5zZXRTZXNzaW9uKHNlc3Npb24pO1xuICAgICAgICByZW5kZXJlci5zY3JvbGxUbyhzZXNzaW9uLnNjcm9sbFRvcCk7XG4gICAgICAgIHNlc3Npb24uY29udGVudFdpZHRoID0gZG9jdW1lbnQucGFnZVdpZHRoIC0gKGRvY3VtZW50LnBhZ2VNYXJnaW4ubGVmdCArIGRvY3VtZW50LnBhZ2VNYXJnaW4ucmlnaHQpO1xuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc3R5bGVzID0gc2Vzc2lvbi5zdHlsZXNNYXA7XG4gICAgICAgIHRoaXMubWFpblNlc3Npb24gPSBuZXcgU2Vzc2lvbk1vZGVsKHNlc3Npb24sIHJlbmRlcmVyLCBjdXJyZW50U2Vzc2lvbklkLCBudWxsLCBuZXcgTWFpblNlc3Npb25Tb3VyY2VNb2RlbCgpKTtcbiAgICAgICAgdGhpcy5zZXNzaW9ucy5wdXNoKHRoaXMubWFpblNlc3Npb24pO1xuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uID0gdGhpcy5tYWluU2Vzc2lvbjtcbiAgICB9XG5cbiAgICBhZGRDZWxsU2Vzc2lvbihcbiAgICAgICAgdGFibGU6IFRhYmxlTW9kZWwsXG4gICAgICAgIG1hcmdpbnM6IE1hcmdpbk1vZGVsLFxuICAgICAgICBjb21wb25lbnQ6IE5vZGVyVGFibGVDZWxsQ29tcG9uZW50LFxuICAgICAgICBwcm9wZXJ0aWVzOiBHZW5lcmFsUHJvcGVydGllc01vZGVsXG4gICAgKTogU2Vzc2lvbk1vZGVsIHtcbiAgICAgICAgY29uc3QgY3VycmVudFNlc3Npb25JZCA9ICsrdGhpcy5zZXNzaW9uSWRJbmNyZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gbmV3IERvY3VtZW50KGNvbXBvbmVudC5jZWxsLCBtYXJnaW5zLCAwLCBjb21wb25lbnQud2lkdGgsIDApO1xuICAgICAgICBjb25zdCByZW5kZXJlciA9IG5ldyBSZW5kZXJlcihjb21wb25lbnQuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZWRpdG9yU2VydmljZSk7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgRWRpdFNlc3Npb24oZG9jdW1lbnQsIGN1cnJlbnRTZXNzaW9uSWQsIHRoaXMuY3VzdG9tQ29udGVudFNlcnZpY2UsIGNvbXBvbmVudC5jZWxsLCB0aGlzLnNlbGVjdGlvbiwgcHJvcGVydGllcyk7XG4gICAgICAgIHJlbmRlcmVyLnNldFNlc3Npb24oc2Vzc2lvbik7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IGNvbXBvbmVudC53aWR0aCAtIChkb2N1bWVudC5wYWdlTWFyZ2luLmxlZnQgKyBkb2N1bWVudC5wYWdlTWFyZ2luLnJpZ2h0KTtcbiAgICAgICAgc2Vzc2lvbi5jb250ZW50V2lkdGggPSBjb250ZW50V2lkdGggPT09IDAgPyAxIDogY29udGVudFdpZHRoO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBuZXcgQ2VsbFNlc3Npb25Tb3VyY2VNb2RlbCh0YWJsZSwgY29tcG9uZW50KTtcbiAgICAgICAgY29uc3QgbmV3U2Vzc2lvbiA9IG5ldyBTZXNzaW9uTW9kZWwoc2Vzc2lvbiwgcmVuZGVyZXIsIGN1cnJlbnRTZXNzaW9uSWQsIGNvbXBvbmVudC5wYXJlbnRTZXNzaW9uSWQsIHNvdXJjZSk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbnMucHVzaChuZXdTZXNzaW9uKTtcbiAgICAgICAgcmV0dXJuIG5ld1Nlc3Npb247XG4gICAgfVxuXG4gICAgYWRkRWRnZVNlc3Npb24oY29tcG9uZW50OiBOb2RlckVkZ2VDb21wb25lbnQpOiBTZXNzaW9uTW9kZWwge1xuICAgICAgICBjb25zdCBjdXJyZW50U2Vzc2lvbklkID0gKyt0aGlzLnNlc3Npb25JZEluY3JlbWVudDtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBuZXcgRG9jdW1lbnQoY29tcG9uZW50Lm1vZGVsLCBjb21wb25lbnQubWFyZ2lucywgMCwgY29tcG9uZW50LndpZHRoLCAwKTtcbiAgICAgICAgY29uc3QgcmVuZGVyZXIgPSBuZXcgUmVuZGVyZXIoY29tcG9uZW50LmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB0aGlzLmVkaXRvclNlcnZpY2UpO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IEVkaXRTZXNzaW9uKFxuICAgICAgICAgICAgZG9jdW1lbnQsXG4gICAgICAgICAgICBjdXJyZW50U2Vzc2lvbklkLFxuICAgICAgICAgICAgdGhpcy5jdXN0b21Db250ZW50U2VydmljZSxcbiAgICAgICAgICAgIGNvbXBvbmVudC5tb2RlbCxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLFxuICAgICAgICAgICAgY29tcG9uZW50LnByb3BlcnRpZXNcbiAgICAgICAgKTtcbiAgICAgICAgcmVuZGVyZXIuc2V0U2Vzc2lvbihzZXNzaW9uKTtcbiAgICAgICAgc2Vzc2lvbi5jb250ZW50V2lkdGggPSBjb21wb25lbnQud2lkdGggLSAoZG9jdW1lbnQucGFnZU1hcmdpbi5sZWZ0ICsgZG9jdW1lbnQucGFnZU1hcmdpbi5yaWdodCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IG5ldyBFZGdlU2Vzc2lvblNvdXJjZU1vZGVsKGNvbXBvbmVudC5tb2RlbC5wYWdlVHlwZSBhcyBQYWdlVHlwZSwgY29tcG9uZW50LnR5cGUpO1xuICAgICAgICBjb25zdCBuZXdTZXNzaW9uID0gbmV3IFNlc3Npb25Nb2RlbChzZXNzaW9uLCByZW5kZXJlciwgY3VycmVudFNlc3Npb25JZCwgY29tcG9uZW50LnBhcmVudFNlc3Npb25JZCwgc291cmNlKTtcbiAgICAgICAgdGhpcy5zZXNzaW9ucy5wdXNoKG5ld1Nlc3Npb24pO1xuICAgICAgICByZXR1cm4gbmV3U2Vzc2lvbjtcbiAgICB9XG5cbiAgICByZW1vdmVTZXNzaW9uKHNlc3Npb25JZDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZXNzaW9ucy5maW5kSW5kZXgoeCA9PiB4LnNlc3Npb25JZCA9PT0gc2Vzc2lvbklkKTtcbiAgICAgICAgdGhpcy5zZXNzaW9uc1tpbmRleF0uc2Vzc2lvbi5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbnNbaW5kZXhdLnJlbmRlcmVyLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5zZXNzaW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHNldE1haW5TZXNzaW9uQXNDdXJyZW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYWluU2Vzc2lvbi5zZXNzaW9uSWQgPT09IHRoaXMuY3VycmVudFNlc3Npb24uc2Vzc2lvbklkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b2dnbGVFZGdlRWRpdE1vZGUoKTtcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50U2Vzc2lvbih0aGlzLm1haW5TZXNzaW9uKTtcbiAgICB9XG5cbiAgICBzZXRDdXN0b21TZXNzaW9uQXNDdXJyZW50KHNlc3Npb25JZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChzZXNzaW9uSWQgPT09IHRoaXMuY3VycmVudFNlc3Npb24uc2Vzc2lvbklkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b2dnbGVFZGdlRWRpdE1vZGUoKTtcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50U2Vzc2lvbkJ5SWQoc2Vzc2lvbklkKTtcbiAgICB9XG5cbiAgICBzZXRFZGdlU2Vzc2lvbkFzQ3VycmVudChzZXNzaW9uSWQ6IG51bWJlciwgY2xpY2tlZFBhZ2U6IG51bWJlcikge1xuICAgICAgICB0aGlzLnRvZ2dsZUVkZ2VFZGl0TW9kZShjbGlja2VkUGFnZSk7XG4gICAgICAgIGlmIChzZXNzaW9uSWQgPT09IHRoaXMuY3VycmVudFNlc3Npb24uc2Vzc2lvbklkKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLnNvdXJjZS5lZGdlRWRpdFBhZ2UgPSBjbGlja2VkUGFnZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEN1cnJlbnRTZXNzaW9uQnlJZChzZXNzaW9uSWQpO1xuICAgIH1cblxuICAgIHNldFRhcmdldGVkU2Vzc2lvbkFzQ3VycmVudCh0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhcmdldGVkU2Vzc2lvbiA9IHRoaXMuZ2V0VGFyZ2V0ZWRTZXNzaW9uKHRhcmdldHMpO1xuICAgICAgICBpZiAodGFyZ2V0ZWRTZXNzaW9uLnNlc3Npb25JZCA9PT0gdGhpcy5jdXJyZW50U2Vzc2lvbi5zZXNzaW9uSWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5maW5kKHggPT4geC5zZXNzaW9uSWQgPT09IHRhcmdldGVkU2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICBjb25zdCBlZGdlRWRpdFBhZ2UgPSB0YXJnZXRzLmxlbmd0aCA/IHRhcmdldHNbdGFyZ2V0cy5sZW5ndGggLSAxXS5lZGdlRWRpdFBhZ2UgOiBudWxsO1xuICAgICAgICB0aGlzLnRvZ2dsZUVkZ2VFZGl0TW9kZShlZGdlRWRpdFBhZ2UpO1xuICAgICAgICB0aGlzLnNldEN1cnJlbnRTZXNzaW9uKHNlc3Npb24pO1xuICAgIH1cblxuICAgIHNldEN1cnJlbnRTZXNzaW9uQnlJZChzZXNzaW9uSWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2Vzc2lvbnMuZmluZEluZGV4KHggPT4geC5zZXNzaW9uSWQgPT09IHNlc3Npb25JZCk7XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFNlc3Npb24odGhpcy5zZXNzaW9uc1tpbmRleF0pO1xuICAgIH1cblxuICAgIHNldEN1cnJlbnRTZXNzaW9uKHNlc3Npb246IFNlc3Npb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLnJlbmRlcmVyLmhpZGVDdXJzb3IoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5yZW5kZXJlci51cGRhdGVTZWxlY3Rpb24odGhpcy5zZWxlY3Rpb24ucmFuZ2UpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uID0gc2Vzc2lvbjtcbiAgICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5yZW5kZXJlci5zaG93Q3Vyc29yKCk7XG4gICAgICAgIHRoaXMuY3VycmVudFNlc3Npb24uc291cmNlLmVkZ2VFZGl0UGFnZSA9IHRoaXMuZWRnZUVkaXRpbmdQYWdlO1xuICAgIH1cblxuICAgIGdldFNlc3Npb24oc2Vzc2lvbklkOiBudW1iZXIpOiBFZGl0U2Vzc2lvbiB7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmZpbmQoeCA9PiB4LnNlc3Npb25JZCA9PT0gc2Vzc2lvbklkKTtcbiAgICAgICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbjtcbiAgICB9XG5cbiAgICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZWxlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBzZWxlY3Rpb247XG4gICAgfVxuXG4gICAgY2xlYXJBbGxTZXNzaW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXNzaW9ucy5mb3JFYWNoKHNlc3Npb24gPT4ge1xuICAgICAgICAgICAgc2Vzc2lvbi5zZXNzaW9uLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHNlc3Npb24ucmVuZGVyZXIuZGVzdHJveSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXNzaW9ucyA9IFtdO1xuICAgIH1cblxuICAgIGdldEN1cnJlbnRTZXNzaW9uVGFyZ2V0cygpOiBUYXJnZXRNb2RlbFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFyZ2V0cyh0aGlzLmN1cnJlbnRTZXNzaW9uKTtcbiAgICB9XG5cbiAgICBnZXRUYXJnZXRzKHNlc3Npb246IFNlc3Npb25Nb2RlbCk6IFRhcmdldE1vZGVsW10ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFRhcmdldE1vZGVsW10gPSBbXTtcbiAgICAgICAgbGV0IHBhcmVudFNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmZpbmQoeCA9PiB4LnNlc3Npb25JZCA9PT0gc2Vzc2lvbi5wYXJlbnRTZXNzaW9uSWQpO1xuICAgICAgICB3aGlsZSAocGFyZW50U2Vzc2lvbikge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gc2Vzc2lvbi5zb3VyY2UuZ2V0VGFyZ2V0KCk7XG4gICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAsIHRhcmdldCk7XG4gICAgICAgICAgICBzZXNzaW9uID0gcGFyZW50U2Vzc2lvbjtcbiAgICAgICAgICAgIHBhcmVudFNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmZpbmQoeCA9PiB4LnNlc3Npb25JZCA9PT0gcGFyZW50U2Vzc2lvbi5wYXJlbnRTZXNzaW9uSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0RWRnZVRhcmdldChzZXNzaW9uSWQ6IG51bWJlcik6IFRhcmdldE1vZGVsIHwgbnVsbCB7XG4gICAgICAgIGxldCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5maW5kKHggPT4geC5zZXNzaW9uSWQgPT09IHNlc3Npb25JZCk7XG4gICAgICAgIGxldCBwYXJlbnRTZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5maW5kKHggPT4geC5zZXNzaW9uSWQgPT09IHNlc3Npb24ucGFyZW50U2Vzc2lvbklkKTtcbiAgICAgICAgd2hpbGUgKHBhcmVudFNlc3Npb24pIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHNlc3Npb24uc291cmNlLmdldFRhcmdldCgpO1xuICAgICAgICAgICAgaWYgKHRhcmdldC50eXBlID09PSBUYXJnZXRUeXBlLkVkZ2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXNzaW9uID0gcGFyZW50U2Vzc2lvbjtcbiAgICAgICAgICAgIHBhcmVudFNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmZpbmQoeCA9PiB4LnNlc3Npb25JZCA9PT0gcGFyZW50U2Vzc2lvbi5wYXJlbnRTZXNzaW9uSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZ2V0VGFyZ2V0ZWRTZXNzaW9uKHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBFZGl0U2Vzc2lvbiB7XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm1haW5TZXNzaW9uLnNlc3Npb247XG4gICAgICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldHMpIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0LnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFRhcmdldFR5cGUuRG9jdW1lbnQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVGFyZ2V0VHlwZS5UYWJsZUNlbGw6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFibGUgPSByZXN1bHQuY3VzdG9tQ29tcG9uZW50cy50YWJsZXMuZmluZCh4ID0+IHguaW5zdGFuY2UuY29udGVudC5pbnNlcnRJbmRleCA9PT0gdGFyZ2V0LnRhYmxlQ2VsbC5pbnNlcnRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRhYmxlLmluc3RhbmNlLmdldENlbGxTZXNzaW9uKHRhcmdldC50YWJsZUNlbGwucm93LCB0YXJnZXQudGFibGVDZWxsLmNvbHVtbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFRhcmdldFR5cGUuRWRnZToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlZGdlID0gcmVzdWx0LmN1c3RvbUNvbXBvbmVudHMuZWRnZXMuZ2V0Q29tcG9uZW50QnlQYWdlVHlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5lZGdlRGF0YS5wYWdlVHlwZSBhcyBQYWdlVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5lZGdlRGF0YS50eXBlIGFzIEVkZ2VUeXBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGVkZ2UuaW5zdGFuY2UuZWRnZVNlc3Npb24uc2Vzc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgdG9nZ2xlRWRnZUVkaXRNb2RlKGNsaWNrZWRQYWdlOiBudW1iZXIgfCBudWxsID0gbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkZ2VFZGl0aW5nUGFnZSA9IGNsaWNrZWRQYWdlO1xuICAgICAgICBpZiAoIXRoaXMubWFpblNlc3Npb24uc2Vzc2lvbi5jdXN0b21Db21wb25lbnRzLmVkZ2VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1haW5TZXNzaW9uLnNlc3Npb24uY3VzdG9tQ29tcG9uZW50cy5lZGdlcy50b2dnbGVFZGl0TW9kZSghIXRoaXMuZWRnZUVkaXRpbmdQYWdlKTtcbiAgICAgICAgY29uc3QgbWFpblJlbmRlcmVyID0gdGhpcy5tYWluU2Vzc2lvbi5yZW5kZXJlciBhcyBWaXJ0dWFsUmVuZGVyZXI7XG4gICAgICAgIG1haW5SZW5kZXJlci5lZGdlc0xheWVyLnVwZGF0ZShtYWluUmVuZGVyZXIubGF5ZXJDb25maWcpO1xuICAgIH1cbn1cbiJdfQ==
@@ -25,7 +25,9 @@ export class TableOperationsHelper {
25
25
  images: [],
26
26
  paragraphs: [new ParagraphModel({ insertIndex: 0, paragraphStyle: DEFAULT_PARAGRAPH_STYLE })],
27
27
  tables: [],
28
- tabs: []
28
+ tabs: [],
29
+ links: [],
30
+ widthType: 'dxa'
29
31
  });
30
32
  cells.push(cell);
31
33
  }
@@ -138,7 +140,8 @@ export class TableOperationsHelper {
138
140
  ],
139
141
  verticalMerge: this.getCellVerticalMerge(matrix[inheritIndex].cells[i].verticalMerge, targetIndex, inheritIndex),
140
142
  tables: [],
141
- tabs: []
143
+ tabs: [],
144
+ links: []
142
145
  });
143
146
  newCells.push(newCell);
144
147
  }
@@ -368,4 +371,4 @@ export class TableOperationsHelper {
368
371
  });
369
372
  }
370
373
  }
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb3BlcmF0aW9ucy5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9vcGVyYXRpb25zL2hlbHBlcnMvdGFibGUtb3BlcmF0aW9ucy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFckYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seURBQXlELENBQUM7QUFFeEYsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixNQUFNLENBQUMsYUFBYSxDQUFDLE1BQW9CLEVBQUUsV0FBbUIsRUFBRSxVQUE0QixFQUFFLFlBQW9CO1FBQzlHLElBQUksSUFBSSxHQUFlLEVBQUUsQ0FBQztRQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFB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QUFpQjtRQUN4QyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN2QyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFO29CQUM5QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFFN0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUNuRCxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO3FCQUNqRDtvQkFFRCxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQzNCLFdBQVcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztpQkFDL0M7cUJBQU07b0JBQ0gsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ3RELFdBQVcsRUFBRSxDQUFDO2lCQUNqQjthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZWxsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2NlbGwubW9kZWwnO1xuaW1wb3J0IHsgQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2NvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRSwgREVGQVVMVF9URVhUX1NUWUxFIH0gZnJvbSAnLi4vLi4vY29yZS9jb25zdGFudHMvZWRpdG9yLmNvbnN0JztcbmltcG9ydCB7IEZvcm1hdE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9mb3JtYXQubW9kZWwnO1xuaW1wb3J0IHsgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyIH0gZnJvbSAnLi9pbmRleGVkLWVsZW1lbnQtb3BlcmF0aW9ucy5oZWxwZXInO1xuaW1wb3J0IHsgSW5zZXJ0VGFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYmxlLm1vZGVsJztcbmltcG9ydCB7IFBhcmFncmFwaE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgUGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXNpemUtdGFibGUtY29sdW1ucy5tb2RlbCc7XG5pbXBvcnQgeyBSZXNpemVyU2lkZSB9IGZyb20gJy4uLy4uL2N1c3RvbS1jb21wb25lbnRzL3RhYmxlL2VudW1zL3JlaXNpemVyLXNpZGUuZW51bSc7XG5pbXBvcnQgeyBSb3dNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcm93Lm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFRleHRTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90ZXh0LXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFZlcnRpY2FsTWVyZ2UgfSBmcm9tICcuLi8uLi9jdXN0b20tY29tcG9uZW50cy90YWJsZS9lbnVtcy92ZXJ0aWNhbC1tZXJnZS5lbnVtJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlT3BlcmF0aW9uc0hlbHBlciB7XG4gICAgc3RhdGljIGluc2VydENvbnRlbnQodGFibGVzOiBUYWJsZU1vZGVsW10sIGluc2VydEluZGV4OiBudW1iZXIsIHRhYmxlTW9kZWw6IEluc2VydFRhYmxlTW9kZWwsIGNvbnRlbnRXaWR0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCByb3dzOiBSb3dNb2RlbFtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFibGVNb2RlbC5yb3dzQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNlbGxzOiBDZWxsTW9kZWxbXSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0YWJsZU1vZGVsLmNvbHVtbnNDb3VudDsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbCA9IG5ldyBDZWxsTW9kZWwoe1xuICAgICAgICAgICAgICAgICAgICBicmVha3M6IFtdLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudExlbmd0aDogMCxcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRzOiBbbmV3IEZvcm1hdE1vZGVsKHsgc3RhcnRJbmRleDogMCwgZW5kSW5kZXg6IDAsIHRleHRTdHlsZTogREVGQVVMVF9URVhUX1NUWUxFIH0pXSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoczogW25ldyBQYXJhZ3JhcGhNb2RlbCh7IGluc2VydEluZGV4OiAwLCBwYXJhZ3JhcGhTdHlsZTogREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUgfSldLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICB0YWJzOiBbXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goY2VsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvd3MucHVzaChuZXcgUm93TW9kZWwoeyBjZWxsczogY2VsbHMgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLnJvdW5kKGNvbnRlbnRXaWR0aCAvIHRhYmxlTW9kZWwuY29sdW1uc0NvdW50KTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlTW9kZWwuY29sdW1uc0NvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW5Nb2RlbCh7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbldpZHRoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlTW9kZWwoeyBpbnNlcnRJbmRleDogdGFibGVNb2RlbC5pbnNlcnRUYWJsZUluZGV4LCBhbGlnbm1lbnQ6IDAsIHJvd3MsIGNvbHVtbnMgfSk7XG5cbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQodGFibGVzLCBpbnNlcnRJbmRleCwgdGFibGVNb2RlbC5jb250ZW50Lmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGFibGVzLmZpbmRJbmRleCh4ID0+IHguaW5zZXJ0SW5kZXggPiB0YWJsZS5pbnNlcnRJbmRleCk7XG4gICAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgICAgIHRhYmxlcy5wdXNoKHRhYmxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhYmxlcy5zcGxpY2UoaW5kZXgsIDAsIHRhYmxlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWMgaW5zZXJ0VGFibGVSb3dzKHRhYmxlczogVGFibGVNb2RlbFtdLCBpbnNlcnRJbmRleDogbnVtYmVyLCByb3dzQ291bnQ6IG51bWJlciwgdGFyZ2V0SW5kZXg6IG51bWJlciwgaW5oZXJpdEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFibGUgPSB0YWJsZXMuZmluZCh4ID0+IHguaW5zZXJ0SW5kZXggPT09IGluc2VydEluZGV4KTtcbiAgICAgICAgY29uc3QgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgodGFibGUpO1xuICAgICAgICBjb25zdCBuZXdDZWxscyA9IHRoaXMuZ2V0TmV3Um93Q2VsbHMobWF0cml4LCB0YXJnZXRJbmRleCwgaW5oZXJpdEluZGV4KTtcbiAgICAgICAgdGhpcy5pbnNlcnROZXdSb3dDZWxscyh0YWJsZSwgbmV3Q2VsbHMsIHJvd3NDb3VudCwgdGFyZ2V0SW5kZXgsIGluaGVyaXRJbmRleCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydFRhYmxlQ29sdW1ucyhcbiAgICAgICAgdGFibGVzOiBUYWJsZU1vZGVsW10sXG4gICAgICAgIGluc2VydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGNvbHVtbnNDb3VudDogbnVtYmVyLFxuICAgICAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgICAgICBpbmhlcml0SW5kZXg6IG51bWJlcixcbiAgICAgICAgY29udGVudFdpZHRoOiBudW1iZXJcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFibGUgPSB0YWJsZXMuZmluZCh4ID0+IHguaW5zZXJ0SW5kZXggPT09IGluc2VydEluZGV4KTtcbiAgICAgICAgY29uc3QgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgodGFibGUpO1xuICAgICAgICBjb25zdCB0YXJnZXRJbmRleGVzID0gdGhpcy5nZXRUYXJnZXRJbmRleGVzKG1hdHJpeCwgdGFyZ2V0SW5kZXgpO1xuICAgICAgICBjb25zdCBuZXdDZWxscyA9IHRoaXMuZ2V0TmV3Q29sdW1uQ2VsbHMobWF0cml4LCBjb2x1bW5zQ291bnQsIHRhcmdldEluZGV4LCBpbmhlcml0SW5kZXgpO1xuICAgICAgICB0aGlzLmluc2VydE5ld0NvbHVtbkNlbGxzKHRhYmxlLCB0YXJnZXRJbmRleGVzLCBuZXdDZWxscyk7XG4gICAgICAgIHRoaXMuaW5zZXJ0TmV3Q29sdW1ucyh0YWJsZSwgY29sdW1uc0NvdW50LCB0YXJnZXRJbmRleCwgaW5oZXJpdEluZGV4KTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVDb2x1bW5zV2lkdGgodGFibGUsIGNvbnRlbnRXaWR0aCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlbW92ZVRhYmxlUm93cyh0YWJsZXM6IFRhYmxlTW9kZWxbXSwgaW5zZXJ0SW5kZXg6IG51bWJlciwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gdGFibGVzLmZpbmQoeCA9PiB4Lmluc2VydEluZGV4ID09PSBpbnNlcnRJbmRleCk7XG4gICAgICAgIGNvbnN0IG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KHRhYmxlKTtcbiAgICAgICAgdGhpcy5yZW1vdmVNYXRyaXhSb3dzKG1hdHJpeCwgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICB0YWJsZS5yb3dzLnNwbGljZShzdGFydEluZGV4LCBlbmRJbmRleCAtIHN0YXJ0SW5kZXggKyAxKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVtb3ZlVGFibGVDb2x1bW5zKHRhYmxlczogVGFibGVNb2RlbFtdLCBpbnNlcnRJbmRleDogbnVtYmVyLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIsIGNvbnRlbnRXaWR0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gdGFibGVzLmZpbmQoeCA9PiB4Lmluc2VydEluZGV4ID09PSBpbnNlcnRJbmRleCk7XG4gICAgICAgIGNvbnN0IG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KHRhYmxlKTtcbiAgICAgICAgdGFibGUuY29sdW1ucy5zcGxpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXggLSBzdGFydEluZGV4ICsgMSk7XG4gICAgICAgIHRoaXMucmVtb3ZlTWF0cml4Um93Q2VsbHMobWF0cml4LCB0YWJsZSwgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRhYmxlLnJvd3NbaV0uY2VsbHMgPSB0YWJsZS5yb3dzW2ldLmNlbGxzLmZpbHRlcih4ID0+IG1hdHJpeFtpXS5jZWxscy5pbmNsdWRlcyh4KSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0YWJsZSwgY29udGVudFdpZHRoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVzaXplVGFibGVDb2x1bW5zKHRhYmxlczogVGFibGVNb2RlbFtdLCByZXNpemVUYWJsZUNvbHVtbnM6IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gdGFibGVzLmZpbmQoeCA9PiB4Lmluc2VydEluZGV4ID09PSByZXNpemVUYWJsZUNvbHVtbnMuaW5zZXJ0SW5kZXgpO1xuICAgICAgICB0aGlzLnJlc2l6ZUNvbHVtbnModGFibGUsIHJlc2l6ZVRhYmxlQ29sdW1ucyk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlQ2VsbHNXaWR0aCh0YWJsZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlc3RvcmVUYWJsZSh0YWJsZXM6IFRhYmxlTW9kZWxbXSwgaW5zZXJ0SW5kZXg6IG51bWJlciwgb2xkVGFibGU6IFRhYmxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFibGUgPSB0YWJsZXMuZmluZCh4ID0+IHguaW5zZXJ0SW5kZXggPT09IGluc2VydEluZGV4KTtcbiAgICAgICAgdGFibGUuYWxpZ25tZW50ID0gb2xkVGFibGUuYWxpZ25tZW50O1xuICAgICAgICB0YWJsZS5ib3JkZXJzID0gb2xkVGFibGUuYm9yZGVycztcbiAgICAgICAgdGFibGUuY2FsbFNwYWNpbmcgPSBvbGRUYWJsZS5jYWxsU3BhY2luZztcbiAgICAgICAgdGFibGUuY29sdW1ucyA9IG9sZFRhYmxlLmNvbHVtbnM7XG4gICAgICAgIHRhYmxlLmhlYWRpbmdTdHlsZUlkID0gb2xkVGFibGUuaGVhZGluZ1N0eWxlSWQ7XG4gICAgICAgIHRhYmxlLmluZGVudExlZnQgPSBvbGRUYWJsZS5pbmRlbnRMZWZ0O1xuICAgICAgICB0YWJsZS5pbmRlbnRMZWZ0RnJvbVRleHQgPSBvbGRUYWJsZS5pbmRlbnRMZWZ0RnJvbVRleHQ7XG4gICAgICAgIHRhYmxlLmluZGVudFJpZ2h0RnJvbVRleHQgPSBvbGRUYWJsZS5pbmRlbnRSaWdodEZyb21UZXh0O1xuICAgICAgICB0YWJsZS5tYXJnaW5zID0gb2xkVGFibGUubWFyZ2lucztcbiAgICAgICAgdGFibGUucm93cyA9IG9sZFRhYmxlLnJvd3M7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldE1hdHJpeCh0YWJsZTogVGFibGVNb2RlbCk6IFJvd01vZGVsW10ge1xuICAgICAgICBjb25zdCBtYXRyaXg6IFJvd01vZGVsW10gPSBbXTtcblxuICAgICAgICB0YWJsZS5yb3dzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgICAgICAgIG1hdHJpeC5wdXNoKG5ldyBSb3dNb2RlbCh7IC4uLnJvdywgY2VsbHM6IFtdIH0pKTtcblxuICAgICAgICAgICAgcm93LmNlbGxzLmZvckVhY2goY2VsbCA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAoY2VsbC5ob3Jpem9udGFsTWVyZ2UgPz8gMSk7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzLnB1c2goY2VsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtYXRyaXg7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldE5ld1Jvd0NlbGxzKG1hdHJpeDogUm93TW9kZWxbXSwgdGFyZ2V0SW5kZXg6IG51bWJlciwgaW5oZXJpdEluZGV4OiBudW1iZXIpOiBDZWxsTW9kZWxbXSB7XG4gICAgICAgIGNvbnN0IG5ld0NlbGxzOiBDZWxsTW9kZWxbXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4W2luaGVyaXRJbmRleF0uY2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChtYXRyaXhbaW5oZXJpdEluZGV4XS5jZWxsc1tpXSA9PT0gbWF0cml4W2luaGVyaXRJbmRleF0uY2VsbHNbaSAtIDFdKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld0NlbGwgPSBuZXcgQ2VsbE1vZGVsKHtcbiAgICAgICAgICAgICAgICAuLi5tYXRyaXhbaW5oZXJpdEluZGV4XS5jZWxsc1tpXSxcbiAgICAgICAgICAgICAgICBicmVha3M6IFtdLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRMZW5ndGg6IDAsXG4gICAgICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxuICAgICAgICAgICAgICAgIGltYWdlczogW10sXG4gICAgICAgICAgICAgICAgZm9ybWF0czogW1xuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybWF0TW9kZWwoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZEluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFN0eWxlOiBuZXcgVGV4dFN0eWxlTW9kZWwobWF0cml4W2luaGVyaXRJbmRleF0uY2VsbHNbaV0uZm9ybWF0c1swXS50ZXh0U3R5bGUpXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBwYXJhZ3JhcGhzOiBbXG4gICAgICAgICAgICAgICAgICAgIG5ldyBQYXJhZ3JhcGhNb2RlbCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaFN0eWxlOiBuZXcgUGFyYWdyYXBoU3R5bGVNb2RlbChtYXRyaXhbaW5oZXJpdEluZGV4XS5jZWxsc1tpXS5wYXJhZ3JhcGhzWzBdLnBhcmFncmFwaFN0eWxlKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgdmVydGljYWxNZXJnZTogdGhpcy5nZXRDZWxsVmVydGljYWxNZXJnZShcbiAgICAgICAgICAgICAgICAgICAgbWF0cml4W2luaGVyaXRJbmRleF0uY2VsbHNbaV0udmVydGljYWxNZXJnZSBhcyBWZXJ0aWNhbE1lcmdlLFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgaW5oZXJpdEluZGV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWJsZXM6IFtdLFxuICAgICAgICAgICAgICAgIHRhYnM6IFtdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5ld0NlbGxzLnB1c2gobmV3Q2VsbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3Q2VsbHM7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldENlbGxWZXJ0aWNhbE1lcmdlKGN1cnJlbnRWZXJ0aWNhbE1lcmdlOiBWZXJ0aWNhbE1lcmdlLCB0YXJnZXRJbmRleDogbnVtYmVyLCBpbmhlcml0SW5kZXg6IG51bWJlcik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoY3VycmVudFZlcnRpY2FsTWVyZ2UgIT09IFZlcnRpY2FsTWVyZ2UuUmVzdGFydCkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRWZXJ0aWNhbE1lcmdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldEluZGV4ID4gaW5oZXJpdEluZGV4ID8gVmVydGljYWxNZXJnZS5NZXJnZSA6IG51bGw7XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydE5ld1Jvd0NlbGxzKHRhYmxlOiBUYWJsZU1vZGVsLCBuZXdDZWxsczogQ2VsbE1vZGVsW10sIHJvd3NDb3VudDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyLCBpbmhlcml0SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3NDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdSb3dDZWxscyA9IG5ld0NlbGxzLm1hcChcbiAgICAgICAgICAgICAgICB4ID0+XG4gICAgICAgICAgICAgICAgICAgIG5ldyBDZWxsTW9kZWwoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRMZW5ndGg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRzOiBbbmV3IEZvcm1hdE1vZGVsKHsgc3RhcnRJbmRleDogMCwgZW5kSW5kZXg6IDAsIHRleHRTdHlsZTogbmV3IFRleHRTdHlsZU1vZGVsKHguZm9ybWF0c1swXS50ZXh0U3R5bGUpIH0pXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBhcmFncmFwaE1vZGVsKHsgaW5zZXJ0SW5kZXg6IDAsIHBhcmFncmFwaFN0eWxlOiBuZXcgUGFyYWdyYXBoU3R5bGVNb2RlbCh4LnBhcmFncmFwaHNbMF0ucGFyYWdyYXBoU3R5bGUpIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYnM6IFtdXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgbmV3Um93ID0gbmV3IFJvd01vZGVsKHsgLi4udGFibGUucm93c1tpbmhlcml0SW5kZXhdLCBjZWxsczogbmV3Um93Q2VsbHMgfSk7XG4gICAgICAgICAgICB0YWJsZS5yb3dzLnNwbGljZSh0YXJnZXRJbmRleCwgMCwgbmV3Um93KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBnZXRUYXJnZXRJbmRleGVzKG1hdHJpeDogUm93TW9kZWxbXSwgdGFyZ2V0SW5kZXg6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXhlczogbnVtYmVyW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBtYXRyaXgpIHtcbiAgICAgICAgICAgIGxldCBhYnNvbHV0ZUNlbGxJbmRleCA9IDA7XG4gICAgICAgICAgICBsZXQgY3VycmVudFRhcmdldEluZGV4ID0gMDtcbiAgICAgICAgICAgIGxldCBjZWxsTWF0cml4SW5kZXggPSAwO1xuXG4gICAgICAgICAgICB3aGlsZSAoYWJzb2x1dGVDZWxsSW5kZXggPCB0YXJnZXRJbmRleCkge1xuICAgICAgICAgICAgICAgIGlmIChyb3cuY2VsbHNbY2VsbE1hdHJpeEluZGV4XSA9PT0gcm93LmNlbGxzW2NlbGxNYXRyaXhJbmRleCAtIDFdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNlbGxNYXRyaXhJbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXJvdy5jZWxsc1tjZWxsTWF0cml4SW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFic29sdXRlQ2VsbEluZGV4ICs9IHJvdy5jZWxsc1tjZWxsTWF0cml4SW5kZXhdLmhvcml6b250YWxNZXJnZSA/PyAxO1xuICAgICAgICAgICAgICAgIGNlbGxNYXRyaXhJbmRleCsrO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXRJbmRleCsrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0YXJnZXRJbmRleGVzLnB1c2goY3VycmVudFRhcmdldEluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXRJbmRleGVzO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXROZXdDb2x1bW5DZWxscyhtYXRyaXg6IFJvd01vZGVsW10sIGNvbHVtbnNDb3VudDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyLCBpbmhlcml0SW5kZXg6IG51bWJlcik6IENlbGxNb2RlbFtdW10ge1xuICAgICAgICByZXR1cm4gbWF0cml4Lm1hcChyb3cgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Um93Q2VsbHM6IENlbGxNb2RlbFtdID0gW107XG4gICAgICAgICAgICBjb25zdCBpc0NvbnRpbnVvdXNDZWxsID1cbiAgICAgICAgICAgICAgICBpbmhlcml0SW5kZXggPT09IHRhcmdldEluZGV4XG4gICAgICAgICAgICAgICAgICAgID8gcm93LmNlbGxzW2luaGVyaXRJbmRleF0gPT09IHJvdy5jZWxsc1t0YXJnZXRJbmRleCAtIDFdICYmIHJvdy5jZWxsc1tpbmhlcml0SW5kZXhdLmhvcml6b250YWxNZXJnZVxuICAgICAgICAgICAgICAgICAgICA6IHJvdy5jZWxsc1tpbmhlcml0SW5kZXhdID09PSByb3cuY2VsbHNbdGFyZ2V0SW5kZXhdICYmIHJvdy5jZWxsc1tpbmhlcml0SW5kZXhdLmhvcml6b250YWxNZXJnZTtcblxuICAgICAgICAgICAgaWYgKGlzQ29udGludW91c0NlbGwpIHtcbiAgICAgICAgICAgICAgICByb3cuY2VsbHNbaW5oZXJpdEluZGV4XS5ob3Jpem9udGFsTWVyZ2UgKz0gY29sdW1uc0NvdW50O1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdSb3dDZWxscztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NlbGwgPSBuZXcgQ2VsbE1vZGVsKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucm93LmNlbGxzW2luaGVyaXRJbmRleF0sXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrczogW10sXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50TGVuZ3RoOiAwLFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogW10sXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHM6IFtuZXcgRm9ybWF0TW9kZWwoeyBzdGFydEluZGV4OiAwLCBlbmRJbmRleDogMCwgdGV4dFN0eWxlOiByb3cuY2VsbHNbaW5oZXJpdEluZGV4XS5mb3JtYXRzWzBdLnRleHRTdHlsZSB9KV0sXG4gICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxNZXJnZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBhcmFncmFwaE1vZGVsKHsgaW5zZXJ0SW5kZXg6IDAsIHBhcmFncmFwaFN0eWxlOiByb3cuY2VsbHNbaW5oZXJpdEluZGV4XS5wYXJhZ3JhcGhzWzBdLnBhcmFncmFwaFN0eWxlIH0pXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlczogW10sXG4gICAgICAgICAgICAgICAgICAgIHRhYnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbE1lcmdlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogcm93LmNlbGxzW2luaGVyaXRJbmRleF0ud2lkdGhcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIG5ld1Jvd0NlbGxzLnB1c2gobmV3Q2VsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdSb3dDZWxscztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydE5ld0NvbHVtbkNlbGxzKHRhYmxlOiBUYWJsZU1vZGVsLCB0YXJnZXRJbmRleGVzOiBudW1iZXJbXSwgbmV3Q2VsbHM6IENlbGxNb2RlbFtdW10pOiB2b2lkIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YXJnZXRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIW5ld0NlbGxzW2ldLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0YWJsZS5yb3dzW2ldLmNlbGxzLnNwbGljZSh0YXJnZXRJbmRleGVzW2ldLCAwLCAuLi5uZXdDZWxsc1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgaW5zZXJ0TmV3Q29sdW1ucyh0YWJsZTogVGFibGVNb2RlbCwgY29sdW1uc0NvdW50OiBudW1iZXIsIHRhcmdldEluZGV4OiBudW1iZXIsIGluaGVyaXRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRhYmxlLmNvbHVtbnNbaW5oZXJpdEluZGV4XTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgdGFibGUuY29sdW1ucy5zcGxpY2UodGFyZ2V0SW5kZXgsIDAsIG5ldyBDb2x1bW5Nb2RlbChuZXdDb2x1bW4pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBjYWxjdWxhdGVDb2x1bW5zV2lkdGgodGFibGU6IFRhYmxlTW9kZWwsIGNvbnRlbnRXaWR0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBjdXJyZW50VGFibGVXaWR0aCA9IHRhYmxlLmNvbHVtbnMucmVkdWNlKChwcmV2LCBuZXh0KSA9PiBwcmV2ICsgbmV4dC53aWR0aCwgMCk7XG4gICAgICAgIHRhYmxlLmNvbHVtbnMuZm9yRWFjaCh4ID0+ICh4LndpZHRoID0gTWF0aC5yb3VuZCgoeC53aWR0aCAvIGN1cnJlbnRUYWJsZVdpZHRoKSAqIGNvbnRlbnRXaWR0aCkpKTtcblxuICAgICAgICB0YWJsZS5yb3dzLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93LmNlbGxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5jZWxsc1tpXS5ob3Jpem9udGFsTWVyZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHdpZHRoID0gdGFibGUuY29sdW1uc1tpXS53aWR0aDtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMTsgaiA8IHJvdy5jZWxsc1tpXS5ob3Jpem9udGFsTWVyZ2U7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKz0gdGFibGUuY29sdW1uc1tpICsgal0ud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByb3cuY2VsbHNbaV0ud2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByb3cuY2VsbHNbaV0ud2lkdGggPSB0YWJsZS5jb2x1bW5zW2ldLndpZHRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlbW92ZU1hdHJpeFJvd3MobWF0cml4OiBSb3dNb2RlbFtdLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZFJvd3MgPSBtYXRyaXguc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXggKyAxKTtcbiAgICAgICAgbWF0cml4LnNwbGljZShzdGFydEluZGV4LCBlbmRJbmRleCAtIHN0YXJ0SW5kZXggKyAxKTtcbiAgICAgICAgbGV0IGkgPSAwO1xuXG4gICAgICAgIHdoaWxlIChpIDwgbWF0cml4Lmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IGogPSAwO1xuXG4gICAgICAgICAgICB3aGlsZSAoaiA8IG1hdHJpeFtpXS5jZWxscy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChtYXRyaXhbaV0uY2VsbHNbal0udmVydGljYWxNZXJnZSBhcyBWZXJ0aWNhbE1lcmdlKSA9PT0gVmVydGljYWxNZXJnZS5SZXN0YXJ0ICYmXG4gICAgICAgICAgICAgICAgICAgICghbWF0cml4W2kgKyAxXSB8fCAobWF0cml4W2ldLmNlbGxzW2pdLnZlcnRpY2FsTWVyZ2UgYXMgVmVydGljYWxNZXJnZSkgIT09IFZlcnRpY2FsTWVyZ2UuTWVyZ2UpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdHJpeFtpXS5jZWxsc1tqXS52ZXJ0aWNhbE1lcmdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChtYXRyaXhbaV0uY2VsbHNbal0udmVydGljYWxNZXJnZSBhcyBWZXJ0aWNhbE1lcmdlKSA9PT0gVmVydGljYWxNZXJnZS5NZXJnZSAmJlxuICAgICAgICAgICAgICAgICAgICAhW1ZlcnRpY2FsTWVyZ2UuUmVzdGFydCwgVmVydGljYWxNZXJnZS5NZXJnZV0uaW5jbHVkZXMobWF0cml4W2kgLSAxXT8uY2VsbHNbal0udmVydGljYWxNZXJnZSBhcyBWZXJ0aWNhbE1lcmdlKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGxNZXJnZWRDZWxsQWZ0ZXJSZW1vdmUobWF0cml4LCByZW1vdmVkUm93cywgaSwgaik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaisrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZmlsbE1lcmdlZENlbGxBZnRlclJlbW92ZShtYXRyaXg6IFJvd01vZGVsW10sIHJlbW92ZWRSb3dzOiBSb3dNb2RlbFtdLCByb3dJbmRleDogbnVtYmVyLCBjZWxsSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgaSA9IHJlbW92ZWRSb3dzLmxlbmd0aCAtIDE7XG4gICAgICAgIGxldCByZW1vdmVkQ2VsbDogQ2VsbE1vZGVsO1xuXG4gICAgICAgIHdoaWxlICghcmVtb3ZlZENlbGwpIHtcbiAgICAgICAgICAgIGlmICgocmVtb3ZlZFJvd3NbaV0uY2VsbHNbY2VsbEluZGV4XS52ZXJ0aWNhbE1lcmdlIGFzIFZlcnRpY2FsTWVyZ2UpID09PSBWZXJ0aWNhbE1lcmdlLlJlc3RhcnQpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVkQ2VsbCA9IHJlbW92ZWRSb3dzW2ldLmNlbGxzW2NlbGxJbmRleF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS5iYWNrZ3JvdW5kQ29sb3IgPSByZW1vdmVkQ2VsbC5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS5ib3JkZXJzID0gcmVtb3ZlZENlbGwuYm9yZGVycztcbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLmJyZWFrcyA9IHJlbW92ZWRDZWxsLmJyZWFrcztcbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLmNvbHVtblNlY3Rpb25zID0gcmVtb3ZlZENlbGwuY29sdW1uU2VjdGlvbnM7XG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS5jb250ZW50ID0gcmVtb3ZlZENlbGwuY29udGVudDtcbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLmNvbnRlbnRMZW5ndGggPSByZW1vdmVkQ2VsbC5jb250ZW50TGVuZ3RoO1xuICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0uZWxlbWVudHMgPSByZW1vdmVkQ2VsbC5lbGVtZW50cztcbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLmZvcm1hdHMgPSByZW1vdmVkQ2VsbC5mb3JtYXRzO1xuICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0uaG9yaXpvbnRhbE1lcmdlID0gcmVtb3ZlZENlbGwuaG9yaXpvbnRhbE1lcmdlO1xuICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0uaW1hZ2VzID0gcmVtb3ZlZENlbGwuaW1hZ2VzO1xuICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0ubWFyZ2lucyA9IHJlbW92ZWRDZWxsLm1hcmdpbnM7XG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS5wYXJhZ3JhcGhzID0gcmVtb3ZlZENlbGwucGFyYWdyYXBocztcbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLnRhYmxlcyA9IHJlbW92ZWRDZWxsLnRhYmxlcztcbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLnZlcnRpY2FsQWxpZ24gPSByZW1vdmVkQ2VsbC52ZXJ0aWNhbEFsaWduO1xuICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0udmVydGljYWxNZXJnZSA9IHJlbW92ZWRDZWxsLnZlcnRpY2FsTWVyZ2U7XG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS53aWR0aCA9IHJlbW92ZWRDZWxsLndpZHRoO1xuICAgIH1cblxuICAgIHN0YXRpYyByZW1vdmVNYXRyaXhSb3dDZWxscyhtYXRyaXg6IFJvd01vZGVsW10sIHRhYmxlOiBUYWJsZU1vZGVsLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IGkgPSAwO1xuXG4gICAgICAgIHdoaWxlIChpIDwgbWF0cml4Lmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IGogPSAwO1xuICAgICAgICAgICAgbWF0cml4W2ldLmNlbGxzLnNwbGljZShzdGFydEluZGV4LCBlbmRJbmRleCAtIHN0YXJ0SW5kZXggKyAxKTtcblxuICAgICAgICAgICAgd2hpbGUgKGogPCBtYXRyaXhbaV0uY2VsbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1hdHJpeFtpXS5jZWxsc1tqXS5ob3Jpem9udGFsTWVyZ2UgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZENlbGxzQ291bnQgPSB0aGlzLmZpbGxEYXRhRm9ySG9yaXpvbnRhbE1lcmdlZENlbGwobWF0cml4LCB0YWJsZSwgaSwgaik7XG4gICAgICAgICAgICAgICAgICAgIGogKz0gbWVyZ2VkQ2VsbHNDb3VudDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBqKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZmlsbERhdGFGb3JIb3Jpem9udGFsTWVyZ2VkQ2VsbChtYXRyaXg6IFJvd01vZGVsW10sIHRhYmxlOiBUYWJsZU1vZGVsLCByb3dJbmRleDogbnVtYmVyLCBjZWxsSW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG1lcmdlZENlbGxzID0gbWF0cml4W3Jvd0luZGV4XS5jZWxscy5maWx0ZXIoeCA9PiB4ID09PSBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0pO1xuXG4gICAgICAgIGlmIChtZXJnZWRDZWxscy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0uaG9yaXpvbnRhbE1lcmdlID0gbWVyZ2VkQ2VsbHMubGVuZ3RoO1xuICAgICAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLndpZHRoID0gMDtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0uaG9yaXpvbnRhbE1lcmdlOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0ud2lkdGggKz0gdGFibGUuY29sdW1uc1tjZWxsSW5kZXggKyBpXS53aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS5ob3Jpem9udGFsTWVyZ2UgPSBudWxsO1xuICAgICAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLndpZHRoID0gdGFibGUuY29sdW1uc1tjZWxsSW5kZXhdLndpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLmhvcml6b250YWxNZXJnZSA9IG1lcmdlZENlbGxzLmxlbmd0aCA+IDEgPyBtZXJnZWRDZWxscy5sZW5ndGggOiBudWxsO1xuICAgICAgICByZXR1cm4gbWVyZ2VkQ2VsbHMubGVuZ3RoO1xuICAgIH1cblxuICAgIHN0YXRpYyByZXNpemVDb2x1bW5zKHRhYmxlOiBUYWJsZU1vZGVsLCByZXNpemVUYWJsZUNvbHVtbnM6IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsKTogdm9pZCB7XG4gICAgICAgIGlmIChyZXNpemVUYWJsZUNvbHVtbnMucmVzaXplclNpZGUgPT09IFJlc2l6ZXJTaWRlLkxlZnQpIHtcbiAgICAgICAgICAgIHRhYmxlLmNvbHVtbnNbcmVzaXplVGFibGVDb2x1bW5zLmNvbHVtbkluZGV4XS53aWR0aCArPSByZXNpemVUYWJsZUNvbHVtbnMuZGlzdGFuY2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjZWxsSG9yaXpvbnRhbE1lcmdlID0gdGFibGUucm93c1tyZXNpemVUYWJsZUNvbHVtbnMucm93SW5kZXhdLmNlbGxzW3Jlc2l6ZVRhYmxlQ29sdW1ucy5jZWxsSW5kZXhdLmhvcml6b250YWxNZXJnZSA/PyAxO1xuICAgICAgICBjb25zdCByZXNpemVyQ29sdW1uSW5kZXggPSByZXNpemVUYWJsZUNvbHVtbnMuY29sdW1uSW5kZXggKyBjZWxsSG9yaXpvbnRhbE1lcmdlIC0gMTtcbiAgICAgICAgdGFibGUuY29sdW1uc1tyZXNpemVyQ29sdW1uSW5kZXhdLndpZHRoICs9IHJlc2l6ZVRhYmxlQ29sdW1ucy5kaXN0YW5jZTtcblxuICAgICAgICBpZiAodGFibGUucm93c1tyZXNpemVUYWJsZUNvbHVtbnMucm93SW5kZXhdLmNlbGxzW3Jlc2l6ZVRhYmxlQ29sdW1ucy5jZWxsSW5kZXggKyAxXSkge1xuICAgICAgICAgICAgdGFibGUuY29sdW1uc1tyZXNpemVyQ29sdW1uSW5kZXggKyAxXS53aWR0aCAtPSByZXNpemVUYWJsZUNvbHVtbnMuZGlzdGFuY2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgY2FsY3VsYXRlQ2VsbHNXaWR0aCh0YWJsZTogVGFibGVNb2RlbCk6IHZvaWQge1xuICAgICAgICB0YWJsZS5yb3dzLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIGxldCBjb2x1bW5JbmRleCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdy5jZWxscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChyb3cuY2VsbHNbaV0uaG9yaXpvbnRhbE1lcmdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IHRhYmxlLmNvbHVtbnNbY29sdW1uSW5kZXhdLndpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDwgcm93LmNlbGxzW2ldLmhvcml6b250YWxNZXJnZTsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCArPSB0YWJsZS5jb2x1bW5zW2NvbHVtbkluZGV4ICsgal0ud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByb3cuY2VsbHNbaV0ud2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uSW5kZXggKz0gcm93LmNlbGxzW2ldLmhvcml6b250YWxNZXJnZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByb3cuY2VsbHNbaV0ud2lkdGggPSB0YWJsZS5jb2x1bW5zW2NvbHVtbkluZGV4XS53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uSW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
374
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb3BlcmF0aW9ucy5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9vcGVyYXRpb25zL2hlbHBlcnMvdGFibGUtb3BlcmF0aW9ucy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFckYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seURBQXlELENBQUM7QUFFeEYsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixNQUFNLENBQUMsYUFBYSxDQUFDLE1BQW9CLEVBQUUsV0FBbUIsRUFBRSxVQUE0QixFQUFFLFlBQW9CO1FBQzlHLElBQUksSUFBSSxHQUFlLEVBQUUsQ0FBQztRQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxJQUFJLEtBQUssR0FBZ0IsRUFBRSxDQUFDO1lBQzVCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM5QyxNQUFNLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQztvQkFDdkIsTUFBTSxFQUFFLEVBQUU7b0JBQ1YsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsYUFBYSxFQUFFLENBQUM7b0JBQ2hCLFFBQVEsRUFBRSxFQUFFO29CQUNaLE9BQU8sRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7b0JBQ3pGLE1BQU0sRUFBRSxFQUFFO29CQUNWLFVBQVUsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO29CQUM3RixNQUFNLEVBQUUsRUFBRTtvQkFDVixJQUFJLEVBQUUsRUFBRTtvQkFDUixLQUFLLEVBQUUsRUFBRTtvQkFDVCxTQUFTLEVBQUUsS0FBSztpQkFDbkIsQ0FBQyxDQUFDO2dCQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEI7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM3QztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxXQUFXLENBQUM7Z0JBQzNCLEtBQUssRUFBRSxXQUFXO2FBQ3JCLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEI7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUV4Ryw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDWCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RCO2FBQU07WUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFvQixFQUFFLFdBQW1CLEVBQUUsU0FBaUIsRUFBRSxXQUFtQixFQUFFLFlBQW9CO1FBQzFILE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBQzlELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FDckIsTUFBb0IsRUFDcEIsV0FBbUIsRUFDbkIsWUFBb0IsRUFDcEIsV0FBbUIsRUFDbkIsWUFBb0IsRUFDcEIsWUFBb0I7UUFFcEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLENBQUM7UUFDOUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFvQixFQUFFLFdBQW1CLEVBQUUsVUFBa0IsRUFBRSxRQUFnQjtRQUNsRyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsQ0FBQztRQUM5RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxRQUFRLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBb0IsRUFBRSxXQUFtQixFQUFFLFVBQWtCLEVBQUUsUUFBZ0IsRUFBRSxZQUFvQjtRQUMzSCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsQ0FBQztRQUM5RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxRQUFRLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RjtRQUVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFvQixFQUFFLGtCQUEyQztRQUN2RixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFvQixFQUFFLFdBQW1CLEVBQUUsUUFBb0I7UUFDL0UsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLENBQUM7UUFDOUQsS0FBSyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUNqQyxLQUFLLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDekMsS0FBSyxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUMvQyxLQUFLLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDdkMsS0FBSyxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztRQUN2RCxLQUFLLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixDQUFDO1FBQ3pELEtBQUssQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUNqQyxLQUFLLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBaUI7UUFDOUIsTUFBTSxNQUFNLEdBQWUsRUFBRSxDQUFDO1FBRTlCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRWpELEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNsRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDckM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBa0IsRUFBRSxXQUFtQixFQUFFLFlBQW9CO1FBQy9FLE1BQU0sUUFBUSxHQUFnQixFQUFFLENBQUM7UUFFakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hELElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDckUsU0FBUzthQUNaO1lBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxTQUFTLENBQUM7Z0JBQzFCLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sRUFBRSxFQUFFO2dCQUNWLE9BQU8sRUFBRSxFQUFFO2dCQUNYLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixRQUFRLEVBQUUsRUFBRTtnQkFDWixNQUFNLEVBQUUsRUFBRTtnQkFDVixPQUFPLEVBQUU7b0JBQ0wsSUFBSSxXQUFXLENBQUM7d0JBQ1osVUFBVSxFQUFFLENBQUM7d0JBQ2IsUUFBUSxFQUFFLENBQUM7d0JBQ1gsU0FBUyxFQUFFLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztxQkFDcEYsQ0FBQztpQkFDTDtnQkFDRCxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxjQUFjLENBQUM7d0JBQ2YsV0FBVyxFQUFFLENBQUM7d0JBQ2QsY0FBYyxFQUFFLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO3FCQUN0RyxDQUFDO2lCQUNMO2dCQUNELGFBQWEsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQ3BDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBOEIsRUFDNUQsV0FBVyxFQUNYLFlBQVksQ0FDZjtnQkFDRCxNQUFNLEVBQUUsRUFBRTtnQkFDVixJQUFJLEVBQUUsRUFBRTtnQkFDUixLQUFLLEVBQUUsRUFBRTthQUNaLENBQUMsQ0FBQztZQUNILFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLG9CQUFtQyxFQUFFLFdBQW1CLEVBQUUsWUFBb0I7UUFDdEcsSUFBSSxvQkFBb0IsS0FBSyxhQUFhLENBQUMsT0FBTyxFQUFFO1lBQ2hELE9BQU8sb0JBQW9CLENBQUM7U0FDL0I7UUFFRCxPQUFPLFdBQVcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNuRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQWlCLEVBQUUsUUFBcUIsRUFBRSxTQUFpQixFQUFFLFdBQW1CLEVBQUUsWUFBb0I7UUFDM0gsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUM1QixDQUFDLENBQUMsRUFBRSxDQUNBLElBQUksU0FBUyxDQUFDO2dCQUNWLEdBQUcsQ0FBQztnQkFDSixNQUFNLEVBQUUsRUFBRTtnQkFDVixPQUFPLEVBQUUsRUFBRTtnQkFDWCxhQUFhLEVBQUUsQ0FBQztnQkFDaEIsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osT0FBTyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqSCxNQUFNLEVBQUUsRUFBRTtnQkFDVixVQUFVLEVBQUU7b0JBQ1IsSUFBSSxjQUFjLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztpQkFDbEg7Z0JBQ0QsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLEVBQUU7YUFDWCxDQUFDLENBQ1QsQ0FBQztZQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDN0M7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQWtCLEVBQUUsV0FBbUI7UUFDM0QsTUFBTSxhQUFhLEdBQWEsRUFBRSxDQUFDO1FBRW5DLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFO1lBQ3RCLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLElBQUksa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztZQUV4QixPQUFPLGlCQUFpQixHQUFHLFdBQVcsRUFBRTtnQkFDcEMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUMvRCxlQUFlLEVBQUUsQ0FBQztvQkFDbEIsU0FBUztpQkFDWjtnQkFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDN0IsTUFBTTtpQkFDVDtnQkFFRCxpQkFBaUIsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixrQkFBa0IsRUFBRSxDQUFDO2FBQ3hCO1lBRUQsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQzFDO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFrQixFQUFFLFlBQW9CLEVBQUUsV0FBbUIsRUFBRSxZQUFvQjtRQUN4RyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsTUFBTSxXQUFXLEdBQWdCLEVBQUUsQ0FBQztZQUNwQyxNQUFNLGdCQUFnQixHQUNsQixZQUFZLEtBQUssV0FBVztnQkFDeEIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxlQUFlO2dCQUNuRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsZUFBZSxDQUFDO1lBRXhHLElBQUksZ0JBQWdCLEVBQUU7Z0JBQ2xCLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsZUFBZSxJQUFJLFlBQVksQ0FBQztnQkFDeEQsT0FBTyxXQUFXLENBQUM7YUFDdEI7WUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQztvQkFDMUIsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztvQkFDMUIsTUFBTSxFQUFFLEVBQUU7b0JBQ1YsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsYUFBYSxFQUFFLENBQUM7b0JBQ2hCLFFBQVEsRUFBRSxFQUFFO29CQUNaLE9BQU8sRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO29CQUNuSCxlQUFlLEVBQUUsSUFBSTtvQkFDckIsTUFBTSxFQUFFLEVBQUU7b0JBQ1YsVUFBVSxFQUFFO3dCQUNSLElBQUksY0FBYyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7cUJBQy9HO29CQUNELE1BQU0sRUFBRSxFQUFFO29CQUNWLElBQUksRUFBRSxFQUFFO29CQUNSLGFBQWEsRUFBRSxJQUFJO29CQUNuQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLO2lCQUN2QyxDQUFDLENBQUM7Z0JBRUgsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM3QjtZQUVELE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxLQUFpQixFQUFFLGFBQXVCLEVBQUUsUUFBdUI7UUFDM0YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JCLFNBQVM7YUFDWjtZQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkU7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQWlCLEVBQUUsWUFBb0IsRUFBRSxXQUFtQixFQUFFLFlBQW9CO1FBQ3RHLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDcEU7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQWlCLEVBQUUsWUFBb0I7UUFDaEUsSUFBSSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25GLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRTtvQkFDOUIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBRW5DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDbkQsS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztxQkFDdkM7b0JBRUQsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2lCQUM5QjtxQkFBTTtvQkFDSCxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztpQkFDL0M7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFrQixFQUFFLFVBQWtCLEVBQUUsUUFBZ0I7UUFDNUUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRVYsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFVixPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDL0IsSUFDSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQStCLEtBQUssYUFBYSxDQUFDLE9BQU87b0JBQzdFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBK0IsS0FBSyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQ2pHO29CQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztpQkFDM0M7Z0JBRUQsSUFDSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQStCLEtBQUssYUFBYSxDQUFDLEtBQUs7b0JBQzNFLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBOEIsQ0FBQyxFQUNoSDtvQkFDRSxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQzdEO2dCQUVELENBQUMsRUFBRSxDQUFDO2FBQ1A7WUFFRCxDQUFDLEVBQUUsQ0FBQztTQUNQO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxNQUFrQixFQUFFLFdBQXVCLEVBQUUsUUFBZ0IsRUFBRSxTQUFpQjtRQUM3RyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLFdBQXNCLENBQUM7UUFFM0IsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUNqQixJQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBK0IsS0FBSyxhQUFhLENBQUMsT0FBTyxFQUFFO2dCQUM1RixXQUFXLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNqRDtZQUVELENBQUMsRUFBRSxDQUFDO1NBQ1A7UUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDO1FBQ2hGLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDaEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUM5RCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDO1FBQzlFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDaEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUM1RSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDaEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQztRQUNoRixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQzlELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDaEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFT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Li4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9jZWxsLm1vZGVsJztcbmltcG9ydCB7IENvbHVtbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUsIERFRkFVTFRfVEVYVF9TVFlMRSB9IGZyb20gJy4uLy4uL2NvcmUvY29uc3RhbnRzL2VkaXRvci5jb25zdCc7XG5pbXBvcnQgeyBGb3JtYXRNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZm9ybWF0Lm1vZGVsJztcbmltcG9ydCB7IEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlciB9IGZyb20gJy4vaW5kZXhlZC1lbGVtZW50LW9wZXJhdGlvbnMuaGVscGVyJztcbmltcG9ydCB7IEluc2VydFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLm1vZGVsJztcbmltcG9ydCB7IFBhcmFncmFwaFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3BhcmFncmFwaC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzaXplLXRhYmxlLWNvbHVtbnMubW9kZWwnO1xuaW1wb3J0IHsgUmVzaXplclNpZGUgfSBmcm9tICcuLi8uLi9jdXN0b20tY29tcG9uZW50cy90YWJsZS9lbnVtcy9yZWlzaXplci1zaWRlLmVudW0nO1xuaW1wb3J0IHsgUm93TW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jvdy5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBUZXh0U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGV4dC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBWZXJ0aWNhbE1lcmdlIH0gZnJvbSAnLi4vLi4vY3VzdG9tLWNvbXBvbmVudHMvdGFibGUvZW51bXMvdmVydGljYWwtbWVyZ2UuZW51bSc7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZU9wZXJhdGlvbnNIZWxwZXIge1xuICAgIHN0YXRpYyBpbnNlcnRDb250ZW50KHRhYmxlczogVGFibGVNb2RlbFtdLCBpbnNlcnRJbmRleDogbnVtYmVyLCB0YWJsZU1vZGVsOiBJbnNlcnRUYWJsZU1vZGVsLCBjb250ZW50V2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgcm93czogUm93TW9kZWxbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlTW9kZWwucm93c0NvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjZWxsczogQ2VsbE1vZGVsW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGFibGVNb2RlbC5jb2x1bW5zQ291bnQ7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGwgPSBuZXcgQ2VsbE1vZGVsKHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJycsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRMZW5ndGg6IDAsXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0czogW25ldyBGb3JtYXRNb2RlbCh7IHN0YXJ0SW5kZXg6IDAsIGVuZEluZGV4OiAwLCB0ZXh0U3R5bGU6IERFRkFVTFRfVEVYVF9TVFlMRSB9KV0sXG4gICAgICAgICAgICAgICAgICAgIGltYWdlczogW10sXG4gICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaHM6IFtuZXcgUGFyYWdyYXBoTW9kZWwoeyBpbnNlcnRJbmRleDogMCwgcGFyYWdyYXBoU3R5bGU6IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFIH0pXSxcbiAgICAgICAgICAgICAgICAgICAgdGFibGVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgdGFiczogW10sXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGhUeXBlOiAnZHhhJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goY2VsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvd3MucHVzaChuZXcgUm93TW9kZWwoeyBjZWxsczogY2VsbHMgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLnJvdW5kKGNvbnRlbnRXaWR0aCAvIHRhYmxlTW9kZWwuY29sdW1uc0NvdW50KTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlTW9kZWwuY29sdW1uc0NvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW5Nb2RlbCh7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbldpZHRoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlTW9kZWwoeyBpbnNlcnRJbmRleDogdGFibGVNb2RlbC5pbnNlcnRUYWJsZUluZGV4LCBhbGlnbm1lbnQ6IDAsIHJvd3MsIGNvbHVtbnMgfSk7XG5cbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQodGFibGVzLCBpbnNlcnRJbmRleCwgdGFibGVNb2RlbC5jb250ZW50Lmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGFibGVzLmZpbmRJbmRleCh4ID0+IHguaW5zZXJ0SW5kZXggPiB0YWJsZS5pbnNlcnRJbmRleCk7XG4gICAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgICAgIHRhYmxlcy5wdXNoKHRhYmxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhYmxlcy5zcGxpY2UoaW5kZXgsIDAsIHRhYmxlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWMgaW5zZXJ0VGFibGVSb3dzKHRhYmxlczogVGFibGVNb2RlbFtdLCBpbnNlcnRJbmRleDogbnVtYmVyLCByb3dzQ291bnQ6IG51bWJlciwgdGFyZ2V0SW5kZXg6IG51bWJlciwgaW5oZXJpdEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFibGUgPSB0YWJsZXMuZmluZCh4ID0+IHguaW5zZXJ0SW5kZXggPT09IGluc2VydEluZGV4KTtcbiAgICAgICAgY29uc3QgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgodGFibGUpO1xuICAgICAgICBjb25zdCBuZXdDZWxscyA9IHRoaXMuZ2V0TmV3Um93Q2VsbHMobWF0cml4LCB0YXJnZXRJbmRleCwgaW5oZXJpdEluZGV4KTtcbiAgICAgICAgdGhpcy5pbnNlcnROZXdSb3dDZWxscyh0YWJsZSwgbmV3Q2VsbHMsIHJvd3NDb3VudCwgdGFyZ2V0SW5kZXgsIGluaGVyaXRJbmRleCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydFRhYmxlQ29sdW1ucyhcbiAgICAgICAgdGFibGVzOiBUYWJsZU1vZGVsW10sXG4gICAgICAgIGluc2VydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGNvbHVtbnNDb3VudDogbnVtYmVyLFxuICAgICAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgICAgICBpbmhlcml0SW5kZXg6IG51bWJlcixcbiAgICAgICAgY29udGVudFdpZHRoOiBudW1iZXJcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFibGUgPSB0YWJsZXMuZmluZCh4ID0+IHguaW5zZXJ0SW5kZXggPT09IGluc2VydEluZGV4KTtcbiAgICAgICAgY29uc3QgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgodGFibGUpO1xuICAgICAgICBjb25zdCB0YXJnZXRJbmRleGVzID0gdGhpcy5nZXRUYXJnZXRJbmRleGVzKG1hdHJpeCwgdGFyZ2V0SW5kZXgpO1xuICAgICAgICBjb25zdCBuZXdDZWxscyA9IHRoaXMuZ2V0TmV3Q29sdW1uQ2VsbHMobWF0cml4LCBjb2x1bW5zQ291bnQsIHRhcmdldEluZGV4LCBpbmhlcml0SW5kZXgpO1xuICAgICAgICB0aGlzLmluc2VydE5ld0NvbHVtbkNlbGxzKHRhYmxlLCB0YXJnZXRJbmRleGVzLCBuZXdDZWxscyk7XG4gICAgICAgIHRoaXMuaW5zZXJ0TmV3Q29sdW1ucyh0YWJsZSwgY29sdW1uc0NvdW50LCB0YXJnZXRJbmRleCwgaW5oZXJpdEluZGV4KTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVDb2x1bW5zV2lkdGgodGFibGUsIGNvbnRlbnRXaWR0aCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlbW92ZVRhYmxlUm93cyh0YWJsZXM6IFRhYmxlTW9kZWxbXSwgaW5zZXJ0SW5kZXg6IG51bWJlciwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gdGFibGVzLmZpbmQoeCA9PiB4Lmluc2VydEluZGV4ID09PSBpbnNlcnRJbmRleCk7XG4gICAgICAgIGNvbnN0IG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KHRhYmxlKTtcbiAgICAgICAgdGhpcy5yZW1vdmVNYXRyaXhSb3dzKG1hdHJpeCwgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICB0YWJsZS5yb3dzLnNwbGljZShzdGFydEluZGV4LCBlbmRJbmRleCAtIHN0YXJ0SW5kZXggKyAxKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVtb3ZlVGFibGVDb2x1bW5zKHRhYmxlczogVGFibGVNb2RlbFtdLCBpbnNlcnRJbmRleDogbnVtYmVyLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIsIGNvbnRlbnRXaWR0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gdGFibGVzLmZpbmQoeCA9PiB4Lmluc2VydEluZGV4ID09PSBpbnNlcnRJbmRleCk7XG4gICAgICAgIGNvbnN0IG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KHRhYmxlKTtcbiAgICAgICAgdGFibGUuY29sdW1ucy5zcGxpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXggLSBzdGFydEluZGV4ICsgMSk7XG4gICAgICAgIHRoaXMucmVtb3ZlTWF0cml4Um93Q2VsbHMobWF0cml4LCB0YWJsZSwgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRhYmxlLnJvd3NbaV0uY2VsbHMgPSB0YWJsZS5yb3dzW2ldLmNlbGxzLmZpbHRlcih4ID0+IG1hdHJpeFtpXS5jZWxscy5pbmNsdWRlcyh4KSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0YWJsZSwgY29udGVudFdpZHRoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVzaXplVGFibGVDb2x1bW5zKHRhYmxlczogVGFibGVNb2RlbFtdLCByZXNpemVUYWJsZUNvbHVtbnM6IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gdGFibGVzLmZpbmQoeCA9PiB4Lmluc2VydEluZGV4ID09PSByZXNpemVUYWJsZUNvbHVtbnMuaW5zZXJ0SW5kZXgpO1xuICAgICAgICB0aGlzLnJlc2l6ZUNvbHVtbnModGFibGUsIHJlc2l6ZVRhYmxlQ29sdW1ucyk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlQ2VsbHNXaWR0aCh0YWJsZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlc3RvcmVUYWJsZSh0YWJsZXM6IFRhYmxlTW9kZWxbXSwgaW5zZXJ0SW5kZXg6IG51bWJlciwgb2xkVGFibGU6IFRhYmxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFibGUgPSB0YWJsZXMuZmluZCh4ID0+IHguaW5zZXJ0SW5kZXggPT09IGluc2VydEluZGV4KTtcbiAgICAgICAgdGFibGUuYWxpZ25tZW50ID0gb2xkVGFibGUuYWxpZ25tZW50O1xuICAgICAgICB0YWJsZS5ib3JkZXJzID0gb2xkVGFibGUuYm9yZGVycztcbiAgICAgICAgdGFibGUuY2FsbFNwYWNpbmcgPSBvbGRUYWJsZS5jYWxsU3BhY2luZztcbiAgICAgICAgdGFibGUuY29sdW1ucyA9IG9sZFRhYmxlLmNvbHVtbnM7XG4gICAgICAgIHRhYmxlLmhlYWRpbmdTdHlsZUlkID0gb2xkVGFibGUuaGVhZGluZ1N0eWxlSWQ7XG4gICAgICAgIHRhYmxlLmluZGVudExlZnQgPSBvbGRUYWJsZS5pbmRlbnRMZWZ0O1xuICAgICAgICB0YWJsZS5pbmRlbnRMZWZ0RnJvbVRleHQgPSBvbGRUYWJsZS5pbmRlbnRMZWZ0RnJvbVRleHQ7XG4gICAgICAgIHRhYmxlLmluZGVudFJpZ2h0RnJvbVRleHQgPSBvbGRUYWJsZS5pbmRlbnRSaWdodEZyb21UZXh0O1xuICAgICAgICB0YWJsZS5tYXJnaW5zID0gb2xkVGFibGUubWFyZ2lucztcbiAgICAgICAgdGFibGUucm93cyA9IG9sZFRhYmxlLnJvd3M7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldE1hdHJpeCh0YWJsZTogVGFibGVNb2RlbCk6IFJvd01vZGVsW10ge1xuICAgICAgICBjb25zdCBtYXRyaXg6IFJvd01vZGVsW10gPSBbXTtcblxuICAgICAgICB0YWJsZS5yb3dzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgICAgICAgIG1hdHJpeC5wdXNoKG5ldyBSb3dNb2RlbCh7IC4uLnJvdywgY2VsbHM6IFtdIH0pKTtcblxuICAgICAgICAgICAgcm93LmNlbGxzLmZvckVhY2goY2VsbCA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAoY2VsbC5ob3Jpem9udGFsTWVyZ2UgPz8gMSk7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzLnB1c2goY2VsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtYXRyaXg7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldE5ld1Jvd0NlbGxzKG1hdHJpeDogUm93TW9kZWxbXSwgdGFyZ2V0SW5kZXg6IG51bWJlciwgaW5oZXJpdEluZGV4OiBudW1iZXIpOiBDZWxsTW9kZWxbXSB7XG4gICAgICAgIGNvbnN0IG5ld0NlbGxzOiBDZWxsTW9kZWxbXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4W2luaGVyaXRJbmRleF0uY2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChtYXRyaXhbaW5oZXJpdEluZGV4XS5jZWxsc1tpXSA9PT0gbWF0cml4W2luaGVyaXRJbmRleF0uY2VsbHNbaSAtIDFdKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld0NlbGwgPSBuZXcgQ2VsbE1vZGVsKHtcbiAgICAgICAgICAgICAgICAuLi5tYXRyaXhbaW5oZXJpdEluZGV4XS5jZWxsc1tpXSxcbiAgICAgICAgICAgICAgICBicmVha3M6IFtdLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRMZW5ndGg6IDAsXG4gICAgICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxuICAgICAgICAgICAgICAgIGltYWdlczogW10sXG4gICAgICAgICAgICAgICAgZm9ybWF0czogW1xuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybWF0TW9kZWwoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZEluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFN0eWxlOiBuZXcgVGV4dFN0eWxlTW9kZWwobWF0cml4W2luaGVyaXRJbmRleF0uY2VsbHNbaV0uZm9ybWF0c1swXS50ZXh0U3R5bGUpXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBwYXJhZ3JhcGhzOiBbXG4gICAgICAgICAgICAgICAgICAgIG5ldyBQYXJhZ3JhcGhNb2RlbCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaFN0eWxlOiBuZXcgUGFyYWdyYXBoU3R5bGVNb2RlbChtYXRyaXhbaW5oZXJpdEluZGV4XS5jZWxsc1tpXS5wYXJhZ3JhcGhzWzBdLnBhcmFncmFwaFN0eWxlKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgdmVydGljYWxNZXJnZTogdGhpcy5nZXRDZWxsVmVydGljYWxNZXJnZShcbiAgICAgICAgICAgICAgICAgICAgbWF0cml4W2luaGVyaXRJbmRleF0uY2VsbHNbaV0udmVydGljYWxNZXJnZSBhcyBWZXJ0aWNhbE1lcmdlLFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgaW5oZXJpdEluZGV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWJsZXM6IFtdLFxuICAgICAgICAgICAgICAgIHRhYnM6IFtdLFxuICAgICAgICAgICAgICAgIGxpbmtzOiBbXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBuZXdDZWxscy5wdXNoKG5ld0NlbGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld0NlbGxzO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRDZWxsVmVydGljYWxNZXJnZShjdXJyZW50VmVydGljYWxNZXJnZTogVmVydGljYWxNZXJnZSwgdGFyZ2V0SW5kZXg6IG51bWJlciwgaW5oZXJpdEluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGN1cnJlbnRWZXJ0aWNhbE1lcmdlICE9PSBWZXJ0aWNhbE1lcmdlLlJlc3RhcnQpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50VmVydGljYWxNZXJnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXRJbmRleCA+IGluaGVyaXRJbmRleCA/IFZlcnRpY2FsTWVyZ2UuTWVyZ2UgOiBudWxsO1xuICAgIH1cblxuICAgIHN0YXRpYyBpbnNlcnROZXdSb3dDZWxscyh0YWJsZTogVGFibGVNb2RlbCwgbmV3Q2VsbHM6IENlbGxNb2RlbFtdLCByb3dzQ291bnQ6IG51bWJlciwgdGFyZ2V0SW5kZXg6IG51bWJlciwgaW5oZXJpdEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgbmV3Um93Q2VsbHMgPSBuZXdDZWxscy5tYXAoXG4gICAgICAgICAgICAgICAgeCA9PlxuICAgICAgICAgICAgICAgICAgICBuZXcgQ2VsbE1vZGVsKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha3M6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50TGVuZ3RoOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0czogW25ldyBGb3JtYXRNb2RlbCh7IHN0YXJ0SW5kZXg6IDAsIGVuZEluZGV4OiAwLCB0ZXh0U3R5bGU6IG5ldyBUZXh0U3R5bGVNb2RlbCh4LmZvcm1hdHNbMF0udGV4dFN0eWxlKSB9KV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQYXJhZ3JhcGhNb2RlbCh7IGluc2VydEluZGV4OiAwLCBwYXJhZ3JhcGhTdHlsZTogbmV3IFBhcmFncmFwaFN0eWxlTW9kZWwoeC5wYXJhZ3JhcGhzWzBdLnBhcmFncmFwaFN0eWxlKSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJzOiBbXVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1JvdyA9IG5ldyBSb3dNb2RlbCh7IC4uLnRhYmxlLnJvd3NbaW5oZXJpdEluZGV4XSwgY2VsbHM6IG5ld1Jvd0NlbGxzIH0pO1xuICAgICAgICAgICAgdGFibGUucm93cy5zcGxpY2UodGFyZ2V0SW5kZXgsIDAsIG5ld1Jvdyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0VGFyZ2V0SW5kZXhlcyhtYXRyaXg6IFJvd01vZGVsW10sIHRhcmdldEluZGV4OiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgICAgIGNvbnN0IHRhcmdldEluZGV4ZXM6IG51bWJlcltdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbWF0cml4KSB7XG4gICAgICAgICAgICBsZXQgYWJzb2x1dGVDZWxsSW5kZXggPSAwO1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRUYXJnZXRJbmRleCA9IDA7XG4gICAgICAgICAgICBsZXQgY2VsbE1hdHJpeEluZGV4ID0gMDtcblxuICAgICAgICAgICAgd2hpbGUgKGFic29sdXRlQ2VsbEluZGV4IDwgdGFyZ2V0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpZiAocm93LmNlbGxzW2NlbGxNYXRyaXhJbmRleF0gPT09IHJvdy5jZWxsc1tjZWxsTWF0cml4SW5kZXggLSAxXSkge1xuICAgICAgICAgICAgICAgICAgICBjZWxsTWF0cml4SW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFyb3cuY2VsbHNbY2VsbE1hdHJpeEluZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhYnNvbHV0ZUNlbGxJbmRleCArPSByb3cuY2VsbHNbY2VsbE1hdHJpeEluZGV4XS5ob3Jpem9udGFsTWVyZ2UgPz8gMTtcbiAgICAgICAgICAgICAgICBjZWxsTWF0cml4SW5kZXgrKztcbiAgICAgICAgICAgICAgICBjdXJyZW50VGFyZ2V0SW5kZXgrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGFyZ2V0SW5kZXhlcy5wdXNoKGN1cnJlbnRUYXJnZXRJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFyZ2V0SW5kZXhlcztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0TmV3Q29sdW1uQ2VsbHMobWF0cml4OiBSb3dNb2RlbFtdLCBjb2x1bW5zQ291bnQ6IG51bWJlciwgdGFyZ2V0SW5kZXg6IG51bWJlciwgaW5oZXJpdEluZGV4OiBudW1iZXIpOiBDZWxsTW9kZWxbXVtdIHtcbiAgICAgICAgcmV0dXJuIG1hdHJpeC5tYXAocm93ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1Jvd0NlbGxzOiBDZWxsTW9kZWxbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgaXNDb250aW51b3VzQ2VsbCA9XG4gICAgICAgICAgICAgICAgaW5oZXJpdEluZGV4ID09PSB0YXJnZXRJbmRleFxuICAgICAgICAgICAgICAgICAgICA/IHJvdy5jZWxsc1tpbmhlcml0SW5kZXhdID09PSByb3cuY2VsbHNbdGFyZ2V0SW5kZXggLSAxXSAmJiByb3cuY2VsbHNbaW5oZXJpdEluZGV4XS5ob3Jpem9udGFsTWVyZ2VcbiAgICAgICAgICAgICAgICAgICAgOiByb3cuY2VsbHNbaW5oZXJpdEluZGV4XSA9PT0gcm93LmNlbGxzW3RhcmdldEluZGV4XSAmJiByb3cuY2VsbHNbaW5oZXJpdEluZGV4XS5ob3Jpem9udGFsTWVyZ2U7XG5cbiAgICAgICAgICAgIGlmIChpc0NvbnRpbnVvdXNDZWxsKSB7XG4gICAgICAgICAgICAgICAgcm93LmNlbGxzW2luaGVyaXRJbmRleF0uaG9yaXpvbnRhbE1lcmdlICs9IGNvbHVtbnNDb3VudDtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3Um93Q2VsbHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uc0NvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdDZWxsID0gbmV3IENlbGxNb2RlbCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnJvdy5jZWxsc1tpbmhlcml0SW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICBicmVha3M6IFtdLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudExlbmd0aDogMCxcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRzOiBbbmV3IEZvcm1hdE1vZGVsKHsgc3RhcnRJbmRleDogMCwgZW5kSW5kZXg6IDAsIHRleHRTdHlsZTogcm93LmNlbGxzW2luaGVyaXRJbmRleF0uZm9ybWF0c1swXS50ZXh0U3R5bGUgfSldLFxuICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsTWVyZ2U6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGltYWdlczogW10sXG4gICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQYXJhZ3JhcGhNb2RlbCh7IGluc2VydEluZGV4OiAwLCBwYXJhZ3JhcGhTdHlsZTogcm93LmNlbGxzW2luaGVyaXRJbmRleF0ucGFyYWdyYXBoc1swXS5wYXJhZ3JhcGhTdHlsZSB9KVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICB0YWJzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWxNZXJnZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHJvdy5jZWxsc1tpbmhlcml0SW5kZXhdLndpZHRoXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBuZXdSb3dDZWxscy5wdXNoKG5ld0NlbGwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3Um93Q2VsbHM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBpbnNlcnROZXdDb2x1bW5DZWxscyh0YWJsZTogVGFibGVNb2RlbCwgdGFyZ2V0SW5kZXhlczogbnVtYmVyW10sIG5ld0NlbGxzOiBDZWxsTW9kZWxbXVtdKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0SW5kZXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCFuZXdDZWxsc1tpXS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGFibGUucm93c1tpXS5jZWxscy5zcGxpY2UodGFyZ2V0SW5kZXhlc1tpXSwgMCwgLi4ubmV3Q2VsbHNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydE5ld0NvbHVtbnModGFibGU6IFRhYmxlTW9kZWwsIGNvbHVtbnNDb3VudDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyLCBpbmhlcml0SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0YWJsZS5jb2x1bW5zW2luaGVyaXRJbmRleF07XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uc0NvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHRhYmxlLmNvbHVtbnMuc3BsaWNlKHRhcmdldEluZGV4LCAwLCBuZXcgQ29sdW1uTW9kZWwobmV3Q29sdW1uKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgY2FsY3VsYXRlQ29sdW1uc1dpZHRoKHRhYmxlOiBUYWJsZU1vZGVsLCBjb250ZW50V2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgY3VycmVudFRhYmxlV2lkdGggPSB0YWJsZS5jb2x1bW5zLnJlZHVjZSgocHJldiwgbmV4dCkgPT4gcHJldiArIG5leHQud2lkdGgsIDApO1xuICAgICAgICB0YWJsZS5jb2x1bW5zLmZvckVhY2goeCA9PiAoeC53aWR0aCA9IE1hdGgucm91bmQoKHgud2lkdGggLyBjdXJyZW50VGFibGVXaWR0aCkgKiBjb250ZW50V2lkdGgpKSk7XG5cbiAgICAgICAgdGFibGUucm93cy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdy5jZWxscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChyb3cuY2VsbHNbaV0uaG9yaXpvbnRhbE1lcmdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IHRhYmxlLmNvbHVtbnNbaV0ud2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPCByb3cuY2VsbHNbaV0uaG9yaXpvbnRhbE1lcmdlOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICs9IHRhYmxlLmNvbHVtbnNbaSArIGpdLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcm93LmNlbGxzW2ldLndpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LmNlbGxzW2ldLndpZHRoID0gdGFibGUuY29sdW1uc1tpXS53aWR0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyByZW1vdmVNYXRyaXhSb3dzKG1hdHJpeDogUm93TW9kZWxbXSwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRSb3dzID0gbWF0cml4LnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4ICsgMSk7XG4gICAgICAgIG1hdHJpeC5zcGxpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXggLSBzdGFydEluZGV4ICsgMSk7XG4gICAgICAgIGxldCBpID0gMDtcblxuICAgICAgICB3aGlsZSAoaSA8IG1hdHJpeC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBqID0gMDtcblxuICAgICAgICAgICAgd2hpbGUgKGogPCBtYXRyaXhbaV0uY2VsbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAobWF0cml4W2ldLmNlbGxzW2pdLnZlcnRpY2FsTWVyZ2UgYXMgVmVydGljYWxNZXJnZSkgPT09IFZlcnRpY2FsTWVyZ2UuUmVzdGFydCAmJlxuICAgICAgICAgICAgICAgICAgICAoIW1hdHJpeFtpICsgMV0gfHwgKG1hdHJpeFtpXS5jZWxsc1tqXS52ZXJ0aWNhbE1lcmdlIGFzIFZlcnRpY2FsTWVyZ2UpICE9PSBWZXJ0aWNhbE1lcmdlLk1lcmdlKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXhbaV0uY2VsbHNbal0udmVydGljYWxNZXJnZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAobWF0cml4W2ldLmNlbGxzW2pdLnZlcnRpY2FsTWVyZ2UgYXMgVmVydGljYWxNZXJnZSkgPT09IFZlcnRpY2FsTWVyZ2UuTWVyZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgIVtWZXJ0aWNhbE1lcmdlLlJlc3RhcnQsIFZlcnRpY2FsTWVyZ2UuTWVyZ2VdLmluY2x1ZGVzKG1hdHJpeFtpIC0gMV0/LmNlbGxzW2pdLnZlcnRpY2FsTWVyZ2UgYXMgVmVydGljYWxNZXJnZSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxsTWVyZ2VkQ2VsbEFmdGVyUmVtb3ZlKG1hdHJpeCwgcmVtb3ZlZFJvd3MsIGksIGopO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGorKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbGxNZXJnZWRDZWxsQWZ0ZXJSZW1vdmUobWF0cml4OiBSb3dNb2RlbFtdLCByZW1vdmVkUm93czogUm93TW9kZWxbXSwgcm93SW5kZXg6IG51bWJlciwgY2VsbEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IGkgPSByZW1vdmVkUm93cy5sZW5ndGggLSAxO1xuICAgICAgICBsZXQgcmVtb3ZlZENlbGw6IENlbGxNb2RlbDtcblxuICAgICAgICB3aGlsZSAoIXJlbW92ZWRDZWxsKSB7XG4gICAgICAgICAgICBpZiAoKHJlbW92ZWRSb3dzW2ldLmNlbGxzW2NlbGxJbmRleF0udmVydGljYWxNZXJnZSBhcyBWZXJ0aWNhbE1lcmdlKSA9PT0gVmVydGljYWxNZXJnZS5SZXN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlZENlbGwgPSByZW1vdmVkUm93c1tpXS5jZWxsc1tjZWxsSW5kZXhdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpLS07XG4gICAgICAgIH1cblxuICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0uYmFja2dyb3VuZENvbG9yID0gcmVtb3ZlZENlbGwuYmFja2dyb3VuZENvbG9yO1xuICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0uYm9yZGVycyA9IHJlbW92ZWRDZWxsLmJvcmRlcnM7XG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS5icmVha3MgPSByZW1vdmVkQ2VsbC5icmVha3M7XG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS5jb2x1bW5TZWN0aW9ucyA9IHJlbW92ZWRDZWxsLmNvbHVtblNlY3Rpb25zO1xuICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0uY29udGVudCA9IHJlbW92ZWRDZWxsLmNvbnRlbnQ7XG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS5jb250ZW50TGVuZ3RoID0gcmVtb3ZlZENlbGwuY29udGVudExlbmd0aDtcbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLmVsZW1lbnRzID0gcmVtb3ZlZENlbGwuZWxlbWVudHM7XG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS5mb3JtYXRzID0gcmVtb3ZlZENlbGwuZm9ybWF0cztcbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLmhvcml6b250YWxNZXJnZSA9IHJlbW92ZWRDZWxsLmhvcml6b250YWxNZXJnZTtcbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLmltYWdlcyA9IHJlbW92ZWRDZWxsLmltYWdlcztcbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLm1hcmdpbnMgPSByZW1vdmVkQ2VsbC5tYXJnaW5zO1xuICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0ucGFyYWdyYXBocyA9IHJlbW92ZWRDZWxsLnBhcmFncmFwaHM7XG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS50YWJsZXMgPSByZW1vdmVkQ2VsbC50YWJsZXM7XG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS52ZXJ0aWNhbEFsaWduID0gcmVtb3ZlZENlbGwudmVydGljYWxBbGlnbjtcbiAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLnZlcnRpY2FsTWVyZ2UgPSByZW1vdmVkQ2VsbC52ZXJ0aWNhbE1lcmdlO1xuICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0ud2lkdGggPSByZW1vdmVkQ2VsbC53aWR0aDtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVtb3ZlTWF0cml4Um93Q2VsbHMobWF0cml4OiBSb3dNb2RlbFtdLCB0YWJsZTogVGFibGVNb2RlbCwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBpID0gMDtcblxuICAgICAgICB3aGlsZSAoaSA8IG1hdHJpeC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBqID0gMDtcbiAgICAgICAgICAgIG1hdHJpeFtpXS5jZWxscy5zcGxpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXggLSBzdGFydEluZGV4ICsgMSk7XG5cbiAgICAgICAgICAgIHdoaWxlIChqIDwgbWF0cml4W2ldLmNlbGxzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChtYXRyaXhbaV0uY2VsbHNbal0uaG9yaXpvbnRhbE1lcmdlID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZWRDZWxsc0NvdW50ID0gdGhpcy5maWxsRGF0YUZvckhvcml6b250YWxNZXJnZWRDZWxsKG1hdHJpeCwgdGFibGUsIGksIGopO1xuICAgICAgICAgICAgICAgICAgICBqICs9IG1lcmdlZENlbGxzQ291bnQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaisrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbGxEYXRhRm9ySG9yaXpvbnRhbE1lcmdlZENlbGwobWF0cml4OiBSb3dNb2RlbFtdLCB0YWJsZTogVGFibGVNb2RlbCwgcm93SW5kZXg6IG51bWJlciwgY2VsbEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBtZXJnZWRDZWxscyA9IG1hdHJpeFtyb3dJbmRleF0uY2VsbHMuZmlsdGVyKHggPT4geCA9PT0gbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdKTtcblxuICAgICAgICBpZiAobWVyZ2VkQ2VsbHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLmhvcml6b250YWxNZXJnZSA9IG1lcmdlZENlbGxzLmxlbmd0aDtcbiAgICAgICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS53aWR0aCA9IDA7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLmhvcml6b250YWxNZXJnZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4W3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdLndpZHRoICs9IHRhYmxlLmNvbHVtbnNbY2VsbEluZGV4ICsgaV0ud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0uaG9yaXpvbnRhbE1lcmdlID0gbnVsbDtcbiAgICAgICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS53aWR0aCA9IHRhYmxlLmNvbHVtbnNbY2VsbEluZGV4XS53aWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIG1hdHJpeFtyb3dJbmRleF0uY2VsbHNbY2VsbEluZGV4XS5ob3Jpem9udGFsTWVyZ2UgPSBtZXJnZWRDZWxscy5sZW5ndGggPiAxID8gbWVyZ2VkQ2VsbHMubGVuZ3RoIDogbnVsbDtcbiAgICAgICAgcmV0dXJuIG1lcmdlZENlbGxzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVzaXplQ29sdW1ucyh0YWJsZTogVGFibGVNb2RlbCwgcmVzaXplVGFibGVDb2x1bW5zOiBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAocmVzaXplVGFibGVDb2x1bW5zLnJlc2l6ZXJTaWRlID09PSBSZXNpemVyU2lkZS5MZWZ0KSB7XG4gICAgICAgICAgICB0YWJsZS5jb2x1bW5zW3Jlc2l6ZVRhYmxlQ29sdW1ucy5jb2x1bW5JbmRleF0ud2lkdGggKz0gcmVzaXplVGFibGVDb2x1bW5zLmRpc3RhbmNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2VsbEhvcml6b250YWxNZXJnZSA9IHRhYmxlLnJvd3NbcmVzaXplVGFibGVDb2x1bW5zLnJvd0luZGV4XS5jZWxsc1tyZXNpemVUYWJsZUNvbHVtbnMuY2VsbEluZGV4XS5ob3Jpem9udGFsTWVyZ2UgPz8gMTtcbiAgICAgICAgY29uc3QgcmVzaXplckNvbHVtbkluZGV4ID0gcmVzaXplVGFibGVDb2x1bW5zLmNvbHVtbkluZGV4ICsgY2VsbEhvcml6b250YWxNZXJnZSAtIDE7XG4gICAgICAgIHRhYmxlLmNvbHVtbnNbcmVzaXplckNvbHVtbkluZGV4XS53aWR0aCArPSByZXNpemVUYWJsZUNvbHVtbnMuZGlzdGFuY2U7XG5cbiAgICAgICAgaWYgKHRhYmxlLnJvd3NbcmVzaXplVGFibGVDb2x1bW5zLnJvd0luZGV4XS5jZWxsc1tyZXNpemVUYWJsZUNvbHVtbnMuY2VsbEluZGV4ICsgMV0pIHtcbiAgICAgICAgICAgIHRhYmxlLmNvbHVtbnNbcmVzaXplckNvbHVtbkluZGV4ICsgMV0ud2lkdGggLT0gcmVzaXplVGFibGVDb2x1bW5zLmRpc3RhbmNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGNhbGN1bGF0ZUNlbGxzV2lkdGgodGFibGU6IFRhYmxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGFibGUucm93cy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICBsZXQgY29sdW1uSW5kZXggPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3cuY2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAocm93LmNlbGxzW2ldLmhvcml6b250YWxNZXJnZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgd2lkdGggPSB0YWJsZS5jb2x1bW5zW2NvbHVtbkluZGV4XS53aWR0aDtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMTsgaiA8IHJvdy5jZWxsc1tpXS5ob3Jpem9udGFsTWVyZ2U7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKz0gdGFibGUuY29sdW1uc1tjb2x1bW5JbmRleCArIGpdLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcm93LmNlbGxzW2ldLndpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkluZGV4ICs9IHJvdy5jZWxsc1tpXS5ob3Jpem9udGFsTWVyZ2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LmNlbGxzW2ldLndpZHRoID0gdGFibGUuY29sdW1uc1tjb2x1bW5JbmRleF0ud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=