@aws-cdk/integ-runner 2.39.1 → 2.40.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.
@@ -121,9 +121,9 @@ class IntegTestRunner extends runner_base_1.IntegRunner {
121
121
  output: path.relative(this.directory, this.cdkOutDir),
122
122
  });
123
123
  }
124
- // only create the snapshot if there are no assertion assertion results
124
+ // only create the snapshot if there are no failed assertion results
125
125
  // (i.e. no failures)
126
- if (!assertionResults) {
126
+ if (!assertionResults || !Object.values(assertionResults).some(result => result.status === 'fail')) {
127
127
  this.createSnapshot();
128
128
  }
129
129
  }
@@ -230,8 +230,8 @@ class IntegTestRunner extends runner_base_1.IntegRunner {
230
230
  cwd: path.dirname(this.snapshotDir),
231
231
  });
232
232
  }
233
- if (actualTestCase.assertionStack) {
234
- return this.processAssertionResults(path.join(this.cdkOutDir, 'assertion-results.json'), actualTestCase.assertionStack);
233
+ if (actualTestCase.assertionStack && actualTestCase.assertionStackName) {
234
+ return this.processAssertionResults(path.join(this.cdkOutDir, 'assertion-results.json'), actualTestCase.assertionStackName, actualTestCase.assertionStack);
235
235
  }
236
236
  }
237
237
  catch (e) {
@@ -243,16 +243,16 @@ class IntegTestRunner extends runner_base_1.IntegRunner {
243
243
  * Process the outputsFile which contains the assertions results as stack
244
244
  * outputs
245
245
  */
246
- processAssertionResults(file, assertionStackId) {
246
+ processAssertionResults(file, assertionStackName, assertionStackId) {
247
247
  const results = {};
248
248
  if (fs.existsSync(file)) {
249
249
  try {
250
250
  const outputs = fs.readJSONSync(file);
251
- if (assertionStackId in outputs) {
252
- for (const [assertionId, result] of Object.entries(outputs[assertionStackId])) {
251
+ if (assertionStackName in outputs) {
252
+ for (const [assertionId, result] of Object.entries(outputs[assertionStackName])) {
253
253
  if (assertionId.startsWith('AssertionResults')) {
254
254
  const assertionResult = JSON.parse(result.replace(/\n/g, '\\n'));
255
- if (assertionResult.status === 'fail') {
255
+ if (assertionResult.status === 'fail' || assertionResult.status === 'success') {
256
256
  results[assertionId] = assertionResult;
257
257
  }
258
258
  }
@@ -294,4 +294,4 @@ class IntegTestRunner extends runner_base_1.IntegRunner {
294
294
  }
295
295
  }
296
296
  exports.IntegTestRunner = IntegTestRunner;
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy10ZXN0LXJ1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFDN0IsMEVBQWlFO0FBRWpFLCtCQUErQjtBQUMvQixvQ0FBb0M7QUFDcEMsb0NBQXVDO0FBRXZDLCtDQUF1RjtBQW9EdkY7OztHQUdHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLHlCQUFXO0lBQzlDLFlBQVksT0FBMkIsRUFBRSxrQkFBd0M7UUFDL0UsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO1FBRTlDLHNEQUFzRDtRQUN0RCwwREFBMEQ7UUFDMUQsNERBQTREO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEscURBQXFEO2dCQUNwRix5QkFBeUI7Z0JBQ3hCLDBFQUEwRSxDQUMzRSxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNLLGdCQUFnQjtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRTNCLDBDQUEwQztRQUMxQyxJQUFJLFVBQVUsR0FBdUIsU0FBUyxDQUFDO1FBQy9DLHVFQUF1RTtRQUN2RSxJQUFJO1lBQ0YsTUFBTSxNQUFNLEdBQVcsWUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQy9ELEdBQUc7YUFDSixDQUFDLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFO2dCQUM5QixJQUFJLElBQUks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RDs7T0FFRztJQUNLLFVBQVUsQ0FBQyxDQUFVLEVBQUUsV0FBb0IsRUFBRSxlQUF3QjtRQUMzRSxJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksZUFBZSxFQUFFO2dCQUNuQixNQUFNLE9BQU8sR0FBSSxDQUFXLENBQUMsT0FBTyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDbkMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNYO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsTUFBTSxDQUFDLENBQUM7U0FDVDtJQUNILENBQUM7Q0FDRjtBQWxURCwwQ0FrVEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUmVxdWlyZUFwcHJvdmFsIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCB7IERlcGxveU9wdGlvbnMsIERlc3Ryb3lPcHRpb25zIH0gZnJvbSAnY2RrLWNsaS13cmFwcGVyJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgY2hhaW4sIGV4ZWMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBEZXN0cnVjdGl2ZUNoYW5nZSwgQXNzZXJ0aW9uUmVzdWx0cywgQXNzZXJ0aW9uUmVzdWx0IH0gZnJvbSAnLi4vd29ya2Vycy9jb21tb24nO1xuaW1wb3J0IHsgSW50ZWdSdW5uZXJPcHRpb25zLCBJbnRlZ1J1bm5lciwgREVGQVVMVF9TWU5USF9PUFRJT05TIH0gZnJvbSAnLi9ydW5uZXItYmFzZSc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGludGVncmF0aW9uIHRlc3QgcnVubmVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlXG4gICAqL1xuICByZWFkb25seSB0ZXN0Q2FzZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gcnVuIGBjZGsgZGVzdHJveWAgYW5kIGNsZWFudXAgdGhlXG4gICAqIGludGVncmF0aW9uIHRlc3Qgc3RhY2tzLlxuICAgKlxuICAgKiBTZXQgdGhpcyB0byBmYWxzZSBpZiB5b3UgbmVlZCB0byBwZXJmb3JtIGFueSB2YWxpZGF0aW9uXG4gICAqIG9yIHRyb3VibGVzaG9vdGluZyBhZnRlciBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjbGVhbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byB0cnVlLCB0aGUgaW50ZWdyYXRpb24gdGVzdCB3aWxsIG5vdCBkZXBsb3lcbiAgICogYW55dGhpbmcgYW5kIHdpbGwgc2ltcGx5IHVwZGF0ZSB0aGUgc25hcHNob3QuXG4gICAqXG4gICAqIFlvdSBzaG91bGQgTk9UIHVzZSB0aGlzIG1ldGhvZCBzaW5jZSB5b3UgYXJlIGVzc2VudGlhbGx5XG4gICAqIGJ5cGFzc2luZyB0aGUgaW50ZWdyYXRpb24gdGVzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIGZhbHNlIHRoZW4gdGhlIHN0YWNrIHVwZGF0ZSB3b3JrZmxvdyB3aWxsXG4gICAqIG5vdCBiZSBydW5cbiAgICpcbiAgICogVGhlIHVwZGF0ZSB3b3JrZmxvdyBleGlzdHMgdG8gY2hlY2sgZm9yIGNhc2VzIHdoZXJlIGEgY2hhbmdlIHdvdWxkIGNhdXNlXG4gICAqIGEgZmFpbHVyZSB0byBhbiBleGlzdGluZyBzdGFjaywgYnV0IG5vdCBmb3IgYSBuZXdseSBjcmVhdGVkIHN0YWNrLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVXb3JrZmxvdz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsZXZlbCBvZiB2ZXJib3NpdHkgZm9yIGxvZ2dpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHZlcmJvc2l0eT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBbiBpbnRlZ3JhdGlvbiB0ZXN0IHJ1bm5lciB0aGF0IG9yY2hlc3RyYXRlcyBleGVjdXRpbmdcbiAqIGludGVncmF0aW9uIHRlc3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlZ1Rlc3RSdW5uZXIgZXh0ZW5kcyBJbnRlZ1J1bm5lciB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEludGVnUnVubmVyT3B0aW9ucywgZGVzdHJ1Y3RpdmVDaGFuZ2VzPzogRGVzdHJ1Y3RpdmVDaGFuZ2VbXSkge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMuX2Rlc3RydWN0aXZlQ2hhbmdlcyA9IGRlc3RydWN0aXZlQ2hhbmdlcztcblxuICAgIC8vIFdlIGRvbid0IHdhbnQgbmV3IHRlc3RzIHdyaXR0ZW4gaW4gdGhlIGxlZ2FjeSBtb2RlLlxuICAgIC8vIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nIHNuYXBzaG90IF9hbmRfIHRoaXMgaXMgYSBsZWdhY3lcbiAgICAvLyB0ZXN0IHRoZW4gcG9pbnQgdGhlIHVzZXIgdG8gdGhlIG5ldyBgSW50ZWdUZXN0YCBjb25zdHJ1Y3RcbiAgICBpZiAoIXRoaXMuaGFzU25hcHNob3QoKSAmJiB0aGlzLmlzTGVnYWN5VGVzdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMudGVzdE5hbWV9IGlzIGEgbmV3IHRlc3QuIFBsZWFzZSB1c2UgdGhlIEludGVnVGVzdCBjb25zdHJ1Y3QgYCArXG4gICAgICAgJ3RvIGNvbmZpZ3VyZSB0aGUgdGVzdFxcbicgK1xuICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL3RyZWUvbWFpbi9wYWNrYWdlcy8lNDBhd3MtY2RrL2ludGVnLXRlc3RzJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gcnVubmluZyBpbnRlZ3JhdGlvbiB0ZXN0cyB3aXRoIHRoZSB1cGRhdGUgcGF0aCB3b3JrZmxvd1xuICAgKiBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgc25hcHNob3QgdGhhdCBpcyBkZXBsb3llZCBpcyB0aGUgY3VycmVudCBzbmFwc2hvdFxuICAgKiBmcm9tIHRoZSB1cHN0cmVhbSBicmFuY2guIEluIG9yZGVyIHRvIGd1YXJhbnRlZSB0aGF0LCBmaXJzdCBjaGVja291dCB0aGUgbGF0ZXN0XG4gICAqICh0byB0aGUgdXNlcikgc25hcHNob3QgZnJvbSB1cHN0cmVhbVxuICAgKlxuICAgKiBJdCBpcyBub3Qgc3RyYWlnaHRmb3J3YXJkIHRvIGZpZ3VyZSBvdXQgd2hhdCBicmFuY2ggdGhlIGN1cnJlbnRcbiAgICogd29ya2luZyBicmFuY2ggd2FzIGNyZWF0ZWQgZnJvbS4gVGhpcyBpcyBhIGJlc3QgZWZmb3J0IGF0dGVtcHQgdG8gZG8gc28uXG4gICAqIFRoaXMgYXNzdW1lcyB0aGF0IHRoZXJlIGlzIGFuICdvcmlnaW4nLiBgZ2l0IHJlbW90ZSBzaG93IG9yaWdpbmAgcmV0dXJucyBhIGxpc3Qgb2ZcbiAgICogYWxsIGJyYW5jaGVzIGFuZCB3ZSB0aGVuIHNlYXJjaCBmb3Igb25lIHRoYXQgc3RhcnRzIHdpdGggYEhFQUQgYnJhbmNoOiBgXG4gICAqL1xuICBwcml2YXRlIGNoZWNrb3V0U25hcHNob3QoKTogdm9pZCB7XG4gICAgY29uc3QgY3dkID0gdGhpcy5kaXJlY3Rvcnk7XG5cbiAgICAvLyBodHRwczovL2dpdC1zY20uY29tL2RvY3MvZ2l0LW1lcmdlLWJhc2VcbiAgICBsZXQgYmFzZUJyYW5jaDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIC8vIHRyeSB0byBmaW5kIHRoZSBiYXNlIGJyYW5jaCB0aGF0IHRoZSB3b3JraW5nIGJyYW5jaCB3YXMgY3JlYXRlZCBmcm9tXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG9yaWdpbjogc3RyaW5nID0gZXhlYyhbJ2dpdCcsICdyZW1vdGUnLCAnc2hvdycsICdvcmlnaW4nXSwge1xuICAgICAgICBjd2QsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG9yaWdpbkxpbmVzID0gb3JpZ2luLnNwbGl0KCdcXG4nKTtcbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvcmlnaW5MaW5lcykge1xuICAgICAgICBpZiAobGluZS50cmltKCkuc3RhcnRzV2l0aCgnSEVBRCBicmFuY2g6ICcpKSB7XG4gICAgICAgICAgYmFzZUJyYW5jaCA9IGxpbmUudHJpbSgpLnNwbGl0KCdIRUFEIGJyYW5jaDogJylbMV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIud2FybmluZygnJXNcXG4lcycsXG4gICAgICAgICdDb3VsZCBub3QgZGV0ZXJtaW5lIGdpdCBvcmlnaW4gYnJhbmNoLicsXG4gICAgICAgIGBZb3UgbmVlZCB0byBtYW51YWxseSBjaGVja291dCB0aGUgc25hcHNob3QgZGlyZWN0b3J5ICR7dGhpcy5zbmFwc2hvdERpcn1gICtcbiAgICAgICAgJ2Zyb20gdGhlIG1lcmdlLWJhc2UgKGh0dHBzOi8vZ2l0LXNjbS5jb20vZG9jcy9naXQtbWVyZ2UtYmFzZSknLFxuICAgICAgKTtcbiAgICAgIGxvZ2dlci53YXJuaW5nKCdlcnJvcjogJXMnLCBlKTtcbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBmb3VuZCB0aGUgYmFzZSBicmFuY2ggdGhlbiBnZXQgdGhlIG1lcmdlLWJhc2UgKG1vc3QgcmVjZW50IGNvbW1vbiBjb21taXQpXG4gICAgLy8gYW5kIGNoZWNrb3V0IHRoZSBzbmFwc2hvdCB1c2luZyB0aGF0IGNvbW1pdFxuICAgIGlmIChiYXNlQnJhbmNoKSB7XG4gICAgICBjb25zdCByZWxhdGl2ZVNuYXBzaG90RGlyID0gcGF0aC5yZWxhdGl2ZSh0aGlzLmRpcmVjdG9yeSwgdGhpcy5zbmFwc2hvdERpcik7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJhc2UgPSBleGVjKFsnZ2l0JywgJ21lcmdlLWJhc2UnLCAnSEVBRCcsIGJhc2VCcmFuY2hdLCB7XG4gICAgICAgICAgY3dkLFxuICAgICAgICB9KTtcbiAgICAgICAgZXhlYyhbJ2dpdCcsICdjaGVja291dCcsIGJhc2UsICctLScsIHJlbGF0aXZlU25hcHNob3REaXJdLCB7XG4gICAgICAgICAgY3dkLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nZ2VyLndhcm5pbmcoJyVzXFxuJXMnLFxuICAgICAgICAgIGBDb3VsZCBub3QgY2hlY2tvdXQgc25hcHNob3QgZGlyZWN0b3J5ICR7dGhpcy5zbmFwc2hvdERpcn0gdXNpbmcgdGhlc2UgY29tbWFuZHM6IGAsXG4gICAgICAgICAgYGdpdCBtZXJnZS1iYXNlIEhFQUQgJHtiYXNlQnJhbmNofSAmJiBnaXQgY2hlY2tvdXQge21lcmdlLWJhc2V9IC0tICR7cmVsYXRpdmVTbmFwc2hvdERpcn1gLFxuICAgICAgICApO1xuICAgICAgICBsb2dnZXIud2FybmluZygnZXJyb3I6ICVzJywgZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9yY2hlc3RyYXRlcyBydW5uaW5nIGludGVncmF0aW9uIHRlc3RzLiBDdXJyZW50bHkgdGhpcyBpbmNsdWRlc1xuICAgKlxuICAgKiAxLiAoaWYgdXBkYXRlIHdvcmtmbG93IGlzIGVuYWJsZWQpIERlcGxveWluZyB0aGUgc25hcHNob3QgdGVzdCBzdGFja3NcbiAgICogMi4gRGVwbG95aW5nIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0IHN0YWNrc1xuICAgKiAyLiBTYXZpbmcgdGhlIHNuYXBzaG90IChpZiBzdWNjZXNzZnVsKVxuICAgKiAzLiBEZXN0cm95aW5nIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0IHN0YWNrcyAoaWYgY2xlYW49ZmFsc2UpXG4gICAqXG4gICAqIFRoZSB1cGRhdGUgd29ya2Zsb3cgZXhpc3RzIHRvIGNoZWNrIGZvciBjYXNlcyB3aGVyZSBhIGNoYW5nZSB3b3VsZCBjYXVzZVxuICAgKiBhIGZhaWx1cmUgdG8gYW4gZXhpc3Rpbmcgc3RhY2ssIGJ1dCBub3QgZm9yIGEgbmV3bHkgY3JlYXRlZCBzdGFjay5cbiAgICovXG4gIHB1YmxpYyBydW5JbnRlZ1Rlc3RDYXNlKG9wdGlvbnM6IFJ1bk9wdGlvbnMpOiBBc3NlcnRpb25SZXN1bHRzIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgYXNzZXJ0aW9uUmVzdWx0czogQXNzZXJ0aW9uUmVzdWx0cyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhY3R1YWxUZXN0Q2FzZSA9IHRoaXMuYWN0dWFsVGVzdFN1aXRlLnRlc3RTdWl0ZVtvcHRpb25zLnRlc3RDYXNlTmFtZV07XG4gICAgaWYgKCFhY3R1YWxUZXN0Q2FzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgbm90IGZpbmQgdGVzdCBjYXNlIG5hbWUgJyR7b3B0aW9ucy50ZXN0Q2FzZU5hbWV9JyBpbiAnJHtPYmplY3Qua2V5cyh0aGlzLmFjdHVhbFRlc3RTdWl0ZS50ZXN0U3VpdGUpfSdgKTtcbiAgICB9XG4gICAgY29uc3QgY2xlYW4gPSBvcHRpb25zLmNsZWFuID8/IHRydWU7XG4gICAgY29uc3QgdXBkYXRlV29ya2Zsb3dFbmFibGVkID0gKG9wdGlvbnMudXBkYXRlV29ya2Zsb3cgPz8gdHJ1ZSlcbiAgICAgICYmIChhY3R1YWxUZXN0Q2FzZS5zdGFja1VwZGF0ZVdvcmtmbG93ID8/IHRydWUpO1xuICAgIGNvbnN0IGVuYWJsZUZvclZlcmJvc2l0eUxldmVsID0gKG5lZWRlZCA9IDEpID0+IHtcbiAgICAgIGNvbnN0IHZlcmJvc2l0eSA9IG9wdGlvbnMudmVyYm9zaXR5ID8/IDA7XG4gICAgICByZXR1cm4gKHZlcmJvc2l0eSA+PSBuZWVkZWQpID8gdHJ1ZSA6IHVuZGVmaW5lZDtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0aW9ucy5kcnlSdW4gJiYgKGFjdHVhbFRlc3RDYXNlLmNka0NvbW1hbmRPcHRpb25zPy5kZXBsb3k/LmVuYWJsZWQgPz8gdHJ1ZSkpIHtcbiAgICAgICAgYXNzZXJ0aW9uUmVzdWx0cyA9IHRoaXMuZGVwbG95KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGVmYXVsdEFyZ3MsXG4gICAgICAgICAgICBwcm9maWxlOiB0aGlzLnByb2ZpbGUsXG4gICAgICAgICAgICByZXF1aXJlQXBwcm92YWw6IFJlcXVpcmVBcHByb3ZhbC5ORVZFUixcbiAgICAgICAgICAgIHZlcmJvc2U6IGVuYWJsZUZvclZlcmJvc2l0eUxldmVsKDMpLFxuICAgICAgICAgICAgZGVidWc6IGVuYWJsZUZvclZlcmJvc2l0eUxldmVsKDQpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlV29ya2Zsb3dFbmFibGVkLFxuICAgICAgICAgIG9wdGlvbnMudGVzdENhc2VOYW1lLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgICAgIC4uLkRFRkFVTFRfU1lOVEhfT1BUSU9OUy5lbnYsXG4gICAgICAgICAgQ0RLX0NPTlRFWFRfSlNPTjogSlNPTi5zdHJpbmdpZnkodGhpcy5nZXRDb250ZXh0KCkpLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNkay5zeW50aEZhc3Qoe1xuICAgICAgICAgIGV4ZWNDbWQ6IHRoaXMuY2RrQXBwLnNwbGl0KCcgJyksXG4gICAgICAgICAgZW52LFxuICAgICAgICAgIG91dHB1dDogcGF0aC5yZWxhdGl2ZSh0aGlzLmRpcmVjdG9yeSwgdGhpcy5jZGtPdXREaXIpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIG9ubHkgY3JlYXRlIHRoZSBzbmFwc2hvdCBpZiB0aGVyZSBhcmUgbm8gYXNzZXJ0aW9uIGFzc2VydGlvbiByZXN1bHRzXG4gICAgICAvLyAoaS5lLiBubyBmYWlsdXJlcylcbiAgICAgIGlmICghYXNzZXJ0aW9uUmVzdWx0cykge1xuICAgICAgICB0aGlzLmNyZWF0ZVNuYXBzaG90KCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKCFvcHRpb25zLmRyeVJ1bikge1xuICAgICAgICBpZiAoY2xlYW4gJiYgKGFjdHVhbFRlc3RDYXNlLmNka0NvbW1hbmRPcHRpb25zPy5kZXN0cm95Py5lbmFibGVkID8/IHRydWUpKSB7XG4gICAgICAgICAgdGhpcy5kZXN0cm95KG9wdGlvbnMudGVzdENhc2VOYW1lLCB7XG4gICAgICAgICAgICAuLi50aGlzLmRlZmF1bHRBcmdzLFxuICAgICAgICAgICAgcHJvZmlsZTogdGhpcy5wcm9maWxlLFxuICAgICAgICAgICAgYWxsOiB0cnVlLFxuICAgICAgICAgICAgZm9yY2U6IHRydWUsXG4gICAgICAgICAgICBhcHA6IHRoaXMuY2RrQXBwLFxuICAgICAgICAgICAgb3V0cHV0OiBwYXRoLnJlbGF0aXZlKHRoaXMuZGlyZWN0b3J5LCB0aGlzLmNka091dERpciksXG4gICAgICAgICAgICAuLi5hY3R1YWxUZXN0Q2FzZS5jZGtDb21tYW5kT3B0aW9ucz8uZGVzdHJveT8uYXJncyxcbiAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dChhY3R1YWxUZXN0Q2FzZS5jZGtDb21tYW5kT3B0aW9ucz8uZGVzdHJveT8uYXJncz8uY29udGV4dCksXG4gICAgICAgICAgICB2ZXJib3NlOiBlbmFibGVGb3JWZXJib3NpdHlMZXZlbCgzKSxcbiAgICAgICAgICAgIGRlYnVnOiBlbmFibGVGb3JWZXJib3NpdHlMZXZlbCg0KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgfVxuICAgIHJldHVybiBhc3NlcnRpb25SZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBpbnRlZyB0ZXN0IGNhc2Ugc3RhY2sgZGVzdHJ1Y3Rpb25cbiAgICovXG4gIHByaXZhdGUgZGVzdHJveSh0ZXN0Q2FzZU5hbWU6IHN0cmluZywgZGVzdHJveUFyZ3M6IERlc3Ryb3lPcHRpb25zKSB7XG4gICAgY29uc3QgYWN0dWFsVGVzdENhc2UgPSB0aGlzLmFjdHVhbFRlc3RTdWl0ZS50ZXN0U3VpdGVbdGVzdENhc2VOYW1lXTtcbiAgICB0cnkge1xuICAgICAgaWYgKGFjdHVhbFRlc3RDYXNlLmhvb2tzPy5wcmVEZXN0cm95KSB7XG4gICAgICAgIGV4ZWMoW2NoYWluKGFjdHVhbFRlc3RDYXNlLmhvb2tzLnByZURlc3Ryb3kpXSwge1xuICAgICAgICAgIGN3ZDogcGF0aC5kaXJuYW1lKHRoaXMuc25hcHNob3REaXIpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RrLmRlc3Ryb3koe1xuICAgICAgICAuLi5kZXN0cm95QXJncyxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYWN0dWFsVGVzdENhc2UuaG9va3M/LnBvc3REZXN0cm95KSB7XG4gICAgICAgIGV4ZWMoW2NoYWluKGFjdHVhbFRlc3RDYXNlLmhvb2tzLnBvc3REZXN0cm95KV0sIHtcbiAgICAgICAgICBjd2Q6IHBhdGguZGlybmFtZSh0aGlzLnNuYXBzaG90RGlyKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5wYXJzZUVycm9yKGUsXG4gICAgICAgIGFjdHVhbFRlc3RDYXNlLmNka0NvbW1hbmRPcHRpb25zPy5kZXN0cm95Py5leHBlY3RFcnJvciA/PyBmYWxzZSxcbiAgICAgICAgYWN0dWFsVGVzdENhc2UuY2RrQ29tbWFuZE9wdGlvbnM/LmRlc3Ryb3k/LmV4cGVjdGVkTWVzc2FnZSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBpbnRlZyB0ZXN0IGNhc2UgZGVwbG95bWVudCwgaW5jbHVkaW5nXG4gICAqIHBlZm9ybWluZyB0aGUgdXBkYXRlIHdvcmtmbG93XG4gICAqL1xuICBwcml2YXRlIGRlcGxveShcbiAgICBkZXBsb3lBcmdzOiBEZXBsb3lPcHRpb25zLFxuICAgIHVwZGF0ZVdvcmtmbG93RW5hYmxlZDogYm9vbGVhbixcbiAgICB0ZXN0Q2FzZU5hbWU6IHN0cmluZyxcbiAgKTogQXNzZXJ0aW9uUmVzdWx0cyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYWN0dWFsVGVzdENhc2UgPSB0aGlzLmFjdHVhbFRlc3RTdWl0ZS50ZXN0U3VpdGVbdGVzdENhc2VOYW1lXTtcbiAgICB0cnkge1xuICAgICAgaWYgKGFjdHVhbFRlc3RDYXNlLmhvb2tzPy5wcmVEZXBsb3kpIHtcbiAgICAgICAgZXhlYyhbY2hhaW4oYWN0dWFsVGVzdENhc2UuaG9va3M/LnByZURlcGxveSldLCB7XG4gICAgICAgICAgY3dkOiBwYXRoLmRpcm5hbWUodGhpcy5zbmFwc2hvdERpciksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIHVwZGF0ZSB3b3JrZmxvdyBpcyBub3QgZGlzYWJsZWQsIGZpcnN0XG4gICAgICAvLyBwZXJmb3JtIGEgZGVwbG95bWVudCB3aXRoIHRoZSBleGlzaW5nIHNuYXBzaG90XG4gICAgICAvLyB0aGVuIHBlcmZvcm0gYSBkZXBsb3ltZW50ICh3aGljaCB3aWxsIGJlIGEgc3RhY2sgdXBkYXRlKVxuICAgICAgLy8gd2l0aCB0aGUgY3VycmVudCBpbnRlZ3JhdGlvbiB0ZXN0XG4gICAgICAvLyBXZSBhbHNvIG9ubHkgd2FudCB0byBydW4gdGhlIHVwZGF0ZSB3b3JrZmxvdyBpZiB0aGVyZSBpcyBhbiBleGlzdGluZ1xuICAgICAgLy8gc25hcHNob3QgKG90aGVyd2lzZSB0aGVyZSBpcyBub3RoaW5nIHRvIHVwZGF0ZSlcbiAgICAgIGlmICh1cGRhdGVXb3JrZmxvd0VuYWJsZWQgJiYgdGhpcy5oYXNTbmFwc2hvdCgpICYmXG4gICAgICAgICh0aGlzLmV4cGVjdGVkVGVzdFN1aXRlICYmIHRlc3RDYXNlTmFtZSBpbiB0aGlzLmV4cGVjdGVkVGVzdFN1aXRlPy50ZXN0U3VpdGUpKSB7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgc25hcHNob3QgaXMgdGhlIGxhdGVzdCBmcm9tICdvcmlnaW4nXG4gICAgICAgIHRoaXMuY2hlY2tvdXRTbmFwc2hvdCgpO1xuICAgICAgICBjb25zdCBleHBlY3RlZFRlc3RDYXNlID0gdGhpcy5leHBlY3RlZFRlc3RTdWl0ZS50ZXN0U3VpdGVbdGVzdENhc2VOYW1lXTtcbiAgICAgICAgdGhpcy5jZGsuZGVwbG95KHtcbiAgICAgICAgICAuLi5kZXBsb3lBcmdzLFxuICAgICAgICAgIHN0YWNrczogZXhwZWN0ZWRUZXN0Q2FzZS5zdGFja3MsXG4gICAgICAgICAgLi4uZXhwZWN0ZWRUZXN0Q2FzZT8uY2RrQ29tbWFuZE9wdGlvbnM/LmRlcGxveT8uYXJncyxcbiAgICAgICAgICBjb250ZXh0OiB0aGlzLmdldENvbnRleHQoZXhwZWN0ZWRUZXN0Q2FzZT8uY2RrQ29tbWFuZE9wdGlvbnM/LmRlcGxveT8uYXJncz8uY29udGV4dCksXG4gICAgICAgICAgYXBwOiBwYXRoLnJlbGF0aXZlKHRoaXMuZGlyZWN0b3J5LCB0aGlzLnNuYXBzaG90RGlyKSxcbiAgICAgICAgICBsb29rdXBzOiB0aGlzLmV4cGVjdGVkVGVzdFN1aXRlPy5lbmFibGVMb29rdXBzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIG5vdyBkZXBsb3kgdGhlIFwiYWN0dWFsXCIgdGVzdC4gSWYgdGhlcmUgYXJlIGFueSBhc3NlcnRpb25zXG4gICAgICAvLyBkZXBsb3kgdGhlIGFzc2VydGlvbiBzdGFjayBhcyB3ZWxsXG4gICAgICB0aGlzLmNkay5kZXBsb3koe1xuICAgICAgICAuLi5kZXBsb3lBcmdzLFxuICAgICAgICBsb29rdXBzOiB0aGlzLmFjdHVhbFRlc3RTdWl0ZS5lbmFibGVMb29rdXBzLFxuICAgICAgICBzdGFja3M6IFtcbiAgICAgICAgICAuLi5hY3R1YWxUZXN0Q2FzZS5zdGFja3MsXG4gICAgICAgICAgLi4uYWN0dWFsVGVzdENhc2UuYXNzZXJ0aW9uU3RhY2sgPyBbYWN0dWFsVGVzdENhc2UuYXNzZXJ0aW9uU3RhY2tdIDogW10sXG4gICAgICAgIF0sXG4gICAgICAgIHJvbGxiYWNrOiBmYWxzZSxcbiAgICAgICAgb3V0cHV0OiBwYXRoLnJlbGF0aXZlKHRoaXMuZGlyZWN0b3J5LCB0aGlzLmNka091dERpciksXG4gICAgICAgIC4uLmFjdHVhbFRlc3RDYXNlPy5jZGtDb21tYW5kT3B0aW9ucz8uZGVwbG95Py5hcmdzLFxuICAgICAgICAuLi5hY3R1YWxUZXN0Q2FzZS5hc3NlcnRpb25TdGFjayA/IHsgb3V0cHV0c0ZpbGU6IHBhdGgucmVsYXRpdmUodGhpcy5kaXJlY3RvcnksIHBhdGguam9pbih0aGlzLmNka091dERpciwgJ2Fzc2VydGlvbi1yZXN1bHRzLmpzb24nKSkgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgY29udGV4dDogdGhpcy5nZXRDb250ZXh0KGFjdHVhbFRlc3RDYXNlPy5jZGtDb21tYW5kT3B0aW9ucz8uZGVwbG95Py5hcmdzPy5jb250ZXh0KSxcbiAgICAgICAgYXBwOiB0aGlzLmNka0FwcCxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYWN0dWFsVGVzdENhc2UuaG9va3M/LnBvc3REZXBsb3kpIHtcbiAgICAgICAgZXhlYyhbY2hhaW4oYWN0dWFsVGVzdENhc2UuaG9va3M/LnBvc3REZXBsb3kpXSwge1xuICAgICAgICAgIGN3ZDogcGF0aC5kaXJuYW1lKHRoaXMuc25hcHNob3REaXIpLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdHVhbFRlc3RDYXNlLmFzc2VydGlvblN0YWNrKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NBc3NlcnRpb25SZXN1bHRzKFxuICAgICAgICAgIHBhdGguam9pbih0aGlzLmNka091dERpciwgJ2Fzc2VydGlvbi1yZXN1bHRzLmpzb24nKSxcbiAgICAgICAgICBhY3R1YWxUZXN0Q2FzZS5hc3NlcnRpb25TdGFjayxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLnBhcnNlRXJyb3IoZSxcbiAgICAgICAgYWN0dWFsVGVzdENhc2UuY2RrQ29tbWFuZE9wdGlvbnM/LmRlcGxveT8uZXhwZWN0RXJyb3IgPz8gZmFsc2UsXG4gICAgICAgIGFjdHVhbFRlc3RDYXNlLmNka0NvbW1hbmRPcHRpb25zPy5kZXBsb3k/LmV4cGVjdGVkTWVzc2FnZSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIHRoZSBvdXRwdXRzRmlsZSB3aGljaCBjb250YWlucyB0aGUgYXNzZXJ0aW9ucyByZXN1bHRzIGFzIHN0YWNrXG4gICAqIG91dHB1dHNcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc0Fzc2VydGlvblJlc3VsdHMoZmlsZTogc3RyaW5nLCBhc3NlcnRpb25TdGFja0lkOiBzdHJpbmcpOiBBc3NlcnRpb25SZXN1bHRzIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZXN1bHRzOiBBc3NlcnRpb25SZXN1bHRzID0ge307XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZmlsZSkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG91dHB1dHM6IHsgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9ID0gZnMucmVhZEpTT05TeW5jKGZpbGUpO1xuXG4gICAgICAgIGlmIChhc3NlcnRpb25TdGFja0lkIGluIG91dHB1dHMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFthc3NlcnRpb25JZCwgcmVzdWx0XSBvZiBPYmplY3QuZW50cmllcyhvdXRwdXRzW2Fzc2VydGlvblN0YWNrSWRdKSkge1xuICAgICAgICAgICAgaWYgKGFzc2VydGlvbklkLnN0YXJ0c1dpdGgoJ0Fzc2VydGlvblJlc3VsdHMnKSkge1xuICAgICAgICAgICAgICBjb25zdCBhc3NlcnRpb25SZXN1bHQ6IEFzc2VydGlvblJlc3VsdCA9IEpTT04ucGFyc2UocmVzdWx0LnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKSk7XG4gICAgICAgICAgICAgIGlmIChhc3NlcnRpb25SZXN1bHQuc3RhdHVzID09PSAnZmFpbCcpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRzW2Fzc2VydGlvbklkXSA9IGFzc2VydGlvblJlc3VsdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpZiB0aGVyZSBhcmUgb3V0cHV0cywgYnV0IHRoZXkgY2Fubm90IGJlIHByb2Nlc3NlZCwgdGhlbiB0aHJvdyBhbiBlcnJvclxuICAgICAgICAvLyBzbyB0aGF0IHRoZSB0ZXN0IGZhaWxzXG4gICAgICAgIHJlc3VsdHNbYXNzZXJ0aW9uU3RhY2tJZF0gPSB7XG4gICAgICAgICAgc3RhdHVzOiAnZmFpbCcsXG4gICAgICAgICAgbWVzc2FnZTogYGVycm9yIHByb2Nlc3NpbmcgYXNzZXJ0aW9uIHJlc3VsdHM6ICR7ZX1gLFxuICAgICAgICB9O1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBvdXRwdXRzIGZpbGUgc28gaXQgaXMgbm90IHBhcnQgb2YgdGhlIHNuYXBzaG90XG4gICAgICAgIC8vIGl0IHdpbGwgY29udGFpbiBlbnYgc3BlY2lmaWMgaW5mb3JtYXRpb24gZnJvbSB2YWx1ZXNcbiAgICAgICAgLy8gcmVzb2x2ZWQgYXQgZGVwbG95IHRpbWVcbiAgICAgICAgZnMudW5saW5rU3luYyhmaWxlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlc3VsdHMpLmxlbmd0aCA+IDAgPyByZXN1bHRzIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBlcnJvciBtZXNzYWdlIHJldHVybmVkIGZyb20gYSBDREsgY29tbWFuZFxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZUVycm9yKGU6IHVua25vd24sIGV4cGVjdEVycm9yOiBib29sZWFuLCBleHBlY3RlZE1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBpZiAoZXhwZWN0RXJyb3IpIHtcbiAgICAgIGlmIChleHBlY3RlZE1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IChlIGFzIEVycm9yKS5tZXNzYWdlO1xuICAgICAgICBpZiAoIW1lc3NhZ2UubWF0Y2goZXhwZWN0ZWRNZXNzYWdlKSkge1xuICAgICAgICAgIHRocm93IChlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxufVxuIl19
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy10ZXN0LXJ1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFDN0IsMEVBQWlFO0FBRWpFLCtCQUErQjtBQUMvQixvQ0FBb0M7QUFDcEMsb0NBQXVDO0FBRXZDLCtDQUF1RjtBQW9EdkY7OztHQUdHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLHlCQUFXO0lBQzlDLFlBQVksT0FBMkIsRUFBRSxrQkFBd0M7UUFDL0UsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO1FBRTlDLHNEQUFzRDtRQUN0RCwwREFBMEQ7UUFDMUQsNERBQTREO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEscURBQXFEO2dCQUNwRix5QkFBeUI7Z0JBQ3hCLDBFQUEwRSxDQUMzRSxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNLLGdCQUFnQjtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRTNCLDBDQUEwQztRQUMxQyxJQUFJLFVBQVUsR0FBdUIsU0FBUyxDQUFDO1FBQy9DLHVFQUF1RTtRQUN2RSxJQUFJO1lBQ0YsTUFBTSxNQUFNLEdBQVcsWUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQy9ELEdBQUc7YUFDSixDQUFDLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFO2dCQUM5QixJQUFJLElBQUks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LHVEQUF1RDtnQkFDdkQsMEJBQTBCO2dCQUMxQixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JCO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ssVUFBVSxDQUFDLENBQVUsRUFBRSxXQUFvQixFQUFFLGVBQXdCO1FBQzNFLElBQUksV0FBVyxFQUFFO1lBQ2YsSUFBSSxlQUFlLEVBQUU7Z0JBQ25CLE1BQU0sT0FBTyxHQUFJLENBQVcsQ0FBQyxPQUFPLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFO29CQUNuQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ1g7YUFDRjtTQUNGO2FBQU07WUFDTCxNQUFNLENBQUMsQ0FBQztTQUNUO0lBQ0gsQ0FBQztDQUNGO0FBblRELDBDQW1UQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBSZXF1aXJlQXBwcm92YWwgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHsgRGVwbG95T3B0aW9ucywgRGVzdHJveU9wdGlvbnMgfSBmcm9tICdjZGstY2xpLXdyYXBwZXInO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBjaGFpbiwgZXhlYyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IERlc3RydWN0aXZlQ2hhbmdlLCBBc3NlcnRpb25SZXN1bHRzLCBBc3NlcnRpb25SZXN1bHQgfSBmcm9tICcuLi93b3JrZXJzL2NvbW1vbic7XG5pbXBvcnQgeyBJbnRlZ1J1bm5lck9wdGlvbnMsIEludGVnUnVubmVyLCBERUZBVUxUX1NZTlRIX09QVElPTlMgfSBmcm9tICcuL3J1bm5lci1iYXNlJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdCBydW5uZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0ZXN0IGNhc2VcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RDYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBydW4gYGNkayBkZXN0cm95YCBhbmQgY2xlYW51cCB0aGVcbiAgICogaW50ZWdyYXRpb24gdGVzdCBzdGFja3MuXG4gICAqXG4gICAqIFNldCB0aGlzIHRvIGZhbHNlIGlmIHlvdSBuZWVkIHRvIHBlcmZvcm0gYW55IHZhbGlkYXRpb25cbiAgICogb3IgdHJvdWJsZXNob290aW5nIGFmdGVyIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0IHdpbGwgbm90IGRlcGxveVxuICAgKiBhbnl0aGluZyBhbmQgd2lsbCBzaW1wbHkgdXBkYXRlIHRoZSBzbmFwc2hvdC5cbiAgICpcbiAgICogWW91IHNob3VsZCBOT1QgdXNlIHRoaXMgbWV0aG9kIHNpbmNlIHlvdSBhcmUgZXNzZW50aWFsbHlcbiAgICogYnlwYXNzaW5nIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBzZXQgdG8gZmFsc2UgdGhlbiB0aGUgc3RhY2sgdXBkYXRlIHdvcmtmbG93IHdpbGxcbiAgICogbm90IGJlIHJ1blxuICAgKlxuICAgKiBUaGUgdXBkYXRlIHdvcmtmbG93IGV4aXN0cyB0byBjaGVjayBmb3IgY2FzZXMgd2hlcmUgYSBjaGFuZ2Ugd291bGQgY2F1c2VcbiAgICogYSBmYWlsdXJlIHRvIGFuIGV4aXN0aW5nIHN0YWNrLCBidXQgbm90IGZvciBhIG5ld2x5IGNyZWF0ZWQgc3RhY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZVdvcmtmbG93PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGxldmVsIG9mIHZlcmJvc2l0eSBmb3IgbG9nZ2luZy5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcmVhZG9ubHkgdmVyYm9zaXR5PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEFuIGludGVncmF0aW9uIHRlc3QgcnVubmVyIHRoYXQgb3JjaGVzdHJhdGVzIGV4ZWN1dGluZ1xuICogaW50ZWdyYXRpb24gdGVzdHNcbiAqL1xuZXhwb3J0IGNsYXNzIEludGVnVGVzdFJ1bm5lciBleHRlbmRzIEludGVnUnVubmVyIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogSW50ZWdSdW5uZXJPcHRpb25zLCBkZXN0cnVjdGl2ZUNoYW5nZXM/OiBEZXN0cnVjdGl2ZUNoYW5nZVtdKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgdGhpcy5fZGVzdHJ1Y3RpdmVDaGFuZ2VzID0gZGVzdHJ1Y3RpdmVDaGFuZ2VzO1xuXG4gICAgLy8gV2UgZG9uJ3Qgd2FudCBuZXcgdGVzdHMgd3JpdHRlbiBpbiB0aGUgbGVnYWN5IG1vZGUuXG4gICAgLy8gSWYgdGhlcmUgaXMgbm8gZXhpc3Rpbmcgc25hcHNob3QgX2FuZF8gdGhpcyBpcyBhIGxlZ2FjeVxuICAgIC8vIHRlc3QgdGhlbiBwb2ludCB0aGUgdXNlciB0byB0aGUgbmV3IGBJbnRlZ1Rlc3RgIGNvbnN0cnVjdFxuICAgIGlmICghdGhpcy5oYXNTbmFwc2hvdCgpICYmIHRoaXMuaXNMZWdhY3lUZXN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy50ZXN0TmFtZX0gaXMgYSBuZXcgdGVzdC4gUGxlYXNlIHVzZSB0aGUgSW50ZWdUZXN0IGNvbnN0cnVjdCBgICtcbiAgICAgICAndG8gY29uZmlndXJlIHRoZSB0ZXN0XFxuJyArXG4gICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvdHJlZS9tYWluL3BhY2thZ2VzLyU0MGF3cy1jZGsvaW50ZWctdGVzdHMnLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hlbiBydW5uaW5nIGludGVncmF0aW9uIHRlc3RzIHdpdGggdGhlIHVwZGF0ZSBwYXRoIHdvcmtmbG93XG4gICAqIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSBzbmFwc2hvdCB0aGF0IGlzIGRlcGxveWVkIGlzIHRoZSBjdXJyZW50IHNuYXBzaG90XG4gICAqIGZyb20gdGhlIHVwc3RyZWFtIGJyYW5jaC4gSW4gb3JkZXIgdG8gZ3VhcmFudGVlIHRoYXQsIGZpcnN0IGNoZWNrb3V0IHRoZSBsYXRlc3RcbiAgICogKHRvIHRoZSB1c2VyKSBzbmFwc2hvdCBmcm9tIHVwc3RyZWFtXG4gICAqXG4gICAqIEl0IGlzIG5vdCBzdHJhaWdodGZvcndhcmQgdG8gZmlndXJlIG91dCB3aGF0IGJyYW5jaCB0aGUgY3VycmVudFxuICAgKiB3b3JraW5nIGJyYW5jaCB3YXMgY3JlYXRlZCBmcm9tLiBUaGlzIGlzIGEgYmVzdCBlZmZvcnQgYXR0ZW1wdCB0byBkbyBzby5cbiAgICogVGhpcyBhc3N1bWVzIHRoYXQgdGhlcmUgaXMgYW4gJ29yaWdpbicuIGBnaXQgcmVtb3RlIHNob3cgb3JpZ2luYCByZXR1cm5zIGEgbGlzdCBvZlxuICAgKiBhbGwgYnJhbmNoZXMgYW5kIHdlIHRoZW4gc2VhcmNoIGZvciBvbmUgdGhhdCBzdGFydHMgd2l0aCBgSEVBRCBicmFuY2g6IGBcbiAgICovXG4gIHByaXZhdGUgY2hlY2tvdXRTbmFwc2hvdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjd2QgPSB0aGlzLmRpcmVjdG9yeTtcblxuICAgIC8vIGh0dHBzOi8vZ2l0LXNjbS5jb20vZG9jcy9naXQtbWVyZ2UtYmFzZVxuICAgIGxldCBiYXNlQnJhbmNoOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgLy8gdHJ5IHRvIGZpbmQgdGhlIGJhc2UgYnJhbmNoIHRoYXQgdGhlIHdvcmtpbmcgYnJhbmNoIHdhcyBjcmVhdGVkIGZyb21cbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3JpZ2luOiBzdHJpbmcgPSBleGVjKFsnZ2l0JywgJ3JlbW90ZScsICdzaG93JywgJ29yaWdpbiddLCB7XG4gICAgICAgIGN3ZCxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgb3JpZ2luTGluZXMgPSBvcmlnaW4uc3BsaXQoJ1xcbicpO1xuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIG9yaWdpbkxpbmVzKSB7XG4gICAgICAgIGlmIChsaW5lLnRyaW0oKS5zdGFydHNXaXRoKCdIRUFEIGJyYW5jaDogJykpIHtcbiAgICAgICAgICBiYXNlQnJhbmNoID0gbGluZS50cmltKCkuc3BsaXQoJ0hFQUQgYnJhbmNoOiAnKVsxXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci53YXJuaW5nKCclc1xcbiVzJyxcbiAgICAgICAgJ0NvdWxkIG5vdCBkZXRlcm1pbmUgZ2l0IG9yaWdpbiBicmFuY2guJyxcbiAgICAgICAgYFlvdSBuZWVkIHRvIG1hbnVhbGx5IGNoZWNrb3V0IHRoZSBzbmFwc2hvdCBkaXJlY3RvcnkgJHt0aGlzLnNuYXBzaG90RGlyfWAgK1xuICAgICAgICAnZnJvbSB0aGUgbWVyZ2UtYmFzZSAoaHR0cHM6Ly9naXQtc2NtLmNvbS9kb2NzL2dpdC1tZXJnZS1iYXNlKScsXG4gICAgICApO1xuICAgICAgbG9nZ2VyLndhcm5pbmcoJ2Vycm9yOiAlcycsIGUpO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIGZvdW5kIHRoZSBiYXNlIGJyYW5jaCB0aGVuIGdldCB0aGUgbWVyZ2UtYmFzZSAobW9zdCByZWNlbnQgY29tbW9uIGNvbW1pdClcbiAgICAvLyBhbmQgY2hlY2tvdXQgdGhlIHNuYXBzaG90IHVzaW5nIHRoYXQgY29tbWl0XG4gICAgaWYgKGJhc2VCcmFuY2gpIHtcbiAgICAgIGNvbnN0IHJlbGF0aXZlU25hcHNob3REaXIgPSBwYXRoLnJlbGF0aXZlKHRoaXMuZGlyZWN0b3J5LCB0aGlzLnNuYXBzaG90RGlyKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYmFzZSA9IGV4ZWMoWydnaXQnLCAnbWVyZ2UtYmFzZScsICdIRUFEJywgYmFzZUJyYW5jaF0sIHtcbiAgICAgICAgICBjd2QsXG4gICAgICAgIH0pO1xuICAgICAgICBleGVjKFsnZ2l0JywgJ2NoZWNrb3V0JywgYmFzZSwgJy0tJywgcmVsYXRpdmVTbmFwc2hvdERpcl0sIHtcbiAgICAgICAgICBjd2QsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsb2dnZXIud2FybmluZygnJXNcXG4lcycsXG4gICAgICAgICAgYENvdWxkIG5vdCBjaGVja291dCBzbmFwc2hvdCBkaXJlY3RvcnkgJHt0aGlzLnNuYXBzaG90RGlyfSB1c2luZyB0aGVzZSBjb21tYW5kczogYCxcbiAgICAgICAgICBgZ2l0IG1lcmdlLWJhc2UgSEVBRCAke2Jhc2VCcmFuY2h9ICYmIGdpdCBjaGVja291dCB7bWVyZ2UtYmFzZX0gLS0gJHtyZWxhdGl2ZVNuYXBzaG90RGlyfWAsXG4gICAgICAgICk7XG4gICAgICAgIGxvZ2dlci53YXJuaW5nKCdlcnJvcjogJXMnLCBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3JjaGVzdHJhdGVzIHJ1bm5pbmcgaW50ZWdyYXRpb24gdGVzdHMuIEN1cnJlbnRseSB0aGlzIGluY2x1ZGVzXG4gICAqXG4gICAqIDEuIChpZiB1cGRhdGUgd29ya2Zsb3cgaXMgZW5hYmxlZCkgRGVwbG95aW5nIHRoZSBzbmFwc2hvdCB0ZXN0IHN0YWNrc1xuICAgKiAyLiBEZXBsb3lpbmcgdGhlIGludGVncmF0aW9uIHRlc3Qgc3RhY2tzXG4gICAqIDIuIFNhdmluZyB0aGUgc25hcHNob3QgKGlmIHN1Y2Nlc3NmdWwpXG4gICAqIDMuIERlc3Ryb3lpbmcgdGhlIGludGVncmF0aW9uIHRlc3Qgc3RhY2tzIChpZiBjbGVhbj1mYWxzZSlcbiAgICpcbiAgICogVGhlIHVwZGF0ZSB3b3JrZmxvdyBleGlzdHMgdG8gY2hlY2sgZm9yIGNhc2VzIHdoZXJlIGEgY2hhbmdlIHdvdWxkIGNhdXNlXG4gICAqIGEgZmFpbHVyZSB0byBhbiBleGlzdGluZyBzdGFjaywgYnV0IG5vdCBmb3IgYSBuZXdseSBjcmVhdGVkIHN0YWNrLlxuICAgKi9cbiAgcHVibGljIHJ1bkludGVnVGVzdENhc2Uob3B0aW9uczogUnVuT3B0aW9ucyk6IEFzc2VydGlvblJlc3VsdHMgfCB1bmRlZmluZWQge1xuICAgIGxldCBhc3NlcnRpb25SZXN1bHRzOiBBc3NlcnRpb25SZXN1bHRzIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGFjdHVhbFRlc3RDYXNlID0gdGhpcy5hY3R1YWxUZXN0U3VpdGUudGVzdFN1aXRlW29wdGlvbnMudGVzdENhc2VOYW1lXTtcbiAgICBpZiAoIWFjdHVhbFRlc3RDYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpZCBub3QgZmluZCB0ZXN0IGNhc2UgbmFtZSAnJHtvcHRpb25zLnRlc3RDYXNlTmFtZX0nIGluICcke09iamVjdC5rZXlzKHRoaXMuYWN0dWFsVGVzdFN1aXRlLnRlc3RTdWl0ZSl9J2ApO1xuICAgIH1cbiAgICBjb25zdCBjbGVhbiA9IG9wdGlvbnMuY2xlYW4gPz8gdHJ1ZTtcbiAgICBjb25zdCB1cGRhdGVXb3JrZmxvd0VuYWJsZWQgPSAob3B0aW9ucy51cGRhdGVXb3JrZmxvdyA/PyB0cnVlKVxuICAgICAgJiYgKGFjdHVhbFRlc3RDYXNlLnN0YWNrVXBkYXRlV29ya2Zsb3cgPz8gdHJ1ZSk7XG4gICAgY29uc3QgZW5hYmxlRm9yVmVyYm9zaXR5TGV2ZWwgPSAobmVlZGVkID0gMSkgPT4ge1xuICAgICAgY29uc3QgdmVyYm9zaXR5ID0gb3B0aW9ucy52ZXJib3NpdHkgPz8gMDtcbiAgICAgIHJldHVybiAodmVyYm9zaXR5ID49IG5lZWRlZCkgPyB0cnVlIDogdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgaWYgKCFvcHRpb25zLmRyeVJ1biAmJiAoYWN0dWFsVGVzdENhc2UuY2RrQ29tbWFuZE9wdGlvbnM/LmRlcGxveT8uZW5hYmxlZCA/PyB0cnVlKSkge1xuICAgICAgICBhc3NlcnRpb25SZXN1bHRzID0gdGhpcy5kZXBsb3koXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4udGhpcy5kZWZhdWx0QXJncyxcbiAgICAgICAgICAgIHByb2ZpbGU6IHRoaXMucHJvZmlsZSxcbiAgICAgICAgICAgIHJlcXVpcmVBcHByb3ZhbDogUmVxdWlyZUFwcHJvdmFsLk5FVkVSLFxuICAgICAgICAgICAgdmVyYm9zZTogZW5hYmxlRm9yVmVyYm9zaXR5TGV2ZWwoMyksXG4gICAgICAgICAgICBkZWJ1ZzogZW5hYmxlRm9yVmVyYm9zaXR5TGV2ZWwoNCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB1cGRhdGVXb3JrZmxvd0VuYWJsZWQsXG4gICAgICAgICAgb3B0aW9ucy50ZXN0Q2FzZU5hbWUsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICAgICAgLi4uREVGQVVMVF9TWU5USF9PUFRJT05TLmVudixcbiAgICAgICAgICBDREtfQ09OVEVYVF9KU09OOiBKU09OLnN0cmluZ2lmeSh0aGlzLmdldENvbnRleHQoKSksXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY2RrLnN5bnRoRmFzdCh7XG4gICAgICAgICAgZXhlY0NtZDogdGhpcy5jZGtBcHAuc3BsaXQoJyAnKSxcbiAgICAgICAgICBlbnYsXG4gICAgICAgICAgb3V0cHV0OiBwYXRoLnJlbGF0aXZlKHRoaXMuZGlyZWN0b3J5LCB0aGlzLmNka091dERpciksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gb25seSBjcmVhdGUgdGhlIHNuYXBzaG90IGlmIHRoZXJlIGFyZSBubyBmYWlsZWQgYXNzZXJ0aW9uIHJlc3VsdHNcbiAgICAgIC8vIChpLmUuIG5vIGZhaWx1cmVzKVxuICAgICAgaWYgKCFhc3NlcnRpb25SZXN1bHRzIHx8ICFPYmplY3QudmFsdWVzKGFzc2VydGlvblJlc3VsdHMpLnNvbWUocmVzdWx0ID0+IHJlc3VsdC5zdGF0dXMgPT09ICdmYWlsJykpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVTbmFwc2hvdCgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICghb3B0aW9ucy5kcnlSdW4pIHtcbiAgICAgICAgaWYgKGNsZWFuICYmIChhY3R1YWxUZXN0Q2FzZS5jZGtDb21tYW5kT3B0aW9ucz8uZGVzdHJveT8uZW5hYmxlZCA/PyB0cnVlKSkge1xuICAgICAgICAgIHRoaXMuZGVzdHJveShvcHRpb25zLnRlc3RDYXNlTmFtZSwge1xuICAgICAgICAgICAgLi4udGhpcy5kZWZhdWx0QXJncyxcbiAgICAgICAgICAgIHByb2ZpbGU6IHRoaXMucHJvZmlsZSxcbiAgICAgICAgICAgIGFsbDogdHJ1ZSxcbiAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICAgICAgYXBwOiB0aGlzLmNka0FwcCxcbiAgICAgICAgICAgIG91dHB1dDogcGF0aC5yZWxhdGl2ZSh0aGlzLmRpcmVjdG9yeSwgdGhpcy5jZGtPdXREaXIpLFxuICAgICAgICAgICAgLi4uYWN0dWFsVGVzdENhc2UuY2RrQ29tbWFuZE9wdGlvbnM/LmRlc3Ryb3k/LmFyZ3MsXG4gICAgICAgICAgICBjb250ZXh0OiB0aGlzLmdldENvbnRleHQoYWN0dWFsVGVzdENhc2UuY2RrQ29tbWFuZE9wdGlvbnM/LmRlc3Ryb3k/LmFyZ3M/LmNvbnRleHQpLFxuICAgICAgICAgICAgdmVyYm9zZTogZW5hYmxlRm9yVmVyYm9zaXR5TGV2ZWwoMyksXG4gICAgICAgICAgICBkZWJ1ZzogZW5hYmxlRm9yVmVyYm9zaXR5TGV2ZWwoNCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY2xlYW51cCgpO1xuICAgIH1cbiAgICByZXR1cm4gYXNzZXJ0aW9uUmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGEgaW50ZWcgdGVzdCBjYXNlIHN0YWNrIGRlc3RydWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGRlc3Ryb3kodGVzdENhc2VOYW1lOiBzdHJpbmcsIGRlc3Ryb3lBcmdzOiBEZXN0cm95T3B0aW9ucykge1xuICAgIGNvbnN0IGFjdHVhbFRlc3RDYXNlID0gdGhpcy5hY3R1YWxUZXN0U3VpdGUudGVzdFN1aXRlW3Rlc3RDYXNlTmFtZV07XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhY3R1YWxUZXN0Q2FzZS5ob29rcz8ucHJlRGVzdHJveSkge1xuICAgICAgICBleGVjKFtjaGFpbihhY3R1YWxUZXN0Q2FzZS5ob29rcy5wcmVEZXN0cm95KV0sIHtcbiAgICAgICAgICBjd2Q6IHBhdGguZGlybmFtZSh0aGlzLnNuYXBzaG90RGlyKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNkay5kZXN0cm95KHtcbiAgICAgICAgLi4uZGVzdHJveUFyZ3MsXG4gICAgICB9KTtcblxuICAgICAgaWYgKGFjdHVhbFRlc3RDYXNlLmhvb2tzPy5wb3N0RGVzdHJveSkge1xuICAgICAgICBleGVjKFtjaGFpbihhY3R1YWxUZXN0Q2FzZS5ob29rcy5wb3N0RGVzdHJveSldLCB7XG4gICAgICAgICAgY3dkOiBwYXRoLmRpcm5hbWUodGhpcy5zbmFwc2hvdERpciksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMucGFyc2VFcnJvcihlLFxuICAgICAgICBhY3R1YWxUZXN0Q2FzZS5jZGtDb21tYW5kT3B0aW9ucz8uZGVzdHJveT8uZXhwZWN0RXJyb3IgPz8gZmFsc2UsXG4gICAgICAgIGFjdHVhbFRlc3RDYXNlLmNka0NvbW1hbmRPcHRpb25zPy5kZXN0cm95Py5leHBlY3RlZE1lc3NhZ2UsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGEgaW50ZWcgdGVzdCBjYXNlIGRlcGxveW1lbnQsIGluY2x1ZGluZ1xuICAgKiBwZWZvcm1pbmcgdGhlIHVwZGF0ZSB3b3JrZmxvd1xuICAgKi9cbiAgcHJpdmF0ZSBkZXBsb3koXG4gICAgZGVwbG95QXJnczogRGVwbG95T3B0aW9ucyxcbiAgICB1cGRhdGVXb3JrZmxvd0VuYWJsZWQ6IGJvb2xlYW4sXG4gICAgdGVzdENhc2VOYW1lOiBzdHJpbmcsXG4gICk6IEFzc2VydGlvblJlc3VsdHMgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGFjdHVhbFRlc3RDYXNlID0gdGhpcy5hY3R1YWxUZXN0U3VpdGUudGVzdFN1aXRlW3Rlc3RDYXNlTmFtZV07XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhY3R1YWxUZXN0Q2FzZS5ob29rcz8ucHJlRGVwbG95KSB7XG4gICAgICAgIGV4ZWMoW2NoYWluKGFjdHVhbFRlc3RDYXNlLmhvb2tzPy5wcmVEZXBsb3kpXSwge1xuICAgICAgICAgIGN3ZDogcGF0aC5kaXJuYW1lKHRoaXMuc25hcHNob3REaXIpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSB1cGRhdGUgd29ya2Zsb3cgaXMgbm90IGRpc2FibGVkLCBmaXJzdFxuICAgICAgLy8gcGVyZm9ybSBhIGRlcGxveW1lbnQgd2l0aCB0aGUgZXhpc2luZyBzbmFwc2hvdFxuICAgICAgLy8gdGhlbiBwZXJmb3JtIGEgZGVwbG95bWVudCAod2hpY2ggd2lsbCBiZSBhIHN0YWNrIHVwZGF0ZSlcbiAgICAgIC8vIHdpdGggdGhlIGN1cnJlbnQgaW50ZWdyYXRpb24gdGVzdFxuICAgICAgLy8gV2UgYWxzbyBvbmx5IHdhbnQgdG8gcnVuIHRoZSB1cGRhdGUgd29ya2Zsb3cgaWYgdGhlcmUgaXMgYW4gZXhpc3RpbmdcbiAgICAgIC8vIHNuYXBzaG90IChvdGhlcndpc2UgdGhlcmUgaXMgbm90aGluZyB0byB1cGRhdGUpXG4gICAgICBpZiAodXBkYXRlV29ya2Zsb3dFbmFibGVkICYmIHRoaXMuaGFzU25hcHNob3QoKSAmJlxuICAgICAgICAodGhpcy5leHBlY3RlZFRlc3RTdWl0ZSAmJiB0ZXN0Q2FzZU5hbWUgaW4gdGhpcy5leHBlY3RlZFRlc3RTdWl0ZT8udGVzdFN1aXRlKSkge1xuICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIHNuYXBzaG90IGlzIHRoZSBsYXRlc3QgZnJvbSAnb3JpZ2luJ1xuICAgICAgICB0aGlzLmNoZWNrb3V0U25hcHNob3QoKTtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRUZXN0Q2FzZSA9IHRoaXMuZXhwZWN0ZWRUZXN0U3VpdGUudGVzdFN1aXRlW3Rlc3RDYXNlTmFtZV07XG4gICAgICAgIHRoaXMuY2RrLmRlcGxveSh7XG4gICAgICAgICAgLi4uZGVwbG95QXJncyxcbiAgICAgICAgICBzdGFja3M6IGV4cGVjdGVkVGVzdENhc2Uuc3RhY2tzLFxuICAgICAgICAgIC4uLmV4cGVjdGVkVGVzdENhc2U/LmNka0NvbW1hbmRPcHRpb25zPy5kZXBsb3k/LmFyZ3MsXG4gICAgICAgICAgY29udGV4dDogdGhpcy5nZXRDb250ZXh0KGV4cGVjdGVkVGVzdENhc2U/LmNka0NvbW1hbmRPcHRpb25zPy5kZXBsb3k/LmFyZ3M/LmNvbnRleHQpLFxuICAgICAgICAgIGFwcDogcGF0aC5yZWxhdGl2ZSh0aGlzLmRpcmVjdG9yeSwgdGhpcy5zbmFwc2hvdERpciksXG4gICAgICAgICAgbG9va3VwczogdGhpcy5leHBlY3RlZFRlc3RTdWl0ZT8uZW5hYmxlTG9va3VwcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBub3cgZGVwbG95IHRoZSBcImFjdHVhbFwiIHRlc3QuIElmIHRoZXJlIGFyZSBhbnkgYXNzZXJ0aW9uc1xuICAgICAgLy8gZGVwbG95IHRoZSBhc3NlcnRpb24gc3RhY2sgYXMgd2VsbFxuICAgICAgdGhpcy5jZGsuZGVwbG95KHtcbiAgICAgICAgLi4uZGVwbG95QXJncyxcbiAgICAgICAgbG9va3VwczogdGhpcy5hY3R1YWxUZXN0U3VpdGUuZW5hYmxlTG9va3VwcyxcbiAgICAgICAgc3RhY2tzOiBbXG4gICAgICAgICAgLi4uYWN0dWFsVGVzdENhc2Uuc3RhY2tzLFxuICAgICAgICAgIC4uLmFjdHVhbFRlc3RDYXNlLmFzc2VydGlvblN0YWNrID8gW2FjdHVhbFRlc3RDYXNlLmFzc2VydGlvblN0YWNrXSA6IFtdLFxuICAgICAgICBdLFxuICAgICAgICByb2xsYmFjazogZmFsc2UsXG4gICAgICAgIG91dHB1dDogcGF0aC5yZWxhdGl2ZSh0aGlzLmRpcmVjdG9yeSwgdGhpcy5jZGtPdXREaXIpLFxuICAgICAgICAuLi5hY3R1YWxUZXN0Q2FzZT8uY2RrQ29tbWFuZE9wdGlvbnM/LmRlcGxveT8uYXJncyxcbiAgICAgICAgLi4uYWN0dWFsVGVzdENhc2UuYXNzZXJ0aW9uU3RhY2sgPyB7IG91dHB1dHNGaWxlOiBwYXRoLnJlbGF0aXZlKHRoaXMuZGlyZWN0b3J5LCBwYXRoLmpvaW4odGhpcy5jZGtPdXREaXIsICdhc3NlcnRpb24tcmVzdWx0cy5qc29uJykpIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dChhY3R1YWxUZXN0Q2FzZT8uY2RrQ29tbWFuZE9wdGlvbnM/LmRlcGxveT8uYXJncz8uY29udGV4dCksXG4gICAgICAgIGFwcDogdGhpcy5jZGtBcHAsXG4gICAgICB9KTtcblxuICAgICAgaWYgKGFjdHVhbFRlc3RDYXNlLmhvb2tzPy5wb3N0RGVwbG95KSB7XG4gICAgICAgIGV4ZWMoW2NoYWluKGFjdHVhbFRlc3RDYXNlLmhvb2tzPy5wb3N0RGVwbG95KV0sIHtcbiAgICAgICAgICBjd2Q6IHBhdGguZGlybmFtZSh0aGlzLnNuYXBzaG90RGlyKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhY3R1YWxUZXN0Q2FzZS5hc3NlcnRpb25TdGFjayAmJiBhY3R1YWxUZXN0Q2FzZS5hc3NlcnRpb25TdGFja05hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0Fzc2VydGlvblJlc3VsdHMoXG4gICAgICAgICAgcGF0aC5qb2luKHRoaXMuY2RrT3V0RGlyLCAnYXNzZXJ0aW9uLXJlc3VsdHMuanNvbicpLFxuICAgICAgICAgIGFjdHVhbFRlc3RDYXNlLmFzc2VydGlvblN0YWNrTmFtZSxcbiAgICAgICAgICBhY3R1YWxUZXN0Q2FzZS5hc3NlcnRpb25TdGFjayxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLnBhcnNlRXJyb3IoZSxcbiAgICAgICAgYWN0dWFsVGVzdENhc2UuY2RrQ29tbWFuZE9wdGlvbnM/LmRlcGxveT8uZXhwZWN0RXJyb3IgPz8gZmFsc2UsXG4gICAgICAgIGFjdHVhbFRlc3RDYXNlLmNka0NvbW1hbmRPcHRpb25zPy5kZXBsb3k/LmV4cGVjdGVkTWVzc2FnZSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIHRoZSBvdXRwdXRzRmlsZSB3aGljaCBjb250YWlucyB0aGUgYXNzZXJ0aW9ucyByZXN1bHRzIGFzIHN0YWNrXG4gICAqIG91dHB1dHNcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc0Fzc2VydGlvblJlc3VsdHMoZmlsZTogc3RyaW5nLCBhc3NlcnRpb25TdGFja05hbWU6IHN0cmluZywgYXNzZXJ0aW9uU3RhY2tJZDogc3RyaW5nKTogQXNzZXJ0aW9uUmVzdWx0cyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcmVzdWx0czogQXNzZXJ0aW9uUmVzdWx0cyA9IHt9O1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGZpbGUpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBvdXRwdXRzOiB7IFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfSA9IGZzLnJlYWRKU09OU3luYyhmaWxlKTtcblxuICAgICAgICBpZiAoYXNzZXJ0aW9uU3RhY2tOYW1lIGluIG91dHB1dHMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFthc3NlcnRpb25JZCwgcmVzdWx0XSBvZiBPYmplY3QuZW50cmllcyhvdXRwdXRzW2Fzc2VydGlvblN0YWNrTmFtZV0pKSB7XG4gICAgICAgICAgICBpZiAoYXNzZXJ0aW9uSWQuc3RhcnRzV2l0aCgnQXNzZXJ0aW9uUmVzdWx0cycpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFzc2VydGlvblJlc3VsdDogQXNzZXJ0aW9uUmVzdWx0ID0gSlNPTi5wYXJzZShyZXN1bHQucmVwbGFjZSgvXFxuL2csICdcXFxcbicpKTtcbiAgICAgICAgICAgICAgaWYgKGFzc2VydGlvblJlc3VsdC5zdGF0dXMgPT09ICdmYWlsJyB8fCBhc3NlcnRpb25SZXN1bHQuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRzW2Fzc2VydGlvbklkXSA9IGFzc2VydGlvblJlc3VsdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpZiB0aGVyZSBhcmUgb3V0cHV0cywgYnV0IHRoZXkgY2Fubm90IGJlIHByb2Nlc3NlZCwgdGhlbiB0aHJvdyBhbiBlcnJvclxuICAgICAgICAvLyBzbyB0aGF0IHRoZSB0ZXN0IGZhaWxzXG4gICAgICAgIHJlc3VsdHNbYXNzZXJ0aW9uU3RhY2tJZF0gPSB7XG4gICAgICAgICAgc3RhdHVzOiAnZmFpbCcsXG4gICAgICAgICAgbWVzc2FnZTogYGVycm9yIHByb2Nlc3NpbmcgYXNzZXJ0aW9uIHJlc3VsdHM6ICR7ZX1gLFxuICAgICAgICB9O1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBvdXRwdXRzIGZpbGUgc28gaXQgaXMgbm90IHBhcnQgb2YgdGhlIHNuYXBzaG90XG4gICAgICAgIC8vIGl0IHdpbGwgY29udGFpbiBlbnYgc3BlY2lmaWMgaW5mb3JtYXRpb24gZnJvbSB2YWx1ZXNcbiAgICAgICAgLy8gcmVzb2x2ZWQgYXQgZGVwbG95IHRpbWVcbiAgICAgICAgZnMudW5saW5rU3luYyhmaWxlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlc3VsdHMpLmxlbmd0aCA+IDAgPyByZXN1bHRzIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBlcnJvciBtZXNzYWdlIHJldHVybmVkIGZyb20gYSBDREsgY29tbWFuZFxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZUVycm9yKGU6IHVua25vd24sIGV4cGVjdEVycm9yOiBib29sZWFuLCBleHBlY3RlZE1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBpZiAoZXhwZWN0RXJyb3IpIHtcbiAgICAgIGlmIChleHBlY3RlZE1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IChlIGFzIEVycm9yKS5tZXNzYWdlO1xuICAgICAgICBpZiAoIW1lc3NhZ2UubWF0Y2goZXhwZWN0ZWRNZXNzYWdlKSkge1xuICAgICAgICAgIHRocm93IChlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -59,8 +59,8 @@ exports.printSummary = printSummary;
59
59
  */
60
60
  function formatAssertionResults(results) {
61
61
  return Object.entries(results)
62
- .map(([id, result]) => util_1.format('%s\n%s', id, result.message))
63
- .join('\n');
62
+ .map(([id, result]) => util_1.format('%s%s', id, result.status === 'success' ? ` - ${result.status}` : `\n${result.message}`))
63
+ .join('\n ');
64
64
  }
65
65
  exports.formatAssertionResults = formatAssertionResults;
66
66
  /**
@@ -73,7 +73,7 @@ function printResults(diagnostic) {
73
73
  logger.success(' UNCHANGED %s %s', diagnostic.testName, chalk.gray(`${diagnostic.duration}s`));
74
74
  break;
75
75
  case DiagnosticReason.TEST_SUCCESS:
76
- logger.success(' SUCCESS %s %s', diagnostic.testName, chalk.gray(`${diagnostic.duration}s`));
76
+ logger.success(' SUCCESS %s %s\n ', diagnostic.testName, chalk.gray(`${diagnostic.duration}s`), diagnostic.message);
77
77
  break;
78
78
  case DiagnosticReason.NO_SNAPSHOT:
79
79
  logger.error(' NEW %s %s', diagnostic.testName, chalk.gray(`${diagnostic.duration}s`));
@@ -106,4 +106,4 @@ function printLaggards(testNames) {
106
106
  logger.print(chalk.grey(parts.filter(x => x).join(' ')));
107
107
  }
108
108
  exports.printLaggards = printLaggards;
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE4QjtBQUU5QiwrQkFBK0I7QUFDL0Isb0NBQW9DO0FBbUtwQzs7R0FFRztBQUNILElBQVksZ0JBMENYO0FBMUNELFdBQVksZ0JBQWdCO0lBQzFCOzs7T0FHRztJQUNILCtDQUEyQixDQUFBO0lBRTNCOztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCw2Q0FBeUIsQ0FBQTtJQUV6Qjs7O09BR0c7SUFDSCx1REFBbUMsQ0FBQTtJQUVuQzs7T0FFRztJQUNILHFEQUFpQyxDQUFBO0lBRWpDOztPQUVHO0lBQ0gseURBQXFDLENBQUE7SUFFckM7O09BRUc7SUFDSCxpREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILHlEQUFxQyxDQUFBO0FBQ3ZDLENBQUMsRUExQ1csZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUEwQzNCO0FBaUNELFNBQWdCLFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBYztJQUN4RCxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDZCxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzVHO1NBQU07UUFDTCxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQy9HO0FBQ0gsQ0FBQztBQU5ELG9DQU1DO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsT0FBeUI7SUFDOUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUMzQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBSkQsd0RBSUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFlBQVksQ0FBQyxVQUFzQjs7SUFDakQsUUFBUSxVQUFVLENBQUMsTUFBTSxFQUFFO1FBQ3pCLEtBQUssZ0JBQWdCLENBQUMsZ0JBQWdCO1lBQ3BDLE1BQU0sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqRyxNQUFNO1FBQ1IsS0FBSyxnQkFBZ0IsQ0FBQyxZQUFZO1lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqRyxNQUFNO1FBQ1IsS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXO1lBQy9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRixNQUFNO1FBQ1IsS0FBSyxnQkFBZ0IsQ0FBQyxlQUFlO1lBQ25DLE1BQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdILE1BQU07UUFDUixLQUFLLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztRQUNyQyxLQUFLLGdCQUFnQixDQUFDLFVBQVU7WUFDOUIsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0gsTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsV0FBVztZQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3SCxNQUFNO1FBQ1IsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0I7WUFDcEMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0gsTUFBTTtLQUNUO0lBQ0QsS0FBSyxNQUFNLElBQUksVUFBSSxVQUFVLENBQUMsa0JBQWtCLG1DQUFJLEVBQUUsRUFBRTtRQUN0RCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUMvQjtBQUNILENBQUM7QUE1QkQsb0NBNEJDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFNBQXNCO0lBQ2xELE1BQU0sS0FBSyxHQUFHO1FBQ1osSUFBSTtRQUNKLGVBQWUsU0FBUyxDQUFDLElBQUksT0FBTztRQUNwQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0tBQ2pGLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQVJELHNDQVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgeyBSZXNvdXJjZUltcGFjdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkZm9ybWF0aW9uLWRpZmYnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBJbnRlZ1Rlc3RJbmZvIH0gZnJvbSAnLi4vcnVubmVyL2ludGVncmF0aW9uLXRlc3RzJztcblxuLyoqXG4gKiBUaGUgYWdncmVnYXRlIHJlc3VsdHMgZnJvbSBydW5uaW5nIGFzc2VydGlvbnMgb24gYSB0ZXN0IGNhc2VcbiAqL1xuZXhwb3J0IHR5cGUgQXNzZXJ0aW9uUmVzdWx0cyA9IHsgW2lkOiBzdHJpbmddOiBBc3NlcnRpb25SZXN1bHQgfTtcblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIGFuIGluZGl2aWR1YWwgYXNzZXJ0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXJ0aW9uUmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSBhc3NlcnRpb24gbWVzc2FnZS4gSWYgdGhlIGFzc2VydGlvbiBmYWlsZWQsIHRoaXMgd2lsbFxuICAgKiBpbmNsdWRlIHRoZSByZWFzb24uXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGFzc2VydGlvbiBzdWNjZWVkZWQgb3IgZmFpbGVkXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM6ICdzdWNjZXNzJyB8ICdmYWlsJztcbn1cblxuLyoqXG4gKiBDb25maWcgZm9yIGFuIGludGVncmF0aW9uIHRlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ1Rlc3RXb3JrZXJDb25maWcgZXh0ZW5kcyBJbnRlZ1Rlc3RJbmZvIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBhbnkgZGVzdHJ1Y3RpdmUgY2hhbmdlc1xuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzdHJ1Y3RpdmVDaGFuZ2VzPzogRGVzdHJ1Y3RpdmVDaGFuZ2VbXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBvbiBhbnkgZGVzdHJ1Y3RpdmUgY2hhbmdlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3RydWN0aXZlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIFRoZSBsb2dpY2FsSWQgb2YgdGhlIHJlc291cmNlIHdpdGggYSBkZXN0cnVjdGl2ZSBjaGFuZ2VcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2ljYWxJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc3RhY2sgdGhhdCBjb250YWlucyB0aGUgZGVzdHJ1Y3RpdmUgY2hhbmdlXG4gICAqL1xuICByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGltcGFjdCBvZiB0aGUgZGVzdHJ1Y3RpdmUgY2hhbmdlXG4gICAqL1xuICByZWFkb25seSBpbXBhY3Q6IFJlc291cmNlSW1wYWN0O1xufVxuXG5cbi8qKlxuICogUmVwcmVzZW50cyBpbnRlZ3JhdGlvbiB0ZXN0cyBtZXRyaWNzIGZvciBhIGdpdmVuIHdvcmtlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVnUnVubmVyTWV0cmljcyB7XG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIHRoZSB0ZXN0IHdhcyBydW4gaW5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgZHVyYXRpb24gb2YgdGhlIHdvcmtlci5cbiAgICogVGhpcyB3aWxsIGJlIHRoZSBzdW0gb2YgYWxsIGluZGl2aWR1YWwgdGVzdCBkdXJhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBpbmRpdmlkdWFsIHRlc3RzIHRoYXQgdGhlXG4gICAqIHdvcmtlciBleGVjdXRlZC5cbiAgICpcbiAgICogTWFwIG9mIHRlc3ROYW1lIHRvIGR1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdHM6IHsgW3Rlc3ROYW1lOiBzdHJpbmddOiBudW1iZXIgfTtcblxuICAvKipcbiAgICogVGhlIHByb2ZpbGUgdGhhdCB3YXMgdXNlZCB0byBydW4gdGhlIHRlc3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IHByb2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU25hcHNob3RWZXJpZmljYXRpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFJldGFpbiBmYWlsZWQgc25hcHNob3QgY29tcGFyaXNvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJldGFpbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcmJvc2UgbW9kZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyYm9zZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCByZXN1bHRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdCYXRjaFJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgZmFpbGVkIHRlc3RzXG4gICAqL1xuICByZWFkb25seSBmYWlsZWRUZXN0czogSW50ZWdUZXN0SW5mb1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIEludGVncmF0aW9uIHRlc3QgbWV0cmljcy4gRWFjaCBlbnRyeSBpbiB0aGVcbiAgICogbGlzdCByZXByZXNlbnRzIG1ldHJpY3MgZnJvbSBhIHNpbmdsZSB3b3JrZXIgKGFjY291bnQgKyByZWdpb24pLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljczogSW50ZWdSdW5uZXJNZXRyaWNzW107XG59XG5cbi8qKlxuICogQ29tbW9uIG9wdGlvbnMgZm9yIHJ1bm5pbmcgaW50ZWdyYXRpb24gdGVzdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ1Rlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBpbnRlZ3JhdGlvbiB0ZXN0cyB0byBydW5cbiAgICogaW4gdGhpcyBiYXRjaFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdHM6IEludGVnVGVzdFdvcmtlckNvbmZpZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkZXN0cm95IHRoZSBzdGFja3MgYXQgdGhlXG4gICAqIGVuZCBvZiB0aGUgdGVzdFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjbGVhbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBpcyBzZXQgdG8gYHRydWVgIHRoZSBzbmFwc2hvdCB3aWxsXG4gICAqIGJlIGNyZWF0ZWQgX3dpdGhvdXRfIHJ1bm5pbmcgdGhlIGludGVncmF0aW9uIHRlc3RcbiAgICogVGhlIHJlc3VsdGluZyBzbmFwc2hvdCBTSE9VTEQgTk9UIGJlIGNoZWNrZWQgaW5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsZXZlbCBvZiB2ZXJib3NpdHkgZm9yIGxvZ2dpbmcuXG4gICAqIEhpZ2hlciBudW1iZXIgbWVhbnMgbW9yZSBvdXRwdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHZlcmJvc2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBzZXQgdG8gdHJ1ZSB0aGVuIHRoZSBzdGFjayB1cGRhdGUgd29ya2Zsb3cgd2lsbCBiZSBkaXNhYmxlZFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVXb3JrZmxvdz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBwb3NzaWJsZSByZWFzb25zIGZvciBhIGRpYWdub3N0aWNcbiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY1JlYXNvbiB7XG4gIC8qKlxuICAgKiBUaGUgaW50ZWdyYXRpb24gdGVzdCBmYWlsZWQgYmVjYXVzZSB0aGVyZVxuICAgKiBpcyBub3QgZXhpc3Rpbmcgc25hcHNob3RcbiAgICovXG4gIE5PX1NOQVBTSE9UID0gJ05PX1NOQVBTSE9UJyxcblxuICAvKipcbiAgICogVGhlIGludGVncmF0aW9uIHRlc3QgZmFpbGVkXG4gICAqL1xuICBURVNUX0ZBSUxFRCA9ICdURVNUX0ZBSUxFRCcsXG5cbiAgLyoqXG4gICAqIFRoZXJlIHdhcyBhbiBlcnJvciBydW5uaW5nIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0XG4gICAqL1xuICBURVNUX0VSUk9SID0gJ1RFU1RfRVJST1InLFxuXG4gIC8qKlxuICAgKiBUaGUgc25hcHNob3QgdGVzdCBmYWlsZWQgYmVjYXVzZSB0aGUgYWN0dWFsXG4gICAqIHNuYXBzaG90IHdhcyBkaWZmZXJlbnQgdGhhbiB0aGUgZXhwZWN0ZWQgc25hcHNob3RcbiAgICovXG4gIFNOQVBTSE9UX0ZBSUxFRCA9ICdTTkFQU0hPVF9GQUlMRUQnLFxuXG4gIC8qKlxuICAgKiBUaGUgc25hcHNob3QgdGVzdCBmYWlsZWQgYmVjYXVzZSB0aGVyZSB3YXMgYW4gZXJyb3IgZXhlY3V0aW5nIGl0XG4gICAqL1xuICBTTkFQU0hPVF9FUlJPUiA9ICdTTkFQU0hPVF9FUlJPUicsXG5cbiAgLyoqXG4gICAqIFRoZSBzbmFwc2hvdCB0ZXN0IHN1Y2NlZWRlZFxuICAgKi9cbiAgU05BUFNIT1RfU1VDQ0VTUyA9ICdTTkFQU0hPVF9TVUNDRVNTJyxcblxuICAvKipcbiAgICogVGhlIGludGVncmF0aW9uIHRlc3Qgc3VjY2VlZGVkXG4gICAqL1xuICBURVNUX1NVQ0NFU1MgPSAnVEVTVF9TVUNDRVNTJyxcblxuICAvKipcbiAgICogVGhlIGFzc2VydGlvbiBmYWlsZWRcbiAgICovXG4gIEFTU0VSVElPTl9GQUlMRUQgPSAnQVNTRVJUSU9OX0ZBSUxFRCcsXG59XG5cbi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCBkaWFnbm9zdGljc1xuICogVGhpcyBpcyB1c2VkIHRvIHJlcG9ydCBiYWNrIHRoZSBzdGF0dXMgb2YgZWFjaCB0ZXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlhZ25vc3RpYyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGVzdFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpYWdub3N0aWMgbWVzc2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpdCB0b29rIHRvIHJ1biB0aGUgdGVzdFxuICAgKi9cbiAgcmVhZG9ubHkgZHVyYXRpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSByZWFzb24gZm9yIHRoZSBkaWFnbm9zdGljXG4gICAqL1xuICByZWFkb25seSByZWFzb246IERpYWdub3N0aWNSZWFzb247XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgbWVzc2FnZXMgdG8gcHJpbnRcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxNZXNzYWdlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRTdW1tYXJ5KHRvdGFsOiBudW1iZXIsIGZhaWxlZDogbnVtYmVyKTogdm9pZCB7XG4gIGlmIChmYWlsZWQgPiAwKSB7XG4gICAgbG9nZ2VyLnByaW50KCclczogICAgJXMgJXMsICVzIHRvdGFsJywgY2hhbGsuYm9sZCgnVGVzdHMnKSwgY2hhbGsucmVkKGZhaWxlZCksIGNoYWxrLnJlZCgnZmFpbGVkJyksIHRvdGFsKTtcbiAgfSBlbHNlIHtcbiAgICBsb2dnZXIucHJpbnQoJyVzOiAgICAlcyAlcywgJXMgdG90YWwnLCBjaGFsay5ib2xkKCdUZXN0cycpLCBjaGFsay5ncmVlbih0b3RhbCksIGNoYWxrLmdyZWVuKCdwYXNzZWQnKSwgdG90YWwpO1xuICB9XG59XG5cbi8qKlxuICogRm9ybWF0IHRoZSBhc3NlcnRpb24gcmVzdWx0cyBzbyB0aGF0IHRoZSByZXN1bHRzIGNhbiBiZVxuICogcHJpbnRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0QXNzZXJ0aW9uUmVzdWx0cyhyZXN1bHRzOiBBc3NlcnRpb25SZXN1bHRzKTogc3RyaW5nIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdHMpXG4gICAgLm1hcCgoW2lkLCByZXN1bHRdKSA9PiBmb3JtYXQoJyVzXFxuJXMnLCBpZCwgcmVzdWx0Lm1lc3NhZ2UpKVxuICAgIC5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBQcmludCBvdXQgdGhlIHJlc3VsdHMgZnJvbSB0ZXN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRSZXN1bHRzKGRpYWdub3N0aWM6IERpYWdub3N0aWMpOiB2b2lkIHtcbiAgc3dpdGNoIChkaWFnbm9zdGljLnJlYXNvbikge1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5TTkFQU0hPVF9TVUNDRVNTOlxuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJyAgVU5DSEFOR0VEICAlcyAlcycsIGRpYWdub3N0aWMudGVzdE5hbWUsIGNoYWxrLmdyYXkoYCR7ZGlhZ25vc3RpYy5kdXJhdGlvbn1zYCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEaWFnbm9zdGljUmVhc29uLlRFU1RfU1VDQ0VTUzpcbiAgICAgIGxvZ2dlci5zdWNjZXNzKCcgIFNVQ0NFU1MgICAgJXMgJXMnLCBkaWFnbm9zdGljLnRlc3ROYW1lLCBjaGFsay5ncmF5KGAke2RpYWdub3N0aWMuZHVyYXRpb259c2ApKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5OT19TTkFQU0hPVDpcbiAgICAgIGxvZ2dlci5lcnJvcignICBORVcgICAgICAgICVzICVzJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uU05BUFNIT1RfRkFJTEVEOlxuICAgICAgbG9nZ2VyLmVycm9yKCcgIENIQU5HRUQgICAgJXMgJXNcXG4gICAgICAlcycsIGRpYWdub3N0aWMudGVzdE5hbWUsIGNoYWxrLmdyYXkoYCR7ZGlhZ25vc3RpYy5kdXJhdGlvbn1zYCksIGRpYWdub3N0aWMubWVzc2FnZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uU05BUFNIT1RfRVJST1I6XG4gICAgY2FzZSBEaWFnbm9zdGljUmVhc29uLlRFU1RfRVJST1I6XG4gICAgICBsb2dnZXIuZXJyb3IoJyAgRVJST1IgICAgICAlcyAlc1xcbiAgICAgICVzJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSwgZGlhZ25vc3RpYy5tZXNzYWdlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5URVNUX0ZBSUxFRDpcbiAgICAgIGxvZ2dlci5lcnJvcignICBGQUlMRUQgICAgICVzICVzXFxuICAgICAgJXMnLCBkaWFnbm9zdGljLnRlc3ROYW1lLCBjaGFsay5ncmF5KGAke2RpYWdub3N0aWMuZHVyYXRpb259c2ApLCBkaWFnbm9zdGljLm1lc3NhZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEaWFnbm9zdGljUmVhc29uLkFTU0VSVElPTl9GQUlMRUQ6XG4gICAgICBsb2dnZXIuZXJyb3IoJyAgQVNTRVJUICAgICAlcyAlc1xcbiAgICAgICVzJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSwgZGlhZ25vc3RpYy5tZXNzYWdlKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGZvciAoY29uc3QgYWRkbCBvZiBkaWFnbm9zdGljLmFkZGl0aW9uYWxNZXNzYWdlcyA/PyBbXSkge1xuICAgIGxvZ2dlci5wcmludChgICAgICAgJHthZGRsfWApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludExhZ2dhcmRzKHRlc3ROYW1lczogU2V0PHN0cmluZz4pIHtcbiAgY29uc3QgcGFydHMgPSBbXG4gICAgJyAgJyxcbiAgICBgV2FpdGluZyBmb3IgJHt0ZXN0TmFtZXMuc2l6ZX0gbW9yZWAsXG4gICAgdGVzdE5hbWVzLnNpemUgPCAxMCA/IFsnKCcsIEFycmF5LmZyb20odGVzdE5hbWVzKS5qb2luKCcsICcpLCAnKSddLmpvaW4oJycpIDogJycsXG4gIF07XG5cbiAgbG9nZ2VyLnByaW50KGNoYWxrLmdyZXkocGFydHMuZmlsdGVyKHggPT4geCkuam9pbignICcpKSk7XG59Il19
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE4QjtBQUU5QiwrQkFBK0I7QUFDL0Isb0NBQW9DO0FBbUtwQzs7R0FFRztBQUNILElBQVksZ0JBMENYO0FBMUNELFdBQVksZ0JBQWdCO0lBQzFCOzs7T0FHRztJQUNILCtDQUEyQixDQUFBO0lBRTNCOztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCw2Q0FBeUIsQ0FBQTtJQUV6Qjs7O09BR0c7SUFDSCx1REFBbUMsQ0FBQTtJQUVuQzs7T0FFRztJQUNILHFEQUFpQyxDQUFBO0lBRWpDOztPQUVHO0lBQ0gseURBQXFDLENBQUE7SUFFckM7O09BRUc7SUFDSCxpREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILHlEQUFxQyxDQUFBO0FBQ3ZDLENBQUMsRUExQ1csZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUEwQzNCO0FBaUNELFNBQWdCLFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBYztJQUN4RCxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDZCxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzVHO1NBQU07UUFDTCxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQy9HO0FBQ0gsQ0FBQztBQU5ELG9DQU1DO0FBRUQ7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U0FBc0I7SUFDbEQsTUFBTSxLQUFLLEdBQUc7UUFDWixJQUFJO1FBQ0osZUFBZSxTQUFTLENBQUMsSUFBSSxPQUFPO1FBQ3BDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7S0FDakYsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBUkQsc0NBUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXQgfSBmcm9tICd1dGlsJztcbmltcG9ydCB7IFJlc291cmNlSW1wYWN0IH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IEludGVnVGVzdEluZm8gfSBmcm9tICcuLi9ydW5uZXIvaW50ZWdyYXRpb24tdGVzdHMnO1xuXG4vKipcbiAqIFRoZSBhZ2dyZWdhdGUgcmVzdWx0cyBmcm9tIHJ1bm5pbmcgYXNzZXJ0aW9ucyBvbiBhIHRlc3QgY2FzZVxuICovXG5leHBvcnQgdHlwZSBBc3NlcnRpb25SZXN1bHRzID0geyBbaWQ6IHN0cmluZ106IEFzc2VydGlvblJlc3VsdCB9O1xuXG4vKipcbiAqIFRoZSByZXN1bHQgb2YgYW4gaW5kaXZpZHVhbCBhc3NlcnRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlcnRpb25SZXN1bHQge1xuICAvKipcbiAgICogVGhlIGFzc2VydGlvbiBtZXNzYWdlLiBJZiB0aGUgYXNzZXJ0aW9uIGZhaWxlZCwgdGhpcyB3aWxsXG4gICAqIGluY2x1ZGUgdGhlIHJlYXNvbi5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYXNzZXJ0aW9uIHN1Y2NlZWRlZCBvciBmYWlsZWRcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1czogJ3N1Y2Nlc3MnIHwgJ2ZhaWwnO1xufVxuXG4vKipcbiAqIENvbmZpZyBmb3IgYW4gaW50ZWdyYXRpb24gdGVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVnVGVzdFdvcmtlckNvbmZpZyBleHRlbmRzIEludGVnVGVzdEluZm8ge1xuICAvKipcbiAgICogQSBsaXN0IG9mIGFueSBkZXN0cnVjdGl2ZSBjaGFuZ2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBkZXN0cnVjdGl2ZUNoYW5nZXM/OiBEZXN0cnVjdGl2ZUNoYW5nZVtdO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIG9uIGFueSBkZXN0cnVjdGl2ZSBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVzdHJ1Y3RpdmVDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIGxvZ2ljYWxJZCBvZiB0aGUgcmVzb3VyY2Ugd2l0aCBhIGRlc3RydWN0aXZlIGNoYW5nZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFjayB0aGF0IGNvbnRhaW5zIHRoZSBkZXN0cnVjdGl2ZSBjaGFuZ2VcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW1wYWN0IG9mIHRoZSBkZXN0cnVjdGl2ZSBjaGFuZ2VcbiAgICovXG4gIHJlYWRvbmx5IGltcGFjdDogUmVzb3VyY2VJbXBhY3Q7XG59XG5cblxuLyoqXG4gKiBSZXByZXNlbnRzIGludGVncmF0aW9uIHRlc3RzIG1ldHJpY3MgZm9yIGEgZ2l2ZW4gd29ya2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdSdW5uZXJNZXRyaWNzIHtcbiAgLyoqXG4gICAqIFRoZSByZWdpb24gdGhlIHRlc3Qgd2FzIHJ1biBpblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBkdXJhdGlvbiBvZiB0aGUgd29ya2VyLlxuICAgKiBUaGlzIHdpbGwgYmUgdGhlIHN1bSBvZiBhbGwgaW5kaXZpZHVhbCB0ZXN0IGR1cmF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZHVyYXRpb246IG51bWJlcjtcblxuICAvKipcbiAgICogQ29udGFpbnMgdGhlIGR1cmF0aW9uIG9mIGluZGl2aWR1YWwgdGVzdHMgdGhhdCB0aGVcbiAgICogd29ya2VyIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBNYXAgb2YgdGVzdE5hbWUgdG8gZHVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSB0ZXN0czogeyBbdGVzdE5hbWU6IHN0cmluZ106IG51bWJlciB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvZmlsZSB0aGF0IHdhcyB1c2VkIHRvIHJ1biB0aGUgdGVzdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgcHJvZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbmFwc2hvdFZlcmlmaWNhdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogUmV0YWluIGZhaWxlZCBzbmFwc2hvdCBjb21wYXJpc29uc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmV0YWluPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyYm9zZSBtb2RlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2ZXJib3NlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBJbnRlZ3JhdGlvbiB0ZXN0IHJlc3VsdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ0JhdGNoUmVzcG9uc2Uge1xuICAvKipcbiAgICogTGlzdCBvZiBmYWlsZWQgdGVzdHNcbiAgICovXG4gIHJlYWRvbmx5IGZhaWxlZFRlc3RzOiBJbnRlZ1Rlc3RJbmZvW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgSW50ZWdyYXRpb24gdGVzdCBtZXRyaWNzLiBFYWNoIGVudHJ5IGluIHRoZVxuICAgKiBsaXN0IHJlcHJlc2VudHMgbWV0cmljcyBmcm9tIGEgc2luZ2xlIHdvcmtlciAoYWNjb3VudCArIHJlZ2lvbikuXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNzOiBJbnRlZ1J1bm5lck1ldHJpY3NbXTtcbn1cblxuLyoqXG4gKiBDb21tb24gb3B0aW9ucyBmb3IgcnVubmluZyBpbnRlZ3JhdGlvbiB0ZXN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVnVGVzdE9wdGlvbnMge1xuICAvKipcbiAgICogQSBsaXN0IG9mIGludGVncmF0aW9uIHRlc3RzIHRvIHJ1blxuICAgKiBpbiB0aGlzIGJhdGNoXG4gICAqL1xuICByZWFkb25seSB0ZXN0czogSW50ZWdUZXN0V29ya2VyQ29uZmlnW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGRlc3Ryb3kgdGhlIHN0YWNrcyBhdCB0aGVcbiAgICogZW5kIG9mIHRoZSB0ZXN0XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0aGlzIGlzIHNldCB0byBgdHJ1ZWAgdGhlIHNuYXBzaG90IHdpbGxcbiAgICogYmUgY3JlYXRlZCBfd2l0aG91dF8gcnVubmluZyB0aGUgaW50ZWdyYXRpb24gdGVzdFxuICAgKiBUaGUgcmVzdWx0aW5nIHNuYXBzaG90IFNIT1VMRCBOT1QgYmUgY2hlY2tlZCBpblxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGxldmVsIG9mIHZlcmJvc2l0eSBmb3IgbG9nZ2luZy5cbiAgICogSGlnaGVyIG51bWJlciBtZWFucyBtb3JlIG91dHB1dC5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcmVhZG9ubHkgdmVyYm9zaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIHNldCB0byB0cnVlIHRoZW4gdGhlIHN0YWNrIHVwZGF0ZSB3b3JrZmxvdyB3aWxsIGJlIGRpc2FibGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZVdvcmtmbG93PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHBvc3NpYmxlIHJlYXNvbnMgZm9yIGEgZGlhZ25vc3RpY1xuICovXG5leHBvcnQgZW51bSBEaWFnbm9zdGljUmVhc29uIHtcbiAgLyoqXG4gICAqIFRoZSBpbnRlZ3JhdGlvbiB0ZXN0IGZhaWxlZCBiZWNhdXNlIHRoZXJlXG4gICAqIGlzIG5vdCBleGlzdGluZyBzbmFwc2hvdFxuICAgKi9cbiAgTk9fU05BUFNIT1QgPSAnTk9fU05BUFNIT1QnLFxuXG4gIC8qKlxuICAgKiBUaGUgaW50ZWdyYXRpb24gdGVzdCBmYWlsZWRcbiAgICovXG4gIFRFU1RfRkFJTEVEID0gJ1RFU1RfRkFJTEVEJyxcblxuICAvKipcbiAgICogVGhlcmUgd2FzIGFuIGVycm9yIHJ1bm5pbmcgdGhlIGludGVncmF0aW9uIHRlc3RcbiAgICovXG4gIFRFU1RfRVJST1IgPSAnVEVTVF9FUlJPUicsXG5cbiAgLyoqXG4gICAqIFRoZSBzbmFwc2hvdCB0ZXN0IGZhaWxlZCBiZWNhdXNlIHRoZSBhY3R1YWxcbiAgICogc25hcHNob3Qgd2FzIGRpZmZlcmVudCB0aGFuIHRoZSBleHBlY3RlZCBzbmFwc2hvdFxuICAgKi9cbiAgU05BUFNIT1RfRkFJTEVEID0gJ1NOQVBTSE9UX0ZBSUxFRCcsXG5cbiAgLyoqXG4gICAqIFRoZSBzbmFwc2hvdCB0ZXN0IGZhaWxlZCBiZWNhdXNlIHRoZXJlIHdhcyBhbiBlcnJvciBleGVjdXRpbmcgaXRcbiAgICovXG4gIFNOQVBTSE9UX0VSUk9SID0gJ1NOQVBTSE9UX0VSUk9SJyxcblxuICAvKipcbiAgICogVGhlIHNuYXBzaG90IHRlc3Qgc3VjY2VlZGVkXG4gICAqL1xuICBTTkFQU0hPVF9TVUNDRVNTID0gJ1NOQVBTSE9UX1NVQ0NFU1MnLFxuXG4gIC8qKlxuICAgKiBUaGUgaW50ZWdyYXRpb24gdGVzdCBzdWNjZWVkZWRcbiAgICovXG4gIFRFU1RfU1VDQ0VTUyA9ICdURVNUX1NVQ0NFU1MnLFxuXG4gIC8qKlxuICAgKiBUaGUgYXNzZXJ0aW9uIGZhaWxlZFxuICAgKi9cbiAgQVNTRVJUSU9OX0ZBSUxFRCA9ICdBU1NFUlRJT05fRkFJTEVEJyxcbn1cblxuLyoqXG4gKiBJbnRlZ3JhdGlvbiB0ZXN0IGRpYWdub3N0aWNzXG4gKiBUaGlzIGlzIHVzZWQgdG8gcmVwb3J0IGJhY2sgdGhlIHN0YXR1cyBvZiBlYWNoIHRlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaWFnbm9zdGljIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0ZXN0XG4gICAqL1xuICByZWFkb25seSB0ZXN0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlhZ25vc3RpYyBtZXNzYWdlXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGl0IHRvb2sgdG8gcnVuIHRoZSB0ZXN0XG4gICAqL1xuICByZWFkb25seSBkdXJhdGlvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJlYXNvbiBmb3IgdGhlIGRpYWdub3N0aWNcbiAgICovXG4gIHJlYWRvbmx5IHJlYXNvbjogRGlhZ25vc3RpY1JlYXNvbjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBtZXNzYWdlcyB0byBwcmludFxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbE1lc3NhZ2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludFN1bW1hcnkodG90YWw6IG51bWJlciwgZmFpbGVkOiBudW1iZXIpOiB2b2lkIHtcbiAgaWYgKGZhaWxlZCA+IDApIHtcbiAgICBsb2dnZXIucHJpbnQoJyVzOiAgICAlcyAlcywgJXMgdG90YWwnLCBjaGFsay5ib2xkKCdUZXN0cycpLCBjaGFsay5yZWQoZmFpbGVkKSwgY2hhbGsucmVkKCdmYWlsZWQnKSwgdG90YWwpO1xuICB9IGVsc2Uge1xuICAgIGxvZ2dlci5wcmludCgnJXM6ICAgICVzICVzLCAlcyB0b3RhbCcsIGNoYWxrLmJvbGQoJ1Rlc3RzJyksIGNoYWxrLmdyZWVuKHRvdGFsKSwgY2hhbGsuZ3JlZW4oJ3Bhc3NlZCcpLCB0b3RhbCk7XG4gIH1cbn1cblxuLyoqXG4gKiBGb3JtYXQgdGhlIGFzc2VydGlvbiByZXN1bHRzIHNvIHRoYXQgdGhlIHJlc3VsdHMgY2FuIGJlXG4gKiBwcmludGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRBc3NlcnRpb25SZXN1bHRzKHJlc3VsdHM6IEFzc2VydGlvblJlc3VsdHMpOiBzdHJpbmcge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0cylcbiAgICAubWFwKChbaWQsIHJlc3VsdF0pID0+IGZvcm1hdCgnJXMlcycsIGlkLCByZXN1bHQuc3RhdHVzID09PSAnc3VjY2VzcycgPyBgIC0gJHtyZXN1bHQuc3RhdHVzfWAgOiBgXFxuJHtyZXN1bHQubWVzc2FnZX1gKSlcbiAgICAuam9pbignXFxuICAgICAgJyk7XG59XG5cbi8qKlxuICogUHJpbnQgb3V0IHRoZSByZXN1bHRzIGZyb20gdGVzdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaW50UmVzdWx0cyhkaWFnbm9zdGljOiBEaWFnbm9zdGljKTogdm9pZCB7XG4gIHN3aXRjaCAoZGlhZ25vc3RpYy5yZWFzb24pIHtcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uU05BUFNIT1RfU1VDQ0VTUzpcbiAgICAgIGxvZ2dlci5zdWNjZXNzKCcgIFVOQ0hBTkdFRCAgJXMgJXMnLCBkaWFnbm9zdGljLnRlc3ROYW1lLCBjaGFsay5ncmF5KGAke2RpYWdub3N0aWMuZHVyYXRpb259c2ApKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5URVNUX1NVQ0NFU1M6XG4gICAgICBsb2dnZXIuc3VjY2VzcygnICBTVUNDRVNTICAgICVzICVzXFxuICAgICAgJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSwgZGlhZ25vc3RpYy5tZXNzYWdlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5OT19TTkFQU0hPVDpcbiAgICAgIGxvZ2dlci5lcnJvcignICBORVcgICAgICAgICVzICVzJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uU05BUFNIT1RfRkFJTEVEOlxuICAgICAgbG9nZ2VyLmVycm9yKCcgIENIQU5HRUQgICAgJXMgJXNcXG4gICAgICAlcycsIGRpYWdub3N0aWMudGVzdE5hbWUsIGNoYWxrLmdyYXkoYCR7ZGlhZ25vc3RpYy5kdXJhdGlvbn1zYCksIGRpYWdub3N0aWMubWVzc2FnZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uU05BUFNIT1RfRVJST1I6XG4gICAgY2FzZSBEaWFnbm9zdGljUmVhc29uLlRFU1RfRVJST1I6XG4gICAgICBsb2dnZXIuZXJyb3IoJyAgRVJST1IgICAgICAlcyAlc1xcbiAgICAgICVzJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSwgZGlhZ25vc3RpYy5tZXNzYWdlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5URVNUX0ZBSUxFRDpcbiAgICAgIGxvZ2dlci5lcnJvcignICBGQUlMRUQgICAgICVzICVzXFxuICAgICAgJXMnLCBkaWFnbm9zdGljLnRlc3ROYW1lLCBjaGFsay5ncmF5KGAke2RpYWdub3N0aWMuZHVyYXRpb259c2ApLCBkaWFnbm9zdGljLm1lc3NhZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEaWFnbm9zdGljUmVhc29uLkFTU0VSVElPTl9GQUlMRUQ6XG4gICAgICBsb2dnZXIuZXJyb3IoJyAgQVNTRVJUICAgICAlcyAlc1xcbiAgICAgICVzJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSwgZGlhZ25vc3RpYy5tZXNzYWdlKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGZvciAoY29uc3QgYWRkbCBvZiBkaWFnbm9zdGljLmFkZGl0aW9uYWxNZXNzYWdlcyA/PyBbXSkge1xuICAgIGxvZ2dlci5wcmludChgICAgICAgJHthZGRsfWApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludExhZ2dhcmRzKHRlc3ROYW1lczogU2V0PHN0cmluZz4pIHtcbiAgY29uc3QgcGFydHMgPSBbXG4gICAgJyAgJyxcbiAgICBgV2FpdGluZyBmb3IgJHt0ZXN0TmFtZXMuc2l6ZX0gbW9yZWAsXG4gICAgdGVzdE5hbWVzLnNpemUgPCAxMCA/IFsnKCcsIEFycmF5LmZyb20odGVzdE5hbWVzKS5qb2luKCcsICcpLCAnKSddLmpvaW4oJycpIDogJycsXG4gIF07XG5cbiAgbG9nZ2VyLnByaW50KGNoYWxrLmdyZXkocGFydHMuZmlsdGVyKHggPT4geCkuam9pbignICcpKSk7XG59XG4iXX0=
@@ -42,7 +42,7 @@ function integTestWorker(request) {
42
42
  updateWorkflow: request.updateWorkflow,
43
43
  verbosity,
44
44
  });
45
- if (results) {
45
+ if (results && Object.values(results).some(result => result.status === 'fail')) {
46
46
  failures.push(testInfo);
47
47
  workerpool.workerEmit({
48
48
  reason: common_1.DiagnosticReason.ASSERTION_FAILED,
@@ -55,7 +55,7 @@ function integTestWorker(request) {
55
55
  workerpool.workerEmit({
56
56
  reason: common_1.DiagnosticReason.TEST_SUCCESS,
57
57
  testName: `${runner.testName}-${testCaseName}`,
58
- message: 'Success',
58
+ message: results ? common_1.formatAssertionResults(results) : 'NO ASSERTIONS',
59
59
  duration: (Date.now() - start) / 1000,
60
60
  });
61
61
  }
@@ -154,4 +154,4 @@ workerpool.worker({
154
154
  snapshotTestWorker,
155
155
  integTestWorker,
156
156
  });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdF93b3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleHRyYWN0X3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBeUM7QUFDekMseUNBQW9FO0FBQ3BFLHNFQUEwRTtBQUMxRSxzQ0FBcUk7QUFHckk7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxPQUE4Qjs7SUFDNUQsTUFBTSxRQUFRLEdBQW9CLEVBQUUsQ0FBQztJQUNyQyxNQUFNLFNBQVMsU0FBRyxPQUFPLENBQUMsU0FBUyxtQ0FBSSxDQUFDLENBQUM7SUFFekMsS0FBSyxNQUFNLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksNkJBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtRQUMxRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFekIsSUFBSTtZQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksd0JBQWUsQ0FBQztnQkFDakMsSUFBSTtnQkFDSixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3hCLEdBQUcsRUFBRTtvQkFDSCxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU07aUJBQzNCO2dCQUNELFVBQVUsRUFBRSxTQUFTLElBQUksQ0FBQzthQUMzQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRWhDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVuQyxJQUFJLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDNUQ7WUFDRCxLQUFLLE1BQU0sWUFBWSxJQUFJLE1BQU0sQ0FBQyxJQUFJ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LElBQUk7b0JBQ1osa0JBQWtCO2lCQUNuQixDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxVQUFVLENBQUMsVUFBVSxDQUFDO29CQUNwQixNQUFNLEVBQUUseUJBQWdCLENBQUMsZ0JBQWdCO29CQUN6QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLE9BQU8sRUFBRSxTQUFTO29CQUNsQixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSTtpQkFDeEIsQ0FBQyxDQUFDO2FBQ2xCO1NBQ0Y7S0FDRjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUNwQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87WUFDbEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSx5QkFBZ0IsQ0FBQyxjQUFjO1lBQ3ZDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJO1NBQ3hCLENBQUMsQ0FBQztLQUNsQjtZQUFTO1FBQ1IsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JCO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQXpERCxnREF5REM7QUFFRCxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQ2hCLGtCQUFrQjtJQUNsQixlQUFlO0NBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHdvcmtlcnBvb2wgZnJvbSAnd29ya2VycG9vbCc7XG5pbXBvcnQgeyBJbnRlZ1NuYXBzaG90UnVubmVyLCBJbnRlZ1Rlc3RSdW5uZXIgfSBmcm9tICcuLi8uLi9ydW5uZXInO1xuaW1wb3J0IHsgSW50ZWdUZXN0LCBJbnRlZ1Rlc3RJbmZvIH0gZnJvbSAnLi4vLi4vcnVubmVyL2ludGVncmF0aW9uLXRlc3RzJztcbmltcG9ydCB7IERpYWdub3N0aWNSZWFzb24sIEludGVnVGVzdFdvcmtlckNvbmZpZywgU25hcHNob3RWZXJpZmljYXRpb25PcHRpb25zLCBEaWFnbm9zdGljLCBmb3JtYXRBc3NlcnRpb25SZXN1bHRzIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IEludGVnVGVzdEJhdGNoUmVxdWVzdCB9IGZyb20gJy4uL2ludGVnLXRlc3Qtd29ya2VyJztcblxuLyoqXG4gKiBSdW5zIGEgc2luZ2xlIGludGVncmF0aW9uIHRlc3QgYmF0Y2ggcmVxdWVzdC5cbiAqIElmIHRoZSB0ZXN0IGRvZXMgbm90IGhhdmUgYW4gZXhpc3Rpbmcgc25hcHNob3QsXG4gKiB0aGlzIHdpbGwgZmlyc3QgZ2VuZXJhdGUgYSBzbmFwc2hvdCBhbmQgdGhlbiBleGVjdXRlXG4gKiB0aGUgaW50ZWdyYXRpb24gdGVzdHMuXG4gKlxuICogSWYgdGhlIHRlc3RzIHN1Y2NlZWQgaXQgd2lsbCB0aGVuIHNhdmUgdGhlIHNuYXBzaG90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnRlZ1Rlc3RXb3JrZXIocmVxdWVzdDogSW50ZWdUZXN0QmF0Y2hSZXF1ZXN0KTogSW50ZWdUZXN0V29ya2VyQ29uZmlnW10ge1xuICBjb25zdCBmYWlsdXJlczogSW50ZWdUZXN0SW5mb1tdID0gW107XG4gIGNvbnN0IHZlcmJvc2l0eSA9IHJlcXVlc3QudmVyYm9zaXR5ID8/IDA7XG5cbiAgZm9yIChjb25zdCB0ZXN0SW5mbyBvZiByZXF1ZXN0LnRlc3RzKSB7XG4gICAgY29uc3QgdGVzdCA9IG5ldyBJbnRlZ1Rlc3QodGVzdEluZm8pOyAvLyBIeWRyYXRlIGZyb20gZGF0YVxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBydW5uZXIgPSBuZXcgSW50ZWdUZXN0UnVubmVyKHtcbiAgICAgICAgdGVzdCxcbiAgICAgICAgcHJvZmlsZTogcmVxdWVzdC5wcm9maWxlLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBBV1NfUkVHSU9OOiByZXF1ZXN0LnJlZ2lvbixcbiAgICAgICAgfSxcbiAgICAgICAgc2hvd091dHB1dDogdmVyYm9zaXR5ID49IDIsXG4gICAgICB9LCB0ZXN0SW5mby5kZXN0cnVjdGl2ZUNoYW5nZXMpO1xuXG4gICAgICBjb25zdCB0ZXN0cyA9IHJ1bm5lci5hY3R1YWxUZXN0cygpO1xuXG4gICAgICBpZiAoIXRlc3RzIHx8IE9iamVjdC5rZXlzKHRlc3RzKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyB0ZXN0cyBkZWZpbmVkIGZvciAke3J1bm5lci50ZXN0TmFtZX1gKTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgdGVzdENhc2VOYW1lIG9mIE9iamVjdC5rZXlzKHRlc3RzKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBydW5uZXIucnVuSW50ZWdUZXN0Q2FzZSh7XG4gICAgICAgICAgICB0ZXN0Q2FzZU5hbWUsXG4gICAgICAgICAgICBjbGVhbjogcmVxdWVzdC5jbGVhbixcbiAgICAgICAgICAgIGRyeVJ1bjogcmVxdWVzdC5kcnlSdW4sXG4gICAgICAgICAgICB1cGRhdGVXb3JrZmxvdzogcmVxdWVzdC51cGRhdGVXb3JrZmxvdyxcbiAgICAgICAgICAgIHZlcmJvc2l0eSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgICAgZmFpbHVyZXMucHVzaCh0ZXN0SW5mbyk7XG4gICAgICAgICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uQVNTRVJUSU9OX0ZBSUxFRCxcbiAgICAgICAgICAgICAgdGVzdE5hbWU6IGAke3J1bm5lci50ZXN0TmFtZX0tJHt0ZXN0Q2FzZU5hbWV9ICgke3JlcXVlc3QucHJvZmlsZX0vJHtyZXF1ZXN0LnJlZ2lvbn0pYCxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZm9ybWF0QXNzZXJ0aW9uUmVzdWx0cyhyZXN1bHRzKSxcbiAgICAgICAgICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uVEVTVF9TVUNDRVNTLFxuICAgICAgICAgICAgICB0ZXN0TmFtZTogYCR7cnVubmVyLnRlc3ROYW1lfS0ke3Rlc3RDYXNlTmFtZX1gLFxuICAgICAgICAgICAgICBtZXNzYWdlOiAnU3VjY2VzcycsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBmYWlsdXJlcy5wdXNoKHRlc3RJbmZvKTtcbiAgICAgICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICAgICAgcmVhc29uOiBEaWFnbm9zdGljUmVhc29uLlRFU1RfRkFJTEVELFxuICAgICAgICAgICAgdGVzdE5hbWU6IGAke3J1bm5lci50ZXN0TmFtZX0tJHt0ZXN0Q2FzZU5hbWV9ICgke3JlcXVlc3QucHJvZmlsZX0vJHtyZXF1ZXN0LnJlZ2lvbn0pYCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBJbnRlZ3JhdGlvbiB0ZXN0IGZhaWxlZDogJHtlfWAsXG4gICAgICAgICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZmFpbHVyZXMucHVzaCh0ZXN0SW5mbyk7XG4gICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uVEVTVF9FUlJPUixcbiAgICAgICAgdGVzdE5hbWU6IGAke3Rlc3RJbmZvLmZpbGVOYW1lfSAoJHtyZXF1ZXN0LnByb2ZpbGV9LyR7cmVxdWVzdC5yZWdpb259KWAsXG4gICAgICAgIG1lc3NhZ2U6IGBFcnJvciBkdXJpbmcgaW50ZWdyYXRpb24gdGVzdDogJHtlfWAsXG4gICAgICAgIGR1cmF0aW9uOiAoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFpbHVyZXM7XG59XG5cbi8qKlxuICogUnVucyBhIHNpbmdsZSBzbmFwc2hvdCB0ZXN0IGJhdGNoIHJlcXVlc3QuXG4gKiBGb3IgZWFjaCBpbnRlZ3JhdGlvbiB0ZXN0IHRoaXMgd2lsbCBjaGVjayB0byBzZWVcbiAqIGlmIHRoZXJlIGlzIGFuIGV4aXN0aW5nIHNuYXBzaG90LCBhbmQgaWYgdGhlcmUgaXMgd2lsbFxuICogY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbmFwc2hvdFRlc3RXb3JrZXIodGVzdEluZm86IEludGVnVGVzdEluZm8sIG9wdGlvbnM6IFNuYXBzaG90VmVyaWZpY2F0aW9uT3B0aW9ucyA9IHt9KTogSW50ZWdUZXN0V29ya2VyQ29uZmlnW10ge1xuICBjb25zdCBmYWlsZWRUZXN0cyA9IG5ldyBBcnJheTxJbnRlZ1Rlc3RXb3JrZXJDb25maWc+KCk7XG4gIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgdGVzdCA9IG5ldyBJbnRlZ1Rlc3QodGVzdEluZm8pOyAvLyBIeWRyYXRlIHRoZSBkYXRhIHJlY29yZCBhZ2FpblxuXG4gIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgd29ya2VycG9vbC53b3JrZXJFbWl0KHtcbiAgICAgIHJlYXNvbjogRGlhZ25vc3RpY1JlYXNvbi5TTkFQU0hPVF9FUlJPUixcbiAgICAgIHRlc3ROYW1lOiB0ZXN0LnRlc3ROYW1lLFxuICAgICAgbWVzc2FnZTogJ1Rlc3QgaXMgdGFraW5nIGEgdmVyeSBsb25nIHRpbWUnLFxuICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICB9KTtcbiAgfSwgNjBfMDAwKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJ1bm5lciA9IG5ldyBJbnRlZ1NuYXBzaG90UnVubmVyKHsgdGVzdCB9KTtcbiAgICBpZiAoIXJ1bm5lci5oYXNTbmFwc2hvdCgpKSB7XG4gICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uTk9fU05BUFNIT1QsXG4gICAgICAgIHRlc3ROYW1lOiB0ZXN0LnRlc3ROYW1lLFxuICAgICAgICBtZXNzYWdlOiAnTm8gU25hcHNob3QnLFxuICAgICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgICAgfSk7XG4gICAgICBmYWlsZWRUZXN0cy5wdXNoKHRlc3QuaW5mbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgZGlhZ25vc3RpY3MsIGRlc3RydWN0aXZlQ2hhbmdlcyB9ID0gcnVubmVyLnRlc3RTbmFwc2hvdChvcHRpb25zKTtcbiAgICAgIGlmIChkaWFnbm9zdGljcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRpYWdub3N0aWNzLmZvckVhY2goZGlhZ25vc3RpYyA9PiB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICAgIC4uLmRpYWdub3N0aWMsXG4gICAgICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICAgICAgfSBhcyBEaWFnbm9zdGljKSk7XG4gICAgICAgIGZhaWxlZFRlc3RzLnB1c2goe1xuICAgICAgICAgIC4uLnRlc3QuaW5mbyxcbiAgICAgICAgICBkZXN0cnVjdGl2ZUNoYW5nZXMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd29ya2VycG9vbC53b3JrZXJFbWl0KHtcbiAgICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uU05BUFNIT1RfU1VDQ0VTUyxcbiAgICAgICAgICB0ZXN0TmFtZTogdGVzdC50ZXN0TmFtZSxcbiAgICAgICAgICBtZXNzYWdlOiAnU3VjY2VzcycsXG4gICAgICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICAgICAgfSBhcyBEaWFnbm9zdGljKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBmYWlsZWRUZXN0cy5wdXNoKHRlc3QuaW5mbyk7XG4gICAgd29ya2VycG9vbC53b3JrZXJFbWl0KHtcbiAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgIHRlc3ROYW1lOiB0ZXN0LnRlc3ROYW1lLFxuICAgICAgcmVhc29uOiBEaWFnbm9zdGljUmVhc29uLlNOQVBTSE9UX0VSUk9SLFxuICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICB9IGFzIERpYWdub3N0aWMpO1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gIH1cblxuICByZXR1cm4gZmFpbGVkVGVzdHM7XG59XG5cbndvcmtlcnBvb2wud29ya2VyKHtcbiAgc25hcHNob3RUZXN0V29ya2VyLFxuICBpbnRlZ1Rlc3RXb3JrZXIsXG59KTtcbiJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdF93b3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleHRyYWN0X3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBeUM7QUFDekMseUNBQW9FO0FBQ3BFLHNFQUEwRTtBQUMxRSxzQ0FBcUk7QUFHckk7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxPQUE4Qjs7SUFDNUQsTUFBTSxRQUFRLEdBQW9CLEVBQUUsQ0FBQztJQUNyQyxNQUFNLFNBQVMsU0FBRyxPQUFPLENBQUMsU0FBUyxtQ0FBSSxDQUFDLENBQUM7SUFFekMsS0FBSyxNQUFNLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksNkJBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtRQUMxRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFekIsSUFBSTtZQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksd0JBQWUsQ0FBQztnQkFDakMsSUFBSTtnQkFDSixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3hCLEdBQUcsRUFBRTtvQkFDSCxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU07aUJBQzNCO2dCQUNELFVBQVUsRUFBRSxTQUFTLElBQUksQ0FBQzthQUMzQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRWhDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVuQyxJQUFJLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDNUQ7WUFDRCxLQUFLLE1BQU0sWUFBWSxJQUFJLE1BQU0sQ0FBQyxJQUFJ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b3JrZXJwb29sJztcbmltcG9ydCB7IEludGVnU25hcHNob3RSdW5uZXIsIEludGVnVGVzdFJ1bm5lciB9IGZyb20gJy4uLy4uL3J1bm5lcic7XG5pbXBvcnQgeyBJbnRlZ1Rlc3QsIEludGVnVGVzdEluZm8gfSBmcm9tICcuLi8uLi9ydW5uZXIvaW50ZWdyYXRpb24tdGVzdHMnO1xuaW1wb3J0IHsgRGlhZ25vc3RpY1JlYXNvbiwgSW50ZWdUZXN0V29ya2VyQ29uZmlnLCBTbmFwc2hvdFZlcmlmaWNhdGlvbk9wdGlvbnMsIERpYWdub3N0aWMsIGZvcm1hdEFzc2VydGlvblJlc3VsdHMgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgSW50ZWdUZXN0QmF0Y2hSZXF1ZXN0IH0gZnJvbSAnLi4vaW50ZWctdGVzdC13b3JrZXInO1xuXG4vKipcbiAqIFJ1bnMgYSBzaW5nbGUgaW50ZWdyYXRpb24gdGVzdCBiYXRjaCByZXF1ZXN0LlxuICogSWYgdGhlIHRlc3QgZG9lcyBub3QgaGF2ZSBhbiBleGlzdGluZyBzbmFwc2hvdCxcbiAqIHRoaXMgd2lsbCBmaXJzdCBnZW5lcmF0ZSBhIHNuYXBzaG90IGFuZCB0aGVuIGV4ZWN1dGVcbiAqIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0cy5cbiAqXG4gKiBJZiB0aGUgdGVzdHMgc3VjY2VlZCBpdCB3aWxsIHRoZW4gc2F2ZSB0aGUgc25hcHNob3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVnVGVzdFdvcmtlcihyZXF1ZXN0OiBJbnRlZ1Rlc3RCYXRjaFJlcXVlc3QpOiBJbnRlZ1Rlc3RXb3JrZXJDb25maWdbXSB7XG4gIGNvbnN0IGZhaWx1cmVzOiBJbnRlZ1Rlc3RJbmZvW10gPSBbXTtcbiAgY29uc3QgdmVyYm9zaXR5ID0gcmVxdWVzdC52ZXJib3NpdHkgPz8gMDtcblxuICBmb3IgKGNvbnN0IHRlc3RJbmZvIG9mIHJlcXVlc3QudGVzdHMpIHtcbiAgICBjb25zdCB0ZXN0ID0gbmV3IEludGVnVGVzdCh0ZXN0SW5mbyk7IC8vIEh5ZHJhdGUgZnJvbSBkYXRhXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJ1bm5lciA9IG5ldyBJbnRlZ1Rlc3RSdW5uZXIoe1xuICAgICAgICB0ZXN0LFxuICAgICAgICBwcm9maWxlOiByZXF1ZXN0LnByb2ZpbGUsXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIEFXU19SRUdJT046IHJlcXVlc3QucmVnaW9uLFxuICAgICAgICB9LFxuICAgICAgICBzaG93T3V0cHV0OiB2ZXJib3NpdHkgPj0gMixcbiAgICAgIH0sIHRlc3RJbmZvLmRlc3RydWN0aXZlQ2hhbmdlcyk7XG5cbiAgICAgIGNvbnN0IHRlc3RzID0gcnVubmVyLmFjdHVhbFRlc3RzKCk7XG5cbiAgICAgIGlmICghdGVzdHMgfHwgT2JqZWN0LmtleXModGVzdHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHRlc3RzIGRlZmluZWQgZm9yICR7cnVubmVyLnRlc3ROYW1lfWApO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCB0ZXN0Q2FzZU5hbWUgb2YgT2JqZWN0LmtleXModGVzdHMpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHJ1bm5lci5ydW5JbnRlZ1Rlc3RDYXNlKHtcbiAgICAgICAgICAgIHRlc3RDYXNlTmFtZSxcbiAgICAgICAgICAgIGNsZWFuOiByZXF1ZXN0LmNsZWFuLFxuICAgICAgICAgICAgZHJ5UnVuOiByZXF1ZXN0LmRyeVJ1bixcbiAgICAgICAgICAgIHVwZGF0ZVdvcmtmbG93OiByZXF1ZXN0LnVwZGF0ZVdvcmtmbG93LFxuICAgICAgICAgICAgdmVyYm9zaXR5LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChyZXN1bHRzICYmIE9iamVjdC52YWx1ZXMocmVzdWx0cykuc29tZShyZXN1bHQgPT4gcmVzdWx0LnN0YXR1cyA9PT0gJ2ZhaWwnKSkge1xuICAgICAgICAgICAgZmFpbHVyZXMucHVzaCh0ZXN0SW5mbyk7XG4gICAgICAgICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uQVNTRVJUSU9OX0ZBSUxFRCxcbiAgICAgICAgICAgICAgdGVzdE5hbWU6IGAke3J1bm5lci50ZXN0TmFtZX0tJHt0ZXN0Q2FzZU5hbWV9ICgke3JlcXVlc3QucHJvZmlsZX0vJHtyZXF1ZXN0LnJlZ2lvbn0pYCxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZm9ybWF0QXNzZXJ0aW9uUmVzdWx0cyhyZXN1bHRzKSxcbiAgICAgICAgICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uVEVTVF9TVUNDRVNTLFxuICAgICAgICAgICAgICB0ZXN0TmFtZTogYCR7cnVubmVyLnRlc3ROYW1lfS0ke3Rlc3RDYXNlTmFtZX1gLFxuICAgICAgICAgICAgICBtZXNzYWdlOiByZXN1bHRzID8gZm9ybWF0QXNzZXJ0aW9uUmVzdWx0cyhyZXN1bHRzKSA6ICdOTyBBU1NFUlRJT05TJyxcbiAgICAgICAgICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGZhaWx1cmVzLnB1c2godGVzdEluZm8pO1xuICAgICAgICAgIHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uVEVTVF9GQUlMRUQsXG4gICAgICAgICAgICB0ZXN0TmFtZTogYCR7cnVubmVyLnRlc3ROYW1lfS0ke3Rlc3RDYXNlTmFtZX0gKCR7cmVxdWVzdC5wcm9maWxlfS8ke3JlcXVlc3QucmVnaW9ufSlgLFxuICAgICAgICAgICAgbWVzc2FnZTogYEludGVncmF0aW9uIHRlc3QgZmFpbGVkOiAke2V9YCxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBmYWlsdXJlcy5wdXNoKHRlc3RJbmZvKTtcbiAgICAgIHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICAgIHJlYXNvbjogRGlhZ25vc3RpY1JlYXNvbi5URVNUX0VSUk9SLFxuICAgICAgICB0ZXN0TmFtZTogYCR7dGVzdEluZm8uZmlsZU5hbWV9ICgke3JlcXVlc3QucHJvZmlsZX0vJHtyZXF1ZXN0LnJlZ2lvbn0pYCxcbiAgICAgICAgbWVzc2FnZTogYEVycm9yIGR1cmluZyBpbnRlZ3JhdGlvbiB0ZXN0OiAke2V9YCxcbiAgICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWlsdXJlcztcbn1cblxuLyoqXG4gKiBSdW5zIGEgc2luZ2xlIHNuYXBzaG90IHRlc3QgYmF0Y2ggcmVxdWVzdC5cbiAqIEZvciBlYWNoIGludGVncmF0aW9uIHRlc3QgdGhpcyB3aWxsIGNoZWNrIHRvIHNlZVxuICogaWYgdGhlcmUgaXMgYW4gZXhpc3Rpbmcgc25hcHNob3QsIGFuZCBpZiB0aGVyZSBpcyB3aWxsXG4gKiBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGNoYW5nZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNuYXBzaG90VGVzdFdvcmtlcih0ZXN0SW5mbzogSW50ZWdUZXN0SW5mbywgb3B0aW9uczogU25hcHNob3RWZXJpZmljYXRpb25PcHRpb25zID0ge30pOiBJbnRlZ1Rlc3RXb3JrZXJDb25maWdbXSB7XG4gIGNvbnN0IGZhaWxlZFRlc3RzID0gbmV3IEFycmF5PEludGVnVGVzdFdvcmtlckNvbmZpZz4oKTtcbiAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICBjb25zdCB0ZXN0ID0gbmV3IEludGVnVGVzdCh0ZXN0SW5mbyk7IC8vIEh5ZHJhdGUgdGhlIGRhdGEgcmVjb3JkIGFnYWluXG5cbiAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgcmVhc29uOiBEaWFnbm9zdGljUmVhc29uLlNOQVBTSE9UX0VSUk9SLFxuICAgICAgdGVzdE5hbWU6IHRlc3QudGVzdE5hbWUsXG4gICAgICBtZXNzYWdlOiAnVGVzdCBpcyB0YWtpbmcgYSB2ZXJ5IGxvbmcgdGltZScsXG4gICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgIH0pO1xuICB9LCA2MF8wMDApO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcnVubmVyID0gbmV3IEludGVnU25hcHNob3RSdW5uZXIoeyB0ZXN0IH0pO1xuICAgIGlmICghcnVubmVyLmhhc1NuYXBzaG90KCkpIHtcbiAgICAgIHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICAgIHJlYXNvbjogRGlhZ25vc3RpY1JlYXNvbi5OT19TTkFQU0hPVCxcbiAgICAgICAgdGVzdE5hbWU6IHRlc3QudGVzdE5hbWUsXG4gICAgICAgIG1lc3NhZ2U6ICdObyBTbmFwc2hvdCcsXG4gICAgICAgIGR1cmF0aW9uOiAoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDAsXG4gICAgICB9KTtcbiAgICAgIGZhaWxlZFRlc3RzLnB1c2godGVzdC5pbmZvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyBkaWFnbm9zdGljcywgZGVzdHJ1Y3RpdmVDaGFuZ2VzIH0gPSBydW5uZXIudGVzdFNuYXBzaG90KG9wdGlvbnMpO1xuICAgICAgaWYgKGRpYWdub3N0aWNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGlhZ25vc3RpY3MuZm9yRWFjaChkaWFnbm9zdGljID0+IHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICAgICAgLi4uZGlhZ25vc3RpYyxcbiAgICAgICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgICAgICB9IGFzIERpYWdub3N0aWMpKTtcbiAgICAgICAgZmFpbGVkVGVzdHMucHVzaCh7XG4gICAgICAgICAgLi4udGVzdC5pbmZvLFxuICAgICAgICAgIGRlc3RydWN0aXZlQ2hhbmdlcyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICAgIHJlYXNvbjogRGlhZ25vc3RpY1JlYXNvbi5TTkFQU0hPVF9TVUNDRVNTLFxuICAgICAgICAgIHRlc3ROYW1lOiB0ZXN0LnRlc3ROYW1lLFxuICAgICAgICAgIG1lc3NhZ2U6ICdTdWNjZXNzJyxcbiAgICAgICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgICAgICB9IGFzIERpYWdub3N0aWMpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGZhaWxlZFRlc3RzLnB1c2godGVzdC5pbmZvKTtcbiAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgdGVzdE5hbWU6IHRlc3QudGVzdE5hbWUsXG4gICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uU05BUFNIT1RfRVJST1IsXG4gICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgIH0gYXMgRGlhZ25vc3RpYyk7XG4gIH0gZmluYWxseSB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgfVxuXG4gIHJldHVybiBmYWlsZWRUZXN0cztcbn1cblxud29ya2VycG9vbC53b3JrZXIoe1xuICBzbmFwc2hvdFRlc3RXb3JrZXIsXG4gIGludGVnVGVzdFdvcmtlcixcbn0pO1xuIl19