@grnsft/if 0.5.0-beta.0 → 0.5.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.
Files changed (163) hide show
  1. package/build/check.js +14 -4
  2. package/build/config/strings.d.ts +4 -0
  3. package/build/config/strings.js +7 -3
  4. package/build/util/debug-logger.js +8 -7
  5. package/build/util/helpers.d.ts +1 -1
  6. package/build/util/helpers.js +3 -2
  7. package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +27 -0
  8. package/manifests/{plugins → examples/builtins}/csv-lookup/region-metadata/failure-missing-column.yml +1 -2
  9. package/manifests/{plugins → examples/builtins}/csv-lookup/region-metadata/failure-missing-output.yml +1 -2
  10. package/manifests/{plugins → examples/builtins}/csv-lookup/region-metadata/success-renaming.yml +1 -2
  11. package/manifests/{plugins → examples/builtins}/csv-lookup/region-metadata/success.yml +1 -2
  12. package/manifests/{plugins → examples/builtins}/exponent/success.yml +1 -2
  13. package/manifests/{plugins → examples/builtins}/groupby/success.yml +1 -1
  14. package/manifests/{plugins → examples/builtins}/interpolation/success.yml +0 -1
  15. package/manifests/{plugins → examples/builtins}/subtract/success.yml +1 -2
  16. package/manifests/examples/{generics.yml → pipelines/generics.yml} +1 -0
  17. package/manifests/examples/{instance-metadata.yml → pipelines/instance-metadata.yml} +4 -4
  18. package/manifests/examples/{pipeline-with-aggregate.yml → pipelines/pipeline-with-aggregate.yml} +1 -1
  19. package/manifests/outputs/bugs/aggregation-error-wrong-metric.yaml +243 -0
  20. package/manifests/outputs/bugs/initialize-error-no-config.yaml +78 -0
  21. package/manifests/outputs/bugs/initialize-error-no-path.yaml +91 -0
  22. package/manifests/outputs/bugs/initialize-error-no-plugins.yaml +74 -0
  23. package/manifests/outputs/bugs/input-error-missing-duration.yaml +84 -0
  24. package/manifests/outputs/bugs/mock-observations-failure-duration-is-zero.yaml +81 -0
  25. package/manifests/outputs/bugs/pipeline-error-naming-mismatch.yaml +91 -0
  26. package/manifests/outputs/bugs/pipeline-error-uninitialized-plugin.yaml +92 -0
  27. package/manifests/outputs/bugs/pipeline-ordering-error.yaml +155 -0
  28. package/manifests/outputs/bugs/sci-embodied-missing-resources-total.yaml +73 -0
  29. package/manifests/outputs/divide.yaml +93 -0
  30. package/manifests/outputs/features/aggregate-failure-invalid-metrics.yaml +101 -0
  31. package/manifests/outputs/features/aggregate-failure-missing-metric-in-inputs.yaml +100 -0
  32. package/manifests/outputs/features/aggregate-horizontal.yaml +128 -0
  33. package/manifests/outputs/features/aggregate-vertical.yaml +151 -0
  34. package/manifests/outputs/features/aggregate.yaml +155 -0
  35. package/manifests/outputs/pipelines/cloud-metadata-divide.yaml +95 -0
  36. package/manifests/outputs/pipelines/mock-obs-group-by-cloud-meta.yaml +645 -0
  37. package/manifests/outputs/pipelines/mock-obs-groupby.yaml +178 -0
  38. package/manifests/outputs/pipelines/mock-obs-time-sync.yaml +350 -0
  39. package/manifests/outputs/plugins/coefficient/failure-invalid-config-input-param.yaml +73 -0
  40. package/manifests/outputs/plugins/coefficient/failure-output-param-is-null.yaml +73 -0
  41. package/manifests/outputs/plugins/coefficient/success.yaml +75 -0
  42. package/manifests/outputs/plugins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +27 -0
  43. package/manifests/outputs/plugins/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yaml +77 -0
  44. package/manifests/outputs/plugins/csv-lookup/cloud-metadata/success.yaml +82 -0
  45. package/manifests/outputs/plugins/csv-lookup/region-metadata/failure-missing-column.yaml +76 -0
  46. package/manifests/outputs/plugins/csv-lookup/region-metadata/failure-missing-output.yaml +75 -0
  47. package/manifests/outputs/plugins/csv-lookup/region-metadata/success-renaming.yaml +80 -0
  48. package/manifests/outputs/plugins/csv-lookup/region-metadata/success.yaml +92 -0
  49. package/manifests/outputs/plugins/csv-lookup/tdp-finder/failure-missing-input-param.yaml +74 -0
  50. package/manifests/outputs/plugins/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yaml +75 -0
  51. package/manifests/outputs/plugins/csv-lookup/tdp-finder/success.yaml +76 -0
  52. package/manifests/outputs/plugins/divide/failure-invalid-config-denominator.yaml +73 -0
  53. package/manifests/outputs/plugins/divide/failure-missing-numerator.yaml +77 -0
  54. package/manifests/outputs/plugins/divide/success-denominator-equal-zero.yaml +95 -0
  55. package/manifests/outputs/plugins/divide/success.yaml +95 -0
  56. package/manifests/outputs/plugins/exponent/success.yaml +77 -0
  57. package/manifests/outputs/plugins/groupby/failure-invalid-config-group.yaml +96 -0
  58. package/manifests/outputs/plugins/groupby/failure-missing-cloud-instance-type.yaml +95 -0
  59. package/manifests/outputs/plugins/groupby/success.yaml +101 -0
  60. package/manifests/outputs/plugins/interpolation/interpolation.yaml +83 -0
  61. package/manifests/outputs/plugins/interpolation/success.yaml +83 -0
  62. package/manifests/outputs/plugins/mock-observations/failure-invalid-config-cpu-range.yaml +86 -0
  63. package/manifests/outputs/plugins/mock-observations/failure-invalid-memory-utilization-range.yaml +84 -0
  64. package/manifests/outputs/plugins/mock-observations/failure-missing-timestamp-from-param.yaml +83 -0
  65. package/manifests/outputs/plugins/mock-observations/success.yaml +220 -0
  66. package/manifests/outputs/plugins/multiply/failure-input-parameter-is-missing.yaml +75 -0
  67. package/manifests/outputs/plugins/multiply/success-with-multiple-inputs.yaml +96 -0
  68. package/manifests/outputs/plugins/multiply/success.yaml +78 -0
  69. package/manifests/outputs/plugins/regex/failure-missing-input-param.yaml +75 -0
  70. package/manifests/outputs/plugins/regex/failure-not-matching-with-regex.yaml +76 -0
  71. package/manifests/outputs/plugins/regex/success.yaml +81 -0
  72. package/manifests/outputs/plugins/sci/failure-invalid-config-value.yaml +72 -0
  73. package/manifests/outputs/plugins/sci/failure-missing-input-param.yaml +72 -0
  74. package/manifests/outputs/plugins/sci/success.yml.yaml +80 -0
  75. package/manifests/outputs/plugins/sci-embodied/failure-invalid-default-emission-value.yaml +75 -0
  76. package/manifests/outputs/plugins/sci-embodied/failure-missing-expected-lifespan.yaml +71 -0
  77. package/manifests/outputs/plugins/sci-embodied/success.yaml +78 -0
  78. package/manifests/outputs/plugins/shell/failure-invalid-command.yaml +70 -0
  79. package/manifests/outputs/plugins/shell/success.yaml +68 -0
  80. package/manifests/outputs/plugins/subtract/success.yaml +78 -0
  81. package/manifests/outputs/plugins/sum/failure-missing-input-param.yaml +75 -0
  82. package/manifests/outputs/plugins/sum/failure-missing-output-param.yaml +78 -0
  83. package/manifests/outputs/plugins/sum/success.yaml +78 -0
  84. package/manifests/outputs/plugins/time-sync/failure-config-start-later-end.yaml +82 -0
  85. package/manifests/outputs/plugins/time-sync/failure-missing-global-config.yaml +78 -0
  86. package/manifests/outputs/plugins/time-sync/success.yaml +119 -0
  87. package/package.json +1 -1
  88. package/manifests/bugs/aggregation-error-wrong-metric.yml +0 -178
  89. package/manifests/bugs/azure-importer-ignoring-defaults.yml +0 -64
  90. package/manifests/bugs/azure-importer-incorrect-calculation.yml +0 -59
  91. package/manifests/bugs/initialize-error-no-config.yml +0 -26
  92. package/manifests/bugs/initialize-error-no-path.yml +0 -32
  93. package/manifests/bugs/initialize-error-no-plugins.yml +0 -23
  94. package/manifests/bugs/input-error-missing-duration.yml +0 -25
  95. package/manifests/bugs/mock-observations-failure-duration-is-zero.yml +0 -34
  96. package/manifests/bugs/pipeline-error-naming-mismatch.yml +0 -32
  97. package/manifests/bugs/pipeline-error-uninitialized-plugin.yml +0 -33
  98. package/manifests/bugs/pipeline-ordering-error.yml +0 -91
  99. package/manifests/bugs/sci-embodied-missing-resources-total.yml +0 -23
  100. package/manifests/examples/copy.yaml +0 -20
  101. package/manifests/examples/mock-cpu-util-to-carbon.yml +0 -76
  102. package/manifests/examples/region-metadata.yml +0 -26
  103. package/manifests/examples/tdp-finder.yml +0 -23
  104. package/manifests/features/aggregate-failure-invalid-metrics.yml +0 -49
  105. package/manifests/features/aggregate-failure-missing-metric-in-inputs.yml +0 -49
  106. package/manifests/features/aggregate-horizontal.yml +0 -50
  107. package/manifests/features/aggregate-vertical.yml +0 -50
  108. package/manifests/features/aggregate.yml +0 -50
  109. package/manifests/integrations/cloud-metadata-divide.yml +0 -37
  110. package/manifests/integrations/instance-metadata/failure-invalid-instance-type.yaml +0 -33
  111. package/manifests/integrations/instance-metadata/failure-invalid-provider.yaml +0 -33
  112. package/manifests/integrations/instance-metadata/failure-missing-queried-input.yml +0 -33
  113. package/manifests/integrations/instance-metadata/success.yml +0 -33
  114. package/manifests/integrations/mock-obs-group-by-cloud-meta.yml +0 -57
  115. package/manifests/integrations/mock-obs-groupby.yml +0 -39
  116. package/manifests/integrations/mock-obs-time-sync.yml +0 -110
  117. /package/manifests/{plugins → examples/builtins}/coefficient/failure-invalid-config-input-param.yml +0 -0
  118. /package/manifests/{plugins → examples/builtins}/coefficient/failure-output-param-is-null.yaml +0 -0
  119. /package/manifests/{plugins → examples/builtins}/coefficient/success.yml +0 -0
  120. /package/manifests/{plugins → examples/builtins}/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +0 -0
  121. /package/manifests/{plugins → examples/builtins}/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yml +0 -0
  122. /package/manifests/{plugins → examples/builtins}/csv-lookup/cloud-metadata/success.yml +0 -0
  123. /package/manifests/{plugins → examples/builtins}/csv-lookup/tdp-finder/failure-missing-input-param.yml +0 -0
  124. /package/manifests/{plugins → examples/builtins}/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yml +0 -0
  125. /package/manifests/{plugins → examples/builtins}/csv-lookup/tdp-finder/success.yml +0 -0
  126. /package/manifests/{plugins → examples/builtins}/divide/failure-denominator-equal-zero.yml +0 -0
  127. /package/manifests/{plugins → examples/builtins}/divide/failure-invalid-config-denominator.yml +0 -0
  128. /package/manifests/{plugins → examples/builtins}/divide/failure-missing-numerator.yml +0 -0
  129. /package/manifests/{plugins → examples/builtins}/divide/success.yml +0 -0
  130. /package/manifests/{plugins → examples/builtins}/groupby/failure-invalid-config-group.yml +0 -0
  131. /package/manifests/{plugins → examples/builtins}/groupby/failure-missing-cloud-instance-type.yml +0 -0
  132. /package/manifests/{plugins → examples/builtins}/interpolation/interpolation.yml +0 -0
  133. /package/manifests/{plugins → examples/builtins}/mock-observations/failure-invalid-config-cpu-range.yml +0 -0
  134. /package/manifests/{plugins → examples/builtins}/mock-observations/failure-invalid-memory-utilization-range.yml +0 -0
  135. /package/manifests/{plugins → examples/builtins}/mock-observations/failure-missing-timestamp-from-param.yml +0 -0
  136. /package/manifests/{plugins → examples/builtins}/mock-observations/success.yml +0 -0
  137. /package/manifests/{plugins → examples/builtins}/multiply/failure-input-parameter-is-missing.yml +0 -0
  138. /package/manifests/{plugins → examples/builtins}/multiply/success-with-multiple-inputs.yml +0 -0
  139. /package/manifests/{plugins → examples/builtins}/multiply/success.yml +0 -0
  140. /package/manifests/{plugins → examples/builtins}/regex/failure-missing-input-param.yml +0 -0
  141. /package/manifests/{plugins → examples/builtins}/regex/failure-not-matching-with-regex.yml +0 -0
  142. /package/manifests/{plugins → examples/builtins}/regex/success.yml +0 -0
  143. /package/manifests/{plugins → examples/builtins}/sci/failure-invalid-config-value.yml +0 -0
  144. /package/manifests/{plugins → examples/builtins}/sci/failure-missing-input-param.yml +0 -0
  145. /package/manifests/{plugins → examples/builtins}/sci/success.yml +0 -0
  146. /package/manifests/{plugins → examples/builtins}/sci-embodied/failure-invalid-default-emission-value.yml +0 -0
  147. /package/manifests/{plugins → examples/builtins}/sci-embodied/failure-missing-expected-lifespan.yml +0 -0
  148. /package/manifests/{plugins → examples/builtins}/sci-embodied/success.yml +0 -0
  149. /package/manifests/{plugins → examples/builtins}/shell/failure-invalid-command.yml +0 -0
  150. /package/manifests/{plugins → examples/builtins}/shell/success.yml +0 -0
  151. /package/manifests/{plugins → examples/builtins}/sum/failure-missing-input-param.yml +0 -0
  152. /package/manifests/{plugins → examples/builtins}/sum/failure-missing-output-param.yml +0 -0
  153. /package/manifests/{plugins → examples/builtins}/sum/success.yml +0 -0
  154. /package/manifests/{plugins → examples/builtins}/time-sync/failure-config-start-later-end.yml +0 -0
  155. /package/manifests/{plugins → examples/builtins}/time-sync/failure-missing-global-config.yml +0 -0
  156. /package/manifests/{plugins → examples/builtins}/time-sync/success.yml +0 -0
  157. /package/manifests/examples/{nesting.yml → pipelines/nesting.yml} +0 -0
  158. /package/manifests/examples/{pipeline-teads-sci.yml → pipelines/pipeline-teads-sci.yml} +0 -0
  159. /package/manifests/examples/{pipeline-with-mocks.yml → pipelines/pipeline-with-mocks.yml} +0 -0
  160. /package/manifests/examples/{sci.yml → pipelines/sci.yml} +0 -0
  161. /package/manifests/examples/{teads-curve.yml → pipelines/teads-curve.yml} +0 -0
  162. /package/manifests/examples/{zeros.yaml → pipelines/zeros.yml} +0 -0
  163. /package/manifests/{plugins → outputs/plugins}/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +0 -0
package/build/check.js CHANGED
@@ -32,7 +32,7 @@ const args_1 = require("./util/args");
32
32
  const fs_1 = require("./util/fs");
33
33
  const config_1 = require("./config");
34
34
  const npm_1 = require("./util/npm");
35
- const { CHECKING, DIRECTORY_YAML_FILES_NOT_FOUND } = config_1.STRINGS;
35
+ const { CHECKING, DIRECTORY_YAML_FILES_NOT_FOUND, IF_CHECK_VERIFICATION_FAILURES, IF_CHECK_SUMMARY_LOG, IF_CHECK_EXECUTING, } = config_1.STRINGS;
36
36
  const IfCheck = async () => {
37
37
  const commandArgs = await (0, args_1.parseIfCheckArgs)();
38
38
  console.log(`${CHECKING}\n`);
@@ -53,6 +53,7 @@ const IfCheck = async () => {
53
53
  }
54
54
  }
55
55
  else {
56
+ const failedLogs = { count: 0, message: '' };
56
57
  const directory = commandArgs.directory;
57
58
  const files = await (0, fs_1.getYamlFiles)(directory);
58
59
  if (files.length === 0) {
@@ -61,7 +62,7 @@ const IfCheck = async () => {
61
62
  }
62
63
  for await (const file of files) {
63
64
  const fileName = path.basename(file);
64
- console.log(fileName);
65
+ console.log(IF_CHECK_EXECUTING(fileName));
65
66
  try {
66
67
  await (0, npm_1.executeCommands)(file, true);
67
68
  }
@@ -70,10 +71,19 @@ const IfCheck = async () => {
70
71
  const executedFile = file
71
72
  .replace(fileName, `re-${fileName}`)
72
73
  .replace('yml', 'yaml');
73
- (0, helpers_1.logStdoutFailMessage)(error, fileName);
74
+ const failedFilesLog = (0, helpers_1.logStdoutFailMessage)(error, fileName);
75
+ failedLogs.message = failedLogs.message.concat(failedFilesLog);
76
+ failedLogs.count++;
74
77
  await (0, fs_1.removeFileIfExists)(executedFile);
75
78
  }
76
79
  }
80
+ if (failedLogs.count > 0) {
81
+ const passedFilesCount = files.length - failedLogs.count;
82
+ console.log(IF_CHECK_VERIFICATION_FAILURES);
83
+ console.log(failedLogs.message);
84
+ console.log(IF_CHECK_SUMMARY_LOG(passedFilesCount, files.length));
85
+ process.exit(1);
86
+ }
77
87
  }
78
88
  };
79
89
  IfCheck().catch(error => {
@@ -82,4 +92,4 @@ IfCheck().catch(error => {
82
92
  process.exit(2);
83
93
  }
84
94
  });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hlY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxvQ0FBb0M7QUFDcEMsMkNBQTZCO0FBRTdCLDBDQUFxQztBQUNyQyw0Q0FBb0Q7QUFDcEQsc0NBQTZDO0FBQzdDLGtDQUEyRDtBQUUzRCxxQ0FBaUM7QUFDakMsb0NBQTJDO0FBRTNDLE1BQU0sRUFBQyxRQUFRLEVBQUUsOEJBQThCLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRTNELE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQ3pCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSx1QkFBZ0IsR0FBRSxDQUFDO0lBRTdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDO0lBRTdCLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRTtRQUN4QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBRXRDLElBQUk7WUFDRixNQUFNLElBQUEscUJBQWUsRUFBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDeEM7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVE7aUJBQzFCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxRQUFRLEVBQUUsQ0FBQztpQkFDbkMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRS9DLElBQUEsOEJBQW9CLEVBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXRDLE1BQU0sSUFBQSx1QkFBa0IsRUFBQyxHQUFHLGVBQWUsZUFBZSxDQUFDLENBQUM7WUFDNUQsTUFBTSxJQUFBLHVCQUFrQixFQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3hDO0tBQ0Y7U0FBTTtRQUNMLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLGlCQUFZLEVBQUMsU0FBVSxDQUFDLENBQUM7UUFFN0MsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDNUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQjtRQUVELElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdEIsSUFBSTtnQkFDRixNQUFNLElBQUEscUJBQWUsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDbkM7WUFBQyxPQUFPLEtBQVUsRUFBRTtnQkFDbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsTUFBTSxZQUFZLEdBQUcsSUFBSTtxQkFDdEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLFFBQVEsRUFBRSxDQUFDO3FCQUNuQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUUxQixJQUFBLDhCQUFvQixFQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFFdEMsTUFBTSxJQUFBLHVCQUFrQixFQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3hDO1NBQ0Y7S0FDRjtBQUNILENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUN0QixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7UUFDMUIsZUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0FBQ0gsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm9jZXNzLWV4aXQgKi9cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7bG9nZ2VyfSBmcm9tICcuL3V0aWwvbG9nZ2VyJztcbmltcG9ydCB7bG9nU3Rkb3V0RmFpbE1lc3NhZ2V9IGZyb20gJy4vdXRpbC9oZWxwZXJzJztcbmltcG9ydCB7cGFyc2VJZkNoZWNrQXJnc30gZnJvbSAnLi91dGlsL2FyZ3MnO1xuaW1wb3J0IHtnZXRZYW1sRmlsZXMsIHJlbW92ZUZpbGVJZkV4aXN0c30gZnJvbSAnLi91dGlsL2ZzJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge2V4ZWN1dGVDb21tYW5kc30gZnJvbSAnLi91dGlsL25wbSc7XG5cbmNvbnN0IHtDSEVDS0lORywgRElSRUNUT1JZX1lBTUxfRklMRVNfTk9UX0ZPVU5EfSA9IFNUUklOR1M7XG5cbmNvbnN0IElmQ2hlY2sgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmRBcmdzID0gYXdhaXQgcGFyc2VJZkNoZWNrQXJncygpO1xuXG4gIGNvbnNvbGUubG9nKGAke0NIRUNLSU5HfVxcbmApO1xuXG4gIGlmIChjb21tYW5kQXJncy5tYW5pZmVzdCkge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gY29tbWFuZEFyZ3MubWFuaWZlc3Q7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY3V0ZUNvbW1hbmRzKG1hbmlmZXN0LCBmYWxzZSk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKG1hbmlmZXN0KTtcbiAgICAgIGNvbnN0IGV4ZWN1dGVkRmlsZSA9IG1hbmlmZXN0XG4gICAgICAgIC5yZXBsYWNlKGZpbGVOYW1lLCBgcmUtJHtmaWxlTmFtZX1gKVxuICAgICAgICAucmVwbGFjZSgneW1sJywgJ3lhbWwnKTtcbiAgICAgIGNvbnN0IG1hbmlmZXN0RGlyUGF0aCA9IHBhdGguZGlybmFtZShtYW5pZmVzdCk7XG5cbiAgICAgIGxvZ1N0ZG91dEZhaWxNZXNzYWdlKGVycm9yLCBmaWxlTmFtZSk7XG5cbiAgICAgIGF3YWl0IHJlbW92ZUZpbGVJZkV4aXN0cyhgJHttYW5pZmVzdERpclBhdGh9L3BhY2thZ2UuanNvbmApO1xuICAgICAgYXdhaXQgcmVtb3ZlRmlsZUlmRXhpc3RzKGV4ZWN1dGVkRmlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRpcmVjdG9yeSA9IGNvbW1hbmRBcmdzLmRpcmVjdG9yeTtcbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdldFlhbWxGaWxlcyhkaXJlY3RvcnkhKTtcblxuICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKERJUkVDVE9SWV9ZQU1MX0ZJTEVTX05PVF9GT1VORCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgZm9yIGF3YWl0IChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBmaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZSk7XG4gICAgICBjb25zb2xlLmxvZyhmaWxlTmFtZSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGV4ZWN1dGVDb21tYW5kcyhmaWxlLCB0cnVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGUpO1xuICAgICAgICBjb25zdCBleGVjdXRlZEZpbGUgPSBmaWxlXG4gICAgICAgICAgLnJlcGxhY2UoZmlsZU5hbWUsIGByZS0ke2ZpbGVOYW1lfWApXG4gICAgICAgICAgLnJlcGxhY2UoJ3ltbCcsICd5YW1sJyk7XG5cbiAgICAgICAgbG9nU3Rkb3V0RmFpbE1lc3NhZ2UoZXJyb3IsIGZpbGVOYW1lKTtcblxuICAgICAgICBhd2FpdCByZW1vdmVGaWxlSWZFeGlzdHMoZXhlY3V0ZWRGaWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbklmQ2hlY2soKS5jYXRjaChlcnJvciA9PiB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgbG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICBwcm9jZXNzLmV4aXQoMik7XG4gIH1cbn0pO1xuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hlY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxvQ0FBb0M7QUFDcEMsMkNBQTZCO0FBRTdCLDBDQUFxQztBQUNyQyw0Q0FBb0Q7QUFDcEQsc0NBQTZDO0FBQzdDLGtDQUEyRDtBQUUzRCxxQ0FBaUM7QUFDakMsb0NBQTJDO0FBRTNDLE1BQU0sRUFDSixRQUFRLEVBQ1IsOEJBQThCLEVBQzlCLDhCQUE4QixFQUM5QixvQkFBb0IsRUFDcEIsa0JBQWtCLEdBQ25CLEdBQUcsZ0JBQU8sQ0FBQztBQUVaLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQ3pCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSx1QkFBZ0IsR0FBRSxDQUFDO0lBRTdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDO0lBRTdCLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRTtRQUN4QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBRXRDLElBQUk7WUFDRixNQUFNLElBQUEscUJBQWUsRUFBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDeEM7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVE7aUJBQzFCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxRQUFRLEVBQUUsQ0FBQztpQkFDbkMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRS9DLElBQUEsOEJBQW9CLEVBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXRDLE1BQU0sSUFBQSx1QkFBa0IsRUFBQyxHQUFHLGVBQWUsZUFBZSxDQUFDLENBQUM7WUFDNUQsTUFBTSxJQUFBLHVCQUFrQixFQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3hDO0tBQ0Y7U0FBTTtRQUNMLE1BQU0sVUFBVSxHQUFHLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsaUJBQVksRUFBQyxTQUFVLENBQUMsQ0FBQztRQUU3QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQzlCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBRTFDLElBQUk7Z0JBQ0YsTUFBTSxJQUFBLHFCQUFlLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ25DO1lBQUMsT0FBTyxLQUFVLEVBQUU7Z0JBQ25CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU0sWUFBWSxHQUFHLElBQUk7cUJBQ3RCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxRQUFRLEVBQUUsQ0FBQztxQkFDbkMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFMUIsTUFBTSxjQUFjLEdBQUcsSUFBQSw4QkFBb0IsRUFBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdELFVBQVUsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQy9ELFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFFbkIsTUFBTSxJQUFBLHVCQUFrQixFQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3hDO1NBQ0Y7UUFFRCxJQUFJLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBRXpELE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUM1QyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakI7S0FDRjtBQUNILENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUN0QixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7UUFDMUIsZUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0FBQ0gsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm9jZXNzLWV4aXQgKi9cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7bG9nZ2VyfSBmcm9tICcuL3V0aWwvbG9nZ2VyJztcbmltcG9ydCB7bG9nU3Rkb3V0RmFpbE1lc3NhZ2V9IGZyb20gJy4vdXRpbC9oZWxwZXJzJztcbmltcG9ydCB7cGFyc2VJZkNoZWNrQXJnc30gZnJvbSAnLi91dGlsL2FyZ3MnO1xuaW1wb3J0IHtnZXRZYW1sRmlsZXMsIHJlbW92ZUZpbGVJZkV4aXN0c30gZnJvbSAnLi91dGlsL2ZzJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge2V4ZWN1dGVDb21tYW5kc30gZnJvbSAnLi91dGlsL25wbSc7XG5cbmNvbnN0IHtcbiAgQ0hFQ0tJTkcsXG4gIERJUkVDVE9SWV9ZQU1MX0ZJTEVTX05PVF9GT1VORCxcbiAgSUZfQ0hFQ0tfVkVSSUZJQ0FUSU9OX0ZBSUxVUkVTLFxuICBJRl9DSEVDS19TVU1NQVJZX0xPRyxcbiAgSUZfQ0hFQ0tfRVhFQ1VUSU5HLFxufSA9IFNUUklOR1M7XG5cbmNvbnN0IElmQ2hlY2sgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmRBcmdzID0gYXdhaXQgcGFyc2VJZkNoZWNrQXJncygpO1xuXG4gIGNvbnNvbGUubG9nKGAke0NIRUNLSU5HfVxcbmApO1xuXG4gIGlmIChjb21tYW5kQXJncy5tYW5pZmVzdCkge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gY29tbWFuZEFyZ3MubWFuaWZlc3Q7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY3V0ZUNvbW1hbmRzKG1hbmlmZXN0LCBmYWxzZSk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKG1hbmlmZXN0KTtcbiAgICAgIGNvbnN0IGV4ZWN1dGVkRmlsZSA9IG1hbmlmZXN0XG4gICAgICAgIC5yZXBsYWNlKGZpbGVOYW1lLCBgcmUtJHtmaWxlTmFtZX1gKVxuICAgICAgICAucmVwbGFjZSgneW1sJywgJ3lhbWwnKTtcbiAgICAgIGNvbnN0IG1hbmlmZXN0RGlyUGF0aCA9IHBhdGguZGlybmFtZShtYW5pZmVzdCk7XG5cbiAgICAgIGxvZ1N0ZG91dEZhaWxNZXNzYWdlKGVycm9yLCBmaWxlTmFtZSk7XG5cbiAgICAgIGF3YWl0IHJlbW92ZUZpbGVJZkV4aXN0cyhgJHttYW5pZmVzdERpclBhdGh9L3BhY2thZ2UuanNvbmApO1xuICAgICAgYXdhaXQgcmVtb3ZlRmlsZUlmRXhpc3RzKGV4ZWN1dGVkRmlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGZhaWxlZExvZ3MgPSB7Y291bnQ6IDAsIG1lc3NhZ2U6ICcnfTtcbiAgICBjb25zdCBkaXJlY3RvcnkgPSBjb21tYW5kQXJncy5kaXJlY3Rvcnk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnZXRZYW1sRmlsZXMoZGlyZWN0b3J5ISk7XG5cbiAgICBpZiAoZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zb2xlLmxvZyhESVJFQ1RPUllfWUFNTF9GSUxFU19OT1RfRk9VTkQpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGZvciBhd2FpdCAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGUpO1xuICAgICAgY29uc29sZS5sb2coSUZfQ0hFQ0tfRVhFQ1VUSU5HKGZpbGVOYW1lKSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGV4ZWN1dGVDb21tYW5kcyhmaWxlLCB0cnVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGUpO1xuICAgICAgICBjb25zdCBleGVjdXRlZEZpbGUgPSBmaWxlXG4gICAgICAgICAgLnJlcGxhY2UoZmlsZU5hbWUsIGByZS0ke2ZpbGVOYW1lfWApXG4gICAgICAgICAgLnJlcGxhY2UoJ3ltbCcsICd5YW1sJyk7XG5cbiAgICAgICAgY29uc3QgZmFpbGVkRmlsZXNMb2cgPSBsb2dTdGRvdXRGYWlsTWVzc2FnZShlcnJvciwgZmlsZU5hbWUpO1xuICAgICAgICBmYWlsZWRMb2dzLm1lc3NhZ2UgPSBmYWlsZWRMb2dzLm1lc3NhZ2UuY29uY2F0KGZhaWxlZEZpbGVzTG9nKTtcbiAgICAgICAgZmFpbGVkTG9ncy5jb3VudCsrO1xuXG4gICAgICAgIGF3YWl0IHJlbW92ZUZpbGVJZkV4aXN0cyhleGVjdXRlZEZpbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmYWlsZWRMb2dzLmNvdW50ID4gMCkge1xuICAgICAgY29uc3QgcGFzc2VkRmlsZXNDb3VudCA9IGZpbGVzLmxlbmd0aCAtIGZhaWxlZExvZ3MuY291bnQ7XG5cbiAgICAgIGNvbnNvbGUubG9nKElGX0NIRUNLX1ZFUklGSUNBVElPTl9GQUlMVVJFUyk7XG4gICAgICBjb25zb2xlLmxvZyhmYWlsZWRMb2dzLm1lc3NhZ2UpO1xuICAgICAgY29uc29sZS5sb2coSUZfQ0hFQ0tfU1VNTUFSWV9MT0cocGFzc2VkRmlsZXNDb3VudCwgZmlsZXMubGVuZ3RoKSk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9XG59O1xuXG5JZkNoZWNrKCkuY2F0Y2goZXJyb3IgPT4ge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgcHJvY2Vzcy5leGl0KDIpO1xuICB9XG59KTtcbiJdfQ==
@@ -80,7 +80,11 @@ export declare const STRINGS: {
80
80
  IF_CHECK_FLAGS_MISSING: string;
81
81
  DIRECTORY_NOT_FOUND: string;
82
82
  DIRECTORY_YAML_FILES_NOT_FOUND: string;
83
+ IF_CHECK_EXECUTING: (filename: string) => string;
84
+ IF_CHECK_VERIFICATION_FAILURES: string;
83
85
  IF_CHECK_FAILED: (filename: string) => string;
84
86
  IF_CHECK_VERIFIED: (filename: string) => string;
87
+ IF_CHECK_SUMMARY_ERROR_MESSAGE: (filename: string, message: string) => string;
88
+ IF_CHECK_SUMMARY_LOG: (passedCount: number, totalCount: number) => string;
85
89
  ZERO_DIVISION: (moduleName: string, index: number) => string;
86
90
  };
@@ -94,8 +94,12 @@ ${error}`,
94
94
  IF_CHECK_FLAGS_MISSING: 'Either the `--manifest` or `--directory` command should be provided with a path',
95
95
  DIRECTORY_NOT_FOUND: 'Directory not found.',
96
96
  DIRECTORY_YAML_FILES_NOT_FOUND: 'The directory does not contain any YAML/YML files.\n',
97
- IF_CHECK_FAILED: (filename) => `if-check could not verify ${filename}. The re-executed file does not match the original.\n`,
98
- IF_CHECK_VERIFIED: (filename) => `if-check successfully verified ${filename}\n`,
97
+ IF_CHECK_EXECUTING: (filename) => `Executing \`${filename}\``,
98
+ IF_CHECK_VERIFICATION_FAILURES: '---------\nif-check verification failures:\n',
99
+ IF_CHECK_FAILED: (filename) => `✖ if-check could not verify ${filename}. The re-executed file does not match the original.\n`,
100
+ IF_CHECK_VERIFIED: (filename) => `✔ if-check successfully verified ${filename}\n`,
101
+ IF_CHECK_SUMMARY_ERROR_MESSAGE: (filename, message) => `Executing \`${filename}\`\n✖ ${message}`,
102
+ IF_CHECK_SUMMARY_LOG: (passedCount, totalCount) => `---------\nCheck summary:\n${passedCount} of ${totalCount} files are passed.\n`,
99
103
  ZERO_DIVISION: (moduleName, index) => `-- SKIPPING -- DivisionByZero: you are attempting to divide by zero in ${moduleName} plugin : inputs[${index}]\n`,
100
104
  };
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc3RyaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFYSxRQUFBLE9BQU8sR0FBRztJQUNyQixtQkFBbUIsRUFBRSxzQkFBc0I7SUFDM0MsY0FBYyxFQUFFLDBDQUEwQztJQUMxRCxZQUFZLEVBQUUsd0NBQXdDO0lBQ3RELGtCQUFrQixFQUNoQixxRUFBcUU7SUFDdkUsZ0JBQWdCLEVBQ2QscUpBQXFKO0lBQ3ZKLGtCQUFrQixFQUFFOzs7OzJOQUlxTTtJQUN6TixpQkFBaUIsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQ2xDO3VCQUNtQixJQUFJLHNMQUFzTDtJQUMvTSxtQkFBbUIsRUFBRSxDQUFDLElBQVksRUFBRSxLQUFXLEVBQUUsRUFBRSxDQUNqRCxxQkFBcUIsSUFBSSwrQkFBK0IsS0FBSyxJQUFJLEVBQUU7Q0FDdEU7SUFDQywwQkFBMEIsRUFBRSxvQ0FBb0M7SUFDaEUsc0JBQXNCLEVBQ3BCLDZEQUE2RDtJQUMvRCxxQkFBcUIsRUFBRSxzQkFBc0I7SUFDN0MsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFtQixFQUFFLEVBQUUsQ0FDeEMsdUJBQXVCLFdBQVcsRUFBRTtJQUN0Qyx5QkFBeUIsRUFBRSxDQUFDLEtBQWMsRUFBRSxHQUFZLEVBQUUsRUFBRSxDQUMxRCx1QkFDRSxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUNyRCxFQUFFO0lBQ0osMEJBQTBCLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUM3Qyx5Q0FBeUMsTUFBTSwwQkFBMEI7SUFDM0UsY0FBYyxFQUFFLENBQUMsTUFBYyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQ2hELHNCQUFzQixNQUFNLDJCQUEyQixLQUFLLElBQUk7SUFDbEUsZ0JBQWdCLEVB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RSxFQUFFLENBQ3BDLDZCQUE2QixRQUFRLHVEQUF1RDtJQUM5RixpQkFBaUIsRUFBRSxDQUFDLFFBQWdCLEVBQUUsRUFBRSxDQUN0QyxrQ0FBa0MsUUFBUSxJQUFJO0lBQ2hELGFBQWEsRUFBRSxDQUFDLFVBQWtCLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FDbkQsMEVBQTBFLFVBQVUsb0JBQW9CLEtBQUssS0FBSztDQUNySCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYW5pZmVzdFBhcmFtZXRlcn0gZnJvbSAnLi4vdHlwZXMvbWFuaWZlc3QnO1xuXG5leHBvcnQgY29uc3QgU1RSSU5HUyA9IHtcbiAgTUFOSUZFU1RfSVNfTUlTU0lORzogJ01hbmlmZXN0IGlzIG1pc3NpbmcuJyxcbiAgTUlTU0lOR19NRVRIT0Q6IFwiSW5pdGFsaXphdGlvbiBwYXJhbSAnbWV0aG9kJyBpcyBtaXNzaW5nLlwiLFxuICBNSVNTSU5HX1BBVEg6IFwiSW5pdGFsaXphdGlvbiBwYXJhbSAncGF0aCcgaXMgbWlzc2luZy5cIixcbiAgVU5TVVBQT1JURURfUExVR0lOOlxuICAgIFwiUGx1Z2luIGludGVyZmFjZSBkb2Vzbid0IGltcGxlbWVudCAnZXhlY3V0ZScgb3IgJ21ldGFkYXRhJyBtZXRob2RzLlwiLFxuICBPVkVSUklERV9XQVJOSU5HOlxuICAgICdcXG4qKldBUk5JTkcqKjogWW91IGFyZSBvdmVycmlkaW5nIHRoZSBJRiBkZWZhdWx0IHBhcmFtZXRlcnMgZmlsZS4gUGxlYXNlIGJlIGV4dHJlbWVseSBjYXJlZnVsIG9mIHVuaW50ZW5kZWQgc2lkZS1lZmZlY3RzIGluIHlvdXIgcGx1Z2luIHBpcGVsaW5lIVxcbicsXG4gIERJU0NMQUlNRVJfTUVTU0FHRTogYFxuSW5jdWJhdGlvbiBQcm9qZWN0XG5cblRoaXMgcHJvamVjdCBpcyBhbiBpbmN1YmF0aW9uIHByb2plY3QgYmVpbmcgcnVuIGluc2lkZSB0aGUgR3JlZW4gU29mdHdhcmUgRm91bmRhdGlvbjsgYXMgc3VjaCwgd2UgRE9O4oCZVCByZWNvbW1lbmQgdXNpbmcgaXQgaW4gYW55IGNyaXRpY2FsIHVzZSBjYXNlLiBcbkluY3ViYXRpb24gcHJvamVjdHMgYXJlIGV4cGVyaW1lbnRhbCwgb2ZmZXIgbm8gc3VwcG9ydCBndWFyYW50ZWUsIGhhdmUgbWluaW1hbCBnb3Zlcm5hbmNlIGFuZCBwcm9jZXNzLCBhbmQgbWF5IGJlIHJldGlyZWQgYXQgYW55IG1vbWVudC4gVGhpcyBwcm9qZWN0IG1heSBvbmUgZGF5IGdyYWR1YXRlLCBpbiB3aGljaCBjYXNlIHRoaXMgZGlzY2xhaW1lciB3aWxsIGJlIHJlbW92ZWQuYCxcbiAgTk9UX05BVElWRV9QTFVHSU46IChwYXRoOiBzdHJpbmcpID0+XG4gICAgYFxuWW91IGFyZSB1c2luZyBwbHVnaW4gJHtwYXRofSB3aGljaCBpcyBub3QgcGFydCBvZiB0aGUgSW1wYWN0IEZyYW1ld29yayBzdGFuZGFyZCBsaWJyYXJ5LiBZb3Ugc2hvdWxkIGRvIHlvdXIgb3duIHJlc2VhcmNoIHRvIGVuc3VyZSB0aGUgcGx1Z2lucyBhcmUgdXAgdG8gZGF0ZSBhbmQgYWNjdXJhdGUuIFRoZXkgbWF5IG5vdCBiZSBhY3RpdmVseSBtYWludGFpbmVkLmAsXG4gIElOVkFMSURfTU9EVUxFX1BBVEg6IChwYXRoOiBzdHJpbmcsIGVycm9yPzogYW55KSA9PlxuICAgIGBQcm92aWRlZCBtb2R1bGUgXFxgJHtwYXRofVxcYCBpcyBpbnZhbGlkIG9yIG5vdCBmb3VuZC4gJHtlcnJvciA/PyAnJ31cbmAsXG4gIElOVkFMSURfVElNRV9OT1JNQUxJWkFUSU9OOiAnU3RhcnQgdGltZSBvciBlbmQgdGltZSBpcyBtaXNzaW5nLicsXG4gIFVORVhQRUNURURfVElNRV9DT05GSUc6XG4gICAgJ1VuZXhwZWN0ZWQgbm9kZS1sZXZlbCBjb25maWcgcHJvdmlkZWQgZm9yIHRpbWUtc3luYyBwbHVnaW4uJyxcbiAgSU5WQUxJRF9USU1FX0lOVEVSVkFMOiAnSW50ZXJ2YWwgaXMgbWlzc2luZy4nLFxuICBBVk9JRElOR19QQURESU5HOiAoZGVzY3JpcHRpb246IHN0cmluZykgPT5cbiAgICBgQXZvaWRpbmcgcGFkZGluZyBhdCAke2Rlc2NyaXB0aW9ufWAsXG4gIEFWT0lESU5HX1BBRERJTkdfQllfRURHRVM6IChzdGFydDogYm9vbGVhbiwgZW5kOiBib29sZWFuKSA9PlxuICAgIGBBdm9pZGluZyBwYWRkaW5nIGF0ICR7XG4gICAgICBzdGFydCAmJiBlbmQgPyAnc3RhcnQgYW5kIGVuZCcgOiBzdGFydCA/ICdzdGFydCcgOiAnZW5kJ1xuICAgIH1gLFxuICBJTlZBTElEX0FHR1JFR0FUSU9OX01FVEhPRDogKG1ldHJpYzogc3RyaW5nKSA9PlxuICAgIGBBZ2dyZWdhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIGdpdmVuICR7bWV0cmljfSBzaW5jZSBtZXRob2QgaXMgJ25vbmUnLmAsXG4gIE1FVFJJQ19NSVNTSU5HOiAobWV0cmljOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgYEFnZ3JlZ2F0aW9uIG1ldHJpYyAke21ldHJpY30gaXMgbm90IGZvdW5kIGluIGlucHV0c1ske2luZGV4fV0uYCxcbiAgSU5WQUxJRF9HUk9VUF9CWTogKHR5cGU6IHN0cmluZykgPT4gYEludmFsaWQgZ3JvdXAgJHt0eXBlfS5gLFxuICBSRUpFQ1RJTkdfT1ZFUlJJREU6IChwYXJhbTogTWFuaWZlc3RQYXJhbWV0ZXIpID0+XG4gICAgYFJlamVjdGluZyBvdmVycmlkaW5nIG9mIGNhbm9uaWNhbCBwYXJhbWV0ZXI6ICR7cGFyYW0ubmFtZX0uYCxcbiAgSU5WQUxJRF9FWEhBVVNUX1BMVUdJTjogKHBsdWdpbk5hbWU6IHN0cmluZykgPT5cbiAgICBgSW52YWxpZCBleGhhdXN0IHBsdWdpbjogJHtwbHVnaW5OYW1lfS5gLFxuICBVTktOT1dOX1BBUkFNOiAobmFtZTogc3RyaW5nKSA9PlxuICAgIGBVbmtub3duIHBhcmFtZXRlcjogJHtuYW1lfS4gVXNpbmcgJ3N1bScgYWdncmVnYXRpb24gbWV0aG9kLmAsXG4gIE5PVF9JTklUQUxJWkVEX1BMVUdJTjogKG5hbWU6IHN0cmluZykgPT5cbiAgICBgTm90IGluaXRhbGl6ZWQgcGx1Z2luOiAke25hbWV9LiBDaGVjayBpZiAke25hbWV9IGlzIGluICdtYW5pZmVzdC5pbml0YWxpemUucGx1Z2lucycuYCxcbiAgTk9fT1VUUFVUOiBgXG5Zb3UgaGF2ZSBub3Qgc2VsZWN0ZWQgYW4gb3V0cHV0IG1ldGhvZC4gVG8gc2VlIHlvdXIgb3V0cHV0IGRhdGEsIHlvdSBjYW4gY2hvb3NlIGZyb206XG4tLXN0ZG91dDogdGhpcyB3aWxsIHByaW50IHlvdXIgb3V0cHV0IGRhdGEgdG8gdGhlIGNvbnNvbGVcbi0tb3V0cHV0IDxzYXZlcGF0aD46IHRoaXMgd2lsbCBzYXZlIHlvdXIgb3V0cHV0IGRhdGEgdG8gdGhlIGdpdmVuIGZpbGVwYXRoIChkbyBub3QgcHJvdmlkZSBmaWxlIGV4dGVuc2lvbilcbk5vdGUgdGhhdCBmb3IgdGhlICctLW91dHB1dCcgb3B0aW9uIHlvdSBhbHNvIG5lZWQgdG8gZGVmaW5lIHRoZSBvdXRwdXQgdHlwZSBpbiB5b3VyIG1hbmlmZXN0IGZpbGUuIFNlZSBodHRwczovL2lmLmdyZWVuc29mdHdhcmUuZm91bmRhdGlvbi9tYWpvci1jb25jZXB0cy9tYW5pZmVzdC1maWxlI2luaXRpYWxpemVgLFxuICBTT1VSQ0VfSVNfTk9UX1lBTUw6ICdHaXZlbiBzb3VyY2UgZmlsZSBpcyBub3QgaW4geWFtbCBmb3JtYXQuJyxcbiAgVEFSR0VUX0lTX05PVF9ZQU1MOiAnR2l2ZW4gdGFyZ2V0IGZpbGUgaXMgbm90IGluIHlhbWwgZm9ybWF0LicsXG4gIElOVkFMSURfVEFSR0VUOiAnVGFyZ2V0IGlzIGludmFsaWQuJyxcbiAgSU5WQUxJRF9TT1VSQ0U6ICdTb3VyY2UgaXMgaW52YWxpZC4nLFxuICBVTlNVUFBPUlRFRF9FUlJPUjogKGVycm9yTmFtZTogc3RyaW5nKSA9PlxuICAgIGBVbnN1cHBvcnRlZEVycm9yQ2xhc3M6IHBsdWdpbiB0aHJldyBlcnJvciBjbGFzczogJHtlcnJvck5hbWV9IHRoYXQgaXMgbm90IHJlY29nbml6ZWQgYnkgSW1wYWN0IEZyYW1ld29ya2AsXG4gIC8qKiBQbHVnaW4gbWVzc2FnZXMgKi9cbiAgTUlTU0lOR19HTE9CQUxfQ09ORklHOiAnR2xvYmFsIGNvbmZpZyBpcyBub3QgcHJvdmlkZWQuJyxcbiAgTUlTU0lOR19JTlBVVF9EQVRBOiAocGFyYW06IHN0cmluZykgPT5cbiAgICBgJHtwYXJhbX0gaXMgbWlzc2luZyBmcm9tIHRoZSBpbnB1dCBhcnJheSwgb3IgaGFzIG51bGxpc2ggdmFsdWUuYCxcbiAgTUFOSUZFU1RfTk9UX0ZPVU5EOiAnTWFuaWZlc3QgZmlsZSBub3QgZm91bmQuJyxcbiAgSU5JVElBTElaSU5HX1BBQ0tBR0VfSlNPTjogJ0luaXRpYWxpemluZyBwYWNrYWdlLmpzb24uJyxcbiAgSU5TVEFMTElOR19OUE1fUEFDS0FHRVM6ICdJbnN0YWxsaW5nIG5wbSBwYWNrYWdlcy4uLicsXG4gIE5PVF9OVU1FUklDX1ZBTFVFOiAoc3RyOiBhbnkpID0+IGAke3N0cn0gaXMgbm90IG51bWJlcmljLmAsXG4gIE1JU1NJTkdfRlVOQ1RJT05BTF9VTklUX0NPTkZJRzpcbiAgICAnYGZ1bmN0aW9uYWwtdW5pdGAgc2hvdWxkIGJlIHByb3ZpZGVkIGluIHlvdXIgZ2xvYmFsIGNvbmZpZycsXG4gIE1JU1NJTkdfRlVOQ1RJT05BTF9VTklUX0lOUFVUOlxuICAgICdgZnVuY3Rpb25hbC11bml0YCB2YWx1ZSBpcyBtaXNzaW5nIGZyb20gaW5wdXQgZGF0YSBvciBpdCBpcyBub3QgYSBwb3NpdGl2ZSBpbnRlZ2VyJyxcbiAgUkVHRVhfTUlTTUFUQ0g6IChpbnB1dDogYW55LCBtYXRjaDogc3RyaW5nKSA9PlxuICAgIGBcXGAke2lucHV0fVxcYCBkb2VzIG5vdCBtYXRjaCB0aGUgJHttYXRjaH0gcmVnZXggZXhwcmVzc2lvbmAsXG4gIFNDSV9FTUJPRElFRF9FUlJPUjogKHVuaXQ6IHN0cmluZykgPT5cbiAgICBgaW52YWxpZCBudW1iZXIuIHBsZWFzZSBwcm92aWRlIGl0IGFzIFxcYCR7dW5pdH1cXGAgdG8gaW5wdXRgLFxuICBNSVNTSU5HX01JTl9NQVg6ICdDb25maWcgaXMgbWlzc2luZyBtaW4gb3IgbWF4IHZhbHVlJyxcbiAgSU5WQUxJRF9NSU5fTUFYOiAobmFtZTogc3RyaW5nKSA9PlxuICAgIGBNaW4gdmFsdWUgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWF4IHZhbHVlIG9mICR7bmFtZX1gLFxuICBGSUxFX0ZFVENIX0ZBSUxFRDogKFxuICAgIGZpbGVwYXRoOiBzdHJpbmcsXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICkgPT4gYEZhaWxlZCBmZXRjaGluZyB0aGUgZmlsZTogJHtmaWxlcGF0aH0uXG4ke21lc3NhZ2V9YCxcbiAgRklMRV9SRUFEX0ZBSUxFRDogKFxuICAgIGZpbGVwYXRoOiBzdHJpbmcsXG4gICAgZXJyb3I6IHN0cmluZ1xuICApID0+IGBGYWlsZWQgcmVhZGluZyB0aGUgZmlsZTogJHtmaWxlcGF0aH0uIFxuJHtlcnJvcn1gLFxuICBNSVNTSU5HX0NTVl9DT0xVTU46IChjb2x1bW5OYW1lOiBzdHJpbmcpID0+XG4gICAgYFRoZXJlIGlzIG5vIGNvbHVtbiB3aXRoIHRoZSBuYW1lOiAke2NvbHVtbk5hbWV9LmAsXG4gIE5PX1FVRVJZX0RBVEE6XG4gICAgJ09uZSBvciBtb3JlIG9mIHRoZSBnaXZlbiBxdWVyeSBwYXJhbWV0ZXJzIGFyZSBub3QgZm91bmQgaW4gdGhlIHRhcmdldCBDU1YgZmlsZSBjb2x1bW4gaGVhZGVycy4nLFxuICBJTlZBTElEX0RBVEVfVFlQRTogKGRhdGU6IGFueSkgPT5cbiAgICBgVW5leHBlY3RlZCBkYXRlIGRhdGF0eXBlOiAke3R5cGVvZiBkYXRlfTogJHtkYXRlfWAsXG4gIElOVkFMSURfT0JTRVJWQVRJT05fT1ZFUkxBUDpcbiAgICAnT2JzZXJ2YXRpb24gdGltZXN0YW1wcyBvdmVybGFwLCBwbGVhc2UgY2hlY2sgaW5wdXRzLicsXG4gIFNDSV9NSVNTSU5HX0ZOX1VOSVQ6IChmdW5jdGlvbmFsVW5pdDogc3RyaW5nKSA9PlxuICAgIGAnY2FyYm9uJyBhbmQgJHtmdW5jdGlvbmFsVW5pdH0gc2hvdWxkIGJlIHByZXNlbnQgaW4geW91ciBpbnB1dCBkYXRhLmAsXG4gIC8qKiBFeGhhdXN0IG1lc3NhZ2VzICovXG4gIE9VVFBVVF9SRVFVSVJFRDpcbiAgICAnT3V0cHV0IHBhdGggaXMgcmVxdWlyZWQsIHBsZWFzZSBtYWtlIHN1cmUgb3V0cHV0IGlzIGNvbmZpZ3VyZWQgcHJvcGVybHkuJyxcbiAgQ1NWX0VYUE9SVDpcbiAgICAnQ1NWIGV4cG9ydCBjcml0ZXJpYSBpcyBub3QgZm91bmQgaW4gb3V0cHV0IHBhdGguIFBsZWFzZSBhcHBlbmQgaXQgYWZ0ZXIgLS1vdXRwdXQgPHBhdGg+Iy4nLFxuICBXUklURV9DU1ZfRVJST1I6IChvdXRwdXRQYXRoOiBzdHJpbmcsIGVycm9yOiBhbnkpID0+XG4gICAgYEZhaWxlZCB0byB3cml0ZSBDU1YgZmlsZSB0byAke291dHB1dFBhdGh9OiAke2Vycm9yfWAsXG4gIElOVkFMSURfTkFNRTpcbiAgICAnYG5hbWVgIGdsb2JhbCBjb25maWcgcGFyYW1ldGVyIGlzIGVtcHR5IG9yIGNvbnRhaW5zIGFsbCBzcGFjZXMnLFxuICBTVEFSVF9MT1dFUl9FTkQ6ICdgc3RhcnQtdGltZWAgc2hvdWxkIGJlIGxvd2VyIHRoYW4gYGVuZC10aW1lYCcsXG4gIFRJTUVTVEFNUF9SRVFVSVJFRDogKGluZGV4OiBudW1iZXIpID0+IGByZXF1aXJlZCBpbiBpbnB1dFske2luZGV4fV1gLFxuICBJTlZBTElEX0RBVEVUSU1FOiAoaW5kZXg6IG51bWJlcikgPT4gYGludmFsaWQgZGF0ZXRpbWUgaW4gaW5wdXRbJHtpbmRleH1dYCxcbiAgWF9ZX0VRVUFMOiAnVGhlIGxlbmd0aCBvZiBgeGAgYW5kIGB5YCBzaG91bGQgYmUgZXF1YWwnLFxuICBBUlJBWV9MRU5HVEhfTk9OX0VNUFRZOlxuICAgICd0aGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBhcnJheXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMScsXG4gIFdJVEhJTl9USEVfUkFOR0U6XG4gICAgJ1RoZSB0YXJnZXQgeCB2YWx1ZSBtdXN0IGJlIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgdGhlIGdpdmVuIHggdmFsdWVzJyxcbiAgLyoqIERlYnVnZ2luZyBsb2dzICovXG4gIFNUQVJUSU5HX0lGOiAnU3RhcnRpbmcgSUYnLFxuICBFWElUSU5HX0lGOiAnRXhpdGluZyBJRicsXG4gIExPQURJTkdfTUFOSUZFU1Q6ICdMb2FkaW5nIG1hbmlmZXN0JyxcbiAgVkFMSURBVElOR19NQU5JRkVTVDogJ1ZhbGlkYXRpbmcgbWFuaWZlc3QnLFxuICBDQVBUVVJJTkdfUlVOVElNRV9FTlZJUk9OTUVOVF9EQVRBOiAnQ2FwdHVyaW5nIHJ1bnRpbWUgZW52aXJvbm1lbnQgZGF0YScsXG4gIFNZTkNJTkdfUEFSQU1FVEVSUzogJ1N5bmNpbmcgcGFyYW1ldGVycycsXG4gIENIRUNLSU5HX0FHR1JFR0FUSU9OX01FVEhPRDogKHVuaXROYW1lOiBzdHJpbmcpID0+XG4gICAgYENoZWNraW5nIGFnZ3JlZ2F0aW9uIG1ldGhvZCBmb3IgJHt1bml0TmFtZX1gLFxuICBJTklUSUFMSVpJTkdfUExVR0lOUzogJ0luaXRpYWxpemluZyBwbHVnaW5zJyxcbiAgSU5JVElBTElaSU5HX1BMVUdJTjogKHBsdWdpbk5hbWU6IHN0cmluZykgPT4gYEluaXRpYWxpemluZyAke3BsdWdpbk5hbWV9YCxcbiAgTE9BRElOR19QTFVHSU5fRlJPTV9QQVRIOiAocGx1Z2luTmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpID0+XG4gICAgYExvYWRpbmcgJHtwbHVnaW5OYW1lfSBmcm9tICR7cGF0aH1gLFxuICBDT01QVVRJTkdfUElQRUxJTkVfRk9SX05PREU6IChub2RlTmFtZTogc3RyaW5nKSA9PlxuICAgIGBDb21wdXRpbmcgcGlwZWxpbmUgZm9yIFxcYCR7bm9kZU5hbWV9XFxgYCxcbiAgTUVSR0lOR19ERUZBVUxUU19XSVRIX0lOUFVUX0RBVEE6ICdNZXJnaW5nIGRlZmF1bHRzIHdpdGggaW5wdXQgZGF0YScsXG4gIEFHR1JFR0FUSU5HX09VVFBVVFM6ICdBZ2dyZWdhdGluZyBvdXRwdXRzJyxcbiAgQUdHUkVHQVRJTkdfTk9ERTogKG5vZGVOYW1lOiBzdHJpbmcpID0+IGBBZ2dyZWdhdGluZyBub2RlICR7bm9kZU5hbWV9YCxcbiAgUFJFUEFSSU5HX09VVFBVVF9EQVRBOiAnUHJlcGFyaW5nIG91dHB1dCBkYXRhJyxcbiAgRVhQT1JUSU5HX1RPX1lBTUxfRklMRTogKHNhdmVwYXRoOiBzdHJpbmcpID0+XG4gICAgYEV4cG9ydGluZyB0byB5YW1sIGZpbGU6ICR7c2F2ZXBhdGh9YCxcbiAgRVhQT1JUSU5HX1RPX0NTVl9GSUxFOiAoc2F2ZXBhdGg6IHN0cmluZykgPT5cbiAgICBgRXhwb3J0aW5nIHRvIGNzdiBmaWxlOiAke3NhdmVwYXRofWAsXG4gIEVYUE9SVElOR19SQVdfQ1NWX0ZJTEU6IChzYXZlcGF0aDogc3RyaW5nKSA9PlxuICAgIGBFeHBvcnRpbmcgcmF3IGNzdiBmaWxlOiAke3NhdmVwYXRofWAsXG4gIENIRUNLSU5HOiAnQ2hlY2tpbmcuLi4nLFxuICBJRl9DSEVDS19GTEFHU19NSVNTSU5HOlxuICAgICdFaXRoZXIgdGhlIGAtLW1hbmlmZXN0YCBvciBgLS1kaXJlY3RvcnlgIGNvbW1hbmQgc2hvdWxkIGJlIHByb3ZpZGVkIHdpdGggYSBwYXRoJyxcbiAgRElSRUNUT1JZX05PVF9GT1VORDogJ0RpcmVjdG9yeSBub3QgZm91bmQuJyxcbiAgRElSRUNUT1JZX1lBTUxfRklMRVNfTk9UX0ZPVU5EOlxuICAgICdUaGUgZGlyZWN0b3J5IGRvZXMgbm90IGNvbnRhaW4gYW55IFlBTUwvWU1MIGZpbGVzLlxcbicsXG4gIElGX0NIRUNLX0ZBSUxFRDogKGZpbGVuYW1lOiBzdHJpbmcpID0+XG4gICAgYGlmLWNoZWNrIGNvdWxkIG5vdCB2ZXJpZnkgJHtmaWxlbmFtZX0uIFRoZSByZS1leGVjdXRlZCBmaWxlIGRvZXMgbm90IG1hdGNoIHRoZSBvcmlnaW5hbC5cXG5gLFxuICBJRl9DSEVDS19WRVJJRklFRDogKGZpbGVuYW1lOiBzdHJpbmcpID0+XG4gICAgYGlmLWNoZWNrIHN1Y2Nlc3NmdWxseSB2ZXJpZmllZCAke2ZpbGVuYW1lfVxcbmAsXG4gIFpFUk9fRElWSVNJT046IChtb2R1bGVOYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgYC0tIFNLSVBQSU5HIC0tIERpdmlzaW9uQnlaZXJvOiB5b3UgYXJlIGF0dGVtcHRpbmcgdG8gZGl2aWRlIGJ5IHplcm8gaW4gJHttb2R1bGVOYW1lfSBwbHVnaW4gOiBpbnB1dHNbJHtpbmRleH1dXFxuYCxcbn07XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc3RyaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFYSxRQUFBLE9BQU8sR0FBRztJQUNyQixtQkFBbUIsRUFBRSxzQkFBc0I7SUFDM0MsY0FBYyxFQUFFLDBDQUEwQztJQUMxRCxZQUFZLEVBQUUsd0NBQXdDO0lBQ3RELGtCQUFrQixFQUNoQixxRUFBcUU7SUFDdkUsZ0JBQWdCLEVBQ2QscUpBQXFKO0lBQ3ZKLGtCQUFrQixFQUFFOzs7OzJOQUlxTTtJQUN6TixpQkFBaUIsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQ2xDO3VCQUNtQixJQUFJLHNMQUFzTDtJQUMvTSxtQkFBbUIsRUFBRSxDQUFDLElBQVksRUFBRSxLQUFXLEVBQUUsRUFBRSxDQUNqRCxxQkFBcUIsSUFBSSwrQkFBK0IsS0FBSyxJQUFJLEVBQUU7Q0FDdEU7SUFDQywwQkFBMEIsRUFBRSxvQ0FBb0M7SUFDaEUsc0JBQXNCLEVBQ3BCLDZEQUE2RDtJQUMvRCxxQkFBcUIsRUFBRSxzQkFBc0I7SUFDN0MsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFtQixFQUFFLEVBQUUsQ0FDeEMsdUJBQXVCLFdBQVcsRUFBRTtJQUN0Qyx5QkFBeUIsRUFBRSxDQUFDLEtBQWMsRUFBRSxHQUFZLEVBQUUsRUFBRSxDQUMxRCx1QkFDRSxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUNyRCxFQUFFO0lBQ0osMEJBQTBCLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUM3Qyx5Q0FBeUMsTUFBTSwwQkFBMEI7SUFDM0UsY0FBYyxFQUFFLENBQUMsTUFBYyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQ2hELHNCQUFzQixNQUFNLDJCQUEyQixLQUFLLElBQUk7SUFDbEUsZ0JBQWdCLEVB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QUFFLEVBQUUsQ0FBQyxlQUFlLFFBQVEsSUFBSTtJQUNyRSw4QkFBOEIsRUFDNUIsOENBQThDO0lBQ2hELGVBQWUsRUFBRSxDQUFDLFFBQWdCLEVBQUUsRUFBRSxDQUNwQywrQkFBK0IsUUFBUSx1REFBdUQ7SUFDaEcsaUJBQWlCLEVBQUUsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FDdEMsb0NBQW9DLFFBQVEsSUFBSTtJQUNsRCw4QkFBOEIsRUFBRSxDQUFDLFFBQWdCLEVBQUUsT0FBZSxFQUFFLEVBQUUsQ0FDcEUsZUFBZSxRQUFRLFNBQVMsT0FBTyxFQUFFO0lBQzNDLG9CQUFvQixFQUFFLENBQUMsV0FBbUIsRUFBRSxVQUFrQixFQUFFLEVBQUUsQ0FDaEUsOEJBQThCLFdBQVcsT0FBTyxVQUFVLHNCQUFzQjtJQUNsRixhQUFhLEVBQUUsQ0FBQyxVQUFrQixFQUFFLEtBQWEsRUFBRSxFQUFFLENBQ25ELDBFQUEwRSxVQUFVLG9CQUFvQixLQUFLLEtBQUs7Q0FDckgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWFuaWZlc3RQYXJhbWV0ZXJ9IGZyb20gJy4uL3R5cGVzL21hbmlmZXN0JztcblxuZXhwb3J0IGNvbnN0IFNUUklOR1MgPSB7XG4gIE1BTklGRVNUX0lTX01JU1NJTkc6ICdNYW5pZmVzdCBpcyBtaXNzaW5nLicsXG4gIE1JU1NJTkdfTUVUSE9EOiBcIkluaXRhbGl6YXRpb24gcGFyYW0gJ21ldGhvZCcgaXMgbWlzc2luZy5cIixcbiAgTUlTU0lOR19QQVRIOiBcIkluaXRhbGl6YXRpb24gcGFyYW0gJ3BhdGgnIGlzIG1pc3NpbmcuXCIsXG4gIFVOU1VQUE9SVEVEX1BMVUdJTjpcbiAgICBcIlBsdWdpbiBpbnRlcmZhY2UgZG9lc24ndCBpbXBsZW1lbnQgJ2V4ZWN1dGUnIG9yICdtZXRhZGF0YScgbWV0aG9kcy5cIixcbiAgT1ZFUlJJREVfV0FSTklORzpcbiAgICAnXFxuKipXQVJOSU5HKio6IFlvdSBhcmUgb3ZlcnJpZGluZyB0aGUgSUYgZGVmYXVsdCBwYXJhbWV0ZXJzIGZpbGUuIFBsZWFzZSBiZSBleHRyZW1lbHkgY2FyZWZ1bCBvZiB1bmludGVuZGVkIHNpZGUtZWZmZWN0cyBpbiB5b3VyIHBsdWdpbiBwaXBlbGluZSFcXG4nLFxuICBESVNDTEFJTUVSX01FU1NBR0U6IGBcbkluY3ViYXRpb24gUHJvamVjdFxuXG5UaGlzIHByb2plY3QgaXMgYW4gaW5jdWJhdGlvbiBwcm9qZWN0IGJlaW5nIHJ1biBpbnNpZGUgdGhlIEdyZWVuIFNvZnR3YXJlIEZvdW5kYXRpb247IGFzIHN1Y2gsIHdlIERPTuKAmVQgcmVjb21tZW5kIHVzaW5nIGl0IGluIGFueSBjcml0aWNhbCB1c2UgY2FzZS4gXG5JbmN1YmF0aW9uIHByb2plY3RzIGFyZSBleHBlcmltZW50YWwsIG9mZmVyIG5vIHN1cHBvcnQgZ3VhcmFudGVlLCBoYXZlIG1pbmltYWwgZ292ZXJuYW5jZSBhbmQgcHJvY2VzcywgYW5kIG1heSBiZSByZXRpcmVkIGF0IGFueSBtb21lbnQuIFRoaXMgcHJvamVjdCBtYXkgb25lIGRheSBncmFkdWF0ZSwgaW4gd2hpY2ggY2FzZSB0aGlzIGRpc2NsYWltZXIgd2lsbCBiZSByZW1vdmVkLmAsXG4gIE5PVF9OQVRJVkVfUExVR0lOOiAocGF0aDogc3RyaW5nKSA9PlxuICAgIGBcbllvdSBhcmUgdXNpbmcgcGx1Z2luICR7cGF0aH0gd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhlIEltcGFjdCBGcmFtZXdvcmsgc3RhbmRhcmQgbGlicmFyeS4gWW91IHNob3VsZCBkbyB5b3VyIG93biByZXNlYXJjaCB0byBlbnN1cmUgdGhlIHBsdWdpbnMgYXJlIHVwIHRvIGRhdGUgYW5kIGFjY3VyYXRlLiBUaGV5IG1heSBub3QgYmUgYWN0aXZlbHkgbWFpbnRhaW5lZC5gLFxuICBJTlZBTElEX01PRFVMRV9QQVRIOiAocGF0aDogc3RyaW5nLCBlcnJvcj86IGFueSkgPT5cbiAgICBgUHJvdmlkZWQgbW9kdWxlIFxcYCR7cGF0aH1cXGAgaXMgaW52YWxpZCBvciBub3QgZm91bmQuICR7ZXJyb3IgPz8gJyd9XG5gLFxuICBJTlZBTElEX1RJTUVfTk9STUFMSVpBVElPTjogJ1N0YXJ0IHRpbWUgb3IgZW5kIHRpbWUgaXMgbWlzc2luZy4nLFxuICBVTkVYUEVDVEVEX1RJTUVfQ09ORklHOlxuICAgICdVbmV4cGVjdGVkIG5vZGUtbGV2ZWwgY29uZmlnIHByb3ZpZGVkIGZvciB0aW1lLXN5bmMgcGx1Z2luLicsXG4gIElOVkFMSURfVElNRV9JTlRFUlZBTDogJ0ludGVydmFsIGlzIG1pc3NpbmcuJyxcbiAgQVZPSURJTkdfUEFERElORzogKGRlc2NyaXB0aW9uOiBzdHJpbmcpID0+XG4gICAgYEF2b2lkaW5nIHBhZGRpbmcgYXQgJHtkZXNjcmlwdGlvbn1gLFxuICBBVk9JRElOR19QQURESU5HX0JZX0VER0VTOiAoc3RhcnQ6IGJvb2xlYW4sIGVuZDogYm9vbGVhbikgPT5cbiAgICBgQXZvaWRpbmcgcGFkZGluZyBhdCAke1xuICAgICAgc3RhcnQgJiYgZW5kID8gJ3N0YXJ0IGFuZCBlbmQnIDogc3RhcnQgPyAnc3RhcnQnIDogJ2VuZCdcbiAgICB9YCxcbiAgSU5WQUxJRF9BR0dSRUdBVElPTl9NRVRIT0Q6IChtZXRyaWM6IHN0cmluZykgPT5cbiAgICBgQWdncmVnYXRpb24gaXMgbm90IHBvc3NpYmxlIGZvciBnaXZlbiAke21ldHJpY30gc2luY2UgbWV0aG9kIGlzICdub25lJy5gLFxuICBNRVRSSUNfTUlTU0lORzogKG1ldHJpYzogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgIGBBZ2dyZWdhdGlvbiBtZXRyaWMgJHttZXRyaWN9IGlzIG5vdCBmb3VuZCBpbiBpbnB1dHNbJHtpbmRleH1dLmAsXG4gIElOVkFMSURfR1JPVVBfQlk6ICh0eXBlOiBzdHJpbmcpID0+IGBJbnZhbGlkIGdyb3VwICR7dHlwZX0uYCxcbiAgUkVKRUNUSU5HX09WRVJSSURFOiAocGFyYW06IE1hbmlmZXN0UGFyYW1ldGVyKSA9PlxuICAgIGBSZWplY3Rpbmcgb3ZlcnJpZGluZyBvZiBjYW5vbmljYWwgcGFyYW1ldGVyOiAke3BhcmFtLm5hbWV9LmAsXG4gIElOVkFMSURfRVhIQVVTVF9QTFVHSU46IChwbHVnaW5OYW1lOiBzdHJpbmcpID0+XG4gICAgYEludmFsaWQgZXhoYXVzdCBwbHVnaW46ICR7cGx1Z2luTmFtZX0uYCxcbiAgVU5LTk9XTl9QQVJBTTogKG5hbWU6IHN0cmluZykgPT5cbiAgICBgVW5rbm93biBwYXJhbWV0ZXI6ICR7bmFtZX0uIFVzaW5nICdzdW0nIGFnZ3JlZ2F0aW9uIG1ldGhvZC5gLFxuICBOT1RfSU5JVEFMSVpFRF9QTFVHSU46IChuYW1lOiBzdHJpbmcpID0+XG4gICAgYE5vdCBpbml0YWxpemVkIHBsdWdpbjogJHtuYW1lfS4gQ2hlY2sgaWYgJHtuYW1lfSBpcyBpbiAnbWFuaWZlc3QuaW5pdGFsaXplLnBsdWdpbnMnLmAsXG4gIE5PX09VVFBVVDogYFxuWW91IGhhdmUgbm90IHNlbGVjdGVkIGFuIG91dHB1dCBtZXRob2QuIFRvIHNlZSB5b3VyIG91dHB1dCBkYXRhLCB5b3UgY2FuIGNob29zZSBmcm9tOlxuLS1zdGRvdXQ6IHRoaXMgd2lsbCBwcmludCB5b3VyIG91dHB1dCBkYXRhIHRvIHRoZSBjb25zb2xlXG4tLW91dHB1dCA8c2F2ZXBhdGg+OiB0aGlzIHdpbGwgc2F2ZSB5b3VyIG91dHB1dCBkYXRhIHRvIHRoZSBnaXZlbiBmaWxlcGF0aCAoZG8gbm90IHByb3ZpZGUgZmlsZSBleHRlbnNpb24pXG5Ob3RlIHRoYXQgZm9yIHRoZSAnLS1vdXRwdXQnIG9wdGlvbiB5b3UgYWxzbyBuZWVkIHRvIGRlZmluZSB0aGUgb3V0cHV0IHR5cGUgaW4geW91ciBtYW5pZmVzdCBmaWxlLiBTZWUgaHR0cHM6Ly9pZi5ncmVlbnNvZnR3YXJlLmZvdW5kYXRpb24vbWFqb3ItY29uY2VwdHMvbWFuaWZlc3QtZmlsZSNpbml0aWFsaXplYCxcbiAgU09VUkNFX0lTX05PVF9ZQU1MOiAnR2l2ZW4gc291cmNlIGZpbGUgaXMgbm90IGluIHlhbWwgZm9ybWF0LicsXG4gIFRBUkdFVF9JU19OT1RfWUFNTDogJ0dpdmVuIHRhcmdldCBmaWxlIGlzIG5vdCBpbiB5YW1sIGZvcm1hdC4nLFxuICBJTlZBTElEX1RBUkdFVDogJ1RhcmdldCBpcyBpbnZhbGlkLicsXG4gIElOVkFMSURfU09VUkNFOiAnU291cmNlIGlzIGludmFsaWQuJyxcbiAgVU5TVVBQT1JURURfRVJST1I6IChlcnJvck5hbWU6IHN0cmluZykgPT5cbiAgICBgVW5zdXBwb3J0ZWRFcnJvckNsYXNzOiBwbHVnaW4gdGhyZXcgZXJyb3IgY2xhc3M6ICR7ZXJyb3JOYW1lfSB0aGF0IGlzIG5vdCByZWNvZ25pemVkIGJ5IEltcGFjdCBGcmFtZXdvcmtgLFxuICAvKiogUGx1Z2luIG1lc3NhZ2VzICovXG4gIE1JU1NJTkdfR0xPQkFMX0NPTkZJRzogJ0dsb2JhbCBjb25maWcgaXMgbm90IHByb3ZpZGVkLicsXG4gIE1JU1NJTkdfSU5QVVRfREFUQTogKHBhcmFtOiBzdHJpbmcpID0+XG4gICAgYCR7cGFyYW19IGlzIG1pc3NpbmcgZnJvbSB0aGUgaW5wdXQgYXJyYXksIG9yIGhhcyBudWxsaXNoIHZhbHVlLmAsXG4gIE1BTklGRVNUX05PVF9GT1VORDogJ01hbmlmZXN0IGZpbGUgbm90IGZvdW5kLicsXG4gIElOSVRJQUxJWklOR19QQUNLQUdFX0pTT046ICdJbml0aWFsaXppbmcgcGFja2FnZS5qc29uLicsXG4gIElOU1RBTExJTkdfTlBNX1BBQ0tBR0VTOiAnSW5zdGFsbGluZyBucG0gcGFja2FnZXMuLi4nLFxuICBOT1RfTlVNRVJJQ19WQUxVRTogKHN0cjogYW55KSA9PiBgJHtzdHJ9IGlzIG5vdCBudW1iZXJpYy5gLFxuICBNSVNTSU5HX0ZVTkNUSU9OQUxfVU5JVF9DT05GSUc6XG4gICAgJ2BmdW5jdGlvbmFsLXVuaXRgIHNob3VsZCBiZSBwcm92aWRlZCBpbiB5b3VyIGdsb2JhbCBjb25maWcnLFxuICBNSVNTSU5HX0ZVTkNUSU9OQUxfVU5JVF9JTlBVVDpcbiAgICAnYGZ1bmN0aW9uYWwtdW5pdGAgdmFsdWUgaXMgbWlzc2luZyBmcm9tIGlucHV0IGRhdGEgb3IgaXQgaXMgbm90IGEgcG9zaXRpdmUgaW50ZWdlcicsXG4gIFJFR0VYX01JU01BVENIOiAoaW5wdXQ6IGFueSwgbWF0Y2g6IHN0cmluZykgPT5cbiAgICBgXFxgJHtpbnB1dH1cXGAgZG9lcyBub3QgbWF0Y2ggdGhlICR7bWF0Y2h9IHJlZ2V4IGV4cHJlc3Npb25gLFxuICBTQ0lfRU1CT0RJRURfRVJST1I6ICh1bml0OiBzdHJpbmcpID0+XG4gICAgYGludmFsaWQgbnVtYmVyLiBwbGVhc2UgcHJvdmlkZSBpdCBhcyBcXGAke3VuaXR9XFxgIHRvIGlucHV0YCxcbiAgTUlTU0lOR19NSU5fTUFYOiAnQ29uZmlnIGlzIG1pc3NpbmcgbWluIG9yIG1heCB2YWx1ZScsXG4gIElOVkFMSURfTUlOX01BWDogKG5hbWU6IHN0cmluZykgPT5cbiAgICBgTWluIHZhbHVlIHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1heCB2YWx1ZSBvZiAke25hbWV9YCxcbiAgRklMRV9GRVRDSF9GQUlMRUQ6IChcbiAgICBmaWxlcGF0aDogc3RyaW5nLFxuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICApID0+IGBGYWlsZWQgZmV0Y2hpbmcgdGhlIGZpbGU6ICR7ZmlsZXBhdGh9LlxuJHttZXNzYWdlfWAsXG4gIEZJTEVfUkVBRF9GQUlMRUQ6IChcbiAgICBmaWxlcGF0aDogc3RyaW5nLFxuICAgIGVycm9yOiBzdHJpbmdcbiAgKSA9PiBgRmFpbGVkIHJlYWRpbmcgdGhlIGZpbGU6ICR7ZmlsZXBhdGh9LiBcbiR7ZXJyb3J9YCxcbiAgTUlTU0lOR19DU1ZfQ09MVU1OOiAoY29sdW1uTmFtZTogc3RyaW5nKSA9PlxuICAgIGBUaGVyZSBpcyBubyBjb2x1bW4gd2l0aCB0aGUgbmFtZTogJHtjb2x1bW5OYW1lfS5gLFxuICBOT19RVUVSWV9EQVRBOlxuICAgICdPbmUgb3IgbW9yZSBvZiB0aGUgZ2l2ZW4gcXVlcnkgcGFyYW1ldGVycyBhcmUgbm90IGZvdW5kIGluIHRoZSB0YXJnZXQgQ1NWIGZpbGUgY29sdW1uIGhlYWRlcnMuJyxcbiAgSU5WQUxJRF9EQVRFX1RZUEU6IChkYXRlOiBhbnkpID0+XG4gICAgYFVuZXhwZWN0ZWQgZGF0ZSBkYXRhdHlwZTogJHt0eXBlb2YgZGF0ZX06ICR7ZGF0ZX1gLFxuICBJTlZBTElEX09CU0VSVkFUSU9OX09WRVJMQVA6XG4gICAgJ09ic2VydmF0aW9uIHRpbWVzdGFtcHMgb3ZlcmxhcCwgcGxlYXNlIGNoZWNrIGlucHV0cy4nLFxuICBTQ0lfTUlTU0lOR19GTl9VTklUOiAoZnVuY3Rpb25hbFVuaXQ6IHN0cmluZykgPT5cbiAgICBgJ2NhcmJvbicgYW5kICR7ZnVuY3Rpb25hbFVuaXR9IHNob3VsZCBiZSBwcmVzZW50IGluIHlvdXIgaW5wdXQgZGF0YS5gLFxuICAvKiogRXhoYXVzdCBtZXNzYWdlcyAqL1xuICBPVVRQVVRfUkVRVUlSRUQ6XG4gICAgJ091dHB1dCBwYXRoIGlzIHJlcXVpcmVkLCBwbGVhc2UgbWFrZSBzdXJlIG91dHB1dCBpcyBjb25maWd1cmVkIHByb3Blcmx5LicsXG4gIENTVl9FWFBPUlQ6XG4gICAgJ0NTViBleHBvcnQgY3JpdGVyaWEgaXMgbm90IGZvdW5kIGluIG91dHB1dCBwYXRoLiBQbGVhc2UgYXBwZW5kIGl0IGFmdGVyIC0tb3V0cHV0IDxwYXRoPiMuJyxcbiAgV1JJVEVfQ1NWX0VSUk9SOiAob3V0cHV0UGF0aDogc3RyaW5nLCBlcnJvcjogYW55KSA9PlxuICAgIGBGYWlsZWQgdG8gd3JpdGUgQ1NWIGZpbGUgdG8gJHtvdXRwdXRQYXRofTogJHtlcnJvcn1gLFxuICBJTlZBTElEX05BTUU6XG4gICAgJ2BuYW1lYCBnbG9iYWwgY29uZmlnIHBhcmFtZXRlciBpcyBlbXB0eSBvciBjb250YWlucyBhbGwgc3BhY2VzJyxcbiAgU1RBUlRfTE9XRVJfRU5EOiAnYHN0YXJ0LXRpbWVgIHNob3VsZCBiZSBsb3dlciB0aGFuIGBlbmQtdGltZWAnLFxuICBUSU1FU1RBTVBfUkVRVUlSRUQ6IChpbmRleDogbnVtYmVyKSA9PiBgcmVxdWlyZWQgaW4gaW5wdXRbJHtpbmRleH1dYCxcbiAgSU5WQUxJRF9EQVRFVElNRTogKGluZGV4OiBudW1iZXIpID0+IGBpbnZhbGlkIGRhdGV0aW1lIGluIGlucHV0WyR7aW5kZXh9XWAsXG4gIFhfWV9FUVVBTDogJ1RoZSBsZW5ndGggb2YgYHhgIGFuZCBgeWAgc2hvdWxkIGJlIGVxdWFsJyxcbiAgQVJSQVlfTEVOR1RIX05PTl9FTVBUWTpcbiAgICAndGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgYXJyYXlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnLFxuICBXSVRISU5fVEhFX1JBTkdFOlxuICAgICdUaGUgdGFyZ2V0IHggdmFsdWUgbXVzdCBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBnaXZlbiB4IHZhbHVlcycsXG4gIC8qKiBEZWJ1Z2dpbmcgbG9ncyAqL1xuICBTVEFSVElOR19JRjogJ1N0YXJ0aW5nIElGJyxcbiAgRVhJVElOR19JRjogJ0V4aXRpbmcgSUYnLFxuICBMT0FESU5HX01BTklGRVNUOiAnTG9hZGluZyBtYW5pZmVzdCcsXG4gIFZBTElEQVRJTkdfTUFOSUZFU1Q6ICdWYWxpZGF0aW5nIG1hbmlmZXN0JyxcbiAgQ0FQVFVSSU5HX1JVTlRJTUVfRU5WSVJPTk1FTlRfREFUQTogJ0NhcHR1cmluZyBydW50aW1lIGVudmlyb25tZW50IGRhdGEnLFxuICBTWU5DSU5HX1BBUkFNRVRFUlM6ICdTeW5jaW5nIHBhcmFtZXRlcnMnLFxuICBDSEVDS0lOR19BR0dSRUdBVElPTl9NRVRIT0Q6ICh1bml0TmFtZTogc3RyaW5nKSA9PlxuICAgIGBDaGVja2luZyBhZ2dyZWdhdGlvbiBtZXRob2QgZm9yICR7dW5pdE5hbWV9YCxcbiAgSU5JVElBTElaSU5HX1BMVUdJTlM6ICdJbml0aWFsaXppbmcgcGx1Z2lucycsXG4gIElOSVRJQUxJWklOR19QTFVHSU46IChwbHVnaW5OYW1lOiBzdHJpbmcpID0+IGBJbml0aWFsaXppbmcgJHtwbHVnaW5OYW1lfWAsXG4gIExPQURJTkdfUExVR0lOX0ZST01fUEFUSDogKHBsdWdpbk5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nKSA9PlxuICAgIGBMb2FkaW5nICR7cGx1Z2luTmFtZX0gZnJvbSAke3BhdGh9YCxcbiAgQ09NUFVUSU5HX1BJUEVMSU5FX0ZPUl9OT0RFOiAobm9kZU5hbWU6IHN0cmluZykgPT5cbiAgICBgQ29tcHV0aW5nIHBpcGVsaW5lIGZvciBcXGAke25vZGVOYW1lfVxcYGAsXG4gIE1FUkdJTkdfREVGQVVMVFNfV0lUSF9JTlBVVF9EQVRBOiAnTWVyZ2luZyBkZWZhdWx0cyB3aXRoIGlucHV0IGRhdGEnLFxuICBBR0dSRUdBVElOR19PVVRQVVRTOiAnQWdncmVnYXRpbmcgb3V0cHV0cycsXG4gIEFHR1JFR0FUSU5HX05PREU6IChub2RlTmFtZTogc3RyaW5nKSA9PiBgQWdncmVnYXRpbmcgbm9kZSAke25vZGVOYW1lfWAsXG4gIFBSRVBBUklOR19PVVRQVVRfREFUQTogJ1ByZXBhcmluZyBvdXRwdXQgZGF0YScsXG4gIEVYUE9SVElOR19UT19ZQU1MX0ZJTEU6IChzYXZlcGF0aDogc3RyaW5nKSA9PlxuICAgIGBFeHBvcnRpbmcgdG8geWFtbCBmaWxlOiAke3NhdmVwYXRofWAsXG4gIEVYUE9SVElOR19UT19DU1ZfRklMRTogKHNhdmVwYXRoOiBzdHJpbmcpID0+XG4gICAgYEV4cG9ydGluZyB0byBjc3YgZmlsZTogJHtzYXZlcGF0aH1gLFxuICBFWFBPUlRJTkdfUkFXX0NTVl9GSUxFOiAoc2F2ZXBhdGg6IHN0cmluZykgPT5cbiAgICBgRXhwb3J0aW5nIHJhdyBjc3YgZmlsZTogJHtzYXZlcGF0aH1gLFxuICBDSEVDS0lORzogJ0NoZWNraW5nLi4uJyxcbiAgSUZfQ0hFQ0tfRkxBR1NfTUlTU0lORzpcbiAgICAnRWl0aGVyIHRoZSBgLS1tYW5pZmVzdGAgb3IgYC0tZGlyZWN0b3J5YCBjb21tYW5kIHNob3VsZCBiZSBwcm92aWRlZCB3aXRoIGEgcGF0aCcsXG4gIERJUkVDVE9SWV9OT1RfRk9VTkQ6ICdEaXJlY3Rvcnkgbm90IGZvdW5kLicsXG4gIERJUkVDVE9SWV9ZQU1MX0ZJTEVTX05PVF9GT1VORDpcbiAgICAnVGhlIGRpcmVjdG9yeSBkb2VzIG5vdCBjb250YWluIGFueSBZQU1ML1lNTCBmaWxlcy5cXG4nLFxuICBJRl9DSEVDS19FWEVDVVRJTkc6IChmaWxlbmFtZTogc3RyaW5nKSA9PiBgRXhlY3V0aW5nIFxcYCR7ZmlsZW5hbWV9XFxgYCxcbiAgSUZfQ0hFQ0tfVkVSSUZJQ0FUSU9OX0ZBSUxVUkVTOlxuICAgICctLS0tLS0tLS1cXG5pZi1jaGVjayB2ZXJpZmljYXRpb24gZmFpbHVyZXM6XFxuJyxcbiAgSUZfQ0hFQ0tfRkFJTEVEOiAoZmlsZW5hbWU6IHN0cmluZykgPT5cbiAgICBg4pyWIGlmLWNoZWNrIGNvdWxkIG5vdCB2ZXJpZnkgJHtmaWxlbmFtZX0uIFRoZSByZS1leGVjdXRlZCBmaWxlIGRvZXMgbm90IG1hdGNoIHRoZSBvcmlnaW5hbC5cXG5gLFxuICBJRl9DSEVDS19WRVJJRklFRDogKGZpbGVuYW1lOiBzdHJpbmcpID0+XG4gICAgYOKclCBpZi1jaGVjayBzdWNjZXNzZnVsbHkgdmVyaWZpZWQgJHtmaWxlbmFtZX1cXG5gLFxuICBJRl9DSEVDS19TVU1NQVJZX0VSUk9SX01FU1NBR0U6IChmaWxlbmFtZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpID0+XG4gICAgYEV4ZWN1dGluZyBcXGAke2ZpbGVuYW1lfVxcYFxcbuKcliAke21lc3NhZ2V9YCxcbiAgSUZfQ0hFQ0tfU1VNTUFSWV9MT0c6IChwYXNzZWRDb3VudDogbnVtYmVyLCB0b3RhbENvdW50OiBudW1iZXIpID0+XG4gICAgYC0tLS0tLS0tLVxcbkNoZWNrIHN1bW1hcnk6XFxuJHtwYXNzZWRDb3VudH0gb2YgJHt0b3RhbENvdW50fSBmaWxlcyBhcmUgcGFzc2VkLlxcbmAsXG4gIFpFUk9fRElWSVNJT046IChtb2R1bGVOYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgYC0tIFNLSVBQSU5HIC0tIERpdmlzaW9uQnlaZXJvOiB5b3UgYXJlIGF0dGVtcHRpbmcgdG8gZGl2aWRlIGJ5IHplcm8gaW4gJHttb2R1bGVOYW1lfSBwbHVnaW4gOiBpbnB1dHNbJHtpbmRleH1dXFxuYCxcbn07XG4iXX0=
@@ -75,12 +75,13 @@ const debugLog = (level, args, debugMode) => {
75
75
  if (level === LogLevel.Debug) {
76
76
  return;
77
77
  }
78
- const isDebugLog = logMessagesKeys.some(key => {
79
- const message = typeof strings_1.STRINGS[key] === 'function'
80
- ? strings_1.STRINGS[key].call(null, '')
81
- : strings_1.STRINGS[key];
82
- return args[0].includes(message);
83
- });
78
+ const isDebugLog = typeof args[0] === 'string' &&
79
+ logMessagesKeys.some(key => {
80
+ const message = typeof strings_1.STRINGS[key] === 'function'
81
+ ? strings_1.STRINGS[key].call(null, '')
82
+ : strings_1.STRINGS[key];
83
+ return args[0].includes(message);
84
+ });
84
85
  if (!isDebugLog) {
85
86
  originalConsole.log(...args);
86
87
  }
@@ -114,4 +115,4 @@ exports.debugLogger = {
114
115
  overrideConsoleMethods,
115
116
  setExecutingPluginName,
116
117
  };
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctbG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvZGVidWctbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUEwQztBQUUxQyxNQUFNLGVBQWUsR0FBNkI7SUFDaEQsYUFBYTtJQUNiLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIscUJBQXFCO0lBQ3JCLG9DQUFvQztJQUNwQyxvQkFBb0I7SUFDcEIsNkJBQTZCO0lBQzdCLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsMEJBQTBCO0lBQzFCLDZCQUE2QjtJQUM3QixrQ0FBa0M7SUFDbEMscUJBQXFCO0lBQ3JCLGtCQUFrQjtJQUNsQix1QkFBdUI7SUFDdkIsd0JBQXdCO0lBQ3hCLHVCQUF1QjtJQUN2Qix3QkFBd0I7Q0FDekIsQ0FBQztBQUVGLElBQUssUUFLSjtBQUxELFdBQUssUUFBUTtJQUNYLHlCQUFhLENBQUE7SUFDYix5QkFBYSxDQUFBO0lBQ2IsMkJBQWUsQ0FBQTtJQUNmLDJCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUxJLFFBQVEsS0FBUixRQUFRLFFBS1o7QUFFRCxNQUFNLGVBQWUsR0FBRztJQUN0QixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7SUFDaEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0lBQ2xCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtJQUNsQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7SUFDcEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO0NBQ3JCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxTQUFrQixFQUFFLEVBQUU7SUFDcEQsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDM0UsT0FBTyxDQUFDLElBQUks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QVEsQ0FBQyxJQUFJO2dCQUNoQixlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3ZDLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxJQUFJO2dCQUNoQixlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3ZDLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixlQUFlLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3hDLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixlQUFlLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3hDLE1BQU07U0FDVDtLQUNGO0FBQ0gsQ0FBQyxDQUFDO0FBRVcsUUFBQSxXQUFXLEdBQUc7SUFDekIsc0JBQXNCO0lBQ3RCLHNCQUFzQjtDQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuLi9jb25maWcvc3RyaW5ncyc7XG5cbmNvbnN0IGxvZ01lc3NhZ2VzS2V5czogKGtleW9mIHR5cGVvZiBTVFJJTkdTKVtdID0gW1xuICAnU1RBUlRJTkdfSUYnLFxuICAnRVhJVElOR19JRicsXG4gICdMT0FESU5HX01BTklGRVNUJyxcbiAgJ1ZBTElEQVRJTkdfTUFOSUZFU1QnLFxuICAnQ0FQVFVSSU5HX1JVTlRJTUVfRU5WSVJPTk1FTlRfREFUQScsXG4gICdTWU5DSU5HX1BBUkFNRVRFUlMnLFxuICAnQ0hFQ0tJTkdfQUdHUkVHQVRJT05fTUVUSE9EJyxcbiAgJ0lOSVRJQUxJWklOR19QTFVHSU5TJyxcbiAgJ0lOSVRJQUxJWklOR19QTFVHSU4nLFxuICAnTE9BRElOR19QTFVHSU5fRlJPTV9QQVRIJyxcbiAgJ0NPTVBVVElOR19QSVBFTElORV9GT1JfTk9ERScsXG4gICdNRVJHSU5HX0RFRkFVTFRTX1dJVEhfSU5QVVRfREFUQScsXG4gICdBR0dSRUdBVElOR19PVVRQVVRTJyxcbiAgJ0FHR1JFR0FUSU5HX05PREUnLFxuICAnUFJFUEFSSU5HX09VVFBVVF9EQVRBJyxcbiAgJ0VYUE9SVElOR19UT19ZQU1MX0ZJTEUnLFxuICAnRVhQT1JUSU5HX1RPX0NTVl9GSUxFJyxcbiAgJ0VYUE9SVElOR19SQVdfQ1NWX0ZJTEUnLFxuXTtcblxuZW51bSBMb2dMZXZlbCB7XG4gIEluZm8gPSAnSU5GTycsXG4gIFdhcm4gPSAnV0FSTicsXG4gIEVycm9yID0gJ0VSUk9SJyxcbiAgRGVidWcgPSAnREVCVUcnLFxufVxuXG5jb25zdCBvcmlnaW5hbENvbnNvbGUgPSB7XG4gIGxvZzogY29uc29sZS5sb2csXG4gIGluZm86IGNvbnNvbGUuaW5mbyxcbiAgd2FybjogY29uc29sZS53YXJuLFxuICBlcnJvcjogY29uc29sZS5lcnJvcixcbiAgZGVidWc6IGNvbnNvbGUuZGVidWcsXG59O1xuXG4vKipcbiAqIE92ZXJyaWRlcyBjb25zb2xlIG1ldGhvZHMgd2l0aCBjdXN0b20gZGVidWcgbG9nZ2luZy5cbiAqL1xuY29uc3Qgb3ZlcnJpZGVDb25zb2xlTWV0aG9kcyA9IChkZWJ1Z01vZGU6IGJvb2xlYW4pID0+IHtcbiAgY29uc29sZS5sb2cgPSAoLi4uYXJnczogYW55W10pID0+IGRlYnVnTG9nKExvZ0xldmVsLkluZm8sIGFyZ3MsIGRlYnVnTW9kZSk7XG4gIGNvbnNvbGUuaW5mbyA9ICguLi5hcmdzOiBhbnlbXSkgPT4gZGVidWdMb2coTG9nTGV2ZWwuSW5mbywgYXJncywgZGVidWdNb2RlKTtcbiAgY29uc29sZS53YXJuID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBkZWJ1Z0xvZyhMb2dMZXZlbC5XYXJuLCBhcmdzLCBkZWJ1Z01vZGUpO1xuICBjb25zb2xlLmVycm9yID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBkZWJ1Z0xvZyhMb2dMZXZlbC5FcnJvciwgYXJncywgZGVidWdNb2RlKTtcbiAgY29uc29sZS5kZWJ1ZyA9ICguLi5hcmdzOiBhbnlbXSkgPT4gZGVidWdMb2coTG9nTGV2ZWwuRGVidWcsIGFyZ3MsIGRlYnVnTW9kZSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gZW5jYXBzdWxhdGVkIG9iamVjdCB0byByZXRyaWV2ZSB0aGUgcGx1Z2luIG5hbWUuXG4gKi9cbmNvbnN0IHBsdWdpbk5hbWVNYW5hZ2VyID0gKCgpID0+IHtcbiAgbGV0IHBsdWdpbk5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuXG4gIGNvbnN0IG1hbmFnZXIgPSB7XG4gICAgZ2V0IGN1cnJlbnRQbHVnaW5OYW1lKCkge1xuICAgICAgcmV0dXJuIHBsdWdpbk5hbWU7XG4gICAgfSxcbiAgICBzZXQgY3VycmVudFBsdWdpbk5hbWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgcGx1Z2luTmFtZSA9IHZhbHVlO1xuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIG1hbmFnZXI7XG59KSgpO1xuXG4vKipcbiAqIFNldHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgcGx1Z2luLlxuICovXG5jb25zdCBzZXRFeGVjdXRpbmdQbHVnaW5OYW1lID0gKHBsdWdpbk5hbWU/OiBzdHJpbmcpID0+IHtcbiAgcGx1Z2luTmFtZU1hbmFnZXIuY3VycmVudFBsdWdpbk5hbWUgPSBwbHVnaW5OYW1lO1xufTtcblxuLyoqXG4gKiBMb2dzIG1lc3NhZ2VzIHdpdGggdGhlIHNwZWNpZmllZCBsb2cgbGV2ZWwgYW5kIGZvcm1hdC5cbiAqL1xuY29uc3QgZGVidWdMb2cgPSAobGV2ZWw6IExvZ0xldmVsLCBhcmdzOiBhbnlbXSwgZGVidWdNb2RlOiBib29sZWFuKSA9PiB7XG4gIGlmICghZGVidWdNb2RlKSB7XG4gICAgaWYgKGxldmVsID09PSBMb2dMZXZlbC5EZWJ1Zykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRGVidWdMb2cgPSBsb2dNZXNzYWdlc0tleXMuc29tZShrZXkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIHR5cGVvZiBTVFJJTkdTW2tleV0gPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IChTVFJJTkdTW2tleV0gYXMgRnVuY3Rpb24pLmNhbGwobnVsbCwgJycpXG4gICAgICAgICAgOiAoU1RSSU5HU1trZXldIGFzIHN0cmluZyk7XG5cbiAgICAgIHJldHVybiBhcmdzWzBdLmluY2x1ZGVzKG1lc3NhZ2UpO1xuICAgIH0pO1xuXG4gICAgaWYgKCFpc0RlYnVnTG9nKSB7XG4gICAgICBvcmlnaW5hbENvbnNvbGUubG9nKC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChhcmdzWzBdLmluY2x1ZGVzKCcjIHN0YXJ0JykpIHtcbiAgICBvcmlnaW5hbENvbnNvbGUubG9nKC4uLmFyZ3MpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gIGNvbnN0IHBsdWdpbiA9IHBsdWdpbk5hbWVNYW5hZ2VyLmN1cnJlbnRQbHVnaW5OYW1lO1xuICBjb25zdCBmb3JtYXR0ZWRNZXNzYWdlID0gYCR7bGV2ZWx9OiAke2RhdGV9OiAke1xuICAgIHBsdWdpbiA/IHBsdWdpbiArICc6ICcgOiAnJ1xuICB9JHthcmdzLmpvaW4oJywgJyl9YDtcblxuICBpZiAoZGVidWdNb2RlKSB7XG4gICAgc3dpdGNoIChsZXZlbCkge1xuICAgICAgY2FzZSBMb2dMZXZlbC5JbmZvOlxuICAgICAgICBvcmlnaW5hbENvbnNvbGUuaW5mbyhmb3JtYXR0ZWRNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLldhcm46XG4gICAgICAgIG9yaWdpbmFsQ29uc29sZS53YXJuKGZvcm1hdHRlZE1lc3NhZ2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTG9nTGV2ZWwuRXJyb3I6XG4gICAgICAgIG9yaWdpbmFsQ29uc29sZS5lcnJvcihmb3JtYXR0ZWRNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLkRlYnVnOlxuICAgICAgICBvcmlnaW5hbENvbnNvbGUuZGVidWcoZm9ybWF0dGVkTWVzc2FnZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRlYnVnTG9nZ2VyID0ge1xuICBvdmVycmlkZUNvbnNvbGVNZXRob2RzLFxuICBzZXRFeGVjdXRpbmdQbHVnaW5OYW1lLFxufTtcbiJdfQ==
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctbG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvZGVidWctbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUEwQztBQUUxQyxNQUFNLGVBQWUsR0FBNkI7SUFDaEQsYUFBYTtJQUNiLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIscUJBQXFCO0lBQ3JCLG9DQUFvQztJQUNwQyxvQkFBb0I7SUFDcEIsNkJBQTZCO0lBQzdCLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsMEJBQTBCO0lBQzFCLDZCQUE2QjtJQUM3QixrQ0FBa0M7SUFDbEMscUJBQXFCO0lBQ3JCLGtCQUFrQjtJQUNsQix1QkFBdUI7SUFDdkIsd0JBQXdCO0lBQ3hCLHVCQUF1QjtJQUN2Qix3QkFBd0I7Q0FDekIsQ0FBQztBQUVGLElBQUssUUFLSjtBQUxELFdBQUssUUFBUTtJQUNYLHlCQUFhLENBQUE7SUFDYix5QkFBYSxDQUFBO0lBQ2IsMkJBQWUsQ0FBQTtJQUNmLDJCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUxJLFFBQVEsS0FBUixRQUFRLFFBS1o7QUFFRCxNQUFNLGVBQWUsR0FBRztJQUN0QixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7SUFDaEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0lBQ2xCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtJQUNsQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7SUFDcEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO0NBQ3JCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxTQUFrQixFQUFFLEVBQUU7SUFDcEQsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDM0UsT0FBTyxDQUFDLElBQUks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LFNBQVMsRUFBRTtRQUNiLFFBQVEsS0FBSyxFQUFFO1lBQ2IsS0FBSyxRQUFRLENBQUMsSUFBSTtnQkFDaEIsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN2QyxNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsSUFBSTtnQkFDaEIsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN2QyxNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsS0FBSztnQkFDakIsZUFBZSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsS0FBSztnQkFDakIsZUFBZSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNO1NBQ1Q7S0FDRjtBQUNILENBQUMsQ0FBQztBQUVXLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLHNCQUFzQjtJQUN0QixzQkFBc0I7Q0FDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vY29uZmlnL3N0cmluZ3MnO1xuXG5jb25zdCBsb2dNZXNzYWdlc0tleXM6IChrZXlvZiB0eXBlb2YgU1RSSU5HUylbXSA9IFtcbiAgJ1NUQVJUSU5HX0lGJyxcbiAgJ0VYSVRJTkdfSUYnLFxuICAnTE9BRElOR19NQU5JRkVTVCcsXG4gICdWQUxJREFUSU5HX01BTklGRVNUJyxcbiAgJ0NBUFRVUklOR19SVU5USU1FX0VOVklST05NRU5UX0RBVEEnLFxuICAnU1lOQ0lOR19QQVJBTUVURVJTJyxcbiAgJ0NIRUNLSU5HX0FHR1JFR0FUSU9OX01FVEhPRCcsXG4gICdJTklUSUFMSVpJTkdfUExVR0lOUycsXG4gICdJTklUSUFMSVpJTkdfUExVR0lOJyxcbiAgJ0xPQURJTkdfUExVR0lOX0ZST01fUEFUSCcsXG4gICdDT01QVVRJTkdfUElQRUxJTkVfRk9SX05PREUnLFxuICAnTUVSR0lOR19ERUZBVUxUU19XSVRIX0lOUFVUX0RBVEEnLFxuICAnQUdHUkVHQVRJTkdfT1VUUFVUUycsXG4gICdBR0dSRUdBVElOR19OT0RFJyxcbiAgJ1BSRVBBUklOR19PVVRQVVRfREFUQScsXG4gICdFWFBPUlRJTkdfVE9fWUFNTF9GSUxFJyxcbiAgJ0VYUE9SVElOR19UT19DU1ZfRklMRScsXG4gICdFWFBPUlRJTkdfUkFXX0NTVl9GSUxFJyxcbl07XG5cbmVudW0gTG9nTGV2ZWwge1xuICBJbmZvID0gJ0lORk8nLFxuICBXYXJuID0gJ1dBUk4nLFxuICBFcnJvciA9ICdFUlJPUicsXG4gIERlYnVnID0gJ0RFQlVHJyxcbn1cblxuY29uc3Qgb3JpZ2luYWxDb25zb2xlID0ge1xuICBsb2c6IGNvbnNvbGUubG9nLFxuICBpbmZvOiBjb25zb2xlLmluZm8sXG4gIHdhcm46IGNvbnNvbGUud2FybixcbiAgZXJyb3I6IGNvbnNvbGUuZXJyb3IsXG4gIGRlYnVnOiBjb25zb2xlLmRlYnVnLFxufTtcblxuLyoqXG4gKiBPdmVycmlkZXMgY29uc29sZSBtZXRob2RzIHdpdGggY3VzdG9tIGRlYnVnIGxvZ2dpbmcuXG4gKi9cbmNvbnN0IG92ZXJyaWRlQ29uc29sZU1ldGhvZHMgPSAoZGVidWdNb2RlOiBib29sZWFuKSA9PiB7XG4gIGNvbnNvbGUubG9nID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBkZWJ1Z0xvZyhMb2dMZXZlbC5JbmZvLCBhcmdzLCBkZWJ1Z01vZGUpO1xuICBjb25zb2xlLmluZm8gPSAoLi4uYXJnczogYW55W10pID0+IGRlYnVnTG9nKExvZ0xldmVsLkluZm8sIGFyZ3MsIGRlYnVnTW9kZSk7XG4gIGNvbnNvbGUud2FybiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gZGVidWdMb2coTG9nTGV2ZWwuV2FybiwgYXJncywgZGVidWdNb2RlKTtcbiAgY29uc29sZS5lcnJvciA9ICguLi5hcmdzOiBhbnlbXSkgPT4gZGVidWdMb2coTG9nTGV2ZWwuRXJyb3IsIGFyZ3MsIGRlYnVnTW9kZSk7XG4gIGNvbnNvbGUuZGVidWcgPSAoLi4uYXJnczogYW55W10pID0+IGRlYnVnTG9nKExvZ0xldmVsLkRlYnVnLCBhcmdzLCBkZWJ1Z01vZGUpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVuY2Fwc3VsYXRlZCBvYmplY3QgdG8gcmV0cmlldmUgdGhlIHBsdWdpbiBuYW1lLlxuICovXG5jb25zdCBwbHVnaW5OYW1lTWFuYWdlciA9ICgoKSA9PiB7XG4gIGxldCBwbHVnaW5OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcblxuICBjb25zdCBtYW5hZ2VyID0ge1xuICAgIGdldCBjdXJyZW50UGx1Z2luTmFtZSgpIHtcbiAgICAgIHJldHVybiBwbHVnaW5OYW1lO1xuICAgIH0sXG4gICAgc2V0IGN1cnJlbnRQbHVnaW5OYW1lKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgIHBsdWdpbk5hbWUgPSB2YWx1ZTtcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBtYW5hZ2VyO1xufSkoKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHBsdWdpbi5cbiAqL1xuY29uc3Qgc2V0RXhlY3V0aW5nUGx1Z2luTmFtZSA9IChwbHVnaW5OYW1lPzogc3RyaW5nKSA9PiB7XG4gIHBsdWdpbk5hbWVNYW5hZ2VyLmN1cnJlbnRQbHVnaW5OYW1lID0gcGx1Z2luTmFtZTtcbn07XG5cbi8qKlxuICogTG9ncyBtZXNzYWdlcyB3aXRoIHRoZSBzcGVjaWZpZWQgbG9nIGxldmVsIGFuZCBmb3JtYXQuXG4gKi9cbmNvbnN0IGRlYnVnTG9nID0gKGxldmVsOiBMb2dMZXZlbCwgYXJnczogYW55W10sIGRlYnVnTW9kZTogYm9vbGVhbikgPT4ge1xuICBpZiAoIWRlYnVnTW9kZSkge1xuICAgIGlmIChsZXZlbCA9PT0gTG9nTGV2ZWwuRGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0RlYnVnTG9nID1cbiAgICAgIHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJyAmJlxuICAgICAgbG9nTWVzc2FnZXNLZXlzLnNvbWUoa2V5ID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgICAgdHlwZW9mIFNUUklOR1Nba2V5XSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyAoU1RSSU5HU1trZXldIGFzIEZ1bmN0aW9uKS5jYWxsKG51bGwsICcnKVxuICAgICAgICAgICAgOiAoU1RSSU5HU1trZXldIGFzIHN0cmluZyk7XG5cbiAgICAgICAgcmV0dXJuIGFyZ3NbMF0uaW5jbHVkZXMobWVzc2FnZSk7XG4gICAgICB9KTtcblxuICAgIGlmICghaXNEZWJ1Z0xvZykge1xuICAgICAgb3JpZ2luYWxDb25zb2xlLmxvZyguLi5hcmdzKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoYXJnc1swXS5pbmNsdWRlcygnIyBzdGFydCcpKSB7XG4gICAgb3JpZ2luYWxDb25zb2xlLmxvZyguLi5hcmdzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICBjb25zdCBwbHVnaW4gPSBwbHVnaW5OYW1lTWFuYWdlci5jdXJyZW50UGx1Z2luTmFtZTtcbiAgY29uc3QgZm9ybWF0dGVkTWVzc2FnZSA9IGAke2xldmVsfTogJHtkYXRlfTogJHtcbiAgICBwbHVnaW4gPyBwbHVnaW4gKyAnOiAnIDogJydcbiAgfSR7YXJncy5qb2luKCcsICcpfWA7XG5cbiAgaWYgKGRlYnVnTW9kZSkge1xuICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nTGV2ZWwuSW5mbzpcbiAgICAgICAgb3JpZ2luYWxDb25zb2xlLmluZm8oZm9ybWF0dGVkTWVzc2FnZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMb2dMZXZlbC5XYXJuOlxuICAgICAgICBvcmlnaW5hbENvbnNvbGUud2Fybihmb3JtYXR0ZWRNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLkVycm9yOlxuICAgICAgICBvcmlnaW5hbENvbnNvbGUuZXJyb3IoZm9ybWF0dGVkTWVzc2FnZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMb2dMZXZlbC5EZWJ1ZzpcbiAgICAgICAgb3JpZ2luYWxDb25zb2xlLmRlYnVnKGZvcm1hdHRlZE1lc3NhZ2UpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkZWJ1Z0xvZ2dlciA9IHtcbiAgb3ZlcnJpZGVDb25zb2xlTWV0aG9kcyxcbiAgc2V0RXhlY3V0aW5nUGx1Z2luTmFtZSxcbn07XG4iXX0=
@@ -54,4 +54,4 @@ export declare const addTemplateManifest: (destinationDir: string) => Promise<vo
54
54
  /**
55
55
  * Logs the failure message from the stdout of an error.
56
56
  */
57
- export declare const logStdoutFailMessage: (error: any, fileName: string) => void;
57
+ export declare const logStdoutFailMessage: (error: any, fileName: string) => string;
@@ -38,7 +38,7 @@ const npm_1 = require("./npm");
38
38
  const logger_1 = require("./logger");
39
39
  const { IF_ENV } = config_1.CONFIG;
40
40
  const { FAILURE_MESSAGE, FAILURE_MESSAGE_TEMPLATE, FAILURE_MESSAGE_DEPENDENCIES, } = IF_ENV;
41
- const { UNSUPPORTED_ERROR, IF_CHECK_FAILED } = config_1.STRINGS;
41
+ const { UNSUPPORTED_ERROR, IF_CHECK_FAILED, IF_CHECK_SUMMARY_ERROR_MESSAGE } = config_1.STRINGS;
42
42
  const { MissingPluginDependenciesError } = utils_1.ERRORS;
43
43
  /**
44
44
  * Impact engine error handler. Logs errors and appends issue template if error is unknown.
@@ -245,6 +245,7 @@ const logStdoutFailMessage = (error, fileName) => {
245
245
  const logs = stdout.split('\n\n');
246
246
  const failMessage = logs[logs.length - 1];
247
247
  console.log(failMessage);
248
+ return IF_CHECK_SUMMARY_ERROR_MESSAGE(fileName, failMessage);
248
249
  };
249
250
  exports.logStdoutFailMessage = logStdoutFailMessage;
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esb0NBQW9DO0FBQ3BDLHFEQUF1RDtBQUN2RCwyREFBd0M7QUFDeEMseUNBQW9DO0FBRXBDLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFFN0IsaURBQTZDO0FBRTdDLHNDQUEwQztBQUkxQyxzQ0FBaUM7QUFFakMsK0JBTWU7QUFFZixxQ0FBZ0M7QUFHaEMsTUFBTSxFQUFDLE1BQU0sRUFBQyxHQUFHLGVBQU0sQ0FBQztBQUN4QixNQUFNLEVBQ0osZUFBZSxFQUNmLHdCQUF3QixFQUN4Qiw0QkFBNEIsR0FDN0IsR0FBRyxNQUFNLENBQUM7QUFFWCxNQUFNLEVBQUMsaUJBQWlCLEVBQUUsZUFBZSxFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUNyRCxNQUFNLEVBQUMsOEJBQThCLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFFaEQ7O0dBRUc7QUFDSSxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO0lBQ3hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBTSxDQUFDLENBQUM7SUFFeEMsZUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDckMsZUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1QywyQ0FBMkM7UUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtBQUNILENBQUMsQ0FBQztBQVZXLFFBQUEsU0FBUyxhQVVwQjtBQUVGOztHQUVHO0FBQ0ksTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFhLEVB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Q0FBQyxDQUFDO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUxRCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNwRDtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDLENBQUM7QUFmVyxRQUFBLG1CQUFtQix1QkFlOUI7QUFFRjs7R0FFRztBQUNJLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFVLEVBQUUsUUFBZ0IsRUFBRSxFQUFFO0lBQ25FLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFdkMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM1QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRTFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDO0FBUlcsUUFBQSxvQkFBb0Isd0JBUS9CIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvY2Vzcy1leGl0ICovXG5pbXBvcnQge2NyZWF0ZUludGVyZmFjZX0gZnJvbSAnbm9kZTpyZWFkbGluZS9wcm9taXNlcyc7XG5pbXBvcnQge2V4ZWN9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQge3Byb21pc2lmeX0gZnJvbSAnbm9kZTp1dGlsJztcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5cbmltcG9ydCB7U1RSSU5HUywgQ09ORklHfSBmcm9tICcuLi9jb25maWcnO1xuXG5pbXBvcnQge0RpZmZlcmVuY2V9IGZyb20gJy4uL3R5cGVzL2xpYi9jb21wYXJlJztcblxuaW1wb3J0IHtsb2FkfSBmcm9tICcuLi9saWIvbG9hZCc7XG5cbmltcG9ydCB7XG4gIGluc3RhbGxEZXBlbmRlbmNpZXMsXG4gIGluaXRQYWNrYWdlSnNvbklmTm90RXhpc3RzLFxuICB1cGRhdGVQYWNrYWdlSnNvbkRlcGVuZGVuY2llcyxcbiAgZXh0cmFjdFBhdGhzV2l0aFZlcnNpb24sXG4gIHVwZGF0ZVBhY2thZ2VKc29uUHJvcGVydGllcyxcbn0gZnJvbSAnLi9ucG0nO1xuXG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHtFbnZpcm9ubWVudE9wdGlvbnN9IGZyb20gJy4uL3R5cGVzL2lmLWVudic7XG5cbmNvbnN0IHtJRl9FTlZ9ID0gQ09ORklHO1xuY29uc3Qge1xuICBGQUlMVVJFX01FU1NBR0UsXG4gIEZBSUxVUkVfTUVTU0FHRV9URU1QTEFURSxcbiAgRkFJTFVSRV9NRVNTQUdFX0RFUEVOREVOQ0lFUyxcbn0gPSBJRl9FTlY7XG5cbmNvbnN0IHtVTlNVUFBPUlRFRF9FUlJPUiwgSUZfQ0hFQ0tfRkFJTEVEfSA9IFNUUklOR1M7XG5jb25zdCB7TWlzc2luZ1BsdWdpbkRlcGVuZGVuY2llc0Vycm9yfSA9IEVSUk9SUztcblxuLyoqXG4gKiBJbXBhY3QgZW5naW5lIGVycm9yIGhhbmRsZXIuIExvZ3MgZXJyb3JzIGFuZCBhcHBlbmRzIGlzc3VlIHRlbXBsYXRlIGlmIGVycm9yIGlzIHVua25vd24uXG4gKi9cbmV4cG9ydCBjb25zdCBhbmRIYW5kbGUgPSAoZXJyb3I6IEVycm9yKSA9PiB7XG4gIGNvbnN0IGtub3duRXJyb3JzID0gT2JqZWN0LmtleXMoRVJST1JTKTtcblxuICBsb2dnZXIuZXJyb3IoZXJyb3IpO1xuXG4gIGlmICgha25vd25FcnJvcnMuaW5jbHVkZXMoZXJyb3IubmFtZSkpIHtcbiAgICBsb2dnZXIuZXJyb3IoVU5TVVBQT1JURURfRVJST1IoZXJyb3IubmFtZSkpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm9jZXNzLWV4aXRcbiAgICBwcm9jZXNzLmV4aXQoMik7XG4gIH1cbn07XG5cbi8qKlxuICogQXBwZW5kIGVudHJpZXMgZnJvbSBkZWZhdWx0cyB3aGljaCBhcmUgbWlzc2luZyBmcm9tIGlucHV0cy5cbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlT2JqZWN0cyA9IChkZWZhdWx0czogYW55LCBpbnB1dDogYW55KSA9PiB7XG4gIGNvbnN0IG1lcmdlZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHN0cnVjdHVyZWRDbG9uZShpbnB1dCk7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZGVmYXVsdHMpIHtcbiAgICBpZiAoIShrZXkgaW4gaW5wdXQpKSB7XG4gICAgICBtZXJnZWRba2V5XSA9IGRlZmF1bHRzW2tleV07XG4gICAgfVxuXG4gICAgaWYgKG1lcmdlZFtrZXldID09PSB1bmRlZmluZWQgfHwgbWVyZ2VkW2tleV0gPT09IG51bGwpIHtcbiAgICAgIG1lcmdlZFtrZXldID0gZGVmYXVsdHNba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkO1xufTtcblxuLyoqXG4gKiBQcm9taXNlIHZlcnNpb24gb2YgTm9kZSdzIGBleGVjYCBmcm9tIGBjaGlsZC1wcm9jZXNzYC5cbiAqL1xuZXhwb3J0IGNvbnN0IGV4ZWNQcm9taXNlID0gcHJvbWlzaWZ5KGV4ZWMpO1xuXG4vKipcbiAqIGBJZi1kaWZmYCBlcXVhbGl0eSBjaGVja2VyLlxuICovXG5leHBvcnQgY29uc3QgY2hlY2tJZkVxdWFsID0gKHNvdXJjZTogYW55LCB0YXJnZXQ6IGFueSkgPT4ge1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChzb3VyY2UgPT09ICcqJyB8fCB0YXJnZXQgPT09ICcqJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBnaXZlbiBgdmFsdWVgIHRvIGVpdGhlciBgMWAgb3IgYDBgLlxuICovXG5jb25zdCBjb252ZXJ0VG9Yb3JhYmxlID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IDAgPyAxIDogMDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiB2YWx1ZSA/IDEgOiAwO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID4gMCA/IDEgOiAwO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcblxuLyoqXG4gKiBJZiBvbmUgb2YgdGhlIGB2YWx1ZXNUb0NoZWNrYCB2YWx1ZXMgaXMgdW5kZWZpbmVkLCB0aGVuIHNldCBgbWlzc2luZ2AsIG90aGVyd2lzZSBgZXhpc3RzYC5cbiAqL1xuY29uc3Qgc2V0VmFsdWVzSWZNaXNzaW5nID0gKHJlc3BvbnNlOiBEaWZmZXJlbmNlKSA9PiB7XG4gIGNvbnN0IHNvdXJjZSA9IGNvbnZlcnRUb1hvcmFibGUocmVzcG9uc2Uuc291cmNlKTtcbiAgY29uc3QgdGFyZ2V0ID0gY29udmVydFRvWG9yYWJsZShyZXNwb25zZS50YXJnZXQpO1xuXG4gIGlmIChzb3VyY2UgXiB0YXJnZXQpIHtcbiAgICBbJ3NvdXJjZScsICd0YXJnZXQnXS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgIHJlc3BvbnNlW3ZhbHVlXSA9IHJlc3BvbnNlW3ZhbHVlXSA/ICdleGlzdHMnIDogJ21pc3NpbmcnO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgb2JqZWN0cyBhcmUgcHJpbWl0aXZlIHR5cGVzLlxuICovXG5leHBvcnQgY29uc3Qgb25lSXNQcmltaXRpdmUgPSAoc291cmNlOiBhbnksIHRhcmdldDogYW55KSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgaWYgKHNvdXJjZSA9PSBudWxsIHx8IHRhcmdldCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gc291cmNlICE9PSBPYmplY3Qoc291cmNlKSAmJiB0YXJnZXQgIT09IE9iamVjdCh0YXJnZXQpO1xufTtcblxuLyoqXG4gKiBGb3JtYXQgbm90IG1hdGNoaW5nIG1lc3NhZ2UgZm9yIENMSSBsb2dnaW5nLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0Tm90TWF0Y2hpbmdMb2cgPSAobWVzc2FnZTogRGlmZmVyZW5jZSkgPT4ge1xuICBjb25zdCBmbGF0dGVuTWVzc2FnZSA9IHNldFZhbHVlc0lmTWlzc2luZyhtZXNzYWdlKTtcblxuICBPYmplY3Qua2V5cyhmbGF0dGVuTWVzc2FnZSkuZm9yRWFjaChrZXkgPT4ge1xuICAgIGlmIChrZXkgPT09ICdtZXNzYWdlJyB8fCBrZXkgPT09ICdwYXRoJykge1xuICAgICAgY29uc29sZS5sb2cobWVzc2FnZVtrZXldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYCR7a2V5fTogJHttZXNzYWdlW2tleV19YCk7XG4gICAgfVxuICB9KTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZXJlIGlzIGRhdGEgcGlwZWQsIHRoZW4gY29sbGVjdHMgaXQuXG4gKiBPdGhlcndpc2UgcmV0dXJucyBlbXB0eSBzdHJpbmcuXG4gKi9cbmNvbnN0IGNvbGxlY3RQaXBlZERhdGEgPSBhc3luYyAoKSA9PiB7XG4gIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgcmVhZGxpbmUgPSBjcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICB9KTtcblxuICBjb25zdCBkYXRhOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciBhd2FpdCAoY29uc3QgbGluZSBvZiByZWFkbGluZSkge1xuICAgIGRhdGEucHVzaChsaW5lKTtcbiAgfVxuXG4gIHJldHVybiBkYXRhLmpvaW4oJ1xcbicpO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlcmUgaXMgcGlwZWQgZGF0YSwgdHJpZXMgdG8gcGFyc2UgeWFtbCBmcm9tIGl0LlxuICogUmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgaGF2ZW4ndCBmb3VuZCBhbnl0aGluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlTWFuaWZlc3RGcm9tU3RkaW4gPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHBpcGVkU291cmNlTWFuaWZlc3QgPSBhd2FpdCBjb2xsZWN0UGlwZWREYXRhKCk7XG5cbiAgaWYgKCFwaXBlZFNvdXJjZU1hbmlmZXN0KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgcmVnZXggPSAvIyBzdGFydCgoPzouKlxcbikrPykjIGVuZC87XG4gIGNvbnN0IG1hdGNoID0gcmVnZXguZXhlYyhwaXBlZFNvdXJjZU1hbmlmZXN0KTtcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoIVsxXTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgZm9sZGVyIHBhdGggb2YgdGhlIG1hbmlmZXN0IGZpbGUsIGRlcGVuZGVuY2llcyBmcm9tIG1hbmlmZXN0IGZpbGUgYW5kIGluc3RhbGwgYXJndW1lbnQgZnJvbSB0aGUgZ2l2ZW4gYXJndW1lbnRzLlxuICovXG5leHBvcnQgY29uc3QgZ2V0T3B0aW9uc0Zyb21BcmdzID0gYXN5bmMgKGNvbW1hbmRBcmdzOiB7XG4gIG1hbmlmZXN0OiBzdHJpbmc7XG4gIGluc3RhbGw6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59KSA9PiB7XG4gIGNvbnN0IHttYW5pZmVzdCwgaW5zdGFsbH0gPSBjb21tYW5kQXJncztcbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhdGguZGlybmFtZShtYW5pZmVzdCk7XG4gIGNvbnN0IGxvYWRlZE1hbmlmZXN0ID0gYXdhaXQgbG9hZChtYW5pZmVzdCk7XG4gIGNvbnN0IHJhd01hbmlmZXN0ID0gbG9hZGVkTWFuaWZlc3QucmF3TWFuaWZlc3Q7XG4gIGNvbnN0IHBsdWdpbnMgPSByYXdNYW5pZmVzdD8uaW5pdGlhbGl6ZT8ucGx1Z2lucyB8fCB7fTtcbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmF3TWFuaWZlc3Q/LmV4ZWN1dGlvbj8uZW52aXJvbm1lbnQuZGVwZW5kZW5jaWVzIHx8IFtdO1xuXG4gIGlmICghZGVwZW5kZW5jaWVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBNaXNzaW5nUGx1Z2luRGVwZW5kZW5jaWVzRXJyb3IoRkFJTFVSRV9NRVNTQUdFX0RFUEVOREVOQ0lFUyk7XG4gIH1cblxuICBjb25zdCBwYXRoc1dpdGhWZXJzaW9uID0gZXh0cmFjdFBhdGhzV2l0aFZlcnNpb24ocGx1Z2lucywgZGVwZW5kZW5jaWVzKTtcblxuICByZXR1cm4ge1xuICAgIGZvbGRlclBhdGgsXG4gICAgZGVwZW5kZW5jaWVzOiBwYXRoc1dpdGhWZXJzaW9uLFxuICAgIGluc3RhbGwsXG4gIH07XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgZm9sZGVyIGlmIG5vdCBleGlzdHMsIGluc3RhbGxzIGRlcGVuZGVuY2llcyBpZiByZXF1aXJlZCwgdXBkYXRlIGRlcGVuZWRlbmNpZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBpbml0aWFsaXplQW5kSW5zdGFsbExpYnMgPSBhc3luYyAob3B0aW9uczogRW52aXJvbm1lbnRPcHRpb25zKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qge2ZvbGRlclBhdGgsIGluc3RhbGwsIGN3ZCwgZGVwZW5kZW5jaWVzfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gYXdhaXQgaW5pdFBhY2thZ2VKc29uSWZOb3RFeGlzdHMoZm9sZGVyUGF0aCk7XG5cbiAgICBhd2FpdCB1cGRhdGVQYWNrYWdlSnNvblByb3BlcnRpZXMocGFja2FnZUpzb25QYXRoLCBjd2QpO1xuXG4gICAgaWYgKGluc3RhbGwpIHtcbiAgICAgIGF3YWl0IGluc3RhbGxEZXBlbmRlbmNpZXMoZm9sZGVyUGF0aCwgZGVwZW5kZW5jaWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdXBkYXRlUGFja2FnZUpzb25EZXBlbmRlbmNpZXMocGFja2FnZUpzb25QYXRoLCBkZXBlbmRlbmNpZXMsIGN3ZCk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUubG9nKEZBSUxVUkVfTUVTU0FHRSk7XG4gICAgcHJvY2Vzcy5leGl0KDIpO1xuICB9XG59O1xuXG4vKipcbiAqIEFkZHMgYSBtYW5pZmVzdCB0ZW1wbGF0ZSB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBpZi1lbnYgQ0xJIGNvbW1hbmQgcnVucy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFkZFRlbXBsYXRlTWFuaWZlc3QgPSBhc3luYyAoZGVzdGluYXRpb25EaXI6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHRlbXBsYXRlTWFuaWZlc3QgPSBwYXRoLnJlc29sdmUoXG4gICAgICBfX2Rpcm5hbWUsXG4gICAgICAnLi4vY29uZmlnL2Vudi10ZW1wbGF0ZS55bWwnXG4gICAgKTtcblxuICAgIGNvbnN0IGRlc3RpbmF0aW9uUGF0aCA9IHBhdGgucmVzb2x2ZShkZXN0aW5hdGlvbkRpciwgJ21hbmlmZXN0LnltbCcpO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmcy5yZWFkRmlsZSh0ZW1wbGF0ZU1hbmlmZXN0LCAndXRmLTgnKTtcblxuICAgIGF3YWl0IGZzLndyaXRlRmlsZShkZXN0aW5hdGlvblBhdGgsIGRhdGEsICd1dGYtOCcpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUubG9nKEZBSUxVUkVfTUVTU0FHRV9URU1QTEFURSk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG59O1xuXG4vKipcbiAqIExvZ3MgdGhlIGZhaWx1cmUgbWVzc2FnZSBmcm9tIHRoZSBzdGRvdXQgb2YgYW4gZXJyb3IuXG4gKi9cbmV4cG9ydCBjb25zdCBsb2dTdGRvdXRGYWlsTWVzc2FnZSA9IChlcnJvcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnNvbGUubG9nKElGX0NIRUNLX0ZBSUxFRChmaWxlTmFtZSkpO1xuXG4gIGNvbnN0IHN0ZG91dCA9IGVycm9yLnN0ZG91dDtcbiAgY29uc3QgbG9ncyA9IHN0ZG91dC5zcGxpdCgnXFxuXFxuJyk7XG4gIGNvbnN0IGZhaWxNZXNzYWdlID0gbG9nc1tsb2dzLmxlbmd0aCAtIDFdO1xuXG4gIGNvbnNvbGUubG9nKGZhaWxNZXNzYWdlKTtcbn07XG4iXX0=
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esb0NBQW9DO0FBQ3BDLHFEQUF1RDtBQUN2RCwyREFBd0M7QUFDeEMseUNBQW9DO0FBRXBDLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFFN0IsaURBQTZDO0FBRTdDLHNDQUEwQztBQUkxQyxzQ0FBaUM7QUFFakMsK0JBTWU7QUFFZixxQ0FBZ0M7QUFHaEMsTUFBTSxFQUFDLE1BQU0sRUFBQyxHQUFHLGVBQU0sQ0FBQztBQUN4QixNQUFNLEVBQ0osZUFBZSxFQUNmLHdCQUF3QixFQUN4Qiw0QkFBNEIsR0FDN0IsR0FBRyxNQUFNLENBQUM7QUFFWCxNQUFNLEVBQUMsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLDhCQUE4QixFQUFDLEdBQ3hFLGdCQUFPLENBQUM7QUFDVixNQUFNLEVBQUMsOEJBQThCLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFFaEQ7O0dBRUc7QUFDSSxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO0lBQ3hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBTSxDQUFDLENBQUM7SUFFeEMsZUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDckMsZUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1QywyQ0FBMkM7UUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtBQUNILENBQUMsQ0FBQztBQVZXLFFBQUEsU0FBUyxhQVVwQjtBQUVGOztHQUVHO0FBQ0ksTUFBTSxZQUFZLEdBQUcs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YyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUxRCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNwRDtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDLENBQUM7QUFmVyxRQUFBLG1CQUFtQix1QkFlOUI7QUFFRjs7R0FFRztBQUNJLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFVLEVBQUUsUUFBZ0IsRUFBRSxFQUFFO0lBQ25FLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFdkMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM1QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRTFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekIsT0FBTyw4QkFBOEIsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDO0FBVFcsUUFBQSxvQkFBb0Isd0JBUy9CIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvY2Vzcy1leGl0ICovXG5pbXBvcnQge2NyZWF0ZUludGVyZmFjZX0gZnJvbSAnbm9kZTpyZWFkbGluZS9wcm9taXNlcyc7XG5pbXBvcnQge2V4ZWN9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQge3Byb21pc2lmeX0gZnJvbSAnbm9kZTp1dGlsJztcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5cbmltcG9ydCB7U1RSSU5HUywgQ09ORklHfSBmcm9tICcuLi9jb25maWcnO1xuXG5pbXBvcnQge0RpZmZlcmVuY2V9IGZyb20gJy4uL3R5cGVzL2xpYi9jb21wYXJlJztcblxuaW1wb3J0IHtsb2FkfSBmcm9tICcuLi9saWIvbG9hZCc7XG5cbmltcG9ydCB7XG4gIGluc3RhbGxEZXBlbmRlbmNpZXMsXG4gIGluaXRQYWNrYWdlSnNvbklmTm90RXhpc3RzLFxuICB1cGRhdGVQYWNrYWdlSnNvbkRlcGVuZGVuY2llcyxcbiAgZXh0cmFjdFBhdGhzV2l0aFZlcnNpb24sXG4gIHVwZGF0ZVBhY2thZ2VKc29uUHJvcGVydGllcyxcbn0gZnJvbSAnLi9ucG0nO1xuXG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHtFbnZpcm9ubWVudE9wdGlvbnN9IGZyb20gJy4uL3R5cGVzL2lmLWVudic7XG5cbmNvbnN0IHtJRl9FTlZ9ID0gQ09ORklHO1xuY29uc3Qge1xuICBGQUlMVVJFX01FU1NBR0UsXG4gIEZBSUxVUkVfTUVTU0FHRV9URU1QTEFURSxcbiAgRkFJTFVSRV9NRVNTQUdFX0RFUEVOREVOQ0lFUyxcbn0gPSBJRl9FTlY7XG5cbmNvbnN0IHtVTlNVUFBPUlRFRF9FUlJPUiwgSUZfQ0hFQ0tfRkFJTEVELCBJRl9DSEVDS19TVU1NQVJZX0VSUk9SX01FU1NBR0V9ID1cbiAgU1RSSU5HUztcbmNvbnN0IHtNaXNzaW5nUGx1Z2luRGVwZW5kZW5jaWVzRXJyb3J9ID0gRVJST1JTO1xuXG4vKipcbiAqIEltcGFjdCBlbmdpbmUgZXJyb3IgaGFuZGxlci4gTG9ncyBlcnJvcnMgYW5kIGFwcGVuZHMgaXNzdWUgdGVtcGxhdGUgaWYgZXJyb3IgaXMgdW5rbm93bi5cbiAqL1xuZXhwb3J0IGNvbnN0IGFuZEhhbmRsZSA9IChlcnJvcjogRXJyb3IpID0+IHtcbiAgY29uc3Qga25vd25FcnJvcnMgPSBPYmplY3Qua2V5cyhFUlJPUlMpO1xuXG4gIGxvZ2dlci5lcnJvcihlcnJvcik7XG5cbiAgaWYgKCFrbm93bkVycm9ycy5pbmNsdWRlcyhlcnJvci5uYW1lKSkge1xuICAgIGxvZ2dlci5lcnJvcihVTlNVUFBPUlRFRF9FUlJPUihlcnJvci5uYW1lKSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb2Nlc3MtZXhpdFxuICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgfVxufTtcblxuLyoqXG4gKiBBcHBlbmQgZW50cmllcyBmcm9tIGRlZmF1bHRzIHdoaWNoIGFyZSBtaXNzaW5nIGZyb20gaW5wdXRzLlxuICovXG5leHBvcnQgY29uc3QgbWVyZ2VPYmplY3RzID0gKGRlZmF1bHRzOiBhbnksIGlucHV0OiBhbnkpID0+IHtcbiAgY29uc3QgbWVyZ2VkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gc3RydWN0dXJlZENsb25lKGlucHV0KTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBkZWZhdWx0cykge1xuICAgIGlmICghKGtleSBpbiBpbnB1dCkpIHtcbiAgICAgIG1lcmdlZFtrZXldID0gZGVmYXVsdHNba2V5XTtcbiAgICB9XG5cbiAgICBpZiAobWVyZ2VkW2tleV0gPT09IHVuZGVmaW5lZCB8fCBtZXJnZWRba2V5XSA9PT0gbnVsbCkge1xuICAgICAgbWVyZ2VkW2tleV0gPSBkZWZhdWx0c1trZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59O1xuXG4vKipcbiAqIFByb21pc2UgdmVyc2lvbiBvZiBOb2RlJ3MgYGV4ZWNgIGZyb20gYGNoaWxkLXByb2Nlc3NgLlxuICovXG5leHBvcnQgY29uc3QgZXhlY1Byb21pc2UgPSBwcm9taXNpZnkoZXhlYyk7XG5cbi8qKlxuICogYElmLWRpZmZgIGVxdWFsaXR5IGNoZWNrZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja0lmRXF1YWwgPSAoc291cmNlOiBhbnksIHRhcmdldDogYW55KSA9PiB7XG4gIGlmIChzb3VyY2UgPT09IHRhcmdldCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHNvdXJjZSA9PT0gJyonIHx8IHRhcmdldCA9PT0gJyonKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGdpdmVuIGB2YWx1ZWAgdG8gZWl0aGVyIGAxYCBvciBgMGAuXG4gKi9cbmNvbnN0IGNvbnZlcnRUb1hvcmFibGUgPSAodmFsdWU6IGFueSkgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gMCA/IDEgOiAwO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIHZhbHVlID8gMSA6IDA7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAwID8gMSA6IDA7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59O1xuXG4vKipcbiAqIElmIG9uZSBvZiB0aGUgYHZhbHVlc1RvQ2hlY2tgIHZhbHVlcyBpcyB1bmRlZmluZWQsIHRoZW4gc2V0IGBtaXNzaW5nYCwgb3RoZXJ3aXNlIGBleGlzdHNgLlxuICovXG5jb25zdCBzZXRWYWx1ZXNJZk1pc3NpbmcgPSAocmVzcG9uc2U6IERpZmZlcmVuY2UpID0+IHtcbiAgY29uc3Qgc291cmNlID0gY29udmVydFRvWG9yYWJsZShyZXNwb25zZS5zb3VyY2UpO1xuICBjb25zdCB0YXJnZXQgPSBjb252ZXJ0VG9Yb3JhYmxlKHJlc3BvbnNlLnRhcmdldCk7XG5cbiAgaWYgKHNvdXJjZSBeIHRhcmdldCkge1xuICAgIFsnc291cmNlJywgJ3RhcmdldCddLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgcmVzcG9uc2VbdmFsdWVdID0gcmVzcG9uc2VbdmFsdWVdID8gJ2V4aXN0cycgOiAnbWlzc2luZyc7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBvYmplY3RzIGFyZSBwcmltaXRpdmUgdHlwZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBvbmVJc1ByaW1pdGl2ZSA9IChzb3VyY2U6IGFueSwgdGFyZ2V0OiBhbnkpID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuICBpZiAoc291cmNlID09IG51bGwgfHwgdGFyZ2V0ID09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBzb3VyY2UgIT09IE9iamVjdChzb3VyY2UpICYmIHRhcmdldCAhPT0gT2JqZWN0KHRhcmdldCk7XG59O1xuXG4vKipcbiAqIEZvcm1hdCBub3QgbWF0Y2hpbmcgbWVzc2FnZSBmb3IgQ0xJIGxvZ2dpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXROb3RNYXRjaGluZ0xvZyA9IChtZXNzYWdlOiBEaWZmZXJlbmNlKSA9PiB7XG4gIGNvbnN0IGZsYXR0ZW5NZXNzYWdlID0gc2V0VmFsdWVzSWZNaXNzaW5nKG1lc3NhZ2UpO1xuXG4gIE9iamVjdC5rZXlzKGZsYXR0ZW5NZXNzYWdlKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgaWYgKGtleSA9PT0gJ21lc3NhZ2UnIHx8IGtleSA9PT0gJ3BhdGgnKSB7XG4gICAgICBjb25zb2xlLmxvZyhtZXNzYWdlW2tleV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtrZXl9OiAke21lc3NhZ2Vba2V5XX1gKTtcbiAgICB9XG4gIH0pO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlcmUgaXMgZGF0YSBwaXBlZCwgdGhlbiBjb2xsZWN0cyBpdC5cbiAqIE90aGVyd2lzZSByZXR1cm5zIGVtcHR5IHN0cmluZy5cbiAqL1xuY29uc3QgY29sbGVjdFBpcGVkRGF0YSA9IGFzeW5jICgpID0+IHtcbiAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCByZWFkbGluZSA9IGNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gIH0pO1xuXG4gIGNvbnN0IGRhdGE6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIGF3YWl0IChjb25zdCBsaW5lIG9mIHJlYWRsaW5lKSB7XG4gICAgZGF0YS5wdXNoKGxpbmUpO1xuICB9XG5cbiAgcmV0dXJuIGRhdGEuam9pbignXFxuJyk7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGVyZSBpcyBwaXBlZCBkYXRhLCB0cmllcyB0byBwYXJzZSB5YW1sIGZyb20gaXQuXG4gKiBSZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBoYXZlbid0IGZvdW5kIGFueXRoaW5nLlxuICovXG5leHBvcnQgY29uc3QgcGFyc2VNYW5pZmVzdEZyb21TdGRpbiA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgcGlwZWRTb3VyY2VNYW5pZmVzdCA9IGF3YWl0IGNvbGxlY3RQaXBlZERhdGEoKTtcblxuICBpZiAoIXBpcGVkU291cmNlTWFuaWZlc3QpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCByZWdleCA9IC8jIHN0YXJ0KCg/Oi4qXFxuKSs/KSMgZW5kLztcbiAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKHBpcGVkU291cmNlTWFuaWZlc3QpO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZXR1cm4gbWF0Y2ghWzFdO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBmb2xkZXIgcGF0aCBvZiB0aGUgbWFuaWZlc3QgZmlsZSwgZGVwZW5kZW5jaWVzIGZyb20gbWFuaWZlc3QgZmlsZSBhbmQgaW5zdGFsbCBhcmd1bWVudCBmcm9tIHRoZSBnaXZlbiBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRPcHRpb25zRnJvbUFyZ3MgPSBhc3luYyAoY29tbWFuZEFyZ3M6IHtcbiAgbWFuaWZlc3Q6IHN0cmluZztcbiAgaW5zdGFsbDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn0pID0+IHtcbiAgY29uc3Qge21hbmlmZXN0LCBpbnN0YWxsfSA9IGNvbW1hbmRBcmdzO1xuICBjb25zdCBmb2xkZXJQYXRoID0gcGF0aC5kaXJuYW1lKG1hbmlmZXN0KTtcbiAgY29uc3QgbG9hZGVkTWFuaWZlc3QgPSBhd2FpdCBsb2FkKG1hbmlmZXN0KTtcbiAgY29uc3QgcmF3TWFuaWZlc3QgPSBsb2FkZWRNYW5pZmVzdC5yYXdNYW5pZmVzdDtcbiAgY29uc3QgcGx1Z2lucyA9IHJhd01hbmlmZXN0Py5pbml0aWFsaXplPy5wbHVnaW5zIHx8IHt9O1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSByYXdNYW5pZmVzdD8uZXhlY3V0aW9uPy5lbnZpcm9ubWVudC5kZXBlbmRlbmNpZXMgfHwgW107XG5cbiAgaWYgKCFkZXBlbmRlbmNpZXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IE1pc3NpbmdQbHVnaW5EZXBlbmRlbmNpZXNFcnJvcihGQUlMVVJFX01FU1NBR0VfREVQRU5ERU5DSUVTKTtcbiAgfVxuXG4gIGNvbnN0IHBhdGhzV2l0aFZlcnNpb24gPSBleHRyYWN0UGF0aHNXaXRoVmVyc2lvbihwbHVnaW5zLCBkZXBlbmRlbmNpZXMpO1xuXG4gIHJldHVybiB7XG4gICAgZm9sZGVyUGF0aCxcbiAgICBkZXBlbmRlbmNpZXM6IHBhdGhzV2l0aFZlcnNpb24sXG4gICAgaW5zdGFsbCxcbiAgfTtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBmb2xkZXIgaWYgbm90IGV4aXN0cywgaW5zdGFsbHMgZGVwZW5kZW5jaWVzIGlmIHJlcXVpcmVkLCB1cGRhdGUgZGVwZW5lZGVuY2llcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGluaXRpYWxpemVBbmRJbnN0YWxsTGlicyA9IGFzeW5jIChvcHRpb25zOiBFbnZpcm9ubWVudE9wdGlvbnMpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7Zm9sZGVyUGF0aCwgaW5zdGFsbCwgY3dkLCBkZXBlbmRlbmNpZXN9ID0gb3B0aW9ucztcbiAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBhd2FpdCBpbml0UGFja2FnZUpzb25JZk5vdEV4aXN0cyhmb2xkZXJQYXRoKTtcblxuICAgIGF3YWl0IHVwZGF0ZVBhY2thZ2VKc29uUHJvcGVydGllcyhwYWNrYWdlSnNvblBhdGgsIGN3ZCk7XG5cbiAgICBpZiAoaW5zdGFsbCkge1xuICAgICAgYXdhaXQgaW5zdGFsbERlcGVuZGVuY2llcyhmb2xkZXJQYXRoLCBkZXBlbmRlbmNpZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB1cGRhdGVQYWNrYWdlSnNvbkRlcGVuZGVuY2llcyhwYWNrYWdlSnNvblBhdGgsIGRlcGVuZGVuY2llcywgY3dkKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5sb2coRkFJTFVSRV9NRVNTQUdFKTtcbiAgICBwcm9jZXNzLmV4aXQoMik7XG4gIH1cbn07XG5cbi8qKlxuICogQWRkcyBhIG1hbmlmZXN0IHRlbXBsYXRlIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIGlmLWVudiBDTEkgY29tbWFuZCBydW5zLlxuICovXG5leHBvcnQgY29uc3QgYWRkVGVtcGxhdGVNYW5pZmVzdCA9IGFzeW5jIChkZXN0aW5hdGlvbkRpcjogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdGVtcGxhdGVNYW5pZmVzdCA9IHBhdGgucmVzb2x2ZShcbiAgICAgIF9fZGlybmFtZSxcbiAgICAgICcuLi9jb25maWcvZW52LXRlbXBsYXRlLnltbCdcbiAgICApO1xuXG4gICAgY29uc3QgZGVzdGluYXRpb25QYXRoID0gcGF0aC5yZXNvbHZlKGRlc3RpbmF0aW9uRGlyLCAnbWFuaWZlc3QueW1sJyk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZzLnJlYWRGaWxlKHRlbXBsYXRlTWFuaWZlc3QsICd1dGYtOCcpO1xuXG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGRlc3RpbmF0aW9uUGF0aCwgZGF0YSwgJ3V0Zi04Jyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5sb2coRkFJTFVSRV9NRVNTQUdFX1RFTVBMQVRFKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn07XG5cbi8qKlxuICogTG9ncyB0aGUgZmFpbHVyZSBtZXNzYWdlIGZyb20gdGhlIHN0ZG91dCBvZiBhbiBlcnJvci5cbiAqL1xuZXhwb3J0IGNvbnN0IGxvZ1N0ZG91dEZhaWxNZXNzYWdlID0gKGVycm9yOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgY29uc29sZS5sb2coSUZfQ0hFQ0tfRkFJTEVEKGZpbGVOYW1lKSk7XG5cbiAgY29uc3Qgc3Rkb3V0ID0gZXJyb3Iuc3Rkb3V0O1xuICBjb25zdCBsb2dzID0gc3Rkb3V0LnNwbGl0KCdcXG5cXG4nKTtcbiAgY29uc3QgZmFpbE1lc3NhZ2UgPSBsb2dzW2xvZ3MubGVuZ3RoIC0gMV07XG5cbiAgY29uc29sZS5sb2coZmFpbE1lc3NhZ2UpO1xuICByZXR1cm4gSUZfQ0hFQ0tfU1VNTUFSWV9FUlJPUl9NRVNTQUdFKGZpbGVOYW1lLCBmYWlsTWVzc2FnZSk7XG59O1xuIl19
@@ -0,0 +1,27 @@
1
+ name: cloud-metadata
2
+ description: failure with invalid `inputs.cloud/vendor`
3
+ tags:
4
+ initialize:
5
+ # outputs: ['yaml']
6
+ plugins:
7
+ cloud-metadata:
8
+ path: builtin
9
+ method: CSVLookup
10
+ global-config:
11
+ filepath: >-
12
+ https://raw.githubusercontent.com/Green-Software-Foundation/if-data/main/cloud-metdata-aws-instances.csv
13
+ query:
14
+ instance-class: cloud/instance-type
15
+ output: ['cpu-cores-utilized', 'vcpus-allocated']
16
+ tree:
17
+ children:
18
+ child:
19
+ pipeline:
20
+ - cloud-metadata
21
+ config:
22
+ inputs:
23
+ - timestamp: 2023-07-06T00:00 # [KEYWORD] [NO-SUBFIELDS] time when measurement occurred
24
+ cloud/vendor: gcp
25
+ cloud/instance-type: m5n.large
26
+ duration: 100
27
+ cpu/utilization: 10
@@ -2,8 +2,7 @@ name: csv-lookup-demo
2
2
  description:
3
3
  tags:
4
4
  initialize:
5
- # outputs:
6
- # - yaml
5
+ # outputs: [yaml]
7
6
  plugins:
8
7
  cloud-metadata:
9
8
  method: CSVLookup
@@ -2,8 +2,7 @@ name: csv-lookup-demo
2
2
  description:
3
3
  tags:
4
4
  initialize:
5
- # outputs:
6
- # - yaml
5
+ # outputs: [yaml]
7
6
  plugins:
8
7
  cloud-metadata:
9
8
  method: CSVLookup
@@ -2,8 +2,7 @@ name: csv-lookup-demo
2
2
  description:
3
3
  tags:
4
4
  initialize:
5
- # outputs:
6
- # - yaml
5
+ # outputs: [yaml]
7
6
  plugins:
8
7
  cloud-metadata:
9
8
  method: CSVLookup
@@ -2,8 +2,7 @@ name: csv-lookup-demo
2
2
  description:
3
3
  tags:
4
4
  initialize:
5
- # outputs:
6
- # - yaml
5
+ # outputs: [yaml]
7
6
  plugins:
8
7
  cloud-metadata:
9
8
  method: CSVLookup
@@ -2,8 +2,7 @@ name: exponent demo
2
2
  description:
3
3
  tags:
4
4
  initialize:
5
- # outputs:
6
- # - yaml
5
+ # outputs: [yaml]
7
6
  plugins:
8
7
  exponent:
9
8
  method: Exponent
@@ -1,7 +1,7 @@
1
1
  name: groupby
2
2
  description: successful path
3
3
  initialize:
4
- outputs: ['yaml']
4
+ # outputs: ['yaml']
5
5
  plugins:
6
6
  group-by:
7
7
  path: "builtin"
@@ -12,7 +12,6 @@ initialize:
12
12
  y: [0.12, 0.32, 0.75, 1.02]
13
13
  input-parameter: "cpu/utilization"
14
14
  output-parameter: "result"
15
-
16
15
  tree:
17
16
  children:
18
17
  child:
@@ -2,8 +2,7 @@ name: subtract demo
2
2
  description:
3
3
  tags:
4
4
  initialize:
5
- outputs:
6
- - yaml
5
+ # outputs: ['yaml']
7
6
  plugins:
8
7
  subtract:
9
8
  method: Subtract
@@ -2,6 +2,7 @@ name: generics
2
2
  description: a pipeline that does arbitrary calculations using our generic arithmetic builtins
3
3
  tags:
4
4
  initialize:
5
+ # outputs: [yaml]
5
6
  plugins:
6
7
  "interpolate":
7
8
  method: Interpolation
@@ -1,6 +1,6 @@
1
1
  name: csv-demo
2
- description:
3
- tags:
2
+ description: null
3
+ tags: null
4
4
  initialize:
5
5
  plugins:
6
6
  cloud-instance-metadata:
@@ -19,8 +19,8 @@ initialize:
19
19
  parameter: cpu-model-name
20
20
  match: /^([^,])+/g
21
21
  output: cpu/name
22
- # outputs:
23
- # - yaml
22
+ outputs:
23
+ - yaml
24
24
  tree:
25
25
  children:
26
26
  child:
@@ -182,4 +182,4 @@ tree:
182
182
  cpu/utilization: 33
183
183
  cloud/instance-type: A1
184
184
  cloud/region: uk-west
185
- requests: 180
185
+ requests: 180