@datagrok-libraries/utils 2.3.3 → 2.4.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/README.md +8 -8
- package/css/rich-function-view.css +4 -0
- package/package.json +2 -1
- package/src/function-view.d.ts +1 -4
- package/src/function-view.d.ts.map +1 -1
- package/src/function-view.js +2 -3
- package/src/history-utils.d.ts +9 -2
- package/src/history-utils.d.ts.map +1 -1
- package/src/history-utils.js +38 -3
- package/src/pipeline-view.d.ts +29 -0
- package/src/pipeline-view.d.ts.map +1 -0
- package/src/pipeline-view.js +98 -0
- package/src/rich-function-view.d.ts +13 -1
- package/src/rich-function-view.d.ts.map +1 -1
- package/src/rich-function-view.js +167 -89
- package/src/shared-components/file-input.js +1 -1
- package/src/shared-components/history-panel.d.ts.map +1 -1
- package/src/shared-components/history-panel.js +3 -1
- package/src/string-utils.d.ts +1 -0
- package/src/string-utils.d.ts.map +1 -1
- package/src/string-utils.js +5 -1
- package/tsconfig.json +1 -1
package/README.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Utils is a Datagrok library with common utilities.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
- [array-utils](src/array_utils.ts) facilitates work with conventional arrays.
|
|
6
|
+
- [string-utils](src/string-utils.ts) contains different procedures on strings.
|
|
7
|
+
- [random](src/random.ts) contains different functions for random values generation.
|
|
8
|
+
- [bit-array](src/bit-array.ts) introduces BitArray class aimed to be used in cheminformatics to caclulate molecular fingerprints.
|
|
9
|
+
- [vector-operations](src/vector-operations.ts) contains simple linear algebra functions.
|
|
10
|
+
- [similarity-metrics](src/similarity-metrics.ts) provides different [BitArray](src/bit-array.ts) distance metrics.
|
|
11
|
+
- [test](src/test.ts) implements Datagrok [packages](../../packages) test framework.
|
|
12
|
+
- [test-node](src/test-node.ts) supports remote tests of Datagrok [packages](../../packages).
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"fullName": "Utils",
|
|
7
|
-
"version": "2.
|
|
7
|
+
"version": "2.4.0",
|
|
8
8
|
"description": "Common utilities",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"cash-dom": "^8.1.1",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"exceljs": "^4.3.0",
|
|
13
13
|
"fast-sha256": "^1.3.0",
|
|
14
14
|
"html2canvas": "^1.4.1",
|
|
15
|
+
"jszip": "^3.10.1",
|
|
15
16
|
"rxjs": "^6.5.5",
|
|
16
17
|
"typeahead-standalone": "^4.14.1",
|
|
17
18
|
"wu": "latest"
|
package/src/function-view.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ import * as DG from 'datagrok-api/dg';
|
|
|
5
5
|
* @stability Experimental
|
|
6
6
|
*/
|
|
7
7
|
export declare const passErrorToShell: () => (target: any, memberName: string, descriptor: PropertyDescriptor) => void;
|
|
8
|
-
export declare const INTERACTIVE_CSS_CLASS = "cv-interactive";
|
|
9
8
|
export declare abstract class FunctionView extends DG.ViewBase {
|
|
10
9
|
protected _funcCall?: DG.FuncCall;
|
|
11
10
|
protected _lastCall?: DG.FuncCall;
|
|
@@ -185,9 +184,7 @@ export declare abstract class FunctionView extends DG.ViewBase {
|
|
|
185
184
|
run(): Promise<void>;
|
|
186
185
|
protected historyRoot: HTMLDivElement;
|
|
187
186
|
protected defaultExportFilename: (format: string) => string;
|
|
188
|
-
protected defaultSupportedExportExtensions: () =>
|
|
189
|
-
Excel: string;
|
|
190
|
-
};
|
|
187
|
+
protected defaultSupportedExportExtensions: () => Record<string, string>;
|
|
191
188
|
protected defaultSupportedExportFormats: () => string[];
|
|
192
189
|
}
|
|
193
190
|
//# sourceMappingURL=function-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-view.d.ts","sourceRoot":"","sources":["function-view.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAItC;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,iBACX,GAAG,cAAc,MAAM,cAAc,kBAAkB,SAYxE,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"function-view.d.ts","sourceRoot":"","sources":["function-view.ts"],"names":[],"mappings":"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"}
|
package/src/function-view.js
CHANGED
|
@@ -35,7 +35,6 @@ export const passErrorToShell = () => {
|
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
37
|
};
|
|
38
|
-
export const INTERACTIVE_CSS_CLASS = 'cv-interactive';
|
|
39
38
|
export class FunctionView extends DG.ViewBase {
|
|
40
39
|
constructor(funcCall) {
|
|
41
40
|
super();
|
|
@@ -46,7 +45,7 @@ export class FunctionView extends DG.ViewBase {
|
|
|
46
45
|
this.exportConfig = null;
|
|
47
46
|
this.historyRoot = ui.divV([], { style: { 'justify-content': 'center' } });
|
|
48
47
|
this.defaultExportFilename = (format) => {
|
|
49
|
-
return `${this.name} - ${new Date().toLocaleString()}.${this.exportConfig.supportedExtensions[format]}`;
|
|
48
|
+
return `${this.name} - ${new Date().toLocaleString('en-US').replaceAll(/:|\//g, '-')}.${this.exportConfig.supportedExtensions[format]}`;
|
|
50
49
|
};
|
|
51
50
|
this.defaultSupportedExportExtensions = () => {
|
|
52
51
|
return {
|
|
@@ -316,4 +315,4 @@ export class FunctionView extends DG.ViewBase {
|
|
|
316
315
|
});
|
|
317
316
|
}
|
|
318
317
|
}
|
|
319
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZ1bmN0aW9uLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsZ0NBQWdDO0FBQ2hDLDRCQUE0QjtBQUM1QixPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXJEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7SUFDbkMsT0FBTyxDQUFDLE1BQVcsRUFBRSxVQUFrQixFQUFFLFVBQThCLEVBQUUsRUFBRTtRQUN6RSxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRWxDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBZSxHQUFHLElBQVc7O2dCQUM5QyxJQUFJO29CQUNGLE9BQU8sTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2lCQUMzQztnQkFBQyxPQUFPLEdBQVEsRUFBRTtvQkFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUUsR0FBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN6QyxNQUFNLEdBQUcsQ0FBQztpQkFDWDtZQUNILENBQUM7U0FBQSxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsZ0JBQWdCLENBQUM7QUFFdEQsTUFBTSxPQUFnQixZQUFhLFNBQVEsRUFBRSxDQUFDLFFBQVE7SUFLcEQsWUFBWSxRQUFzQjtRQUNoQyxLQUFLLEVBQUUs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QixDQUFDO0tBQUE7SUFFRDs7OztNQUlFO0lBQ1csV0FBVyxDQUFDLFVBQXVCOzhEQUFHLENBQUM7S0FBQTtJQUVwRDs7OztPQUlHO0lBQ1UsVUFBVSxDQUFDLE9BQW9COzhEQUFHLENBQUM7S0FBQTtJQUVuQyxHQUFHOztZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFFbEYsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyw2QkFBNkI7WUFDekQsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVyQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsQ0FBQztLQUFBO0NBaUJGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQge2hpc3RvcnlVdGlsc30gZnJvbSAnLi9oaXN0b3J5LXV0aWxzJztcbmltcG9ydCB7VWlVdGlsc30gZnJvbSAnLi9zaGFyZWQtY29tcG9uZW50cy91aS11dGlscyc7XG5cbi8qKlxuICAgKiBEZWNvcmF0b3IgdG8gcGFzcyBhbGwgdGhyb3duIGVycm9ycyB0byBncm9rLnNoZWxsLmVycm9yXG4gICAqIEByZXR1cm5zIFRoZSBhY3R1YWwgZnVuY2NhbGwgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3XG4gICAqIEBzdGFiaWxpdHkgRXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBjb25zdCBwYXNzRXJyb3JUb1NoZWxsID0gKCkgPT4ge1xuICByZXR1cm4gKHRhcmdldDogYW55LCBtZW1iZXJOYW1lOiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsID0gZGVzY3JpcHRvci52YWx1ZTtcblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG9yaWdpbmFsLmNhbGwodGhpcywgLi4uYXJncyk7XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICBncm9rLnNoZWxsLmVycm9yKChlcnIgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBJTlRFUkFDVElWRV9DU1NfQ0xBU1MgPSAnY3YtaW50ZXJhY3RpdmUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRnVuY3Rpb25WaWV3IGV4dGVuZHMgREcuVmlld0Jhc2Uge1xuICBwcm90ZWN0ZWQgX2Z1bmNDYWxsPzogREcuRnVuY0NhbGw7XG4gIHByb3RlY3RlZCBfbGFzdENhbGw/OiBERy5GdW5jQ2FsbDtcbiAgcHJvdGVjdGVkIF90eXBlOiBzdHJpbmcgPSAnZnVuY3Rpb24nO1xuXG4gIGNvbnN0cnVjdG9yKGZ1bmNDYWxsPzogREcuRnVuY0NhbGwpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYm94ID0gdHJ1ZTtcblxuICAgIGlmICghZnVuY0NhbGwpIHJldHVybjtcbiAgICB0aGlzLm5hbWUgPSBmdW5jQ2FsbC5mdW5jLmZyaWVuZGx5TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBmdW5jdGlvbiBjYWxsIG9mIHRoZSB2aWV3XG4gICAqIEByZXR1cm5zIFRoZSBhY3R1YWwgZnVuY2NhbGwgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3XG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGdldCBmdW5jQ2FsbCgpOiBERy5GdW5jQ2FsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2Z1bmNDYWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBGdW5jIG9mIHRoZSB2aWV3XG4gICAqIEByZXR1cm5zIFRoZSBhY3R1YWwgZnVuYyBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZXdcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBnZXQgZnVuYygpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jQ2FsbD8uZnVuYztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGF0YSBvZiBsYXN0IGNhbGwgb2YgYXNzb2NpYXRlZCBmdW5jdGlvblxuICAgKiBAcmV0dXJucyBUaGUgYWN0dWFsIGZ1bmMgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3XG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgZ2V0IGxhc3RDYWxsKCkge1xuICAgIHJldHVybiB0aGlzLl9sYXN0Q2FsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGF0YSBvZiBsYXN0IGNhbGwgb2YgYXNzb2NpYXRlZCBmdW5jdGlvblxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHNldCBsYXN0Q2FsbChsYXN0Q2FsbDogREcuRnVuY0NhbGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9sYXN0Q2FsbCA9IGxhc3RDYWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFZpZXcgdHlwZVxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHB1YmxpYyBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG5cbiAgLyoqIEV4cG9ydCBvcHRpb25zLiBDb3VsZCBiZSBvdmVycmlkZW4gcGFydGlhbGx5LCB1c2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIGVhY2ggb3B0aW9uLlxuICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgKi9cbiAgZXhwb3J0Q29uZmlnOiB7XG4gICAgLyoqIE92ZXJyaWRlIHRvIHByb3ZpZGUgY3VzdG9tIGV4cG9ydCBsb2dpYy5cbiAgICAgICpcbiAgICAgICogIERlZmF1bHQgaW1wbGVtZW50YXRpb24ge0BsaW5rIGRlZmF1bHRFeHBvcnR9IGhlYXZpbHkgcmVsaWVzIG9uIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHtAbGluayBidWlsZElPfS5cbiAgICAgICogQHJldHVybnMgQmxvYiB3aXRoIGRhdGEgdG8gYmUgZXhwb3J0ZWQgaW50byB0aGUgZmlsZS5cbiAgICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgICAqL1xuICAgIGV4cG9ydDogKChmb3JtYXQ6IHN0cmluZykgPT4gUHJvbWlzZTxCbG9iPik7XG5cblxuICAgIC8qKiBGaWxlbmFtZSBmb3IgZXhwb3J0ZWQgZmlsZXMuIE92ZXJyaWRlIGZvciBjdXN0b20gZmlsZW5hbWVzLlxuICAgICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIHtAbGluayBkZWZhdWx0RXhwb3J0RmlsZW5hbWV9XG4gICAgICAqIEBwYXJhbSBmb3JtYXQgRm9ybWF0IG5hbWUgdG8gYmUgZXhwb3J0ZWRcbiAgICAgICogQHJldHVybnMgVGhlIGFjdHVhbCBmaWxlbmFtZSB0byBiZSB1c2VkIGZvciB0aGUgZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICAgKi9cbiAgICBmaWxlbmFtZTogKChmb3JtYXQ6IHN0cmluZykgPT4gc3RyaW5nKTtcblxuICAgIC8qKiBPdmVycmlkZSB0byBwcm92aWRlIGN1c3RvbSBsaXN0IG9mIHN1cHBvcnRlZCBleHBvcnQgZm9ybWF0cy5cbiAgICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIHtAbGluayBkZWZhdWx0U3VwcG9ydGVkRXhwb3J0Rm9ybWF0c31cbiAgICAgKiBUaGVzZSBmb3JtYXRzIGFyZSBhdmFpbGFibGUgdW5kZXIgdGhlIFwiRXhwb3J0XCIgcG9wdXAgb24gdGhlIHJpYmJvbiBwYW5lbC5cbiAgICAgKiBAcmV0dXJucyBUaGUgYXJyYXkgb2YgZm9ybWF0cyBhdmFpbGFibGUgZm9yIHRoZSBleHBvcnQuXG4gICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgICAqL1xuICAgIHN1cHBvcnRlZEZvcm1hdHM6IHN0cmluZ1tdO1xuXG4gICAgLyoqIE92ZXJyaWRlIHRvIHByb3ZpZGUgY3VzdG9tIGZpbGUgZXh0ZW5zaW9ucyBmb3IgZXhwb3J0ZWQgZm9ybWF0cy5cbiAgICAgICAqIERlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMge0BsaW5rIGRlZmF1bHRTdXBwb3J0ZWRFeHBvcnRFeHRlbnNpb25zfVxuICAgICAgICogVGhlc2UgZXh0ZW5zaW9ucyBhcmUgdXNlZCBpbiBmaWxlbmFtZXMge0BsaW5rIGV4cG9ydEZpbGVuYW1lfS5cbiAgICAgICAqIEByZXR1cm5zIFRoZSBtYXBwaW5nIGJldHdlZW4gc3VwcG9ydGVkIGV4cG9ydCBmb3JtYXRzIGFuZCB0aGVpciBleHRlbnNpb25zLlxuICAgICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgICAgKi9cbiAgICBzdXBwb3J0ZWRFeHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICB9IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIExpbmsgRnVuY0NhbGwgdG8gdGhlIHZpZXdcbiAgICogQHBhcmFtIGZ1bmNDYWxsIFRoZSBhY3R1YWwgZnVuY2NhbGwgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3XG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGxpbmtGdW5jY2FsbChmdW5jQ2FsbDogREcuRnVuY0NhbGwpIHtcbiAgICBjb25zdCBpc1ByZXZpb3VzSGlzdG9yaWNhbCA9IHRoaXMuX2Z1bmNDYWxsPy5vcHRpb25zWydpc0hpc3RvcmljYWwnXTtcbiAgICB0aGlzLl9mdW5jQ2FsbCA9IGZ1bmNDYWxsO1xuXG4gICAgaWYgKGZ1bmNDYWxsLm9wdGlvbnNbJ2lzSGlzdG9yaWNhbCddKSB7XG4gICAgICBpZiAoIWlzUHJldmlvdXNIaXN0b3JpY2FsKVxuICAgICAgICB0aGlzLm5hbWUgPSBgJHt0aGlzLm5hbWV9IOKAlCAke2Z1bmNDYWxsLm9wdGlvbnNbJ3RpdGxlJ10gPz8gbmV3IERhdGUoZnVuY0NhbGwuc3RhcnRlZC50b1N0cmluZygpKS50b0xvY2FsZVN0cmluZygnZW4tdXMnLCB7bW9udGg6ICdzaG9ydCcsIGRheTogJ251bWVyaWMnLCBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJ251bWVyaWMnfSl9YDtcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy5uYW1lID0gYCR7dGhpcy5uYW1lLnN1YnN0cmluZygwLCB0aGlzLm5hbWUuaW5kZXhPZignIOKAlCAnKSl9IOKAlCAke2Z1bmNDYWxsLm9wdGlvbnNbJ3RpdGxlJ10gPz8gbmV3IERhdGUoZnVuY0NhbGwuc3RhcnRlZC50b1N0cmluZygpKS50b0xvY2FsZVN0cmluZygnZW4tdXMnLCB7bW9udGg6ICdzaG9ydCcsIGRheTogJ251bWVyaWMnLCBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJ251bWVyaWMnfSl9YDtcblxuXG4gICAgICAvLyBGSVggTUU6IHZpZXcgbmFtZSBkb2VzIG5vdCBjaGFuZ2UgaW4gbW9kZWxzXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYuZDQtcmliYm9uLW5hbWUnKT8ucmVwbGFjZUNoaWxkcmVuKHVpLnNwYW4oW3RoaXMubmFtZV0pKTtcbiAgICAgIHRoaXMucGF0aCA9IGA/aWQ9JHt0aGlzLl9mdW5jQ2FsbC5pZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhdGggPSBgYDtcblxuICAgICAgdGhpcy5uYW1lID0gYCR7dGhpcy5uYW1lLnN1YnN0cmluZygwLCAodGhpcy5uYW1lLmluZGV4T2YoJyDigJQgJykgPiAwKSA/IHRoaXMubmFtZS5pbmRleE9mKCcg4oCUICcpIDogdW5kZWZpbmVkKX1gO1xuICAgIH1cbiAgICB0aGlzLmJ1aWxkUmliYm9uUGFuZWxzKCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGZvciBjdXN0b20gbG9naWMgdGhhdCBjb3VsZCBub3QgYmUgcGxhY2VkIGluIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICogQW55IGFzeW5jIG1ldGhvZHMgYW5kIG1vc3Qgb2YgdGhlIGxvZ2ljIHNob3VsZCBiZSBwbGFjZWQgaGVyZS5cbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgaW5pdCgpIHt9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRvIGNyZWF0ZSBhIGZ1bGx5IGN1c3RvbSBVSSBpbmNsdWRpbmcgcmliYm9uIG1lbnVzIGFuZCBwYW5lbHNcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYnVpbGQoKTogdm9pZCB7XG4gICAgdWkuZW1wdHkodGhpcy5yb290KTtcbiAgICB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5idWlsZElPKCkpO1xuXG4gICAgdGhpcy5idWlsZEhpc3RvcnlCbG9jaygpO1xuICAgIHRoaXMuYnVpbGRSaWJib25NZW51KCk7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgdG8gY3JlYXRlIGEgY3VzdG9tIGlucHV0LW91dHB1dCBibG9ja1xuICAgKiBAcmV0dXJucyBUaGUgSFRNTEVsZW1lbnQgd2l0aCB3aG9sZSBVSSBleGNsdWRpbmcgcmliYm9uIG1lbnVzIGFuZCBwYW5lbHNcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYnVpbGRJTygpOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgdG8gY3JlYXRlIGEgY3VzdG9tIGhpc3RvcmljYWwgcnVucyBjb250cm9sLlxuICAgKiBAcmV0dXJucyBUaGUgSFRNTEVsZW1lbnQgd2l0aCBoaXN0b3J5IGJsb2NrIFVJXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGJ1aWxkSGlzdG9yeUJsb2NrKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBuZXdIaXN0b3J5QmxvY2sgPSBVaVV0aWxzLmhpc3RvcnlQYW5lbCh0aGlzLmZ1bmMhKTtcblxuICAgIG5ld0hpc3RvcnlCbG9jay5vblJ1bkNob3Nlbi5zdWJzY3JpYmUoYXN5bmMgKGlkKSA9PiB0aGlzLmxpbmtGdW5jY2FsbChhd2FpdCB0aGlzLmxvYWRSdW4oaWQpKSk7XG5cbiAgICB1aS5lbXB0eSh0aGlzLmhpc3RvcnlSb290KTtcbiAgICB0aGlzLmhpc3RvcnlSb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdqdXN0aWZ5LWNvbnRlbnQnKTtcbiAgICB0aGlzLmhpc3RvcnlSb290LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIHRoaXMuaGlzdG9yeVJvb3QuYXBwZW5kKG5ld0hpc3RvcnlCbG9jay5yb290KTtcbiAgICByZXR1cm4gbmV3SGlzdG9yeUJsb2NrLnJvb3Q7XG4gIH1cblxuICAvKipcbiAgICogTG9va3MgZm9yIHtAbGluayBzdXBwb3J0ZWRFeHBvcnRGb3JtYXRzfSBtZW1iZXJzIGFuZCBjcmVhdGVzIHJpYmJvbiBwYW5lbFxuICAgKiBAcmV0dXJucyBUaGUgSFRNTEVsZW1lbnRzIG9mIHJpYmJvblBhbmVsc1xuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIGJ1aWxkUmliYm9uUGFuZWxzKCk6IEhUTUxFbGVtZW50W11bXSB7XG4gICAgY29uc3QgbmV3UmliYm9uUGFuZWxzOiBIVE1MRWxlbWVudFtdW10gPSBbXG4gICAgICBbLi4uKHRoaXMuZXhwb3J0Q29uZmlnICYmIHRoaXMuZXhwb3J0Q29uZmlnLnN1cHBvcnRlZEZvcm1hdHMubGVuZ3RoID4gMCkgPyBbdWkuZGl2SChbXG4gICAgICAgIHVpLmNvbWJvUG9wdXAoXG4gICAgICAgICAgdWkuaWNvbkZBKCdhcnJvdy10by1ib3R0b20nKSxcbiAgICAgICAgICB0aGlzLmV4cG9ydENvbmZpZy5zdXBwb3J0ZWRGb3JtYXRzLFxuICAgICAgICAgIGFzeW5jIChmb3JtYXQ6IHN0cmluZykgPT4gREcuVXRpbHMuZG93bmxvYWQodGhpcy5leHBvcnRDb25maWchLmZpbGVuYW1lKGZvcm1hdCksIGF3YWl0IHRoaXMuZXhwb3J0Q29uZmlnIS5leHBvcnQoZm9ybWF0KSkpLFxuICAgICAgXSldOiBbXVxuICAgICAgXV07XG5cbiAgICBpZiAodGhpcy5mdW5jPy5pZCkge1xuICAgICAgY29uc3QgaGlzdG9yeUJ1dHRvbiA9IHVpLmljb25GQSgnaGlzdG9yeScsICgpID0+IHtcbiAgICAgICAgZ3Jvay5zaGVsbC53aW5kb3dzLnNob3dQcm9wZXJ0aWVzID0gIWdyb2suc2hlbGwud2luZG93cy5zaG93UHJvcGVydGllcztcbiAgICAgICAgaGlzdG9yeUJ1dHRvbi5jbGFzc0xpc3QudG9nZ2xlKCdkNC1jdXJyZW50Jyk7XG4gICAgICAgIGdyb2suc2hlbGwubyA9IHRoaXMuaGlzdG9yeVJvb3Q7XG4gICAgICB9KTtcblxuICAgICAgaGlzdG9yeUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdkNC10b2dnbGUtYnV0dG9uJyk7XG4gICAgICBpZiAoZ3Jvay5zaGVsbC53aW5kb3dzLnNob3dQcm9wZXJ0aWVzKSBoaXN0b3J5QnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2Q0LWN1cnJlbnQnKTtcblxuICAgICAgbmV3UmliYm9uUGFuZWxzLnB1c2goW1xuICAgICAgICBoaXN0b3J5QnV0dG9uXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFJpYmJvblBhbmVscyhuZXdSaWJib25QYW5lbHMpO1xuICAgIHJldHVybiBuZXdSaWJib25QYW5lbHM7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgdG8gY3JlYXRlIGEgY3VzdG9tIHJpYmJvbiBtZW51IG9uIHRoZSB0b3AuXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGJ1aWxkUmliYm9uTWVudSgpIHtcblxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgc2F2aW5nIHRoZSBGVW5jQ2FsbCByZXN1bHRzIHRvIHRoZSBoaXN0b3JpY2FsIHJlc3VsdHMsIHJldHVybnMgdGhlIHNhdmVkIGNhbGwuIFNlZSBhbHNvIHtAbGluayBzYXZlUnVufS5cbiAgICogQHBhcmFtIGNhbGxUb1NhdmUgRnVuY0NhbGwgb2JqZWN0IHRvIHNhdmVcbiAgICogQHJldHVybnMgU2F2ZWQgRnVuY0NhbGxcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgb25CZWZvcmVTYXZlUnVuKGNhbGxUb1NhdmU6IERHLkZ1bmNDYWxsKSB7IH1cblxuICAvKipcbiAgICogU2F2ZXMgdGhlIGNvbXB1dGF0aW9uIHJlc3VsdHMgdG8gdGhlIGhpc3RvcmljYWwgcmVzdWx0cywgcmV0dXJucyB0aGUgc2F2ZWQgY2FsbC4gU2VlIGFsc28ge0BsaW5rIHNhdmVSdW59LlxuICAgKiBAcGFyYW0gc2F2ZWRDYWxsIEZ1bmNDYWxsIG9iamVjdCB0byBzYXZlXG4gICAqIEByZXR1cm5zIFNhdmVkIEZ1bmNDYWxsXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIG9uQWZ0ZXJTYXZlUnVuKHNhdmVkQ2FsbDogREcuRnVuY0NhbGwpIHsgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgY29tcHV0YXRpb24gcmVzdWx0cyB0byB0aGUgaGlzdG9yaWNhbCByZXN1bHRzLCByZXR1cm5zIHRoZSBzYXZlZCBjYWxsLiBTZWUgYWxzbyB7QGxpbmsgbG9hZFJ1bn0uXG4gICAqIEBwYXJhbSBjYWxsVG9TYXZlIEZ1bmNDYWxsIG9iamVjdCB0byBzYXZlXG4gICAqIEByZXR1cm5zIFNhdmVkIEZ1bmNDYWxsXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIHNhdmVSdW4oY2FsbFRvU2F2ZTogREcuRnVuY0NhbGwpOiBQcm9taXNlPERHLkZ1bmNDYWxsPiB7XG4gICAgYXdhaXQgdGhpcy5vbkJlZm9yZVNhdmVSdW4oY2FsbFRvU2F2ZSk7XG4gICAgY29uc3Qgc2F2ZWRDYWxsID0gYXdhaXQgaGlzdG9yeVV0aWxzLnNhdmVSdW4oY2FsbFRvU2F2ZSk7XG4gICAgc2F2ZWRDYWxsLm9wdGlvbnNbJ2lzSGlzdG9yaWNhbCddID0gZmFsc2U7XG4gICAgdGhpcy5saW5rRnVuY2NhbGwoc2F2ZWRDYWxsKTtcbiAgICB0aGlzLmJ1aWxkSGlzdG9yeUJsb2NrKCk7XG4gICAgdGhpcy5wYXRoID0gYD9pZD0ke3NhdmVkQ2FsbC5pZH1gO1xuICAgIGF3YWl0IHRoaXMub25BZnRlclNhdmVSdW4oc2F2ZWRDYWxsKTtcbiAgICByZXR1cm4gc2F2ZWRDYWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIGNvbXB1dGF0aW9uIHJlc3VsdHMgZnJvbSBoaXN0b3J5LCByZXR1cm5zIGl0cyBpZC4gU2VlIGFsc28ge0BsaW5rIGxvYWRSdW59LlxuICAgKiBAcGFyYW0gY2FsbFRvRGVsZXRlIEZ1bmNDYWxsIG9iamVjdCB0byBiZSBkZWxldGVkXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIG9uQmVmb3JlRGVsZXRlUnVuKGNhbGxUb0RlbGV0ZTogREcuRnVuY0NhbGwpIHsgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZGVsZXRpbmcgdGhlIGNvbXB1dGF0aW9uIHJlc3VsdHMgZnJvbSBoaXN0b3J5LCByZXR1cm5zIGl0cyBpZC4gU2VlIGFsc28ge0BsaW5rIGxvYWRSdW59LlxuICAgKiBAcGFyYW0gZGVsZXRlZENhbGwgZGVsZXRlZCBGdW5jQ2FsbCB2YWx1ZVxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHB1YmxpYyBhc3luYyBvbkFmdGVyRGVsZXRlUnVuKGRlbGV0ZWRDYWxsOiBERy5GdW5jQ2FsbCkgeyB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgdGhlIGNvbXB1dGF0aW9uIHJlc3VsdHMgZnJvbSBoaXN0b3J5LCByZXR1cm5zIGl0cyBpZC4gU2VlIGFsc28ge0BsaW5rIGxvYWRSdW59LlxuICAgKiBAcGFyYW0gY2FsbFRvRGVsZXRlIEZ1bmNDYWxsIG9iamVjdCB0byBkZWxldGVcbiAgICogQHJldHVybnMgSUQgb2YgZGVsZXRlZCBoaXN0b3JpY2FsIHJ1blxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVJ1bihjYWxsVG9EZWxldGU6IERHLkZ1bmNDYWxsKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBhd2FpdCB0aGlzLm9uQmVmb3JlRGVsZXRlUnVuKGNhbGxUb0RlbGV0ZSk7XG4gICAgYXdhaXQgaGlzdG9yeVV0aWxzLmRlbGV0ZVJ1bihjYWxsVG9EZWxldGUpO1xuICAgIGF3YWl0IHRoaXMub25BZnRlckRlbGV0ZVJ1bihjYWxsVG9EZWxldGUpO1xuICAgIHJldHVybiBjYWxsVG9EZWxldGUuaWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBmZXRjaGluZyB0aGUgaGlzdG9yaWNhbCBydW4gZGF0YSBpbiB7QGxpbmsgbG9hZFJ1bn0uXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIG9uQmVmb3JlTG9hZFJ1bigpIHt9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBmZXRjaGluZyB0aGUgaGlzdG9yaWNhbCBydW4gZGF0YSBpbiB7QGxpbmsgbG9hZFJ1bn0uXG4gICAqIEBwYXJhbSBmdW5jQ2FsbCBGdW5jQ2FsbCBmZXRjaGVkIGZyb20gc2VydmVyIGR1cmluZyB7QGxpbmsgbG9hZFJ1bn1cbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgb25BZnRlckxvYWRSdW4oZnVuY0NhbGw6IERHLkZ1bmNDYWxsKSB7fVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgc3BlY2lmaWVkIGhpc3RvcmljYWwgcnVuLiBTZWUgYWxzbyB7QGxpbmsgc2F2ZVJ1bn0uXG4gICAqIEBwYXJhbSBmdW5jQ2FsbElkIElEIG9mIEZ1bmNDYWxsIHRvIGxvb2sgZm9yLiBHZXQgaXQgdXNpbmcge0BzZWUgZnVuY0NhbGwuaWR9IGZpZWxkXG4gICAqIEByZXR1cm5zIEZ1bmNDYWxsIGF1Z2VtZW50ZWQgd2l0aCBpbnB1dHMnIGFuZCBvdXRwdXRzJyB2YWx1ZXNcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuXG4gIHB1YmxpYyBhc3luYyBsb2FkUnVuKGZ1bmNDYWxsSWQ6IHN0cmluZyk6IFByb21pc2U8REcuRnVuY0NhbGw+IHtcbiAgICBhd2FpdCB0aGlzLm9uQmVmb3JlTG9hZFJ1bigpO1xuICAgIGNvbnN0IHB1bGxlZFJ1biA9IGF3YWl0IGhpc3RvcnlVdGlscy5sb2FkUnVuKGZ1bmNDYWxsSWQpO1xuICAgIGF3YWl0IHRoaXMub25BZnRlckxvYWRSdW4ocHVsbGVkUnVuKTtcbiAgICByZXR1cm4gcHVsbGVkUnVuO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgYWN0dWFsIGNvbXB1dGF0aW9ucyBhcmUgbWFkZSB7QGxpbmsgcnVufS5cbiAgICogQHBhcmFtIGZ1bmNUb0NhbGwgRnVuY0NhbGwgb2JqZWN0IHRvIGJlIGNhbGxlZCB7QHNlZSBERy5GdW5jQ2FsbC5jYWxsKCl9XG4gICAqIEBzdGFiaWxpdHkgRXhwZXJpbWVudGFsXG4gICovXG4gIHB1YmxpYyBhc3luYyBvbkJlZm9yZVJ1bihmdW5jVG9DYWxsOiBERy5GdW5jQ2FsbCkge31cblxuICAvKipcbiAgICAqIENhbGxlZCBhZnRlciBhY3R1YWwgY29tcHV0YXRpb25zIGFyZSBtYWRlIHtAbGluayBydW59LlxuICAgICogQHBhcmFtIHJ1bkZ1bmMgRnVuY0NhbGwgb2JqZWN0IGFmdGVyIGNhbGwgbWV0aG9kIHtAc2VlIERHLkZ1bmNDYWxsLmNhbGwoKX1cbiAgICAqIEBzdGFiaWxpdHkgRXhwZXJpbWVudGFsXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgb25BZnRlclJ1bihydW5GdW5jOiBERy5GdW5jQ2FsbCkge31cblxuICBwdWJsaWMgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5mdW5jQ2FsbCkgdGhyb3cgbmV3IEVycm9yKCdUaGUgY29ycmVzcG9kaW5nIGZ1bmN0aW9uIGlzIG5vdCBzcGVjaWZpZWQnKTtcblxuICAgIGF3YWl0IHRoaXMub25CZWZvcmVSdW4odGhpcy5mdW5jQ2FsbCk7XG4gICAgY29uc3QgcGkgPSBERy5UYXNrQmFyUHJvZ3Jlc3NJbmRpY2F0b3IuY3JlYXRlKCdDYWxjdWxhdGluZy4uLicpO1xuICAgIHRoaXMuZnVuY0NhbGwubmV3SWQoKTtcbiAgICBhd2FpdCB0aGlzLmZ1bmNDYWxsLmNhbGwoKTsgLy8gbXV0YXRlcyB0aGUgZnVuY0NhbGwgZmllbGRcbiAgICBwaS5jbG9zZSgpO1xuICAgIGF3YWl0IHRoaXMub25BZnRlclJ1bih0aGlzLmZ1bmNDYWxsKTtcblxuICAgIHRoaXMubGFzdENhbGwgPSBhd2FpdCB0aGlzLnNhdmVSdW4odGhpcy5mdW5jQ2FsbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGlzdG9yeVJvb3Q6IEhUTUxEaXZFbGVtZW50ID0gdWkuZGl2VihbXSwge3N0eWxlOiB7J2p1c3RpZnktY29udGVudCc6ICdjZW50ZXInfX0pO1xuXG4gIHByb3RlY3RlZCBkZWZhdWx0RXhwb3J0RmlsZW5hbWUgPSAoZm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5uYW1lfSAtICR7bmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpfS4ke3RoaXMuZXhwb3J0Q29uZmlnIS5zdXBwb3J0ZWRFeHRlbnNpb25zW2Zvcm1hdF19YDtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEV4dGVuc2lvbnMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdFeGNlbCc6ICd4bHN4J1xuICAgIH07XG4gIH07XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRTdXBwb3J0ZWRFeHBvcnRGb3JtYXRzID0gKCkgPT4ge1xuICAgIHJldHVybiBbJ0V4Y2VsJ107XG4gIH07XG59XG4iXX0=
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZ1bmN0aW9uLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsZ0NBQWdDO0FBQ2hDLDRCQUE0QjtBQUM1QixPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXJEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7SUFDbkMsT0FBTyxDQUFDLE1BQVcsRUFBRSxVQUFrQixFQUFFLFVBQThCLEVBQUUsRUFBRTtRQUN6RSxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRWxDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBZSxHQUFHLElBQVc7O2dCQUM5QyxJQUFJO29CQUNGLE9BQU8sTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2lCQUMzQztnQkFBQyxPQUFPLEdBQVEsRUFBRTtvQkFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUUsR0FBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN6QyxNQUFNLEdBQUcsQ0FBQztpQkFDWDtZQUNILENBQUM7U0FBQSxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFnQixZQUFhLFNBQVEsRUFBRSxDQUFDLFFBQVE7SUFLcEQsWUFBWSxRQUFzQjtRQUNoQyxLQUFLLEVBQUUsQ0FBQztRQUhBLFVBQUssR0FBVyxVQUFVLENBQUM7UUFxRHJDOztVQUVFO1FB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bkIsQ0FBQztLQUFBO0lBRUQ7Ozs7TUFJRTtJQUNXLFdBQVcsQ0FBQyxVQUF1Qjs4REFBRyxDQUFDO0tBQUE7SUFFcEQ7Ozs7T0FJRztJQUNVLFVBQVUsQ0FBQyxPQUFvQjs4REFBRyxDQUFDO0tBQUE7SUFFbkMsR0FBRzs7WUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBRWxGLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsNkJBQTZCO1lBQ3pELEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELENBQUM7S0FBQTtDQWlCRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHtoaXN0b3J5VXRpbHN9IGZyb20gJy4vaGlzdG9yeS11dGlscyc7XG5pbXBvcnQge1VpVXRpbHN9IGZyb20gJy4vc2hhcmVkLWNvbXBvbmVudHMvdWktdXRpbHMnO1xuXG4vKipcbiAgICogRGVjb3JhdG9yIHRvIHBhc3MgYWxsIHRocm93biBlcnJvcnMgdG8gZ3Jvay5zaGVsbC5lcnJvclxuICAgKiBAcmV0dXJucyBUaGUgYWN0dWFsIGZ1bmNjYWxsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmlld1xuICAgKiBAc3RhYmlsaXR5IEV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY29uc3QgcGFzc0Vycm9yVG9TaGVsbCA9ICgpID0+IHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgbWVtYmVyTmFtZTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbCA9IGRlc2NyaXB0b3IudmFsdWU7XG5cbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24oLi4uYXJnczogYW55W10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBvcmlnaW5hbC5jYWxsKHRoaXMsIC4uLmFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgZ3Jvay5zaGVsbC5lcnJvcigoZXJyIGFzIEVycm9yKS5tZXNzYWdlKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH07XG4gIH07XG59O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRnVuY3Rpb25WaWV3IGV4dGVuZHMgREcuVmlld0Jhc2Uge1xuICBwcm90ZWN0ZWQgX2Z1bmNDYWxsPzogREcuRnVuY0NhbGw7XG4gIHByb3RlY3RlZCBfbGFzdENhbGw/OiBERy5GdW5jQ2FsbDtcbiAgcHJvdGVjdGVkIF90eXBlOiBzdHJpbmcgPSAnZnVuY3Rpb24nO1xuXG4gIGNvbnN0cnVjdG9yKGZ1bmNDYWxsPzogREcuRnVuY0NhbGwpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYm94ID0gdHJ1ZTtcblxuICAgIGlmICghZnVuY0NhbGwpIHJldHVybjtcbiAgICB0aGlzLm5hbWUgPSBmdW5jQ2FsbC5mdW5jLmZyaWVuZGx5TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBmdW5jdGlvbiBjYWxsIG9mIHRoZSB2aWV3XG4gICAqIEByZXR1cm5zIFRoZSBhY3R1YWwgZnVuY2NhbGwgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3XG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGdldCBmdW5jQ2FsbCgpOiBERy5GdW5jQ2FsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2Z1bmNDYWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBGdW5jIG9mIHRoZSB2aWV3XG4gICAqIEByZXR1cm5zIFRoZSBhY3R1YWwgZnVuYyBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZXdcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBnZXQgZnVuYygpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jQ2FsbD8uZnVuYztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGF0YSBvZiBsYXN0IGNhbGwgb2YgYXNzb2NpYXRlZCBmdW5jdGlvblxuICAgKiBAcmV0dXJucyBUaGUgYWN0dWFsIGZ1bmMgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3XG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgZ2V0IGxhc3RDYWxsKCkge1xuICAgIHJldHVybiB0aGlzLl9sYXN0Q2FsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGF0YSBvZiBsYXN0IGNhbGwgb2YgYXNzb2NpYXRlZCBmdW5jdGlvblxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHNldCBsYXN0Q2FsbChsYXN0Q2FsbDogREcuRnVuY0NhbGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9sYXN0Q2FsbCA9IGxhc3RDYWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFZpZXcgdHlwZVxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHB1YmxpYyBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG5cbiAgLyoqIEV4cG9ydCBvcHRpb25zLiBDb3VsZCBiZSBvdmVycmlkZW4gcGFydGlhbGx5LCB1c2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIGVhY2ggb3B0aW9uLlxuICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgKi9cbiAgZXhwb3J0Q29uZmlnOiB7XG4gICAgLyoqIE92ZXJyaWRlIHRvIHByb3ZpZGUgY3VzdG9tIGV4cG9ydCBsb2dpYy5cbiAgICAgICpcbiAgICAgICogIERlZmF1bHQgaW1wbGVtZW50YXRpb24ge0BsaW5rIGRlZmF1bHRFeHBvcnR9IGhlYXZpbHkgcmVsaWVzIG9uIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHtAbGluayBidWlsZElPfS5cbiAgICAgICogQHJldHVybnMgQmxvYiB3aXRoIGRhdGEgdG8gYmUgZXhwb3J0ZWQgaW50byB0aGUgZmlsZS5cbiAgICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgICAqL1xuICAgIGV4cG9ydDogKChmb3JtYXQ6IHN0cmluZykgPT4gUHJvbWlzZTxCbG9iPik7XG5cblxuICAgIC8qKiBGaWxlbmFtZSBmb3IgZXhwb3J0ZWQgZmlsZXMuIE92ZXJyaWRlIGZvciBjdXN0b20gZmlsZW5hbWVzLlxuICAgICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIHtAbGluayBkZWZhdWx0RXhwb3J0RmlsZW5hbWV9XG4gICAgICAqIEBwYXJhbSBmb3JtYXQgRm9ybWF0IG5hbWUgdG8gYmUgZXhwb3J0ZWRcbiAgICAgICogQHJldHVybnMgVGhlIGFjdHVhbCBmaWxlbmFtZSB0byBiZSB1c2VkIGZvciB0aGUgZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gICAgKi9cbiAgICBmaWxlbmFtZTogKChmb3JtYXQ6IHN0cmluZykgPT4gc3RyaW5nKTtcblxuICAgIC8qKiBPdmVycmlkZSB0byBwcm92aWRlIGN1c3RvbSBsaXN0IG9mIHN1cHBvcnRlZCBleHBvcnQgZm9ybWF0cy5cbiAgICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIHtAbGluayBkZWZhdWx0U3VwcG9ydGVkRXhwb3J0Rm9ybWF0c31cbiAgICAgKiBUaGVzZSBmb3JtYXRzIGFyZSBhdmFpbGFibGUgdW5kZXIgdGhlIFwiRXhwb3J0XCIgcG9wdXAgb24gdGhlIHJpYmJvbiBwYW5lbC5cbiAgICAgKiBAcmV0dXJucyBUaGUgYXJyYXkgb2YgZm9ybWF0cyBhdmFpbGFibGUgZm9yIHRoZSBleHBvcnQuXG4gICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgICAqL1xuICAgIHN1cHBvcnRlZEZvcm1hdHM6IHN0cmluZ1tdO1xuXG4gICAgLyoqIE92ZXJyaWRlIHRvIHByb3ZpZGUgY3VzdG9tIGZpbGUgZXh0ZW5zaW9ucyBmb3IgZXhwb3J0ZWQgZm9ybWF0cy5cbiAgICAgICAqIERlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMge0BsaW5rIGRlZmF1bHRTdXBwb3J0ZWRFeHBvcnRFeHRlbnNpb25zfVxuICAgICAgICogVGhlc2UgZXh0ZW5zaW9ucyBhcmUgdXNlZCBpbiBmaWxlbmFtZXMge0BsaW5rIGV4cG9ydEZpbGVuYW1lfS5cbiAgICAgICAqIEByZXR1cm5zIFRoZSBtYXBwaW5nIGJldHdlZW4gc3VwcG9ydGVkIGV4cG9ydCBmb3JtYXRzIGFuZCB0aGVpciBleHRlbnNpb25zLlxuICAgICAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAgICAgKi9cbiAgICBzdXBwb3J0ZWRFeHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICB9IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIExpbmsgRnVuY0NhbGwgdG8gdGhlIHZpZXdcbiAgICogQHBhcmFtIGZ1bmNDYWxsIFRoZSBhY3R1YWwgZnVuY2NhbGwgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3XG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGxpbmtGdW5jY2FsbChmdW5jQ2FsbDogREcuRnVuY0NhbGwpIHtcbiAgICBjb25zdCBpc1ByZXZpb3VzSGlzdG9yaWNhbCA9IHRoaXMuX2Z1bmNDYWxsPy5vcHRpb25zWydpc0hpc3RvcmljYWwnXTtcbiAgICB0aGlzLl9mdW5jQ2FsbCA9IGZ1bmNDYWxsO1xuXG4gICAgaWYgKGZ1bmNDYWxsLm9wdGlvbnNbJ2lzSGlzdG9yaWNhbCddKSB7XG4gICAgICBpZiAoIWlzUHJldmlvdXNIaXN0b3JpY2FsKVxuICAgICAgICB0aGlzLm5hbWUgPSBgJHt0aGlzLm5hbWV9IOKAlCAke2Z1bmNDYWxsLm9wdGlvbnNbJ3RpdGxlJ10gPz8gbmV3IERhdGUoZnVuY0NhbGwuc3RhcnRlZC50b1N0cmluZygpKS50b0xvY2FsZVN0cmluZygnZW4tdXMnLCB7bW9udGg6ICdzaG9ydCcsIGRheTogJ251bWVyaWMnLCBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJ251bWVyaWMnfSl9YDtcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy5uYW1lID0gYCR7dGhpcy5uYW1lLnN1YnN0cmluZygwLCB0aGlzLm5hbWUuaW5kZXhPZignIOKAlCAnKSl9IOKAlCAke2Z1bmNDYWxsLm9wdGlvbnNbJ3RpdGxlJ10gPz8gbmV3IERhdGUoZnVuY0NhbGwuc3RhcnRlZC50b1N0cmluZygpKS50b0xvY2FsZVN0cmluZygnZW4tdXMnLCB7bW9udGg6ICdzaG9ydCcsIGRheTogJ251bWVyaWMnLCBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJ251bWVyaWMnfSl9YDtcblxuXG4gICAgICAvLyBGSVggTUU6IHZpZXcgbmFtZSBkb2VzIG5vdCBjaGFuZ2UgaW4gbW9kZWxzXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYuZDQtcmliYm9uLW5hbWUnKT8ucmVwbGFjZUNoaWxkcmVuKHVpLnNwYW4oW3RoaXMubmFtZV0pKTtcbiAgICAgIHRoaXMucGF0aCA9IGA/aWQ9JHt0aGlzLl9mdW5jQ2FsbC5pZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhdGggPSBgYDtcblxuICAgICAgdGhpcy5uYW1lID0gYCR7dGhpcy5uYW1lLnN1YnN0cmluZygwLCAodGhpcy5uYW1lLmluZGV4T2YoJyDigJQgJykgPiAwKSA/IHRoaXMubmFtZS5pbmRleE9mKCcg4oCUICcpIDogdW5kZWZpbmVkKX1gO1xuICAgIH1cbiAgICB0aGlzLmJ1aWxkUmliYm9uUGFuZWxzKCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGZvciBjdXN0b20gbG9naWMgdGhhdCBjb3VsZCBub3QgYmUgcGxhY2VkIGluIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICogQW55IGFzeW5jIG1ldGhvZHMgYW5kIG1vc3Qgb2YgdGhlIGxvZ2ljIHNob3VsZCBiZSBwbGFjZWQgaGVyZS5cbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgaW5pdCgpIHt9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRvIGNyZWF0ZSBhIGZ1bGx5IGN1c3RvbSBVSSBpbmNsdWRpbmcgcmliYm9uIG1lbnVzIGFuZCBwYW5lbHNcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYnVpbGQoKTogdm9pZCB7XG4gICAgdWkuZW1wdHkodGhpcy5yb290KTtcbiAgICB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5idWlsZElPKCkpO1xuXG4gICAgdGhpcy5idWlsZEhpc3RvcnlCbG9jaygpO1xuICAgIHRoaXMuYnVpbGRSaWJib25NZW51KCk7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgdG8gY3JlYXRlIGEgY3VzdG9tIGlucHV0LW91dHB1dCBibG9ja1xuICAgKiBAcmV0dXJucyBUaGUgSFRNTEVsZW1lbnQgd2l0aCB3aG9sZSBVSSBleGNsdWRpbmcgcmliYm9uIG1lbnVzIGFuZCBwYW5lbHNcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYnVpbGRJTygpOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgdG8gY3JlYXRlIGEgY3VzdG9tIGhpc3RvcmljYWwgcnVucyBjb250cm9sLlxuICAgKiBAcmV0dXJucyBUaGUgSFRNTEVsZW1lbnQgd2l0aCBoaXN0b3J5IGJsb2NrIFVJXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGJ1aWxkSGlzdG9yeUJsb2NrKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBuZXdIaXN0b3J5QmxvY2sgPSBVaVV0aWxzLmhpc3RvcnlQYW5lbCh0aGlzLmZ1bmMhKTtcblxuICAgIG5ld0hpc3RvcnlCbG9jay5vblJ1bkNob3Nlbi5zdWJzY3JpYmUoYXN5bmMgKGlkKSA9PiB0aGlzLmxpbmtGdW5jY2FsbChhd2FpdCB0aGlzLmxvYWRSdW4oaWQpKSk7XG5cbiAgICB1aS5lbXB0eSh0aGlzLmhpc3RvcnlSb290KTtcbiAgICB0aGlzLmhpc3RvcnlSb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdqdXN0aWZ5LWNvbnRlbnQnKTtcbiAgICB0aGlzLmhpc3RvcnlSb290LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIHRoaXMuaGlzdG9yeVJvb3QuYXBwZW5kKG5ld0hpc3RvcnlCbG9jay5yb290KTtcbiAgICByZXR1cm4gbmV3SGlzdG9yeUJsb2NrLnJvb3Q7XG4gIH1cblxuICAvKipcbiAgICogTG9va3MgZm9yIHtAbGluayBzdXBwb3J0ZWRFeHBvcnRGb3JtYXRzfSBtZW1iZXJzIGFuZCBjcmVhdGVzIHJpYmJvbiBwYW5lbFxuICAgKiBAcmV0dXJucyBUaGUgSFRNTEVsZW1lbnRzIG9mIHJpYmJvblBhbmVsc1xuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIGJ1aWxkUmliYm9uUGFuZWxzKCk6IEhUTUxFbGVtZW50W11bXSB7XG4gICAgY29uc3QgbmV3UmliYm9uUGFuZWxzOiBIVE1MRWxlbWVudFtdW10gPSBbXG4gICAgICBbLi4uKHRoaXMuZXhwb3J0Q29uZmlnICYmIHRoaXMuZXhwb3J0Q29uZmlnLnN1cHBvcnRlZEZvcm1hdHMubGVuZ3RoID4gMCkgPyBbdWkuZGl2SChbXG4gICAgICAgIHVpLmNvbWJvUG9wdXAoXG4gICAgICAgICAgdWkuaWNvbkZBKCdhcnJvdy10by1ib3R0b20nKSxcbiAgICAgICAgICB0aGlzLmV4cG9ydENvbmZpZy5zdXBwb3J0ZWRGb3JtYXRzLFxuICAgICAgICAgIGFzeW5jIChmb3JtYXQ6IHN0cmluZykgPT4gREcuVXRpbHMuZG93bmxvYWQodGhpcy5leHBvcnRDb25maWchLmZpbGVuYW1lKGZvcm1hdCksIGF3YWl0IHRoaXMuZXhwb3J0Q29uZmlnIS5leHBvcnQoZm9ybWF0KSkpLFxuICAgICAgXSldOiBbXVxuICAgICAgXV07XG5cbiAgICBpZiAodGhpcy5mdW5jPy5pZCkge1xuICAgICAgY29uc3QgaGlzdG9yeUJ1dHRvbiA9IHVpLmljb25GQSgnaGlzdG9yeScsICgpID0+IHtcbiAgICAgICAgZ3Jvay5zaGVsbC53aW5kb3dzLnNob3dQcm9wZXJ0aWVzID0gIWdyb2suc2hlbGwud2luZG93cy5zaG93UHJvcGVydGllcztcbiAgICAgICAgaGlzdG9yeUJ1dHRvbi5jbGFzc0xpc3QudG9nZ2xlKCdkNC1jdXJyZW50Jyk7XG4gICAgICAgIGdyb2suc2hlbGwubyA9IHRoaXMuaGlzdG9yeVJvb3Q7XG4gICAgICB9KTtcblxuICAgICAgaGlzdG9yeUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdkNC10b2dnbGUtYnV0dG9uJyk7XG4gICAgICBpZiAoZ3Jvay5zaGVsbC53aW5kb3dzLnNob3dQcm9wZXJ0aWVzKSBoaXN0b3J5QnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2Q0LWN1cnJlbnQnKTtcblxuICAgICAgbmV3UmliYm9uUGFuZWxzLnB1c2goW1xuICAgICAgICBoaXN0b3J5QnV0dG9uXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFJpYmJvblBhbmVscyhuZXdSaWJib25QYW5lbHMpO1xuICAgIHJldHVybiBuZXdSaWJib25QYW5lbHM7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgdG8gY3JlYXRlIGEgY3VzdG9tIHJpYmJvbiBtZW51IG9uIHRoZSB0b3AuXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGJ1aWxkUmliYm9uTWVudSgpIHtcblxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgc2F2aW5nIHRoZSBGVW5jQ2FsbCByZXN1bHRzIHRvIHRoZSBoaXN0b3JpY2FsIHJlc3VsdHMsIHJldHVybnMgdGhlIHNhdmVkIGNhbGwuIFNlZSBhbHNvIHtAbGluayBzYXZlUnVufS5cbiAgICogQHBhcmFtIGNhbGxUb1NhdmUgRnVuY0NhbGwgb2JqZWN0IHRvIHNhdmVcbiAgICogQHJldHVybnMgU2F2ZWQgRnVuY0NhbGxcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgb25CZWZvcmVTYXZlUnVuKGNhbGxUb1NhdmU6IERHLkZ1bmNDYWxsKSB7IH1cblxuICAvKipcbiAgICogU2F2ZXMgdGhlIGNvbXB1dGF0aW9uIHJlc3VsdHMgdG8gdGhlIGhpc3RvcmljYWwgcmVzdWx0cywgcmV0dXJucyB0aGUgc2F2ZWQgY2FsbC4gU2VlIGFsc28ge0BsaW5rIHNhdmVSdW59LlxuICAgKiBAcGFyYW0gc2F2ZWRDYWxsIEZ1bmNDYWxsIG9iamVjdCB0byBzYXZlXG4gICAqIEByZXR1cm5zIFNhdmVkIEZ1bmNDYWxsXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIG9uQWZ0ZXJTYXZlUnVuKHNhdmVkQ2FsbDogREcuRnVuY0NhbGwpIHsgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgY29tcHV0YXRpb24gcmVzdWx0cyB0byB0aGUgaGlzdG9yaWNhbCByZXN1bHRzLCByZXR1cm5zIHRoZSBzYXZlZCBjYWxsLiBTZWUgYWxzbyB7QGxpbmsgbG9hZFJ1bn0uXG4gICAqIEBwYXJhbSBjYWxsVG9TYXZlIEZ1bmNDYWxsIG9iamVjdCB0byBzYXZlXG4gICAqIEByZXR1cm5zIFNhdmVkIEZ1bmNDYWxsXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIHNhdmVSdW4oY2FsbFRvU2F2ZTogREcuRnVuY0NhbGwpOiBQcm9taXNlPERHLkZ1bmNDYWxsPiB7XG4gICAgYXdhaXQgdGhpcy5vbkJlZm9yZVNhdmVSdW4oY2FsbFRvU2F2ZSk7XG4gICAgY29uc3Qgc2F2ZWRDYWxsID0gYXdhaXQgaGlzdG9yeVV0aWxzLnNhdmVSdW4oY2FsbFRvU2F2ZSk7XG4gICAgc2F2ZWRDYWxsLm9wdGlvbnNbJ2lzSGlzdG9yaWNhbCddID0gZmFsc2U7XG4gICAgdGhpcy5saW5rRnVuY2NhbGwoc2F2ZWRDYWxsKTtcbiAgICB0aGlzLmJ1aWxkSGlzdG9yeUJsb2NrKCk7XG4gICAgdGhpcy5wYXRoID0gYD9pZD0ke3NhdmVkQ2FsbC5pZH1gO1xuICAgIGF3YWl0IHRoaXMub25BZnRlclNhdmVSdW4oc2F2ZWRDYWxsKTtcbiAgICByZXR1cm4gc2F2ZWRDYWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIGNvbXB1dGF0aW9uIHJlc3VsdHMgZnJvbSBoaXN0b3J5LCByZXR1cm5zIGl0cyBpZC4gU2VlIGFsc28ge0BsaW5rIGxvYWRSdW59LlxuICAgKiBAcGFyYW0gY2FsbFRvRGVsZXRlIEZ1bmNDYWxsIG9iamVjdCB0byBiZSBkZWxldGVkXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIG9uQmVmb3JlRGVsZXRlUnVuKGNhbGxUb0RlbGV0ZTogREcuRnVuY0NhbGwpIHsgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZGVsZXRpbmcgdGhlIGNvbXB1dGF0aW9uIHJlc3VsdHMgZnJvbSBoaXN0b3J5LCByZXR1cm5zIGl0cyBpZC4gU2VlIGFsc28ge0BsaW5rIGxvYWRSdW59LlxuICAgKiBAcGFyYW0gZGVsZXRlZENhbGwgZGVsZXRlZCBGdW5jQ2FsbCB2YWx1ZVxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG4gIHB1YmxpYyBhc3luYyBvbkFmdGVyRGVsZXRlUnVuKGRlbGV0ZWRDYWxsOiBERy5GdW5jQ2FsbCkgeyB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgdGhlIGNvbXB1dGF0aW9uIHJlc3VsdHMgZnJvbSBoaXN0b3J5LCByZXR1cm5zIGl0cyBpZC4gU2VlIGFsc28ge0BsaW5rIGxvYWRSdW59LlxuICAgKiBAcGFyYW0gY2FsbFRvRGVsZXRlIEZ1bmNDYWxsIG9iamVjdCB0byBkZWxldGVcbiAgICogQHJldHVybnMgSUQgb2YgZGVsZXRlZCBoaXN0b3JpY2FsIHJ1blxuICAgKiBAc3RhYmlsaXR5IFN0YWJsZVxuICovXG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVJ1bihjYWxsVG9EZWxldGU6IERHLkZ1bmNDYWxsKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBhd2FpdCB0aGlzLm9uQmVmb3JlRGVsZXRlUnVuKGNhbGxUb0RlbGV0ZSk7XG4gICAgYXdhaXQgaGlzdG9yeVV0aWxzLmRlbGV0ZVJ1bihjYWxsVG9EZWxldGUpO1xuICAgIGF3YWl0IHRoaXMub25BZnRlckRlbGV0ZVJ1bihjYWxsVG9EZWxldGUpO1xuICAgIHJldHVybiBjYWxsVG9EZWxldGUuaWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBmZXRjaGluZyB0aGUgaGlzdG9yaWNhbCBydW4gZGF0YSBpbiB7QGxpbmsgbG9hZFJ1bn0uXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIG9uQmVmb3JlTG9hZFJ1bigpIHt9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBmZXRjaGluZyB0aGUgaGlzdG9yaWNhbCBydW4gZGF0YSBpbiB7QGxpbmsgbG9hZFJ1bn0uXG4gICAqIEBwYXJhbSBmdW5jQ2FsbCBGdW5jQ2FsbCBmZXRjaGVkIGZyb20gc2VydmVyIGR1cmluZyB7QGxpbmsgbG9hZFJ1bn1cbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgb25BZnRlckxvYWRSdW4oZnVuY0NhbGw6IERHLkZ1bmNDYWxsKSB7fVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgc3BlY2lmaWVkIGhpc3RvcmljYWwgcnVuLiBTZWUgYWxzbyB7QGxpbmsgc2F2ZVJ1bn0uXG4gICAqIEBwYXJhbSBmdW5jQ2FsbElkIElEIG9mIEZ1bmNDYWxsIHRvIGxvb2sgZm9yLiBHZXQgaXQgdXNpbmcge0BzZWUgZnVuY0NhbGwuaWR9IGZpZWxkXG4gICAqIEByZXR1cm5zIEZ1bmNDYWxsIGF1Z2VtZW50ZWQgd2l0aCBpbnB1dHMnIGFuZCBvdXRwdXRzJyB2YWx1ZXNcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuXG4gIHB1YmxpYyBhc3luYyBsb2FkUnVuKGZ1bmNDYWxsSWQ6IHN0cmluZyk6IFByb21pc2U8REcuRnVuY0NhbGw+IHtcbiAgICBhd2FpdCB0aGlzLm9uQmVmb3JlTG9hZFJ1bigpO1xuICAgIGNvbnN0IHB1bGxlZFJ1biA9IGF3YWl0IGhpc3RvcnlVdGlscy5sb2FkUnVuKGZ1bmNDYWxsSWQpO1xuICAgIGF3YWl0IHRoaXMub25BZnRlckxvYWRSdW4ocHVsbGVkUnVuKTtcbiAgICByZXR1cm4gcHVsbGVkUnVuO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgYWN0dWFsIGNvbXB1dGF0aW9ucyBhcmUgbWFkZSB7QGxpbmsgcnVufS5cbiAgICogQHBhcmFtIGZ1bmNUb0NhbGwgRnVuY0NhbGwgb2JqZWN0IHRvIGJlIGNhbGxlZCB7QHNlZSBERy5GdW5jQ2FsbC5jYWxsKCl9XG4gICAqIEBzdGFiaWxpdHkgRXhwZXJpbWVudGFsXG4gICovXG4gIHB1YmxpYyBhc3luYyBvbkJlZm9yZVJ1bihmdW5jVG9DYWxsOiBERy5GdW5jQ2FsbCkge31cblxuICAvKipcbiAgICAqIENhbGxlZCBhZnRlciBhY3R1YWwgY29tcHV0YXRpb25zIGFyZSBtYWRlIHtAbGluayBydW59LlxuICAgICogQHBhcmFtIHJ1bkZ1bmMgRnVuY0NhbGwgb2JqZWN0IGFmdGVyIGNhbGwgbWV0aG9kIHtAc2VlIERHLkZ1bmNDYWxsLmNhbGwoKX1cbiAgICAqIEBzdGFiaWxpdHkgRXhwZXJpbWVudGFsXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgb25BZnRlclJ1bihydW5GdW5jOiBERy5GdW5jQ2FsbCkge31cblxuICBwdWJsaWMgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5mdW5jQ2FsbCkgdGhyb3cgbmV3IEVycm9yKCdUaGUgY29ycmVzcG9kaW5nIGZ1bmN0aW9uIGlzIG5vdCBzcGVjaWZpZWQnKTtcblxuICAgIGF3YWl0IHRoaXMub25CZWZvcmVSdW4odGhpcy5mdW5jQ2FsbCk7XG4gICAgY29uc3QgcGkgPSBERy5UYXNrQmFyUHJvZ3Jlc3NJbmRpY2F0b3IuY3JlYXRlKCdDYWxjdWxhdGluZy4uLicpO1xuICAgIHRoaXMuZnVuY0NhbGwubmV3SWQoKTtcbiAgICBhd2FpdCB0aGlzLmZ1bmNDYWxsLmNhbGwoKTsgLy8gbXV0YXRlcyB0aGUgZnVuY0NhbGwgZmllbGRcbiAgICBwaS5jbG9zZSgpO1xuICAgIGF3YWl0IHRoaXMub25BZnRlclJ1bih0aGlzLmZ1bmNDYWxsKTtcblxuICAgIHRoaXMubGFzdENhbGwgPSBhd2FpdCB0aGlzLnNhdmVSdW4odGhpcy5mdW5jQ2FsbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGlzdG9yeVJvb3Q6IEhUTUxEaXZFbGVtZW50ID0gdWkuZGl2VihbXSwge3N0eWxlOiB7J2p1c3RpZnktY29udGVudCc6ICdjZW50ZXInfX0pO1xuXG4gIHByb3RlY3RlZCBkZWZhdWx0RXhwb3J0RmlsZW5hbWUgPSAoZm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5uYW1lfSAtICR7bmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygnZW4tVVMnKS5yZXBsYWNlQWxsKC86fFxcLy9nLCAnLScpfS4ke3RoaXMuZXhwb3J0Q29uZmlnIS5zdXBwb3J0ZWRFeHRlbnNpb25zW2Zvcm1hdF19YDtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEV4dGVuc2lvbnM6ICgpID0+IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdFeGNlbCc6ICd4bHN4J1xuICAgIH07XG4gIH07XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRTdXBwb3J0ZWRFeHBvcnRGb3JtYXRzID0gKCkgPT4ge1xuICAgIHJldHVybiBbJ0V4Y2VsJ107XG4gIH07XG59XG4iXX0=
|
package/src/history-utils.d.ts
CHANGED
|
@@ -7,6 +7,10 @@ declare type FilterOptions = {
|
|
|
7
7
|
isShared?: boolean;
|
|
8
8
|
};
|
|
9
9
|
export declare namespace historyUtils {
|
|
10
|
+
function loadChildRuns(funcCallId: string, skipDfLoad?: boolean): Promise<{
|
|
11
|
+
parentRun: DG.FuncCall;
|
|
12
|
+
childRuns: DG.FuncCall[];
|
|
13
|
+
}>;
|
|
10
14
|
function loadRun(funcCallId: string, skipDfLoad?: boolean): Promise<DG.FuncCall>;
|
|
11
15
|
function saveRun(callToSave: DG.FuncCall): Promise<DG.FuncCall>;
|
|
12
16
|
function deleteRun(callToDelete: DG.FuncCall): Promise<void>;
|
|
@@ -27,10 +31,13 @@ export declare namespace historyUtils {
|
|
|
27
31
|
/**
|
|
28
32
|
* Loads all the function call of this function.
|
|
29
33
|
* Designed to pull hstorical runs in fast manner and the call {@link loadRun} with specified run ID.
|
|
30
|
-
* WARNING: FuncCall inputs/outputs fields are not included
|
|
34
|
+
* WARNING: FuncCall inputs/outputs fields are not included by default. Use {@link includedFields} to specify fields to load.
|
|
31
35
|
* @param funcName Name of Func which calls we are looking for. Get it using {@link func.name} field
|
|
36
|
+
* @param filterOptions Struct containing filtering options. These options will be passed as valid filtering string to a request.
|
|
37
|
+
* @param listOptions Struct containing listing options.
|
|
38
|
+
* @param includedFields List of fields to include into response. See {@link DG.FuncCall} struct to see possible values. E.g., 'inputs' or 'outputs'
|
|
32
39
|
* @return Promise on array of FuncCalls corresponding to the passed Func ID
|
|
33
|
-
* @stability
|
|
40
|
+
* @stability Stable
|
|
34
41
|
*/
|
|
35
42
|
function pullRunsByName(funcName: string, filterOptions?: FilterOptions[], listOptions?: {
|
|
36
43
|
pageSize?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-utils.d.ts","sourceRoot":"","sources":["history-utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtC,aAAK,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,CAAC;AAE5I,aAAK,aAAa,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAyBF,yBAAiB,YAAY,CAAC;IAG5B,SAAsB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,UAAQ,wBAyBnE;IAED,SAAsB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,wBAapD;IAED,SAAsB,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC,QAAQ,iBAExD;IAED;;;;;;;KAOC;IACD,SAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,aAAkB,EACjC,WAAW,GAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAM,GAC1F,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAUxB;IAED
|
|
1
|
+
{"version":3,"file":"history-utils.d.ts","sourceRoot":"","sources":["history-utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtC,aAAK,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,CAAC;AAE5I,aAAK,aAAa,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAyBF,yBAAiB,YAAY,CAAC;IAG5B,SAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,OAAO,CAAC;QAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC;QAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAA;KAAC,CAAC,CAgCvI;IAGD,SAAsB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,UAAQ,wBAyBnE;IAED,SAAsB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,wBAapD;IAED,SAAsB,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC,QAAQ,iBAExD;IAED;;;;;;;KAOC;IACD,SAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,aAAkB,EACjC,WAAW,GAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAM,GAC1F,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAUxB;IAED;;;;;;;;;;KAUC;IACD,SAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,aAAa,GAAE,aAAa,EAAO,EACnC,WAAW,GAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAM,EAC3F,cAAc,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CA2DxB;CACF"}
|
package/src/history-utils.js
CHANGED
|
@@ -37,6 +37,37 @@ const getSearchStringByPattern = (datePattern) => {
|
|
|
37
37
|
export var historyUtils;
|
|
38
38
|
(function (historyUtils) {
|
|
39
39
|
const scriptsCache = {};
|
|
40
|
+
function loadChildRuns(funcCallId, skipDfLoad = false) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const parentRun = yield grok.dapi.functions.calls.allPackageVersions().find(funcCallId);
|
|
43
|
+
const childRuns = yield grok.dapi.functions.calls.allPackageVersions()
|
|
44
|
+
.include('inputs, outputs').filter(`options.parentCallId="${funcCallId}"`).list();
|
|
45
|
+
yield Promise.all(childRuns.map((pulledRun) => __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
var _a;
|
|
47
|
+
const id = pulledRun.func.id;
|
|
48
|
+
// FIX ME: manually get script since pulledRun contains empty Func
|
|
49
|
+
const script = (_a = scriptsCache[id]) !== null && _a !== void 0 ? _a : yield grok.dapi.functions.allPackageVersions().find(id);
|
|
50
|
+
if (!scriptsCache[id])
|
|
51
|
+
scriptsCache[id] = script;
|
|
52
|
+
pulledRun.func = script;
|
|
53
|
+
pulledRun.options['isHistorical'] = true;
|
|
54
|
+
if (!skipDfLoad) {
|
|
55
|
+
const dfOutputs = wu(pulledRun.outputParams.values())
|
|
56
|
+
.filter((output) => output.property.propertyType === DG.TYPE.DATA_FRAME);
|
|
57
|
+
for (const output of dfOutputs)
|
|
58
|
+
pulledRun.outputs[output.name] = yield grok.dapi.tables.getTable(pulledRun.outputs[output.name]);
|
|
59
|
+
const dfInputs = wu(pulledRun.inputParams.values())
|
|
60
|
+
.filter((input) => input.property.propertyType === DG.TYPE.DATA_FRAME);
|
|
61
|
+
for (const input of dfInputs)
|
|
62
|
+
pulledRun.inputs[input.name] = yield grok.dapi.tables.getTable(pulledRun.inputs[input.name]);
|
|
63
|
+
}
|
|
64
|
+
return Promise.resolve();
|
|
65
|
+
})));
|
|
66
|
+
return { parentRun, childRuns };
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
historyUtils.loadChildRuns = loadChildRuns;
|
|
70
|
+
// EXPLAIN: WHY DF LOAD SKIPPING IS USEFUL
|
|
40
71
|
function loadRun(funcCallId, skipDfLoad = false) {
|
|
41
72
|
var _a;
|
|
42
73
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -108,10 +139,13 @@ export var historyUtils;
|
|
|
108
139
|
/**
|
|
109
140
|
* Loads all the function call of this function.
|
|
110
141
|
* Designed to pull hstorical runs in fast manner and the call {@link loadRun} with specified run ID.
|
|
111
|
-
* WARNING: FuncCall inputs/outputs fields are not included
|
|
142
|
+
* WARNING: FuncCall inputs/outputs fields are not included by default. Use {@link includedFields} to specify fields to load.
|
|
112
143
|
* @param funcName Name of Func which calls we are looking for. Get it using {@link func.name} field
|
|
144
|
+
* @param filterOptions Struct containing filtering options. These options will be passed as valid filtering string to a request.
|
|
145
|
+
* @param listOptions Struct containing listing options.
|
|
146
|
+
* @param includedFields List of fields to include into response. See {@link DG.FuncCall} struct to see possible values. E.g., 'inputs' or 'outputs'
|
|
113
147
|
* @return Promise on array of FuncCalls corresponding to the passed Func ID
|
|
114
|
-
* @stability
|
|
148
|
+
* @stability Stable
|
|
115
149
|
*/
|
|
116
150
|
function pullRunsByName(funcName, filterOptions = [], listOptions = {}, includedFields = []) {
|
|
117
151
|
var _a;
|
|
@@ -166,9 +200,10 @@ export var historyUtils;
|
|
|
166
200
|
pulledRun.outputs[output.name] = yield grok.dapi.tables.getTable(pulledRun.outputs[output.name]);
|
|
167
201
|
}
|
|
168
202
|
}
|
|
203
|
+
console.log(result);
|
|
169
204
|
return result;
|
|
170
205
|
});
|
|
171
206
|
}
|
|
172
207
|
historyUtils.pullRunsByName = pullRunsByName;
|
|
173
208
|
})(historyUtils || (historyUtils = {}));
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhpc3RvcnktdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsNEJBQTRCO0FBQzVCLGdDQUFnQztBQUNoQyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBRTFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBV3BCLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxXQUF3QixFQUFFLEVBQUU7SUFDNUQsUUFBUSxXQUFXLEVBQUU7UUFDckIsS0FBSyxPQUFPO1lBQ1YsT0FBTyxlQUFlLENBQUM7UUFDekIsS0FBSyxXQUFXO1lBQ2QsT0FBTyxpQ0FBaUMsQ0FBQztRQUMzQyxLQUFLLFVBQVU7WUFDYixPQUFPLEVBQUUsQ0FBQztRQUNaLEtBQUssV0FBVztZQUNkLE9BQU8saUNBQWlDLENBQUM7UUFDM0MsS0FBSyxXQUFXO1lBQ2QsT0FBTyxlQUFlLENBQUM7UUFDekIsS0FBSyxZQUFZO1lBQ2YsT0FBTyxpQ0FBaUMsQ0FBQztRQUMzQyxLQUFLLFlBQVk7WUFDZixPQUFPLGVBQWUsQ0FBQztRQUN6QixLQUFLLFdBQVc7WUFDZCxPQUFPLGlDQUFpQyxDQUFDO1FBQzNDLEtBQUssV0FBVztZQUNkLE9BQU8sZUFBZSxDQUFDO0tBQ3hCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxLQUFXLFlBQVksQ0FnSjVCO0FBaEpELFdBQWlCLFlBQVk7SUFDM0IsTUFBTSxZQUFZLEdBQUcsRUFBK0IsQ0FBQztJQUVyRCxTQUFzQixPQUFPLENBQUMsVUFBa0IsRUFBRSxVQUFVLEdBQUcsS0FBSzs7O1lBQ2xFLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO2lCQUNuRSxPQUFPLENBQUMsK0JBQStCLENBQUMs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QyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ2hHO2FBQ0Y7WUFFRCxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDaEYsS0FBSyxNQUFNLFNBQVMsSUFBSSxNQUFNLEVBQUU7b0JBQzlCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBd0IsQ0FBQzt5QkFDeEUsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMzRSxLQUFLLE1BQU0sTUFBTSxJQUFJLFNBQVM7d0JBQzVCLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ3BHO2FBQ0Y7WUFFRCxPQUFPLE1BQU0sQ0FBQzs7S0FDZjtJQTlEcUIsMkJBQWMsaUJBOERuQyxDQUFBO0FBQ0gsQ0FBQyxFQWhKZ0IsWUFBWSxLQUFaLFlBQVksUUFnSjVCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgd3UgZnJvbSAnd3UnO1xuXG50eXBlIERhdGVPcHRpb25zID0gJ0FueSB0aW1lJyB8ICdUb2RheScgfCAnWWVzdGVyZGF5JyB8ICdUaGlzIHdlZWsnIHwgJ0xhc3Qgd2VlaycgfCAnVGhpcyBtb250aCcgfCAnTGFzdCBtb250aCcgfCAnVGhpcyB5ZWFyJyB8ICdMYXN0IHllYXInO1xuXG50eXBlIEZpbHRlck9wdGlvbnMgPSB7XG4gIHRleHQ/OiBzdHJpbmcsXG4gIGRhdGU/OiBEYXRlT3B0aW9ucyxcbiAgYXV0aG9yPzogREcuVXNlcixcbiAgaXNTaGFyZWQ/OiBib29sZWFuLFxufTtcblxuY29uc3QgZ2V0U2VhcmNoU3RyaW5nQnlQYXR0ZXJuID0gKGRhdGVQYXR0ZXJuOiBEYXRlT3B0aW9ucykgPT4ge1xuICBzd2l0Y2ggKGRhdGVQYXR0ZXJuKSB7XG4gIGNhc2UgJ1RvZGF5JzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMWRgO1xuICBjYXNlICdZZXN0ZXJkYXknOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0yZCBhbmQgc3RhcnRlZCA8IC0xZGA7XG4gIGNhc2UgJ0FueSB0aW1lJzpcbiAgICByZXR1cm4gYGA7XG4gIGNhc2UgJ0xhc3QgeWVhcic6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTJ5IGFuZCBzdGFydGVkIDwgLTF5YDtcbiAgY2FzZSAnVGhpcyB5ZWFyJzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMXlgO1xuICBjYXNlICdMYXN0IG1vbnRoJzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMm0gYW5kIHN0YXJ0ZWQgPCAtMW1gO1xuICBjYXNlICdUaGlzIG1vbnRoJzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMW1gO1xuICBjYXNlICdMYXN0IHdlZWsnOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0ydyBhbmQgc3RhcnRlZCA8IC0xd2A7XG4gIGNhc2UgJ1RoaXMgd2Vlayc6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTF3YDtcbiAgfVxufTtcblxuZXhwb3J0IG5hbWVzcGFjZSBoaXN0b3J5VXRpbHMge1xuICBjb25zdCBzY3JpcHRzQ2FjaGUgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBERy5TY3JpcHQ+O1xuXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkUnVuKGZ1bmNDYWxsSWQ6IHN0cmluZywgc2tpcERmTG9hZCA9IGZhbHNlKSB7XG4gICAgY29uc3QgcHVsbGVkUnVuID0gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5jYWxscy5hbGxQYWNrYWdlVmVyc2lvbnMoKVxuICAgICAgLmluY2x1ZGUoJ2lucHV0cywgb3V0cHV0cywgc2Vzc2lvbi51c2VyJykuZmluZChmdW5jQ2FsbElkKTtcblxuICAgIGNvbnN0IGlkID0gcHVsbGVkUnVuLmZ1bmMuaWQ7XG4gICAgLy8gRklYIE1FOiBtYW51YWxseSBnZXQgc2NyaXB0IHNpbmNlIHB1bGxlZFJ1biBjb250YWlucyBlbXB0eSBGdW5jXG4gICAgY29uc3Qgc2NyaXB0ID0gc2NyaXB0c0NhY2hlW2lkXSA/PyBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmFsbFBhY2thZ2VWZXJzaW9ucygpLmZpbmQoaWQpO1xuXG4gICAgaWYgKCFzY3JpcHRzQ2FjaGVbaWRdKSBzY3JpcHRzQ2FjaGVbaWRdID0gc2NyaXB0O1xuICAgIHB1bGxlZFJ1bi5mdW5jID0gc2NyaXB0O1xuICAgIHB1bGxlZFJ1bi5vcHRpb25zWydpc0hpc3RvcmljYWwnXSA9IHRydWU7XG5cbiAgICBpZiAoIXNraXBEZkxvYWQpIHtcbiAgICAgIGNvbnN0IGRmT3V0cHV0cyA9IHd1KHB1bGxlZFJ1bi5vdXRwdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgICAuZmlsdGVyKChvdXRwdXQpID0+IG91dHB1dC5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSk7XG4gICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBkZk91dHB1dHMpXG4gICAgICAgIHB1bGxlZFJ1bi5vdXRwdXRzW291dHB1dC5uYW1lXSA9IGF3YWl0IGdyb2suZGFwaS50YWJsZXMuZ2V0VGFibGUocHVsbGVkUnVuLm91dHB1dHNbb3V0cHV0Lm5hbWVdKTtcblxuICAgICAgY29uc3QgZGZJbnB1dHMgPSB3dShwdWxsZWRSdW4uaW5wdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgICAuZmlsdGVyKChpbnB1dCkgPT4gaW5wdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgZm9yIChjb25zdCBpbnB1dCBvZiBkZklucHV0cylcbiAgICAgICAgcHVsbGVkUnVuLmlucHV0c1tpbnB1dC5uYW1lXSA9IGF3YWl0IGdyb2suZGFwaS50YWJsZXMuZ2V0VGFibGUocHVsbGVkUnVuLmlucHV0c1tpbnB1dC5uYW1lXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1bGxlZFJ1bjtcbiAgfVxuXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlUnVuKGNhbGxUb1NhdmU6IERHLkZ1bmNDYWxsKSB7XG4gICAgY29uc3QgZGZPdXRwdXRzID0gd3UoY2FsbFRvU2F2ZS5vdXRwdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIGRmT3V0cHV0cylcbiAgICAgIGF3YWl0IGdyb2suZGFwaS50YWJsZXMudXBsb2FkRGF0YUZyYW1lKGNhbGxUb1NhdmUub3V0cHV0c1tvdXRwdXQubmFtZV0pO1xuXG4gICAgY29uc3QgZGZJbnB1dHMgPSB3dShjYWxsVG9TYXZlLmlucHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgIC5maWx0ZXIoKGlucHV0KSA9PiBpbnB1dC5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSk7XG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiBkZklucHV0cylcbiAgICAgIGF3YWl0IGdyb2suZGFwaS50YWJsZXMudXBsb2FkRGF0YUZyYW1lKGNhbGxUb1NhdmUuaW5wdXRzW2lucHV0Lm5hbWVdKTtcblxuXG4gICAgcmV0dXJuIGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHMuYWxsUGFja2FnZVZlcnNpb25zKCkuc2F2ZShjYWxsVG9TYXZlKTtcbiAgfVxuXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVSdW4oY2FsbFRvRGVsZXRlOiBERy5GdW5jQ2FsbCkge1xuICAgIGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHMuYWxsUGFja2FnZVZlcnNpb25zKCkuZGVsZXRlKGNhbGxUb0RlbGV0ZSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYWxsIHRoZSBmdW5jdGlvbiBjYWxsIG9mIHRoaXMgZnVuY3Rpb24uXG4gICAqIERlc2lnbmVkIHRvIHB1bGwgaHN0b3JpY2FsIHJ1bnMgaW4gZmFzdCBtYW5uZXIgYW5kIHRoZSBjYWxsIHtAbGluayBsb2FkUnVufSB3aXRoIHNwZWNpZmllZCBydW4gSUQuXG4gICAqIFdBUk5JTkc6IEZ1bmNDYWxsIGlucHV0cy9vdXRwdXRzIGZpZWxkcyBhcmUgbm90IGluY2x1ZGVkXG4gICAqIEBwYXJhbSBmdW5jSWQgSUQgb2YgRnVuYyB3aGljaCBjYWxscyB3ZSBhcmUgbG9va2luZyBmb3IuIEdldCBpdCB1c2luZyB7QGxpbmsgZnVuYy5pZH0gZmllbGRcbiAgICogQHJldHVybiBQcm9taXNlIG9uIGFycmF5IG9mIEZ1bmNDYWxscyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXNzZWQgRnVuYyBJRFxuICAgKiBAc3RhYmlsaXR5IERlcHJlY2F0ZWQuIFNjcmlwdCBJRCBjaGFuZ2VzIHdpdGggZXZlcnkgcGFja2FnZSByZWxlYXNlLCBzbyBzZWFyY2hpbmcgYnkgSUQgaXMgdXNlbGVzcyBpbiBwcmFjdGljZS5cbiAqL1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVsbFJ1bnMoXG4gICAgZnVuY0lkOiBzdHJpbmcsXG4gICAgZmlsdGVyT3B0aW9uczogRmlsdGVyT3B0aW9ucyA9IHt9LFxuICAgIGxpc3RPcHRpb25zOiB7cGFnZVNpemU/OiBudW1iZXIsIHBhZ2VOdW1iZXI/OiBudW1iZXIsIGZpbHRlcj86IHN0cmluZywgb3JkZXI/OiBzdHJpbmd9ID0ge31cbiAgKTogUHJvbWlzZTxERy5GdW5jQ2FsbFtdPiB7XG4gICAgbGV0IGZpbHRlcmluZ1N0cmluZyA9IGBmdW5jLmlkPVwiJHtmdW5jSWR9XCJgO1xuICAgIGZpbHRlcmluZ1N0cmluZyArPSBmaWx0ZXJPcHRpb25zLmF1dGhvciA/IGAgYW5kIHNlc3Npb24udXNlci5pZD1cIiR7ZmlsdGVyT3B0aW9ucy5hdXRob3IuaWR9XCJgOicnO1xuICAgIGZpbHRlcmluZ1N0cmluZyArPSBmaWx0ZXJPcHRpb25zLmRhdGUgPyBnZXRTZWFyY2hTdHJpbmdCeVBhdHRlcm4oZmlsdGVyT3B0aW9ucy5kYXRlKTogJyc7XG4gICAgY29uc3QgZmlsdGVyID0gZ3Jvay5kYXBpLmZ1bmN0aW9ucy5jYWxsc1xuICAgICAgLmFsbFBhY2thZ2VWZXJzaW9ucygpXG4gICAgICAuZmlsdGVyKGZpbHRlcmluZ1N0cmluZylcbiAgICAgIC5pbmNsdWRlKCdzZXNzaW9uLnVzZXIsIG9wdGlvbnMnKTtcbiAgICBjb25zdCBsaXN0ID0gZmlsdGVyLmxpc3QobGlzdE9wdGlvbnMpO1xuICAgIHJldHVybiBsaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGFsbCB0aGUgZnVuY3Rpb24gY2FsbCBvZiB0aGlzIGZ1bmN0aW9uLlxuICAgKiBEZXNpZ25lZCB0byBwdWxsIGhzdG9yaWNhbCBydW5zIGluIGZhc3QgbWFubmVyIGFuZCB0aGUgY2FsbCB7QGxpbmsgbG9hZFJ1bn0gd2l0aCBzcGVjaWZpZWQgcnVuIElELlxuICAgKiBXQVJOSU5HOiBGdW5jQ2FsbCBpbnB1dHMvb3V0cHV0cyBmaWVsZHMgYXJlIG5vdCBpbmNsdWRlZFxuICAgKiBAcGFyYW0gZnVuY05hbWUgTmFtZSBvZiBGdW5jIHdoaWNoIGNhbGxzIHdlIGFyZSBsb29raW5nIGZvci4gR2V0IGl0IHVzaW5nIHtAbGluayBmdW5jLm5hbWV9IGZpZWxkXG4gICAqIEByZXR1cm4gUHJvbWlzZSBvbiBhcnJheSBvZiBGdW5jQ2FsbHMgY29ycmVzcG9uZGluZyB0byB0aGUgcGFzc2VkIEZ1bmMgSURcbiAgICogQHN0YWJpbGl0eSBFeHBlcmltZW50YWxcbiAqL1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVsbFJ1bnNCeU5hbWUoXG4gICAgZnVuY05hbWU6IHN0cmluZyxcbiAgICBmaWx0ZXJPcHRpb25zOiBGaWx0ZXJPcHRpb25zW10gPSBbXSxcbiAgICBsaXN0T3B0aW9uczoge3BhZ2VTaXplPzogbnVtYmVyLCBwYWdlTnVtYmVyPzogbnVtYmVyLCBmaWx0ZXI/OiBzdHJpbmcsIG9yZGVyPzogc3RyaW5nfSA9IHt9LFxuICAgIGluY2x1ZGVkRmllbGRzOiBzdHJpbmdbXSA9IFtdXG4gICk6IFByb21pc2U8REcuRnVuY0NhbGxbXT4ge1xuICAgIGxldCBmaWx0ZXJpbmdTdHJpbmcgPSBgYDtcbiAgICBmb3IgKGNvbnN0IGZpbHRlck9wdGlvbiBvZiBmaWx0ZXJPcHRpb25zKSB7XG4gICAgICBjb25zdCBmaWx0ZXJPcHRpb25Dcml0ZXJpYSA9IFtdIGFzIHN0cmluZ1tdO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi5hdXRob3IpIGZpbHRlck9wdGlvbkNyaXRlcmlhLnB1c2goYHNlc3Npb24udXNlci5pZD1cIiR7ZmlsdGVyT3B0aW9uLmF1dGhvci5pZH1cImApO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi5kYXRlKSBmaWx0ZXJPcHRpb25Dcml0ZXJpYS5wdXNoKGdldFNlYXJjaFN0cmluZ0J5UGF0dGVybihmaWx0ZXJPcHRpb24uZGF0ZSkpO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi5pc1NoYXJlZCkgZmlsdGVyT3B0aW9uQ3JpdGVyaWEucHVzaChgb3B0aW9ucy5pc1NoYXJlZD1cInRydWVcImApO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi50ZXh0KSB7XG4gICAgICAgIGZpbHRlck9wdGlvbkNyaXRlcmlhLnB1c2goXG4gICAgICAgICAgYCgob3B0aW9ucy50aXRsZSBsaWtlIFwiJHtmaWx0ZXJPcHRpb24udGV4dH1cIikgb3IgKG9wdGlvbnMuYW5ub3RhdGlvbiBsaWtlIFwiJHtmaWx0ZXJPcHRpb24udGV4dH1cIikpYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsdGVyT3B0aW9uU3RyaW5nID0gZmlsdGVyT3B0aW9uQ3JpdGVyaWEuam9pbignIGFuZCAnKTtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb25TdHJpbmcgIT09ICcnKSB7XG4gICAgICAgIGlmIChmaWx0ZXJpbmdTdHJpbmcgPT09ICcnKVxuICAgICAgICAgIGZpbHRlcmluZ1N0cmluZyArPSBgKCR7ZmlsdGVyT3B0aW9uU3RyaW5nfSlgO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgZmlsdGVyaW5nU3RyaW5nICs9IGAgb3IgKCR7ZmlsdGVyT3B0aW9uU3RyaW5nfSlgO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZmlsdGVyaW5nU3RyaW5nICE9PSAnJylcbiAgICAgIGZpbHRlcmluZ1N0cmluZyA9IGAgYW5kICgke2ZpbHRlcmluZ1N0cmluZ30pYDtcblxuICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzXG4gICAgICAgIC5hbGxQYWNrYWdlVmVyc2lvbnMoKVxuICAgICAgICAuZmlsdGVyKGBmdW5jLm5hbWU9XCIke2Z1bmNOYW1lfVwiJHtmaWx0ZXJpbmdTdHJpbmd9YClcbiAgICAgICAgLmluY2x1ZGUoYCR7aW5jbHVkZWRGaWVsZHMuam9pbignLCcpfWApXG4gICAgICAgIC5saXN0KGxpc3RPcHRpb25zKTtcblxuICAgIGZvciAoY29uc3QgcHVsbGVkUnVuIG9mIHJlc3VsdCkge1xuICAgICAgY29uc3QgaWQgPSBwdWxsZWRSdW4uZnVuYy5pZDtcbiAgICAgIGNvbnN0IHNjcmlwdCA9IHNjcmlwdHNDYWNoZVtpZF0gPz8gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5hbGxQYWNrYWdlVmVyc2lvbnMoKS5maW5kKGlkKTtcblxuICAgICAgaWYgKCFzY3JpcHRzQ2FjaGVbaWRdKSBzY3JpcHRzQ2FjaGVbaWRdID0gc2NyaXB0O1xuICAgICAgcHVsbGVkUnVuLmZ1bmMgPSBzY3JpcHQ7XG4gICAgfVxuXG4gICAgaWYgKGluY2x1ZGVkRmllbGRzLmluY2x1ZGVzKCdpbnB1dHMnKSB8fCBpbmNsdWRlZEZpZWxkcy5pbmNsdWRlcygnZnVuYy5wYXJhbXMnKSkge1xuICAgICAgZm9yIChjb25zdCBwdWxsZWRSdW4gb2YgcmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IGRmSW5wdXRzID0gd3UocHVsbGVkUnVuLmlucHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgICAgICAuZmlsdGVyKChpbnB1dCkgPT4gaW5wdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgICBmb3IgKGNvbnN0IGlucHV0IG9mIGRmSW5wdXRzKVxuICAgICAgICAgIHB1bGxlZFJ1bi5pbnB1dHNbaW5wdXQubmFtZV0gPSBhd2FpdCBncm9rLmRhcGkudGFibGVzLmdldFRhYmxlKHB1bGxlZFJ1bi5pbnB1dHNbaW5wdXQubmFtZV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbmNsdWRlZEZpZWxkcy5pbmNsdWRlcygnb3V0cHV0cycpIHx8IGluY2x1ZGVkRmllbGRzLmluY2x1ZGVzKCdmdW5jLnBhcmFtcycpKSB7XG4gICAgICBmb3IgKGNvbnN0IHB1bGxlZFJ1biBvZiByZXN1bHQpIHtcbiAgICAgICAgY29uc3QgZGZPdXRwdXRzID0gd3UocHVsbGVkUnVuLm91dHB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pXG4gICAgICAgICAgLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBkZk91dHB1dHMpXG4gICAgICAgICAgcHVsbGVkUnVuLm91dHB1dHNbb3V0cHV0Lm5hbWVdID0gYXdhaXQgZ3Jvay5kYXBpLnRhYmxlcy5nZXRUYWJsZShwdWxsZWRSdW4ub3V0cHV0c1tvdXRwdXQubmFtZV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhpc3RvcnktdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsNEJBQTRCO0FBQzVCLGdDQUFnQztBQUNoQyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBRTFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBV3BCLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxXQUF3QixFQUFFLEVBQUU7SUFDNUQsUUFBUSxXQUFXLEVBQUU7UUFDckIsS0FBSyxPQUFPO1lBQ1YsT0FBTyxlQUFlLENBQUM7UUFDekIsS0FBSyxXQUFXO1lBQ2QsT0FBTyxpQ0FBaUMsQ0FBQztRQUMzQyxLQUFLLFVBQVU7WUFDYixPQUFPLEVBQUUsQ0FBQztRQUNaLEtBQUssV0FBVztZQUNkLE9BQU8saUNBQWlDLENBQUM7UUFDM0MsS0FBSyxXQUFXO1lBQ2QsT0FBTyxlQUFlLENBQUM7UUFDekIsS0FBSyxZQUFZO1lBQ2YsT0FBTyxpQ0FBaUMsQ0FBQztRQUMzQyxLQUFLLFlBQVk7WUFDZixPQUFPLGVBQWUsQ0FBQztRQUN6QixLQUFLLFdBQVc7WUFDZCxPQUFPLGlDQUFpQyxDQUFDO1FBQzNDLEtBQUssV0FBVztZQUNkLE9BQU8sZUFBZSxDQUFDO0tBQ3hCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxLQUFXLFlBQVksQ0F3TDVCO0FBeExELFdBQWlCLFlBQVk7SUFDM0IsTUFBTSxZQUFZLEdBQUcsRUFBK0IsQ0FBQztJQUVyRCxTQUFzQixhQUFhLENBQUMsVUFBa0IsRUFBRSxVQUFVLEdBQUcsS0FBSzs7WUFDeEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFeEYsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUU7aUJBQ25FLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVwRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFPLFNBQVMsRUFBRSxFQUFFOztnQkFDbEQsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLGtFQUFrRTtnQkFDbEUsTUFBTSxNQUFNLEdBQUcsTUFBQSxZQUFZLENBQUMsRUFBRSxDQUFDLG1DQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRTNGLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO29CQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBRWpELFNBQVMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO2dCQUN4QixTQUFTLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFFekMsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDZixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQXdCLENBQUM7eUJBQ3hFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDM0UsS0FBSyxNQUFNLE1BQU0sSUFBSSxTQUFTO3dCQUM1QixTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUVuRyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQXdCLENBQUM7eUJBQ3RFLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDekUsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRO3dCQUMxQixTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUNoRztnQkFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7WUFFSixPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxDQUFDO1FBQ2hDLENBQUM7S0FBQTtJQWhDcUIsMEJBQWEsZ0JBZ0NsQyxDQUFBO0lBRUQsMENBQTBDO0lBQzFDLFNBQXNCLE9BQU8sQ0FBQyxVQUFrQixFQUFFLFVBQVUsR0FBRyxLQUFLOzs7WUFDbEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUU7aUJBQ25FLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUU3RCxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM3QixrRUFBa0U7WUFDbEUsTUFBTSxNQUFNLEdBQUcsTUFBQSxZQUFZLENBQUMsRUFBRSxDQUFDLG1DQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFM0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUNqRCxTQUFTLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztZQUN4QixTQUFTLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUV6QyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNmLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBd0IsQ0FBQztxQkFDeEUsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzRSxLQUFLLE1BQU0sTUFBTSxJQUFJLFNBQVM7b0JBQzVCLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBRW5HLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBd0IsQ0FBQztxQkFDdEUsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN6RSxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVE7b0JBQzFCLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDaEc7WUFFRCxPQUFPLFNBQVMsQ0FBQzs7S0FDbEI7SUF6QnFCLG9CQUFPLFVBeUI1QixDQUFBO0lBRUQsU0FBc0IsT0FBTyxDQUFDLFVBQXVCOztZQUNuRCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQXdCLENBQUM7aUJBQ3pFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzRSxLQUFLLE1BQU0sTUFBTSxJQUFJLFNBQVM7Z0JBQzVCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFMUUsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUF3QixDQUFDO2lCQUN2RSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekUsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRO2dCQUMxQixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBR3hFLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0UsQ0FBQztLQUFBO0lBYnFCLG9CQUFPLFVBYTVCLENBQUE7SUFFRCxTQUFzQixTQUFTLENBQUMsWUFBeUI7O1lBQ3ZELE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVFLENBQUM7S0FBQTtJQUZxQixzQkFBUyxZQUU5QixDQUFBO0lBRUQ7Ozs7Ozs7S0FPQztJQUNELFNBQXNCLFFBQVEsQ0FDNUIsTUFBYyxFQUNkLGdCQUErQixFQUFFLEVBQ2pDLGNBQXlGLEVBQUU7O1lBRTNGLElBQUksZUFBZSxHQUFHLFlBQVksTUFBTSxHQUFHLENBQUM7WUFDNUMsZUFBZSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFBLENBQUMsQ0FBQSxFQUFFLENBQUM7WUFDakcsZUFBZSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUs7aUJBQ3JDLGtCQUFrQixFQUFFO2lCQUNwQixNQUFNLENBQUMsZUFBZSxDQUFDO2lCQUN2QixPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNwQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztLQUFBO0lBZHFCLHFCQUFRLFdBYzdCLENBQUE7SUFFRDs7Ozs7Ozs7OztLQVVDO0lBQ0QsU0FBc0IsY0FBYyxDQUNsQyxRQUFnQixFQUNoQixnQkFBaUMsRUFBRSxFQUNuQyxjQUF5RixFQUFFLEVBQzNGLGlCQUEyQixFQUFFOzs7WUFFN0IsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO2dCQUN4QyxNQUFNLG9CQUFvQixHQUFHLEVBQWMsQ0FBQztnQkFDNUMsSUFBSSxZQUFZLENBQUMsTUFBTTtvQkFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDbEcsSUFBSSxZQUFZLENBQUMsSUFBSTtvQkFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzlGLElBQUksWUFBWSxDQUFDLFFBQVE7b0JBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7Z0JBQ2hGLElBQUksWUFBWSxDQUFDLElBQUksRUFBRTtvQkFDckIsb0JBQW9CLENBQUMsSUFBSSxDQUN2Qix5QkFBeUIsWUFBWSxDQUFDLElBQUksbUNBQW1DLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FDcEcsQ0FBQztpQkFDSDtnQkFDRCxNQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxrQkFBa0IsS0FBSyxFQUFFLEVBQUU7b0JBQzdCLElBQUksZUFBZSxLQUFLLEVBQUU7d0JBQ3hCLGVBQWUsSUFBSSxJQUFJLGtCQUFrQixHQUFHLENBQUM7O3dCQUU3QyxlQUFlLElBQUksUUFBUSxrQkFBa0IsR0FBRyxDQUFDO2lCQUNwRDthQUNGO1lBQ0QsSUFBSSxlQUFlLEtBQUssRUFBRTtnQkFDeEIsZUFBZSxHQUFHLFNBQVMsZUFBZSxHQUFHLENBQUM7WUFFaEQsTUFBTSxNQUFNLEdBQ1YsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO2lCQUM1QixrQkFBa0IsRUFBRTtpQkFDcEIsTUFBTSxDQUFDLGNBQWMsUUFBUSxJQUFJLGVBQWUsRUFBRSxDQUFDO2lCQUNuRCxPQUFPLENBQUMsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7aUJBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUV2QixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sRUFBRTtnQkFDOUIsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQUEsWUFBWSxDQUFDLEVBQUUsQ0FBQyxtQ0FBSSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUUzRixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztvQkFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUNqRCxTQUFTLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQzthQUN6QjtZQUVELElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUMvRSxLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sRUFBRTtvQkFDOUIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUF3QixDQUFDO3lCQUN0RSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3pFLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUTt3QkFDMUIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDaEc7YUFDRjtZQUVELElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNoRixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sRUFBRTtvQkFDOUIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUF3QixDQUFDO3lCQUN4RSxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzNFLEtBQUssTUFBTSxNQUFNLElBQUksU0FBUzt3QkFDNUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDcEc7YUFDRjtZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFcEIsT0FBTyxNQUFNLENBQUM7O0tBQ2Y7SUFoRXFCLDJCQUFjLGlCQWdFbkMsQ0FBQTtBQUNILENBQUMsRUF4TGdCLFlBQVksS0FBWixZQUFZLFFBd0w1QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHd1IGZyb20gJ3d1JztcblxudHlwZSBEYXRlT3B0aW9ucyA9ICdBbnkgdGltZScgfCAnVG9kYXknIHwgJ1llc3RlcmRheScgfCAnVGhpcyB3ZWVrJyB8ICdMYXN0IHdlZWsnIHwgJ1RoaXMgbW9udGgnIHwgJ0xhc3QgbW9udGgnIHwgJ1RoaXMgeWVhcicgfCAnTGFzdCB5ZWFyJztcblxudHlwZSBGaWx0ZXJPcHRpb25zID0ge1xuICB0ZXh0Pzogc3RyaW5nLFxuICBkYXRlPzogRGF0ZU9wdGlvbnMsXG4gIGF1dGhvcj86IERHLlVzZXIsXG4gIGlzU2hhcmVkPzogYm9vbGVhbixcbn07XG5cbmNvbnN0IGdldFNlYXJjaFN0cmluZ0J5UGF0dGVybiA9IChkYXRlUGF0dGVybjogRGF0ZU9wdGlvbnMpID0+IHtcbiAgc3dpdGNoIChkYXRlUGF0dGVybikge1xuICBjYXNlICdUb2RheSc6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTFkYDtcbiAgY2FzZSAnWWVzdGVyZGF5JzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMmQgYW5kIHN0YXJ0ZWQgPCAtMWRgO1xuICBjYXNlICdBbnkgdGltZSc6XG4gICAgcmV0dXJuIGBgO1xuICBjYXNlICdMYXN0IHllYXInOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0yeSBhbmQgc3RhcnRlZCA8IC0xeWA7XG4gIGNhc2UgJ1RoaXMgeWVhcic6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTF5YDtcbiAgY2FzZSAnTGFzdCBtb250aCc6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTJtIGFuZCBzdGFydGVkIDwgLTFtYDtcbiAgY2FzZSAnVGhpcyBtb250aCc6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTFtYDtcbiAgY2FzZSAnTGFzdCB3ZWVrJzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMncgYW5kIHN0YXJ0ZWQgPCAtMXdgO1xuICBjYXNlICdUaGlzIHdlZWsnOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0xd2A7XG4gIH1cbn07XG5cbmV4cG9ydCBuYW1lc3BhY2UgaGlzdG9yeVV0aWxzIHtcbiAgY29uc3Qgc2NyaXB0c0NhY2hlID0ge30gYXMgUmVjb3JkPHN0cmluZywgREcuU2NyaXB0PjtcblxuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENoaWxkUnVucyhmdW5jQ2FsbElkOiBzdHJpbmcsIHNraXBEZkxvYWQgPSBmYWxzZSk6IFByb21pc2U8e3BhcmVudFJ1bjogREcuRnVuY0NhbGwsIGNoaWxkUnVuczogREcuRnVuY0NhbGxbXX0+IHtcbiAgICBjb25zdCBwYXJlbnRSdW4gPSBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzLmFsbFBhY2thZ2VWZXJzaW9ucygpLmZpbmQoZnVuY0NhbGxJZCk7XG5cbiAgICBjb25zdCBjaGlsZFJ1bnMgPSBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzLmFsbFBhY2thZ2VWZXJzaW9ucygpXG4gICAgICAuaW5jbHVkZSgnaW5wdXRzLCBvdXRwdXRzJykuZmlsdGVyKGBvcHRpb25zLnBhcmVudENhbGxJZD1cIiR7ZnVuY0NhbGxJZH1cImApLmxpc3QoKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKGNoaWxkUnVucy5tYXAoYXN5bmMgKHB1bGxlZFJ1bikgPT4ge1xuICAgICAgY29uc3QgaWQgPSBwdWxsZWRSdW4uZnVuYy5pZDtcbiAgICAgIC8vIEZJWCBNRTogbWFudWFsbHkgZ2V0IHNjcmlwdCBzaW5jZSBwdWxsZWRSdW4gY29udGFpbnMgZW1wdHkgRnVuY1xuICAgICAgY29uc3Qgc2NyaXB0ID0gc2NyaXB0c0NhY2hlW2lkXSA/PyBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmFsbFBhY2thZ2VWZXJzaW9ucygpLmZpbmQoaWQpO1xuXG4gICAgICBpZiAoIXNjcmlwdHNDYWNoZVtpZF0pIHNjcmlwdHNDYWNoZVtpZF0gPSBzY3JpcHQ7XG5cbiAgICAgIHB1bGxlZFJ1bi5mdW5jID0gc2NyaXB0O1xuICAgICAgcHVsbGVkUnVuLm9wdGlvbnNbJ2lzSGlzdG9yaWNhbCddID0gdHJ1ZTtcblxuICAgICAgaWYgKCFza2lwRGZMb2FkKSB7XG4gICAgICAgIGNvbnN0IGRmT3V0cHV0cyA9IHd1KHB1bGxlZFJ1bi5vdXRwdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgICAgIC5maWx0ZXIoKG91dHB1dCkgPT4gb3V0cHV0LnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcbiAgICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgZGZPdXRwdXRzKVxuICAgICAgICAgIHB1bGxlZFJ1bi5vdXRwdXRzW291dHB1dC5uYW1lXSA9IGF3YWl0IGdyb2suZGFwaS50YWJsZXMuZ2V0VGFibGUocHVsbGVkUnVuLm91dHB1dHNbb3V0cHV0Lm5hbWVdKTtcblxuICAgICAgICBjb25zdCBkZklucHV0cyA9IHd1KHB1bGxlZFJ1bi5pbnB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pXG4gICAgICAgICAgLmZpbHRlcigoaW5wdXQpID0+IGlucHV0LnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcbiAgICAgICAgZm9yIChjb25zdCBpbnB1dCBvZiBkZklucHV0cylcbiAgICAgICAgICBwdWxsZWRSdW4uaW5wdXRzW2lucHV0Lm5hbWVdID0gYXdhaXQgZ3Jvay5kYXBpLnRhYmxlcy5nZXRUYWJsZShwdWxsZWRSdW4uaW5wdXRzW2lucHV0Lm5hbWVdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0pKTtcblxuICAgIHJldHVybiB7cGFyZW50UnVuLCBjaGlsZFJ1bnN9O1xuICB9XG5cbiAgLy8gRVhQTEFJTjogV0hZIERGIExPQUQgU0tJUFBJTkcgSVMgVVNFRlVMXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkUnVuKGZ1bmNDYWxsSWQ6IHN0cmluZywgc2tpcERmTG9hZCA9IGZhbHNlKSB7XG4gICAgY29uc3QgcHVsbGVkUnVuID0gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5jYWxscy5hbGxQYWNrYWdlVmVyc2lvbnMoKVxuICAgICAgLmluY2x1ZGUoJ2lucHV0cywgb3V0cHV0cywgc2Vzc2lvbi51c2VyJykuZmluZChmdW5jQ2FsbElkKTtcblxuICAgIGNvbnN0IGlkID0gcHVsbGVkUnVuLmZ1bmMuaWQ7XG4gICAgLy8gRklYIE1FOiBtYW51YWxseSBnZXQgc2NyaXB0IHNpbmNlIHB1bGxlZFJ1biBjb250YWlucyBlbXB0eSBGdW5jXG4gICAgY29uc3Qgc2NyaXB0ID0gc2NyaXB0c0NhY2hlW2lkXSA/PyBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmFsbFBhY2thZ2VWZXJzaW9ucygpLmZpbmQoaWQpO1xuXG4gICAgaWYgKCFzY3JpcHRzQ2FjaGVbaWRdKSBzY3JpcHRzQ2FjaGVbaWRdID0gc2NyaXB0O1xuICAgIHB1bGxlZFJ1bi5mdW5jID0gc2NyaXB0O1xuICAgIHB1bGxlZFJ1bi5vcHRpb25zWydpc0hpc3RvcmljYWwnXSA9IHRydWU7XG5cbiAgICBpZiAoIXNraXBEZkxvYWQpIHtcbiAgICAgIGNvbnN0IGRmT3V0cHV0cyA9IHd1KHB1bGxlZFJ1bi5vdXRwdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgICAuZmlsdGVyKChvdXRwdXQpID0+IG91dHB1dC5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSk7XG4gICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBkZk91dHB1dHMpXG4gICAgICAgIHB1bGxlZFJ1bi5vdXRwdXRzW291dHB1dC5uYW1lXSA9IGF3YWl0IGdyb2suZGFwaS50YWJsZXMuZ2V0VGFibGUocHVsbGVkUnVuLm91dHB1dHNbb3V0cHV0Lm5hbWVdKTtcblxuICAgICAgY29uc3QgZGZJbnB1dHMgPSB3dShwdWxsZWRSdW4uaW5wdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgICAuZmlsdGVyKChpbnB1dCkgPT4gaW5wdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgZm9yIChjb25zdCBpbnB1dCBvZiBkZklucHV0cylcbiAgICAgICAgcHVsbGVkUnVuLmlucHV0c1tpbnB1dC5uYW1lXSA9IGF3YWl0IGdyb2suZGFwaS50YWJsZXMuZ2V0VGFibGUocHVsbGVkUnVuLmlucHV0c1tpbnB1dC5uYW1lXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1bGxlZFJ1bjtcbiAgfVxuXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlUnVuKGNhbGxUb1NhdmU6IERHLkZ1bmNDYWxsKSB7XG4gICAgY29uc3QgZGZPdXRwdXRzID0gd3UoY2FsbFRvU2F2ZS5vdXRwdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIGRmT3V0cHV0cylcbiAgICAgIGF3YWl0IGdyb2suZGFwaS50YWJsZXMudXBsb2FkRGF0YUZyYW1lKGNhbGxUb1NhdmUub3V0cHV0c1tvdXRwdXQubmFtZV0pO1xuXG4gICAgY29uc3QgZGZJbnB1dHMgPSB3dShjYWxsVG9TYXZlLmlucHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgIC5maWx0ZXIoKGlucHV0KSA9PiBpbnB1dC5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSk7XG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiBkZklucHV0cylcbiAgICAgIGF3YWl0IGdyb2suZGFwaS50YWJsZXMudXBsb2FkRGF0YUZyYW1lKGNhbGxUb1NhdmUuaW5wdXRzW2lucHV0Lm5hbWVdKTtcblxuXG4gICAgcmV0dXJuIGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHMuYWxsUGFja2FnZVZlcnNpb25zKCkuc2F2ZShjYWxsVG9TYXZlKTtcbiAgfVxuXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVSdW4oY2FsbFRvRGVsZXRlOiBERy5GdW5jQ2FsbCkge1xuICAgIGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHMuYWxsUGFja2FnZVZlcnNpb25zKCkuZGVsZXRlKGNhbGxUb0RlbGV0ZSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYWxsIHRoZSBmdW5jdGlvbiBjYWxsIG9mIHRoaXMgZnVuY3Rpb24uXG4gICAqIERlc2lnbmVkIHRvIHB1bGwgaHN0b3JpY2FsIHJ1bnMgaW4gZmFzdCBtYW5uZXIgYW5kIHRoZSBjYWxsIHtAbGluayBsb2FkUnVufSB3aXRoIHNwZWNpZmllZCBydW4gSUQuXG4gICAqIFdBUk5JTkc6IEZ1bmNDYWxsIGlucHV0cy9vdXRwdXRzIGZpZWxkcyBhcmUgbm90IGluY2x1ZGVkXG4gICAqIEBwYXJhbSBmdW5jSWQgSUQgb2YgRnVuYyB3aGljaCBjYWxscyB3ZSBhcmUgbG9va2luZyBmb3IuIEdldCBpdCB1c2luZyB7QGxpbmsgZnVuYy5pZH0gZmllbGRcbiAgICogQHJldHVybiBQcm9taXNlIG9uIGFycmF5IG9mIEZ1bmNDYWxscyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXNzZWQgRnVuYyBJRFxuICAgKiBAc3RhYmlsaXR5IERlcHJlY2F0ZWQuIFNjcmlwdCBJRCBjaGFuZ2VzIHdpdGggZXZlcnkgcGFja2FnZSByZWxlYXNlLCBzbyBzZWFyY2hpbmcgYnkgSUQgaXMgdXNlbGVzcyBpbiBwcmFjdGljZS5cbiAqL1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVsbFJ1bnMoXG4gICAgZnVuY0lkOiBzdHJpbmcsXG4gICAgZmlsdGVyT3B0aW9uczogRmlsdGVyT3B0aW9ucyA9IHt9LFxuICAgIGxpc3RPcHRpb25zOiB7cGFnZVNpemU/OiBudW1iZXIsIHBhZ2VOdW1iZXI/OiBudW1iZXIsIGZpbHRlcj86IHN0cmluZywgb3JkZXI/OiBzdHJpbmd9ID0ge31cbiAgKTogUHJvbWlzZTxERy5GdW5jQ2FsbFtdPiB7XG4gICAgbGV0IGZpbHRlcmluZ1N0cmluZyA9IGBmdW5jLmlkPVwiJHtmdW5jSWR9XCJgO1xuICAgIGZpbHRlcmluZ1N0cmluZyArPSBmaWx0ZXJPcHRpb25zLmF1dGhvciA/IGAgYW5kIHNlc3Npb24udXNlci5pZD1cIiR7ZmlsdGVyT3B0aW9ucy5hdXRob3IuaWR9XCJgOicnO1xuICAgIGZpbHRlcmluZ1N0cmluZyArPSBmaWx0ZXJPcHRpb25zLmRhdGUgPyBnZXRTZWFyY2hTdHJpbmdCeVBhdHRlcm4oZmlsdGVyT3B0aW9ucy5kYXRlKTogJyc7XG4gICAgY29uc3QgZmlsdGVyID0gZ3Jvay5kYXBpLmZ1bmN0aW9ucy5jYWxsc1xuICAgICAgLmFsbFBhY2thZ2VWZXJzaW9ucygpXG4gICAgICAuZmlsdGVyKGZpbHRlcmluZ1N0cmluZylcbiAgICAgIC5pbmNsdWRlKCdzZXNzaW9uLnVzZXIsIG9wdGlvbnMnKTtcbiAgICBjb25zdCBsaXN0ID0gZmlsdGVyLmxpc3QobGlzdE9wdGlvbnMpO1xuICAgIHJldHVybiBsaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGFsbCB0aGUgZnVuY3Rpb24gY2FsbCBvZiB0aGlzIGZ1bmN0aW9uLlxuICAgKiBEZXNpZ25lZCB0byBwdWxsIGhzdG9yaWNhbCBydW5zIGluIGZhc3QgbWFubmVyIGFuZCB0aGUgY2FsbCB7QGxpbmsgbG9hZFJ1bn0gd2l0aCBzcGVjaWZpZWQgcnVuIElELlxuICAgKiBXQVJOSU5HOiBGdW5jQ2FsbCBpbnB1dHMvb3V0cHV0cyBmaWVsZHMgYXJlIG5vdCBpbmNsdWRlZCBieSBkZWZhdWx0LiBVc2Uge0BsaW5rIGluY2x1ZGVkRmllbGRzfSB0byBzcGVjaWZ5IGZpZWxkcyB0byBsb2FkLlxuICAgKiBAcGFyYW0gZnVuY05hbWUgTmFtZSBvZiBGdW5jIHdoaWNoIGNhbGxzIHdlIGFyZSBsb29raW5nIGZvci4gR2V0IGl0IHVzaW5nIHtAbGluayBmdW5jLm5hbWV9IGZpZWxkXG4gICAqIEBwYXJhbSBmaWx0ZXJPcHRpb25zIFN0cnVjdCBjb250YWluaW5nIGZpbHRlcmluZyBvcHRpb25zLiBUaGVzZSBvcHRpb25zIHdpbGwgYmUgcGFzc2VkIGFzIHZhbGlkIGZpbHRlcmluZyBzdHJpbmcgdG8gYSByZXF1ZXN0LlxuICAgKiBAcGFyYW0gbGlzdE9wdGlvbnMgU3RydWN0IGNvbnRhaW5pbmcgbGlzdGluZyBvcHRpb25zLlxuICAgKiBAcGFyYW0gaW5jbHVkZWRGaWVsZHMgTGlzdCBvZiBmaWVsZHMgdG8gaW5jbHVkZSBpbnRvIHJlc3BvbnNlLiBTZWUge0BsaW5rIERHLkZ1bmNDYWxsfSBzdHJ1Y3QgdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy4gRS5nLiwgJ2lucHV0cycgb3IgJ291dHB1dHMnXG4gICAqIEByZXR1cm4gUHJvbWlzZSBvbiBhcnJheSBvZiBGdW5jQ2FsbHMgY29ycmVzcG9uZGluZyB0byB0aGUgcGFzc2VkIEZ1bmMgSURcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVsbFJ1bnNCeU5hbWUoXG4gICAgZnVuY05hbWU6IHN0cmluZyxcbiAgICBmaWx0ZXJPcHRpb25zOiBGaWx0ZXJPcHRpb25zW10gPSBbXSxcbiAgICBsaXN0T3B0aW9uczoge3BhZ2VTaXplPzogbnVtYmVyLCBwYWdlTnVtYmVyPzogbnVtYmVyLCBmaWx0ZXI/OiBzdHJpbmcsIG9yZGVyPzogc3RyaW5nfSA9IHt9LFxuICAgIGluY2x1ZGVkRmllbGRzOiBzdHJpbmdbXSA9IFtdXG4gICk6IFByb21pc2U8REcuRnVuY0NhbGxbXT4ge1xuICAgIGxldCBmaWx0ZXJpbmdTdHJpbmcgPSBgYDtcbiAgICBmb3IgKGNvbnN0IGZpbHRlck9wdGlvbiBvZiBmaWx0ZXJPcHRpb25zKSB7XG4gICAgICBjb25zdCBmaWx0ZXJPcHRpb25Dcml0ZXJpYSA9IFtdIGFzIHN0cmluZ1tdO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi5hdXRob3IpIGZpbHRlck9wdGlvbkNyaXRlcmlhLnB1c2goYHNlc3Npb24udXNlci5pZD1cIiR7ZmlsdGVyT3B0aW9uLmF1dGhvci5pZH1cImApO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi5kYXRlKSBmaWx0ZXJPcHRpb25Dcml0ZXJpYS5wdXNoKGdldFNlYXJjaFN0cmluZ0J5UGF0dGVybihmaWx0ZXJPcHRpb24uZGF0ZSkpO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi5pc1NoYXJlZCkgZmlsdGVyT3B0aW9uQ3JpdGVyaWEucHVzaChgb3B0aW9ucy5pc1NoYXJlZD1cInRydWVcImApO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi50ZXh0KSB7XG4gICAgICAgIGZpbHRlck9wdGlvbkNyaXRlcmlhLnB1c2goXG4gICAgICAgICAgYCgob3B0aW9ucy50aXRsZSBsaWtlIFwiJHtmaWx0ZXJPcHRpb24udGV4dH1cIikgb3IgKG9wdGlvbnMuYW5ub3RhdGlvbiBsaWtlIFwiJHtmaWx0ZXJPcHRpb24udGV4dH1cIikpYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsdGVyT3B0aW9uU3RyaW5nID0gZmlsdGVyT3B0aW9uQ3JpdGVyaWEuam9pbignIGFuZCAnKTtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb25TdHJpbmcgIT09ICcnKSB7XG4gICAgICAgIGlmIChmaWx0ZXJpbmdTdHJpbmcgPT09ICcnKVxuICAgICAgICAgIGZpbHRlcmluZ1N0cmluZyArPSBgKCR7ZmlsdGVyT3B0aW9uU3RyaW5nfSlgO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgZmlsdGVyaW5nU3RyaW5nICs9IGAgb3IgKCR7ZmlsdGVyT3B0aW9uU3RyaW5nfSlgO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZmlsdGVyaW5nU3RyaW5nICE9PSAnJylcbiAgICAgIGZpbHRlcmluZ1N0cmluZyA9IGAgYW5kICgke2ZpbHRlcmluZ1N0cmluZ30pYDtcblxuICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzXG4gICAgICAgIC5hbGxQYWNrYWdlVmVyc2lvbnMoKVxuICAgICAgICAuZmlsdGVyKGBmdW5jLm5hbWU9XCIke2Z1bmNOYW1lfVwiJHtmaWx0ZXJpbmdTdHJpbmd9YClcbiAgICAgICAgLmluY2x1ZGUoYCR7aW5jbHVkZWRGaWVsZHMuam9pbignLCcpfWApXG4gICAgICAgIC5saXN0KGxpc3RPcHRpb25zKTtcblxuICAgIGZvciAoY29uc3QgcHVsbGVkUnVuIG9mIHJlc3VsdCkge1xuICAgICAgY29uc3QgaWQgPSBwdWxsZWRSdW4uZnVuYy5pZDtcbiAgICAgIGNvbnN0IHNjcmlwdCA9IHNjcmlwdHNDYWNoZVtpZF0gPz8gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5hbGxQYWNrYWdlVmVyc2lvbnMoKS5maW5kKGlkKTtcblxuICAgICAgaWYgKCFzY3JpcHRzQ2FjaGVbaWRdKSBzY3JpcHRzQ2FjaGVbaWRdID0gc2NyaXB0O1xuICAgICAgcHVsbGVkUnVuLmZ1bmMgPSBzY3JpcHQ7XG4gICAgfVxuXG4gICAgaWYgKGluY2x1ZGVkRmllbGRzLmluY2x1ZGVzKCdpbnB1dHMnKSB8fCBpbmNsdWRlZEZpZWxkcy5pbmNsdWRlcygnZnVuYy5wYXJhbXMnKSkge1xuICAgICAgZm9yIChjb25zdCBwdWxsZWRSdW4gb2YgcmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IGRmSW5wdXRzID0gd3UocHVsbGVkUnVuLmlucHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgICAgICAuZmlsdGVyKChpbnB1dCkgPT4gaW5wdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgICBmb3IgKGNvbnN0IGlucHV0IG9mIGRmSW5wdXRzKVxuICAgICAgICAgIHB1bGxlZFJ1bi5pbnB1dHNbaW5wdXQubmFtZV0gPSBhd2FpdCBncm9rLmRhcGkudGFibGVzLmdldFRhYmxlKHB1bGxlZFJ1bi5pbnB1dHNbaW5wdXQubmFtZV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbmNsdWRlZEZpZWxkcy5pbmNsdWRlcygnb3V0cHV0cycpIHx8IGluY2x1ZGVkRmllbGRzLmluY2x1ZGVzKCdmdW5jLnBhcmFtcycpKSB7XG4gICAgICBmb3IgKGNvbnN0IHB1bGxlZFJ1biBvZiByZXN1bHQpIHtcbiAgICAgICAgY29uc3QgZGZPdXRwdXRzID0gd3UocHVsbGVkUnVuLm91dHB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pXG4gICAgICAgICAgLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBkZk91dHB1dHMpXG4gICAgICAgICAgcHVsbGVkUnVuLm91dHB1dHNbb3V0cHV0Lm5hbWVdID0gYXdhaXQgZ3Jvay5kYXBpLnRhYmxlcy5nZXRUYWJsZShwdWxsZWRSdW4ub3V0cHV0c1tvdXRwdXQubmFtZV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as DG from 'datagrok-api/dg';
|
|
2
|
+
import { RichFunctionView } from './rich-function-view';
|
|
3
|
+
import { FunctionView } from './function-view';
|
|
4
|
+
export declare class PipelineView extends RichFunctionView {
|
|
5
|
+
stepViews: {
|
|
6
|
+
[nqName: string]: FunctionView;
|
|
7
|
+
};
|
|
8
|
+
stepTabs: DG.TabControl | null;
|
|
9
|
+
protected defaultExportFilename: (format: string) => string;
|
|
10
|
+
protected defaultSupportedExportExtensions: () => Record<string, string>;
|
|
11
|
+
protected defaultSupportedExportFormats: () => string[];
|
|
12
|
+
protected defaultExport: (format: string) => Promise<Blob>;
|
|
13
|
+
constructor(funcCall: DG.FuncCall);
|
|
14
|
+
buildIO(): HTMLDivElement;
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Override to create a custom historical runs control.
|
|
18
|
+
* @returns The HTMLElement with history block UI
|
|
19
|
+
*/
|
|
20
|
+
buildHistoryBlock(): HTMLElement;
|
|
21
|
+
/**
|
|
22
|
+
* Loads the specified historical run. See also {@link saveRun}.
|
|
23
|
+
* @param funcCallId ID of FuncCall to look for. Get it using {@see funcCall.id} field
|
|
24
|
+
* @returns FuncCall augemented with inputs' and outputs' values
|
|
25
|
+
* @stability Stable
|
|
26
|
+
*/
|
|
27
|
+
loadRun(funcCallId: string): Promise<DG.FuncCall>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=pipeline-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-view.d.ts","sourceRoot":"","sources":["pipeline-view.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAG7C,qBAAa,YAAa,SAAQ,gBAAgB;IACzC,SAAS,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,CAAM;IACnD,QAAQ,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,CAAQ;IAE7C,SAAS,CAAC,qBAAqB,WAAY,MAAM,YAI/C;IAEF,SAAS,CAAC,gCAAgC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAItE;IAEF,SAAS,CAAC,6BAA6B,iBAErC;IAEF,SAAS,CAAC,aAAa,WAAkB,MAAM,mBAkB7C;gBAGA,QAAQ,EAAE,EAAE,CAAC,QAAQ;IAaP,OAAO;IAMV,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAGjC;;;MAGE;IAEK,iBAAiB,IAAI,WAAW;IAYvC;;;;;KAKC;IACY,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;CAW/D"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import * as ui from 'datagrok-api/ui';
|
|
11
|
+
import { RichFunctionView } from './rich-function-view';
|
|
12
|
+
import { UiUtils } from './shared-components/ui-utils';
|
|
13
|
+
import { historyUtils } from './history-utils';
|
|
14
|
+
import JSZip from 'jszip';
|
|
15
|
+
export class PipelineView extends RichFunctionView {
|
|
16
|
+
constructor(funcCall) {
|
|
17
|
+
super(funcCall, { exportEnabled: true, historyEnabled: false, isTabbed: true });
|
|
18
|
+
this.stepViews = {};
|
|
19
|
+
this.stepTabs = null;
|
|
20
|
+
this.defaultExportFilename = (format) => {
|
|
21
|
+
return `${this.name} - ${new Date()
|
|
22
|
+
.toLocaleString('en-US')
|
|
23
|
+
.replaceAll(/:|\//g, '-')}.${this.exportConfig.supportedExtensions[format]}`;
|
|
24
|
+
};
|
|
25
|
+
this.defaultSupportedExportExtensions = () => {
|
|
26
|
+
return {
|
|
27
|
+
'Archive': 'zip'
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
this.defaultSupportedExportFormats = () => {
|
|
31
|
+
return ['Archive'];
|
|
32
|
+
};
|
|
33
|
+
this.defaultExport = (format) => __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
var _a;
|
|
35
|
+
if (format !== 'Archive')
|
|
36
|
+
throw new Error('This export format is not supported');
|
|
37
|
+
if (!this.stepTabs)
|
|
38
|
+
throw new Error('Set step tabs please for export');
|
|
39
|
+
const zip = new JSZip();
|
|
40
|
+
for (const [nqName, stepView] of Object.entries(this.stepViews)) {
|
|
41
|
+
this.stepTabs.currentPane = (_a = this.stepTabs) === null || _a === void 0 ? void 0 : _a.getPane(nqName);
|
|
42
|
+
yield new Promise((r) => setTimeout(r, 100));
|
|
43
|
+
const stepBlob = yield stepView.exportConfig.export('Excel');
|
|
44
|
+
zip.file(stepView.exportConfig.filename('Excel'), stepBlob, { binary: true, createFolders: false });
|
|
45
|
+
}
|
|
46
|
+
;
|
|
47
|
+
return yield zip.generateAsync({ type: 'blob' });
|
|
48
|
+
});
|
|
49
|
+
this.exportConfig = {
|
|
50
|
+
supportedExtensions: this.defaultSupportedExportExtensions(),
|
|
51
|
+
supportedFormats: this.defaultSupportedExportFormats(),
|
|
52
|
+
export: this.defaultExport,
|
|
53
|
+
filename: this.defaultExportFilename,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// REVIEW INHERITANCE HIERARCHY
|
|
57
|
+
buildIO() {
|
|
58
|
+
return ui.div();
|
|
59
|
+
}
|
|
60
|
+
// Should override to prevent saving right after model loading
|
|
61
|
+
// Actually, it does nothing
|
|
62
|
+
run() {
|
|
63
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Override to create a custom historical runs control.
|
|
68
|
+
* @returns The HTMLElement with history block UI
|
|
69
|
+
*/
|
|
70
|
+
// Overrrided since we should load child funcCalls
|
|
71
|
+
buildHistoryBlock() {
|
|
72
|
+
const newHistoryBlock = UiUtils.historyPanel(this.func);
|
|
73
|
+
newHistoryBlock.onRunChosen.subscribe((id) => __awaiter(this, void 0, void 0, function* () { return this.linkFunccall(yield this.loadRun(id)); }));
|
|
74
|
+
ui.empty(this.historyRoot);
|
|
75
|
+
this.historyRoot.style.removeProperty('justify-content');
|
|
76
|
+
this.historyRoot.style.width = '100%';
|
|
77
|
+
this.historyRoot.append(newHistoryBlock.root);
|
|
78
|
+
return newHistoryBlock.root;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Loads the specified historical run. See also {@link saveRun}.
|
|
82
|
+
* @param funcCallId ID of FuncCall to look for. Get it using {@see funcCall.id} field
|
|
83
|
+
* @returns FuncCall augemented with inputs' and outputs' values
|
|
84
|
+
* @stability Stable
|
|
85
|
+
*/
|
|
86
|
+
loadRun(funcCallId) {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
yield this.onBeforeLoadRun();
|
|
89
|
+
const { parentRun: pulledParentRun, childRuns: pulledChildRuns } = yield historyUtils.loadChildRuns(funcCallId);
|
|
90
|
+
pulledChildRuns.forEach((pulledChildRun) => {
|
|
91
|
+
this.stepViews[pulledChildRun.nqName].linkFunccall(pulledChildRun);
|
|
92
|
+
});
|
|
93
|
+
yield this.onAfterLoadRun(pulledParentRun);
|
|
94
|
+
return pulledParentRun;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBpcGVsaW5lLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixNQUFNLE9BQU8sWUFBYSxTQUFRLGdCQUFnQjtJQXdDaEQsWUFDRSxRQUFxQjtRQUVyQixLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBMUN6RSxjQUFTLEdBQXVDLEVBQUUsQ0FBQztRQUNuRCxhQUFRLEdBQXlCLElBQUksQ0FBQztRQUVuQywwQkFBcUIsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQ25ELE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO2lCQUNoQyxjQUFjLENBQUMsT0FBTyxDQUFDO2lCQUN2QixVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFhLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNsRixDQUFDLENBQUM7UUFFUSxxQ0FBZ0MsR0FBaUMsR0FBRyxFQUFFO1lBQzlFLE9BQU87Z0JBQ0wsU0FBUyxFQUFFLEtBQUs7YUFDakIsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVRLGtDQUE2QixHQUFHLEdBQUcsRUFBRTtZQUM3QyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckIs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QyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFOUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDM0MsT0FBTyxlQUFlLENBQUM7UUFDekIsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYyAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7UmljaEZ1bmN0aW9uVmlld30gZnJvbSAnLi9yaWNoLWZ1bmN0aW9uLXZpZXcnO1xuaW1wb3J0IHtVaVV0aWxzfSBmcm9tICcuL3NoYXJlZC1jb21wb25lbnRzL3VpLXV0aWxzJztcbmltcG9ydCB7aGlzdG9yeVV0aWxzfSBmcm9tICcuL2hpc3RvcnktdXRpbHMnO1xuaW1wb3J0IHtGdW5jdGlvblZpZXd9IGZyb20gJy4vZnVuY3Rpb24tdmlldyc7XG5pbXBvcnQgSlNaaXAgZnJvbSAnanN6aXAnO1xuXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVWaWV3IGV4dGVuZHMgUmljaEZ1bmN0aW9uVmlldyB7XG4gIHB1YmxpYyBzdGVwVmlld3M6IHsgW25xTmFtZTogc3RyaW5nXTogRnVuY3Rpb25WaWV3IH0gPSB7fTtcbiAgcHVibGljIHN0ZXBUYWJzOiBERy5UYWJDb250cm9sIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRFeHBvcnRGaWxlbmFtZSA9IChmb3JtYXQ6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBgJHt0aGlzLm5hbWV9IC0gJHtuZXcgRGF0ZSgpXG4gICAgICAudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJylcbiAgICAgIC5yZXBsYWNlQWxsKC86fFxcLy9nLCAnLScpfS4ke3RoaXMuZXhwb3J0Q29uZmlnIS5zdXBwb3J0ZWRFeHRlbnNpb25zW2Zvcm1hdF19YDtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEV4dGVuc2lvbnM6ICgpID0+IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdBcmNoaXZlJzogJ3ppcCdcbiAgICB9O1xuICB9O1xuXG4gIHByb3RlY3RlZCBkZWZhdWx0U3VwcG9ydGVkRXhwb3J0Rm9ybWF0cyA9ICgpID0+IHtcbiAgICByZXR1cm4gWydBcmNoaXZlJ107XG4gIH07XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRFeHBvcnQgPSBhc3luYyAoZm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoZm9ybWF0ICE9PSAnQXJjaGl2ZScpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgZXhwb3J0IGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cbiAgICBpZiAoIXRoaXMuc3RlcFRhYnMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldCBzdGVwIHRhYnMgcGxlYXNlIGZvciBleHBvcnQnKTtcblxuICAgIGNvbnN0IHppcCA9IG5ldyBKU1ppcCgpO1xuXG4gICAgZm9yIChjb25zdCBbbnFOYW1lLCBzdGVwVmlld10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5zdGVwVmlld3MpKSB7XG4gICAgICB0aGlzLnN0ZXBUYWJzLmN1cnJlbnRQYW5lID0gdGhpcy5zdGVwVGFicz8uZ2V0UGFuZShucU5hbWUpO1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgMTAwKSk7XG4gICAgICBjb25zdCBzdGVwQmxvYiA9IGF3YWl0IHN0ZXBWaWV3LmV4cG9ydENvbmZpZyEuZXhwb3J0KCdFeGNlbCcpO1xuXG4gICAgICB6aXAuZmlsZShzdGVwVmlldy5leHBvcnRDb25maWchLmZpbGVuYW1lKCdFeGNlbCcpLCBzdGVwQmxvYiwge2JpbmFyeTogdHJ1ZSwgY3JlYXRlRm9sZGVyczogZmFsc2V9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGF3YWl0IHppcC5nZW5lcmF0ZUFzeW5jKHt0eXBlOiAnYmxvYid9KTtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBmdW5jQ2FsbDogREcuRnVuY0NhbGxcbiAgKSB7XG4gICAgc3VwZXIoZnVuY0NhbGwsIHtleHBvcnRFbmFibGVkOiB0cnVlLCBoaXN0b3J5RW5hYmxlZDogZmFsc2UsIGlzVGFiYmVkOiB0cnVlfSk7XG5cbiAgICB0aGlzLmV4cG9ydENvbmZpZyA9IHtcbiAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnM6IHRoaXMuZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEV4dGVuc2lvbnMoKSxcbiAgICAgIHN1cHBvcnRlZEZvcm1hdHM6IHRoaXMuZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEZvcm1hdHMoKSxcbiAgICAgIGV4cG9ydDogdGhpcy5kZWZhdWx0RXhwb3J0LFxuICAgICAgZmlsZW5hbWU6IHRoaXMuZGVmYXVsdEV4cG9ydEZpbGVuYW1lLFxuICAgIH07XG4gIH1cblxuICAvLyBSRVZJRVcgSU5IRVJJVEFOQ0UgSElFUkFSQ0hZXG4gIHB1YmxpYyBvdmVycmlkZSBidWlsZElPKCkge1xuICAgIHJldHVybiB1aS5kaXYoKTtcbiAgfVxuXG4gIC8vIFNob3VsZCBvdmVycmlkZSB0byBwcmV2ZW50IHNhdmluZyByaWdodCBhZnRlciBtb2RlbCBsb2FkaW5nXG4gIC8vIEFjdHVhbGx5LCBpdCBkb2VzIG5vdGhpbmdcbiAgcHVibGljIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0byBjcmVhdGUgYSBjdXN0b20gaGlzdG9yaWNhbCBydW5zIGNvbnRyb2wuXG4gICAqIEByZXR1cm5zIFRoZSBIVE1MRWxlbWVudCB3aXRoIGhpc3RvcnkgYmxvY2sgVUlcbiAgKi9cbiAgLy8gT3ZlcnJyaWRlZCBzaW5jZSB3ZSBzaG91bGQgbG9hZCBjaGlsZCBmdW5jQ2FsbHNcbiAgcHVibGljIGJ1aWxkSGlzdG9yeUJsb2NrKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBuZXdIaXN0b3J5QmxvY2sgPSBVaVV0aWxzLmhpc3RvcnlQYW5lbCh0aGlzLmZ1bmMhKTtcblxuICAgIG5ld0hpc3RvcnlCbG9jay5vblJ1bkNob3Nlbi5zdWJzY3JpYmUoYXN5bmMgKGlkKSA9PiB0aGlzLmxpbmtGdW5jY2FsbChhd2FpdCB0aGlzLmxvYWRSdW4oaWQpKSk7XG5cbiAgICB1aS5lbXB0eSh0aGlzLmhpc3RvcnlSb290KTtcbiAgICB0aGlzLmhpc3RvcnlSb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdqdXN0aWZ5LWNvbnRlbnQnKTtcbiAgICB0aGlzLmhpc3RvcnlSb290LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIHRoaXMuaGlzdG9yeVJvb3QuYXBwZW5kKG5ld0hpc3RvcnlCbG9jay5yb290KTtcbiAgICByZXR1cm4gbmV3SGlzdG9yeUJsb2NrLnJvb3Q7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHNwZWNpZmllZCBoaXN0b3JpY2FsIHJ1bi4gU2VlIGFsc28ge0BsaW5rIHNhdmVSdW59LlxuICAgKiBAcGFyYW0gZnVuY0NhbGxJZCBJRCBvZiBGdW5jQ2FsbCB0byBsb29rIGZvci4gR2V0IGl0IHVzaW5nIHtAc2VlIGZ1bmNDYWxsLmlkfSBmaWVsZFxuICAgKiBAcmV0dXJucyBGdW5jQ2FsbCBhdWdlbWVudGVkIHdpdGggaW5wdXRzJyBhbmQgb3V0cHV0cycgdmFsdWVzXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIGxvYWRSdW4oZnVuY0NhbGxJZDogc3RyaW5nKTogUHJvbWlzZTxERy5GdW5jQ2FsbD4ge1xuICAgIGF3YWl0IHRoaXMub25CZWZvcmVMb2FkUnVuKCk7XG4gICAgY29uc3Qge3BhcmVudFJ1bjogcHVsbGVkUGFyZW50UnVuLCBjaGlsZFJ1bnM6IHB1bGxlZENoaWxkUnVuc30gPSBhd2FpdCBoaXN0b3J5VXRpbHMubG9hZENoaWxkUnVucyhmdW5jQ2FsbElkKTtcblxuICAgIHB1bGxlZENoaWxkUnVucy5mb3JFYWNoKChwdWxsZWRDaGlsZFJ1bikgPT4ge1xuICAgICAgdGhpcy5zdGVwVmlld3NbcHVsbGVkQ2hpbGRSdW4ubnFOYW1lXS5saW5rRnVuY2NhbGwocHVsbGVkQ2hpbGRSdW4pO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy5vbkFmdGVyTG9hZFJ1bihwdWxsZWRQYXJlbnRSdW4pO1xuICAgIHJldHVybiBwdWxsZWRQYXJlbnRSdW47XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
2
|
import { FunctionView } from './function-view';
|
|
3
|
+
import '../css/rich-function-view.css';
|
|
3
4
|
export declare class RichFunctionView extends FunctionView {
|
|
5
|
+
options: {
|
|
6
|
+
exportEnabled: boolean;
|
|
7
|
+
historyEnabled: boolean;
|
|
8
|
+
isTabbed: boolean;
|
|
9
|
+
};
|
|
4
10
|
private funcCallReplaced;
|
|
5
11
|
private checkDisability;
|
|
6
12
|
private isRunning;
|
|
7
|
-
constructor(funcCall: DG.FuncCall
|
|
13
|
+
constructor(funcCall: DG.FuncCall, options?: {
|
|
14
|
+
exportEnabled: boolean;
|
|
15
|
+
historyEnabled: boolean;
|
|
16
|
+
isTabbed: boolean;
|
|
17
|
+
});
|
|
8
18
|
linkFunccall(funcCall: DG.FuncCall): void;
|
|
19
|
+
saveRun(callToSave: DG.FuncCall): Promise<DG.FuncCall>;
|
|
20
|
+
build(): void;
|
|
9
21
|
onAfterRun(runFunc: DG.FuncCall): Promise<void>;
|
|
10
22
|
buildIO(): HTMLElement;
|
|
11
23
|
buildInputBlock(): HTMLElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-function-view.d.ts","sourceRoot":"","sources":["rich-function-view.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"rich-function-view.d.ts","sourceRoot":"","sources":["rich-function-view.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C,OAAO,+BAA+B,CAAC;AAkCvC,qBAAa,gBAAiB,SAAQ,YAAY;IAYvC,OAAO,EAAE;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAC;IAVvF,OAAO,CAAC,gBAAgB,CAAuB;IAG/C,OAAO,CAAC,eAAe,CAAiB;IAGxC,OAAO,CAAC,SAAS,CAAS;gBAGxB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACd,OAAO,GAAE;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KACxB;IAsB9C,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ;IAOrC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;IAYnD,KAAK,IAAI,IAAI;IAUb,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD,OAAO,IAAI,WAAW;IA6BtB,eAAe,IAAI,WAAW;IAMrC,OAAO,CAAC,QAAQ,CAAmB;IAE5B,gBAAgB,IAAI,WAAW;IAuIzB,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ;IAelD,OAAO,CAAC,iBAAiB,CAAoC;IAE7D,SAAS,KAAK,QAAQ,kBAKrB;IAED,SAAS,KAAK,cAAc,kBAE3B;IAED,SAAS,KAAK,oBAAoB,YAEjC;IAED,SAAS,KAAK,wBAAwB,aAIrC;IAED,SAAS,KAAK,gBAAgB,aAK7B;IAED,SAAS,KAAK,UAAU,aAEvB;IAED,SAAS,KAAK,kBAAkB,kCAmB/B;IAED,OAAO,CAAC,gBAAgB;IAkHxB,SAAS,CAAC,aAAa,WAAkB,MAAM,mBAkI7C;CACH"}
|