@talrace/ngx-noder 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/apart-components/add-link-dialog/add-link-dialog.component.mjs +15 -9
- package/esm2022/lib/apart-components/editor-toolbar/components/base-toolbar.component.mjs +8 -2
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font/font.component.mjs +2 -2
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-size/font-size.component.mjs +3 -3
- package/esm2022/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.mjs +1 -8
- package/esm2022/lib/editor/components/edges/edge.component.mjs +2 -2
- package/esm2022/lib/editor/components/edges/edges.mjs +21 -2
- package/esm2022/lib/editor/components/image/input-handler/image-input.handler.mjs +18 -1
- package/esm2022/lib/editor/components/shared/services/custom-content.service.mjs +22 -56
- package/esm2022/lib/editor/components/table/components/table-cell.component.mjs +6 -6
- package/esm2022/lib/editor/components/table/components/table.component.mjs +13 -4
- package/esm2022/lib/editor/components/table/models/cell-data.model.mjs +3 -4
- package/esm2022/lib/editor/components/table/selection/table-selection.mjs +15 -5
- package/esm2022/lib/editor/content/constants/editor.const.mjs +9 -1
- package/esm2022/lib/editor/content/display-data/display-data.mjs +839 -0
- package/esm2022/lib/editor/content/display-data/general-properties.model.mjs +1 -1
- package/esm2022/lib/editor/content/display-data/models/paragraph-info.model.mjs +8 -0
- package/esm2022/lib/editor/content/display-data/paragraph.mjs +5 -1
- package/esm2022/lib/editor/content/display-data/text-line-info.mjs +2 -1
- package/esm2022/lib/editor/content/display-data/toolbar-styles.interface.mjs +1 -1
- package/esm2022/lib/editor/content/helpers/content-style.helper.mjs +12 -30
- package/esm2022/lib/editor/content/helpers/display-token.helper.mjs +62 -0
- package/esm2022/lib/editor/display/layers/cursor.layer.mjs +9 -8
- package/esm2022/lib/editor/display/layers/pages.layer.mjs +5 -5
- package/esm2022/lib/editor/display/layers/print.text.layer.mjs +2 -2
- package/esm2022/lib/editor/display/layers/selection.layer.mjs +15 -9
- package/esm2022/lib/editor/display/layers/text.layer.mjs +25 -27
- package/esm2022/lib/editor/display/print/print.renderer.mjs +8 -8
- package/esm2022/lib/editor/display/renderer.mjs +10 -10
- package/esm2022/lib/editor/display/rendering.helper.mjs +2 -4
- package/esm2022/lib/editor/display/virtual.renderer.mjs +5 -5
- package/esm2022/lib/editor/execution/edit.session.mjs +199 -755
- package/esm2022/lib/editor/execution/editor.mjs +116 -75
- package/esm2022/lib/editor/execution/helpers/format-style.helper.mjs +1 -33
- package/esm2022/lib/editor/execution/helpers/image.helpet.mjs +12 -0
- package/esm2022/lib/editor/execution/helpers/paragraph.helper.mjs +11 -3
- package/esm2022/lib/editor/execution/regulator.service.mjs +28 -20
- package/esm2022/lib/editor/gadgets/numbering/numbering-paragraph-style.model.mjs +13 -0
- package/esm2022/lib/editor/gadgets/numbering/numbering.helper.mjs +77 -10
- package/esm2022/lib/editor/gadgets/search/search.mjs +6 -6
- package/esm2022/lib/editor/interaction/editor.service.mjs +27 -6
- package/esm2022/lib/editor/interaction/input.handler.mjs +8 -5
- package/esm2022/lib/editor/interaction/mouse.handler.mjs +2 -1
- package/esm2022/lib/editor/operations/helpers/format-operations.helper.mjs +32 -2
- package/esm2022/lib/editor/operations/helpers/link-operations.helper.mjs +47 -12
- package/esm2022/lib/editor/operations/operations-helper.helper.mjs +13 -14
- package/esm2022/lib/editor/operations/save-commands.helper.mjs +2 -2
- package/esm2022/lib/editor/positioning/content.helper.mjs +15 -15
- package/esm2022/lib/editor/positioning/line-width.helper.mjs +5 -5
- package/esm2022/lib/editor/positioning/position.helper.mjs +34 -32
- package/esm2022/lib/editor/positioning/selection.mjs +42 -32
- package/esm2022/lib/editor/revision.helper.mjs +4 -3
- package/fesm2022/talrace-ngx-noder.mjs +3765 -3548
- package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
- package/lib/apart-components/add-link-dialog/add-link-dialog.component.d.ts +0 -1
- package/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.d.ts +0 -2
- package/lib/editor/components/image/input-handler/image-input.handler.d.ts +3 -0
- package/lib/editor/components/shared/services/custom-content.service.d.ts +3 -5
- package/lib/editor/components/table/components/table-cell.component.d.ts +1 -1
- package/lib/editor/components/table/components/table.component.d.ts +1 -0
- package/lib/editor/components/table/models/cell-data.model.d.ts +1 -1
- package/lib/editor/components/table/selection/table-selection.d.ts +2 -0
- package/lib/editor/content/constants/editor.const.d.ts +2 -0
- package/lib/editor/content/display-data/display-data.d.ts +103 -0
- package/lib/editor/content/display-data/general-properties.model.d.ts +5 -0
- package/lib/editor/content/display-data/models/paragraph-info.model.d.ts +9 -0
- package/lib/editor/content/display-data/paragraph.d.ts +1 -0
- package/lib/editor/content/display-data/text-line-info.d.ts +1 -0
- package/lib/editor/content/display-data/toolbar-styles.interface.d.ts +1 -1
- package/lib/editor/content/helpers/content-style.helper.d.ts +1 -2
- package/lib/editor/content/helpers/display-token.helper.d.ts +6 -0
- package/lib/editor/display/layers/text.layer.d.ts +1 -2
- package/lib/editor/display/print/print.renderer.d.ts +0 -2
- package/lib/editor/execution/edit.session.d.ts +11 -59
- package/lib/editor/execution/editor.d.ts +9 -6
- package/lib/editor/execution/helpers/format-style.helper.d.ts +0 -2
- package/lib/editor/execution/helpers/image.helpet.d.ts +4 -0
- package/lib/editor/execution/regulator.service.d.ts +1 -1
- package/lib/editor/gadgets/numbering/numbering-paragraph-style.model.d.ts +6 -0
- package/lib/editor/gadgets/numbering/numbering.helper.d.ts +10 -3
- package/lib/editor/interaction/editor.service.d.ts +12 -3
- package/lib/editor/operations/helpers/link-operations.helper.d.ts +5 -3
- package/lib/editor/positioning/content.helper.d.ts +6 -5
- package/lib/editor/positioning/position.helper.d.ts +3 -3
- package/lib/editor/positioning/selection.d.ts +3 -0
- package/package.json +1 -1
- package/src/_ngx-noder.theme.scss +31 -2
- package/esm2022/lib/editor/content/display-data/document.mjs +0 -134
- package/esm2022/lib/editor/content/display-data/pages.wrap.mjs +0 -226
- package/esm2022/lib/editor/execution/helpers/delta.helper.mjs +0 -18
- package/lib/editor/content/display-data/document.d.ts +0 -56
- package/lib/editor/content/display-data/pages.wrap.d.ts +0 -42
- package/lib/editor/execution/helpers/delta.helper.d.ts +0 -6
|
@@ -6,6 +6,7 @@ export class Selection {
|
|
|
6
6
|
constructor() {
|
|
7
7
|
this.anchor = null;
|
|
8
8
|
this.cursor = new CursorParagraph(0, 0);
|
|
9
|
+
this.isDisabled = false;
|
|
9
10
|
this.keepLinePositionX = null;
|
|
10
11
|
}
|
|
11
12
|
get isEmpty() {
|
|
@@ -46,6 +47,13 @@ export class Selection {
|
|
|
46
47
|
this.anchor = null;
|
|
47
48
|
this.keepLinePositionX = null;
|
|
48
49
|
}
|
|
50
|
+
disableSelection() {
|
|
51
|
+
this.isDisabled = true;
|
|
52
|
+
this.clearSelection();
|
|
53
|
+
}
|
|
54
|
+
enableSelection() {
|
|
55
|
+
this.isDisabled = false;
|
|
56
|
+
}
|
|
49
57
|
selectAll(model) {
|
|
50
58
|
const last = model.paragraphs.length - 1;
|
|
51
59
|
const length = last > 0 ? model.contentLength - model.paragraphs[last - 1].insertIndex - 1 : model.contentLength;
|
|
@@ -118,13 +126,13 @@ export class Selection {
|
|
|
118
126
|
this.placeCursor(position);
|
|
119
127
|
}
|
|
120
128
|
selectFileEnd(session) {
|
|
121
|
-
const paragraph = session.
|
|
122
|
-
const paragraphIndex = session.
|
|
129
|
+
const paragraph = session.displayData.paragraphs.length - 1;
|
|
130
|
+
const paragraphIndex = session.displayData.getParagraphContent(paragraph).length;
|
|
123
131
|
this.moveSelection(new CursorParagraph(paragraph, paragraphIndex));
|
|
124
132
|
}
|
|
125
133
|
navigateFileEnd(session) {
|
|
126
|
-
const paragraph = session.
|
|
127
|
-
const paragraphIndex = session.
|
|
134
|
+
const paragraph = session.displayData.paragraphs.length - 1;
|
|
135
|
+
const paragraphIndex = session.displayData.getParagraphContent(paragraph).length;
|
|
128
136
|
this.placeCursor(new CursorParagraph(paragraph, paragraphIndex));
|
|
129
137
|
}
|
|
130
138
|
selectFileStart() {
|
|
@@ -160,8 +168,8 @@ export class Selection {
|
|
|
160
168
|
}
|
|
161
169
|
moveCursorDown(session, position) {
|
|
162
170
|
const line = PositionHelper.documentToScreen(session, position.row, position.column);
|
|
163
|
-
const
|
|
164
|
-
const lastParagraph = session.
|
|
171
|
+
const lastParagraphsIndex = session.displayData.paragraphs.length - 1;
|
|
172
|
+
const lastParagraph = session.displayData.getParagraphSettings(lastParagraphsIndex);
|
|
165
173
|
const lastParagraphLine = lastParagraph.textLinesInfo[lastParagraph.textLinesInfo.length - 1].screenLine;
|
|
166
174
|
if (line.row === lastParagraphLine) {
|
|
167
175
|
this.selectLineEnd(session);
|
|
@@ -181,16 +189,16 @@ export class Selection {
|
|
|
181
189
|
if (this.cursor.row === 0 && this.cursor.column === 0) {
|
|
182
190
|
return this.cursor;
|
|
183
191
|
}
|
|
184
|
-
const index = ContentHelper.paragraphPositionToDocumentIndex(session.
|
|
185
|
-
return ContentHelper.documentIndexToParagraphIndex(session.
|
|
192
|
+
const index = ContentHelper.paragraphPositionToDocumentIndex(session.displayData.paragraphs, this.cursor);
|
|
193
|
+
return ContentHelper.documentIndexToParagraphIndex(session.displayData.paragraphs, index - 1);
|
|
186
194
|
}
|
|
187
195
|
getCursorRight(session) {
|
|
188
|
-
const last = session.
|
|
189
|
-
if (this.cursor.row === last && this.cursor.column === session.
|
|
196
|
+
const last = session.displayData.paragraphs.length - 1;
|
|
197
|
+
if (this.cursor.row === last && this.cursor.column === session.displayData.getParagraphContent(last).length) {
|
|
190
198
|
return this.cursor;
|
|
191
199
|
}
|
|
192
|
-
const index = ContentHelper.paragraphPositionToDocumentIndex(session.
|
|
193
|
-
return ContentHelper.documentIndexToParagraphIndex(session.
|
|
200
|
+
const index = ContentHelper.paragraphPositionToDocumentIndex(session.displayData.paragraphs, this.cursor);
|
|
201
|
+
return ContentHelper.documentIndexToParagraphIndex(session.displayData.paragraphs, index + 1);
|
|
194
202
|
}
|
|
195
203
|
getLineStart(session, position) {
|
|
196
204
|
const line = PositionHelper.documentToScreen(session, position.row, position.column);
|
|
@@ -198,37 +206,39 @@ export class Selection {
|
|
|
198
206
|
}
|
|
199
207
|
getLineEnd(session, position) {
|
|
200
208
|
const line = PositionHelper.documentToScreen(session, position.row, position.column);
|
|
201
|
-
const paragraphLength = session.
|
|
202
|
-
const linesCount = session.
|
|
209
|
+
const paragraphLength = session.displayData.getParagraphContent(position.row).length;
|
|
210
|
+
const linesCount = session.displayData.getParagraphSettings(position.row).textLinesInfo.length;
|
|
203
211
|
if (linesCount === 1) {
|
|
204
212
|
return PositionHelper.screenToDocument(session, line.row, paragraphLength);
|
|
205
213
|
}
|
|
206
|
-
const paragraphLine = line.row - session.
|
|
214
|
+
const paragraphLine = line.row - session.displayData.paragraphs[position.row].lineNumber;
|
|
207
215
|
let index;
|
|
208
216
|
if (paragraphLine === 0) {
|
|
209
|
-
index = session.
|
|
217
|
+
index = session.displayData.paragraphs[position.row].nextLineIndexes[0];
|
|
210
218
|
}
|
|
211
219
|
else if (paragraphLine === linesCount - 1) {
|
|
212
|
-
index = paragraphLength - session.
|
|
220
|
+
index = paragraphLength - session.displayData.paragraphs[position.row].nextLineIndexes[paragraphLine - 1];
|
|
213
221
|
}
|
|
214
222
|
else {
|
|
215
|
-
index =
|
|
223
|
+
index =
|
|
224
|
+
session.displayData.paragraphs[position.row].nextLineIndexes[paragraphLine] -
|
|
225
|
+
session.displayData.paragraphs[position.row].nextLineIndexes[paragraphLine - 1];
|
|
216
226
|
}
|
|
217
227
|
return PositionHelper.screenToDocument(session, line.row, index);
|
|
218
228
|
}
|
|
219
229
|
getWordRight(session, position) {
|
|
220
230
|
let row = position.row;
|
|
221
231
|
let column = position.column;
|
|
222
|
-
const
|
|
223
|
-
const documentLength = session.
|
|
224
|
-
if (row + 1 >= documentLength && column ===
|
|
232
|
+
const paragraphContent = session.displayData.getParagraphContent(row);
|
|
233
|
+
const documentLength = session.displayData.paragraphs.length;
|
|
234
|
+
if (row + 1 >= documentLength && column === paragraphContent.length) {
|
|
225
235
|
return position;
|
|
226
236
|
}
|
|
227
|
-
let rightOfCursor =
|
|
228
|
-
if (column ===
|
|
237
|
+
let rightOfCursor = paragraphContent.substring(column);
|
|
238
|
+
if (column === paragraphContent.length) {
|
|
229
239
|
do {
|
|
230
240
|
row++;
|
|
231
|
-
rightOfCursor = session.
|
|
241
|
+
rightOfCursor = session.displayData.getParagraphContent(row);
|
|
232
242
|
} while (row < documentLength && /^\s*$/.test(rightOfCursor));
|
|
233
243
|
if (!/^\s+/.test(rightOfCursor)) {
|
|
234
244
|
rightOfCursor = '';
|
|
@@ -244,18 +254,18 @@ export class Selection {
|
|
|
244
254
|
if (column === 0 && row === 0) {
|
|
245
255
|
return position;
|
|
246
256
|
}
|
|
247
|
-
let
|
|
257
|
+
let paragraphContent = session.displayData.getParagraphContent(row).substring(0, column);
|
|
248
258
|
if (column === 0) {
|
|
249
259
|
do {
|
|
250
260
|
row--;
|
|
251
|
-
|
|
252
|
-
} while (row > 0 && /^\s*$/.test(
|
|
253
|
-
column =
|
|
254
|
-
if (!/\s+$/.test(
|
|
255
|
-
|
|
261
|
+
paragraphContent = session.displayData.getParagraphContent(row);
|
|
262
|
+
} while (row > 0 && /^\s*$/.test(paragraphContent));
|
|
263
|
+
column = paragraphContent.length;
|
|
264
|
+
if (!/\s+$/.test(paragraphContent)) {
|
|
265
|
+
paragraphContent = '';
|
|
256
266
|
}
|
|
257
267
|
}
|
|
258
|
-
const leftOfCursor =
|
|
268
|
+
const leftOfCursor = paragraphContent.split('').reverse().join('');
|
|
259
269
|
const index = this.shortWordEndIndex(session.tokenRe, leftOfCursor);
|
|
260
270
|
return new CursorParagraph(row, column - index);
|
|
261
271
|
}
|
|
@@ -304,4 +314,4 @@ export class Selection {
|
|
|
304
314
|
return index;
|
|
305
315
|
}
|
|
306
316
|
}
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL3Bvc2l0aW9uaW5nL3NlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhDLE1BQU0sT0FBTyxTQUFTO0lBQXRCO1FBQ0ksV0FBTSxHQUEyQixJQUFJLENBQUM7UUFFdEMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUzQixzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO0lBMlVwRCxDQUFDO0lBelVHLElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNq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QUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUN0QixPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEUsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDdEIsS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDWCxLQUFLLEVBQUUsQ0FBQztvQkFDUixNQUFNO2lCQUNUO2dCQUNELE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ3BFLEtBQUssRUFBRSxDQUFDO2lCQUNYO2dCQUNELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDWCxNQUFNO2lCQUNUO2FBQ0o7U0FDSjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRIZWxwZXIgfSBmcm9tICcuL2NvbnRlbnQuaGVscGVyJztcbmltcG9ydCB7IENvbnRlbnRzSW50ZXJmYWNlIH0gZnJvbSAnLi4vY29udGVudC9jb250ZW50cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ3Vyc29yUGFyYWdyYXBoIH0gZnJvbSAnLi9jdXJzb3ItcGFyYWdyYXBoJztcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSAnLi4vZXhlY3V0aW9uL2VkaXQuc2Vzc2lvbic7XG5pbXBvcnQgeyBQb3NpdGlvbkhlbHBlciB9IGZyb20gJy4vcG9zaXRpb24uaGVscGVyJztcbmltcG9ydCB7IFJhbmdlIH0gZnJvbSAnLi9yYW5nZSc7XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb24ge1xuICAgIGFuY2hvcjogQ3Vyc29yUGFyYWdyYXBoIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjdXJzb3IgPSBuZXcgQ3Vyc29yUGFyYWdyYXBoKDAsIDApO1xuXG4gICAgcHJpdmF0ZSBrZWVwTGluZVBvc2l0aW9uWDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYW5jaG9yID09PSBudWxsIHx8ICh0aGlzLmFuY2hvci5yb3cgPT09IHRoaXMuY3Vyc29yLnJvdyAmJiB0aGlzLmFuY2hvci5jb2x1bW4gPT09IHRoaXMuY3Vyc29yLmNvbHVtbik7XG4gICAgfVxuXG4gICAgZ2V0IGlzQmFja3dhcmRzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hbmNob3Iucm93ID4gdGhpcy5jdXJzb3Iucm93IHx8ICh0aGlzLmFuY2hvci5yb3cgPT09IHRoaXMuY3Vyc29yLnJvdyAmJiB0aGlzLmFuY2hvci5jb2x1bW4gPiB0aGlzLmN1cnNvci5jb2x1bW4pO1xuICAgIH1cblxuICAgIGdldCByYW5nZSgpOiBSYW5nZSB7XG4gICAgICAgIGNvbnN0IGN1cnNvciA9IG5ldyBDdXJzb3JQYXJhZ3JhcGgodGhpcy5jdXJzb3Iucm93LCB0aGlzLmN1cnNvci5jb2x1bW4pO1xuICAgICAgICBpZiAodGhpcy5pc0VtcHR5KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJhbmdlKGN1cnNvciwgY3Vyc29yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFuY2hvciA9IG5ldyBDdXJzb3JQYXJhZ3JhcGgodGhpcy5hbmNob3Iucm93LCB0aGlzLmFuY2hvci5jb2x1bW4pO1xuICAgICAgICByZXR1cm4gdGhpcy5pc0JhY2t3YXJkcyA/IG5ldyBSYW5nZShjdXJzb3IsIGFuY2hvcikgOiBuZXcgUmFuZ2UoYW5jaG9yLCBjdXJzb3IpO1xuICAgIH1cblxuICAgIHBsYWNlQ3Vyc29yKGN1cnNvcjogQ3Vyc29yUGFyYWdyYXBoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3Vyc29yID0gY3Vyc29yO1xuICAgICAgICB0aGlzLmFuY2hvciA9IG51bGw7XG4gICAgICAgIHRoaXMua2VlcExpbmVQb3NpdGlvblggPSBudWxsO1xuICAgIH1cblxuICAgIG1vdmVDdXJzb3IoY3Vyc29yOiBDdXJzb3JQYXJhZ3JhcGgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJzb3IgPSBjdXJzb3I7XG4gICAgICAgIHRoaXMua2VlcExpbmVQb3NpdGlvblggPSBudWxsO1xuICAgIH1cblxuICAgIHBsYWNlU2VsZWN0aW9uKGN1cnNvcjogQ3Vyc29yUGFyYWdyYXBoLCBhbmNob3I6IEN1cnNvclBhcmFncmFwaCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnNvciA9IGN1cnNvcjtcbiAgICAgICAgdGhpcy5hbmNob3IgPSBhbmNob3I7XG4gICAgICAgIHRoaXMua2VlcExpbmVQb3NpdGlvblggPSBudWxsO1xuICAgIH1cblxuICAgIG1vdmVTZWxlY3Rpb24ocG9zaXRpb246IEN1cnNvclBhcmFncmFwaCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYW5jaG9yKSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvciA9IHRoaXMuY3Vyc29yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW92ZUN1cnNvcihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYW5jaG9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5rZWVwTGluZVBvc2l0aW9uWCA9IG51bGw7XG4gICAgfVxuXG4gICAgc2VsZWN0QWxsKG1vZGVsOiBDb250ZW50c0ludGVyZmFjZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXN0ID0gbW9kZWwucGFyYWdyYXBocy5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBsZW5ndGggPSBsYXN0ID4gMCA/IG1vZGVsLmNvbnRlbnRMZW5ndGggLSBtb2RlbC5wYXJhZ3JhcGhzW2xhc3QgLSAxXS5pbnNlcnRJbmRleCAtIDEgOiBtb2RlbC5jb250ZW50TGVuZ3RoO1xuICAgICAgICB0aGlzLnBsYWNlU2VsZWN0aW9uKG5ldyBDdXJzb3JQYXJhZ3JhcGgoMCwgMCksIG5ldyBDdXJzb3JQYXJhZ3JhcGgobGFzdCwgbGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgc2VsZWN0VXAoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFuY2hvcikge1xuICAgICAgICAgICAgdGhpcy5hbmNob3IgPSB0aGlzLmN1cnNvcjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vdmVDdXJzb3JVcChzZXNzaW9uLCB0aGlzLmN1cnNvcik7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVVcChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuaXNFbXB0eSB8fCB0aGlzLmlzQmFja3dhcmRzID8gdGhpcy5jdXJzb3IgOiB0aGlzLmFuY2hvcjtcbiAgICAgICAgdGhpcy5tb3ZlQ3Vyc29yVXAoc2Vzc2lvbiwgcG9zaXRpb24pO1xuICAgICAgICB0aGlzLmFuY2hvciA9IG51bGw7XG4gICAgfVxuXG4gICAgc2VsZWN0RG93bihzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYW5jaG9yKSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvciA9IHRoaXMuY3Vyc29yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW92ZUN1cnNvckRvd24oc2Vzc2lvbiwgdGhpcy5jdXJzb3IpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlRG93bihzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuaXNFbXB0eSB8fCAhdGhpcy5pc0JhY2t3YXJkcyA/IHRoaXMuY3Vyc29yIDogdGhpcy5hbmNob3I7XG4gICAgICAgIHRoaXMubW92ZUN1cnNvckRvd24oc2Vzc2lvbiwgcG9zaXRpb24pO1xuICAgICAgICB0aGlzLmFuY2hvciA9IG51bGw7XG4gICAgfVxuXG4gICAgc2VsZWN0UmlnaHQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldEN1cnNvclJpZ2h0KHNlc3Npb24pO1xuICAgICAgICB0aGlzLm1vdmVTZWxlY3Rpb24ocG9zaXRpb24pO1xuICAgIH1cblxuICAgIG5hdmlnYXRlUmlnaHQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldEN1cnNvclJpZ2h0KHNlc3Npb24pO1xuICAgICAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihwb3NpdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9ICF0aGlzLmlzQmFja3dhcmRzID8gdGhpcy5jdXJzb3IgOiB0aGlzLmFuY2hvcjtcbiAgICAgICAgICAgIHRoaXMucGxhY2VDdXJzb3IocG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0TGVmdChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0Q3Vyc29yTGVmdChzZXNzaW9uKTtcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZUxlZnQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldEN1cnNvckxlZnQoc2Vzc2lvbik7XG4gICAgICAgICAgICB0aGlzLnBsYWNlQ3Vyc29yKHBvc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5pc0JhY2t3YXJkcyA/IHRoaXMuY3Vyc29yIDogdGhpcy5hbmNob3I7XG4gICAgICAgICAgICB0aGlzLnBsYWNlQ3Vyc29yKHBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdExpbmVTdGFydChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0TGluZVN0YXJ0KHNlc3Npb24sIHRoaXMuY3Vyc29yKTtcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZUxpbmVTdGFydChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0TGluZVN0YXJ0KHNlc3Npb24sIHRoaXMuY3Vyc29yKTtcbiAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgc2VsZWN0TGluZUVuZChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0TGluZUVuZChzZXNzaW9uLCB0aGlzLmN1cnNvcik7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVMaW5lRW5kKHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRMaW5lRW5kKHNlc3Npb24sIHRoaXMuY3Vyc29yKTtcbiAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgc2VsZWN0RmlsZUVuZChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGggPSBzZXNzaW9uLmRvY3VtZW50LmxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaEluZGV4ID0gc2Vzc2lvbi5kb2N1bWVudC5saW5lc1twYXJhZ3JhcGhdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uKG5ldyBDdXJzb3JQYXJhZ3JhcGgocGFyYWdyYXBoLCBwYXJhZ3JhcGhJbmRleCkpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlRmlsZUVuZChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGggPSBzZXNzaW9uLmRvY3VtZW50LmxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaEluZGV4ID0gc2Vzc2lvbi5kb2N1bWVudC5saW5lc1twYXJhZ3JhcGhdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihuZXcgQ3Vyc29yUGFyYWdyYXBoKHBhcmFncmFwaCwgcGFyYWdyYXBoSW5kZXgpKTtcbiAgICB9XG5cbiAgICBzZWxlY3RGaWxlU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbihuZXcgQ3Vyc29yUGFyYWdyYXBoKDAsIDApKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZUZpbGVTdGFydCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihuZXcgQ3Vyc29yUGFyYWdyYXBoKDAsIDApKTtcbiAgICB9XG5cbiAgICBzZWxlY3RXb3JkUmlnaHQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldFdvcmRSaWdodChzZXNzaW9uLCB0aGlzLmN1cnNvcik7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVXb3JkUmlnaHQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldFdvcmRSaWdodChzZXNzaW9uLCB0aGlzLmN1cnNvcik7XG4gICAgICAgIHRoaXMucGxhY2VDdXJzb3IocG9zaXRpb24pO1xuICAgIH1cblxuICAgIHNlbGVjdFdvcmRMZWZ0KHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRXb3JkTGVmdChzZXNzaW9uLCB0aGlzLmN1cnNvcik7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVXb3JkTGVmdChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0V29yZExlZnQoc2Vzc2lvbiwgdGhpcy5jdXJzb3IpO1xuICAgICAgICB0aGlzLnBsYWNlQ3Vyc29yKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVDdXJzb3JVcChzZXNzaW9uOiBFZGl0U2Vzc2lvbiwgcG9zaXRpb246IEN1cnNvclBhcmFncmFwaCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsaW5lID0gUG9zaXRpb25IZWxwZXIuZG9jdW1lbnRUb1NjcmVlbihzZXNzaW9uLCBwb3NpdGlvbi5yb3csIHBvc2l0aW9uLmNvbHVtbik7XG4gICAgICAgIGlmIChsaW5lLnJvdyA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RMaW5lU3RhcnQoc2Vzc2lvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1vdmVUb0xpbmUoc2Vzc2lvbiwgbGluZS5yb3cgLSAxLCBsaW5lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW92ZUN1cnNvckRvd24oc2Vzc2lvbjogRWRpdFNlc3Npb24sIHBvc2l0aW9uOiBDdXJzb3JQYXJhZ3JhcGgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGluZSA9IFBvc2l0aW9uSGVscGVyLmRvY3VtZW50VG9TY3JlZW4oc2Vzc2lvbiwgcG9zaXRpb24ucm93LCBwb3NpdGlvbi5jb2x1bW4pO1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGhzQ291bnQgPSBzZXNzaW9uLnBhZ2VzV3JhcC5wYXJhZ3JhcGhzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbGFzdFBhcmFncmFwaCA9IHNlc3Npb24ucGFnZXNXcmFwLnBhcmFncmFwaHNbcGFyYWdyYXBoc0NvdW50IC0gMV07XG4gICAgICAgIGNvbnN0IGxhc3RQYXJhZ3JhcGhMaW5lID0gbGFzdFBhcmFncmFwaC50ZXh0TGluZXNJbmZvW2xhc3RQYXJhZ3JhcGgudGV4dExpbmVzSW5mby5sZW5ndGggLSAxXS5zY3JlZW5MaW5lO1xuICAgICAgICBpZiAobGluZS5yb3cgPT09IGxhc3RQYXJhZ3JhcGhMaW5lKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdExpbmVFbmQoc2Vzc2lvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1vdmVUb0xpbmUoc2Vzc2lvbiwgbGluZS5yb3cgKyAxLCBsaW5lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW92ZVRvTGluZShzZXNzaW9uOiBFZGl0U2Vzc2lvbiwgbGluZTogbnVtYmVyLCBmcm9tTGluZTogQ3Vyc29yUGFyYWdyYXBoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5rZWVwTGluZVBvc2l0aW9uWCkge1xuICAgICAgICAgICAgdGhpcy5rZWVwTGluZVBvc2l0aW9uWCA9IFBvc2l0aW9uSGVscGVyLnNjcmVlblRvUGl4ZWwoc2Vzc2lvbiwgZnJvbUxpbmUucm93LCBmcm9tTGluZS5jb2x1bW4pLnBhZ2VYO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IFBvc2l0aW9uSGVscGVyLmdldEFwcHJveGltYXRlUG9zaXRpb24oc2Vzc2lvbiwgbGluZSwgdGhpcy5rZWVwTGluZVBvc2l0aW9uWCk7XG4gICAgICAgIHRoaXMuY3Vyc29yID0gUG9zaXRpb25IZWxwZXIuc2NyZWVuVG9Eb2N1bWVudChzZXNzaW9uLCBsaW5lLCBjb2x1bW4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3Vyc29yTGVmdChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IEN1cnNvclBhcmFncmFwaCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnNvci5yb3cgPT09IDAgJiYgdGhpcy5jdXJzb3IuY29sdW1uID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJzb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSBDb250ZW50SGVscGVyLnBhcmFncmFwaFBvc2l0aW9uVG9Eb2N1bWVudEluZGV4KHNlc3Npb24ud3JhcFBhcmFncmFwaEluZGV4LCB0aGlzLmN1cnNvcik7XG4gICAgICAgIHJldHVybiBDb250ZW50SGVscGVyLmRvY3VtZW50SW5kZXhUb1BhcmFncmFwaEluZGV4KHNlc3Npb24ud3JhcFBhcmFncmFwaEluZGV4LCBpbmRleCAtIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3Vyc29yUmlnaHQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiBDdXJzb3JQYXJhZ3JhcGgge1xuICAgICAgICBjb25zdCBsYXN0ID0gc2Vzc2lvbi5wYWdlc1dyYXAucGFyYWdyYXBocy5sZW5ndGggLSAxO1xuICAgICAgICBpZiAodGhpcy5jdXJzb3Iucm93ID09PSBsYXN0ICYmIHRoaXMuY3Vyc29yLmNvbHVtbiA9PT0gc2Vzc2lvbi5kb2N1bWVudC5saW5lc1tsYXN0XS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnNvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IENvbnRlbnRIZWxwZXIucGFyYWdyYXBoUG9zaXRpb25Ub0RvY3VtZW50SW5kZXgoc2Vzc2lvbi53cmFwUGFyYWdyYXBoSW5kZXgsIHRoaXMuY3Vyc29yKTtcbiAgICAgICAgcmV0dXJuIENvbnRlbnRIZWxwZXIuZG9jdW1lbnRJbmRleFRvUGFyYWdyYXBoSW5kZXgoc2Vzc2lvbi53cmFwUGFyYWdyYXBoSW5kZXgsIGluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMaW5lU3RhcnQoc2Vzc2lvbjogRWRpdFNlc3Npb24sIHBvc2l0aW9uOiBDdXJzb3JQYXJhZ3JhcGgpOiBDdXJzb3JQYXJhZ3JhcGgge1xuICAgICAgICBjb25zdCBsaW5lID0gUG9zaXRpb25IZWxwZXIuZG9jdW1lbnRUb1NjcmVlbihzZXNzaW9uLCBwb3NpdGlvbi5yb3csIHBvc2l0aW9uLmNvbHVtbik7XG4gICAgICAgIHJldHVybiBQb3NpdGlvbkhlbHBlci5zY3JlZW5Ub0RvY3VtZW50KHNlc3Npb24sIGxpbmUucm93LCAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExpbmVFbmQoc2Vzc2lvbjogRWRpdFNlc3Npb24sIHBvc2l0aW9uOiBDdXJzb3JQYXJhZ3JhcGgpOiBDdXJzb3JQYXJhZ3JhcGgge1xuICAgICAgICBjb25zdCBsaW5lID0gUG9zaXRpb25IZWxwZXIuZG9jdW1lbnRUb1NjcmVlbihzZXNzaW9uLCBwb3NpdGlvbi5yb3csIHBvc2l0aW9uLmNvbHVtbik7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaExlbmd0aCA9IHNlc3Npb24uZG9jdW1lbnQubGluZXNbcG9zaXRpb24ucm93XS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGxpbmVzQ291bnQgPSBzZXNzaW9uLnBhZ2VzV3JhcC5wYXJhZ3JhcGhzW3Bvc2l0aW9uLnJvd10udGV4dExpbmVzSW5mby5sZW5ndGg7XG4gICAgICAgIGlmIChsaW5lc0NvdW50ID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gUG9zaXRpb25IZWxwZXIuc2NyZWVuVG9Eb2N1bWVudChzZXNzaW9uLCBsaW5lLnJvdywgcGFyYWdyYXBoTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhZ3JhcGhMaW5lID0gbGluZS5yb3cgLSBzZXNzaW9uLndyYXBQYXJhZ3JhcGhMaW5lW3Bvc2l0aW9uLnJvd107XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyO1xuICAgICAgICBpZiAocGFyYWdyYXBoTGluZSA9PT0gMCkge1xuICAgICAgICAgICAgaW5kZXggPSBzZXNzaW9uLndyYXBEYXRhW3Bvc2l0aW9uLnJvd11bMF07XG4gICAgICAgIH0gZWxzZSBpZiAocGFyYWdyYXBoTGluZSA9PT0gbGluZXNDb3VudCAtIDEpIHtcbiAgICAgICAgICAgIGluZGV4ID0gcGFyYWdyYXBoTGVuZ3RoIC0gc2Vzc2lvbi53cmFwRGF0YVtwb3NpdGlvbi5yb3ddW3BhcmFncmFwaExpbmUgLSAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4ID0gc2Vzc2lvbi53cmFwRGF0YVtwb3NpdGlvbi5yb3ddW3BhcmFncmFwaExpbmVdIC0gc2Vzc2lvbi53cmFwRGF0YVtwb3NpdGlvbi5yb3ddW3BhcmFncmFwaExpbmUgLSAxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUG9zaXRpb25IZWxwZXIuc2NyZWVuVG9Eb2N1bWVudChzZXNzaW9uLCBsaW5lLnJvdywgaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0V29yZFJpZ2h0KHNlc3Npb246IEVkaXRTZXNzaW9uLCBwb3NpdGlvbjogQ3Vyc29yUGFyYWdyYXBoKTogQ3Vyc29yUGFyYWdyYXBoIHtcbiAgICAgICAgbGV0IHJvdyA9IHBvc2l0aW9uLnJvdztcbiAgICAgICAgbGV0IGNvbHVtbiA9IHBvc2l0aW9uLmNvbHVtbjtcbiAgICAgICAgY29uc3QgbGluZSA9IHNlc3Npb24uZG9jdW1lbnQubGluZXNbcm93XTtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRMZW5ndGggPSBzZXNzaW9uLmRvY3VtZW50LmxpbmVzLmxlbmd0aDtcbiAgICAgICAgaWYgKHJvdyArIDEgPj0gZG9jdW1lbnRMZW5ndGggJiYgY29sdW1uID09PSBsaW5lLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGxldCByaWdodE9mQ3Vyc29yID0gbGluZS5zdWJzdHJpbmcoY29sdW1uKTtcbiAgICAgICAgaWYgKGNvbHVtbiA9PT0gbGluZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICByb3crKztcbiAgICAgICAgICAgICAgICByaWdodE9mQ3Vyc29yID0gc2Vzc2lvbi5kb2N1bWVudC5saW5lc1tyb3ddO1xuICAgICAgICAgICAgfSB3aGlsZSAocm93IDwgZG9jdW1lbnRMZW5ndGggJiYgL15cXHMqJC8udGVzdChyaWdodE9mQ3Vyc29yKSk7XG4gICAgICAgICAgICBpZiAoIS9eXFxzKy8udGVzdChyaWdodE9mQ3Vyc29yKSkge1xuICAgICAgICAgICAgICAgIHJpZ2h0T2ZDdXJzb3IgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbHVtbiA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNob3J0V29yZEVuZEluZGV4KHNlc3Npb24udG9rZW5SZSwgcmlnaHRPZkN1cnNvcik7XG4gICAgICAgIHJldHVybiBuZXcgQ3Vyc29yUGFyYWdyYXBoKHJvdywgY29sdW1uICsgaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0V29yZExlZnQoc2Vzc2lvbjogRWRpdFNlc3Npb24sIHBvc2l0aW9uOiBDdXJzb3JQYXJhZ3JhcGgpOiBDdXJzb3JQYXJhZ3JhcGgge1xuICAgICAgICBsZXQgcm93ID0gcG9zaXRpb24ucm93O1xuICAgICAgICBsZXQgY29sdW1uID0gcG9zaXRpb24uY29sdW1uO1xuICAgICAgICBpZiAoY29sdW1uID09PSAwICYmIHJvdyA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsaW5lID0gc2Vzc2lvbi5kb2N1bWVudC5saW5lc1tyb3ddLnN1YnN0cmluZygwLCBjb2x1bW4pO1xuICAgICAgICBpZiAoY29sdW1uID09PSAwKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgcm93LS07XG4gICAgICAgICAgICAgICAgbGluZSA9IHNlc3Npb24uZG9jdW1lbnQubGluZXNbcm93XTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHJvdyA+IDAgJiYgL15cXHMqJC8udGVzdChsaW5lKSk7XG4gICAgICAgICAgICBjb2x1bW4gPSBsaW5lLmxlbmd0aDtcbiAgICAgICAgICAgIGlmICghL1xccyskLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgICAgbGluZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlZnRPZkN1cnNvciA9IGxpbmUuc3BsaXQoJycpLnJldmVyc2UoKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNob3J0V29yZEVuZEluZGV4KHNlc3Npb24udG9rZW5SZSwgbGVmdE9mQ3Vyc29yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDdXJzb3JQYXJhZ3JhcGgocm93LCBjb2x1bW4gLSBpbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG9ydFdvcmRFbmRJbmRleCh0b2tlblJlOiBSZWdFeHAsIHJpZ2h0T2ZDdXJzb3I6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyO1xuICAgICAgICB0b2tlblJlLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmICh0b2tlblJlLmV4ZWMocmlnaHRPZkN1cnNvcikpIHtcbiAgICAgICAgICAgIGluZGV4ID0gdG9rZW5SZS5sYXN0SW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMuaGFuZGxlTm9Ub2tlbkZvdW5kKHRva2VuUmUsIHJpZ2h0T2ZDdXJzb3IpO1xuICAgICAgICB9XG4gICAgICAgIHRva2VuUmUubGFzdEluZGV4ID0gMDtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTm9Ub2tlbkZvdW5kKHRva2VuUmU6IFJlZ0V4cCwgcmlnaHRPZkN1cnNvcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2hpdGVzcGFjZVJlID0gL1xccy87XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIHdoaWxlIChyaWdodE9mQ3Vyc29yW2luZGV4XSAmJiB3aGl0ZXNwYWNlUmUudGVzdChyaWdodE9mQ3Vyc29yW2luZGV4XSkpIHtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4IDwgMSkge1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLmhhbmRsZU5vV2hpdGVzcGFjZUZvdW5kKHRva2VuUmUsIHJpZ2h0T2ZDdXJzb3IsIHdoaXRlc3BhY2VSZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTm9XaGl0ZXNwYWNlRm91bmQodG9rZW5SZTogUmVnRXhwLCByaWdodE9mQ3Vyc29yOiBzdHJpbmcsIHdoaXRlc3BhY2VSZTogUmVnRXhwKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgdG9rZW5SZS5sYXN0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAocmlnaHRPZkN1cnNvcltpbmRleF0gJiYgIXRva2VuUmUudGVzdChyaWdodE9mQ3Vyc29yW2luZGV4XSkpIHtcbiAgICAgICAgICAgIHRva2VuUmUubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICBpZiAod2hpdGVzcGFjZVJlLnRlc3QocmlnaHRPZkN1cnNvcltpbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMikge1xuICAgICAgICAgICAgICAgICAgICBpbmRleC0tO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2hpbGUgKHJpZ2h0T2ZDdXJzb3JbaW5kZXhdICYmIHdoaXRlc3BhY2VSZS50ZXN0KHJpZ2h0T2ZDdXJzb3JbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxufVxuIl19
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL3Bvc2l0aW9uaW5nL3NlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhDLE1BQU0sT0FBTyxTQUFTO0lBQXRCO1FBQ0ksV0FBTSxHQUEyQixJQUFJLENBQUM7UUFFdEMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVuQyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRVgsc0JBQWlCLEdBQWtCLElBQUksQ0FBQztJQXNWcEQsQ0FBQztJQXBWRyxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFN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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGVudEhlbHBlciB9IGZyb20gJy4vY29udGVudC5oZWxwZXInO1xuaW1wb3J0IHsgQ29udGVudHNJbnRlcmZhY2UgfSBmcm9tICcuLi9jb250ZW50L2NvbnRlbnRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDdXJzb3JQYXJhZ3JhcGggfSBmcm9tICcuL2N1cnNvci1wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgRWRpdFNlc3Npb24gfSBmcm9tICcuLi9leGVjdXRpb24vZWRpdC5zZXNzaW9uJztcbmltcG9ydCB7IFBvc2l0aW9uSGVscGVyIH0gZnJvbSAnLi9wb3NpdGlvbi5oZWxwZXInO1xuaW1wb3J0IHsgUmFuZ2UgfSBmcm9tICcuL3JhbmdlJztcblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbiB7XG4gICAgYW5jaG9yOiBDdXJzb3JQYXJhZ3JhcGggfCBudWxsID0gbnVsbDtcblxuICAgIGN1cnNvciA9IG5ldyBDdXJzb3JQYXJhZ3JhcGgoMCwgMCk7XG5cbiAgICBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGtlZXBMaW5lUG9zaXRpb25YOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hbmNob3IgPT09IG51bGwgfHwgKHRoaXMuYW5jaG9yLnJvdyA9PT0gdGhpcy5jdXJzb3Iucm93ICYmIHRoaXMuYW5jaG9yLmNvbHVtbiA9PT0gdGhpcy5jdXJzb3IuY29sdW1uKTtcbiAgICB9XG5cbiAgICBnZXQgaXNCYWNrd2FyZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFuY2hvci5yb3cgPiB0aGlzLmN1cnNvci5yb3cgfHwgKHRoaXMuYW5jaG9yLnJvdyA9PT0gdGhpcy5jdXJzb3Iucm93ICYmIHRoaXMuYW5jaG9yLmNvbHVtbiA+IHRoaXMuY3Vyc29yLmNvbHVtbik7XG4gICAgfVxuXG4gICAgZ2V0IHJhbmdlKCk6IFJhbmdlIHtcbiAgICAgICAgY29uc3QgY3Vyc29yID0gbmV3IEN1cnNvclBhcmFncmFwaCh0aGlzLmN1cnNvci5yb3csIHRoaXMuY3Vyc29yLmNvbHVtbik7XG4gICAgICAgIGlmICh0aGlzLmlzRW1wdHkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmFuZ2UoY3Vyc29yLCBjdXJzb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYW5jaG9yID0gbmV3IEN1cnNvclBhcmFncmFwaCh0aGlzLmFuY2hvci5yb3csIHRoaXMuYW5jaG9yLmNvbHVtbik7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQmFja3dhcmRzID8gbmV3IFJhbmdlKGN1cnNvciwgYW5jaG9yKSA6IG5ldyBSYW5nZShhbmNob3IsIGN1cnNvcik7XG4gICAgfVxuXG4gICAgcGxhY2VDdXJzb3IoY3Vyc29yOiBDdXJzb3JQYXJhZ3JhcGgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJzb3IgPSBjdXJzb3I7XG4gICAgICAgIHRoaXMuYW5jaG9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5rZWVwTGluZVBvc2l0aW9uWCA9IG51bGw7XG4gICAgfVxuXG4gICAgbW92ZUN1cnNvcihjdXJzb3I6IEN1cnNvclBhcmFncmFwaCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnNvciA9IGN1cnNvcjtcbiAgICAgICAgdGhpcy5rZWVwTGluZVBvc2l0aW9uWCA9IG51bGw7XG4gICAgfVxuXG4gICAgcGxhY2VTZWxlY3Rpb24oY3Vyc29yOiBDdXJzb3JQYXJhZ3JhcGgsIGFuY2hvcjogQ3Vyc29yUGFyYWdyYXBoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3Vyc29yID0gY3Vyc29yO1xuICAgICAgICB0aGlzLmFuY2hvciA9IGFuY2hvcjtcbiAgICAgICAgdGhpcy5rZWVwTGluZVBvc2l0aW9uWCA9IG51bGw7XG4gICAgfVxuXG4gICAgbW92ZVNlbGVjdGlvbihwb3NpdGlvbjogQ3Vyc29yUGFyYWdyYXBoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hbmNob3IpIHtcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yID0gdGhpcy5jdXJzb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3ZlQ3Vyc29yKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hbmNob3IgPSBudWxsO1xuICAgICAgICB0aGlzLmtlZXBMaW5lUG9zaXRpb25YID0gbnVsbDtcbiAgICB9XG5cbiAgICBkaXNhYmxlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgZW5hYmxlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBzZWxlY3RBbGwobW9kZWw6IENvbnRlbnRzSW50ZXJmYWNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxhc3QgPSBtb2RlbC5wYXJhZ3JhcGhzLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGxhc3QgPiAwID8gbW9kZWwuY29udGVudExlbmd0aCAtIG1vZGVsLnBhcmFncmFwaHNbbGFzdCAtIDFdLmluc2VydEluZGV4IC0gMSA6IG1vZGVsLmNvbnRlbnRMZW5ndGg7XG4gICAgICAgIHRoaXMucGxhY2VTZWxlY3Rpb24obmV3IEN1cnNvclBhcmFncmFwaCgwLCAwKSwgbmV3IEN1cnNvclBhcmFncmFwaChsYXN0LCBsZW5ndGgpKTtcbiAgICB9XG5cbiAgICBzZWxlY3RVcChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYW5jaG9yKSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvciA9IHRoaXMuY3Vyc29yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW92ZUN1cnNvclVwKHNlc3Npb24sIHRoaXMuY3Vyc29yKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVVwKHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5pc0VtcHR5IHx8IHRoaXMuaXNCYWNrd2FyZHMgPyB0aGlzLmN1cnNvciA6IHRoaXMuYW5jaG9yO1xuICAgICAgICB0aGlzLm1vdmVDdXJzb3JVcChzZXNzaW9uLCBwb3NpdGlvbik7XG4gICAgICAgIHRoaXMuYW5jaG9yID0gbnVsbDtcbiAgICB9XG5cbiAgICBzZWxlY3REb3duKHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hbmNob3IpIHtcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yID0gdGhpcy5jdXJzb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3ZlQ3Vyc29yRG93bihzZXNzaW9uLCB0aGlzLmN1cnNvcik7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVEb3duKHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5pc0VtcHR5IHx8ICF0aGlzLmlzQmFja3dhcmRzID8gdGhpcy5jdXJzb3IgOiB0aGlzLmFuY2hvcjtcbiAgICAgICAgdGhpcy5tb3ZlQ3Vyc29yRG93bihzZXNzaW9uLCBwb3NpdGlvbik7XG4gICAgICAgIHRoaXMuYW5jaG9yID0gbnVsbDtcbiAgICB9XG5cbiAgICBzZWxlY3RSaWdodChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0Q3Vyc29yUmlnaHQoc2Vzc2lvbik7XG4gICAgICAgIHRoaXMubW92ZVNlbGVjdGlvbihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVSaWdodChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0VtcHR5KSB7XG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0Q3Vyc29yUmlnaHQoc2Vzc2lvbik7XG4gICAgICAgICAgICB0aGlzLnBsYWNlQ3Vyc29yKHBvc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gIXRoaXMuaXNCYWNrd2FyZHMgPyB0aGlzLmN1cnNvciA6IHRoaXMuYW5jaG9yO1xuICAgICAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RMZWZ0KHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRDdXJzb3JMZWZ0KHNlc3Npb24pO1xuICAgICAgICB0aGlzLm1vdmVTZWxlY3Rpb24ocG9zaXRpb24pO1xuICAgIH1cblxuICAgIG5hdmlnYXRlTGVmdChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0VtcHR5KSB7XG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0Q3Vyc29yTGVmdChzZXNzaW9uKTtcbiAgICAgICAgICAgIHRoaXMucGxhY2VDdXJzb3IocG9zaXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmlzQmFja3dhcmRzID8gdGhpcy5jdXJzb3IgOiB0aGlzLmFuY2hvcjtcbiAgICAgICAgICAgIHRoaXMucGxhY2VDdXJzb3IocG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0TGluZVN0YXJ0KHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRMaW5lU3RhcnQoc2Vzc2lvbiwgdGhpcy5jdXJzb3IpO1xuICAgICAgICB0aGlzLm1vdmVTZWxlY3Rpb24ocG9zaXRpb24pO1xuICAgIH1cblxuICAgIG5hdmlnYXRlTGluZVN0YXJ0KHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRMaW5lU3RhcnQoc2Vzc2lvbiwgdGhpcy5jdXJzb3IpO1xuICAgICAgICB0aGlzLnBsYWNlQ3Vyc29yKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBzZWxlY3RMaW5lRW5kKHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRMaW5lRW5kKHNlc3Npb24sIHRoaXMuY3Vyc29yKTtcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZUxpbmVFbmQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldExpbmVFbmQoc2Vzc2lvbiwgdGhpcy5jdXJzb3IpO1xuICAgICAgICB0aGlzLnBsYWNlQ3Vyc29yKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBzZWxlY3RGaWxlRW5kKHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmFncmFwaCA9IHNlc3Npb24uZGlzcGxheURhdGEucGFyYWdyYXBocy5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGhJbmRleCA9IHNlc3Npb24uZGlzcGxheURhdGEuZ2V0UGFyYWdyYXBoQ29udGVudChwYXJhZ3JhcGgpLmxlbmd0aDtcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uKG5ldyBDdXJzb3JQYXJhZ3JhcGgocGFyYWdyYXBoLCBwYXJhZ3JhcGhJbmRleCkpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlRmlsZUVuZChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGggPSBzZXNzaW9uLmRpc3BsYXlEYXRhLnBhcmFncmFwaHMubGVuZ3RoIC0gMTtcbiAgICAgICAgY29uc3QgcGFyYWdyYXBoSW5kZXggPSBzZXNzaW9uLmRpc3BsYXlEYXRhLmdldFBhcmFncmFwaENvbnRlbnQocGFyYWdyYXBoKS5sZW5ndGg7XG4gICAgICAgIHRoaXMucGxhY2VDdXJzb3IobmV3IEN1cnNvclBhcmFncmFwaChwYXJhZ3JhcGgsIHBhcmFncmFwaEluZGV4KSk7XG4gICAgfVxuXG4gICAgc2VsZWN0RmlsZVN0YXJ0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vdmVTZWxlY3Rpb24obmV3IEN1cnNvclBhcmFncmFwaCgwLCAwKSk7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVGaWxlU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGxhY2VDdXJzb3IobmV3IEN1cnNvclBhcmFncmFwaCgwLCAwKSk7XG4gICAgfVxuXG4gICAgc2VsZWN0V29yZFJpZ2h0KHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRXb3JkUmlnaHQoc2Vzc2lvbiwgdGhpcy5jdXJzb3IpO1xuICAgICAgICB0aGlzLm1vdmVTZWxlY3Rpb24ocG9zaXRpb24pO1xuICAgIH1cblxuICAgIG5hdmlnYXRlV29yZFJpZ2h0KHNlc3Npb246IEVkaXRTZXNzaW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRXb3JkUmlnaHQoc2Vzc2lvbiwgdGhpcy5jdXJzb3IpO1xuICAgICAgICB0aGlzLnBsYWNlQ3Vyc29yKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBzZWxlY3RXb3JkTGVmdChzZXNzaW9uOiBFZGl0U2Vzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0V29yZExlZnQoc2Vzc2lvbiwgdGhpcy5jdXJzb3IpO1xuICAgICAgICB0aGlzLm1vdmVTZWxlY3Rpb24ocG9zaXRpb24pO1xuICAgIH1cblxuICAgIG5hdmlnYXRlV29yZExlZnQoc2Vzc2lvbjogRWRpdFNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldFdvcmRMZWZ0KHNlc3Npb24sIHRoaXMuY3Vyc29yKTtcbiAgICAgICAgdGhpcy5wbGFjZUN1cnNvcihwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVXAoc2Vzc2lvbjogRWRpdFNlc3Npb24sIHBvc2l0aW9uOiBDdXJzb3JQYXJhZ3JhcGgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGluZSA9IFBvc2l0aW9uSGVscGVyLmRvY3VtZW50VG9TY3JlZW4oc2Vzc2lvbiwgcG9zaXRpb24ucm93LCBwb3NpdGlvbi5jb2x1bW4pO1xuICAgICAgICBpZiAobGluZS5yb3cgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0TGluZVN0YXJ0KHNlc3Npb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tb3ZlVG9MaW5lKHNlc3Npb24sIGxpbmUucm93IC0gMSwgbGluZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVDdXJzb3JEb3duKHNlc3Npb246IEVkaXRTZXNzaW9uLCBwb3NpdGlvbjogQ3Vyc29yUGFyYWdyYXBoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBQb3NpdGlvbkhlbHBlci5kb2N1bWVudFRvU2NyZWVuKHNlc3Npb24sIHBvc2l0aW9uLnJvdywgcG9zaXRpb24uY29sdW1uKTtcbiAgICAgICAgY29uc3QgbGFzdFBhcmFncmFwaHNJbmRleCA9IHNlc3Npb24uZGlzcGxheURhdGEucGFyYWdyYXBocy5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBsYXN0UGFyYWdyYXBoID0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5nZXRQYXJhZ3JhcGhTZXR0aW5ncyhsYXN0UGFyYWdyYXBoc0luZGV4KTtcbiAgICAgICAgY29uc3QgbGFzdFBhcmFncmFwaExpbmUgPSBsYXN0UGFyYWdyYXBoLnRleHRMaW5lc0luZm9bbGFzdFBhcmFncmFwaC50ZXh0TGluZXNJbmZvLmxlbmd0aCAtIDFdLnNjcmVlbkxpbmU7XG4gICAgICAgIGlmIChsaW5lLnJvdyA9PT0gbGFzdFBhcmFncmFwaExpbmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0TGluZUVuZChzZXNzaW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubW92ZVRvTGluZShzZXNzaW9uLCBsaW5lLnJvdyArIDEsIGxpbmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZlVG9MaW5lKHNlc3Npb246IEVkaXRTZXNzaW9uLCBsaW5lOiBudW1iZXIsIGZyb21MaW5lOiBDdXJzb3JQYXJhZ3JhcGgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmtlZXBMaW5lUG9zaXRpb25YKSB7XG4gICAgICAgICAgICB0aGlzLmtlZXBMaW5lUG9zaXRpb25YID0gUG9zaXRpb25IZWxwZXIuc2NyZWVuVG9QaXhlbChzZXNzaW9uLCBmcm9tTGluZS5yb3csIGZyb21MaW5lLmNvbHVtbikucGFnZVg7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29sdW1uID0gUG9zaXRpb25IZWxwZXIuZ2V0QXBwcm94aW1hdGVQb3NpdGlvbihzZXNzaW9uLCBsaW5lLCB0aGlzLmtlZXBMaW5lUG9zaXRpb25YKTtcbiAgICAgICAgdGhpcy5jdXJzb3IgPSBQb3NpdGlvbkhlbHBlci5zY3JlZW5Ub0RvY3VtZW50KHNlc3Npb24sIGxpbmUsIGNvbHVtbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDdXJzb3JMZWZ0KHNlc3Npb246IEVkaXRTZXNzaW9uKTogQ3Vyc29yUGFyYWdyYXBoIHtcbiAgICAgICAgaWYgKHRoaXMuY3Vyc29yLnJvdyA9PT0gMCAmJiB0aGlzLmN1cnNvci5jb2x1bW4gPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnNvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IENvbnRlbnRIZWxwZXIucGFyYWdyYXBoUG9zaXRpb25Ub0RvY3VtZW50SW5kZXgoc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYXJhZ3JhcGhzLCB0aGlzLmN1cnNvcik7XG4gICAgICAgIHJldHVybiBDb250ZW50SGVscGVyLmRvY3VtZW50SW5kZXhUb1BhcmFncmFwaEluZGV4KHNlc3Npb24uZGlzcGxheURhdGEucGFyYWdyYXBocywgaW5kZXggLSAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEN1cnNvclJpZ2h0KHNlc3Npb246IEVkaXRTZXNzaW9uKTogQ3Vyc29yUGFyYWdyYXBoIHtcbiAgICAgICAgY29uc3QgbGFzdCA9IHNlc3Npb24uZGlzcGxheURhdGEucGFyYWdyYXBocy5sZW5ndGggLSAxO1xuICAgICAgICBpZiAodGhpcy5jdXJzb3Iucm93ID09PSBsYXN0ICYmIHRoaXMuY3Vyc29yLmNvbHVtbiA9PT0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5nZXRQYXJhZ3JhcGhDb250ZW50KGxhc3QpLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3Vyc29yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gQ29udGVudEhlbHBlci5wYXJhZ3JhcGhQb3NpdGlvblRvRG9jdW1lbnRJbmRleChzZXNzaW9uLmRpc3BsYXlEYXRhLnBhcmFncmFwaHMsIHRoaXMuY3Vyc29yKTtcbiAgICAgICAgcmV0dXJuIENvbnRlbnRIZWxwZXIuZG9jdW1lbnRJbmRleFRvUGFyYWdyYXBoSW5kZXgoc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYXJhZ3JhcGhzLCBpbmRleCArIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGluZVN0YXJ0KHNlc3Npb246IEVkaXRTZXNzaW9uLCBwb3NpdGlvbjogQ3Vyc29yUGFyYWdyYXBoKTogQ3Vyc29yUGFyYWdyYXBoIHtcbiAgICAgICAgY29uc3QgbGluZSA9IFBvc2l0aW9uSGVscGVyLmRvY3VtZW50VG9TY3JlZW4oc2Vzc2lvbiwgcG9zaXRpb24ucm93LCBwb3NpdGlvbi5jb2x1bW4pO1xuICAgICAgICByZXR1cm4gUG9zaXRpb25IZWxwZXIuc2NyZWVuVG9Eb2N1bWVudChzZXNzaW9uLCBsaW5lLnJvdywgMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMaW5lRW5kKHNlc3Npb246IEVkaXRTZXNzaW9uLCBwb3NpdGlvbjogQ3Vyc29yUGFyYWdyYXBoKTogQ3Vyc29yUGFyYWdyYXBoIHtcbiAgICAgICAgY29uc3QgbGluZSA9IFBvc2l0aW9uSGVscGVyLmRvY3VtZW50VG9TY3JlZW4oc2Vzc2lvbiwgcG9zaXRpb24ucm93LCBwb3NpdGlvbi5jb2x1bW4pO1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGhMZW5ndGggPSBzZXNzaW9uLmRpc3BsYXlEYXRhLmdldFBhcmFncmFwaENvbnRlbnQocG9zaXRpb24ucm93KS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGxpbmVzQ291bnQgPSBzZXNzaW9uLmRpc3BsYXlEYXRhLmdldFBhcmFncmFwaFNldHRpbmdzKHBvc2l0aW9uLnJvdykudGV4dExpbmVzSW5mby5sZW5ndGg7XG4gICAgICAgIGlmIChsaW5lc0NvdW50ID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gUG9zaXRpb25IZWxwZXIuc2NyZWVuVG9Eb2N1bWVudChzZXNzaW9uLCBsaW5lLnJvdywgcGFyYWdyYXBoTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhZ3JhcGhMaW5lID0gbGluZS5yb3cgLSBzZXNzaW9uLmRpc3BsYXlEYXRhLnBhcmFncmFwaHNbcG9zaXRpb24ucm93XS5saW5lTnVtYmVyO1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlcjtcbiAgICAgICAgaWYgKHBhcmFncmFwaExpbmUgPT09IDApIHtcbiAgICAgICAgICAgIGluZGV4ID0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYXJhZ3JhcGhzW3Bvc2l0aW9uLnJvd10ubmV4dExpbmVJbmRleGVzWzBdO1xuICAgICAgICB9IGVsc2UgaWYgKHBhcmFncmFwaExpbmUgPT09IGxpbmVzQ291bnQgLSAxKSB7XG4gICAgICAgICAgICBpbmRleCA9IHBhcmFncmFwaExlbmd0aCAtIHNlc3Npb24uZGlzcGxheURhdGEucGFyYWdyYXBoc1twb3NpdGlvbi5yb3ddLm5leHRMaW5lSW5kZXhlc1twYXJhZ3JhcGhMaW5lIC0gMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRleCA9XG4gICAgICAgICAgICAgICAgc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYXJhZ3JhcGhzW3Bvc2l0aW9uLnJvd10ubmV4dExpbmVJbmRleGVzW3BhcmFncmFwaExpbmVdIC1cbiAgICAgICAgICAgICAgICBzZXNzaW9uLmRpc3BsYXlEYXRhLnBhcmFncmFwaHNbcG9zaXRpb24ucm93XS5uZXh0TGluZUluZGV4ZXNbcGFyYWdyYXBoTGluZSAtIDFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQb3NpdGlvbkhlbHBlci5zY3JlZW5Ub0RvY3VtZW50KHNlc3Npb24sIGxpbmUucm93LCBpbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRXb3JkUmlnaHQoc2Vzc2lvbjogRWRpdFNlc3Npb24sIHBvc2l0aW9uOiBDdXJzb3JQYXJhZ3JhcGgpOiBDdXJzb3JQYXJhZ3JhcGgge1xuICAgICAgICBsZXQgcm93ID0gcG9zaXRpb24ucm93O1xuICAgICAgICBsZXQgY29sdW1uID0gcG9zaXRpb24uY29sdW1uO1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGhDb250ZW50ID0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5nZXRQYXJhZ3JhcGhDb250ZW50KHJvdyk7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50TGVuZ3RoID0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5wYXJhZ3JhcGhzLmxlbmd0aDtcbiAgICAgICAgaWYgKHJvdyArIDEgPj0gZG9jdW1lbnRMZW5ndGggJiYgY29sdW1uID09PSBwYXJhZ3JhcGhDb250ZW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGxldCByaWdodE9mQ3Vyc29yID0gcGFyYWdyYXBoQ29udGVudC5zdWJzdHJpbmcoY29sdW1uKTtcbiAgICAgICAgaWYgKGNvbHVtbiA9PT0gcGFyYWdyYXBoQ29udGVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICByb3crKztcbiAgICAgICAgICAgICAgICByaWdodE9mQ3Vyc29yID0gc2Vzc2lvbi5kaXNwbGF5RGF0YS5nZXRQYXJhZ3JhcGhDb250ZW50KHJvdyk7XG4gICAgICAgICAgICB9IHdoaWxlIChyb3cgPCBkb2N1bWVudExlbmd0aCAmJiAvXlxccyokLy50ZXN0KHJpZ2h0T2ZDdXJzb3IpKTtcbiAgICAgICAgICAgIGlmICghL15cXHMrLy50ZXN0KHJpZ2h0T2ZDdXJzb3IpKSB7XG4gICAgICAgICAgICAgICAgcmlnaHRPZkN1cnNvciA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sdW1uID0gMDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2hvcnRXb3JkRW5kSW5kZXgoc2Vzc2lvbi50b2tlblJlLCByaWdodE9mQ3Vyc29yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDdXJzb3JQYXJhZ3JhcGgocm93LCBjb2x1bW4gKyBpbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRXb3JkTGVmdChzZXNzaW9uOiBFZGl0U2Vzc2lvbiwgcG9zaXRpb246IEN1cnNvclBhcmFncmFwaCk6IEN1cnNvclBhcmFncmFwaCB7XG4gICAgICAgIGxldCByb3cgPSBwb3NpdGlvbi5yb3c7XG4gICAgICAgIGxldCBjb2x1bW4gPSBwb3NpdGlvbi5jb2x1bW47XG4gICAgICAgIGlmIChjb2x1bW4gPT09IDAgJiYgcm93ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb247XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhcmFncmFwaENvbnRlbnQgPSBzZXNzaW9uLmRpc3BsYXlEYXRhLmdldFBhcmFncmFwaENvbnRlbnQocm93KS5zdWJzdHJpbmcoMCwgY29sdW1uKTtcbiAgICAgICAgaWYgKGNvbHVtbiA9PT0gMCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHJvdy0tO1xuICAgICAgICAgICAgICAgIHBhcmFncmFwaENvbnRlbnQgPSBzZXNzaW9uLmRpc3BsYXlEYXRhLmdldFBhcmFncmFwaENvbnRlbnQocm93KTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHJvdyA+IDAgJiYgL15cXHMqJC8udGVzdChwYXJhZ3JhcGhDb250ZW50KSk7XG4gICAgICAgICAgICBjb2x1bW4gPSBwYXJhZ3JhcGhDb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgIGlmICghL1xccyskLy50ZXN0KHBhcmFncmFwaENvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgcGFyYWdyYXBoQ29udGVudCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlZnRPZkN1cnNvciA9IHBhcmFncmFwaENvbnRlbnQuc3BsaXQoJycpLnJldmVyc2UoKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNob3J0V29yZEVuZEluZGV4KHNlc3Npb24udG9rZW5SZSwgbGVmdE9mQ3Vyc29yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDdXJzb3JQYXJhZ3JhcGgocm93LCBjb2x1bW4gLSBpbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG9ydFdvcmRFbmRJbmRleCh0b2tlblJlOiBSZWdFeHAsIHJpZ2h0T2ZDdXJzb3I6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyO1xuICAgICAgICB0b2tlblJlLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmICh0b2tlblJlLmV4ZWMocmlnaHRPZkN1cnNvcikpIHtcbiAgICAgICAgICAgIGluZGV4ID0gdG9rZW5SZS5sYXN0SW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMuaGFuZGxlTm9Ub2tlbkZvdW5kKHRva2VuUmUsIHJpZ2h0T2ZDdXJzb3IpO1xuICAgICAgICB9XG4gICAgICAgIHRva2VuUmUubGFzdEluZGV4ID0gMDtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTm9Ub2tlbkZvdW5kKHRva2VuUmU6IFJlZ0V4cCwgcmlnaHRPZkN1cnNvcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2hpdGVzcGFjZVJlID0gL1xccy87XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIHdoaWxlIChyaWdodE9mQ3Vyc29yW2luZGV4XSAmJiB3aGl0ZXNwYWNlUmUudGVzdChyaWdodE9mQ3Vyc29yW2luZGV4XSkpIHtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4IDwgMSkge1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLmhhbmRsZU5vV2hpdGVzcGFjZUZvdW5kKHRva2VuUmUsIHJpZ2h0T2ZDdXJzb3IsIHdoaXRlc3BhY2VSZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTm9XaGl0ZXNwYWNlRm91bmQodG9rZW5SZTogUmVnRXhwLCByaWdodE9mQ3Vyc29yOiBzdHJpbmcsIHdoaXRlc3BhY2VSZTogUmVnRXhwKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgdG9rZW5SZS5sYXN0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAocmlnaHRPZkN1cnNvcltpbmRleF0gJiYgIXRva2VuUmUudGVzdChyaWdodE9mQ3Vyc29yW2luZGV4XSkpIHtcbiAgICAgICAgICAgIHRva2VuUmUubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICBpZiAod2hpdGVzcGFjZVJlLnRlc3QocmlnaHRPZkN1cnNvcltpbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMikge1xuICAgICAgICAgICAgICAgICAgICBpbmRleC0tO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2hpbGUgKHJpZ2h0T2ZDdXJzb3JbaW5kZXhdICYmIHdoaXRlc3BhY2VSZS50ZXN0KHJpZ2h0T2ZDdXJzb3JbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContentStyleHelper } from './content/helpers/content-style.helper';
|
|
2
|
-
import { DEFAULT_HEADINGS, DEFAULT_PARAGRAPH_STYLE, DEFAULT_TEXT_STYLE } from './content/constants/editor.const';
|
|
2
|
+
import { DEFAULT_HEADINGS, DEFAULT_PARAGRAPH_STYLE, DEFAULT_TAB_WIDTH, DEFAULT_TEXT_STYLE } from './content/constants/editor.const';
|
|
3
3
|
import { DocumentInfo } from './content/constants/document-info.const';
|
|
4
4
|
import { DocxModel } from '../models/generated/docx.model';
|
|
5
5
|
import { FormatModel } from '../models/generated/format.model';
|
|
@@ -84,8 +84,9 @@ export class RevisionHelper {
|
|
|
84
84
|
marginTop: pageMargin.top,
|
|
85
85
|
tables: [],
|
|
86
86
|
numberings: [],
|
|
87
|
-
tabs: []
|
|
87
|
+
tabs: [],
|
|
88
|
+
defaultTabWidth: DEFAULT_TAB_WIDTH
|
|
88
89
|
});
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2aXNpb24uaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL3JldmlzaW9uLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBSWhGLE1BQU0sT0FBTyxjQUFjO0lBQ3ZCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxRQUF1QixFQUFFLFVBQTRCO1FBQ2xGLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFD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QUFnQjtZQUMxQixVQUFVLEVBQUUsWUFBWSxDQUFDLE1BQU07WUFDL0IsU0FBUyxFQUFFLFlBQVksQ0FBQyxLQUFLO1lBQzdCLFVBQVUsRUFBRTtnQkFDUixJQUFJLGNBQWMsQ0FBQztvQkFDZixXQUFXLEVBQUUsQ0FBQztvQkFDZCxjQUFjLEVBQUUsdUJBQXVCO2lCQUMxQyxDQUFDO2FBQ0w7WUFDRCxNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxFQUFFO1lBQ1osT0FBTyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUN6RixNQUFNLEVBQUUsRUFBRTtZQUNWLEtBQUssRUFBRSxFQUFFO1lBQ1QsWUFBWSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1lBQy9CLFlBQVksRUFBRSxVQUFVLENBQUMsTUFBTTtZQUMvQixZQUFZLEVBQUUsVUFBVSxDQUFDLE1BQU07WUFDL0IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1lBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsS0FBSztZQUM3QixTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUc7WUFDekIsTUFBTSxFQUFFLEVBQUU7WUFDVixVQUFVLEVBQUUsRUFBRTtZQUNkLElBQUksRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGVudHNJbnRlcmZhY2UgfSBmcm9tICcuL2NvbnRlbnQvY29udGVudHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbnRlbnRTdHlsZUhlbHBlciB9IGZyb20gJy4vY29udGVudC9oZWxwZXJzL2NvbnRlbnQtc3R5bGUuaGVscGVyJztcbmltcG9ydCB7IERFRkFVTFRfSEVBRElOR1MsIERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLCBERUZBVUxUX1RFWFRfU1RZTEUgfSBmcm9tICcuL2NvbnRlbnQvY29uc3RhbnRzL2VkaXRvci5jb25zdCc7XG5pbXBvcnQgeyBEb2N1bWVudEluZm8gfSBmcm9tICcuL2NvbnRlbnQvY29uc3RhbnRzL2RvY3VtZW50LWluZm8uY29uc3QnO1xuaW1wb3J0IHsgRG9jeE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2dlbmVyYXRlZC9kb2N4Lm1vZGVsJztcbmltcG9ydCB7IEVkZ2VNb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvZWRnZS5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtYXRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvZm9ybWF0Lm1vZGVsJztcbmltcG9ydCB7IE1hcmdpbk1vZGVsIH0gZnJvbSAnLi9jb250ZW50L21hcmdpbi5tb2RlbCc7XG5pbXBvcnQgeyBPcGVyYXRpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvb3BlcmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IE9wZXJhdGlvbnNIZWxwZXIgfSBmcm9tICcuL29wZXJhdGlvbnMvb3BlcmF0aW9ucy1oZWxwZXIuaGVscGVyJztcbmltcG9ydCB7IFBhcmFncmFwaE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgUGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFJldmlzaW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGVkL3JldmlzaW9uLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYmxlLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFJldmlzaW9uSGVscGVyIHtcbiAgICBzdGF0aWMgYXBwbHlPcGVyYXRpb25zVG9SZXZpc2lvbihyZXZpc2lvbjogUmV2aXNpb25Nb2RlbCwgb3BlcmF0aW9uczogT3BlcmF0aW9uTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBvcGVyYXRpb25zLnNvcnQoKGEsIGIpID0+IGEuY3JlYXRlVGltZSAtIGIuY3JlYXRlVGltZSk7XG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSBvcGVyYXRpb25zLm1hcCh4ID0+IHguY29tbWFuZCk7XG4gICAgICAgIE9wZXJhdGlvbnNIZWxwZXIuYXBwbHlPcGVyYXRpb25zKHJldmlzaW9uLmNvbnRlbnQsIGFjdGlvbnMpO1xuICAgIH1cblxuICAgIHN0YXRpYyBmaWxsVGFibGVzRGVmYXVsdFN0eWxlcyh0YWJsZXM6IFRhYmxlTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgdGFibGUucm93cykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2VsbCBvZiByb3cuY2VsbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxsRGVmYXVsdFN0eWxlcyhjZWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZmlsbEVkZ2VzRGVmYXVsdFN0eWxlcyhoZWFkZXJzOiBFZGdlTW9kZWxbXSwgZm9vdGVyczogRWRnZU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBoZWFkZXIgb2YgaGVhZGVycykge1xuICAgICAgICAgICAgdGhpcy5maWxsRGVmYXVsdFN0eWxlcyhoZWFkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmb290ZXIgb2YgZm9vdGVycykge1xuICAgICAgICAgICAgdGhpcy5maWxsRGVmYXVsdFN0eWxlcyhmb290ZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbGxEZWZhdWx0U3R5bGVzKGNvbnRlbnRzOiBDb250ZW50c0ludGVyZmFjZSk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IGZvcm1hdCBvZiBjb250ZW50cy5mb3JtYXRzKSB7XG4gICAgICAgICAgICBmb3JtYXQudGV4dFN0eWxlID0gQ29udGVudFN0eWxlSGVscGVyLmNvbWJpbmVUZXh0U3R5bGVzKGZvcm1hdC50ZXh0U3R5bGUsIERFRkFVTFRfVEVYVF9TVFlMRSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHBhcmFncmFwaCBvZiBjb250ZW50cy5wYXJhZ3JhcGhzKSB7XG4gICAgICAgICAgICBwYXJhZ3JhcGgucGFyYWdyYXBoU3R5bGUgPSB0aGlzLmZpbGxQYXJhZ3JhcGhTdHlsZU1vZGVsKHBhcmFncmFwaC5wYXJhZ3JhcGhTdHlsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZmlsbFBhcmFncmFwaFN0eWxlTW9kZWwocGFyYWdyYXBoU3R5bGU6IFBhcmFncmFwaFN0eWxlTW9kZWwpOiBQYXJhZ3JhcGhTdHlsZU1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJhZ3JhcGhTdHlsZU1vZGVsKHtcbiAgICAgICAgICAgIGFsaWdubWVudDogcGFyYWdyYXBoU3R5bGUuYWxpZ25tZW50ID8/IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLmFsaWdubWVudCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcGFyYWdyYXBoU3R5bGUuYmFja2dyb3VuZENvbG9yID8/IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGhlYWRpbmdTdHlsZUlkOiBwYXJhZ3JhcGhTdHlsZS5oZWFkaW5nU3R5bGVJZCxcbiAgICAgICAgICAgIGluZGVudEZpcnN0TGluZTogcGFyYWdyYXBoU3R5bGUuaW5kZW50Rmlyc3RMaW5lID8/IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLmluZGVudEZpcnN0TGluZSxcbiAgICAgICAgICAgIGluZGVudEhhbmdpbmc6IHBhcmFncmFwaFN0eWxlLmluZGVudEhhbmdpbmcgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuaW5kZW50SGFuZ2luZyxcbiAgICAgICAgICAgIGluZGVudExlZnQ6IHBhcmFncmFwaFN0eWxlLmluZGVudExlZnQgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuaW5kZW50TGVmdCxcbiAgICAgICAgICAgIGluZGVudFJpZ2h0OiBwYXJhZ3JhcGhTdHlsZS5pbmRlbnRSaWdodCA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5pbmRlbnRSaWdodCxcbiAgICAgICAgICAgIGxpbmVTcGFjaW5nOiBwYXJhZ3JhcGhTdHlsZS5saW5lU3BhY2luZyA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5saW5lU3BhY2luZyxcbiAgICAgICAgICAgIHNwYWNlQWZ0ZXI6IHBhcmFncmFwaFN0eWxlLnNwYWNlQWZ0ZXIgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuc3BhY2VBZnRlcixcbiAgICAgICAgICAgIHNwYWNlQmVmb3JlOiBwYXJhZ3JhcGhTdHlsZS5zcGFjZUJlZm9yZSA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5zcGFjZUJlZm9yZSxcbiAgICAgICAgICAgIGNvbnRleHR1YWxTcGFjaW5nOiBwYXJhZ3JhcGhTdHlsZS5jb250ZXh0dWFsU3BhY2luZyA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5jb250ZXh0dWFsU3BhY2luZyxcbiAgICAgICAgICAgIGJlZm9yZUF1dG9zcGFjaW5nOiBwYXJhZ3JhcGhTdHlsZS5iZWZvcmVBdXRvc3BhY2luZyA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5iZWZvcmVBdXRvc3BhY2luZyxcbiAgICAgICAgICAgIGFmdGVyQXV0b3NwYWNpbmc6IHBhcmFncmFwaFN0eWxlLmFmdGVyQXV0b3NwYWNpbmcgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuYWZ0ZXJBdXRvc3BhY2luZyxcbiAgICAgICAgICAgIG51bWJlcmluZ0lkOiBwYXJhZ3JhcGhTdHlsZS5udW1iZXJpbmdJZCA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5udW1iZXJpbmdJZCxcbiAgICAgICAgICAgIG51bWJlcmluZ0xldmVsOiBwYXJhZ3JhcGhTdHlsZS5udW1iZXJpbmdMZXZlbCA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5udW1iZXJpbmdMZXZlbFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0RW1wdHlEb2N4TW9kZWwoKTogRG9jeE1vZGVsIHtcbiAgICAgICAgY29uc3QgcGFnZU1hcmdpbiA9IG5ldyBNYXJnaW5Nb2RlbCgpO1xuICAgICAgICByZXR1cm4gbmV3IERvY3hNb2RlbCh7XG4gICAgICAgICAgICBjb250ZW50OiAnJyxcbiAgICAgICAgICAgIGNvbnRlbnRMZW5ndGg6IDAsXG4gICAgICAgICAgICBoZWFkaW5nczogREVGQVVMVF9IRUFESU5HUyxcbiAgICAgICAgICAgIHBhZ2VIZWlnaHQ6IERvY3VtZW50SW5mby5oZWlnaHQsXG4gICAgICAgICAgICBwYWdlV2lkdGg6IERvY3VtZW50SW5mby53aWR0aCxcbiAgICAgICAgICAgIHBhcmFncmFwaHM6IFtcbiAgICAgICAgICAgICAgICBuZXcgUGFyYWdyYXBoTW9kZWwoe1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3R5bGU6IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBicmVha3M6IFtdLFxuICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxuICAgICAgICAgICAgZm9ybWF0czogW25ldyBGb3JtYXRNb2RlbCh7IHN0YXJ0SW5kZXg6IDAsIGVuZEluZGV4OiAwLCB0ZXh0U3R5bGU6IERFRkFVTFRfVEVYVF9TVFlMRSB9KV0sXG4gICAgICAgICAgICBpbWFnZXM6IFtdLFxuICAgICAgICAgICAgbGlua3M6IFtdLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBwYWdlTWFyZ2luLmJvdHRvbSxcbiAgICAgICAgICAgIG1hcmdpbkZvb3RlcjogcGFnZU1hcmdpbi5mb290ZXIsXG4gICAgICAgICAgICBtYXJnaW5IZWFkZXI6IHBhZ2VNYXJnaW4uaGVhZGVyLFxuICAgICAgICAgICAgbWFyZ2luTGVmdDogcGFnZU1hcmdpbi5sZWZ0LFxuICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IHBhZ2VNYXJnaW4ucmlnaHQsXG4gICAgICAgICAgICBtYXJnaW5Ub3A6IHBhZ2VNYXJnaW4udG9wLFxuICAgICAgICAgICAgdGFibGVzOiBbXSxcbiAgICAgICAgICAgIG51bWJlcmluZ3M6IFtdLFxuICAgICAgICAgICAgdGFiczogW11cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2aXNpb24uaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL3JldmlzaW9uLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBSWhGLE1BQU0sT0FBTyxjQUFjO0lBQ3ZCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxRQUF1QixFQUFFLFVBQTRCO1FBQ2xGLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE9B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UUFBUSxFQUFFLGdCQUFnQjtZQUMxQixVQUFVLEVBQUUsWUFBWSxDQUFDLE1BQU07WUFDL0IsU0FBUyxFQUFFLFlBQVksQ0FBQyxLQUFLO1lBQzdCLFVBQVUsRUFBRTtnQkFDUixJQUFJLGNBQWMsQ0FBQztvQkFDZixXQUFXLEVBQUUsQ0FBQztvQkFDZCxjQUFjLEVBQUUsdUJBQXVCO2lCQUMxQyxDQUFDO2FBQ0w7WUFDRCxNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxFQUFFO1lBQ1osT0FBTyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUN6RixNQUFNLEVBQUUsRUFBRTtZQUNWLEtBQUssRUFBRSxFQUFFO1lBQ1QsWUFBWSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1lBQy9CLFlBQVksRUFBRSxVQUFVLENBQUMsTUFBTTtZQUMvQixZQUFZLEVBQUUsVUFBVSxDQUFDLE1BQU07WUFDL0IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1lBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsS0FBSztZQUM3QixTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUc7WUFDekIsTUFBTSxFQUFFLEVBQUU7WUFDVixVQUFVLEVBQUUsRUFBRTtZQUNkLElBQUksRUFBRSxFQUFFO1lBQ1IsZUFBZSxFQUFFLGlCQUFpQjtTQUNyQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZW50c0ludGVyZmFjZSB9IGZyb20gJy4vY29udGVudC9jb250ZW50cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29udGVudFN0eWxlSGVscGVyIH0gZnJvbSAnLi9jb250ZW50L2hlbHBlcnMvY29udGVudC1zdHlsZS5oZWxwZXInO1xuaW1wb3J0IHsgREVGQVVMVF9IRUFESU5HUywgREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUsIERFRkFVTFRfVEFCX1dJRFRILCBERUZBVUxUX1RFWFRfU1RZTEUgfSBmcm9tICcuL2NvbnRlbnQvY29uc3RhbnRzL2VkaXRvci5jb25zdCc7XG5pbXBvcnQgeyBEb2N1bWVudEluZm8gfSBmcm9tICcuL2NvbnRlbnQvY29uc3RhbnRzL2RvY3VtZW50LWluZm8uY29uc3QnO1xuaW1wb3J0IHsgRG9jeE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2dlbmVyYXRlZC9kb2N4Lm1vZGVsJztcbmltcG9ydCB7IEVkZ2VNb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvZWRnZS5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtYXRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvZm9ybWF0Lm1vZGVsJztcbmltcG9ydCB7IE1hcmdpbk1vZGVsIH0gZnJvbSAnLi9jb250ZW50L21hcmdpbi5tb2RlbCc7XG5pbXBvcnQgeyBPcGVyYXRpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvb3BlcmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IE9wZXJhdGlvbnNIZWxwZXIgfSBmcm9tICcuL29wZXJhdGlvbnMvb3BlcmF0aW9ucy1oZWxwZXIuaGVscGVyJztcbmltcG9ydCB7IFBhcmFncmFwaE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgUGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFJldmlzaW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGVkL3JldmlzaW9uLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYmxlLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFJldmlzaW9uSGVscGVyIHtcbiAgICBzdGF0aWMgYXBwbHlPcGVyYXRpb25zVG9SZXZpc2lvbihyZXZpc2lvbjogUmV2aXNpb25Nb2RlbCwgb3BlcmF0aW9uczogT3BlcmF0aW9uTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBvcGVyYXRpb25zLnNvcnQoKGEsIGIpID0+IGEuY3JlYXRlVGltZSAtIGIuY3JlYXRlVGltZSk7XG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSBvcGVyYXRpb25zLm1hcCh4ID0+IHguY29tbWFuZCk7XG4gICAgICAgIE9wZXJhdGlvbnNIZWxwZXIuYXBwbHlPcGVyYXRpb25zKHJldmlzaW9uLmNvbnRlbnQsIGFjdGlvbnMpO1xuICAgIH1cblxuICAgIHN0YXRpYyBmaWxsVGFibGVzRGVmYXVsdFN0eWxlcyh0YWJsZXM6IFRhYmxlTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgdGFibGUucm93cykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2VsbCBvZiByb3cuY2VsbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxsRGVmYXVsdFN0eWxlcyhjZWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZmlsbEVkZ2VzRGVmYXVsdFN0eWxlcyhoZWFkZXJzOiBFZGdlTW9kZWxbXSwgZm9vdGVyczogRWRnZU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBoZWFkZXIgb2YgaGVhZGVycykge1xuICAgICAgICAgICAgdGhpcy5maWxsRGVmYXVsdFN0eWxlcyhoZWFkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmb290ZXIgb2YgZm9vdGVycykge1xuICAgICAgICAgICAgdGhpcy5maWxsRGVmYXVsdFN0eWxlcyhmb290ZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbGxEZWZhdWx0U3R5bGVzKGNvbnRlbnRzOiBDb250ZW50c0ludGVyZmFjZSk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IGZvcm1hdCBvZiBjb250ZW50cy5mb3JtYXRzKSB7XG4gICAgICAgICAgICBmb3JtYXQudGV4dFN0eWxlID0gQ29udGVudFN0eWxlSGVscGVyLmNvbWJpbmVUZXh0U3R5bGVzKGZvcm1hdC50ZXh0U3R5bGUsIERFRkFVTFRfVEVYVF9TVFlMRSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHBhcmFncmFwaCBvZiBjb250ZW50cy5wYXJhZ3JhcGhzKSB7XG4gICAgICAgICAgICBwYXJhZ3JhcGgucGFyYWdyYXBoU3R5bGUgPSB0aGlzLmZpbGxQYXJhZ3JhcGhTdHlsZU1vZGVsKHBhcmFncmFwaC5wYXJhZ3JhcGhTdHlsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZmlsbFBhcmFncmFwaFN0eWxlTW9kZWwocGFyYWdyYXBoU3R5bGU6IFBhcmFncmFwaFN0eWxlTW9kZWwpOiBQYXJhZ3JhcGhTdHlsZU1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJhZ3JhcGhTdHlsZU1vZGVsKHtcbiAgICAgICAgICAgIGFsaWdubWVudDogcGFyYWdyYXBoU3R5bGUuYWxpZ25tZW50ID8/IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLmFsaWdubWVudCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcGFyYWdyYXBoU3R5bGUuYmFja2dyb3VuZENvbG9yID8/IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGhlYWRpbmdTdHlsZUlkOiBwYXJhZ3JhcGhTdHlsZS5oZWFkaW5nU3R5bGVJZCxcbiAgICAgICAgICAgIGluZGVudEZpcnN0TGluZTogcGFyYWdyYXBoU3R5bGUuaW5kZW50Rmlyc3RMaW5lID8/IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLmluZGVudEZpcnN0TGluZSxcbiAgICAgICAgICAgIGluZGVudEhhbmdpbmc6IHBhcmFncmFwaFN0eWxlLmluZGVudEhhbmdpbmcgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuaW5kZW50SGFuZ2luZyxcbiAgICAgICAgICAgIGluZGVudExlZnQ6IHBhcmFncmFwaFN0eWxlLmluZGVudExlZnQgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuaW5kZW50TGVmdCxcbiAgICAgICAgICAgIGluZGVudFJpZ2h0OiBwYXJhZ3JhcGhTdHlsZS5pbmRlbnRSaWdodCA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5pbmRlbnRSaWdodCxcbiAgICAgICAgICAgIGxpbmVTcGFjaW5nOiBwYXJhZ3JhcGhTdHlsZS5saW5lU3BhY2luZyA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5saW5lU3BhY2luZyxcbiAgICAgICAgICAgIHNwYWNlQWZ0ZXI6IHBhcmFncmFwaFN0eWxlLnNwYWNlQWZ0ZXIgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuc3BhY2VBZnRlcixcbiAgICAgICAgICAgIHNwYWNlQmVmb3JlOiBwYXJhZ3JhcGhTdHlsZS5zcGFjZUJlZm9yZSA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5zcGFjZUJlZm9yZSxcbiAgICAgICAgICAgIGNvbnRleHR1YWxTcGFjaW5nOiBwYXJhZ3JhcGhTdHlsZS5jb250ZXh0dWFsU3BhY2luZyA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5jb250ZXh0dWFsU3BhY2luZyxcbiAgICAgICAgICAgIGJlZm9yZUF1dG9zcGFjaW5nOiBwYXJhZ3JhcGhTdHlsZS5iZWZvcmVBdXRvc3BhY2luZyA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5iZWZvcmVBdXRvc3BhY2luZyxcbiAgICAgICAgICAgIGFmdGVyQXV0b3NwYWNpbmc6IHBhcmFncmFwaFN0eWxlLmFmdGVyQXV0b3NwYWNpbmcgPz8gREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuYWZ0ZXJBdXRvc3BhY2luZyxcbiAgICAgICAgICAgIG51bWJlcmluZ0lkOiBwYXJhZ3JhcGhTdHlsZS5udW1iZXJpbmdJZCA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5udW1iZXJpbmdJZCxcbiAgICAgICAgICAgIG51bWJlcmluZ0xldmVsOiBwYXJhZ3JhcGhTdHlsZS5udW1iZXJpbmdMZXZlbCA/PyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5udW1iZXJpbmdMZXZlbFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0RW1wdHlEb2N4TW9kZWwoKTogRG9jeE1vZGVsIHtcbiAgICAgICAgY29uc3QgcGFnZU1hcmdpbiA9IG5ldyBNYXJnaW5Nb2RlbCgpO1xuICAgICAgICByZXR1cm4gbmV3IERvY3hNb2RlbCh7XG4gICAgICAgICAgICBjb250ZW50OiAnJyxcbiAgICAgICAgICAgIGNvbnRlbnRMZW5ndGg6IDAsXG4gICAgICAgICAgICBoZWFkaW5nczogREVGQVVMVF9IRUFESU5HUyxcbiAgICAgICAgICAgIHBhZ2VIZWlnaHQ6IERvY3VtZW50SW5mby5oZWlnaHQsXG4gICAgICAgICAgICBwYWdlV2lkdGg6IERvY3VtZW50SW5mby53aWR0aCxcbiAgICAgICAgICAgIHBhcmFncmFwaHM6IFtcbiAgICAgICAgICAgICAgICBuZXcgUGFyYWdyYXBoTW9kZWwoe1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3R5bGU6IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBicmVha3M6IFtdLFxuICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxuICAgICAgICAgICAgZm9ybWF0czogW25ldyBGb3JtYXRNb2RlbCh7IHN0YXJ0SW5kZXg6IDAsIGVuZEluZGV4OiAwLCB0ZXh0U3R5bGU6IERFRkFVTFRfVEVYVF9TVFlMRSB9KV0sXG4gICAgICAgICAgICBpbWFnZXM6IFtdLFxuICAgICAgICAgICAgbGlua3M6IFtdLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBwYWdlTWFyZ2luLmJvdHRvbSxcbiAgICAgICAgICAgIG1hcmdpbkZvb3RlcjogcGFnZU1hcmdpbi5mb290ZXIsXG4gICAgICAgICAgICBtYXJnaW5IZWFkZXI6IHBhZ2VNYXJnaW4uaGVhZGVyLFxuICAgICAgICAgICAgbWFyZ2luTGVmdDogcGFnZU1hcmdpbi5sZWZ0LFxuICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IHBhZ2VNYXJnaW4ucmlnaHQsXG4gICAgICAgICAgICBtYXJnaW5Ub3A6IHBhZ2VNYXJnaW4udG9wLFxuICAgICAgICAgICAgdGFibGVzOiBbXSxcbiAgICAgICAgICAgIG51bWJlcmluZ3M6IFtdLFxuICAgICAgICAgICAgdGFiczogW10sXG4gICAgICAgICAgICBkZWZhdWx0VGFiV2lkdGg6IERFRkFVTFRfVEFCX1dJRFRIXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|