@aerokit/sdk 12.83.0 → 12.85.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/dist/cjs/junit/junit.js +100 -13
- package/dist/dts/junit/junit.d.ts +40 -3
- package/dist/esm/junit/junit.mjs +100 -13
- package/package.json +1 -1
package/dist/cjs/junit/junit.js
CHANGED
|
@@ -21,47 +21,134 @@ __export(junit_exports, {
|
|
|
21
21
|
assertFalse: () => assertFalse,
|
|
22
22
|
assertNotEquals: () => assertNotEquals,
|
|
23
23
|
assertTrue: () => assertTrue,
|
|
24
|
+
clearResults: () => clearResults,
|
|
24
25
|
fail: () => fail,
|
|
26
|
+
getResults: () => getResults,
|
|
27
|
+
getResultsSummary: () => getResultsSummary,
|
|
28
|
+
storeResults: () => storeResults,
|
|
25
29
|
test: () => test
|
|
26
30
|
});
|
|
27
31
|
module.exports = __toCommonJS(junit_exports);
|
|
28
|
-
|
|
32
|
+
var import_http = require("@aerokit/sdk/http");
|
|
33
|
+
const Assertions = Java.type("org.junit.jupiter.api.Assertions");
|
|
34
|
+
const TestResultsService = Java.type("org.eclipse.dirigible.components.ide.junit.service.TestResultsService");
|
|
35
|
+
const ArrayList = Java.type("java.util.ArrayList");
|
|
36
|
+
const TestResult = Java.type("org.eclipse.dirigible.components.ide.junit.domain.TestResult");
|
|
37
|
+
class TestResultCollector {
|
|
38
|
+
results = [];
|
|
39
|
+
currentTest = null;
|
|
40
|
+
haveFailedTests = false;
|
|
41
|
+
hasFailedTests() {
|
|
42
|
+
return this.haveFailedTests;
|
|
43
|
+
}
|
|
44
|
+
recordTestStart(name) {
|
|
45
|
+
this.currentTest = { name, startTime: (/* @__PURE__ */ new Date()).getTime() };
|
|
46
|
+
}
|
|
47
|
+
recordTestComplete(status, error) {
|
|
48
|
+
if (!this.currentTest) return;
|
|
49
|
+
const result = {
|
|
50
|
+
name: this.currentTest.name,
|
|
51
|
+
status,
|
|
52
|
+
duration: (/* @__PURE__ */ new Date()).getTime() - this.currentTest.startTime,
|
|
53
|
+
timestamp: (/* @__PURE__ */ new Date()).getTime()
|
|
54
|
+
};
|
|
55
|
+
if (error) {
|
|
56
|
+
result.error = error.message;
|
|
57
|
+
result.stackTrace = error.stackTrace;
|
|
58
|
+
}
|
|
59
|
+
this.results.push(result);
|
|
60
|
+
this.currentTest = null;
|
|
61
|
+
if (status === "failed" || error) {
|
|
62
|
+
this.haveFailedTests = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
getResults() {
|
|
66
|
+
return [...this.results];
|
|
67
|
+
}
|
|
68
|
+
storeResults() {
|
|
69
|
+
const resultsList = new ArrayList();
|
|
70
|
+
this.results.forEach((e) => resultsList.add(new TestResult(e.name, e.status, e.duration, e.error, e.stackTrace, e.timestamp)));
|
|
71
|
+
TestResultsService.get().storeResults(resultsList);
|
|
72
|
+
import_http.Response.sendRedirect("/services/web/ide-junit-results/junit-results");
|
|
73
|
+
}
|
|
74
|
+
getSummary() {
|
|
75
|
+
const results = this.results;
|
|
76
|
+
const total = results.length;
|
|
77
|
+
const passed = results.filter((r) => r.status === "passed").length;
|
|
78
|
+
const failed = results.filter((r) => r.status === "failed").length;
|
|
79
|
+
const skipped = results.filter((r) => r.status === "skipped").length;
|
|
80
|
+
const duration = results.reduce((sum, r) => sum + r.duration, 0);
|
|
81
|
+
return { total, passed, failed, skipped, duration };
|
|
82
|
+
}
|
|
83
|
+
clearResults() {
|
|
84
|
+
this.results = [];
|
|
85
|
+
this.currentTest = null;
|
|
86
|
+
this.haveFailedTests = false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const resultCollector = new TestResultCollector();
|
|
29
90
|
function test(name, testFn) {
|
|
30
|
-
|
|
91
|
+
resultCollector.recordTestStart(name);
|
|
92
|
+
if (resultCollector.hasFailedTests()) {
|
|
93
|
+
resultCollector.recordTestComplete("skipped");
|
|
94
|
+
console.log(`- Skipping test "${name}" due to previous failures`);
|
|
95
|
+
} else {
|
|
96
|
+
try {
|
|
97
|
+
testFn();
|
|
98
|
+
resultCollector.recordTestComplete("passed");
|
|
99
|
+
} catch (error) {
|
|
100
|
+
resultCollector.recordTestComplete("failed", {
|
|
101
|
+
message: error?.message || String(error),
|
|
102
|
+
stackTrace: error?.stack
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
31
106
|
}
|
|
32
107
|
function assertEquals(messageOrExpected, expectedOrActual, actualOrUndefined) {
|
|
33
108
|
if (arguments.length === 3) {
|
|
34
|
-
|
|
109
|
+
Assertions.assertEquals(messageOrExpected, expectedOrActual, actualOrUndefined);
|
|
35
110
|
} else {
|
|
36
|
-
|
|
111
|
+
Assertions.assertEquals(messageOrExpected, expectedOrActual);
|
|
37
112
|
}
|
|
38
113
|
}
|
|
39
114
|
function assertNotEquals(messageOrUnexpected, unexpectedOrActual, actualOrUndefined) {
|
|
40
115
|
if (arguments.length === 3) {
|
|
41
|
-
|
|
116
|
+
Assertions.assertNotEquals(messageOrUnexpected, unexpectedOrActual, actualOrUndefined);
|
|
42
117
|
} else {
|
|
43
|
-
|
|
118
|
+
Assertions.assertNotEquals(messageOrUnexpected, unexpectedOrActual);
|
|
44
119
|
}
|
|
45
120
|
}
|
|
46
121
|
function assertTrue(messageOrCondition, conditionOrUndefined) {
|
|
47
122
|
if (arguments.length === 2) {
|
|
48
|
-
|
|
123
|
+
Assertions.assertTrue(messageOrCondition, conditionOrUndefined);
|
|
49
124
|
} else {
|
|
50
|
-
|
|
125
|
+
Assertions.assertTrue(messageOrCondition);
|
|
51
126
|
}
|
|
52
127
|
}
|
|
53
128
|
function assertFalse(messageOrCondition, conditionOrUndefined) {
|
|
54
129
|
if (arguments.length === 2) {
|
|
55
|
-
|
|
130
|
+
Assertions.assertFalse(messageOrCondition, conditionOrUndefined);
|
|
56
131
|
} else {
|
|
57
|
-
|
|
132
|
+
Assertions.assertFalse(messageOrCondition);
|
|
58
133
|
}
|
|
59
134
|
}
|
|
60
135
|
function fail(message) {
|
|
61
136
|
if (message) {
|
|
62
|
-
|
|
137
|
+
Assertions.fail(message);
|
|
63
138
|
} else {
|
|
64
|
-
|
|
139
|
+
Assertions.fail();
|
|
65
140
|
}
|
|
66
141
|
}
|
|
67
|
-
|
|
142
|
+
function getResults() {
|
|
143
|
+
return resultCollector.getResults();
|
|
144
|
+
}
|
|
145
|
+
function getResultsSummary() {
|
|
146
|
+
return resultCollector.getSummary();
|
|
147
|
+
}
|
|
148
|
+
function clearResults() {
|
|
149
|
+
resultCollector.clearResults();
|
|
150
|
+
}
|
|
151
|
+
function storeResults() {
|
|
152
|
+
resultCollector.storeResults();
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2p1bml0L2p1bml0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUganVuaXQvanVuaXRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9qdW5pdFxuICogQG5hbWUgSlVuaXRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgSlVuaXQgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBkZWZpbmluZyB0ZXN0cyBhbmQgcGVyZm9ybWluZyBhc3NlcnRpb25zLCB3cmFwcGluZyB0aGUgbmF0aXZlIEpVbml0IEFzc2VydGlvbnMgZm9yIHVzZSBpbiBUeXBlU2NyaXB0L0phdmFTY3JpcHQgdGVzdHMuIEl0IGFsbG93cyBkZXZlbG9wZXJzIHRvIHdyaXRlIHRlc3QgY2FzZXMgaW4gYSBmYW1pbGlhciBmb3JtYXQgd2hpbGUgbGV2ZXJhZ2luZyB0aGUgcG93ZXJmdWwgYXNzZXJ0aW9uIGNhcGFiaWxpdGllcyBvZiBKVW5pdCwgbWFraW5nIGl0IGVhc2llciB0byB2YWxpZGF0ZSBjb2RlIGJlaGF2aW9yIGFuZCBlbnN1cmUgY29ycmVjdG5lc3MuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXM6XG4gKiAtICoqVGVzdCBEZWZpbml0aW9uKio6IFRoZSBgdGVzdGAgZnVuY3Rpb24gYWxsb3dzIGRldmVsb3BlcnMgdG8gZGVmaW5lIGluZGl2aWR1YWwgdGVzdCBjYXNlcyB3aXRoIGEgZGVzY3JpcHRpdmUgbmFtZSBhbmQgYSBmdW5jdGlvbiBjb250YWluaW5nIHRoZSB0ZXN0IGxvZ2ljLlxuICogLSAqKkFzc2VydGlvbnMqKjogRnVuY3Rpb25zIHN1Y2ggYXMgYGFzc2VydEVxdWFsc2AsIGBhc3NlcnROb3RFcXVhbHNgLCBgYXNzZXJ0VHJ1ZWAsIGBhc3NlcnRGYWxzZWAsIGFuZCBgZmFpbGAgcHJvdmlkZSBhIHZhcmlldHkgb2YgYXNzZXJ0aW9uIG1ldGhvZHMgdG8gdmFsaWRhdGUgY29uZGl0aW9ucyBhbmQgY29tcGFyZSB2YWx1ZXMgd2l0aGluIHRlc3RzLlxuICogLSAqKlJlc3VsdCBUcmFja2luZyoqOiBUZXN0IHJlc3VsdHMgYXJlIGF1dG9tYXRpY2FsbHkgY2FwdHVyZWQgYW5kIGNhbiBiZSByZXRyaWV2ZWQgdmlhIHRoZSByZXN1bHRzIEFQSS5cbiAqIFxuICogIyMjIFVzZSBDYXNlczpcbiAqIC0gKipVbml0IFRlc3RpbmcqKjogVGhlc2UgdXRpbGl0aWVzIGFyZSBwcmltYXJpbHkgdXNlZCBmb3Igd3JpdGluZyB1bml0IHRlc3RzIHRvIHZlcmlmeSB0aGUgZnVuY3Rpb25hbGl0eSBvZiBpbmRpdmlkdWFsIGNvbXBvbmVudHMgb3IgZnVuY3Rpb25zIGluIGlzb2xhdGlvbi5cbiAqIC0gKipJbnRlZ3JhdGlvbiBUZXN0aW5nKio6IFRoZXkgY2FuIGFsc28gYmUgdXNlZCBpbiBpbnRlZ3JhdGlvbiB0ZXN0cyB0byB2YWxpZGF0ZSB0aGUgYmVoYXZpb3Igb2YgbXVsdGlwbGUgY29tcG9uZW50cyB3b3JraW5nIHRvZ2V0aGVyLCBlbnN1cmluZyB0aGF0IHRoZXkgaW50ZXJhY3QgY29ycmVjdGx5LlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0ZXN0LCBhc3NlcnRFcXVhbHMsIGFzc2VydFRydWUsIHN0b3JlUmVzdWx0cyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvanVuaXRcIjtcbiAqIFxuICogdGVzdChcInNob3VsZCBhZGQgdHdvIG51bWJlcnMgY29ycmVjdGx5XCIsICgpID0+IHtcbiAqICAgICBjb25zdCByZXN1bHQgPSAyICsgMztcbiAqICAgICBhc3NlcnRFcXVhbHMoNSwgcmVzdWx0KTtcbiAqIH0pO1xuICogXG4gKiB0ZXN0KFwic2hvdWxkIHJldHVybiB0cnVlIGZvciB2YWxpZCBpbnB1dFwiLCAoKSA9PiB7XG4gKiAgICAgY29uc3QgaXNWYWxpZCA9IGZhbHNlOyAvLyBSZXBsYWNlIHdpdGggYWN0dWFsIHZhbGlkYXRpb24gbG9naWNcbiAqICAgICBhc3NlcnRUcnVlKGlzVmFsaWQpO1xuICogfSk7XG4gKiBcbiAqIC8vIEFmdGVyIHJ1bm5pbmcgdGVzdHMsIHN0b3JlIHJlc3VsdHMgZm9yIGxhdGVyIHJldHJpZXZhbFxuICogc3RvcmVSZXN1bHRzKCk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ0BhZXJva2l0L3Nkay9odHRwJztcblxuY29uc3QgQXNzZXJ0aW9ucyA9IEphdmEudHlwZSgnb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLkFzc2VydGlvbnMnKTtcbmNvbnN0IFRlc3RSZXN1bHRzU2VydmljZSA9IEphdmEudHlwZSgnb3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuaWRlLmp1bml0LnNlcnZpY2UuVGVzdFJlc3VsdHNTZXJ2aWNlJyk7XG5jb25zdCBBcnJheUxpc3QgPSBKYXZhLnR5cGUoJ2phdmEudXRpbC5BcnJheUxpc3QnKTtcbmNvbnN0IFRlc3RSZXN1bHQgPSBKYXZhLnR5cGUoJ29yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmlkZS5qdW5pdC5kb21haW4uVGVzdFJlc3VsdCcpO1xuXG4vLyBUZXN0IFJlc3VsdCBUcmFja2luZ1xuaW50ZXJmYWNlIFRlc3RSZXN1bHQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzdGF0dXM6ICdwYXNzZWQnIHwgJ2ZhaWxlZCcgfCAnc2tpcHBlZCc7XG4gICAgZHVyYXRpb246IG51bWJlcjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBzdGFja1RyYWNlPzogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG5jbGFzcyBUZXN0UmVzdWx0Q29sbGVjdG9yIHtcbiAgICBwcml2YXRlIHJlc3VsdHM6IFRlc3RSZXN1bHRbXSA9IFtdO1xuICAgIHByaXZhdGUgY3VycmVudFRlc3Q6IHsgbmFtZTogc3RyaW5nOyBzdGFydFRpbWU6IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBoYXZlRmFpbGVkVGVzdHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBoYXNGYWlsZWRUZXN0cygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGF2ZUZhaWxlZFRlc3RzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWNvcmRUZXN0U3RhcnQobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFRlc3QgPSB7IG5hbWUsIHN0YXJ0VGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVjb3JkVGVzdENvbXBsZXRlKHN0YXR1czogJ3Bhc3NlZCcgfCAnZmFpbGVkJyB8ICdza2lwcGVkJywgZXJyb3I/OiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2tUcmFjZT86IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50VGVzdCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogVGVzdFJlc3VsdCA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuY3VycmVudFRlc3QubmFtZSxcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuY3VycmVudFRlc3Quc3RhcnRUaW1lLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlc3VsdC5lcnJvciA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgICByZXN1bHQuc3RhY2tUcmFjZSA9IGVycm9yLnN0YWNrVHJhY2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gbnVsbDtcblxuICAgICAgICBpZiAoc3RhdHVzID09PSAnZmFpbGVkJyB8fCBlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5oYXZlRmFpbGVkVGVzdHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJlc3VsdHMoKTogVGVzdFJlc3VsdFtdIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLnJlc3VsdHNdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdG9yZVJlc3VsdHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHNMaXN0ID0gbmV3IEFycmF5TGlzdCgpO1xuICAgICAgICB0aGlzLnJlc3VsdHMuZm9yRWFjaChlID0+IHJlc3VsdHNMaXN0LmFkZChuZXcgVGVzdFJlc3VsdChlLm5hbWUsIGUuc3RhdHVzLCBlLmR1cmF0aW9uLCBlLmVycm9yLCBlLnN0YWNrVHJhY2UsIGUudGltZXN0YW1wKSkpO1xuICAgICAgICBUZXN0UmVzdWx0c1NlcnZpY2UuZ2V0KCkuc3RvcmVSZXN1bHRzKHJlc3VsdHNMaXN0KTtcbiAgICAgICAgUmVzcG9uc2Uuc2VuZFJlZGlyZWN0KCcvc2VydmljZXMvd2ViL2lkZS1qdW5pdC1yZXN1bHRzL2p1bml0LXJlc3VsdHMnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3VtbWFyeSgpOiB7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIHBhc3NlZDogbnVtYmVyO1xuICAgICAgICBmYWlsZWQ6IG51bWJlcjtcbiAgICAgICAgc2tpcHBlZDogbnVtYmVyO1xuICAgICAgICBkdXJhdGlvbjogbnVtYmVyO1xuICAgIH0ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5yZXN1bHRzO1xuICAgICAgICBjb25zdCB0b3RhbCA9IHJlc3VsdHMubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXNzZWQgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuc3RhdHVzID09PSAncGFzc2VkJykubGVuZ3RoO1xuICAgICAgICBjb25zdCBmYWlsZWQgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuc3RhdHVzID09PSAnZmFpbGVkJykubGVuZ3RoO1xuICAgICAgICBjb25zdCBza2lwcGVkID0gcmVzdWx0cy5maWx0ZXIociA9PiByLnN0YXR1cyA9PT0gJ3NraXBwZWQnKS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gcmVzdWx0cy5yZWR1Y2UoKHN1bSwgcikgPT4gc3VtICsgci5kdXJhdGlvbiwgMCk7XG5cbiAgICAgICAgcmV0dXJuIHsgdG90YWwsIHBhc3NlZCwgZmFpbGVkLCBza2lwcGVkLCBkdXJhdGlvbiB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclJlc3VsdHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5oYXZlRmFpbGVkVGVzdHMgPSBmYWxzZTtcbiAgICB9XG59XG5cbmNvbnN0IHJlc3VsdENvbGxlY3RvciA9IG5ldyBUZXN0UmVzdWx0Q29sbGVjdG9yKCk7XG5cbi8qKlxuICogRGVmaW5lcyBhIHRlc3QgY2FzZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlLlxuICogQHBhcmFtIHRlc3RGbiBUaGUgZnVuY3Rpb24gY29udGFpbmluZyB0aGUgdGVzdCBsb2dpYyBhbmQgYXNzZXJ0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QobmFtZTogc3RyaW5nLCB0ZXN0Rm46ICgpID0+IHZvaWQpIHtcbiAgICByZXN1bHRDb2xsZWN0b3IucmVjb3JkVGVzdFN0YXJ0KG5hbWUpO1xuICAgIGlmIChyZXN1bHRDb2xsZWN0b3IuaGFzRmFpbGVkVGVzdHMoKSkge1xuICAgICAgICByZXN1bHRDb2xsZWN0b3IucmVjb3JkVGVzdENvbXBsZXRlKCdza2lwcGVkJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAtIFNraXBwaW5nIHRlc3QgXCIke25hbWV9XCIgZHVlIHRvIHByZXZpb3VzIGZhaWx1cmVzYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRlc3RGbigpO1xuICAgICAgICAgICAgcmVzdWx0Q29sbGVjdG9yLnJlY29yZFRlc3RDb21wbGV0ZSgncGFzc2VkJyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHJlc3VsdENvbGxlY3Rvci5yZWNvcmRUZXN0Q29tcGxldGUoJ2ZhaWxlZCcsIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvcj8ubWVzc2FnZSB8fCBTdHJpbmcoZXJyb3IpLFxuICAgICAgICAgICAgICAgIHN0YWNrVHJhY2U6IGVycm9yPy5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0d28gb2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzIGFyZSBlcXVhbC5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgdmFsdWVzIGJlaW5nIGNvbXBhcmVkLlxuICogQHBhcmFtIGV4cGVjdGVkIFRoZSBleHBlY3RlZCB2YWx1ZS5cbiAqIEBwYXJhbSBhY3R1YWwgVGhlIGFjdHVhbCB2YWx1ZS5cbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpZiB0aGUgYXNzZXJ0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzPFQ+KGV4cGVjdGVkOiBULCBhY3R1YWw6IFQpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzPFQ+KG1lc3NhZ2U6IHN0cmluZywgZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbHM8VD4obWVzc2FnZU9yRXhwZWN0ZWQ/OiBzdHJpbmcgfCBULCBleHBlY3RlZE9yQWN0dWFsPzogVCwgYWN0dWFsT3JVbmRlZmluZWQ/OiBUKTogdm9pZCB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMobWVzc2FnZU9yRXhwZWN0ZWQsIGV4cGVjdGVkT3JBY3R1YWwsIGFjdHVhbE9yVW5kZWZpbmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBBc3NlcnRpb25zLmFzc2VydEVxdWFscyhtZXNzYWdlT3JFeHBlY3RlZCwgZXhwZWN0ZWRPckFjdHVhbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0d28gb2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzIGFyZSBub3QgZXF1YWwuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIHZhbHVlcyBiZWluZyBjb21wYXJlZC5cbiAqIEBwYXJhbSB1bmV4cGVjdGVkIFRoZSB1bmV4cGVjdGVkIHZhbHVlLlxuICogQHBhcmFtIGFjdHVhbCBUaGUgYWN0dWFsIHZhbHVlLlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4odW5leHBlY3RlZDogVCwgYWN0dWFsOiBUKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFsczxUPihtZXNzYWdlOiBzdHJpbmcsIHVuZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4obWVzc2FnZU9yVW5leHBlY3RlZD86IHN0cmluZyB8IFQsIHVuZXhwZWN0ZWRPckFjdHVhbD86IFQsIGFjdHVhbE9yVW5kZWZpbmVkPzogVCk6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0Tm90RXF1YWxzKG1lc3NhZ2VPclVuZXhwZWN0ZWQsIHVuZXhwZWN0ZWRPckFjdHVhbCwgYWN0dWFsT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0Tm90RXF1YWxzKG1lc3NhZ2VPclVuZXhwZWN0ZWQsIHVuZXhwZWN0ZWRPckFjdHVhbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIGNvbmRpdGlvbiBpcyB0cnVlLlxuICpcbiAqIEBwYXJhbSBjb25kaXRpb24gVGhlIGNvbmRpdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKG1lc3NhZ2U6IHN0cmluZywgY29uZGl0aW9uOiBib29sZWFuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFRydWUobWVzc2FnZU9yQ29uZGl0aW9uPzogc3RyaW5nIHwgYm9vbGVhbiwgY29uZGl0aW9uT3JVbmRlZmluZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbiwgY29uZGl0aW9uT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0VHJ1ZShtZXNzYWdlT3JDb25kaXRpb24pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgZmFsc2UuXG4gKlxuICogQHBhcmFtIGNvbmRpdGlvbiBUaGUgY29uZGl0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gbWVzc2FnZSBPcHRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkgaWYgdGhlIGFzc2VydGlvbiBmYWlscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEZhbHNlKGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRGYWxzZShtZXNzYWdlOiBzdHJpbmcsIGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRGYWxzZShtZXNzYWdlT3JDb25kaXRpb24/OiBzdHJpbmcgfCBib29sZWFuLCBjb25kaXRpb25PclVuZGVmaW5lZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBBc3NlcnRpb25zLmFzc2VydEZhbHNlKG1lc3NhZ2VPckNvbmRpdGlvbiwgY29uZGl0aW9uT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RmFsc2UobWVzc2FnZU9yQ29uZGl0aW9uKTtcbiAgICB9XG59XG5cbi8qKlxuICogRmFpbHMgYSB0ZXN0IGltbWVkaWF0ZWx5LlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpbmRpY2F0aW5nIHRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFpbCgpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5mYWlsKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuZmFpbCgpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYWxsIHRlc3QgcmVzdWx0cyBjb2xsZWN0ZWQgZHVyaW5nIHRoaXMgc2Vzc2lvbi5cbiAqXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiB0ZXN0IHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXN1bHRzKCk6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3RhdHVzOiAncGFzc2VkJyB8ICdmYWlsZWQnIHwgJ3NraXBwZWQnO1xuICAgIGR1cmF0aW9uOiBudW1iZXI7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgc3RhY2tUcmFjZT86IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IG51bWJlcjtcbn0+IHtcbiAgICByZXR1cm4gcmVzdWx0Q29sbGVjdG9yLmdldFJlc3VsdHMoKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBzdW1tYXJ5IG9mIHRlc3QgZXhlY3V0aW9uLlxuICpcbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIGNvdW50cyBhbmQgdG90YWwgZHVyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXN1bHRzU3VtbWFyeSgpOiB7XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBwYXNzZWQ6IG51bWJlcjtcbiAgICBmYWlsZWQ6IG51bWJlcjtcbiAgICBza2lwcGVkOiBudW1iZXI7XG4gICAgZHVyYXRpb246IG51bWJlcjtcbn0ge1xuICAgIHJldHVybiByZXN1bHRDb2xsZWN0b3IuZ2V0U3VtbWFyeSgpO1xufVxuXG4vKipcbiAqIENsZWFycyBhbGwgY29sbGVjdGVkIHRlc3QgcmVzdWx0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyUmVzdWx0cygpOiB2b2lkIHtcbiAgICByZXN1bHRDb2xsZWN0b3IuY2xlYXJSZXN1bHRzKCk7XG59XG5cbi8qKlxuICogQ2xlYXJzIGFsbCBjb2xsZWN0ZWQgdGVzdCByZXN1bHRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcmVSZXN1bHRzKCk6IHZvaWQge1xuICAgIHJlc3VsdENvbGxlY3Rvci5zdG9yZVJlc3VsdHMoKTtcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvQ0Esa0JBQXlCO0FBRXpCLE1BQU0sYUFB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
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* ### Key Features:
|
|
10
10
|
* - **Test Definition**: The `test` function allows developers to define individual test cases with a descriptive name and a function containing the test logic.
|
|
11
11
|
* - **Assertions**: Functions such as `assertEquals`, `assertNotEquals`, `assertTrue`, `assertFalse`, and `fail` provide a variety of assertion methods to validate conditions and compare values within tests.
|
|
12
|
+
* - **Result Tracking**: Test results are automatically captured and can be retrieved via the results API.
|
|
12
13
|
*
|
|
13
14
|
* ### Use Cases:
|
|
14
15
|
* - **Unit Testing**: These utilities are primarily used for writing unit tests to verify the functionality of individual components or functions in isolation.
|
|
@@ -16,17 +17,20 @@
|
|
|
16
17
|
*
|
|
17
18
|
* ### Example Usage:
|
|
18
19
|
* ```ts
|
|
19
|
-
* import { test, assertEquals, assertTrue } from "@aerokit/sdk/junit";
|
|
20
|
+
* import { test, assertEquals, assertTrue, storeResults } from "@aerokit/sdk/junit";
|
|
20
21
|
*
|
|
21
22
|
* test("should add two numbers correctly", () => {
|
|
22
|
-
* const result =
|
|
23
|
+
* const result = 2 + 3;
|
|
23
24
|
* assertEquals(5, result);
|
|
24
25
|
* });
|
|
25
26
|
*
|
|
26
27
|
* test("should return true for valid input", () => {
|
|
27
|
-
* const isValid =
|
|
28
|
+
* const isValid = false; // Replace with actual validation logic
|
|
28
29
|
* assertTrue(isValid);
|
|
29
30
|
* });
|
|
31
|
+
*
|
|
32
|
+
* // After running tests, store results for later retrieval
|
|
33
|
+
* storeResults();
|
|
30
34
|
* ```
|
|
31
35
|
*/
|
|
32
36
|
/**
|
|
@@ -79,3 +83,36 @@ export declare function assertFalse(message: string, condition: boolean): void;
|
|
|
79
83
|
*/
|
|
80
84
|
export declare function fail(): void;
|
|
81
85
|
export declare function fail(message: string): void;
|
|
86
|
+
/**
|
|
87
|
+
* Retrieves all test results collected during this session.
|
|
88
|
+
*
|
|
89
|
+
* @returns An array of test results.
|
|
90
|
+
*/
|
|
91
|
+
export declare function getResults(): Array<{
|
|
92
|
+
name: string;
|
|
93
|
+
status: 'passed' | 'failed' | 'skipped';
|
|
94
|
+
duration: number;
|
|
95
|
+
error?: string;
|
|
96
|
+
stackTrace?: string;
|
|
97
|
+
timestamp: number;
|
|
98
|
+
}>;
|
|
99
|
+
/**
|
|
100
|
+
* Retrieves a summary of test execution.
|
|
101
|
+
*
|
|
102
|
+
* @returns An object containing counts and total duration.
|
|
103
|
+
*/
|
|
104
|
+
export declare function getResultsSummary(): {
|
|
105
|
+
total: number;
|
|
106
|
+
passed: number;
|
|
107
|
+
failed: number;
|
|
108
|
+
skipped: number;
|
|
109
|
+
duration: number;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Clears all collected test results.
|
|
113
|
+
*/
|
|
114
|
+
export declare function clearResults(): void;
|
|
115
|
+
/**
|
|
116
|
+
* Clears all collected test results.
|
|
117
|
+
*/
|
|
118
|
+
export declare function storeResults(): void;
|
package/dist/esm/junit/junit.mjs
CHANGED
|
@@ -1,48 +1,135 @@
|
|
|
1
|
-
|
|
1
|
+
import { Response } from "@aerokit/sdk/http";
|
|
2
|
+
const Assertions = Java.type("org.junit.jupiter.api.Assertions");
|
|
3
|
+
const TestResultsService = Java.type("org.eclipse.dirigible.components.ide.junit.service.TestResultsService");
|
|
4
|
+
const ArrayList = Java.type("java.util.ArrayList");
|
|
5
|
+
const TestResult = Java.type("org.eclipse.dirigible.components.ide.junit.domain.TestResult");
|
|
6
|
+
class TestResultCollector {
|
|
7
|
+
results = [];
|
|
8
|
+
currentTest = null;
|
|
9
|
+
haveFailedTests = false;
|
|
10
|
+
hasFailedTests() {
|
|
11
|
+
return this.haveFailedTests;
|
|
12
|
+
}
|
|
13
|
+
recordTestStart(name) {
|
|
14
|
+
this.currentTest = { name, startTime: (/* @__PURE__ */ new Date()).getTime() };
|
|
15
|
+
}
|
|
16
|
+
recordTestComplete(status, error) {
|
|
17
|
+
if (!this.currentTest) return;
|
|
18
|
+
const result = {
|
|
19
|
+
name: this.currentTest.name,
|
|
20
|
+
status,
|
|
21
|
+
duration: (/* @__PURE__ */ new Date()).getTime() - this.currentTest.startTime,
|
|
22
|
+
timestamp: (/* @__PURE__ */ new Date()).getTime()
|
|
23
|
+
};
|
|
24
|
+
if (error) {
|
|
25
|
+
result.error = error.message;
|
|
26
|
+
result.stackTrace = error.stackTrace;
|
|
27
|
+
}
|
|
28
|
+
this.results.push(result);
|
|
29
|
+
this.currentTest = null;
|
|
30
|
+
if (status === "failed" || error) {
|
|
31
|
+
this.haveFailedTests = true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
getResults() {
|
|
35
|
+
return [...this.results];
|
|
36
|
+
}
|
|
37
|
+
storeResults() {
|
|
38
|
+
const resultsList = new ArrayList();
|
|
39
|
+
this.results.forEach((e) => resultsList.add(new TestResult(e.name, e.status, e.duration, e.error, e.stackTrace, e.timestamp)));
|
|
40
|
+
TestResultsService.get().storeResults(resultsList);
|
|
41
|
+
Response.sendRedirect("/services/web/ide-junit-results/junit-results");
|
|
42
|
+
}
|
|
43
|
+
getSummary() {
|
|
44
|
+
const results = this.results;
|
|
45
|
+
const total = results.length;
|
|
46
|
+
const passed = results.filter((r) => r.status === "passed").length;
|
|
47
|
+
const failed = results.filter((r) => r.status === "failed").length;
|
|
48
|
+
const skipped = results.filter((r) => r.status === "skipped").length;
|
|
49
|
+
const duration = results.reduce((sum, r) => sum + r.duration, 0);
|
|
50
|
+
return { total, passed, failed, skipped, duration };
|
|
51
|
+
}
|
|
52
|
+
clearResults() {
|
|
53
|
+
this.results = [];
|
|
54
|
+
this.currentTest = null;
|
|
55
|
+
this.haveFailedTests = false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const resultCollector = new TestResultCollector();
|
|
2
59
|
function test(name, testFn) {
|
|
3
|
-
|
|
60
|
+
resultCollector.recordTestStart(name);
|
|
61
|
+
if (resultCollector.hasFailedTests()) {
|
|
62
|
+
resultCollector.recordTestComplete("skipped");
|
|
63
|
+
console.log(`- Skipping test "${name}" due to previous failures`);
|
|
64
|
+
} else {
|
|
65
|
+
try {
|
|
66
|
+
testFn();
|
|
67
|
+
resultCollector.recordTestComplete("passed");
|
|
68
|
+
} catch (error) {
|
|
69
|
+
resultCollector.recordTestComplete("failed", {
|
|
70
|
+
message: error?.message || String(error),
|
|
71
|
+
stackTrace: error?.stack
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
4
75
|
}
|
|
5
76
|
function assertEquals(messageOrExpected, expectedOrActual, actualOrUndefined) {
|
|
6
77
|
if (arguments.length === 3) {
|
|
7
|
-
|
|
78
|
+
Assertions.assertEquals(messageOrExpected, expectedOrActual, actualOrUndefined);
|
|
8
79
|
} else {
|
|
9
|
-
|
|
80
|
+
Assertions.assertEquals(messageOrExpected, expectedOrActual);
|
|
10
81
|
}
|
|
11
82
|
}
|
|
12
83
|
function assertNotEquals(messageOrUnexpected, unexpectedOrActual, actualOrUndefined) {
|
|
13
84
|
if (arguments.length === 3) {
|
|
14
|
-
|
|
85
|
+
Assertions.assertNotEquals(messageOrUnexpected, unexpectedOrActual, actualOrUndefined);
|
|
15
86
|
} else {
|
|
16
|
-
|
|
87
|
+
Assertions.assertNotEquals(messageOrUnexpected, unexpectedOrActual);
|
|
17
88
|
}
|
|
18
89
|
}
|
|
19
90
|
function assertTrue(messageOrCondition, conditionOrUndefined) {
|
|
20
91
|
if (arguments.length === 2) {
|
|
21
|
-
|
|
92
|
+
Assertions.assertTrue(messageOrCondition, conditionOrUndefined);
|
|
22
93
|
} else {
|
|
23
|
-
|
|
94
|
+
Assertions.assertTrue(messageOrCondition);
|
|
24
95
|
}
|
|
25
96
|
}
|
|
26
97
|
function assertFalse(messageOrCondition, conditionOrUndefined) {
|
|
27
98
|
if (arguments.length === 2) {
|
|
28
|
-
|
|
99
|
+
Assertions.assertFalse(messageOrCondition, conditionOrUndefined);
|
|
29
100
|
} else {
|
|
30
|
-
|
|
101
|
+
Assertions.assertFalse(messageOrCondition);
|
|
31
102
|
}
|
|
32
103
|
}
|
|
33
104
|
function fail(message) {
|
|
34
105
|
if (message) {
|
|
35
|
-
|
|
106
|
+
Assertions.fail(message);
|
|
36
107
|
} else {
|
|
37
|
-
|
|
108
|
+
Assertions.fail();
|
|
38
109
|
}
|
|
39
110
|
}
|
|
111
|
+
function getResults() {
|
|
112
|
+
return resultCollector.getResults();
|
|
113
|
+
}
|
|
114
|
+
function getResultsSummary() {
|
|
115
|
+
return resultCollector.getSummary();
|
|
116
|
+
}
|
|
117
|
+
function clearResults() {
|
|
118
|
+
resultCollector.clearResults();
|
|
119
|
+
}
|
|
120
|
+
function storeResults() {
|
|
121
|
+
resultCollector.storeResults();
|
|
122
|
+
}
|
|
40
123
|
export {
|
|
41
124
|
assertEquals,
|
|
42
125
|
assertFalse,
|
|
43
126
|
assertNotEquals,
|
|
44
127
|
assertTrue,
|
|
128
|
+
clearResults,
|
|
45
129
|
fail,
|
|
130
|
+
getResults,
|
|
131
|
+
getResultsSummary,
|
|
132
|
+
storeResults,
|
|
46
133
|
test
|
|
47
134
|
};
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2p1bml0L2p1bml0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUganVuaXQvanVuaXRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9qdW5pdFxuICogQG5hbWUgSlVuaXRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgSlVuaXQgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBkZWZpbmluZyB0ZXN0cyBhbmQgcGVyZm9ybWluZyBhc3NlcnRpb25zLCB3cmFwcGluZyB0aGUgbmF0aXZlIEpVbml0IEFzc2VydGlvbnMgZm9yIHVzZSBpbiBUeXBlU2NyaXB0L0phdmFTY3JpcHQgdGVzdHMuIEl0IGFsbG93cyBkZXZlbG9wZXJzIHRvIHdyaXRlIHRlc3QgY2FzZXMgaW4gYSBmYW1pbGlhciBmb3JtYXQgd2hpbGUgbGV2ZXJhZ2luZyB0aGUgcG93ZXJmdWwgYXNzZXJ0aW9uIGNhcGFiaWxpdGllcyBvZiBKVW5pdCwgbWFraW5nIGl0IGVhc2llciB0byB2YWxpZGF0ZSBjb2RlIGJlaGF2aW9yIGFuZCBlbnN1cmUgY29ycmVjdG5lc3MuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXM6XG4gKiAtICoqVGVzdCBEZWZpbml0aW9uKio6IFRoZSBgdGVzdGAgZnVuY3Rpb24gYWxsb3dzIGRldmVsb3BlcnMgdG8gZGVmaW5lIGluZGl2aWR1YWwgdGVzdCBjYXNlcyB3aXRoIGEgZGVzY3JpcHRpdmUgbmFtZSBhbmQgYSBmdW5jdGlvbiBjb250YWluaW5nIHRoZSB0ZXN0IGxvZ2ljLlxuICogLSAqKkFzc2VydGlvbnMqKjogRnVuY3Rpb25zIHN1Y2ggYXMgYGFzc2VydEVxdWFsc2AsIGBhc3NlcnROb3RFcXVhbHNgLCBgYXNzZXJ0VHJ1ZWAsIGBhc3NlcnRGYWxzZWAsIGFuZCBgZmFpbGAgcHJvdmlkZSBhIHZhcmlldHkgb2YgYXNzZXJ0aW9uIG1ldGhvZHMgdG8gdmFsaWRhdGUgY29uZGl0aW9ucyBhbmQgY29tcGFyZSB2YWx1ZXMgd2l0aGluIHRlc3RzLlxuICogXG4gKiAjIyMgVXNlIENhc2VzOlxuICogLSAqKlVuaXQgVGVzdGluZyoqOiBUaGVzZSB1dGlsaXRpZXMgYXJlIHByaW1hcmlseSB1c2VkIGZvciB3cml0aW5nIHVuaXQgdGVzdHMgdG8gdmVyaWZ5IHRoZSBmdW5jdGlvbmFsaXR5IG9mIGluZGl2aWR1YWwgY29tcG9uZW50cyBvciBmdW5jdGlvbnMgaW4gaXNvbGF0aW9uLlxuICogLSAqKkludGVncmF0aW9uIFRlc3RpbmcqKjogVGhleSBjYW4gYWxzbyBiZSB1c2VkIGluIGludGVncmF0aW9uIHRlc3RzIHRvIHZhbGlkYXRlIHRoZSBiZWhhdmlvciBvZiBtdWx0aXBsZSBjb21wb25lbnRzIHdvcmtpbmcgdG9nZXRoZXIsIGVuc3VyaW5nIHRoYXQgdGhleSBpbnRlcmFjdCBjb3JyZWN0bHkuXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRlc3QsIGFzc2VydEVxdWFscywgYXNzZXJ0VHJ1ZSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvanVuaXRcIjtcbiAqIFxuICogdGVzdChcInNob3VsZCBhZGQgdHdvIG51bWJlcnMgY29ycmVjdGx5XCIsICgpID0+IHtcbiAqICAgICBjb25zdCByZXN1bHQgPSBhZGQoMiwgMyk7XG4gKiAgICAgYXNzZXJ0RXF1YWxzKDUsIHJlc3VsdCk7XG4gKiB9KTtcbiAqIFxuICogdGVzdChcInNob3VsZCByZXR1cm4gdHJ1ZSBmb3IgdmFsaWQgaW5wdXRcIiwgKCkgPT4ge1xuICogICAgIGNvbnN0IGlzVmFsaWQgPSB2YWxpZGF0ZUlucHV0KFwidmFsaWQgaW5wdXRcIik7XG4gKiAgICAgYXNzZXJ0VHJ1ZShpc1ZhbGlkKTtcbiAqIH0pO1xuICogYGBgXG4gKi9cblxuY29uc3QgQXNzZXJ0ID0gSmF2YS50eXBlKCdvcmcuanVuaXQuQXNzZXJ0Jyk7XG5cbi8qKlxuICogRGVmaW5lcyBhIHRlc3QgY2FzZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlLlxuICogQHBhcmFtIHRlc3RGbiBUaGUgZnVuY3Rpb24gY29udGFpbmluZyB0aGUgdGVzdCBsb2dpYyBhbmQgYXNzZXJ0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QobmFtZTogc3RyaW5nLCB0ZXN0Rm46ICgpID0+IHZvaWQpIHtcbiAgICAvLyBDYWxscyB0aGUgZ2xvYmFsIHRlc3QgcnVubmVyIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IHRoZSBTREsgZW52aXJvbm1lbnQuXG4gICAgKGdsb2JhbFRoaXMgYXMgYW55KS50ZXN0KG5hbWUsIHRlc3RGbik7XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IHR3byBvYmplY3RzIG9yIHByaW1pdGl2ZSB2YWx1ZXMgYXJlIGVxdWFsLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZXMgYmVpbmcgY29tcGFyZWQuXG4gKiBAcGFyYW0gZXhwZWN0ZWQgVGhlIGV4cGVjdGVkIHZhbHVlLlxuICogQHBhcmFtIGFjdHVhbCBUaGUgYWN0dWFsIHZhbHVlLlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbHM8VD4oZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbHM8VD4obWVzc2FnZTogc3RyaW5nLCBleHBlY3RlZDogVCwgYWN0dWFsOiBUKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEVxdWFsczxUPihtZXNzYWdlT3JFeHBlY3RlZD86IHN0cmluZyB8IFQsIGV4cGVjdGVkT3JBY3R1YWw/OiBULCBhY3R1YWxPclVuZGVmaW5lZD86IFQpOiB2b2lkIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICBBc3NlcnQuYXNzZXJ0RXF1YWxzKG1lc3NhZ2VPckV4cGVjdGVkLCBleHBlY3RlZE9yQWN0dWFsLCBhY3R1YWxPclVuZGVmaW5lZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgQXNzZXJ0LmFzc2VydEVxdWFscyhtZXNzYWdlT3JFeHBlY3RlZCwgZXhwZWN0ZWRPckFjdHVhbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0d28gb2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzIGFyZSBub3QgZXF1YWwuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIHZhbHVlcyBiZWluZyBjb21wYXJlZC5cbiAqIEBwYXJhbSB1bmV4cGVjdGVkIFRoZSB1bmV4cGVjdGVkIHZhbHVlLlxuICogQHBhcmFtIGFjdHVhbCBUaGUgYWN0dWFsIHZhbHVlLlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4odW5leHBlY3RlZDogVCwgYWN0dWFsOiBUKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFsczxUPihtZXNzYWdlOiBzdHJpbmcsIHVuZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4obWVzc2FnZU9yVW5leHBlY3RlZD86IHN0cmluZyB8IFQsIHVuZXhwZWN0ZWRPckFjdHVhbD86IFQsIGFjdHVhbE9yVW5kZWZpbmVkPzogVCk6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnROb3RFcXVhbHMobWVzc2FnZU9yVW5leHBlY3RlZCwgdW5leHBlY3RlZE9yQWN0dWFsLCBhY3R1YWxPclVuZGVmaW5lZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgQXNzZXJ0LmFzc2VydE5vdEVxdWFscyhtZXNzYWdlT3JVbmV4cGVjdGVkLCB1bmV4cGVjdGVkT3JBY3R1YWwpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgdHJ1ZS5cbiAqXG4gKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBjb25kaXRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpZiB0aGUgYXNzZXJ0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VHJ1ZShjb25kaXRpb246IGJvb2xlYW4pOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VHJ1ZShtZXNzYWdlOiBzdHJpbmcsIGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbj86IHN0cmluZyB8IGJvb2xlYW4sIGNvbmRpdGlvbk9yVW5kZWZpbmVkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbiwgY29uZGl0aW9uT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbik7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIGNvbmRpdGlvbiBpcyBmYWxzZS5cbiAqXG4gKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBjb25kaXRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpZiB0aGUgYXNzZXJ0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RmFsc2UoY29uZGl0aW9uOiBib29sZWFuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEZhbHNlKG1lc3NhZ2U6IHN0cmluZywgY29uZGl0aW9uOiBib29sZWFuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEZhbHNlKG1lc3NhZ2VPckNvbmRpdGlvbj86IHN0cmluZyB8IGJvb2xlYW4sIGNvbmRpdGlvbk9yVW5kZWZpbmVkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnRGYWxzZShtZXNzYWdlT3JDb25kaXRpb24sIGNvbmRpdGlvbk9yVW5kZWZpbmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBBc3NlcnQuYXNzZXJ0RmFsc2UobWVzc2FnZU9yQ29uZGl0aW9uKTtcbiAgICB9XG59XG5cbi8qKlxuICogRmFpbHMgYSB0ZXN0IGltbWVkaWF0ZWx5LlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpbmRpY2F0aW5nIHRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFpbCgpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgQXNzZXJ0LmZhaWwobWVzc2FnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgQXNzZXJ0LmZhaWwoKTtcbiAgICB9XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBZ0NBLE1BQU0sU0FBUyxLQUFLLEtBQUssa0JBQWtCO0FBUXBDLFNBQVMsS0FBSyxNQUFjLFFBQW9CO0FBRW5ELEVBQUMsV0FBbUIsS0FBSyxNQUFNLE1BQU07QUFDekM7QUFZTyxTQUFTLGFBQWdCLG1CQUFnQyxrQkFBc0IsbUJBQTZCO0FBQy9HLE1BQUksVUFBVSxXQUFXLEdBQUc7QUFDeEIsV0FBTyxhQUFhLG1CQUFtQixrQkFBa0IsaUJBQWlCO0FBQUEsRUFDOUUsT0FBTztBQUNILFdBQU8sYUFBYSxtQkFBbUIsZ0JBQWdCO0FBQUEsRUFDM0Q7QUFDSjtBQVlPLFNBQVMsZ0JBQW1CLHFCQUFrQyxvQkFBd0IsbUJBQTZCO0FBQ3RILE1BQUksVUFBVSxXQUFXLEdBQUc7QUFDeEIsV0FBTyxnQkFBZ0IscUJBQXFCLG9CQUFvQixpQkFBaUI7QUFBQSxFQUNyRixPQUFPO0FBQ0gsV0FBTyxnQkFBZ0IscUJBQXFCLGtCQUFrQjtBQUFBLEVBQ2xFO0FBQ0o7QUFVTyxTQUFTLFdBQVcsb0JBQXVDLHNCQUFzQztBQUNwRyxNQUFJLFVBQVUsV0FBVyxHQUFHO0FBQ3hCLFdBQU8sV0FBVyxvQkFBb0Isb0JBQW9CO0FBQUEsRUFDOUQsT0FBTztBQUNILFdBQU8sV0FBVyxrQkFBa0I7QUFBQSxFQUN4QztBQUNKO0FBVU8sU0FBUyxZQUFZLG9CQUF1QyxzQkFBc0M7QUFDckcsTUFBSSxVQUFVLFdBQVcsR0FBRztBQUN4QixXQUFPLFlBQVksb0JBQW9CLG9CQUFvQjtBQUFBLEVBQy9ELE9BQU87QUFDSCxXQUFPLFlBQVksa0JBQWtCO0FBQUEsRUFDekM7QUFDSjtBQVNPLFNBQVMsS0FBSyxTQUF3QjtBQUN6QyxNQUFJLFNBQVM7QUFDVCxXQUFPLEtBQUssT0FBTztBQUFBLEVBQ3ZCLE9BQU87QUFDSCxXQUFPLEtBQUs7QUFBQSxFQUNoQjtBQUNKOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2p1bml0L2p1bml0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUganVuaXQvanVuaXRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9qdW5pdFxuICogQG5hbWUgSlVuaXRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgSlVuaXQgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBkZWZpbmluZyB0ZXN0cyBhbmQgcGVyZm9ybWluZyBhc3NlcnRpb25zLCB3cmFwcGluZyB0aGUgbmF0aXZlIEpVbml0IEFzc2VydGlvbnMgZm9yIHVzZSBpbiBUeXBlU2NyaXB0L0phdmFTY3JpcHQgdGVzdHMuIEl0IGFsbG93cyBkZXZlbG9wZXJzIHRvIHdyaXRlIHRlc3QgY2FzZXMgaW4gYSBmYW1pbGlhciBmb3JtYXQgd2hpbGUgbGV2ZXJhZ2luZyB0aGUgcG93ZXJmdWwgYXNzZXJ0aW9uIGNhcGFiaWxpdGllcyBvZiBKVW5pdCwgbWFraW5nIGl0IGVhc2llciB0byB2YWxpZGF0ZSBjb2RlIGJlaGF2aW9yIGFuZCBlbnN1cmUgY29ycmVjdG5lc3MuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXM6XG4gKiAtICoqVGVzdCBEZWZpbml0aW9uKio6IFRoZSBgdGVzdGAgZnVuY3Rpb24gYWxsb3dzIGRldmVsb3BlcnMgdG8gZGVmaW5lIGluZGl2aWR1YWwgdGVzdCBjYXNlcyB3aXRoIGEgZGVzY3JpcHRpdmUgbmFtZSBhbmQgYSBmdW5jdGlvbiBjb250YWluaW5nIHRoZSB0ZXN0IGxvZ2ljLlxuICogLSAqKkFzc2VydGlvbnMqKjogRnVuY3Rpb25zIHN1Y2ggYXMgYGFzc2VydEVxdWFsc2AsIGBhc3NlcnROb3RFcXVhbHNgLCBgYXNzZXJ0VHJ1ZWAsIGBhc3NlcnRGYWxzZWAsIGFuZCBgZmFpbGAgcHJvdmlkZSBhIHZhcmlldHkgb2YgYXNzZXJ0aW9uIG1ldGhvZHMgdG8gdmFsaWRhdGUgY29uZGl0aW9ucyBhbmQgY29tcGFyZSB2YWx1ZXMgd2l0aGluIHRlc3RzLlxuICogLSAqKlJlc3VsdCBUcmFja2luZyoqOiBUZXN0IHJlc3VsdHMgYXJlIGF1dG9tYXRpY2FsbHkgY2FwdHVyZWQgYW5kIGNhbiBiZSByZXRyaWV2ZWQgdmlhIHRoZSByZXN1bHRzIEFQSS5cbiAqIFxuICogIyMjIFVzZSBDYXNlczpcbiAqIC0gKipVbml0IFRlc3RpbmcqKjogVGhlc2UgdXRpbGl0aWVzIGFyZSBwcmltYXJpbHkgdXNlZCBmb3Igd3JpdGluZyB1bml0IHRlc3RzIHRvIHZlcmlmeSB0aGUgZnVuY3Rpb25hbGl0eSBvZiBpbmRpdmlkdWFsIGNvbXBvbmVudHMgb3IgZnVuY3Rpb25zIGluIGlzb2xhdGlvbi5cbiAqIC0gKipJbnRlZ3JhdGlvbiBUZXN0aW5nKio6IFRoZXkgY2FuIGFsc28gYmUgdXNlZCBpbiBpbnRlZ3JhdGlvbiB0ZXN0cyB0byB2YWxpZGF0ZSB0aGUgYmVoYXZpb3Igb2YgbXVsdGlwbGUgY29tcG9uZW50cyB3b3JraW5nIHRvZ2V0aGVyLCBlbnN1cmluZyB0aGF0IHRoZXkgaW50ZXJhY3QgY29ycmVjdGx5LlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0ZXN0LCBhc3NlcnRFcXVhbHMsIGFzc2VydFRydWUsIHN0b3JlUmVzdWx0cyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvanVuaXRcIjtcbiAqIFxuICogdGVzdChcInNob3VsZCBhZGQgdHdvIG51bWJlcnMgY29ycmVjdGx5XCIsICgpID0+IHtcbiAqICAgICBjb25zdCByZXN1bHQgPSAyICsgMztcbiAqICAgICBhc3NlcnRFcXVhbHMoNSwgcmVzdWx0KTtcbiAqIH0pO1xuICogXG4gKiB0ZXN0KFwic2hvdWxkIHJldHVybiB0cnVlIGZvciB2YWxpZCBpbnB1dFwiLCAoKSA9PiB7XG4gKiAgICAgY29uc3QgaXNWYWxpZCA9IGZhbHNlOyAvLyBSZXBsYWNlIHdpdGggYWN0dWFsIHZhbGlkYXRpb24gbG9naWNcbiAqICAgICBhc3NlcnRUcnVlKGlzVmFsaWQpO1xuICogfSk7XG4gKiBcbiAqIC8vIEFmdGVyIHJ1bm5pbmcgdGVzdHMsIHN0b3JlIHJlc3VsdHMgZm9yIGxhdGVyIHJldHJpZXZhbFxuICogc3RvcmVSZXN1bHRzKCk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ0BhZXJva2l0L3Nkay9odHRwJztcblxuY29uc3QgQXNzZXJ0aW9ucyA9IEphdmEudHlwZSgnb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLkFzc2VydGlvbnMnKTtcbmNvbnN0IFRlc3RSZXN1bHRzU2VydmljZSA9IEphdmEudHlwZSgnb3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuaWRlLmp1bml0LnNlcnZpY2UuVGVzdFJlc3VsdHNTZXJ2aWNlJyk7XG5jb25zdCBBcnJheUxpc3QgPSBKYXZhLnR5cGUoJ2phdmEudXRpbC5BcnJheUxpc3QnKTtcbmNvbnN0IFRlc3RSZXN1bHQgPSBKYXZhLnR5cGUoJ29yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmlkZS5qdW5pdC5kb21haW4uVGVzdFJlc3VsdCcpO1xuXG4vLyBUZXN0IFJlc3VsdCBUcmFja2luZ1xuaW50ZXJmYWNlIFRlc3RSZXN1bHQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzdGF0dXM6ICdwYXNzZWQnIHwgJ2ZhaWxlZCcgfCAnc2tpcHBlZCc7XG4gICAgZHVyYXRpb246IG51bWJlcjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBzdGFja1RyYWNlPzogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG5jbGFzcyBUZXN0UmVzdWx0Q29sbGVjdG9yIHtcbiAgICBwcml2YXRlIHJlc3VsdHM6IFRlc3RSZXN1bHRbXSA9IFtdO1xuICAgIHByaXZhdGUgY3VycmVudFRlc3Q6IHsgbmFtZTogc3RyaW5nOyBzdGFydFRpbWU6IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBoYXZlRmFpbGVkVGVzdHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBoYXNGYWlsZWRUZXN0cygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGF2ZUZhaWxlZFRlc3RzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWNvcmRUZXN0U3RhcnQobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFRlc3QgPSB7IG5hbWUsIHN0YXJ0VGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVjb3JkVGVzdENvbXBsZXRlKHN0YXR1czogJ3Bhc3NlZCcgfCAnZmFpbGVkJyB8ICdza2lwcGVkJywgZXJyb3I/OiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2tUcmFjZT86IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50VGVzdCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogVGVzdFJlc3VsdCA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuY3VycmVudFRlc3QubmFtZSxcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuY3VycmVudFRlc3Quc3RhcnRUaW1lLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlc3VsdC5lcnJvciA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgICByZXN1bHQuc3RhY2tUcmFjZSA9IGVycm9yLnN0YWNrVHJhY2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gbnVsbDtcblxuICAgICAgICBpZiAoc3RhdHVzID09PSAnZmFpbGVkJyB8fCBlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5oYXZlRmFpbGVkVGVzdHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJlc3VsdHMoKTogVGVzdFJlc3VsdFtdIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLnJlc3VsdHNdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdG9yZVJlc3VsdHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHNMaXN0ID0gbmV3IEFycmF5TGlzdCgpO1xuICAgICAgICB0aGlzLnJlc3VsdHMuZm9yRWFjaChlID0+IHJlc3VsdHNMaXN0LmFkZChuZXcgVGVzdFJlc3VsdChlLm5hbWUsIGUuc3RhdHVzLCBlLmR1cmF0aW9uLCBlLmVycm9yLCBlLnN0YWNrVHJhY2UsIGUudGltZXN0YW1wKSkpO1xuICAgICAgICBUZXN0UmVzdWx0c1NlcnZpY2UuZ2V0KCkuc3RvcmVSZXN1bHRzKHJlc3VsdHNMaXN0KTtcbiAgICAgICAgUmVzcG9uc2Uuc2VuZFJlZGlyZWN0KCcvc2VydmljZXMvd2ViL2lkZS1qdW5pdC1yZXN1bHRzL2p1bml0LXJlc3VsdHMnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3VtbWFyeSgpOiB7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIHBhc3NlZDogbnVtYmVyO1xuICAgICAgICBmYWlsZWQ6IG51bWJlcjtcbiAgICAgICAgc2tpcHBlZDogbnVtYmVyO1xuICAgICAgICBkdXJhdGlvbjogbnVtYmVyO1xuICAgIH0ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5yZXN1bHRzO1xuICAgICAgICBjb25zdCB0b3RhbCA9IHJlc3VsdHMubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXNzZWQgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuc3RhdHVzID09PSAncGFzc2VkJykubGVuZ3RoO1xuICAgICAgICBjb25zdCBmYWlsZWQgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuc3RhdHVzID09PSAnZmFpbGVkJykubGVuZ3RoO1xuICAgICAgICBjb25zdCBza2lwcGVkID0gcmVzdWx0cy5maWx0ZXIociA9PiByLnN0YXR1cyA9PT0gJ3NraXBwZWQnKS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gcmVzdWx0cy5yZWR1Y2UoKHN1bSwgcikgPT4gc3VtICsgci5kdXJhdGlvbiwgMCk7XG5cbiAgICAgICAgcmV0dXJuIHsgdG90YWwsIHBhc3NlZCwgZmFpbGVkLCBza2lwcGVkLCBkdXJhdGlvbiB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclJlc3VsdHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5oYXZlRmFpbGVkVGVzdHMgPSBmYWxzZTtcbiAgICB9XG59XG5cbmNvbnN0IHJlc3VsdENvbGxlY3RvciA9IG5ldyBUZXN0UmVzdWx0Q29sbGVjdG9yKCk7XG5cbi8qKlxuICogRGVmaW5lcyBhIHRlc3QgY2FzZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlLlxuICogQHBhcmFtIHRlc3RGbiBUaGUgZnVuY3Rpb24gY29udGFpbmluZyB0aGUgdGVzdCBsb2dpYyBhbmQgYXNzZXJ0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QobmFtZTogc3RyaW5nLCB0ZXN0Rm46ICgpID0+IHZvaWQpIHtcbiAgICByZXN1bHRDb2xsZWN0b3IucmVjb3JkVGVzdFN0YXJ0KG5hbWUpO1xuICAgIGlmIChyZXN1bHRDb2xsZWN0b3IuaGFzRmFpbGVkVGVzdHMoKSkge1xuICAgICAgICByZXN1bHRDb2xsZWN0b3IucmVjb3JkVGVzdENvbXBsZXRlKCdza2lwcGVkJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAtIFNraXBwaW5nIHRlc3QgXCIke25hbWV9XCIgZHVlIHRvIHByZXZpb3VzIGZhaWx1cmVzYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRlc3RGbigpO1xuICAgICAgICAgICAgcmVzdWx0Q29sbGVjdG9yLnJlY29yZFRlc3RDb21wbGV0ZSgncGFzc2VkJyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHJlc3VsdENvbGxlY3Rvci5yZWNvcmRUZXN0Q29tcGxldGUoJ2ZhaWxlZCcsIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvcj8ubWVzc2FnZSB8fCBTdHJpbmcoZXJyb3IpLFxuICAgICAgICAgICAgICAgIHN0YWNrVHJhY2U6IGVycm9yPy5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0d28gb2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzIGFyZSBlcXVhbC5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgdmFsdWVzIGJlaW5nIGNvbXBhcmVkLlxuICogQHBhcmFtIGV4cGVjdGVkIFRoZSBleHBlY3RlZCB2YWx1ZS5cbiAqIEBwYXJhbSBhY3R1YWwgVGhlIGFjdHVhbCB2YWx1ZS5cbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpZiB0aGUgYXNzZXJ0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzPFQ+KGV4cGVjdGVkOiBULCBhY3R1YWw6IFQpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzPFQ+KG1lc3NhZ2U6IHN0cmluZywgZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbHM8VD4obWVzc2FnZU9yRXhwZWN0ZWQ/OiBzdHJpbmcgfCBULCBleHBlY3RlZE9yQWN0dWFsPzogVCwgYWN0dWFsT3JVbmRlZmluZWQ/OiBUKTogdm9pZCB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMobWVzc2FnZU9yRXhwZWN0ZWQsIGV4cGVjdGVkT3JBY3R1YWwsIGFjdHVhbE9yVW5kZWZpbmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBBc3NlcnRpb25zLmFzc2VydEVxdWFscyhtZXNzYWdlT3JFeHBlY3RlZCwgZXhwZWN0ZWRPckFjdHVhbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0d28gb2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzIGFyZSBub3QgZXF1YWwuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIHZhbHVlcyBiZWluZyBjb21wYXJlZC5cbiAqIEBwYXJhbSB1bmV4cGVjdGVkIFRoZSB1bmV4cGVjdGVkIHZhbHVlLlxuICogQHBhcmFtIGFjdHVhbCBUaGUgYWN0dWFsIHZhbHVlLlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4odW5leHBlY3RlZDogVCwgYWN0dWFsOiBUKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFsczxUPihtZXNzYWdlOiBzdHJpbmcsIHVuZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4obWVzc2FnZU9yVW5leHBlY3RlZD86IHN0cmluZyB8IFQsIHVuZXhwZWN0ZWRPckFjdHVhbD86IFQsIGFjdHVhbE9yVW5kZWZpbmVkPzogVCk6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0Tm90RXF1YWxzKG1lc3NhZ2VPclVuZXhwZWN0ZWQsIHVuZXhwZWN0ZWRPckFjdHVhbCwgYWN0dWFsT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0Tm90RXF1YWxzKG1lc3NhZ2VPclVuZXhwZWN0ZWQsIHVuZXhwZWN0ZWRPckFjdHVhbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIGNvbmRpdGlvbiBpcyB0cnVlLlxuICpcbiAqIEBwYXJhbSBjb25kaXRpb24gVGhlIGNvbmRpdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKG1lc3NhZ2U6IHN0cmluZywgY29uZGl0aW9uOiBib29sZWFuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFRydWUobWVzc2FnZU9yQ29uZGl0aW9uPzogc3RyaW5nIHwgYm9vbGVhbiwgY29uZGl0aW9uT3JVbmRlZmluZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbiwgY29uZGl0aW9uT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0VHJ1ZShtZXNzYWdlT3JDb25kaXRpb24pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgZmFsc2UuXG4gKlxuICogQHBhcmFtIGNvbmRpdGlvbiBUaGUgY29uZGl0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gbWVzc2FnZSBPcHRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkgaWYgdGhlIGFzc2VydGlvbiBmYWlscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEZhbHNlKGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRGYWxzZShtZXNzYWdlOiBzdHJpbmcsIGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRGYWxzZShtZXNzYWdlT3JDb25kaXRpb24/OiBzdHJpbmcgfCBib29sZWFuLCBjb25kaXRpb25PclVuZGVmaW5lZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBBc3NlcnRpb25zLmFzc2VydEZhbHNlKG1lc3NhZ2VPckNvbmRpdGlvbiwgY29uZGl0aW9uT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RmFsc2UobWVzc2FnZU9yQ29uZGl0aW9uKTtcbiAgICB9XG59XG5cbi8qKlxuICogRmFpbHMgYSB0ZXN0IGltbWVkaWF0ZWx5LlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpbmRpY2F0aW5nIHRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFpbCgpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5mYWlsKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuZmFpbCgpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYWxsIHRlc3QgcmVzdWx0cyBjb2xsZWN0ZWQgZHVyaW5nIHRoaXMgc2Vzc2lvbi5cbiAqXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiB0ZXN0IHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXN1bHRzKCk6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3RhdHVzOiAncGFzc2VkJyB8ICdmYWlsZWQnIHwgJ3NraXBwZWQnO1xuICAgIGR1cmF0aW9uOiBudW1iZXI7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgc3RhY2tUcmFjZT86IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IG51bWJlcjtcbn0+IHtcbiAgICByZXR1cm4gcmVzdWx0Q29sbGVjdG9yLmdldFJlc3VsdHMoKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBzdW1tYXJ5IG9mIHRlc3QgZXhlY3V0aW9uLlxuICpcbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIGNvdW50cyBhbmQgdG90YWwgZHVyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXN1bHRzU3VtbWFyeSgpOiB7XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBwYXNzZWQ6IG51bWJlcjtcbiAgICBmYWlsZWQ6IG51bWJlcjtcbiAgICBza2lwcGVkOiBudW1iZXI7XG4gICAgZHVyYXRpb246IG51bWJlcjtcbn0ge1xuICAgIHJldHVybiByZXN1bHRDb2xsZWN0b3IuZ2V0U3VtbWFyeSgpO1xufVxuXG4vKipcbiAqIENsZWFycyBhbGwgY29sbGVjdGVkIHRlc3QgcmVzdWx0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyUmVzdWx0cygpOiB2b2lkIHtcbiAgICByZXN1bHRDb2xsZWN0b3IuY2xlYXJSZXN1bHRzKCk7XG59XG5cbi8qKlxuICogQ2xlYXJzIGFsbCBjb2xsZWN0ZWQgdGVzdCByZXN1bHRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcmVSZXN1bHRzKCk6IHZvaWQge1xuICAgIHJlc3VsdENvbGxlY3Rvci5zdG9yZVJlc3VsdHMoKTtcbn0iXSwKICAibWFwcGluZ3MiOiAiQUFvQ0EsU0FBUyxnQkFBZ0I7QUFFekIsTUFBTSxhQUFhLEtBQUssS0FBSyxrQ0FBa0M7QUFDL0QsTUFBTSxxQkFBcUIsS0FBSyxLQUFLLHVFQUF1RTtBQUM1RyxNQUFNLFlBQVksS0FBSyxLQUFLLHFCQUFxQjtBQUNqRCxNQUFNLGFBQWEsS0FBSyxLQUFLLDhEQUE4RDtBQVkzRixNQUFNLG9CQUFvQjtBQUFBLEVBQ2QsVUFBd0IsQ0FBQztBQUFBLEVBQ3pCLGNBQTBEO0FBQUEsRUFDMUQsa0JBQTJCO0FBQUEsRUFFNUIsaUJBQTBCO0FBQzdCLFdBQU8sS0FBSztBQUFBLEVBQ2hCO0FBQUEsRUFFTyxnQkFBZ0IsTUFBb0I7QUFDdkMsU0FBSyxjQUFjLEVBQUUsTUFBTSxZQUFXLG9CQUFJLEtBQUssR0FBRSxRQUFRLEVBQUU7QUFBQSxFQUMvRDtBQUFBLEVBRU8sbUJBQW1CLFFBQXlDLE9BQXdEO0FBQ3ZILFFBQUksQ0FBQyxLQUFLLFlBQWE7QUFFdkIsVUFBTSxTQUFxQjtBQUFBLE1BQ3ZCLE1BQU0sS0FBSyxZQUFZO0FBQUEsTUFDdkI7QUFBQSxNQUNBLFdBQVUsb0JBQUksS0FBSyxHQUFFLFFBQVEsSUFBSSxLQUFLLFlBQVk7QUFBQSxNQUNsRCxZQUFXLG9CQUFJLEtBQUssR0FBRSxRQUFRO0FBQUEsSUFDbEM7QUFFQSxRQUFJLE9BQU87QUFDUCxhQUFPLFFBQVEsTUFBTTtBQUNyQixhQUFPLGFBQWEsTUFBTTtBQUFBLElBQzlCO0FBRUEsU0FBSyxRQUFRLEtBQUssTUFBTTtBQUN4QixTQUFLLGNBQWM7QUFFbkIsUUFBSSxXQUFXLFlBQVksT0FBTztBQUM5QixXQUFLLGtCQUFrQjtBQUFBLElBQzNCO0FBQUEsRUFDSjtBQUFBLEVBRU8sYUFBMkI7QUFDOUIsV0FBTyxDQUFDLEdBQUcsS0FBSyxPQUFPO0FBQUEsRUFDM0I7QUFBQSxFQUVPLGVBQXFCO0FBQ3hCLFVBQU0sY0FBYyxJQUFJLFVBQVU7QUFDbEMsU0FBSyxRQUFRLFFBQVEsT0FBSyxZQUFZLElBQUksSUFBSSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMzSCx1QkFBbUIsSUFBSSxFQUFFLGFBQWEsV0FBVztBQUNqRCxhQUFTLGFBQWEsK0NBQStDO0FBQUEsRUFDekU7QUFBQSxFQUVPLGFBTUw7QUFDRSxVQUFNLFVBQVUsS0FBSztBQUNyQixVQUFNLFFBQVEsUUFBUTtBQUN0QixVQUFNLFNBQVMsUUFBUSxPQUFPLE9BQUssRUFBRSxXQUFXLFFBQVEsRUFBRTtBQUMxRCxVQUFNLFNBQVMsUUFBUSxPQUFPLE9BQUssRUFBRSxXQUFXLFFBQVEsRUFBRTtBQUMxRCxVQUFNLFVBQVUsUUFBUSxPQUFPLE9BQUssRUFBRSxXQUFXLFNBQVMsRUFBRTtBQUM1RCxVQUFNLFdBQVcsUUFBUSxPQUFPLENBQUMsS0FBSyxNQUFNLE1BQU0sRUFBRSxVQUFVLENBQUM7QUFFL0QsV0FBTyxFQUFFLE9BQU8sUUFBUSxRQUFRLFNBQVMsU0FBUztBQUFBLEVBQ3REO0FBQUEsRUFFTyxlQUFxQjtBQUN4QixTQUFLLFVBQVUsQ0FBQztBQUNoQixTQUFLLGNBQWM7QUFDbkIsU0FBSyxrQkFBa0I7QUFBQSxFQUMzQjtBQUNKO0FBRUEsTUFBTSxrQkFBa0IsSUFBSSxvQkFBb0I7QUFRekMsU0FBUyxLQUFLLE1BQWMsUUFBb0I7QUFDbkQsa0JBQWdCLGdCQUFnQixJQUFJO0FBQ3BDLE1BQUksZ0JBQWdCLGVBQWUsR0FBRztBQUNsQyxvQkFBZ0IsbUJBQW1CLFNBQVM7QUFDNUMsWUFBUSxJQUFJLG9CQUFvQixJQUFJLDRCQUE0QjtBQUFBLEVBQ3BFLE9BQU87QUFDSCxRQUFJO0FBQ0EsYUFBTztBQUNQLHNCQUFnQixtQkFBbUIsUUFBUTtBQUFBLElBQy9DLFNBQVMsT0FBWTtBQUNqQixzQkFBZ0IsbUJBQW1CLFVBQVU7QUFBQSxRQUN6QyxTQUFTLE9BQU8sV0FBVyxPQUFPLEtBQUs7QUFBQSxRQUN2QyxZQUFZLE9BQU87QUFBQSxNQUN2QixDQUFDO0FBQUEsSUFDTDtBQUFBLEVBQ0o7QUFDSjtBQVlPLFNBQVMsYUFBZ0IsbUJBQWdDLGtCQUFzQixtQkFBNkI7QUFDL0csTUFBSSxVQUFVLFdBQVcsR0FBRztBQUN4QixlQUFXLGFBQWEsbUJBQW1CLGtCQUFrQixpQkFBaUI7QUFBQSxFQUNsRixPQUFPO0FBQ0gsZUFBVyxhQUFhLG1CQUFtQixnQkFBZ0I7QUFBQSxFQUMvRDtBQUNKO0FBWU8sU0FBUyxnQkFBbUIscUJBQWtDLG9CQUF3QixtQkFBNkI7QUFDdEgsTUFBSSxVQUFVLFdBQVcsR0FBRztBQUN4QixlQUFXLGdCQUFnQixxQkFBcUIsb0JBQW9CLGlCQUFpQjtBQUFBLEVBQ3pGLE9BQU87QUFDSCxlQUFXLGdCQUFnQixxQkFBcUIsa0JBQWtCO0FBQUEsRUFDdEU7QUFDSjtBQVVPLFNBQVMsV0FBVyxvQkFBdUMsc0JBQXNDO0FBQ3BHLE1BQUksVUFBVSxXQUFXLEdBQUc7QUFDeEIsZUFBVyxXQUFXLG9CQUFvQixvQkFBb0I7QUFBQSxFQUNsRSxPQUFPO0FBQ0gsZUFBVyxXQUFXLGtCQUFrQjtBQUFBLEVBQzVDO0FBQ0o7QUFVTyxTQUFTLFlBQVksb0JBQXVDLHNCQUFzQztBQUNyRyxNQUFJLFVBQVUsV0FBVyxHQUFHO0FBQ3hCLGVBQVcsWUFBWSxvQkFBb0Isb0JBQW9CO0FBQUEsRUFDbkUsT0FBTztBQUNILGVBQVcsWUFBWSxrQkFBa0I7QUFBQSxFQUM3QztBQUNKO0FBU08sU0FBUyxLQUFLLFNBQXdCO0FBQ3pDLE1BQUksU0FBUztBQUNULGVBQVcsS0FBSyxPQUFPO0FBQUEsRUFDM0IsT0FBTztBQUNILGVBQVcsS0FBSztBQUFBLEVBQ3BCO0FBQ0o7QUFPTyxTQUFTLGFBT2I7QUFDQyxTQUFPLGdCQUFnQixXQUFXO0FBQ3RDO0FBT08sU0FBUyxvQkFNZDtBQUNFLFNBQU8sZ0JBQWdCLFdBQVc7QUFDdEM7QUFLTyxTQUFTLGVBQXFCO0FBQ2pDLGtCQUFnQixhQUFhO0FBQ2pDO0FBS08sU0FBUyxlQUFxQjtBQUNqQyxrQkFBZ0IsYUFBYTtBQUNqQzsiLAogICJuYW1lcyI6IFtdCn0K
|