@flogeez/angular-tiptap-editor 3.6.1 → 3.7.0
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 +12 -0
- package/README.md +6 -2
- package/esm2022/lib/components/bubble-menus/base/ate-base-bubble-menu.mjs +3 -3
- package/esm2022/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.mjs +3 -3
- package/esm2022/lib/components/color-picker/ate-color-picker.component.mjs +3 -3
- package/esm2022/lib/components/editor/angular-tiptap-editor.component.mjs +52 -13
- package/esm2022/lib/components/editor/ate-block-controls.component.mjs +3 -3
- package/esm2022/lib/components/slash-commands/ate-slash-commands.component.mjs +3 -3
- package/esm2022/lib/components/table-of-contents/ate-table-of-contents.component.mjs +3 -3
- package/esm2022/lib/components/toolbar/ate-toolbar.component.mjs +3 -3
- package/esm2022/lib/config/ate-editor.config.mjs +7 -1
- package/esm2022/lib/config/ate-slash-commands.config.mjs +1 -1
- package/esm2022/lib/extensions/ate-paste.extension.mjs +125 -0
- package/esm2022/lib/extensions/ate-resizable-image.extension.mjs +44 -3
- package/esm2022/lib/models/ate-editor-config.model.mjs +1 -1
- package/esm2022/lib/models/ate-image.model.mjs +1 -1
- package/esm2022/lib/models/ate-paste.model.mjs +2 -0
- package/esm2022/lib/services/ate-editor-commands.service.mjs +7 -1
- package/esm2022/lib/services/ate-editor-i18n.service.mjs +36 -0
- package/esm2022/lib/services/ate-image.service.mjs +12 -5
- package/esm2022/lib/utils/ate-extensions.utils.mjs +3 -1
- package/esm2022/lib/utils/ate-image-src-resolver.utils.mjs +21 -0
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +297 -27
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/lib/components/bubble-menus/base/ate-base-bubble-menu.d.ts +2 -2
- package/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.d.ts +2 -2
- package/lib/components/bubble-menus/table/ate-cell-bubble-menu.component.d.ts +1 -1
- package/lib/components/editor/angular-tiptap-editor.component.d.ts +18 -2
- package/lib/components/editor/ate-block-controls.component.d.ts +2 -2
- package/lib/components/slash-commands/ate-slash-commands.component.d.ts +2 -2
- package/lib/config/ate-editor.config.d.ts +3 -0
- package/lib/config/ate-slash-commands.config.d.ts +2 -2
- package/lib/extensions/ate-paste.extension.d.ts +24 -0
- package/lib/extensions/ate-resizable-image.extension.d.ts +10 -1
- package/lib/models/ate-editor-config.model.d.ts +6 -1
- package/lib/models/ate-image.model.d.ts +12 -0
- package/lib/models/ate-paste.model.d.ts +36 -0
- package/lib/services/ate-editor-commands.service.d.ts +3 -1
- package/lib/services/ate-editor-i18n.service.d.ts +208 -0
- package/lib/services/ate-image.service.d.ts +3 -1
- package/lib/utils/ate-image-src-resolver.utils.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Node, mergeAttributes, nodeInputRule } from "@tiptap/core";
|
|
2
|
+
import { ateResolveImageSrc } from "../utils/ate-image-src-resolver.utils";
|
|
2
3
|
export const AteResizableImage = Node.create({
|
|
3
4
|
name: "resizableImage",
|
|
4
5
|
addOptions() {
|
|
@@ -6,6 +7,12 @@ export const AteResizableImage = Node.create({
|
|
|
6
7
|
inline: false,
|
|
7
8
|
allowBase64: false,
|
|
8
9
|
HTMLAttributes: {},
|
|
10
|
+
srcResolver: () => null,
|
|
11
|
+
};
|
|
12
|
+
},
|
|
13
|
+
addStorage() {
|
|
14
|
+
return {
|
|
15
|
+
srcRefreshers: new Set(),
|
|
9
16
|
};
|
|
10
17
|
},
|
|
11
18
|
inline() {
|
|
@@ -96,8 +103,13 @@ export const AteResizableImage = Node.create({
|
|
|
96
103
|
];
|
|
97
104
|
},
|
|
98
105
|
addNodeView() {
|
|
106
|
+
const options = this.options;
|
|
107
|
+
const storage = this.storage;
|
|
99
108
|
return ({ node, getPos, editor }) => {
|
|
100
109
|
let currentNode = node;
|
|
110
|
+
let requestedSrc = null;
|
|
111
|
+
let requestedWith = null;
|
|
112
|
+
let destroyed = false;
|
|
101
113
|
const wrapper = document.createElement("div");
|
|
102
114
|
wrapper.className = "resizable-image-wrapper";
|
|
103
115
|
wrapper.style.display = "block";
|
|
@@ -110,7 +122,6 @@ export const AteResizableImage = Node.create({
|
|
|
110
122
|
container.style.position = "relative";
|
|
111
123
|
container.style.display = "inline-block";
|
|
112
124
|
const img = document.createElement("img");
|
|
113
|
-
img.src = currentNode.attrs["src"];
|
|
114
125
|
img.alt = currentNode.attrs["alt"] || "";
|
|
115
126
|
img.title = currentNode.attrs["title"] || "";
|
|
116
127
|
img.className = "ate-image";
|
|
@@ -121,6 +132,32 @@ export const AteResizableImage = Node.create({
|
|
|
121
132
|
if (currentNode.attrs["height"]) {
|
|
122
133
|
img.height = currentNode.attrs["height"];
|
|
123
134
|
}
|
|
135
|
+
const applySrc = (src) => {
|
|
136
|
+
const resolver = options.srcResolver() ?? null;
|
|
137
|
+
if (!resolver || !src) {
|
|
138
|
+
requestedSrc = null;
|
|
139
|
+
requestedWith = null;
|
|
140
|
+
img.src = src ?? "";
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (src === requestedSrc && resolver === requestedWith) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
// A new resolver for the same src keeps the current image until the new URL is ready, so it does not blink
|
|
147
|
+
if (src !== requestedSrc) {
|
|
148
|
+
img.removeAttribute("src");
|
|
149
|
+
}
|
|
150
|
+
requestedSrc = src;
|
|
151
|
+
requestedWith = resolver;
|
|
152
|
+
ateResolveImageSrc(resolver, src).then(resolved => {
|
|
153
|
+
if (!destroyed && requestedSrc === src && requestedWith === resolver) {
|
|
154
|
+
img.src = resolved;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
const refreshSrc = () => applySrc(currentNode.attrs["src"]);
|
|
159
|
+
refreshSrc();
|
|
160
|
+
storage.srcRefreshers.add(refreshSrc);
|
|
124
161
|
wrapper.appendChild(container);
|
|
125
162
|
container.appendChild(img);
|
|
126
163
|
// Allow selection in read-only mode to show bubble menu/download
|
|
@@ -252,7 +289,7 @@ export const AteResizableImage = Node.create({
|
|
|
252
289
|
return false;
|
|
253
290
|
}
|
|
254
291
|
currentNode = updatedNode;
|
|
255
|
-
|
|
292
|
+
applySrc(updatedNode.attrs["src"]);
|
|
256
293
|
img.alt = updatedNode.attrs["alt"] || "";
|
|
257
294
|
img.title = updatedNode.attrs["title"] || "";
|
|
258
295
|
if (updatedNode.attrs["width"]) {
|
|
@@ -276,8 +313,12 @@ export const AteResizableImage = Node.create({
|
|
|
276
313
|
return !!target.closest(".resize-controls");
|
|
277
314
|
},
|
|
278
315
|
ignoreMutation: () => true,
|
|
316
|
+
destroy: () => {
|
|
317
|
+
destroyed = true;
|
|
318
|
+
storage.srcRefreshers.delete(refreshSrc);
|
|
319
|
+
},
|
|
279
320
|
};
|
|
280
321
|
};
|
|
281
322
|
},
|
|
282
323
|
});
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXJlc2l6YWJsZS1pbWFnZS5leHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9leHRlbnNpb25zL2F0ZS1yZXNpemFibGUtaW1hZ2UuZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQTZCcEUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBMkI7SUFDckUsSUFBSSxFQUFFLGdCQUFnQjtJQUV0QixVQUFVO1FBQ1IsT0FBTztZQUNMLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFLEtBQUs7WUFDbEIsY0FBYyxFQUFFLEVBQUU7U0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2xELENBQUM7SUFFRCxTQUFTLEVBQUUsSUFBSTtJQUVmLGFBQWE7UUFDWCxPQUFPO1lBQ0wsR0FBRyxFQUFFO2dCQUNILE9BQU8sRUFBRSxJQUFJO2FBQ2Q7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxFQUFFLElBQUk7YUFDZDtZQUNELEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsSUFBSTthQUNkO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDbkIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFD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QU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQzt3QkFDN0IsT0FBTyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDeEMsQ0FBQztvQkFFRCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUNELFNBQVMsRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO29CQUMxQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztvQkFDM0MsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO2dCQUNELGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO2FBQzNCLENBQUM7UUFDSixDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZSwgbWVyZ2VBdHRyaWJ1dGVzLCBub2RlSW5wdXRSdWxlIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0ZVJlc2l6YWJsZUltYWdlT3B0aW9ucyB7XG4gIGlubGluZTogYm9vbGVhbjtcbiAgYWxsb3dCYXNlNjQ6IGJvb2xlYW47XG4gIEhUTUxBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZGVjbGFyZSBtb2R1bGUgXCJAdGlwdGFwL2NvcmVcIiB7XG4gIGludGVyZmFjZSBDb21tYW5kczxSZXR1cm5UeXBlPiB7XG4gICAgcmVzaXphYmxlSW1hZ2U6IHtcbiAgICAgIHNldFJlc2l6YWJsZUltYWdlOiAob3B0aW9uczoge1xuICAgICAgICBzcmM6IHN0cmluZztcbiAgICAgICAgYWx0Pzogc3RyaW5nO1xuICAgICAgICB0aXRsZT86IHN0cmluZztcbiAgICAgICAgd2lkdGg/OiBudW1iZXI7XG4gICAgICAgIGhlaWdodD86IG51bWJlcjtcbiAgICAgIH0pID0+IFJldHVyblR5cGU7XG4gICAgICB1cGRhdGVSZXNpemFibGVJbWFnZTogKG9wdGlvbnM6IHtcbiAgICAgICAgc3JjPzogc3RyaW5nO1xuICAgICAgICBhbHQ/OiBzdHJpbmc7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nO1xuICAgICAgICB3aWR0aD86IG51bWJlcjtcbiAgICAgICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgICAgfSkgPT4gUmV0dXJuVHlwZTtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBdGVSZXNpemFibGVJbWFnZSA9IE5vZGUuY3JlYXRlPEF0ZVJlc2l6YWJsZUltYWdlT3B0aW9ucz4oe1xuICBuYW1lOiBcInJlc2l6YWJsZUltYWdlXCIsXG5cbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW5saW5lOiBmYWxzZSxcbiAgICAgIGFsbG93QmFzZTY0OiBmYWxzZSxcbiAgICAgIEhUTUxBdHRyaWJ1dGVzOiB7fSxcbiAgICB9O1xuICB9LFxuXG4gIGlubGluZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmlubGluZTtcbiAgfSxcblxuICBncm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmlubGluZSA/IFwiaW5saW5lXCIgOiBcImJsb2NrXCI7XG4gIH0sXG5cbiAgZHJhZ2dhYmxlOiB0cnVlLFxuXG4gIGFkZEF0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNyYzoge1xuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgfSxcbiAgICAgIGFsdDoge1xuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgfSxcbiAgICAgIHRpdGxlOiB7XG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB9LFxuICAgICAgd2lkdGg6IHtcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgcGFyc2VIVE1MOiBlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwid2lkdGhcIik7XG4gICAgICAgICAgcmV0dXJuIHdpZHRoID8gcGFyc2VJbnQod2lkdGgsIDEwKSA6IG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlckhUTUw6IGF0dHJpYnV0ZXMgPT4ge1xuICAgICAgICAgIGlmICghYXR0cmlidXRlc1tcIndpZHRoXCJdKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3aWR0aDogYXR0cmlidXRlc1tcIndpZHRoXCJdLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGVpZ2h0OiB7XG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgIHBhcnNlSFRNTDogZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIik7XG4gICAgICAgICAgcmV0dXJuIGhlaWdodCA/IHBhcnNlSW50KGhlaWdodCwgMTApIDogbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVySFRNTDogYXR0cmlidXRlcyA9PiB7XG4gICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzW1wiaGVpZ2h0XCJdKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWlnaHQ6IGF0dHJpYnV0ZXNbXCJoZWlnaHRcIl0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcblxuICBwYXJzZUhUTUwoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGFnOiBcImltZ1tzcmNdXCIsXG4gICAgICB9LFxuICAgIF07XG4gIH0sXG5cbiAgcmVuZGVySFRNTCh7IEhUTUxBdHRyaWJ1dGVzIH0pIHtcbiAgICByZXR1cm4gW1wiaW1nXCIsIG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsIEhUTUxBdHRyaWJ1dGVzKV07XG4gIH0sXG5cbiAgYWRkQ29tbWFuZHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNldFJlc2l6YWJsZUltYWdlOlxuICAgICAgICBvcHRpb25zID0+XG4gICAgICAgICh7IGNvbW1hbmRzIH0pID0+IHtcbiAgICAgICAgICByZXR1cm4gY29tbWFuZHMuaW5zZXJ0Q29udGVudChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgICBhdHRyczogb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgdXBkYXRlUmVzaXphYmxlSW1hZ2U6XG4gICAgICAgIG9wdGlvbnMgPT5cbiAgICAgICAgKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb21tYW5kcy51cGRhdGVBdHRyaWJ1dGVzKHRoaXMubmFtZSwgb3B0aW9ucyk7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgfSxcblxuICBhZGRJbnB1dFJ1bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBub2RlSW5wdXRSdWxlKHtcbiAgICAgICAgZmluZDogLyFcXFsoLit8Oj8pXVxcKChcXFMrKSg/Oig/OlxccyspW1wiJ10oXFxTKylbXCInXSk/XFwpLyxcbiAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICBnZXRBdHRyaWJ1dGVzOiBtYXRjaCA9PiB7XG4gICAgICAgICAgY29uc3QgWywgYWx0LCBzcmMsIHRpdGxlXSA9IG1hdGNoO1xuICAgICAgICAgIHJldHVybiB7IHNyYywgYWx0LCB0aXRsZSB9O1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgXTtcbiAgfSxcblxuICBhZGROb2RlVmlldygpIHtcbiAgICByZXR1cm4gKHsgbm9kZSwgZ2V0UG9zLCBlZGl0b3IgfSkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnROb2RlID0gbm9kZTtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgd3JhcHBlci5jbGFzc05hbWUgPSBcInJlc2l6YWJsZS1pbWFnZS13cmFwcGVyXCI7XG4gICAgICB3cmFwcGVyLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICBpZiAoY3VycmVudE5vZGUuYXR0cnNbXCJ0ZXh0QWxpZ25cIl0pIHtcbiAgICAgICAgd3JhcHBlci5zdHlsZS50ZXh0QWxpZ24gPSBjdXJyZW50Tm9kZS5hdHRyc1tcInRleHRBbGlnblwiXTtcbiAgICAgICAgd3JhcHBlci5zZXRBdHRyaWJ1dGUoXCJkYXRhLWFsaWduXCIsIGN1cnJlbnROb2RlLmF0dHJzW1widGV4dEFsaWduXCJdKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSBcInJlc2l6YWJsZS1pbWFnZS1jb250YWluZXJcIjtcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjtcblxuICAgICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcbiAgICAgIGltZy5zcmMgPSBjdXJyZW50Tm9kZS5hdHRyc1tcInNyY1wiXTtcbiAgICAgIGltZy5hbHQgPSBjdXJyZW50Tm9kZS5hdHRyc1tcImFsdFwiXSB8fCBcIlwiO1xuICAgICAgaW1nLnRpdGxlID0gY3VycmVudE5vZGUuYXR0cnNbXCJ0aXRsZVwiXSB8fCBcIlwiO1xuICAgICAgaW1nLmNsYXNzTmFtZSA9IFwiYXRlLWltYWdlXCI7XG4gICAgICBpbWcuc3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7IC8vIEVuc3VyZSBpdCByZXNwZWN0cyBjb250YWluZXIgdGV4dC1hbGlnblxuXG4gICAgICBpZiAoY3VycmVudE5vZGUuYXR0cnNbXCJ3aWR0aFwiXSkge1xuICAgICAgICBpbWcud2lkdGggPSBjdXJyZW50Tm9kZS5hdHRyc1tcIndpZHRoXCJdO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnROb2RlLmF0dHJzW1wiaGVpZ2h0XCJdKSB7XG4gICAgICAgIGltZy5oZWlnaHQgPSBjdXJyZW50Tm9kZS5hdHRyc1tcImhlaWdodFwiXTtcbiAgICAgIH1cblxuICAgICAgd3JhcHBlci5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGltZyk7XG5cbiAgICAgIC8vIEFsbG93IHNlbGVjdGlvbiBpbiByZWFkLW9ubHkgbW9kZSB0byBzaG93IGJ1YmJsZSBtZW51L2Rvd25sb2FkXG4gICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGUgPT4ge1xuICAgICAgICBpZiAoIWVkaXRvci5pc0VkaXRhYmxlKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgY29uc3QgcG9zID0gZ2V0UG9zKCk7XG4gICAgICAgICAgaWYgKHR5cGVvZiBwb3MgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGVkaXRvci5jb21tYW5kcy5zZXROb2RlU2VsZWN0aW9uKHBvcyk7XG4gICAgICAgICAgICBlZGl0b3Iudmlldy5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEFkZCBtb2Rlcm4gcmVzaXplIGNvbnRyb2xzXG4gICAgICBjb25zdCByZXNpemVDb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICByZXNpemVDb250cm9scy5jbGFzc05hbWUgPSBcInJlc2l6ZS1jb250cm9sc1wiO1xuXG4gICAgICAvLyBDcmVhdGUgMiBoYW5kbGVzIChzaWRlcyBvbmx5KSBmb3IgYSBtaW5pbWFsaXN0IFVJXG4gICAgICBjb25zdCBoYW5kbGVzID0gW1wid1wiLCBcImVcIl07XG4gICAgICBoYW5kbGVzLmZvckVhY2goZGlyZWN0aW9uID0+IHtcbiAgICAgICAgY29uc3QgaGFuZGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgaGFuZGxlLmNsYXNzTmFtZSA9IGByZXNpemUtaGFuZGxlIHJlc2l6ZS1oYW5kbGUtJHtkaXJlY3Rpb259YDtcbiAgICAgICAgaGFuZGxlLnNldEF0dHJpYnV0ZShcImRhdGEtZGlyZWN0aW9uXCIsIGRpcmVjdGlvbik7XG4gICAgICAgIHJlc2l6ZUNvbnRyb2xzLmFwcGVuZENoaWxkKGhhbmRsZSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gQXR0YWNoIGNvbnRyb2xzIHRvIGNvbnRhaW5lclxuICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJlc2l6ZUNvbnRyb2xzKTtcblxuICAgICAgLy8gVmFyaWFibGVzIGZvciByZXNpemluZ1xuICAgICAgbGV0IGlzUmVzaXppbmcgPSBmYWxzZTtcbiAgICAgIGxldCBzdGFydFggPSAwO1xuICAgICAgbGV0IHN0YXJ0V2lkdGggPSAwO1xuICAgICAgbGV0IHN0YXJ0SGVpZ2h0ID0gMDtcbiAgICAgIGxldCBhc3BlY3RSYXRpbyA9IDE7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSBhc3BlY3QgcmF0aW9cbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGFzcGVjdFJhdGlvID0gaW1nLm5hdHVyYWxXaWR0aCAvIGltZy5uYXR1cmFsSGVpZ2h0O1xuICAgICAgfTtcblxuICAgICAgLy8gUmVzaXppbmcgbG9naWNcbiAgICAgIGNvbnN0IGhhbmRsZU1vdXNlRG93biA9IChlOiBNb3VzZUV2ZW50LCBkaXJlY3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgaXNSZXNpemluZyA9IHRydWU7XG4gICAgICAgIHN0YXJ0WCA9IGUuY2xpZW50WDtcblxuICAgICAgICAvLyBVc2UgY3VycmVudCBpbWFnZSBkaW1lbnNpb25zIGluc3RlYWQgb2YgaW5pdGlhbCBvbmVzXG4gICAgICAgIHN0YXJ0V2lkdGggPVxuICAgICAgICAgIHBhcnNlSW50KGltZy5nZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiKSB8fCBcIjBcIikgfHxcbiAgICAgICAgICBjdXJyZW50Tm9kZS5hdHRyc1tcIndpZHRoXCJdIHx8XG4gICAgICAgICAgaW1nLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgc3RhcnRIZWlnaHQgPVxuICAgICAgICAgIHBhcnNlSW50KGltZy5nZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIikgfHwgXCIwXCIpIHx8XG4gICAgICAgICAgY3VycmVudE5vZGUuYXR0cnNbXCJoZWlnaHRcIl0gfHxcbiAgICAgICAgICBpbWcubmF0dXJhbEhlaWdodDtcblxuICAgICAgICAvLyBBZGQgcmVzaXppbmcgY2xhc3MgdG8gYm9keVxuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJyZXNpemluZ1wiKTtcblxuICAgICAgICBjb25zdCBoYW5kbGVNb3VzZU1vdmUgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIGlmICghaXNSZXNpemluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IGUuY2xpZW50WCAtIHN0YXJ0WDtcblxuICAgICAgICAgIGxldCBuZXdXaWR0aCA9IHN0YXJ0V2lkdGg7XG4gICAgICAgICAgbGV0IG5ld0hlaWdodCA9IHN0YXJ0SGVpZ2h0O1xuXG4gICAgICAgICAgLy8gUmVzaXplIGFjY29yZGluZyB0byBkaXJlY3Rpb25cbiAgICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgICAgICAgY2FzZSBcImVcIjpcbiAgICAgICAgICAgICAgbmV3V2lkdGggPSBzdGFydFdpZHRoICsgZGVsdGFYO1xuICAgICAgICAgICAgICBuZXdIZWlnaHQgPSBuZXdXaWR0aCAvIGFzcGVjdFJhdGlvO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJ3XCI6XG4gICAgICAgICAgICAgIG5ld1dpZHRoID0gc3RhcnRXaWR0aCAtIGRlbHRhWDtcbiAgICAgICAgICAgICAgbmV3SGVpZ2h0ID0gbmV3V2lkdGggLyBhc3BlY3RSYXRpbztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gTGltaXRzXG4gICAgICAgICAgbmV3V2lkdGggPSBNYXRoLm1heCg1MCwgTWF0aC5taW4oMjAwMCwgbmV3V2lkdGgpKTtcbiAgICAgICAgICBuZXdIZWlnaHQgPSBNYXRoLm1heCg1MCwgTWF0aC5taW4oMjAwMCwgbmV3SGVpZ2h0KSk7XG5cbiAgICAgICAgICAvLyBVcGRhdGUgaW1hZ2UgYXR0cmlidXRlcyBkaXJlY3RseVxuICAgICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBNYXRoLnJvdW5kKG5ld1dpZHRoKS50b1N0cmluZygpKTtcbiAgICAgICAgICBpbWcuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIE1hdGgucm91bmQobmV3SGVpZ2h0KS50b1N0cmluZygpKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBoYW5kbGVNb3VzZVVwID0gKCkgPT4ge1xuICAgICAgICAgIGlzUmVzaXppbmcgPSBmYWxzZTtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJyZXNpemluZ1wiKTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSBUaXB0YXAgbm9kZSB3aXRoIG5ldyBkaW1lbnNpb25zIGF0IHRoZSBzcGVjaWZpYyBwb3NpdGlvblxuICAgICAgICAgIGNvbnN0IHBvcyA9IHR5cGVvZiBnZXRQb3MgPT09IFwiZnVuY3Rpb25cIiA/IGdldFBvcygpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGlmICh0eXBlb2YgcG9zID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbFdpZHRoID0gcGFyc2VJbnQoaW1nLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpIHx8IFwiMFwiKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsSGVpZ2h0ID0gcGFyc2VJbnQoaW1nLmdldEF0dHJpYnV0ZShcImhlaWdodFwiKSB8fCBcIjBcIik7XG5cbiAgICAgICAgICAgIGlmIChmaW5hbFdpZHRoICYmIGZpbmFsSGVpZ2h0KSB7XG4gICAgICAgICAgICAgIGVkaXRvci52aWV3LmRpc3BhdGNoKFxuICAgICAgICAgICAgICAgIGVkaXRvci52aWV3LnN0YXRlLnRyLnNldE5vZGVNYXJrdXAocG9zLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnROb2RlLmF0dHJzLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6IGZpbmFsV2lkdGgsXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IGZpbmFsSGVpZ2h0LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBoYW5kbGVNb3VzZU1vdmUpO1xuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGhhbmRsZU1vdXNlVXApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgaGFuZGxlTW91c2VNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgaGFuZGxlTW91c2VVcCk7XG4gICAgICB9O1xuXG4gICAgICAvLyBBZGQgZXZlbnRzIHRvIGhhbmRsZXNcbiAgICAgIHJlc2l6ZUNvbnRyb2xzLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgZSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcInJlc2l6ZS1oYW5kbGVcIikpIHtcbiAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSB0YXJnZXQuZ2V0QXR0cmlidXRlKFwiZGF0YS1kaXJlY3Rpb25cIik7XG4gICAgICAgICAgaWYgKGRpcmVjdGlvbikge1xuICAgICAgICAgICAgaGFuZGxlTW91c2VEb3duKGUsIGRpcmVjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gUHJvcGVyIHNlbGVjdGlvbiBtYW5hZ2VtZW50IHZpYSBQcm9zZU1pcnJvciBsaWZlY3ljbGVcbiAgICAgIGNvbnN0IHNlbGVjdE5vZGUgPSAoKSA9PiB7XG4gICAgICAgIHdyYXBwZXIuY2xhc3NMaXN0LmFkZChcInNlbGVjdGVkXCIpO1xuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcInNlbGVjdGVkXCIpO1xuICAgICAgICBpbWcuY2xhc3NMaXN0LmFkZChcInNlbGVjdGVkXCIpO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgZGVzZWxlY3ROb2RlID0gKCkgPT4ge1xuICAgICAgICB3cmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgaW1nLmNsYXNzTGlzdC5yZW1vdmUoXCJzZWxlY3RlZFwiKTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRvbTogd3JhcHBlcixcbiAgICAgICAgc2VsZWN0Tm9kZSxcbiAgICAgICAgZGVzZWxlY3ROb2RlLFxuICAgICAgICB1cGRhdGU6IHVwZGF0ZWROb2RlID0+IHtcbiAgICAgICAgICBpZiAodXBkYXRlZE5vZGUudHlwZS5uYW1lICE9PSBcInJlc2l6YWJsZUltYWdlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXJyZW50Tm9kZSA9IHVwZGF0ZWROb2RlO1xuXG4gICAgICAgICAgaW1nLnNyYyA9IHVwZGF0ZWROb2RlLmF0dHJzW1wic3JjXCJdO1xuICAgICAgICAgIGltZy5hbHQgPSB1cGRhdGVkTm9kZS5hdHRyc1tcImFsdFwiXSB8fCBcIlwiO1xuICAgICAgICAgIGltZy50aXRsZSA9IHVwZGF0ZWROb2RlLmF0dHJzW1widGl0bGVcIl0gfHwgXCJcIjtcblxuICAgICAgICAgIGlmICh1cGRhdGVkTm9kZS5hdHRyc1tcIndpZHRoXCJdKSB7XG4gICAgICAgICAgICBpbWcud2lkdGggPSB1cGRhdGVkTm9kZS5hdHRyc1tcIndpZHRoXCJdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodXBkYXRlZE5vZGUuYXR0cnNbXCJoZWlnaHRcIl0pIHtcbiAgICAgICAgICAgIGltZy5oZWlnaHQgPSB1cGRhdGVkTm9kZS5hdHRyc1tcImhlaWdodFwiXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXBkYXRlZE5vZGUuYXR0cnNbXCJ0ZXh0QWxpZ25cIl0pIHtcbiAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUudGV4dEFsaWduID0gdXBkYXRlZE5vZGUuYXR0cnNbXCJ0ZXh0QWxpZ25cIl07XG4gICAgICAgICAgICB3cmFwcGVyLnNldEF0dHJpYnV0ZShcImRhdGEtYWxpZ25cIiwgdXBkYXRlZE5vZGUuYXR0cnNbXCJ0ZXh0QWxpZ25cIl0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3cmFwcGVyLnN0eWxlLnRleHRBbGlnbiA9IFwiXCI7XG4gICAgICAgICAgICB3cmFwcGVyLnJlbW92ZUF0dHJpYnV0ZShcImRhdGEtYWxpZ25cIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIHN0b3BFdmVudDogKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICByZXR1cm4gISF0YXJnZXQuY2xvc2VzdChcIi5yZXNpemUtY29udHJvbHNcIik7XG4gICAgICAgIH0sXG4gICAgICAgIGlnbm9yZU11dGF0aW9uOiAoKSA9PiB0cnVlLFxuICAgICAgfTtcbiAgICB9O1xuICB9LFxufSk7XG4iXX0=
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXJlc2l6YWJsZS1pbWFnZS5leHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9leHRlbnNpb25zL2F0ZS1yZXNpemFibGUtaW1hZ2UuZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQXVDM0UsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBcUQ7SUFDL0YsSUFBSSxFQUFFLGdCQUFnQjtJQUV0QixVQUFVO1FBQ1IsT0FBTztZQUNMLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFLEtBQUs7WUFDbEIsY0FBYyxFQUFFLEVBQUU7WUFDbEIsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7U0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTztZQUNMLGFBQWEsRUFBRSxJQUFJLEdBQUcsRUFBRTtTQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbEQsQ0FBQztJQUVELFNBQVMsRUFBRSxJQUFJO0lBRWYsYUFBYTtRQUNYLE9BQU87WUFDTCxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxFQUFFLElBQUk7YUFDZDtZQUNELEdBQUcsRUFBRTtnQkFDSCxPQUFPLEVBQUUsSUFBSTthQUNkO1lBQ0QsS0FBSyxFQUFFO2dC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QUMsQ0FBQztvQkFDM0MsQ0FBQztvQkFFRCxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQzt3QkFDbkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDekQsT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUNyRSxDQUFDO3lCQUFNLENBQUM7d0JBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO3dCQUM3QixPQUFPLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUN4QyxDQUFDO29CQUVELE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsU0FBUyxFQUFFLENBQUMsS0FBWSxFQUFFLEVBQUU7b0JBQzFCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO29CQUMzQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQzlDLENBQUM7Z0JBQ0QsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7Z0JBQzFCLE9BQU8sRUFBRSxHQUFHLEVBQUU7b0JBQ1osU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDakIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGUsIG1lcmdlQXR0cmlidXRlcywgbm9kZUlucHV0UnVsZSB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IEF0ZUltYWdlU3JjUmVzb2x2ZXIgfSBmcm9tIFwiLi4vbW9kZWxzL2F0ZS1pbWFnZS5tb2RlbFwiO1xuaW1wb3J0IHsgYXRlUmVzb2x2ZUltYWdlU3JjIH0gZnJvbSBcIi4uL3V0aWxzL2F0ZS1pbWFnZS1zcmMtcmVzb2x2ZXIudXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdGVSZXNpemFibGVJbWFnZU9wdGlvbnMge1xuICBpbmxpbmU6IGJvb2xlYW47XG4gIGFsbG93QmFzZTY0OiBib29sZWFuO1xuICBIVE1MQXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHNyY1Jlc29sdmVyOiAoKSA9PiBBdGVJbWFnZVNyY1Jlc29sdmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdGVSZXNpemFibGVJbWFnZVN0b3JhZ2Uge1xuICAvKiogT25lIGNhbGxiYWNrIHBlciBpbWFnZSBub2RlIHZpZXc6IHJlLWFwcGxpZXMgdGhlIHJlc29sdmVyIHdoZW4gaXQgY2hhbmdlcyAqL1xuICBzcmNSZWZyZXNoZXJzOiBTZXQ8KCkgPT4gdm9pZD47XG59XG5cbmRlY2xhcmUgbW9kdWxlIFwiQHRpcHRhcC9jb3JlXCIge1xuICBpbnRlcmZhY2UgU3RvcmFnZSB7XG4gICAgcmVzaXphYmxlSW1hZ2U6IEF0ZVJlc2l6YWJsZUltYWdlU3RvcmFnZTtcbiAgfVxuXG4gIGludGVyZmFjZSBDb21tYW5kczxSZXR1cm5UeXBlPiB7XG4gICAgcmVzaXphYmxlSW1hZ2U6IHtcbiAgICAgIHNldFJlc2l6YWJsZUltYWdlOiAob3B0aW9uczoge1xuICAgICAgICBzcmM6IHN0cmluZztcbiAgICAgICAgYWx0Pzogc3RyaW5nO1xuICAgICAgICB0aXRsZT86IHN0cmluZztcbiAgICAgICAgd2lkdGg/OiBudW1iZXI7XG4gICAgICAgIGhlaWdodD86IG51bWJlcjtcbiAgICAgIH0pID0+IFJldHVyblR5cGU7XG4gICAgICB1cGRhdGVSZXNpemFibGVJbWFnZTogKG9wdGlvbnM6IHtcbiAgICAgICAgc3JjPzogc3RyaW5nO1xuICAgICAgICBhbHQ/OiBzdHJpbmc7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nO1xuICAgICAgICB3aWR0aD86IG51bWJlcjtcbiAgICAgICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgICAgfSkgPT4gUmV0dXJuVHlwZTtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBdGVSZXNpemFibGVJbWFnZSA9IE5vZGUuY3JlYXRlPEF0ZVJlc2l6YWJsZUltYWdlT3B0aW9ucywgQXRlUmVzaXphYmxlSW1hZ2VTdG9yYWdlPih7XG4gIG5hbWU6IFwicmVzaXphYmxlSW1hZ2VcIixcblxuICBhZGRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpbmxpbmU6IGZhbHNlLFxuICAgICAgYWxsb3dCYXNlNjQ6IGZhbHNlLFxuICAgICAgSFRNTEF0dHJpYnV0ZXM6IHt9LFxuICAgICAgc3JjUmVzb2x2ZXI6ICgpID0+IG51bGwsXG4gICAgfTtcbiAgfSxcblxuICBhZGRTdG9yYWdlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzcmNSZWZyZXNoZXJzOiBuZXcgU2V0KCksXG4gICAgfTtcbiAgfSxcblxuICBpbmxpbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pbmxpbmU7XG4gIH0sXG5cbiAgZ3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pbmxpbmUgPyBcImlubGluZVwiIDogXCJibG9ja1wiO1xuICB9LFxuXG4gIGRyYWdnYWJsZTogdHJ1ZSxcblxuICBhZGRBdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzcmM6IHtcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIH0sXG4gICAgICBhbHQ6IHtcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIH0sXG4gICAgICB0aXRsZToge1xuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgfSxcbiAgICAgIHdpZHRoOiB7XG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgIHBhcnNlSFRNTDogZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50LmdldEF0dHJpYnV0ZShcIndpZHRoXCIpO1xuICAgICAgICAgIHJldHVybiB3aWR0aCA/IHBhcnNlSW50KHdpZHRoLCAxMCkgOiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXJIVE1MOiBhdHRyaWJ1dGVzID0+IHtcbiAgICAgICAgICBpZiAoIWF0dHJpYnV0ZXNbXCJ3aWR0aFwiXSkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IGF0dHJpYnV0ZXNbXCJ3aWR0aFwiXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhlaWdodDoge1xuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICBwYXJzZUhUTUw6IGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpO1xuICAgICAgICAgIHJldHVybiBoZWlnaHQgPyBwYXJzZUludChoZWlnaHQsIDEwKSA6IG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlckhUTUw6IGF0dHJpYnV0ZXMgPT4ge1xuICAgICAgICAgIGlmICghYXR0cmlidXRlc1tcImhlaWdodFwiXSkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVpZ2h0OiBhdHRyaWJ1dGVzW1wiaGVpZ2h0XCJdLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0sXG5cbiAgcGFyc2VIVE1MKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRhZzogXCJpbWdbc3JjXVwiLFxuICAgICAgfSxcbiAgICBdO1xuICB9LFxuXG4gIHJlbmRlckhUTUwoeyBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgcmV0dXJuIFtcImltZ1wiLCBtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLCBIVE1MQXR0cmlidXRlcyldO1xuICB9LFxuXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZXRSZXNpemFibGVJbWFnZTpcbiAgICAgICAgb3B0aW9ucyA9PlxuICAgICAgICAoeyBjb21tYW5kcyB9KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNvbW1hbmRzLmluc2VydENvbnRlbnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgYXR0cnM6IG9wdGlvbnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB1cGRhdGVTZWxlY3Rpb246IHRydWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIHVwZGF0ZVJlc2l6YWJsZUltYWdlOlxuICAgICAgICBvcHRpb25zID0+XG4gICAgICAgICh7IGNvbW1hbmRzIH0pID0+IHtcbiAgICAgICAgICByZXR1cm4gY29tbWFuZHMudXBkYXRlQXR0cmlidXRlcyh0aGlzLm5hbWUsIG9wdGlvbnMpO1xuICAgICAgICB9LFxuICAgIH07XG4gIH0sXG5cbiAgYWRkSW5wdXRSdWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgbm9kZUlucHV0UnVsZSh7XG4gICAgICAgIGZpbmQ6IC8hXFxbKC4rfDo/KV1cXCgoXFxTKykoPzooPzpcXHMrKVtcIiddKFxcUyspW1wiJ10pP1xcKS8sXG4gICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgZ2V0QXR0cmlidXRlczogbWF0Y2ggPT4ge1xuICAgICAgICAgIGNvbnN0IFssIGFsdCwgc3JjLCB0aXRsZV0gPSBtYXRjaDtcbiAgICAgICAgICByZXR1cm4geyBzcmMsIGFsdCwgdGl0bGUgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIF07XG4gIH0sXG5cbiAgYWRkTm9kZVZpZXcoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBzdG9yYWdlID0gdGhpcy5zdG9yYWdlO1xuICAgIHJldHVybiAoeyBub2RlLCBnZXRQb3MsIGVkaXRvciB9KSA9PiB7XG4gICAgICBsZXQgY3VycmVudE5vZGUgPSBub2RlO1xuICAgICAgbGV0IHJlcXVlc3RlZFNyYzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgICBsZXQgcmVxdWVzdGVkV2l0aDogQXRlSW1hZ2VTcmNSZXNvbHZlciB8IG51bGwgPSBudWxsO1xuICAgICAgbGV0IGRlc3Ryb3llZCA9IGZhbHNlO1xuICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICB3cmFwcGVyLmNsYXNzTmFtZSA9IFwicmVzaXphYmxlLWltYWdlLXdyYXBwZXJcIjtcbiAgICAgIHdyYXBwZXIuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgIGlmIChjdXJyZW50Tm9kZS5hdHRyc1tcInRleHRBbGlnblwiXSkge1xuICAgICAgICB3cmFwcGVyLnN0eWxlLnRleHRBbGlnbiA9IGN1cnJlbnROb2RlLmF0dHJzW1widGV4dEFsaWduXCJdO1xuICAgICAgICB3cmFwcGVyLnNldEF0dHJpYnV0ZShcImRhdGEtYWxpZ25cIiwgY3VycmVudE5vZGUuYXR0cnNbXCJ0ZXh0QWxpZ25cIl0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9IFwicmVzaXphYmxlLWltYWdlLWNvbnRhaW5lclwiO1xuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuICAgICAgY29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xuXG4gICAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuICAgICAgaW1nLmFsdCA9IGN1cnJlbnROb2RlLmF0dHJzW1wiYWx0XCJdIHx8IFwiXCI7XG4gICAgICBpbWcudGl0bGUgPSBjdXJyZW50Tm9kZS5hdHRyc1tcInRpdGxlXCJdIHx8IFwiXCI7XG4gICAgICBpbWcuY2xhc3NOYW1lID0gXCJhdGUtaW1hZ2VcIjtcbiAgICAgIGltZy5zdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjsgLy8gRW5zdXJlIGl0IHJlc3BlY3RzIGNvbnRhaW5lciB0ZXh0LWFsaWduXG5cbiAgICAgIGlmIChjdXJyZW50Tm9kZS5hdHRyc1tcIndpZHRoXCJdKSB7XG4gICAgICAgIGltZy53aWR0aCA9IGN1cnJlbnROb2RlLmF0dHJzW1wid2lkdGhcIl07XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudE5vZGUuYXR0cnNbXCJoZWlnaHRcIl0pIHtcbiAgICAgICAgaW1nLmhlaWdodCA9IGN1cnJlbnROb2RlLmF0dHJzW1wiaGVpZ2h0XCJdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhcHBseVNyYyA9IChzcmM6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSBvcHRpb25zLnNyY1Jlc29sdmVyKCkgPz8gbnVsbDtcbiAgICAgICAgaWYgKCFyZXNvbHZlciB8fCAhc3JjKSB7XG4gICAgICAgICAgcmVxdWVzdGVkU3JjID0gbnVsbDtcbiAgICAgICAgICByZXF1ZXN0ZWRXaXRoID0gbnVsbDtcbiAgICAgICAgICBpbWcuc3JjID0gc3JjID8/IFwiXCI7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzcmMgPT09IHJlcXVlc3RlZFNyYyAmJiByZXNvbHZlciA9PT0gcmVxdWVzdGVkV2l0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBIG5ldyByZXNvbHZlciBmb3IgdGhlIHNhbWUgc3JjIGtlZXBzIHRoZSBjdXJyZW50IGltYWdlIHVudGlsIHRoZSBuZXcgVVJMIGlzIHJlYWR5LCBzbyBpdCBkb2VzIG5vdCBibGlua1xuICAgICAgICBpZiAoc3JjICE9PSByZXF1ZXN0ZWRTcmMpIHtcbiAgICAgICAgICBpbWcucmVtb3ZlQXR0cmlidXRlKFwic3JjXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJlcXVlc3RlZFNyYyA9IHNyYztcbiAgICAgICAgcmVxdWVzdGVkV2l0aCA9IHJlc29sdmVyO1xuICAgICAgICBhdGVSZXNvbHZlSW1hZ2VTcmMocmVzb2x2ZXIsIHNyYykudGhlbihyZXNvbHZlZCA9PiB7XG4gICAgICAgICAgaWYgKCFkZXN0cm95ZWQgJiYgcmVxdWVzdGVkU3JjID09PSBzcmMgJiYgcmVxdWVzdGVkV2l0aCA9PT0gcmVzb2x2ZXIpIHtcbiAgICAgICAgICAgIGltZy5zcmMgPSByZXNvbHZlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlZnJlc2hTcmMgPSAoKSA9PiBhcHBseVNyYyhjdXJyZW50Tm9kZS5hdHRyc1tcInNyY1wiXSk7XG4gICAgICByZWZyZXNoU3JjKCk7XG4gICAgICBzdG9yYWdlLnNyY1JlZnJlc2hlcnMuYWRkKHJlZnJlc2hTcmMpO1xuXG4gICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaW1nKTtcblxuICAgICAgLy8gQWxsb3cgc2VsZWN0aW9uIGluIHJlYWQtb25seSBtb2RlIHRvIHNob3cgYnViYmxlIG1lbnUvZG93bmxvYWRcbiAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG4gICAgICAgIGlmICghZWRpdG9yLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBjb25zdCBwb3MgPSBnZXRQb3MoKTtcbiAgICAgICAgICBpZiAodHlwZW9mIHBvcyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgZWRpdG9yLmNvbW1hbmRzLnNldE5vZGVTZWxlY3Rpb24ocG9zKTtcbiAgICAgICAgICAgIGVkaXRvci52aWV3LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIG1vZGVybiByZXNpemUgY29udHJvbHNcbiAgICAgIGNvbnN0IHJlc2l6ZUNvbnRyb2xzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgIHJlc2l6ZUNvbnRyb2xzLmNsYXNzTmFtZSA9IFwicmVzaXplLWNvbnRyb2xzXCI7XG5cbiAgICAgIC8vIENyZWF0ZSAyIGhhbmRsZXMgKHNpZGVzIG9ubHkpIGZvciBhIG1pbmltYWxpc3QgVUlcbiAgICAgIGNvbnN0IGhhbmRsZXMgPSBbXCJ3XCIsIFwiZVwiXTtcbiAgICAgIGhhbmRsZXMuZm9yRWFjaChkaXJlY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBoYW5kbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBoYW5kbGUuY2xhc3NOYW1lID0gYHJlc2l6ZS1oYW5kbGUgcmVzaXplLWhhbmRsZS0ke2RpcmVjdGlvbn1gO1xuICAgICAgICBoYW5kbGUuc2V0QXR0cmlidXRlKFwiZGF0YS1kaXJlY3Rpb25cIiwgZGlyZWN0aW9uKTtcbiAgICAgICAgcmVzaXplQ29udHJvbHMuYXBwZW5kQ2hpbGQoaGFuZGxlKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBdHRhY2ggY29udHJvbHMgdG8gY29udGFpbmVyXG4gICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQocmVzaXplQ29udHJvbHMpO1xuXG4gICAgICAvLyBWYXJpYWJsZXMgZm9yIHJlc2l6aW5nXG4gICAgICBsZXQgaXNSZXNpemluZyA9IGZhbHNlO1xuICAgICAgbGV0IHN0YXJ0WCA9IDA7XG4gICAgICBsZXQgc3RhcnRXaWR0aCA9IDA7XG4gICAgICBsZXQgc3RhcnRIZWlnaHQgPSAwO1xuICAgICAgbGV0IGFzcGVjdFJhdGlvID0gMTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIGFzcGVjdCByYXRpb1xuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgYXNwZWN0UmF0aW8gPSBpbWcubmF0dXJhbFdpZHRoIC8gaW1nLm5hdHVyYWxIZWlnaHQ7XG4gICAgICB9O1xuXG4gICAgICAvLyBSZXNpemluZyBsb2dpY1xuICAgICAgY29uc3QgaGFuZGxlTW91c2VEb3duID0gKGU6IE1vdXNlRXZlbnQsIGRpcmVjdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpc1Jlc2l6aW5nID0gdHJ1ZTtcbiAgICAgICAgc3RhcnRYID0gZS5jbGllbnRYO1xuXG4gICAgICAgIC8vIFVzZSBjdXJyZW50IGltYWdlIGRpbWVuc2lvbnMgaW5zdGVhZCBvZiBpbml0aWFsIG9uZXNcbiAgICAgICAgc3RhcnRXaWR0aCA9XG4gICAgICAgICAgcGFyc2VJbnQoaW1nLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpIHx8IFwiMFwiKSB8fFxuICAgICAgICAgIGN1cnJlbnROb2RlLmF0dHJzW1wid2lkdGhcIl0gfHxcbiAgICAgICAgICBpbWcubmF0dXJhbFdpZHRoO1xuICAgICAgICBzdGFydEhlaWdodCA9XG4gICAgICAgICAgcGFyc2VJbnQoaW1nLmdldEF0dHJpYnV0ZShcImhlaWdodFwiKSB8fCBcIjBcIikgfHxcbiAgICAgICAgICBjdXJyZW50Tm9kZS5hdHRyc1tcImhlaWdodFwiXSB8fFxuICAgICAgICAgIGltZy5uYXR1cmFsSGVpZ2h0O1xuXG4gICAgICAgIC8vIEFkZCByZXNpemluZyBjbGFzcyB0byBib2R5XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcInJlc2l6aW5nXCIpO1xuXG4gICAgICAgIGNvbnN0IGhhbmRsZU1vdXNlTW92ZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKCFpc1Jlc2l6aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGVsdGFYID0gZS5jbGllbnRYIC0gc3RhcnRYO1xuXG4gICAgICAgICAgbGV0IG5ld1dpZHRoID0gc3RhcnRXaWR0aDtcbiAgICAgICAgICBsZXQgbmV3SGVpZ2h0ID0gc3RhcnRIZWlnaHQ7XG5cbiAgICAgICAgICAvLyBSZXNpemUgYWNjb3JkaW5nIHRvIGRpcmVjdGlvblxuICAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIFwiZVwiOlxuICAgICAgICAgICAgICBuZXdXaWR0aCA9IHN0YXJ0V2lkdGggKyBkZWx0YVg7XG4gICAgICAgICAgICAgIG5ld0hlaWdodCA9IG5ld1dpZHRoIC8gYXNwZWN0UmF0aW87XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIndcIjpcbiAgICAgICAgICAgICAgbmV3V2lkdGggPSBzdGFydFdpZHRoIC0gZGVsdGFYO1xuICAgICAgICAgICAgICBuZXdIZWlnaHQgPSBuZXdXaWR0aCAvIGFzcGVjdFJhdGlvO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBMaW1pdHNcbiAgICAgICAgICBuZXdXaWR0aCA9IE1hdGgubWF4KDUwLCBNYXRoLm1pbigyMDAwLCBuZXdXaWR0aCkpO1xuICAgICAgICAgIG5ld0hlaWdodCA9IE1hdGgubWF4KDUwLCBNYXRoLm1pbigyMDAwLCBuZXdIZWlnaHQpKTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSBpbWFnZSBhdHRyaWJ1dGVzIGRpcmVjdGx5XG4gICAgICAgICAgaW1nLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIE1hdGgucm91bmQobmV3V2lkdGgpLnRvU3RyaW5nKCkpO1xuICAgICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgTWF0aC5yb3VuZChuZXdIZWlnaHQpLnRvU3RyaW5nKCkpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGhhbmRsZU1vdXNlVXAgPSAoKSA9PiB7XG4gICAgICAgICAgaXNSZXNpemluZyA9IGZhbHNlO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcInJlc2l6aW5nXCIpO1xuXG4gICAgICAgICAgLy8gVXBkYXRlIFRpcHRhcCBub2RlIHdpdGggbmV3IGRpbWVuc2lvbnMgYXQgdGhlIHNwZWNpZmljIHBvc2l0aW9uXG4gICAgICAgICAgY29uc3QgcG9zID0gdHlwZW9mIGdldFBvcyA9PT0gXCJmdW5jdGlvblwiID8gZ2V0UG9zKCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHR5cGVvZiBwb3MgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsV2lkdGggPSBwYXJzZUludChpbWcuZ2V0QXR0cmlidXRlKFwid2lkdGhcIikgfHwgXCIwXCIpO1xuICAgICAgICAgICAgY29uc3QgZmluYWxIZWlnaHQgPSBwYXJzZUludChpbWcuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpIHx8IFwiMFwiKTtcblxuICAgICAgICAgICAgaWYgKGZpbmFsV2lkdGggJiYgZmluYWxIZWlnaHQpIHtcbiAgICAgICAgICAgICAgZWRpdG9yLnZpZXcuZGlzcGF0Y2goXG4gICAgICAgICAgICAgICAgZWRpdG9yLnZpZXcuc3RhdGUudHIuc2V0Tm9kZU1hcmt1cChwb3MsIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgICAgLi4uY3VycmVudE5vZGUuYXR0cnMsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogZmluYWxXaWR0aCxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogZmluYWxIZWlnaHQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIGhhbmRsZU1vdXNlTW92ZSk7XG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgaGFuZGxlTW91c2VVcCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBoYW5kbGVNb3VzZU1vdmUpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBoYW5kbGVNb3VzZVVwKTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEFkZCBldmVudHMgdG8gaGFuZGxlc1xuICAgICAgcmVzaXplQ29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCBlID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICh0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwicmVzaXplLWhhbmRsZVwiKSkge1xuICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWRpcmVjdGlvblwiKTtcbiAgICAgICAgICBpZiAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBoYW5kbGVNb3VzZURvd24oZSwgZGlyZWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBQcm9wZXIgc2VsZWN0aW9uIG1hbmFnZW1lbnQgdmlhIFByb3NlTWlycm9yIGxpZmVjeWNsZVxuICAgICAgY29uc3Qgc2VsZWN0Tm9kZSA9ICgpID0+IHtcbiAgICAgICAgd3JhcHBlci5jbGFzc0xpc3QuYWRkKFwic2VsZWN0ZWRcIik7XG4gICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwic2VsZWN0ZWRcIik7XG4gICAgICAgIGltZy5jbGFzc0xpc3QuYWRkKFwic2VsZWN0ZWRcIik7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBkZXNlbGVjdE5vZGUgPSAoKSA9PiB7XG4gICAgICAgIHdyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZShcInNlbGVjdGVkXCIpO1xuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcInNlbGVjdGVkXCIpO1xuICAgICAgICBpbWcuY2xhc3NMaXN0LnJlbW92ZShcInNlbGVjdGVkXCIpO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZG9tOiB3cmFwcGVyLFxuICAgICAgICBzZWxlY3ROb2RlLFxuICAgICAgICBkZXNlbGVjdE5vZGUsXG4gICAgICAgIHVwZGF0ZTogdXBkYXRlZE5vZGUgPT4ge1xuICAgICAgICAgIGlmICh1cGRhdGVkTm9kZS50eXBlLm5hbWUgIT09IFwicmVzaXphYmxlSW1hZ2VcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnROb2RlID0gdXBkYXRlZE5vZGU7XG5cbiAgICAgICAgICBhcHBseVNyYyh1cGRhdGVkTm9kZS5hdHRyc1tcInNyY1wiXSk7XG4gICAgICAgICAgaW1nLmFsdCA9IHVwZGF0ZWROb2RlLmF0dHJzW1wiYWx0XCJdIHx8IFwiXCI7XG4gICAgICAgICAgaW1nLnRpdGxlID0gdXBkYXRlZE5vZGUuYXR0cnNbXCJ0aXRsZVwiXSB8fCBcIlwiO1xuXG4gICAgICAgICAgaWYgKHVwZGF0ZWROb2RlLmF0dHJzW1wid2lkdGhcIl0pIHtcbiAgICAgICAgICAgIGltZy53aWR0aCA9IHVwZGF0ZWROb2RlLmF0dHJzW1wid2lkdGhcIl07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1cGRhdGVkTm9kZS5hdHRyc1tcImhlaWdodFwiXSkge1xuICAgICAgICAgICAgaW1nLmhlaWdodCA9IHVwZGF0ZWROb2RlLmF0dHJzW1wiaGVpZ2h0XCJdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1cGRhdGVkTm9kZS5hdHRyc1tcInRleHRBbGlnblwiXSkge1xuICAgICAgICAgICAgd3JhcHBlci5zdHlsZS50ZXh0QWxpZ24gPSB1cGRhdGVkTm9kZS5hdHRyc1tcInRleHRBbGlnblwiXTtcbiAgICAgICAgICAgIHdyYXBwZXIuc2V0QXR0cmlidXRlKFwiZGF0YS1hbGlnblwiLCB1cGRhdGVkTm9kZS5hdHRyc1tcInRleHRBbGlnblwiXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUudGV4dEFsaWduID0gXCJcIjtcbiAgICAgICAgICAgIHdyYXBwZXIucmVtb3ZlQXR0cmlidXRlKFwiZGF0YS1hbGlnblwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgc3RvcEV2ZW50OiAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIHJldHVybiAhIXRhcmdldC5jbG9zZXN0KFwiLnJlc2l6ZS1jb250cm9sc1wiKTtcbiAgICAgICAgfSxcbiAgICAgICAgaWdub3JlTXV0YXRpb246ICgpID0+IHRydWUsXG4gICAgICAgIGRlc3Ryb3k6ICgpID0+IHtcbiAgICAgICAgICBkZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgICAgIHN0b3JhZ2Uuc3JjUmVmcmVzaGVycy5kZWxldGUocmVmcmVzaFNyYyk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH07XG4gIH0sXG59KTtcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9tb2RlbHMvYXRlLWVkaXRvci1jb25maWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQXRlVG9vbGJhckNvbmZpZyB9IGZyb20gXCIuL2F0ZS10b29sYmFyLm1vZGVsXCI7XG5pbXBvcnQgeyBSZWdpc3RlckFuZ3VsYXJDb21wb25lbnRPcHRpb25zIH0gZnJvbSBcIi4uL25vZGUtdmlldy9hdGUtbm9kZS12aWV3Lm1vZGVsc1wiO1xuaW1wb3J0IHtcbiAgQXRlQnViYmxlTWVudUNvbmZpZyxcbiAgQXRlSW1hZ2VCdWJibGVNZW51Q29uZmlnLFxuICBBdGVUYWJsZUJ1YmJsZU1lbnVDb25maWcsXG4gIEF0ZUNlbGxCdWJibGVNZW51Q29uZmlnLFxufSBmcm9tIFwiLi9hdGUtYnViYmxlLW1lbnUubW9kZWxcIjtcbmltcG9ydCB7IEF0ZVNsYXNoQ29tbWFuZHNDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnL2F0ZS1zbGFzaC1jb21tYW5kcy5jb25maWdcIjtcbmltcG9ydCB7IEF0ZUltYWdlU3JjUmVzb2x2ZXIsIEF0ZUltYWdlVXBsb2FkQ29uZmlnIH0gZnJvbSBcIi4vYXRlLWltYWdlLm1vZGVsXCI7XG5pbXBvcnQgeyBBdGVQYXN0ZUNvbmZpZyB9IGZyb20gXCIuL2F0ZS1wYXN0ZS5tb2RlbFwiO1xuaW1wb3J0IHsgQXRlVG9jQ29uZmlnIH0gZnJvbSBcIi4vYXRlLXRvYy5tb2RlbFwiO1xuaW1wb3J0IHsgRXh0ZW5zaW9uLCBOb2RlLCBNYXJrLCBFZGl0b3JPcHRpb25zIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBTdGFydGVyS2l0T3B0aW9ucyB9IGZyb20gXCJAdGlwdGFwL3N0YXJ0ZXIta2l0XCI7XG5pbXBvcnQgeyBBdGVTdGF0ZUNhbGN1bGF0b3IgfSBmcm9tIFwiLi9hdGUtZWRpdG9yLXN0YXRlLm1vZGVsXCI7XG5pbXBvcnQgeyBBdGVDdXN0b21TbGFzaENvbW1hbmRzIH0gZnJvbSBcIi4vYXRlLXNsYXNoLWNvbW1hbmQubW9kZWxcIjtcblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyBhbiBBbmd1bGFyIGNvbXBvbmVudCB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGFzIGFuIGVkaXRvciBub2RlLlxuICogQ2FuIGJlIGEgZGlyZWN0IENvbXBvbmVudCBjbGFzcyBvciBhIGZ1bGwgcmVnaXN0cmF0aW9uIG9wdGlvbnMgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBBdGVBbmd1bGFyTm9kZSA9IFR5cGU8dW5rbm93bj4gfCBSZWdpc3RlckFuZ3VsYXJDb21wb25lbnRPcHRpb25zPHVua25vd24+O1xuXG4vKiogUG9zc2libGUgZGlzcGxheSBtb2RlcyBmb3IgYmxvY2sgbGV2ZWwgY29udHJvbHMgKi9cbmV4cG9ydCB0eXBlIEF0ZUJsb2NrQ29udHJvbHNNb2RlID0gXCJpbnNpZGVcIiB8IFwib3V0c2lkZVwiIHwgXCJub25lXCI7XG5cbi8qKiBQb3NzaWJsZSB2YWx1ZXMgZm9yIGVkaXRvciBhdXRvZm9jdXMgKi9cbmV4cG9ydCB0eXBlIEF0ZUF1dG9mb2N1c01vZGUgPSBcInN0YXJ0XCIgfCBcImVuZFwiIHwgXCJhbGxcIiB8IGJvb2xlYW4gfCBudW1iZXI7XG5cbi8qKlxuICogR2xvYmFsIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciBBbmd1bGFyIFRpcHRhcCBFZGl0b3IuXG4gKiBVc2VzIGEgZmxhdCBzdHJ1Y3R1cmUgZm9yIGNvbW1vbiBzZXR0aW5ncyBhbmQgb2JqZWN0cyBmb3IgY29tcGxleCBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdGVFZGl0b3JDb25maWcge1xuICAvLyAtLS0gMS4gQ29yZSBTZXR0aW5ncyAoRmlyc3QtY2xhc3MgY2l0aXplbnMpIC0tLVxuXG4gIC8qKiBFZGl0b3IgdGhlbWU6IGxpZ2h0LCBkYXJrLCBvciBzeXN0ZW0gYXV0by1kZXRlY3Rpb24gKi9cbiAgdGhlbWU/OiBcImxpZ2h0XCIgfCBcImRhcmtcIiB8IFwiYXV0b1wiO1xuICAvKiogRGlzcGxheSBtb2RlOiBjbGFzc2ljIG9yIHNlYW1sZXNzIChubyBib3JkZXJzL2JhY2tncm91bmQpICovXG4gIG1vZGU/OiBcImNsYXNzaWNcIiB8IFwic2VhbWxlc3NcIjtcbiAgLyoqIEVkaXRvciBoZWlnaHQgKGUuZy4sICczMDBweCcsIDMwMCwgJ2F1dG8nKSAqL1xuICBoZWlnaHQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIC8qKiBGb2N1cyBwb3NpdGlvbiBvbiBpbml0aWFsaXphdGlvbiAqL1xuICBhdXRvZm9jdXM/OiBBdGVBdXRvZm9jdXNNb2RlO1xuICAvKiogUGxhY2Vob2xkZXIgdGV4dCBkaXNwbGF5ZWQgd2hlbiB0aGUgZWRpdG9yIGlzIGVtcHR5ICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAvKiogSW5pdGlhbCBlZGl0aW5nIHN0YXRlIChpZiBmYWxzZSwgdGhlIGVkaXRvciBpcyByZWFkLW9ubHkpICovXG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgLyoqIE1pbmltdW0gZWRpdG9yIGhlaWdodCAoZS5nLiwgJzIwMHB4JywgMjAwKSAqL1xuICBtaW5IZWlnaHQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIGVkaXRvciBoZWlnaHQgKGUuZy4sICc1MDBweCcsIDUwMCkgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAvKiogSWYgdHJ1ZSwgdGhlIGVkaXRvciB0YWtlcyAxMDAlIG9mIHRoZSBwYXJlbnQgY29udGFpbmVyJ3MgaGVpZ2h0ICovXG4gIGZpbGxDb250YWluZXI/OiBib29sZWFuO1xuICAvKiogRGlzYWJsZWQgc3RhdGUgKG9mdGVuIHVzZWQgd2l0aCBmb3JtcykgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogRWRpdG9yIGxvY2FsZSAob3ZlcnJpZGVzIHRoZSBnbG9iYWwgaTE4biBzZXJ2aWNlKSAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIC8qKiBFbmFibGUgYnJvd3NlciBzcGVsbGNoZWNrICovXG4gIHNwZWxsY2hlY2s/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIHNtYXJ0IGNsZWFudXAgd2hlbiBwYXN0aW5nIGZyb20gT2ZmaWNlL1dvcmQgKi9cbiAgZW5hYmxlT2ZmaWNlUGFzdGU/OiBib29sZWFuO1xuXG4gIC8vIC0tLSAyLiBEaXNwbGF5IE9wdGlvbnMgKFNpbXBsZSBib29sZWFucykgLS0tXG5cbiAgLyoqIFNob3cgb3IgaGlkZSB0aGUgdG9vbGJhciAqL1xuICBzaG93VG9vbGJhcj86IGJvb2xlYW47XG4gIC8qKiBTaG93IG9yIGhpZGUgdGhlIGZvb3RlciAoY291bnRlcnMgYXJlYSkgKi9cbiAgc2hvd0Zvb3Rlcj86IGJvb2xlYW47XG4gIC8qKiBTaG93IG9yIGhpZGUgdGhlIGNoYXJhY3RlciBjb3VudCAqL1xuICBzaG93Q2hhcmFjdGVyQ291bnQ/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIHRoZSB3b3JkIGNvdW50ICovXG4gIHNob3dXb3JkQ291bnQ/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIHRoZSByZWFkLW9ubHkvZWRpdCB0b2dnbGUgYnV0dG9uICovXG4gIHNob3dFZGl0VG9nZ2xlPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgb3IgaGlkZSB0aGUgdGV4dCBjb250ZXh0IG1lbnUgKi9cbiAgc2hvd0J1YmJsZU1lbnU/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIHRoZSBpbWFnZSBjb250ZXh0IG1lbnUgKi9cbiAgc2hvd0ltYWdlQnViYmxlTWVudT86IGJvb2xlYW47XG4gIC8qKiBTaG93IG9yIGhpZGUgdGhlIHRhYmxlIG1lbnUgKi9cbiAgc2hvd1RhYmxlTWVudT86IGJvb2xlYW47XG4gIC8qKiBTaG93IG9yIGhpZGUgdGhlIGNlbGwgbWVudSAqL1xuICBzaG93Q2VsbE1lbnU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byBhbGxvdyBpbWFnZSBkb3dubG9hZGluZyBmcm9tIGJ1YmJsZSBtZW51ICovXG4gIGRvd25sb2FkSW1hZ2U/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgc2xhc2ggY29tbWFuZHMgKC8pICovXG4gIGVuYWJsZVNsYXNoQ29tbWFuZHM/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIHRoZSBibG9jayBrZXlib2FyZCBzaG9ydGN1dHM6IGBNb2QrRGAgZHVwbGljYXRlcyB0aGUgY3VycmVudCBibG9jayxcbiAgICogYE1vZCtTaGlmdCtBcnJvd1VwYCAvIGBNb2QrU2hpZnQrQXJyb3dEb3duYCBtb3ZlIGl0IHVwIG9yIGRvd24uXG4gICAqL1xuICBlbmFibGVCbG9ja1Nob3J0Y3V0cz86IGJvb2xlYW47XG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGFsbG93ZWQgKi9cbiAgbWF4Q2hhcmFjdGVycz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEJsb2NrIGxldmVsIGNvbnRyb2xzIChwbHVzIGJ1dHRvbiBhbmQgZHJhZyBoYW5kbGUpIGRpc3BsYXkgbW9kZS5cbiAgICogLSAnaW5zaWRlJzogRWxlbWVudHMgYXJlIHBsYWNlZCBpbnNpZGUgdGhlIGVkaXRvciAocmVzZXJ2ZXMgc3BhY2UgdmlhIHBhZGRpbmcpLlxuICAgKiAtICdvdXRzaWRlJzogRWxlbWVudHMgZmxvYXQgb3V0c2lkZSB0aGUgZWRpdG9yIGJvdW5kYXJ5IChubyBsYXlvdXQgc2hpZnQpLlxuICAgKiAtICdub25lJzogRGlzYWJsZWQgKG5vdCBkaXNwbGF5ZWQpLlxuICAgKi9cbiAgYmxvY2tDb250cm9scz86IEF0ZUJsb2NrQ29udHJvbHNNb2RlO1xuXG4gIC8vIC0tLSAzLiBDb21wbGV4IENvbmZpZ3VyYXRpb25zIChDb25maWcgT2JqZWN0cykgLS0tXG5cbiAgLyoqIERldGFpbGVkIHRvb2xiYXIgY29uZmlndXJhdGlvbiAoaXRlbXMsIGdyb3VwcykgKi9cbiAgdG9vbGJhcj86IEF0ZVRvb2xiYXJDb25maWc7XG4gIC8qKiBUZXh0IGNvbnRleHQgbWVudSBjb25maWd1cmF0aW9uICovXG4gIGJ1YmJsZU1lbnU/OiBBdGVCdWJibGVNZW51Q29uZmlnO1xuICAvKiogSW1hZ2UgY29udGV4dCBtZW51IGNvbmZpZ3VyYXRpb24gKi9cbiAgaW1hZ2VCdWJibGVNZW51PzogQXRlSW1hZ2VCdWJibGVNZW51Q29uZmlnO1xuICAvKiogVGFibGUgY29udGV4dCBtZW51IGNvbmZpZ3VyYXRpb24gKi9cbiAgdGFibGVCdWJibGVNZW51PzogQXRlVGFibGVCdWJibGVNZW51Q29uZmlnO1xuICAvKiogQ2VsbCBjb250ZXh0IG1lbnUgY29uZmlndXJhdGlvbiAqL1xuICBjZWxsQnViYmxlTWVudT86IEF0ZUNlbGxCdWJibGVNZW51Q29uZmlnO1xuICAvKiogU2xhc2ggY29tbWFuZHMgY29uZmlndXJhdGlvbiAoLykgKi9cbiAgc2xhc2hDb21tYW5kcz86IEF0ZVNsYXNoQ29tbWFuZHNDb25maWc7XG4gIC8qKiBUYWJsZSBvZiBDb250ZW50cyBjb25maWd1cmF0aW9uICovXG4gIHRhYmxlT2ZDb250ZW50cz86IEF0ZVRvY0NvbmZpZztcbiAgLyoqIElmIHRydWUsIHNob3dzIHRoZSBmbG9hdGluZyB0b29sYmFyIG9uIGZvY3VzICovXG4gIGZsb2F0aW5nVG9vbGJhcj86IGJvb2xlYW47XG4gIC8qKiBXaGF0IGlzIGtlcHQgZnJvbSBIVE1MIHBhc3RlZCBvciBkcm9wcGVkIGZyb20gb3RoZXIgYXBwcywgYW5kIGFuIG9wdGlvbmFsIGB0cmFuc2Zvcm1IVE1MYCBob29rICovXG4gIHBhc3RlPzogQXRlUGFzdGVDb25maWc7XG5cbiAgLy8gLS0tIDQuIEV4dGVybmFsIE1vZHVsZXMgLS0tXG5cbiAgLyoqIFRlY2huaWNhbCBjb25maWd1cmF0aW9uIGZvciBpbWFnZSB1cGxvYWRzICovXG4gIGltYWdlVXBsb2FkPzogQXRlSW1hZ2VVcGxvYWRDb25maWc7XG5cbiAgLyoqIE1hcHMgdGhlIGBzcmNgIHN0b3JlZCBpbiB0aGUgZG9jdW1lbnQgdG8gdGhlIFVSTCB0aGUgZWRpdG9yIGRpc3BsYXlzIGFuZCBkb3dubG9hZHMgKGUuZy4gYSBgYmxvYjpgIGZldGNoZWQgd2l0aCBhIHRva2VuKSAqL1xuICBpbWFnZVNyY1Jlc29sdmVyPzogQXRlSW1hZ2VTcmNSZXNvbHZlcjtcblxuICAvKipcbiAgICogTGlzdCBvZiBBbmd1bGFyIGNvbXBvbmVudHMgdG8gYXV0b21hdGljYWxseSByZWdpc3RlciBhcyBpbnRlcmFjdGl2ZSBlZGl0b3Igbm9kZXMuXG4gICAqIFRoaXMgaXMgdGhlIHByZWZlcnJlZCB3YXkgdG8gZXh0ZW5kIHRoZSBlZGl0b3Igd2l0aCBjdXN0b20gQW5ndWxhciBsb2dpYy5cbiAgICovXG4gIGFuZ3VsYXJOb2Rlcz86IEF0ZUFuZ3VsYXJOb2RlW107XG5cbiAgLy8gLS0tIDUuIExvdy1sZXZlbCAmIFJlYWN0aXZlIEV4dGVuc2lvbnMgLS0tXG5cbiAgLyoqIFN0YW5kYXJkIFRpcFRhcCBleHRlbnNpb25zIChOb2RlcywgTWFya3MsIG9yIFBsdWdpbnMpICovXG4gIHRpcHRhcEV4dGVuc2lvbnM/OiAoRXh0ZW5zaW9uIHwgTm9kZSB8IE1hcmspW107XG4gIC8qKiBSYXcgVGlwVGFwIGVkaXRvciBvcHRpb25zIChlLmcuLCBlbmFibGVJbnB1dFJ1bGVzLCBpbmplY3RDU1MsIGV0Yy4pICovXG4gIHRpcHRhcE9wdGlvbnM/OiBQYXJ0aWFsPEVkaXRvck9wdGlvbnM+O1xuICAvKiogT3B0aW9ucyBmb3IgVGlwdGFwJ3MgU3RhcnRlcktpdCwgbWVyZ2VkIG92ZXIgdGhlIGxpYnJhcnkgZGVmYXVsdHMgKGUuZy4gYHsgdW5kb1JlZG86IGZhbHNlIH1gIGZvciBjb2xsYWJvcmF0aW9uKSAqL1xuICBzdGFydGVyS2l0T3B0aW9ucz86IFBhcnRpYWw8U3RhcnRlcktpdE9wdGlvbnM+O1xuICAvKiogUmVhY3RpdmUgc3RhdGUgY2FsY3VsYXRvcnMgdG8gZXh0ZW5kIHRoZSBlZGl0b3IncyBsaXZlIHN0YXRlICovXG4gIHN0YXRlQ2FsY3VsYXRvcnM/OiBBdGVTdGF0ZUNhbGN1bGF0b3JbXTtcbiAgLyoqXG4gICAqIEZ1bGx5IGN1c3RvbSBzbGFzaCBjb21tYW5kcyBjb25maWd1cmF0aW9uLlxuICAgKiBXaGVuIHByb3ZpZGVkLCBpdCByZXBsYWNlcyB0aGUgZGVmYXVsdCBncm91cHMgYmFzZWQgb24gdG9vbGJhciB0b2dnbGVzLlxuICAgKi9cbiAgY3VzdG9tU2xhc2hDb21tYW5kcz86IEF0ZUN1c3RvbVNsYXNoQ29tbWFuZHM7XG59XG4iXX0=
|
|
@@ -9,4 +9,4 @@ export class AteImageValidationError extends Error {
|
|
|
9
9
|
this.name = "AteImageValidationError";
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWltYWdlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvbW9kZWxzL2F0ZS1pbWFnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1QkE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF3QixTQUFRLEtBQUs7SUFDaEQsWUFDVyxNQUFnQyxFQUN6QyxPQUFlO1FBRWYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBSE4sV0FBTSxHQUFOLE1BQU0sQ0FBMEI7UUFJekMsSUFBSSxDQUFDLElBQUksR0FBRyx5QkFBeUIsQ0FBQztJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdGVJbWFnZURhdGEge1xuICBzcmM6IHN0cmluZztcbiAgYWx0Pzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdGVJbWFnZVVwbG9hZFJlc3VsdCB7XG4gIHNyYzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNpemU6IG51bWJlcjtcbiAgdHlwZTogc3RyaW5nO1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBvcmlnaW5hbFNpemU/OiBudW1iZXI7XG59XG5cbi8qKiBXaHkgYW4gaW1hZ2UgZmFpbGVkIHZhbGlkYXRpb246IGl0cyB0eXBlIGlzIG5vdCBpbiBgYWxsb3dlZFR5cGVzYCwgb3IgaXQgZXhjZWVkcyBgbWF4U2l6ZWAgKi9cbmV4cG9ydCB0eXBlIEF0ZUltYWdlVmFsaWRhdGlvblJlYXNvbiA9IFwiaW52YWxpZC10eXBlXCIgfCBcInRvby1sYXJnZVwiO1xuXG4vKipcbiAqIFRocm93biB3aGVuIGFuIGltYWdlIGZhaWxzIHZhbGlkYXRpb24sIGJlZm9yZSBjb21wcmVzc2lvbiBhbmQgYmVmb3JlIGBpbWFnZVVwbG9hZEhhbmRsZXJgIHJ1bnMuXG4gKiBgbWVzc2FnZWAgaXMgdGhlIHRyYW5zbGF0ZWQsIHVzZXItZmFjaW5nIHRleHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdGVJbWFnZVZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgcmVhc29uOiBBdGVJbWFnZVZhbGlkYXRpb25SZWFzb24sXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiQXRlSW1hZ2VWYWxpZGF0aW9uRXJyb3JcIjtcbiAgfVxufVxuXG4vKiogV2hlcmUgYSByZWplY3RlZCBpbWFnZSBmaWxlIGNhbWUgZnJvbSAqL1xuZXhwb3J0IHR5cGUgQXRlSW1hZ2VTb3VyY2UgPSBcInBhc3RlXCIgfCBcImRyb3BcIiB8IFwicGlja2VyXCIgfCBcImFwaVwiO1xuXG4vKipcbiAqIEVtaXR0ZWQgd2hlbiBhbiBpbWFnZSBmaWxlIGNhbm5vdCBiZSBpbnNlcnRlZC5cbiAqIC0gYGludmFsaWQtdHlwZWA6IHRoZSBmaWxlIHR5cGUgaXMgbm90IGluIGBhbGxvd2VkVHlwZXNgXG4gKiAtIGB0b28tbGFyZ2VgOiB0aGUgZmlsZSBleGNlZWRzIGBtYXhTaXplYFxuICogLSBgdXBsb2FkLWZhaWxlZGA6IHByb2Nlc3Npbmcgb3IgYGltYWdlVXBsb2FkSGFuZGxlcmAgZmFpbGVkXG4gKlxuICogYHNvdXJjZWAgaXMgYHBhc3RlYCAoY2xpcGJvYXJkIGZpbGUpLCBgZHJvcGAsIGBwaWNrZXJgICh0b29sYmFyLCBzbGFzaCBtZW51LCBpbWFnZSBidWJibGUgbWVudSlcbiAqIG9yIGBhcGlgIChgdXBsb2FkSW1hZ2VgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdGVJbWFnZVJlamVjdGlvbiB7XG4gIHJlYXNvbjogQXRlSW1hZ2VWYWxpZGF0aW9uUmVhc29uIHwgXCJ1cGxvYWQtZmFpbGVkXCI7XG4gIGZpbGU6IEZpbGU7XG4gIHNvdXJjZTogQXRlSW1hZ2VTb3VyY2U7XG59XG5cbi8qKlxuICogRW1pdHRlZCB3aGVuIGFuIGltYWdlIGZvdW5kIGluIHBhc3RlZCBIVE1MIGNhbm5vdCBiZSBrZXB0LlxuICogLSBgdW5yZWFjaGFibGVgOiB0aGUgcGFnZSBjYW5ub3QgbG9hZCBpdHMgc291cmNlIChlLmcuIGBhdHRhY2htZW50OmAsIGBmaWxlOmAsIGBjaWQ6YCwgZm9yZWlnbiBgYmxvYjpgLCBtYWxmb3JtZWQgYmFzZTY0KVxuICogLSBgaW52YWxpZC10eXBlYDogYSBwYXN0ZWQgYmFzZTY0IGltYWdlIGhhcyBhIHR5cGUgdGhhdCBpcyBub3QgaW4gYGFsbG93ZWRUeXBlc2BcbiAqIC0gYHRvby1sYXJnZWA6IGEgcGFzdGVkIGJhc2U2NCBpbWFnZSBleGNlZWRzIGBtYXhTaXplYFxuICogLSBgdXBsb2FkLWZhaWxlZGA6IGEgcGFzdGVkIGJhc2U2NCBpbWFnZSB3YXMgcmVqZWN0ZWQgYnkgdGhlIHVwbG9hZCBoYW5kbGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlUGFzdGVkSW1hZ2VSZWplY3Rpb24ge1xuICByZWFzb246IFwidW5yZWFjaGFibGVcIiB8IEF0ZUltYWdlVmFsaWRhdGlvblJlYXNvbiB8IFwidXBsb2FkLWZhaWxlZFwiO1xuICBzcmM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdGVSZXNpemVPcHRpb25zIHtcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgbWFpbnRhaW5Bc3BlY3RSYXRpbz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXRlSW1hZ2VVcGxvYWRPcHRpb25zIHtcbiAgcXVhbGl0eT86IG51bWJlcjtcbiAgbWF4V2lkdGg/OiBudW1iZXI7XG4gIG1heEhlaWdodD86IG51bWJlcjtcbiAgbWF4U2l6ZT86IG51bWJlcjsgLy8gaW4gYnl0ZXNcbiAgYWxsb3dlZFR5cGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udGV4dCBwYXNzZWQgdG8gdGhlIGltYWdlIHVwbG9hZCBoYW5kbGVyIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGltYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlSW1hZ2VVcGxvYWRDb250ZXh0IHtcbiAgLyoqIE9yaWdpbmFsIGZpbGUgYmVpbmcgdXBsb2FkZWQgKi9cbiAgZmlsZTogRmlsZTtcbiAgLyoqIFdpZHRoIG9mIHRoZSBwcm9jZXNzZWQgaW1hZ2UgKi9cbiAgd2lkdGg6IG51bWJlcjtcbiAgLyoqIEhlaWdodCBvZiB0aGUgcHJvY2Vzc2VkIGltYWdlICovXG4gIGhlaWdodDogbnVtYmVyO1xuICAvKiogTUlNRSB0eXBlIG9mIHRoZSBpbWFnZSAqL1xuICB0eXBlOiBzdHJpbmc7XG4gIC8qKiBCYXNlNjQgZGF0YSBVUkwgb2YgdGhlIHByb2Nlc3NlZCBpbWFnZSAoYWZ0ZXIgY29tcHJlc3Npb24vcmVzaXplKSAqL1xuICBiYXNlNjQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXN1bHQgZXhwZWN0ZWQgZnJvbSBhIGN1c3RvbSBpbWFnZSB1cGxvYWQgaGFuZGxlci5cbiAqIE11c3QgY29udGFpbiBhdCBsZWFzdCB0aGUgYHNyY2AgcHJvcGVydHkgd2l0aCB0aGUgaW1hZ2UgVVJMLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0ZUltYWdlVXBsb2FkSGFuZGxlclJlc3VsdCB7XG4gIC8qKiBVUkwgb2YgdGhlIHVwbG9hZGVkIGltYWdlIChjYW4gYmUgYSByZW1vdGUgVVJMIG9yIGFueSBzdHJpbmcpICovXG4gIHNyYzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgY3VzdG9tIGFsdCB0ZXh0ICovXG4gIGFsdD86IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIGN1c3RvbSB0aXRsZSAqL1xuICB0aXRsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDdXN0b20gaGFuZGxlciBmdW5jdGlvbiBmb3IgaW1hZ2UgdXBsb2Fkcy5cbiAqIEFsbG93cyB1c2VycyB0byBpbXBsZW1lbnQgdGhlaXIgb3duIGltYWdlIHN0b3JhZ2UgbG9naWMgKGUuZy4sIHVwbG9hZCB0byBTMywgQ2xvdWRpbmFyeSwgZXRjLilcbiAqXG4gKiBDYW4gcmV0dXJuIGVpdGhlciBhIFByb21pc2Ugb3IgYW4gT2JzZXJ2YWJsZSAoQW5ndWxhci1mcmllbmRseSkuXG4gKlxuICogQHBhcmFtIGNvbnRleHQgLSBDb250ZXh0IGNvbnRhaW5pbmcgdGhlIGltYWdlIGZpbGUgYW5kIG1ldGFkYXRhXG4gKiBAcmV0dXJucyBQcm9taXNlIG9yIE9ic2VydmFibGUgcmVzb2x2aW5nIHRvIEltYWdlVXBsb2FkSGFuZGxlclJlc3VsdFxuICpcbiAqIEBleGFtcGxlIFVzaW5nIFByb21pc2UgKGFzeW5jL2F3YWl0KVxuICogYGBgdHlwZXNjcmlwdFxuICogdXBsb2FkSGFuZGxlcjogSW1hZ2VVcGxvYWRIYW5kbGVyID0gYXN5bmMgKGN0eCkgPT4ge1xuICogICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICogICBmb3JtRGF0YS5hcHBlbmQoJ2ltYWdlJywgY3R4LmZpbGUpO1xuICogICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDx7dXJsOiBzdHJpbmd9PignL2FwaS91cGxvYWQnLCBmb3JtRGF0YSkpO1xuICogICByZXR1cm4geyBzcmM6IHJlc3VsdC51cmwgfTtcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBVc2luZyBPYnNlcnZhYmxlIChBbmd1bGFyIEh0dHBDbGllbnQpXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB1cGxvYWRIYW5kbGVyOiBJbWFnZVVwbG9hZEhhbmRsZXIgPSAoY3R4KSA9PiB7XG4gKiAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gKiAgIGZvcm1EYXRhLmFwcGVuZCgnaW1hZ2UnLCBjdHguZmlsZSk7XG4gKiAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx7dXJsOiBzdHJpbmd9PignL2FwaS91cGxvYWQnLCBmb3JtRGF0YSkucGlwZShcbiAqICAgICBtYXAocmVzdWx0ID0+ICh7IHNyYzogcmVzdWx0LnVybCB9KSlcbiAqICAgKTtcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgQXRlSW1hZ2VVcGxvYWRIYW5kbGVyID0gKFxuICBjb250ZXh0OiBBdGVJbWFnZVVwbG9hZENvbnRleHRcbikgPT4gUHJvbWlzZTxBdGVJbWFnZVVwbG9hZEhhbmRsZXJSZXN1bHQ+IHwgT2JzZXJ2YWJsZTxBdGVJbWFnZVVwbG9hZEhhbmRsZXJSZXN1bHQ+O1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWRpY2F0ZWQgdG8gaW1hZ2UgdXBsb2FkIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlSW1hZ2VVcGxvYWRDb25maWcge1xuICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gaGFuZGxlIHVwbG9hZCAoUHJvbWlzZSBvciBPYnNlcnZhYmxlKSAqL1xuICBoYW5kbGVyPzogQXRlSW1hZ2VVcGxvYWRIYW5kbGVyO1xuICAvKiogQ29tcHJlc3Npb24gcXVhbGl0eSAoMCB0byAxKSAqL1xuICBxdWFsaXR5PzogbnVtYmVyO1xuICAvKiogTWF4aW11bSBhbGxvd2VkIHdpZHRoIGluIHBpeGVscyAqL1xuICBtYXhXaWR0aD86IG51bWJlcjtcbiAgLyoqIE1heGltdW0gYWxsb3dlZCBoZWlnaHQgaW4gcGl4ZWxzICovXG4gIG1heEhlaWdodD86IG51bWJlcjtcbiAgLyoqIE1heGltdW0gYWxsb3dlZCBzaXplIGluIE1CICovXG4gIG1heFNpemU/
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWltYWdlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvbW9kZWxzL2F0ZS1pbWFnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1QkE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF3QixTQUFRLEtBQUs7SUFDaEQsWUFDVyxNQUFnQyxFQUN6QyxPQUFlO1FBRWYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBSE4sV0FBTSxHQUFOLE1BQU0sQ0FBMEI7UUFJekMsSUFBSSxDQUFDLElBQUksR0FBRyx5QkFBeUIsQ0FBQztJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdGVJbWFnZURhdGEge1xuICBzcmM6IHN0cmluZztcbiAgYWx0Pzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdGVJbWFnZVVwbG9hZFJlc3VsdCB7XG4gIHNyYzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNpemU6IG51bWJlcjtcbiAgdHlwZTogc3RyaW5nO1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBvcmlnaW5hbFNpemU/OiBudW1iZXI7XG59XG5cbi8qKiBXaHkgYW4gaW1hZ2UgZmFpbGVkIHZhbGlkYXRpb246IGl0cyB0eXBlIGlzIG5vdCBpbiBgYWxsb3dlZFR5cGVzYCwgb3IgaXQgZXhjZWVkcyBgbWF4U2l6ZWAgKi9cbmV4cG9ydCB0eXBlIEF0ZUltYWdlVmFsaWRhdGlvblJlYXNvbiA9IFwiaW52YWxpZC10eXBlXCIgfCBcInRvby1sYXJnZVwiO1xuXG4vKipcbiAqIFRocm93biB3aGVuIGFuIGltYWdlIGZhaWxzIHZhbGlkYXRpb24sIGJlZm9yZSBjb21wcmVzc2lvbiBhbmQgYmVmb3JlIGBpbWFnZVVwbG9hZEhhbmRsZXJgIHJ1bnMuXG4gKiBgbWVzc2FnZWAgaXMgdGhlIHRyYW5zbGF0ZWQsIHVzZXItZmFjaW5nIHRleHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdGVJbWFnZVZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgcmVhc29uOiBBdGVJbWFnZVZhbGlkYXRpb25SZWFzb24sXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiQXRlSW1hZ2VWYWxpZGF0aW9uRXJyb3JcIjtcbiAgfVxufVxuXG4vKiogV2hlcmUgYSByZWplY3RlZCBpbWFnZSBmaWxlIGNhbWUgZnJvbSAqL1xuZXhwb3J0IHR5cGUgQXRlSW1hZ2VTb3VyY2UgPSBcInBhc3RlXCIgfCBcImRyb3BcIiB8IFwicGlja2VyXCIgfCBcImFwaVwiO1xuXG4vKipcbiAqIEVtaXR0ZWQgd2hlbiBhbiBpbWFnZSBmaWxlIGNhbm5vdCBiZSBpbnNlcnRlZC5cbiAqIC0gYGludmFsaWQtdHlwZWA6IHRoZSBmaWxlIHR5cGUgaXMgbm90IGluIGBhbGxvd2VkVHlwZXNgXG4gKiAtIGB0b28tbGFyZ2VgOiB0aGUgZmlsZSBleGNlZWRzIGBtYXhTaXplYFxuICogLSBgdXBsb2FkLWZhaWxlZGA6IHByb2Nlc3Npbmcgb3IgYGltYWdlVXBsb2FkSGFuZGxlcmAgZmFpbGVkXG4gKlxuICogYHNvdXJjZWAgaXMgYHBhc3RlYCAoY2xpcGJvYXJkIGZpbGUpLCBgZHJvcGAsIGBwaWNrZXJgICh0b29sYmFyLCBzbGFzaCBtZW51LCBpbWFnZSBidWJibGUgbWVudSlcbiAqIG9yIGBhcGlgIChgdXBsb2FkSW1hZ2VgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdGVJbWFnZVJlamVjdGlvbiB7XG4gIHJlYXNvbjogQXRlSW1hZ2VWYWxpZGF0aW9uUmVhc29uIHwgXCJ1cGxvYWQtZmFpbGVkXCI7XG4gIGZpbGU6IEZpbGU7XG4gIHNvdXJjZTogQXRlSW1hZ2VTb3VyY2U7XG59XG5cbi8qKlxuICogRW1pdHRlZCB3aGVuIGFuIGltYWdlIGZvdW5kIGluIHBhc3RlZCBIVE1MIGNhbm5vdCBiZSBrZXB0LlxuICogLSBgdW5yZWFjaGFibGVgOiB0aGUgcGFnZSBjYW5ub3QgbG9hZCBpdHMgc291cmNlIChlLmcuIGBhdHRhY2htZW50OmAsIGBmaWxlOmAsIGBjaWQ6YCwgZm9yZWlnbiBgYmxvYjpgLCBtYWxmb3JtZWQgYmFzZTY0KVxuICogLSBgaW52YWxpZC10eXBlYDogYSBwYXN0ZWQgYmFzZTY0IGltYWdlIGhhcyBhIHR5cGUgdGhhdCBpcyBub3QgaW4gYGFsbG93ZWRUeXBlc2BcbiAqIC0gYHRvby1sYXJnZWA6IGEgcGFzdGVkIGJhc2U2NCBpbWFnZSBleGNlZWRzIGBtYXhTaXplYFxuICogLSBgdXBsb2FkLWZhaWxlZGA6IGEgcGFzdGVkIGJhc2U2NCBpbWFnZSB3YXMgcmVqZWN0ZWQgYnkgdGhlIHVwbG9hZCBoYW5kbGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlUGFzdGVkSW1hZ2VSZWplY3Rpb24ge1xuICByZWFzb246IFwidW5yZWFjaGFibGVcIiB8IEF0ZUltYWdlVmFsaWRhdGlvblJlYXNvbiB8IFwidXBsb2FkLWZhaWxlZFwiO1xuICBzcmM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdGVSZXNpemVPcHRpb25zIHtcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgbWFpbnRhaW5Bc3BlY3RSYXRpbz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXRlSW1hZ2VVcGxvYWRPcHRpb25zIHtcbiAgcXVhbGl0eT86IG51bWJlcjtcbiAgbWF4V2lkdGg/OiBudW1iZXI7XG4gIG1heEhlaWdodD86IG51bWJlcjtcbiAgbWF4U2l6ZT86IG51bWJlcjsgLy8gaW4gYnl0ZXNcbiAgYWxsb3dlZFR5cGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udGV4dCBwYXNzZWQgdG8gdGhlIGltYWdlIHVwbG9hZCBoYW5kbGVyIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGltYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlSW1hZ2VVcGxvYWRDb250ZXh0IHtcbiAgLyoqIE9yaWdpbmFsIGZpbGUgYmVpbmcgdXBsb2FkZWQgKi9cbiAgZmlsZTogRmlsZTtcbiAgLyoqIFdpZHRoIG9mIHRoZSBwcm9jZXNzZWQgaW1hZ2UgKi9cbiAgd2lkdGg6IG51bWJlcjtcbiAgLyoqIEhlaWdodCBvZiB0aGUgcHJvY2Vzc2VkIGltYWdlICovXG4gIGhlaWdodDogbnVtYmVyO1xuICAvKiogTUlNRSB0eXBlIG9mIHRoZSBpbWFnZSAqL1xuICB0eXBlOiBzdHJpbmc7XG4gIC8qKiBCYXNlNjQgZGF0YSBVUkwgb2YgdGhlIHByb2Nlc3NlZCBpbWFnZSAoYWZ0ZXIgY29tcHJlc3Npb24vcmVzaXplKSAqL1xuICBiYXNlNjQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXN1bHQgZXhwZWN0ZWQgZnJvbSBhIGN1c3RvbSBpbWFnZSB1cGxvYWQgaGFuZGxlci5cbiAqIE11c3QgY29udGFpbiBhdCBsZWFzdCB0aGUgYHNyY2AgcHJvcGVydHkgd2l0aCB0aGUgaW1hZ2UgVVJMLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0ZUltYWdlVXBsb2FkSGFuZGxlclJlc3VsdCB7XG4gIC8qKiBVUkwgb2YgdGhlIHVwbG9hZGVkIGltYWdlIChjYW4gYmUgYSByZW1vdGUgVVJMIG9yIGFueSBzdHJpbmcpICovXG4gIHNyYzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgY3VzdG9tIGFsdCB0ZXh0ICovXG4gIGFsdD86IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIGN1c3RvbSB0aXRsZSAqL1xuICB0aXRsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDdXN0b20gaGFuZGxlciBmdW5jdGlvbiBmb3IgaW1hZ2UgdXBsb2Fkcy5cbiAqIEFsbG93cyB1c2VycyB0byBpbXBsZW1lbnQgdGhlaXIgb3duIGltYWdlIHN0b3JhZ2UgbG9naWMgKGUuZy4sIHVwbG9hZCB0byBTMywgQ2xvdWRpbmFyeSwgZXRjLilcbiAqXG4gKiBDYW4gcmV0dXJuIGVpdGhlciBhIFByb21pc2Ugb3IgYW4gT2JzZXJ2YWJsZSAoQW5ndWxhci1mcmllbmRseSkuXG4gKlxuICogQHBhcmFtIGNvbnRleHQgLSBDb250ZXh0IGNvbnRhaW5pbmcgdGhlIGltYWdlIGZpbGUgYW5kIG1ldGFkYXRhXG4gKiBAcmV0dXJucyBQcm9taXNlIG9yIE9ic2VydmFibGUgcmVzb2x2aW5nIHRvIEltYWdlVXBsb2FkSGFuZGxlclJlc3VsdFxuICpcbiAqIEBleGFtcGxlIFVzaW5nIFByb21pc2UgKGFzeW5jL2F3YWl0KVxuICogYGBgdHlwZXNjcmlwdFxuICogdXBsb2FkSGFuZGxlcjogSW1hZ2VVcGxvYWRIYW5kbGVyID0gYXN5bmMgKGN0eCkgPT4ge1xuICogICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICogICBmb3JtRGF0YS5hcHBlbmQoJ2ltYWdlJywgY3R4LmZpbGUpO1xuICogICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDx7dXJsOiBzdHJpbmd9PignL2FwaS91cGxvYWQnLCBmb3JtRGF0YSkpO1xuICogICByZXR1cm4geyBzcmM6IHJlc3VsdC51cmwgfTtcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBVc2luZyBPYnNlcnZhYmxlIChBbmd1bGFyIEh0dHBDbGllbnQpXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB1cGxvYWRIYW5kbGVyOiBJbWFnZVVwbG9hZEhhbmRsZXIgPSAoY3R4KSA9PiB7XG4gKiAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gKiAgIGZvcm1EYXRhLmFwcGVuZCgnaW1hZ2UnLCBjdHguZmlsZSk7XG4gKiAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx7dXJsOiBzdHJpbmd9PignL2FwaS91cGxvYWQnLCBmb3JtRGF0YSkucGlwZShcbiAqICAgICBtYXAocmVzdWx0ID0+ICh7IHNyYzogcmVzdWx0LnVybCB9KSlcbiAqICAgKTtcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgQXRlSW1hZ2VVcGxvYWRIYW5kbGVyID0gKFxuICBjb250ZXh0OiBBdGVJbWFnZVVwbG9hZENvbnRleHRcbikgPT4gUHJvbWlzZTxBdGVJbWFnZVVwbG9hZEhhbmRsZXJSZXN1bHQ+IHwgT2JzZXJ2YWJsZTxBdGVJbWFnZVVwbG9hZEhhbmRsZXJSZXN1bHQ+O1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWRpY2F0ZWQgdG8gaW1hZ2UgdXBsb2FkIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlSW1hZ2VVcGxvYWRDb25maWcge1xuICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gaGFuZGxlIHVwbG9hZCAoUHJvbWlzZSBvciBPYnNlcnZhYmxlKSAqL1xuICBoYW5kbGVyPzogQXRlSW1hZ2VVcGxvYWRIYW5kbGVyO1xuICAvKiogQ29tcHJlc3Npb24gcXVhbGl0eSAoMCB0byAxKSAqL1xuICBxdWFsaXR5PzogbnVtYmVyO1xuICAvKiogTWF4aW11bSBhbGxvd2VkIHdpZHRoIGluIHBpeGVscyAqL1xuICBtYXhXaWR0aD86IG51bWJlcjtcbiAgLyoqIE1heGltdW0gYWxsb3dlZCBoZWlnaHQgaW4gcGl4ZWxzICovXG4gIG1heEhlaWdodD86IG51bWJlcjtcbiAgLyoqIE1heGltdW0gYWxsb3dlZCBzaXplIGluIE1CICovXG4gIG1heFNpemU/OiBudW1iZXI7XG4gIC8qKiBBY2NlcHRlZCBmaWxlIHR5cGVzIChlLmcuLCBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcG5nJ10pICovXG4gIGFsbG93ZWRUeXBlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE1hcHMgdGhlIGBzcmNgIHN0b3JlZCBpbiB0aGUgZG9jdW1lbnQgdG8gdGhlIFVSTCB0aGUgZWRpdG9yIGRpc3BsYXlzIChhbmQgZG93bmxvYWRzKS5cbiAqIFRoZSBkb2N1bWVudCwgYGdldEhUTUwoKWAsIGBnZXRKU09OKClgIGFuZCBleHBvcnRzIGFsd2F5cyBrZWVwIHRoZSBvcmlnaW5hbCBgc3JjYC5cbiAqXG4gKiBVc2UgaXQgZm9yIGltYWdlcyB0aGF0IGNhbm5vdCBiZSBsb2FkZWQgYnkgYSBwbGFpbiBgPGltZyBzcmM+YCwgZS5nLiBlbmRwb2ludHMgdGhhdCBuZWVkIGFuXG4gKiBhdXRob3JpemF0aW9uIGhlYWRlcjogZmV0Y2ggdGhlIGltYWdlIGFuZCByZXNvbHZlIHRvIGEgYGJsb2I6YCBVUkwuXG4gKlxuICogQ2FuIHJldHVybiBhIHN0cmluZywgYSBQcm9taXNlIG9yIGFuIE9ic2VydmFibGUgKG9ubHkgdGhlIGZpcnN0IGVtaXNzaW9uIGlzIHVzZWQpLlxuICogV2hlbiBpdCB0aHJvd3MsIHJlamVjdHMgb3IgZW1pdHMgbm90aGluZywgdGhlIG9yaWdpbmFsIGBzcmNgIGlzIGRpc3BsYXllZCBpbnN0ZWFkLlxuICogVGhlIGxpYnJhcnkgbmV2ZXIgcmV2b2tlcyB0aGUgVVJMcyBpdCByZXR1cm5zOiBpZiB5b3UgY3JlYXRlIGBibG9iOmAgVVJMcywgeW91IG93biB0aGVpciBsaWZldGltZS5cbiAqL1xuZXhwb3J0IHR5cGUgQXRlSW1hZ2VTcmNSZXNvbHZlciA9IChzcmM6IHN0cmluZykgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxzdHJpbmc+O1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXBhc3RlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvbW9kZWxzL2F0ZS1wYXN0ZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXaGVyZSBwYXN0ZWQgKG9yIGRyb3BwZWQpIEhUTUwgY29tZXMgZnJvbS5cbiAqIC0gYGVkaXRvcmA6IGNvcGllZCBmcm9tIGFuIEFuZ3VsYXIgVGlwdGFwIEVkaXRvciAodGhpcyBvbmUgb3IgYW5vdGhlciBvbmUsIGluIGFueSBhcHApXG4gKiAtIGBvZmZpY2VgOiBjb3BpZWQgZnJvbSBNaWNyb3NvZnQgV29yZCBvciBFeGNlbFxuICogLSBgZXh0ZXJuYWxgOiBhbnl0aGluZyBlbHNlIChHb29nbGUgRG9jcywgd2ViIHBhZ2VzLCBvdGhlciBlZGl0b3JzIHN1Y2ggYXMgQ29uZmx1ZW5jZSlcbiAqL1xuZXhwb3J0IHR5cGUgQXRlUGFzdGVTb3VyY2UgPSBcImVkaXRvclwiIHwgXCJvZmZpY2VcIiB8IFwiZXh0ZXJuYWxcIjtcblxuLyoqIENvbnRleHQgZ2l2ZW4gdG8gYEF0ZVBhc3RlQ29uZmlnLnRyYW5zZm9ybUhUTUxgICovXG5leHBvcnQgaW50ZXJmYWNlIEF0ZVBhc3RlQ29udGV4dCB7XG4gIC8qKiBXaGVyZSB0aGUgSFRNTCBjb21lcyBmcm9tLCBkZXRlY3RlZCBvbiB0aGUgY2xpcGJvYXJkIEhUTUwgYXMgY29waWVkICovXG4gIHNvdXJjZTogQXRlUGFzdGVTb3VyY2U7XG59XG5cbi8qKlxuICogQ29udHJvbHMgd2hhdCBpcyBrZXB0IGZyb20gSFRNTCBwYXN0ZWQgb3IgZHJvcHBlZCBpbnRvIHRoZSBlZGl0b3IuXG4gKiBGb3JtYXQga2V5cyBvbmx5IGFwcGx5IHRvIGNvbnRlbnQgZnJvbSBvdGhlciBhcHBzIChgb2ZmaWNlYCBhbmQgYGV4dGVybmFsYCBzb3VyY2VzKTpcbiAqIGNvbnRlbnQgY29waWVkIGZyb20gYW4gZWRpdG9yIGFsd2F5cyBrZWVwcyBpdHMgZm9ybWF0dGluZy5cbiAqIEV2ZXJ5IGtleSBpcyByZWFkIGF0IHBhc3RlIHRpbWUsIHNvIGNoYW5nZXMgYXBwbHkgdG8gdGhlIG5leHQgcGFzdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlUGFzdGVDb25maWcge1xuICAvKiogS2VlcCB0ZXh0IGNvbG9ycyBmcm9tIG90aGVyIGFwcHMgKGBjb2xvcmAgc3R5bGVzLCBgPGZvbnQgY29sb3I+YCkuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBjb2xvcnM/OiBib29sZWFuO1xuICAvKiogS2VlcCBoaWdobGlnaHRzIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBmcm9tIG90aGVyIGFwcHMgKGA8bWFyaz5gLCBgYmFja2dyb3VuZC1jb2xvcmApLiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgaGlnaGxpZ2h0cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMYXN0IHN0ZXAgYmVmb3JlIHRoZSBIVE1MIGlzIHBhcnNlZDogcmVjZWl2ZXMgdGhlIEhUTUwgKGFmdGVyIHRoZSBPZmZpY2UgY2xlYW51cCBhbmQgdGhlIGZvcm1hdCBrZXlzIGFib3ZlKVxuICAgKiBhbmQgcmV0dXJucyB0aGUgSFRNTCB0byBpbnNlcnQuIENhbGxlZCBmb3IgZXZlcnkgc291cmNlLCBpbmNsdWRpbmcgYGVkaXRvcmAuXG4gICAqIElmIGl0IHRocm93cyBvciBkb2VzIG5vdCByZXR1cm4gYSBzdHJpbmcsIHRoZSBIVE1MIGlzIGluc2VydGVkIGFzIGl0IHdhcyBiZWZvcmUgdGhpcyBzdGVwLlxuICAgKlxuICAgKiBAZXhhbXBsZSBEcm9wIGltYWdlcyBwYXN0ZWQgZnJvbSB3ZWIgcGFnZXNcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB0cmFuc2Zvcm1IVE1MOiAoaHRtbCwgeyBzb3VyY2UgfSkgPT5cbiAgICogICBzb3VyY2UgPT09ICdleHRlcm5hbCcgPyBodG1sLnJlcGxhY2UoLzxpbWdbXj5dKj4vZywgJycpIDogaHRtbFxuICAgKiBgYGBcbiAgICovXG4gIHRyYW5zZm9ybUhUTUw/OiAoaHRtbDogc3RyaW5nLCBjb250ZXh0OiBBdGVQYXN0ZUNvbnRleHQpID0+IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -91,6 +91,12 @@ export class AteEditorCommandsService {
|
|
|
91
91
|
set uploadHandler(handler) {
|
|
92
92
|
this.imageService.uploadHandler = handler;
|
|
93
93
|
}
|
|
94
|
+
get srcResolver() {
|
|
95
|
+
return this.imageService.srcResolver;
|
|
96
|
+
}
|
|
97
|
+
set srcResolver(resolver) {
|
|
98
|
+
this.imageService.srcResolver = resolver;
|
|
99
|
+
}
|
|
94
100
|
/** Update state (called by TiptapStateExtension) */
|
|
95
101
|
updateState(state) {
|
|
96
102
|
this._editorState.set(state);
|
|
@@ -516,4 +522,4 @@ export class AteEditorCommandsService {
|
|
|
516
522
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteEditorCommandsService, decorators: [{
|
|
517
523
|
type: Injectable
|
|
518
524
|
}] });
|
|
519
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1jb21tYW5kcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvc2VydmljZXMvYXRlLWVkaXRvci1jb21tYW5kcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRixPQUFPLEVBQTBCLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBU3BHLE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVCLGlCQUFZLEdBQUcsTUFBTSxDQUF5Qix3QkFBd0IsRUFBRTtZQUN2RixLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2QsNkJBQTZCO2dCQUM3QixJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDakUsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztnQkFFRCxtQ0FBbUM7Z0JBQ25DLElBQ0UsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJO29CQUNyQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ2pDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSTtvQkFDckMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLO29CQUN2QyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksRUFDckQsQ0FBQztvQkFDRCxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO2dCQUVELCtCQUErQjtnQkFDL0IsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUE2QixFQUFFLElBQTZCLEVBQUUsRUFBRTtvQkFDckYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDbEMsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQztvQkFDRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELENBQUMsQ0FBQztnQkFFRiw0Q0FBNEM7Z0JBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDckMsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztnQkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2pDLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNyQyxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO2dCQUVELHFDQUFxQztnQkFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUN2QyxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO2dCQUVELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILGdEQUFnRDtRQUN2QyxnQkFBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFdEQsK0NBQStDO1FBQy9DLDRCQUE0QjtRQUM1QiwrQ0FBK0M7UUFFL0Msd0VBQXdFO1FBQ3ZELDBCQUFxQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5Qyx5QkFBb0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFPeEUsbUVBQW1FO1FBQzFELGdCQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekQsbUJBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvRCxrQkFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBaUJ0RSwrQ0FBK0M7UUFDL0Msd0NBQXdDO1FBQ3hDLCtDQUErQztRQUUvQyw2RUFBNkU7UUFDcEUsaUJBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUUzRCw0RUFBNEU7UUFDbkUsb0JBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVqRSwrQ0FBK0M7UUFDL0MsdURBQXVEO1FBQ3ZELCtDQUErQztRQUUvQyxxRUFBcUU7UUFDNUQsa0JBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVuRSw2RUFBNkU7UUFDcEUscUJBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7S0FnZjFFO0lBM2hCQyxpRUFBaUU7SUFDakUscUJBQXFCLENBQUMsS0FBYztRQUNsQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFPRCxJQUFJLGVBQWUsQ0FBQyxRQUF5RDtRQUMzRSxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixHQUFHLFFBQVEsSUFBSSxTQUFTLENBQUM7SUFDcEUsQ0FBQztJQUNELElBQUksZUFBZSxDQUFDLFFBQXlEO1FBQzNFLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEdBQUcsUUFBUSxJQUFJLFNBQVMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsSUFBSSxhQUFhLENBQUMsT0FBcUM7UUFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO0lBQzVDLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsV0FBVyxDQUFDLEtBQTZCO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFzQkQsK0NBQStDO0lBQy9DLCtDQUErQztJQUMvQywrQ0FBK0M7SUFFL0MsK0NBQStDO0lBQy9DLG9CQUFvQjtJQUNwQiwrQ0FBK0M7SUFFL0Msb0RBQW9EO0lBQ3BELE9BQU8sQ0FBQyxNQUFjLEVBQUUsT0FBZSxFQUFFLEdBQUcsSUFBZTtRQUN6RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUVELFFBQVEsT0FBTyxFQUFFLENBQUM7WUFDaEIsS0FBSyxZQUFZO2dCQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLGNBQWM7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLGNBQWM7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEIsTUFBTTtZQUNSLEtBQUssaUJBQWlCO2dCQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QixNQUFNO1lBQ1IsS0FBSyxpQkFBaUI7Z0JBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLG1CQUFtQjtnQkFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQixNQUFNO1lBQ1IsS0FBSyxpQkFBaUI7Z0JBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLGVBQWU7Z0JBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQWMsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNO1lBQ1IsS0FBSyxrQkFBa0I7Z0JBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUIsTUFBTTtZQUNSLEtBQUssbUJBQW1CO2dCQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDUixLQUFLLGtCQUFrQjtnQkFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixNQUFNO1lBQ1IsS0FBSyxjQUFjO2dCQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUE0QyxDQUFDLENBQUM7Z0JBQzlFLE1BQU07WUFDUixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQXNCLENBQUMsQ0FBQztnQkFDMUQsTUFBTTtZQUNSLEtBQUssV0FBVztnQkFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUNSLEtBQUssbUJBQW1CO2dCQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBeUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFVLENBQUMsQ0FBQztnQkFDdEYsTUFBTTtZQUNSLEtBQUssc0JBQXNCO2dCQUN6QixJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xDLE1BQU07WUFDUixLQUFLLGFBQWE7Z0JBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQTBCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xGLE1BQU07WUFDUixLQUFLLGFBQWE7Z0JBQ2hCLElBQUksQ0FBQyxXQUFXLENBQ2QsTUFBTSxFQUNOLElBQUksQ0FBQyxDQUFDLENBQVMsRUFDZixJQUFJLENBQUMsQ0FBQyxDQUFzQyxDQUM3QyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDekIsTUFBTTtZQUNSLEtBQUssaUJBQWlCO2dCQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFXLENBQUMsQ0FBQztnQkFDaEQsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsQixNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xCLE1BQU07WUFDUixLQUFLLGFBQWE7Z0JBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQXVCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBdUIsQ0FBQyxDQUFDO2dCQUN2RixNQUFNO1lBQ1IsS0FBSyxpQkFBaUI7Z0JBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLGdCQUFnQjtnQkFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDNUIsTUFBTTtZQUNSLEtBQUssY0FBYztnQkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUIsTUFBTTtZQUNSLEtBQUssY0FBYztnQkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUIsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekIsTUFBTTtZQUNSLEtBQUssV0FBVztnQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QixNQUFNO1lBQ1IsS0FBSyxhQUFhO2dCQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxZQUFZO2dCQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLFdBQVc7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssb0JBQW9CO2dCQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2hDLE1BQU07WUFDUixLQUFLLGlCQUFpQjtnQkFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDN0IsTUFBTTtZQUNSLEtBQUssWUFBWTtnQkFDZixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsTUFBTSxFQUNOLElBQUksQ0FBQyxDQUFDLENBQVcsRUFDakIsSUFBSSxDQUFDLENBQUMsQ0FBd0IsRUFDOUIsSUFBSSxDQUFDLENBQUMsQ0FBd0IsQ0FDL0IsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSyxnQkFBZ0I7Z0JBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUNoQyxNQUFNLEVBQ04sSUFBSSxDQUFDLENBQUMsQ0FBVyxFQUNqQixJQUFJLENBQUMsQ0FBQyxDQUF3QixFQUM5QixJQUFJLENBQUMsQ0FBQyxDQUF3QixDQUMvQixDQUFDO2dCQUNGLE1BQU07WUFDUixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQVksQ0FBQyxDQUFDO2dCQUMzRCxNQUFNO1lBQ1IsS0FBSyxnQkFBZ0I7Z0JBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFZLENBQUMsQ0FBQztnQkFDL0QsTUFBTTtZQUVSLEtBQUssY0FBYztnQkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUIsTUFBTTtZQUVSLEtBQUssVUFBVTtnQkFDYixLQUFLLElBQUksQ0FBQyxRQUFRLENBQ2hCLE1BQU0sRUFDTixJQUFJLENBQUMsQ0FBQyxDQUFvQixFQUMxQixJQUFJLENBQUMsQ0FBQyxDQUE2QixFQUNuQyxJQUFJLENBQUMsQ0FBQyxDQUFpQyxDQUN4QyxDQUFDO2dCQUNGLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELDhCQUE4QjtJQUU5QixVQUFVLENBQUMsTUFBYztRQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWM7UUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBYztRQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjO1FBQzVCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFjO1FBQzlCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjO1FBQzVCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYyxFQUFFLEtBQWdCO1FBQzVDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjLEVBQUUsS0FBYztRQUM1QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2RCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVELDZCQUE2QjtJQUU3QixnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBYztRQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYyxFQUFFLFNBQWtEO1FBQzdFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBYztRQUNqQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCwyQkFBMkI7SUFFM0IsSUFBSSxDQUFDLE1BQWM7UUFDakIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFjO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCx5QkFBeUI7SUFFekIsV0FBVyxDQUFDLE1BQWMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYztRQUM1QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFjO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYztRQUN4QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFjO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUFjO1FBQy9CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjO1FBQzVCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCwyQkFBMkI7SUFFM0IsWUFBWSxDQUFDLE1BQWM7UUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsMEJBQTBCO0lBRTFCOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxNQUFjLEVBQUUsTUFBdUI7UUFDaEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FDWixNQUFjLEVBQ2QsTUFBdUIsRUFDdkIsTUFBZ0MsRUFDaEMsT0FBMEI7UUFFMUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFjO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBYztRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWMsRUFBRSxPQUFlLEVBQUUsVUFBVSxHQUFHLElBQUk7UUFDM0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLFFBQWlCO1FBQzNDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWMsRUFBRSxPQUFlO1FBQzNDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFjLEVBQUUsT0FBK0I7UUFDL0QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBYyxFQUFFLElBQVUsRUFBRSxPQUErQjtRQUMzRSxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYyxFQUFFLEtBQWdCLEVBQUUsT0FBK0I7UUFDL0UsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsT0FBK0I7UUFFL0IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxXQUFXLENBQUMsSUFBVSxFQUFFLE9BQStCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQztJQUNsRCxDQUFDOytHQTFsQlUsd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBBdGVJbWFnZVNlcnZpY2UgfSBmcm9tIFwiLi9hdGUtaW1hZ2Uuc2VydmljZVwiO1xuaW1wb3J0IHsgQXRlQ29sb3JQaWNrZXJTZXJ2aWNlIH0gZnJvbSBcIi4vYXRlLWNvbG9yLXBpY2tlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVMaW5rU2VydmljZSB9IGZyb20gXCIuL2F0ZS1saW5rLnNlcnZpY2VcIjtcbmltcG9ydCB7IEF0ZUV4cG9ydFNlcnZpY2UsIEF0ZUV4cG9ydEZvcm1hdCwgQXRlRXhwb3J0T3B0aW9ucyB9IGZyb20gXCIuL2F0ZS1leHBvcnQuc2VydmljZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yU3RhdGVTbmFwc2hvdCwgQVRFX0lOSVRJQUxfRURJVE9SX1NUQVRFIH0gZnJvbSBcIi4uL21vZGVscy9hdGUtZWRpdG9yLXN0YXRlLm1vZGVsXCI7XG5pbXBvcnQge1xuICBBdGVJbWFnZVVwbG9hZEhhbmRsZXIsXG4gIEF0ZUltYWdlVXBsb2FkT3B0aW9ucyxcbiAgQXRlSW1hZ2VVcGxvYWRSZXN1bHQsXG4gIEF0ZUltYWdlUmVqZWN0aW9uLFxufSBmcm9tIFwiLi4vbW9kZWxzL2F0ZS1pbWFnZS5tb2RlbFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXRlRWRpdG9yQ29tbWFuZHNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBpbWFnZVNlcnZpY2UgPSBpbmplY3QoQXRlSW1hZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjb2xvclBpY2tlclN2YyA9IGluamVjdChBdGVDb2xvclBpY2tlclNlcnZpY2UpO1xuICBwcml2YXRlIGxpbmtTdmMgPSBpbmplY3QoQXRlTGlua1NlcnZpY2UpO1xuICBwcml2YXRlIGV4cG9ydFN2YyA9IGluamVjdChBdGVFeHBvcnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWRpdG9yU3RhdGUgPSBzaWduYWw8QXRlRWRpdG9yU3RhdGVTbmFwc2hvdD4oQVRFX0lOSVRJQUxfRURJVE9SX1NUQVRFLCB7XG4gICAgZXF1YWw6IChhLCBiKSA9PiB7XG4gICAgICAvLyAxLiBQcmltaXRpdmUgZ2xvYmFsIHN0YXRlc1xuICAgICAgaWYgKGEuaXNGb2N1c2VkICE9PSBiLmlzRm9jdXNlZCB8fCBhLmlzRWRpdGFibGUgIT09IGIuaXNFZGl0YWJsZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIERldGFpbGVkIHNlbGVjdGlvbiBjb21wYXJpc29uXG4gICAgICBpZiAoXG4gICAgICAgIGEuc2VsZWN0aW9uLmZyb20gIT09IGIuc2VsZWN0aW9uLmZyb20gfHxcbiAgICAgICAgYS5zZWxlY3Rpb24udG8gIT09IGIuc2VsZWN0aW9uLnRvIHx8XG4gICAgICAgIGEuc2VsZWN0aW9uLnR5cGUgIT09IGIuc2VsZWN0aW9uLnR5cGUgfHxcbiAgICAgICAgYS5zZWxlY3Rpb24uZW1wdHkgIT09IGIuc2VsZWN0aW9uLmVtcHR5IHx8XG4gICAgICAgIGEuc2VsZWN0aW9uLmlzU2luZ2xlQ2VsbCAhPT0gYi5zZWxlY3Rpb24uaXNTaW5nbGVDZWxsXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBIZWxwZXIgZm9yIG9iamVjdCBjb21wYXJpc29uXG4gICAgICBjb25zdCBpc1JlY29yZEVxdWFsID0gKG9iakE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBvYmpCOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICAgICAgICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuICAgICAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleXNBLmV2ZXJ5KGtleSA9PiBvYmpBW2tleV0gPT09IG9iakJba2V5XSk7XG4gICAgICB9O1xuXG4gICAgICAvLyAzLiBDb21wYXJlIHN1Yi1zdGF0ZXMgKG1hcmtzLCBjYW4sIG5vZGVzKVxuICAgICAgaWYgKCFpc1JlY29yZEVxdWFsKGEubWFya3MsIGIubWFya3MpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNSZWNvcmRFcXVhbChhLmNhbiwgYi5jYW4pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNSZWNvcmRFcXVhbChhLm5vZGVzLCBiLm5vZGVzKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIENvbXBhcmUgY3VzdG9tIGV4dGVuc2lvbiBzdGF0ZXNcbiAgICAgIGlmICghaXNSZWNvcmRFcXVhbChhLmN1c3RvbSwgYi5jdXN0b20pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqIEV4cG9zZWQgZWRpdG9yIHN0YXRlIGFzIGEgcmVhZG9ubHkgc2lnbmFsICovXG4gIHJlYWRvbmx5IGVkaXRvclN0YXRlID0gdGhpcy5fZWRpdG9yU3RhdGUuYXNSZWFkb25seSgpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFRvb2xiYXIgSW50ZXJhY3Rpb24gU3RhdGVcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKiogU2lnbmFsIHRvIHRyYWNrIHdoZW4gdGhlIHRvb2xiYXIgaXMgYmVpbmcgaG92ZXJlZC9pbnRlcmFjdGVkIHdpdGggKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfaXNUb29sYmFySW50ZXJhY3RpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc1Rvb2xiYXJJbnRlcmFjdGluZyA9IHRoaXMuX2lzVG9vbGJhckludGVyYWN0aW5nLmFzUmVhZG9ubHkoKTtcblxuICAvKiogU2V0IHRvb2xiYXIgaW50ZXJhY3Rpb24gc3RhdGUgKGNhbGxlZCBieSBlZGl0b3IgY29tcG9uZW50KSAqL1xuICBzZXRUb29sYmFySW50ZXJhY3RpbmcodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9pc1Rvb2xiYXJJbnRlcmFjdGluZy5zZXQodmFsdWUpO1xuICB9XG5cbiAgLy8gQWNjZXNzIHRvIEltYWdlU2VydmljZSBzdGF0ZXMgYXMgcmVhZG9ubHkgc2lnbmFscyBmb3IgVUkgYmluZGluZ1xuICByZWFkb25seSBpc1VwbG9hZGluZyA9IHRoaXMuaW1hZ2VTZXJ2aWNlLmlzVXBsb2FkaW5nLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgdXBsb2FkUHJvZ3Jlc3MgPSB0aGlzLmltYWdlU2VydmljZS51cGxvYWRQcm9ncmVzcy5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IHVwbG9hZE1lc3NhZ2UgPSB0aGlzLmltYWdlU2VydmljZS51cGxvYWRNZXNzYWdlLmFzUmVhZG9ubHkoKTtcblxuICBzZXQgb25JbWFnZVVwbG9hZGVkKGNhbGxiYWNrOiAoKHJlc3VsdDogQXRlSW1hZ2VVcGxvYWRSZXN1bHQpID0+IHZvaWQpIHwgbnVsbCkge1xuICAgIHRoaXMuaW1hZ2VTZXJ2aWNlLm9uSW1hZ2VVcGxvYWRlZENhbGxiYWNrID0gY2FsbGJhY2sgfHwgdW5kZWZpbmVkO1xuICB9XG4gIHNldCBvbkltYWdlUmVqZWN0ZWQoY2FsbGJhY2s6ICgocmVqZWN0aW9uOiBBdGVJbWFnZVJlamVjdGlvbikgPT4gdm9pZCkgfCBudWxsKSB7XG4gICAgdGhpcy5pbWFnZVNlcnZpY2Uub25JbWFnZVJlamVjdGVkQ2FsbGJhY2sgPSBjYWxsYmFjayB8fCB1bmRlZmluZWQ7XG4gIH1cbiAgc2V0IHVwbG9hZEhhbmRsZXIoaGFuZGxlcjogQXRlSW1hZ2VVcGxvYWRIYW5kbGVyIHwgbnVsbCkge1xuICAgIHRoaXMuaW1hZ2VTZXJ2aWNlLnVwbG9hZEhhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgLyoqIFVwZGF0ZSBzdGF0ZSAoY2FsbGVkIGJ5IFRpcHRhcFN0YXRlRXh0ZW5zaW9uKSAqL1xuICB1cGRhdGVTdGF0ZShzdGF0ZTogQXRlRWRpdG9yU3RhdGVTbmFwc2hvdCkge1xuICAgIHRoaXMuX2VkaXRvclN0YXRlLnNldChzdGF0ZSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBMaW5rIFN0YXRlIChwcm94aWVkIGZyb20gTGlua1NlcnZpY2UpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIFNpZ25hbCB0byB0b2dnbGUgbGluayBlZGl0IG1vZGUgZnJvbSBVSSAoVG9vbGJhcikgLSBJbW1lZGlhdGUgcmVzcG9uc2UgKi9cbiAgcmVhZG9ubHkgbGlua0VkaXRNb2RlID0gdGhpcy5saW5rU3ZjLmVkaXRNb2RlLmFzUmVhZG9ubHkoKTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBsaW5rIG1lbnUgKGZvciBhbmNob3JpbmcpICovXG4gIHJlYWRvbmx5IGxpbmtNZW51VHJpZ2dlciA9IHRoaXMubGlua1N2Yy5tZW51VHJpZ2dlci5hc1JlYWRvbmx5KCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ29sb3IgUGlja2VyIFN0YXRlIChwcm94aWVkIGZyb20gQ29sb3JQaWNrZXJTZXJ2aWNlKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKiBTaWduYWwgdG8gdG9nZ2xlIGNvbG9yIHBpY2tlciBtb2RlIGZyb20gVUkgKHRleHQgb3IgaGlnaGxpZ2h0KSAqL1xuICByZWFkb25seSBjb2xvckVkaXRNb2RlID0gdGhpcy5jb2xvclBpY2tlclN2Yy5lZGl0TW9kZS5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCB0aGF0IHRyaWdnZXJlZCB0aGUgY29sb3IgbWVudSAoZm9yIGFuY2hvcmluZykgKi9cbiAgcmVhZG9ubHkgY29sb3JNZW51VHJpZ2dlciA9IHRoaXMuY29sb3JQaWNrZXJTdmMubWVudVRyaWdnZXIuYXNSZWFkb25seSgpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExpbmsgRWRpdCBNZXRob2RzIChkZWxlZ2F0ZWQgdG8gTGlua1NlcnZpY2UpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ29tbWFuZCBFeGVjdXRpb25cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKiogR2VuZXJpYyBtZXRob2QgdG8gZXhlY3V0ZSBhbnkgY29tbWFuZCBieSBuYW1lICovXG4gIGV4ZWN1dGUoZWRpdG9yOiBFZGl0b3IsIGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvbW1hbmQpIHtcbiAgICAgIGNhc2UgXCJ0b2dnbGVCb2xkXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlQm9sZChlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVJdGFsaWNcIjpcbiAgICAgICAgdGhpcy50b2dnbGVJdGFsaWMoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlU3RyaWtlXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlU3RyaWtlKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUNvZGVcIjpcbiAgICAgICAgdGhpcy50b2dnbGVDb2RlKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUNvZGVCbG9ja1wiOlxuICAgICAgICB0aGlzLnRvZ2dsZUNvZGVCbG9jayhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVVbmRlcmxpbmVcIjpcbiAgICAgICAgdGhpcy50b2dnbGVVbmRlcmxpbmUoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlU3VwZXJzY3JpcHRcIjpcbiAgICAgICAgdGhpcy50b2dnbGVTdXBlcnNjcmlwdChlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVTdWJzY3JpcHRcIjpcbiAgICAgICAgdGhpcy50b2dnbGVTdWJzY3JpcHQoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlSGVhZGluZ1wiOlxuICAgICAgICB0aGlzLnRvZ2dsZUhlYWRpbmcoZWRpdG9yLCBhcmdzWzBdIGFzIDEgfCAyIHwgMyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUJ1bGxldExpc3RcIjpcbiAgICAgICAgdGhpcy50b2dnbGVCdWxsZXRMaXN0KGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZU9yZGVyZWRMaXN0XCI6XG4gICAgICAgIHRoaXMudG9nZ2xlT3JkZXJlZExpc3QoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlQmxvY2txdW90ZVwiOlxuICAgICAgICB0aGlzLnRvZ2dsZUJsb2NrcXVvdGUoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwic2V0VGV4dEFsaWduXCI6XG4gICAgICAgIHRoaXMuc2V0VGV4dEFsaWduKGVkaXRvciwgYXJnc1swXSBhcyBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCIgfCBcImp1c3RpZnlcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUxpbmtcIjpcbiAgICAgICAgdGhpcy5saW5rU3ZjLnRvZ2dsZShlZGl0b3IsIGFyZ3NbMF0gYXMgRXZlbnQgfCB1bmRlZmluZWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ1bnNldExpbmtcIjpcbiAgICAgICAgdGhpcy5saW5rU3ZjLnVuc2V0TGluayhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVDb2xvclBpY2tlclwiOlxuICAgICAgICB0aGlzLmNvbG9yUGlja2VyU3ZjLnRvZ2dsZShlZGl0b3IsIGFyZ3NbMF0gYXMgXCJ0ZXh0XCIgfCBcImhpZ2hsaWdodFwiLCBhcmdzWzFdIGFzIEV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiaW5zZXJ0SG9yaXpvbnRhbFJ1bGVcIjpcbiAgICAgICAgdGhpcy5pbnNlcnRIb3Jpem9udGFsUnVsZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJpbnNlcnRJbWFnZVwiOlxuICAgICAgICB0aGlzLmluc2VydEltYWdlKGVkaXRvciwgYXJnc1swXSBhcyBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInVwbG9hZEltYWdlXCI6XG4gICAgICAgIHRoaXMudXBsb2FkSW1hZ2UoXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgIGFyZ3NbMF0gYXMgRmlsZSxcbiAgICAgICAgICBhcmdzWzFdIGFzIEF0ZUltYWdlVXBsb2FkT3B0aW9ucyB8IHVuZGVmaW5lZFxuICAgICAgICApLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUhpZ2hsaWdodFwiOlxuICAgICAgICB0aGlzLnRvZ2dsZUhpZ2hsaWdodChlZGl0b3IsIGFyZ3NbMF0gYXMgc3RyaW5nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidW5kb1wiOlxuICAgICAgICB0aGlzLnVuZG8oZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicmVkb1wiOlxuICAgICAgICB0aGlzLnJlZG8oZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiaW5zZXJ0VGFibGVcIjpcbiAgICAgICAgdGhpcy5pbnNlcnRUYWJsZShlZGl0b3IsIGFyZ3NbMF0gYXMgbnVtYmVyIHwgdW5kZWZpbmVkLCBhcmdzWzFdIGFzIG51bWJlciB8IHVuZGVmaW5lZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFkZENvbHVtbkJlZm9yZVwiOlxuICAgICAgICB0aGlzLmFkZENvbHVtbkJlZm9yZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGRDb2x1bW5BZnRlclwiOlxuICAgICAgICB0aGlzLmFkZENvbHVtbkFmdGVyKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImRlbGV0ZUNvbHVtblwiOlxuICAgICAgICB0aGlzLmRlbGV0ZUNvbHVtbihlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGRSb3dCZWZvcmVcIjpcbiAgICAgICAgdGhpcy5hZGRSb3dCZWZvcmUoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYWRkUm93QWZ0ZXJcIjpcbiAgICAgICAgdGhpcy5hZGRSb3dBZnRlcihlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJkZWxldGVSb3dcIjpcbiAgICAgICAgdGhpcy5kZWxldGVSb3coZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGVsZXRlVGFibGVcIjpcbiAgICAgICAgdGhpcy5kZWxldGVUYWJsZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJtZXJnZUNlbGxzXCI6XG4gICAgICAgIHRoaXMubWVyZ2VDZWxscyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzcGxpdENlbGxcIjpcbiAgICAgICAgdGhpcy5zcGxpdENlbGwoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlSGVhZGVyQ29sdW1uXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlSGVhZGVyQ29sdW1uKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUhlYWRlclJvd1wiOlxuICAgICAgICB0aGlzLnRvZ2dsZUhlYWRlclJvdyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhcHBseUNvbG9yXCI6XG4gICAgICAgIHRoaXMuY29sb3JQaWNrZXJTdmMuYXBwbHlDb2xvcihcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgYXJnc1swXSBhcyBzdHJpbmcsXG4gICAgICAgICAgYXJnc1sxXSBhcyBib29sZWFuIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGFyZ3NbMl0gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhcHBseUhpZ2hsaWdodFwiOlxuICAgICAgICB0aGlzLmNvbG9yUGlja2VyU3ZjLmFwcGx5SGlnaGxpZ2h0KFxuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBhcmdzWzBdIGFzIHN0cmluZyxcbiAgICAgICAgICBhcmdzWzFdIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gICAgICAgICAgYXJnc1syXSBhcyBib29sZWFuIHwgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInVuc2V0Q29sb3JcIjpcbiAgICAgICAgdGhpcy5jb2xvclBpY2tlclN2Yy51bnNldENvbG9yKGVkaXRvciwgYXJnc1swXSBhcyBib29sZWFuKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidW5zZXRIaWdobGlnaHRcIjpcbiAgICAgICAgdGhpcy5jb2xvclBpY2tlclN2Yy51bnNldEhpZ2hsaWdodChlZGl0b3IsIGFyZ3NbMF0gYXMgYm9vbGVhbik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiY2xlYXJDb250ZW50XCI6XG4gICAgICAgIHRoaXMuY2xlYXJDb250ZW50KGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiZXhwb3J0QXNcIjpcbiAgICAgICAgdm9pZCB0aGlzLmV4cG9ydEFzKFxuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBhcmdzWzBdIGFzIEF0ZUV4cG9ydEZvcm1hdCxcbiAgICAgICAgICBhcmdzWzFdIGFzIFwiY2xpcGJvYXJkXCIgfCBcImRvd25sb2FkXCIsXG4gICAgICAgICAgYXJnc1syXSBhcyBBdGVFeHBvcnRPcHRpb25zIHwgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIC0tLSBGb3JtYXR0aW5nIENvbW1hbmRzIC0tLVxuXG4gIHRvZ2dsZUJvbGQoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUJvbGQoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZUl0YWxpYyhlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlSXRhbGljKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVTdHJpa2UoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZVN0cmlrZSgpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlQ29kZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQ29kZSgpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlQ29kZUJsb2NrKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVDb2RlQmxvY2soKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZVVuZGVybGluZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlVW5kZXJsaW5lKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVTdXBlcnNjcmlwdChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlU3VwZXJzY3JpcHQoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZVN1YnNjcmlwdChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlU3Vic2NyaXB0KCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVIZWFkaW5nKGVkaXRvcjogRWRpdG9yLCBsZXZlbDogMSB8IDIgfCAzKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHsgbGV2ZWwgfSkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVIaWdobGlnaHQoZWRpdG9yOiBFZGl0b3IsIGNvbG9yPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNvbG9yKSB7XG4gICAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnNldEhpZ2hsaWdodCh7IGNvbG9yIH0pLnJ1bigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhpZ2hsaWdodCgpLnJ1bigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIC0tLSBTdHJ1Y3R1cmUgQ29tbWFuZHMgLS0tXG5cbiAgdG9nZ2xlQnVsbGV0TGlzdChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQnVsbGV0TGlzdCgpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlT3JkZXJlZExpc3QoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZU9yZGVyZWRMaXN0KCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVCbG9ja3F1b3RlKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVCbG9ja3F1b3RlKCkucnVuKCk7XG4gIH1cblxuICBzZXRUZXh0QWxpZ24oZWRpdG9yOiBFZGl0b3IsIGFsaWdubWVudDogXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiIHwgXCJqdXN0aWZ5XCIpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnNldFRleHRBbGlnbihhbGlnbm1lbnQpLnJ1bigpO1xuICB9XG5cbiAgaW5zZXJ0SG9yaXpvbnRhbFJ1bGUoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnNldEhvcml6b250YWxSdWxlKCkucnVuKCk7XG4gIH1cblxuICAvLyAtLS0gSGlzdG9yeSBDb21tYW5kcyAtLS1cblxuICB1bmRvKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS51bmRvKCkucnVuKCk7XG4gIH1cblxuICByZWRvKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5yZWRvKCkucnVuKCk7XG4gIH1cblxuICAvLyAtLS0gVGFibGUgQ29tbWFuZHMgLS0tXG5cbiAgaW5zZXJ0VGFibGUoZWRpdG9yOiBFZGl0b3IsIHJvd3MgPSAzLCBjb2xzID0gMyk6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuaW5zZXJ0VGFibGUoeyByb3dzLCBjb2xzIH0pLnJ1bigpO1xuICB9XG5cbiAgYWRkQ29sdW1uQmVmb3JlKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5hZGRDb2x1bW5CZWZvcmUoKS5ydW4oKTtcbiAgfVxuXG4gIGFkZENvbHVtbkFmdGVyKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5hZGRDb2x1bW5BZnRlcigpLnJ1bigpO1xuICB9XG5cbiAgZGVsZXRlQ29sdW1uKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5kZWxldGVDb2x1bW4oKS5ydW4oKTtcbiAgfVxuXG4gIGFkZFJvd0JlZm9yZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuYWRkUm93QmVmb3JlKCkucnVuKCk7XG4gIH1cblxuICBhZGRSb3dBZnRlcihlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuYWRkUm93QWZ0ZXIoKS5ydW4oKTtcbiAgfVxuXG4gIGRlbGV0ZVJvdyhlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuZGVsZXRlUm93KCkucnVuKCk7XG4gIH1cblxuICBkZWxldGVUYWJsZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuZGVsZXRlVGFibGUoKS5ydW4oKTtcbiAgfVxuXG4gIG1lcmdlQ2VsbHMoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLm1lcmdlQ2VsbHMoKS5ydW4oKTtcbiAgfVxuXG4gIHNwbGl0Q2VsbChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuc3BsaXRDZWxsKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVIZWFkZXJDb2x1bW4oZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhlYWRlckNvbHVtbigpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlSGVhZGVyUm93KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkZXJSb3coKS5ydW4oKTtcbiAgfVxuXG4gIC8vIC0tLSBVdGlsaXR5IENvbW1hbmRzIC0tLVxuXG4gIGNsZWFyQ29udGVudChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jb21tYW5kcy5jbGVhckNvbnRlbnQodHJ1ZSk7XG4gIH1cblxuICAvLyAtLS0gRXhwb3J0IENvbW1hbmRzIC0tLVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlZGl0b3IgY29udGVudCBpbiB0aGUgZ2l2ZW4gZm9ybWF0LlxuICAgKiBAcGFyYW0gZm9ybWF0ICdodG1sJyB8ICdtYXJrZG93bicgfCAndGV4dCdcbiAgICovXG4gIGdldENvbnRlbnQoZWRpdG9yOiBFZGl0b3IsIGZvcm1hdDogQXRlRXhwb3J0Rm9ybWF0KTogc3RyaW5nIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmV4cG9ydFN2Yy5nZXRDb250ZW50KGVkaXRvciwgZm9ybWF0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvcnRzIHRoZSBlZGl0b3IgY29udGVudC5cbiAgICogQHBhcmFtIGZvcm1hdCAgJ2h0bWwnIHwgJ21hcmtkb3duJyB8ICd0ZXh0J1xuICAgKiBAcGFyYW0gbWV0aG9kICAnY2xpcGJvYXJkJyB8ICdkb3dubG9hZCdcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgZmlsZW5hbWUgZm9yIGRvd25sb2FkXG4gICAqL1xuICBhc3luYyBleHBvcnRBcyhcbiAgICBlZGl0b3I6IEVkaXRvcixcbiAgICBmb3JtYXQ6IEF0ZUV4cG9ydEZvcm1hdCxcbiAgICBtZXRob2Q6IFwiY2xpcGJvYXJkXCIgfCBcImRvd25sb2FkXCIsXG4gICAgb3B0aW9ucz86IEF0ZUV4cG9ydE9wdGlvbnNcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG1ldGhvZCA9PT0gXCJjbGlwYm9hcmRcIikge1xuICAgICAgYXdhaXQgdGhpcy5leHBvcnRTdmMuZXhwb3J0VG9DbGlwYm9hcmQoZWRpdG9yLCBmb3JtYXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV4cG9ydFN2Yy5leHBvcnRUb0ZpbGUoZWRpdG9yLCBmb3JtYXQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5ydW4oKTtcbiAgfVxuXG4gIGJsdXIoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5ibHVyKCkucnVuKCk7XG4gIH1cblxuICBzZXRDb250ZW50KGVkaXRvcjogRWRpdG9yLCBjb250ZW50OiBzdHJpbmcsIGVtaXRVcGRhdGUgPSB0cnVlKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNvbW1hbmRzLnNldENvbnRlbnQoY29udGVudCwgeyBlbWl0VXBkYXRlIH0pO1xuICB9XG5cbiAgc2V0RWRpdGFibGUoZWRpdG9yOiBFZGl0b3IsIGVkaXRhYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLnNldEVkaXRhYmxlKGVkaXRhYmxlKTtcbiAgfVxuXG4gIGluc2VydENvbnRlbnQoZWRpdG9yOiBFZGl0b3IsIGNvbnRlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuaW5zZXJ0Q29udGVudChjb250ZW50KS5ydW4oKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydEltYWdlKGVkaXRvcjogRWRpdG9yLCBvcHRpb25zPzogQXRlSW1hZ2VVcGxvYWRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuaW1hZ2VTZXJ2aWNlLnNlbGVjdEFuZFVwbG9hZEltYWdlKGVkaXRvciwgb3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBpbnNlcnRpbmcgaW1hZ2U6XCIsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEltYWdlKGVkaXRvcjogRWRpdG9yLCBmaWxlOiBGaWxlLCBvcHRpb25zPzogQXRlSW1hZ2VVcGxvYWRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuaW1hZ2VTZXJ2aWNlLnVwbG9hZEFuZEluc2VydEltYWdlKGVkaXRvciwgZmlsZSwgb3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB1cGxvYWRpbmcgaW1hZ2U6XCIsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGRvd25sb2FkSW1hZ2UoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICB0aGlzLmltYWdlU2VydmljZS5kb3dubG9hZEltYWdlKGVkaXRvcik7XG4gIH1cblxuICBoYW5kbGVJbWFnZURyb3AoZWRpdG9yOiBFZGl0b3IsIGV2ZW50OiBEcmFnRXZlbnQsIG9wdGlvbnM/OiBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbWFnZVNlcnZpY2UuaGFuZGxlRHJvcChlZGl0b3IsIGV2ZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIGhhbmRsZUltYWdlUGFzdGUoXG4gICAgZWRpdG9yOiBFZGl0b3IsXG4gICAgZXZlbnQ6IENsaXBib2FyZEV2ZW50LFxuICAgIG9wdGlvbnM/OiBBdGVJbWFnZVVwbG9hZE9wdGlvbnNcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW1hZ2VTZXJ2aWNlLmhhbmRsZVBhc3RlKGVkaXRvciwgZXZlbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVob3N0SW1hZ2UoZmlsZTogRmlsZSwgb3B0aW9ucz86IEF0ZUltYWdlVXBsb2FkT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaW1hZ2VTZXJ2aWNlLnJlaG9zdEltYWdlKGZpbGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGhhc1VwbG9hZEhhbmRsZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW1hZ2VTZXJ2aWNlLnVwbG9hZEhhbmRsZXIgIT09IG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
525
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1jb21tYW5kcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvc2VydmljZXMvYXRlLWVkaXRvci1jb21tYW5kcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRixPQUFPLEVBQTBCLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBVXBHLE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVCLGlCQUFZLEdBQUcsTUFBTSxDQUF5Qix3QkFBd0IsRUFBRTtZQUN2RixLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2QsNkJBQTZCO2dCQUM3QixJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDakUsT0FBTyxLQUFLLENBQUM7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QyxZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGdCQUFnQixDQUNkLE1BQWMsRUFDZCxLQUFxQixFQUNyQixPQUErQjtRQUUvQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFVLEVBQUUsT0FBK0I7UUFDckQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDO0lBQ2xELENBQUM7K0dBaG1CVSx3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IEF0ZUltYWdlU2VydmljZSB9IGZyb20gXCIuL2F0ZS1pbWFnZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVDb2xvclBpY2tlclNlcnZpY2UgfSBmcm9tIFwiLi9hdGUtY29sb3ItcGlja2VyLnNlcnZpY2VcIjtcbmltcG9ydCB7IEF0ZUxpbmtTZXJ2aWNlIH0gZnJvbSBcIi4vYXRlLWxpbmsuc2VydmljZVwiO1xuaW1wb3J0IHsgQXRlRXhwb3J0U2VydmljZSwgQXRlRXhwb3J0Rm9ybWF0LCBBdGVFeHBvcnRPcHRpb25zIH0gZnJvbSBcIi4vYXRlLWV4cG9ydC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVFZGl0b3JTdGF0ZVNuYXBzaG90LCBBVEVfSU5JVElBTF9FRElUT1JfU1RBVEUgfSBmcm9tIFwiLi4vbW9kZWxzL2F0ZS1lZGl0b3Itc3RhdGUubW9kZWxcIjtcbmltcG9ydCB7XG4gIEF0ZUltYWdlVXBsb2FkSGFuZGxlcixcbiAgQXRlSW1hZ2VTcmNSZXNvbHZlcixcbiAgQXRlSW1hZ2VVcGxvYWRPcHRpb25zLFxuICBBdGVJbWFnZVVwbG9hZFJlc3VsdCxcbiAgQXRlSW1hZ2VSZWplY3Rpb24sXG59IGZyb20gXCIuLi9tb2RlbHMvYXRlLWltYWdlLm1vZGVsXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdGVFZGl0b3JDb21tYW5kc1NlcnZpY2Uge1xuICBwcml2YXRlIGltYWdlU2VydmljZSA9IGluamVjdChBdGVJbWFnZVNlcnZpY2UpO1xuICBwcml2YXRlIGNvbG9yUGlja2VyU3ZjID0gaW5qZWN0KEF0ZUNvbG9yUGlja2VyU2VydmljZSk7XG4gIHByaXZhdGUgbGlua1N2YyA9IGluamVjdChBdGVMaW5rU2VydmljZSk7XG4gIHByaXZhdGUgZXhwb3J0U3ZjID0gaW5qZWN0KEF0ZUV4cG9ydFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0b3JTdGF0ZSA9IHNpZ25hbDxBdGVFZGl0b3JTdGF0ZVNuYXBzaG90PihBVEVfSU5JVElBTF9FRElUT1JfU1RBVEUsIHtcbiAgICBlcXVhbDogKGEsIGIpID0+IHtcbiAgICAgIC8vIDEuIFByaW1pdGl2ZSBnbG9iYWwgc3RhdGVzXG4gICAgICBpZiAoYS5pc0ZvY3VzZWQgIT09IGIuaXNGb2N1c2VkIHx8IGEuaXNFZGl0YWJsZSAhPT0gYi5pc0VkaXRhYmxlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gRGV0YWlsZWQgc2VsZWN0aW9uIGNvbXBhcmlzb25cbiAgICAgIGlmIChcbiAgICAgICAgYS5zZWxlY3Rpb24uZnJvbSAhPT0gYi5zZWxlY3Rpb24uZnJvbSB8fFxuICAgICAgICBhLnNlbGVjdGlvbi50byAhPT0gYi5zZWxlY3Rpb24udG8gfHxcbiAgICAgICAgYS5zZWxlY3Rpb24udHlwZSAhPT0gYi5zZWxlY3Rpb24udHlwZSB8fFxuICAgICAgICBhLnNlbGVjdGlvbi5lbXB0eSAhPT0gYi5zZWxlY3Rpb24uZW1wdHkgfHxcbiAgICAgICAgYS5zZWxlY3Rpb24uaXNTaW5nbGVDZWxsICE9PSBiLnNlbGVjdGlvbi5pc1NpbmdsZUNlbGxcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIEhlbHBlciBmb3Igb2JqZWN0IGNvbXBhcmlzb25cbiAgICAgIGNvbnN0IGlzUmVjb3JkRXF1YWwgPSAob2JqQTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG9iakI6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleXNBID0gT2JqZWN0LmtleXMob2JqQSk7XG4gICAgICAgIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG4gICAgICAgIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5c0EuZXZlcnkoa2V5ID0+IG9iakFba2V5XSA9PT0gb2JqQltrZXldKTtcbiAgICAgIH07XG5cbiAgICAgIC8vIDMuIENvbXBhcmUgc3ViLXN0YXRlcyAobWFya3MsIGNhbiwgbm9kZXMpXG4gICAgICBpZiAoIWlzUmVjb3JkRXF1YWwoYS5tYXJrcywgYi5tYXJrcykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCFpc1JlY29yZEVxdWFsKGEuY2FuLCBiLmNhbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCFpc1JlY29yZEVxdWFsKGEubm9kZXMsIGIubm9kZXMpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gQ29tcGFyZSBjdXN0b20gZXh0ZW5zaW9uIHN0YXRlc1xuICAgICAgaWYgKCFpc1JlY29yZEVxdWFsKGEuY3VzdG9tLCBiLmN1c3RvbSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICB9KTtcblxuICAvKiogRXhwb3NlZCBlZGl0b3Igc3RhdGUgYXMgYSByZWFkb25seSBzaWduYWwgKi9cbiAgcmVhZG9ubHkgZWRpdG9yU3RhdGUgPSB0aGlzLl9lZGl0b3JTdGF0ZS5hc1JlYWRvbmx5KCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVG9vbGJhciBJbnRlcmFjdGlvbiBTdGF0ZVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKiBTaWduYWwgdG8gdHJhY2sgd2hlbiB0aGUgdG9vbGJhciBpcyBiZWluZyBob3ZlcmVkL2ludGVyYWN0ZWQgd2l0aCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1Rvb2xiYXJJbnRlcmFjdGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzVG9vbGJhckludGVyYWN0aW5nID0gdGhpcy5faXNUb29sYmFySW50ZXJhY3RpbmcuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBTZXQgdG9vbGJhciBpbnRlcmFjdGlvbiBzdGF0ZSAoY2FsbGVkIGJ5IGVkaXRvciBjb21wb25lbnQpICovXG4gIHNldFRvb2xiYXJJbnRlcmFjdGluZyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2lzVG9vbGJhckludGVyYWN0aW5nLnNldCh2YWx1ZSk7XG4gIH1cblxuICAvLyBBY2Nlc3MgdG8gSW1hZ2VTZXJ2aWNlIHN0YXRlcyBhcyByZWFkb25seSBzaWduYWxzIGZvciBVSSBiaW5kaW5nXG4gIHJlYWRvbmx5IGlzVXBsb2FkaW5nID0gdGhpcy5pbWFnZVNlcnZpY2UuaXNVcGxvYWRpbmcuYXNSZWFkb25seSgpO1xuICByZWFkb25seSB1cGxvYWRQcm9ncmVzcyA9IHRoaXMuaW1hZ2VTZXJ2aWNlLnVwbG9hZFByb2dyZXNzLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgdXBsb2FkTWVzc2FnZSA9IHRoaXMuaW1hZ2VTZXJ2aWNlLnVwbG9hZE1lc3NhZ2UuYXNSZWFkb25seSgpO1xuXG4gIHNldCBvbkltYWdlVXBsb2FkZWQoY2FsbGJhY2s6ICgocmVzdWx0OiBBdGVJbWFnZVVwbG9hZFJlc3VsdCkgPT4gdm9pZCkgfCBudWxsKSB7XG4gICAgdGhpcy5pbWFnZVNlcnZpY2Uub25JbWFnZVVwbG9hZGVkQ2FsbGJhY2sgPSBjYWxsYmFjayB8fCB1bmRlZmluZWQ7XG4gIH1cbiAgc2V0IG9uSW1hZ2VSZWplY3RlZChjYWxsYmFjazogKChyZWplY3Rpb246IEF0ZUltYWdlUmVqZWN0aW9uKSA9PiB2b2lkKSB8IG51bGwpIHtcbiAgICB0aGlzLmltYWdlU2VydmljZS5vbkltYWdlUmVqZWN0ZWRDYWxsYmFjayA9IGNhbGxiYWNrIHx8IHVuZGVmaW5lZDtcbiAgfVxuICBzZXQgdXBsb2FkSGFuZGxlcihoYW5kbGVyOiBBdGVJbWFnZVVwbG9hZEhhbmRsZXIgfCBudWxsKSB7XG4gICAgdGhpcy5pbWFnZVNlcnZpY2UudXBsb2FkSGFuZGxlciA9IGhhbmRsZXI7XG4gIH1cbiAgZ2V0IHNyY1Jlc29sdmVyKCk6IEF0ZUltYWdlU3JjUmVzb2x2ZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5pbWFnZVNlcnZpY2Uuc3JjUmVzb2x2ZXI7XG4gIH1cbiAgc2V0IHNyY1Jlc29sdmVyKHJlc29sdmVyOiBBdGVJbWFnZVNyY1Jlc29sdmVyIHwgbnVsbCkge1xuICAgIHRoaXMuaW1hZ2VTZXJ2aWNlLnNyY1Jlc29sdmVyID0gcmVzb2x2ZXI7XG4gIH1cblxuICAvKiogVXBkYXRlIHN0YXRlIChjYWxsZWQgYnkgVGlwdGFwU3RhdGVFeHRlbnNpb24pICovXG4gIHVwZGF0ZVN0YXRlKHN0YXRlOiBBdGVFZGl0b3JTdGF0ZVNuYXBzaG90KSB7XG4gICAgdGhpcy5fZWRpdG9yU3RhdGUuc2V0KHN0YXRlKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExpbmsgU3RhdGUgKHByb3hpZWQgZnJvbSBMaW5rU2VydmljZSlcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKiogU2lnbmFsIHRvIHRvZ2dsZSBsaW5rIGVkaXQgbW9kZSBmcm9tIFVJIChUb29sYmFyKSAtIEltbWVkaWF0ZSByZXNwb25zZSAqL1xuICByZWFkb25seSBsaW5rRWRpdE1vZGUgPSB0aGlzLmxpbmtTdmMuZWRpdE1vZGUuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGxpbmsgbWVudSAoZm9yIGFuY2hvcmluZykgKi9cbiAgcmVhZG9ubHkgbGlua01lbnVUcmlnZ2VyID0gdGhpcy5saW5rU3ZjLm1lbnVUcmlnZ2VyLmFzUmVhZG9ubHkoKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDb2xvciBQaWNrZXIgU3RhdGUgKHByb3hpZWQgZnJvbSBDb2xvclBpY2tlclNlcnZpY2UpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIFNpZ25hbCB0byB0b2dnbGUgY29sb3IgcGlja2VyIG1vZGUgZnJvbSBVSSAodGV4dCBvciBoaWdobGlnaHQpICovXG4gIHJlYWRvbmx5IGNvbG9yRWRpdE1vZGUgPSB0aGlzLmNvbG9yUGlja2VyU3ZjLmVkaXRNb2RlLmFzUmVhZG9ubHkoKTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBjb2xvciBtZW51IChmb3IgYW5jaG9yaW5nKSAqL1xuICByZWFkb25seSBjb2xvck1lbnVUcmlnZ2VyID0gdGhpcy5jb2xvclBpY2tlclN2Yy5tZW51VHJpZ2dlci5hc1JlYWRvbmx5KCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTGluayBFZGl0IE1ldGhvZHMgKGRlbGVnYXRlZCB0byBMaW5rU2VydmljZSlcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDb21tYW5kIEV4ZWN1dGlvblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKiBHZW5lcmljIG1ldGhvZCB0byBleGVjdXRlIGFueSBjb21tYW5kIGJ5IG5hbWUgKi9cbiAgZXhlY3V0ZShlZGl0b3I6IEVkaXRvciwgY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29tbWFuZCkge1xuICAgICAgY2FzZSBcInRvZ2dsZUJvbGRcIjpcbiAgICAgICAgdGhpcy50b2dnbGVCb2xkKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUl0YWxpY1wiOlxuICAgICAgICB0aGlzLnRvZ2dsZUl0YWxpYyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVTdHJpa2VcIjpcbiAgICAgICAgdGhpcy50b2dnbGVTdHJpa2UoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlQ29kZVwiOlxuICAgICAgICB0aGlzLnRvZ2dsZUNvZGUoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlQ29kZUJsb2NrXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlQ29kZUJsb2NrKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZVVuZGVybGluZVwiOlxuICAgICAgICB0aGlzLnRvZ2dsZVVuZGVybGluZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVTdXBlcnNjcmlwdFwiOlxuICAgICAgICB0aGlzLnRvZ2dsZVN1cGVyc2NyaXB0KGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZVN1YnNjcmlwdFwiOlxuICAgICAgICB0aGlzLnRvZ2dsZVN1YnNjcmlwdChlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVIZWFkaW5nXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlSGVhZGluZyhlZGl0b3IsIGFyZ3NbMF0gYXMgMSB8IDIgfCAzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlQnVsbGV0TGlzdFwiOlxuICAgICAgICB0aGlzLnRvZ2dsZUJ1bGxldExpc3QoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlT3JkZXJlZExpc3RcIjpcbiAgICAgICAgdGhpcy50b2dnbGVPcmRlcmVkTGlzdChlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVCbG9ja3F1b3RlXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlQmxvY2txdW90ZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzZXRUZXh0QWxpZ25cIjpcbiAgICAgICAgdGhpcy5zZXRUZXh0QWxpZ24oZWRpdG9yLCBhcmdzWzBdIGFzIFwibGVmdFwiIHwgXCJjZW50ZXJcIiB8IFwicmlnaHRcIiB8IFwianVzdGlmeVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlTGlua1wiOlxuICAgICAgICB0aGlzLmxpbmtTdmMudG9nZ2xlKGVkaXRvciwgYXJnc1swXSBhcyBFdmVudCB8IHVuZGVmaW5lZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInVuc2V0TGlua1wiOlxuICAgICAgICB0aGlzLmxpbmtTdmMudW5zZXRMaW5rKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUNvbG9yUGlja2VyXCI6XG4gICAgICAgIHRoaXMuY29sb3JQaWNrZXJTdmMudG9nZ2xlKGVkaXRvciwgYXJnc1swXSBhcyBcInRleHRcIiB8IFwiaGlnaGxpZ2h0XCIsIGFyZ3NbMV0gYXMgRXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJpbnNlcnRIb3Jpem9udGFsUnVsZVwiOlxuICAgICAgICB0aGlzLmluc2VydEhvcml6b250YWxSdWxlKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImluc2VydEltYWdlXCI6XG4gICAgICAgIHRoaXMuaW5zZXJ0SW1hZ2UoZWRpdG9yLCBhcmdzWzBdIGFzIEF0ZUltYWdlVXBsb2FkT3B0aW9ucykuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidXBsb2FkSW1hZ2VcIjpcbiAgICAgICAgdGhpcy51cGxvYWRJbWFnZShcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgYXJnc1swXSBhcyBGaWxlLFxuICAgICAgICAgIGFyZ3NbMV0gYXMgQXRlSW1hZ2VVcGxvYWRPcHRpb25zIHwgdW5kZWZpbmVkXG4gICAgICAgICkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlSGlnaGxpZ2h0XCI6XG4gICAgICAgIHRoaXMudG9nZ2xlSGlnaGxpZ2h0KGVkaXRvciwgYXJnc1swXSBhcyBzdHJpbmcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ1bmRvXCI6XG4gICAgICAgIHRoaXMudW5kbyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJyZWRvXCI6XG4gICAgICAgIHRoaXMucmVkbyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJpbnNlcnRUYWJsZVwiOlxuICAgICAgICB0aGlzLmluc2VydFRhYmxlKGVkaXRvciwgYXJnc1swXSBhcyBudW1iZXIgfCB1bmRlZmluZWQsIGFyZ3NbMV0gYXMgbnVtYmVyIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYWRkQ29sdW1uQmVmb3JlXCI6XG4gICAgICAgIHRoaXMuYWRkQ29sdW1uQmVmb3JlKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFkZENvbHVtbkFmdGVyXCI6XG4gICAgICAgIHRoaXMuYWRkQ29sdW1uQWZ0ZXIoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGVsZXRlQ29sdW1uXCI6XG4gICAgICAgIHRoaXMuZGVsZXRlQ29sdW1uKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFkZFJvd0JlZm9yZVwiOlxuICAgICAgICB0aGlzLmFkZFJvd0JlZm9yZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGRSb3dBZnRlclwiOlxuICAgICAgICB0aGlzLmFkZFJvd0FmdGVyKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImRlbGV0ZVJvd1wiOlxuICAgICAgICB0aGlzLmRlbGV0ZVJvdyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJkZWxldGVUYWJsZVwiOlxuICAgICAgICB0aGlzLmRlbGV0ZVRhYmxlKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm1lcmdlQ2VsbHNcIjpcbiAgICAgICAgdGhpcy5tZXJnZUNlbGxzKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInNwbGl0Q2VsbFwiOlxuICAgICAgICB0aGlzLnNwbGl0Q2VsbChlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVIZWFkZXJDb2x1bW5cIjpcbiAgICAgICAgdGhpcy50b2dnbGVIZWFkZXJDb2x1bW4oZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlSGVhZGVyUm93XCI6XG4gICAgICAgIHRoaXMudG9nZ2xlSGVhZGVyUm93KGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFwcGx5Q29sb3JcIjpcbiAgICAgICAgdGhpcy5jb2xvclBpY2tlclN2Yy5hcHBseUNvbG9yKFxuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBhcmdzWzBdIGFzIHN0cmluZyxcbiAgICAgICAgICBhcmdzWzFdIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gICAgICAgICAgYXJnc1syXSBhcyBib29sZWFuIHwgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFwcGx5SGlnaGxpZ2h0XCI6XG4gICAgICAgIHRoaXMuY29sb3JQaWNrZXJTdmMuYXBwbHlIaWdobGlnaHQoXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgIGFyZ3NbMF0gYXMgc3RyaW5nLFxuICAgICAgICAgIGFyZ3NbMV0gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBhcmdzWzJdIGFzIGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidW5zZXRDb2xvclwiOlxuICAgICAgICB0aGlzLmNvbG9yUGlja2VyU3ZjLnVuc2V0Q29sb3IoZWRpdG9yLCBhcmdzWzBdIGFzIGJvb2xlYW4pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ1bnNldEhpZ2hsaWdodFwiOlxuICAgICAgICB0aGlzLmNvbG9yUGlja2VyU3ZjLnVuc2V0SGlnaGxpZ2h0KGVkaXRvciwgYXJnc1swXSBhcyBib29sZWFuKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJjbGVhckNvbnRlbnRcIjpcbiAgICAgICAgdGhpcy5jbGVhckNvbnRlbnQoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJleHBvcnRBc1wiOlxuICAgICAgICB2b2lkIHRoaXMuZXhwb3J0QXMoXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgIGFyZ3NbMF0gYXMgQXRlRXhwb3J0Rm9ybWF0LFxuICAgICAgICAgIGFyZ3NbMV0gYXMgXCJjbGlwYm9hcmRcIiB8IFwiZG93bmxvYWRcIixcbiAgICAgICAgICBhcmdzWzJdIGFzIEF0ZUV4cG9ydE9wdGlvbnMgfCB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tIEZvcm1hdHRpbmcgQ29tbWFuZHMgLS0tXG5cbiAgdG9nZ2xlQm9sZChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQm9sZCgpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlSXRhbGljKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVJdGFsaWMoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZVN0cmlrZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlU3RyaWtlKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVDb2RlKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVDb2RlKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVDb2RlQmxvY2soZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUNvZGVCbG9jaygpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlVW5kZXJsaW5lKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVVbmRlcmxpbmUoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZVN1cGVyc2NyaXB0KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVTdXBlcnNjcmlwdCgpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlU3Vic2NyaXB0KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVTdWJzY3JpcHQoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZUhlYWRpbmcoZWRpdG9yOiBFZGl0b3IsIGxldmVsOiAxIHwgMiB8IDMpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhlYWRpbmcoeyBsZXZlbCB9KS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZUhpZ2hsaWdodChlZGl0b3I6IEVkaXRvciwgY29sb3I/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29sb3IpIHtcbiAgICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0SGlnaGxpZ2h0KHsgY29sb3IgfSkucnVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlSGlnaGxpZ2h0KCkucnVuKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tIFN0cnVjdHVyZSBDb21tYW5kcyAtLS1cblxuICB0b2dnbGVCdWxsZXRMaXN0KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVCdWxsZXRMaXN0KCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVPcmRlcmVkTGlzdChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlT3JkZXJlZExpc3QoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZUJsb2NrcXVvdGUoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUJsb2NrcXVvdGUoKS5ydW4oKTtcbiAgfVxuXG4gIHNldFRleHRBbGlnbihlZGl0b3I6IEVkaXRvciwgYWxpZ25tZW50OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCIgfCBcImp1c3RpZnlcIik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKGFsaWdubWVudCkucnVuKCk7XG4gIH1cblxuICBpbnNlcnRIb3Jpem9udGFsUnVsZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0SG9yaXpvbnRhbFJ1bGUoKS5ydW4oKTtcbiAgfVxuXG4gIC8vIC0tLSBIaXN0b3J5IENvbW1hbmRzIC0tLVxuXG4gIHVuZG8oZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnVuZG8oKS5ydW4oKTtcbiAgfVxuXG4gIHJlZG8oZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnJlZG8oKS5ydW4oKTtcbiAgfVxuXG4gIC8vIC0tLSBUYWJsZSBDb21tYW5kcyAtLS1cblxuICBpbnNlcnRUYWJsZShlZGl0b3I6IEVkaXRvciwgcm93cyA9IDMsIGNvbHMgPSAzKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRUYWJsZSh7IHJvd3MsIGNvbHMgfSkucnVuKCk7XG4gIH1cblxuICBhZGRDb2x1bW5CZWZvcmUoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLmFkZENvbHVtbkJlZm9yZSgpLnJ1bigpO1xuICB9XG5cbiAgYWRkQ29sdW1uQWZ0ZXIoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLmFkZENvbHVtbkFmdGVyKCkucnVuKCk7XG4gIH1cblxuICBkZWxldGVDb2x1bW4oZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLmRlbGV0ZUNvbHVtbigpLnJ1bigpO1xuICB9XG5cbiAgYWRkUm93QmVmb3JlKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5hZGRSb3dCZWZvcmUoKS5ydW4oKTtcbiAgfVxuXG4gIGFkZFJvd0FmdGVyKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5hZGRSb3dBZnRlcigpLnJ1bigpO1xuICB9XG5cbiAgZGVsZXRlUm93KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5kZWxldGVSb3coKS5ydW4oKTtcbiAgfVxuXG4gIGRlbGV0ZVRhYmxlKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5kZWxldGVUYWJsZSgpLnJ1bigpO1xuICB9XG5cbiAgbWVyZ2VDZWxscyhlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkubWVyZ2VDZWxscygpLnJ1bigpO1xuICB9XG5cbiAgc3BsaXRDZWxsKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5zcGxpdENlbGwoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZUhlYWRlckNvbHVtbihlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlSGVhZGVyQ29sdW1uKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVIZWFkZXJSb3coZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhlYWRlclJvdygpLnJ1bigpO1xuICB9XG5cbiAgLy8gLS0tIFV0aWxpdHkgQ29tbWFuZHMgLS0tXG5cbiAgY2xlYXJDb250ZW50KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNvbW1hbmRzLmNsZWFyQ29udGVudCh0cnVlKTtcbiAgfVxuXG4gIC8vIC0tLSBFeHBvcnQgQ29tbWFuZHMgLS0tXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVkaXRvciBjb250ZW50IGluIHRoZSBnaXZlbiBmb3JtYXQuXG4gICAqIEBwYXJhbSBmb3JtYXQgJ2h0bWwnIHwgJ21hcmtkb3duJyB8ICd0ZXh0J1xuICAgKi9cbiAgZ2V0Q29udGVudChlZGl0b3I6IEVkaXRvciwgZm9ybWF0OiBBdGVFeHBvcnRGb3JtYXQpOiBzdHJpbmcge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwb3J0U3ZjLmdldENvbnRlbnQoZWRpdG9yLCBmb3JtYXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydHMgdGhlIGVkaXRvciBjb250ZW50LlxuICAgKiBAcGFyYW0gZm9ybWF0ICAnaHRtbCcgfCAnbWFya2Rvd24nIHwgJ3RleHQnXG4gICAqIEBwYXJhbSBtZXRob2QgICdjbGlwYm9hcmQnIHwgJ2Rvd25sb2FkJ1xuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBmaWxlbmFtZSBmb3IgZG93bmxvYWRcbiAgICovXG4gIGFzeW5jIGV4cG9ydEFzKFxuICAgIGVkaXRvcjogRWRpdG9yLFxuICAgIGZvcm1hdDogQXRlRXhwb3J0Rm9ybWF0LFxuICAgIG1ldGhvZDogXCJjbGlwYm9hcmRcIiB8IFwiZG93bmxvYWRcIixcbiAgICBvcHRpb25zPzogQXRlRXhwb3J0T3B0aW9uc1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobWV0aG9kID09PSBcImNsaXBib2FyZFwiKSB7XG4gICAgICBhd2FpdCB0aGlzLmV4cG9ydFN2Yy5leHBvcnRUb0NsaXBib2FyZChlZGl0b3IsIGZvcm1hdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhwb3J0U3ZjLmV4cG9ydFRvRmlsZShlZGl0b3IsIGZvcm1hdCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnJ1bigpO1xuICB9XG5cbiAgYmx1cihlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmJsdXIoKS5ydW4oKTtcbiAgfVxuXG4gIHNldENvbnRlbnQoZWRpdG9yOiBFZGl0b3IsIGNvbnRlbnQ6IHN0cmluZywgZW1pdFVwZGF0ZSA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY29tbWFuZHMuc2V0Q29udGVudChjb250ZW50LCB7IGVtaXRVcGRhdGUgfSk7XG4gIH1cblxuICBzZXRFZGl0YWJsZShlZGl0b3I6IEVkaXRvciwgZWRpdGFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3Iuc2V0RWRpdGFibGUoZWRpdGFibGUpO1xuICB9XG5cbiAgaW5zZXJ0Q29udGVudChlZGl0b3I6IEVkaXRvciwgY29udGVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50KGNvbnRlbnQpLnJ1bigpO1xuICB9XG5cbiAgYXN5bmMgaW5zZXJ0SW1hZ2UoZWRpdG9yOiBFZGl0b3IsIG9wdGlvbnM/OiBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5pbWFnZVNlcnZpY2Uuc2VsZWN0QW5kVXBsb2FkSW1hZ2UoZWRpdG9yLCBvcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluc2VydGluZyBpbWFnZTpcIiwgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBsb2FkSW1hZ2UoZWRpdG9yOiBFZGl0b3IsIGZpbGU6IEZpbGUsIG9wdGlvbnM/OiBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5pbWFnZVNlcnZpY2UudXBsb2FkQW5kSW5zZXJ0SW1hZ2UoZWRpdG9yLCBmaWxlLCBvcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHVwbG9hZGluZyBpbWFnZTpcIiwgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZG93bmxvYWRJbWFnZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIHRoaXMuaW1hZ2VTZXJ2aWNlLmRvd25sb2FkSW1hZ2UoZWRpdG9yKTtcbiAgfVxuXG4gIGhhbmRsZUltYWdlRHJvcChlZGl0b3I6IEVkaXRvciwgZXZlbnQ6IERyYWdFdmVudCwgb3B0aW9ucz86IEF0ZUltYWdlVXBsb2FkT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmltYWdlU2VydmljZS5oYW5kbGVEcm9wKGVkaXRvciwgZXZlbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgaGFuZGxlSW1hZ2VQYXN0ZShcbiAgICBlZGl0b3I6IEVkaXRvcixcbiAgICBldmVudDogQ2xpcGJvYXJkRXZlbnQsXG4gICAgb3B0aW9ucz86IEF0ZUltYWdlVXBsb2FkT3B0aW9uc1xuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbWFnZVNlcnZpY2UuaGFuZGxlUGFzdGUoZWRpdG9yLCBldmVudCwgb3B0aW9ucyk7XG4gIH1cblxuICByZWhvc3RJbWFnZShmaWxlOiBGaWxlLCBvcHRpb25zPzogQXRlSW1hZ2VVcGxvYWRPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5pbWFnZVNlcnZpY2UucmVob3N0SW1hZ2UoZmlsZSwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXQgaGFzVXBsb2FkSGFuZGxlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbWFnZVNlcnZpY2UudXBsb2FkSGFuZGxlciAhPT0gbnVsbDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Injectable, computed, inject, signal } from "@angular/core";
|
|
2
|
+
import { AteI18nService } from "./ate-i18n.service";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Translations seen by one editor instance. The editor provides its own copy and binds its
|
|
6
|
+
* `locale` input to it; without a locale (or outside an editor) it follows the global
|
|
7
|
+
* `AteI18nService` locale. Internal: not part of the public API.
|
|
8
|
+
*/
|
|
9
|
+
export class AteEditorI18n {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.global = inject(AteI18nService);
|
|
12
|
+
this.localeSource = signal(() => undefined);
|
|
13
|
+
this.translations = computed(() => {
|
|
14
|
+
const locale = this.localeSource()();
|
|
15
|
+
return (locale && this.global.getTranslations(locale)) || this.global.translations();
|
|
16
|
+
});
|
|
17
|
+
this.toolbar = computed(() => this.translations().toolbar);
|
|
18
|
+
this.bubbleMenu = computed(() => this.translations().bubbleMenu);
|
|
19
|
+
this.slashCommands = computed(() => this.translations().slashCommands);
|
|
20
|
+
this.table = computed(() => this.translations().table);
|
|
21
|
+
this.imageUpload = computed(() => this.translations().imageUpload);
|
|
22
|
+
this.editor = computed(() => this.translations().editor);
|
|
23
|
+
this.common = computed(() => this.translations().common);
|
|
24
|
+
this.export = computed(() => this.translations().export);
|
|
25
|
+
}
|
|
26
|
+
bindLocale(source) {
|
|
27
|
+
this.localeSource.set(source);
|
|
28
|
+
}
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteEditorI18n, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteEditorI18n, providedIn: "root" }); }
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteEditorI18n, decorators: [{
|
|
33
|
+
type: Injectable,
|
|
34
|
+
args: [{ providedIn: "root" }]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1pMThuLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9zZXJ2aWNlcy9hdGUtZWRpdG9yLWkxOG4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFcEQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRW1CLFdBQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEMsaUJBQVksR0FBRyxNQUFNLENBQW9DLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWxGLGlCQUFZLEdBQUcsUUFBUSxDQUFrQixHQUFHLEVBQUU7WUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDckMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkYsQ0FBQyxDQUFDLENBQUM7UUFFTSxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RCxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1RCxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEUsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlELFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBSzlEO0lBSEMsVUFBVSxDQUFDLE1BQXlDO1FBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7K0dBcEJVLGFBQWE7bUhBQWIsYUFBYSxjQURBLE1BQU07OzRGQUNuQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBdGVUcmFuc2xhdGlvbnMsIFN1cHBvcnRlZExvY2FsZSB9IGZyb20gXCIuLi9pMThuL2F0ZVRyYW5zbGF0aW9uc01vZGVsXCI7XG5pbXBvcnQgeyBBdGVJMThuU2VydmljZSB9IGZyb20gXCIuL2F0ZS1pMThuLnNlcnZpY2VcIjtcblxuLyoqXG4gKiBUcmFuc2xhdGlvbnMgc2VlbiBieSBvbmUgZWRpdG9yIGluc3RhbmNlLiBUaGUgZWRpdG9yIHByb3ZpZGVzIGl0cyBvd24gY29weSBhbmQgYmluZHMgaXRzXG4gKiBgbG9jYWxlYCBpbnB1dCB0byBpdDsgd2l0aG91dCBhIGxvY2FsZSAob3Igb3V0c2lkZSBhbiBlZGl0b3IpIGl0IGZvbGxvd3MgdGhlIGdsb2JhbFxuICogYEF0ZUkxOG5TZXJ2aWNlYCBsb2NhbGUuIEludGVybmFsOiBub3QgcGFydCBvZiB0aGUgcHVibGljIEFQSS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIEF0ZUVkaXRvckkxOG4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbCA9IGluamVjdChBdGVJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU291cmNlID0gc2lnbmFsPCgpID0+IFN1cHBvcnRlZExvY2FsZSB8IHVuZGVmaW5lZD4oKCkgPT4gdW5kZWZpbmVkKTtcblxuICByZWFkb25seSB0cmFuc2xhdGlvbnMgPSBjb21wdXRlZDxBdGVUcmFuc2xhdGlvbnM+KCgpID0+IHtcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmxvY2FsZVNvdXJjZSgpKCk7XG4gICAgcmV0dXJuIChsb2NhbGUgJiYgdGhpcy5nbG9iYWwuZ2V0VHJhbnNsYXRpb25zKGxvY2FsZSkpIHx8IHRoaXMuZ2xvYmFsLnRyYW5zbGF0aW9ucygpO1xuICB9KTtcblxuICByZWFkb25seSB0b29sYmFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50cmFuc2xhdGlvbnMoKS50b29sYmFyKTtcbiAgcmVhZG9ubHkgYnViYmxlTWVudSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuYnViYmxlTWVudSk7XG4gIHJlYWRvbmx5IHNsYXNoQ29tbWFuZHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zbGF0aW9ucygpLnNsYXNoQ29tbWFuZHMpO1xuICByZWFkb25seSB0YWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkudGFibGUpO1xuICByZWFkb25seSBpbWFnZVVwbG9hZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuaW1hZ2VVcGxvYWQpO1xuICByZWFkb25seSBlZGl0b3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zbGF0aW9ucygpLmVkaXRvcik7XG4gIHJlYWRvbmx5IGNvbW1vbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuY29tbW9uKTtcbiAgcmVhZG9ubHkgZXhwb3J0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50cmFuc2xhdGlvbnMoKS5leHBvcnQpO1xuXG4gIGJpbmRMb2NhbGUoc291cmNlOiAoKSA9PiBTdXBwb3J0ZWRMb2NhbGUgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2FsZVNvdXJjZS5zZXQoc291cmNlKTtcbiAgfVxufVxuIl19
|