@kolkov/angular-editor 3.0.0-beta.0 → 3.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +9 -5
  2. package/assets/icons/icons.svg +156 -0
  3. package/esm2020/kolkov-angular-editor.mjs +4 -4
  4. package/esm2020/lib/ae-button/ae-button.component.mjs +21 -22
  5. package/esm2020/lib/ae-select/ae-select.component.mjs +185 -185
  6. package/esm2020/lib/ae-toolbar-set/ae-toolbar-set.component.mjs +14 -12
  7. package/esm2020/lib/angular-editor-toolbar.component.mjs +365 -363
  8. package/esm2020/lib/angular-editor.component.mjs +415 -415
  9. package/esm2020/lib/angular-editor.module.mjs +27 -27
  10. package/esm2020/lib/angular-editor.service.mjs +264 -264
  11. package/esm2020/lib/config.mjs +35 -35
  12. package/esm2020/lib/utils.mjs +3 -3
  13. package/esm2020/public-api.mjs +10 -10
  14. package/fesm2015/kolkov-angular-editor.mjs +1284 -1284
  15. package/fesm2015/kolkov-angular-editor.mjs.map +1 -1
  16. package/fesm2020/kolkov-angular-editor.mjs +1278 -1278
  17. package/fesm2020/kolkov-angular-editor.mjs.map +1 -1
  18. package/kolkov-angular-editor.d.ts +5 -5
  19. package/lib/ae-button/ae-button.component.d.ts +7 -10
  20. package/lib/ae-select/ae-select.component.d.ts +46 -46
  21. package/lib/ae-toolbar-set/ae-toolbar-set.component.d.ts +6 -6
  22. package/lib/angular-editor-toolbar.component.d.ts +97 -97
  23. package/lib/angular-editor.component.d.ts +133 -133
  24. package/lib/angular-editor.module.d.ts +13 -13
  25. package/lib/angular-editor.service.d.ts +87 -87
  26. package/lib/config.d.ts +39 -39
  27. package/lib/utils.d.ts +1 -1
  28. package/package.json +1 -1
  29. package/public-api.d.ts +8 -8
  30. package/src/lib/style.scss +290 -0
  31. package/assets/FontAwesome.otf +0 -0
  32. package/assets/fontawesome-webfont.eot +0 -0
  33. package/assets/fontawesome-webfont.svg +0 -2671
  34. package/assets/fontawesome-webfont.ttf +0 -0
  35. package/assets/fontawesome-webfont.woff +0 -0
  36. package/assets/fontawesome-webfont.woff2 +0 -0
@@ -1,363 +1,365 @@
1
- import { Component, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
2
- import { DOCUMENT } from '@angular/common';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./angular-editor.service";
5
- import * as i2 from "./ae-select/ae-select.component";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "@angular/forms";
8
- export class AngularEditorToolbarComponent {
9
- constructor(r, editorService, er, doc) {
10
- this.r = r;
11
- this.editorService = editorService;
12
- this.er = er;
13
- this.doc = doc;
14
- this.htmlMode = false;
15
- this.linkSelected = false;
16
- this.block = 'default';
17
- this.fontName = 'Times New Roman';
18
- this.fontSize = '3';
19
- this.headings = [
20
- {
21
- label: 'Heading 1',
22
- value: 'h1',
23
- },
24
- {
25
- label: 'Heading 2',
26
- value: 'h2',
27
- },
28
- {
29
- label: 'Heading 3',
30
- value: 'h3',
31
- },
32
- {
33
- label: 'Heading 4',
34
- value: 'h4',
35
- },
36
- {
37
- label: 'Heading 5',
38
- value: 'h5',
39
- },
40
- {
41
- label: 'Heading 6',
42
- value: 'h6',
43
- },
44
- {
45
- label: 'Heading 7',
46
- value: 'h7',
47
- },
48
- {
49
- label: 'Paragraph',
50
- value: 'p',
51
- },
52
- {
53
- label: 'Predefined',
54
- value: 'pre'
55
- },
56
- {
57
- label: 'Standard',
58
- value: 'div'
59
- },
60
- {
61
- label: 'default',
62
- value: 'default'
63
- }
64
- ];
65
- this.fontSizes = [
66
- {
67
- label: '1',
68
- value: '1',
69
- },
70
- {
71
- label: '2',
72
- value: '2',
73
- },
74
- {
75
- label: '3',
76
- value: '3',
77
- },
78
- {
79
- label: '4',
80
- value: '4',
81
- },
82
- {
83
- label: '5',
84
- value: '5',
85
- },
86
- {
87
- label: '6',
88
- value: '6',
89
- },
90
- {
91
- label: '7',
92
- value: '7',
93
- }
94
- ];
95
- this.customClassId = '-1';
96
- this.customClassList = [{ label: '', value: '' }];
97
- // uploadUrl: string;
98
- this.tagMap = {
99
- BLOCKQUOTE: 'indent',
100
- A: 'link'
101
- };
102
- this.select = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'PRE', 'DIV'];
103
- this.buttons = ['bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'justifyLeft', 'justifyCenter',
104
- 'justifyRight', 'justifyFull', 'indent', 'outdent', 'insertUnorderedList', 'insertOrderedList', 'link'];
105
- this.fonts = [{ label: '', value: '' }];
106
- this.execute = new EventEmitter();
107
- }
108
- set customClasses(classes) {
109
- if (classes) {
110
- this._customClasses = classes;
111
- this.customClassList = this._customClasses.map((x, i) => ({ label: x.name, value: i.toString() }));
112
- this.customClassList.unshift({ label: 'Clear Class', value: '-1' });
113
- }
114
- }
115
- set defaultFontName(value) {
116
- if (value) {
117
- this.fontName = value;
118
- }
119
- }
120
- set defaultFontSize(value) {
121
- if (value) {
122
- this.fontSize = value;
123
- }
124
- }
125
- get isLinkButtonDisabled() {
126
- return this.htmlMode || !Boolean(this.editorService.selectedText);
127
- }
128
- /**
129
- * Trigger command from editor header buttons
130
- * @param command string from toolbar buttons
131
- */
132
- triggerCommand(command) {
133
- this.execute.emit(command);
134
- }
135
- /**
136
- * highlight editor buttons when cursor moved or positioning
137
- */
138
- triggerButtons() {
139
- if (!this.showToolbar) {
140
- return;
141
- }
142
- this.buttons.forEach(e => {
143
- const result = this.doc.queryCommandState(e);
144
- const elementById = this.doc.getElementById(e + '-' + this.id);
145
- if (result) {
146
- this.r.addClass(elementById, 'active');
147
- }
148
- else {
149
- this.r.removeClass(elementById, 'active');
150
- }
151
- });
152
- }
153
- /**
154
- * trigger highlight editor buttons when cursor moved or positioning in block
155
- */
156
- triggerBlocks(nodes) {
157
- if (!this.showToolbar) {
158
- return;
159
- }
160
- this.linkSelected = nodes.findIndex(x => x.nodeName === 'A') > -1;
161
- let found = false;
162
- this.select.forEach(y => {
163
- const node = nodes.find(x => x.nodeName === y);
164
- if (node !== undefined && y === node.nodeName) {
165
- if (found === false) {
166
- this.block = node.nodeName.toLowerCase();
167
- found = true;
168
- }
169
- }
170
- else if (found === false) {
171
- this.block = 'default';
172
- }
173
- });
174
- found = false;
175
- if (this._customClasses) {
176
- this._customClasses.forEach((y, index) => {
177
- const node = nodes.find(x => {
178
- if (x instanceof Element) {
179
- return x.className === y.class;
180
- }
181
- });
182
- if (node !== undefined) {
183
- if (found === false) {
184
- this.customClassId = index.toString();
185
- found = true;
186
- }
187
- }
188
- else if (found === false) {
189
- this.customClassId = '-1';
190
- }
191
- });
192
- }
193
- Object.keys(this.tagMap).map(e => {
194
- const elementById = this.doc.getElementById(this.tagMap[e] + '-' + this.id);
195
- const node = nodes.find(x => x.nodeName === e);
196
- if (node !== undefined && e === node.nodeName) {
197
- this.r.addClass(elementById, 'active');
198
- }
199
- else {
200
- this.r.removeClass(elementById, 'active');
201
- }
202
- });
203
- this.foreColour = this.doc.queryCommandValue('ForeColor');
204
- this.fontSize = this.doc.queryCommandValue('FontSize');
205
- this.fontName = this.doc.queryCommandValue('FontName').replace(/"/g, '');
206
- this.backColor = this.doc.queryCommandValue('backColor');
207
- }
208
- /**
209
- * insert URL link
210
- */
211
- insertUrl() {
212
- let url = 'https:\/\/';
213
- const selection = this.editorService.savedSelection;
214
- if (selection && selection.commonAncestorContainer.parentElement.nodeName === 'A') {
215
- const parent = selection.commonAncestorContainer.parentElement;
216
- if (parent.href !== '') {
217
- url = parent.href;
218
- }
219
- }
220
- url = prompt('Insert URL link', url);
221
- if (url && url !== '' && url !== 'https://') {
222
- this.editorService.createLink(url);
223
- }
224
- }
225
- /**
226
- * insert Video link
227
- */
228
- insertVideo() {
229
- this.execute.emit('');
230
- const url = prompt('Insert Video link', `https://`);
231
- if (url && url !== '' && url !== `https://`) {
232
- this.editorService.insertVideo(url);
233
- }
234
- }
235
- /** insert color */
236
- insertColor(color, where) {
237
- this.editorService.insertColor(color, where);
238
- this.execute.emit('');
239
- }
240
- /**
241
- * set font Name/family
242
- * @param foreColor string
243
- */
244
- setFontName(foreColor) {
245
- this.editorService.setFontName(foreColor);
246
- this.execute.emit('');
247
- }
248
- /**
249
- * set font Size
250
- * @param fontSize string
251
- */
252
- setFontSize(fontSize) {
253
- this.editorService.setFontSize(fontSize);
254
- this.execute.emit('');
255
- }
256
- /**
257
- * toggle editor mode (WYSIWYG or SOURCE)
258
- * @param m boolean
259
- */
260
- setEditorMode(m) {
261
- const toggleEditorModeButton = this.doc.getElementById('toggleEditorMode' + '-' + this.id);
262
- if (m) {
263
- this.r.addClass(toggleEditorModeButton, 'active');
264
- }
265
- else {
266
- this.r.removeClass(toggleEditorModeButton, 'active');
267
- }
268
- this.htmlMode = m;
269
- }
270
- /**
271
- * Upload image when file is selected.
272
- */
273
- onFileChanged(event) {
274
- const file = event.target.files[0];
275
- if (file.type.includes('image/')) {
276
- if (this.upload) {
277
- this.upload(file).subscribe((response) => this.watchUploadImage(response, event));
278
- }
279
- else if (this.uploadUrl) {
280
- this.editorService.uploadImage(file).subscribe((response) => this.watchUploadImage(response, event));
281
- }
282
- else {
283
- const reader = new FileReader();
284
- reader.onload = (e) => {
285
- const fr = e.currentTarget;
286
- this.editorService.insertImage(fr.result.toString());
287
- };
288
- reader.readAsDataURL(file);
289
- }
290
- }
291
- }
292
- watchUploadImage(response, event) {
293
- const { imageUrl } = response.body;
294
- this.editorService.insertImage(imageUrl);
295
- event.srcElement.value = null;
296
- }
297
- /**
298
- * Set custom class
299
- */
300
- setCustomClass(classId) {
301
- if (classId === '-1') {
302
- this.execute.emit('clear');
303
- }
304
- else {
305
- this.editorService.createCustomClass(this._customClasses[+classId]);
306
- }
307
- }
308
- isButtonHidden(name) {
309
- if (!name) {
310
- return false;
311
- }
312
- if (!(this.hiddenButtons instanceof Array)) {
313
- return false;
314
- }
315
- let result;
316
- for (const arr of this.hiddenButtons) {
317
- if (arr instanceof Array) {
318
- result = arr.find(item => item === name);
319
- }
320
- if (result) {
321
- break;
322
- }
323
- }
324
- return result !== undefined;
325
- }
326
- focus() {
327
- this.execute.emit('focus');
328
- console.log('focused');
329
- }
330
- }
331
- AngularEditorToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AngularEditorToolbarComponent, deps: [{ token: i0.Renderer2 }, { token: i1.AngularEditorService }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
332
- AngularEditorToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AngularEditorToolbarComponent, selector: "angular-editor-toolbar", inputs: { id: "id", uploadUrl: "uploadUrl", upload: "upload", showToolbar: "showToolbar", fonts: "fonts", customClasses: "customClasses", defaultFontName: "defaultFontName", defaultFontSize: "defaultFontSize", hiddenButtons: "hiddenButtons" }, outputs: { execute: "execute" }, viewQueries: [{ propertyName: "myInputFile", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"angular-editor-toolbar\" *ngIf=\"showToolbar\">\n <div class=\"angular-editor-toolbar-set\">\n <button type=\"button\" title=\"Undo\" class=\"angular-editor-button\" (click)=\"triggerCommand('undo')\"\n [hidden]=\"isButtonHidden('undo')\" tabindex=\"-1\"><i\n class='fa fa-undo'></i></button>\n <button type=\"button\" title=\"Redo\" class=\"angular-editor-button\" (click)=\"triggerCommand('redo')\"\n [hidden]=\"isButtonHidden('redo')\" tabindex=\"-1\"><i\n class='fa fa-repeat'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'bold-'+id\" type=\"button\" title=\"Bold\" class=\"angular-editor-button\" (click)=\"triggerCommand('bold')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('bold')\" tabindex=\"-1\"><i class='fa fa-bold'></i></button>\n <button [id]=\"'italic-'+id\" type=\"button\" title=\"Italic\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('italic')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('italic')\" tabindex=\"-1\"><i class='fa fa-italic'></i>\n </button>\n <button [id]=\"'underline-'+id\" type=\"button\" title=\"Underline\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('underline')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('underline')\"\n tabindex=\"-1\"><i class='fa fa-underline'></i></button>\n <button [id]=\"'strikeThrough-'+id\" type=\"button\" title=\"Strikethrough\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('strikeThrough')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('strikeThrough')\"\n tabindex=\"-1\"><i class='fa fa-strikethrough'></i></button>\n <button [id]=\"'subscript-'+id\" type=\"button\" title=\"Subscript\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('subscript')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('subscript')\"\n tabindex=\"-1\"><i class='fa fa-subscript'></i></button>\n <button [id]=\"'superscript-'+id\" type=\"button\" title=\"Superscript\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('superscript')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('superscript')\"\n tabindex=\"-1\"><i class='fa fa-superscript'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'justifyLeft-'+id\" type=\"button\" title=\"Justify Left\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyLeft')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyLeft')\"\n tabindex=\"-1\"><i\n class='fa fa-align-left'></i></button>\n <button [id]=\"'justifyCenter-'+id\" type=\"button\" title=\"Justify Center\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyCenter')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyCenter')\"\n tabindex=\"-1\"><i\n class='fa fa-align-center'></i></button>\n <button [id]=\"'justifyRight-'+id\" type=\"button\" title=\"Justify Right\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyRight')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyRight')\"\n tabindex=\"-1\">\n <i class='fa fa-align-right'></i></button>\n <button [id]=\"'justifyFull-'+id\" type=\"button\" title=\"Justify Full\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyFull')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyFull')\"\n tabindex=\"-1\"><i\n class='fa fa-align-justify'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'indent-'+id\" type=\"button\" title=\"Indent\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('indent')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('indent')\" tabindex=\"-1\"><i\n class='fa fa-indent'></i></button>\n <button [id]=\"'outdent-'+id\" type=\"button\" title=\"Outdent\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('outdent')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('outdent')\" tabindex=\"-1\"><i\n class='fa fa-outdent'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'insertUnorderedList-'+id\" type=\"button\" title=\"Unordered List\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('insertUnorderedList')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertUnorderedList')\" tabindex=\"-1\"><i\n class='fa fa-list-ul'></i></button>\n <button [id]=\"'insertOrderedList-'+id\" type=\"button\" title=\"Ordered List\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('insertOrderedList')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertOrderedList')\" tabindex=\"-1\"><i\n class='fa fa-list-ol'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n\n <ae-select class=\"select-heading\" [options]=\"headings\"\n [(ngModel)]=\"block\"\n (change)=\"triggerCommand(block)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('heading')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n\n <ae-select class=\"select-font\" [options]=\"fonts\"\n [(ngModel)]=\"fontName\"\n (change)=\"setFontName(fontName)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('fontName')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n\n <ae-select class=\"select-font-size\" [options]=\"fontSizes\"\n [(ngModel)]=\"fontSize\"\n (change)=\"setFontSize(fontSize)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('fontSize')\"\n tabindex=\"-1\">\n </ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <input\n style=\"display: none\"\n type=\"color\" (change)=\"insertColor(fgInput.value, 'textColor')\"\n #fgInput>\n <button [id]=\"'foregroundColorPicker-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); ; fgInput.click()\"\n title=\"Text Color\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('textColor')\" tabindex=\"-1\"><span\n class=\"color-label foreground\"><i class=\"fa fa-font\"></i></span>\n </button>\n <input\n style=\"display: none\"\n type=\"color\" (change)=\"insertColor(bgInput.value, 'backgroundColor')\"\n #bgInput>\n <button [id]=\"'backgroundColorPicker-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); ; bgInput.click()\"\n title=\"Background Color\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('backgroundColor')\" tabindex=\"-1\"><span\n class=\"color-label background\"><i class=\"fa fa-font\"></i></span>\n </button>\n </div>\n <div *ngIf=\"_customClasses\" class=\"angular-editor-toolbar-set\">\n <ae-select class=\"select-custom-style\" [options]=\"customClassList\"\n [(ngModel)]=\"customClassId\"\n (change)=\"setCustomClass(customClassId)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('customClasses')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'link-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"insertUrl()\"\n title=\"Insert Link\" [disabled]=\"isLinkButtonDisabled\" [hidden]=\"isButtonHidden('link')\" tabindex=\"-1\">\n <i class=\"fa fa-link\"></i>\n </button>\n <button [id]=\"'unlink-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"triggerCommand('unlink')\"\n title=\"Unlink\" [disabled]=\"htmlMode || !linkSelected\" [hidden]=\"isButtonHidden('unlink')\" tabindex=\"-1\">\n <i class=\"fa fa-chain-broken\"></i>\n </button>\n <input\n style=\"display: none\"\n accept=\"image/*\"\n type=\"file\" (change)=\"onFileChanged($event)\"\n #fileInput>\n <button [id]=\"'insertImage-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); fileInput.click()\"\n title=\"Insert Image\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('insertImage')\" tabindex=\"-1\"><i class=\"fa fa-image\"></i>\n </button>\n <button [id]=\"'insertVideo-'+id\" type=\"button\" class=\"angular-editor-button\"\n (click)=\"insertVideo()\" title=\"Insert Video\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('insertVideo')\"\n tabindex=\"-1\"><i\n class=\"fa fa-video-camera\"></i></button>\n <button [id]=\"'insertHorizontalRule-'+id\" type=\"button\" title=\"Horizontal Line\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('insertHorizontalRule')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertHorizontalRule')\" tabindex=\"-1\"><i\n class=\"fa fa-minus\"></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'clearFormatting-'+id\" type=\"button\" title=\"Clear Formatting\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('removeFormat')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('removeFormat')\"\n tabindex=\"-1\"><i class='fa fa-remove'></i>\n </button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'toggleEditorMode-'+id\" type=\"button\" title=\"HTML Code\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('toggleEditorMode')\" [hidden]=\"isButtonHidden('toggleEditorMode')\" tabindex=\"-1\"><i\n class='fa fa-code'></i></button>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: ["/*!\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */@font-face{font-family:FontAwesome;src:url(/assets/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(/assets/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format(\"embedded-opentype\"),url(/assets/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\"woff2\"),url(/assets/fonts/fontawesome-webfont.woff?v=4.7.0) format(\"woff\"),url(/assets/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\"truetype\"),url(/assets/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\"svg\");font-weight:400;font-style:normal}.fa{display:inline-block;font: 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";transform:scaleY(-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\"\\f000\"}.fa-music:before{content:\"\\f001\"}.fa-search:before{content:\"\\f002\"}.fa-envelope-o:before{content:\"\\f003\"}.fa-heart:before{content:\"\\f004\"}.fa-star:before{content:\"\\f005\"}.fa-star-o:before{content:\"\\f006\"}.fa-user:before{content:\"\\f007\"}.fa-film:before{content:\"\\f008\"}.fa-th-large:before{content:\"\\f009\"}.fa-th:before{content:\"\\f00a\"}.fa-th-list:before{content:\"\\f00b\"}.fa-check:before{content:\"\\f00c\"}.fa-remove:before,.fa-close:before,.fa-times:before{content:\"\\f00d\"}.fa-search-plus:before{content:\"\\f00e\"}.fa-search-minus:before{content:\"\\f010\"}.fa-power-off:before{content:\"\\f011\"}.fa-signal:before{content:\"\\f012\"}.fa-gear:before,.fa-cog:before{content:\"\\f013\"}.fa-trash-o:before{content:\"\\f014\"}.fa-home:before{content:\"\\f015\"}.fa-file-o:before{content:\"\\f016\"}.fa-clock-o:before{content:\"\\f017\"}.fa-road:before{content:\"\\f018\"}.fa-download:before{content:\"\\f019\"}.fa-arrow-circle-o-down:before{content:\"\\f01a\"}.fa-arrow-circle-o-up:before{content:\"\\f01b\"}.fa-inbox:before{content:\"\\f01c\"}.fa-play-circle-o:before{content:\"\\f01d\"}.fa-rotate-right:before,.fa-repeat:before{content:\"\\f01e\"}.fa-refresh:before{content:\"\\f021\"}.fa-list-alt:before{content:\"\\f022\"}.fa-lock:before{content:\"\\f023\"}.fa-flag:before{content:\"\\f024\"}.fa-headphones:before{content:\"\\f025\"}.fa-volume-off:before{content:\"\\f026\"}.fa-volume-down:before{content:\"\\f027\"}.fa-volume-up:before{content:\"\\f028\"}.fa-qrcode:before{content:\"\\f029\"}.fa-barcode:before{content:\"\\f02a\"}.fa-tag:before{content:\"\\f02b\"}.fa-tags:before{content:\"\\f02c\"}.fa-book:before{content:\"\\f02d\"}.fa-bookmark:before{content:\"\\f02e\"}.fa-print:before{content:\"\\f02f\"}.fa-camera:before{content:\"\\f030\"}.fa-font:before{content:\"\\f031\"}.fa-bold:before{content:\"\\f032\"}.fa-italic:before{content:\"\\f033\"}.fa-text-height:before{content:\"\\f034\"}.fa-text-width:before{content:\"\\f035\"}.fa-align-left:before{content:\"\\f036\"}.fa-align-center:before{content:\"\\f037\"}.fa-align-right:before{content:\"\\f038\"}.fa-align-justify:before{content:\"\\f039\"}.fa-list:before{content:\"\\f03a\"}.fa-dedent:before,.fa-outdent:before{content:\"\\f03b\"}.fa-indent:before{content:\"\\f03c\"}.fa-video-camera:before{content:\"\\f03d\"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:\"\\f03e\"}.fa-pencil:before{content:\"\\f040\"}.fa-map-marker:before{content:\"\\f041\"}.fa-adjust:before{content:\"\\f042\"}.fa-tint:before{content:\"\\f043\"}.fa-edit:before,.fa-pencil-square-o:before{content:\"\\f044\"}.fa-share-square-o:before{content:\"\\f045\"}.fa-check-square-o:before{content:\"\\f046\"}.fa-arrows:before{content:\"\\f047\"}.fa-step-backward:before{content:\"\\f048\"}.fa-fast-backward:before{content:\"\\f049\"}.fa-backward:before{content:\"\\f04a\"}.fa-play:before{content:\"\\f04b\"}.fa-pause:before{content:\"\\f04c\"}.fa-stop:before{content:\"\\f04d\"}.fa-forward:before{content:\"\\f04e\"}.fa-fast-forward:before{content:\"\\f050\"}.fa-step-forward:before{content:\"\\f051\"}.fa-eject:before{content:\"\\f052\"}.fa-chevron-left:before{content:\"\\f053\"}.fa-chevron-right:before{content:\"\\f054\"}.fa-plus-circle:before{content:\"\\f055\"}.fa-minus-circle:before{content:\"\\f056\"}.fa-times-circle:before{content:\"\\f057\"}.fa-check-circle:before{content:\"\\f058\"}.fa-question-circle:before{content:\"\\f059\"}.fa-info-circle:before{content:\"\\f05a\"}.fa-crosshairs:before{content:\"\\f05b\"}.fa-times-circle-o:before{content:\"\\f05c\"}.fa-check-circle-o:before{content:\"\\f05d\"}.fa-ban:before{content:\"\\f05e\"}.fa-arrow-left:before{content:\"\\f060\"}.fa-arrow-right:before{content:\"\\f061\"}.fa-arrow-up:before{content:\"\\f062\"}.fa-arrow-down:before{content:\"\\f063\"}.fa-mail-forward:before,.fa-share:before{content:\"\\f064\"}.fa-expand:before{content:\"\\f065\"}.fa-compress:before{content:\"\\f066\"}.fa-plus:before{content:\"\\f067\"}.fa-minus:before{content:\"\\f068\"}.fa-asterisk:before{content:\"\\f069\"}.fa-exclamation-circle:before{content:\"\\f06a\"}.fa-gift:before{content:\"\\f06b\"}.fa-leaf:before{content:\"\\f06c\"}.fa-fire:before{content:\"\\f06d\"}.fa-eye:before{content:\"\\f06e\"}.fa-eye-slash:before{content:\"\\f070\"}.fa-warning:before,.fa-exclamation-triangle:before{content:\"\\f071\"}.fa-plane:before{content:\"\\f072\"}.fa-calendar:before{content:\"\\f073\"}.fa-random:before{content:\"\\f074\"}.fa-comment:before{content:\"\\f075\"}.fa-magnet:before{content:\"\\f076\"}.fa-chevron-up:before{content:\"\\f077\"}.fa-chevron-down:before{content:\"\\f078\"}.fa-retweet:before{content:\"\\f079\"}.fa-shopping-cart:before{content:\"\\f07a\"}.fa-folder:before{content:\"\\f07b\"}.fa-folder-open:before{content:\"\\f07c\"}.fa-arrows-v:before{content:\"\\f07d\"}.fa-arrows-h:before{content:\"\\f07e\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\"\\f080\"}.fa-twitter-square:before{content:\"\\f081\"}.fa-facebook-square:before{content:\"\\f082\"}.fa-camera-retro:before{content:\"\\f083\"}.fa-key:before{content:\"\\f084\"}.fa-gears:before,.fa-cogs:before{content:\"\\f085\"}.fa-comments:before{content:\"\\f086\"}.fa-thumbs-o-up:before{content:\"\\f087\"}.fa-thumbs-o-down:before{content:\"\\f088\"}.fa-star-half:before{content:\"\\f089\"}.fa-heart-o:before{content:\"\\f08a\"}.fa-sign-out:before{content:\"\\f08b\"}.fa-linkedin-square:before{content:\"\\f08c\"}.fa-thumb-tack:before{content:\"\\f08d\"}.fa-external-link:before{content:\"\\f08e\"}.fa-sign-in:before{content:\"\\f090\"}.fa-trophy:before{content:\"\\f091\"}.fa-github-square:before{content:\"\\f092\"}.fa-upload:before{content:\"\\f093\"}.fa-lemon-o:before{content:\"\\f094\"}.fa-phone:before{content:\"\\f095\"}.fa-square-o:before{content:\"\\f096\"}.fa-bookmark-o:before{content:\"\\f097\"}.fa-phone-square:before{content:\"\\f098\"}.fa-twitter:before{content:\"\\f099\"}.fa-facebook-f:before,.fa-facebook:before{content:\"\\f09a\"}.fa-github:before{content:\"\\f09b\"}.fa-unlock:before{content:\"\\f09c\"}.fa-credit-card:before{content:\"\\f09d\"}.fa-feed:before,.fa-rss:before{content:\"\\f09e\"}.fa-hdd-o:before{content:\"\\f0a0\"}.fa-bullhorn:before{content:\"\\f0a1\"}.fa-bell:before{content:\"\\f0f3\"}.fa-certificate:before{content:\"\\f0a3\"}.fa-hand-o-right:before{content:\"\\f0a4\"}.fa-hand-o-left:before{content:\"\\f0a5\"}.fa-hand-o-up:before{content:\"\\f0a6\"}.fa-hand-o-down:before{content:\"\\f0a7\"}.fa-arrow-circle-left:before{content:\"\\f0a8\"}.fa-arrow-circle-right:before{content:\"\\f0a9\"}.fa-arrow-circle-up:before{content:\"\\f0aa\"}.fa-arrow-circle-down:before{content:\"\\f0ab\"}.fa-globe:before{content:\"\\f0ac\"}.fa-wrench:before{content:\"\\f0ad\"}.fa-tasks:before{content:\"\\f0ae\"}.fa-filter:before{content:\"\\f0b0\"}.fa-briefcase:before{content:\"\\f0b1\"}.fa-arrows-alt:before{content:\"\\f0b2\"}.fa-group:before,.fa-users:before{content:\"\\f0c0\"}.fa-chain:before,.fa-link:before{content:\"\\f0c1\"}.fa-cloud:before{content:\"\\f0c2\"}.fa-flask:before{content:\"\\f0c3\"}.fa-cut:before,.fa-scissors:before{content:\"\\f0c4\"}.fa-copy:before,.fa-files-o:before{content:\"\\f0c5\"}.fa-paperclip:before{content:\"\\f0c6\"}.fa-save:before,.fa-floppy-o:before{content:\"\\f0c7\"}.fa-square:before{content:\"\\f0c8\"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:\"\\f0c9\"}.fa-list-ul:before{content:\"\\f0ca\"}.fa-list-ol:before{content:\"\\f0cb\"}.fa-strikethrough:before{content:\"\\f0cc\"}.fa-underline:before{content:\"\\f0cd\"}.fa-table:before{content:\"\\f0ce\"}.fa-magic:before{content:\"\\f0d0\"}.fa-truck:before{content:\"\\f0d1\"}.fa-pinterest:before{content:\"\\f0d2\"}.fa-pinterest-square:before{content:\"\\f0d3\"}.fa-google-plus-square:before{content:\"\\f0d4\"}.fa-google-plus:before{content:\"\\f0d5\"}.fa-money:before{content:\"\\f0d6\"}.fa-caret-down:before{content:\"\\f0d7\"}.fa-caret-up:before{content:\"\\f0d8\"}.fa-caret-left:before{content:\"\\f0d9\"}.fa-caret-right:before{content:\"\\f0da\"}.fa-columns:before{content:\"\\f0db\"}.fa-unsorted:before,.fa-sort:before{content:\"\\f0dc\"}.fa-sort-down:before,.fa-sort-desc:before{content:\"\\f0dd\"}.fa-sort-up:before,.fa-sort-asc:before{content:\"\\f0de\"}.fa-envelope:before{content:\"\\f0e0\"}.fa-linkedin:before{content:\"\\f0e1\"}.fa-rotate-left:before,.fa-undo:before{content:\"\\f0e2\"}.fa-legal:before,.fa-gavel:before{content:\"\\f0e3\"}.fa-dashboard:before,.fa-tachometer:before{content:\"\\f0e4\"}.fa-comment-o:before{content:\"\\f0e5\"}.fa-comments-o:before{content:\"\\f0e6\"}.fa-flash:before,.fa-bolt:before{content:\"\\f0e7\"}.fa-sitemap:before{content:\"\\f0e8\"}.fa-umbrella:before{content:\"\\f0e9\"}.fa-paste:before,.fa-clipboard:before{content:\"\\f0ea\"}.fa-lightbulb-o:before{content:\"\\f0eb\"}.fa-exchange:before{content:\"\\f0ec\"}.fa-cloud-download:before{content:\"\\f0ed\"}.fa-cloud-upload:before{content:\"\\f0ee\"}.fa-user-md:before{content:\"\\f0f0\"}.fa-stethoscope:before{content:\"\\f0f1\"}.fa-suitcase:before{content:\"\\f0f2\"}.fa-bell-o:before{content:\"\\f0a2\"}.fa-coffee:before{content:\"\\f0f4\"}.fa-cutlery:before{content:\"\\f0f5\"}.fa-file-text-o:before{content:\"\\f0f6\"}.fa-building-o:before{content:\"\\f0f7\"}.fa-hospital-o:before{content:\"\\f0f8\"}.fa-ambulance:before{content:\"\\f0f9\"}.fa-medkit:before{content:\"\\f0fa\"}.fa-fighter-jet:before{content:\"\\f0fb\"}.fa-beer:before{content:\"\\f0fc\"}.fa-h-square:before{content:\"\\f0fd\"}.fa-plus-square:before{content:\"\\f0fe\"}.fa-angle-double-left:before{content:\"\\f100\"}.fa-angle-double-right:before{content:\"\\f101\"}.fa-angle-double-up:before{content:\"\\f102\"}.fa-angle-double-down:before{content:\"\\f103\"}.fa-angle-left:before{content:\"\\f104\"}.fa-angle-right:before{content:\"\\f105\"}.fa-angle-up:before{content:\"\\f106\"}.fa-angle-down:before{content:\"\\f107\"}.fa-desktop:before{content:\"\\f108\"}.fa-laptop:before{content:\"\\f109\"}.fa-tablet:before{content:\"\\f10a\"}.fa-mobile-phone:before,.fa-mobile:before{content:\"\\f10b\"}.fa-circle-o:before{content:\"\\f10c\"}.fa-quote-left:before{content:\"\\f10d\"}.fa-quote-right:before{content:\"\\f10e\"}.fa-spinner:before{content:\"\\f110\"}.fa-circle:before{content:\"\\f111\"}.fa-mail-reply:before,.fa-reply:before{content:\"\\f112\"}.fa-github-alt:before{content:\"\\f113\"}.fa-folder-o:before{content:\"\\f114\"}.fa-folder-open-o:before{content:\"\\f115\"}.fa-smile-o:before{content:\"\\f118\"}.fa-frown-o:before{content:\"\\f119\"}.fa-meh-o:before{content:\"\\f11a\"}.fa-gamepad:before{content:\"\\f11b\"}.fa-keyboard-o:before{content:\"\\f11c\"}.fa-flag-o:before{content:\"\\f11d\"}.fa-flag-checkered:before{content:\"\\f11e\"}.fa-terminal:before{content:\"\\f120\"}.fa-code:before{content:\"\\f121\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\"\\f122\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\"\\f123\"}.fa-location-arrow:before{content:\"\\f124\"}.fa-crop:before{content:\"\\f125\"}.fa-code-fork:before{content:\"\\f126\"}.fa-unlink:before,.fa-chain-broken:before{content:\"\\f127\"}.fa-question:before{content:\"\\f128\"}.fa-info:before{content:\"\\f129\"}.fa-exclamation:before{content:\"\\f12a\"}.fa-superscript:before{content:\"\\f12b\"}.fa-subscript:before{content:\"\\f12c\"}.fa-eraser:before{content:\"\\f12d\"}.fa-puzzle-piece:before{content:\"\\f12e\"}.fa-microphone:before{content:\"\\f130\"}.fa-microphone-slash:before{content:\"\\f131\"}.fa-shield:before{content:\"\\f132\"}.fa-calendar-o:before{content:\"\\f133\"}.fa-fire-extinguisher:before{content:\"\\f134\"}.fa-rocket:before{content:\"\\f135\"}.fa-maxcdn:before{content:\"\\f136\"}.fa-chevron-circle-left:before{content:\"\\f137\"}.fa-chevron-circle-right:before{content:\"\\f138\"}.fa-chevron-circle-up:before{content:\"\\f139\"}.fa-chevron-circle-down:before{content:\"\\f13a\"}.fa-html5:before{content:\"\\f13b\"}.fa-css3:before{content:\"\\f13c\"}.fa-anchor:before{content:\"\\f13d\"}.fa-unlock-alt:before{content:\"\\f13e\"}.fa-bullseye:before{content:\"\\f140\"}.fa-ellipsis-h:before{content:\"\\f141\"}.fa-ellipsis-v:before{content:\"\\f142\"}.fa-rss-square:before{content:\"\\f143\"}.fa-play-circle:before{content:\"\\f144\"}.fa-ticket:before{content:\"\\f145\"}.fa-minus-square:before{content:\"\\f146\"}.fa-minus-square-o:before{content:\"\\f147\"}.fa-level-up:before{content:\"\\f148\"}.fa-level-down:before{content:\"\\f149\"}.fa-check-square:before{content:\"\\f14a\"}.fa-pencil-square:before{content:\"\\f14b\"}.fa-external-link-square:before{content:\"\\f14c\"}.fa-share-square:before{content:\"\\f14d\"}.fa-compass:before{content:\"\\f14e\"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:\"\\f150\"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:\"\\f151\"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:\"\\f152\"}.fa-euro:before,.fa-eur:before{content:\"\\f153\"}.fa-gbp:before{content:\"\\f154\"}.fa-dollar:before,.fa-usd:before{content:\"\\f155\"}.fa-rupee:before,.fa-inr:before{content:\"\\f156\"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:\"\\f157\"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:\"\\f158\"}.fa-won:before,.fa-krw:before{content:\"\\f159\"}.fa-bitcoin:before,.fa-btc:before{content:\"\\f15a\"}.fa-file:before{content:\"\\f15b\"}.fa-file-text:before{content:\"\\f15c\"}.fa-sort-alpha-asc:before{content:\"\\f15d\"}.fa-sort-alpha-desc:before{content:\"\\f15e\"}.fa-sort-amount-asc:before{content:\"\\f160\"}.fa-sort-amount-desc:before{content:\"\\f161\"}.fa-sort-numeric-asc:before{content:\"\\f162\"}.fa-sort-numeric-desc:before{content:\"\\f163\"}.fa-thumbs-up:before{content:\"\\f164\"}.fa-thumbs-down:before{content:\"\\f165\"}.fa-youtube-square:before{content:\"\\f166\"}.fa-youtube:before{content:\"\\f167\"}.fa-xing:before{content:\"\\f168\"}.fa-xing-square:before{content:\"\\f169\"}.fa-youtube-play:before{content:\"\\f16a\"}.fa-dropbox:before{content:\"\\f16b\"}.fa-stack-overflow:before{content:\"\\f16c\"}.fa-instagram:before{content:\"\\f16d\"}.fa-flickr:before{content:\"\\f16e\"}.fa-adn:before{content:\"\\f170\"}.fa-bitbucket:before{content:\"\\f171\"}.fa-bitbucket-square:before{content:\"\\f172\"}.fa-tumblr:before{content:\"\\f173\"}.fa-tumblr-square:before{content:\"\\f174\"}.fa-long-arrow-down:before{content:\"\\f175\"}.fa-long-arrow-up:before{content:\"\\f176\"}.fa-long-arrow-left:before{content:\"\\f177\"}.fa-long-arrow-right:before{content:\"\\f178\"}.fa-apple:before{content:\"\\f179\"}.fa-windows:before{content:\"\\f17a\"}.fa-android:before{content:\"\\f17b\"}.fa-linux:before{content:\"\\f17c\"}.fa-dribbble:before{content:\"\\f17d\"}.fa-skype:before{content:\"\\f17e\"}.fa-foursquare:before{content:\"\\f180\"}.fa-trello:before{content:\"\\f181\"}.fa-female:before{content:\"\\f182\"}.fa-male:before{content:\"\\f183\"}.fa-gittip:before,.fa-gratipay:before{content:\"\\f184\"}.fa-sun-o:before{content:\"\\f185\"}.fa-moon-o:before{content:\"\\f186\"}.fa-archive:before{content:\"\\f187\"}.fa-bug:before{content:\"\\f188\"}.fa-vk:before{content:\"\\f189\"}.fa-weibo:before{content:\"\\f18a\"}.fa-renren:before{content:\"\\f18b\"}.fa-pagelines:before{content:\"\\f18c\"}.fa-stack-exchange:before{content:\"\\f18d\"}.fa-arrow-circle-o-right:before{content:\"\\f18e\"}.fa-arrow-circle-o-left:before{content:\"\\f190\"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:\"\\f191\"}.fa-dot-circle-o:before{content:\"\\f192\"}.fa-wheelchair:before{content:\"\\f193\"}.fa-vimeo-square:before{content:\"\\f194\"}.fa-turkish-lira:before,.fa-try:before{content:\"\\f195\"}.fa-plus-square-o:before{content:\"\\f196\"}.fa-space-shuttle:before{content:\"\\f197\"}.fa-slack:before{content:\"\\f198\"}.fa-envelope-square:before{content:\"\\f199\"}.fa-wordpress:before{content:\"\\f19a\"}.fa-openid:before{content:\"\\f19b\"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:\"\\f19c\"}.fa-mortar-board:before,.fa-graduation-cap:before{content:\"\\f19d\"}.fa-yahoo:before{content:\"\\f19e\"}.fa-google:before{content:\"\\f1a0\"}.fa-reddit:before{content:\"\\f1a1\"}.fa-reddit-square:before{content:\"\\f1a2\"}.fa-stumbleupon-circle:before{content:\"\\f1a3\"}.fa-stumbleupon:before{content:\"\\f1a4\"}.fa-delicious:before{content:\"\\f1a5\"}.fa-digg:before{content:\"\\f1a6\"}.fa-pied-piper-pp:before{content:\"\\f1a7\"}.fa-pied-piper-alt:before{content:\"\\f1a8\"}.fa-drupal:before{content:\"\\f1a9\"}.fa-joomla:before{content:\"\\f1aa\"}.fa-language:before{content:\"\\f1ab\"}.fa-fax:before{content:\"\\f1ac\"}.fa-building:before{content:\"\\f1ad\"}.fa-child:before{content:\"\\f1ae\"}.fa-paw:before{content:\"\\f1b0\"}.fa-spoon:before{content:\"\\f1b1\"}.fa-cube:before{content:\"\\f1b2\"}.fa-cubes:before{content:\"\\f1b3\"}.fa-behance:before{content:\"\\f1b4\"}.fa-behance-square:before{content:\"\\f1b5\"}.fa-steam:before{content:\"\\f1b6\"}.fa-steam-square:before{content:\"\\f1b7\"}.fa-recycle:before{content:\"\\f1b8\"}.fa-automobile:before,.fa-car:before{content:\"\\f1b9\"}.fa-cab:before,.fa-taxi:before{content:\"\\f1ba\"}.fa-tree:before{content:\"\\f1bb\"}.fa-spotify:before{content:\"\\f1bc\"}.fa-deviantart:before{content:\"\\f1bd\"}.fa-soundcloud:before{content:\"\\f1be\"}.fa-database:before{content:\"\\f1c0\"}.fa-file-pdf-o:before{content:\"\\f1c1\"}.fa-file-word-o:before{content:\"\\f1c2\"}.fa-file-excel-o:before{content:\"\\f1c3\"}.fa-file-powerpoint-o:before{content:\"\\f1c4\"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:\"\\f1c5\"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:\"\\f1c6\"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:\"\\f1c7\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\"\\f1c8\"}.fa-file-code-o:before{content:\"\\f1c9\"}.fa-vine:before{content:\"\\f1ca\"}.fa-codepen:before{content:\"\\f1cb\"}.fa-jsfiddle:before{content:\"\\f1cc\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:\"\\f1cd\"}.fa-circle-o-notch:before{content:\"\\f1ce\"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:\"\\f1d0\"}.fa-ge:before,.fa-empire:before{content:\"\\f1d1\"}.fa-git-square:before{content:\"\\f1d2\"}.fa-git:before{content:\"\\f1d3\"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:\"\\f1d4\"}.fa-tencent-weibo:before{content:\"\\f1d5\"}.fa-qq:before{content:\"\\f1d6\"}.fa-wechat:before,.fa-weixin:before{content:\"\\f1d7\"}.fa-send:before,.fa-paper-plane:before{content:\"\\f1d8\"}.fa-send-o:before,.fa-paper-plane-o:before{content:\"\\f1d9\"}.fa-history:before{content:\"\\f1da\"}.fa-circle-thin:before{content:\"\\f1db\"}.fa-header:before{content:\"\\f1dc\"}.fa-paragraph:before{content:\"\\f1dd\"}.fa-sliders:before{content:\"\\f1de\"}.fa-share-alt:before{content:\"\\f1e0\"}.fa-share-alt-square:before{content:\"\\f1e1\"}.fa-bomb:before{content:\"\\f1e2\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\"\\f1e3\"}.fa-tty:before{content:\"\\f1e4\"}.fa-binoculars:before{content:\"\\f1e5\"}.fa-plug:before{content:\"\\f1e6\"}.fa-slideshare:before{content:\"\\f1e7\"}.fa-twitch:before{content:\"\\f1e8\"}.fa-yelp:before{content:\"\\f1e9\"}.fa-newspaper-o:before{content:\"\\f1ea\"}.fa-wifi:before{content:\"\\f1eb\"}.fa-calculator:before{content:\"\\f1ec\"}.fa-paypal:before{content:\"\\f1ed\"}.fa-google-wallet:before{content:\"\\f1ee\"}.fa-cc-visa:before{content:\"\\f1f0\"}.fa-cc-mastercard:before{content:\"\\f1f1\"}.fa-cc-discover:before{content:\"\\f1f2\"}.fa-cc-amex:before{content:\"\\f1f3\"}.fa-cc-paypal:before{content:\"\\f1f4\"}.fa-cc-stripe:before{content:\"\\f1f5\"}.fa-bell-slash:before{content:\"\\f1f6\"}.fa-bell-slash-o:before{content:\"\\f1f7\"}.fa-trash:before{content:\"\\f1f8\"}.fa-copyright:before{content:\"\\f1f9\"}.fa-at:before{content:\"\\f1fa\"}.fa-eyedropper:before{content:\"\\f1fb\"}.fa-paint-brush:before{content:\"\\f1fc\"}.fa-birthday-cake:before{content:\"\\f1fd\"}.fa-area-chart:before{content:\"\\f1fe\"}.fa-pie-chart:before{content:\"\\f200\"}.fa-line-chart:before{content:\"\\f201\"}.fa-lastfm:before{content:\"\\f202\"}.fa-lastfm-square:before{content:\"\\f203\"}.fa-toggle-off:before{content:\"\\f204\"}.fa-toggle-on:before{content:\"\\f205\"}.fa-bicycle:before{content:\"\\f206\"}.fa-bus:before{content:\"\\f207\"}.fa-ioxhost:before{content:\"\\f208\"}.fa-angellist:before{content:\"\\f209\"}.fa-cc:before{content:\"\\f20a\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\"\\f20b\"}.fa-meanpath:before{content:\"\\f20c\"}.fa-buysellads:before{content:\"\\f20d\"}.fa-connectdevelop:before{content:\"\\f20e\"}.fa-dashcube:before{content:\"\\f210\"}.fa-forumbee:before{content:\"\\f211\"}.fa-leanpub:before{content:\"\\f212\"}.fa-sellsy:before{content:\"\\f213\"}.fa-shirtsinbulk:before{content:\"\\f214\"}.fa-simplybuilt:before{content:\"\\f215\"}.fa-skyatlas:before{content:\"\\f216\"}.fa-cart-plus:before{content:\"\\f217\"}.fa-cart-arrow-down:before{content:\"\\f218\"}.fa-diamond:before{content:\"\\f219\"}.fa-ship:before{content:\"\\f21a\"}.fa-user-secret:before{content:\"\\f21b\"}.fa-motorcycle:before{content:\"\\f21c\"}.fa-street-view:before{content:\"\\f21d\"}.fa-heartbeat:before{content:\"\\f21e\"}.fa-venus:before{content:\"\\f221\"}.fa-mars:before{content:\"\\f222\"}.fa-mercury:before{content:\"\\f223\"}.fa-intersex:before,.fa-transgender:before{content:\"\\f224\"}.fa-transgender-alt:before{content:\"\\f225\"}.fa-venus-double:before{content:\"\\f226\"}.fa-mars-double:before{content:\"\\f227\"}.fa-venus-mars:before{content:\"\\f228\"}.fa-mars-stroke:before{content:\"\\f229\"}.fa-mars-stroke-v:before{content:\"\\f22a\"}.fa-mars-stroke-h:before{content:\"\\f22b\"}.fa-neuter:before{content:\"\\f22c\"}.fa-genderless:before{content:\"\\f22d\"}.fa-facebook-official:before{content:\"\\f230\"}.fa-pinterest-p:before{content:\"\\f231\"}.fa-whatsapp:before{content:\"\\f232\"}.fa-server:before{content:\"\\f233\"}.fa-user-plus:before{content:\"\\f234\"}.fa-user-times:before{content:\"\\f235\"}.fa-hotel:before,.fa-bed:before{content:\"\\f236\"}.fa-viacoin:before{content:\"\\f237\"}.fa-train:before{content:\"\\f238\"}.fa-subway:before{content:\"\\f239\"}.fa-medium:before{content:\"\\f23a\"}.fa-yc:before,.fa-y-combinator:before{content:\"\\f23b\"}.fa-optin-monster:before{content:\"\\f23c\"}.fa-opencart:before{content:\"\\f23d\"}.fa-expeditedssl:before{content:\"\\f23e\"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:\"\\f240\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\"\\f241\"}.fa-battery-2:before,.fa-battery-half:before{content:\"\\f242\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\"\\f243\"}.fa-battery-0:before,.fa-battery-empty:before{content:\"\\f244\"}.fa-mouse-pointer:before{content:\"\\f245\"}.fa-i-cursor:before{content:\"\\f246\"}.fa-object-group:before{content:\"\\f247\"}.fa-object-ungroup:before{content:\"\\f248\"}.fa-sticky-note:before{content:\"\\f249\"}.fa-sticky-note-o:before{content:\"\\f24a\"}.fa-cc-jcb:before{content:\"\\f24b\"}.fa-cc-diners-club:before{content:\"\\f24c\"}.fa-clone:before{content:\"\\f24d\"}.fa-balance-scale:before{content:\"\\f24e\"}.fa-hourglass-o:before{content:\"\\f250\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\"\\f251\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\"\\f252\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\"\\f253\"}.fa-hourglass:before{content:\"\\f254\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\"\\f255\"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:\"\\f256\"}.fa-hand-scissors-o:before{content:\"\\f257\"}.fa-hand-lizard-o:before{content:\"\\f258\"}.fa-hand-spock-o:before{content:\"\\f259\"}.fa-hand-pointer-o:before{content:\"\\f25a\"}.fa-hand-peace-o:before{content:\"\\f25b\"}.fa-trademark:before{content:\"\\f25c\"}.fa-registered:before{content:\"\\f25d\"}.fa-creative-commons:before{content:\"\\f25e\"}.fa-gg:before{content:\"\\f260\"}.fa-gg-circle:before{content:\"\\f261\"}.fa-tripadvisor:before{content:\"\\f262\"}.fa-odnoklassniki:before{content:\"\\f263\"}.fa-odnoklassniki-square:before{content:\"\\f264\"}.fa-get-pocket:before{content:\"\\f265\"}.fa-wikipedia-w:before{content:\"\\f266\"}.fa-safari:before{content:\"\\f267\"}.fa-chrome:before{content:\"\\f268\"}.fa-firefox:before{content:\"\\f269\"}.fa-opera:before{content:\"\\f26a\"}.fa-internet-explorer:before{content:\"\\f26b\"}.fa-tv:before,.fa-television:before{content:\"\\f26c\"}.fa-contao:before{content:\"\\f26d\"}.fa-500px:before{content:\"\\f26e\"}.fa-amazon:before{content:\"\\f270\"}.fa-calendar-plus-o:before{content:\"\\f271\"}.fa-calendar-minus-o:before{content:\"\\f272\"}.fa-calendar-times-o:before{content:\"\\f273\"}.fa-calendar-check-o:before{content:\"\\f274\"}.fa-industry:before{content:\"\\f275\"}.fa-map-pin:before{content:\"\\f276\"}.fa-map-signs:before{content:\"\\f277\"}.fa-map-o:before{content:\"\\f278\"}.fa-map:before{content:\"\\f279\"}.fa-commenting:before{content:\"\\f27a\"}.fa-commenting-o:before{content:\"\\f27b\"}.fa-houzz:before{content:\"\\f27c\"}.fa-vimeo:before{content:\"\\f27d\"}.fa-black-tie:before{content:\"\\f27e\"}.fa-fonticons:before{content:\"\\f280\"}.fa-reddit-alien:before{content:\"\\f281\"}.fa-edge:before{content:\"\\f282\"}.fa-credit-card-alt:before{content:\"\\f283\"}.fa-codiepie:before{content:\"\\f284\"}.fa-modx:before{content:\"\\f285\"}.fa-fort-awesome:before{content:\"\\f286\"}.fa-usb:before{content:\"\\f287\"}.fa-product-hunt:before{content:\"\\f288\"}.fa-mixcloud:before{content:\"\\f289\"}.fa-scribd:before{content:\"\\f28a\"}.fa-pause-circle:before{content:\"\\f28b\"}.fa-pause-circle-o:before{content:\"\\f28c\"}.fa-stop-circle:before{content:\"\\f28d\"}.fa-stop-circle-o:before{content:\"\\f28e\"}.fa-shopping-bag:before{content:\"\\f290\"}.fa-shopping-basket:before{content:\"\\f291\"}.fa-hashtag:before{content:\"\\f292\"}.fa-bluetooth:before{content:\"\\f293\"}.fa-bluetooth-b:before{content:\"\\f294\"}.fa-percent:before{content:\"\\f295\"}.fa-gitlab:before{content:\"\\f296\"}.fa-wpbeginner:before{content:\"\\f297\"}.fa-wpforms:before{content:\"\\f298\"}.fa-envira:before{content:\"\\f299\"}.fa-universal-access:before{content:\"\\f29a\"}.fa-wheelchair-alt:before{content:\"\\f29b\"}.fa-question-circle-o:before{content:\"\\f29c\"}.fa-blind:before{content:\"\\f29d\"}.fa-audio-description:before{content:\"\\f29e\"}.fa-volume-control-phone:before{content:\"\\f2a0\"}.fa-braille:before{content:\"\\f2a1\"}.fa-assistive-listening-systems:before{content:\"\\f2a2\"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:\"\\f2a3\"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:\"\\f2a4\"}.fa-glide:before{content:\"\\f2a5\"}.fa-glide-g:before{content:\"\\f2a6\"}.fa-signing:before,.fa-sign-language:before{content:\"\\f2a7\"}.fa-low-vision:before{content:\"\\f2a8\"}.fa-viadeo:before{content:\"\\f2a9\"}.fa-viadeo-square:before{content:\"\\f2aa\"}.fa-snapchat:before{content:\"\\f2ab\"}.fa-snapchat-ghost:before{content:\"\\f2ac\"}.fa-snapchat-square:before{content:\"\\f2ad\"}.fa-pied-piper:before{content:\"\\f2ae\"}.fa-first-order:before{content:\"\\f2b0\"}.fa-yoast:before{content:\"\\f2b1\"}.fa-themeisle:before{content:\"\\f2b2\"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:\"\\f2b3\"}.fa-fa:before,.fa-font-awesome:before{content:\"\\f2b4\"}.fa-handshake-o:before{content:\"\\f2b5\"}.fa-envelope-open:before{content:\"\\f2b6\"}.fa-envelope-open-o:before{content:\"\\f2b7\"}.fa-linode:before{content:\"\\f2b8\"}.fa-address-book:before{content:\"\\f2b9\"}.fa-address-book-o:before{content:\"\\f2ba\"}.fa-vcard:before,.fa-address-card:before{content:\"\\f2bb\"}.fa-vcard-o:before,.fa-address-card-o:before{content:\"\\f2bc\"}.fa-user-circle:before{content:\"\\f2bd\"}.fa-user-circle-o:before{content:\"\\f2be\"}.fa-user-o:before{content:\"\\f2c0\"}.fa-id-badge:before{content:\"\\f2c1\"}.fa-drivers-license:before,.fa-id-card:before{content:\"\\f2c2\"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:\"\\f2c3\"}.fa-quora:before{content:\"\\f2c4\"}.fa-free-code-camp:before{content:\"\\f2c5\"}.fa-telegram:before{content:\"\\f2c6\"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:\"\\f2c7\"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:\"\\f2c8\"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:\"\\f2c9\"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:\"\\f2ca\"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:\"\\f2cb\"}.fa-shower:before{content:\"\\f2cc\"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:\"\\f2cd\"}.fa-podcast:before{content:\"\\f2ce\"}.fa-window-maximize:before{content:\"\\f2d0\"}.fa-window-minimize:before{content:\"\\f2d1\"}.fa-window-restore:before{content:\"\\f2d2\"}.fa-times-rectangle:before,.fa-window-close:before{content:\"\\f2d3\"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:\"\\f2d4\"}.fa-bandcamp:before{content:\"\\f2d5\"}.fa-grav:before{content:\"\\f2d6\"}.fa-etsy:before{content:\"\\f2d7\"}.fa-imdb:before{content:\"\\f2d8\"}.fa-ravelry:before{content:\"\\f2d9\"}.fa-eercast:before{content:\"\\f2da\"}.fa-microchip:before{content:\"\\f2db\"}.fa-snowflake-o:before{content:\"\\f2dc\"}.fa-superpowers:before{content:\"\\f2dd\"}.fa-wpexplorer:before{content:\"\\f2de\"}.fa-meetup:before{content:\"\\f2e0\"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\"\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:#ffffff80}.angular-editor-toolbar{font:100 14px/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;font-size:.8rem;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar .angular-editor-toolbar-set{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:none;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\"\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar .angular-editor-toolbar-set:not([style*=\"display:none\"]):not([style*=\"display: none\"]){display:inline-block}\n"], components: [{ type: i2.AeSelectComponent, selector: "ae-select", inputs: ["options", "hidden"], outputs: ["change"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AngularEditorToolbarComponent, decorators: [{
334
- type: Component,
335
- args: [{ selector: 'angular-editor-toolbar', template: "<div class=\"angular-editor-toolbar\" *ngIf=\"showToolbar\">\n <div class=\"angular-editor-toolbar-set\">\n <button type=\"button\" title=\"Undo\" class=\"angular-editor-button\" (click)=\"triggerCommand('undo')\"\n [hidden]=\"isButtonHidden('undo')\" tabindex=\"-1\"><i\n class='fa fa-undo'></i></button>\n <button type=\"button\" title=\"Redo\" class=\"angular-editor-button\" (click)=\"triggerCommand('redo')\"\n [hidden]=\"isButtonHidden('redo')\" tabindex=\"-1\"><i\n class='fa fa-repeat'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'bold-'+id\" type=\"button\" title=\"Bold\" class=\"angular-editor-button\" (click)=\"triggerCommand('bold')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('bold')\" tabindex=\"-1\"><i class='fa fa-bold'></i></button>\n <button [id]=\"'italic-'+id\" type=\"button\" title=\"Italic\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('italic')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('italic')\" tabindex=\"-1\"><i class='fa fa-italic'></i>\n </button>\n <button [id]=\"'underline-'+id\" type=\"button\" title=\"Underline\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('underline')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('underline')\"\n tabindex=\"-1\"><i class='fa fa-underline'></i></button>\n <button [id]=\"'strikeThrough-'+id\" type=\"button\" title=\"Strikethrough\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('strikeThrough')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('strikeThrough')\"\n tabindex=\"-1\"><i class='fa fa-strikethrough'></i></button>\n <button [id]=\"'subscript-'+id\" type=\"button\" title=\"Subscript\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('subscript')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('subscript')\"\n tabindex=\"-1\"><i class='fa fa-subscript'></i></button>\n <button [id]=\"'superscript-'+id\" type=\"button\" title=\"Superscript\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('superscript')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('superscript')\"\n tabindex=\"-1\"><i class='fa fa-superscript'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'justifyLeft-'+id\" type=\"button\" title=\"Justify Left\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyLeft')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyLeft')\"\n tabindex=\"-1\"><i\n class='fa fa-align-left'></i></button>\n <button [id]=\"'justifyCenter-'+id\" type=\"button\" title=\"Justify Center\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyCenter')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyCenter')\"\n tabindex=\"-1\"><i\n class='fa fa-align-center'></i></button>\n <button [id]=\"'justifyRight-'+id\" type=\"button\" title=\"Justify Right\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyRight')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyRight')\"\n tabindex=\"-1\">\n <i class='fa fa-align-right'></i></button>\n <button [id]=\"'justifyFull-'+id\" type=\"button\" title=\"Justify Full\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('justifyFull')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyFull')\"\n tabindex=\"-1\"><i\n class='fa fa-align-justify'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'indent-'+id\" type=\"button\" title=\"Indent\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('indent')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('indent')\" tabindex=\"-1\"><i\n class='fa fa-indent'></i></button>\n <button [id]=\"'outdent-'+id\" type=\"button\" title=\"Outdent\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('outdent')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('outdent')\" tabindex=\"-1\"><i\n class='fa fa-outdent'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'insertUnorderedList-'+id\" type=\"button\" title=\"Unordered List\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('insertUnorderedList')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertUnorderedList')\" tabindex=\"-1\"><i\n class='fa fa-list-ul'></i></button>\n <button [id]=\"'insertOrderedList-'+id\" type=\"button\" title=\"Ordered List\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('insertOrderedList')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertOrderedList')\" tabindex=\"-1\"><i\n class='fa fa-list-ol'></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n\n <ae-select class=\"select-heading\" [options]=\"headings\"\n [(ngModel)]=\"block\"\n (change)=\"triggerCommand(block)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('heading')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n\n <ae-select class=\"select-font\" [options]=\"fonts\"\n [(ngModel)]=\"fontName\"\n (change)=\"setFontName(fontName)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('fontName')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n\n <ae-select class=\"select-font-size\" [options]=\"fontSizes\"\n [(ngModel)]=\"fontSize\"\n (change)=\"setFontSize(fontSize)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('fontSize')\"\n tabindex=\"-1\">\n </ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <input\n style=\"display: none\"\n type=\"color\" (change)=\"insertColor(fgInput.value, 'textColor')\"\n #fgInput>\n <button [id]=\"'foregroundColorPicker-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); ; fgInput.click()\"\n title=\"Text Color\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('textColor')\" tabindex=\"-1\"><span\n class=\"color-label foreground\"><i class=\"fa fa-font\"></i></span>\n </button>\n <input\n style=\"display: none\"\n type=\"color\" (change)=\"insertColor(bgInput.value, 'backgroundColor')\"\n #bgInput>\n <button [id]=\"'backgroundColorPicker-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); ; bgInput.click()\"\n title=\"Background Color\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('backgroundColor')\" tabindex=\"-1\"><span\n class=\"color-label background\"><i class=\"fa fa-font\"></i></span>\n </button>\n </div>\n <div *ngIf=\"_customClasses\" class=\"angular-editor-toolbar-set\">\n <ae-select class=\"select-custom-style\" [options]=\"customClassList\"\n [(ngModel)]=\"customClassId\"\n (change)=\"setCustomClass(customClassId)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('customClasses')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'link-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"insertUrl()\"\n title=\"Insert Link\" [disabled]=\"isLinkButtonDisabled\" [hidden]=\"isButtonHidden('link')\" tabindex=\"-1\">\n <i class=\"fa fa-link\"></i>\n </button>\n <button [id]=\"'unlink-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"triggerCommand('unlink')\"\n title=\"Unlink\" [disabled]=\"htmlMode || !linkSelected\" [hidden]=\"isButtonHidden('unlink')\" tabindex=\"-1\">\n <i class=\"fa fa-chain-broken\"></i>\n </button>\n <input\n style=\"display: none\"\n accept=\"image/*\"\n type=\"file\" (change)=\"onFileChanged($event)\"\n #fileInput>\n <button [id]=\"'insertImage-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); fileInput.click()\"\n title=\"Insert Image\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('insertImage')\" tabindex=\"-1\"><i class=\"fa fa-image\"></i>\n </button>\n <button [id]=\"'insertVideo-'+id\" type=\"button\" class=\"angular-editor-button\"\n (click)=\"insertVideo()\" title=\"Insert Video\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('insertVideo')\"\n tabindex=\"-1\"><i\n class=\"fa fa-video-camera\"></i></button>\n <button [id]=\"'insertHorizontalRule-'+id\" type=\"button\" title=\"Horizontal Line\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('insertHorizontalRule')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertHorizontalRule')\" tabindex=\"-1\"><i\n class=\"fa fa-minus\"></i></button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'clearFormatting-'+id\" type=\"button\" title=\"Clear Formatting\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('removeFormat')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('removeFormat')\"\n tabindex=\"-1\"><i class='fa fa-remove'></i>\n </button>\n </div>\n <div class=\"angular-editor-toolbar-set\">\n <button [id]=\"'toggleEditorMode-'+id\" type=\"button\" title=\"HTML Code\" class=\"angular-editor-button\"\n (click)=\"triggerCommand('toggleEditorMode')\" [hidden]=\"isButtonHidden('toggleEditorMode')\" tabindex=\"-1\"><i\n class='fa fa-code'></i></button>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: ["/*!\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */@font-face{font-family:FontAwesome;src:url(/assets/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(/assets/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format(\"embedded-opentype\"),url(/assets/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\"woff2\"),url(/assets/fonts/fontawesome-webfont.woff?v=4.7.0) format(\"woff\"),url(/assets/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\"truetype\"),url(/assets/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\"svg\");font-weight:400;font-style:normal}.fa{display:inline-block;font: 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";transform:scaleY(-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\"\\f000\"}.fa-music:before{content:\"\\f001\"}.fa-search:before{content:\"\\f002\"}.fa-envelope-o:before{content:\"\\f003\"}.fa-heart:before{content:\"\\f004\"}.fa-star:before{content:\"\\f005\"}.fa-star-o:before{content:\"\\f006\"}.fa-user:before{content:\"\\f007\"}.fa-film:before{content:\"\\f008\"}.fa-th-large:before{content:\"\\f009\"}.fa-th:before{content:\"\\f00a\"}.fa-th-list:before{content:\"\\f00b\"}.fa-check:before{content:\"\\f00c\"}.fa-remove:before,.fa-close:before,.fa-times:before{content:\"\\f00d\"}.fa-search-plus:before{content:\"\\f00e\"}.fa-search-minus:before{content:\"\\f010\"}.fa-power-off:before{content:\"\\f011\"}.fa-signal:before{content:\"\\f012\"}.fa-gear:before,.fa-cog:before{content:\"\\f013\"}.fa-trash-o:before{content:\"\\f014\"}.fa-home:before{content:\"\\f015\"}.fa-file-o:before{content:\"\\f016\"}.fa-clock-o:before{content:\"\\f017\"}.fa-road:before{content:\"\\f018\"}.fa-download:before{content:\"\\f019\"}.fa-arrow-circle-o-down:before{content:\"\\f01a\"}.fa-arrow-circle-o-up:before{content:\"\\f01b\"}.fa-inbox:before{content:\"\\f01c\"}.fa-play-circle-o:before{content:\"\\f01d\"}.fa-rotate-right:before,.fa-repeat:before{content:\"\\f01e\"}.fa-refresh:before{content:\"\\f021\"}.fa-list-alt:before{content:\"\\f022\"}.fa-lock:before{content:\"\\f023\"}.fa-flag:before{content:\"\\f024\"}.fa-headphones:before{content:\"\\f025\"}.fa-volume-off:before{content:\"\\f026\"}.fa-volume-down:before{content:\"\\f027\"}.fa-volume-up:before{content:\"\\f028\"}.fa-qrcode:before{content:\"\\f029\"}.fa-barcode:before{content:\"\\f02a\"}.fa-tag:before{content:\"\\f02b\"}.fa-tags:before{content:\"\\f02c\"}.fa-book:before{content:\"\\f02d\"}.fa-bookmark:before{content:\"\\f02e\"}.fa-print:before{content:\"\\f02f\"}.fa-camera:before{content:\"\\f030\"}.fa-font:before{content:\"\\f031\"}.fa-bold:before{content:\"\\f032\"}.fa-italic:before{content:\"\\f033\"}.fa-text-height:before{content:\"\\f034\"}.fa-text-width:before{content:\"\\f035\"}.fa-align-left:before{content:\"\\f036\"}.fa-align-center:before{content:\"\\f037\"}.fa-align-right:before{content:\"\\f038\"}.fa-align-justify:before{content:\"\\f039\"}.fa-list:before{content:\"\\f03a\"}.fa-dedent:before,.fa-outdent:before{content:\"\\f03b\"}.fa-indent:before{content:\"\\f03c\"}.fa-video-camera:before{content:\"\\f03d\"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:\"\\f03e\"}.fa-pencil:before{content:\"\\f040\"}.fa-map-marker:before{content:\"\\f041\"}.fa-adjust:before{content:\"\\f042\"}.fa-tint:before{content:\"\\f043\"}.fa-edit:before,.fa-pencil-square-o:before{content:\"\\f044\"}.fa-share-square-o:before{content:\"\\f045\"}.fa-check-square-o:before{content:\"\\f046\"}.fa-arrows:before{content:\"\\f047\"}.fa-step-backward:before{content:\"\\f048\"}.fa-fast-backward:before{content:\"\\f049\"}.fa-backward:before{content:\"\\f04a\"}.fa-play:before{content:\"\\f04b\"}.fa-pause:before{content:\"\\f04c\"}.fa-stop:before{content:\"\\f04d\"}.fa-forward:before{content:\"\\f04e\"}.fa-fast-forward:before{content:\"\\f050\"}.fa-step-forward:before{content:\"\\f051\"}.fa-eject:before{content:\"\\f052\"}.fa-chevron-left:before{content:\"\\f053\"}.fa-chevron-right:before{content:\"\\f054\"}.fa-plus-circle:before{content:\"\\f055\"}.fa-minus-circle:before{content:\"\\f056\"}.fa-times-circle:before{content:\"\\f057\"}.fa-check-circle:before{content:\"\\f058\"}.fa-question-circle:before{content:\"\\f059\"}.fa-info-circle:before{content:\"\\f05a\"}.fa-crosshairs:before{content:\"\\f05b\"}.fa-times-circle-o:before{content:\"\\f05c\"}.fa-check-circle-o:before{content:\"\\f05d\"}.fa-ban:before{content:\"\\f05e\"}.fa-arrow-left:before{content:\"\\f060\"}.fa-arrow-right:before{content:\"\\f061\"}.fa-arrow-up:before{content:\"\\f062\"}.fa-arrow-down:before{content:\"\\f063\"}.fa-mail-forward:before,.fa-share:before{content:\"\\f064\"}.fa-expand:before{content:\"\\f065\"}.fa-compress:before{content:\"\\f066\"}.fa-plus:before{content:\"\\f067\"}.fa-minus:before{content:\"\\f068\"}.fa-asterisk:before{content:\"\\f069\"}.fa-exclamation-circle:before{content:\"\\f06a\"}.fa-gift:before{content:\"\\f06b\"}.fa-leaf:before{content:\"\\f06c\"}.fa-fire:before{content:\"\\f06d\"}.fa-eye:before{content:\"\\f06e\"}.fa-eye-slash:before{content:\"\\f070\"}.fa-warning:before,.fa-exclamation-triangle:before{content:\"\\f071\"}.fa-plane:before{content:\"\\f072\"}.fa-calendar:before{content:\"\\f073\"}.fa-random:before{content:\"\\f074\"}.fa-comment:before{content:\"\\f075\"}.fa-magnet:before{content:\"\\f076\"}.fa-chevron-up:before{content:\"\\f077\"}.fa-chevron-down:before{content:\"\\f078\"}.fa-retweet:before{content:\"\\f079\"}.fa-shopping-cart:before{content:\"\\f07a\"}.fa-folder:before{content:\"\\f07b\"}.fa-folder-open:before{content:\"\\f07c\"}.fa-arrows-v:before{content:\"\\f07d\"}.fa-arrows-h:before{content:\"\\f07e\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\"\\f080\"}.fa-twitter-square:before{content:\"\\f081\"}.fa-facebook-square:before{content:\"\\f082\"}.fa-camera-retro:before{content:\"\\f083\"}.fa-key:before{content:\"\\f084\"}.fa-gears:before,.fa-cogs:before{content:\"\\f085\"}.fa-comments:before{content:\"\\f086\"}.fa-thumbs-o-up:before{content:\"\\f087\"}.fa-thumbs-o-down:before{content:\"\\f088\"}.fa-star-half:before{content:\"\\f089\"}.fa-heart-o:before{content:\"\\f08a\"}.fa-sign-out:before{content:\"\\f08b\"}.fa-linkedin-square:before{content:\"\\f08c\"}.fa-thumb-tack:before{content:\"\\f08d\"}.fa-external-link:before{content:\"\\f08e\"}.fa-sign-in:before{content:\"\\f090\"}.fa-trophy:before{content:\"\\f091\"}.fa-github-square:before{content:\"\\f092\"}.fa-upload:before{content:\"\\f093\"}.fa-lemon-o:before{content:\"\\f094\"}.fa-phone:before{content:\"\\f095\"}.fa-square-o:before{content:\"\\f096\"}.fa-bookmark-o:before{content:\"\\f097\"}.fa-phone-square:before{content:\"\\f098\"}.fa-twitter:before{content:\"\\f099\"}.fa-facebook-f:before,.fa-facebook:before{content:\"\\f09a\"}.fa-github:before{content:\"\\f09b\"}.fa-unlock:before{content:\"\\f09c\"}.fa-credit-card:before{content:\"\\f09d\"}.fa-feed:before,.fa-rss:before{content:\"\\f09e\"}.fa-hdd-o:before{content:\"\\f0a0\"}.fa-bullhorn:before{content:\"\\f0a1\"}.fa-bell:before{content:\"\\f0f3\"}.fa-certificate:before{content:\"\\f0a3\"}.fa-hand-o-right:before{content:\"\\f0a4\"}.fa-hand-o-left:before{content:\"\\f0a5\"}.fa-hand-o-up:before{content:\"\\f0a6\"}.fa-hand-o-down:before{content:\"\\f0a7\"}.fa-arrow-circle-left:before{content:\"\\f0a8\"}.fa-arrow-circle-right:before{content:\"\\f0a9\"}.fa-arrow-circle-up:before{content:\"\\f0aa\"}.fa-arrow-circle-down:before{content:\"\\f0ab\"}.fa-globe:before{content:\"\\f0ac\"}.fa-wrench:before{content:\"\\f0ad\"}.fa-tasks:before{content:\"\\f0ae\"}.fa-filter:before{content:\"\\f0b0\"}.fa-briefcase:before{content:\"\\f0b1\"}.fa-arrows-alt:before{content:\"\\f0b2\"}.fa-group:before,.fa-users:before{content:\"\\f0c0\"}.fa-chain:before,.fa-link:before{content:\"\\f0c1\"}.fa-cloud:before{content:\"\\f0c2\"}.fa-flask:before{content:\"\\f0c3\"}.fa-cut:before,.fa-scissors:before{content:\"\\f0c4\"}.fa-copy:before,.fa-files-o:before{content:\"\\f0c5\"}.fa-paperclip:before{content:\"\\f0c6\"}.fa-save:before,.fa-floppy-o:before{content:\"\\f0c7\"}.fa-square:before{content:\"\\f0c8\"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:\"\\f0c9\"}.fa-list-ul:before{content:\"\\f0ca\"}.fa-list-ol:before{content:\"\\f0cb\"}.fa-strikethrough:before{content:\"\\f0cc\"}.fa-underline:before{content:\"\\f0cd\"}.fa-table:before{content:\"\\f0ce\"}.fa-magic:before{content:\"\\f0d0\"}.fa-truck:before{content:\"\\f0d1\"}.fa-pinterest:before{content:\"\\f0d2\"}.fa-pinterest-square:before{content:\"\\f0d3\"}.fa-google-plus-square:before{content:\"\\f0d4\"}.fa-google-plus:before{content:\"\\f0d5\"}.fa-money:before{content:\"\\f0d6\"}.fa-caret-down:before{content:\"\\f0d7\"}.fa-caret-up:before{content:\"\\f0d8\"}.fa-caret-left:before{content:\"\\f0d9\"}.fa-caret-right:before{content:\"\\f0da\"}.fa-columns:before{content:\"\\f0db\"}.fa-unsorted:before,.fa-sort:before{content:\"\\f0dc\"}.fa-sort-down:before,.fa-sort-desc:before{content:\"\\f0dd\"}.fa-sort-up:before,.fa-sort-asc:before{content:\"\\f0de\"}.fa-envelope:before{content:\"\\f0e0\"}.fa-linkedin:before{content:\"\\f0e1\"}.fa-rotate-left:before,.fa-undo:before{content:\"\\f0e2\"}.fa-legal:before,.fa-gavel:before{content:\"\\f0e3\"}.fa-dashboard:before,.fa-tachometer:before{content:\"\\f0e4\"}.fa-comment-o:before{content:\"\\f0e5\"}.fa-comments-o:before{content:\"\\f0e6\"}.fa-flash:before,.fa-bolt:before{content:\"\\f0e7\"}.fa-sitemap:before{content:\"\\f0e8\"}.fa-umbrella:before{content:\"\\f0e9\"}.fa-paste:before,.fa-clipboard:before{content:\"\\f0ea\"}.fa-lightbulb-o:before{content:\"\\f0eb\"}.fa-exchange:before{content:\"\\f0ec\"}.fa-cloud-download:before{content:\"\\f0ed\"}.fa-cloud-upload:before{content:\"\\f0ee\"}.fa-user-md:before{content:\"\\f0f0\"}.fa-stethoscope:before{content:\"\\f0f1\"}.fa-suitcase:before{content:\"\\f0f2\"}.fa-bell-o:before{content:\"\\f0a2\"}.fa-coffee:before{content:\"\\f0f4\"}.fa-cutlery:before{content:\"\\f0f5\"}.fa-file-text-o:before{content:\"\\f0f6\"}.fa-building-o:before{content:\"\\f0f7\"}.fa-hospital-o:before{content:\"\\f0f8\"}.fa-ambulance:before{content:\"\\f0f9\"}.fa-medkit:before{content:\"\\f0fa\"}.fa-fighter-jet:before{content:\"\\f0fb\"}.fa-beer:before{content:\"\\f0fc\"}.fa-h-square:before{content:\"\\f0fd\"}.fa-plus-square:before{content:\"\\f0fe\"}.fa-angle-double-left:before{content:\"\\f100\"}.fa-angle-double-right:before{content:\"\\f101\"}.fa-angle-double-up:before{content:\"\\f102\"}.fa-angle-double-down:before{content:\"\\f103\"}.fa-angle-left:before{content:\"\\f104\"}.fa-angle-right:before{content:\"\\f105\"}.fa-angle-up:before{content:\"\\f106\"}.fa-angle-down:before{content:\"\\f107\"}.fa-desktop:before{content:\"\\f108\"}.fa-laptop:before{content:\"\\f109\"}.fa-tablet:before{content:\"\\f10a\"}.fa-mobile-phone:before,.fa-mobile:before{content:\"\\f10b\"}.fa-circle-o:before{content:\"\\f10c\"}.fa-quote-left:before{content:\"\\f10d\"}.fa-quote-right:before{content:\"\\f10e\"}.fa-spinner:before{content:\"\\f110\"}.fa-circle:before{content:\"\\f111\"}.fa-mail-reply:before,.fa-reply:before{content:\"\\f112\"}.fa-github-alt:before{content:\"\\f113\"}.fa-folder-o:before{content:\"\\f114\"}.fa-folder-open-o:before{content:\"\\f115\"}.fa-smile-o:before{content:\"\\f118\"}.fa-frown-o:before{content:\"\\f119\"}.fa-meh-o:before{content:\"\\f11a\"}.fa-gamepad:before{content:\"\\f11b\"}.fa-keyboard-o:before{content:\"\\f11c\"}.fa-flag-o:before{content:\"\\f11d\"}.fa-flag-checkered:before{content:\"\\f11e\"}.fa-terminal:before{content:\"\\f120\"}.fa-code:before{content:\"\\f121\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\"\\f122\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\"\\f123\"}.fa-location-arrow:before{content:\"\\f124\"}.fa-crop:before{content:\"\\f125\"}.fa-code-fork:before{content:\"\\f126\"}.fa-unlink:before,.fa-chain-broken:before{content:\"\\f127\"}.fa-question:before{content:\"\\f128\"}.fa-info:before{content:\"\\f129\"}.fa-exclamation:before{content:\"\\f12a\"}.fa-superscript:before{content:\"\\f12b\"}.fa-subscript:before{content:\"\\f12c\"}.fa-eraser:before{content:\"\\f12d\"}.fa-puzzle-piece:before{content:\"\\f12e\"}.fa-microphone:before{content:\"\\f130\"}.fa-microphone-slash:before{content:\"\\f131\"}.fa-shield:before{content:\"\\f132\"}.fa-calendar-o:before{content:\"\\f133\"}.fa-fire-extinguisher:before{content:\"\\f134\"}.fa-rocket:before{content:\"\\f135\"}.fa-maxcdn:before{content:\"\\f136\"}.fa-chevron-circle-left:before{content:\"\\f137\"}.fa-chevron-circle-right:before{content:\"\\f138\"}.fa-chevron-circle-up:before{content:\"\\f139\"}.fa-chevron-circle-down:before{content:\"\\f13a\"}.fa-html5:before{content:\"\\f13b\"}.fa-css3:before{content:\"\\f13c\"}.fa-anchor:before{content:\"\\f13d\"}.fa-unlock-alt:before{content:\"\\f13e\"}.fa-bullseye:before{content:\"\\f140\"}.fa-ellipsis-h:before{content:\"\\f141\"}.fa-ellipsis-v:before{content:\"\\f142\"}.fa-rss-square:before{content:\"\\f143\"}.fa-play-circle:before{content:\"\\f144\"}.fa-ticket:before{content:\"\\f145\"}.fa-minus-square:before{content:\"\\f146\"}.fa-minus-square-o:before{content:\"\\f147\"}.fa-level-up:before{content:\"\\f148\"}.fa-level-down:before{content:\"\\f149\"}.fa-check-square:before{content:\"\\f14a\"}.fa-pencil-square:before{content:\"\\f14b\"}.fa-external-link-square:before{content:\"\\f14c\"}.fa-share-square:before{content:\"\\f14d\"}.fa-compass:before{content:\"\\f14e\"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:\"\\f150\"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:\"\\f151\"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:\"\\f152\"}.fa-euro:before,.fa-eur:before{content:\"\\f153\"}.fa-gbp:before{content:\"\\f154\"}.fa-dollar:before,.fa-usd:before{content:\"\\f155\"}.fa-rupee:before,.fa-inr:before{content:\"\\f156\"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:\"\\f157\"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:\"\\f158\"}.fa-won:before,.fa-krw:before{content:\"\\f159\"}.fa-bitcoin:before,.fa-btc:before{content:\"\\f15a\"}.fa-file:before{content:\"\\f15b\"}.fa-file-text:before{content:\"\\f15c\"}.fa-sort-alpha-asc:before{content:\"\\f15d\"}.fa-sort-alpha-desc:before{content:\"\\f15e\"}.fa-sort-amount-asc:before{content:\"\\f160\"}.fa-sort-amount-desc:before{content:\"\\f161\"}.fa-sort-numeric-asc:before{content:\"\\f162\"}.fa-sort-numeric-desc:before{content:\"\\f163\"}.fa-thumbs-up:before{content:\"\\f164\"}.fa-thumbs-down:before{content:\"\\f165\"}.fa-youtube-square:before{content:\"\\f166\"}.fa-youtube:before{content:\"\\f167\"}.fa-xing:before{content:\"\\f168\"}.fa-xing-square:before{content:\"\\f169\"}.fa-youtube-play:before{content:\"\\f16a\"}.fa-dropbox:before{content:\"\\f16b\"}.fa-stack-overflow:before{content:\"\\f16c\"}.fa-instagram:before{content:\"\\f16d\"}.fa-flickr:before{content:\"\\f16e\"}.fa-adn:before{content:\"\\f170\"}.fa-bitbucket:before{content:\"\\f171\"}.fa-bitbucket-square:before{content:\"\\f172\"}.fa-tumblr:before{content:\"\\f173\"}.fa-tumblr-square:before{content:\"\\f174\"}.fa-long-arrow-down:before{content:\"\\f175\"}.fa-long-arrow-up:before{content:\"\\f176\"}.fa-long-arrow-left:before{content:\"\\f177\"}.fa-long-arrow-right:before{content:\"\\f178\"}.fa-apple:before{content:\"\\f179\"}.fa-windows:before{content:\"\\f17a\"}.fa-android:before{content:\"\\f17b\"}.fa-linux:before{content:\"\\f17c\"}.fa-dribbble:before{content:\"\\f17d\"}.fa-skype:before{content:\"\\f17e\"}.fa-foursquare:before{content:\"\\f180\"}.fa-trello:before{content:\"\\f181\"}.fa-female:before{content:\"\\f182\"}.fa-male:before{content:\"\\f183\"}.fa-gittip:before,.fa-gratipay:before{content:\"\\f184\"}.fa-sun-o:before{content:\"\\f185\"}.fa-moon-o:before{content:\"\\f186\"}.fa-archive:before{content:\"\\f187\"}.fa-bug:before{content:\"\\f188\"}.fa-vk:before{content:\"\\f189\"}.fa-weibo:before{content:\"\\f18a\"}.fa-renren:before{content:\"\\f18b\"}.fa-pagelines:before{content:\"\\f18c\"}.fa-stack-exchange:before{content:\"\\f18d\"}.fa-arrow-circle-o-right:before{content:\"\\f18e\"}.fa-arrow-circle-o-left:before{content:\"\\f190\"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:\"\\f191\"}.fa-dot-circle-o:before{content:\"\\f192\"}.fa-wheelchair:before{content:\"\\f193\"}.fa-vimeo-square:before{content:\"\\f194\"}.fa-turkish-lira:before,.fa-try:before{content:\"\\f195\"}.fa-plus-square-o:before{content:\"\\f196\"}.fa-space-shuttle:before{content:\"\\f197\"}.fa-slack:before{content:\"\\f198\"}.fa-envelope-square:before{content:\"\\f199\"}.fa-wordpress:before{content:\"\\f19a\"}.fa-openid:before{content:\"\\f19b\"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:\"\\f19c\"}.fa-mortar-board:before,.fa-graduation-cap:before{content:\"\\f19d\"}.fa-yahoo:before{content:\"\\f19e\"}.fa-google:before{content:\"\\f1a0\"}.fa-reddit:before{content:\"\\f1a1\"}.fa-reddit-square:before{content:\"\\f1a2\"}.fa-stumbleupon-circle:before{content:\"\\f1a3\"}.fa-stumbleupon:before{content:\"\\f1a4\"}.fa-delicious:before{content:\"\\f1a5\"}.fa-digg:before{content:\"\\f1a6\"}.fa-pied-piper-pp:before{content:\"\\f1a7\"}.fa-pied-piper-alt:before{content:\"\\f1a8\"}.fa-drupal:before{content:\"\\f1a9\"}.fa-joomla:before{content:\"\\f1aa\"}.fa-language:before{content:\"\\f1ab\"}.fa-fax:before{content:\"\\f1ac\"}.fa-building:before{content:\"\\f1ad\"}.fa-child:before{content:\"\\f1ae\"}.fa-paw:before{content:\"\\f1b0\"}.fa-spoon:before{content:\"\\f1b1\"}.fa-cube:before{content:\"\\f1b2\"}.fa-cubes:before{content:\"\\f1b3\"}.fa-behance:before{content:\"\\f1b4\"}.fa-behance-square:before{content:\"\\f1b5\"}.fa-steam:before{content:\"\\f1b6\"}.fa-steam-square:before{content:\"\\f1b7\"}.fa-recycle:before{content:\"\\f1b8\"}.fa-automobile:before,.fa-car:before{content:\"\\f1b9\"}.fa-cab:before,.fa-taxi:before{content:\"\\f1ba\"}.fa-tree:before{content:\"\\f1bb\"}.fa-spotify:before{content:\"\\f1bc\"}.fa-deviantart:before{content:\"\\f1bd\"}.fa-soundcloud:before{content:\"\\f1be\"}.fa-database:before{content:\"\\f1c0\"}.fa-file-pdf-o:before{content:\"\\f1c1\"}.fa-file-word-o:before{content:\"\\f1c2\"}.fa-file-excel-o:before{content:\"\\f1c3\"}.fa-file-powerpoint-o:before{content:\"\\f1c4\"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:\"\\f1c5\"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:\"\\f1c6\"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:\"\\f1c7\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\"\\f1c8\"}.fa-file-code-o:before{content:\"\\f1c9\"}.fa-vine:before{content:\"\\f1ca\"}.fa-codepen:before{content:\"\\f1cb\"}.fa-jsfiddle:before{content:\"\\f1cc\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:\"\\f1cd\"}.fa-circle-o-notch:before{content:\"\\f1ce\"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:\"\\f1d0\"}.fa-ge:before,.fa-empire:before{content:\"\\f1d1\"}.fa-git-square:before{content:\"\\f1d2\"}.fa-git:before{content:\"\\f1d3\"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:\"\\f1d4\"}.fa-tencent-weibo:before{content:\"\\f1d5\"}.fa-qq:before{content:\"\\f1d6\"}.fa-wechat:before,.fa-weixin:before{content:\"\\f1d7\"}.fa-send:before,.fa-paper-plane:before{content:\"\\f1d8\"}.fa-send-o:before,.fa-paper-plane-o:before{content:\"\\f1d9\"}.fa-history:before{content:\"\\f1da\"}.fa-circle-thin:before{content:\"\\f1db\"}.fa-header:before{content:\"\\f1dc\"}.fa-paragraph:before{content:\"\\f1dd\"}.fa-sliders:before{content:\"\\f1de\"}.fa-share-alt:before{content:\"\\f1e0\"}.fa-share-alt-square:before{content:\"\\f1e1\"}.fa-bomb:before{content:\"\\f1e2\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\"\\f1e3\"}.fa-tty:before{content:\"\\f1e4\"}.fa-binoculars:before{content:\"\\f1e5\"}.fa-plug:before{content:\"\\f1e6\"}.fa-slideshare:before{content:\"\\f1e7\"}.fa-twitch:before{content:\"\\f1e8\"}.fa-yelp:before{content:\"\\f1e9\"}.fa-newspaper-o:before{content:\"\\f1ea\"}.fa-wifi:before{content:\"\\f1eb\"}.fa-calculator:before{content:\"\\f1ec\"}.fa-paypal:before{content:\"\\f1ed\"}.fa-google-wallet:before{content:\"\\f1ee\"}.fa-cc-visa:before{content:\"\\f1f0\"}.fa-cc-mastercard:before{content:\"\\f1f1\"}.fa-cc-discover:before{content:\"\\f1f2\"}.fa-cc-amex:before{content:\"\\f1f3\"}.fa-cc-paypal:before{content:\"\\f1f4\"}.fa-cc-stripe:before{content:\"\\f1f5\"}.fa-bell-slash:before{content:\"\\f1f6\"}.fa-bell-slash-o:before{content:\"\\f1f7\"}.fa-trash:before{content:\"\\f1f8\"}.fa-copyright:before{content:\"\\f1f9\"}.fa-at:before{content:\"\\f1fa\"}.fa-eyedropper:before{content:\"\\f1fb\"}.fa-paint-brush:before{content:\"\\f1fc\"}.fa-birthday-cake:before{content:\"\\f1fd\"}.fa-area-chart:before{content:\"\\f1fe\"}.fa-pie-chart:before{content:\"\\f200\"}.fa-line-chart:before{content:\"\\f201\"}.fa-lastfm:before{content:\"\\f202\"}.fa-lastfm-square:before{content:\"\\f203\"}.fa-toggle-off:before{content:\"\\f204\"}.fa-toggle-on:before{content:\"\\f205\"}.fa-bicycle:before{content:\"\\f206\"}.fa-bus:before{content:\"\\f207\"}.fa-ioxhost:before{content:\"\\f208\"}.fa-angellist:before{content:\"\\f209\"}.fa-cc:before{content:\"\\f20a\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\"\\f20b\"}.fa-meanpath:before{content:\"\\f20c\"}.fa-buysellads:before{content:\"\\f20d\"}.fa-connectdevelop:before{content:\"\\f20e\"}.fa-dashcube:before{content:\"\\f210\"}.fa-forumbee:before{content:\"\\f211\"}.fa-leanpub:before{content:\"\\f212\"}.fa-sellsy:before{content:\"\\f213\"}.fa-shirtsinbulk:before{content:\"\\f214\"}.fa-simplybuilt:before{content:\"\\f215\"}.fa-skyatlas:before{content:\"\\f216\"}.fa-cart-plus:before{content:\"\\f217\"}.fa-cart-arrow-down:before{content:\"\\f218\"}.fa-diamond:before{content:\"\\f219\"}.fa-ship:before{content:\"\\f21a\"}.fa-user-secret:before{content:\"\\f21b\"}.fa-motorcycle:before{content:\"\\f21c\"}.fa-street-view:before{content:\"\\f21d\"}.fa-heartbeat:before{content:\"\\f21e\"}.fa-venus:before{content:\"\\f221\"}.fa-mars:before{content:\"\\f222\"}.fa-mercury:before{content:\"\\f223\"}.fa-intersex:before,.fa-transgender:before{content:\"\\f224\"}.fa-transgender-alt:before{content:\"\\f225\"}.fa-venus-double:before{content:\"\\f226\"}.fa-mars-double:before{content:\"\\f227\"}.fa-venus-mars:before{content:\"\\f228\"}.fa-mars-stroke:before{content:\"\\f229\"}.fa-mars-stroke-v:before{content:\"\\f22a\"}.fa-mars-stroke-h:before{content:\"\\f22b\"}.fa-neuter:before{content:\"\\f22c\"}.fa-genderless:before{content:\"\\f22d\"}.fa-facebook-official:before{content:\"\\f230\"}.fa-pinterest-p:before{content:\"\\f231\"}.fa-whatsapp:before{content:\"\\f232\"}.fa-server:before{content:\"\\f233\"}.fa-user-plus:before{content:\"\\f234\"}.fa-user-times:before{content:\"\\f235\"}.fa-hotel:before,.fa-bed:before{content:\"\\f236\"}.fa-viacoin:before{content:\"\\f237\"}.fa-train:before{content:\"\\f238\"}.fa-subway:before{content:\"\\f239\"}.fa-medium:before{content:\"\\f23a\"}.fa-yc:before,.fa-y-combinator:before{content:\"\\f23b\"}.fa-optin-monster:before{content:\"\\f23c\"}.fa-opencart:before{content:\"\\f23d\"}.fa-expeditedssl:before{content:\"\\f23e\"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:\"\\f240\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\"\\f241\"}.fa-battery-2:before,.fa-battery-half:before{content:\"\\f242\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\"\\f243\"}.fa-battery-0:before,.fa-battery-empty:before{content:\"\\f244\"}.fa-mouse-pointer:before{content:\"\\f245\"}.fa-i-cursor:before{content:\"\\f246\"}.fa-object-group:before{content:\"\\f247\"}.fa-object-ungroup:before{content:\"\\f248\"}.fa-sticky-note:before{content:\"\\f249\"}.fa-sticky-note-o:before{content:\"\\f24a\"}.fa-cc-jcb:before{content:\"\\f24b\"}.fa-cc-diners-club:before{content:\"\\f24c\"}.fa-clone:before{content:\"\\f24d\"}.fa-balance-scale:before{content:\"\\f24e\"}.fa-hourglass-o:before{content:\"\\f250\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\"\\f251\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\"\\f252\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\"\\f253\"}.fa-hourglass:before{content:\"\\f254\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\"\\f255\"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:\"\\f256\"}.fa-hand-scissors-o:before{content:\"\\f257\"}.fa-hand-lizard-o:before{content:\"\\f258\"}.fa-hand-spock-o:before{content:\"\\f259\"}.fa-hand-pointer-o:before{content:\"\\f25a\"}.fa-hand-peace-o:before{content:\"\\f25b\"}.fa-trademark:before{content:\"\\f25c\"}.fa-registered:before{content:\"\\f25d\"}.fa-creative-commons:before{content:\"\\f25e\"}.fa-gg:before{content:\"\\f260\"}.fa-gg-circle:before{content:\"\\f261\"}.fa-tripadvisor:before{content:\"\\f262\"}.fa-odnoklassniki:before{content:\"\\f263\"}.fa-odnoklassniki-square:before{content:\"\\f264\"}.fa-get-pocket:before{content:\"\\f265\"}.fa-wikipedia-w:before{content:\"\\f266\"}.fa-safari:before{content:\"\\f267\"}.fa-chrome:before{content:\"\\f268\"}.fa-firefox:before{content:\"\\f269\"}.fa-opera:before{content:\"\\f26a\"}.fa-internet-explorer:before{content:\"\\f26b\"}.fa-tv:before,.fa-television:before{content:\"\\f26c\"}.fa-contao:before{content:\"\\f26d\"}.fa-500px:before{content:\"\\f26e\"}.fa-amazon:before{content:\"\\f270\"}.fa-calendar-plus-o:before{content:\"\\f271\"}.fa-calendar-minus-o:before{content:\"\\f272\"}.fa-calendar-times-o:before{content:\"\\f273\"}.fa-calendar-check-o:before{content:\"\\f274\"}.fa-industry:before{content:\"\\f275\"}.fa-map-pin:before{content:\"\\f276\"}.fa-map-signs:before{content:\"\\f277\"}.fa-map-o:before{content:\"\\f278\"}.fa-map:before{content:\"\\f279\"}.fa-commenting:before{content:\"\\f27a\"}.fa-commenting-o:before{content:\"\\f27b\"}.fa-houzz:before{content:\"\\f27c\"}.fa-vimeo:before{content:\"\\f27d\"}.fa-black-tie:before{content:\"\\f27e\"}.fa-fonticons:before{content:\"\\f280\"}.fa-reddit-alien:before{content:\"\\f281\"}.fa-edge:before{content:\"\\f282\"}.fa-credit-card-alt:before{content:\"\\f283\"}.fa-codiepie:before{content:\"\\f284\"}.fa-modx:before{content:\"\\f285\"}.fa-fort-awesome:before{content:\"\\f286\"}.fa-usb:before{content:\"\\f287\"}.fa-product-hunt:before{content:\"\\f288\"}.fa-mixcloud:before{content:\"\\f289\"}.fa-scribd:before{content:\"\\f28a\"}.fa-pause-circle:before{content:\"\\f28b\"}.fa-pause-circle-o:before{content:\"\\f28c\"}.fa-stop-circle:before{content:\"\\f28d\"}.fa-stop-circle-o:before{content:\"\\f28e\"}.fa-shopping-bag:before{content:\"\\f290\"}.fa-shopping-basket:before{content:\"\\f291\"}.fa-hashtag:before{content:\"\\f292\"}.fa-bluetooth:before{content:\"\\f293\"}.fa-bluetooth-b:before{content:\"\\f294\"}.fa-percent:before{content:\"\\f295\"}.fa-gitlab:before{content:\"\\f296\"}.fa-wpbeginner:before{content:\"\\f297\"}.fa-wpforms:before{content:\"\\f298\"}.fa-envira:before{content:\"\\f299\"}.fa-universal-access:before{content:\"\\f29a\"}.fa-wheelchair-alt:before{content:\"\\f29b\"}.fa-question-circle-o:before{content:\"\\f29c\"}.fa-blind:before{content:\"\\f29d\"}.fa-audio-description:before{content:\"\\f29e\"}.fa-volume-control-phone:before{content:\"\\f2a0\"}.fa-braille:before{content:\"\\f2a1\"}.fa-assistive-listening-systems:before{content:\"\\f2a2\"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:\"\\f2a3\"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:\"\\f2a4\"}.fa-glide:before{content:\"\\f2a5\"}.fa-glide-g:before{content:\"\\f2a6\"}.fa-signing:before,.fa-sign-language:before{content:\"\\f2a7\"}.fa-low-vision:before{content:\"\\f2a8\"}.fa-viadeo:before{content:\"\\f2a9\"}.fa-viadeo-square:before{content:\"\\f2aa\"}.fa-snapchat:before{content:\"\\f2ab\"}.fa-snapchat-ghost:before{content:\"\\f2ac\"}.fa-snapchat-square:before{content:\"\\f2ad\"}.fa-pied-piper:before{content:\"\\f2ae\"}.fa-first-order:before{content:\"\\f2b0\"}.fa-yoast:before{content:\"\\f2b1\"}.fa-themeisle:before{content:\"\\f2b2\"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:\"\\f2b3\"}.fa-fa:before,.fa-font-awesome:before{content:\"\\f2b4\"}.fa-handshake-o:before{content:\"\\f2b5\"}.fa-envelope-open:before{content:\"\\f2b6\"}.fa-envelope-open-o:before{content:\"\\f2b7\"}.fa-linode:before{content:\"\\f2b8\"}.fa-address-book:before{content:\"\\f2b9\"}.fa-address-book-o:before{content:\"\\f2ba\"}.fa-vcard:before,.fa-address-card:before{content:\"\\f2bb\"}.fa-vcard-o:before,.fa-address-card-o:before{content:\"\\f2bc\"}.fa-user-circle:before{content:\"\\f2bd\"}.fa-user-circle-o:before{content:\"\\f2be\"}.fa-user-o:before{content:\"\\f2c0\"}.fa-id-badge:before{content:\"\\f2c1\"}.fa-drivers-license:before,.fa-id-card:before{content:\"\\f2c2\"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:\"\\f2c3\"}.fa-quora:before{content:\"\\f2c4\"}.fa-free-code-camp:before{content:\"\\f2c5\"}.fa-telegram:before{content:\"\\f2c6\"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:\"\\f2c7\"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:\"\\f2c8\"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:\"\\f2c9\"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:\"\\f2ca\"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:\"\\f2cb\"}.fa-shower:before{content:\"\\f2cc\"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:\"\\f2cd\"}.fa-podcast:before{content:\"\\f2ce\"}.fa-window-maximize:before{content:\"\\f2d0\"}.fa-window-minimize:before{content:\"\\f2d1\"}.fa-window-restore:before{content:\"\\f2d2\"}.fa-times-rectangle:before,.fa-window-close:before{content:\"\\f2d3\"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:\"\\f2d4\"}.fa-bandcamp:before{content:\"\\f2d5\"}.fa-grav:before{content:\"\\f2d6\"}.fa-etsy:before{content:\"\\f2d7\"}.fa-imdb:before{content:\"\\f2d8\"}.fa-ravelry:before{content:\"\\f2d9\"}.fa-eercast:before{content:\"\\f2da\"}.fa-microchip:before{content:\"\\f2db\"}.fa-snowflake-o:before{content:\"\\f2dc\"}.fa-superpowers:before{content:\"\\f2dd\"}.fa-wpexplorer:before{content:\"\\f2de\"}.fa-meetup:before{content:\"\\f2e0\"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\"\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:#ffffff80}.angular-editor-toolbar{font:100 14px/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;font-size:.8rem;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar .angular-editor-toolbar-set{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:none;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\"\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar .angular-editor-toolbar-set:not([style*=\"display:none\"]):not([style*=\"display: none\"]){display:inline-block}\n"] }]
336
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.AngularEditorService }, { type: i0.ElementRef }, { type: undefined, decorators: [{
337
- type: Inject,
338
- args: [DOCUMENT]
339
- }] }]; }, propDecorators: { id: [{
340
- type: Input
341
- }], uploadUrl: [{
342
- type: Input
343
- }], upload: [{
344
- type: Input
345
- }], showToolbar: [{
346
- type: Input
347
- }], fonts: [{
348
- type: Input
349
- }], customClasses: [{
350
- type: Input
351
- }], defaultFontName: [{
352
- type: Input
353
- }], defaultFontSize: [{
354
- type: Input
355
- }], hiddenButtons: [{
356
- type: Input
357
- }], execute: [{
358
- type: Output
359
- }], myInputFile: [{
360
- type: ViewChild,
361
- args: ['fileInput', { static: true }]
362
- }] } });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWVkaXRvci9zcmMvbGliL2FuZ3VsYXItZWRpdG9yLXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1lZGl0b3Ivc3JjL2xpYi9hbmd1bGFyLWVkaXRvci10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQVd6QyxNQUFNLE9BQU8sNkJBQTZCO0lBOEl4QyxZQUNVLENBQVksRUFDWixhQUFtQyxFQUNuQyxFQUFjLEVBQ0ksR0FBUTtRQUgxQixNQUFDLEdBQUQsQ0FBQyxDQUFXO1FBQ1osa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDSSxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBakpwQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFVBQUssR0FBRyxTQUFTLENBQUM7UUFDbEIsYUFBUSxHQUFHLGlCQUFpQixDQUFDO1FBQzdCLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFJZixhQUFRLEdBQW1CO1lBQ3pCO2dCQUNFLEtBQUssRUFBRSxXQUFXO2dCQUNsQixLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxLQUFLLEVBQUUsV0FBVztnQkFDbEIsS0FBSyxFQUFFLElBQUk7YUFDWjtZ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LFNBQVM7K0JBQ0Usd0JBQXdCOzswQkF1Si9CLE1BQU07MkJBQUMsUUFBUTs0Q0EzQ1QsRUFBRTtzQkFBVixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUdGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBVUYsZUFBZTtzQkFEbEIsS0FBSztnQkFRRixlQUFlO3NCQURsQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksT0FBTztzQkFBaEIsTUFBTTtnQkFFaUMsV0FBVztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FuZ3VsYXJFZGl0b3JTZXJ2aWNlLCBVcGxvYWRSZXNwb25zZX0gZnJvbSAnLi9hbmd1bGFyLWVkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7SHR0cFJlc3BvbnNlLCBIdHRwRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0N1c3RvbUNsYXNzfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge1NlbGVjdE9wdGlvbn0gZnJvbSAnLi9hZS1zZWxlY3QvYWUtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FuZ3VsYXItZWRpdG9yLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYW5ndWxhci1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FuZ3VsYXItZWRpdG9yLXRvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyRWRpdG9yVG9vbGJhckNvbXBvbmVudCB7XG4gIGh0bWxNb2RlID0gZmFsc2U7XG4gIGxpbmtTZWxlY3RlZCA9IGZhbHNlO1xuICBibG9jayA9ICdkZWZhdWx0JztcbiAgZm9udE5hbWUgPSAnVGltZXMgTmV3IFJvbWFuJztcbiAgZm9udFNpemUgPSAnMyc7XG4gIGZvcmVDb2xvdXI7XG4gIGJhY2tDb2xvcjtcblxuICBoZWFkaW5nczogU2VsZWN0T3B0aW9uW10gPSBbXG4gICAge1xuICAgICAgbGFiZWw6ICdIZWFkaW5nIDEnLFxuICAgICAgdmFsdWU6ICdoMScsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ0hlYWRpbmcgMicsXG4gICAgICB2YWx1ZTogJ2gyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnSGVhZGluZyAzJyxcbiAgICAgIHZhbHVlOiAnaDMnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdIZWFkaW5nIDQnLFxuICAgICAgdmFsdWU6ICdoNCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ0hlYWRpbmcgNScsXG4gICAgICB2YWx1ZTogJ2g1JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnSGVhZGluZyA2JyxcbiAgICAgIHZhbHVlOiAnaDYnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdIZWFkaW5nIDcnLFxuICAgICAgdmFsdWU6ICdoNycsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ1BhcmFncmFwaCcsXG4gICAgICB2YWx1ZTogJ3AnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdQcmVkZWZpbmVkJyxcbiAgICAgIHZhbHVlOiAncHJlJ1xuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdTdGFuZGFyZCcsXG4gICAgICB2YWx1ZTogJ2RpdidcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnZGVmYXVsdCcsXG4gICAgICB2YWx1ZTogJ2RlZmF1bHQnXG4gICAgfVxuICBdO1xuXG4gIGZvbnRTaXplczogU2VsZWN0T3B0aW9uW10gPSBbXG4gICAge1xuICAgICAgbGFiZWw6ICcxJyxcbiAgICAgIHZhbHVlOiAnMScsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJzInLFxuICAgICAgdmFsdWU6ICcyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnMycsXG4gICAgICB2YWx1ZTogJzMnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICc0JyxcbiAgICAgIHZhbHVlOiAnNCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJzUnLFxuICAgICAgdmFsdWU6ICc1JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnNicsXG4gICAgICB2YWx1ZTogJzYnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICc3JyxcbiAgICAgIHZhbHVlOiAnNycsXG4gICAgfVxuICBdO1xuXG4gIGN1c3RvbUNsYXNzSWQgPSAnLTEnO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uLCBuby11bmRlcnNjb3JlLWRhbmdsZSwgaWQtYmxhY2tsaXN0LCBpZC1tYXRjaFxuICBfY3VzdG9tQ2xhc3NlczogQ3VzdG9tQ2xhc3NbXTtcbiAgY3VzdG9tQ2xhc3NMaXN0OiBTZWxlY3RPcHRpb25bXSA9IFt7bGFiZWw6ICcnLCB2YWx1ZTogJyd9XTtcbiAgLy8gdXBsb2FkVXJsOiBzdHJpbmc7XG5cbiAgdGFnTWFwID0ge1xuICAgIEJMT0NLUVVPVEU6ICdpbmRlbnQnLFxuICAgIEE6ICdsaW5rJ1xuICB9O1xuXG4gIHNlbGVjdCA9IFsnSDEnLCAnSDInLCAnSDMnLCAnSDQnLCAnSDUnLCAnSDYnLCAnUCcsICdQUkUnLCAnRElWJ107XG5cbiAgYnV0dG9ucyA9IFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ3N0cmlrZVRocm91Z2gnLCAnc3Vic2NyaXB0JywgJ3N1cGVyc2NyaXB0JywgJ2p1c3RpZnlMZWZ0JywgJ2p1c3RpZnlDZW50ZXInLFxuICAgICdqdXN0aWZ5UmlnaHQnLCAnanVzdGlmeUZ1bGwnLCAnaW5kZW50JywgJ291dGRlbnQnLCAnaW5zZXJ0VW5vcmRlcmVkTGlzdCcsICdpbnNlcnRPcmRlcmVkTGlzdCcsICdsaW5rJ107XG5cbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgQElucHV0KCkgdXBsb2FkVXJsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVwbG9hZDogKGZpbGU6IEZpbGUpID0+IE9ic2VydmFibGU8SHR0cEV2ZW50PFVwbG9hZFJlc3BvbnNlPj47XG4gIEBJbnB1dCgpIHNob3dUb29sYmFyOiBib29sZWFuO1xuICBASW5wdXQoKSBmb250czogU2VsZWN0T3B0aW9uW10gPSBbe2xhYmVsOiAnJywgdmFsdWU6ICcnfV07XG5cbiAgQElucHV0KClcbiAgc2V0IGN1c3RvbUNsYXNzZXMoY2xhc3NlczogQ3VzdG9tQ2xhc3NbXSkge1xuICAgIGlmIChjbGFzc2VzKSB7XG4gICAgICB0aGlzLl9jdXN0b21DbGFzc2VzID0gY2xhc3NlcztcbiAgICAgIHRoaXMuY3VzdG9tQ2xhc3NMaXN0ID0gdGhpcy5fY3VzdG9tQ2xhc3Nlcy5tYXAoKHgsIGkpID0+ICh7bGFiZWw6IHgubmFtZSwgdmFsdWU6IGkudG9TdHJpbmcoKX0pKTtcbiAgICAgIHRoaXMuY3VzdG9tQ2xhc3NMaXN0LnVuc2hpZnQoe2xhYmVsOiAnQ2xlYXIgQ2xhc3MnLCB2YWx1ZTogJy0xJ30pO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkZWZhdWx0Rm9udE5hbWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5mb250TmFtZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkZWZhdWx0Rm9udFNpemUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5mb250U2l6ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIGhpZGRlbkJ1dHRvbnM6IHN0cmluZ1tdW107XG5cbiAgQE91dHB1dCgpIGV4ZWN1dGU6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0Jywge3N0YXRpYzogdHJ1ZX0pIG15SW5wdXRGaWxlOiBFbGVtZW50UmVmO1xuXG4gIHB1YmxpYyBnZXQgaXNMaW5rQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaHRtbE1vZGUgfHwgIUJvb2xlYW4odGhpcy5lZGl0b3JTZXJ2aWNlLnNlbGVjdGVkVGV4dCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEFuZ3VsYXJFZGl0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXI6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IGFueVxuICApIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIGNvbW1hbmQgZnJvbSBlZGl0b3IgaGVhZGVyIGJ1dHRvbnNcbiAgICogQHBhcmFtIGNvbW1hbmQgc3RyaW5nIGZyb20gdG9vbGJhciBidXR0b25zXG4gICAqL1xuICB0cmlnZ2VyQ29tbWFuZChjb21tYW5kOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4ZWN1dGUuZW1pdChjb21tYW5kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBoaWdobGlnaHQgZWRpdG9yIGJ1dHRvbnMgd2hlbiBjdXJzb3IgbW92ZWQgb3IgcG9zaXRpb25pbmdcbiAgICovXG4gIHRyaWdnZXJCdXR0b25zKCkge1xuICAgIGlmICghdGhpcy5zaG93VG9vbGJhcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmJ1dHRvbnMuZm9yRWFjaChlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZG9jLnF1ZXJ5Q29tbWFuZFN0YXRlKGUpO1xuICAgICAgY29uc3QgZWxlbWVudEJ5SWQgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZChlICsgJy0nICsgdGhpcy5pZCk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMuci5hZGRDbGFzcyhlbGVtZW50QnlJZCwgJ2FjdGl2ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yLnJlbW92ZUNsYXNzKGVsZW1lbnRCeUlkLCAnYWN0aXZlJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogdHJpZ2dlciBoaWdobGlnaHQgZWRpdG9yIGJ1dHRvbnMgd2hlbiBjdXJzb3IgbW92ZWQgb3IgcG9zaXRpb25pbmcgaW4gYmxvY2tcbiAgICovXG4gIHRyaWdnZXJCbG9ja3Mobm9kZXM6IE5vZGVbXSkge1xuICAgIGlmICghdGhpcy5zaG93VG9vbGJhcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxpbmtTZWxlY3RlZCA9IG5vZGVzLmZpbmRJbmRleCh4ID0+IHgubm9kZU5hbWUgPT09ICdBJykgPiAtMTtcbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdC5mb3JFYWNoKHkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzLmZpbmQoeCA9PiB4Lm5vZGVOYW1lID09PSB5KTtcbiAgICAgIGlmIChub2RlICE9PSB1bmRlZmluZWQgJiYgeSA9PT0gbm9kZS5ub2RlTmFtZSkge1xuICAgICAgICBpZiAoZm91bmQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgdGhpcy5ibG9jayA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZm91bmQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuYmxvY2sgPSAnZGVmYXVsdCc7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBmb3VuZCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLl9jdXN0b21DbGFzc2VzKSB7XG4gICAgICB0aGlzLl9jdXN0b21DbGFzc2VzLmZvckVhY2goKHksIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlcy5maW5kKHggPT4ge1xuICAgICAgICAgIGlmICh4IGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHguY2xhc3NOYW1lID09PSB5LmNsYXNzO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChub2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoZm91bmQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNsYXNzSWQgPSBpbmRleC50b1N0cmluZygpO1xuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmb3VuZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbUNsYXNzSWQgPSAnLTEnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLnRhZ01hcCkubWFwKGUgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudEJ5SWQgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCh0aGlzLnRhZ01hcFtlXSArICctJyArIHRoaXMuaWQpO1xuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzLmZpbmQoeCA9PiB4Lm5vZGVOYW1lID09PSBlKTtcbiAgICAgIGlmIChub2RlICE9PSB1bmRlZmluZWQgJiYgZSA9PT0gbm9kZS5ub2RlTmFtZSkge1xuICAgICAgICB0aGlzLnIuYWRkQ2xhc3MoZWxlbWVudEJ5SWQsICdhY3RpdmUnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuci5yZW1vdmVDbGFzcyhlbGVtZW50QnlJZCwgJ2FjdGl2ZScpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JlQ29sb3VyID0gdGhpcy5kb2MucXVlcnlDb21tYW5kVmFsdWUoJ0ZvcmVDb2xvcicpO1xuICAgIHRoaXMuZm9udFNpemUgPSB0aGlzLmRvYy5xdWVyeUNvbW1hbmRWYWx1ZSgnRm9udFNpemUnKTtcbiAgICB0aGlzLmZvbnROYW1lID0gdGhpcy5kb2MucXVlcnlDb21tYW5kVmFsdWUoJ0ZvbnROYW1lJykucmVwbGFjZSgvXCIvZywgJycpO1xuICAgIHRoaXMuYmFja0NvbG9yID0gdGhpcy5kb2MucXVlcnlDb21tYW5kVmFsdWUoJ2JhY2tDb2xvcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIGluc2VydCBVUkwgbGlua1xuICAgKi9cbiAgaW5zZXJ0VXJsKCkge1xuICAgIGxldCB1cmwgPSAnaHR0cHM6XFwvXFwvJztcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmVkaXRvclNlcnZpY2Uuc2F2ZWRTZWxlY3Rpb247XG4gICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24uY29tbW9uQW5jZXN0b3JDb250YWluZXIucGFyZW50RWxlbWVudC5ub2RlTmFtZSA9PT0gJ0EnKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBzZWxlY3Rpb24uY29tbW9uQW5jZXN0b3JDb250YWluZXIucGFyZW50RWxlbWVudCBhcyBIVE1MQW5jaG9yRWxlbWVudDtcbiAgICAgIGlmIChwYXJlbnQuaHJlZiAhPT0gJycpIHtcbiAgICAgICAgdXJsID0gcGFyZW50LmhyZWY7XG4gICAgICB9XG4gICAgfVxuICAgIHVybCA9IHByb21wdCgnSW5zZXJ0IFVSTCBsaW5rJywgdXJsKTtcbiAgICBpZiAodXJsICYmIHVybCAhPT0gJycgJiYgdXJsICE9PSAnaHR0cHM6Ly8nKSB7XG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3JlYXRlTGluayh1cmwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBpbnNlcnQgVmlkZW8gbGlua1xuICAgKi9cbiAgaW5zZXJ0VmlkZW8oKSB7XG4gICAgdGhpcy5leGVjdXRlLmVtaXQoJycpO1xuICAgIGNvbnN0IHVybCA9IHByb21wdCgnSW5zZXJ0IFZpZGVvIGxpbmsnLCBgaHR0cHM6Ly9gKTtcbiAgICBpZiAodXJsICYmIHVybCAhPT0gJycgJiYgdXJsICE9PSBgaHR0cHM6Ly9gKSB7XG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuaW5zZXJ0VmlkZW8odXJsKTtcbiAgICB9XG4gIH1cblxuICAvKiogaW5zZXJ0IGNvbG9yICovXG4gIGluc2VydENvbG9yKGNvbG9yOiBzdHJpbmcsIHdoZXJlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuaW5zZXJ0Q29sb3IoY29sb3IsIHdoZXJlKTtcbiAgICB0aGlzLmV4ZWN1dGUuZW1pdCgnJyk7XG4gIH1cblxuICAvKipcbiAgICogc2V0IGZvbnQgTmFtZS9mYW1pbHlcbiAgICogQHBhcmFtIGZvcmVDb2xvciBzdHJpbmdcbiAgICovXG4gIHNldEZvbnROYW1lKGZvcmVDb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNldEZvbnROYW1lKGZvcmVDb2xvcik7XG4gICAgdGhpcy5leGVjdXRlLmVtaXQoJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCBmb250IFNpemVcbiAgICogQHBhcmFtIGZvbnRTaXplIHN0cmluZ1xuICAgKi9cbiAgc2V0Rm9udFNpemUoZm9udFNpemU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yU2VydmljZS5zZXRGb250U2l6ZShmb250U2l6ZSk7XG4gICAgdGhpcy5leGVjdXRlLmVtaXQoJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRvZ2dsZSBlZGl0b3IgbW9kZSAoV1lTSVdZRyBvciBTT1VSQ0UpXG4gICAqIEBwYXJhbSBtIGJvb2xlYW5cbiAgICovXG4gIHNldEVkaXRvck1vZGUobTogYm9vbGVhbikge1xuICAgIGNvbnN0IHRvZ2dsZUVkaXRvck1vZGVCdXR0b24gPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgndG9nZ2xlRWRpdG9yTW9kZScgKyAnLScgKyB0aGlzLmlkKTtcbiAgICBpZiAobSkge1xuICAgICAgdGhpcy5yLmFkZENsYXNzKHRvZ2dsZUVkaXRvck1vZGVCdXR0b24sICdhY3RpdmUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yLnJlbW92ZUNsYXNzKHRvZ2dsZUVkaXRvck1vZGVCdXR0b24sICdhY3RpdmUnKTtcbiAgICB9XG4gICAgdGhpcy5odG1sTW9kZSA9IG07XG4gIH1cblxuICAvKipcbiAgICogVXBsb2FkIGltYWdlIHdoZW4gZmlsZSBpcyBzZWxlY3RlZC5cbiAgICovXG4gIG9uRmlsZUNoYW5nZWQoZXZlbnQpIHtcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICAgIGlmIChmaWxlLnR5cGUuaW5jbHVkZXMoJ2ltYWdlLycpKSB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZCkge1xuICAgICAgICAgIHRoaXMudXBsb2FkKGZpbGUpLnN1YnNjcmliZSgocmVzcG9uc2U6IEh0dHBSZXNwb25zZTxVcGxvYWRSZXNwb25zZT4pID0+IHRoaXMud2F0Y2hVcGxvYWRJbWFnZShyZXNwb25zZSwgZXZlbnQpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVwbG9hZFVybCkge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnVwbG9hZEltYWdlKGZpbGUpLnN1YnNjcmliZSgocmVzcG9uc2U6IEh0dHBSZXNwb25zZTxVcGxvYWRSZXNwb25zZT4pID0+IHRoaXMud2F0Y2hVcGxvYWRJbWFnZShyZXNwb25zZSwgZXZlbnQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZnIgPSBlLmN1cnJlbnRUYXJnZXQgYXMgRmlsZVJlYWRlcjtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5pbnNlcnRJbWFnZShmci5yZXN1bHQudG9TdHJpbmcoKSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgd2F0Y2hVcGxvYWRJbWFnZShyZXNwb25zZTogSHR0cFJlc3BvbnNlPHtpbWFnZVVybDogc3RyaW5nfT4sIGV2ZW50KSB7XG4gICAgY29uc3QgeyBpbWFnZVVybCB9ID0gcmVzcG9uc2UuYm9keTtcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuaW5zZXJ0SW1hZ2UoaW1hZ2VVcmwpO1xuICAgIGV2ZW50LnNyY0VsZW1lbnQudmFsdWUgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjdXN0b20gY2xhc3NcbiAgICovXG4gIHNldEN1c3RvbUNsYXNzKGNsYXNzSWQ6IHN0cmluZykge1xuICAgIGlmIChjbGFzc0lkID09PSAnLTEnKSB7XG4gICAgICB0aGlzLmV4ZWN1dGUuZW1pdCgnY2xlYXInKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmNyZWF0ZUN1c3RvbUNsYXNzKHRoaXMuX2N1c3RvbUNsYXNzZXNbK2NsYXNzSWRdKTtcbiAgICB9XG4gIH1cblxuICBpc0J1dHRvbkhpZGRlbihuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCEodGhpcy5oaWRkZW5CdXR0b25zIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCByZXN1bHQ6IGFueTtcbiAgICBmb3IgKGNvbnN0IGFyciBvZiB0aGlzLmhpZGRlbkJ1dHRvbnMpIHtcbiAgICAgIGlmIChhcnIgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXN1bHQgPSBhcnIuZmluZChpdGVtID0+IGl0ZW0gPT09IG5hbWUpO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy5leGVjdXRlLmVtaXQoJ2ZvY3VzJyk7XG4gICAgY29uc29sZS5sb2coJ2ZvY3VzZWQnKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLXRvb2xiYXJcIiAqbmdJZj1cInNob3dUb29sYmFyXCI+XG4gIDxkaXYgY2xhc3M9XCJhbmd1bGFyLWVkaXRvci10b29sYmFyLXNldFwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiVW5kb1wiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCIgKGNsaWNrKT1cInRyaWdnZXJDb21tYW5kKCd1bmRvJylcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbigndW5kbycpXCIgdGFiaW5kZXg9XCItMVwiPjxpXG4gICAgICBjbGFzcz0nZmEgZmEtdW5kbyc+PC9pPjwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiUmVkb1wiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCIgKGNsaWNrKT1cInRyaWdnZXJDb21tYW5kKCdyZWRvJylcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbigncmVkbycpXCIgdGFiaW5kZXg9XCItMVwiPjxpXG4gICAgICBjbGFzcz0nZmEgZmEtcmVwZWF0Jz48L2k+PC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItdG9vbGJhci1zZXRcIj5cbiAgICA8YnV0dG9uIFtpZF09XCInYm9sZC0nK2lkXCIgdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiQm9sZFwiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCIgKGNsaWNrKT1cInRyaWdnZXJDb21tYW5kKCdib2xkJylcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignYm9sZCcpXCIgdGFiaW5kZXg9XCItMVwiPjxpIGNsYXNzPSdmYSBmYS1ib2xkJz48L2k+PC9idXR0b24+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ2l0YWxpYy0nK2lkXCIgdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiSXRhbGljXCIgY2xhc3M9XCJhbmd1bGFyLWVkaXRvci1idXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRyaWdnZXJDb21tYW5kKCdpdGFsaWMnKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIiBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdpdGFsaWMnKVwiIHRhYmluZGV4PVwiLTFcIj48aSBjbGFzcz0nZmEgZmEtaXRhbGljJz48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ3VuZGVybGluZS0nK2lkXCIgdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiVW5kZXJsaW5lXCIgY2xhc3M9XCJhbmd1bGFyLWVkaXRvci1idXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRyaWdnZXJDb21tYW5kKCd1bmRlcmxpbmUnKVwiIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ3VuZGVybGluZScpXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj48aSBjbGFzcz0nZmEgZmEtdW5kZXJsaW5lJz48L2k+PC9idXR0b24+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ3N0cmlrZVRocm91Z2gtJytpZFwiIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIlN0cmlrZXRocm91Z2hcIiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLWJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckNvbW1hbmQoJ3N0cmlrZVRocm91Z2gnKVwiIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ3N0cmlrZVRocm91Z2gnKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+PGkgY2xhc3M9J2ZhIGZhLXN0cmlrZXRocm91Z2gnPjwvaT48L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtpZF09XCInc3Vic2NyaXB0LScraWRcIiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJTdWJzY3JpcHRcIiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLWJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckNvbW1hbmQoJ3N1YnNjcmlwdCcpXCIgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignc3Vic2NyaXB0JylcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiPjxpIGNsYXNzPSdmYSBmYS1zdWJzY3JpcHQnPjwvaT48L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtpZF09XCInc3VwZXJzY3JpcHQtJytpZFwiIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIlN1cGVyc2NyaXB0XCIgY2xhc3M9XCJhbmd1bGFyLWVkaXRvci1idXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRyaWdnZXJDb21tYW5kKCdzdXBlcnNjcmlwdCcpXCIgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignc3VwZXJzY3JpcHQnKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+PGkgY2xhc3M9J2ZhIGZhLXN1cGVyc2NyaXB0Jz48L2k+PC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItdG9vbGJhci1zZXRcIj5cbiAgICA8YnV0dG9uIFtpZF09XCInanVzdGlmeUxlZnQtJytpZFwiIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIkp1c3RpZnkgTGVmdFwiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnanVzdGlmeUxlZnQnKVwiIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ2p1c3RpZnlMZWZ0JylcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiPjxpXG4gICAgICBjbGFzcz0nZmEgZmEtYWxpZ24tbGVmdCc+PC9pPjwvYnV0dG9uPlxuICAgIDxidXR0b24gW2lkXT1cIidqdXN0aWZ5Q2VudGVyLScraWRcIiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJKdXN0aWZ5IENlbnRlclwiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnanVzdGlmeUNlbnRlcicpXCIgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignanVzdGlmeUNlbnRlcicpXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj48aVxuICAgICAgY2xhc3M9J2ZhIGZhLWFsaWduLWNlbnRlcic+PC9pPjwvYnV0dG9uPlxuICAgIDxidXR0b24gW2lkXT1cIidqdXN0aWZ5UmlnaHQtJytpZFwiIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIkp1c3RpZnkgUmlnaHRcIiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLWJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckNvbW1hbmQoJ2p1c3RpZnlSaWdodCcpXCIgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignanVzdGlmeVJpZ2h0JylcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgPGkgY2xhc3M9J2ZhIGZhLWFsaWduLXJpZ2h0Jz48L2k+PC9idXR0b24+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ2p1c3RpZnlGdWxsLScraWRcIiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJKdXN0aWZ5IEZ1bGxcIiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLWJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckNvbW1hbmQoJ2p1c3RpZnlGdWxsJylcIiBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIiBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdqdXN0aWZ5RnVsbCcpXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj48aVxuICAgICAgY2xhc3M9J2ZhIGZhLWFsaWduLWp1c3RpZnknPjwvaT48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhbmd1bGFyLWVkaXRvci10b29sYmFyLXNldFwiPlxuICAgIDxidXR0b24gW2lkXT1cIidpbmRlbnQtJytpZFwiIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIkluZGVudFwiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnaW5kZW50JylcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignaW5kZW50JylcIiB0YWJpbmRleD1cIi0xXCI+PGlcbiAgICAgIGNsYXNzPSdmYSBmYS1pbmRlbnQnPjwvaT48L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtpZF09XCInb3V0ZGVudC0nK2lkXCIgdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiT3V0ZGVudFwiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnb3V0ZGVudCcpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ291dGRlbnQnKVwiIHRhYmluZGV4PVwiLTFcIj48aVxuICAgICAgY2xhc3M9J2ZhIGZhLW91dGRlbnQnPjwvaT48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhbmd1bGFyLWVkaXRvci10b29sYmFyLXNldFwiPlxuICAgIDxidXR0b24gW2lkXT1cIidpbnNlcnRVbm9yZGVyZWRMaXN0LScraWRcIiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJVbm9yZGVyZWQgTGlzdFwiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnaW5zZXJ0VW5vcmRlcmVkTGlzdCcpXCIgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ2luc2VydFVub3JkZXJlZExpc3QnKVwiIHRhYmluZGV4PVwiLTFcIj48aVxuICAgICAgY2xhc3M9J2ZhIGZhLWxpc3QtdWwnPjwvaT48L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtpZF09XCInaW5zZXJ0T3JkZXJlZExpc3QtJytpZFwiIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIk9yZGVyZWQgTGlzdFwiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnaW5zZXJ0T3JkZXJlZExpc3QnKVwiIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdpbnNlcnRPcmRlcmVkTGlzdCcpXCIgdGFiaW5kZXg9XCItMVwiPjxpXG4gICAgICBjbGFzcz0nZmEgZmEtbGlzdC1vbCc+PC9pPjwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLXRvb2xiYXItc2V0XCI+XG5cbiAgICA8YWUtc2VsZWN0IGNsYXNzPVwic2VsZWN0LWhlYWRpbmdcIiBbb3B0aW9uc109XCJoZWFkaW5nc1wiXG4gICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJsb2NrXCJcbiAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidHJpZ2dlckNvbW1hbmQoYmxvY2spXCJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiXG4gICAgICAgICAgICAgICBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdoZWFkaW5nJylcIlxuICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiPjwvYWUtc2VsZWN0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLXRvb2xiYXItc2V0XCI+XG5cbiAgICA8YWUtc2VsZWN0IGNsYXNzPVwic2VsZWN0LWZvbnRcIiBbb3B0aW9uc109XCJmb250c1wiXG4gICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvbnROYW1lXCJcbiAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0Rm9udE5hbWUoZm9udE5hbWUpXCJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiXG4gICAgICAgICAgICAgICBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdmb250TmFtZScpXCJcbiAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj48L2FlLXNlbGVjdD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhbmd1bGFyLWVkaXRvci10b29sYmFyLXNldFwiPlxuXG4gICAgPGFlLXNlbGVjdCBjbGFzcz1cInNlbGVjdC1mb250LXNpemVcIiBbb3B0aW9uc109XCJmb250U2l6ZXNcIlxuICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb250U2l6ZVwiXG4gICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldEZvbnRTaXplKGZvbnRTaXplKVwiXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIlxuICAgICAgICAgICAgICAgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignZm9udFNpemUnKVwiXG4gICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+XG4gICAgPC9hZS1zZWxlY3Q+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItdG9vbGJhci1zZXRcIj5cbiAgICA8aW5wdXRcbiAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXG4gICAgICB0eXBlPVwiY29sb3JcIiAoY2hhbmdlKT1cImluc2VydENvbG9yKGZnSW5wdXQudmFsdWUsICd0ZXh0Q29sb3InKVwiXG4gICAgICAjZmdJbnB1dD5cbiAgICA8YnV0dG9uIFtpZF09XCInZm9yZWdyb3VuZENvbG9yUGlja2VyLScraWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhbmd1bGFyLWVkaXRvci1idXR0b25cIiAoY2xpY2spPVwiZm9jdXMoKTsgOyBmZ0lucHV0LmNsaWNrKClcIlxuICAgICAgICAgICAgdGl0bGU9XCJUZXh0IENvbG9yXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ3RleHRDb2xvcicpXCIgdGFiaW5kZXg9XCItMVwiPjxzcGFuXG4gICAgICBjbGFzcz1cImNvbG9yLWxhYmVsIGZvcmVncm91bmRcIj48aSBjbGFzcz1cImZhIGZhLWZvbnRcIj48L2k+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxpbnB1dFxuICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAgIHR5cGU9XCJjb2xvclwiIChjaGFuZ2UpPVwiaW5zZXJ0Q29sb3IoYmdJbnB1dC52YWx1ZSwgJ2JhY2tncm91bmRDb2xvcicpXCJcbiAgICAgICNiZ0lucHV0PlxuICAgIDxidXR0b24gW2lkXT1cIidiYWNrZ3JvdW5kQ29sb3JQaWNrZXItJytpZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLWJ1dHRvblwiIChjbGljayk9XCJmb2N1cygpOyA7IGJnSW5wdXQuY2xpY2soKVwiXG4gICAgICAgICAgICB0aXRsZT1cIkJhY2tncm91bmQgQ29sb3JcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignYmFja2dyb3VuZENvbG9yJylcIiB0YWJpbmRleD1cIi0xXCI+PHNwYW5cbiAgICAgIGNsYXNzPVwiY29sb3ItbGFiZWwgYmFja2dyb3VuZFwiPjxpIGNsYXNzPVwiZmEgZmEtZm9udFwiPjwvaT48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiX2N1c3RvbUNsYXNzZXNcIiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLXRvb2xiYXItc2V0XCI+XG4gICAgPGFlLXNlbGVjdCBjbGFzcz1cInNlbGVjdC1jdXN0b20tc3R5bGVcIiBbb3B0aW9uc109XCJjdXN0b21DbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21DbGFzc0lkXCJcbiAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0Q3VzdG9tQ2xhc3MoY3VzdG9tQ2xhc3NJZClcIlxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCJcbiAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ2N1c3RvbUNsYXNzZXMnKVwiXG4gICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+PC9hZS1zZWxlY3Q+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItdG9vbGJhci1zZXRcIj5cbiAgICA8YnV0dG9uIFtpZF09XCInbGluay0nK2lkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCIgKGNsaWNrKT1cImluc2VydFVybCgpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiSW5zZXJ0IExpbmtcIiBbZGlzYWJsZWRdPVwiaXNMaW5rQnV0dG9uRGlzYWJsZWRcIiBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdsaW5rJylcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWxpbmtcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ3VubGluay0nK2lkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCIgKGNsaWNrKT1cInRyaWdnZXJDb21tYW5kKCd1bmxpbmsnKVwiXG4gICAgICAgICAgICB0aXRsZT1cIlVubGlua1wiIFtkaXNhYmxlZF09XCJodG1sTW9kZSB8fCAhbGlua1NlbGVjdGVkXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbigndW5saW5rJylcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWNoYWluLWJyb2tlblwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8aW5wdXRcbiAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXG4gICAgICBhY2NlcHQ9XCJpbWFnZS8qXCJcbiAgICAgIHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgI2ZpbGVJbnB1dD5cbiAgICA8YnV0dG9uIFtpZF09XCInaW5zZXJ0SW1hZ2UtJytpZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLWJ1dHRvblwiIChjbGljayk9XCJmb2N1cygpOyBmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgICAgICB0aXRsZT1cIkluc2VydCBJbWFnZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIiBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdpbnNlcnRJbWFnZScpXCIgdGFiaW5kZXg9XCItMVwiPjxpIGNsYXNzPVwiZmEgZmEtaW1hZ2VcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ2luc2VydFZpZGVvLScraWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhbmd1bGFyLWVkaXRvci1idXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImluc2VydFZpZGVvKClcIiB0aXRsZT1cIkluc2VydCBWaWRlb1wiIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ2luc2VydFZpZGVvJylcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiPjxpXG4gICAgICBjbGFzcz1cImZhIGZhLXZpZGVvLWNhbWVyYVwiPjwvaT48L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtpZF09XCInaW5zZXJ0SG9yaXpvbnRhbFJ1bGUtJytpZFwiIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIkhvcml6b250YWwgTGluZVwiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnaW5zZXJ0SG9yaXpvbnRhbFJ1bGUnKVwiIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdpbnNlcnRIb3Jpem9udGFsUnVsZScpXCIgdGFiaW5kZXg9XCItMVwiPjxpXG4gICAgICBjbGFzcz1cImZhIGZhLW1pbnVzXCI+PC9pPjwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLXRvb2xiYXItc2V0XCI+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ2NsZWFyRm9ybWF0dGluZy0nK2lkXCIgdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiQ2xlYXIgRm9ybWF0dGluZ1wiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgncmVtb3ZlRm9ybWF0JylcIiBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIiBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdyZW1vdmVGb3JtYXQnKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+PGkgY2xhc3M9J2ZhIGZhLXJlbW92ZSc+PC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFuZ3VsYXItZWRpdG9yLXRvb2xiYXItc2V0XCI+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ3RvZ2dsZUVkaXRvck1vZGUtJytpZFwiIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIkhUTUwgQ29kZVwiIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgndG9nZ2xlRWRpdG9yTW9kZScpXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbigndG9nZ2xlRWRpdG9yTW9kZScpXCIgdGFiaW5kZXg9XCItMVwiPjxpXG4gICAgICBjbGFzcz0nZmEgZmEtY29kZSc+PC9pPjwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
1
+ import { Component, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./angular-editor.service";
5
+ import * as i2 from "./ae-toolbar-set/ae-toolbar-set.component";
6
+ import * as i3 from "./ae-button/ae-button.component";
7
+ import * as i4 from "./ae-select/ae-select.component";
8
+ import * as i5 from "@angular/common";
9
+ import * as i6 from "@angular/forms";
10
+ export class AngularEditorToolbarComponent {
11
+ constructor(r, editorService, er, doc) {
12
+ this.r = r;
13
+ this.editorService = editorService;
14
+ this.er = er;
15
+ this.doc = doc;
16
+ this.htmlMode = false;
17
+ this.linkSelected = false;
18
+ this.block = 'default';
19
+ this.fontName = 'Times New Roman';
20
+ this.fontSize = '3';
21
+ this.headings = [
22
+ {
23
+ label: 'Heading 1',
24
+ value: 'h1',
25
+ },
26
+ {
27
+ label: 'Heading 2',
28
+ value: 'h2',
29
+ },
30
+ {
31
+ label: 'Heading 3',
32
+ value: 'h3',
33
+ },
34
+ {
35
+ label: 'Heading 4',
36
+ value: 'h4',
37
+ },
38
+ {
39
+ label: 'Heading 5',
40
+ value: 'h5',
41
+ },
42
+ {
43
+ label: 'Heading 6',
44
+ value: 'h6',
45
+ },
46
+ {
47
+ label: 'Heading 7',
48
+ value: 'h7',
49
+ },
50
+ {
51
+ label: 'Paragraph',
52
+ value: 'p',
53
+ },
54
+ {
55
+ label: 'Predefined',
56
+ value: 'pre'
57
+ },
58
+ {
59
+ label: 'Standard',
60
+ value: 'div'
61
+ },
62
+ {
63
+ label: 'default',
64
+ value: 'default'
65
+ }
66
+ ];
67
+ this.fontSizes = [
68
+ {
69
+ label: '1',
70
+ value: '1',
71
+ },
72
+ {
73
+ label: '2',
74
+ value: '2',
75
+ },
76
+ {
77
+ label: '3',
78
+ value: '3',
79
+ },
80
+ {
81
+ label: '4',
82
+ value: '4',
83
+ },
84
+ {
85
+ label: '5',
86
+ value: '5',
87
+ },
88
+ {
89
+ label: '6',
90
+ value: '6',
91
+ },
92
+ {
93
+ label: '7',
94
+ value: '7',
95
+ }
96
+ ];
97
+ this.customClassId = '-1';
98
+ this.customClassList = [{ label: '', value: '' }];
99
+ // uploadUrl: string;
100
+ this.tagMap = {
101
+ BLOCKQUOTE: 'indent',
102
+ A: 'link'
103
+ };
104
+ this.select = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'PRE', 'DIV'];
105
+ this.buttons = ['bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'justifyLeft', 'justifyCenter',
106
+ 'justifyRight', 'justifyFull', 'indent', 'outdent', 'insertUnorderedList', 'insertOrderedList', 'link'];
107
+ this.fonts = [{ label: '', value: '' }];
108
+ this.execute = new EventEmitter();
109
+ }
110
+ set customClasses(classes) {
111
+ if (classes) {
112
+ this._customClasses = classes;
113
+ this.customClassList = this._customClasses.map((x, i) => ({ label: x.name, value: i.toString() }));
114
+ this.customClassList.unshift({ label: 'Clear Class', value: '-1' });
115
+ }
116
+ }
117
+ set defaultFontName(value) {
118
+ if (value) {
119
+ this.fontName = value;
120
+ }
121
+ }
122
+ set defaultFontSize(value) {
123
+ if (value) {
124
+ this.fontSize = value;
125
+ }
126
+ }
127
+ get isLinkButtonDisabled() {
128
+ return this.htmlMode || !Boolean(this.editorService.selectedText);
129
+ }
130
+ /**
131
+ * Trigger command from editor header buttons
132
+ * @param command string from toolbar buttons
133
+ */
134
+ triggerCommand(command) {
135
+ this.execute.emit(command);
136
+ }
137
+ /**
138
+ * highlight editor buttons when cursor moved or positioning
139
+ */
140
+ triggerButtons() {
141
+ if (!this.showToolbar) {
142
+ return;
143
+ }
144
+ this.buttons.forEach(e => {
145
+ const result = this.doc.queryCommandState(e);
146
+ const elementById = this.doc.getElementById(e + '-' + this.id);
147
+ if (result) {
148
+ this.r.addClass(elementById, 'active');
149
+ }
150
+ else {
151
+ this.r.removeClass(elementById, 'active');
152
+ }
153
+ });
154
+ }
155
+ /**
156
+ * trigger highlight editor buttons when cursor moved or positioning in block
157
+ */
158
+ triggerBlocks(nodes) {
159
+ if (!this.showToolbar) {
160
+ return;
161
+ }
162
+ this.linkSelected = nodes.findIndex(x => x.nodeName === 'A') > -1;
163
+ let found = false;
164
+ this.select.forEach(y => {
165
+ const node = nodes.find(x => x.nodeName === y);
166
+ if (node !== undefined && y === node.nodeName) {
167
+ if (found === false) {
168
+ this.block = node.nodeName.toLowerCase();
169
+ found = true;
170
+ }
171
+ }
172
+ else if (found === false) {
173
+ this.block = 'default';
174
+ }
175
+ });
176
+ found = false;
177
+ if (this._customClasses) {
178
+ this._customClasses.forEach((y, index) => {
179
+ const node = nodes.find(x => {
180
+ if (x instanceof Element) {
181
+ return x.className === y.class;
182
+ }
183
+ });
184
+ if (node !== undefined) {
185
+ if (found === false) {
186
+ this.customClassId = index.toString();
187
+ found = true;
188
+ }
189
+ }
190
+ else if (found === false) {
191
+ this.customClassId = '-1';
192
+ }
193
+ });
194
+ }
195
+ Object.keys(this.tagMap).map(e => {
196
+ const elementById = this.doc.getElementById(this.tagMap[e] + '-' + this.id);
197
+ const node = nodes.find(x => x.nodeName === e);
198
+ if (node !== undefined && e === node.nodeName) {
199
+ this.r.addClass(elementById, 'active');
200
+ }
201
+ else {
202
+ this.r.removeClass(elementById, 'active');
203
+ }
204
+ });
205
+ this.foreColour = this.doc.queryCommandValue('ForeColor');
206
+ this.fontSize = this.doc.queryCommandValue('FontSize');
207
+ this.fontName = this.doc.queryCommandValue('FontName').replace(/"/g, '');
208
+ this.backColor = this.doc.queryCommandValue('backColor');
209
+ }
210
+ /**
211
+ * insert URL link
212
+ */
213
+ insertUrl() {
214
+ let url = 'https:\/\/';
215
+ const selection = this.editorService.savedSelection;
216
+ if (selection && selection.commonAncestorContainer.parentElement.nodeName === 'A') {
217
+ const parent = selection.commonAncestorContainer.parentElement;
218
+ if (parent.href !== '') {
219
+ url = parent.href;
220
+ }
221
+ }
222
+ url = prompt('Insert URL link', url);
223
+ if (url && url !== '' && url !== 'https://') {
224
+ this.editorService.createLink(url);
225
+ }
226
+ }
227
+ /**
228
+ * insert Video link
229
+ */
230
+ insertVideo() {
231
+ this.execute.emit('');
232
+ const url = prompt('Insert Video link', `https://`);
233
+ if (url && url !== '' && url !== `https://`) {
234
+ this.editorService.insertVideo(url);
235
+ }
236
+ }
237
+ /** insert color */
238
+ insertColor(color, where) {
239
+ this.editorService.insertColor(color, where);
240
+ this.execute.emit('');
241
+ }
242
+ /**
243
+ * set font Name/family
244
+ * @param foreColor string
245
+ */
246
+ setFontName(foreColor) {
247
+ this.editorService.setFontName(foreColor);
248
+ this.execute.emit('');
249
+ }
250
+ /**
251
+ * set font Size
252
+ * @param fontSize string
253
+ */
254
+ setFontSize(fontSize) {
255
+ this.editorService.setFontSize(fontSize);
256
+ this.execute.emit('');
257
+ }
258
+ /**
259
+ * toggle editor mode (WYSIWYG or SOURCE)
260
+ * @param m boolean
261
+ */
262
+ setEditorMode(m) {
263
+ const toggleEditorModeButton = this.doc.getElementById('toggleEditorMode' + '-' + this.id);
264
+ if (m) {
265
+ this.r.addClass(toggleEditorModeButton, 'active');
266
+ }
267
+ else {
268
+ this.r.removeClass(toggleEditorModeButton, 'active');
269
+ }
270
+ this.htmlMode = m;
271
+ }
272
+ /**
273
+ * Upload image when file is selected.
274
+ */
275
+ onFileChanged(event) {
276
+ const file = event.target.files[0];
277
+ if (file.type.includes('image/')) {
278
+ if (this.upload) {
279
+ this.upload(file).subscribe((response) => this.watchUploadImage(response, event));
280
+ }
281
+ else if (this.uploadUrl) {
282
+ this.editorService.uploadImage(file).subscribe((response) => this.watchUploadImage(response, event));
283
+ }
284
+ else {
285
+ const reader = new FileReader();
286
+ reader.onload = (e) => {
287
+ const fr = e.currentTarget;
288
+ this.editorService.insertImage(fr.result.toString());
289
+ };
290
+ reader.readAsDataURL(file);
291
+ }
292
+ }
293
+ }
294
+ watchUploadImage(response, event) {
295
+ const { imageUrl } = response.body;
296
+ this.editorService.insertImage(imageUrl);
297
+ event.srcElement.value = null;
298
+ }
299
+ /**
300
+ * Set custom class
301
+ */
302
+ setCustomClass(classId) {
303
+ if (classId === '-1') {
304
+ this.execute.emit('clear');
305
+ }
306
+ else {
307
+ this.editorService.createCustomClass(this._customClasses[+classId]);
308
+ }
309
+ }
310
+ isButtonHidden(name) {
311
+ if (!name) {
312
+ return false;
313
+ }
314
+ if (!(this.hiddenButtons instanceof Array)) {
315
+ return false;
316
+ }
317
+ let result;
318
+ for (const arr of this.hiddenButtons) {
319
+ if (arr instanceof Array) {
320
+ result = arr.find(item => item === name);
321
+ }
322
+ if (result) {
323
+ break;
324
+ }
325
+ }
326
+ return result !== undefined;
327
+ }
328
+ focus() {
329
+ this.execute.emit('focus');
330
+ console.log('focused');
331
+ }
332
+ }
333
+ AngularEditorToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AngularEditorToolbarComponent, deps: [{ token: i0.Renderer2 }, { token: i1.AngularEditorService }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
334
+ AngularEditorToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: AngularEditorToolbarComponent, selector: "angular-editor-toolbar", inputs: { id: "id", uploadUrl: "uploadUrl", upload: "upload", showToolbar: "showToolbar", fonts: "fonts", customClasses: "customClasses", defaultFontName: "defaultFontName", defaultFontSize: "defaultFontSize", hiddenButtons: "hiddenButtons" }, outputs: { execute: "execute" }, viewQueries: [{ propertyName: "myInputFile", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"angular-editor-toolbar\" *ngIf=\"showToolbar\">\n <div aeToolbarSet>\n <button aeButton title=\"Undo\" iconName=\"undo\" (click)=\"triggerCommand('undo')\" [hidden]=\"isButtonHidden('undo')\">\n </button>\n <button aeButton title=\"Redo\" iconName=\"redo\" (click)=\"triggerCommand('redo')\"\n [hidden]=\"isButtonHidden('redo')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'bold-'+id\" aeButton title=\"Bold\" iconName=\"bold\" (click)=\"triggerCommand('bold')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('bold')\">\n </button>\n <button [id]=\"'italic-'+id\" aeButton iconName=\"italic\" title=\"Italic\" (click)=\"triggerCommand('italic')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('italic')\">\n </button>\n <button [id]=\"'underline-'+id\" aeButton title=\"Underline\" iconName=\"underline\"\n (click)=\"triggerCommand('underline')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('underline')\">\n </button>\n <button [id]=\"'strikeThrough-'+id\" aeButton iconName=\"strikeThrough\" title=\"Strikethrough\"\n (click)=\"triggerCommand('strikeThrough')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('strikeThrough')\">\n </button>\n <button [id]=\"'subscript-'+id\" aeButton title=\"Subscript\" iconName=\"subscript\"\n (click)=\"triggerCommand('subscript')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('subscript')\">\n </button>\n <button [id]=\"'superscript-'+id\" aeButton iconName=\"superscript\" title=\"Superscript\"\n (click)=\"triggerCommand('superscript')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('superscript')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'justifyLeft-'+id\" aeButton iconName=\"justifyLeft\" title=\"Justify Left\"\n (click)=\"triggerCommand('justifyLeft')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('justifyLeft')\">\n </button>\n <button [id]=\"'justifyCenter-'+id\" aeButton iconName=\"justifyCenter\" title=\"Justify Center\"\n (click)=\"triggerCommand('justifyCenter')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('justifyCenter')\">\n </button>\n <button [id]=\"'justifyRight-'+id\" aeButton iconName=\"justifyRight\" title=\"Justify Right\"\n (click)=\"triggerCommand('justifyRight')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('justifyRight')\">\n </button>\n <button [id]=\"'justifyFull-'+id\" aeButton iconName=\"justifyFull\" title=\"Justify Full\"\n (click)=\"triggerCommand('justifyFull')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('justifyFull')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'indent-'+id\" aeButton iconName=\"indent\" title=\"Indent\"\n (click)=\"triggerCommand('indent')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('indent')\">\n </button>\n <button [id]=\"'outdent-'+id\" aeButton iconName=\"outdent\" title=\"Outdent\"\n (click)=\"triggerCommand('outdent')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('outdent')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'insertUnorderedList-'+id\" aeButton iconName=\"unorderedList\" title=\"Unordered List\"\n (click)=\"triggerCommand('insertUnorderedList')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertUnorderedList')\">\n </button>\n <button [id]=\"'insertOrderedList-'+id\" aeButton iconName=\"orderedList\" title=\"Ordered List\"\n (click)=\"triggerCommand('insertOrderedList')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertOrderedList')\">\n </button>\n </div>\n <div aeToolbarSet>\n <ae-select class=\"select-heading\" [options]=\"headings\"\n [(ngModel)]=\"block\"\n (change)=\"triggerCommand(block)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('heading')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div aeToolbarSet>\n <ae-select class=\"select-font\" [options]=\"fonts\"\n [(ngModel)]=\"fontName\"\n (change)=\"setFontName(fontName)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('fontName')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div aeToolbarSet>\n <ae-select class=\"select-font-size\" [options]=\"fontSizes\"\n [(ngModel)]=\"fontSize\"\n (change)=\"setFontSize(fontSize)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('fontSize')\"\n tabindex=\"-1\">\n </ae-select>\n </div>\n <div aeToolbarSet>\n <input\n style=\"display: none\"\n type=\"color\" (change)=\"insertColor(fgInput.value, 'textColor')\"\n #fgInput>\n <button [id]=\"'foregroundColorPicker-'+id\" aeButton iconName=\"textColor\"\n (click)=\"focus(); ; fgInput.click()\"\n title=\"Text Color\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('textColor')\">\n </button>\n <input\n style=\"display: none\"\n type=\"color\" (change)=\"insertColor(bgInput.value, 'backgroundColor')\"\n #bgInput>\n <button [id]=\"'backgroundColorPicker-'+id\" aeButton iconName=\"backgroundColor\"\n (click)=\"focus(); ; bgInput.click()\"\n title=\"Background Color\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('backgroundColor')\">\n </button>\n </div>\n <div *ngIf=\"_customClasses\" aeToolbarSet>\n <ae-select class=\"select-custom-style\" [options]=\"customClassList\"\n [(ngModel)]=\"customClassId\"\n (change)=\"setCustomClass(customClassId)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('customClasses')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'link-'+id\" aeButton iconName=\"link\" (click)=\"insertUrl()\"\n title=\"Insert Link\" [disabled]=\"isLinkButtonDisabled\" [hidden]=\"isButtonHidden('link')\">\n </button>\n <button [id]=\"'unlink-'+id\" aeButton iconName=\"unlink\" (click)=\"triggerCommand('unlink')\"\n title=\"Unlink\" [disabled]=\"htmlMode || !linkSelected\" [hidden]=\"isButtonHidden('unlink')\">\n </button>\n <input\n style=\"display: none\"\n accept=\"image/*\"\n type=\"file\" (change)=\"onFileChanged($event)\"\n #fileInput>\n <button [id]=\"'insertImage-'+id\" aeButton iconName=\"image\" (click)=\"focus(); fileInput.click()\"\n title=\"Insert Image\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('insertImage')\">\n </button>\n <button [id]=\"'insertVideo-'+id\" aeButton iconName=\"video\"\n (click)=\"insertVideo()\" title=\"Insert Video\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertVideo')\">\n </button>\n <button [id]=\"'insertHorizontalRule-'+id\" aeButton iconName=\"horizontalLine\" title=\"Horizontal Line\"\n (click)=\"triggerCommand('insertHorizontalRule')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertHorizontalRule')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'clearFormatting-'+id\" aeButton iconName=\"removeFormat\" title=\"Clear Formatting\"\n class=\"angular-editor-button\"\n (click)=\"triggerCommand('removeFormat')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('removeFormat')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'toggleEditorMode-'+id\" aeButton iconName=\"htmlCode\" title=\"HTML Code\"\n (click)=\"triggerCommand('toggleEditorMode')\" [hidden]=\"isButtonHidden('toggleEditorMode')\">\n </button>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: ["a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\"\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:#ffffff80}.angular-editor-toolbar{font:100 14px/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;font-size:.8rem;padding:.2rem;border:1px solid #ddd;display:flex;flex-wrap:wrap;gap:4px}.angular-editor-toolbar .angular-editor-toolbar-set{display:flex;gap:1px;width:fit-content;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;float:left;width:2rem;height:2rem}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:none;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\"\";inset:auto auto -3px -1px;width:15px;height:2px;z-index:0;background:#1b1b1b}\n"], components: [{ type: i2.AeToolbarSetComponent, selector: "ae-toolbar-set, [aeToolbarSet]" }, { type: i3.AeButtonComponent, selector: "ae-button, button[aeButton]", inputs: ["iconName"] }, { type: i4.AeSelectComponent, selector: "ae-select", inputs: ["options", "hidden"], outputs: ["change"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AngularEditorToolbarComponent, decorators: [{
336
+ type: Component,
337
+ args: [{ selector: 'angular-editor-toolbar', template: "<div class=\"angular-editor-toolbar\" *ngIf=\"showToolbar\">\n <div aeToolbarSet>\n <button aeButton title=\"Undo\" iconName=\"undo\" (click)=\"triggerCommand('undo')\" [hidden]=\"isButtonHidden('undo')\">\n </button>\n <button aeButton title=\"Redo\" iconName=\"redo\" (click)=\"triggerCommand('redo')\"\n [hidden]=\"isButtonHidden('redo')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'bold-'+id\" aeButton title=\"Bold\" iconName=\"bold\" (click)=\"triggerCommand('bold')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('bold')\">\n </button>\n <button [id]=\"'italic-'+id\" aeButton iconName=\"italic\" title=\"Italic\" (click)=\"triggerCommand('italic')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('italic')\">\n </button>\n <button [id]=\"'underline-'+id\" aeButton title=\"Underline\" iconName=\"underline\"\n (click)=\"triggerCommand('underline')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('underline')\">\n </button>\n <button [id]=\"'strikeThrough-'+id\" aeButton iconName=\"strikeThrough\" title=\"Strikethrough\"\n (click)=\"triggerCommand('strikeThrough')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('strikeThrough')\">\n </button>\n <button [id]=\"'subscript-'+id\" aeButton title=\"Subscript\" iconName=\"subscript\"\n (click)=\"triggerCommand('subscript')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('subscript')\">\n </button>\n <button [id]=\"'superscript-'+id\" aeButton iconName=\"superscript\" title=\"Superscript\"\n (click)=\"triggerCommand('superscript')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('superscript')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'justifyLeft-'+id\" aeButton iconName=\"justifyLeft\" title=\"Justify Left\"\n (click)=\"triggerCommand('justifyLeft')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('justifyLeft')\">\n </button>\n <button [id]=\"'justifyCenter-'+id\" aeButton iconName=\"justifyCenter\" title=\"Justify Center\"\n (click)=\"triggerCommand('justifyCenter')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('justifyCenter')\">\n </button>\n <button [id]=\"'justifyRight-'+id\" aeButton iconName=\"justifyRight\" title=\"Justify Right\"\n (click)=\"triggerCommand('justifyRight')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('justifyRight')\">\n </button>\n <button [id]=\"'justifyFull-'+id\" aeButton iconName=\"justifyFull\" title=\"Justify Full\"\n (click)=\"triggerCommand('justifyFull')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('justifyFull')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'indent-'+id\" aeButton iconName=\"indent\" title=\"Indent\"\n (click)=\"triggerCommand('indent')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('indent')\">\n </button>\n <button [id]=\"'outdent-'+id\" aeButton iconName=\"outdent\" title=\"Outdent\"\n (click)=\"triggerCommand('outdent')\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('outdent')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'insertUnorderedList-'+id\" aeButton iconName=\"unorderedList\" title=\"Unordered List\"\n (click)=\"triggerCommand('insertUnorderedList')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertUnorderedList')\">\n </button>\n <button [id]=\"'insertOrderedList-'+id\" aeButton iconName=\"orderedList\" title=\"Ordered List\"\n (click)=\"triggerCommand('insertOrderedList')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertOrderedList')\">\n </button>\n </div>\n <div aeToolbarSet>\n <ae-select class=\"select-heading\" [options]=\"headings\"\n [(ngModel)]=\"block\"\n (change)=\"triggerCommand(block)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('heading')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div aeToolbarSet>\n <ae-select class=\"select-font\" [options]=\"fonts\"\n [(ngModel)]=\"fontName\"\n (change)=\"setFontName(fontName)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('fontName')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div aeToolbarSet>\n <ae-select class=\"select-font-size\" [options]=\"fontSizes\"\n [(ngModel)]=\"fontSize\"\n (change)=\"setFontSize(fontSize)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('fontSize')\"\n tabindex=\"-1\">\n </ae-select>\n </div>\n <div aeToolbarSet>\n <input\n style=\"display: none\"\n type=\"color\" (change)=\"insertColor(fgInput.value, 'textColor')\"\n #fgInput>\n <button [id]=\"'foregroundColorPicker-'+id\" aeButton iconName=\"textColor\"\n (click)=\"focus(); ; fgInput.click()\"\n title=\"Text Color\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('textColor')\">\n </button>\n <input\n style=\"display: none\"\n type=\"color\" (change)=\"insertColor(bgInput.value, 'backgroundColor')\"\n #bgInput>\n <button [id]=\"'backgroundColorPicker-'+id\" aeButton iconName=\"backgroundColor\"\n (click)=\"focus(); ; bgInput.click()\"\n title=\"Background Color\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('backgroundColor')\">\n </button>\n </div>\n <div *ngIf=\"_customClasses\" aeToolbarSet>\n <ae-select class=\"select-custom-style\" [options]=\"customClassList\"\n [(ngModel)]=\"customClassId\"\n (change)=\"setCustomClass(customClassId)\"\n [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('customClasses')\"\n tabindex=\"-1\"></ae-select>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'link-'+id\" aeButton iconName=\"link\" (click)=\"insertUrl()\"\n title=\"Insert Link\" [disabled]=\"isLinkButtonDisabled\" [hidden]=\"isButtonHidden('link')\">\n </button>\n <button [id]=\"'unlink-'+id\" aeButton iconName=\"unlink\" (click)=\"triggerCommand('unlink')\"\n title=\"Unlink\" [disabled]=\"htmlMode || !linkSelected\" [hidden]=\"isButtonHidden('unlink')\">\n </button>\n <input\n style=\"display: none\"\n accept=\"image/*\"\n type=\"file\" (change)=\"onFileChanged($event)\"\n #fileInput>\n <button [id]=\"'insertImage-'+id\" aeButton iconName=\"image\" (click)=\"focus(); fileInput.click()\"\n title=\"Insert Image\"\n [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('insertImage')\">\n </button>\n <button [id]=\"'insertVideo-'+id\" aeButton iconName=\"video\"\n (click)=\"insertVideo()\" title=\"Insert Video\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertVideo')\">\n </button>\n <button [id]=\"'insertHorizontalRule-'+id\" aeButton iconName=\"horizontalLine\" title=\"Horizontal Line\"\n (click)=\"triggerCommand('insertHorizontalRule')\" [disabled]=\"htmlMode\"\n [hidden]=\"isButtonHidden('insertHorizontalRule')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'clearFormatting-'+id\" aeButton iconName=\"removeFormat\" title=\"Clear Formatting\"\n class=\"angular-editor-button\"\n (click)=\"triggerCommand('removeFormat')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('removeFormat')\">\n </button>\n </div>\n <div aeToolbarSet>\n <button [id]=\"'toggleEditorMode-'+id\" aeButton iconName=\"htmlCode\" title=\"HTML Code\"\n (click)=\"triggerCommand('toggleEditorMode')\" [hidden]=\"isButtonHidden('toggleEditorMode')\">\n </button>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: ["a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\"\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:#ffffff80}.angular-editor-toolbar{font:100 14px/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;font-size:.8rem;padding:.2rem;border:1px solid #ddd;display:flex;flex-wrap:wrap;gap:4px}.angular-editor-toolbar .angular-editor-toolbar-set{display:flex;gap:1px;width:fit-content;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;float:left;width:2rem;height:2rem}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:none;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\"\";inset:auto auto -3px -1px;width:15px;height:2px;z-index:0;background:#1b1b1b}\n"] }]
338
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.AngularEditorService }, { type: i0.ElementRef }, { type: undefined, decorators: [{
339
+ type: Inject,
340
+ args: [DOCUMENT]
341
+ }] }]; }, propDecorators: { id: [{
342
+ type: Input
343
+ }], uploadUrl: [{
344
+ type: Input
345
+ }], upload: [{
346
+ type: Input
347
+ }], showToolbar: [{
348
+ type: Input
349
+ }], fonts: [{
350
+ type: Input
351
+ }], customClasses: [{
352
+ type: Input
353
+ }], defaultFontName: [{
354
+ type: Input
355
+ }], defaultFontSize: [{
356
+ type: Input
357
+ }], hiddenButtons: [{
358
+ type: Input
359
+ }], execute: [{
360
+ type: Output
361
+ }], myInputFile: [{
362
+ type: ViewChild,
363
+ args: ['fileInput', { static: true }]
364
+ }] } });
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWVkaXRvci9zcmMvbGliL2FuZ3VsYXItZWRpdG9yLXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1lZGl0b3Ivc3JjL2xpYi9hbmd1bGFyLWVkaXRvci10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7O0FBV3pDLE1BQU0sT0FBTyw2QkFBNkI7SUE4SXhDLFlBQ1UsQ0FBWSxFQUNaLGFBQW1DLEVBQ25DLEVBQWMsRUFDSSxHQUFRO1FBSDFCLE1BQUMsR0FBRCxDQUFDLENBQVc7UUFDWixrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNJLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFqSnBDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsVUFBSyxHQUFHLFNBQVMsQ0FBQztRQUNsQixhQUFRLEdBQUcsaUJBQWlCLENBQUM7UUFDN0IsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUlmLGFBQVEsR0FBbUI7WUFDekI7Z0JBQ0UsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxLQUFLLEVBQUUsV0FBVztnQkFDbEIsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNEO2dCQUNFLEtBQUssRUFBRSxXQUFXO2dCQUNsQixLQUFLLEVBQUUsSUFBSTthQUNa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ekMsU0FBUzsrQkFDRSx3QkFBd0I7OzBCQXVKL0IsTUFBTTsyQkFBQyxRQUFROzRDQTNDVCxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0YsYUFBYTtzQkFEaEIsS0FBSztnQkFVRixlQUFlO3NCQURsQixLQUFLO2dCQVFGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUVpQyxXQUFXO3NCQUFsRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QW5ndWxhckVkaXRvclNlcnZpY2UsIFVwbG9hZFJlc3BvbnNlfSBmcm9tICcuL2FuZ3VsYXItZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtIdHRwUmVzcG9uc2UsIEh0dHBFdmVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q3VzdG9tQ2xhc3N9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7U2VsZWN0T3B0aW9ufSBmcm9tICcuL2FlLXNlbGVjdC9hZS1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYW5ndWxhci1lZGl0b3ItdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmd1bGFyLWVkaXRvci10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYW5ndWxhci1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJFZGl0b3JUb29sYmFyQ29tcG9uZW50IHtcbiAgaHRtbE1vZGUgPSBmYWxzZTtcbiAgbGlua1NlbGVjdGVkID0gZmFsc2U7XG4gIGJsb2NrID0gJ2RlZmF1bHQnO1xuICBmb250TmFtZSA9ICdUaW1lcyBOZXcgUm9tYW4nO1xuICBmb250U2l6ZSA9ICczJztcbiAgZm9yZUNvbG91cjtcbiAgYmFja0NvbG9yO1xuXG4gIGhlYWRpbmdzOiBTZWxlY3RPcHRpb25bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ0hlYWRpbmcgMScsXG4gICAgICB2YWx1ZTogJ2gxJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnSGVhZGluZyAyJyxcbiAgICAgIHZhbHVlOiAnaDInLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdIZWFkaW5nIDMnLFxuICAgICAgdmFsdWU6ICdoMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ0hlYWRpbmcgNCcsXG4gICAgICB2YWx1ZTogJ2g0JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnSGVhZGluZyA1JyxcbiAgICAgIHZhbHVlOiAnaDUnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdIZWFkaW5nIDYnLFxuICAgICAgdmFsdWU6ICdoNicsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ0hlYWRpbmcgNycsXG4gICAgICB2YWx1ZTogJ2g3JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnUGFyYWdyYXBoJyxcbiAgICAgIHZhbHVlOiAncCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ1ByZWRlZmluZWQnLFxuICAgICAgdmFsdWU6ICdwcmUnXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ1N0YW5kYXJkJyxcbiAgICAgIHZhbHVlOiAnZGl2J1xuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdkZWZhdWx0JyxcbiAgICAgIHZhbHVlOiAnZGVmYXVsdCdcbiAgICB9XG4gIF07XG5cbiAgZm9udFNpemVzOiBTZWxlY3RPcHRpb25bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJzEnLFxuICAgICAgdmFsdWU6ICcxJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnMicsXG4gICAgICB2YWx1ZTogJzInLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICczJyxcbiAgICAgIHZhbHVlOiAnMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJzQnLFxuICAgICAgdmFsdWU6ICc0JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnNScsXG4gICAgICB2YWx1ZTogJzUnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICc2JyxcbiAgICAgIHZhbHVlOiAnNicsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJzcnLFxuICAgICAgdmFsdWU6ICc3JyxcbiAgICB9XG4gIF07XG5cbiAgY3VzdG9tQ2xhc3NJZCA9ICctMSc7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24sIG5vLXVuZGVyc2NvcmUtZGFuZ2xlLCBpZC1ibGFja2xpc3QsIGlkLW1hdGNoXG4gIF9jdXN0b21DbGFzc2VzOiBDdXN0b21DbGFzc1tdO1xuICBjdXN0b21DbGFzc0xpc3Q6IFNlbGVjdE9wdGlvbltdID0gW3tsYWJlbDogJycsIHZhbHVlOiAnJ31dO1xuICAvLyB1cGxvYWRVcmw6IHN0cmluZztcblxuICB0YWdNYXAgPSB7XG4gICAgQkxPQ0tRVU9URTogJ2luZGVudCcsXG4gICAgQTogJ2xpbmsnXG4gIH07XG5cbiAgc2VsZWN0ID0gWydIMScsICdIMicsICdIMycsICdINCcsICdINScsICdINicsICdQJywgJ1BSRScsICdESVYnXTtcblxuICBidXR0b25zID0gWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnc3RyaWtlVGhyb3VnaCcsICdzdWJzY3JpcHQnLCAnc3VwZXJzY3JpcHQnLCAnanVzdGlmeUxlZnQnLCAnanVzdGlmeUNlbnRlcicsXG4gICAgJ2p1c3RpZnlSaWdodCcsICdqdXN0aWZ5RnVsbCcsICdpbmRlbnQnLCAnb3V0ZGVudCcsICdpbnNlcnRVbm9yZGVyZWRMaXN0JywgJ2luc2VydE9yZGVyZWRMaXN0JywgJ2xpbmsnXTtcblxuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSB1cGxvYWRVcmw6IHN0cmluZztcbiAgQElucHV0KCkgdXBsb2FkOiAoZmlsZTogRmlsZSkgPT4gT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8VXBsb2FkUmVzcG9uc2U+PjtcbiAgQElucHV0KCkgc2hvd1Rvb2xiYXI6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGZvbnRzOiBTZWxlY3RPcHRpb25bXSA9IFt7bGFiZWw6ICcnLCB2YWx1ZTogJyd9XTtcblxuICBASW5wdXQoKVxuICBzZXQgY3VzdG9tQ2xhc3NlcyhjbGFzc2VzOiBDdXN0b21DbGFzc1tdKSB7XG4gICAgaWYgKGNsYXNzZXMpIHtcbiAgICAgIHRoaXMuX2N1c3RvbUNsYXNzZXMgPSBjbGFzc2VzO1xuICAgICAgdGhpcy5jdXN0b21DbGFzc0xpc3QgPSB0aGlzLl9jdXN0b21DbGFzc2VzLm1hcCgoeCwgaSkgPT4gKHtsYWJlbDogeC5uYW1lLCB2YWx1ZTogaS50b1N0cmluZygpfSkpO1xuICAgICAgdGhpcy5jdXN0b21DbGFzc0xpc3QudW5zaGlmdCh7bGFiZWw6ICdDbGVhciBDbGFzcycsIHZhbHVlOiAnLTEnfSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGRlZmF1bHRGb250TmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmZvbnROYW1lID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGRlZmF1bHRGb250U2l6ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmZvbnRTaXplID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgaGlkZGVuQnV0dG9uczogc3RyaW5nW11bXTtcblxuICBAT3V0cHV0KCkgZXhlY3V0ZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7c3RhdGljOiB0cnVlfSkgbXlJbnB1dEZpbGU6IEVsZW1lbnRSZWY7XG5cbiAgcHVibGljIGdldCBpc0xpbmtCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5odG1sTW9kZSB8fCAhQm9vbGVhbih0aGlzLmVkaXRvclNlcnZpY2Uuc2VsZWN0ZWRUZXh0KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWRpdG9yU2VydmljZTogQW5ndWxhckVkaXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlcjogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvYzogYW55XG4gICkge1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXIgY29tbWFuZCBmcm9tIGVkaXRvciBoZWFkZXIgYnV0dG9uc1xuICAgKiBAcGFyYW0gY29tbWFuZCBzdHJpbmcgZnJvbSB0b29sYmFyIGJ1dHRvbnNcbiAgICovXG4gIHRyaWdnZXJDb21tYW5kKGNvbW1hbmQ6IHN0cmluZykge1xuICAgIHRoaXMuZXhlY3V0ZS5lbWl0KGNvbW1hbmQpO1xuICB9XG5cbiAgLyoqXG4gICAqIGhpZ2hsaWdodCBlZGl0b3IgYnV0dG9ucyB3aGVuIGN1cnNvciBtb3ZlZCBvciBwb3NpdGlvbmluZ1xuICAgKi9cbiAgdHJpZ2dlckJ1dHRvbnMoKSB7XG4gICAgaWYgKCF0aGlzLnNob3dUb29sYmFyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYnV0dG9ucy5mb3JFYWNoKGUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5kb2MucXVlcnlDb21tYW5kU3RhdGUoZSk7XG4gICAgICBjb25zdCBlbGVtZW50QnlJZCA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKGUgKyAnLScgKyB0aGlzLmlkKTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5yLmFkZENsYXNzKGVsZW1lbnRCeUlkLCAnYWN0aXZlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnIucmVtb3ZlQ2xhc3MoZWxlbWVudEJ5SWQsICdhY3RpdmUnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0cmlnZ2VyIGhpZ2hsaWdodCBlZGl0b3IgYnV0dG9ucyB3aGVuIGN1cnNvciBtb3ZlZCBvciBwb3NpdGlvbmluZyBpbiBibG9ja1xuICAgKi9cbiAgdHJpZ2dlckJsb2Nrcyhub2RlczogTm9kZVtdKSB7XG4gICAgaWYgKCF0aGlzLnNob3dUb29sYmFyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGlua1NlbGVjdGVkID0gbm9kZXMuZmluZEluZGV4KHggPT4geC5ub2RlTmFtZSA9PT0gJ0EnKSA+IC0xO1xuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0LmZvckVhY2goeSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gbm9kZXMuZmluZCh4ID0+IHgubm9kZU5hbWUgPT09IHkpO1xuICAgICAgaWYgKG5vZGUgIT09IHVuZGVmaW5lZCAmJiB5ID09PSBub2RlLm5vZGVOYW1lKSB7XG4gICAgICAgIGlmIChmb3VuZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB0aGlzLmJsb2NrID0gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmb3VuZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5ibG9jayA9ICdkZWZhdWx0JztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGZvdW5kID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuX2N1c3RvbUNsYXNzZXMpIHtcbiAgICAgIHRoaXMuX2N1c3RvbUNsYXNzZXMuZm9yRWFjaCgoeSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzLmZpbmQoeCA9PiB7XG4gICAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4geC5jbGFzc05hbWUgPT09IHkuY2xhc3M7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG5vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChmb3VuZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ2xhc3NJZCA9IGluZGV4LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGZvdW5kID09PSBmYWxzZSkge1xuICAgICAgICAgIHRoaXMuY3VzdG9tQ2xhc3NJZCA9ICctMSc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIE9iamVjdC5rZXlzKHRoaXMudGFnTWFwKS5tYXAoZSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50QnlJZCA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKHRoaXMudGFnTWFwW2VdICsgJy0nICsgdGhpcy5pZCk7XG4gICAgICBjb25zdCBub2RlID0gbm9kZXMuZmluZCh4ID0+IHgubm9kZU5hbWUgPT09IGUpO1xuICAgICAgaWYgKG5vZGUgIT09IHVuZGVmaW5lZCAmJiBlID09PSBub2RlLm5vZGVOYW1lKSB7XG4gICAgICAgIHRoaXMuci5hZGRDbGFzcyhlbGVtZW50QnlJZCwgJ2FjdGl2ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yLnJlbW92ZUNsYXNzKGVsZW1lbnRCeUlkLCAnYWN0aXZlJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcmVDb2xvdXIgPSB0aGlzLmRvYy5xdWVyeUNvbW1hbmRWYWx1ZSgnRm9yZUNvbG9yJyk7XG4gICAgdGhpcy5mb250U2l6ZSA9IHRoaXMuZG9jLnF1ZXJ5Q29tbWFuZFZhbHVlKCdGb250U2l6ZScpO1xuICAgIHRoaXMuZm9udE5hbWUgPSB0aGlzLmRvYy5xdWVyeUNvbW1hbmRWYWx1ZSgnRm9udE5hbWUnKS5yZXBsYWNlKC9cIi9nLCAnJyk7XG4gICAgdGhpcy5iYWNrQ29sb3IgPSB0aGlzLmRvYy5xdWVyeUNvbW1hbmRWYWx1ZSgnYmFja0NvbG9yJyk7XG4gIH1cblxuICAvKipcbiAgICogaW5zZXJ0IFVSTCBsaW5rXG4gICAqL1xuICBpbnNlcnRVcmwoKSB7XG4gICAgbGV0IHVybCA9ICdodHRwczpcXC9cXC8nO1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZWRpdG9yU2VydmljZS5zYXZlZFNlbGVjdGlvbjtcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5jb21tb25BbmNlc3RvckNvbnRhaW5lci5wYXJlbnRFbGVtZW50Lm5vZGVOYW1lID09PSAnQScpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHNlbGVjdGlvbi5jb21tb25BbmNlc3RvckNvbnRhaW5lci5wYXJlbnRFbGVtZW50IGFzIEhUTUxBbmNob3JFbGVtZW50O1xuICAgICAgaWYgKHBhcmVudC5ocmVmICE9PSAnJykge1xuICAgICAgICB1cmwgPSBwYXJlbnQuaHJlZjtcbiAgICAgIH1cbiAgICB9XG4gICAgdXJsID0gcHJvbXB0KCdJbnNlcnQgVVJMIGxpbmsnLCB1cmwpO1xuICAgIGlmICh1cmwgJiYgdXJsICE9PSAnJyAmJiB1cmwgIT09ICdodHRwczovLycpIHtcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jcmVhdGVMaW5rKHVybCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGluc2VydCBWaWRlbyBsaW5rXG4gICAqL1xuICBpbnNlcnRWaWRlbygpIHtcbiAgICB0aGlzLmV4ZWN1dGUuZW1pdCgnJyk7XG4gICAgY29uc3QgdXJsID0gcHJvbXB0KCdJbnNlcnQgVmlkZW8gbGluaycsIGBodHRwczovL2ApO1xuICAgIGlmICh1cmwgJiYgdXJsICE9PSAnJyAmJiB1cmwgIT09IGBodHRwczovL2ApIHtcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5pbnNlcnRWaWRlbyh1cmwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBpbnNlcnQgY29sb3IgKi9cbiAgaW5zZXJ0Q29sb3IoY29sb3I6IHN0cmluZywgd2hlcmU6IHN0cmluZykge1xuICAgIHRoaXMuZWRpdG9yU2VydmljZS5pbnNlcnRDb2xvcihjb2xvciwgd2hlcmUpO1xuICAgIHRoaXMuZXhlY3V0ZS5lbWl0KCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzZXQgZm9udCBOYW1lL2ZhbWlseVxuICAgKiBAcGFyYW0gZm9yZUNvbG9yIHN0cmluZ1xuICAgKi9cbiAgc2V0Rm9udE5hbWUoZm9yZUNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2V0Rm9udE5hbWUoZm9yZUNvbG9yKTtcbiAgICB0aGlzLmV4ZWN1dGUuZW1pdCgnJyk7XG4gIH1cblxuICAvKipcbiAgICogc2V0IGZvbnQgU2l6ZVxuICAgKiBAcGFyYW0gZm9udFNpemUgc3RyaW5nXG4gICAqL1xuICBzZXRGb250U2l6ZShmb250U2l6ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNldEZvbnRTaXplKGZvbnRTaXplKTtcbiAgICB0aGlzLmV4ZWN1dGUuZW1pdCgnJyk7XG4gIH1cblxuICAvKipcbiAgICogdG9nZ2xlIGVkaXRvciBtb2RlIChXWVNJV1lHIG9yIFNPVVJDRSlcbiAgICogQHBhcmFtIG0gYm9vbGVhblxuICAgKi9cbiAgc2V0RWRpdG9yTW9kZShtOiBib29sZWFuKSB7XG4gICAgY29uc3QgdG9nZ2xlRWRpdG9yTW9kZUJ1dHRvbiA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCd0b2dnbGVFZGl0b3JNb2RlJyArICctJyArIHRoaXMuaWQpO1xuICAgIGlmIChtKSB7XG4gICAgICB0aGlzLnIuYWRkQ2xhc3ModG9nZ2xlRWRpdG9yTW9kZUJ1dHRvbiwgJ2FjdGl2ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnIucmVtb3ZlQ2xhc3ModG9nZ2xlRWRpdG9yTW9kZUJ1dHRvbiwgJ2FjdGl2ZScpO1xuICAgIH1cbiAgICB0aGlzLmh0bWxNb2RlID0gbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGxvYWQgaW1hZ2Ugd2hlbiBmaWxlIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgb25GaWxlQ2hhbmdlZChldmVudCkge1xuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XG4gICAgaWYgKGZpbGUudHlwZS5pbmNsdWRlcygnaW1hZ2UvJykpIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2FkKSB7XG4gICAgICAgICAgdGhpcy51cGxvYWQoZmlsZSkuc3Vic2NyaWJlKChyZXNwb25zZTogSHR0cFJlc3BvbnNlPFVwbG9hZFJlc3BvbnNlPikgPT4gdGhpcy53YXRjaFVwbG9hZEltYWdlKHJlc3BvbnNlLCBldmVudCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXBsb2FkVXJsKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UudXBsb2FkSW1hZ2UoZmlsZSkuc3Vic2NyaWJlKChyZXNwb25zZTogSHR0cFJlc3BvbnNlPFVwbG9hZFJlc3BvbnNlPikgPT4gdGhpcy53YXRjaFVwbG9hZEltYWdlKHJlc3BvbnNlLCBldmVudCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmciA9IGUuY3VycmVudFRhcmdldCBhcyBGaWxlUmVhZGVyO1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmluc2VydEltYWdlKGZyLnJlc3VsdC50b1N0cmluZygpKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cblxuICB3YXRjaFVwbG9hZEltYWdlKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8e2ltYWdlVXJsOiBzdHJpbmd9PiwgZXZlbnQpIHtcbiAgICBjb25zdCB7IGltYWdlVXJsIH0gPSByZXNwb25zZS5ib2R5O1xuICAgIHRoaXMuZWRpdG9yU2VydmljZS5pbnNlcnRJbWFnZShpbWFnZVVybCk7XG4gICAgZXZlbnQuc3JjRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGN1c3RvbSBjbGFzc1xuICAgKi9cbiAgc2V0Q3VzdG9tQ2xhc3MoY2xhc3NJZDogc3RyaW5nKSB7XG4gICAgaWYgKGNsYXNzSWQgPT09ICctMScpIHtcbiAgICAgIHRoaXMuZXhlY3V0ZS5lbWl0KCdjbGVhcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3JlYXRlQ3VzdG9tQ2xhc3ModGhpcy5fY3VzdG9tQ2xhc3Nlc1srY2xhc3NJZF0pO1xuICAgIH1cbiAgfVxuXG4gIGlzQnV0dG9uSGlkZGVuKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghbmFtZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoISh0aGlzLmhpZGRlbkJ1dHRvbnMgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdDogYW55O1xuICAgIGZvciAoY29uc3QgYXJyIG9mIHRoaXMuaGlkZGVuQnV0dG9ucykge1xuICAgICAgaWYgKGFyciBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJlc3VsdCA9IGFyci5maW5kKGl0ZW0gPT4gaXRlbSA9PT0gbmFtZSk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0ICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLmV4ZWN1dGUuZW1pdCgnZm9jdXMnKTtcbiAgICBjb25zb2xlLmxvZygnZm9jdXNlZCcpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItdG9vbGJhclwiICpuZ0lmPVwic2hvd1Rvb2xiYXJcIj5cbiAgPGRpdiBhZVRvb2xiYXJTZXQ+XG4gICAgPGJ1dHRvbiBhZUJ1dHRvbiB0aXRsZT1cIlVuZG9cIiBpY29uTmFtZT1cInVuZG9cIiAoY2xpY2spPVwidHJpZ2dlckNvbW1hbmQoJ3VuZG8nKVwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ3VuZG8nKVwiPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gYWVCdXR0b24gdGl0bGU9XCJSZWRvXCIgaWNvbk5hbWU9XCJyZWRvXCIgKGNsaWNrKT1cInRyaWdnZXJDb21tYW5kKCdyZWRvJylcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbigncmVkbycpXCI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGFlVG9vbGJhclNldD5cbiAgICA8YnV0dG9uIFtpZF09XCInYm9sZC0nK2lkXCIgYWVCdXR0b24gdGl0bGU9XCJCb2xkXCIgaWNvbk5hbWU9XCJib2xkXCIgKGNsaWNrKT1cInRyaWdnZXJDb21tYW5kKCdib2xkJylcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignYm9sZCcpXCI+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ2l0YWxpYy0nK2lkXCIgYWVCdXR0b24gaWNvbk5hbWU9XCJpdGFsaWNcIiB0aXRsZT1cIkl0YWxpY1wiIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnaXRhbGljJylcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignaXRhbGljJylcIj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtpZF09XCIndW5kZXJsaW5lLScraWRcIiBhZUJ1dHRvbiB0aXRsZT1cIlVuZGVybGluZVwiIGljb25OYW1lPVwidW5kZXJsaW5lXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgndW5kZXJsaW5lJylcIiBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIiBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCd1bmRlcmxpbmUnKVwiPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gW2lkXT1cIidzdHJpa2VUaHJvdWdoLScraWRcIiBhZUJ1dHRvbiBpY29uTmFtZT1cInN0cmlrZVRocm91Z2hcIiB0aXRsZT1cIlN0cmlrZXRocm91Z2hcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRyaWdnZXJDb21tYW5kKCdzdHJpa2VUaHJvdWdoJylcIiBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignc3RyaWtlVGhyb3VnaCcpXCI+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ3N1YnNjcmlwdC0nK2lkXCIgYWVCdXR0b24gdGl0bGU9XCJTdWJzY3JpcHRcIiBpY29uTmFtZT1cInN1YnNjcmlwdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckNvbW1hbmQoJ3N1YnNjcmlwdCcpXCIgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignc3Vic2NyaXB0JylcIj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtpZF09XCInc3VwZXJzY3JpcHQtJytpZFwiIGFlQnV0dG9uIGljb25OYW1lPVwic3VwZXJzY3JpcHRcIiB0aXRsZT1cIlN1cGVyc2NyaXB0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnc3VwZXJzY3JpcHQnKVwiIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdzdXBlcnNjcmlwdCcpXCI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGFlVG9vbGJhclNldD5cbiAgICA8YnV0dG9uIFtpZF09XCInanVzdGlmeUxlZnQtJytpZFwiIGFlQnV0dG9uIGljb25OYW1lPVwianVzdGlmeUxlZnRcIiB0aXRsZT1cIkp1c3RpZnkgTGVmdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckNvbW1hbmQoJ2p1c3RpZnlMZWZ0JylcIiBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignanVzdGlmeUxlZnQnKVwiPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gW2lkXT1cIidqdXN0aWZ5Q2VudGVyLScraWRcIiBhZUJ1dHRvbiBpY29uTmFtZT1cImp1c3RpZnlDZW50ZXJcIiB0aXRsZT1cIkp1c3RpZnkgQ2VudGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnanVzdGlmeUNlbnRlcicpXCIgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ2p1c3RpZnlDZW50ZXInKVwiPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gW2lkXT1cIidqdXN0aWZ5UmlnaHQtJytpZFwiIGFlQnV0dG9uIGljb25OYW1lPVwianVzdGlmeVJpZ2h0XCIgdGl0bGU9XCJKdXN0aWZ5IFJpZ2h0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnanVzdGlmeVJpZ2h0JylcIiBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignanVzdGlmeVJpZ2h0JylcIj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtpZF09XCInanVzdGlmeUZ1bGwtJytpZFwiIGFlQnV0dG9uIGljb25OYW1lPVwianVzdGlmeUZ1bGxcIiB0aXRsZT1cIkp1c3RpZnkgRnVsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckNvbW1hbmQoJ2p1c3RpZnlGdWxsJylcIiBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignanVzdGlmeUZ1bGwnKVwiPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBhZVRvb2xiYXJTZXQ+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ2luZGVudC0nK2lkXCIgYWVCdXR0b24gaWNvbk5hbWU9XCJpbmRlbnRcIiB0aXRsZT1cIkluZGVudFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckNvbW1hbmQoJ2luZGVudCcpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ2luZGVudCcpXCI+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ291dGRlbnQtJytpZFwiIGFlQnV0dG9uIGljb25OYW1lPVwib3V0ZGVudFwiIHRpdGxlPVwiT3V0ZGVudFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckNvbW1hbmQoJ291dGRlbnQnKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIiBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdvdXRkZW50JylcIj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgYWVUb29sYmFyU2V0PlxuICAgIDxidXR0b24gW2lkXT1cIidpbnNlcnRVbm9yZGVyZWRMaXN0LScraWRcIiBhZUJ1dHRvbiBpY29uTmFtZT1cInVub3JkZXJlZExpc3RcIiB0aXRsZT1cIlVub3JkZXJlZCBMaXN0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnaW5zZXJ0VW5vcmRlcmVkTGlzdCcpXCIgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ2luc2VydFVub3JkZXJlZExpc3QnKVwiPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gW2lkXT1cIidpbnNlcnRPcmRlcmVkTGlzdC0nK2lkXCIgYWVCdXR0b24gaWNvbk5hbWU9XCJvcmRlcmVkTGlzdFwiIHRpdGxlPVwiT3JkZXJlZCBMaXN0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgnaW5zZXJ0T3JkZXJlZExpc3QnKVwiIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdpbnNlcnRPcmRlcmVkTGlzdCcpXCI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGFlVG9vbGJhclNldD5cbiAgICA8YWUtc2VsZWN0IGNsYXNzPVwic2VsZWN0LWhlYWRpbmdcIiBbb3B0aW9uc109XCJoZWFkaW5nc1wiXG4gICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJsb2NrXCJcbiAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidHJpZ2dlckNvbW1hbmQoYmxvY2spXCJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiXG4gICAgICAgICAgICAgICBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdoZWFkaW5nJylcIlxuICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiPjwvYWUtc2VsZWN0PlxuICA8L2Rpdj5cbiAgPGRpdiBhZVRvb2xiYXJTZXQ+XG4gICAgPGFlLXNlbGVjdCBjbGFzcz1cInNlbGVjdC1mb250XCIgW29wdGlvbnNdPVwiZm9udHNcIlxuICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb250TmFtZVwiXG4gICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldEZvbnROYW1lKGZvbnROYW1lKVwiXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIlxuICAgICAgICAgICAgICAgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbignZm9udE5hbWUnKVwiXG4gICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+PC9hZS1zZWxlY3Q+XG4gIDwvZGl2PlxuICA8ZGl2IGFlVG9vbGJhclNldD5cbiAgICA8YWUtc2VsZWN0IGNsYXNzPVwic2VsZWN0LWZvbnQtc2l6ZVwiIFtvcHRpb25zXT1cImZvbnRTaXplc1wiXG4gICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvbnRTaXplXCJcbiAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0Rm9udFNpemUoZm9udFNpemUpXCJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiXG4gICAgICAgICAgICAgICBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdmb250U2l6ZScpXCJcbiAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj5cbiAgICA8L2FlLXNlbGVjdD5cbiAgPC9kaXY+XG4gIDxkaXYgYWVUb29sYmFyU2V0PlxuICAgIDxpbnB1dFxuICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAgIHR5cGU9XCJjb2xvclwiIChjaGFuZ2UpPVwiaW5zZXJ0Q29sb3IoZmdJbnB1dC52YWx1ZSwgJ3RleHRDb2xvcicpXCJcbiAgICAgICNmZ0lucHV0PlxuICAgIDxidXR0b24gW2lkXT1cIidmb3JlZ3JvdW5kQ29sb3JQaWNrZXItJytpZFwiIGFlQnV0dG9uIGljb25OYW1lPVwidGV4dENvbG9yXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmb2N1cygpOyA7IGZnSW5wdXQuY2xpY2soKVwiXG4gICAgICAgICAgICB0aXRsZT1cIlRleHQgQ29sb3JcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCIgW2hpZGRlbl09XCJpc0J1dHRvbkhpZGRlbigndGV4dENvbG9yJylcIj5cbiAgICA8L2J1dHRvbj5cbiAgICA8aW5wdXRcbiAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXG4gICAgICB0eXBlPVwiY29sb3JcIiAoY2hhbmdlKT1cImluc2VydENvbG9yKGJnSW5wdXQudmFsdWUsICdiYWNrZ3JvdW5kQ29sb3InKVwiXG4gICAgICAjYmdJbnB1dD5cbiAgICA8YnV0dG9uIFtpZF09XCInYmFja2dyb3VuZENvbG9yUGlja2VyLScraWRcIiBhZUJ1dHRvbiBpY29uTmFtZT1cImJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZm9jdXMoKTsgOyBiZ0lucHV0LmNsaWNrKClcIlxuICAgICAgICAgICAgdGl0bGU9XCJCYWNrZ3JvdW5kIENvbG9yXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ2JhY2tncm91bmRDb2xvcicpXCI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiX2N1c3RvbUNsYXNzZXNcIiBhZVRvb2xiYXJTZXQ+XG4gICAgPGFlLXNlbGVjdCBjbGFzcz1cInNlbGVjdC1jdXN0b20tc3R5bGVcIiBbb3B0aW9uc109XCJjdXN0b21DbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21DbGFzc0lkXCJcbiAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0Q3VzdG9tQ2xhc3MoY3VzdG9tQ2xhc3NJZClcIlxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCJcbiAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ2N1c3RvbUNsYXNzZXMnKVwiXG4gICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+PC9hZS1zZWxlY3Q+XG4gIDwvZGl2PlxuICA8ZGl2IGFlVG9vbGJhclNldD5cbiAgICA8YnV0dG9uIFtpZF09XCInbGluay0nK2lkXCIgYWVCdXR0b24gaWNvbk5hbWU9XCJsaW5rXCIgKGNsaWNrKT1cImluc2VydFVybCgpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiSW5zZXJ0IExpbmtcIiBbZGlzYWJsZWRdPVwiaXNMaW5rQnV0dG9uRGlzYWJsZWRcIiBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdsaW5rJylcIj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtpZF09XCIndW5saW5rLScraWRcIiBhZUJ1dHRvbiBpY29uTmFtZT1cInVubGlua1wiIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgndW5saW5rJylcIlxuICAgICAgICAgICAgdGl0bGU9XCJVbmxpbmtcIiBbZGlzYWJsZWRdPVwiaHRtbE1vZGUgfHwgIWxpbmtTZWxlY3RlZFwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ3VubGluaycpXCI+XG4gICAgPC9idXR0b24+XG4gICAgPGlucHV0XG4gICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgICAgYWNjZXB0PVwiaW1hZ2UvKlwiXG4gICAgICB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwib25GaWxlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICNmaWxlSW5wdXQ+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ2luc2VydEltYWdlLScraWRcIiBhZUJ1dHRvbiBpY29uTmFtZT1cImltYWdlXCIgKGNsaWNrKT1cImZvY3VzKCk7IGZpbGVJbnB1dC5jbGljaygpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiSW5zZXJ0IEltYWdlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ2luc2VydEltYWdlJylcIj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtpZF09XCInaW5zZXJ0VmlkZW8tJytpZFwiIGFlQnV0dG9uIGljb25OYW1lPVwidmlkZW9cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImluc2VydFZpZGVvKClcIiB0aXRsZT1cIkluc2VydCBWaWRlb1wiIFtkaXNhYmxlZF09XCJodG1sTW9kZVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdpbnNlcnRWaWRlbycpXCI+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ2luc2VydEhvcml6b250YWxSdWxlLScraWRcIiBhZUJ1dHRvbiBpY29uTmFtZT1cImhvcml6b250YWxMaW5lXCIgdGl0bGU9XCJIb3Jpem9udGFsIExpbmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRyaWdnZXJDb21tYW5kKCdpbnNlcnRIb3Jpem9udGFsUnVsZScpXCIgW2Rpc2FibGVkXT1cImh0bWxNb2RlXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ2luc2VydEhvcml6b250YWxSdWxlJylcIj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgYWVUb29sYmFyU2V0PlxuICAgIDxidXR0b24gW2lkXT1cIidjbGVhckZvcm1hdHRpbmctJytpZFwiIGFlQnV0dG9uIGljb25OYW1lPVwicmVtb3ZlRm9ybWF0XCIgdGl0bGU9XCJDbGVhciBGb3JtYXR0aW5nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYW5ndWxhci1lZGl0b3ItYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQ29tbWFuZCgncmVtb3ZlRm9ybWF0JylcIiBbZGlzYWJsZWRdPVwiaHRtbE1vZGVcIiBbaGlkZGVuXT1cImlzQnV0dG9uSGlkZGVuKCdyZW1vdmVGb3JtYXQnKVwiPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBhZVRvb2xiYXJTZXQ+XG4gICAgPGJ1dHRvbiBbaWRdPVwiJ3RvZ2dsZUVkaXRvck1vZGUtJytpZFwiIGFlQnV0dG9uIGljb25OYW1lPVwiaHRtbENvZGVcIiB0aXRsZT1cIkhUTUwgQ29kZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckNvbW1hbmQoJ3RvZ2dsZUVkaXRvck1vZGUnKVwiIFtoaWRkZW5dPVwiaXNCdXR0b25IaWRkZW4oJ3RvZ2dsZUVkaXRvck1vZGUnKVwiPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=