tui-image-editor-angular3 14.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +155 -0
- package/esm2020/lib/consts.mjs +170 -0
- package/esm2020/lib/i18n/en.mjs +129 -0
- package/esm2020/lib/i18n/nl.mjs +128 -0
- package/esm2020/lib/i18n/translation.service.mjs +40 -0
- package/esm2020/lib/interfaces/command.mjs +2 -0
- package/esm2020/lib/interfaces/history-item.mjs +343 -0
- package/esm2020/lib/interfaces/image-size.mjs +2 -0
- package/esm2020/lib/interfaces/tools-config.mjs +2 -0
- package/esm2020/lib/menus/buttons/crop/crop.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/delete/delete.component.mjs +40 -0
- package/esm2020/lib/menus/buttons/delete-all/delete-all.component.mjs +27 -0
- package/esm2020/lib/menus/buttons/download/download.component.mjs +40 -0
- package/esm2020/lib/menus/buttons/drag/drag.component.mjs +41 -0
- package/esm2020/lib/menus/buttons/draw/draw.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/filter/filter.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/flip/flip.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/history/history.component.mjs +41 -0
- package/esm2020/lib/menus/buttons/icon/icon.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/load/load.component.mjs +23 -0
- package/esm2020/lib/menus/buttons/mask/mask.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/redo/redo.component.mjs +36 -0
- package/esm2020/lib/menus/buttons/reset/reset.component.mjs +28 -0
- package/esm2020/lib/menus/buttons/rotate/rotate.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/shape/shape.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/text/text.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/undo/undo.component.mjs +36 -0
- package/esm2020/lib/menus/buttons/zoom-in/zoom-in.component.mjs +45 -0
- package/esm2020/lib/menus/buttons/zoom-out/zoom-out.component.mjs +20 -0
- package/esm2020/lib/services/history.service.mjs +86 -0
- package/esm2020/lib/services/tools.config-manager.service.mjs +45 -0
- package/esm2020/lib/submenus/crop/crop.component.mjs +76 -0
- package/esm2020/lib/submenus/draw/draw.component.mjs +149 -0
- package/esm2020/lib/submenus/filter/filter.component.mjs +345 -0
- package/esm2020/lib/submenus/flip/flip.component.mjs +39 -0
- package/esm2020/lib/submenus/icon/icon.component.mjs +119 -0
- package/esm2020/lib/submenus/mask/mask.component.mjs +69 -0
- package/esm2020/lib/submenus/rotate/rotate.component.mjs +57 -0
- package/esm2020/lib/submenus/shape/shape.component.mjs +163 -0
- package/esm2020/lib/submenus/text/text.component.mjs +175 -0
- package/esm2020/lib/svg-definitions/svg-definitions.component.mjs +12 -0
- package/esm2020/lib/tui-image-editor.component.mjs +294 -0
- package/esm2020/lib/tui-image-editor.module.mjs +136 -0
- package/esm2020/lib/utils.mjs +173 -0
- package/esm2020/public-api.mjs +8 -0
- package/esm2020/tui-image-editor-angular2.mjs +5 -0
- package/esm2020/tui-image-editor-angular3.mjs +5 -0
- package/fesm2015/tui-image-editor-angular2.mjs +3166 -0
- package/fesm2015/tui-image-editor-angular2.mjs.map +1 -0
- package/fesm2015/tui-image-editor-angular3.mjs +3166 -0
- package/fesm2015/tui-image-editor-angular3.mjs.map +1 -0
- package/fesm2020/tui-image-editor-angular2.mjs +3126 -0
- package/fesm2020/tui-image-editor-angular2.mjs.map +1 -0
- package/fesm2020/tui-image-editor-angular3.mjs +3126 -0
- package/fesm2020/tui-image-editor-angular3.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/consts.d.ts +144 -0
- package/lib/consts.d.ts.map +1 -0
- package/lib/i18n/en.d.ts +128 -0
- package/lib/i18n/en.d.ts.map +1 -0
- package/lib/i18n/nl.d.ts +127 -0
- package/lib/i18n/nl.d.ts.map +1 -0
- package/lib/i18n/translation.service.d.ts +14 -0
- package/lib/i18n/translation.service.d.ts.map +1 -0
- package/lib/interfaces/command.d.ts +4 -0
- package/lib/interfaces/command.d.ts.map +1 -0
- package/lib/interfaces/history-item.d.ts +26 -0
- package/lib/interfaces/history-item.d.ts.map +1 -0
- package/lib/interfaces/image-size.d.ts +6 -0
- package/lib/interfaces/image-size.d.ts.map +1 -0
- package/lib/interfaces/tools-config.d.ts +14 -0
- package/lib/interfaces/tools-config.d.ts.map +1 -0
- package/lib/menus/buttons/crop/crop.component.d.ts +10 -0
- package/lib/menus/buttons/crop/crop.component.d.ts.map +1 -0
- package/lib/menus/buttons/delete/delete.component.d.ts +13 -0
- package/lib/menus/buttons/delete/delete.component.d.ts.map +1 -0
- package/lib/menus/buttons/delete-all/delete-all.component.d.ts +11 -0
- package/lib/menus/buttons/delete-all/delete-all.component.d.ts.map +1 -0
- package/lib/menus/buttons/download/download.component.d.ts +9 -0
- package/lib/menus/buttons/download/download.component.d.ts.map +1 -0
- package/lib/menus/buttons/drag/drag.component.d.ts +11 -0
- package/lib/menus/buttons/drag/drag.component.d.ts.map +1 -0
- package/lib/menus/buttons/draw/draw.component.d.ts +10 -0
- package/lib/menus/buttons/draw/draw.component.d.ts.map +1 -0
- package/lib/menus/buttons/filter/filter.component.d.ts +10 -0
- package/lib/menus/buttons/filter/filter.component.d.ts.map +1 -0
- package/lib/menus/buttons/flip/flip.component.d.ts +10 -0
- package/lib/menus/buttons/flip/flip.component.d.ts.map +1 -0
- package/lib/menus/buttons/history/history.component.d.ts +13 -0
- package/lib/menus/buttons/history/history.component.d.ts.map +1 -0
- package/lib/menus/buttons/icon/icon.component.d.ts +10 -0
- package/lib/menus/buttons/icon/icon.component.d.ts.map +1 -0
- package/lib/menus/buttons/load/load.component.d.ts +9 -0
- package/lib/menus/buttons/load/load.component.d.ts.map +1 -0
- package/lib/menus/buttons/mask/mask.component.d.ts +10 -0
- package/lib/menus/buttons/mask/mask.component.d.ts.map +1 -0
- package/lib/menus/buttons/redo/redo.component.d.ts +12 -0
- package/lib/menus/buttons/redo/redo.component.d.ts.map +1 -0
- package/lib/menus/buttons/reset/reset.component.d.ts +12 -0
- package/lib/menus/buttons/reset/reset.component.d.ts.map +1 -0
- package/lib/menus/buttons/rotate/rotate.component.d.ts +10 -0
- package/lib/menus/buttons/rotate/rotate.component.d.ts.map +1 -0
- package/lib/menus/buttons/shape/shape.component.d.ts +10 -0
- package/lib/menus/buttons/shape/shape.component.d.ts.map +1 -0
- package/lib/menus/buttons/text/text.component.d.ts +10 -0
- package/lib/menus/buttons/text/text.component.d.ts.map +1 -0
- package/lib/menus/buttons/undo/undo.component.d.ts +12 -0
- package/lib/menus/buttons/undo/undo.component.d.ts.map +1 -0
- package/lib/menus/buttons/zoom-in/zoom-in.component.d.ts +12 -0
- package/lib/menus/buttons/zoom-in/zoom-in.component.d.ts.map +1 -0
- package/lib/menus/buttons/zoom-out/zoom-out.component.d.ts +9 -0
- package/lib/menus/buttons/zoom-out/zoom-out.component.d.ts.map +1 -0
- package/lib/services/history.service.d.ts +45 -0
- package/lib/services/history.service.d.ts.map +1 -0
- package/lib/services/tools.config-manager.service.d.ts +12 -0
- package/lib/services/tools.config-manager.service.d.ts.map +1 -0
- package/lib/submenus/crop/crop.component.d.ts +23 -0
- package/lib/submenus/crop/crop.component.d.ts.map +1 -0
- package/lib/submenus/draw/draw.component.d.ts +32 -0
- package/lib/submenus/draw/draw.component.d.ts.map +1 -0
- package/lib/submenus/filter/filter.component.d.ts +70 -0
- package/lib/submenus/filter/filter.component.d.ts.map +1 -0
- package/lib/submenus/flip/flip.component.d.ts +10 -0
- package/lib/submenus/flip/flip.component.d.ts.map +1 -0
- package/lib/submenus/icon/icon.component.d.ts +24 -0
- package/lib/submenus/icon/icon.component.d.ts.map +1 -0
- package/lib/submenus/mask/mask.component.d.ts +16 -0
- package/lib/submenus/mask/mask.component.d.ts.map +1 -0
- package/lib/submenus/rotate/rotate.component.d.ts +12 -0
- package/lib/submenus/rotate/rotate.component.d.ts.map +1 -0
- package/lib/submenus/shape/shape.component.d.ts +31 -0
- package/lib/submenus/shape/shape.component.d.ts.map +1 -0
- package/lib/submenus/text/text.component.d.ts +31 -0
- package/lib/submenus/text/text.component.d.ts.map +1 -0
- package/lib/svg-definitions/svg-definitions.component.d.ts +6 -0
- package/lib/svg-definitions/svg-definitions.component.d.ts.map +1 -0
- package/lib/tui-image-editor.component.d.ts +71 -0
- package/lib/tui-image-editor.component.d.ts.map +1 -0
- package/lib/tui-image-editor.module.d.ts +48 -0
- package/lib/tui-image-editor.module.d.ts.map +1 -0
- package/lib/utils.d.ts +45 -0
- package/lib/utils.d.ts.map +1 -0
- package/package.json +43 -0
- package/public-api.d.ts +4 -0
- package/public-api.d.ts.map +1 -0
- package/src/checkboxes.scss +95 -0
- package/src/theme.scss +936 -0
- package/tui-image-editor-angular2.d.ts.map +1 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { defaultIconPath, eventNames, historyNames, objectTypes, } from './consts';
|
|
3
|
+
import { HistoryItemType } from './interfaces/history-item';
|
|
4
|
+
import { HistoryService } from './services/history.service';
|
|
5
|
+
import heic2any from "heic2any";
|
|
6
|
+
import { clearSelection, isFileApiSupported, isSilentCommand, } from './utils';
|
|
7
|
+
// const ImageEditor = require('tui-image-editor');
|
|
8
|
+
import ImageEditor from 'tui-image-editor';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "./services/history.service";
|
|
11
|
+
import * as i2 from "@angular/common";
|
|
12
|
+
import * as i3 from "./menus/buttons/load/load.component";
|
|
13
|
+
import * as i4 from "./menus/buttons/history/history.component";
|
|
14
|
+
import * as i5 from "./menus/buttons/download/download.component";
|
|
15
|
+
import * as i6 from "./menus/buttons/zoom-in/zoom-in.component";
|
|
16
|
+
import * as i7 from "./menus/buttons/zoom-out/zoom-out.component";
|
|
17
|
+
import * as i8 from "./menus/buttons/drag/drag.component";
|
|
18
|
+
import * as i9 from "./menus/buttons/undo/undo.component";
|
|
19
|
+
import * as i10 from "./menus/buttons/redo/redo.component";
|
|
20
|
+
import * as i11 from "./menus/buttons/reset/reset.component";
|
|
21
|
+
import * as i12 from "./menus/buttons/delete/delete.component";
|
|
22
|
+
import * as i13 from "./menus/buttons/delete-all/delete-all.component";
|
|
23
|
+
import * as i14 from "./menus/buttons/crop/crop.component";
|
|
24
|
+
import * as i15 from "./submenus/crop/crop.component";
|
|
25
|
+
import * as i16 from "./menus/buttons/flip/flip.component";
|
|
26
|
+
import * as i17 from "./submenus/flip/flip.component";
|
|
27
|
+
import * as i18 from "./menus/buttons/rotate/rotate.component";
|
|
28
|
+
import * as i19 from "./submenus/rotate/rotate.component";
|
|
29
|
+
import * as i20 from "./menus/buttons/draw/draw.component";
|
|
30
|
+
import * as i21 from "./submenus/draw/draw.component";
|
|
31
|
+
import * as i22 from "./menus/buttons/shape/shape.component";
|
|
32
|
+
import * as i23 from "./submenus/shape/shape.component";
|
|
33
|
+
import * as i24 from "./menus/buttons/icon/icon.component";
|
|
34
|
+
import * as i25 from "./submenus/icon/icon.component";
|
|
35
|
+
import * as i26 from "./menus/buttons/text/text.component";
|
|
36
|
+
import * as i27 from "./submenus/text/text.component";
|
|
37
|
+
import * as i28 from "./menus/buttons/mask/mask.component";
|
|
38
|
+
import * as i29 from "./submenus/mask/mask.component";
|
|
39
|
+
import * as i30 from "./menus/buttons/filter/filter.component";
|
|
40
|
+
import * as i31 from "./submenus/filter/filter.component";
|
|
41
|
+
export class TuiImageEditorComponent {
|
|
42
|
+
constructor(historyService) {
|
|
43
|
+
this.historyService = historyService;
|
|
44
|
+
this.onInitialization = new EventEmitter();
|
|
45
|
+
this.options = {
|
|
46
|
+
usageStatistics: false,
|
|
47
|
+
selectionStyle: {
|
|
48
|
+
cornerStyle: 'circle',
|
|
49
|
+
cornerSize: 32,
|
|
50
|
+
cornerColor: '#fff',
|
|
51
|
+
cornerStrokeColor: '#fff',
|
|
52
|
+
transparentCorners: false,
|
|
53
|
+
lineWidth: 4,
|
|
54
|
+
borderColor: '#fff',
|
|
55
|
+
rotatingPointOffset: 500,
|
|
56
|
+
},
|
|
57
|
+
applyCropSelectionStyle: true,
|
|
58
|
+
applyGroupSelectionStyle: true,
|
|
59
|
+
};
|
|
60
|
+
this.template = 'default';
|
|
61
|
+
this.imageLoaded = false;
|
|
62
|
+
this.initializeImgUrl = null;
|
|
63
|
+
this.imageChosen = false;
|
|
64
|
+
this.showSubmenu = false;
|
|
65
|
+
this.isMenuExpanded = false;
|
|
66
|
+
this.rotation = 0;
|
|
67
|
+
this.onObjectActivatedEventListener = this.onObjectActivated.bind(this);
|
|
68
|
+
this.onExecuteCommandEventListener = this.onExecuteCommand.bind(this);
|
|
69
|
+
this.onAfterUndoEventListener = this.onAfterUndo.bind(this);
|
|
70
|
+
this.onAfterRedoEventListener = this.onAfterRedo.bind(this);
|
|
71
|
+
}
|
|
72
|
+
ngOnInit() {
|
|
73
|
+
this.historyServiceSubscription =
|
|
74
|
+
this.historyService.onChangeEmitter.subscribe((items) => this.onActiveHistoryElementChanged(items));
|
|
75
|
+
}
|
|
76
|
+
ngOnChanges(changes) {
|
|
77
|
+
if ((changes['options'] && changes['options'].firstChange == false) ||
|
|
78
|
+
(changes['initialImage'] && changes['initialImage'].firstChange == false)) {
|
|
79
|
+
this.destroyImageEditor();
|
|
80
|
+
this.initializeImageEditor();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
initializeImageEditor() {
|
|
84
|
+
this.historyService.clear();
|
|
85
|
+
this.imageEditor = new ImageEditor(this.imageContainer.nativeElement, this.options);
|
|
86
|
+
this.onInitialization.emit({
|
|
87
|
+
imageEditor: this.imageEditor
|
|
88
|
+
});
|
|
89
|
+
console.debug(this.imageEditor);
|
|
90
|
+
this.imageEditor.registerIcons(defaultIconPath);
|
|
91
|
+
this.imageEditor.on(eventNames.OBJECT_ACTIVATED, this.onObjectActivatedEventListener);
|
|
92
|
+
this.imageEditor._invoker.on(eventNames.EXECUTE_COMMAND, this.onExecuteCommandEventListener);
|
|
93
|
+
this.imageEditor._invoker.on(eventNames.AFTER_UNDO, this.onAfterUndoEventListener);
|
|
94
|
+
this.imageEditor._invoker.on(eventNames.AFTER_REDO, this.onAfterRedoEventListener);
|
|
95
|
+
if (this.initialImage != null) {
|
|
96
|
+
this.loadImage(this.initialImage);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
destroyImageEditor() {
|
|
100
|
+
console.log('DISPOSING IMAGE EDITOR...');
|
|
101
|
+
if (this.imageEditor != null) {
|
|
102
|
+
this.imageEditor.off(eventNames.OBJECT_ACTIVATED, this.onObjectActivatedEventListener);
|
|
103
|
+
this.imageEditor._invoker.off(eventNames.EXECUTE_COMMAND, this.onExecuteCommandEventListener);
|
|
104
|
+
this.imageEditor._invoker.off(eventNames.AFTER_UNDO, this.onAfterUndoEventListener);
|
|
105
|
+
this.imageEditor._invoker.off(eventNames.AFTER_REDO, this.onAfterRedoEventListener);
|
|
106
|
+
const canvas = this.imageEditor._graphics._canvas;
|
|
107
|
+
this.imageEditor.destroy();
|
|
108
|
+
canvas.dispose();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
ngAfterViewInit() {
|
|
112
|
+
var that = this;
|
|
113
|
+
this.loadBtn.nativeElement.style.zIndex = '1';
|
|
114
|
+
this.imageContainer.nativeElement.style.zIndex = '-1';
|
|
115
|
+
setTimeout(() => {
|
|
116
|
+
// this.imageEditor.on(eventNames.SELECTION_CLEARED, function () {
|
|
117
|
+
// that.activeObjectId = null;
|
|
118
|
+
// if (that.submenu === 'text') {
|
|
119
|
+
// that.imageEditor.changeCursor('text');
|
|
120
|
+
// } else if (that.submenu !== 'draw' && that.submenu !== 'crop') {
|
|
121
|
+
// that.imageEditor.stopDrawingMode();
|
|
122
|
+
// }
|
|
123
|
+
// });
|
|
124
|
+
that.initializeImageEditor();
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
ngOnDestroy() {
|
|
128
|
+
if (this.initializeImgUrl != null) {
|
|
129
|
+
URL.revokeObjectURL(this.initializeImgUrl);
|
|
130
|
+
}
|
|
131
|
+
this.destroyImageEditor();
|
|
132
|
+
this.historyServiceSubscription?.unsubscribe();
|
|
133
|
+
}
|
|
134
|
+
onObjectActivated(props) {
|
|
135
|
+
console.debug(props);
|
|
136
|
+
this.activeObjectId = props?.id;
|
|
137
|
+
if (props?.id != null) {
|
|
138
|
+
if ([
|
|
139
|
+
objectTypes.shapeRect,
|
|
140
|
+
objectTypes.shapeCircle,
|
|
141
|
+
objectTypes.shapeTriangle,
|
|
142
|
+
].indexOf(props.type) > -1) {
|
|
143
|
+
this.showMenu('shape', false);
|
|
144
|
+
}
|
|
145
|
+
else if (props.type === objectTypes.line ||
|
|
146
|
+
props.type === objectTypes.straightLine) {
|
|
147
|
+
this.showMenu('draw', false);
|
|
148
|
+
}
|
|
149
|
+
else if (props.type === objectTypes.itext ||
|
|
150
|
+
props.type === objectTypes.text) {
|
|
151
|
+
this.showMenu('text', false);
|
|
152
|
+
}
|
|
153
|
+
else if (props.type === objectTypes.icon) {
|
|
154
|
+
this.showMenu('icon', false);
|
|
155
|
+
}
|
|
156
|
+
else if (props.type === objectTypes.image) {
|
|
157
|
+
this.showMenu('mask', false);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
onExecuteCommand(command) {
|
|
162
|
+
if (!isSilentCommand(command)) {
|
|
163
|
+
this.historyService.add(command, this.imageEditor);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
onAfterUndo() {
|
|
167
|
+
this.historyService.prev();
|
|
168
|
+
}
|
|
169
|
+
onAfterRedo() {
|
|
170
|
+
this.historyService.next();
|
|
171
|
+
}
|
|
172
|
+
onLoad(event) {
|
|
173
|
+
this.loadBtn.nativeElement.style.zIndex = '-1';
|
|
174
|
+
this.imageContainer.nativeElement.style.zIndex = '1';
|
|
175
|
+
this.loadImage(event);
|
|
176
|
+
}
|
|
177
|
+
loadImage(file) {
|
|
178
|
+
const type = file?.name?.split('.').pop();
|
|
179
|
+
if (type?.toLowerCase() === 'heic') {
|
|
180
|
+
heic2any({ blob: file }).then(data => {
|
|
181
|
+
file = data;
|
|
182
|
+
this.uploadIMage(file);
|
|
183
|
+
}).catch(err => {
|
|
184
|
+
console.log("Err", err);
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
this.uploadIMage(file);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
uploadIMage(file) {
|
|
192
|
+
if (file != null) {
|
|
193
|
+
let imageUrl = null;
|
|
194
|
+
if (typeof file === 'string') {
|
|
195
|
+
imageUrl = file;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
if (!isFileApiSupported()) {
|
|
199
|
+
alert('This browser does not support file-api');
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
imageUrl = URL.createObjectURL(file);
|
|
203
|
+
}
|
|
204
|
+
if (this.initializeImgUrl != null && imageUrl != this.initializeImgUrl) {
|
|
205
|
+
URL.revokeObjectURL(this.initializeImgUrl);
|
|
206
|
+
}
|
|
207
|
+
this.initializeImgUrl = imageUrl;
|
|
208
|
+
this.imageEditor
|
|
209
|
+
.loadImageFromURL(this.initializeImgUrl, 'RandomFileName')
|
|
210
|
+
.then((sizeValue) => {
|
|
211
|
+
this.imageChosen = true;
|
|
212
|
+
this.showMenu('draw', false);
|
|
213
|
+
this.exitCropOnAction();
|
|
214
|
+
this.imageEditor.clearUndoStack();
|
|
215
|
+
this.imageEditor.clearRedoStack();
|
|
216
|
+
this.historyService.clear();
|
|
217
|
+
this.imageEditor._invoker.fire(eventNames.EXECUTE_COMMAND, historyNames.LOAD_IMAGE);
|
|
218
|
+
})['catch']((message) => Promise.reject(message));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
resetImage() {
|
|
222
|
+
if (this.initializeImgUrl != null) {
|
|
223
|
+
this.loadImage(this.initializeImgUrl);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
getImage(options = {
|
|
227
|
+
format: 'png',
|
|
228
|
+
quality: 1,
|
|
229
|
+
multiplier: 1,
|
|
230
|
+
}) {
|
|
231
|
+
if (this.imageChosen) {
|
|
232
|
+
return this.imageEditor.toDataURL(options);
|
|
233
|
+
}
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
exitCropOnAction() {
|
|
237
|
+
this.hideMenu('crop');
|
|
238
|
+
}
|
|
239
|
+
hideMenu(menuName) {
|
|
240
|
+
if (this.submenu == menuName) {
|
|
241
|
+
this.submenu = null;
|
|
242
|
+
this.showSubmenu = false;
|
|
243
|
+
clearSelection(this.imageEditor);
|
|
244
|
+
this.imageEditor.stopDrawingMode();
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
onActiveHistoryElementChanged(items) {
|
|
248
|
+
let rotationEvents = items.filter((i) => i.type === HistoryItemType.Rotate);
|
|
249
|
+
if (rotationEvents.length > 0) {
|
|
250
|
+
let lastRotationEvent = rotationEvents[rotationEvents.length - 1];
|
|
251
|
+
this.rotation = lastRotationEvent.args[0];
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
this.rotation = 0;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
showMenu(menuName, discardSelection = true) {
|
|
258
|
+
this.submenu = menuName;
|
|
259
|
+
this.showSubmenu = true;
|
|
260
|
+
if (discardSelection) {
|
|
261
|
+
clearSelection(this.imageEditor);
|
|
262
|
+
}
|
|
263
|
+
this.imageEditor.stopDrawingMode();
|
|
264
|
+
//this.stopShape();
|
|
265
|
+
// this._changeMenu(menuName, toggle, discardSelection);
|
|
266
|
+
// if (this.submenu == 'draw') {
|
|
267
|
+
// this.setDrawMode('free', {
|
|
268
|
+
// width: this.drawStrokeWidthValue,
|
|
269
|
+
// color: this.drawStrokeColor,
|
|
270
|
+
// });
|
|
271
|
+
// }
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
TuiImageEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TuiImageEditorComponent, deps: [{ token: i1.HistoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
275
|
+
TuiImageEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TuiImageEditorComponent, selector: "tui-image-editor", inputs: { options: "options", initialImage: "initialImage", template: "template" }, outputs: { onInitialization: "onInitialization" }, providers: [HistoryService], viewQueries: [{ propertyName: "imageContainer", first: true, predicate: ["imageContainer"], descendants: true }, { propertyName: "loadBtn", first: true, predicate: ["loadBtn"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"template==='default';else newImageEditor\"\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-column tui-image-editor-justify-content-center tui-image-editor-h-100 tui-image-editor-w-100 tui-image-editor-container\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-wrap tui-image-editor-justify-content-center tui-image-editor-align-items-center\">\r\n <div\r\n class=\"tui-image-editor-help-menu tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-wrap tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-p-1\">\r\n <div></div>\r\n <!-- <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"loadImage($event)\"></tui-image-editor-menus-buttons-load>\r\n <tui-image-editor-menus-buttons-download [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-download>\r\n </div> -->\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-zoom-in [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-in>\r\n <tui-image-editor-menus-buttons-zoom-out [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-out>\r\n <tui-image-editor-menus-buttons-drag [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-drag>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-history [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-history>\r\n <tui-image-editor-menus-buttons-undo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-undo>\r\n <tui-image-editor-menus-buttons-redo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-redo>\r\n <tui-image-editor-menus-buttons-reset [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"\r\n (resetImage)=\"resetImage()\"></tui-image-editor-menus-buttons-reset>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-delete [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-delete>\r\n <tui-image-editor-menus-buttons-delete-all [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-delete-all>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\"\r\n [style.height]=\"'0'\"></div> -->\r\n <div style=\"position: relative;height: 100%; display: flex; justify-content: center; align-items: center;\">\r\n <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"onLoad($event)\"></tui-image-editor-menus-buttons-load>\r\n </div>\r\n <div style=\"position: absolute;height: 100%; width: 100%;\" #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\">\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-submenu\" *ngIf=\"submenu != null\">\r\n <tui-image-editor-submenus-crop *ngIf=\"submenu == 'crop'\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-submenus-crop>\r\n <tui-image-editor-submenus-flip *ngIf=\"submenu == 'flip'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-flip>\r\n <tui-image-editor-submenus-rotate *ngIf=\"submenu == 'rotate'\" [imageEditor]=\"imageEditor\"\r\n [(rotation)]=\"rotation\"></tui-image-editor-submenus-rotate>\r\n <tui-image-editor-submenus-draw *ngIf=\"submenu == 'draw'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-draw>\r\n <tui-image-editor-submenus-shape *ngIf=\"submenu == 'shape'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-shape>\r\n <tui-image-editor-submenus-icon *ngIf=\"submenu == 'icon'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-icon>\r\n <tui-image-editor-submenus-text *ngIf=\"submenu == 'text'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-text>\r\n <tui-image-editor-submenus-mask *ngIf=\"submenu == 'mask'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-mask>\r\n <tui-image-editor-submenus-filter *ngIf=\"submenu == 'filter'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-filter>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-controls tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-justify-content-center\">\r\n <div\r\n class=\"tui-image-editor-menu tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center\">\r\n <tui-image-editor-menus-buttons-crop [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'crop'\"\r\n (clicked)=\"submenu == 'crop' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-crop>\r\n <tui-image-editor-menus-buttons-flip [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'flip'\"\r\n (clicked)=\"submenu == 'flip' ? hideMenu($event) : showMenu($event)\">\r\n </tui-image-editor-menus-buttons-flip>\r\n <tui-image-editor-menus-buttons-rotate [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'rotate'\"\r\n (clicked)=\"submenu == 'rotate' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-rotate>\r\n <tui-image-editor-menus-buttons-draw [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'draw'\"\r\n (clicked)=\"submenu == 'draw' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-draw>\r\n <tui-image-editor-menus-buttons-shape [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'shape'\"\r\n (clicked)=\"submenu == 'shape' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-shape>\r\n <tui-image-editor-menus-buttons-icon [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'icon'\"\r\n (clicked)=\"submenu == 'icon' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-icon>\r\n <tui-image-editor-menus-buttons-text [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'text'\"\r\n (clicked)=\"submenu == 'text' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-text>\r\n <tui-image-editor-menus-buttons-mask [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'mask'\"\r\n (clicked)=\"submenu == 'mask' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-mask>\r\n <tui-image-editor-menus-buttons-filter [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'filter'\"\r\n (clicked)=\"submenu == 'filter' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-filter>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #newImageEditor>\r\n <div class=\"new-template tui-image-editor-container\">\r\n <div class=\"image-load-container\">\r\n <div style=\"position: relative;height: 100%; display: flex; justify-content: center; align-items: center;\">\r\n <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"onLoad($event)\"></tui-image-editor-menus-buttons-load>\r\n </div>\r\n <div style=\"position: absolute;height: 100%; width: 100%;\" #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"tools-container\" style=\"position: relative;\" [style.width.px]=\"isMenuExpanded ? 160 : 80\">\r\n <div class=\"primary-tools\">\r\n <div class=\"selected-option\" style=\"cursor: pointer;\" (click)=\"showSubmenu=!showSubmenu\">\r\n <svg *ngIf=\"!showSubmenu\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path opacity=\"0.7\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.3809 2.67601H17.0011C17.5527 2.67601 18 3.12327 18 3.67491C18 4.22654 17.5527 4.6738 17.0011 4.6738H9.38083C8.94507 6.20757 7.53168 7.33419 5.86014 7.33419C4.18856 7.33419 2.77524 6.20757 2.33944 4.6738H0.998897C0.447224 4.6738 0 4.22651 0 3.67487C0 3.12323 0.447224 2.67597 0.998897 2.67601H2.33951C2.77527 1.14224 4.18863 0.015625 5.86021 0.015625C7.53175 0.015625 8.9451 1.14224 9.3809 2.67601ZM4.19868 3.67484C4.19868 4.59097 4.944 5.33632 5.86017 5.33632C6.77635 5.33632 7.52166 4.59097 7.52166 3.67484C7.52166 2.7587 6.77635 2.01335 5.86017 2.01335C4.944 2.01335 4.19868 2.7587 4.19868 3.67484ZM15.6581 11.3275H17.0011C17.5528 11.3275 18 11.7748 18 12.3264C18 12.8781 17.5528 13.3253 17.0011 13.3253H15.6581C15.2224 14.8591 13.809 15.9857 12.1374 15.9857C10.4659 15.9857 9.05254 14.8591 8.61674 13.3253H0.998897C0.447224 13.3253 0 12.8781 0 12.3264C0 11.7748 0.447224 11.3275 0.998897 11.3275H8.61674C9.05251 9.79378 10.4659 8.66716 12.1374 8.66716C13.809 8.66716 15.2223 9.79378 15.6581 11.3275ZM10.476 12.3264C10.476 13.2426 11.2213 13.9879 12.1374 13.9879C13.0536 13.9879 13.799 13.2426 13.7989 12.3264C13.7989 11.4103 13.0536 10.665 12.1374 10.665C11.2213 10.665 10.476 11.4103 10.476 12.3264Z\"\r\n fill=\"#25282B\" />\r\n </svg>\r\n <svg *ngIf=\"showSubmenu\" width=\"42\" height=\"40\" viewBox=\"0 0 42 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"42\" height=\"40\" rx=\"8\" fill=\"#25282B\" fill-opacity=\"0.1\" />\r\n <g opacity=\"0.7\">\r\n <path\r\n d=\"M16.1375 25.9935C15.8433 26.0108 15.554 25.9119 15.3305 25.7176C14.8898 25.2691 14.8898 24.5447 15.3305 24.0962L24.9801 14.3337C25.4384 13.8998 26.1576 13.9239 26.5865 14.3876C26.9744 14.807 26.997 15.4515 26.6395 15.8976L16.9331 25.7176C16.7125 25.9091 16.4278 26.0078 16.1375 25.9935Z\"\r\n fill=\"#25282B\" />\r\n <path\r\n d=\"M25.7732 25.9938C25.475 25.9925 25.1893 25.8728 24.9776 25.6603L15.328 15.8978C14.9197 15.4155 14.9752 14.6896 15.452 14.2765C15.8775 13.9078 16.5051 13.9078 16.9306 14.2765L26.637 24.039C27.0952 24.473 27.1189 25.2007 26.6899 25.6643C26.6728 25.6827 26.6552 25.7006 26.637 25.7178C26.3993 25.9269 26.0865 26.0268 25.7732 25.9938Z\"\r\n fill=\"#25282B\" />\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"hr\">\r\n\r\n </div>\r\n <div class=\"menu\">\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-draw #penMenu [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'draw'\"\r\n (clicked)=\"submenu == 'draw' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-draw>\r\n </div>\r\n <!-- <div class=\"eraser\">\r\n \r\n </div> -->\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-text [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'text'\"\r\n (clicked)=\"submenu == 'text' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-text>\r\n </div>\r\n <div class=\"tool-icon-group\">\r\n <tui-image-editor-menus-buttons-zoom-in [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-in>\r\n <tui-image-editor-menus-buttons-zoom-out [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-out>\r\n <tui-image-editor-menus-buttons-drag [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-drag>\r\n </div>\r\n <div class=\"tool-icon-group\">\r\n <tui-image-editor-menus-buttons-history\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-history>\r\n <tui-image-editor-menus-buttons-undo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-undo>\r\n <tui-image-editor-menus-buttons-redo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-redo>\r\n <tui-image-editor-menus-buttons-reset [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"\r\n (resetImage)=\"resetImage()\"></tui-image-editor-menus-buttons-reset>\r\n </div>\r\n\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-crop [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'crop'\"\r\n (clicked)=\"submenu == 'crop' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-crop>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-flip [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'flip'\"\r\n (clicked)=\"submenu == 'flip' ? hideMenu($event) : showMenu($event)\">\r\n </tui-image-editor-menus-buttons-flip>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-rotate [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'rotate'\"\r\n (clicked)=\"submenu == 'rotate' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-rotate>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-shape [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'shape'\"\r\n (clicked)=\"submenu == 'shape' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-shape>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-icon [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'icon'\"\r\n (clicked)=\"submenu == 'icon' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-icon>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-mask [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'mask'\"\r\n (clicked)=\"submenu == 'mask' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-mask>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-filter [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'filter'\"\r\n (clicked)=\"submenu == 'filter' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-filter>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-download [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-download>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"sub-menu\">\r\n <div class=\"tui-image-editor-submenu new\" [style.right.px]=\"isMenuExpanded ? 160 : 80\"\r\n *ngIf=\"submenu != null && showSubmenu\">\r\n <tui-image-editor-submenus-crop *ngIf=\"submenu == 'crop'\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-submenus-crop>\r\n <tui-image-editor-submenus-flip *ngIf=\"submenu == 'flip'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-flip>\r\n <tui-image-editor-submenus-rotate *ngIf=\"submenu == 'rotate'\" [imageEditor]=\"imageEditor\"\r\n [(rotation)]=\"rotation\"></tui-image-editor-submenus-rotate>\r\n <tui-image-editor-submenus-draw *ngIf=\"submenu == 'draw'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-draw>\r\n <tui-image-editor-submenus-shape *ngIf=\"submenu == 'shape'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-shape>\r\n <tui-image-editor-submenus-icon *ngIf=\"submenu == 'icon'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-icon>\r\n <tui-image-editor-submenus-text *ngIf=\"submenu == 'text'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-text>\r\n <tui-image-editor-submenus-mask *ngIf=\"submenu == 'mask'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-mask>\r\n <tui-image-editor-submenus-filter *ngIf=\"submenu == 'filter'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-filter>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"toggler\" (click)=\"isMenuExpanded=!isMenuExpanded\" style=\"cursor: pointer;\">\r\n <svg *ngIf=\"!isMenuExpanded\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M0.864575 7.34425C0.503475 7.70535 0.503475 8.29473 0.864575 8.65583L7.93771 15.7287C8.29937 16.0904 8.88768 16.0904 9.2493 15.7287L9.64494 15.3331C10.0069 14.9711 10.007 14.3831 9.64498 14.0211L4.27939 8.65599C3.91733 8.29401 3.91733 7.7059 4.27939 7.34393L9.64494 1.97882C10.007 1.6168 10.007 1.02885 9.6449 0.66683L9.24926 0.27119C8.88816 -0.0899105 8.29877 -0.0899105 7.93767 0.27119L0.864575 7.34425ZM15.4293 0.27111C15.7907 -0.0903898 16.3796 -0.0903499 16.741 0.27111L17.1367 0.66675C17.498 1.02805 17.498 1.61744 17.1367 1.97878L11.7714 7.34393C11.4094 7.70595 11.4094 8.29398 11.7714 8.65599L17.1367 14.0211C17.4982 14.3825 17.4981 14.9717 17.1367 15.3331L16.7411 15.7288C16.3795 16.0904 15.7909 16.0904 15.4293 15.7288L8.98444 9.28372C7.17658 11.0898 7.63387 10.6318 8.98312 9.2824L8.35659 8.65583C7.99525 8.29449 7.99529 7.70554 8.35659 7.34421L15.4293 0.27111Z\"\r\n fill=\"#515355\" />\r\n </svg>\r\n <svg *ngIf=\"isMenuExpanded\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M17.1354 8.65575C17.4965 8.29465 17.4965 7.70527 17.1354 7.34417L10.0623 0.27127C9.70063 -0.0903886 9.11232 -0.0903885 8.7507 0.271271L8.35506 0.666911C7.99308 1.02889 7.993 1.61688 8.35502 1.97894L13.7206 7.34401C14.0827 7.70599 14.0827 8.2941 13.7206 8.65607L8.35506 14.0212C7.993 14.3832 7.99304 14.9712 8.3551 15.3332L8.75074 15.7288C9.11184 16.0899 9.70123 16.0899 10.0623 15.7288L17.1354 8.65575ZM2.57075 15.7289C2.20929 16.0904 1.62042 16.0904 1.25896 15.7289L0.863319 15.3333C0.50202 14.972 0.50198 14.3826 0.863319 14.0212L6.22863 8.65607C6.59065 8.29406 6.59065 7.70603 6.22863 7.34401L0.86328 1.9789C0.50182 1.61748 0.50186 1.02829 0.86328 0.666871L1.25892 0.27123C1.62054 -0.0903879 2.20909 -0.090428 2.57071 0.27123L9.01556 6.71628C10.8234 4.91023 10.3661 5.36824 9.01688 6.7176L9.64341 7.34417C10.0047 7.70551 10.0047 8.29446 9.64341 8.6558L2.57075 15.7289Z\"\r\n fill=\"#515355\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>", styles: ["::ng-deep .menu-background{height:181px;background-color:#f8f8f8;position:absolute;width:100%;bottom:-182px;z-index:2;display:flex;justify-content:center;align-items:center;border-radius:4px;color:#8d8f9e}::ng-deep .tui-image-editor-d-flex{display:flex!important}::ng-deep .tui-image-editor-flex-row{flex-direction:row!important}::ng-deep .tui-image-editor-flex-column{flex-direction:column!important}::ng-deep .tui-image-editor-flex-wrap{flex-wrap:wrap!important}::ng-deep .tui-image-editor-flex-nowrap{flex-wrap:wrap!important}::ng-deep .tui-image-editor-align-items-center{align-items:center!important}::ng-deep .tui-image-editor-align-self-center{align-self:center!important}::ng-deep .tui-image-editor-justify-content-center{justify-content:center!important}::ng-deep .tui-image-editor-justify-content-between{justify-content:space-between!important}::ng-deep .tui-image-editor-flex-grow-1{flex-grow:1!important;margin-block:4px;cursor:pointer;position:relative}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container{min-height:300px;border:1px solid #E8EAED}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container .lower-canvas{height:unset!important;width:unset!important;max-height:100%!important;max-width:100%!important;object-fit:contain!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container .upper-canvas{height:unset!important;width:unset!important;max-height:100%!important;max-width:100%!important;object-fit:contain!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}::ng-deep .tui-image-editor-flex-grow-1 .button-background{position:absolute;inset:0px;background-color:#eff0f6;background-image:url(../favicon.ico);background-repeat:no-repeat;background-position:center;z-index:2}::ng-deep .tui-image-editor-h-100{height:100%!important}::ng-deep .tui-image-editor-w-100{width:100%!important}::ng-deep .tui-image-editor-p-1{padding:.25rem!important}::ng-deep .tui-image-editor-pb-1{padding-bottom:.25rem!important}::ng-deep .tui-image-editor-pb-2{padding-bottom:.5rem!important}::ng-deep .tui-image-editor-pb-3{padding-bottom:1rem!important}::ng-deep .tui-image-editor-pt-1{padding-top:.25rem!important}::ng-deep .tui-image-editor-pt-2{padding-top:.5rem!important}::ng-deep .tui-image-editor-pt-3{padding-top:1rem!important}::ng-deep .tui-image-editor-py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}::ng-deep .tui-image-editor-py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}::ng-deep .tui-image-editor-py-3{padding-top:1rem!important;padding-bottom:1rem!important}::ng-deep .tui-image-editor-px-1{padding-left:.25rem!important;padding-right:.25rem!important}::ng-deep .tui-image-editor-px-2{padding-left:.5rem!important;padding-right:.5rem!important}::ng-deep .tui-image-editor-px-3{padding-left:1rem!important;padding-right:1rem!important}::ng-deep .tui-image-editor-my-2{margin-top:.5rem;margin-bottom:.5rem}::ng-deep .tui-image-editor-my-3{margin-top:1rem;margin-bottom:1rem}::ng-deep .tui-image-editor-my-3.apply{display:none}::ng-deep .tui-image-editor-mb-2{margin-bottom:.5rem}::ng-deep .tui-image-editor-mb-3{margin-bottom:1rem}::ng-deep .tui-image-editor-container{background-color:#fff;border-radius:10px;position:relative}::ng-deep .tui-image-editor-container .tui-image-editor-submenu{background-color:#353535;position:absolute;width:100%;bottom:-176px;opacity:.8;height:181px;z-index:3}::ng-deep .tui-image-editor-container label{margin-bottom:0!important}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item.disabled{cursor:not-allowed}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .enabled svg:hover>use.hover,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .enabled:hover svg>use.hover,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .help.enabled svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .help:not(.enabled) svg>use.disabled{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu>.tui-image-editor-item.tui-image-editor-item-separator{width:10px;padding:0}::ng-deep .tui-image-editor-container .tui-image-editor-controls{width:100%;background-color:#dedede;border-bottom-left-radius:22px;border-bottom-right-radius:22px}::ng-deep .tui-image-editor-container .tui-image-editor-controls svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-controls svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-controls .active svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-controls>.tui-image-editor-menu{font-size:16px;justify-content:center}::ng-deep .tui-image-editor-container .tui-image-editor-menu .tui-image-editor-item.active,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item.active{background-color:#ef736b;transition:all .3s ease;border-radius:6px}::ng-deep .tui-image-editor-container .svg_ic-menu{width:24px;height:24px;fill:#8a8a8a;stroke:#8a8a8a}::ng-deep .tui-image-editor-container .svg_ic-submenu{width:32px;height:32px}::ng-deep .tui-image-editor-container .tui-image-editor-submenu use.normal.use-default{fill-rule:evenodd;fill:#8a8a8a;stroke:#8a8a8a}::ng-deep .tui-image-editor-container .tui-image-editor-submenu use.active.use-default{fill-rule:evenodd;fill:#e9e9e9;stroke:#e9e9e9}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu{margin:0 auto;text-align:center;vertical-align:middle;border-radius:20px;z-index:2}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.normal.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.normal.use-default{fill-rule:evenodd;fill:#3d3d3d;stroke:#3d3d3d}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.disabled.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.disabled.use-default{fill-rule:evenodd;fill:#434343;stroke:#434343}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.hover.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.hover.use-default{fill-rule:evenodd;fill:#e9e9e9;stroke:#e9e9e9}::ng-deep .tui-image-editor-container .tui-image-editor-icpartition{display:inline-block;background-color:#444;width:1px;height:24px}::ng-deep .tui-image-editor-container .tui-image-editor-partition>div{color:#3c3c3c;border-left:1px solid #3c3c3c}::ng-deep .tui-image-editor-container .tui-image-editor-partition>div{width:1px;height:52px;border-left:1px solid #3c3c3c;margin:0 8px}::ng-deep .tui-image-editor-container .tui-image-editor-item{position:relative;display:flex;border-radius:2px;padding:.25em .3em;cursor:pointer;margin:0 .25em;width:2em;height:2em;align-items:center;justify-content:center}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item{padding-left:.25em;padding-right:.25em;width:2em}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item{background-color:#f8f8f8;border-radius:20px;padding-left:4px;padding-right:4px;margin:4px}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item:first-child{display:none!important}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item tui-image-editor-menus-buttons-history{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu>.tui-image-editor-item{padding-left:.25em;padding-right:.25em}::ng-deep .tui-image-editor-container .tui-image-editor-load-btn{position:absolute;left:0;right:0;display:inline-block;top:0;bottom:0;width:100%;cursor:pointer;opacity:0}::ng-deep .tui-image-editor-container .tui-image-editor-menu{padding-top:.5rem;padding-bottom:.5rem;overflow-x:auto;margin-left:4px;margin-right:4px}::ng-deep .tui-image-editor-container .tui-image-editor-overflowable-x{overflow-x:auto}::ng-deep .tui-image-editor-container .tie-icon-add-button,::ng-deep .tui-image-editor-container .tie-icon-add-button *{cursor:pointer}::ng-deep .tui-image-editor-container .tie-mask-image-file,::ng-deep .tui-image-editor-container .tie-icon-image-file{opacity:0;position:absolute;width:100%;height:100%;border:1px solid #008000;cursor:inherit;left:0;top:0}::ng-deep .tui-image-editor-container .tui-image-editor-submenu-align:first-child label>span{width:70px;display:inline-block;cursor:pointer}::ng-deep .tui-image-editor-container .tui-image-editor-menu-shape{white-space:nowrap}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox-wrap.fixed-width{width:200px;white-space:normal}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox{display:inline-block;margin:.25rem 0;color:#8a8a8a;font-weight:lighter;font-size:11px}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox input[type=checkbox]:checked+span{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap label{vertical-align:baseline;font-size:11px;margin-right:7px;color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap .tui-image-editor-range-value{cursor:default;width:40px;height:24px;outline:none;border-radius:2px;box-shadow:none;border:1px solid #d5d5d5;text-align:center;background-color:#1c1c1c;color:#fff;font-weight:lighter;vertical-align:baseline;font-family:Noto Sans,sans-serif;margin-left:4px}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap .tui-image-editor-range-value{color:#fff;font-weight:lighter;font-size:11px;border:1px solid #353535;background-color:#207c80}::ng-deep .tui-image-editor-container input[type=range]{-webkit-appearance:none;background:transparent}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-thumb{-webkit-appearance:none}::ng-deep .tui-image-editor-container input[type=range]:focus{outline:none}::ng-deep .tui-image-editor-container input[type=range]::-ms-track{cursor:pointer;background:transparent;border-color:transparent;color:transparent}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer;margin-top:-6px}::ng-deep .tui-image-editor-container input[type=range]:disabled::-webkit-slider-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-webkit-slider-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-moz-range-thumb{border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer}::ng-deep .tui-image-editor-container input[type=range]:disabled::-moz-range-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-moz-range-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-ms-thumb{border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer}::ng-deep .tui-image-editor-container input[type=range]:disabled::-ms-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-ms-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-runnable-track{height:2px;cursor:pointer;background:#fff;border-radius:1.3px;border:.2px solid #fff}::ng-deep .tui-image-editor-container input[type=range]:disabled::-webkit-slider-runnable-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-webkit-slider-runnable-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]:focus::-webkit-slider-runnable-track{background:#fff}::ng-deep .tui-image-editor-container input[type=range]::-moz-range-track{height:2px;cursor:pointer;background:#fff;border-radius:1.3px;border:.2px solid #fff}::ng-deep .tui-image-editor-container input[type=range]:disabled::-moz-range-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-moz-range-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]::-ms-track{height:2px;cursor:pointer;background:transparent;border-color:transparent;border-width:16px 0;color:transparent}::ng-deep .tui-image-editor-container input[type=range]:disabled::-ms-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-ms-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]::-ms-fill-lower{background:#fff;border:.2px solid #fff;border-radius:2.6px}::ng-deep .tui-image-editor-container input[type=range]:focus::-ms-fill-lower{background:#fff}::ng-deep .tui-image-editor-container input[type=range]::-ms-fill-upper{background:#fff;border:.2px solid #fff;border-radius:2.6px}::ng-deep .tui-image-editor-container input[type=range]:focus::-ms-fill-upper{background:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.preset{margin:0 9px 0 5px}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button{position:relative;cursor:pointer;display:inline-block;font-weight:400;font-size:11px;margin:0 9px;text-align:center}::ng-deep .tui-image-editor-container .tui-image-editor-submenu svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-submenu svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover{cursor:pointer}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.apply svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.apply>label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active>label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button>label{color:#8a8a8a;font-weight:lighter}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-draw-color label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-color-stroke label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-color-fill label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-icon-color label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-text-color label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover svg>use.active,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover>label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active>label{color:#fff;cursor:pointer}::ng-deep .tie-crop-button .tui-image-editor-button.preset.active svg>use.active,::ng-deep .tie-crop-preset-button .tui-image-editor-button.preset.active svg>use.active{display:block}::ng-deep .tie-crop-preset-button>.preset>label{color:#fff;font-weight:lighter}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual{display:none;position:absolute;width:100%;height:100%;border:1px solid rgba(255,255,255,.7)}::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip,::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor{transition:none}::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-grid-visual,::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-grid-visual{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table{width:100%;height:100%;border-collapse:collapse}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td{border:1px solid rgba(255,255,255,.3)}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot:before{content:\"\";position:absolute;box-sizing:border-box;width:10px;height:10px;border:0;box-shadow:0 0 1px #0000004d;border-radius:100%;background-color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-top:before{top:-5px;left:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-top:before{top:-5px;right:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-bottom:before{bottom:-5px;left:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-bottom:before{bottom:-5px;right:-5px}::ng-deep .tie-text-color-picker,::ng-deep .tie-draw-color-picker,::ng-deep .tie-icon-color-picker,::ng-deep .tie-filter-tint-color-picker,::ng-deep .tie-filter-multiply-color-picker,::ng-deep .tie-filter-blend-color-picker{border-radius:100%;width:32px;height:32px;border:1px solid #1e1e1e;cursor:pointer;font-size:16px}::ng-deep .tie-panel-history{max-height:300px;overflow:auto;padding:.5rem 0}::ng-deep .tie-panel-history .history-list{margin-bottom:0;margin-top:0;list-style-type:none;padding-left:0;padding-right:0}::ng-deep .tie-panel-history .history-list .history-item{min-width:255px;padding:3px 0}::ng-deep .tie-panel-history .history-list .history-item.disabled-item{color:#333;opacity:.3}::ng-deep .tie-panel-history .history-list .history-item:not(:last-child){border-bottom:1px solid black}::ng-deep .tie-panel-history .history-list .history-item.selected-item{background-color:#eee}::ng-deep .tie-panel-history .history-list .history-item:hover{background-color:#e2e2e2}::ng-deep .tie-panel-history .history-list .history-item .history-item-text{flex:1;overflow:hidden;text-overflow:ellipsis;word-break:break-word}::ng-deep .tie-panel-history .history-list .history-item .history-item-text .history-item-text-details{font-size:.85em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item{padding-left:.5em;padding-right:.5em;cursor:pointer}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-icon{margin-right:.5em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-icon svg{width:1em;height:1em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-checkbox{margin-left:auto}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-checkbox svg{width:1em;height:1em;margin-left:.5em}::ng-deep .fade{transition:opacity .15s linear}::ng-deep .popover{position:absolute;top:0;left:0;z-index:10070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}::ng-deep .popover .arrow{position:absolute;display:block;width:1rem;height:.5rem}::ng-deep .popover .arrow:before,::ng-deep .popover .arrow:after{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}::ng-deep .bs-popover-top>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow{bottom:calc(-.5rem - 1px)}::ng-deep .bs-popover-top>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}::ng-deep .bs-popover-top>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}::ng-deep .bs-popover-end>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}::ng-deep .bs-popover-end>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}::ng-deep .bs-popover-end>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}::ng-deep .bs-popover-bottom>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow{top:calc(-.5rem - 1px)}::ng-deep .bs-popover-bottom>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}::ng-deep .bs-popover-bottom>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}::ng-deep .bs-popover-bottom .popover-header:before,::ng-deep .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f0f0f0}::ng-deep .bs-popover-start>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}::ng-deep .bs-popover-start>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}::ng-deep .bs-popover-start>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}::ng-deep .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid #d8d8d8;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}::ng-deep .popover-header:empty{display:none}::ng-deep .popover-body{padding:1rem;color:#212529}::ng-deep .tie-history-popover .popover-body{padding:0}::ng-deep .color-picker.open{z-index:1063}.new-template{display:flex;height:100%}.new-template ::ng-deep .tui-image-editor-overflowable-x{overflow-x:unset}.new-template ::ng-deep .color-picker{right:50px!important;top:5px!important;left:unset!important}.new-template .image-load-container{flex:1}.new-template .tools-container{border-left:1px solid #dcdfe4;width:80px;display:flex;align-items:center;justify-content:space-between;padding-top:15px;padding-bottom:15px;flex-direction:column}.new-template .tools-container .primary-tools{height:95%}.new-template .tools-container .primary-tools .selected-option{text-align:center}.new-template .tools-container .primary-tools .hr{height:1px;background-color:#dcdfe4;margin-top:10px}.new-template .tools-container .primary-tools .menu{height:90%;display:flex;flex-direction:column;flex-wrap:wrap-reverse;padding:15px;overflow-x:hidden;gap:15px}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item{border-radius:50%;border:1px solid #E8EAED}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item.active{background-color:#207c8026}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item.active .svg_ic-menu{fill:#207c80;stroke:#207c80}.new-template .tools-container .primary-tools .menu .tool-icon-group{border-radius:50px;border:1px solid #E8EAED}.new-template .tools-container .primary-tools .sub-menu .tui-image-editor-submenu.new{position:absolute;background-color:#353535;top:0;right:80px;z-index:1000;opacity:.8;color:#fff;width:-moz-fit-content;width:fit-content;padding:10px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadComponent, selector: "tui-image-editor-menus-buttons-load", outputs: ["loadImage"] }, { kind: "component", type: i4.HistoryComponent, selector: "tui-image-editor-menus-buttons-history", inputs: ["imageEditor"] }, { kind: "component", type: i5.DownloadComponent, selector: "tui-image-editor-menus-buttons-download", inputs: ["imageChosen", "imageEditor"] }, { kind: "component", type: i6.ZoomInComponent, selector: "tui-image-editor-menus-buttons-zoom-in", inputs: ["imageChosen", "imageEditor"] }, { kind: "component", type: i7.ZoomOutComponent, selector: "tui-image-editor-menus-buttons-zoom-out", inputs: ["imageChosen", "imageEditor"] }, { kind: "component", type: i8.DragComponent, selector: "tui-image-editor-menus-buttons-drag", inputs: ["imageChosen", "imageEditor"] }, { kind: "component", type: i9.UndoComponent, selector: "tui-image-editor-menus-buttons-undo", inputs: ["imageEditor"], outputs: ["cancelCroppingRequested"] }, { kind: "component", type: i10.RedoComponent, selector: "tui-image-editor-menus-buttons-redo", inputs: ["imageEditor"], outputs: ["cancelCroppingRequested"] }, { kind: "component", type: i11.ResetComponent, selector: "tui-image-editor-menus-buttons-reset", inputs: ["imageChosen", "imageEditor"], outputs: ["cancelCroppingRequested", "resetImage"] }, { kind: "component", type: i12.DeleteComponent, selector: "tui-image-editor-menus-buttons-delete", inputs: ["imageChosen", "imageEditor"], outputs: ["cancelCroppingRequested"] }, { kind: "component", type: i13.DeleteAllComponent, selector: "tui-image-editor-menus-buttons-delete-all", inputs: ["imageChosen", "imageEditor"], outputs: ["cancelCroppingRequested"] }, { kind: "component", type: i14.CropComponent, selector: "tui-image-editor-menus-buttons-crop", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: i15.CropComponent, selector: "tui-image-editor-submenus-crop", inputs: ["imageEditor"], outputs: ["cancelCroppingRequested"] }, { kind: "component", type: i16.FlipComponent, selector: "tui-image-editor-menus-buttons-flip", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: i17.FlipComponent, selector: "tui-image-editor-submenus-flip", inputs: ["imageEditor"] }, { kind: "component", type: i18.RotateComponent, selector: "tui-image-editor-menus-buttons-rotate", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: i19.RotateComponent, selector: "tui-image-editor-submenus-rotate", inputs: ["imageEditor", "rotation"], outputs: ["rotationChange"] }, { kind: "component", type: i20.DrawComponent, selector: "tui-image-editor-menus-buttons-draw", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: i21.DrawComponent, selector: "tui-image-editor-submenus-draw", inputs: ["imageEditor", "defaultDrawShapeColors"] }, { kind: "component", type: i22.ShapeComponent, selector: "tui-image-editor-menus-buttons-shape", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: i23.ShapeComponent, selector: "tui-image-editor-submenus-shape", inputs: ["imageEditor", "defaultShapeStrokeColors", "defaultShapeFillColors"] }, { kind: "component", type: i24.IconComponent, selector: "tui-image-editor-menus-buttons-icon", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: i25.IconComponent, selector: "tui-image-editor-submenus-icon", inputs: ["imageEditor", "defaultIconColors"] }, { kind: "component", type: i26.TextComponent, selector: "tui-image-editor-menus-buttons-text", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: i27.TextComponent, selector: "tui-image-editor-submenus-text", inputs: ["imageEditor", "defaultTextColors"] }, { kind: "component", type: i28.MaskComponent, selector: "tui-image-editor-menus-buttons-mask", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: i29.MaskComponent, selector: "tui-image-editor-submenus-mask", inputs: ["imageEditor"] }, { kind: "component", type: i30.FilterComponent, selector: "tui-image-editor-menus-buttons-filter", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: i31.FilterComponent, selector: "tui-image-editor-submenus-filter", inputs: ["imageEditor"] }] });
|
|
276
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TuiImageEditorComponent, decorators: [{
|
|
277
|
+
type: Component,
|
|
278
|
+
args: [{ selector: 'tui-image-editor', providers: [HistoryService], template: "<div *ngIf=\"template==='default';else newImageEditor\"\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-column tui-image-editor-justify-content-center tui-image-editor-h-100 tui-image-editor-w-100 tui-image-editor-container\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-wrap tui-image-editor-justify-content-center tui-image-editor-align-items-center\">\r\n <div\r\n class=\"tui-image-editor-help-menu tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-wrap tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-p-1\">\r\n <div></div>\r\n <!-- <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"loadImage($event)\"></tui-image-editor-menus-buttons-load>\r\n <tui-image-editor-menus-buttons-download [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-download>\r\n </div> -->\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-zoom-in [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-in>\r\n <tui-image-editor-menus-buttons-zoom-out [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-out>\r\n <tui-image-editor-menus-buttons-drag [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-drag>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-history [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-history>\r\n <tui-image-editor-menus-buttons-undo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-undo>\r\n <tui-image-editor-menus-buttons-redo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-redo>\r\n <tui-image-editor-menus-buttons-reset [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"\r\n (resetImage)=\"resetImage()\"></tui-image-editor-menus-buttons-reset>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-delete [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-delete>\r\n <tui-image-editor-menus-buttons-delete-all [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-delete-all>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\"\r\n [style.height]=\"'0'\"></div> -->\r\n <div style=\"position: relative;height: 100%; display: flex; justify-content: center; align-items: center;\">\r\n <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"onLoad($event)\"></tui-image-editor-menus-buttons-load>\r\n </div>\r\n <div style=\"position: absolute;height: 100%; width: 100%;\" #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\">\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-submenu\" *ngIf=\"submenu != null\">\r\n <tui-image-editor-submenus-crop *ngIf=\"submenu == 'crop'\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-submenus-crop>\r\n <tui-image-editor-submenus-flip *ngIf=\"submenu == 'flip'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-flip>\r\n <tui-image-editor-submenus-rotate *ngIf=\"submenu == 'rotate'\" [imageEditor]=\"imageEditor\"\r\n [(rotation)]=\"rotation\"></tui-image-editor-submenus-rotate>\r\n <tui-image-editor-submenus-draw *ngIf=\"submenu == 'draw'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-draw>\r\n <tui-image-editor-submenus-shape *ngIf=\"submenu == 'shape'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-shape>\r\n <tui-image-editor-submenus-icon *ngIf=\"submenu == 'icon'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-icon>\r\n <tui-image-editor-submenus-text *ngIf=\"submenu == 'text'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-text>\r\n <tui-image-editor-submenus-mask *ngIf=\"submenu == 'mask'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-mask>\r\n <tui-image-editor-submenus-filter *ngIf=\"submenu == 'filter'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-filter>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-controls tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-justify-content-center\">\r\n <div\r\n class=\"tui-image-editor-menu tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center\">\r\n <tui-image-editor-menus-buttons-crop [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'crop'\"\r\n (clicked)=\"submenu == 'crop' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-crop>\r\n <tui-image-editor-menus-buttons-flip [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'flip'\"\r\n (clicked)=\"submenu == 'flip' ? hideMenu($event) : showMenu($event)\">\r\n </tui-image-editor-menus-buttons-flip>\r\n <tui-image-editor-menus-buttons-rotate [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'rotate'\"\r\n (clicked)=\"submenu == 'rotate' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-rotate>\r\n <tui-image-editor-menus-buttons-draw [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'draw'\"\r\n (clicked)=\"submenu == 'draw' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-draw>\r\n <tui-image-editor-menus-buttons-shape [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'shape'\"\r\n (clicked)=\"submenu == 'shape' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-shape>\r\n <tui-image-editor-menus-buttons-icon [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'icon'\"\r\n (clicked)=\"submenu == 'icon' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-icon>\r\n <tui-image-editor-menus-buttons-text [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'text'\"\r\n (clicked)=\"submenu == 'text' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-text>\r\n <tui-image-editor-menus-buttons-mask [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'mask'\"\r\n (clicked)=\"submenu == 'mask' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-mask>\r\n <tui-image-editor-menus-buttons-filter [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'filter'\"\r\n (clicked)=\"submenu == 'filter' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-filter>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #newImageEditor>\r\n <div class=\"new-template tui-image-editor-container\">\r\n <div class=\"image-load-container\">\r\n <div style=\"position: relative;height: 100%; display: flex; justify-content: center; align-items: center;\">\r\n <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"onLoad($event)\"></tui-image-editor-menus-buttons-load>\r\n </div>\r\n <div style=\"position: absolute;height: 100%; width: 100%;\" #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"tools-container\" style=\"position: relative;\" [style.width.px]=\"isMenuExpanded ? 160 : 80\">\r\n <div class=\"primary-tools\">\r\n <div class=\"selected-option\" style=\"cursor: pointer;\" (click)=\"showSubmenu=!showSubmenu\">\r\n <svg *ngIf=\"!showSubmenu\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path opacity=\"0.7\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.3809 2.67601H17.0011C17.5527 2.67601 18 3.12327 18 3.67491C18 4.22654 17.5527 4.6738 17.0011 4.6738H9.38083C8.94507 6.20757 7.53168 7.33419 5.86014 7.33419C4.18856 7.33419 2.77524 6.20757 2.33944 4.6738H0.998897C0.447224 4.6738 0 4.22651 0 3.67487C0 3.12323 0.447224 2.67597 0.998897 2.67601H2.33951C2.77527 1.14224 4.18863 0.015625 5.86021 0.015625C7.53175 0.015625 8.9451 1.14224 9.3809 2.67601ZM4.19868 3.67484C4.19868 4.59097 4.944 5.33632 5.86017 5.33632C6.77635 5.33632 7.52166 4.59097 7.52166 3.67484C7.52166 2.7587 6.77635 2.01335 5.86017 2.01335C4.944 2.01335 4.19868 2.7587 4.19868 3.67484ZM15.6581 11.3275H17.0011C17.5528 11.3275 18 11.7748 18 12.3264C18 12.8781 17.5528 13.3253 17.0011 13.3253H15.6581C15.2224 14.8591 13.809 15.9857 12.1374 15.9857C10.4659 15.9857 9.05254 14.8591 8.61674 13.3253H0.998897C0.447224 13.3253 0 12.8781 0 12.3264C0 11.7748 0.447224 11.3275 0.998897 11.3275H8.61674C9.05251 9.79378 10.4659 8.66716 12.1374 8.66716C13.809 8.66716 15.2223 9.79378 15.6581 11.3275ZM10.476 12.3264C10.476 13.2426 11.2213 13.9879 12.1374 13.9879C13.0536 13.9879 13.799 13.2426 13.7989 12.3264C13.7989 11.4103 13.0536 10.665 12.1374 10.665C11.2213 10.665 10.476 11.4103 10.476 12.3264Z\"\r\n fill=\"#25282B\" />\r\n </svg>\r\n <svg *ngIf=\"showSubmenu\" width=\"42\" height=\"40\" viewBox=\"0 0 42 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"42\" height=\"40\" rx=\"8\" fill=\"#25282B\" fill-opacity=\"0.1\" />\r\n <g opacity=\"0.7\">\r\n <path\r\n d=\"M16.1375 25.9935C15.8433 26.0108 15.554 25.9119 15.3305 25.7176C14.8898 25.2691 14.8898 24.5447 15.3305 24.0962L24.9801 14.3337C25.4384 13.8998 26.1576 13.9239 26.5865 14.3876C26.9744 14.807 26.997 15.4515 26.6395 15.8976L16.9331 25.7176C16.7125 25.9091 16.4278 26.0078 16.1375 25.9935Z\"\r\n fill=\"#25282B\" />\r\n <path\r\n d=\"M25.7732 25.9938C25.475 25.9925 25.1893 25.8728 24.9776 25.6603L15.328 15.8978C14.9197 15.4155 14.9752 14.6896 15.452 14.2765C15.8775 13.9078 16.5051 13.9078 16.9306 14.2765L26.637 24.039C27.0952 24.473 27.1189 25.2007 26.6899 25.6643C26.6728 25.6827 26.6552 25.7006 26.637 25.7178C26.3993 25.9269 26.0865 26.0268 25.7732 25.9938Z\"\r\n fill=\"#25282B\" />\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"hr\">\r\n\r\n </div>\r\n <div class=\"menu\">\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-draw #penMenu [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'draw'\"\r\n (clicked)=\"submenu == 'draw' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-draw>\r\n </div>\r\n <!-- <div class=\"eraser\">\r\n \r\n </div> -->\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-text [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'text'\"\r\n (clicked)=\"submenu == 'text' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-text>\r\n </div>\r\n <div class=\"tool-icon-group\">\r\n <tui-image-editor-menus-buttons-zoom-in [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-in>\r\n <tui-image-editor-menus-buttons-zoom-out [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-out>\r\n <tui-image-editor-menus-buttons-drag [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-drag>\r\n </div>\r\n <div class=\"tool-icon-group\">\r\n <tui-image-editor-menus-buttons-history\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-history>\r\n <tui-image-editor-menus-buttons-undo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-undo>\r\n <tui-image-editor-menus-buttons-redo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-redo>\r\n <tui-image-editor-menus-buttons-reset [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"\r\n (resetImage)=\"resetImage()\"></tui-image-editor-menus-buttons-reset>\r\n </div>\r\n\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-crop [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'crop'\"\r\n (clicked)=\"submenu == 'crop' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-crop>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-flip [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'flip'\"\r\n (clicked)=\"submenu == 'flip' ? hideMenu($event) : showMenu($event)\">\r\n </tui-image-editor-menus-buttons-flip>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-rotate [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'rotate'\"\r\n (clicked)=\"submenu == 'rotate' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-rotate>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-shape [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'shape'\"\r\n (clicked)=\"submenu == 'shape' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-shape>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-icon [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'icon'\"\r\n (clicked)=\"submenu == 'icon' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-icon>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-mask [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'mask'\"\r\n (clicked)=\"submenu == 'mask' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-mask>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-filter [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'filter'\"\r\n (clicked)=\"submenu == 'filter' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-filter>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-download [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-download>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"sub-menu\">\r\n <div class=\"tui-image-editor-submenu new\" [style.right.px]=\"isMenuExpanded ? 160 : 80\"\r\n *ngIf=\"submenu != null && showSubmenu\">\r\n <tui-image-editor-submenus-crop *ngIf=\"submenu == 'crop'\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-submenus-crop>\r\n <tui-image-editor-submenus-flip *ngIf=\"submenu == 'flip'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-flip>\r\n <tui-image-editor-submenus-rotate *ngIf=\"submenu == 'rotate'\" [imageEditor]=\"imageEditor\"\r\n [(rotation)]=\"rotation\"></tui-image-editor-submenus-rotate>\r\n <tui-image-editor-submenus-draw *ngIf=\"submenu == 'draw'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-draw>\r\n <tui-image-editor-submenus-shape *ngIf=\"submenu == 'shape'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-shape>\r\n <tui-image-editor-submenus-icon *ngIf=\"submenu == 'icon'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-icon>\r\n <tui-image-editor-submenus-text *ngIf=\"submenu == 'text'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-text>\r\n <tui-image-editor-submenus-mask *ngIf=\"submenu == 'mask'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-mask>\r\n <tui-image-editor-submenus-filter *ngIf=\"submenu == 'filter'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-filter>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"toggler\" (click)=\"isMenuExpanded=!isMenuExpanded\" style=\"cursor: pointer;\">\r\n <svg *ngIf=\"!isMenuExpanded\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M0.864575 7.34425C0.503475 7.70535 0.503475 8.29473 0.864575 8.65583L7.93771 15.7287C8.29937 16.0904 8.88768 16.0904 9.2493 15.7287L9.64494 15.3331C10.0069 14.9711 10.007 14.3831 9.64498 14.0211L4.27939 8.65599C3.91733 8.29401 3.91733 7.7059 4.27939 7.34393L9.64494 1.97882C10.007 1.6168 10.007 1.02885 9.6449 0.66683L9.24926 0.27119C8.88816 -0.0899105 8.29877 -0.0899105 7.93767 0.27119L0.864575 7.34425ZM15.4293 0.27111C15.7907 -0.0903898 16.3796 -0.0903499 16.741 0.27111L17.1367 0.66675C17.498 1.02805 17.498 1.61744 17.1367 1.97878L11.7714 7.34393C11.4094 7.70595 11.4094 8.29398 11.7714 8.65599L17.1367 14.0211C17.4982 14.3825 17.4981 14.9717 17.1367 15.3331L16.7411 15.7288C16.3795 16.0904 15.7909 16.0904 15.4293 15.7288L8.98444 9.28372C7.17658 11.0898 7.63387 10.6318 8.98312 9.2824L8.35659 8.65583C7.99525 8.29449 7.99529 7.70554 8.35659 7.34421L15.4293 0.27111Z\"\r\n fill=\"#515355\" />\r\n </svg>\r\n <svg *ngIf=\"isMenuExpanded\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M17.1354 8.65575C17.4965 8.29465 17.4965 7.70527 17.1354 7.34417L10.0623 0.27127C9.70063 -0.0903886 9.11232 -0.0903885 8.7507 0.271271L8.35506 0.666911C7.99308 1.02889 7.993 1.61688 8.35502 1.97894L13.7206 7.34401C14.0827 7.70599 14.0827 8.2941 13.7206 8.65607L8.35506 14.0212C7.993 14.3832 7.99304 14.9712 8.3551 15.3332L8.75074 15.7288C9.11184 16.0899 9.70123 16.0899 10.0623 15.7288L17.1354 8.65575ZM2.57075 15.7289C2.20929 16.0904 1.62042 16.0904 1.25896 15.7289L0.863319 15.3333C0.50202 14.972 0.50198 14.3826 0.863319 14.0212L6.22863 8.65607C6.59065 8.29406 6.59065 7.70603 6.22863 7.34401L0.86328 1.9789C0.50182 1.61748 0.50186 1.02829 0.86328 0.666871L1.25892 0.27123C1.62054 -0.0903879 2.20909 -0.090428 2.57071 0.27123L9.01556 6.71628C10.8234 4.91023 10.3661 5.36824 9.01688 6.7176L9.64341 7.34417C10.0047 7.70551 10.0047 8.29446 9.64341 8.6558L2.57075 15.7289Z\"\r\n fill=\"#515355\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>", styles: ["::ng-deep .menu-background{height:181px;background-color:#f8f8f8;position:absolute;width:100%;bottom:-182px;z-index:2;display:flex;justify-content:center;align-items:center;border-radius:4px;color:#8d8f9e}::ng-deep .tui-image-editor-d-flex{display:flex!important}::ng-deep .tui-image-editor-flex-row{flex-direction:row!important}::ng-deep .tui-image-editor-flex-column{flex-direction:column!important}::ng-deep .tui-image-editor-flex-wrap{flex-wrap:wrap!important}::ng-deep .tui-image-editor-flex-nowrap{flex-wrap:wrap!important}::ng-deep .tui-image-editor-align-items-center{align-items:center!important}::ng-deep .tui-image-editor-align-self-center{align-self:center!important}::ng-deep .tui-image-editor-justify-content-center{justify-content:center!important}::ng-deep .tui-image-editor-justify-content-between{justify-content:space-between!important}::ng-deep .tui-image-editor-flex-grow-1{flex-grow:1!important;margin-block:4px;cursor:pointer;position:relative}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container{min-height:300px;border:1px solid #E8EAED}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container .lower-canvas{height:unset!important;width:unset!important;max-height:100%!important;max-width:100%!important;object-fit:contain!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container .upper-canvas{height:unset!important;width:unset!important;max-height:100%!important;max-width:100%!important;object-fit:contain!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}::ng-deep .tui-image-editor-flex-grow-1 .button-background{position:absolute;inset:0px;background-color:#eff0f6;background-image:url(../favicon.ico);background-repeat:no-repeat;background-position:center;z-index:2}::ng-deep .tui-image-editor-h-100{height:100%!important}::ng-deep .tui-image-editor-w-100{width:100%!important}::ng-deep .tui-image-editor-p-1{padding:.25rem!important}::ng-deep .tui-image-editor-pb-1{padding-bottom:.25rem!important}::ng-deep .tui-image-editor-pb-2{padding-bottom:.5rem!important}::ng-deep .tui-image-editor-pb-3{padding-bottom:1rem!important}::ng-deep .tui-image-editor-pt-1{padding-top:.25rem!important}::ng-deep .tui-image-editor-pt-2{padding-top:.5rem!important}::ng-deep .tui-image-editor-pt-3{padding-top:1rem!important}::ng-deep .tui-image-editor-py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}::ng-deep .tui-image-editor-py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}::ng-deep .tui-image-editor-py-3{padding-top:1rem!important;padding-bottom:1rem!important}::ng-deep .tui-image-editor-px-1{padding-left:.25rem!important;padding-right:.25rem!important}::ng-deep .tui-image-editor-px-2{padding-left:.5rem!important;padding-right:.5rem!important}::ng-deep .tui-image-editor-px-3{padding-left:1rem!important;padding-right:1rem!important}::ng-deep .tui-image-editor-my-2{margin-top:.5rem;margin-bottom:.5rem}::ng-deep .tui-image-editor-my-3{margin-top:1rem;margin-bottom:1rem}::ng-deep .tui-image-editor-my-3.apply{display:none}::ng-deep .tui-image-editor-mb-2{margin-bottom:.5rem}::ng-deep .tui-image-editor-mb-3{margin-bottom:1rem}::ng-deep .tui-image-editor-container{background-color:#fff;border-radius:10px;position:relative}::ng-deep .tui-image-editor-container .tui-image-editor-submenu{background-color:#353535;position:absolute;width:100%;bottom:-176px;opacity:.8;height:181px;z-index:3}::ng-deep .tui-image-editor-container label{margin-bottom:0!important}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item.disabled{cursor:not-allowed}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .enabled svg:hover>use.hover,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .enabled:hover svg>use.hover,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .help.enabled svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .help:not(.enabled) svg>use.disabled{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu>.tui-image-editor-item.tui-image-editor-item-separator{width:10px;padding:0}::ng-deep .tui-image-editor-container .tui-image-editor-controls{width:100%;background-color:#dedede;border-bottom-left-radius:22px;border-bottom-right-radius:22px}::ng-deep .tui-image-editor-container .tui-image-editor-controls svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-controls svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-controls .active svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-controls>.tui-image-editor-menu{font-size:16px;justify-content:center}::ng-deep .tui-image-editor-container .tui-image-editor-menu .tui-image-editor-item.active,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item.active{background-color:#ef736b;transition:all .3s ease;border-radius:6px}::ng-deep .tui-image-editor-container .svg_ic-menu{width:24px;height:24px;fill:#8a8a8a;stroke:#8a8a8a}::ng-deep .tui-image-editor-container .svg_ic-submenu{width:32px;height:32px}::ng-deep .tui-image-editor-container .tui-image-editor-submenu use.normal.use-default{fill-rule:evenodd;fill:#8a8a8a;stroke:#8a8a8a}::ng-deep .tui-image-editor-container .tui-image-editor-submenu use.active.use-default{fill-rule:evenodd;fill:#e9e9e9;stroke:#e9e9e9}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu{margin:0 auto;text-align:center;vertical-align:middle;border-radius:20px;z-index:2}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.normal.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.normal.use-default{fill-rule:evenodd;fill:#3d3d3d;stroke:#3d3d3d}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.disabled.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.disabled.use-default{fill-rule:evenodd;fill:#434343;stroke:#434343}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.hover.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.hover.use-default{fill-rule:evenodd;fill:#e9e9e9;stroke:#e9e9e9}::ng-deep .tui-image-editor-container .tui-image-editor-icpartition{display:inline-block;background-color:#444;width:1px;height:24px}::ng-deep .tui-image-editor-container .tui-image-editor-partition>div{color:#3c3c3c;border-left:1px solid #3c3c3c}::ng-deep .tui-image-editor-container .tui-image-editor-partition>div{width:1px;height:52px;border-left:1px solid #3c3c3c;margin:0 8px}::ng-deep .tui-image-editor-container .tui-image-editor-item{position:relative;display:flex;border-radius:2px;padding:.25em .3em;cursor:pointer;margin:0 .25em;width:2em;height:2em;align-items:center;justify-content:center}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item{padding-left:.25em;padding-right:.25em;width:2em}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item{background-color:#f8f8f8;border-radius:20px;padding-left:4px;padding-right:4px;margin:4px}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item:first-child{display:none!important}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item tui-image-editor-menus-buttons-history{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu>.tui-image-editor-item{padding-left:.25em;padding-right:.25em}::ng-deep .tui-image-editor-container .tui-image-editor-load-btn{position:absolute;left:0;right:0;display:inline-block;top:0;bottom:0;width:100%;cursor:pointer;opacity:0}::ng-deep .tui-image-editor-container .tui-image-editor-menu{padding-top:.5rem;padding-bottom:.5rem;overflow-x:auto;margin-left:4px;margin-right:4px}::ng-deep .tui-image-editor-container .tui-image-editor-overflowable-x{overflow-x:auto}::ng-deep .tui-image-editor-container .tie-icon-add-button,::ng-deep .tui-image-editor-container .tie-icon-add-button *{cursor:pointer}::ng-deep .tui-image-editor-container .tie-mask-image-file,::ng-deep .tui-image-editor-container .tie-icon-image-file{opacity:0;position:absolute;width:100%;height:100%;border:1px solid #008000;cursor:inherit;left:0;top:0}::ng-deep .tui-image-editor-container .tui-image-editor-submenu-align:first-child label>span{width:70px;display:inline-block;cursor:pointer}::ng-deep .tui-image-editor-container .tui-image-editor-menu-shape{white-space:nowrap}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox-wrap.fixed-width{width:200px;white-space:normal}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox{display:inline-block;margin:.25rem 0;color:#8a8a8a;font-weight:lighter;font-size:11px}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox input[type=checkbox]:checked+span{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap label{vertical-align:baseline;font-size:11px;margin-right:7px;color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap .tui-image-editor-range-value{cursor:default;width:40px;height:24px;outline:none;border-radius:2px;box-shadow:none;border:1px solid #d5d5d5;text-align:center;background-color:#1c1c1c;color:#fff;font-weight:lighter;vertical-align:baseline;font-family:Noto Sans,sans-serif;margin-left:4px}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap .tui-image-editor-range-value{color:#fff;font-weight:lighter;font-size:11px;border:1px solid #353535;background-color:#207c80}::ng-deep .tui-image-editor-container input[type=range]{-webkit-appearance:none;background:transparent}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-thumb{-webkit-appearance:none}::ng-deep .tui-image-editor-container input[type=range]:focus{outline:none}::ng-deep .tui-image-editor-container input[type=range]::-ms-track{cursor:pointer;background:transparent;border-color:transparent;color:transparent}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer;margin-top:-6px}::ng-deep .tui-image-editor-container input[type=range]:disabled::-webkit-slider-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-webkit-slider-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-moz-range-thumb{border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer}::ng-deep .tui-image-editor-container input[type=range]:disabled::-moz-range-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-moz-range-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-ms-thumb{border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer}::ng-deep .tui-image-editor-container input[type=range]:disabled::-ms-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-ms-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-runnable-track{height:2px;cursor:pointer;background:#fff;border-radius:1.3px;border:.2px solid #fff}::ng-deep .tui-image-editor-container input[type=range]:disabled::-webkit-slider-runnable-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-webkit-slider-runnable-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]:focus::-webkit-slider-runnable-track{background:#fff}::ng-deep .tui-image-editor-container input[type=range]::-moz-range-track{height:2px;cursor:pointer;background:#fff;border-radius:1.3px;border:.2px solid #fff}::ng-deep .tui-image-editor-container input[type=range]:disabled::-moz-range-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-moz-range-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]::-ms-track{height:2px;cursor:pointer;background:transparent;border-color:transparent;border-width:16px 0;color:transparent}::ng-deep .tui-image-editor-container input[type=range]:disabled::-ms-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-ms-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]::-ms-fill-lower{background:#fff;border:.2px solid #fff;border-radius:2.6px}::ng-deep .tui-image-editor-container input[type=range]:focus::-ms-fill-lower{background:#fff}::ng-deep .tui-image-editor-container input[type=range]::-ms-fill-upper{background:#fff;border:.2px solid #fff;border-radius:2.6px}::ng-deep .tui-image-editor-container input[type=range]:focus::-ms-fill-upper{background:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.preset{margin:0 9px 0 5px}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button{position:relative;cursor:pointer;display:inline-block;font-weight:400;font-size:11px;margin:0 9px;text-align:center}::ng-deep .tui-image-editor-container .tui-image-editor-submenu svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-submenu svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover{cursor:pointer}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.apply svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.apply>label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active>label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button>label{color:#8a8a8a;font-weight:lighter}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-draw-color label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-color-stroke label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-color-fill label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-icon-color label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-text-color label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover svg>use.active,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover>label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active>label{color:#fff;cursor:pointer}::ng-deep .tie-crop-button .tui-image-editor-button.preset.active svg>use.active,::ng-deep .tie-crop-preset-button .tui-image-editor-button.preset.active svg>use.active{display:block}::ng-deep .tie-crop-preset-button>.preset>label{color:#fff;font-weight:lighter}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual{display:none;position:absolute;width:100%;height:100%;border:1px solid rgba(255,255,255,.7)}::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip,::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor{transition:none}::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-grid-visual,::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-grid-visual{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table{width:100%;height:100%;border-collapse:collapse}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td{border:1px solid rgba(255,255,255,.3)}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot:before{content:\"\";position:absolute;box-sizing:border-box;width:10px;height:10px;border:0;box-shadow:0 0 1px #0000004d;border-radius:100%;background-color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-top:before{top:-5px;left:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-top:before{top:-5px;right:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-bottom:before{bottom:-5px;left:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-bottom:before{bottom:-5px;right:-5px}::ng-deep .tie-text-color-picker,::ng-deep .tie-draw-color-picker,::ng-deep .tie-icon-color-picker,::ng-deep .tie-filter-tint-color-picker,::ng-deep .tie-filter-multiply-color-picker,::ng-deep .tie-filter-blend-color-picker{border-radius:100%;width:32px;height:32px;border:1px solid #1e1e1e;cursor:pointer;font-size:16px}::ng-deep .tie-panel-history{max-height:300px;overflow:auto;padding:.5rem 0}::ng-deep .tie-panel-history .history-list{margin-bottom:0;margin-top:0;list-style-type:none;padding-left:0;padding-right:0}::ng-deep .tie-panel-history .history-list .history-item{min-width:255px;padding:3px 0}::ng-deep .tie-panel-history .history-list .history-item.disabled-item{color:#333;opacity:.3}::ng-deep .tie-panel-history .history-list .history-item:not(:last-child){border-bottom:1px solid black}::ng-deep .tie-panel-history .history-list .history-item.selected-item{background-color:#eee}::ng-deep .tie-panel-history .history-list .history-item:hover{background-color:#e2e2e2}::ng-deep .tie-panel-history .history-list .history-item .history-item-text{flex:1;overflow:hidden;text-overflow:ellipsis;word-break:break-word}::ng-deep .tie-panel-history .history-list .history-item .history-item-text .history-item-text-details{font-size:.85em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item{padding-left:.5em;padding-right:.5em;cursor:pointer}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-icon{margin-right:.5em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-icon svg{width:1em;height:1em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-checkbox{margin-left:auto}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-checkbox svg{width:1em;height:1em;margin-left:.5em}::ng-deep .fade{transition:opacity .15s linear}::ng-deep .popover{position:absolute;top:0;left:0;z-index:10070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}::ng-deep .popover .arrow{position:absolute;display:block;width:1rem;height:.5rem}::ng-deep .popover .arrow:before,::ng-deep .popover .arrow:after{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}::ng-deep .bs-popover-top>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow{bottom:calc(-.5rem - 1px)}::ng-deep .bs-popover-top>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}::ng-deep .bs-popover-top>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}::ng-deep .bs-popover-end>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}::ng-deep .bs-popover-end>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}::ng-deep .bs-popover-end>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}::ng-deep .bs-popover-bottom>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow{top:calc(-.5rem - 1px)}::ng-deep .bs-popover-bottom>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}::ng-deep .bs-popover-bottom>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}::ng-deep .bs-popover-bottom .popover-header:before,::ng-deep .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f0f0f0}::ng-deep .bs-popover-start>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}::ng-deep .bs-popover-start>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}::ng-deep .bs-popover-start>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}::ng-deep .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid #d8d8d8;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}::ng-deep .popover-header:empty{display:none}::ng-deep .popover-body{padding:1rem;color:#212529}::ng-deep .tie-history-popover .popover-body{padding:0}::ng-deep .color-picker.open{z-index:1063}.new-template{display:flex;height:100%}.new-template ::ng-deep .tui-image-editor-overflowable-x{overflow-x:unset}.new-template ::ng-deep .color-picker{right:50px!important;top:5px!important;left:unset!important}.new-template .image-load-container{flex:1}.new-template .tools-container{border-left:1px solid #dcdfe4;width:80px;display:flex;align-items:center;justify-content:space-between;padding-top:15px;padding-bottom:15px;flex-direction:column}.new-template .tools-container .primary-tools{height:95%}.new-template .tools-container .primary-tools .selected-option{text-align:center}.new-template .tools-container .primary-tools .hr{height:1px;background-color:#dcdfe4;margin-top:10px}.new-template .tools-container .primary-tools .menu{height:90%;display:flex;flex-direction:column;flex-wrap:wrap-reverse;padding:15px;overflow-x:hidden;gap:15px}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item{border-radius:50%;border:1px solid #E8EAED}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item.active{background-color:#207c8026}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item.active .svg_ic-menu{fill:#207c80;stroke:#207c80}.new-template .tools-container .primary-tools .menu .tool-icon-group{border-radius:50px;border:1px solid #E8EAED}.new-template .tools-container .primary-tools .sub-menu .tui-image-editor-submenu.new{position:absolute;background-color:#353535;top:0;right:80px;z-index:1000;opacity:.8;color:#fff;width:-moz-fit-content;width:fit-content;padding:10px}\n"] }]
|
|
279
|
+
}], ctorParameters: function () { return [{ type: i1.HistoryService }]; }, propDecorators: { imageContainer: [{
|
|
280
|
+
type: ViewChild,
|
|
281
|
+
args: ['imageContainer']
|
|
282
|
+
}], loadBtn: [{
|
|
283
|
+
type: ViewChild,
|
|
284
|
+
args: ['loadBtn']
|
|
285
|
+
}], onInitialization: [{
|
|
286
|
+
type: Output
|
|
287
|
+
}], options: [{
|
|
288
|
+
type: Input
|
|
289
|
+
}], initialImage: [{
|
|
290
|
+
type: Input
|
|
291
|
+
}], template: [{
|
|
292
|
+
type: Input
|
|
293
|
+
}] } });
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVpLWltYWdlLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXIyL3NyYy9saWIvdHVpLWltYWdlLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy90dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXIyL3NyYy9saWIvdHVpLWltYWdlLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBRUwsZUFBZSxFQUVmLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxHQUVaLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFDTCxjQUFjLEVBRWQsa0JBQWtCLEVBQ2xCLGVBQWUsR0FDaEIsTUFBTSxTQUFTLENBQUM7QUFDakIsbURBQW1EO0FBQ25ELE9BQU8sV0FBVyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRM0MsTUFBTSxPQUFPLHVCQUF1QjtJQThEbEMsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBekR4QyxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxZQUFPLEdBY1o7WUFDRixlQUFlLEVBQUUsS0FBSztZQUN0QixjQUFjLEVBQUU7Z0JBQ2QsV0FBVyxFQUFFLFFBQVE7Z0JBQ3JCLFVBQVUsRUFBRSxFQUFFO2dCQUNk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QUFtQjtRQUNuQix3REFBd0Q7UUFFeEQsZ0NBQWdDO1FBQ2hDLCtCQUErQjtRQUMvQix3Q0FBd0M7UUFDeEMsbUNBQW1DO1FBQ25DLFFBQVE7UUFDUixJQUFJO0lBQ04sQ0FBQzs7b0hBOVdVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGtMQUZ2QixDQUFDLGNBQWMsQ0FBQyxzUEMxQzdCLCswb0JBOFBjOzJGRGxORCx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usa0JBQWtCLGFBR2pCLENBQUMsY0FBYyxDQUFDO3FHQUtFLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNMLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDVixnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0UsT0FBTztzQkFBZixLQUFLO2dCQTZCRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgY3JvcE1vZGVzLFxyXG4gIGRlZmF1bHRJY29uUGF0aCxcclxuICBkcmF3aW5nTW9kZXMsXHJcbiAgZXZlbnROYW1lcyxcclxuICBoaXN0b3J5TmFtZXMsXHJcbiAgb2JqZWN0VHlwZXMsXHJcbiAgem9vbU1vZGVzLFxyXG59IGZyb20gJy4vY29uc3RzJztcclxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9jb21tYW5kJztcclxuaW1wb3J0IHsgSGlzdG9yeUl0ZW0sIEhpc3RvcnlJdGVtVHlwZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9oaXN0b3J5LWl0ZW0nO1xyXG5pbXBvcnQgeyBJbWFnZVNpemUgfSBmcm9tICcuL2ludGVyZmFjZXMvaW1hZ2Utc2l6ZSc7XHJcbmltcG9ydCB7IEhpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9oaXN0b3J5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL3N1Ym1lbnVzL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IGhlaWMyYW55IGZyb20gXCJoZWljMmFueVwiO1xyXG5pbXBvcnQge1xyXG4gIGNsZWFyU2VsZWN0aW9uLFxyXG4gIGRhdGFVcmxUb0Jsb2IsXHJcbiAgaXNGaWxlQXBpU3VwcG9ydGVkLFxyXG4gIGlzU2lsZW50Q29tbWFuZCxcclxufSBmcm9tICcuL3V0aWxzJztcclxuLy8gY29uc3QgSW1hZ2VFZGl0b3IgPSByZXF1aXJlKCd0dWktaW1hZ2UtZWRpdG9yJyk7XHJcbmltcG9ydCBJbWFnZUVkaXRvciBmcm9tICd0dWktaW1hZ2UtZWRpdG9yJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHVpLWltYWdlLWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICd0dWktaW1hZ2UtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsndHVpLWltYWdlLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW0hpc3RvcnlTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFR1aUltYWdlRWRpdG9yQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XHJcbntcclxuICBAVmlld0NoaWxkKCdpbWFnZUNvbnRhaW5lcicpIGltYWdlQ29udGFpbmVyOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2xvYWRCdG4nKSBsb2FkQnRuOiBFbGVtZW50UmVmO1xyXG4gIEBPdXRwdXQoKSBvbkluaXRpYWxpemF0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBvcHRpb25zOiB7XHJcbiAgICB1c2FnZVN0YXRpc3RpY3M6IGJvb2xlYW47XHJcbiAgICBzZWxlY3Rpb25TdHlsZT86IHtcclxuICAgICAgY29ybmVyU3R5bGU6IHN0cmluZztcclxuICAgICAgY29ybmVyU2l6ZTogbnVtYmVyO1xyXG4gICAgICBjb3JuZXJDb2xvcjogc3RyaW5nO1xyXG4gICAgICBjb3JuZXJTdHJva2VDb2xvcjogc3RyaW5nO1xyXG4gICAgICB0cmFuc3BhcmVudENvcm5lcnM6IGJvb2xlYW47XHJcbiAgICAgIGxpbmVXaWR0aDogbnVtYmVyO1xyXG4gICAgICBib3JkZXJDb2xvcjogc3RyaW5nO1xyXG4gICAgICByb3RhdGluZ1BvaW50T2Zmc2V0OiBudW1iZXI7XHJcbiAgICB9O1xyXG4gICAgYXBwbHlDcm9wU2VsZWN0aW9uU3R5bGU6IGJvb2xlYW47XHJcbiAgICBhcHBseUdyb3VwU2VsZWN0aW9uU3R5bGU6IGJvb2xlYW47XHJcbiAgfSA9IHtcclxuICAgIHVzYWdlU3RhdGlzdGljczogZmFsc2UsXHJcbiAgICBzZWxlY3Rpb25TdHlsZToge1xyXG4gICAgICBjb3JuZXJTdHlsZTogJ2NpcmNsZScsXHJcbiAgICAgIGNvcm5lclNpemU6IDMyLFxyXG4gICAgICBjb3JuZXJDb2xvcjogJyNmZmYnLFxyXG4gICAgICBjb3JuZXJTdHJva2VDb2xvcjogJyNmZmYnLFxyXG4gICAgICB0cmFuc3BhcmVudENvcm5lcnM6IGZhbHNlLFxyXG4gICAgICBsaW5lV2lkdGg6IDQsXHJcbiAgICAgIGJvcmRlckNvbG9yOiAnI2ZmZicsXHJcbiAgICAgIHJvdGF0aW5nUG9pbnRPZmZzZXQ6IDUwMCxcclxuICAgIH0sXHJcbiAgICBhcHBseUNyb3BTZWxlY3Rpb25TdHlsZTogdHJ1ZSxcclxuICAgIGFwcGx5R3JvdXBTZWxlY3Rpb25TdHlsZTogdHJ1ZSxcclxuICB9O1xyXG4gIEBJbnB1dCgpIGluaXRpYWxJbWFnZTogc3RyaW5nIHwgRmlsZTtcclxuICBASW5wdXQoKSB0ZW1wbGF0ZT0nZGVmYXVsdCc7XHJcbiAgcHVibGljIGltYWdlRWRpdG9yOiBhbnk7XHJcbiAgcHVibGljIGltYWdlTG9hZGVkPSBmYWxzZTtcclxuICBwdWJsaWMgaW5pdGlhbGl6ZUltZ1VybDogc3RyaW5nID0gbnVsbDtcclxuICBwdWJsaWMgaW1hZ2VDaG9zZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgYWN0aXZlT2JqZWN0SWQ6IG51bWJlcjtcclxuICBwdWJsaWMgc3VibWVudTpcclxuICAgIHwgJ2Nyb3AnXHJcbiAgICB8ICdmbGlwJ1xyXG4gICAgfCAncm90YXRlJ1xyXG4gICAgfCAnZmlsdGVyJ1xyXG4gICAgfCAndGV4dCdcclxuICAgIHwgJ2ljb24nXHJcbiAgICB8ICdzaGFwZSdcclxuICAgIHwgJ2RyYXcnXHJcbiAgICB8ICdtYXNrJ1xyXG4gICAgfCBudWxsO1xyXG4gIHNob3dTdWJtZW51PWZhbHNlO1xyXG4gIGlzTWVudUV4cGFuZGVkPWZhbHNlO1xyXG4gIHB1YmxpYyByb3RhdGlvbjogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgb25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyOiBhbnk7XHJcbiAgcHVibGljIG9uRXhlY3V0ZUNvbW1hbmRFdmVudExpc3RlbmVyOiBhbnk7XHJcbiAgcHVibGljIG9uQWZ0ZXJVbmRvRXZlbnRMaXN0ZW5lcjogYW55O1xyXG4gIHB1YmxpYyBvbkFmdGVyUmVkb0V2ZW50TGlzdGVuZXI6IGFueTtcclxuICBwcml2YXRlIGhpc3RvcnlTZXJ2aWNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaGlzdG9yeVNlcnZpY2U6IEhpc3RvcnlTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLm9uT2JqZWN0QWN0aXZhdGVkRXZlbnRMaXN0ZW5lciA9IHRoaXMub25PYmplY3RBY3RpdmF0ZWQuYmluZCh0aGlzKTtcclxuICAgIHRoaXMub25FeGVjdXRlQ29tbWFuZEV2ZW50TGlzdGVuZXIgPSB0aGlzLm9uRXhlY3V0ZUNvbW1hbmQuYmluZCh0aGlzKTtcclxuICAgIHRoaXMub25BZnRlclVuZG9FdmVudExpc3RlbmVyID0gdGhpcy5vbkFmdGVyVW5kby5iaW5kKHRoaXMpO1xyXG4gICAgdGhpcy5vbkFmdGVyUmVkb0V2ZW50TGlzdGVuZXIgPSB0aGlzLm9uQWZ0ZXJSZWRvLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGlzdG9yeVNlcnZpY2VTdWJzY3JpcHRpb24gPVxyXG4gICAgICB0aGlzLmhpc3RvcnlTZXJ2aWNlLm9uQ2hhbmdlRW1pdHRlci5zdWJzY3JpYmUoKGl0ZW1zKSA9PlxyXG4gICAgICAgIHRoaXMub25BY3RpdmVIaXN0b3J5RWxlbWVudENoYW5nZWQoaXRlbXMpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIChjaGFuZ2VzWydvcHRpb25zJ10gJiYgY2hhbmdlc1snb3B0aW9ucyddLmZpcnN0Q2hhbmdlID09IGZhbHNlKSB8fFxyXG4gICAgICAoY2hhbmdlc1snaW5pdGlhbEltYWdlJ10gJiYgY2hhbmdlc1snaW5pdGlhbEltYWdlJ10uZmlyc3RDaGFuZ2UgPT0gZmFsc2UpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5kZXN0cm95SW1hZ2VFZGl0b3IoKTtcclxuICAgICAgdGhpcy5pbml0aWFsaXplSW1hZ2VFZGl0b3IoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVJbWFnZUVkaXRvcigpIHtcclxuICAgIHRoaXMuaGlzdG9yeVNlcnZpY2UuY2xlYXIoKTtcclxuXHJcbiAgICB0aGlzLmltYWdlRWRpdG9yID0gbmV3IEltYWdlRWRpdG9yKFxyXG4gICAgICB0aGlzLmltYWdlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIHRoaXMub3B0aW9uc1xyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLm9uSW5pdGlhbGl6YXRpb24uZW1pdCh7XHJcbiAgICAgIGltYWdlRWRpdG9yOnRoaXMuaW1hZ2VFZGl0b3JcclxuICAgIH0pXHJcblxyXG4gICAgY29uc29sZS5kZWJ1Zyh0aGlzLmltYWdlRWRpdG9yKTtcclxuXHJcbiAgICB0aGlzLmltYWdlRWRpdG9yLnJlZ2lzdGVySWNvbnMoZGVmYXVsdEljb25QYXRoKTtcclxuXHJcbiAgICB0aGlzLmltYWdlRWRpdG9yLm9uKFxyXG4gICAgICBldmVudE5hbWVzLk9CSkVDVF9BQ1RJVkFURUQsXHJcbiAgICAgIHRoaXMub25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyXHJcbiAgICApO1xyXG4gICAgdGhpcy5pbWFnZUVkaXRvci5faW52b2tlci5vbihcclxuICAgICAgZXZlbnROYW1lcy5FWEVDVVRFX0NPTU1BTkQsXHJcbiAgICAgIHRoaXMub25FeGVjdXRlQ29tbWFuZEV2ZW50TGlzdGVuZXJcclxuICAgICk7XHJcbiAgICB0aGlzLmltYWdlRWRpdG9yLl9pbnZva2VyLm9uKFxyXG4gICAgICBldmVudE5hbWVzLkFGVEVSX1VORE8sXHJcbiAgICAgIHRoaXMub25BZnRlclVuZG9FdmVudExpc3RlbmVyXHJcbiAgICApO1xyXG4gICAgdGhpcy5pbWFnZUVkaXRvci5faW52b2tlci5vbihcclxuICAgICAgZXZlbnROYW1lcy5BRlRFUl9SRURPLFxyXG4gICAgICB0aGlzLm9uQWZ0ZXJSZWRvRXZlbnRMaXN0ZW5lclxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy5pbml0aWFsSW1hZ2UgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmxvYWRJbWFnZSh0aGlzLmluaXRpYWxJbWFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXN0cm95SW1hZ2VFZGl0b3IoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnRElTUE9TSU5HIElNQUdFIEVESVRPUi4uLicpO1xyXG4gICAgaWYgKHRoaXMuaW1hZ2VFZGl0b3IgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmltYWdlRWRpdG9yLm9mZihcclxuICAgICAgICBldmVudE5hbWVzLk9CSkVDVF9BQ1RJVkFURUQsXHJcbiAgICAgICAgdGhpcy5vbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXJcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5faW52b2tlci5vZmYoXHJcbiAgICAgICAgZXZlbnROYW1lcy5FWEVDVVRFX0NPTU1BTkQsXHJcbiAgICAgICAgdGhpcy5vbkV4ZWN1dGVDb21tYW5kRXZlbnRMaXN0ZW5lclxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmltYWdlRWRpdG9yLl9pbnZva2VyLm9mZihcclxuICAgICAgICBldmVudE5hbWVzLkFGVEVSX1VORE8sXHJcbiAgICAgICAgdGhpcy5vbkFmdGVyVW5kb0V2ZW50TGlzdGVuZXJcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5faW52b2tlci5vZmYoXHJcbiAgICAgICAgZXZlbnROYW1lcy5BRlRFUl9SRURPLFxyXG4gICAgICAgIHRoaXMub25BZnRlclJlZG9FdmVudExpc3RlbmVyXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMuaW1hZ2VFZGl0b3IuX2dyYXBoaWNzLl9jYW52YXM7XHJcbiAgICAgIHRoaXMuaW1hZ2VFZGl0b3IuZGVzdHJveSgpO1xyXG4gICAgICBjYW52YXMuZGlzcG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdmFyIHRoYXQgPSB0aGlzO1xyXG4gICAgdGhpcy5sb2FkQnRuLm5hdGl2ZUVsZW1lbnQuc3R5bGUuekluZGV4ID0gJzEnXHJcbiAgICB0aGlzLmltYWdlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuekluZGV4ID0gJy0xJ1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyAgIHRoaXMuaW1hZ2VFZGl0b3Iub24oZXZlbnROYW1lcy5TRUxFQ1RJT05fQ0xFQVJFRCwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAvLyAgICAgdGhhdC5hY3RpdmVPYmplY3RJZCA9IG51bGw7XHJcbiAgICAgIC8vICAgICBpZiAodGhhdC5zdWJtZW51ID09PSAndGV4dCcpIHtcclxuICAgICAgLy8gICAgICAgdGhhdC5pbWFnZUVkaXRvci5jaGFuZ2VDdXJzb3IoJ3RleHQnKTtcclxuICAgICAgLy8gICAgIH0gZWxzZSBpZiAodGhhdC5zdWJtZW51ICE9PSAnZHJhdycgJiYgdGhhdC5zdWJtZW51ICE9PSAnY3JvcCcpIHtcclxuICAgICAgLy8gICAgICAgdGhhdC5pbWFnZUVkaXRvci5zdG9wRHJhd2luZ01vZGUoKTtcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9KTtcclxuICAgICAgdGhhdC5pbml0aWFsaXplSW1hZ2VFZGl0b3IoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbml0aWFsaXplSW1nVXJsICE9IG51bGwpIHtcclxuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLmluaXRpYWxpemVJbWdVcmwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kZXN0cm95SW1hZ2VFZGl0b3IoKTtcclxuICAgIHRoaXMuaGlzdG9yeVNlcnZpY2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uT2JqZWN0QWN0aXZhdGVkKHByb3BzKSB7XHJcbiAgICBjb25zb2xlLmRlYnVnKHByb3BzKTtcclxuICAgIHRoaXMuYWN0aXZlT2JqZWN0SWQgPSBwcm9wcz8uaWQ7XHJcbiAgICBpZiAocHJvcHM/LmlkICE9IG51bGwpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIG9iamVjdFR5cGVzLnNoYXBlUmVjdCxcclxuICAgICAgICAgIG9iamVjdFR5cGVzLnNoYXBlQ2lyY2xlLFxyXG4gICAgICAgICAgb2JqZWN0VHlwZXMuc2hhcGVUcmlhbmdsZSxcclxuICAgICAgICBdLmluZGV4T2YocHJvcHMudHlwZSkgPiAtMVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNob3dNZW51KCdzaGFwZScsIGZhbHNlKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwcm9wcy50eXBlID09PSBvYmplY3RUeXBlcy5saW5lIHx8XHJcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gb2JqZWN0VHlwZXMuc3RyYWlnaHRMaW5lXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2hvd01lbnUoJ2RyYXcnLCBmYWxzZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gb2JqZWN0VHlwZXMuaXRleHQgfHxcclxuICAgICAgICBwcm9wcy50eXBlID09PSBvYmplY3RUeXBlcy50ZXh0XHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2hvd01lbnUoJ3RleHQnLCBmYWxzZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gb2JqZWN0VHlwZXMuaWNvbikge1xyXG4gICAgICAgIHRoaXMuc2hvd01lbnUoJ2ljb24nLCBmYWxzZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gb2JqZWN0VHlwZXMuaW1hZ2UpIHtcclxuICAgICAgICB0aGlzLnNob3dNZW51KCdtYXNrJywgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uRXhlY3V0ZUNvbW1hbmQoY29tbWFuZDogc3RyaW5nIHwgQ29tbWFuZCkge1xyXG4gICAgaWYgKCFpc1NpbGVudENvbW1hbmQoY29tbWFuZCkpIHtcclxuICAgICAgdGhpcy5oaXN0b3J5U2VydmljZS5hZGQoY29tbWFuZCwgdGhpcy5pbWFnZUVkaXRvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQWZ0ZXJVbmRvKCkge1xyXG4gICAgdGhpcy5oaXN0b3J5U2VydmljZS5wcmV2KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQWZ0ZXJSZWRvKCkge1xyXG4gICAgdGhpcy5oaXN0b3J5U2VydmljZS5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBvbkxvYWQoZXZlbnQ6YW55KXtcclxuICAgIHRoaXMubG9hZEJ0bi5uYXRpdmVFbGVtZW50LnN0eWxlLnpJbmRleCA9ICctMSdcclxuICAgIHRoaXMuaW1hZ2VDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS56SW5kZXggPSAnMSdcclxuICAgIHRoaXMubG9hZEltYWdlKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGxvYWRJbWFnZShmaWxlOiBzdHJpbmcgfCBGaWxlIHwgQmxvYikge1xyXG4gICAgY29uc3QgdHlwZT0oPGFueT5maWxlKT8ubmFtZT8uc3BsaXQoJy4nKS5wb3AoKTtcclxuICAgIGlmKHR5cGU/LnRvTG93ZXJDYXNlKCk9PT0naGVpYycpe1xyXG4gICAgICBoZWljMmFueSh7YmxvYjo8QmxvYj5maWxlfSkudGhlbihkYXRhPT57XHJcbiAgICAgICAgZmlsZT08QmxvYj5kYXRhO1xyXG4gICAgICAgIHRoaXMudXBsb2FkSU1hZ2UoZmlsZSk7XHJcbiAgICAgIH0pLmNhdGNoKGVycj0+e1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRXJyXCIsZXJyKVxyXG4gICAgICB9KVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMudXBsb2FkSU1hZ2UoZmlsZSk7XHJcbiAgICB9IFxyXG4gIH1cclxuXHJcbiAgdXBsb2FkSU1hZ2UoZmlsZTpzdHJpbmcgfCBGaWxlIHwgQmxvYil7XHJcbiAgICBpZiAoZmlsZSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBpbWFnZVVybDogc3RyaW5nID0gbnVsbDtcclxuICAgICAgaWYgKHR5cGVvZiBmaWxlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGltYWdlVXJsID0gZmlsZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIWlzRmlsZUFwaVN1cHBvcnRlZCgpKSB7XHJcbiAgICAgICAgICBhbGVydCgnVGhpcyBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZmlsZS1hcGknKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaW1hZ2VVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5pbml0aWFsaXplSW1nVXJsICE9IG51bGwgJiYgaW1hZ2VVcmwgIT0gdGhpcy5pbml0aWFsaXplSW1nVXJsKSB7XHJcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLmluaXRpYWxpemVJbWdVcmwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmluaXRpYWxpemVJbWdVcmwgPSBpbWFnZVVybDtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvclxyXG4gICAgICAgIC5sb2FkSW1hZ2VGcm9tVVJMKHRoaXMuaW5pdGlhbGl6ZUltZ1VybCwgJ1JhbmRvbUZpbGVOYW1lJylcclxuICAgICAgICAudGhlbigoc2l6ZVZhbHVlOiBJbWFnZVNpemUpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VDaG9zZW4gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93TWVudSgnZHJhdycsZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5leGl0Q3JvcE9uQWN0aW9uKCk7XHJcbiAgICAgICAgICB0aGlzLmltYWdlRWRpdG9yLmNsZWFyVW5kb1N0YWNrKCk7XHJcbiAgICAgICAgICB0aGlzLmltYWdlRWRpdG9yLmNsZWFyUmVkb1N0YWNrKCk7XHJcbiAgICAgICAgICB0aGlzLmhpc3RvcnlTZXJ2aWNlLmNsZWFyKCk7XHJcbiAgICAgICAgICB0aGlzLmltYWdlRWRpdG9yLl9pbnZva2VyLmZpcmUoXHJcbiAgICAgICAgICAgIGV2ZW50TmFtZXMuRVhFQ1VURV9DT01NQU5ELFxyXG4gICAgICAgICAgICBoaXN0b3J5TmFtZXMuTE9BRF9JTUFHRVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIFsnY2F0Y2gnXSgobWVzc2FnZSkgPT4gUHJvbWlzZS5yZWplY3QobWVzc2FnZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRJbWFnZSgpIHtcclxuICAgIGlmICh0aGlzLmluaXRpYWxpemVJbWdVcmwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmxvYWRJbWFnZSh0aGlzLmluaXRpYWxpemVJbWdVcmwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2UoXHJcbiAgICBvcHRpb25zOiB7XHJcbiAgICAgIGZvcm1hdDogJ2pwZWcnIHwgJ3BuZyc7XHJcbiAgICAgIHF1YWxpdHk6IG51bWJlcjtcclxuICAgICAgbXVsdGlwbGllcjogbnVtYmVyO1xyXG4gICAgICBsZWZ0PzogbnVtYmVyO1xyXG4gICAgICB0b3A/OiBudW1iZXI7XHJcbiAgICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgICBoZWlnaHQ/OiBudW1iZXI7XHJcbiAgICB9ID0ge1xyXG4gICAgICBmb3JtYXQ6ICdwbmcnLFxyXG4gICAgICBxdWFsaXR5OiAxLFxyXG4gICAgICBtdWx0aXBsaWVyOiAxLFxyXG4gICAgfVxyXG4gICk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5pbWFnZUNob3Nlbikge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbWFnZUVkaXRvci50b0RhdGFVUkwob3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV4aXRDcm9wT25BY3Rpb24oKSB7XHJcbiAgICB0aGlzLmhpZGVNZW51KCdjcm9wJyk7XHJcbiAgfVxyXG5cclxuICBoaWRlTWVudShcclxuICAgIG1lbnVOYW1lOlxyXG4gICAgICB8ICdjcm9wJ1xyXG4gICAgICB8ICdmbGlwJ1xyXG4gICAgICB8ICdyb3RhdGUnXHJcbiAgICAgIHwgJ2ZpbHRlcidcclxuICAgICAgfCAndGV4dCdcclxuICAgICAgfCAnaWNvbidcclxuICAgICAgfCAnc2hhcGUnXHJcbiAgICAgIHwgJ2RyYXcnXHJcbiAgICAgIHwgJ21hc2snXHJcbiAgICAgIHwgbnVsbFxyXG4gICkge1xyXG4gICAgaWYgKHRoaXMuc3VibWVudSA9PSBtZW51TmFtZSkge1xyXG4gICAgICB0aGlzLnN1Ym1lbnUgPSBudWxsO1xyXG4gICAgICB0aGlzLnNob3dTdWJtZW51PWZhbHNlO1xyXG4gICAgICBjbGVhclNlbGVjdGlvbih0aGlzLmltYWdlRWRpdG9yKTtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5zdG9wRHJhd2luZ01vZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQWN0aXZlSGlzdG9yeUVsZW1lbnRDaGFuZ2VkKGl0ZW1zOiBIaXN0b3J5SXRlbVtdKSB7XHJcbiAgICBsZXQgcm90YXRpb25FdmVudHMgPSBpdGVtcy5maWx0ZXIoKGkpID0+IGkudHlwZSA9PT0gSGlzdG9yeUl0ZW1UeXBlLlJvdGF0ZSk7XHJcbiAgICBpZiAocm90YXRpb25FdmVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgbGFzdFJvdGF0aW9uRXZlbnQgPSByb3RhdGlvbkV2ZW50c1tyb3RhdGlvbkV2ZW50cy5sZW5ndGggLSAxXTtcclxuICAgICAgdGhpcy5yb3RhdGlvbiA9IGxhc3RSb3RhdGlvbkV2ZW50LmFyZ3NbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvdGF0aW9uID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dNZW51KFxyXG4gICAgbWVudU5hbWU6XHJcbiAgICAgIHwgJ2Nyb3AnXHJcbiAgICAgIHwgJ2ZsaXAnXHJcbiAgICAgIHwgJ3JvdGF0ZSdcclxuICAgICAgfCAnZmlsdGVyJ1xyXG4gICAgICB8ICd0ZXh0J1xyXG4gICAgICB8ICdpY29uJ1xyXG4gICAgICB8ICdzaGFwZSdcclxuICAgICAgfCAnZHJhdydcclxuICAgICAgfCAnbWFzaydcclxuICAgICAgfCBudWxsLFxyXG4gICAgZGlzY2FyZFNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIHRoaXMuc3VibWVudSA9IG1lbnVOYW1lO1xyXG4gICAgdGhpcy5zaG93U3VibWVudT10cnVlO1xyXG4gICAgaWYgKGRpc2NhcmRTZWxlY3Rpb24pIHtcclxuICAgICAgY2xlYXJTZWxlY3Rpb24odGhpcy5pbWFnZUVkaXRvcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmltYWdlRWRpdG9yLnN0b3BEcmF3aW5nTW9kZSgpO1xyXG4gICAgLy90aGlzLnN0b3BTaGFwZSgpO1xyXG4gICAgLy8gdGhpcy5fY2hhbmdlTWVudShtZW51TmFtZSwgdG9nZ2xlLCBkaXNjYXJkU2VsZWN0aW9uKTtcclxuXHJcbiAgICAvLyBpZiAodGhpcy5zdWJtZW51ID09ICdkcmF3Jykge1xyXG4gICAgLy8gICB0aGlzLnNldERyYXdNb2RlKCdmcmVlJywge1xyXG4gICAgLy8gICAgIHdpZHRoOiB0aGlzLmRyYXdTdHJva2VXaWR0aFZhbHVlLFxyXG4gICAgLy8gICAgIGNvbG9yOiB0aGlzLmRyYXdTdHJva2VDb2xvcixcclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJ0ZW1wbGF0ZT09PSdkZWZhdWx0JztlbHNlIG5ld0ltYWdlRWRpdG9yXCJcclxuICBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItZmxleC1jb2x1bW4gdHVpLWltYWdlLWVkaXRvci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItaC0xMDAgdHVpLWltYWdlLWVkaXRvci13LTEwMCB0dWktaW1hZ2UtZWRpdG9yLWNvbnRhaW5lclwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvdyB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtd3JhcCB0dWktaW1hZ2UtZWRpdG9yLWp1c3RpZnktY29udGVudC1jZW50ZXIgdHVpLWltYWdlLWVkaXRvci1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLWhlbHAtbWVudSB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtcm93IHR1aS1pbWFnZS1lZGl0b3ItZmxleC13cmFwIHR1aS1pbWFnZS1lZGl0b3ItYWxpZ24taXRlbXMtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItanVzdGlmeS1jb250ZW50LWNlbnRlciB0dWktaW1hZ2UtZWRpdG9yLXAtMVwiPlxyXG4gICAgICA8ZGl2PjwvZGl2PlxyXG4gICAgICA8IS0tIDxkaXYgI2xvYWRCdG4gc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7XCJcclxuICAgICAgICBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItaGVscC1tZW51LWl0ZW0gdHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvdyB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1sb2FkIChsb2FkSW1hZ2UpPVwibG9hZEltYWdlKCRldmVudClcIj48L3R1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1sb2FkPlxyXG4gICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZG93bmxvYWQgW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCJcclxuICAgICAgICAgIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWRvd25sb2FkPlxyXG4gICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItaGVscC1tZW51LWl0ZW0gdHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvdyB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy16b29tLWluIFtpbWFnZUNob3Nlbl09XCJpbWFnZUNob3NlblwiXHJcbiAgICAgICAgICBbaW1hZ2VFZGl0b3JdPVwiaW1hZ2VFZGl0b3JcIj48L3R1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy16b29tLWluPlxyXG4gICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtem9vbS1vdXQgW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCJcclxuICAgICAgICAgIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLXpvb20tb3V0PlxyXG4gICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZHJhZyBbaW1hZ2VDaG9zZW5dPVwiaW1hZ2VDaG9zZW5cIlxyXG4gICAgICAgICAgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZHJhZz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItaGVscC1tZW51LWl0ZW0gdHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvdyB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1oaXN0b3J5IFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWhpc3Rvcnk+XHJcbiAgICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy11bmRvIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiXHJcbiAgICAgICAgICAoY2FuY2VsQ3JvcHBpbmdSZXF1ZXN0ZWQpPVwiZXhpdENyb3BPbkFjdGlvbigpXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtdW5kbz5cclxuICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLXJlZG8gW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCJcclxuICAgICAgICAgIChjYW5jZWxDcm9wcGluZ1JlcXVlc3RlZCk9XCJleGl0Q3JvcE9uQWN0aW9uKClcIj48L3R1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1yZWRvPlxyXG4gICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtcmVzZXQgW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCIgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCJcclxuICAgICAgICAgIChjYW5jZWxDcm9wcGluZ1JlcXVlc3RlZCk9XCJleGl0Q3JvcE9uQWN0aW9uKClcIlxyXG4gICAgICAgICAgKHJlc2V0SW1hZ2UpPVwicmVzZXRJbWFnZSgpXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtcmVzZXQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLWhlbHAtbWVudS1pdGVtIHR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItZmxleC1yb3cgdHVpLWltYWdlLWVkaXRvci1mbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZGVsZXRlIFtpbWFnZUNob3Nlbl09XCJpbWFnZUNob3NlblwiIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiXHJcbiAgICAgICAgICAoY2FuY2VsQ3JvcHBpbmdSZXF1ZXN0ZWQpPVwiZXhpdENyb3BPbkFjdGlvbigpXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZGVsZXRlPlxyXG4gICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZGVsZXRlLWFsbCBbaW1hZ2VDaG9zZW5dPVwiaW1hZ2VDaG9zZW5cIiBbaW1hZ2VFZGl0b3JdPVwiaW1hZ2VFZGl0b3JcIlxyXG4gICAgICAgICAgKGNhbmNlbENyb3BwaW5nUmVxdWVzdGVkKT1cImV4aXRDcm9wT25BY3Rpb24oKVwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWRlbGV0ZS1hbGw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSA8ZGl2ICNpbWFnZUNvbnRhaW5lclxyXG4gICAgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLWZsZXgtZ3Jvdy0xIHR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItYWxpZ24taXRlbXMtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItanVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0XT1cIicwJ1wiPjwvZGl2PiAtLT5cclxuICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7aGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgPGRpdiAjbG9hZEJ0biBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtcIlxyXG4gICAgICAgIGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1oZWxwLW1lbnUtaXRlbSB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtcm93IHR1aS1pbWFnZS1lZGl0b3ItZmxleC1ub3dyYXBcIj5cclxuICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWxvYWQgKGxvYWRJbWFnZSk9XCJvbkxvYWQoJGV2ZW50KVwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWxvYWQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO2hlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7XCIgI2ltYWdlQ29udGFpbmVyXHJcbiAgICAgICAgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLWZsZXgtZ3Jvdy0xIHR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItYWxpZ24taXRlbXMtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVcIiAqbmdJZj1cInN1Ym1lbnUgIT0gbnVsbFwiPlxyXG4gICAgPHR1aS1pbWFnZS1lZGl0b3Itc3VibWVudXMtY3JvcCAqbmdJZj1cInN1Ym1lbnUgPT0gJ2Nyb3AnXCIgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCJcclxuICAgICAgKGNhbmNlbENyb3BwaW5nUmVxdWVzdGVkKT1cImV4aXRDcm9wT25BY3Rpb24oKVwiPjwvdHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1jcm9wPlxyXG4gICAgPHR1aS1pbWFnZS1lZGl0b3Itc3VibWVudXMtZmxpcCAqbmdJZj1cInN1Ym1lbnUgPT0gJ2ZsaXAnXCJcclxuICAgICAgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCI+PC90dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWZsaXA+XHJcbiAgICA8dHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1yb3RhdGUgKm5nSWY9XCJzdWJtZW51ID09ICdyb3RhdGUnXCIgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCJcclxuICAgICAgWyhyb3RhdGlvbildPVwicm90YXRpb25cIj48L3R1aS1pbWFnZS1lZGl0b3Itc3VibWVudXMtcm90YXRlPlxyXG4gICAgPHR1aS1pbWFnZS1lZGl0b3Itc3VibWVudXMtZHJhdyAqbmdJZj1cInN1Ym1lbnUgPT0gJ2RyYXcnXCJcclxuICAgICAgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCI+PC90dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWRyYXc+XHJcbiAgICA8dHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1zaGFwZSAqbmdJZj1cInN1Ym1lbnUgPT0gJ3NoYXBlJ1wiXHJcbiAgICAgIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiPjwvdHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1zaGFwZT5cclxuICAgIDx0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWljb24gKm5nSWY9XCJzdWJtZW51ID09ICdpY29uJ1wiXHJcbiAgICAgIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiPjwvdHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1pY29uPlxyXG4gICAgPHR1aS1pbWFnZS1lZGl0b3Itc3VibWVudXMtdGV4dCAqbmdJZj1cInN1Ym1lbnUgPT0gJ3RleHQnXCJcclxuICAgICAgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCI+PC90dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLXRleHQ+XHJcbiAgICA8dHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1tYXNrICpuZ0lmPVwic3VibWVudSA9PSAnbWFzaydcIlxyXG4gICAgICBbaW1hZ2VFZGl0b3JdPVwiaW1hZ2VFZGl0b3JcIj48L3R1aS1pbWFnZS1lZGl0b3Itc3VibWVudXMtbWFzaz5cclxuICAgIDx0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWZpbHRlciAqbmdJZj1cInN1Ym1lbnUgPT0gJ2ZpbHRlcidcIlxyXG4gICAgICBbaW1hZ2VFZGl0b3JdPVwiaW1hZ2VFZGl0b3JcIj48L3R1aS1pbWFnZS1lZGl0b3Itc3VibWVudXMtZmlsdGVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1jb250cm9scyB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtcm93IHR1aS1pbWFnZS1lZGl0b3ItanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItbWVudSB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtcm93IHR1aS1pbWFnZS1lZGl0b3ItZmxleC1ub3dyYXAgdHVpLWltYWdlLWVkaXRvci1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1jcm9wIFtpbWFnZUNob3Nlbl09XCJpbWFnZUNob3NlblwiIFtzZWxlY3RlZF09XCJzdWJtZW51ID09ICdjcm9wJ1wiXHJcbiAgICAgICAgKGNsaWNrZWQpPVwic3VibWVudSA9PSAnY3JvcCcgPyBoaWRlTWVudSgkZXZlbnQpIDogc2hvd01lbnUoJGV2ZW50KVwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWNyb3A+XHJcbiAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZmxpcCBbaW1hZ2VDaG9zZW5dPVwiaW1hZ2VDaG9zZW5cIiBbc2VsZWN0ZWRdPVwic3VibWVudSA9PSAnZmxpcCdcIlxyXG4gICAgICAgIChjbGlja2VkKT1cInN1Ym1lbnUgPT0gJ2ZsaXAnID8gaGlkZU1lbnUoJGV2ZW50KSA6IHNob3dNZW51KCRldmVudClcIj5cclxuICAgICAgPC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZmxpcD5cclxuICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1yb3RhdGUgW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCIgW3NlbGVjdGVkXT1cInN1Ym1lbnUgPT0gJ3JvdGF0ZSdcIlxyXG4gICAgICAgIChjbGlja2VkKT1cInN1Ym1lbnUgPT0gJ3JvdGF0ZScgPyBoaWRlTWVudSgkZXZlbnQpIDogc2hvd01lbnUoJGV2ZW50KVwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLXJvdGF0ZT5cclxuICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1kcmF3IFtpbWFnZUNob3Nlbl09XCJpbWFnZUNob3NlblwiIFtzZWxlY3RlZF09XCJzdWJtZW51ID09ICdkcmF3J1wiXHJcbiAgICAgICAgKGNsaWNrZWQpPVwic3VibWVudSA9PSAnZHJhdycgPyBoaWRlTWVudSgkZXZlbnQpIDogc2hvd01lbnUoJGV2ZW50KVwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWRyYXc+XHJcbiAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtc2hhcGUgW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCIgW3NlbGVjdGVkXT1cInN1Ym1lbnUgPT0gJ3NoYXBlJ1wiXHJcbiAgICAgICAgKGNsaWNrZWQpPVwic3VibWVudSA9PSAnc2hhcGUnID8gaGlkZU1lbnUoJGV2ZW50KSA6IHNob3dNZW51KCRldmVudClcIj48L3R1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1zaGFwZT5cclxuICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1pY29uIFtpbWFnZUNob3Nlbl09XCJpbWFnZUNob3NlblwiIFtzZWxlY3RlZF09XCJzdWJtZW51ID09ICdpY29uJ1wiXHJcbiAgICAgICAgKGNsaWNrZWQpPVwic3VibWVudSA9PSAnaWNvbicgPyBoaWRlTWVudSgkZXZlbnQpIDogc2hvd01lbnUoJGV2ZW50KVwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWljb24+XHJcbiAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtdGV4dCBbaW1hZ2VDaG9zZW5dPVwiaW1hZ2VDaG9zZW5cIiBbc2VsZWN0ZWRdPVwic3VibWVudSA9PSAndGV4dCdcIlxyXG4gICAgICAgIChjbGlja2VkKT1cInN1Ym1lbnUgPT0gJ3RleHQnID8gaGlkZU1lbnUoJGV2ZW50KSA6IHNob3dNZW51KCRldmVudClcIj48L3R1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy10ZXh0PlxyXG4gICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLW1hc2sgW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCIgW3NlbGVjdGVkXT1cInN1Ym1lbnUgPT0gJ21hc2snXCJcclxuICAgICAgICAoY2xpY2tlZCk9XCJzdWJtZW51ID09ICdtYXNrJyA/IGhpZGVNZW51KCRldmVudCkgOiBzaG93TWVudSgkZXZlbnQpXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtbWFzaz5cclxuICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1maWx0ZXIgW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCIgW3NlbGVjdGVkXT1cInN1Ym1lbnUgPT0gJ2ZpbHRlcidcIlxyXG4gICAgICAgIChjbGlja2VkKT1cInN1Ym1lbnUgPT0gJ2ZpbHRlcicgPyBoaWRlTWVudSgkZXZlbnQpIDogc2hvd01lbnUoJGV2ZW50KVwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWZpbHRlcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbmV3SW1hZ2VFZGl0b3I+XHJcbiAgPGRpdiBjbGFzcz1cIm5ldy10ZW1wbGF0ZSB0dWktaW1hZ2UtZWRpdG9yLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImltYWdlLWxvYWQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7aGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICA8ZGl2ICNsb2FkQnRuIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO1wiXHJcbiAgICAgICAgICBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItaGVscC1tZW51LWl0ZW0gdHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvdyB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWxvYWQgKGxvYWRJbWFnZSk9XCJvbkxvYWQoJGV2ZW50KVwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWxvYWQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlO1wiICNpbWFnZUNvbnRhaW5lclxyXG4gICAgICAgICAgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLWZsZXgtZ3Jvdy0xIHR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItYWxpZ24taXRlbXMtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2xzLWNvbnRhaW5lclwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiIFtzdHlsZS53aWR0aC5weF09XCJpc01lbnVFeHBhbmRlZCA/IDE2MCA6IDgwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcmltYXJ5LXRvb2xzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLW9wdGlvblwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJzaG93U3VibWVudT0hc2hvd1N1Ym1lbnVcIj5cclxuICAgICAgICAgIDxzdmcgKm5nSWY9XCIhc2hvd1N1Ym1lbnVcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE4IDE2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIG9wYWNpdHk9XCIwLjdcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgZD1cIk05LjM4MDkgMi42NzYwMUgxNy4wMDExQzE3LjU1MjcgMi42NzYwMSAxOCAzLjEyMzI3IDE4IDMuNjc0OTFDMTggNC4yMjY1NCAxNy41NTI3IDQuNjczOCAxNy4wMDExIDQuNjczOEg5LjM4MDgzQzguOTQ1MDcgNi4yMDc1NyA3LjUzMTY4IDcuMzM0MTkgNS44NjAxNCA3LjMzNDE5QzQuMTg4NTYgNy4zMzQxOSAyLjc3NTI0IDYuMjA3NTcgMi4zMzk0NCA0LjY3MzhIMC45OTg4OTdDMC40NDcyMjQgNC42NzM4IDAgNC4yMjY1MSAwIDMuNjc0ODdDMCAzLjEyMzIzIDAuNDQ3MjI0IDIuNjc1OTcgMC45OTg4OTcgMi42NzYwMUgyLjMzOTUxQzIuNzc1MjcgMS4xNDIyNCA0LjE4ODYzIDAuMDE1NjI1IDUuODYwMjEgMC4wMTU2MjVDNy41MzE3NSAwLjAxNTYyNSA4Ljk0NTEgMS4xNDIyNCA5LjM4MDkgMi42NzYwMVpNNC4xOTg2OCAzLjY3NDg0QzQuMTk4NjggNC41OTA5NyA0Ljk0NCA1LjMzNjMyIDUuODYwMTcgNS4zMzYzMkM2Ljc3NjM1IDUuMzM2MzIgNy41MjE2NiA0LjU5MDk3IDcuNTIxNjYgMy42NzQ4NEM3LjUyMTY2IDIuNzU4NyA2Ljc3NjM1IDIuMDEzMzUgNS44NjAxNyAyLjAxMzM1QzQuOTQ0IDIuMDEzMzUgNC4xOTg2OCAyLjc1ODcgNC4xOTg2OCAzLjY3NDg0Wk0xNS42NTgxIDExLjMyNzVIMTcuMDAxMUMxNy41NTI4IDExLjMyNzUgMTggMTEuNzc0OCAxOCAxMi4zMjY0QzE4IDEyLjg3ODEgMTcuNTUyOCAxMy4zMjUzIDE3LjAwMTEgMTMuMzI1M0gxNS42NTgxQzE1LjIyMjQgMTQuODU5MSAxMy44MDkgMTUuOTg1NyAxMi4xMzc0IDE1Ljk4NTdDMTAuNDY1OSAxNS45ODU3IDkuMDUyNTQgMTQuODU5MSA4LjYxNjc0IDEzLjMyNTNIMC45OTg4OTdDMC40NDcyMjQgMTMuMzI1MyAwIDEyLjg3ODEgMCAxMi4zMjY0QzAgMTEuNzc0OCAwLjQ0NzIyNCAxMS4zMjc1IDAuOTk4ODk3IDExLjMyNzVIOC42MTY3NEM5LjA1MjUxIDkuNzkzNzggMTAuNDY1OSA4LjY2NzE2IDEyLjEzNzQgOC42NjcxNkMxMy44MDkgOC42NjcxNiAxNS4yMjIzIDkuNzkzNzggMTUuNjU4MSAxMS4zMjc1Wk0xMC40NzYgMTIuMzI2NEMxMC40NzYgMTMuMjQyNiAxMS4yMjEzIDEzLjk4NzkgMTIuMTM3NCAxMy45ODc5QzEzLjA1MzYgMTMuOTg3OSAxMy43OTkgMTMuMjQyNiAxMy43OTg5IDEyLjMyNjRDMTMuNzk4OSAxMS40MTAzIDEzLjA1MzYgMTAuNjY1IDEyLjEzNzQgMTAuNjY1QzExLjIyMTMgMTAuNjY1IDEwLjQ3NiAxMS40MTAzIDEwLjQ3NiAxMi4zMjY0WlwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIiMyNTI4MkJcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8c3ZnICpuZ0lmPVwic2hvd1N1Ym1lbnVcIiB3aWR0aD1cIjQyXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQyIDQwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiNDJcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiOFwiIGZpbGw9XCIjMjUyODJCXCIgZmlsbC1vcGFjaXR5PVwiMC4xXCIgLz5cclxuICAgICAgICAgICAgPGcgb3BhY2l0eT1cIjAuN1wiPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTE2LjEzNzUgMjUuOTkzNUMxNS44NDMzIDI2LjAxMDggMTUuNTU0IDI1LjkxMTkgMTUuMzMwNSAyNS43MTc2QzE0Ljg4OTggMjUuMjY5MSAxNC44ODk4IDI0LjU0NDcgMTUuMzMwNSAyNC4wOTYyTDI0Ljk4MDEgMTQuMzMzN0MyNS40Mzg0IDEzLjg5OTggMjYuMTU3NiAxMy45MjM5IDI2LjU4NjUgMTQuMzg3NkMyNi45NzQ0IDE0LjgwNyAyNi45OTcgMTUuNDUxNSAyNi42Mzk1IDE1Ljg5NzZMMTYuOTMzMSAyNS43MTc2QzE2LjcxMjUgMjUuOTA5MSAxNi40Mjc4IDI2LjAwNzggMTYuMTM3NSAyNS45OTM1WlwiXHJcbiAgICAgICAgICAgICAgICBmaWxsPVwiIzI1MjgyQlwiIC8+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjUuNzczMiAyNS45OTM4QzI1LjQ3NSAyNS45OTI1IDI1LjE4OTMgMjUuODcyOCAyNC45Nzc2IDI1LjY2MDNMMTUuMzI4IDE1Ljg5NzhDMTQuOTE5NyAxNS40MTU1IDE0Ljk3NTIgMTQuNjg5NiAxNS40NTIgMTQuMjc2NUMxNS44Nzc1IDEzLjkwNzggMTYuNTA1MSAxMy45MDc4IDE2LjkzMDYgMTQuMjc2NUwyNi42MzcgMjQuMDM5QzI3LjA5NTIgMjQuNDczIDI3LjExODkgMjUuMjAwNyAyNi42ODk5IDI1LjY2NDNDMjYuNjcyOCAyNS42ODI3IDI2LjY1NTIgMjUuNzAwNiAyNi42MzcgMjUuNzE3OEMyNi4zOTkzIDI1LjkyNjkgMjYuMDg2NSAyNi4wMjY4IDI1Ljc3MzIgMjUuOTkzOFpcIlxyXG4gICAgICAgICAgICAgICAgZmlsbD1cIiMyNTI4MkJcIiAvPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaHJcIj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sLWljb25cIj5cclxuICAgICAgICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1kcmF3ICNwZW5NZW51IFtpbWFnZUNob3Nlbl09XCJpbWFnZUNob3NlblwiIFtzZWxlY3RlZF09XCJzdWJtZW51ID09ICdkcmF3J1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwic3VibWVudSA9PSAnZHJhdycgPyBoaWRlTWVudSgkZXZlbnQpIDogc2hvd01lbnUoJGV2ZW50KVwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWRyYXc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImVyYXNlclwiPlxyXG4gIFxyXG4gICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2wtaWNvblwiPlxyXG4gICAgICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLXRleHQgW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCIgW3NlbGVjdGVkXT1cInN1Ym1lbnUgPT0gJ3RleHQnXCJcclxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJzdWJtZW51ID09ICd0ZXh0JyA/IGhpZGVNZW51KCRldmVudCkgOiBzaG93TWVudSgkZXZlbnQpXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtdGV4dD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2wtaWNvbi1ncm91cFwiPlxyXG4gICAgICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLXpvb20taW4gW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCJcclxuICAgICAgICAgICAgICBbaW1hZ2VFZGl0b3JdPVwiaW1hZ2VFZGl0b3JcIj48L3R1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy16b29tLWluPlxyXG4gICAgICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLXpvb20tb3V0IFtpbWFnZUNob3Nlbl09XCJpbWFnZUNob3NlblwiXHJcbiAgICAgICAgICAgICAgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtem9vbS1vdXQ+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZHJhZyBbaW1hZ2VDaG9zZW5dPVwiaW1hZ2VDaG9zZW5cIlxyXG4gICAgICAgICAgICAgIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWRyYWc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sLWljb24tZ3JvdXBcIj5cclxuICAgICAgICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1oaXN0b3J5XHJcbiAgICAgICAgICAgICAgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtaGlzdG9yeT5cclxuICAgICAgICAgICAgPHR1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy11bmRvIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiXHJcbiAgICAgICAgICAgICAgKGNhbmNlbENyb3BwaW5nUmVxdWVzdGVkKT1cImV4aXRDcm9wT25BY3Rpb24oKVwiPjwvdHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLXVuZG8+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtcmVkbyBbaW1hZ2VFZGl0b3JdPVwiaW1hZ2VFZGl0b3JcIlxyXG4gICAgICAgICAgICAgIChjYW5jZWxDcm9wcGluZ1JlcXVlc3RlZCk9XCJleGl0Q3JvcE9uQWN0aW9uKClcIj48L3R1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1yZWRvPlxyXG4gICAgICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLXJlc2V0IFtpbWFnZUNob3Nlbl09XCJpbWFnZUNob3NlblwiIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiXHJcbiAgICAgICAgICAgICAgKGNhbmNlbENyb3BwaW5nUmVxdWVzdGVkKT1cImV4aXRDcm9wT25BY3Rpb24oKVwiXHJcbiAgICAgICAgICAgICAgKHJlc2V0SW1hZ2UpPVwicmVzZXRJbWFnZSgpXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtcmVzZXQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbC1pY29uXCI+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtY3JvcCBbaW1hZ2VDaG9zZW5dPVwiaW1hZ2VDaG9zZW5cIiBbc2VsZWN0ZWRdPVwic3VibWVudSA9PSAnY3JvcCdcIlxyXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cInN1Ym1lbnUgPT0gJ2Nyb3AnID8gaGlkZU1lbnUoJGV2ZW50KSA6IHNob3dNZW51KCRldmVudClcIj48L3R1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1jcm9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbC1pY29uXCI+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZmxpcCBbaW1hZ2VDaG9zZW5dPVwiaW1hZ2VDaG9zZW5cIiBbc2VsZWN0ZWRdPVwic3VibWVudSA9PSAnZmxpcCdcIlxyXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cInN1Ym1lbnUgPT0gJ2ZsaXAnID8gaGlkZU1lbnUoJGV2ZW50KSA6IHNob3dNZW51KCRldmVudClcIj5cclxuICAgICAgICAgICAgPC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZmxpcD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2wtaWNvblwiPlxyXG4gICAgICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLXJvdGF0ZSBbaW1hZ2VDaG9zZW5dPVwiaW1hZ2VDaG9zZW5cIiBbc2VsZWN0ZWRdPVwic3VibWVudSA9PSAncm90YXRlJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwic3VibWVudSA9PSAncm90YXRlJyA/IGhpZGVNZW51KCRldmVudCkgOiBzaG93TWVudSgkZXZlbnQpXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtcm90YXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbC1pY29uXCI+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtc2hhcGUgW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCIgW3NlbGVjdGVkXT1cInN1Ym1lbnUgPT0gJ3NoYXBlJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwic3VibWVudSA9PSAnc2hhcGUnID8gaGlkZU1lbnUoJGV2ZW50KSA6IHNob3dNZW51KCRldmVudClcIj48L3R1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1zaGFwZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2wtaWNvblwiPlxyXG4gICAgICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWljb24gW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCIgW3NlbGVjdGVkXT1cInN1Ym1lbnUgPT0gJ2ljb24nXCJcclxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJzdWJtZW51ID09ICdpY29uJyA/IGhpZGVNZW51KCRldmVudCkgOiBzaG93TWVudSgkZXZlbnQpXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2wtaWNvblwiPlxyXG4gICAgICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLW1hc2sgW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCIgW3NlbGVjdGVkXT1cInN1Ym1lbnUgPT0gJ21hc2snXCJcclxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJzdWJtZW51ID09ICdtYXNrJyA/IGhpZGVNZW51KCRldmVudCkgOiBzaG93TWVudSgkZXZlbnQpXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtbWFzaz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2wtaWNvblwiPlxyXG4gICAgICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1tZW51cy1idXR0b25zLWZpbHRlciBbaW1hZ2VDaG9zZW5dPVwiaW1hZ2VDaG9zZW5cIiBbc2VsZWN0ZWRdPVwic3VibWVudSA9PSAnZmlsdGVyJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwic3VibWVudSA9PSAnZmlsdGVyJyA/IGhpZGVNZW51KCRldmVudCkgOiBzaG93TWVudSgkZXZlbnQpXCI+PC90dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZmlsdGVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbC1pY29uXCI+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLW1lbnVzLWJ1dHRvbnMtZG93bmxvYWQgW2ltYWdlQ2hvc2VuXT1cImltYWdlQ2hvc2VuXCJcclxuICAgICAgICAgICAgICBbaW1hZ2VFZGl0b3JdPVwiaW1hZ2VFZGl0b3JcIj48L3R1aS1pbWFnZS1lZGl0b3ItbWVudXMtYnV0dG9ucy1kb3dubG9hZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdWItbWVudVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3Itc3VibWVudSBuZXdcIiBbc3R5bGUucmlnaHQucHhdPVwiaXNNZW51RXhwYW5kZWQgPyAxNjAgOiA4MFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic3VibWVudSAhPSBudWxsICYmIHNob3dTdWJtZW51XCI+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWNyb3AgKm5nSWY9XCJzdWJtZW51ID09ICdjcm9wJ1wiIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiXHJcbiAgICAgICAgICAgICAgKGNhbmNlbENyb3BwaW5nUmVxdWVzdGVkKT1cImV4aXRDcm9wT25BY3Rpb24oKVwiPjwvdHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1jcm9wPlxyXG4gICAgICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1mbGlwICpuZ0lmPVwic3VibWVudSA9PSAnZmxpcCdcIlxyXG4gICAgICAgICAgICAgIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiPjwvdHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1mbGlwPlxyXG4gICAgICAgICAgICA8dHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1yb3RhdGUgKm5nSWY9XCJzdWJtZW51ID09ICdyb3RhdGUnXCIgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCJcclxuICAgICAgICAgICAgICBbKHJvdGF0aW9uKV09XCJyb3RhdGlvblwiPjwvdHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1yb3RhdGU+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWRyYXcgKm5nSWY9XCJzdWJtZW51ID09ICdkcmF3J1wiXHJcbiAgICAgICAgICAgICAgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCI+PC90dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWRyYXc+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLXNoYXBlICpuZ0lmPVwic3VibWVudSA9PSAnc2hhcGUnXCJcclxuICAgICAgICAgICAgICBbaW1hZ2VFZGl0b3JdPVwiaW1hZ2VFZGl0b3JcIj48L3R1aS1pbWFnZS1lZGl0b3Itc3VibWVudXMtc2hhcGU+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWljb24gKm5nSWY9XCJzdWJtZW51ID09ICdpY29uJ1wiXHJcbiAgICAgICAgICAgICAgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCI+PC90dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWljb24+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLXRleHQgKm5nSWY9XCJzdWJtZW51ID09ICd0ZXh0J1wiXHJcbiAgICAgICAgICAgICAgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCI+PC90dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLXRleHQ+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLW1hc2sgKm5nSWY9XCJzdWJtZW51ID09ICdtYXNrJ1wiXHJcbiAgICAgICAgICAgICAgW2ltYWdlRWRpdG9yXT1cImltYWdlRWRpdG9yXCI+PC90dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLW1hc2s+XHJcbiAgICAgICAgICAgIDx0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWZpbHRlciAqbmdJZj1cInN1Ym1lbnUgPT0gJ2ZpbHRlcidcIlxyXG4gICAgICAgICAgICAgIFtpbWFnZUVkaXRvcl09XCJpbWFnZUVkaXRvclwiPjwvdHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1maWx0ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGVyXCIgKGNsaWNrKT1cImlzTWVudUV4cGFuZGVkPSFpc01lbnVFeHBhbmRlZFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgIDxzdmcgKm5nSWY9XCIhaXNNZW51RXhwYW5kZWRcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE4IDE2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICBkPVwiTTAuODY0NTc1IDcuMzQ0MjVDMC41MDM0NzUgNy43MDUzNSAwLjUwMzQ3NSA4LjI5NDczIDAuODY0NTc1IDguNjU1ODNMNy45Mzc3MSAxNS43Mjg3QzguMjk5MzcgMTYuMDkwNCA4Ljg4NzY4IDE2LjA5MDQgOS4yNDkzIDE1LjcyODdMOS42NDQ5NCAxNS4zMzMxQzEwLjAwNjkgMTQuOTcxMSAxMC4wMDcgMTQuMzgzMSA5LjY0NDk4IDE0LjAyMTFMNC4yNzkzOSA4LjY1NTk5QzMuOTE3MzMgOC4yOTQwMSAzLjkxNzMzIDcuNzA1OSA0LjI3OTM5IDcuMzQzOTNMOS42NDQ5NCAxLjk3ODgyQzEwLjAwNyAxLjYxNjggMTAuMDA3IDEuMDI4ODUgOS42NDQ5IDAuNjY2ODNMOS4yNDkyNiAwLjI3MTE5QzguODg4MTYgLTAuMDg5OTEwNSA4LjI5ODc3IC0wLjA4OTkxMDUgNy45Mzc2NyAwLjI3MTE5TDAuODY0NTc1IDcuMzQ0MjVaTTE1LjQyOTMgMC4yNzExMUMxNS43OTA3IC0wLjA5MDM4OTggMTYuMzc5NiAtMC4wOTAzNDk5IDE2Ljc0MSAwLjI3MTExTDE3LjEzNjcgMC42NjY3NUMxNy40OTggMS4wMjgwNSAxNy40OTggMS42MTc0NCAxNy4xMzY3IDEuOTc4NzhMMTEuNzcxNCA3LjM0MzkzQzExLjQwOTQgNy43MDU5NSAxMS40MDk0IDguMjkzOTggMTEuNzcxNCA4LjY1NTk5TDE3LjEzNjcgMTQuMDIxMUMxNy40OTgyIDE0LjM4MjUgMTcuNDk4MSAxNC45NzE3IDE3LjEzNjcgMTUuMzMzMUwxNi43NDExIDE1LjcyODhDMTYuMzc5NSAxNi4wOTA0IDE1Ljc5MDkgMTYuMDkwNCAxNS40MjkzIDE1LjcyODhMOC45ODQ0NCA5LjI4MzcyQzcuMTc2NTggMTEuMDg5OCA3LjYzMzg3IDEwLjYzMTggOC45ODMxMiA5LjI4MjRMOC4zNTY1OSA4LjY1NTgzQzcuOTk1MjUgOC4yOTQ0OSA3Ljk5NTI5IDcuNzA1NTQgOC4zNTY1OSA3LjM0NDIxTDE1LjQyOTMgMC4yNzExMVpcIlxyXG4gICAgICAgICAgICBmaWxsPVwiIzUxNTM1NVwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHN2ZyAqbmdJZj1cImlzTWVudUV4cGFuZGVkXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxOCAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgZD1cIk0xNy4xMzU0IDguNjU1NzVDMTcuNDk2NSA4LjI5NDY1IDE3LjQ5NjUgNy43MDUyNyAxNy4xMzU0IDcuMzQ0MTdMMTAuMDYyMyAwLjI3MTI3QzkuNzAwNjMgLTAuMDkwMzg4NiA5LjExMjMyIC0wLjA5MDM4ODUgOC43NTA3IDAuMjcxMjcxTDguMzU1MDYgMC42NjY5MTFDNy45OTMwOCAxLjAyODg5IDcuOTkzIDEuNjE2ODggOC4zNTUwMiAxLjk3ODk0TDEzLjcyMDYgNy4zNDQwMUMxNC4wODI3IDcuNzA1OTkgMTQuMDgyNyA4LjI5NDEgMTMuNzIwNiA4LjY1NjA3TDguMzU1MDYgMTQuMDIxMkM3Ljk5MyAxNC4zODMyIDcuOTkzMDQgMTQuOTcxMiA4LjM1NTEgMTUuMzMzMkw4Ljc1MDc0IDE1LjcyODhDOS4xMTE4NCAxNi4wODk5IDkuNzAxMjMgMTYuMDg5OSAxMC4wNjIzIDE1LjcyODhMMTcuMTM1NCA4LjY1NTc1Wk0yLjU3MDc1IDE1LjcyODlDMi4yMDkyOSAxNi4wOTA0IDEuNjIwNDIgMTYuMDkwNCAxLjI1ODk2IDE1LjcyODlMMC44NjMzMTkgMTUuMzMzM0MwLjUwMjAyIDE0Ljk3MiAwLjUwMTk4IDE0LjM4MjYgMC44NjMzMTkgMTQuMDIxMkw2LjIyODYzIDguNjU2MDdDNi41OTA2NSA4LjI5NDA2IDYuNTkwNjUgNy43MDYwMyA2LjIyODYzIDcuMzQ0MDFMMC44NjMyOCAxLjk3ODlDMC41MDE4MiAxLjYxNzQ4IDAuNTAxODYgMS4wMjgyOSAwLjg2MzI4IDAuNjY2ODcxTDEuMjU4OTIgMC4yNzEyM0MxLjYyMDU0IC0wLjA5MDM4NzkgMi4yMDkwOSAtMC4wOTA0MjggMi41NzA3MSAwLjI3MTIzTDkuMDE1NTYgNi43MTYyOEMxMC44MjM0IDQuOTEwMjMgMTAuMzY2MSA1LjM2ODI0IDkuMDE2ODggNi43MTc2TDkuNjQzNDEgNy4zNDQxN0MxMC4wMDQ3IDcuNzA1NTEgMTAuMDA0NyA4LjI5NDQ2IDkuNjQzNDEgOC42NTU4TDIuNTcwNzUgMTUuNzI4OVpcIlxyXG4gICAgICAgICAgICBmaWxsPVwiIzUxNTM1NVwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|