myrta-ui 1.0.58 → 1.0.60

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.
@@ -70,7 +70,7 @@ DocumentEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
70
70
  useExisting: forwardRef(() => DocumentEditorComponent),
71
71
  multi: true,
72
72
  },
73
- ], viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true }], ngImport: i0, template: "<div class=\"mrx-document-editor\">\r\n <div class=\"mrx-document-editor__shortcode-buttons mb-2\">\r\n <ng-container *ngFor=\"let shortCode of sliceShortCodeButtons\">\r\n <mrx-button\r\n size=\"small\"\r\n type=\"secondary\"\r\n (mrxClick)=\"insertShortCode(shortCode)\"\r\n >{{ shortCode.viewName }}</mrx-button>\r\n </ng-container>\r\n <mrx-button\r\n *ngIf=\"isSliced\"\r\n size=\"small\"\r\n (mrxClick)=\"showAllShortCodes()\"\r\n >\u0415\u0449\u0435</mrx-button>\r\n </div>\r\n\r\n <div class=\"mrx-document-editor__editor mb-2\">\r\n <mrx-editor\r\n #editor\r\n [ngModel]=\"transformedValue\"\r\n [toolbar]=\"toolbar\"\r\n [customClasses]=\"customClasses\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [iframe]=\"true\"\r\n [editHTMLDocumentMode]=\"editHTMLDocumentMode\"\r\n (ngModelChange)=\"updateValue($event)\"\r\n ></mrx-editor>\r\n </div>\r\n\r\n <div class=\"mrx-document-editor__preview\">\r\n <mrx-button\r\n size=\"medium\"\r\n type=\"secondary\"\r\n iconClass=\"icon-view\"\r\n [disabled]=\"!transformedValue\"\r\n (mrxClick)=\"openPreviewModal()\"\r\n >\u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440</mrx-button>\r\n </div>\r\n</div>\r\n", styles: [".mrx-document-editor__shortcode-buttons{display:flex;flex-wrap:wrap;gap:var(--sizing-2)}\n"], components: [{ type: i2.ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType"], outputs: ["mrxClick"] }, { type: i3.EditorComponent, selector: "mrx-editor", inputs: ["fields", "toolbar", "maxLength", "minHeight", "customClasses", "placeholder", "disabled", "readonly", "iframe", "config", "editHTMLDocumentMode", "invalid", "invalidMessage", "checkInvalid"], outputs: ["changed"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
+ ], viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true }], ngImport: i0, template: "<div class=\"mrx-document-editor\">\r\n <div class=\"mrx-document-editor__shortcode-buttons mb-2\">\r\n <ng-container *ngFor=\"let shortCode of sliceShortCodeButtons\">\r\n <mrx-button\r\n size=\"small\"\r\n type=\"secondary\"\r\n (mrxClick)=\"insertShortCode(shortCode)\"\r\n >{{ shortCode.viewName }}</mrx-button>\r\n </ng-container>\r\n <mrx-button\r\n *ngIf=\"isSliced\"\r\n size=\"small\"\r\n (mrxClick)=\"showAllShortCodes()\"\r\n >\u0415\u0449\u0435</mrx-button>\r\n </div>\r\n\r\n <div class=\"mrx-document-editor__editor mb-2\">\r\n <mrx-editor\r\n #editor\r\n [ngModel]=\"transformedValue\"\r\n [toolbar]=\"toolbar\"\r\n [customClasses]=\"customClasses\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [iframe]=\"true\"\r\n [editHTMLDocumentMode]=\"editHTMLDocumentMode\"\r\n (ngModelChange)=\"updateValue($event)\"\r\n ></mrx-editor>\r\n </div>\r\n\r\n <div class=\"mrx-document-editor__preview\">\r\n <mrx-button\r\n size=\"medium\"\r\n type=\"secondary\"\r\n iconClass=\"icon-view\"\r\n [disabled]=\"!transformedValue\"\r\n (mrxClick)=\"openPreviewModal()\"\r\n >\u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440</mrx-button>\r\n </div>\r\n</div>\r\n", styles: [".mrx-document-editor__shortcode-buttons{display:flex;flex-wrap:wrap;gap:var(--sizing-2)}\n"], components: [{ type: i2.ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType"], outputs: ["mrxClick"] }, { type: i3.EditorComponent, selector: "mrx-editor", inputs: ["fields", "toolbar", "maxLength", "minHeight", "customClasses", "placeholder", "disabled", "readonly", "iframe", "defaultInlineStyle", "config", "editHTMLDocumentMode", "invalid", "invalidMessage", "checkInvalid"], outputs: ["changed"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DocumentEditorComponent, decorators: [{
75
75
  type: Component,
76
76
  args: [{ selector: 'mrx-document-editor', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -0,0 +1,6 @@
1
+ export const defaultInlineStyleConstant = {
2
+ table: { style: 'border:1px solid #C5C6C8FF;border-collapse:collapse;width: 100%;' },
3
+ tr: { style: ' border: 1px solid #C5C6C8FF;' },
4
+ td: { style: ' border: 1px solid #C5C6C8FF;' }
5
+ };
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1pbmxpbmUtc3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9lZGl0b3IvY29uZmlnL2RlZmF1bHQtaW5saW5lLXN0eWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHO0lBQ3hDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxrRUFBa0UsRUFBRTtJQUNwRixFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUU7SUFDOUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFDO0NBQzlDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZGVmYXVsdElubGluZVN0eWxlQ29uc3RhbnQgPSB7XHJcbiAgdGFibGU6IHsgc3R5bGU6ICdib3JkZXI6MXB4IHNvbGlkICNDNUM2QzhGRjtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7d2lkdGg6IDEwMCU7JyB9LFxyXG4gIHRyOiB7IHN0eWxlOiAnIGJvcmRlcjogMXB4IHNvbGlkICNDNUM2QzhGRjsnIH0sXHJcbiAgdGQ6IHsgc3R5bGU6ICcgYm9yZGVyOiAxcHggc29saWQgI0M1QzZDOEZGOyd9XHJcbn1cclxuIl19
@@ -4,6 +4,7 @@ import { defaultToolbar } from './config';
4
4
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
5
  import { popupToolbars } from './config/popups-toolbar';
6
6
  import { v4 as uuidv4 } from 'uuid';
7
+ import { defaultInlineStyleConstant } from './config/default-inline-style';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "jodit-angular";
9
10
  import * as i2 from "../../error-message/error-message.component";
@@ -49,6 +50,7 @@ export class EditorComponent {
49
50
  hidePoweredByJodit: true,
50
51
  beautifyHTML: true,
51
52
  addNewLine: true,
53
+ createAttributes: {},
52
54
  events: {
53
55
  getIcon: changeIconsFunction,
54
56
  },
@@ -69,6 +71,7 @@ export class EditorComponent {
69
71
  this.disabled = false;
70
72
  this.readonly = false;
71
73
  this.iframe = false;
74
+ this.defaultInlineStyle = false;
72
75
  this.config = this.defaultConfig;
73
76
  this.editHTMLDocumentMode = false;
74
77
  this.invalid = false;
@@ -99,6 +102,9 @@ export class EditorComponent {
99
102
  if (changes['iframe']) {
100
103
  this.defaultConfig = { ...this.defaultConfig, iframe: changes['iframe'].currentValue };
101
104
  }
105
+ if (changes['defaultInlineStyle']) {
106
+ this.defaultConfig = { ...this.defaultConfig, createAttributes: { ...this.defaultConfig.createAttributes, ...defaultInlineStyleConstant } };
107
+ }
102
108
  if (changes['editHTMLDocumentMode']) {
103
109
  this.defaultConfig = {
104
110
  ...this.defaultConfig,
@@ -179,7 +185,7 @@ export class EditorComponent {
179
185
  }
180
186
  }
181
187
  EditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: EditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
182
- EditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: EditorComponent, selector: "mrx-editor", inputs: { fields: "fields", toolbar: "toolbar", maxLength: "maxLength", minHeight: "minHeight", customClasses: "customClasses", placeholder: "placeholder", disabled: "disabled", readonly: "readonly", iframe: "iframe", config: "config", editHTMLDocumentMode: "editHTMLDocumentMode", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid" }, outputs: { changed: "changed" }, providers: [
188
+ EditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: EditorComponent, selector: "mrx-editor", inputs: { fields: "fields", toolbar: "toolbar", maxLength: "maxLength", minHeight: "minHeight", customClasses: "customClasses", placeholder: "placeholder", disabled: "disabled", readonly: "readonly", iframe: "iframe", defaultInlineStyle: "defaultInlineStyle", config: "config", editHTMLDocumentMode: "editHTMLDocumentMode", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid" }, outputs: { changed: "changed" }, providers: [
183
189
  {
184
190
  provide: NG_VALUE_ACCESSOR,
185
191
  useExisting: forwardRef(() => EditorComponent),
@@ -213,6 +219,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
213
219
  type: Input
214
220
  }], iframe: [{
215
221
  type: Input
222
+ }], defaultInlineStyle: [{
223
+ type: Input
216
224
  }], config: [{
217
225
  type: Input
218
226
  }], editHTMLDocumentMode: [{
@@ -229,4 +237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
229
237
  }], changed: [{
230
238
  type: Output
231
239
  }] } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2VkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZWRpdG9yL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFnQnBDLE1BQU0sT0FBTyxlQUFlO0lBd0UxQixZQUFvQixlQUFrQztRQUFsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUF2RTlDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDakIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGNBQVMsR0FBbUIsS0FBSyxDQUFDO1FBRWxDLGtCQUFhLEdBQVE7WUFDMUIsR0FBRyxjQUFjO1lBQ2pCLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLG9CQUFvQixFQUFFLEtBQUs7WUFDM0IsSUFBSSxFQUFFO2dCQUNKLGdCQUFnQixFQUFFLEtBQUs7YUFDeEI7WUFDRCxTQUFTLEVBQUUsR0FBRztZQUNkLE1BQU0sRUFBRSxLQUFLO1lBQ2IsaUJBQWlCLEVBQUUsR0FBRztZQUN0QixvQkFBb0IsRUFBRSxLQUFLO1lBQzNCLFNBQVMsRUFBRTtnQkFDVCxrQkFBa0IsRUFBRSxJQUFJO2FBQ3pCO1lBQ0QsV0FBVyxFQUFFLEVBQUU7WUFDZixlQUFlLEVBQUUsS0FBSztZQUN0QixhQUFhLEVBQUUsSUFBSTtZQUNuQix5QkFBeUIsRUFBRSxLQUFLO1lBQ2hDLHVCQUF1QixFQUFFLEVBQUU7WUFDM0IsNEJBQTRCLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDeEMsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUUsS0FBSztZQUNmLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsb0JBQW9CLEVBQUUsa0JBQWtCO1lBQ3hDLHNCQUFzQixFQUFFLEtBQUs7WUFDN0Isa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixZQUFZLEVBQUUsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUU7Z0JBQ04sT0FBTyxFQUFFLG1CQUFtQjthQUM3QjtZQUNELGNBQWM7WUFDZCxpQ0FBaUM7WUFDakMsS0FBSztZQUNMLGtCQUFrQjtZQUNsQixrQkFBa0I7WUFDbEIsOEZBQThGO1NBQy9GLENBQUM7UUFFRixhQUFhO1FBQ04sU0FBSSxHQUFXLE1BQU0sRUFBRSxDQUFDO1FBQ2YsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUdyQixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsY0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNoQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFdBQU0sR0FBUSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRWpDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUU3QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLG1CQUFjLEdBQXNCLEVBQUUsQ0FBQztRQUN2QyxpQkFBWSxHQUF3QixJQUFJLENBQUM7UUFJeEMsWUFBTyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBOEVwRSxhQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtRQUNsQyxDQUFDLENBQUM7UUFDTSxjQUFTLEdBQUcsR0FBRyxFQUFFO1FBQ3pCLENBQUMsQ0FBQztJQTlFRixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDcEY7UUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDL0Y7UUFDRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDbEc7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDNUY7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDNUY7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDeEY7UUFDRCxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxhQUFhLEdBQUc7Z0JBQ25CLEdBQUcsSUFBSSxDQUFDLGFBQWE7Z0JBQ3JCLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLFlBQVk7YUFDbkUsQ0FBQztTQUNIO1FBQ0QsSUFBSSxPQUFPLENBQUMsb0JBQW9CLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ2hIO1FBQ0QsSUFBSSxPQUFPLENBQUMsd0JBQXdCLENBQUMsRUFBRTtZQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHO2dCQUNuQixHQUFHLElBQUksQ0FBQyxhQUFhO2dCQUNyQixzQkFBc0IsRUFBRSxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxZQUFZO2FBQ3ZFLENBQUM7U0FDSDtRQUNELElBQUksT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRztnQkFDbkIsR0FBRyxJQUFJLENBQUMsYUFBYTtnQkFDckIsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsWUFBWTthQUNuRSxDQUFDO1NBQ0g7UUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDOUY7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ25GO0lBQ0gsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pJLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVNLGtCQUFrQixDQUFDLElBQVk7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFPTSxnQkFBZ0IsQ0FBQyxFQUFPO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUFZO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxVQUFVLENBQUMsWUFBaUI7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9DLElBQUksWUFBWSxLQUFLLElBQUksRUFBRTtZQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLFdBQW1CO1FBQ3BDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5QjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNsQjtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsS0FBYTtRQUNsQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxREFBcUQsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2xHLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNsRixDQUFDOzs0R0E3TFUsZUFBZTtnR0FBZixlQUFlLHNiQVJmO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQzlDLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixxS0MvQkgsOHdCQXdCQTsyRkRTYSxlQUFlO2tCQWIzQixTQUFTOytCQUNFLFlBQVksbUJBR0wsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQzs0QkFDOUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0dBb0RlLE1BQU07c0JBQXJCLEtBQUs7Z0JBRVUsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBRVUsb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUVVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUV5QixnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUVaLE9BQU87c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNoYW5nZUljb25zRnVuY3Rpb24gfSBmcm9tICcuL21vZHVsZXMvY2hhbmdlLWljb24tbW9kdWxlJztcclxuaW1wb3J0IHsgZGVmYXVsdFRvb2xiYXIgfSBmcm9tICcuL2NvbmZpZyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgcG9wdXBUb29sYmFycyB9IGZyb20gJy4vY29uZmlnL3BvcHVwcy10b29sYmFyJztcclxuaW1wb3J0IHsgVG9vbGJhckNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL3Rvb2xiYXIubW9kZWwnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tcngtYXV0b3NhdmUvbXJ4LWF1dG9zYXZlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVkaXRvckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIF9pc0luaXQgPSBmYWxzZTtcclxuICBwdWJsaWMgdmFsdWUgPSAnJztcclxuICBwdWJsaWMgdmFsdWVMZW5ndGggPSAwO1xyXG4gIHB1YmxpYyBpc0ZvY3VzZWQ6IGJvb2xlYW4gfCBudWxsID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBkZWZhdWx0Q29uZmlnOiBhbnkgPSB7XHJcbiAgICAuLi5kZWZhdWx0VG9vbGJhcixcclxuICAgIHBvcHVwOiBwb3B1cFRvb2xiYXJzLFxyXG4gICAgbGFuZ3VhZ2U6ICdydScsXHJcbiAgICBzaG93Q2hhcnNDb3VudGVyOiBmYWxzZSxcclxuICAgIHNob3dXb3Jkc0NvdW50ZXI6IGZhbHNlLFxyXG4gICAgc2hvd1hQYXRoSW5TdGF0dXNiYXI6IGZhbHNlLFxyXG4gICAgbGluazoge1xyXG4gICAgICBub0ZvbGxvd0NoZWNrYm94OiBmYWxzZVxyXG4gICAgfSxcclxuICAgIG1pbkhlaWdodDogMTEwLFxyXG4gICAgaWZyYW1lOiBmYWxzZSxcclxuICAgIGltYWdlRGVmYXVsdFdpZHRoOiAyMDAsXHJcbiAgICBlZGl0SFRNTERvY3VtZW50TW9kZTogZmFsc2UsXHJcbiAgICBjbGVhbkhUTUw6IHtcclxuICAgICAgZmlsbEVtcHR5UGFyYWdyYXBoOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgdG9vbGJhckFkYXB0aXZlOiBmYWxzZSxcclxuICAgIHRvb2xiYXJJbmxpbmU6IHRydWUsXHJcbiAgICB0b29sYmFySW5saW5lRm9yU2VsZWN0aW9uOiBmYWxzZSxcclxuICAgIHRvb2xiYXJJbmxpbmVEaXNhYmxlRm9yOiBbXSxcclxuICAgIHRvb2xiYXJJbmxpbmVEaXNhYmxlZEJ1dHRvbnM6IFsnc291cmNlJ10sXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICByZWFkb25seTogZmFsc2UsXHJcbiAgICBhc2tCZWZvcmVQYXN0ZUhUTUw6IGZhbHNlLFxyXG4gICAgZGVmYXVsdEFjdGlvbk9uUGFzdGU6ICdpbnNlcnRfb25seV90ZXh0JyxcclxuICAgIGFza0JlZm9yZVBhc3RlRnJvbVdvcmQ6IGZhbHNlLFxyXG4gICAgaGlkZVBvd2VyZWRCeUpvZGl0OiB0cnVlLFxyXG4gICAgYmVhdXRpZnlIVE1MOiB0cnVlLFxyXG4gICAgYWRkTmV3TGluZTogdHJ1ZSxcclxuICAgIGV2ZW50czoge1xyXG4gICAgICBnZXRJY29uOiBjaGFuZ2VJY29uc0Z1bmN0aW9uLFxyXG4gICAgfSxcclxuICAgIC8vIHVwbG9hZGVyOiB7XHJcbiAgICAvLyAgIGluc2VydEltYWdlQXNCYXNlNjRVUkk6IHRydWVcclxuICAgIC8vIH0sXHJcbiAgICAvLyBsaW1pdENoYXJzOiAxMCxcclxuICAgIC8vIGxpbWl0SFRNTDogMTcwLFxyXG4gICAgLy8gY29sb3JzOiBbJyNmZjAwMDAnLCAnIzAwZmYwMCcsICcjMDAwMGZmJywgJyMwMDAwZmYnLCAnIzAwMDBmZicsICcjMDAwMGZmJywgJy8nLCAnIzAwMDBmZiddLFxyXG4gIH07XHJcblxyXG4gIC8vIFNBVkUgU1RBVEVcclxuICBwdWJsaWMgdXVpZDogc3RyaW5nID0gdXVpZHY0KCk7XHJcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbGJhciE6IFRvb2xiYXJDb25maWc7XHJcbiAgQElucHV0KCkgcHVibGljIG1heExlbmd0aCA9IDA7XHJcbiAgQElucHV0KCkgcHVibGljIG1pbkhlaWdodCA9IDExMDtcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZnJhbWUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiBhbnkgPSB0aGlzLmRlZmF1bHRDb25maWc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBlZGl0SFRNTERvY3VtZW50TW9kZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZWRpdG9yRWxlbWVudFJlZicpIGVkaXRvckVsZW1lbnRSZWYhOiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sndG9vbGJhciddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi5jaGFuZ2VzWyd0b29sYmFyJ10uY3VycmVudFZhbHVlIH07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snbWF4TGVuZ3RoJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcsIGxpbWl0Q2hhcnM6IGNoYW5nZXNbJ21heExlbmd0aCddLmN1cnJlbnRWYWx1ZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3BsYWNlaG9sZGVyJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcsIHBsYWNlaG9sZGVyOiBjaGFuZ2VzWydwbGFjZWhvbGRlciddLmN1cnJlbnRWYWx1ZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcsIGRpc2FibGVkOiBjaGFuZ2VzWydkaXNhYmxlZCddLmN1cnJlbnRWYWx1ZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3JlYWRvbmx5J10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcsIHJlYWRvbmx5OiBjaGFuZ2VzWydyZWFkb25seSddLmN1cnJlbnRWYWx1ZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2lmcmFtZSddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCBpZnJhbWU6IGNoYW5nZXNbJ2lmcmFtZSddLmN1cnJlbnRWYWx1ZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2VkaXRIVE1MRG9jdW1lbnRNb2RlJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0ge1xyXG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdENvbmZpZyxcclxuICAgICAgICBlZGl0SFRNTERvY3VtZW50TW9kZTogY2hhbmdlc1snZWRpdEhUTUxEb2N1bWVudE1vZGUnXS5jdXJyZW50VmFsdWVcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUhUTUwnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgYXNrQmVmb3JlUGFzdGVIVE1MOiBjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUhUTUwnXS5jdXJyZW50VmFsdWUgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0ge1xyXG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdENvbmZpZyxcclxuICAgICAgICBhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkOiBjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkJ10uY3VycmVudFZhbHVlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZGVmYXVsdEFjdGlvbk9uUGFzdGUnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7XHJcbiAgICAgICAgLi4udGhpcy5kZWZhdWx0Q29uZmlnLFxyXG4gICAgICAgIGRlZmF1bHRBY3Rpb25PblBhc3RlOiBjaGFuZ2VzWydkZWZhdWx0QWN0aW9uT25QYXN0ZSddLmN1cnJlbnRWYWx1ZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ21pbkhlaWdodCddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCBtaW5IZWlnaHQ6IGNoYW5nZXNbJ21pbkhlaWdodCddLmN1cnJlbnRWYWx1ZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi5jaGFuZ2VzWydjb25maWcnXS5jdXJyZW50VmFsdWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc0ludmFsaWRNZXNzYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5pbnZhbGlkTWVzc2FnZSB8fCAhIXRoaXMuaW52YWxpZE1lc3NhZ2UubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6IHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXN0b21DbGFzc2VzfSAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbnNlcnRQb3NpdGlvblRleHQodGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVkaXRvckVsZW1lbnRSZWYuZWRpdG9yLnMuaW5zZXJ0SFRNTCh0ZXh0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VGb2N1c2VkKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgfTtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHdyaXRlVmFsdWUob3V0c2lkZVZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLl9zYW5pdGl6ZVZhbHVlKG91dHNpZGVWYWx1ZSk7XHJcbiAgICBpZiAob3V0c2lkZVZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2lzSW5pdCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVZhbHVlKGluc2lkZVZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLm1heExlbmd0aCkge1xyXG4gICAgICB0aGlzLl9jYWxjdWxhdGVDaGFydHNDb3VudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9pc0luaXQpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IGluc2lkZVZhbHVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdChpbnNpZGVWYWx1ZSk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UoaW5zaWRlVmFsdWUpO1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2FuaXRpemVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLnJlcGxhY2UoLzxzY3JpcHRcXGJbXjxdKig/Oig/ITxcXC9zY3JpcHQ+KTxbXjxdKikqPFxcL3NjcmlwdD4vZ2ksICcnKSA6IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlQ2hhcnRzQ291bnQoKSB7XHJcbiAgICB0aGlzLnZhbHVlTGVuZ3RoID0gdGhpcy5lZGl0b3JFbGVtZW50UmVmLmVkaXRvci50ZXh0LnJlcGxhY2UoL1xccysvZywgJycpLmxlbmd0aDtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibXJ4LWVkaXRvclwiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1mb2N1c2VkXT1cImlzRm9jdXNlZFwiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCIhaXNWYWxpZCB8fCBpbnZhbGlkXCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbj5cclxuICA8am9kaXQtZWRpdG9yXHJcbiAgICAjZWRpdG9yRWxlbWVudFJlZlxyXG4gICAgW2NvbmZpZ109XCJkZWZhdWx0Q29uZmlnXCJcclxuICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxyXG4gICAgKG9uRm9jdXMpPVwiY2hhbmdlRm9jdXNlZCh0cnVlKVwiXHJcbiAgICAob25CbHVyKT1cImNoYW5nZUZvY3VzZWQoZmFsc2UpXCJcclxuICA+PC9qb2RpdC1lZGl0b3I+XHJcblxyXG4gIDxtcngtZXJyb3ItbWVzc2FnZVxyXG4gICAgKm5nSWY9XCIoIWlzVmFsaWQgfHwgaW52YWxpZCkgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgICBbaW52YWxpZE1lc3NhZ2VdPVwiaW52YWxpZE1lc3NhZ2VcIlxyXG4gID48L21yeC1lcnJvci1tZXNzYWdlPlxyXG5cclxuICA8bXJ4LWNoYXJzLWxlZnQgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIiBbdmFsdWVMZW5ndGhdPVwidmFsdWVMZW5ndGhcIj48L21yeC1jaGFycy1sZWZ0PlxyXG5cclxuICA8bXJ4LXNhdmUtc3RhdGUgdHlwZT1cImVkaXRvclwiIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2VkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZWRpdG9yL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7QUFlM0UsTUFBTSxPQUFPLGVBQWU7SUEwRTFCLFlBQW9CLGVBQWtDO1FBQWxDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQXpFOUMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsY0FBUyxHQUFtQixLQUFLLENBQUM7UUFFbEMsa0JBQWEsR0FBUTtZQUMxQixHQUFHLGNBQWM7WUFDakIsS0FBSyxFQUFFLGFBQWE7WUFDcEIsUUFBUSxF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QXJCLEtBQUs7Z0JBRVUsb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUVVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUV5QixnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUVaLE9BQU87c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNoYW5nZUljb25zRnVuY3Rpb24gfSBmcm9tICcuL21vZHVsZXMvY2hhbmdlLWljb24tbW9kdWxlJztcclxuaW1wb3J0IHsgZGVmYXVsdFRvb2xiYXIgfSBmcm9tICcuL2NvbmZpZyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgcG9wdXBUb29sYmFycyB9IGZyb20gJy4vY29uZmlnL3BvcHVwcy10b29sYmFyJztcclxuaW1wb3J0IHsgVG9vbGJhckNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL3Rvb2xiYXIubW9kZWwnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tcngtYXV0b3NhdmUvbXJ4LWF1dG9zYXZlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBkZWZhdWx0SW5saW5lU3R5bGVDb25zdGFudCB9IGZyb20gJy4vY29uZmlnL2RlZmF1bHQtaW5saW5lLXN0eWxlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdG9yLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcyB7XHJcbiAgcHJpdmF0ZSBfaXNJbml0ID0gZmFsc2U7XHJcbiAgcHVibGljIHZhbHVlID0gJyc7XHJcbiAgcHVibGljIHZhbHVlTGVuZ3RoID0gMDtcclxuICBwdWJsaWMgaXNGb2N1c2VkOiBib29sZWFuIHwgbnVsbCA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZGVmYXVsdENvbmZpZzogYW55ID0ge1xyXG4gICAgLi4uZGVmYXVsdFRvb2xiYXIsXHJcbiAgICBwb3B1cDogcG9wdXBUb29sYmFycyxcclxuICAgIGxhbmd1YWdlOiAncnUnLFxyXG4gICAgc2hvd0NoYXJzQ291bnRlcjogZmFsc2UsXHJcbiAgICBzaG93V29yZHNDb3VudGVyOiBmYWxzZSxcclxuICAgIHNob3dYUGF0aEluU3RhdHVzYmFyOiBmYWxzZSxcclxuICAgIGxpbms6IHtcclxuICAgICAgbm9Gb2xsb3dDaGVja2JveDogZmFsc2VcclxuICAgIH0sXHJcbiAgICBtaW5IZWlnaHQ6IDExMCxcclxuICAgIGlmcmFtZTogZmFsc2UsXHJcbiAgICBpbWFnZURlZmF1bHRXaWR0aDogMjAwLFxyXG4gICAgZWRpdEhUTUxEb2N1bWVudE1vZGU6IGZhbHNlLFxyXG4gICAgY2xlYW5IVE1MOiB7XHJcbiAgICAgIGZpbGxFbXB0eVBhcmFncmFwaDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgIHRvb2xiYXJBZGFwdGl2ZTogZmFsc2UsXHJcbiAgICB0b29sYmFySW5saW5lOiB0cnVlLFxyXG4gICAgdG9vbGJhcklubGluZUZvclNlbGVjdGlvbjogZmFsc2UsXHJcbiAgICB0b29sYmFySW5saW5lRGlzYWJsZUZvcjogW10sXHJcbiAgICB0b29sYmFySW5saW5lRGlzYWJsZWRCdXR0b25zOiBbJ3NvdXJjZSddLFxyXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgcmVhZG9ubHk6IGZhbHNlLFxyXG4gICAgYXNrQmVmb3JlUGFzdGVIVE1MOiBmYWxzZSxcclxuICAgIGRlZmF1bHRBY3Rpb25PblBhc3RlOiAnaW5zZXJ0X29ubHlfdGV4dCcsXHJcbiAgICBhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkOiBmYWxzZSxcclxuICAgIGhpZGVQb3dlcmVkQnlKb2RpdDogdHJ1ZSxcclxuICAgIGJlYXV0aWZ5SFRNTDogdHJ1ZSxcclxuICAgIGFkZE5ld0xpbmU6IHRydWUsXHJcbiAgICBjcmVhdGVBdHRyaWJ1dGVzOiB7fSxcclxuICAgIGV2ZW50czoge1xyXG4gICAgICBnZXRJY29uOiBjaGFuZ2VJY29uc0Z1bmN0aW9uLFxyXG4gICAgfSxcclxuICAgIC8vIHVwbG9hZGVyOiB7XHJcbiAgICAvLyAgIGluc2VydEltYWdlQXNCYXNlNjRVUkk6IHRydWVcclxuICAgIC8vIH0sXHJcbiAgICAvLyBsaW1pdENoYXJzOiAxMCxcclxuICAgIC8vIGxpbWl0SFRNTDogMTcwLFxyXG4gICAgLy8gY29sb3JzOiBbJyNmZjAwMDAnLCAnIzAwZmYwMCcsICcjMDAwMGZmJywgJyMwMDAwZmYnLCAnIzAwMDBmZicsICcjMDAwMGZmJywgJy8nLCAnIzAwMDBmZiddLFxyXG4gIH07XHJcblxyXG4gIC8vIFNBVkUgU1RBVEVcclxuICBwdWJsaWMgdXVpZDogc3RyaW5nID0gdXVpZHY0KCk7XHJcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbGJhciE6IFRvb2xiYXJDb25maWc7XHJcbiAgQElucHV0KCkgcHVibGljIG1heExlbmd0aCA9IDA7XHJcbiAgQElucHV0KCkgcHVibGljIG1pbkhlaWdodCA9IDExMDtcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZnJhbWUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGVmYXVsdElubGluZVN0eWxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGNvbmZpZzogYW55ID0gdGhpcy5kZWZhdWx0Q29uZmlnO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgZWRpdEhUTUxEb2N1bWVudE1vZGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvckVsZW1lbnRSZWYnKSBlZGl0b3JFbGVtZW50UmVmITogYW55O1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3Rvb2xiYXInXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgLi4uY2hhbmdlc1sndG9vbGJhciddLmN1cnJlbnRWYWx1ZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ21heExlbmd0aCddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCBsaW1pdENoYXJzOiBjaGFuZ2VzWydtYXhMZW5ndGgnXS5jdXJyZW50VmFsdWUgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydwbGFjZWhvbGRlciddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCBwbGFjZWhvbGRlcjogY2hhbmdlc1sncGxhY2Vob2xkZXInXS5jdXJyZW50VmFsdWUgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCBkaXNhYmxlZDogY2hhbmdlc1snZGlzYWJsZWQnXS5jdXJyZW50VmFsdWUgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydyZWFkb25seSddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCByZWFkb25seTogY2hhbmdlc1sncmVhZG9ubHknXS5jdXJyZW50VmFsdWUgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydpZnJhbWUnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgaWZyYW1lOiBjaGFuZ2VzWydpZnJhbWUnXS5jdXJyZW50VmFsdWUgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydkZWZhdWx0SW5saW5lU3R5bGUnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgY3JlYXRlQXR0cmlidXRlczogeyAuLi50aGlzLmRlZmF1bHRDb25maWcuY3JlYXRlQXR0cmlidXRlcywgLi4uZGVmYXVsdElubGluZVN0eWxlQ29uc3RhbnQgfSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2VkaXRIVE1MRG9jdW1lbnRNb2RlJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0ge1xyXG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdENvbmZpZyxcclxuICAgICAgICBlZGl0SFRNTERvY3VtZW50TW9kZTogY2hhbmdlc1snZWRpdEhUTUxEb2N1bWVudE1vZGUnXS5jdXJyZW50VmFsdWVcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUhUTUwnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgYXNrQmVmb3JlUGFzdGVIVE1MOiBjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUhUTUwnXS5jdXJyZW50VmFsdWUgfTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkJ10pIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0ge1xyXG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdENvbmZpZyxcclxuICAgICAgICBhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkOiBjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkJ10uY3VycmVudFZhbHVlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZGVmYXVsdEFjdGlvbk9uUGFzdGUnXSkge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7XHJcbiAgICAgICAgLi4udGhpcy5kZWZhdWx0Q29uZmlnLFxyXG4gICAgICAgIGRlZmF1bHRBY3Rpb25PblBhc3RlOiBjaGFuZ2VzWydkZWZhdWx0QWN0aW9uT25QYXN0ZSddLmN1cnJlbnRWYWx1ZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ21pbkhlaWdodCddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCBtaW5IZWlnaHQ6IGNoYW5nZXNbJ21pbkhlaWdodCddLmN1cnJlbnRWYWx1ZSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi5jaGFuZ2VzWydjb25maWcnXS5jdXJyZW50VmFsdWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc0ludmFsaWRNZXNzYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5pbnZhbGlkTWVzc2FnZSB8fCAhIXRoaXMuaW52YWxpZE1lc3NhZ2UubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6IHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXN0b21DbGFzc2VzfSAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbnNlcnRQb3NpdGlvblRleHQodGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVkaXRvckVsZW1lbnRSZWYuZWRpdG9yLnMuaW5zZXJ0SFRNTCh0ZXh0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VGb2N1c2VkKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgfTtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHdyaXRlVmFsdWUob3V0c2lkZVZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLl9zYW5pdGl6ZVZhbHVlKG91dHNpZGVWYWx1ZSk7XHJcbiAgICBpZiAob3V0c2lkZVZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2lzSW5pdCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVZhbHVlKGluc2lkZVZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLm1heExlbmd0aCkge1xyXG4gICAgICB0aGlzLl9jYWxjdWxhdGVDaGFydHNDb3VudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9pc0luaXQpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IGluc2lkZVZhbHVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdChpbnNpZGVWYWx1ZSk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UoaW5zaWRlVmFsdWUpO1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2FuaXRpemVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLnJlcGxhY2UoLzxzY3JpcHRcXGJbXjxdKig/Oig/ITxcXC9zY3JpcHQ+KTxbXjxdKikqPFxcL3NjcmlwdD4vZ2ksICcnKSA6IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlQ2hhcnRzQ291bnQoKSB7XHJcbiAgICB0aGlzLnZhbHVlTGVuZ3RoID0gdGhpcy5lZGl0b3JFbGVtZW50UmVmLmVkaXRvci50ZXh0LnJlcGxhY2UoL1xccysvZywgJycpLmxlbmd0aDtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibXJ4LWVkaXRvclwiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1mb2N1c2VkXT1cImlzRm9jdXNlZFwiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCIhaXNWYWxpZCB8fCBpbnZhbGlkXCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbj5cclxuICA8am9kaXQtZWRpdG9yXHJcbiAgICAjZWRpdG9yRWxlbWVudFJlZlxyXG4gICAgW2NvbmZpZ109XCJkZWZhdWx0Q29uZmlnXCJcclxuICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxyXG4gICAgKG9uRm9jdXMpPVwiY2hhbmdlRm9jdXNlZCh0cnVlKVwiXHJcbiAgICAob25CbHVyKT1cImNoYW5nZUZvY3VzZWQoZmFsc2UpXCJcclxuICA+PC9qb2RpdC1lZGl0b3I+XHJcblxyXG4gIDxtcngtZXJyb3ItbWVzc2FnZVxyXG4gICAgKm5nSWY9XCIoIWlzVmFsaWQgfHwgaW52YWxpZCkgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgICBbaW52YWxpZE1lc3NhZ2VdPVwiaW52YWxpZE1lc3NhZ2VcIlxyXG4gID48L21yeC1lcnJvci1tZXNzYWdlPlxyXG5cclxuICA8bXJ4LWNoYXJzLWxlZnQgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIiBbdmFsdWVMZW5ndGhdPVwidmFsdWVMZW5ndGhcIj48L21yeC1jaGFycy1sZWZ0PlxyXG5cclxuICA8bXJ4LXNhdmUtc3RhdGUgdHlwZT1cImVkaXRvclwiIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19