@worktile/theia 17.0.0-next.0 → 17.0.1
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.
- package/esm2022/components/action/prevent-default.mjs +3 -3
- package/esm2022/components/column-resize/column-resize-notifier.mjs +3 -3
- package/esm2022/components/column-resize/column-resize.directive.mjs +3 -3
- package/esm2022/components/column-resize/event-dispatcher.mjs +3 -3
- package/esm2022/components/column-resize/overlay-handle.component.mjs +3 -3
- package/esm2022/components/column-resize/resizing.store.mjs +3 -3
- package/esm2022/components/contextmenu/contextmenu.component.mjs +3 -3
- package/esm2022/components/conversion-hint/conversion-hint.component.mjs +3 -3
- package/esm2022/components/element/element.component.mjs +3 -3
- package/esm2022/components/inline-toolbar/inline-toolbar.component.mjs +3 -3
- package/esm2022/components/listbox/listbox.mjs +9 -9
- package/esm2022/components/plugin-menu/plugin-menu.component.mjs +3 -3
- package/esm2022/components/table-select/table-select.component.mjs +3 -3
- package/esm2022/components/template/template.component.mjs +3 -3
- package/esm2022/components/text/text.component.mjs +3 -3
- package/esm2022/components/toolbar/toolbar.component.mjs +3 -3
- package/esm2022/components/toolbar-dropdown/toolbar-dropdown.component.mjs +3 -3
- package/esm2022/components/toolbar-group/toolbar-group.component.mjs +3 -3
- package/esm2022/components/toolbar-item/toolbar-item.component.mjs +3 -3
- package/esm2022/core/toolbar-item/base-toolbar-item.mjs +6 -6
- package/esm2022/editor.component.mjs +3 -3
- package/esm2022/interfaces/view-base.mjs +3 -3
- package/esm2022/pipes.mjs +9 -9
- package/esm2022/plugins/blockquote/blockquote.component.mjs +3 -3
- package/esm2022/plugins/code/code.component.mjs +3 -3
- package/esm2022/plugins/color/toolbar-item.component.mjs +3 -3
- package/esm2022/plugins/hr/hr.component.mjs +3 -3
- package/esm2022/plugins/image/image.component.mjs +6 -4
- package/esm2022/plugins/inline-code/inline-code.component.mjs +3 -3
- package/esm2022/plugins/link/edit/link-edit.component.mjs +3 -3
- package/esm2022/plugins/link/hover/link-hover.component.mjs +3 -3
- package/esm2022/plugins/link/link.component.mjs +6 -6
- package/esm2022/plugins/list/components/bulleted-list.component.mjs +3 -3
- package/esm2022/plugins/list/components/list-item.component.mjs +3 -3
- package/esm2022/plugins/list/components/numbered-list.component.mjs +3 -3
- package/esm2022/plugins/mention/suggestion.component.mjs +3 -3
- package/esm2022/plugins/quick-insert/components/quick-insert.component.mjs +3 -3
- package/esm2022/plugins/table/components/insert-mark/insert-mark.component.mjs +3 -3
- package/esm2022/plugins/table/components/row/row.component.mjs +3 -3
- package/esm2022/plugins/table/components/table.component.mjs +3 -3
- package/esm2022/plugins/table/components/td/td.component.mjs +3 -3
- package/esm2022/plugins/table/components/toolbar/table-options.component.mjs +3 -3
- package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +3 -3
- package/esm2022/plugins/table/table.pipe.mjs +6 -6
- package/esm2022/plugins/table/table.service.mjs +3 -3
- package/esm2022/plugins/table/table.store.mjs +3 -3
- package/esm2022/plugins/table/toolbar-item.component.mjs +3 -3
- package/esm2022/plugins/todo-item/todo-item.component.mjs +3 -3
- package/esm2022/plugins/vertical-align/toolbar-item.component.mjs +3 -3
- package/esm2022/services/context.service.mjs +3 -3
- package/esm2022/services/table-contextmenu.service.mjs +3 -3
- package/esm2022/services/toolbar.service.mjs +3 -3
- package/esm2022/test/basic/basic.component.mjs +3 -3
- package/esm2022/test/faker/tethys-icon-faker.mjs +3 -3
- package/fesm2022/worktile-theia.mjs +185 -183
- package/fesm2022/worktile-theia.mjs.map +1 -1
- package/interfaces/editor.d.ts +3 -3
- package/package.json +4 -4
- package/plugins/table/components/table.component.d.ts +1 -1
- package/queries/index.d.ts +1 -1
- package/queries/is-range-across-blocks.d.ts +1 -1
- package/transforms/index.d.ts +1 -1
|
@@ -27,8 +27,8 @@ export class TheToolbarItem extends TheBaseToolbarItem {
|
|
|
27
27
|
}
|
|
28
28
|
this.toolbarItem?.execute(this.editor);
|
|
29
29
|
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
31
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheToolbarItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TheToolbarItem, isStandalone: true, selector: "the-toolbar-item", host: { listeners: { "mousedown": "toggleDropdown($event)" }, properties: { "class": "this.className" } }, usesInheritance: true, ngImport: i0, template: `
|
|
32
32
|
<a
|
|
33
33
|
href="javascript:;"
|
|
34
34
|
thyAction
|
|
@@ -43,7 +43,7 @@ export class TheToolbarItem extends TheBaseToolbarItem {
|
|
|
43
43
|
<ng-template #tooltip let-data> {{ data?.name }} {{ data?.shortcutKey }} </ng-template>
|
|
44
44
|
`, isInline: true, dependencies: [{ kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }] }); }
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheToolbarItem, decorators: [{
|
|
47
47
|
type: Component,
|
|
48
48
|
args: [{
|
|
49
49
|
selector: 'the-toolbar-item',
|
|
@@ -37,10 +37,10 @@ export class TheBaseToolbarItem {
|
|
|
37
37
|
this.active = false;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
41
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheBaseToolbarItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
41
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: TheBaseToolbarItem, inputs: { toolbarItem: "toolbarItem", editor: "editor", itemMousedownHandle: "itemMousedownHandle" }, host: { properties: { "class.the-toolbar-item": "this.class", "class.disabled": "this.disabledState", "class.active": "this.activeState" } }, ngImport: i0 }); }
|
|
42
42
|
}
|
|
43
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheBaseToolbarItem, decorators: [{
|
|
44
44
|
type: Directive
|
|
45
45
|
}], propDecorators: { toolbarItem: [{
|
|
46
46
|
type: Input
|
|
@@ -78,10 +78,10 @@ export class TheBaseToolbarDropdown extends TheBaseToolbarItem {
|
|
|
78
78
|
this.activeMenuItem = activeItem ? activeItem : this.defaultDropdownItem;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
82
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheBaseToolbarDropdown, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
82
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: TheBaseToolbarDropdown, inputs: { menus: "menus", mode: "mode", dropdownItemKey: "dropdownItemKey" }, usesInheritance: true, ngImport: i0 }); }
|
|
83
83
|
}
|
|
84
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheBaseToolbarDropdown, decorators: [{
|
|
85
85
|
type: Directive
|
|
86
86
|
}], propDecorators: { menus: [{
|
|
87
87
|
type: Input
|
|
@@ -428,8 +428,8 @@ export class TheEditorComponent {
|
|
|
428
428
|
text
|
|
429
429
|
};
|
|
430
430
|
}
|
|
431
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
432
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
431
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheEditorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.DestroyRef }, { token: i0.ElementRef }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: i1.TheContextService }, { token: i2.ThyIconRegistry }, { token: THE_PRESET_CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
432
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TheEditorComponent, isStandalone: true, selector: "the-editor, theEditor", inputs: { theOptions: "theOptions", thePlugins: "thePlugins", theGlobalToolbar: "theGlobalToolbar", theDecorate: "theDecorate", theOnError: "theOnError" }, outputs: { theOnSave: "theOnSave", theOnDOMEvent: "theOnDOMEvent", theEditorCreated: "theEditorCreated", theUploadingStatus: "theUploadingStatus" }, host: { properties: { "class.the-editor-readonly": "editor.options?.readonly", "class.the-mobile-editor": "isMobileMode" }, classAttribute: "the-editor" }, providers: [
|
|
433
433
|
TheContextService,
|
|
434
434
|
THE_MODE_PROVIDER,
|
|
435
435
|
{
|
|
@@ -443,7 +443,7 @@ export class TheEditorComponent {
|
|
|
443
443
|
}
|
|
444
444
|
], viewQueries: [{ propertyName: "templateInstance", first: true, predicate: ["templateInstance"], descendants: true, static: true }, { propertyName: "theEditableContainer", first: true, predicate: ["theEditableContainer"], descendants: true, read: ElementRef, static: true }, { propertyName: "globalToolbarInstance", first: true, predicate: ["globalToolbar"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<the-toolbar\n *ngIf=\"!options?.readonly && !theGlobalToolbar && !isMobileMode\"\n [ngClass]=\"{\n 'the-toolbar-disabled': options?.disabled\n }\"\n #globalToolbar\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.global\"\n [containerClass]=\"globalToolbarClass\"\n [align]=\"options?.toolbar?.align\"\n></the-toolbar>\n\n<div\n #theEditableContainer\n class=\"the-editable-container\"\n thyImageGroup\n [ngClass]=\"{\n 'the-editor-disabled': options?.disabled,\n 'max-height': maxHeight\n }\"\n [ngStyle]=\"{ 'max-height': maxHeight }\"\n>\n <slate-editable\n class=\"the-editor-typo\"\n [editor]=\"editor\"\n [ngModel]=\"editorValue\"\n [renderElement]=\"renderElement\"\n [renderText]=\"renderText\"\n [renderLeaf]=\"renderLeaf\"\n [isStrictDecorate]=\"false\"\n [decorate]=\"decorate\"\n [placeholder]=\"options?.placeholder\"\n [placeholderDecorate]=\"options?.placeholderDecorate ? options?.placeholderDecorate : null\"\n [readonly]=\"options?.readonly || options?.disabled\"\n [keydown]=\"onKeyDown\"\n [click]=\"onClick\"\n [paste]=\"onSlaPaste\"\n [blur]=\"onSlaBlur\"\n [focus]=\"onSlaFocus\"\n [copy]=\"onSlaCopy\"\n [cut]=\"onSlaCut\"\n [beforeInput]=\"onSlaBeforeInput\"\n [compositionStart]=\"onSlaCompositionStart\"\n [compositionEnd]=\"onSlaCompositionEnd\"\n [dragStart]=\"onSlaDragStart\"\n [dragOver]=\"onSlaDragOver\"\n [drop]=\"onDrop\"\n [scrollSelectionIntoView]=\"scrollSelectionIntoView\"\n (ngModelChange)=\"valueChange($event)\"\n (mousedown)=\"mousedown($event)\"\n ></slate-editable>\n\n <ng-container *ngIf=\"!isMobileMode\">\n <the-inline-toolbar\n *ngIf=\"!options?.readonly && options?.inlineToolbarVisible\"\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.inline\"\n ></the-inline-toolbar>\n <div *ngIf=\"!options?.readonly\" theQuickInsert [editor]=\"editor\" [isVisible]=\"visibleQuickInsertPlus\"></div>\n </ng-container>\n\n <the-template #templateInstance></the-template>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SlateModule }, { kind: "component", type: i4.SlateEditable, selector: "slate-editable", inputs: ["editor", "renderElement", "renderLeaf", "renderText", "decorate", "placeholderDecorate", "scrollSelectionIntoView", "isStrictDecorate", "trackBy", "readonly", "placeholder", "beforeInput", "blur", "click", "compositionEnd", "compositionUpdate", "compositionStart", "copy", "cut", "dragOver", "dragStart", "dragEnd", "drop", "focus", "keydown", "paste", "spellCheck", "autoCorrect", "autoCapitalize"] }, { kind: "component", type: TheTemplate, selector: "the-template,[theTemplate]" }, { kind: "component", type: TheQuickInsert, selector: "[theQuickInsert]", inputs: ["editor", "isVisible"] }, { kind: "component", type: TheInlineToolbar, selector: "the-inline-toolbar", inputs: ["editor", "toolbarItems"] }, { kind: "component", type: TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }, { kind: "component", type: ThyImageGroup, selector: "thy-image-group, [thyImageGroup]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
445
445
|
}
|
|
446
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
446
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheEditorComponent, decorators: [{
|
|
447
447
|
type: Component,
|
|
448
448
|
args: [{ selector: 'the-editor, theEditor', host: {
|
|
449
449
|
class: 'the-editor',
|
|
@@ -25,10 +25,10 @@ export class TheBaseElement extends BaseElementComponent {
|
|
|
25
25
|
const blockClass = this.editor.isInline(this.element) ? 'slate-inline-block' : 'slate-block';
|
|
26
26
|
this.nativeElement.classList.add(`slate-element-${this.element.type}`, blockClass);
|
|
27
27
|
}
|
|
28
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
29
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
28
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheBaseElement, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
29
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TheBaseElement, selector: "TheBaseElement", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
30
30
|
}
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheBaseElement, decorators: [{
|
|
32
32
|
type: Component,
|
|
33
33
|
args: [{
|
|
34
34
|
selector: 'TheBaseElement',
|
package/esm2022/pipes.mjs
CHANGED
|
@@ -12,10 +12,10 @@ export class ElementStylePipe {
|
|
|
12
12
|
}
|
|
13
13
|
return style;
|
|
14
14
|
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
16
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ElementStylePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
16
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: ElementStylePipe, isStandalone: true, name: "elementStyle" }); }
|
|
17
17
|
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ElementStylePipe, decorators: [{
|
|
19
19
|
type: Pipe,
|
|
20
20
|
args: [{
|
|
21
21
|
name: 'elementStyle',
|
|
@@ -31,10 +31,10 @@ export class ElementClassPipe {
|
|
|
31
31
|
}
|
|
32
32
|
return classStr;
|
|
33
33
|
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
35
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ElementClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
35
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: ElementClassPipe, isStandalone: true, name: "elementClass" }); }
|
|
36
36
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ElementClassPipe, decorators: [{
|
|
38
38
|
type: Pipe,
|
|
39
39
|
args: [{
|
|
40
40
|
name: 'elementClass',
|
|
@@ -48,10 +48,10 @@ export class PluginMenuPipe {
|
|
|
48
48
|
}
|
|
49
49
|
return icon;
|
|
50
50
|
}
|
|
51
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
52
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.
|
|
51
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PluginMenuPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
52
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: PluginMenuPipe, isStandalone: true, name: "getMenuIcon" }); }
|
|
53
53
|
}
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PluginMenuPipe, decorators: [{
|
|
55
55
|
type: Pipe,
|
|
56
56
|
args: [{
|
|
57
57
|
name: 'getMenuIcon',
|
|
@@ -8,10 +8,10 @@ export class TheBlockquote extends TheBaseElement {
|
|
|
8
8
|
this.elementRef = elementRef;
|
|
9
9
|
this.cdr = cdr;
|
|
10
10
|
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheBlockquote, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TheBlockquote, isStandalone: true, selector: "blockquote[theBlockquote]", usesInheritance: true, ngImport: i0, template: `<slate-children [children]="children" [context]="childrenContext" [viewContext]="viewContext"></slate-children>`, isInline: true, dependencies: [{ kind: "component", type: SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }] }); }
|
|
13
13
|
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheBlockquote, decorators: [{
|
|
15
15
|
type: Component,
|
|
16
16
|
args: [{
|
|
17
17
|
selector: 'blockquote[theBlockquote]',
|
|
@@ -228,10 +228,10 @@ export class TheCode extends TheBaseElement {
|
|
|
228
228
|
this.destroy$.next();
|
|
229
229
|
this.destroy$.complete();
|
|
230
230
|
}
|
|
231
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
232
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
231
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheCode, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ThyNotifyService }, { token: i2.TheContextService }, { token: i0.NgZone }, { token: i3.ThyPopover }, { token: i0.ViewContainerRef }, { token: i4.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
232
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TheCode, isStandalone: true, selector: "div[theCode]", host: { classAttribute: "the-code-container" }, viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef, static: true }, { propertyName: "codemirror", first: true, predicate: ["codemirror"], descendants: true, read: CodeMirrorComponent }, { propertyName: "toolbarDropdown", first: true, predicate: TheToolbarDropdown, descendants: true, read: TheToolbarDropdown }], usesInheritance: true, ngImport: i0, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<!-- \u53EA\u8BFB\u6A21\u5F0F\u4E0BCodeMirror-sizer\u9AD8\u5EA6\u6BD4\u7F16\u8F91\u6A21\u5F0F\u4E0B\u591A2px\uFF0C\u8BBE\u7F6EthyMinHeight\u4E3A46px\u9632\u6B62\u62D6\u62FD\u5230\u6700\u5C0F\u9AD8\u5EA6\u65F6\u53EA\u8BFB\u6A21\u5F0F\u4E0B\u51FA\u73B0\u6EDA\u52A8\u6761 -->\n<div\n thyResizable\n [thyMinHeight]=\"46\"\n [thyBounds]=\"resizeBounds\"\n [style.height.px]=\"resizeHeight\"\n (thyResize)=\"onResize($event)\"\n (thyResizeEnd)=\"onEndResize()\"\n class=\"resize-code-container\"\n [ngClass]=\"{ focus: isCollapsedAndNonReadonly, readonly: options.readOnly, active: isHightLight && isCollapsedAndNonReadonly }\"\n>\n <ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n >\n </ng-codemirror>\n <thy-resize-handle thyDirection=\"bottom\" class=\"code-resize-icon\" *ngIf=\"isCollapsedAndNonReadonly\"></thy-resize-handle>\n</div>\n\n<ng-template #toolbar>\n <thy-actions thySize=\"xxs\" thePreventDefault>\n <the-toolbar-dropdown\n [menus]=\"menus\"\n [toolbarItem]=\"activeLanguage\"\n [dropdownItemKey]=\"activeLanguage?.key\"\n [itemMousedownHandle]=\"onChangeLanguage\"\n >\n </the-toolbar-dropdown>\n <span class=\"auto-wrap d-flex align-items-center px-2 text-secondary\">\n <span>\u81EA\u52A8\u6362\u884C</span>\n <thy-switch\n class=\"auto-wrap-btn d-flex ml-1\"\n [(ngModel)]=\"options.lineWrapping\"\n (ngModelChange)=\"onChangeWrap($event)\"\n thySize=\"sm\"\n ></thy-switch>\n </span>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"copy\" thyTooltip=\"\u590D\u5236\" thyTooltipPlacement=\"top\" (click)=\"onCopy($event)\"></a>\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n thyActionIcon=\"trash\"\n thyTooltip=\"\u5220\u9664\"\n thyTooltipPlacement=\"top\"\n (click)=\"onDelete($event)\"\n ></a>\n </thy-actions>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SlateModule }, { kind: "component", type: i6.SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { kind: "ngmodule", type: CodemirrorModule }, { kind: "component", type: i7.CodeMirrorComponent, selector: "ng-codemirror, [ngCodeMirror]", inputs: ["autoMaxHeight", "options", "delayRefreshTime"], outputs: ["focusChange"] }, { kind: "component", type: ThySwitch, selector: "thy-switch", inputs: ["thyType", "thySize", "thyDisabled", "thyLoading"], outputs: ["thyChange"] }, { kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: ThyDivider, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "component", type: ThyActions, selector: "thy-actions", inputs: ["thySize"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "directive", type: ThyResizableDirective, selector: "[thyResizable]", inputs: ["thyBounds", "thyMaxHeight", "thyMaxWidth", "thyMinHeight", "thyMinWidth", "thyGridColumnCount", "thyMaxColumn", "thyMinColumn", "thyLockAspectRatio", "thyPreview", "thyDisabled"], outputs: ["thyResize", "thyResizeStart", "thyResizeEnd"] }, { kind: "component", type: ThyResizeHandle, selector: "thy-resize-handle, [thy-resize-handle]", inputs: ["thyDirection", "thyLine"], outputs: ["thyMouseDown"], exportAs: ["thyResizeHandle"] }, { kind: "component", type: TheToolbarDropdown, selector: "the-toolbar-dropdown" }, { kind: "directive", type: ThePreventDefaultDirective, selector: "[thePreventDefault]", exportAs: ["thePreventDefault"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
233
233
|
}
|
|
234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheCode, decorators: [{
|
|
235
235
|
type: Component,
|
|
236
236
|
args: [{ selector: 'div[theCode]', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
237
237
|
class: 'the-code-container'
|
|
@@ -76,10 +76,10 @@ export class TheColorToolbarItem extends TheBaseToolbarItem {
|
|
|
76
76
|
AngularEditor.focus(this.editor);
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
80
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
79
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheColorToolbarItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
80
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TheColorToolbarItem, isStandalone: true, selector: "the-color-toolbar-item", host: { classAttribute: "the-color-toolbar-item" }, usesInheritance: true, ngImport: i0, template: "<thy-actions\n class=\"d-flex p-0\"\n thySize=\"zero\"\n thyTooltipPlacement=\"top\"\n [thyTooltip]=\"toolbarItem.name\"\n [ngClass]=\"{ 'thy-default-picker-active': pickerActive }\"\n>\n <a href=\"javascript:;\" class=\"color\" thyAction (mousedown)=\"selectColor($event)\">\n <thy-icon\n thyIconType=\"twotone\"\n [thyIconName]=\"toolbarItem.icon\"\n [thyTwotoneColor]=\"toolbarItem.key === 'color' ? lastTextColor : lastBackgroundColor\"\n (mousedown)=\"selectColor($event)\"\n ></thy-icon>\n </a>\n <a\n class=\"pl-0 pr-0 caret-down\"\n href=\"javascript:;\"\n thyAction\n thyColorPicker\n thyPlacement=\"bottomLeft\"\n [(ngModel)]=\"selectedColor\"\n (thyPanelOpen)=\"pickerActive = true\"\n (thyPanelClose)=\"colorPanelClose()\"\n (ngModelChange)=\"changeColor($event)\"\n (mousedown)=\"preventDefault($event)\"\n >\n <thy-icon class=\"link-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</thy-actions>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: ThyActions, selector: "thy-actions", inputs: ["thySize"] }, { kind: "directive", type: ThyColorPickerDirective, selector: "[thyColorPicker]", inputs: ["thyOffset", "thyHasBackdrop", "thyDefaultColor", "thyTransparentColorSelectable", "thyPresetColors", "thyPlacement", "thyTrigger", "thyShowDelay", "thyHideDelay", "thyDisabled"], outputs: ["thyPanelOpen", "thyPanelClose"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }] }); }
|
|
81
81
|
}
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheColorToolbarItem, decorators: [{
|
|
83
83
|
type: Component,
|
|
84
84
|
args: [{ selector: 'the-color-toolbar-item', host: {
|
|
85
85
|
class: 'the-color-toolbar-item'
|
|
@@ -17,15 +17,15 @@ export class TheHr extends TheBaseElement {
|
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheHr, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TheHr, isStandalone: true, selector: "the-hr, [theHr]", usesInheritance: true, ngImport: i0, template: `
|
|
22
22
|
<div class="the-hr" contenteditable="false" [ngClass]="{ active: isCollapsedAndNonReadonly }">
|
|
23
23
|
<hr class="the-hr" />
|
|
24
24
|
<slate-children [children]="children" [context]="childrenContext" [viewContext]="viewContext"></slate-children>
|
|
25
25
|
</div>
|
|
26
26
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }] }); }
|
|
27
27
|
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheHr, decorators: [{
|
|
29
29
|
type: Component,
|
|
30
30
|
args: [{
|
|
31
31
|
selector: 'the-hr, [theHr]',
|
|
@@ -105,6 +105,8 @@ export class TheImage extends TheBaseElement {
|
|
|
105
105
|
}
|
|
106
106
|
this.imageEntry = {
|
|
107
107
|
...value.element,
|
|
108
|
+
thumbUrl,
|
|
109
|
+
originUrl,
|
|
108
110
|
align: value.element.align || Alignment.left,
|
|
109
111
|
reSized: value.element.reSized || false
|
|
110
112
|
};
|
|
@@ -424,10 +426,10 @@ export class TheImage extends TheBaseElement {
|
|
|
424
426
|
});
|
|
425
427
|
}
|
|
426
428
|
}
|
|
427
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
428
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
429
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheImage, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ThyImageGroup }, { token: THE_UPLOAD_SERVICE_TOKEN }, { token: i2.TheContextService }, { token: i3.ThyPopover }, { token: i4.Overlay }, { token: i0.ViewContainerRef }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
430
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TheImage, isStandalone: true, selector: "the-image, [theImage]", providers: [ThyImageService], viewQueries: [{ propertyName: "imageContent", first: true, predicate: ["imageContent"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true }, { propertyName: "layoutToolbar", first: true, predicate: ["layoutToolbar"], descendants: true, static: true }, { propertyName: "imageDirective", first: true, predicate: ThyImageDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div #imageContent *ngIf=\"imageEntry.thumbUrl; else imageLoading\" class=\"image-content\" [class.cursor-pointer]=\"!selection\">\n <img\n #img\n thyImage\n class=\"main-image\"\n [class.image-collapsed]=\"selection && !uploading\"\n [ngStyle]=\"{ 'width.px': imageBindingWidth }\"\n [alt]=\"imageEntry.name\"\n [thySrc]=\"imageEntry.thumbUrl\"\n [thyPreviewSrc]=\"imageEntry.thumbUrl\"\n [thyOriginSrc]=\"imageEntry.originUrl\"\n [thyDisablePreview]=\"disablePreview\"\n [thyImageMeta]=\"{ name: imageEntry.name, size: imageEntry.size }\"\n (load)=\"imageLoaded($event)\"\n (mousedown)=\"preventDefault($event)\"\n (error)=\"imageError($event)\"\n (click)=\"imageClick($event)\"\n />\n <div *ngIf=\"isCollapsedAndNonReadonly\" class=\"image-profile\" [class.outline]=\"selection\">\n <ng-container *ngIf=\"!loadImageError\">\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </ng-container>\n </div>\n <ng-template [ngTemplateOutlet]=\"imageUploading\"></ng-template>\n <div *ngIf=\"!uploading\" class=\"layer\" [class.readonly]=\"readonly\"></div>\n </div>\n</div>\n\n<ng-template #imageLoading>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading cursor-pointer\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n\n <ng-template [ngTemplateOutlet]=\"imageUploading\"></ng-template>\n</ng-template>\n\n<ng-template #layoutToolbar>\n <thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyAction\n [thyType]=\"item.key === 'remove' ? 'danger' : 'primary'\"\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"layoutActive(item.key)\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <thy-divider *ngIf=\"item.key === 'split'\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n </ng-container>\n </thy-actions>\n</ng-template>\n\n<ng-template #imageUploading>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"> </thy-icon>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyImageDirective, selector: "img[thyImage]", inputs: ["thySrc", "thyPreviewSrc", "thyOriginSrc", "thyImageMeta", "thyDisablePreview", "thyResolveSize"], exportAs: ["thyImage"] }, { kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: ThyDivider, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "component", type: ThyActions, selector: "thy-actions", inputs: ["thySize"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: ThyProgress, selector: "thy-progress", inputs: ["thyType", "thySize", "thyValue", "thyMax", "thyTips", "thyShape", "thyGapDegree", "thyGapPosition", "thyStrokeWidth"] }] }); }
|
|
429
431
|
}
|
|
430
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
432
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheImage, decorators: [{
|
|
431
433
|
type: Component,
|
|
432
434
|
args: [{ selector: 'the-image, [theImage]', standalone: true, imports: [
|
|
433
435
|
NgIf,
|
|
@@ -459,4 +461,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
459
461
|
type: ViewChild,
|
|
460
462
|
args: [ThyImageDirective]
|
|
461
463
|
}] } });
|
|
462
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUdILFNBQVMsRUFHVCxNQUFNLEVBSU4sU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUF1QixhQUFhLEVBQXVCLE1BQU0sZUFBZSxD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Z0dqQixpQkFBaUIsdUVDbEtoQyxna0dBcUVBLDRDRGhCUSxJQUFJLDZGQUNKLEtBQUssbUhBQ0wsT0FBTywyRUFDUCxnQkFBZ0Isb0pBQ2hCLGFBQWEsMkdBQ2IsT0FBTyxzTUFDUCxpQkFBaUIsOExBQ2pCLFNBQVMsZ01BQ1QsVUFBVSxxSkFDVixVQUFVLDZFQUNWLG1CQUFtQiw4VEFDbkIsV0FBVzs7MkZBSU4sUUFBUTtrQkFwQnBCLFNBQVM7K0JBQ0ksdUJBQXVCLGNBRXJCLElBQUksV0FDUDt3QkFDTCxJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsT0FBTzt3QkFDUCxpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLG1CQUFtQjt3QkFDbkIsV0FBVztxQkFDZCxhQUNVLENBQUMsZUFBZSxDQUFDOzswQkFzR3ZCLE1BQU07MkJBQUMsd0JBQXdCO2dMQWRwQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYztnQkFJekIsR0FBRztzQkFERixTQUFTO3VCQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSW5DLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdkLGNBQWM7c0JBQTNDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFRoeUFjdGlvbiwgVGh5QWN0aW9ucyB9IGZyb20gJ25neC10ZXRoeXMvYWN0aW9uJztcbmltcG9ydCB7IFRoeURpdmlkZXIgfSBmcm9tICduZ3gtdGV0aHlzL2RpdmlkZXInO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBUaHlJbWFnZURpcmVjdGl2ZSwgVGh5SW1hZ2VHcm91cCwgVGh5SW1hZ2VTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9pbWFnZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyLCBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IFRoeVByb2dyZXNzIH0gZnJvbSAnbmd4LXRldGh5cy9wcm9ncmVzcyc7XG5pbXBvcnQgeyBUaHlUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy90b29sdGlwJztcbmltcG9ydCB7IFRoeVVwbG9hZFN0YXR1cyB9IGZyb20gJ25neC10ZXRoeXMvdXBsb2FkJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzL2ludGVybmFsL1N1YnNjcmlwdGlvbic7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBCZWZvcmVDb250ZXh0Q2hhbmdlLCBTbGF0ZUNoaWxkcmVuLCBTbGF0ZUVsZW1lbnRDb250ZXh0IH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBIaXN0b3J5RWRpdG9yIH0gZnJvbSAnc2xhdGUtaGlzdG9yeSc7XG5pbXBvcnQgeyBBbGlnbm1lbnQsIEVsZW1lbnRLaW5kcywgTGF5b3V0VHlwZXMsIFRvb2xiYXJBY3Rpb25UeXBlcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBJbWFnZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHtcbiAgICBJbWFnZUVudHJ5LFxuICAgIEltYWdlSW5mbyxcbiAgICBJbWFnZVBsdWdpbk9wdGlvbnMsXG4gICAgTGF5b3V0T3B0aW9uLFxuICAgIFBsdWdpbktleXMsXG4gICAgVEhFX1VQTE9BRF9TRVJWSUNFX1RPS0VOLFxuICAgIFRoZUJhc2VFbGVtZW50LFxuICAgIFRoZUltYWdlVXBsb2FkZXJTZXJ2aWNlXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGhlUXVlcmllcyB9IGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNNb2JpbGVNb2RlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LW1vZGUnO1xuaW1wb3J0IHsgSW1hZ2VFZGl0b3IgfSBmcm9tICcuL2ltYWdlLmVkaXRvcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLWltYWdlLCBbdGhlSW1hZ2VdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgU2xhdGVDaGlsZHJlbixcbiAgICAgICAgVGh5SWNvbixcbiAgICAgICAgVGh5SW1hZ2VEaXJlY3RpdmUsXG4gICAgICAgIFRoeUFjdGlvbixcbiAgICAgICAgVGh5RGl2aWRlcixcbiAgICAgICAgVGh5QWN0aW9ucyxcbiAgICAgICAgVGh5VG9vbHRpcERpcmVjdGl2ZSxcbiAgICAgICAgVGh5UHJvZ3Jlc3NcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1RoeUltYWdlU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVGhlSW1hZ2VcbiAgICBleHRlbmRzIFRoZUJhc2VFbGVtZW50PEltYWdlRWxlbWVudCwgRWRpdG9yPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEJlZm9yZUNvbnRleHRDaGFuZ2U8U2xhdGVFbGVtZW50Q29udGV4dD5cbntcbiAgICBuYXR1cmFsV2lkdGggPSAwO1xuXG4gICAgbmF0dXJhbEhlaWdodCA9IDA7XG5cbiAgICBpbWFnZUVudHJ5OiBJbWFnZUVudHJ5ID0ge307XG5cbiAgICB1cGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHBlcmNlbnRhZ2UgPSAwO1xuXG4gICAgZmlsZUl0ZW06IHsgdXJsOiBzdHJpbmc7IGZpbGU6IEZpbGUgfCBzdHJpbmcgfTtcblxuICAgIGxheW91dERlZmF1bHRXaWR0aCA9IDM2ODtcblxuICAgIGRpc2FibGVQcmV2aWV3ID0gZmFsc2U7XG5cbiAgICBsb2FkSW1hZ2VFcnJvciA9IGZhbHNlO1xuXG4gICAgbGF5b3V0T3B0aW9uczogTGF5b3V0T3B0aW9uW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogQWxpZ25tZW50LmxlZnQsXG4gICAgICAgICAgICBpY29uOiAnaW1hZ2UtbGVmdCcsXG4gICAgICAgICAgICBuYW1lOiAn5bem5a+56b2QJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQsIGtleTogQWxpZ25tZW50KSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGFsaWduOiBrZXksIGxheW91dDogdW5kZWZpbmVkIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogQWxpZ25tZW50LmNlbnRlcixcbiAgICAgICAgICAgIGljb246ICdpbWFnZS1jZW50ZXInLFxuICAgICAgICAgICAgbmFtZTogJ+WxheS4rScsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IEFsaWdubWVudCkgPT4gdGhpcy5zZXRJbWFnZU5vZGUoZSwgeyBhbGlnbjoga2V5LCBsYXlvdXQ6IHVuZGVmaW5lZCB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEFsaWdubWVudC5yaWdodCxcbiAgICAgICAgICAgIGljb246ICdpbWFnZS1yaWdodCcsXG4gICAgICAgICAgICBuYW1lOiAn5Y+z5a+56b2QJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQsIGtleTogQWxpZ25tZW50KSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGFsaWduOiBrZXksIGxheW91dDogdW5kZWZpbmVkIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogTGF5b3V0VHlwZXMud3JhcExlZnQsXG4gICAgICAgICAgICBpY29uOiAnd3JhcC1sZWZ0JyxcbiAgICAgICAgICAgIG5hbWU6ICflm77niYflsYXlt6YnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBMYXlvdXRUeXBlcykgPT4gdGhpcy5zZXRJbWFnZU5vZGUoZSwgeyBsYXlvdXQ6IGtleSB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IExheW91dFR5cGVzLndyYXBSaWdodCxcbiAgICAgICAgICAgIGljb246ICd3cmFwLXJpZ2h0JyxcbiAgICAgICAgICAgIG5hbWU6ICflm77niYflsYXlj7MnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBMYXlvdXRUeXBlcykgPT4gdGhpcy5zZXRJbWFnZU5vZGUoZSwgeyBsYXlvdXQ6IGtleSB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdyZW1vdmUnLFxuICAgICAgICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgICAgICAgIG5hbWU6ICfliKDpmaQnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCkgPT4gdGhpcy5vbkRlbGV0ZShlKVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIHByaXZhdGUgdXBsb2FkaW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIG1vdXNlTW92ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJpdmF0ZSBkcmFnYWJsZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBsYXlvdXRUb29sYmFyUmVmOiBUaHlQb3BvdmVyUmVmPGFueT47XG5cbiAgICBwcml2YXRlIGltYWdlUGx1Z2luT3B0aW9uczogSW1hZ2VQbHVnaW5PcHRpb25zO1xuXG4gICAgZ2V0IGlzT3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0VG9vbGJhclJlZiAmJiB0aGlzLmxheW91dFRvb2xiYXJSZWYuZ2V0T3ZlcmxheVJlZigpICYmIHRoaXMubGF5b3V0VG9vbGJhclJlZi5nZXRPdmVybGF5UmVmKCkuaGFzQXR0YWNoZWQoKTtcbiAgICB9XG5cbiAgICBnZXQgaW1hZ2VCaW5kaW5nV2lkdGgoKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aCA9IHRoaXMuaW1hZ2VFbnRyeT8ud2lkdGggfHwgdGhpcy5uYXR1cmFsV2lkdGg7XG4gICAgICAgIHJldHVybiB0aGlzLmltYWdlRW50cnk/LmxheW91dCAmJiBjdXJyZW50V2lkdGggPiB0aGlzLmxheW91dERlZmF1bHRXaWR0aCAmJiAhdGhpcy5pbWFnZUVudHJ5Py5yZVNpemVkXG4gICAgICAgICAgICA/IHRoaXMubGF5b3V0RGVmYXVsdFdpZHRoXG4gICAgICAgICAgICA6IHRoaXMuaW1hZ2VFbnRyeS53aWR0aDtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdpbWFnZUNvbnRlbnQnKVxuICAgIGltYWdlQ29udGVudDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2ltZycsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGltZzogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2xheW91dFRvb2xiYXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGxheW91dFRvb2xiYXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKFRoeUltYWdlRGlyZWN0aXZlKSBpbWFnZURpcmVjdGl2ZTogVGh5SW1hZ2VEaXJlY3RpdmU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgaW1hZ2VHcm91cENvbXBvbmVudDogVGh5SW1hZ2VHcm91cCxcbiAgICAgICAgQEluamVjdChUSEVfVVBMT0FEX1NFUlZJQ0VfVE9LRU4pXG4gICAgICAgIHByaXZhdGUgaW1hZ2VVcGxvYWRlclNlcnZpY2U6IFRoZUltYWdlVXBsb2FkZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRoZUNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XG4gICAgfVxuXG4gICAgYmVmb3JlQ29udGV4dENoYW5nZSA9ICh2YWx1ZTogU2xhdGVFbGVtZW50Q29udGV4dDxJbWFnZUVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZS5lbGVtZW50ICE9PSB0aGlzLmVsZW1lbnQgJiYgdmFsdWUuZWxlbWVudC50aHVtYlVybCkge1xuICAgICAgICAgICAgbGV0IHRodW1iVXJsID0gdmFsdWUuZWxlbWVudC50aHVtYlVybDtcbiAgICAgICAgICAgIGxldCBvcmlnaW5VcmwgPSB2YWx1ZS5lbGVtZW50Lm9yaWdpblVybDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2U/LmJ1aWxkSW1hZ2VVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHVtYlVybCA9IHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2UuYnVpbGRJbWFnZVVybCh0aHVtYlVybCk7XG4gICAgICAgICAgICAgICAgb3JpZ2luVXJsID0gdGhpcy5pbWFnZVVwbG9hZGVyU2VydmljZS5idWlsZEltYWdlVXJsKG9yaWdpblVybCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeSA9IHtcbiAgICAgICAgICAgICAgICAuLi52YWx1ZS5lbGVtZW50LFxuICAgICAgICAgICAgICAgIGFsaWduOiB2YWx1ZS5lbGVtZW50LmFsaWduIHx8IEFsaWdubWVudC5sZWZ0LFxuICAgICAgICAgICAgICAgIHJlU2l6ZWQ6IHZhbHVlLmVsZW1lbnQucmVTaXplZCB8fCBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuc2V0QmxvY2tDYXJkTGF5b3V0QXR0cigpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnNldEltYWdlRmlsZUl0ZW0oKTtcblxuICAgICAgICBpZiAodGhpcy5maWxlSXRlbT8uZmlsZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRJbWFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0SW1hZ2VQbHVnaW5PcHRpb25zKCk7XG4gICAgICAgIHRoaXMuc2V0RGlzYWJsZVByZXZpZXcoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlTW91c2VVcCgpO1xuICAgICAgICB0aGlzLnN1YnNjcmliZUltYWdlVXBsb2FkaW5nU3RhdGUoKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHN1cGVyLm9uQ29udGV4dENoYW5nZSgpO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCAmJiAhaXNNb2JpbGVNb2RlKHRoaXMuZWRpdG9yKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTaG91bGRPcGVuKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5MYXlvdXRUb29sYmFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Nob3VsZENsb3NlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTGF5b3V0VG9vbGJhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudXBsb2FkaW5nU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UucmVtb3ZlVXBsb2FkRmlsZSh0aGlzLmZpbGVJdGVtKTtcbiAgICAgICAgaWYgKHRoaXMudXBsb2FkaW5nKSB7XG4gICAgICAgICAgICB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnVwbG9hZGluZ1N0YXR1cyQubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEltYWdlUGx1Z2luT3B0aW9ucygpIHtcbiAgICAgICAgdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPEltYWdlUGx1Z2luT3B0aW9ucz4odGhpcy5lZGl0b3IsIFBsdWdpbktleXMuaW1hZ2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGlzYWJsZVByZXZpZXcoKSB7XG4gICAgICAgIGNvbnN0IHsgZGlzYWJsZVByZXZpZXcgfSA9IHRoaXMuaW1hZ2VQbHVnaW5PcHRpb25zO1xuICAgICAgICBpZiAoZGlzYWJsZVByZXZpZXcgJiYgdHlwZW9mIGRpc2FibGVQcmV2aWV3ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQcmV2aWV3ID0gZGlzYWJsZVByZXZpZXcodGhpcy5lZGl0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlUHJldmlldyA9IGRpc2FibGVQcmV2aWV3IGFzIGJvb2xlYW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEltYWdlRmlsZUl0ZW0oKSB7XG4gICAgICAgIHRoaXMuZmlsZUl0ZW0gPSB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnVwbG9hZGluZ0ZpbGVzLmZpbmQoaXRlbSA9PiBpdGVtLnVybCA9PT0gdGhpcy5lbGVtZW50LnVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVNb3VzZVVwKCkge1xuICAgICAgICB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLm9uTW91c2VVcCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKGUgPT4gdGhpcy5lbmREcmFnKGUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZUltYWdlVXBsb2FkaW5nU3RhdGUoKSB7XG4gICAgICAgIHRoaXMudXBsb2FkaW5nU3Vic2NyaXB0aW9uID0gdGhpcy5pbWFnZVVwbG9hZGVyU2VydmljZVxuICAgICAgICAgICAgLmdldFVwbG9hZGluZ0l0ZW1zJCgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRpbmdJdGVtID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVJdGVtPy5maWxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlVXBsb2FkaW5nSXRlbS5maW5kKGl0ZW0gPT4gaXRlbS5maWxlID09PSB0aGlzLmZpbGVJdGVtPy5maWxlIHx8IGl0ZW0/LnVybCA9PT0gdGhpcy5maWxlSXRlbT8uZmlsZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHVwbG9hZGluZ0l0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdXBsb2FkaW5nSXRlbSB8fCAhdXBsb2FkaW5nSXRlbS5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnBlcmNlbnRhZ2UgPSB1cGxvYWRpbmdJdGVtLnJlc3VsdC51cGxvYWRGaWxlLnByb2dyZXNzLnBlcmNlbnRhZ2U7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGF0dXMgfSA9IHVwbG9hZGluZ0l0ZW0ucmVzdWx0O1xuICAgICAgICAgICAgICAgIC8vIOaIkOWKn+WSjOWksei0pemDveimgeS4iuS8oOe7k+adn1xuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT09IFRoeVVwbG9hZFN0YXR1cy5kb25lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UucmVtb3ZlVXBsb2FkRmlsZSh0aGlzLmZpbGVJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnVwbG9hZGluZ1N0YXR1cyQubmV4dChmYWxzZSksIDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEltYWdlTm9kZXMoaW1hZ2VJbmZvOiBJbWFnZUVudHJ5KSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBkYXRhID0geyB0eXBlOiBFbGVtZW50S2luZHMuaW1hZ2UsIHVybDogbnVsbCwgLi4uaW1hZ2VJbmZvIH07XG4gICAgICAgIEhpc3RvcnlFZGl0b3Iud2l0aG91dFNhdmluZyh0aGlzLmVkaXRvciwgKCkgPT4gVHJhbnNmb3Jtcy5zZXROb2Rlcyh0aGlzLmVkaXRvciwgZGF0YSwgeyBhdDogcGF0aCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgdXBsb2FkSW1hZ2UoKSB7XG4gICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5maWxlSXRlbS5maWxlO1xuICAgICAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeSA9IHtcbiAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5pbWFnZUVudHJ5LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXIsXG4gICAgICAgICAgICAgICAgdGh1bWJVcmw6IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdTdGF0dXMkLm5leHQodHJ1ZSk7XG5cbiAgICAgICAgY29uc3QgW2ZpbGVFbnRpdHldID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5pbWFnZVVwbG9hZGVyU2VydmljZS51cGxvYWRGaWxlSGFuZGxlKGZpbGUpKTtcbiAgICAgICAgY29uc3QgeyBuYW1lLCBzaXplLCB0aHVtYlVybCwgb3JpZ2luVXJsIH0gPSBmaWxlRW50aXR5O1xuICAgICAgICBjb25zdCBpbWFnZUluZm86IEltYWdlRW50cnkgPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdGh1bWJVcmwsXG4gICAgICAgICAgICBvcmlnaW5VcmwsXG4gICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgYWxpZ246IHRoaXMuaW1hZ2VFbnRyeS5hbGlnbiB8fCBBbGlnbm1lbnQuY2VudGVyXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2V0SW1hZ2VOb2RlcyhpbWFnZUluZm8pO1xuICAgIH1cblxuICAgIHN0YXJ0RHJhZyhldmVudDogTW91c2VFdmVudCwgYXhpczogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRJbWFnZUVycm9yIHx8ICF0aGlzLmltZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuZHJhZ2FibGUgPSB0cnVlO1xuICAgICAgICBjb25zdCBpbWdFbGVtZW50ID0gdGhpcy5pbWcubmF0aXZlRWxlbWVudCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgYXhpcyxcbiAgICAgICAgICAgIHByaW50ZXJQb3NpdGlvblg6IGV2ZW50LnBhZ2VYLFxuICAgICAgICAgICAgcHJpbnRlclBvc2l0aW9uWTogZXZlbnQucGFnZVksXG4gICAgICAgICAgICBpbnRlcm5hbFdpZHRoOiBpbWdFbGVtZW50LndpZHRoIHx8IHRoaXMuaW1hZ2VFbnRyeS53aWR0aCxcbiAgICAgICAgICAgIGludGVybmFsSGVpZ2h0OiBpbWdFbGVtZW50LmhlaWdodCB8fCB0aGlzLmltYWdlRW50cnkuaGVpZ2h0LFxuICAgICAgICAgICAgbWF4V2lkdGg6IHRoaXMudGhlQ29udGV4dFNlcnZpY2UuZ2V0Rmlyc3RFbGVtZW50Q2hpbGQoKS5vZmZzZXRXaWR0aFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm1vdXNlTW92ZVN1YnNjcmlwdGlvbiA9IHRoaXMudGhlQ29udGV4dFNlcnZpY2Uub25Nb3VzZU1vdmUkLnN1YnNjcmliZShlID0+IHRoaXMubW91c2VNb3ZlSGFuZGxlKGUsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBtb3VzZU1vdmVIYW5kbGUoXG4gICAgICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBheGlzOiBzdHJpbmc7XG4gICAgICAgICAgICBwcmludGVyUG9zaXRpb25YOiBudW1iZXI7XG4gICAgICAgICAgICBwcmludGVyUG9zaXRpb25ZOiBudW1iZXI7XG4gICAgICAgICAgICBpbnRlcm5hbFdpZHRoOiBudW1iZXI7XG4gICAgICAgICAgICBpbnRlcm5hbEhlaWdodDogbnVtYmVyO1xuICAgICAgICAgICAgbWF4V2lkdGg6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5kcmFnYWJsZSkge1xuICAgICAgICAgICAgY29uc3QgeyBheGlzLCBwcmludGVyUG9zaXRpb25YLCBwcmludGVyUG9zaXRpb25ZLCBpbnRlcm5hbFdpZHRoLCBpbnRlcm5hbEhlaWdodCwgbWF4V2lkdGggfSA9IG9wdGlvbnM7XG4gICAgICAgICAgICBjb25zdCBpc1JldmVyc2FsID0gYXhpcy5pbmNsdWRlcygnLScpO1xuXG4gICAgICAgICAgICBsZXQgb2Zmc2V0WCA9IGV2ZW50LnBhZ2VYIC0gcHJpbnRlclBvc2l0aW9uWDtcbiAgICAgICAgICAgIGxldCBvZmZzZXRZID0gZXZlbnQucGFnZVkgLSBwcmludGVyUG9zaXRpb25ZO1xuICAgICAgICAgICAgbGV0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGhpcy5lbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoaXNSZXZlcnNhbCkge1xuICAgICAgICAgICAgICAgIG9mZnNldFggPSAtb2Zmc2V0WDtcbiAgICAgICAgICAgICAgICBvZmZzZXRZID0gLW9mZnNldFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5lbGVtZW50LmFsaWduID09PSAnY2VudGVyJykge1xuICAgICAgICAgICAgICAgIG9mZnNldFggPSBvZmZzZXRYICogMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGF4aXMuaW5jbHVkZXMoJ3gnKSkge1xuICAgICAgICAgICAgICAgIHdpZHRoID0gb2Zmc2V0WCArIGludGVybmFsV2lkdGg7XG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoID49IG1heFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gbWF4V2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgYGxheW91dGAgd2hlbiB0aGUgaW1hZ2UgaXMgYWRqdXN0ZWQgdG8gdGhlIG1heGltdW0gdmFsdWUgdW5kZXIgcmljaCBtZWRpYVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbWFnZUVudHJ5Py5sYXlvdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlRWRpdG9yLnNldEltYWdlTm9kZSh0aGlzLmVkaXRvciwgeyBsYXlvdXQ6IHVuZGVmaW5lZCB9LCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAxMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChheGlzLmluY2x1ZGVzKCdsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF0aW8gPSBpbnRlcm5hbFdpZHRoIC8gd2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGludGVybmFsSGVpZ2h0IC8gcmF0aW87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChheGlzLmluY2x1ZGVzKCd5JykpIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQgPSBvZmZzZXRZICsgaW50ZXJuYWxIZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKGhlaWdodCA+PSAxMDAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IDEwMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPD0gMTAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IDEwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGF4aXMuaW5jbHVkZXMoJ2wnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYXRpbyA9IGludGVybmFsSGVpZ2h0IC8gaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGludGVybmFsV2lkdGggLyByYXRpbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5pbWFnZUVudHJ5LnJlU2l6ZWQgJiYgdGhpcy5pbWFnZUVudHJ5LndpZHRoICE9PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS5yZVNpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW1nLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgICAgICAgICB0aGlzLmltYWdlRW50cnkud2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbmREcmFnKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRyYWdhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1vdXNlTW92ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCA9PT0gdGhpcy50aGVDb250ZXh0U2VydmljZS5nZXRPcHRpb25zKCkud2lkdGggJiZcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlRW50cnkud2lkdGggPD0gdGhpcy5uYXR1cmFsV2lkdGggJiZcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQud2lkdGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LmhlaWdodCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogRWxlbWVudEtpbmRzLmltYWdlLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmltYWdlRW50cnlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHsgYXQ6IHRoaXMuc2VsZWN0aW9uIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYW5jZWxVcGxvYWQoKSB7XG4gICAgICAgIFRyYW5zZm9ybXMucmVtb3ZlTm9kZXModGhpcy5lZGl0b3IsIHsgYXQ6IHRoaXMuc2VsZWN0aW9uIH0pO1xuICAgIH1cblxuICAgIGlzU2hvdWxkT3BlbigpIHtcbiAgICAgICAgY29uc3QgeyByaWNoTWVkaWEgfSA9IHRoaXMuZWRpdG9yPy5vcHRpb25zO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXM/LnJlYWRvbmx5ICYmXG4gICAgICAgICAgICByaWNoTWVkaWEgJiZcbiAgICAgICAgICAgIHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJlxuICAgICAgICAgICAgVGhlUXVlcmllcy5pc0dsb2JhbENvbGxhcHNlZCh0aGlzLmVkaXRvcikgJiZcbiAgICAgICAgICAgICF0aGlzLnVwbG9hZGluZyAmJlxuICAgICAgICAgICAgIXRoaXMuaXNPcGVuXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNTaG91bGRDbG9zZSgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuICYmXG4gICAgICAgICAgICAodGhpcz8ucmVhZG9ubHkgfHwgIXRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSB8fCAhVGhlUXVlcmllcy5pc0dsb2JhbENvbGxhcHNlZCh0aGlzLmVkaXRvcikgfHwgdGhpcy51cGxvYWRpbmcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb3BlbkxheW91dFRvb2xiYXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3Blbih0aGlzLmxheW91dFRvb2xiYXIsIHtcbiAgICAgICAgICAgIG9yaWdpbjogdGhpcy5pbWFnZUNvbnRlbnQsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiAndGhlLXBsdWdpbi10b29sYmFyLXBvcG92ZXInLFxuICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgYmFja2Ryb3BDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIG1pbldpZHRoOiAwLFxuICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sYXlvdXRUb29sYmFyUmVmPy5nZXRPdmVybGF5UmVmKCkudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWY/LmdldE92ZXJsYXlSZWYoKS51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICB9LCAxNTApO1xuICAgIH1cblxuICAgIGNsb3NlTGF5b3V0VG9vbGJhcigpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRUb29sYmFyUmVmPy5jbG9zZSgpO1xuICAgIH1cblxuICAgIGxheW91dEFjdGl2ZShrZXk6IEFsaWdubWVudCB8IExheW91dFR5cGVzKSB7XG4gICAgICAgIGNvbnN0IHsgbGF5b3V0LCBhbGlnbiB9ID0gdGhpcy5pbWFnZUVudHJ5O1xuICAgICAgICByZXR1cm4ga2V5ICYmICgoa2V5ID09PSBhbGlnbiAmJiAhbGF5b3V0KSB8fCBrZXkgPT09IGxheW91dCk7XG4gICAgfVxuXG4gICAgc2V0SW1hZ2VOb2RlKGU6IE1vdXNlRXZlbnQsIHByb3BzOiBQYXJ0aWFsPEltYWdlRWxlbWVudD4pIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBJbWFnZUVkaXRvci5zZXRJbWFnZU5vZGUodGhpcy5lZGl0b3IsIHByb3BzLCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIHNldEJsb2NrQ2FyZExheW91dEF0dHIoKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJy5zbGF0ZS1ibG9jay1jYXJkJyk7XG4gICAgICAgICAgICBjb25zdCB7IGxheW91dCB9ID0gdGhpcy5lbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoYmxvY2tDYXJkICYmIGxheW91dCkge1xuICAgICAgICAgICAgICAgIGJsb2NrQ2FyZC5zZXRBdHRyaWJ1dGUoJ2xheW91dCcsIGxheW91dCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJsb2NrQ2FyZCAmJiAhbGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgYmxvY2tDYXJkLnJlbW92ZUF0dHJpYnV0ZSgnbGF5b3V0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWY/LmdldE92ZXJsYXlSZWYoKS51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBJbWFnZUVkaXRvci5yZW1vdmVJbWFnZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkge1xuICAgICAgICBjb25zdCBib3R0b21Qb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgIG9mZnNldFk6IDRcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuaW1hZ2VDb250ZW50KVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aEdyb3dBZnRlck9wZW4oZmFsc2UpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbYm90dG9tUG9zaXRpb25dKTtcbiAgICB9XG5cbiAgICBpbWFnZUxvYWRlZChldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaW1nID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMubmF0dXJhbFdpZHRoID0gaW1nLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgdGhpcy5uYXR1cmFsSGVpZ2h0ID0gaW1nLm5hdHVyYWxIZWlnaHQ7XG4gICAgfVxuXG4gICAgaW1hZ2VFcnJvcihldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaW1nID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGVycm9ySW1hZ2VVcmwgPSB0aGlzLmltYWdlUGx1Z2luT3B0aW9ucz8uZXJyb3JJbWFnZVVybDtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRJbWFnZUVycm9yICYmIGVycm9ySW1hZ2VVcmwpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHR5cGVvZiBlcnJvckltYWdlVXJsID09PSAnZnVuY3Rpb24nID8gZXJyb3JJbWFnZVVybCh0aGlzLmVkaXRvcikgOiBlcnJvckltYWdlVXJsO1xuICAgICAgICAgICAgdGhpcy5sb2FkSW1hZ2VFcnJvciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VDb250ZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndGhlLWltYWdlLWVycm9yJyk7XG4gICAgICAgICAgICBpbWcuc3JjID0gdXJsO1xuICAgICAgICB9XG4gICAgICAgIGltZy5vbmVycm9yID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyDnu4Tku7blupMgZGlhbG9nIOW8ueWHuuaXtu+8jOS8muiusOW9leW9k+WJjeeahOeEpueCueOAgumYu+atoiBtb3VzZWRvd24g6buY6K6k6KGM5Li677yM5L2/5b6X5Zu+54mH5Y6f5pys55qEIGNsaWNrIOS6i+S7tuiDveiOt+WPluWIsOato+ehrueahOeEpueCueOAglxuICAgIHByZXZlbnREZWZhdWx0KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBpbWFnZUNsaWNrKCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuaW1hZ2VHcm91cENvbXBvbmVudC5pbWFnZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gdGhpcy5pbWFnZURpcmVjdGl2ZSk7XG4gICAgICAgIGNvbnN0IGltYWdlR3JvdXAgPSB0aGlzLmltYWdlR3JvdXBDb21wb25lbnQuaW1hZ2VzLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3JpZ2luVXJsOiBpdGVtLnRoeU9yaWdpblNyYyxcbiAgICAgICAgICAgICAgICB0aHVtYlVybDogaXRlbS50aHlQcmV2aWV3U3JjLFxuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGh5SW1hZ2VNZXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogaXRlbS50aHlJbWFnZU1ldGEuc2l6ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkgYXMgSW1hZ2VJbmZvW107XG4gICAgICAgIGNvbnN0IHsgb3JpZ2luVXJsLCB0aHVtYlVybCwgbmFtZSwgc2l6ZSB9ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICBpZiAodGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMucHJldmlldykge1xuICAgICAgICAgICAgdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMucHJldmlldyh7XG4gICAgICAgICAgICAgICAgZWRpdG9yOiB0aGlzLmVkaXRvcixcbiAgICAgICAgICAgICAgICBwcmV2aWV3SW1hZ2VJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5VcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHVtYlVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGltYWdlR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8c2xhdGUtY2hpbGRyZW4gW2NoaWxkcmVuXT1cImNoaWxkcmVuXCIgW2NvbnRleHRdPVwiY2hpbGRyZW5Db250ZXh0XCIgW3ZpZXdDb250ZXh0XT1cInZpZXdDb250ZXh0XCI+PC9zbGF0ZS1jaGlsZHJlbj5cblxuPGRpdiBjbGFzcz1cImltYWdlLWNvbnRhaW5lclwiIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCIgW3N0eWxlLnRleHRBbGlnbl09XCJpbWFnZUVudHJ5LmFsaWduXCI+XG4gIDxkaXYgI2ltYWdlQ29udGVudCAqbmdJZj1cImltYWdlRW50cnkudGh1bWJVcmw7IGVsc2UgaW1hZ2VMb2FkaW5nXCIgY2xhc3M9XCJpbWFnZS1jb250ZW50XCIgW2NsYXNzLmN1cnNvci1wb2ludGVyXT1cIiFzZWxlY3Rpb25cIj5cbiAgICA8aW1nXG4gICAgICAjaW1nXG4gICAgICB0aHlJbWFnZVxuICAgICAgY2xhc3M9XCJtYWluLWltYWdlXCJcbiAgICAgIFtjbGFzcy5pbWFnZS1jb2xsYXBzZWRdPVwic2VsZWN0aW9uICYmICF1cGxvYWRpbmdcIlxuICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgucHgnOiBpbWFnZUJpbmRpbmdXaWR0aCB9XCJcbiAgICAgIFthbHRdPVwiaW1hZ2VFbnRyeS5uYW1lXCJcbiAgICAgIFt0aHlTcmNdPVwiaW1hZ2VFbnRyeS50aHVtYlVybFwiXG4gICAgICBbdGh5UHJldmlld1NyY109XCJpbWFnZUVudHJ5LnRodW1iVXJsXCJcbiAgICAgIFt0aHlPcmlnaW5TcmNdPVwiaW1hZ2VFbnRyeS5vcmlnaW5VcmxcIlxuICAgICAgW3RoeURpc2FibGVQcmV2aWV3XT1cImRpc2FibGVQcmV2aWV3XCJcbiAgICAgIFt0aHlJbWFnZU1ldGFdPVwieyBuYW1lOiBpbWFnZUVudHJ5Lm5hbWUsIHNpemU6IGltYWdlRW50cnkuc2l6ZSB9XCJcbiAgICAgIChsb2FkKT1cImltYWdlTG9hZGVkKCRldmVudClcIlxuICAgICAgKG1vdXNlZG93bik9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCJcbiAgICAgIChlcnJvcik9XCJpbWFnZUVycm9yKCRldmVudClcIlxuICAgICAgKGNsaWNrKT1cImltYWdlQ2xpY2soJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNDb2xsYXBzZWRBbmROb25SZWFkb25seVwiIGNsYXNzPVwiaW1hZ2UtcHJvZmlsZVwiIFtjbGFzcy5vdXRsaW5lXT1cInNlbGVjdGlvblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkSW1hZ2VFcnJvclwiPlxuICAgICAgICA8c3BhbiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZygkZXZlbnQsICcteGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciBsZWZ0IHRvcFwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKG1vdXNlZG93bik9XCJzdGFydERyYWcoJGV2ZW50LCAneGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciByaWdodCB0b3BcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIChtb3VzZWRvd24pPVwic3RhcnREcmFnKCRldmVudCwgJ3hsJylcIiBjbGFzcz1cImltYWdlLXBvaW50ZXIgcmlnaHQgYm90dG9tXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZygkZXZlbnQsICcteGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciBsZWZ0IGJvdHRvbVwiPjwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpbWFnZVVwbG9hZGluZ1wiPjwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiAqbmdJZj1cIiF1cGxvYWRpbmdcIiBjbGFzcz1cImxheWVyXCIgW2NsYXNzLnJlYWRvbmx5XT1cInJlYWRvbmx5XCI+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjaW1hZ2VMb2FkaW5nPlxuICA8ZGl2ICpuZ0lmPVwiIWltYWdlRW50cnkudGh1bWJVcmxcIiBjbGFzcz1cImltYWdlLWxvYWRpbmcgY3Vyc29yLXBvaW50ZXJcIiBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiPlxuICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImltYWdlXCI+PC90aHktaWNvbj5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImltYWdlVXBsb2FkaW5nXCI+PC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGF5b3V0VG9vbGJhcj5cbiAgPHRoeS1hY3Rpb25zIHRoeVNpemU9XCJ4eHNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxheW91dE9wdGlvbnNcIj5cbiAgICAgIDxhXG4gICAgICAgICpuZ0lmPVwiaXRlbS5rZXkgIT09ICdzcGxpdCdcIlxuICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgdGh5QWN0aW9uXG4gICAgICAgIFt0aHlUeXBlXT1cIml0ZW0ua2V5ID09PSAncmVtb3ZlJyA/ICdkYW5nZXInIDogJ3ByaW1hcnknXCJcbiAgICAgICAgW3RoeUFjdGlvbkljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgW3RoeUFjdGlvbkFjdGl2ZV09XCJsYXlvdXRBY3RpdmUoaXRlbS5rZXkpXCJcbiAgICAgICAgW3RoeVRvb2x0aXBdPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwiaXRlbT8uaGFuZGxlKCRldmVudCwgaXRlbS5rZXkpXCJcbiAgICAgID48L2E+XG4gICAgICA8dGh5LWRpdmlkZXIgKm5nSWY9XCJpdGVtLmtleSA9PT0gJ3NwbGl0J1wiIGNsYXNzPVwibXItMiBtbC0xIGFsaWduLXNlbGYtY2VudGVyXCIgW3RoeVZlcnRpY2FsXT1cInRydWVcIiB0aHlDb2xvcj1cImxpZ2h0XCI+PC90aHktZGl2aWRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC90aHktYWN0aW9ucz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW1hZ2VVcGxvYWRpbmc+XG4gIDxkaXYgKm5nSWY9XCJ1cGxvYWRpbmdcIiBjbGFzcz1cInVwbG9hZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRpbmctcGVyY2VudGFnZVwiPlxuICAgICAgPHRoeS1wcm9ncmVzcyB0aHlUeXBlPVwicHJpbWFyeVwiIFt0aHlWYWx1ZV09XCJwZXJjZW50YWdlXCIgdGh5U2l6ZT1cInNtXCI+PC90aHktcHJvZ3Jlc3M+XG4gICAgICA8dGh5LWljb24gKGNsaWNrKT1cImNhbmNlbFVwbG9hZCgkZXZlbnQpXCIgdGh5SWNvbk5hbWU9XCJjbG9zZS1jaXJjbGUtYm9sZC1maWxsXCIgdGh5SWNvbkxlZ2dpbmc9XCJ0cnVlXCI+IDwvdGh5LWljb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
464
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUdILFNBQVMsRUFHVCxNQUFNLEVBSU4sU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUF1QixhQUFhLEVBQXVCLE1BQU0sZUFBZSxD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QUZOLENBQUMsZUFBZSxDQUFDLHFXQWdHakIsaUJBQWlCLHVFQ2xLaEMsZ2tHQXFFQSw0Q0RoQlEsSUFBSSw2RkFDSixLQUFLLG1IQUNMLE9BQU8sMkVBQ1AsZ0JBQWdCLG9KQUNoQixhQUFhLDJHQUNiLE9BQU8sc01BQ1AsaUJBQWlCLDhMQUNqQixTQUFTLGdNQUNULFVBQVUscUpBQ1YsVUFBVSw2RUFDVixtQkFBbUIsOFRBQ25CLFdBQVc7OzJGQUlOLFFBQVE7a0JBcEJwQixTQUFTOytCQUNJLHVCQUF1QixjQUVyQixJQUFJLFdBQ1A7d0JBQ0wsSUFBSTt3QkFDSixLQUFLO3dCQUNMLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLE9BQU87d0JBQ1AsaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixtQkFBbUI7d0JBQ25CLFdBQVc7cUJBQ2QsYUFDVSxDQUFDLGVBQWUsQ0FBQzs7MEJBc0d2QixNQUFNOzJCQUFDLHdCQUF3QjtnTEFkcEMsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWM7Z0JBSXpCLEdBQUc7c0JBREYsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUluQyxhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHZCxjQUFjO3NCQUEzQyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUaHlBY3Rpb24sIFRoeUFjdGlvbnMgfSBmcm9tICduZ3gtdGV0aHlzL2FjdGlvbic7XG5pbXBvcnQgeyBUaHlEaXZpZGVyIH0gZnJvbSAnbmd4LXRldGh5cy9kaXZpZGVyJztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5SW1hZ2VEaXJlY3RpdmUsIFRoeUltYWdlR3JvdXAsIFRoeUltYWdlU2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvaW1hZ2UnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlQcm9ncmVzcyB9IGZyb20gJ25neC10ZXRoeXMvcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgVGh5VG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvdG9vbHRpcCc7XG5pbXBvcnQgeyBUaHlVcGxvYWRTdGF0dXMgfSBmcm9tICduZ3gtdGV0aHlzL3VwbG9hZCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWRpdG9yLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgQmVmb3JlQ29udGV4dENoYW5nZSwgU2xhdGVDaGlsZHJlbiwgU2xhdGVFbGVtZW50Q29udGV4dCB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgSGlzdG9yeUVkaXRvciB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgQWxpZ25tZW50LCBFbGVtZW50S2luZHMsIExheW91dFR5cGVzLCBUb29sYmFyQWN0aW9uVHlwZXMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7XG4gICAgSW1hZ2VFbnRyeSxcbiAgICBJbWFnZUluZm8sXG4gICAgSW1hZ2VQbHVnaW5PcHRpb25zLFxuICAgIExheW91dE9wdGlvbixcbiAgICBQbHVnaW5LZXlzLFxuICAgIFRIRV9VUExPQURfU0VSVklDRV9UT0tFTixcbiAgICBUaGVCYXNlRWxlbWVudCxcbiAgICBUaGVJbWFnZVVwbG9hZGVyU2VydmljZVxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRoZVF1ZXJpZXMgfSBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IGlzTW9iaWxlTW9kZSB9IGZyb20gJy4uLy4uL3V0aWxzL2dldC1tb2RlJztcbmltcG9ydCB7IEltYWdlRWRpdG9yIH0gZnJvbSAnLi9pbWFnZS5lZGl0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1pbWFnZSwgW3RoZUltYWdlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE5nU3R5bGUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIFNsYXRlQ2hpbGRyZW4sXG4gICAgICAgIFRoeUljb24sXG4gICAgICAgIFRoeUltYWdlRGlyZWN0aXZlLFxuICAgICAgICBUaHlBY3Rpb24sXG4gICAgICAgIFRoeURpdmlkZXIsXG4gICAgICAgIFRoeUFjdGlvbnMsXG4gICAgICAgIFRoeVRvb2x0aXBEaXJlY3RpdmUsXG4gICAgICAgIFRoeVByb2dyZXNzXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtUaHlJbWFnZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFRoZUltYWdlXG4gICAgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudDxJbWFnZUVsZW1lbnQsIEVkaXRvcj5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBCZWZvcmVDb250ZXh0Q2hhbmdlPFNsYXRlRWxlbWVudENvbnRleHQ+XG57XG4gICAgbmF0dXJhbFdpZHRoID0gMDtcblxuICAgIG5hdHVyYWxIZWlnaHQgPSAwO1xuXG4gICAgaW1hZ2VFbnRyeTogSW1hZ2VFbnRyeSA9IHt9O1xuXG4gICAgdXBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICBwZXJjZW50YWdlID0gMDtcblxuICAgIGZpbGVJdGVtOiB7IHVybDogc3RyaW5nOyBmaWxlOiBGaWxlIHwgc3RyaW5nIH07XG5cbiAgICBsYXlvdXREZWZhdWx0V2lkdGggPSAzNjg7XG5cbiAgICBkaXNhYmxlUHJldmlldyA9IGZhbHNlO1xuXG4gICAgbG9hZEltYWdlRXJyb3IgPSBmYWxzZTtcblxuICAgIGxheW91dE9wdGlvbnM6IExheW91dE9wdGlvbltdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEFsaWdubWVudC5sZWZ0LFxuICAgICAgICAgICAgaWNvbjogJ2ltYWdlLWxlZnQnLFxuICAgICAgICAgICAgbmFtZTogJ+W3puWvuem9kCcsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IEFsaWdubWVudCkgPT4gdGhpcy5zZXRJbWFnZU5vZGUoZSwgeyBhbGlnbjoga2V5LCBsYXlvdXQ6IHVuZGVmaW5lZCB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEFsaWdubWVudC5jZW50ZXIsXG4gICAgICAgICAgICBpY29uOiAnaW1hZ2UtY2VudGVyJyxcbiAgICAgICAgICAgIG5hbWU6ICflsYXkuK0nLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBBbGlnbm1lbnQpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgYWxpZ246IGtleSwgbGF5b3V0OiB1bmRlZmluZWQgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBBbGlnbm1lbnQucmlnaHQsXG4gICAgICAgICAgICBpY29uOiAnaW1hZ2UtcmlnaHQnLFxuICAgICAgICAgICAgbmFtZTogJ+WPs+Wvuem9kCcsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IEFsaWdubWVudCkgPT4gdGhpcy5zZXRJbWFnZU5vZGUoZSwgeyBhbGlnbjoga2V5LCBsYXlvdXQ6IHVuZGVmaW5lZCB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IExheW91dFR5cGVzLndyYXBMZWZ0LFxuICAgICAgICAgICAgaWNvbjogJ3dyYXAtbGVmdCcsXG4gICAgICAgICAgICBuYW1lOiAn5Zu+54mH5bGF5bemJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQsIGtleTogTGF5b3V0VHlwZXMpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgbGF5b3V0OiBrZXkgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBMYXlvdXRUeXBlcy53cmFwUmlnaHQsXG4gICAgICAgICAgICBpY29uOiAnd3JhcC1yaWdodCcsXG4gICAgICAgICAgICBuYW1lOiAn5Zu+54mH5bGF5Y+zJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQsIGtleTogTGF5b3V0VHlwZXMpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgbGF5b3V0OiBrZXkgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAncmVtb3ZlJyxcbiAgICAgICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgICAgICBuYW1lOiAn5Yig6ZmkJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQpID0+IHRoaXMub25EZWxldGUoZSlcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBwcml2YXRlIHVwbG9hZGluZ1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJpdmF0ZSBtb3VzZU1vdmVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgZHJhZ2FibGUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbGF5b3V0VG9vbGJhclJlZjogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgcHJpdmF0ZSBpbWFnZVBsdWdpbk9wdGlvbnM6IEltYWdlUGx1Z2luT3B0aW9ucztcblxuICAgIGdldCBpc09wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dFRvb2xiYXJSZWYgJiYgdGhpcy5sYXlvdXRUb29sYmFyUmVmLmdldE92ZXJsYXlSZWYoKSAmJiB0aGlzLmxheW91dFRvb2xiYXJSZWYuZ2V0T3ZlcmxheVJlZigpLmhhc0F0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgZ2V0IGltYWdlQmluZGluZ1dpZHRoKCkge1xuICAgICAgICBjb25zdCBjdXJyZW50V2lkdGggPSB0aGlzLmltYWdlRW50cnk/LndpZHRoIHx8IHRoaXMubmF0dXJhbFdpZHRoO1xuICAgICAgICByZXR1cm4gdGhpcy5pbWFnZUVudHJ5Py5sYXlvdXQgJiYgY3VycmVudFdpZHRoID4gdGhpcy5sYXlvdXREZWZhdWx0V2lkdGggJiYgIXRoaXMuaW1hZ2VFbnRyeT8ucmVTaXplZFxuICAgICAgICAgICAgPyB0aGlzLmxheW91dERlZmF1bHRXaWR0aFxuICAgICAgICAgICAgOiB0aGlzLmltYWdlRW50cnkud2lkdGg7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VDb250ZW50JylcbiAgICBpbWFnZUNvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdpbWcnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBpbWc6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdsYXlvdXRUb29sYmFyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBsYXlvdXRUb29sYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChUaHlJbWFnZURpcmVjdGl2ZSkgaW1hZ2VEaXJlY3RpdmU6IFRoeUltYWdlRGlyZWN0aXZlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIGltYWdlR3JvdXBDb21wb25lbnQ6IFRoeUltYWdlR3JvdXAsXG4gICAgICAgIEBJbmplY3QoVEhFX1VQTE9BRF9TRVJWSUNFX1RPS0VOKVxuICAgICAgICBwcml2YXRlIGltYWdlVXBsb2FkZXJTZXJ2aWNlOiBUaGVJbWFnZVVwbG9hZGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0aGVDb250ZXh0U2VydmljZTogVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIpO1xuICAgIH1cblxuICAgIGJlZm9yZUNvbnRleHRDaGFuZ2UgPSAodmFsdWU6IFNsYXRlRWxlbWVudENvbnRleHQ8SW1hZ2VFbGVtZW50PikgPT4ge1xuICAgICAgICBpZiAodmFsdWUuZWxlbWVudCAhPT0gdGhpcy5lbGVtZW50ICYmIHZhbHVlLmVsZW1lbnQudGh1bWJVcmwpIHtcbiAgICAgICAgICAgIGxldCB0aHVtYlVybCA9IHZhbHVlLmVsZW1lbnQudGh1bWJVcmw7XG4gICAgICAgICAgICBsZXQgb3JpZ2luVXJsID0gdmFsdWUuZWxlbWVudC5vcmlnaW5Vcmw7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlPy5idWlsZEltYWdlVXJsKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJVcmwgPSB0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlLmJ1aWxkSW1hZ2VVcmwodGh1bWJVcmwpO1xuICAgICAgICAgICAgICAgIG9yaWdpblVybCA9IHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2UuYnVpbGRJbWFnZVVybChvcmlnaW5VcmwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmltYWdlRW50cnkgPSB7XG4gICAgICAgICAgICAgICAgLi4udmFsdWUuZWxlbWVudCxcbiAgICAgICAgICAgICAgICB0aHVtYlVybCxcbiAgICAgICAgICAgICAgICBvcmlnaW5VcmwsXG4gICAgICAgICAgICAgICAgYWxpZ246IHZhbHVlLmVsZW1lbnQuYWxpZ24gfHwgQWxpZ25tZW50LmxlZnQsXG4gICAgICAgICAgICAgICAgcmVTaXplZDogdmFsdWUuZWxlbWVudC5yZVNpemVkIHx8IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5zZXRCbG9ja0NhcmRMYXlvdXRBdHRyKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0SW1hZ2VGaWxlSXRlbSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbGVJdGVtPy5maWxlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEltYWdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRJbWFnZVBsdWdpbk9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5zZXREaXNhYmxlUHJldmlldygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVNb3VzZVVwKCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlSW1hZ2VVcGxvYWRpbmdTdGF0ZSgpO1xuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZSgpIHtcbiAgICAgICAgc3VwZXIub25Db250ZXh0Q2hhbmdlKCk7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkICYmICFpc01vYmlsZU1vZGUodGhpcy5lZGl0b3IpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Nob3VsZE9wZW4oKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbkxheW91dFRvb2xiYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2hvdWxkQ2xvc2UoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VMYXlvdXRUb29sYmFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51cGxvYWRpbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS5yZW1vdmVVcGxvYWRGaWxlKHRoaXMuZmlsZUl0ZW0pO1xuICAgICAgICBpZiAodGhpcy51cGxvYWRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SW1hZ2VQbHVnaW5PcHRpb25zKCkge1xuICAgICAgICB0aGlzLmltYWdlUGx1Z2luT3B0aW9ucyA9IGdldFBsdWdpbk9wdGlvbnM8SW1hZ2VQbHVnaW5PcHRpb25zPih0aGlzLmVkaXRvciwgUGx1Z2luS2V5cy5pbWFnZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREaXNhYmxlUHJldmlldygpIHtcbiAgICAgICAgY29uc3QgeyBkaXNhYmxlUHJldmlldyB9ID0gdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnM7XG4gICAgICAgIGlmIChkaXNhYmxlUHJldmlldyAmJiB0eXBlb2YgZGlzYWJsZVByZXZpZXcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVByZXZpZXcgPSBkaXNhYmxlUHJldmlldyh0aGlzLmVkaXRvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQcmV2aWV3ID0gZGlzYWJsZVByZXZpZXcgYXMgYm9vbGVhbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SW1hZ2VGaWxlSXRlbSgpIHtcbiAgICAgICAgdGhpcy5maWxlSXRlbSA9IHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nRmlsZXMuZmluZChpdGVtID0+IGl0ZW0udXJsID09PSB0aGlzLmVsZW1lbnQudXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZU1vdXNlVXAoKSB7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2Uub25Nb3VzZVVwJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoZSA9PiB0aGlzLmVuZERyYWcoZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlSW1hZ2VVcGxvYWRpbmdTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy51cGxvYWRpbmdTdWJzY3JpcHRpb24gPSB0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VXBsb2FkaW5nSXRlbXMkKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgZmlsZVVwbG9hZGluZ0l0ZW0gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUl0ZW0/LmZpbGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRpbmdJdGVtLmZpbmQoaXRlbSA9PiBpdGVtLmZpbGUgPT09IHRoaXMuZmlsZUl0ZW0/LmZpbGUgfHwgaXRlbT8udXJsID09PSB0aGlzLmZpbGVJdGVtPy5maWxlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodXBsb2FkaW5nSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF1cGxvYWRpbmdJdGVtIHx8ICF1cGxvYWRpbmdJdGVtLnJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudGFnZSA9IHVwbG9hZGluZ0l0ZW0ucmVzdWx0LnVwbG9hZEZpbGUucHJvZ3Jlc3MucGVyY2VudGFnZTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXR1cyB9ID0gdXBsb2FkaW5nSXRlbS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgLy8g5oiQ5Yqf5ZKM5aSx6LSl6YO96KaB5LiK5Lyg57uT5p2fXG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gVGh5VXBsb2FkU3RhdHVzLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS5yZW1vdmVVcGxvYWRGaWxlKHRoaXMuZmlsZUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5uZXh0KGZhbHNlKSwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SW1hZ2VOb2RlcyhpbWFnZUluZm86IEltYWdlRW50cnkpIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7IHR5cGU6IEVsZW1lbnRLaW5kcy5pbWFnZSwgdXJsOiBudWxsLCAuLi5pbWFnZUluZm8gfTtcbiAgICAgICAgSGlzdG9yeUVkaXRvci53aXRob3V0U2F2aW5nKHRoaXMuZWRpdG9yLCAoKSA9PiBUcmFuc2Zvcm1zLnNldE5vZGVzKHRoaXMuZWRpdG9yLCBkYXRhLCB7IGF0OiBwYXRoIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyB1cGxvYWRJbWFnZSgpIHtcbiAgICAgICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmZpbGVJdGVtLmZpbGU7XG4gICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5ID0ge1xuICAgICAgICAgICAgICAgIGFsaWduOiB0aGlzLmltYWdlRW50cnkuYWxpZ24gfHwgQWxpZ25tZW50LmNlbnRlcixcbiAgICAgICAgICAgICAgICB0aHVtYlVybDogVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnVwbG9hZGluZ1N0YXR1cyQubmV4dCh0cnVlKTtcblxuICAgICAgICBjb25zdCBbZmlsZUVudGl0eV0gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlLnVwbG9hZEZpbGVIYW5kbGUoZmlsZSkpO1xuICAgICAgICBjb25zdCB7IG5hbWUsIHNpemUsIHRodW1iVXJsLCBvcmlnaW5VcmwgfSA9IGZpbGVFbnRpdHk7XG4gICAgICAgIGNvbnN0IGltYWdlSW5mbzogSW1hZ2VFbnRyeSA9IHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICB0aHVtYlVybCxcbiAgICAgICAgICAgIG9yaWdpblVybCxcbiAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICBhbGlnbjogdGhpcy5pbWFnZUVudHJ5LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXJcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZXRJbWFnZU5vZGVzKGltYWdlSW5mbyk7XG4gICAgfVxuXG4gICAgc3RhcnREcmFnKGV2ZW50OiBNb3VzZUV2ZW50LCBheGlzOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZEltYWdlRXJyb3IgfHwgIXRoaXMuaW1nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5kcmFnYWJsZSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGltZ0VsZW1lbnQgPSB0aGlzLmltZy5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBheGlzLFxuICAgICAgICAgICAgcHJpbnRlclBvc2l0aW9uWDogZXZlbnQucGFnZVgsXG4gICAgICAgICAgICBwcmludGVyUG9zaXRpb25ZOiBldmVudC5wYWdlWSxcbiAgICAgICAgICAgIGludGVybmFsV2lkdGg6IGltZ0VsZW1lbnQud2lkdGggfHwgdGhpcy5pbWFnZUVudHJ5LndpZHRoLFxuICAgICAgICAgICAgaW50ZXJuYWxIZWlnaHQ6IGltZ0VsZW1lbnQuaGVpZ2h0IHx8IHRoaXMuaW1hZ2VFbnRyeS5oZWlnaHQsXG4gICAgICAgICAgICBtYXhXaWR0aDogdGhpcy50aGVDb250ZXh0U2VydmljZS5nZXRGaXJzdEVsZW1lbnRDaGlsZCgpLm9mZnNldFdpZHRoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubW91c2VNb3ZlU3Vic2NyaXB0aW9uID0gdGhpcy50aGVDb250ZXh0U2VydmljZS5vbk1vdXNlTW92ZSQuc3Vic2NyaWJlKGUgPT4gdGhpcy5tb3VzZU1vdmVIYW5kbGUoZSwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIG1vdXNlTW92ZUhhbmRsZShcbiAgICAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGF4aXM6IHN0cmluZztcbiAgICAgICAgICAgIHByaW50ZXJQb3NpdGlvblg6IG51bWJlcjtcbiAgICAgICAgICAgIHByaW50ZXJQb3NpdGlvblk6IG51bWJlcjtcbiAgICAgICAgICAgIGludGVybmFsV2lkdGg6IG51bWJlcjtcbiAgICAgICAgICAgIGludGVybmFsSGVpZ2h0OiBudW1iZXI7XG4gICAgICAgICAgICBtYXhXaWR0aDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLmRyYWdhYmxlKSB7XG4gICAgICAgICAgICBjb25zdCB7IGF4aXMsIHByaW50ZXJQb3NpdGlvblgsIHByaW50ZXJQb3NpdGlvblksIGludGVybmFsV2lkdGgsIGludGVybmFsSGVpZ2h0LCBtYXhXaWR0aCB9ID0gb3B0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IGlzUmV2ZXJzYWwgPSBheGlzLmluY2x1ZGVzKCctJyk7XG5cbiAgICAgICAgICAgIGxldCBvZmZzZXRYID0gZXZlbnQucGFnZVggLSBwcmludGVyUG9zaXRpb25YO1xuICAgICAgICAgICAgbGV0IG9mZnNldFkgPSBldmVudC5wYWdlWSAtIHByaW50ZXJQb3NpdGlvblk7XG4gICAgICAgICAgICBsZXQgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLmVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChpc1JldmVyc2FsKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WCA9IC1vZmZzZXRYO1xuICAgICAgICAgICAgICAgIG9mZnNldFkgPSAtb2Zmc2V0WTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuYWxpZ24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WCA9IG9mZnNldFggKiAyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYXhpcy5pbmNsdWRlcygneCcpKSB7XG4gICAgICAgICAgICAgICAgd2lkdGggPSBvZmZzZXRYICsgaW50ZXJuYWxXaWR0aDtcbiAgICAgICAgICAgICAgICBpZiAod2lkdGggPj0gbWF4V2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBtYXhXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBjbGVhciBgbGF5b3V0YCB3aGVuIHRoZSBpbWFnZSBpcyBhZGp1c3RlZCB0byB0aGUgbWF4aW11bSB2YWx1ZSB1bmRlciByaWNoIG1lZGlhXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmltYWdlRW50cnk/LmxheW91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VFZGl0b3Iuc2V0SW1hZ2VOb2RlKHRoaXMuZWRpdG9yLCB7IGxheW91dDogdW5kZWZpbmVkIH0sIHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoIDw9IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDEwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGF4aXMuaW5jbHVkZXMoJ2wnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYXRpbyA9IGludGVybmFsV2lkdGggLyB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gaW50ZXJuYWxIZWlnaHQgLyByYXRpbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGF4aXMuaW5jbHVkZXMoJ3knKSkge1xuICAgICAgICAgICAgICAgIGhlaWdodCA9IG9mZnNldFkgKyBpbnRlcm5hbEhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0ID49IDEwMDApIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gMTAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhlaWdodCA8PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gMTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYXhpcy5pbmNsdWRlcygnbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhdGlvID0gaW50ZXJuYWxIZWlnaHQgLyBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gaW50ZXJuYWxXaWR0aCAvIHJhdGlvO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLmltYWdlRW50cnkucmVTaXplZCAmJiB0aGlzLmltYWdlRW50cnkud2lkdGggIT09IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LnJlU2l6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbWcubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCA9IHdpZHRoO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVuZERyYWcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2FibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubW91c2VNb3ZlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LndpZHRoID09PSB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLmdldE9wdGlvbnMoKS53aWR0aCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCA8PSB0aGlzLm5hdHVyYWxXaWR0aCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC53aWR0aFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LndpZHRoID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlRW50cnkuaGVpZ2h0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBFbGVtZW50S2luZHMuaW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaW1hZ2VFbnRyeVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgeyBhdDogdGhpcy5zZWxlY3Rpb24gfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbmNlbFVwbG9hZCgpIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2Rlcyh0aGlzLmVkaXRvciwgeyBhdDogdGhpcy5zZWxlY3Rpb24gfSk7XG4gICAgfVxuXG4gICAgaXNTaG91bGRPcGVuKCkge1xuICAgICAgICBjb25zdCB7IHJpY2hNZWRpYSB9ID0gdGhpcy5lZGl0b3I/Lm9wdGlvbnM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcz8ucmVhZG9ubHkgJiZcbiAgICAgICAgICAgIHJpY2hNZWRpYSAmJlxuICAgICAgICAgICAgdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmXG4gICAgICAgICAgICBUaGVRdWVyaWVzLmlzR2xvYmFsQ29sbGFwc2VkKHRoaXMuZWRpdG9yKSAmJlxuICAgICAgICAgICAgIXRoaXMudXBsb2FkaW5nICYmXG4gICAgICAgICAgICAhdGhpcy5pc09wZW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc1Nob3VsZENsb3NlKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pc09wZW4gJiZcbiAgICAgICAgICAgICh0aGlzPy5yZWFkb25seSB8fCAhdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5IHx8ICFUaGVRdWVyaWVzLmlzR2xvYmFsQ29sbGFwc2VkKHRoaXMuZWRpdG9yKSB8fCB0aGlzLnVwbG9hZGluZylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvcGVuTGF5b3V0VG9vbGJhcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmltZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMubGF5b3V0VG9vbGJhciwge1xuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmltYWdlQ29udGVudCxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICd0aGUtcGx1Z2luLXRvb2xiYXItcG9wb3ZlcicsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWY/LmdldE92ZXJsYXlSZWYoKS51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH0sIDE1MCk7XG4gICAgfVxuXG4gICAgY2xvc2VMYXlvdXRUb29sYmFyKCkge1xuICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWY/LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgbGF5b3V0QWN0aXZlKGtleTogQWxpZ25tZW50IHwgTGF5b3V0VHlwZXMpIHtcbiAgICAgICAgY29uc3QgeyBsYXlvdXQsIGFsaWduIH0gPSB0aGlzLmltYWdlRW50cnk7XG4gICAgICAgIHJldHVybiBrZXkgJiYgKChrZXkgPT09IGFsaWduICYmICFsYXlvdXQpIHx8IGtleSA9PT0gbGF5b3V0KTtcbiAgICB9XG5cbiAgICBzZXRJbWFnZU5vZGUoZTogTW91c2VFdmVudCwgcHJvcHM6IFBhcnRpYWw8SW1hZ2VFbGVtZW50Pikge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIEltYWdlRWRpdG9yLnNldEltYWdlTm9kZSh0aGlzLmVkaXRvciwgcHJvcHMsIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgc2V0QmxvY2tDYXJkTGF5b3V0QXR0cigpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnLnNsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgICAgIGNvbnN0IHsgbGF5b3V0IH0gPSB0aGlzLmVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChibG9ja0NhcmQgJiYgbGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgYmxvY2tDYXJkLnNldEF0dHJpYnV0ZSgnbGF5b3V0JywgbGF5b3V0KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvY2tDYXJkICYmICFsYXlvdXQpIHtcbiAgICAgICAgICAgICAgICBibG9ja0NhcmQucmVtb3ZlQXR0cmlidXRlKCdsYXlvdXQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIEltYWdlRWRpdG9yLnJlbW92ZUltYWdlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIGNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSB7XG4gICAgICAgIGNvbnN0IGJvdHRvbVBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgb2Zmc2V0WTogNFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5pbWFnZUNvbnRlbnQpXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgICAgICAgIC53aXRoR3Jvd0FmdGVyT3BlbihmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtib3R0b21Qb3NpdGlvbl0pO1xuICAgIH1cblxuICAgIGltYWdlTG9hZGVkKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBpbWcgPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgdGhpcy5uYXR1cmFsV2lkdGggPSBpbWcubmF0dXJhbFdpZHRoO1xuICAgICAgICB0aGlzLm5hdHVyYWxIZWlnaHQgPSBpbWcubmF0dXJhbEhlaWdodDtcbiAgICB9XG5cbiAgICBpbWFnZUVycm9yKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBpbWcgPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgY29uc3QgZXJyb3JJbWFnZVVybCA9IHRoaXMuaW1hZ2VQbHVnaW5PcHRpb25zPy5lcnJvckltYWdlVXJsO1xuICAgICAgICBpZiAoIXRoaXMubG9hZEltYWdlRXJyb3IgJiYgZXJyb3JJbWFnZVVybCkge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gdHlwZW9mIGVycm9ySW1hZ2VVcmwgPT09ICdmdW5jdGlvbicgPyBlcnJvckltYWdlVXJsKHRoaXMuZWRpdG9yKSA6IGVycm9ySW1hZ2VVcmw7XG4gICAgICAgICAgICB0aGlzLmxvYWRJbWFnZUVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUNvbnRlbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0aGUtaW1hZ2UtZXJyb3InKTtcbiAgICAgICAgICAgIGltZy5zcmMgPSB1cmw7XG4gICAgICAgIH1cbiAgICAgICAgaW1nLm9uZXJyb3IgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIOe7hOS7tuW6kyBkaWFsb2cg5by55Ye65pe277yM5Lya6K6w5b2V5b2T5YmN55qE54Sm54K544CC6Zi75q2iIG1vdXNlZG93biDpu5jorqTooYzkuLrvvIzkvb/lvpflm77niYfljp/mnKznmoQgY2xpY2sg5LqL5Lu26IO96I635Y+W5Yiw5q2j56Gu55qE54Sm54K544CCXG4gICAgcHJldmVudERlZmF1bHQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGltYWdlQ2xpY2soKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbWFnZUdyb3VwQ29tcG9uZW50LmltYWdlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB0aGlzLmltYWdlRGlyZWN0aXZlKTtcbiAgICAgICAgY29uc3QgaW1hZ2VHcm91cCA9IHRoaXMuaW1hZ2VHcm91cENvbXBvbmVudC5pbWFnZXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5Vcmw6IGl0ZW0udGh5T3JpZ2luU3JjLFxuICAgICAgICAgICAgICAgIHRodW1iVXJsOiBpdGVtLnRoeVByZXZpZXdTcmMsXG4gICAgICAgICAgICAgICAgbmFtZTogaXRlbS50aHlJbWFnZU1ldGEubmFtZSxcbiAgICAgICAgICAgICAgICBzaXplOiBpdGVtLnRoeUltYWdlTWV0YS5zaXplXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSBhcyBJbWFnZUluZm9bXTtcbiAgICAgICAgY29uc3QgeyBvcmlnaW5VcmwsIHRodW1iVXJsLCBuYW1lLCBzaXplIH0gPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgIGlmICh0aGlzLmltYWdlUGx1Z2luT3B0aW9ucy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlUGx1Z2luT3B0aW9ucy5wcmV2aWV3KHtcbiAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgICAgICAgICAgIHByZXZpZXdJbWFnZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VHcm91cCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxzbGF0ZS1jaGlsZHJlbiBbY2hpbGRyZW5dPVwiY2hpbGRyZW5cIiBbY29udGV4dF09XCJjaGlsZHJlbkNvbnRleHRcIiBbdmlld0NvbnRleHRdPVwidmlld0NvbnRleHRcIj48L3NsYXRlLWNoaWxkcmVuPlxuXG48ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyXCIgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIiBbc3R5bGUudGV4dEFsaWduXT1cImltYWdlRW50cnkuYWxpZ25cIj5cbiAgPGRpdiAjaW1hZ2VDb250ZW50ICpuZ0lmPVwiaW1hZ2VFbnRyeS50aHVtYlVybDsgZWxzZSBpbWFnZUxvYWRpbmdcIiBjbGFzcz1cImltYWdlLWNvbnRlbnRcIiBbY2xhc3MuY3Vyc29yLXBvaW50ZXJdPVwiIXNlbGVjdGlvblwiPlxuICAgIDxpbWdcbiAgICAgICNpbWdcbiAgICAgIHRoeUltYWdlXG4gICAgICBjbGFzcz1cIm1haW4taW1hZ2VcIlxuICAgICAgW2NsYXNzLmltYWdlLWNvbGxhcHNlZF09XCJzZWxlY3Rpb24gJiYgIXVwbG9hZGluZ1wiXG4gICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IGltYWdlQmluZGluZ1dpZHRoIH1cIlxuICAgICAgW2FsdF09XCJpbWFnZUVudHJ5Lm5hbWVcIlxuICAgICAgW3RoeVNyY109XCJpbWFnZUVudHJ5LnRodW1iVXJsXCJcbiAgICAgIFt0aHlQcmV2aWV3U3JjXT1cImltYWdlRW50cnkudGh1bWJVcmxcIlxuICAgICAgW3RoeU9yaWdpblNyY109XCJpbWFnZUVudHJ5Lm9yaWdpblVybFwiXG4gICAgICBbdGh5RGlzYWJsZVByZXZpZXddPVwiZGlzYWJsZVByZXZpZXdcIlxuICAgICAgW3RoeUltYWdlTWV0YV09XCJ7IG5hbWU6IGltYWdlRW50cnkubmFtZSwgc2l6ZTogaW1hZ2VFbnRyeS5zaXplIH1cIlxuICAgICAgKGxvYWQpPVwiaW1hZ2VMb2FkZWQoJGV2ZW50KVwiXG4gICAgICAobW91c2Vkb3duKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxuICAgICAgKGVycm9yKT1cImltYWdlRXJyb3IoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwiaW1hZ2VDbGljaygkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxkaXYgKm5nSWY9XCJpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5XCIgY2xhc3M9XCJpbWFnZS1wcm9maWxlXCIgW2NsYXNzLm91dGxpbmVdPVwic2VsZWN0aW9uXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRJbWFnZUVycm9yXCI+XG4gICAgICAgIDxzcGFuIChtb3VzZWRvd24pPVwic3RhcnREcmFnKCRldmVudCwgJy14bCcpXCIgY2xhc3M9XCJpbWFnZS1wb2ludGVyIGxlZnQgdG9wXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZygkZXZlbnQsICd4bCcpXCIgY2xhc3M9XCJpbWFnZS1wb2ludGVyIHJpZ2h0IHRvcFwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKG1vdXNlZG93bik9XCJzdGFydERyYWcoJGV2ZW50LCAneGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciByaWdodCBib3R0b21cIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIChtb3VzZWRvd24pPVwic3RhcnREcmFnKCRldmVudCwgJy14bCcpXCIgY2xhc3M9XCJpbWFnZS1wb2ludGVyIGxlZnQgYm90dG9tXCI+PC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImltYWdlVXBsb2FkaW5nXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2ICpuZ0lmPVwiIXVwbG9hZGluZ1wiIGNsYXNzPVwibGF5ZXJcIiBbY2xhc3MucmVhZG9ubHldPVwicmVhZG9ubHlcIj48L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNpbWFnZUxvYWRpbmc+XG4gIDxkaXYgKm5nSWY9XCIhaW1hZ2VFbnRyeS50aHVtYlVybFwiIGNsYXNzPVwiaW1hZ2UtbG9hZGluZyBjdXJzb3ItcG9pbnRlclwiIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCI+XG4gICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiaW1hZ2VcIj48L3RoeS1pY29uPlxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW1hZ2VVcGxvYWRpbmdcIj48L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsYXlvdXRUb29sYmFyPlxuICA8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInh4c1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGF5b3V0T3B0aW9uc1wiPlxuICAgICAgPGFcbiAgICAgICAgKm5nSWY9XCJpdGVtLmtleSAhPT0gJ3NwbGl0J1wiXG4gICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICB0aHlBY3Rpb25cbiAgICAgICAgW3RoeVR5cGVdPVwiaXRlbS5rZXkgPT09ICdyZW1vdmUnID8gJ2RhbmdlcicgOiAncHJpbWFyeSdcIlxuICAgICAgICBbdGh5QWN0aW9uSWNvbl09XCJpdGVtLmljb25cIlxuICAgICAgICBbdGh5QWN0aW9uQWN0aXZlXT1cImxheW91dEFjdGl2ZShpdGVtLmtleSlcIlxuICAgICAgICBbdGh5VG9vbHRpcF09XCJpdGVtLm5hbWVcIlxuICAgICAgICB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJpdGVtPy5oYW5kbGUoJGV2ZW50LCBpdGVtLmtleSlcIlxuICAgICAgPjwvYT5cbiAgICAgIDx0aHktZGl2aWRlciAqbmdJZj1cIml0ZW0ua2V5ID09PSAnc3BsaXQnXCIgY2xhc3M9XCJtci0yIG1sLTEgYWxpZ24tc2VsZi1jZW50ZXJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiIHRoeUNvbG9yPVwibGlnaHRcIj48L3RoeS1kaXZpZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3RoeS1hY3Rpb25zPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbWFnZVVwbG9hZGluZz5cbiAgPGRpdiAqbmdJZj1cInVwbG9hZGluZ1wiIGNsYXNzPVwidXBsb2FkaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZGluZy1wZXJjZW50YWdlXCI+XG4gICAgICA8dGh5LXByb2dyZXNzIHRoeVR5cGU9XCJwcmltYXJ5XCIgW3RoeVZhbHVlXT1cInBlcmNlbnRhZ2VcIiB0aHlTaXplPVwic21cIj48L3RoeS1wcm9ncmVzcz5cbiAgICAgIDx0aHktaWNvbiAoY2xpY2spPVwiY2FuY2VsVXBsb2FkKCRldmVudClcIiB0aHlJY29uTmFtZT1cImNsb3NlLWNpcmNsZS1ib2xkLWZpbGxcIiB0aHlJY29uTGVnZ2luZz1cInRydWVcIj4gPC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|