@flogeez/angular-tiptap-editor 2.4.0 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/esm2022/flogeez-angular-tiptap-editor.mjs +5 -0
- package/esm2022/lib/ate-editor.provider.mjs +38 -0
- package/esm2022/lib/components/bubble-menus/base/ate-base-bubble-menu.mjs +207 -0
- package/esm2022/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.mjs +133 -0
- package/esm2022/lib/components/bubble-menus/color/ate-color-bubble-menu.component.mjs +365 -0
- package/esm2022/lib/components/bubble-menus/image/ate-image-bubble-menu.component.mjs +226 -0
- package/esm2022/lib/components/bubble-menus/link/ate-link-bubble-menu.component.mjs +247 -0
- package/esm2022/lib/components/bubble-menus/table/ate-cell-bubble-menu.component.mjs +121 -0
- package/esm2022/lib/components/bubble-menus/table/ate-table-bubble-menu.component.mjs +266 -0
- package/esm2022/lib/components/bubble-menus/text/ate-bubble-menu.component.mjs +294 -0
- package/esm2022/lib/components/color-picker/ate-color-picker.component.mjs +122 -0
- package/esm2022/lib/components/edit-toggle/ate-edit-toggle.component.mjs +42 -0
- package/esm2022/lib/components/editor/angular-tiptap-editor.component.mjs +953 -0
- package/esm2022/lib/components/slash-commands/ate-slash-commands.component.mjs +329 -0
- package/esm2022/lib/components/toolbar/ate-toolbar.component.mjs +531 -0
- package/esm2022/lib/components/ui/ate-button.component.mjs +90 -0
- package/esm2022/lib/components/ui/ate-separator.component.mjs +31 -0
- package/esm2022/lib/config/ate-editor.config.mjs +76 -0
- package/esm2022/lib/config/ate-global-config.token.mjs +6 -0
- package/esm2022/lib/config/ate-slash-commands.config.mjs +130 -0
- package/esm2022/lib/directives/ate-noop-value-accessor.directive.mjs +40 -0
- package/esm2022/lib/extensions/ate-link-click-behavior.extension.mjs +32 -0
- package/esm2022/lib/extensions/ate-resizable-image.extension.mjs +270 -0
- package/esm2022/lib/extensions/ate-table.extension.mjs +29 -0
- package/esm2022/lib/extensions/ate-tiptap-state.extension.mjs +85 -0
- package/esm2022/lib/extensions/ate-upload-progress.extension.mjs +195 -0
- package/esm2022/lib/extensions/calculators/ate-discovery.calculator.mjs +62 -0
- package/esm2022/lib/extensions/calculators/ate-image.calculator.mjs +8 -0
- package/esm2022/lib/extensions/calculators/ate-marks.calculator.mjs +75 -0
- package/esm2022/lib/extensions/calculators/ate-selection.calculator.mjs +35 -0
- package/esm2022/lib/extensions/calculators/ate-structure.calculator.mjs +34 -0
- package/esm2022/lib/extensions/calculators/ate-table.calculator.mjs +38 -0
- package/esm2022/lib/models/ate-bubble-menu.model.mjs +49 -0
- package/esm2022/lib/models/ate-editor-config.model.mjs +2 -0
- package/esm2022/lib/models/ate-editor-state.model.mjs +90 -0
- package/esm2022/lib/models/ate-image.model.mjs +2 -0
- package/esm2022/lib/models/ate-toolbar.model.mjs +35 -0
- package/esm2022/lib/node-view/ate-angular-node-view.mjs +97 -0
- package/esm2022/lib/node-view/ate-injector.registry.mjs +16 -0
- package/esm2022/lib/node-view/ate-node-view.factory.mjs +125 -0
- package/esm2022/lib/node-view/ate-node-view.models.mjs +2 -0
- package/esm2022/lib/node-view/ate-node-view.renderer.mjs +154 -0
- package/esm2022/lib/node-view/ate-register-angular-component.mjs +49 -0
- package/esm2022/lib/services/ate-color-picker.service.mjs +193 -0
- package/esm2022/lib/services/ate-editor-commands.service.mjs +465 -0
- package/esm2022/lib/services/ate-i18n.service.mjs +410 -0
- package/esm2022/lib/services/ate-image.service.mjs +368 -0
- package/esm2022/lib/services/ate-link.service.mjs +97 -0
- package/esm2022/lib/utils/ate-color.utils.mjs +60 -0
- package/esm2022/public-api.mjs +93 -0
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +313 -346
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/index.d.ts +3 -1673
- package/lib/ate-editor.provider.d.ts +21 -0
- package/lib/components/bubble-menus/base/ate-base-bubble-menu.d.ts +71 -0
- package/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.d.ts +60 -0
- package/lib/components/bubble-menus/color/ate-color-bubble-menu.component.d.ts +77 -0
- package/lib/components/bubble-menus/image/ate-image-bubble-menu.component.d.ts +52 -0
- package/lib/components/bubble-menus/link/ate-link-bubble-menu.component.d.ts +55 -0
- package/lib/components/bubble-menus/table/ate-cell-bubble-menu.component.d.ts +12 -0
- package/lib/components/bubble-menus/table/ate-table-bubble-menu.component.d.ts +24 -0
- package/lib/components/bubble-menus/text/ate-bubble-menu.component.d.ts +53 -0
- package/lib/components/color-picker/ate-color-picker.component.d.ts +54 -0
- package/lib/components/edit-toggle/ate-edit-toggle.component.d.ts +13 -0
- package/lib/components/editor/angular-tiptap-editor.component.d.ts +235 -0
- package/lib/components/slash-commands/ate-slash-commands.component.d.ts +43 -0
- package/lib/components/toolbar/ate-toolbar.component.d.ts +47 -0
- package/lib/components/ui/ate-button.component.d.ts +25 -0
- package/lib/components/ui/ate-separator.component.d.ts +7 -0
- package/lib/config/ate-editor.config.d.ts +7 -0
- package/lib/config/ate-global-config.token.d.ts +6 -0
- package/lib/config/ate-slash-commands.config.d.ts +41 -0
- package/lib/directives/ate-noop-value-accessor.directive.d.ts +13 -0
- package/lib/extensions/ate-link-click-behavior.extension.d.ts +2 -0
- package/lib/extensions/ate-resizable-image.extension.d.ts +27 -0
- package/lib/extensions/ate-table.extension.d.ts +2 -0
- package/lib/extensions/ate-tiptap-state.extension.d.ts +7 -0
- package/lib/extensions/ate-upload-progress.extension.d.ts +7 -0
- package/lib/extensions/calculators/ate-discovery.calculator.d.ts +7 -0
- package/lib/extensions/calculators/ate-image.calculator.d.ts +2 -0
- package/lib/extensions/calculators/ate-marks.calculator.d.ts +2 -0
- package/lib/extensions/calculators/ate-selection.calculator.d.ts +2 -0
- package/lib/extensions/calculators/ate-structure.calculator.d.ts +2 -0
- package/lib/extensions/calculators/ate-table.calculator.d.ts +2 -0
- package/lib/models/ate-bubble-menu.model.d.ts +33 -0
- package/lib/models/ate-editor-config.model.d.ts +100 -0
- package/lib/models/ate-editor-state.model.d.ts +109 -0
- package/lib/models/ate-image.model.d.ts +104 -0
- package/lib/models/ate-toolbar.model.d.ts +18 -0
- package/lib/node-view/ate-angular-node-view.d.ts +115 -0
- package/lib/node-view/ate-injector.registry.d.ts +3 -0
- package/lib/node-view/ate-node-view.factory.d.ts +10 -0
- package/lib/node-view/ate-node-view.models.d.ts +138 -0
- package/lib/node-view/ate-node-view.renderer.d.ts +23 -0
- package/lib/node-view/ate-register-angular-component.d.ts +35 -0
- package/lib/services/ate-color-picker.service.d.ts +65 -0
- package/lib/services/ate-editor-commands.service.d.ts +72 -0
- package/lib/services/ate-i18n.service.d.ts +394 -0
- package/lib/services/ate-image.service.d.ts +71 -0
- package/lib/services/ate-link.service.d.ts +42 -0
- package/lib/utils/ate-color.utils.d.ts +12 -0
- package/package.json +3 -1
- package/public-api.d.ts +112 -0
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
import { Injectable, signal, computed } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
const ENGLISH_TRANSLATIONS = {
|
|
4
|
+
toolbar: {
|
|
5
|
+
bold: "Bold",
|
|
6
|
+
italic: "Italic",
|
|
7
|
+
underline: "Underline",
|
|
8
|
+
strike: "Strikethrough",
|
|
9
|
+
code: "Inline Code",
|
|
10
|
+
codeBlock: "Code Block",
|
|
11
|
+
superscript: "Superscript",
|
|
12
|
+
subscript: "Subscript",
|
|
13
|
+
highlight: "Highlight",
|
|
14
|
+
highlightPicker: "Background Color",
|
|
15
|
+
heading1: "Heading 1",
|
|
16
|
+
heading2: "Heading 2",
|
|
17
|
+
heading3: "Heading 3",
|
|
18
|
+
bulletList: "Bullet List",
|
|
19
|
+
orderedList: "Ordered List",
|
|
20
|
+
blockquote: "Blockquote",
|
|
21
|
+
alignLeft: "Align Left",
|
|
22
|
+
alignCenter: "Align Center",
|
|
23
|
+
alignRight: "Align Right",
|
|
24
|
+
alignJustify: "Align Justify",
|
|
25
|
+
link: "Add Link",
|
|
26
|
+
image: "Add Image",
|
|
27
|
+
horizontalRule: "Horizontal Rule",
|
|
28
|
+
table: "Insert Table",
|
|
29
|
+
undo: "Undo",
|
|
30
|
+
redo: "Redo",
|
|
31
|
+
clear: "Clear",
|
|
32
|
+
textColor: "Text Color",
|
|
33
|
+
customColor: "Custom Color",
|
|
34
|
+
presets: "Presets",
|
|
35
|
+
},
|
|
36
|
+
bubbleMenu: {
|
|
37
|
+
bold: "Bold",
|
|
38
|
+
italic: "Italic",
|
|
39
|
+
underline: "Underline",
|
|
40
|
+
strike: "Strikethrough",
|
|
41
|
+
code: "Code",
|
|
42
|
+
superscript: "Superscript",
|
|
43
|
+
subscript: "Subscript",
|
|
44
|
+
highlight: "Highlight",
|
|
45
|
+
highlightPicker: "Background Color",
|
|
46
|
+
textColor: "Text Color",
|
|
47
|
+
link: "Link",
|
|
48
|
+
addLink: "Add Link",
|
|
49
|
+
editLink: "Edit Link",
|
|
50
|
+
removeLink: "Remove Link",
|
|
51
|
+
linkUrl: "Link URL",
|
|
52
|
+
linkText: "Link Text",
|
|
53
|
+
openLink: "Open Link",
|
|
54
|
+
customColor: "Custom Color",
|
|
55
|
+
presets: "Presets",
|
|
56
|
+
},
|
|
57
|
+
slashCommands: {
|
|
58
|
+
heading1: {
|
|
59
|
+
title: "Heading 1",
|
|
60
|
+
description: "Large section heading",
|
|
61
|
+
keywords: ["heading", "h1", "title", "1", "header"],
|
|
62
|
+
},
|
|
63
|
+
heading2: {
|
|
64
|
+
title: "Heading 2",
|
|
65
|
+
description: "Medium section heading",
|
|
66
|
+
keywords: ["heading", "h2", "title", "2", "header"],
|
|
67
|
+
},
|
|
68
|
+
heading3: {
|
|
69
|
+
title: "Heading 3",
|
|
70
|
+
description: "Small section heading",
|
|
71
|
+
keywords: ["heading", "h3", "title", "3", "header"],
|
|
72
|
+
},
|
|
73
|
+
bulletList: {
|
|
74
|
+
title: "Bullet List",
|
|
75
|
+
description: "Create a bullet list",
|
|
76
|
+
keywords: ["bullet", "list", "ul", "unordered"],
|
|
77
|
+
},
|
|
78
|
+
orderedList: {
|
|
79
|
+
title: "Ordered List",
|
|
80
|
+
description: "Create an ordered list",
|
|
81
|
+
keywords: ["ordered", "list", "ol", "numbered"],
|
|
82
|
+
},
|
|
83
|
+
blockquote: {
|
|
84
|
+
title: "Blockquote",
|
|
85
|
+
description: "Add a blockquote",
|
|
86
|
+
keywords: ["quote", "blockquote", "citation"],
|
|
87
|
+
},
|
|
88
|
+
code: {
|
|
89
|
+
title: "Code Block",
|
|
90
|
+
description: "Add a code block",
|
|
91
|
+
keywords: ["code", "codeblock", "pre", "programming"],
|
|
92
|
+
},
|
|
93
|
+
image: {
|
|
94
|
+
title: "Image",
|
|
95
|
+
description: "Insert an image",
|
|
96
|
+
keywords: ["image", "photo", "picture", "img"],
|
|
97
|
+
},
|
|
98
|
+
horizontalRule: {
|
|
99
|
+
title: "Horizontal Rule",
|
|
100
|
+
description: "Add a horizontal line",
|
|
101
|
+
keywords: ["hr", "horizontal", "rule", "line", "separator"],
|
|
102
|
+
},
|
|
103
|
+
table: {
|
|
104
|
+
title: "Table",
|
|
105
|
+
description: "Insert a table",
|
|
106
|
+
keywords: ["table", "grid", "data", "rows", "columns"],
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
table: {
|
|
110
|
+
addRowBefore: "Add row before",
|
|
111
|
+
addRowAfter: "Add row after",
|
|
112
|
+
deleteRow: "Delete row",
|
|
113
|
+
addColumnBefore: "Add column before",
|
|
114
|
+
addColumnAfter: "Add column after",
|
|
115
|
+
deleteColumn: "Delete column",
|
|
116
|
+
deleteTable: "Delete table",
|
|
117
|
+
toggleHeaderRow: "Toggle header row",
|
|
118
|
+
toggleHeaderColumn: "Toggle header column",
|
|
119
|
+
mergeCells: "Merge cells",
|
|
120
|
+
splitCell: "Split cell",
|
|
121
|
+
},
|
|
122
|
+
imageUpload: {
|
|
123
|
+
selectImage: "Select Image",
|
|
124
|
+
loadError: "Error loading image",
|
|
125
|
+
uploadingImage: "Uploading image...",
|
|
126
|
+
uploadProgress: "Upload Progress",
|
|
127
|
+
uploadError: "Upload Error",
|
|
128
|
+
uploadSuccess: "Upload Success",
|
|
129
|
+
imageTooLarge: "Image too large",
|
|
130
|
+
invalidFileType: "Invalid file type",
|
|
131
|
+
dragDropText: "Drag and drop images here",
|
|
132
|
+
changeImage: "Change Image",
|
|
133
|
+
deleteImage: "Delete Image",
|
|
134
|
+
resizeSmall: "Small",
|
|
135
|
+
resizeMedium: "Medium",
|
|
136
|
+
resizeLarge: "Large",
|
|
137
|
+
resizeOriginal: "Original",
|
|
138
|
+
resizing: "Resizing...",
|
|
139
|
+
compressing: "Compressing...",
|
|
140
|
+
compressionError: "Error during compression",
|
|
141
|
+
validating: "Validating file...",
|
|
142
|
+
uploadingToServer: "Uploading to server...",
|
|
143
|
+
replacingImage: "Replacing image...",
|
|
144
|
+
insertingImage: "Inserting into editor...",
|
|
145
|
+
noFileSelected: "No image file selected",
|
|
146
|
+
selectionCancelled: "Selection cancelled",
|
|
147
|
+
},
|
|
148
|
+
editor: {
|
|
149
|
+
placeholder: "Start typing...",
|
|
150
|
+
character: "character",
|
|
151
|
+
word: "word",
|
|
152
|
+
linkPrompt: "Enter link URL",
|
|
153
|
+
linkUrlPrompt: "Enter URL",
|
|
154
|
+
confirmDelete: "Are you sure you want to delete this?",
|
|
155
|
+
toggleEdit: "Switch to Edit Mode",
|
|
156
|
+
viewMode: "Switch to View Mode",
|
|
157
|
+
},
|
|
158
|
+
common: {
|
|
159
|
+
cancel: "Cancel",
|
|
160
|
+
confirm: "Confirm",
|
|
161
|
+
apply: "Apply",
|
|
162
|
+
delete: "Delete",
|
|
163
|
+
save: "Save",
|
|
164
|
+
close: "Close",
|
|
165
|
+
loading: "Loading",
|
|
166
|
+
error: "Error",
|
|
167
|
+
success: "Success",
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
const FRENCH_TRANSLATIONS = {
|
|
171
|
+
toolbar: {
|
|
172
|
+
bold: "Gras",
|
|
173
|
+
italic: "Italique",
|
|
174
|
+
underline: "Souligné",
|
|
175
|
+
strike: "Barré",
|
|
176
|
+
code: "Code en ligne",
|
|
177
|
+
codeBlock: "Bloc de code",
|
|
178
|
+
superscript: "Exposant",
|
|
179
|
+
subscript: "Indice",
|
|
180
|
+
highlight: "Surligner",
|
|
181
|
+
highlightPicker: "Couleur de fond",
|
|
182
|
+
heading1: "Titre 1",
|
|
183
|
+
heading2: "Titre 2",
|
|
184
|
+
heading3: "Titre 3",
|
|
185
|
+
bulletList: "Liste à puces",
|
|
186
|
+
orderedList: "Liste numérotée",
|
|
187
|
+
blockquote: "Citation",
|
|
188
|
+
alignLeft: "Aligner à gauche",
|
|
189
|
+
alignCenter: "Centrer",
|
|
190
|
+
alignRight: "Aligner à droite",
|
|
191
|
+
alignJustify: "Justifier",
|
|
192
|
+
link: "Ajouter un lien",
|
|
193
|
+
image: "Ajouter une image",
|
|
194
|
+
horizontalRule: "Ligne horizontale",
|
|
195
|
+
table: "Insérer un tableau",
|
|
196
|
+
undo: "Annuler",
|
|
197
|
+
redo: "Refaire",
|
|
198
|
+
clear: "Vider",
|
|
199
|
+
textColor: "Couleur texte",
|
|
200
|
+
customColor: "Couleur personnalisée",
|
|
201
|
+
presets: "Préréglages",
|
|
202
|
+
},
|
|
203
|
+
bubbleMenu: {
|
|
204
|
+
bold: "Gras",
|
|
205
|
+
italic: "Italique",
|
|
206
|
+
underline: "Souligné",
|
|
207
|
+
strike: "Barré",
|
|
208
|
+
code: "Code",
|
|
209
|
+
superscript: "Exposant",
|
|
210
|
+
subscript: "Indice",
|
|
211
|
+
highlight: "Surligner",
|
|
212
|
+
highlightPicker: "Couleur de fond",
|
|
213
|
+
textColor: "Couleur texte",
|
|
214
|
+
link: "Lien",
|
|
215
|
+
addLink: "Ajouter un lien",
|
|
216
|
+
editLink: "Modifier le lien",
|
|
217
|
+
removeLink: "Supprimer le lien",
|
|
218
|
+
linkUrl: "URL du lien",
|
|
219
|
+
linkText: "Texte du lien",
|
|
220
|
+
openLink: "Ouvrir le lien",
|
|
221
|
+
customColor: "Couleur personnalisée",
|
|
222
|
+
presets: "Préréglages",
|
|
223
|
+
},
|
|
224
|
+
slashCommands: {
|
|
225
|
+
heading1: {
|
|
226
|
+
title: "Titre 1",
|
|
227
|
+
description: "Grand titre de section",
|
|
228
|
+
keywords: ["heading", "h1", "titre", "title", "1", "header"],
|
|
229
|
+
},
|
|
230
|
+
heading2: {
|
|
231
|
+
title: "Titre 2",
|
|
232
|
+
description: "Titre de sous-section",
|
|
233
|
+
keywords: ["heading", "h2", "titre", "title", "2", "header"],
|
|
234
|
+
},
|
|
235
|
+
heading3: {
|
|
236
|
+
title: "Titre 3",
|
|
237
|
+
description: "Petit titre",
|
|
238
|
+
keywords: ["heading", "h3", "titre", "title", "3", "header"],
|
|
239
|
+
},
|
|
240
|
+
bulletList: {
|
|
241
|
+
title: "Liste à puces",
|
|
242
|
+
description: "Créer une liste à puces",
|
|
243
|
+
keywords: ["bullet", "list", "liste", "puces", "ul"],
|
|
244
|
+
},
|
|
245
|
+
orderedList: {
|
|
246
|
+
title: "Liste numérotée",
|
|
247
|
+
description: "Créer une liste numérotée",
|
|
248
|
+
keywords: ["numbered", "list", "liste", "numérotée", "ol", "ordered"],
|
|
249
|
+
},
|
|
250
|
+
blockquote: {
|
|
251
|
+
title: "Citation",
|
|
252
|
+
description: "Ajouter une citation",
|
|
253
|
+
keywords: ["quote", "blockquote", "citation"],
|
|
254
|
+
},
|
|
255
|
+
code: {
|
|
256
|
+
title: "Bloc de code",
|
|
257
|
+
description: "Ajouter un bloc de code",
|
|
258
|
+
keywords: ["code", "codeblock", "pre", "programmation"],
|
|
259
|
+
},
|
|
260
|
+
image: {
|
|
261
|
+
title: "Image",
|
|
262
|
+
description: "Insérer une image",
|
|
263
|
+
keywords: ["image", "photo", "picture", "img"],
|
|
264
|
+
},
|
|
265
|
+
horizontalRule: {
|
|
266
|
+
title: "Ligne horizontale",
|
|
267
|
+
description: "Ajouter une ligne de séparation",
|
|
268
|
+
keywords: ["hr", "horizontal", "rule", "ligne", "séparation"],
|
|
269
|
+
},
|
|
270
|
+
table: {
|
|
271
|
+
title: "Tableau",
|
|
272
|
+
description: "Insérer un tableau",
|
|
273
|
+
keywords: ["table", "tableau", "grid", "grille", "data", "données", "rows", "colonnes"],
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
table: {
|
|
277
|
+
addRowBefore: "Ajouter une ligne avant",
|
|
278
|
+
addRowAfter: "Ajouter une ligne après",
|
|
279
|
+
deleteRow: "Supprimer la ligne",
|
|
280
|
+
addColumnBefore: "Ajouter une colonne avant",
|
|
281
|
+
addColumnAfter: "Ajouter une colonne après",
|
|
282
|
+
deleteColumn: "Supprimer la colonne",
|
|
283
|
+
deleteTable: "Supprimer le tableau",
|
|
284
|
+
toggleHeaderRow: "Basculer ligne d'en-tête",
|
|
285
|
+
toggleHeaderColumn: "Basculer colonne d'en-tête",
|
|
286
|
+
mergeCells: "Fusionner les cellules",
|
|
287
|
+
splitCell: "Diviser la cellule",
|
|
288
|
+
},
|
|
289
|
+
imageUpload: {
|
|
290
|
+
selectImage: "Sélectionner une image",
|
|
291
|
+
loadError: "Erreur de chargement de l'image",
|
|
292
|
+
uploadingImage: "Téléchargement de l'image...",
|
|
293
|
+
uploadProgress: "Progression du téléchargement",
|
|
294
|
+
uploadError: "Erreur de téléchargement",
|
|
295
|
+
uploadSuccess: "Téléchargement réussi",
|
|
296
|
+
imageTooLarge: "Image trop volumineuse",
|
|
297
|
+
invalidFileType: "Type de fichier invalide",
|
|
298
|
+
dragDropText: "Glissez et déposez des images ici",
|
|
299
|
+
changeImage: "Changer l'image",
|
|
300
|
+
deleteImage: "Supprimer l'image",
|
|
301
|
+
resizeSmall: "Petit",
|
|
302
|
+
resizeMedium: "Moyen",
|
|
303
|
+
resizeLarge: "Grand",
|
|
304
|
+
resizeOriginal: "Original",
|
|
305
|
+
resizing: "Redimensionnement...",
|
|
306
|
+
compressing: "Compression...",
|
|
307
|
+
compressionError: "Erreur lors de la compression",
|
|
308
|
+
validating: "Validation du fichier...",
|
|
309
|
+
uploadingToServer: "Upload vers le serveur...",
|
|
310
|
+
replacingImage: "Remplacement de l'image...",
|
|
311
|
+
insertingImage: "Insertion dans l'éditeur...",
|
|
312
|
+
noFileSelected: "Aucun fichier image sélectionné",
|
|
313
|
+
selectionCancelled: "Sélection annulée",
|
|
314
|
+
},
|
|
315
|
+
editor: {
|
|
316
|
+
placeholder: "Commencez à écrire...",
|
|
317
|
+
character: "caractère",
|
|
318
|
+
word: "mot",
|
|
319
|
+
linkPrompt: "Entrez l'URL du lien",
|
|
320
|
+
linkUrlPrompt: "Entrez l'URL",
|
|
321
|
+
confirmDelete: "Êtes-vous sûr de vouloir supprimer ceci ?",
|
|
322
|
+
toggleEdit: "Passer en mode édition",
|
|
323
|
+
viewMode: "Passer en mode affichage",
|
|
324
|
+
},
|
|
325
|
+
common: {
|
|
326
|
+
cancel: "Annuler",
|
|
327
|
+
confirm: "Confirmer",
|
|
328
|
+
apply: "Appliquer",
|
|
329
|
+
delete: "Supprimer",
|
|
330
|
+
save: "Sauvegarder",
|
|
331
|
+
close: "Fermer",
|
|
332
|
+
loading: "Chargement",
|
|
333
|
+
error: "Erreur",
|
|
334
|
+
success: "Succès",
|
|
335
|
+
},
|
|
336
|
+
};
|
|
337
|
+
export class AteI18nService {
|
|
338
|
+
constructor() {
|
|
339
|
+
this._currentLocale = signal("en");
|
|
340
|
+
this._translations = signal({
|
|
341
|
+
en: ENGLISH_TRANSLATIONS,
|
|
342
|
+
fr: FRENCH_TRANSLATIONS,
|
|
343
|
+
});
|
|
344
|
+
// Public signals
|
|
345
|
+
this.currentLocale = this._currentLocale.asReadonly();
|
|
346
|
+
/** All loaded translations (useful for dynamic key access) */
|
|
347
|
+
this.allTranslations = this._translations.asReadonly();
|
|
348
|
+
this.translations = computed(() => this._translations()[this._currentLocale()]);
|
|
349
|
+
// Fast translation methods
|
|
350
|
+
this.t = computed(() => this.translations());
|
|
351
|
+
this.toolbar = computed(() => this.translations().toolbar);
|
|
352
|
+
this.bubbleMenu = computed(() => this.translations().bubbleMenu);
|
|
353
|
+
this.slashCommands = computed(() => this.translations().slashCommands);
|
|
354
|
+
this.table = computed(() => this.translations().table);
|
|
355
|
+
this.imageUpload = computed(() => this.translations().imageUpload);
|
|
356
|
+
this.editor = computed(() => this.translations().editor);
|
|
357
|
+
this.common = computed(() => this.translations().common);
|
|
358
|
+
// Automatically detect browser language
|
|
359
|
+
this.detectBrowserLanguage();
|
|
360
|
+
}
|
|
361
|
+
setLocale(locale) {
|
|
362
|
+
this._currentLocale.set(locale);
|
|
363
|
+
}
|
|
364
|
+
autoDetectLocale() {
|
|
365
|
+
this.detectBrowserLanguage();
|
|
366
|
+
}
|
|
367
|
+
getSupportedLocales() {
|
|
368
|
+
return Object.keys(this._translations());
|
|
369
|
+
}
|
|
370
|
+
addTranslations(locale, translations) {
|
|
371
|
+
this._translations.update(current => {
|
|
372
|
+
const existing = current[locale] || ENGLISH_TRANSLATIONS;
|
|
373
|
+
return {
|
|
374
|
+
...current,
|
|
375
|
+
[locale]: {
|
|
376
|
+
...existing,
|
|
377
|
+
...translations,
|
|
378
|
+
},
|
|
379
|
+
};
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
detectBrowserLanguage() {
|
|
383
|
+
const browserLang = navigator.language.toLowerCase();
|
|
384
|
+
if (browserLang.startsWith("fr")) {
|
|
385
|
+
this._currentLocale.set("fr");
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
this._currentLocale.set("en");
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
// Utility methods for components
|
|
392
|
+
getToolbarTitle(key) {
|
|
393
|
+
return this.translations().toolbar[key];
|
|
394
|
+
}
|
|
395
|
+
getBubbleMenuTitle(key) {
|
|
396
|
+
return this.translations().bubbleMenu[key];
|
|
397
|
+
}
|
|
398
|
+
getSlashCommand(key) {
|
|
399
|
+
return this.translations().slashCommands[key];
|
|
400
|
+
}
|
|
401
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteI18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
402
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteI18nService, providedIn: "root" }); }
|
|
403
|
+
}
|
|
404
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteI18nService, decorators: [{
|
|
405
|
+
type: Injectable,
|
|
406
|
+
args: [{
|
|
407
|
+
providedIn: "root",
|
|
408
|
+
}]
|
|
409
|
+
}], ctorParameters: () => [] });
|
|
410
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWkxOG4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL3NlcnZpY2VzL2F0ZS1pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXlMN0QsTUFBTSxvQkFBb0IsR0FBb0I7SUFDNUMsT0FBTyxFQUFFO1FBQ1AsSUFBSSxFQUFFLE1BQU07UUFDWixNQUFNLEVBQUUsUUFBUTtRQUNoQixTQUFTLEVBQUUsV0FBVztRQUN0QixNQUFNLEVBQUUsZUFBZTtRQUN2QixJQUFJLEVBQUUsYUFBYTtRQUNuQixTQUFTLEVBQUUsWUFBWTtRQUN2QixXQUFXLEVBQUUsYUFBYTtRQUMxQixTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsV0FBVztRQUN0QixlQUFlLEVBQUUsa0JBQWtCO1FBQ25DLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLFdBQVcsRUFBRSxjQUFjO1FBQzNCLFVBQVUsRUFBRSxZQUFZO1FBQ3hCLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFdBQVcsRUFBRSxjQUFjO1FBQzNCLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLFlBQVksRUFBRSxlQUFlO1FBQzdCLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLGNBQWMsRUFBRSxpQkFBaUI7UUFDakMsS0FBSyxFQUFFLGNBQWM7UUFDckIsSUFBSSxFQUFFLE1BQU07UUFDWixJQUFJLEVBQUUsTUFBTTtRQUNaLEtBQUssRUFBRSxPQUFPO1FBQ2QsU0FBUyxFQUFFLFlBQVk7UUFDdkIsV0FBVyxFQUFFLGNBQWM7UUFDM0IsT0FBTyxF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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIGNvbXB1dGVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IHR5cGUgU3VwcG9ydGVkTG9jYWxlID0gXCJlblwiIHwgXCJmclwiIHwgKHN0cmluZyAmIHt9KTtcblxuZXhwb3J0IGludGVyZmFjZSBBdGVUcmFuc2xhdGlvbnMge1xuICAvLyBUb29sYmFyXG4gIHRvb2xiYXI6IHtcbiAgICBib2xkOiBzdHJpbmc7XG4gICAgaXRhbGljOiBzdHJpbmc7XG4gICAgdW5kZXJsaW5lOiBzdHJpbmc7XG4gICAgc3RyaWtlOiBzdHJpbmc7XG4gICAgY29kZTogc3RyaW5nO1xuICAgIGNvZGVCbG9jazogc3RyaW5nO1xuICAgIHN1cGVyc2NyaXB0OiBzdHJpbmc7XG4gICAgc3Vic2NyaXB0OiBzdHJpbmc7XG4gICAgaGlnaGxpZ2h0OiBzdHJpbmc7XG4gICAgaGlnaGxpZ2h0UGlja2VyOiBzdHJpbmc7XG4gICAgaGVhZGluZzE6IHN0cmluZztcbiAgICBoZWFkaW5nMjogc3RyaW5nO1xuICAgIGhlYWRpbmczOiBzdHJpbmc7XG4gICAgYnVsbGV0TGlzdDogc3RyaW5nO1xuICAgIG9yZGVyZWRMaXN0OiBzdHJpbmc7XG4gICAgYmxvY2txdW90ZTogc3RyaW5nO1xuICAgIGFsaWduTGVmdDogc3RyaW5nO1xuICAgIGFsaWduQ2VudGVyOiBzdHJpbmc7XG4gICAgYWxpZ25SaWdodDogc3RyaW5nO1xuICAgIGFsaWduSnVzdGlmeTogc3RyaW5nO1xuICAgIGxpbms6IHN0cmluZztcbiAgICBpbWFnZTogc3RyaW5nO1xuICAgIGhvcml6b250YWxSdWxlOiBzdHJpbmc7XG4gICAgdGFibGU6IHN0cmluZztcbiAgICB1bmRvOiBzdHJpbmc7XG4gICAgcmVkbzogc3RyaW5nO1xuICAgIGNsZWFyOiBzdHJpbmc7XG4gICAgdGV4dENvbG9yOiBzdHJpbmc7XG4gICAgY3VzdG9tQ29sb3I6IHN0cmluZztcbiAgICBwcmVzZXRzOiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gQnViYmxlIE1lbnVcbiAgYnViYmxlTWVudToge1xuICAgIGJvbGQ6IHN0cmluZztcbiAgICBpdGFsaWM6IHN0cmluZztcbiAgICB1bmRlcmxpbmU6IHN0cmluZztcbiAgICBzdHJpa2U6IHN0cmluZztcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgc3VwZXJzY3JpcHQ6IHN0cmluZztcbiAgICBzdWJzY3JpcHQ6IHN0cmluZztcbiAgICBoaWdobGlnaHQ6IHN0cmluZztcbiAgICBoaWdobGlnaHRQaWNrZXI6IHN0cmluZztcbiAgICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgICBsaW5rOiBzdHJpbmc7XG4gICAgYWRkTGluazogc3RyaW5nO1xuICAgIGVkaXRMaW5rOiBzdHJpbmc7XG4gICAgcmVtb3ZlTGluazogc3RyaW5nO1xuICAgIGxpbmtVcmw6IHN0cmluZztcbiAgICBsaW5rVGV4dDogc3RyaW5nO1xuICAgIG9wZW5MaW5rOiBzdHJpbmc7XG4gICAgY3VzdG9tQ29sb3I6IHN0cmluZztcbiAgICBwcmVzZXRzOiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gU2xhc2ggQ29tbWFuZHNcbiAgc2xhc2hDb21tYW5kczoge1xuICAgIGhlYWRpbmcxOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGhlYWRpbmcyOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGhlYWRpbmczOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGJ1bGxldExpc3Q6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgb3JkZXJlZExpc3Q6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgYmxvY2txdW90ZToge1xuICAgICAgdGl0bGU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICBrZXl3b3Jkczogc3RyaW5nW107XG4gICAgfTtcbiAgICBjb2RlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGltYWdlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGhvcml6b250YWxSdWxlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIHRhYmxlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRhYmxlIEFjdGlvbnNcbiAgdGFibGU6IHtcbiAgICBhZGRSb3dCZWZvcmU6IHN0cmluZztcbiAgICBhZGRSb3dBZnRlcjogc3RyaW5nO1xuICAgIGRlbGV0ZVJvdzogc3RyaW5nO1xuICAgIGFkZENvbHVtbkJlZm9yZTogc3RyaW5nO1xuICAgIGFkZENvbHVtbkFmdGVyOiBzdHJpbmc7XG4gICAgZGVsZXRlQ29sdW1uOiBzdHJpbmc7XG4gICAgZGVsZXRlVGFibGU6IHN0cmluZztcbiAgICB0b2dnbGVIZWFkZXJSb3c6IHN0cmluZztcbiAgICB0b2dnbGVIZWFkZXJDb2x1bW46IHN0cmluZztcbiAgICBtZXJnZUNlbGxzOiBzdHJpbmc7XG4gICAgc3BsaXRDZWxsOiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gSW1hZ2UgVXBsb2FkXG4gIGltYWdlVXBsb2FkOiB7XG4gICAgc2VsZWN0SW1hZ2U6IHN0cmluZztcbiAgICBsb2FkRXJyb3I6IHN0cmluZztcbiAgICB1cGxvYWRpbmdJbWFnZTogc3RyaW5nO1xuICAgIHVwbG9hZFByb2dyZXNzOiBzdHJpbmc7XG4gICAgdXBsb2FkRXJyb3I6IHN0cmluZztcbiAgICB1cGxvYWRTdWNjZXNzOiBzdHJpbmc7XG4gICAgaW1hZ2VUb29MYXJnZTogc3RyaW5nO1xuICAgIGludmFsaWRGaWxlVHlwZTogc3RyaW5nO1xuICAgIGRyYWdEcm9wVGV4dDogc3RyaW5nO1xuICAgIGNoYW5nZUltYWdlOiBzdHJpbmc7XG4gICAgZGVsZXRlSW1hZ2U6IHN0cmluZztcbiAgICByZXNpemVTbWFsbDogc3RyaW5nO1xuICAgIHJlc2l6ZU1lZGl1bTogc3RyaW5nO1xuICAgIHJlc2l6ZUxhcmdlOiBzdHJpbmc7XG4gICAgcmVzaXplT3JpZ2luYWw6IHN0cmluZztcbiAgICByZXNpemluZzogc3RyaW5nO1xuICAgIGNvbXByZXNzaW5nOiBzdHJpbmc7XG4gICAgY29tcHJlc3Npb25FcnJvcjogc3RyaW5nO1xuICAgIHZhbGlkYXRpbmc6IHN0cmluZztcbiAgICB1cGxvYWRpbmdUb1NlcnZlcjogc3RyaW5nO1xuICAgIHJlcGxhY2luZ0ltYWdlOiBzdHJpbmc7XG4gICAgaW5zZXJ0aW5nSW1hZ2U6IHN0cmluZztcbiAgICBub0ZpbGVTZWxlY3RlZDogc3RyaW5nO1xuICAgIHNlbGVjdGlvbkNhbmNlbGxlZDogc3RyaW5nO1xuICB9O1xuXG4gIC8vIEVkaXRvclxuICBlZGl0b3I6IHtcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIGNoYXJhY3Rlcjogc3RyaW5nO1xuICAgIHdvcmQ6IHN0cmluZztcbiAgICBsaW5rUHJvbXB0OiBzdHJpbmc7XG4gICAgbGlua1VybFByb21wdDogc3RyaW5nO1xuICAgIGNvbmZpcm1EZWxldGU6IHN0cmluZztcbiAgICB0b2dnbGVFZGl0OiBzdHJpbmc7XG4gICAgdmlld01vZGU6IHN0cmluZztcbiAgfTtcblxuICAvLyBDb21tb25cbiAgY29tbW9uOiB7XG4gICAgY2FuY2VsOiBzdHJpbmc7XG4gICAgY29uZmlybTogc3RyaW5nO1xuICAgIGFwcGx5OiBzdHJpbmc7XG4gICAgZGVsZXRlOiBzdHJpbmc7XG4gICAgc2F2ZTogc3RyaW5nO1xuICAgIGNsb3NlOiBzdHJpbmc7XG4gICAgbG9hZGluZzogc3RyaW5nO1xuICAgIGVycm9yOiBzdHJpbmc7XG4gICAgc3VjY2Vzczogc3RyaW5nO1xuICB9O1xufVxuXG5jb25zdCBFTkdMSVNIX1RSQU5TTEFUSU9OUzogQXRlVHJhbnNsYXRpb25zID0ge1xuICB0b29sYmFyOiB7XG4gICAgYm9sZDogXCJCb2xkXCIsXG4gICAgaXRhbGljOiBcIkl0YWxpY1wiLFxuICAgIHVuZGVybGluZTogXCJVbmRlcmxpbmVcIixcbiAgICBzdHJpa2U6IFwiU3RyaWtldGhyb3VnaFwiLFxuICAgIGNvZGU6IFwiSW5saW5lIENvZGVcIixcbiAgICBjb2RlQmxvY2s6IFwiQ29kZSBCbG9ja1wiLFxuICAgIHN1cGVyc2NyaXB0OiBcIlN1cGVyc2NyaXB0XCIsXG4gICAgc3Vic2NyaXB0OiBcIlN1YnNjcmlwdFwiLFxuICAgIGhpZ2hsaWdodDogXCJIaWdobGlnaHRcIixcbiAgICBoaWdobGlnaHRQaWNrZXI6IFwiQmFja2dyb3VuZCBDb2xvclwiLFxuICAgIGhlYWRpbmcxOiBcIkhlYWRpbmcgMVwiLFxuICAgIGhlYWRpbmcyOiBcIkhlYWRpbmcgMlwiLFxuICAgIGhlYWRpbmczOiBcIkhlYWRpbmcgM1wiLFxuICAgIGJ1bGxldExpc3Q6IFwiQnVsbGV0IExpc3RcIixcbiAgICBvcmRlcmVkTGlzdDogXCJPcmRlcmVkIExpc3RcIixcbiAgICBibG9ja3F1b3RlOiBcIkJsb2NrcXVvdGVcIixcbiAgICBhbGlnbkxlZnQ6IFwiQWxpZ24gTGVmdFwiLFxuICAgIGFsaWduQ2VudGVyOiBcIkFsaWduIENlbnRlclwiLFxuICAgIGFsaWduUmlnaHQ6IFwiQWxpZ24gUmlnaHRcIixcbiAgICBhbGlnbkp1c3RpZnk6IFwiQWxpZ24gSnVzdGlmeVwiLFxuICAgIGxpbms6IFwiQWRkIExpbmtcIixcbiAgICBpbWFnZTogXCJBZGQgSW1hZ2VcIixcbiAgICBob3Jpem9udGFsUnVsZTogXCJIb3Jpem9udGFsIFJ1bGVcIixcbiAgICB0YWJsZTogXCJJbnNlcnQgVGFibGVcIixcbiAgICB1bmRvOiBcIlVuZG9cIixcbiAgICByZWRvOiBcIlJlZG9cIixcbiAgICBjbGVhcjogXCJDbGVhclwiLFxuICAgIHRleHRDb2xvcjogXCJUZXh0IENvbG9yXCIsXG4gICAgY3VzdG9tQ29sb3I6IFwiQ3VzdG9tIENvbG9yXCIsXG4gICAgcHJlc2V0czogXCJQcmVzZXRzXCIsXG4gIH0sXG4gIGJ1YmJsZU1lbnU6IHtcbiAgICBib2xkOiBcIkJvbGRcIixcbiAgICBpdGFsaWM6IFwiSXRhbGljXCIsXG4gICAgdW5kZXJsaW5lOiBcIlVuZGVybGluZVwiLFxuICAgIHN0cmlrZTogXCJTdHJpa2V0aHJvdWdoXCIsXG4gICAgY29kZTogXCJDb2RlXCIsXG4gICAgc3VwZXJzY3JpcHQ6IFwiU3VwZXJzY3JpcHRcIixcbiAgICBzdWJzY3JpcHQ6IFwiU3Vic2NyaXB0XCIsXG4gICAgaGlnaGxpZ2h0OiBcIkhpZ2hsaWdodFwiLFxuICAgIGhpZ2hsaWdodFBpY2tlcjogXCJCYWNrZ3JvdW5kIENvbG9yXCIsXG4gICAgdGV4dENvbG9yOiBcIlRleHQgQ29sb3JcIixcbiAgICBsaW5rOiBcIkxpbmtcIixcbiAgICBhZGRMaW5rOiBcIkFkZCBMaW5rXCIsXG4gICAgZWRpdExpbms6IFwiRWRpdCBMaW5rXCIsXG4gICAgcmVtb3ZlTGluazogXCJSZW1vdmUgTGlua1wiLFxuICAgIGxpbmtVcmw6IFwiTGluayBVUkxcIixcbiAgICBsaW5rVGV4dDogXCJMaW5rIFRleHRcIixcbiAgICBvcGVuTGluazogXCJPcGVuIExpbmtcIixcbiAgICBjdXN0b21Db2xvcjogXCJDdXN0b20gQ29sb3JcIixcbiAgICBwcmVzZXRzOiBcIlByZXNldHNcIixcbiAgfSxcbiAgc2xhc2hDb21tYW5kczoge1xuICAgIGhlYWRpbmcxOiB7XG4gICAgICB0aXRsZTogXCJIZWFkaW5nIDFcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxhcmdlIHNlY3Rpb24gaGVhZGluZ1wiLFxuICAgICAga2V5d29yZHM6IFtcImhlYWRpbmdcIiwgXCJoMVwiLCBcInRpdGxlXCIsIFwiMVwiLCBcImhlYWRlclwiXSxcbiAgICB9LFxuICAgIGhlYWRpbmcyOiB7XG4gICAgICB0aXRsZTogXCJIZWFkaW5nIDJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk1lZGl1bSBzZWN0aW9uIGhlYWRpbmdcIixcbiAgICAgIGtleXdvcmRzOiBbXCJoZWFkaW5nXCIsIFwiaDJcIiwgXCJ0aXRsZVwiLCBcIjJcIiwgXCJoZWFkZXJcIl0sXG4gICAgfSxcbiAgICBoZWFkaW5nMzoge1xuICAgICAgdGl0bGU6IFwiSGVhZGluZyAzXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTbWFsbCBzZWN0aW9uIGhlYWRpbmdcIixcbiAgICAgIGtleXdvcmRzOiBbXCJoZWFkaW5nXCIsIFwiaDNcIiwgXCJ0aXRsZVwiLCBcIjNcIiwgXCJoZWFkZXJcIl0sXG4gICAgfSxcbiAgICBidWxsZXRMaXN0OiB7XG4gICAgICB0aXRsZTogXCJCdWxsZXQgTGlzdFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ3JlYXRlIGEgYnVsbGV0IGxpc3RcIixcbiAgICAgIGtleXdvcmRzOiBbXCJidWxsZXRcIiwgXCJsaXN0XCIsIFwidWxcIiwgXCJ1bm9yZGVyZWRcIl0sXG4gICAgfSxcbiAgICBvcmRlcmVkTGlzdDoge1xuICAgICAgdGl0bGU6IFwiT3JkZXJlZCBMaXN0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDcmVhdGUgYW4gb3JkZXJlZCBsaXN0XCIsXG4gICAgICBrZXl3b3JkczogW1wib3JkZXJlZFwiLCBcImxpc3RcIiwgXCJvbFwiLCBcIm51bWJlcmVkXCJdLFxuICAgIH0sXG4gICAgYmxvY2txdW90ZToge1xuICAgICAgdGl0bGU6IFwiQmxvY2txdW90ZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQWRkIGEgYmxvY2txdW90ZVwiLFxuICAgICAga2V5d29yZHM6IFtcInF1b3RlXCIsIFwiYmxvY2txdW90ZVwiLCBcImNpdGF0aW9uXCJdLFxuICAgIH0sXG4gICAgY29kZToge1xuICAgICAgdGl0bGU6IFwiQ29kZSBCbG9ja1wiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQWRkIGEgY29kZSBibG9ja1wiLFxuICAgICAga2V5d29yZHM6IFtcImNvZGVcIiwgXCJjb2RlYmxvY2tcIiwgXCJwcmVcIiwgXCJwcm9ncmFtbWluZ1wiXSxcbiAgICB9LFxuICAgIGltYWdlOiB7XG4gICAgICB0aXRsZTogXCJJbWFnZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5zZXJ0IGFuIGltYWdlXCIsXG4gICAgICBrZXl3b3JkczogW1wiaW1hZ2VcIiwgXCJwaG90b1wiLCBcInBpY3R1cmVcIiwgXCJpbWdcIl0sXG4gICAgfSxcbiAgICBob3Jpem9udGFsUnVsZToge1xuICAgICAgdGl0bGU6IFwiSG9yaXpvbnRhbCBSdWxlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBZGQgYSBob3Jpem9udGFsIGxpbmVcIixcbiAgICAgIGtleXdvcmRzOiBbXCJoclwiLCBcImhvcml6b250YWxcIiwgXCJydWxlXCIsIFwibGluZVwiLCBcInNlcGFyYXRvclwiXSxcbiAgICB9LFxuICAgIHRhYmxlOiB7XG4gICAgICB0aXRsZTogXCJUYWJsZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5zZXJ0IGEgdGFibGVcIixcbiAgICAgIGtleXdvcmRzOiBbXCJ0YWJsZVwiLCBcImdyaWRcIiwgXCJkYXRhXCIsIFwicm93c1wiLCBcImNvbHVtbnNcIl0sXG4gICAgfSxcbiAgfSxcbiAgdGFibGU6IHtcbiAgICBhZGRSb3dCZWZvcmU6IFwiQWRkIHJvdyBiZWZvcmVcIixcbiAgICBhZGRSb3dBZnRlcjogXCJBZGQgcm93IGFmdGVyXCIsXG4gICAgZGVsZXRlUm93OiBcIkRlbGV0ZSByb3dcIixcbiAgICBhZGRDb2x1bW5CZWZvcmU6IFwiQWRkIGNvbHVtbiBiZWZvcmVcIixcbiAgICBhZGRDb2x1bW5BZnRlcjogXCJBZGQgY29sdW1uIGFmdGVyXCIsXG4gICAgZGVsZXRlQ29sdW1uOiBcIkRlbGV0ZSBjb2x1bW5cIixcbiAgICBkZWxldGVUYWJsZTogXCJEZWxldGUgdGFibGVcIixcbiAgICB0b2dnbGVIZWFkZXJSb3c6IFwiVG9nZ2xlIGhlYWRlciByb3dcIixcbiAgICB0b2dnbGVIZWFkZXJDb2x1bW46IFwiVG9nZ2xlIGhlYWRlciBjb2x1bW5cIixcbiAgICBtZXJnZUNlbGxzOiBcIk1lcmdlIGNlbGxzXCIsXG4gICAgc3BsaXRDZWxsOiBcIlNwbGl0IGNlbGxcIixcbiAgfSxcbiAgaW1hZ2VVcGxvYWQ6IHtcbiAgICBzZWxlY3RJbWFnZTogXCJTZWxlY3QgSW1hZ2VcIixcbiAgICBsb2FkRXJyb3I6IFwiRXJyb3IgbG9hZGluZyBpbWFnZVwiLFxuICAgIHVwbG9hZGluZ0ltYWdlOiBcIlVwbG9hZGluZyBpbWFnZS4uLlwiLFxuICAgIHVwbG9hZFByb2dyZXNzOiBcIlVwbG9hZCBQcm9ncmVzc1wiLFxuICAgIHVwbG9hZEVycm9yOiBcIlVwbG9hZCBFcnJvclwiLFxuICAgIHVwbG9hZFN1Y2Nlc3M6IFwiVXBsb2FkIFN1Y2Nlc3NcIixcbiAgICBpbWFnZVRvb0xhcmdlOiBcIkltYWdlIHRvbyBsYXJnZVwiLFxuICAgIGludmFsaWRGaWxlVHlwZTogXCJJbnZhbGlkIGZpbGUgdHlwZVwiLFxuICAgIGRyYWdEcm9wVGV4dDogXCJEcmFnIGFuZCBkcm9wIGltYWdlcyBoZXJlXCIsXG4gICAgY2hhbmdlSW1hZ2U6IFwiQ2hhbmdlIEltYWdlXCIsXG4gICAgZGVsZXRlSW1hZ2U6IFwiRGVsZXRlIEltYWdlXCIsXG4gICAgcmVzaXplU21hbGw6IFwiU21hbGxcIixcbiAgICByZXNpemVNZWRpdW06IFwiTWVkaXVtXCIsXG4gICAgcmVzaXplTGFyZ2U6IFwiTGFyZ2VcIixcbiAgICByZXNpemVPcmlnaW5hbDogXCJPcmlnaW5hbFwiLFxuICAgIHJlc2l6aW5nOiBcIlJlc2l6aW5nLi4uXCIsXG4gICAgY29tcHJlc3Npbmc6IFwiQ29tcHJlc3NpbmcuLi5cIixcbiAgICBjb21wcmVzc2lvbkVycm9yOiBcIkVycm9yIGR1cmluZyBjb21wcmVzc2lvblwiLFxuICAgIHZhbGlkYXRpbmc6IFwiVmFsaWRhdGluZyBmaWxlLi4uXCIsXG4gICAgdXBsb2FkaW5nVG9TZXJ2ZXI6IFwiVXBsb2FkaW5nIHRvIHNlcnZlci4uLlwiLFxuICAgIHJlcGxhY2luZ0ltYWdlOiBcIlJlcGxhY2luZyBpbWFnZS4uLlwiLFxuICAgIGluc2VydGluZ0ltYWdlOiBcIkluc2VydGluZyBpbnRvIGVkaXRvci4uLlwiLFxuICAgIG5vRmlsZVNlbGVjdGVkOiBcIk5vIGltYWdlIGZpbGUgc2VsZWN0ZWRcIixcbiAgICBzZWxlY3Rpb25DYW5jZWxsZWQ6IFwiU2VsZWN0aW9uIGNhbmNlbGxlZFwiLFxuICB9LFxuICBlZGl0b3I6IHtcbiAgICBwbGFjZWhvbGRlcjogXCJTdGFydCB0eXBpbmcuLi5cIixcbiAgICBjaGFyYWN0ZXI6IFwiY2hhcmFjdGVyXCIsXG4gICAgd29yZDogXCJ3b3JkXCIsXG4gICAgbGlua1Byb21wdDogXCJFbnRlciBsaW5rIFVSTFwiLFxuICAgIGxpbmtVcmxQcm9tcHQ6IFwiRW50ZXIgVVJMXCIsXG4gICAgY29uZmlybURlbGV0ZTogXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXM/XCIsXG4gICAgdG9nZ2xlRWRpdDogXCJTd2l0Y2ggdG8gRWRpdCBNb2RlXCIsXG4gICAgdmlld01vZGU6IFwiU3dpdGNoIHRvIFZpZXcgTW9kZVwiLFxuICB9LFxuICBjb21tb246IHtcbiAgICBjYW5jZWw6IFwiQ2FuY2VsXCIsXG4gICAgY29uZmlybTogXCJDb25maXJtXCIsXG4gICAgYXBwbHk6IFwiQXBwbHlcIixcbiAgICBkZWxldGU6IFwiRGVsZXRlXCIsXG4gICAgc2F2ZTogXCJTYXZlXCIsXG4gICAgY2xvc2U6IFwiQ2xvc2VcIixcbiAgICBsb2FkaW5nOiBcIkxvYWRpbmdcIixcbiAgICBlcnJvcjogXCJFcnJvclwiLFxuICAgIHN1Y2Nlc3M6IFwiU3VjY2Vzc1wiLFxuICB9LFxufTtcblxuY29uc3QgRlJFTkNIX1RSQU5TTEFUSU9OUzogQXRlVHJhbnNsYXRpb25zID0ge1xuICB0b29sYmFyOiB7XG4gICAgYm9sZDogXCJHcmFzXCIsXG4gICAgaXRhbGljOiBcIkl0YWxpcXVlXCIsXG4gICAgdW5kZXJsaW5lOiBcIlNvdWxpZ27DqVwiLFxuICAgIHN0cmlrZTogXCJCYXJyw6lcIixcbiAgICBjb2RlOiBcIkNvZGUgZW4gbGlnbmVcIixcbiAgICBjb2RlQmxvY2s6IFwiQmxvYyBkZSBjb2RlXCIsXG4gICAgc3VwZXJzY3JpcHQ6IFwiRXhwb3NhbnRcIixcbiAgICBzdWJzY3JpcHQ6IFwiSW5kaWNlXCIsXG4gICAgaGlnaGxpZ2h0OiBcIlN1cmxpZ25lclwiLFxuICAgIGhpZ2hsaWdodFBpY2tlcjogXCJDb3VsZXVyIGRlIGZvbmRcIixcbiAgICBoZWFkaW5nMTogXCJUaXRyZSAxXCIsXG4gICAgaGVhZGluZzI6IFwiVGl0cmUgMlwiLFxuICAgIGhlYWRpbmczOiBcIlRpdHJlIDNcIixcbiAgICBidWxsZXRMaXN0OiBcIkxpc3RlIMOgIHB1Y2VzXCIsXG4gICAgb3JkZXJlZExpc3Q6IFwiTGlzdGUgbnVtw6lyb3TDqWVcIixcbiAgICBibG9ja3F1b3RlOiBcIkNpdGF0aW9uXCIsXG4gICAgYWxpZ25MZWZ0OiBcIkFsaWduZXIgw6AgZ2F1Y2hlXCIsXG4gICAgYWxpZ25DZW50ZXI6IFwiQ2VudHJlclwiLFxuICAgIGFsaWduUmlnaHQ6IFwiQWxpZ25lciDDoCBkcm9pdGVcIixcbiAgICBhbGlnbkp1c3RpZnk6IFwiSnVzdGlmaWVyXCIsXG4gICAgbGluazogXCJBam91dGVyIHVuIGxpZW5cIixcbiAgICBpbWFnZTogXCJBam91dGVyIHVuZSBpbWFnZVwiLFxuICAgIGhvcml6b250YWxSdWxlOiBcIkxpZ25lIGhvcml6b250YWxlXCIsXG4gICAgdGFibGU6IFwiSW5zw6lyZXIgdW4gdGFibGVhdVwiLFxuICAgIHVuZG86IFwiQW5udWxlclwiLFxuICAgIHJlZG86IFwiUmVmYWlyZVwiLFxuICAgIGNsZWFyOiBcIlZpZGVyXCIsXG4gICAgdGV4dENvbG9yOiBcIkNvdWxldXIgdGV4dGVcIixcbiAgICBjdXN0b21Db2xvcjogXCJDb3VsZXVyIHBlcnNvbm5hbGlzw6llXCIsXG4gICAgcHJlc2V0czogXCJQcsOpcsOpZ2xhZ2VzXCIsXG4gIH0sXG4gIGJ1YmJsZU1lbnU6IHtcbiAgICBib2xkOiBcIkdyYXNcIixcbiAgICBpdGFsaWM6IFwiSXRhbGlxdWVcIixcbiAgICB1bmRlcmxpbmU6IFwiU291bGlnbsOpXCIsXG4gICAgc3RyaWtlOiBcIkJhcnLDqVwiLFxuICAgIGNvZGU6IFwiQ29kZVwiLFxuICAgIHN1cGVyc2NyaXB0OiBcIkV4cG9zYW50XCIsXG4gICAgc3Vic2NyaXB0OiBcIkluZGljZVwiLFxuICAgIGhpZ2hsaWdodDogXCJTdXJsaWduZXJcIixcbiAgICBoaWdobGlnaHRQaWNrZXI6IFwiQ291bGV1ciBkZSBmb25kXCIsXG4gICAgdGV4dENvbG9yOiBcIkNvdWxldXIgdGV4dGVcIixcbiAgICBsaW5rOiBcIkxpZW5cIixcbiAgICBhZGRMaW5rOiBcIkFqb3V0ZXIgdW4gbGllblwiLFxuICAgIGVkaXRMaW5rOiBcIk1vZGlmaWVyIGxlIGxpZW5cIixcbiAgICByZW1vdmVMaW5rOiBcIlN1cHByaW1lciBsZSBsaWVuXCIsXG4gICAgbGlua1VybDogXCJVUkwgZHUgbGllblwiLFxuICAgIGxpbmtUZXh0OiBcIlRleHRlIGR1IGxpZW5cIixcbiAgICBvcGVuTGluazogXCJPdXZyaXIgbGUgbGllblwiLFxuICAgIGN1c3RvbUNvbG9yOiBcIkNvdWxldXIgcGVyc29ubmFsaXPDqWVcIixcbiAgICBwcmVzZXRzOiBcIlByw6lyw6lnbGFnZXNcIixcbiAgfSxcbiAgc2xhc2hDb21tYW5kczoge1xuICAgIGhlYWRpbmcxOiB7XG4gICAgICB0aXRsZTogXCJUaXRyZSAxXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJHcmFuZCB0aXRyZSBkZSBzZWN0aW9uXCIsXG4gICAgICBrZXl3b3JkczogW1wiaGVhZGluZ1wiLCBcImgxXCIsIFwidGl0cmVcIiwgXCJ0aXRsZVwiLCBcIjFcIiwgXCJoZWFkZXJcIl0sXG4gICAgfSxcbiAgICBoZWFkaW5nMjoge1xuICAgICAgdGl0bGU6IFwiVGl0cmUgMlwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGl0cmUgZGUgc291cy1zZWN0aW9uXCIsXG4gICAgICBrZXl3b3JkczogW1wiaGVhZGluZ1wiLCBcImgyXCIsIFwidGl0cmVcIiwgXCJ0aXRsZVwiLCBcIjJcIiwgXCJoZWFkZXJcIl0sXG4gICAgfSxcbiAgICBoZWFkaW5nMzoge1xuICAgICAgdGl0bGU6IFwiVGl0cmUgM1wiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUGV0aXQgdGl0cmVcIixcbiAgICAgIGtleXdvcmRzOiBbXCJoZWFkaW5nXCIsIFwiaDNcIiwgXCJ0aXRyZVwiLCBcInRpdGxlXCIsIFwiM1wiLCBcImhlYWRlclwiXSxcbiAgICB9LFxuICAgIGJ1bGxldExpc3Q6IHtcbiAgICAgIHRpdGxlOiBcIkxpc3RlIMOgIHB1Y2VzXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDcsOpZXIgdW5lIGxpc3RlIMOgIHB1Y2VzXCIsXG4gICAgICBrZXl3b3JkczogW1wiYnVsbGV0XCIsIFwibGlzdFwiLCBcImxpc3RlXCIsIFwicHVjZXNcIiwgXCJ1bFwiXSxcbiAgICB9LFxuICAgIG9yZGVyZWRMaXN0OiB7XG4gICAgICB0aXRsZTogXCJMaXN0ZSBudW3DqXJvdMOpZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ3LDqWVyIHVuZSBsaXN0ZSBudW3DqXJvdMOpZVwiLFxuICAgICAga2V5d29yZHM6IFtcIm51bWJlcmVkXCIsIFwibGlzdFwiLCBcImxpc3RlXCIsIFwibnVtw6lyb3TDqWVcIiwgXCJvbFwiLCBcIm9yZGVyZWRcIl0sXG4gICAgfSxcbiAgICBibG9ja3F1b3RlOiB7XG4gICAgICB0aXRsZTogXCJDaXRhdGlvblwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQWpvdXRlciB1bmUgY2l0YXRpb25cIixcbiAgICAgIGtleXdvcmRzOiBbXCJxdW90ZVwiLCBcImJsb2NrcXVvdGVcIiwgXCJjaXRhdGlvblwiXSxcbiAgICB9LFxuICAgIGNvZGU6IHtcbiAgICAgIHRpdGxlOiBcIkJsb2MgZGUgY29kZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQWpvdXRlciB1biBibG9jIGRlIGNvZGVcIixcbiAgICAgIGtleXdvcmRzOiBbXCJjb2RlXCIsIFwiY29kZWJsb2NrXCIsIFwicHJlXCIsIFwicHJvZ3JhbW1hdGlvblwiXSxcbiAgICB9LFxuICAgIGltYWdlOiB7XG4gICAgICB0aXRsZTogXCJJbWFnZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5zw6lyZXIgdW5lIGltYWdlXCIsXG4gICAgICBrZXl3b3JkczogW1wiaW1hZ2VcIiwgXCJwaG90b1wiLCBcInBpY3R1cmVcIiwgXCJpbWdcIl0sXG4gICAgfSxcbiAgICBob3Jpem9udGFsUnVsZToge1xuICAgICAgdGl0bGU6IFwiTGlnbmUgaG9yaXpvbnRhbGVcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFqb3V0ZXIgdW5lIGxpZ25lIGRlIHPDqXBhcmF0aW9uXCIsXG4gICAgICBrZXl3b3JkczogW1wiaHJcIiwgXCJob3Jpem9udGFsXCIsIFwicnVsZVwiLCBcImxpZ25lXCIsIFwic8OpcGFyYXRpb25cIl0sXG4gICAgfSxcbiAgICB0YWJsZToge1xuICAgICAgdGl0bGU6IFwiVGFibGVhdVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5zw6lyZXIgdW4gdGFibGVhdVwiLFxuICAgICAga2V5d29yZHM6IFtcInRhYmxlXCIsIFwidGFibGVhdVwiLCBcImdyaWRcIiwgXCJncmlsbGVcIiwgXCJkYXRhXCIsIFwiZG9ubsOpZXNcIiwgXCJyb3dzXCIsIFwiY29sb25uZXNcIl0sXG4gICAgfSxcbiAgfSxcbiAgdGFibGU6IHtcbiAgICBhZGRSb3dCZWZvcmU6IFwiQWpvdXRlciB1bmUgbGlnbmUgYXZhbnRcIixcbiAgICBhZGRSb3dBZnRlcjogXCJBam91dGVyIHVuZSBsaWduZSBhcHLDqHNcIixcbiAgICBkZWxldGVSb3c6IFwiU3VwcHJpbWVyIGxhIGxpZ25lXCIsXG4gICAgYWRkQ29sdW1uQmVmb3JlOiBcIkFqb3V0ZXIgdW5lIGNvbG9ubmUgYXZhbnRcIixcbiAgICBhZGRDb2x1bW5BZnRlcjogXCJBam91dGVyIHVuZSBjb2xvbm5lIGFwcsOoc1wiLFxuICAgIGRlbGV0ZUNvbHVtbjogXCJTdXBwcmltZXIgbGEgY29sb25uZVwiLFxuICAgIGRlbGV0ZVRhYmxlOiBcIlN1cHByaW1lciBsZSB0YWJsZWF1XCIsXG4gICAgdG9nZ2xlSGVhZGVyUm93OiBcIkJhc2N1bGVyIGxpZ25lIGQnZW4tdMOqdGVcIixcbiAgICB0b2dnbGVIZWFkZXJDb2x1bW46IFwiQmFzY3VsZXIgY29sb25uZSBkJ2VuLXTDqnRlXCIsXG4gICAgbWVyZ2VDZWxsczogXCJGdXNpb25uZXIgbGVzIGNlbGx1bGVzXCIsXG4gICAgc3BsaXRDZWxsOiBcIkRpdmlzZXIgbGEgY2VsbHVsZVwiLFxuICB9LFxuICBpbWFnZVVwbG9hZDoge1xuICAgIHNlbGVjdEltYWdlOiBcIlPDqWxlY3Rpb25uZXIgdW5lIGltYWdlXCIsXG4gICAgbG9hZEVycm9yOiBcIkVycmV1ciBkZSBjaGFyZ2VtZW50IGRlIGwnaW1hZ2VcIixcbiAgICB1cGxvYWRpbmdJbWFnZTogXCJUw6lsw6ljaGFyZ2VtZW50IGRlIGwnaW1hZ2UuLi5cIixcbiAgICB1cGxvYWRQcm9ncmVzczogXCJQcm9ncmVzc2lvbiBkdSB0w6lsw6ljaGFyZ2VtZW50XCIsXG4gICAgdXBsb2FkRXJyb3I6IFwiRXJyZXVyIGRlIHTDqWzDqWNoYXJnZW1lbnRcIixcbiAgICB1cGxvYWRTdWNjZXNzOiBcIlTDqWzDqWNoYXJnZW1lbnQgcsOpdXNzaVwiLFxuICAgIGltYWdlVG9vTGFyZ2U6IFwiSW1hZ2UgdHJvcCB2b2x1bWluZXVzZVwiLFxuICAgIGludmFsaWRGaWxlVHlwZTogXCJUeXBlIGRlIGZpY2hpZXIgaW52YWxpZGVcIixcbiAgICBkcmFnRHJvcFRleHQ6IFwiR2xpc3NleiBldCBkw6lwb3NleiBkZXMgaW1hZ2VzIGljaVwiLFxuICAgIGNoYW5nZUltYWdlOiBcIkNoYW5nZXIgbCdpbWFnZVwiLFxuICAgIGRlbGV0ZUltYWdlOiBcIlN1cHByaW1lciBsJ2ltYWdlXCIsXG4gICAgcmVzaXplU21hbGw6IFwiUGV0aXRcIixcbiAgICByZXNpemVNZWRpdW06IFwiTW95ZW5cIixcbiAgICByZXNpemVMYXJnZTogXCJHcmFuZFwiLFxuICAgIHJlc2l6ZU9yaWdpbmFsOiBcIk9yaWdpbmFsXCIsXG4gICAgcmVzaXppbmc6IFwiUmVkaW1lbnNpb25uZW1lbnQuLi5cIixcbiAgICBjb21wcmVzc2luZzogXCJDb21wcmVzc2lvbi4uLlwiLFxuICAgIGNvbXByZXNzaW9uRXJyb3I6IFwiRXJyZXVyIGxvcnMgZGUgbGEgY29tcHJlc3Npb25cIixcbiAgICB2YWxpZGF0aW5nOiBcIlZhbGlkYXRpb24gZHUgZmljaGllci4uLlwiLFxuICAgIHVwbG9hZGluZ1RvU2VydmVyOiBcIlVwbG9hZCB2ZXJzIGxlIHNlcnZldXIuLi5cIixcbiAgICByZXBsYWNpbmdJbWFnZTogXCJSZW1wbGFjZW1lbnQgZGUgbCdpbWFnZS4uLlwiLFxuICAgIGluc2VydGluZ0ltYWdlOiBcIkluc2VydGlvbiBkYW5zIGwnw6lkaXRldXIuLi5cIixcbiAgICBub0ZpbGVTZWxlY3RlZDogXCJBdWN1biBmaWNoaWVyIGltYWdlIHPDqWxlY3Rpb25uw6lcIixcbiAgICBzZWxlY3Rpb25DYW5jZWxsZWQ6IFwiU8OpbGVjdGlvbiBhbm51bMOpZVwiLFxuICB9LFxuICBlZGl0b3I6IHtcbiAgICBwbGFjZWhvbGRlcjogXCJDb21tZW5jZXogw6Agw6ljcmlyZS4uLlwiLFxuICAgIGNoYXJhY3RlcjogXCJjYXJhY3TDqHJlXCIsXG4gICAgd29yZDogXCJtb3RcIixcbiAgICBsaW5rUHJvbXB0OiBcIkVudHJleiBsJ1VSTCBkdSBsaWVuXCIsXG4gICAgbGlua1VybFByb21wdDogXCJFbnRyZXogbCdVUkxcIixcbiAgICBjb25maXJtRGVsZXRlOiBcIsOKdGVzLXZvdXMgc8O7ciBkZSB2b3Vsb2lyIHN1cHByaW1lciBjZWNpID9cIixcbiAgICB0b2dnbGVFZGl0OiBcIlBhc3NlciBlbiBtb2RlIMOpZGl0aW9uXCIsXG4gICAgdmlld01vZGU6IFwiUGFzc2VyIGVuIG1vZGUgYWZmaWNoYWdlXCIsXG4gIH0sXG4gIGNvbW1vbjoge1xuICAgIGNhbmNlbDogXCJBbm51bGVyXCIsXG4gICAgY29uZmlybTogXCJDb25maXJtZXJcIixcbiAgICBhcHBseTogXCJBcHBsaXF1ZXJcIixcbiAgICBkZWxldGU6IFwiU3VwcHJpbWVyXCIsXG4gICAgc2F2ZTogXCJTYXV2ZWdhcmRlclwiLFxuICAgIGNsb3NlOiBcIkZlcm1lclwiLFxuICAgIGxvYWRpbmc6IFwiQ2hhcmdlbWVudFwiLFxuICAgIGVycm9yOiBcIkVycmV1clwiLFxuICAgIHN1Y2Nlc3M6IFwiU3VjY8Ooc1wiLFxuICB9LFxufTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgQXRlSTE4blNlcnZpY2Uge1xuICBwcml2YXRlIF9jdXJyZW50TG9jYWxlID0gc2lnbmFsPFN1cHBvcnRlZExvY2FsZT4oXCJlblwiKTtcbiAgcHJpdmF0ZSBfdHJhbnNsYXRpb25zID0gc2lnbmFsPFJlY29yZDxTdXBwb3J0ZWRMb2NhbGUsIEF0ZVRyYW5zbGF0aW9ucz4+KHtcbiAgICBlbjogRU5HTElTSF9UUkFOU0xBVElPTlMsXG4gICAgZnI6IEZSRU5DSF9UUkFOU0xBVElPTlMsXG4gIH0pO1xuXG4gIC8vIFB1YmxpYyBzaWduYWxzXG4gIHJlYWRvbmx5IGN1cnJlbnRMb2NhbGUgPSB0aGlzLl9jdXJyZW50TG9jYWxlLmFzUmVhZG9ubHkoKTtcbiAgLyoqIEFsbCBsb2FkZWQgdHJhbnNsYXRpb25zICh1c2VmdWwgZm9yIGR5bmFtaWMga2V5IGFjY2VzcykgKi9cbiAgcmVhZG9ubHkgYWxsVHJhbnNsYXRpb25zID0gdGhpcy5fdHJhbnNsYXRpb25zLmFzUmVhZG9ubHkoKTtcblxuICByZWFkb25seSB0cmFuc2xhdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl90cmFuc2xhdGlvbnMoKVt0aGlzLl9jdXJyZW50TG9jYWxlKCldKTtcblxuICAvLyBGYXN0IHRyYW5zbGF0aW9uIG1ldGhvZHNcbiAgcmVhZG9ubHkgdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkpO1xuICByZWFkb25seSB0b29sYmFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50cmFuc2xhdGlvbnMoKS50b29sYmFyKTtcbiAgcmVhZG9ubHkgYnViYmxlTWVudSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuYnViYmxlTWVudSk7XG4gIHJlYWRvbmx5IHNsYXNoQ29tbWFuZHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zbGF0aW9ucygpLnNsYXNoQ29tbWFuZHMpO1xuICByZWFkb25seSB0YWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkudGFibGUpO1xuICByZWFkb25seSBpbWFnZVVwbG9hZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuaW1hZ2VVcGxvYWQpO1xuICByZWFkb25seSBlZGl0b3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zbGF0aW9ucygpLmVkaXRvcik7XG4gIHJlYWRvbmx5IGNvbW1vbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuY29tbW9uKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBdXRvbWF0aWNhbGx5IGRldGVjdCBicm93c2VyIGxhbmd1YWdlXG4gICAgdGhpcy5kZXRlY3RCcm93c2VyTGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIHNldExvY2FsZShsb2NhbGU6IFN1cHBvcnRlZExvY2FsZSk6IHZvaWQge1xuICAgIHRoaXMuX2N1cnJlbnRMb2NhbGUuc2V0KGxvY2FsZSk7XG4gIH1cblxuICBhdXRvRGV0ZWN0TG9jYWxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGV0ZWN0QnJvd3Nlckxhbmd1YWdlKCk7XG4gIH1cblxuICBnZXRTdXBwb3J0ZWRMb2NhbGVzKCk6IFN1cHBvcnRlZExvY2FsZVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fdHJhbnNsYXRpb25zKCkpIGFzIFN1cHBvcnRlZExvY2FsZVtdO1xuICB9XG5cbiAgYWRkVHJhbnNsYXRpb25zKGxvY2FsZTogc3RyaW5nLCB0cmFuc2xhdGlvbnM6IEF0ZVRyYW5zbGF0aW9ucyB8IFBhcnRpYWw8QXRlVHJhbnNsYXRpb25zPik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zbGF0aW9ucy51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IGN1cnJlbnRbbG9jYWxlXSB8fCBFTkdMSVNIX1RSQU5TTEFUSU9OUztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIFtsb2NhbGVdOiB7XG4gICAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgICAgLi4udHJhbnNsYXRpb25zLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0QnJvd3Nlckxhbmd1YWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gbmF2aWdhdG9yLmxhbmd1YWdlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGJyb3dzZXJMYW5nLnN0YXJ0c1dpdGgoXCJmclwiKSkge1xuICAgICAgdGhpcy5fY3VycmVudExvY2FsZS5zZXQoXCJmclwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY3VycmVudExvY2FsZS5zZXQoXCJlblwiKTtcbiAgICB9XG4gIH1cblxuICAvLyBVdGlsaXR5IG1ldGhvZHMgZm9yIGNvbXBvbmVudHNcbiAgZ2V0VG9vbGJhclRpdGxlKGtleToga2V5b2YgQXRlVHJhbnNsYXRpb25zW1widG9vbGJhclwiXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25zKCkudG9vbGJhcltrZXldO1xuICB9XG5cbiAgZ2V0QnViYmxlTWVudVRpdGxlKGtleToga2V5b2YgQXRlVHJhbnNsYXRpb25zW1wiYnViYmxlTWVudVwiXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25zKCkuYnViYmxlTWVudVtrZXldO1xuICB9XG5cbiAgZ2V0U2xhc2hDb21tYW5kKGtleToga2V5b2YgQXRlVHJhbnNsYXRpb25zW1wic2xhc2hDb21tYW5kc1wiXSkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9ucygpLnNsYXNoQ29tbWFuZHNba2V5XTtcbiAgfVxufVxuIl19
|