testcafe 1.20.2-alpha.1 → 2.0.0-rc.3

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 (231) hide show
  1. package/lib/api/request-hooks/assert-type.js +2 -2
  2. package/lib/api/request-hooks/hook.js +2 -2
  3. package/lib/api/request-hooks/request-logger.js +2 -2
  4. package/lib/api/skip-js-errors/index.js +62 -0
  5. package/lib/api/structure/base-unit.js +2 -2
  6. package/lib/api/structure/fixture.js +13 -13
  7. package/lib/api/structure/test.js +18 -17
  8. package/lib/api/structure/testing-unit.js +26 -16
  9. package/lib/api/test-controller/assertion.js +5 -5
  10. package/lib/api/test-controller/execution-context.js +2 -2
  11. package/lib/api/test-controller/index.js +33 -30
  12. package/lib/api/test-controller/proxy.js +2 -2
  13. package/lib/api/test-page-url.js +4 -4
  14. package/lib/api/test-run-tracker.js +2 -2
  15. package/lib/api/wrap-test-function.js +3 -3
  16. package/lib/assertions/executor.js +4 -4
  17. package/lib/assertions/get-fn.js +3 -3
  18. package/lib/browser/connection/gateway.js +18 -18
  19. package/lib/browser/connection/get-hints.js +8 -8
  20. package/lib/browser/connection/index.js +11 -11
  21. package/lib/browser/connection/remotes-queue.js +4 -4
  22. package/lib/browser/provider/built-in/dedicated/base.js +6 -6
  23. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +10 -10
  24. package/lib/browser/provider/built-in/dedicated/chrome/config.js +17 -17
  25. package/lib/browser/provider/built-in/dedicated/chrome/create-temp-profile.js +4 -4
  26. package/lib/browser/provider/built-in/dedicated/chrome/index.js +6 -6
  27. package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +6 -6
  28. package/lib/browser/provider/built-in/dedicated/chrome/runtime-info.js +4 -4
  29. package/lib/browser/provider/built-in/dedicated/edge/runtime-info.js +2 -2
  30. package/lib/browser/provider/built-in/dedicated/firefox/config.js +8 -8
  31. package/lib/browser/provider/built-in/dedicated/firefox/create-temp-profile.js +3 -3
  32. package/lib/browser/provider/built-in/dedicated/firefox/index.js +5 -5
  33. package/lib/browser/provider/built-in/dedicated/firefox/local-firefox.js +2 -2
  34. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +7 -7
  35. package/lib/browser/provider/built-in/dedicated/firefox/runtime-info.js +3 -3
  36. package/lib/browser/provider/built-in/path.js +2 -2
  37. package/lib/browser/provider/built-in/remote.js +3 -3
  38. package/lib/browser/provider/index.js +5 -5
  39. package/lib/browser/provider/plugin-host.js +5 -6
  40. package/lib/browser/provider/pool.js +4 -4
  41. package/lib/browser/provider/utils/argument-parsing.js +3 -3
  42. package/lib/browser/provider/utils/browser-starter.js +2 -2
  43. package/lib/cli/argument-parser/index.js +52 -41
  44. package/lib/cli/argument-parser/parse-utils.js +2 -2
  45. package/lib/cli/authentication-helper.js +3 -3
  46. package/lib/cli/cli.js +8 -8
  47. package/lib/cli/correct-browsers-and-sources.js +2 -2
  48. package/lib/cli/index.js +2 -2
  49. package/lib/cli/log.js +3 -3
  50. package/lib/cli/remotes-wizard.js +3 -3
  51. package/lib/client/automation/index.js +120 -34
  52. package/lib/client/automation/index.min.js +1 -1
  53. package/lib/client/browser/idle-page/index.js +321 -317
  54. package/lib/client/browser/service-worker.js +244 -290
  55. package/lib/client/core/deps/hammerhead.js +12 -4
  56. package/lib/client/core/index.js +145 -55
  57. package/lib/client/core/index.min.js +1 -1
  58. package/lib/client/core/utils/dom.js +33 -28
  59. package/lib/client/core/utils/position.js +18 -14
  60. package/lib/client/core/utils/style.js +8 -4
  61. package/lib/client/driver/command-executors/client-functions/selector-executor/filter.js +5 -5
  62. package/lib/client/driver/command-executors/client-functions/selector-executor/utils.js +3 -3
  63. package/lib/client/driver/deps/hammerhead.js +12 -4
  64. package/lib/client/driver/deps/testcafe-core.js +12 -4
  65. package/lib/client/driver/deps/testcafe-ui.js +12 -4
  66. package/lib/client/driver/index.js +654 -630
  67. package/lib/client/driver/index.min.js +1 -1
  68. package/lib/client/driver/status.js +2 -2
  69. package/lib/client/ui/index.js +10 -8
  70. package/lib/client/ui/index.min.js +1 -1
  71. package/lib/client-functions/builder-symbol.js +1 -2
  72. package/lib/client-functions/client-function-builder.js +12 -12
  73. package/lib/client-functions/replicator.js +2 -2
  74. package/lib/client-functions/selector-api-execution-mode.js +2 -2
  75. package/lib/client-functions/selectors/add-api.js +48 -48
  76. package/lib/client-functions/selectors/selector-builder.js +17 -17
  77. package/lib/compiler/compile-client-function.js +6 -6
  78. package/lib/compiler/index.js +9 -9
  79. package/lib/compiler/test-file/api-based.js +8 -8
  80. package/lib/compiler/test-file/base.js +6 -6
  81. package/lib/compiler/test-file/exportble-lib-path.js +2 -2
  82. package/lib/compiler/test-file/formats/coffeescript/compiler.js +2 -2
  83. package/lib/compiler/test-file/formats/coffeescript/get-test-list.js +2 -2
  84. package/lib/compiler/test-file/formats/es-next/compiler.js +4 -4
  85. package/lib/compiler/test-file/formats/es-next/get-test-list.js +4 -4
  86. package/lib/compiler/test-file/formats/raw.js +2 -2
  87. package/lib/compiler/test-file/formats/typescript/compiler.js +11 -11
  88. package/lib/compiler/test-file/formats/typescript/get-test-list.js +3 -3
  89. package/lib/compiler/test-file/test-file-parser-base.js +3 -3
  90. package/lib/configuration/configuration-base.js +15 -15
  91. package/lib/configuration/interfaces.js +1 -1
  92. package/lib/configuration/skip-js-errors-option-names.js +11 -0
  93. package/lib/configuration/testcafe-configuration.js +21 -16
  94. package/lib/configuration/types.js +1 -1
  95. package/lib/configuration/typescript-configuration.js +4 -4
  96. package/lib/custom-client-scripts/assert-type.js +2 -2
  97. package/lib/custom-client-scripts/client-script.js +6 -6
  98. package/lib/custom-client-scripts/get-code.js +2 -2
  99. package/lib/custom-client-scripts/routing.js +3 -3
  100. package/lib/custom-client-scripts/utils.js +3 -3
  101. package/lib/dashboard/connector.js +4 -4
  102. package/lib/dashboard/get-default-project-link.js +2 -2
  103. package/lib/dashboard/index.js +26 -26
  104. package/lib/errors/create-stack-filter.js +2 -2
  105. package/lib/errors/error-list.js +2 -2
  106. package/lib/errors/get-callsite.js +2 -2
  107. package/lib/errors/is-internal-stack-frame.js +5 -5
  108. package/lib/errors/process-test-fn-error.js +2 -2
  109. package/lib/errors/runtime/index.js +10 -10
  110. package/lib/errors/runtime/templates.js +5 -2
  111. package/lib/errors/runtime/type-assertions.js +6 -6
  112. package/lib/errors/stack-cleaning-hook.js +2 -2
  113. package/lib/errors/test-run/formattable-adapter.js +7 -7
  114. package/lib/errors/test-run/index.js +25 -5
  115. package/lib/errors/test-run/render-error-template/index.js +6 -6
  116. package/lib/errors/test-run/render-error-template/utils.js +2 -2
  117. package/lib/errors/test-run/templates.js +40 -31
  118. package/lib/errors/test-run/utils.js +7 -7
  119. package/lib/errors/types.js +5 -1
  120. package/lib/index.js +1 -1
  121. package/lib/live/file-watcher/index.js +2 -2
  122. package/lib/live/keyboard-observer.js +3 -3
  123. package/lib/live/test-run-controller.js +3 -3
  124. package/lib/live/test-run.js +3 -2
  125. package/lib/live/test-runner.js +2 -2
  126. package/lib/load-assets.js +2 -2
  127. package/lib/notifications/add-rendered-warning.js +4 -4
  128. package/lib/notifications/debug-logger.js +6 -6
  129. package/lib/notifications/deprecated.js +2 -2
  130. package/lib/notifications/information-message.js +4 -3
  131. package/lib/proxyless/resource-injector.js +4 -4
  132. package/lib/reporter/command/command-formatter.js +4 -4
  133. package/lib/reporter/index.js +10 -10
  134. package/lib/reporter/plugin-host.js +7 -7
  135. package/lib/role/index.js +8 -8
  136. package/lib/role/role.js +2 -2
  137. package/lib/runner/bootstrapper.js +20 -20
  138. package/lib/runner/browser-job.js +3 -3
  139. package/lib/runner/browser-set.js +12 -12
  140. package/lib/runner/fixture-hook-controller.js +5 -5
  141. package/lib/runner/index.js +43 -33
  142. package/lib/runner/task/index.js +10 -6
  143. package/lib/runner/test-run-hook-controller.js +5 -5
  144. package/lib/runner/tested-app.js +7 -7
  145. package/lib/screenshots/capturer.js +17 -17
  146. package/lib/screenshots/crop.js +8 -8
  147. package/lib/screenshots/index.js +6 -10
  148. package/lib/screenshots/utils.js +4 -4
  149. package/lib/services/compiler/host.js +8 -8
  150. package/lib/services/compiler/service.js +13 -13
  151. package/lib/services/compiler/test-run-proxy.js +8 -8
  152. package/lib/services/serialization/replicator/transforms/callsite-record-transform.js +2 -2
  153. package/lib/services/serialization/replicator/transforms/command-base-trasform/command-constructors.js +2 -1
  154. package/lib/services/serialization/replicator/transforms/command-base-trasform/index.js +3 -3
  155. package/lib/services/serialization/replicator/transforms/raw-command-callsite-record-transform.js +2 -2
  156. package/lib/services/serialization/test-structure.js +4 -4
  157. package/lib/services/utils/ipc/interfaces.js +1 -3
  158. package/lib/services/utils/ipc/io.js +3 -3
  159. package/lib/services/utils/ipc/message.js +2 -2
  160. package/lib/services/utils/ipc/proxy.js +4 -4
  161. package/lib/services/utils/ipc/transport.js +2 -2
  162. package/lib/shared/errors/index.js +9 -2
  163. package/lib/shared/errors/selector-error-ctor-callback.js +7 -3
  164. package/lib/test-run/bookmark.js +1 -1
  165. package/lib/test-run/browser-manipulation-queue.js +3 -3
  166. package/lib/test-run/commands/actions.js +66 -46
  167. package/lib/test-run/commands/assertion.js +3 -3
  168. package/lib/test-run/commands/base.js +2 -2
  169. package/lib/test-run/commands/browser-manipulation.js +8 -8
  170. package/lib/test-run/commands/observation.js +4 -4
  171. package/lib/test-run/commands/options.js +27 -12
  172. package/lib/test-run/commands/type.js +2 -1
  173. package/lib/test-run/commands/utils.js +3 -2
  174. package/lib/test-run/commands/validations/argument.js +19 -10
  175. package/lib/test-run/commands/validations/factories.js +10 -2
  176. package/lib/test-run/commands/validations/initializers.js +4 -4
  177. package/lib/test-run/debug-log.js +4 -4
  178. package/lib/test-run/execute-js-expression/index.js +4 -4
  179. package/lib/test-run/index.js +48 -41
  180. package/lib/test-run/request/create-request-options.js +9 -9
  181. package/lib/test-run/request/process-response-data.js +2 -2
  182. package/lib/test-run/request/send.js +5 -5
  183. package/lib/testcafe.js +8 -4
  184. package/lib/utils/check-file-path.js +2 -2
  185. package/lib/utils/check-url.js +2 -2
  186. package/lib/utils/correct-file-path.js +4 -4
  187. package/lib/utils/delegated-api.js +1 -1
  188. package/lib/utils/detect-ffmpeg.js +3 -3
  189. package/lib/utils/diff/colors.js +2 -2
  190. package/lib/utils/diff/index.js +11 -7
  191. package/lib/utils/diff/util.js +5 -5
  192. package/lib/utils/diff.js +4 -4
  193. package/lib/utils/escape-user-agent.js +2 -2
  194. package/lib/utils/execute-fn-with-timeout.js +2 -2
  195. package/lib/utils/get-browser.js +2 -2
  196. package/lib/utils/get-filter-fn.js +4 -4
  197. package/lib/utils/get-options/base.js +2 -2
  198. package/lib/utils/get-options/compiler.js +2 -2
  199. package/lib/utils/get-options/dashboard.js +2 -2
  200. package/lib/utils/get-options/get-assertion-timeout.js +1 -1
  201. package/lib/utils/get-options/index.js +4 -2
  202. package/lib/utils/get-options/meta.js +2 -2
  203. package/lib/utils/get-options/quarantine.js +8 -6
  204. package/lib/utils/get-options/screenshot.js +2 -2
  205. package/lib/utils/get-options/skip-js-errors.js +35 -0
  206. package/lib/utils/get-options/ssl.js +6 -6
  207. package/lib/utils/get-options/video.js +2 -2
  208. package/lib/utils/is-password-input.js +1 -1
  209. package/lib/utils/log-entry.js +2 -2
  210. package/lib/utils/make-reg-exp.js +19 -6
  211. package/lib/utils/moment-loader.js +2 -2
  212. package/lib/utils/parse-file-list.js +7 -7
  213. package/lib/utils/path-pattern.js +4 -4
  214. package/lib/utils/prepare-reporters.js +2 -2
  215. package/lib/utils/prerender-callsite.js +6 -6
  216. package/lib/utils/process.js +7 -7
  217. package/lib/utils/promisified-functions.js +14 -14
  218. package/lib/utils/raw-command-callsite-record.js +2 -2
  219. package/lib/utils/resolve-path-relatively-cwd.js +2 -2
  220. package/lib/utils/string.js +3 -3
  221. package/lib/utils/temp-directory/cleanup-process/index.js +6 -6
  222. package/lib/utils/temp-directory/cleanup-process/worker.js +4 -4
  223. package/lib/utils/temp-directory/index.js +6 -6
  224. package/lib/utils/temp-directory/lockfile.js +2 -2
  225. package/lib/video-recorder/process.js +6 -6
  226. package/lib/video-recorder/recorder.js +9 -9
  227. package/lib/video-recorder/test-run-video-recorder.js +2 -2
  228. package/package.json +8 -7
  229. package/ts-defs/index.d.ts +46 -7
  230. package/ts-defs/selectors.d.ts +39 -0
  231. package/ts-defs/testcafe-scripts.d.ts +39 -0
@@ -29,7 +29,7 @@ class SelectorBuilder extends client_function_builder_1.default {
29
29
  if (builder) {
30
30
  fn = builder.fn;
31
31
  if (options === void 0 || typeof options === 'object')
32
- options = lodash_1.merge({}, builder.options, options, { sourceSelectorBuilder: builder });
32
+ options = (0, lodash_1.merge)({}, builder.options, options, { sourceSelectorBuilder: builder });
33
33
  }
34
34
  super(fn, options, callsiteNames);
35
35
  if (!this.options.apiFnChain) {
@@ -57,7 +57,7 @@ class SelectorBuilder extends client_function_builder_1.default {
57
57
  `(function(){return document.querySelectorAll(${JSON.stringify(this.fn)});});` :
58
58
  super._getCompiledFnCode();
59
59
  if (code) {
60
- return dedent_1.default(`(function(){
60
+ return (0, dedent_1.default)(`(function(){
61
61
  var __f$=${code};
62
62
  return function(){
63
63
  var args = __dependencies$.boundArgs || arguments;
@@ -82,7 +82,7 @@ class SelectorBuilder extends client_function_builder_1.default {
82
82
  const resultPromise = super._executeCommand(args, testRun, this.callsite || callsite);
83
83
  this._addBoundArgsSelectorGetter(resultPromise, args);
84
84
  // OPTIMIZATION: use buffer function as selector not to trigger lazy property ahead of time
85
- add_api_1.addAPI(resultPromise, () => resultPromise.selector, SelectorBuilder, this.options.customDOMProperties, this.options.customMethods);
85
+ (0, add_api_1.addAPI)(resultPromise, () => resultPromise.selector, SelectorBuilder, this.options.customDOMProperties, this.options.customMethods);
86
86
  return resultPromise;
87
87
  }
88
88
  _getSourceSelectorBuilderApiFnID() {
@@ -94,13 +94,13 @@ class SelectorBuilder extends client_function_builder_1.default {
94
94
  getFunctionDependencies() {
95
95
  const dependencies = super.getFunctionDependencies();
96
96
  const { filterVisible, filterHidden, counterMode, collectionMode, getVisibleValueMode, index, customDOMProperties, customMethods, apiFnChain, boundArgs, } = this.options;
97
- return lodash_1.merge({}, dependencies, {
97
+ return (0, lodash_1.merge)({}, dependencies, {
98
98
  filterOptions: {
99
99
  filterVisible,
100
100
  filterHidden,
101
101
  counterMode,
102
102
  collectionMode,
103
- index: lodash_1.isNil(index) ? null : index,
103
+ index: (0, lodash_1.isNil)(index) ? null : index,
104
104
  getVisibleValueMode,
105
105
  },
106
106
  apiInfo: {
@@ -127,10 +127,10 @@ class SelectorBuilder extends client_function_builder_1.default {
127
127
  }
128
128
  _validateOptions(options) {
129
129
  super._validateOptions(options);
130
- if (!lodash_1.isNil(options.visibilityCheck))
131
- type_assertions_1.assertType(type_assertions_1.is.boolean, this.callsiteNames.instantiation, 'The "visibilityCheck" option', options.visibilityCheck);
132
- if (!lodash_1.isNil(options.timeout))
133
- type_assertions_1.assertType(type_assertions_1.is.nonNegativeNumber, this.callsiteNames.instantiation, 'The "timeout" option', options.timeout);
130
+ if (!(0, lodash_1.isNil)(options.visibilityCheck))
131
+ (0, type_assertions_1.assertType)(type_assertions_1.is.boolean, this.callsiteNames.instantiation, 'The "visibilityCheck" option', options.visibilityCheck);
132
+ if (!(0, lodash_1.isNil)(options.timeout))
133
+ (0, type_assertions_1.assertType)(type_assertions_1.is.nonNegativeNumber, this.callsiteNames.instantiation, 'The "timeout" option', options.timeout);
134
134
  }
135
135
  _getReplicatorTransforms() {
136
136
  const transforms = super._getReplicatorTransforms();
@@ -138,29 +138,29 @@ class SelectorBuilder extends client_function_builder_1.default {
138
138
  return transforms;
139
139
  }
140
140
  _addBoundArgsSelectorGetter(obj, selectorArgs) {
141
- define_lazy_property_1.default(obj, 'selector', () => {
141
+ (0, define_lazy_property_1.default)(obj, 'selector', () => {
142
142
  const builder = new SelectorBuilder(this.getFunction(), { boundArgs: selectorArgs });
143
143
  return builder.getFunction();
144
144
  });
145
145
  }
146
146
  _decorateFunction(selectorFn) {
147
147
  super._decorateFunction(selectorFn);
148
- add_api_1.addAPI(selectorFn, () => selectorFn, SelectorBuilder, this.options.customDOMProperties, this.options.customMethods, this._getObservedCallsites());
148
+ (0, add_api_1.addAPI)(selectorFn, () => selectorFn, SelectorBuilder, this.options.customDOMProperties, this.options.customMethods, this._getObservedCallsites());
149
149
  }
150
150
  _getClientFnWithOverriddenOptions(options) {
151
- const apiFn = prepare_api_args_1.default('with', options);
151
+ const apiFn = (0, prepare_api_args_1.default)('with', options);
152
152
  const previousSelectorID = this.options.apiFnChain.length - 1;
153
153
  return super._getClientFnWithOverriddenOptions(Object.assign(options, { apiFn, apiFnID: previousSelectorID }));
154
154
  }
155
155
  _processResult(result, selectorArgs) {
156
156
  const snapshot = super._processResult(result, selectorArgs);
157
- if (snapshot && !return_single_prop_mode_1.default(this.options)) {
157
+ if (snapshot && !(0, return_single_prop_mode_1.default)(this.options)) {
158
158
  this._addBoundArgsSelectorGetter(snapshot, selectorArgs);
159
- create_snapshot_methods_1.default(snapshot);
159
+ (0, create_snapshot_methods_1.default)(snapshot);
160
160
  if (this.options.customMethods)
161
- add_api_1.addCustomMethods(snapshot, () => snapshot.selector, SelectorBuilder, this.options.customMethods);
161
+ (0, add_api_1.addCustomMethods)(snapshot, () => snapshot.selector, SelectorBuilder, this.options.customMethods);
162
162
  if (selector_api_execution_mode_1.default.isSync) {
163
- add_api_1.addAPI(snapshot, () => snapshot.selector, SelectorBuilder, this.options.customDOMProperties, this.options.customMethods, this._getObservedCallsites(), true);
163
+ (0, add_api_1.addAPI)(snapshot, () => snapshot.selector, SelectorBuilder, this.options.customDOMProperties, this.options.customMethods, this._getObservedCallsites(), true);
164
164
  }
165
165
  }
166
166
  return snapshot;
@@ -168,4 +168,4 @@ class SelectorBuilder extends client_function_builder_1.default {
168
168
  }
169
169
  exports.default = SelectorBuilder;
170
170
  module.exports = exports.default;
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQtZnVuY3Rpb25zL3NlbGVjdG9ycy9zZWxlY3Rvci1idWlsZGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQTJEO0FBQzNELG9EQUE0QjtBQUM1Qix5RkFBK0Q7QUFDL0QsOENBQXNEO0FBQ3RELGtEQUE4RDtBQUM5RCx1RUFBc0Q7QUFDdEQsOENBQW9EO0FBQ3BELDBFQUFzRTtBQUN0RSxxRUFBNkU7QUFDN0UsNEZBQWtFO0FBQ2xFLHVDQUFxRDtBQUNyRCx3RkFBOEQ7QUFDOUQsMEVBQWtEO0FBQ2xELHlGQUE4RDtBQUM5RCxpR0FBc0U7QUFFdEUsTUFBcUIsZUFBZ0IsU0FBUSxpQ0FBcUI7SUFDOUQsWUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRO1FBQzdDLE1BQU0sS0FBSyxHQUEwQixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM5RCxNQUFNLE9BQU8sR0FBd0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDaEUsTUFBTSxtQkFBbUIsR0FBWSxFQUFFLElBQUksRUFBRSxDQUFDLHdCQUFxQixDQUFDLENBQUM7UUFDckUsTUFBTSw0QkFBNEIsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLHdCQUFxQixDQUFDLENBQUM7UUFDN0YsSUFBSSxPQUFPLEdBQTBCLG1CQUFtQixJQUFJLDRCQUE0QixDQUFDO1FBRXpGLE9BQU8sR0FBRyxPQUFPLFlBQVksZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUU5RCxJQUFJLE9BQU8sRUFBRTtZQUNULEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBRWhCLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVE7Z0JBQ2pELE9BQU8sR0FBRyxjQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUN6RjtRQUVELEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUMxQixNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLEdBQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxHQUFHLENBQUM7WUFFcEUsSUFBSSxHQUFzQixZQUFZLElBQUksR0FBRyxDQUFDO1lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFRLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxLQUFLO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2xHLElBQUksQ0FBQyxRQUFRLEdBQVUsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxtRUFBbUU7UUFDbkUsMkRBQTJEO1FBQzNELDZEQUE2RDtRQUM3RCxNQUFNLG1DQUFtQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLFlBQVk7Z0JBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBRXRFLElBQUksbUNBQW1DO1lBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUM7UUFFN0QsTUFBTSxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLGdEQUFnRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEYsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFL0IsSUFBSSxJQUFJLEVBQUU7WUFDTixPQUFPLGdCQUFNLENBQ1Q7K0JBQ2UsSUFBSTs7Ozs7Ozs7Ozs7Ozt1QkFhWixDQUNWLENBQUM7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCx5QkFBeUI7UUFDckIsT0FBTyxJQUFJLGdDQUFzQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLHNCQUFjLENBQUMsZ0NBQWdDLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0ssQ0FBQztJQUVELGVBQWUsQ0FBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVE7UUFDcEMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLENBQUM7UUFFdEYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV0RCwyRkFBMkY7UUFDM0YsZ0JBQU0sQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRW5JLE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnQ0FBZ0M7UUFDNUIsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFNUIsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMscUJBQXFCO1lBQ2pELGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztRQUV0RSxPQUFPLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDNUMsQ0FBQztJQUVELHVCQUF1QjtRQUNuQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUVyRCxNQUFNLEVBQ0YsYUFBYSxFQUNiLFlBQVksRUFDWixXQUFXLEVBQ1gsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixLQUFLLEVBQ0wsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixVQUFVLEVBQ1YsU0FBUyxHQUNaLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUVqQixPQUFPLGNBQUssQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFO1lBQzNCLGFBQWEsRUFBRTtnQkFDWCxhQUFhO2dCQUNiLFlBQVk7Z0JBQ1osV0FBVztnQkFDWCxjQUFjO2dCQUNkLEtBQUssRUFBRSxjQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7Z0JBQzlDLG1CQUFtQjthQUN0QjtZQUNELE9BQU8sRUFBRTtnQkFDTCxVQUFVO2dCQUNWLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0NBQWdDLEVBQUU7YUFDbkQ7WUFDRCxTQUFTO1lBQ1QsbUJBQW1CO1lBQ25CLGFBQWE7U0FDaEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHFCQUFxQixDQUFFLFdBQVcsRUFBRSxtQkFBbUI7UUFDbkQsT0FBTyxJQUFJLG9DQUFzQixDQUFDO1lBQzlCLHlCQUF5QixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYTtZQUMzRCxNQUFNLEVBQXFCLElBQUksQ0FBQyxjQUFjO1lBQzlDLElBQUksRUFBdUIsV0FBVztZQUN0QyxZQUFZLEVBQWUsbUJBQW1CO1lBQzlDLFNBQVMsRUFBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQ2pELFVBQVUsRUFBaUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1lBQ2xELGVBQWUsRUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlO1lBQ3pELE9BQU8sRUFBb0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQy9DLFdBQVcsRUFBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1NBQ3RELENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxPQUFPO1FBQ3JCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoQyxJQUFJLENBQUMsY0FBaUIsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQzNDLDRCQUFVLENBQUMsb0JBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsOEJBQThCLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXRILElBQUksQ0FBQyxjQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDbkMsNEJBQVUsQ0FBQyxvQkFBRSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3BCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRXBELFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxrQ0FBcUIsRUFBRSxDQUFDLENBQUM7UUFFN0MsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELDJCQUEyQixDQUFFLEdBQUcsRUFBRSxZQUFZO1FBQzFDLDhCQUFrQixDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBRXJGLE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGlCQUFpQixDQUFFLFVBQVU7UUFDekIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXBDLGdCQUFNLENBQ0YsVUFBVSxFQUNWLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFDaEIsZUFBZSxFQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUMxQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FDL0IsQ0FBQztJQUNOLENBQUM7SUFFRCxpQ0FBaUMsQ0FBRSxPQUFPO1FBQ3RDLE1BQU0sS0FBSyxHQUFnQiwwQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTlELE9BQU8sS0FBSyxDQUFDLGlDQUFpQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRUQsY0FBYyxDQUFFLE1BQU0sRUFBRSxZQUFZO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTVELElBQUksUUFBUSxJQUFJLENBQUMsaUNBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDekQsaUNBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7Z0JBQzFCLDBCQUFnQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXJHLElBQUkscUNBQXdCLENBQUMsTUFBTSxFQUFFO2dCQUNqQyxnQkFBTSxDQUNGLFFBQVEsRUFDUixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUN2QixlQUFlLEVBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQzFCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUM1QixJQUFJLENBQ1AsQ0FBQzthQUNMO1NBQ0o7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUF6TkQsa0NBeU5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOaWwgYXMgaXNOdWxsT3JVbmRlZmluZWQsIG1lcmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBkZWRlbnQgZnJvbSAnZGVkZW50JztcbmltcG9ydCBDbGllbnRGdW5jdGlvbkJ1aWxkZXIgZnJvbSAnLi4vY2xpZW50LWZ1bmN0aW9uLWJ1aWxkZXInO1xuaW1wb3J0IHsgU2VsZWN0b3JOb2RlVHJhbnNmb3JtIH0gZnJvbSAnLi4vcmVwbGljYXRvcic7XG5pbXBvcnQgeyBDbGllbnRGdW5jdGlvbkFQSUVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IGZ1bmN0aW9uQnVpbGRlclN5bWJvbCBmcm9tICcuLi9idWlsZGVyLXN5bWJvbCc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgeyBFeGVjdXRlU2VsZWN0b3JDb21tYW5kIH0gZnJvbSAnLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvb2JzZXJ2YXRpb24nO1xuaW1wb3J0IGRlZmluZUxhenlQcm9wZXJ0eSBmcm9tICcuLi8uLi91dGlscy9kZWZpbmUtbGF6eS1wcm9wZXJ0eSc7XG5pbXBvcnQgeyBhZGRBUEksIGFkZEN1c3RvbU1ldGhvZHMgfSBmcm9tICcuL2FkZC1hcGknO1xuaW1wb3J0IGNyZWF0ZVNuYXBzaG90TWV0aG9kcyBmcm9tICcuL2NyZWF0ZS1zbmFwc2hvdC1tZXRob2RzJztcbmltcG9ydCBwcmVwYXJlQXBpRm5BcmdzIGZyb20gJy4vcHJlcGFyZS1hcGktYXJncyc7XG5pbXBvcnQgcmV0dXJuU2luZ2xlUHJvcE1vZGUgZnJvbSAnLi4vcmV0dXJuLXNpbmdsZS1wcm9wLW1vZGUnO1xuaW1wb3J0IHNlbGVjdG9yQXBpRXhlY3V0aW9uTW9kZSBmcm9tICcuLi9zZWxlY3Rvci1hcGktZXhlY3V0aW9uLW1vZGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3RvckJ1aWxkZXIgZXh0ZW5kcyBDbGllbnRGdW5jdGlvbkJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yIChmbiwgb3B0aW9ucywgY2FsbHNpdGVOYW1lcywgY2FsbHNpdGUpIHtcbiAgICAgICAgY29uc3QgYXBpRm4gICAgICAgICAgICAgICAgICAgICAgICA9IG9wdGlvbnMgJiYgb3B0aW9ucy5hcGlGbjtcbiAgICAgICAgY29uc3QgYXBpRm5JRCAgICAgICAgICAgICAgICAgICAgICA9IG9wdGlvbnMgJiYgb3B0aW9ucy5hcGlGbklEO1xuICAgICAgICBjb25zdCBidWlsZGVyRnJvbVNlbGVjdG9yICAgICAgICAgID0gZm4gJiYgZm5bZnVuY3Rpb25CdWlsZGVyU3ltYm9sXTtcbiAgICAgICAgY29uc3QgYnVpbGRlckZyb21Qcm9taXNlT3JTbmFwc2hvdCA9IGZuICYmIGZuLnNlbGVjdG9yICYmIGZuLnNlbGVjdG9yW2Z1bmN0aW9uQnVpbGRlclN5bWJvbF07XG4gICAgICAgIGxldCBidWlsZGVyICAgICAgICAgICAgICAgICAgICAgICAgPSBidWlsZGVyRnJvbVNlbGVjdG9yIHx8IGJ1aWxkZXJGcm9tUHJvbWlzZU9yU25hcHNob3Q7XG5cbiAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIgaW5zdGFuY2VvZiBTZWxlY3RvckJ1aWxkZXIgPyBidWlsZGVyIDogbnVsbDtcblxuICAgICAgICBpZiAoYnVpbGRlcikge1xuICAgICAgICAgICAgZm4gPSBidWlsZGVyLmZuO1xuXG4gICAgICAgICAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwIHx8IHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0JylcbiAgICAgICAgICAgICAgICBvcHRpb25zID0gbWVyZ2Uoe30sIGJ1aWxkZXIub3B0aW9ucywgb3B0aW9ucywgeyBzb3VyY2VTZWxlY3RvckJ1aWxkZXI6IGJ1aWxkZXIgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlcihmbiwgb3B0aW9ucywgY2FsbHNpdGVOYW1lcyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYXBpRm5DaGFpbikge1xuICAgICAgICAgICAgY29uc3QgZm5UeXBlID0gdHlwZW9mIHRoaXMuZm47XG4gICAgICAgICAgICBsZXQgaXRlbSAgICAgPSBmblR5cGUgPT09ICdzdHJpbmcnID8gYCcke3RoaXMuZm59J2AgOiBgWyR7Zm5UeXBlfV1gO1xuXG4gICAgICAgICAgICBpdGVtICAgICAgICAgICAgICAgICAgICA9IGBTZWxlY3Rvcigke2l0ZW19KWA7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuYXBpRm4gICAgICA9IGl0ZW07XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuYXBpRm5DaGFpbiA9IFtpdGVtXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhcGlGbilcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hcGlGbkNoYWluLnB1c2goYXBpRm4pO1xuXG4gICAgICAgIHRoaXMub3B0aW9ucy5hcGlGbklEID0gdHlwZW9mIGFwaUZuSUQgPT09ICdudW1iZXInID8gYXBpRm5JRCA6IHRoaXMub3B0aW9ucy5hcGlGbkNoYWluLmxlbmd0aCAtIDE7XG4gICAgICAgIHRoaXMuY2FsbHNpdGUgICAgICAgID0gY2FsbHNpdGU7XG4gICAgfVxuXG4gICAgX2dldENvbXBpbGVkRm5Db2RlICgpIHtcbiAgICAgICAgLy8gT1BUSU1JWkFUSU9OOiBpZiBzZWxlY3RvciB3YXMgcHJvZHVjZWQgZnJvbSBhbm90aGVyIHNlbGVjdG9yIGFuZFxuICAgICAgICAvLyBpdCBoYXMgc2FtZSBkZXBlbmRlbmNpZXMgYXMgc291cmNlIHNlbGVjdG9yLCB0aGVuIHdlIGNhblxuICAgICAgICAvLyBhdm9pZCByZWNvbXBpbGF0aW9uIGFuZCBqdXN0IHJlLXVzZSBhbHJlYWR5IGNvbXBpbGVkIGNvZGUuXG4gICAgICAgIGNvbnN0IGhhc1NhbWVEZXBlbmRlbmNpZXNBc1NvdXJjZVNlbGVjdG9yID0gdGhpcy5vcHRpb25zLnNvdXJjZVNlbGVjdG9yQnVpbGRlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zb3VyY2VTZWxlY3RvckJ1aWxkZXIub3B0aW9ucy5kZXBlbmRlbmNpZXMgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmRlcGVuZGVuY2llcztcblxuICAgICAgICBpZiAoaGFzU2FtZURlcGVuZGVuY2llc0FzU291cmNlU2VsZWN0b3IpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNvdXJjZVNlbGVjdG9yQnVpbGRlci5jb21waWxlZEZuQ29kZTtcblxuICAgICAgICBjb25zdCBjb2RlID0gdHlwZW9mIHRoaXMuZm4gPT09ICdzdHJpbmcnID9cbiAgICAgICAgICAgIGAoZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgke0pTT04uc3RyaW5naWZ5KHRoaXMuZm4pfSk7fSk7YCA6XG4gICAgICAgICAgICBzdXBlci5fZ2V0Q29tcGlsZWRGbkNvZGUoKTtcblxuICAgICAgICBpZiAoY29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZGVudChcbiAgICAgICAgICAgICAgICBgKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfX2YkPSR7Y29kZX07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFyZ3MgICAgICAgICAgID0gX19kZXBlbmRlbmNpZXMkLmJvdW5kQXJncyB8fCBhcmd1bWVudHM7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3JGaWx0ZXIgPSBfX2RlcGVuZGVuY2llcyQuc2VsZWN0b3JGaWx0ZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IF9fZiQuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlcyAgICAgPSBzZWxlY3RvckZpbHRlci5jYXN0KG5vZGVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2Rlcy5sZW5ndGggJiYgIXNlbGVjdG9yRmlsdGVyLmVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yRmlsdGVyLmVycm9yID0gX19kZXBlbmRlbmNpZXMkLmFwaUluZm8uYXBpRm5JRDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yRmlsdGVyLmZpbHRlcihub2RlcywgX19kZXBlbmRlbmNpZXMkLmZpbHRlck9wdGlvbnMsIF9fZGVwZW5kZW5jaWVzJC5hcGlJbmZvKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgfSkoKTtgXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUludmFsaWRGblR5cGVFcnJvciAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50RnVuY3Rpb25BUElFcnJvcih0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbiwgdGhpcy5jYWxsc2l0ZU5hbWVzLmluc3RhbnRpYXRpb24sIFJVTlRJTUVfRVJST1JTLnNlbGVjdG9ySW5pdGlhbGl6ZWRXaXRoV3JvbmdUeXBlLCB0eXBlb2YgdGhpcy5mbik7XG4gICAgfVxuXG4gICAgX2V4ZWN1dGVDb21tYW5kIChhcmdzLCB0ZXN0UnVuLCBjYWxsc2l0ZSkge1xuICAgICAgICBjb25zdCByZXN1bHRQcm9taXNlID0gc3VwZXIuX2V4ZWN1dGVDb21tYW5kKGFyZ3MsIHRlc3RSdW4sIHRoaXMuY2FsbHNpdGUgfHwgY2FsbHNpdGUpO1xuXG4gICAgICAgIHRoaXMuX2FkZEJvdW5kQXJnc1NlbGVjdG9yR2V0dGVyKHJlc3VsdFByb21pc2UsIGFyZ3MpO1xuXG4gICAgICAgIC8vIE9QVElNSVpBVElPTjogdXNlIGJ1ZmZlciBmdW5jdGlvbiBhcyBzZWxlY3RvciBub3QgdG8gdHJpZ2dlciBsYXp5IHByb3BlcnR5IGFoZWFkIG9mIHRpbWVcbiAgICAgICAgYWRkQVBJKHJlc3VsdFByb21pc2UsICgpID0+IHJlc3VsdFByb21pc2Uuc2VsZWN0b3IsIFNlbGVjdG9yQnVpbGRlciwgdGhpcy5vcHRpb25zLmN1c3RvbURPTVByb3BlcnRpZXMsIHRoaXMub3B0aW9ucy5jdXN0b21NZXRob2RzKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0UHJvbWlzZTtcbiAgICB9XG5cbiAgICBfZ2V0U291cmNlU2VsZWN0b3JCdWlsZGVyQXBpRm5JRCAoKSB7XG4gICAgICAgIGxldCBzZWxlY3RvckFuY2VzdG9yID0gdGhpcztcblxuICAgICAgICB3aGlsZSAoc2VsZWN0b3JBbmNlc3Rvci5vcHRpb25zLnNvdXJjZVNlbGVjdG9yQnVpbGRlcilcbiAgICAgICAgICAgIHNlbGVjdG9yQW5jZXN0b3IgPSBzZWxlY3RvckFuY2VzdG9yLm9wdGlvbnMuc291cmNlU2VsZWN0b3JCdWlsZGVyO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RvckFuY2VzdG9yLm9wdGlvbnMuYXBpRm5JRDtcbiAgICB9XG5cbiAgICBnZXRGdW5jdGlvbkRlcGVuZGVuY2llcyAoKSB7XG4gICAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHN1cGVyLmdldEZ1bmN0aW9uRGVwZW5kZW5jaWVzKCk7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgZmlsdGVyVmlzaWJsZSxcbiAgICAgICAgICAgIGZpbHRlckhpZGRlbixcbiAgICAgICAgICAgIGNvdW50ZXJNb2RlLFxuICAgICAgICAgICAgY29sbGVjdGlvbk1vZGUsXG4gICAgICAgICAgICBnZXRWaXNpYmxlVmFsdWVNb2RlLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBjdXN0b21ET01Qcm9wZXJ0aWVzLFxuICAgICAgICAgICAgY3VzdG9tTWV0aG9kcyxcbiAgICAgICAgICAgIGFwaUZuQ2hhaW4sXG4gICAgICAgICAgICBib3VuZEFyZ3MsXG4gICAgICAgIH0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIG1lcmdlKHt9LCBkZXBlbmRlbmNpZXMsIHtcbiAgICAgICAgICAgIGZpbHRlck9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGZpbHRlckhpZGRlbixcbiAgICAgICAgICAgICAgICBjb3VudGVyTW9kZSxcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uTW9kZSxcbiAgICAgICAgICAgICAgICBpbmRleDogaXNOdWxsT3JVbmRlZmluZWQoaW5kZXgpID8gbnVsbCA6IGluZGV4LFxuICAgICAgICAgICAgICAgIGdldFZpc2libGVWYWx1ZU1vZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXBpSW5mbzoge1xuICAgICAgICAgICAgICAgIGFwaUZuQ2hhaW4sXG4gICAgICAgICAgICAgICAgYXBpRm5JRDogdGhpcy5fZ2V0U291cmNlU2VsZWN0b3JCdWlsZGVyQXBpRm5JRCgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvdW5kQXJncyxcbiAgICAgICAgICAgIGN1c3RvbURPTVByb3BlcnRpZXMsXG4gICAgICAgICAgICBjdXN0b21NZXRob2RzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfY3JlYXRlVGVzdFJ1bkNvbW1hbmQgKGVuY29kZWRBcmdzLCBlbmNvZGVkRGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXhlY3V0ZVNlbGVjdG9yQ29tbWFuZCh7XG4gICAgICAgICAgICBpbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lOiB0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbixcbiAgICAgICAgICAgIGZuQ29kZTogICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZWRGbkNvZGUsXG4gICAgICAgICAgICBhcmdzOiAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkQXJncyxcbiAgICAgICAgICAgIGRlcGVuZGVuY2llczogICAgICAgICAgICAgIGVuY29kZWREZXBlbmRlbmNpZXMsXG4gICAgICAgICAgICBuZWVkRXJyb3I6ICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMubmVlZEVycm9yLFxuICAgICAgICAgICAgYXBpRm5DaGFpbjogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFwaUZuQ2hhaW4sXG4gICAgICAgICAgICB2aXNpYmlsaXR5Q2hlY2s6ICAgICAgICAgICAhIXRoaXMub3B0aW9ucy52aXNpYmlsaXR5Q2hlY2ssXG4gICAgICAgICAgICB0aW1lb3V0OiAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMudGltZW91dCxcbiAgICAgICAgICAgIHN0cmljdEVycm9yOiAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zdHJpY3RFcnJvcixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX3ZhbGlkYXRlT3B0aW9ucyAob3B0aW9ucykge1xuICAgICAgICBzdXBlci5fdmFsaWRhdGVPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQob3B0aW9ucy52aXNpYmlsaXR5Q2hlY2spKVxuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ib29sZWFuLCB0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbiwgJ1RoZSBcInZpc2liaWxpdHlDaGVja1wiIG9wdGlvbicsIG9wdGlvbnMudmlzaWJpbGl0eUNoZWNrKTtcblxuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKG9wdGlvbnMudGltZW91dCkpXG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyLCB0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbiwgJ1RoZSBcInRpbWVvdXRcIiBvcHRpb24nLCBvcHRpb25zLnRpbWVvdXQpO1xuICAgIH1cblxuICAgIF9nZXRSZXBsaWNhdG9yVHJhbnNmb3JtcyAoKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybXMgPSBzdXBlci5fZ2V0UmVwbGljYXRvclRyYW5zZm9ybXMoKTtcblxuICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobmV3IFNlbGVjdG9yTm9kZVRyYW5zZm9ybSgpKTtcblxuICAgICAgICByZXR1cm4gdHJhbnNmb3JtcztcbiAgICB9XG5cbiAgICBfYWRkQm91bmRBcmdzU2VsZWN0b3JHZXR0ZXIgKG9iaiwgc2VsZWN0b3JBcmdzKSB7XG4gICAgICAgIGRlZmluZUxhenlQcm9wZXJ0eShvYmosICdzZWxlY3RvcicsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgU2VsZWN0b3JCdWlsZGVyKHRoaXMuZ2V0RnVuY3Rpb24oKSwgeyBib3VuZEFyZ3M6IHNlbGVjdG9yQXJncyB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIuZ2V0RnVuY3Rpb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX2RlY29yYXRlRnVuY3Rpb24gKHNlbGVjdG9yRm4pIHtcbiAgICAgICAgc3VwZXIuX2RlY29yYXRlRnVuY3Rpb24oc2VsZWN0b3JGbik7XG5cbiAgICAgICAgYWRkQVBJKFxuICAgICAgICAgICAgc2VsZWN0b3JGbixcbiAgICAgICAgICAgICgpID0+IHNlbGVjdG9yRm4sXG4gICAgICAgICAgICBTZWxlY3RvckJ1aWxkZXIsXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuY3VzdG9tRE9NUHJvcGVydGllcyxcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21NZXRob2RzLFxuICAgICAgICAgICAgdGhpcy5fZ2V0T2JzZXJ2ZWRDYWxsc2l0ZXMoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9nZXRDbGllbnRGbldpdGhPdmVycmlkZGVuT3B0aW9ucyAob3B0aW9ucykge1xuICAgICAgICBjb25zdCBhcGlGbiAgICAgICAgICAgICAgPSBwcmVwYXJlQXBpRm5BcmdzKCd3aXRoJywgb3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0b3JJRCA9IHRoaXMub3B0aW9ucy5hcGlGbkNoYWluLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLl9nZXRDbGllbnRGbldpdGhPdmVycmlkZGVuT3B0aW9ucyhPYmplY3QuYXNzaWduKG9wdGlvbnMsIHsgYXBpRm4sIGFwaUZuSUQ6IHByZXZpb3VzU2VsZWN0b3JJRCB9KSk7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NSZXN1bHQgKHJlc3VsdCwgc2VsZWN0b3JBcmdzKSB7XG4gICAgICAgIGNvbnN0IHNuYXBzaG90ID0gc3VwZXIuX3Byb2Nlc3NSZXN1bHQocmVzdWx0LCBzZWxlY3RvckFyZ3MpO1xuXG4gICAgICAgIGlmIChzbmFwc2hvdCAmJiAhcmV0dXJuU2luZ2xlUHJvcE1vZGUodGhpcy5vcHRpb25zKSkge1xuICAgICAgICAgICAgdGhpcy5fYWRkQm91bmRBcmdzU2VsZWN0b3JHZXR0ZXIoc25hcHNob3QsIHNlbGVjdG9yQXJncyk7XG4gICAgICAgICAgICBjcmVhdGVTbmFwc2hvdE1ldGhvZHMoc25hcHNob3QpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbU1ldGhvZHMpXG4gICAgICAgICAgICAgICAgYWRkQ3VzdG9tTWV0aG9kcyhzbmFwc2hvdCwgKCkgPT4gc25hcHNob3Quc2VsZWN0b3IsIFNlbGVjdG9yQnVpbGRlciwgdGhpcy5vcHRpb25zLmN1c3RvbU1ldGhvZHMpO1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0b3JBcGlFeGVjdXRpb25Nb2RlLmlzU3luYykge1xuICAgICAgICAgICAgICAgIGFkZEFQSShcbiAgICAgICAgICAgICAgICAgICAgc25hcHNob3QsXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHNuYXBzaG90LnNlbGVjdG9yLFxuICAgICAgICAgICAgICAgICAgICBTZWxlY3RvckJ1aWxkZXIsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21ET01Qcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuY3VzdG9tTWV0aG9kcyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ2V0T2JzZXJ2ZWRDYWxsc2l0ZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc25hcHNob3Q7XG4gICAgfVxufVxuXG4iXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQtZnVuY3Rpb25zL3NlbGVjdG9ycy9zZWxlY3Rvci1idWlsZGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQTJEO0FBQzNELG9EQUE0QjtBQUM1Qix5RkFBK0Q7QUFDL0QsOENBQXNEO0FBQ3RELGtEQUE4RDtBQUM5RCx1RUFBc0Q7QUFDdEQsOENBQW9EO0FBQ3BELDBFQUFzRTtBQUN0RSxxRUFBNkU7QUFDN0UsNEZBQWtFO0FBQ2xFLHVDQUFxRDtBQUNyRCx3RkFBOEQ7QUFDOUQsMEVBQWtEO0FBQ2xELHlGQUE4RDtBQUM5RCxpR0FBc0U7QUFFdEUsTUFBcUIsZUFBZ0IsU0FBUSxpQ0FBcUI7SUFDOUQsWUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRO1FBQzdDLE1BQU0sS0FBSyxHQUEwQixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM5RCxNQUFNLE9BQU8sR0FBd0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDaEUsTUFBTSxtQkFBbUIsR0FBWSxFQUFFLElBQUksRUFBRSxDQUFDLHdCQUFxQixDQUFDLENBQUM7UUFDckUsTUFBTSw0QkFBNEIsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLHdCQUFxQixDQUFDLENBQUM7UUFDN0YsSUFBSSxPQUFPLEdBQTBCLG1CQUFtQixJQUFJLDRCQUE0QixDQUFDO1FBRXpGLE9BQU8sR0FBRyxPQUFPLFlBQVksZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUU5RCxJQUFJLE9BQU8sRUFBRTtZQUNULEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBRWhCLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLE9B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QyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN6RCxJQUFBLGlDQUFxQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWhDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhO2dCQUMxQixJQUFBLDBCQUFnQixFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXJHLElBQUkscUNBQXdCLENBQUMsTUFBTSxFQUFFO2dCQUNqQyxJQUFBLGdCQUFNLEVBQ0YsUUFBUSxFQUNSLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQ3ZCLGVBQWUsRUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFDMUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQzVCLElBQUksQ0FDUCxDQUFDO2FBQ0w7U0FDSjtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQXpORCxrQ0F5TkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05pbCBhcyBpc051bGxPclVuZGVmaW5lZCwgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGRlZGVudCBmcm9tICdkZWRlbnQnO1xuaW1wb3J0IENsaWVudEZ1bmN0aW9uQnVpbGRlciBmcm9tICcuLi9jbGllbnQtZnVuY3Rpb24tYnVpbGRlcic7XG5pbXBvcnQgeyBTZWxlY3Rvck5vZGVUcmFuc2Zvcm0gfSBmcm9tICcuLi9yZXBsaWNhdG9yJztcbmltcG9ydCB7IENsaWVudEZ1bmN0aW9uQVBJRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgZnVuY3Rpb25CdWlsZGVyU3ltYm9sIGZyb20gJy4uL2J1aWxkZXItc3ltYm9sJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcbmltcG9ydCB7IEV4ZWN1dGVTZWxlY3RvckNvbW1hbmQgfSBmcm9tICcuLi8uLi90ZXN0LXJ1bi9jb21tYW5kcy9vYnNlcnZhdGlvbic7XG5pbXBvcnQgZGVmaW5lTGF6eVByb3BlcnR5IGZyb20gJy4uLy4uL3V0aWxzL2RlZmluZS1sYXp5LXByb3BlcnR5JztcbmltcG9ydCB7IGFkZEFQSSwgYWRkQ3VzdG9tTWV0aG9kcyB9IGZyb20gJy4vYWRkLWFwaSc7XG5pbXBvcnQgY3JlYXRlU25hcHNob3RNZXRob2RzIGZyb20gJy4vY3JlYXRlLXNuYXBzaG90LW1ldGhvZHMnO1xuaW1wb3J0IHByZXBhcmVBcGlGbkFyZ3MgZnJvbSAnLi9wcmVwYXJlLWFwaS1hcmdzJztcbmltcG9ydCByZXR1cm5TaW5nbGVQcm9wTW9kZSBmcm9tICcuLi9yZXR1cm4tc2luZ2xlLXByb3AtbW9kZSc7XG5pbXBvcnQgc2VsZWN0b3JBcGlFeGVjdXRpb25Nb2RlIGZyb20gJy4uL3NlbGVjdG9yLWFwaS1leGVjdXRpb24tbW9kZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlbGVjdG9yQnVpbGRlciBleHRlbmRzIENsaWVudEZ1bmN0aW9uQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IgKGZuLCBvcHRpb25zLCBjYWxsc2l0ZU5hbWVzLCBjYWxsc2l0ZSkge1xuICAgICAgICBjb25zdCBhcGlGbiAgICAgICAgICAgICAgICAgICAgICAgID0gb3B0aW9ucyAmJiBvcHRpb25zLmFwaUZuO1xuICAgICAgICBjb25zdCBhcGlGbklEICAgICAgICAgICAgICAgICAgICAgID0gb3B0aW9ucyAmJiBvcHRpb25zLmFwaUZuSUQ7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXJGcm9tU2VsZWN0b3IgICAgICAgICAgPSBmbiAmJiBmbltmdW5jdGlvbkJ1aWxkZXJTeW1ib2xdO1xuICAgICAgICBjb25zdCBidWlsZGVyRnJvbVByb21pc2VPclNuYXBzaG90ID0gZm4gJiYgZm4uc2VsZWN0b3IgJiYgZm4uc2VsZWN0b3JbZnVuY3Rpb25CdWlsZGVyU3ltYm9sXTtcbiAgICAgICAgbGV0IGJ1aWxkZXIgICAgICAgICAgICAgICAgICAgICAgICA9IGJ1aWxkZXJGcm9tU2VsZWN0b3IgfHwgYnVpbGRlckZyb21Qcm9taXNlT3JTbmFwc2hvdDtcblxuICAgICAgICBidWlsZGVyID0gYnVpbGRlciBpbnN0YW5jZW9mIFNlbGVjdG9yQnVpbGRlciA/IGJ1aWxkZXIgOiBudWxsO1xuXG4gICAgICAgIGlmIChidWlsZGVyKSB7XG4gICAgICAgICAgICBmbiA9IGJ1aWxkZXIuZm47XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDAgfHwgdHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBtZXJnZSh7fSwgYnVpbGRlci5vcHRpb25zLCBvcHRpb25zLCB7IHNvdXJjZVNlbGVjdG9yQnVpbGRlcjogYnVpbGRlciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyKGZuLCBvcHRpb25zLCBjYWxsc2l0ZU5hbWVzKTtcblxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5hcGlGbkNoYWluKSB7XG4gICAgICAgICAgICBjb25zdCBmblR5cGUgPSB0eXBlb2YgdGhpcy5mbjtcbiAgICAgICAgICAgIGxldCBpdGVtICAgICA9IGZuVHlwZSA9PT0gJ3N0cmluZycgPyBgJyR7dGhpcy5mbn0nYCA6IGBbJHtmblR5cGV9XWA7XG5cbiAgICAgICAgICAgIGl0ZW0gICAgICAgICAgICAgICAgICAgID0gYFNlbGVjdG9yKCR7aXRlbX0pYDtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hcGlGbiAgICAgID0gaXRlbTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hcGlGbkNoYWluID0gW2l0ZW1dO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFwaUZuKVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFwaUZuQ2hhaW4ucHVzaChhcGlGbik7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFwaUZuSUQgPSB0eXBlb2YgYXBpRm5JRCA9PT0gJ251bWJlcicgPyBhcGlGbklEIDogdGhpcy5vcHRpb25zLmFwaUZuQ2hhaW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5jYWxsc2l0ZSAgICAgICAgPSBjYWxsc2l0ZTtcbiAgICB9XG5cbiAgICBfZ2V0Q29tcGlsZWRGbkNvZGUgKCkge1xuICAgICAgICAvLyBPUFRJTUlaQVRJT046IGlmIHNlbGVjdG9yIHdhcyBwcm9kdWNlZCBmcm9tIGFub3RoZXIgc2VsZWN0b3IgYW5kXG4gICAgICAgIC8vIGl0IGhhcyBzYW1lIGRlcGVuZGVuY2llcyBhcyBzb3VyY2Ugc2VsZWN0b3IsIHRoZW4gd2UgY2FuXG4gICAgICAgIC8vIGF2b2lkIHJlY29tcGlsYXRpb24gYW5kIGp1c3QgcmUtdXNlIGFscmVhZHkgY29tcGlsZWQgY29kZS5cbiAgICAgICAgY29uc3QgaGFzU2FtZURlcGVuZGVuY2llc0FzU291cmNlU2VsZWN0b3IgPSB0aGlzLm9wdGlvbnMuc291cmNlU2VsZWN0b3JCdWlsZGVyICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNvdXJjZVNlbGVjdG9yQnVpbGRlci5vcHRpb25zLmRlcGVuZGVuY2llcyA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZGVwZW5kZW5jaWVzO1xuXG4gICAgICAgIGlmIChoYXNTYW1lRGVwZW5kZW5jaWVzQXNTb3VyY2VTZWxlY3RvcilcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc291cmNlU2VsZWN0b3JCdWlsZGVyLmNvbXBpbGVkRm5Db2RlO1xuXG4gICAgICAgIGNvbnN0IGNvZGUgPSB0eXBlb2YgdGhpcy5mbiA9PT0gJ3N0cmluZycgP1xuICAgICAgICAgICAgYChmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCR7SlNPTi5zdHJpbmdpZnkodGhpcy5mbil9KTt9KTtgIDpcbiAgICAgICAgICAgIHN1cGVyLl9nZXRDb21waWxlZEZuQ29kZSgpO1xuXG4gICAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVkZW50KFxuICAgICAgICAgICAgICAgIGAoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9fZiQ9JHtjb2RlfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJncyAgICAgICAgICAgPSBfX2RlcGVuZGVuY2llcyQuYm91bmRBcmdzIHx8IGFyZ3VtZW50cztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvckZpbHRlciA9IF9fZGVwZW5kZW5jaWVzJC5zZWxlY3RvckZpbHRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5vZGVzID0gX19mJC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzICAgICA9IHNlbGVjdG9yRmlsdGVyLmNhc3Qobm9kZXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGVzLmxlbmd0aCAmJiAhc2VsZWN0b3JGaWx0ZXIuZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JGaWx0ZXIuZXJyb3IgPSBfX2RlcGVuZGVuY2llcyQuYXBpSW5mby5hcGlGbklEO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0b3JGaWx0ZXIuZmlsdGVyKG5vZGVzLCBfX2RlcGVuZGVuY2llcyQuZmlsdGVyT3B0aW9ucywgX19kZXBlbmRlbmNpZXMkLmFwaUluZm8pO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICB9KSgpO2BcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBfY3JlYXRlSW52YWxpZEZuVHlwZUVycm9yICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRGdW5jdGlvbkFQSUVycm9yKHRoaXMuY2FsbHNpdGVOYW1lcy5pbnN0YW50aWF0aW9uLCB0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbiwgUlVOVElNRV9FUlJPUlMuc2VsZWN0b3JJbml0aWFsaXplZFdpdGhXcm9uZ1R5cGUsIHR5cGVvZiB0aGlzLmZuKTtcbiAgICB9XG5cbiAgICBfZXhlY3V0ZUNvbW1hbmQgKGFyZ3MsIHRlc3RSdW4sIGNhbGxzaXRlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdFByb21pc2UgPSBzdXBlci5fZXhlY3V0ZUNvbW1hbmQoYXJncywgdGVzdFJ1biwgdGhpcy5jYWxsc2l0ZSB8fCBjYWxsc2l0ZSk7XG5cbiAgICAgICAgdGhpcy5fYWRkQm91bmRBcmdzU2VsZWN0b3JHZXR0ZXIocmVzdWx0UHJvbWlzZSwgYXJncyk7XG5cbiAgICAgICAgLy8gT1BUSU1JWkFUSU9OOiB1c2UgYnVmZmVyIGZ1bmN0aW9uIGFzIHNlbGVjdG9yIG5vdCB0byB0cmlnZ2VyIGxhenkgcHJvcGVydHkgYWhlYWQgb2YgdGltZVxuICAgICAgICBhZGRBUEkocmVzdWx0UHJvbWlzZSwgKCkgPT4gcmVzdWx0UHJvbWlzZS5zZWxlY3RvciwgU2VsZWN0b3JCdWlsZGVyLCB0aGlzLm9wdGlvbnMuY3VzdG9tRE9NUHJvcGVydGllcywgdGhpcy5vcHRpb25zLmN1c3RvbU1ldGhvZHMpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHRQcm9taXNlO1xuICAgIH1cblxuICAgIF9nZXRTb3VyY2VTZWxlY3RvckJ1aWxkZXJBcGlGbklEICgpIHtcbiAgICAgICAgbGV0IHNlbGVjdG9yQW5jZXN0b3IgPSB0aGlzO1xuXG4gICAgICAgIHdoaWxlIChzZWxlY3RvckFuY2VzdG9yLm9wdGlvbnMuc291cmNlU2VsZWN0b3JCdWlsZGVyKVxuICAgICAgICAgICAgc2VsZWN0b3JBbmNlc3RvciA9IHNlbGVjdG9yQW5jZXN0b3Iub3B0aW9ucy5zb3VyY2VTZWxlY3RvckJ1aWxkZXI7XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdG9yQW5jZXN0b3Iub3B0aW9ucy5hcGlGbklEO1xuICAgIH1cblxuICAgIGdldEZ1bmN0aW9uRGVwZW5kZW5jaWVzICgpIHtcbiAgICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gc3VwZXIuZ2V0RnVuY3Rpb25EZXBlbmRlbmNpZXMoKTtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBmaWx0ZXJWaXNpYmxlLFxuICAgICAgICAgICAgZmlsdGVySGlkZGVuLFxuICAgICAgICAgICAgY291bnRlck1vZGUsXG4gICAgICAgICAgICBjb2xsZWN0aW9uTW9kZSxcbiAgICAgICAgICAgIGdldFZpc2libGVWYWx1ZU1vZGUsXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGN1c3RvbURPTVByb3BlcnRpZXMsXG4gICAgICAgICAgICBjdXN0b21NZXRob2RzLFxuICAgICAgICAgICAgYXBpRm5DaGFpbixcbiAgICAgICAgICAgIGJvdW5kQXJncyxcbiAgICAgICAgfSA9IHRoaXMub3B0aW9ucztcblxuICAgICAgICByZXR1cm4gbWVyZ2Uoe30sIGRlcGVuZGVuY2llcywge1xuICAgICAgICAgICAgZmlsdGVyT3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGZpbHRlclZpc2libGUsXG4gICAgICAgICAgICAgICAgZmlsdGVySGlkZGVuLFxuICAgICAgICAgICAgICAgIGNvdW50ZXJNb2RlLFxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25Nb2RlLFxuICAgICAgICAgICAgICAgIGluZGV4OiBpc051bGxPclVuZGVmaW5lZChpbmRleCkgPyBudWxsIDogaW5kZXgsXG4gICAgICAgICAgICAgICAgZ2V0VmlzaWJsZVZhbHVlTW9kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcGlJbmZvOiB7XG4gICAgICAgICAgICAgICAgYXBpRm5DaGFpbixcbiAgICAgICAgICAgICAgICBhcGlGbklEOiB0aGlzLl9nZXRTb3VyY2VTZWxlY3RvckJ1aWxkZXJBcGlGbklEKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYm91bmRBcmdzLFxuICAgICAgICAgICAgY3VzdG9tRE9NUHJvcGVydGllcyxcbiAgICAgICAgICAgIGN1c3RvbU1ldGhvZHMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9jcmVhdGVUZXN0UnVuQ29tbWFuZCAoZW5jb2RlZEFyZ3MsIGVuY29kZWREZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFeGVjdXRlU2VsZWN0b3JDb21tYW5kKHtcbiAgICAgICAgICAgIGluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWU6IHRoaXMuY2FsbHNpdGVOYW1lcy5pbnN0YW50aWF0aW9uLFxuICAgICAgICAgICAgZm5Db2RlOiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21waWxlZEZuQ29kZSxcbiAgICAgICAgICAgIGFyZ3M6ICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRBcmdzLFxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiAgICAgICAgICAgICAgZW5jb2RlZERlcGVuZGVuY2llcyxcbiAgICAgICAgICAgIG5lZWRFcnJvcjogICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5uZWVkRXJyb3IsXG4gICAgICAgICAgICBhcGlGbkNoYWluOiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuYXBpRm5DaGFpbixcbiAgICAgICAgICAgIHZpc2liaWxpdHlDaGVjazogICAgICAgICAgICEhdGhpcy5vcHRpb25zLnZpc2liaWxpdHlDaGVjayxcbiAgICAgICAgICAgIHRpbWVvdXQ6ICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy50aW1lb3V0LFxuICAgICAgICAgICAgc3RyaWN0RXJyb3I6ICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnN0cmljdEVycm9yLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfdmFsaWRhdGVPcHRpb25zIChvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyLl92YWxpZGF0ZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChvcHRpb25zLnZpc2liaWxpdHlDaGVjaykpXG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLmJvb2xlYW4sIHRoaXMuY2FsbHNpdGVOYW1lcy5pbnN0YW50aWF0aW9uLCAnVGhlIFwidmlzaWJpbGl0eUNoZWNrXCIgb3B0aW9uJywgb3B0aW9ucy52aXNpYmlsaXR5Q2hlY2spO1xuXG4gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQob3B0aW9ucy50aW1lb3V0KSlcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXIsIHRoaXMuY2FsbHNpdGVOYW1lcy5pbnN0YW50aWF0aW9uLCAnVGhlIFwidGltZW91dFwiIG9wdGlvbicsIG9wdGlvbnMudGltZW91dCk7XG4gICAgfVxuXG4gICAgX2dldFJlcGxpY2F0b3JUcmFuc2Zvcm1zICgpIHtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtcyA9IHN1cGVyLl9nZXRSZXBsaWNhdG9yVHJhbnNmb3JtcygpO1xuXG4gICAgICAgIHRyYW5zZm9ybXMucHVzaChuZXcgU2VsZWN0b3JOb2RlVHJhbnNmb3JtKCkpO1xuXG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm1zO1xuICAgIH1cblxuICAgIF9hZGRCb3VuZEFyZ3NTZWxlY3RvckdldHRlciAob2JqLCBzZWxlY3RvckFyZ3MpIHtcbiAgICAgICAgZGVmaW5lTGF6eVByb3BlcnR5KG9iaiwgJ3NlbGVjdG9yJywgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBTZWxlY3RvckJ1aWxkZXIodGhpcy5nZXRGdW5jdGlvbigpLCB7IGJvdW5kQXJnczogc2VsZWN0b3JBcmdzIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gYnVpbGRlci5nZXRGdW5jdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfZGVjb3JhdGVGdW5jdGlvbiAoc2VsZWN0b3JGbikge1xuICAgICAgICBzdXBlci5fZGVjb3JhdGVGdW5jdGlvbihzZWxlY3RvckZuKTtcblxuICAgICAgICBhZGRBUEkoXG4gICAgICAgICAgICBzZWxlY3RvckZuLFxuICAgICAgICAgICAgKCkgPT4gc2VsZWN0b3JGbixcbiAgICAgICAgICAgIFNlbGVjdG9yQnVpbGRlcixcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21ET01Qcm9wZXJ0aWVzLFxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmN1c3RvbU1ldGhvZHMsXG4gICAgICAgICAgICB0aGlzLl9nZXRPYnNlcnZlZENhbGxzaXRlcygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2dldENsaWVudEZuV2l0aE92ZXJyaWRkZW5PcHRpb25zIChvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGFwaUZuICAgICAgICAgICAgICA9IHByZXBhcmVBcGlGbkFyZ3MoJ3dpdGgnLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNTZWxlY3RvcklEID0gdGhpcy5vcHRpb25zLmFwaUZuQ2hhaW4ubGVuZ3RoIC0gMTtcblxuICAgICAgICByZXR1cm4gc3VwZXIuX2dldENsaWVudEZuV2l0aE92ZXJyaWRkZW5PcHRpb25zKE9iamVjdC5hc3NpZ24ob3B0aW9ucywgeyBhcGlGbiwgYXBpRm5JRDogcHJldmlvdXNTZWxlY3RvcklEIH0pKTtcbiAgICB9XG5cbiAgICBfcHJvY2Vzc1Jlc3VsdCAocmVzdWx0LCBzZWxlY3RvckFyZ3MpIHtcbiAgICAgICAgY29uc3Qgc25hcHNob3QgPSBzdXBlci5fcHJvY2Vzc1Jlc3VsdChyZXN1bHQsIHNlbGVjdG9yQXJncyk7XG5cbiAgICAgICAgaWYgKHNuYXBzaG90ICYmICFyZXR1cm5TaW5nbGVQcm9wTW9kZSh0aGlzLm9wdGlvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLl9hZGRCb3VuZEFyZ3NTZWxlY3RvckdldHRlcihzbmFwc2hvdCwgc2VsZWN0b3JBcmdzKTtcbiAgICAgICAgICAgIGNyZWF0ZVNuYXBzaG90TWV0aG9kcyhzbmFwc2hvdCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tTWV0aG9kcylcbiAgICAgICAgICAgICAgICBhZGRDdXN0b21NZXRob2RzKHNuYXBzaG90LCAoKSA9PiBzbmFwc2hvdC5zZWxlY3RvciwgU2VsZWN0b3JCdWlsZGVyLCB0aGlzLm9wdGlvbnMuY3VzdG9tTWV0aG9kcyk7XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RvckFwaUV4ZWN1dGlvbk1vZGUuaXNTeW5jKSB7XG4gICAgICAgICAgICAgICAgYWRkQVBJKFxuICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCxcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4gc25hcHNob3Quc2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIFNlbGVjdG9yQnVpbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmN1c3RvbURPTVByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21NZXRob2RzLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9nZXRPYnNlcnZlZENhbGxzaXRlcygpLFxuICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzbmFwc2hvdDtcbiAgICB9XG59XG5cbiJdfQ==
@@ -16,26 +16,26 @@ const ES6_OBJ_METHOD_NAME_RE = /^(\S+?)\s*\(/;
16
16
  const USE_STRICT_RE = /^('|")use strict('|");?/;
17
17
  const TRAILING_SEMICOLON_RE = /;\s*$/;
18
18
  const REGENERATOR_FOOTPRINTS_RE = /(_index\d+\.default|_regenerator\d+\.default|regeneratorRuntime)(\(\))?\.wrap\(function func\$\(_context\)/;
19
- const ASYNC_TO_GENERATOR_OUTPUT_CODE = format_babel_produced_code_1.default(asyncToGenerator_1.default(lodash_1.noop).toString());
19
+ const ASYNC_TO_GENERATOR_OUTPUT_CODE = (0, format_babel_produced_code_1.default)((0, asyncToGenerator_1.default)(lodash_1.noop).toString());
20
20
  const CLIENT_FUNCTION_BODY_WRAPPER = code => `const func = (${code});`;
21
21
  const CLIENT_FUNCTION_WRAPPER = ({ code, dependencies }) => `(function(){${dependencies} ${code} return func;})();`;
22
22
  let loadedBabelOptions = null;
23
23
  function getBabelOptions() {
24
- const { presetEnvForClientFunction, transformForOfAsArray } = load_libs_1.default();
24
+ const { presetEnvForClientFunction, transformForOfAsArray } = (0, load_libs_1.default)();
25
25
  return Object.assign({}, get_base_babel_options_1.default, {
26
26
  presets: [{ plugins: [transformForOfAsArray] }, presetEnvForClientFunction],
27
27
  });
28
28
  }
29
29
  function ensureLoadedBabelOptions() {
30
30
  if (!loadedBabelOptions) {
31
- const { babel } = load_libs_1.default();
31
+ const { babel } = (0, load_libs_1.default)();
32
32
  const opts = getBabelOptions();
33
33
  loadedBabelOptions = babel.loadOptions(opts);
34
34
  }
35
35
  return loadedBabelOptions;
36
36
  }
37
37
  function downgradeES(fnCode) {
38
- const { babel } = load_libs_1.default();
38
+ const { babel } = (0, load_libs_1.default)();
39
39
  const opts = ensureLoadedBabelOptions();
40
40
  const compiled = babel.transform(fnCode, opts);
41
41
  return compiled.code
@@ -60,7 +60,7 @@ function makeFnCodeSuitableForParsing(fnCode) {
60
60
  return fnCode;
61
61
  }
62
62
  function containsAsyncToGeneratorOutputCode(code) {
63
- const formattedCode = format_babel_produced_code_1.default(code);
63
+ const formattedCode = (0, format_babel_produced_code_1.default)(code);
64
64
  return formattedCode.includes(ASYNC_TO_GENERATOR_OUTPUT_CODE);
65
65
  }
66
66
  function compileClientFunction(fnCode, dependencies, instantiationCallsiteName, compilationCallsiteName) {
@@ -81,4 +81,4 @@ function compileClientFunction(fnCode, dependencies, instantiationCallsiteName,
81
81
  }
82
82
  exports.default = compileClientFunction;
83
83
  module.exports = exports.default;
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS1jbGllbnQtZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcGlsZXIvY29tcGlsZS1jbGllbnQtZnVuY3Rpb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4RUFBNkM7QUFDN0MsK0ZBQXVFO0FBQ3ZFLG1DQUE4QjtBQUM5QixrRUFBOEM7QUFDOUMsK0NBQTJEO0FBQzNELDJDQUFpRDtBQUNqRCxvR0FBeUU7QUFDekUsNEZBQWdFO0FBRWhFLE1BQU0sZUFBZSxHQUFrQixzQkFBc0IsQ0FBQztBQUM5RCxNQUFNLHNCQUFzQixHQUFXLGNBQWMsQ0FBQztBQUN0RCxNQUFNLGFBQWEsR0FBb0IseUJBQXlCLENBQUM7QUFDakUsTUFBTSxxQkFBcUIsR0FBWSxPQUFPLENBQUM7QUFDL0MsTUFBTSx5QkFBeUIsR0FBUSw0R0FBNEcsQ0FBQztBQUNwSixNQUFNLDhCQUE4QixHQUFHLG9DQUF1QixDQUFDLDBCQUFnQixDQUFDLGFBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFFbEcsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQztBQUN2RSxNQUFNLHVCQUF1QixHQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLGVBQWUsWUFBWSxJQUFJLElBQUksb0JBQW9CLENBQUM7QUFFekgsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFFOUIsU0FBUyxlQUFlO0lBQ3BCLE1BQU0sRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBRSxHQUFHLG1CQUFhLEVBQUUsQ0FBQztJQUU5RSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGdDQUFrQixFQUFFO1FBQ3pDLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLDBC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LENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUUzRixPQUFPLHVCQUF1QixDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0FBQzNGLENBQUM7QUF2QkQsd0NBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGhhbW1lcmhlYWQgZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5pbXBvcnQgYXN5bmNUb0dlbmVyYXRvciBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3InO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9hZEJhYmVsTGlicyBmcm9tICcuL2JhYmVsL2xvYWQtbGlicyc7XG5pbXBvcnQgeyBDbGllbnRGdW5jdGlvbkFQSUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IGZvcm1hdEJhYmVsUHJvZHVjZWRDb2RlIGZyb20gJy4vYmFiZWwvZm9ybWF0LWJhYmVsLXByb2R1Y2VkLWNvZGUnO1xuaW1wb3J0IEJBU0VfQkFCRUxfT1BUSU9OUyBmcm9tICcuL2JhYmVsL2dldC1iYXNlLWJhYmVsLW9wdGlvbnMnO1xuXG5jb25zdCBBTk9OWU1PVVNfRk5fUkUgICAgICAgICAgICAgICAgPSAvXmZ1bmN0aW9uXFxzKlxcKj9cXHMqXFwoLztcbmNvbnN0IEVTNl9PQkpfTUVUSE9EX05BTUVfUkUgICAgICAgICA9IC9eKFxcUys/KVxccypcXCgvO1xuY29uc3QgVVNFX1NUUklDVF9SRSAgICAgICAgICAgICAgICAgID0gL14oJ3xcIil1c2Ugc3RyaWN0KCd8XCIpOz8vO1xuY29uc3QgVFJBSUxJTkdfU0VNSUNPTE9OX1JFICAgICAgICAgID0gLztcXHMqJC87XG5jb25zdCBSRUdFTkVSQVRPUl9GT09UUFJJTlRTX1JFICAgICAgPSAvKF9pbmRleFxcZCtcXC5kZWZhdWx0fF9yZWdlbmVyYXRvclxcZCtcXC5kZWZhdWx0fHJlZ2VuZXJhdG9yUnVudGltZSkoXFwoXFwpKT9cXC53cmFwXFwoZnVuY3Rpb24gZnVuY1xcJFxcKF9jb250ZXh0XFwpLztcbmNvbnN0IEFTWU5DX1RPX0dFTkVSQVRPUl9PVVRQVVRfQ09ERSA9IGZvcm1hdEJhYmVsUHJvZHVjZWRDb2RlKGFzeW5jVG9HZW5lcmF0b3Iobm9vcCkudG9TdHJpbmcoKSk7XG5cbmNvbnN0IENMSUVOVF9GVU5DVElPTl9CT0RZX1dSQVBQRVIgPSBjb2RlID0+IGBjb25zdCBmdW5jID0gKCR7Y29kZX0pO2A7XG5jb25zdCBDTElFTlRfRlVOQ1RJT05fV1JBUFBFUiAgICAgID0gKHsgY29kZSwgZGVwZW5kZW5jaWVzIH0pID0+IGAoZnVuY3Rpb24oKXske2RlcGVuZGVuY2llc30gJHtjb2RlfSByZXR1cm4gZnVuYzt9KSgpO2A7XG5cbmxldCBsb2FkZWRCYWJlbE9wdGlvbnMgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRCYWJlbE9wdGlvbnMgKCkge1xuICAgIGNvbnN0IHsgcHJlc2V0RW52Rm9yQ2xpZW50RnVuY3Rpb24sIHRyYW5zZm9ybUZvck9mQXNBcnJheSB9ID0gbG9hZEJhYmVsTGlicygpO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIEJBU0VfQkFCRUxfT1BUSU9OUywge1xuICAgICAgICBwcmVzZXRzOiBbeyBwbHVnaW5zOiBbdHJhbnNmb3JtRm9yT2ZBc0FycmF5XSB9LCBwcmVzZXRFbnZGb3JDbGllbnRGdW5jdGlvbl0sXG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZUxvYWRlZEJhYmVsT3B0aW9ucyAoKSB7XG4gICAgaWYgKCFsb2FkZWRCYWJlbE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBiYWJlbCB9ID0gbG9hZEJhYmVsTGlicygpO1xuICAgICAgICBjb25zdCBvcHRzICAgICAgPSBnZXRCYWJlbE9wdGlvbnMoKTtcblxuICAgICAgICBsb2FkZWRCYWJlbE9wdGlvbnMgPSBiYWJlbC5sb2FkT3B0aW9ucyhvcHRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbG9hZGVkQmFiZWxPcHRpb25zO1xufVxuXG5mdW5jdGlvbiBkb3duZ3JhZGVFUyAoZm5Db2RlKSB7XG4gICAgY29uc3QgeyBiYWJlbCB9ID0gbG9hZEJhYmVsTGlicygpO1xuICAgIGNvbnN0IG9wdHMgICAgICA9IGVuc3VyZUxvYWRlZEJhYmVsT3B0aW9ucygpO1xuICAgIGNvbnN0IGNvbXBpbGVkICA9IGJhYmVsLnRyYW5zZm9ybShmbkNvZGUsIG9wdHMpO1xuXG4gICAgcmV0dXJuIGNvbXBpbGVkLmNvZGVcbiAgICAgICAgLnJlcGxhY2UoVVNFX1NUUklDVF9SRSwgJycpXG4gICAgICAgIC50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGdldERlcGVuZGVuY2llc0RlZmluaXRpb24gKGRlcGVuZGVuY2llcykge1xuICAgIHJldHVybiBPYmplY3RcbiAgICAgICAgLmtleXMoZGVwZW5kZW5jaWVzKVxuICAgICAgICAucmVkdWNlKChjb2RlLCBuYW1lKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY29kZSArIGB2YXIgJHtuYW1lfT1fX2RlcGVuZGVuY2llcyRbJyR7bmFtZX0nXTtgO1xuICAgICAgICB9LCAnJyk7XG59XG5cbmZ1bmN0aW9uIG1ha2VGbkNvZGVTdWl0YWJsZUZvclBhcnNpbmcgKGZuQ29kZSkge1xuICAgIC8vIE5PVEU6ICdmdW5jdGlvbigpIHt9JyAtPiAnKGZ1bmN0aW9uKCkge30pJ1xuICAgIGlmIChBTk9OWU1PVVNfRk5fUkUudGVzdChmbkNvZGUpKVxuICAgICAgICByZXR1cm4gYCgke2ZuQ29kZX0pYDtcblxuICAgIC8vIE5PVEU6ICdteUZuICgpIHt9JyAtPiAnZnVuY3Rpb24gbXlGbigpIHt9J1xuICAgIGNvbnN0IG1hdGNoID0gZm5Db2RlLm1hdGNoKEVTNl9PQkpfTUVUSE9EX05BTUVfUkUpO1xuXG4gICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICByZXR1cm4gYGZ1bmN0aW9uICR7Zm5Db2RlfWA7XG5cbiAgICByZXR1cm4gZm5Db2RlO1xufVxuXG5mdW5jdGlvbiBjb250YWluc0FzeW5jVG9HZW5lcmF0b3JPdXRwdXRDb2RlIChjb2RlKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkQ29kZSA9IGZvcm1hdEJhYmVsUHJvZHVjZWRDb2RlKGNvZGUpO1xuXG4gICAgcmV0dXJuIGZvcm1hdHRlZENvZGUuaW5jbHVkZXMoQVNZTkNfVE9fR0VORVJBVE9SX09VVFBVVF9DT0RFKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcGlsZUNsaWVudEZ1bmN0aW9uIChmbkNvZGUsIGRlcGVuZGVuY2llcywgaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZSwgY29tcGlsYXRpb25DYWxsc2l0ZU5hbWUpIHtcbiAgICBpZiAoY29udGFpbnNBc3luY1RvR2VuZXJhdG9yT3V0cHV0Q29kZShmbkNvZGUpKVxuICAgICAgICB0aHJvdyBuZXcgQ2xpZW50RnVuY3Rpb25BUElFcnJvcihjb21waWxhdGlvbkNhbGxzaXRlTmFtZSwgaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZSwgUlVOVElNRV9FUlJPUlMucmVnZW5lcmF0b3JJbkNsaWVudEZ1bmN0aW9uQ29kZSk7XG5cbiAgICBmbkNvZGUgPSBtYWtlRm5Db2RlU3VpdGFibGVGb3JQYXJzaW5nKGZuQ29kZSk7XG5cblxuICAgIGZuQ29kZSA9IENMSUVOVF9GVU5DVElPTl9CT0RZX1dSQVBQRVIoZm5Db2RlKTtcblxuICAgIC8vIE5PVEU6IHdlIG5lZWQgdG8gcmVjb21waWxlIEVTNiBjb2RlIGZvciB0aGUgYnJvd3NlciBpZiB3ZSBhcmUgb24gbmV3ZXIgdmVyc2lvbnMgb2YgTm9kZS5cbiAgICBmbkNvZGUgPSBkb3duZ3JhZGVFUyhmbkNvZGUpO1xuICAgIGZuQ29kZSA9IGhhbW1lcmhlYWQucHJvY2Vzc1NjcmlwdChmbkNvZGUsIGZhbHNlKTtcblxuICAgIC8vIE5PVEU6IGNoZWNrIGNvbXBpbGVkIGNvZGUgZm9yIHJlZ2VuZXJhdG9yIGluamVjdGlvblxuICAgIGlmIChSRUdFTkVSQVRPUl9GT09UUFJJTlRTX1JFLnRlc3QoZm5Db2RlKSlcbiAgICAgICAgdGhyb3cgbmV3IENsaWVudEZ1bmN0aW9uQVBJRXJyb3IoY29tcGlsYXRpb25DYWxsc2l0ZU5hbWUsIGluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWUsIFJVTlRJTUVfRVJST1JTLnJlZ2VuZXJhdG9ySW5DbGllbnRGdW5jdGlvbkNvZGUpO1xuXG4gICAgaWYgKCFUUkFJTElOR19TRU1JQ09MT05fUkUudGVzdChmbkNvZGUpKVxuICAgICAgICBmbkNvZGUgKz0gJzsnO1xuXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzRGVmaW5pdGlvbiA9IGRlcGVuZGVuY2llcyA/IGdldERlcGVuZGVuY2llc0RlZmluaXRpb24oZGVwZW5kZW5jaWVzKSA6ICcnO1xuXG4gICAgcmV0dXJuIENMSUVOVF9GVU5DVElPTl9XUkFQUEVSKHsgY29kZTogZm5Db2RlLCBkZXBlbmRlbmNpZXM6IGRlcGVuZGVuY2llc0RlZmluaXRpb24gfSk7XG59XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS1jbGllbnQtZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcGlsZXIvY29tcGlsZS1jbGllbnQtZnVuY3Rpb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4RUFBNkM7QUFDN0MsK0ZBQXVFO0FBQ3ZFLG1DQUE4QjtBQUM5QixrRUFBOEM7QUFDOUMsK0NBQTJEO0FBQzNELDJDQUFpRDtBQUNqRCxvR0FBeUU7QUFDekUsNEZBQWdFO0FBRWhFLE1BQU0sZUFBZSxHQUFrQixzQkFBc0IsQ0FBQztBQUM5RCxNQUFNLHNCQUFzQixHQUFXLGNBQWMsQ0FBQztBQUN0RCxNQUFNLGFBQWEsR0FBb0IseUJBQXlCLENBQUM7QUFDakUsTUFBTSxxQkFBcUIsR0FBWSxPQUFPLENBQUM7QUFDL0MsTUFBTSx5QkFBeUIsR0FBUSw0R0FBNEcsQ0FBQztBQUNwSixNQUFNLDhCQUE4QixHQUFHLElBQUEsb0NBQXVCLEVBQUMsSUFBQSwwQkFBZ0IsRUFBQyxhQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBRWxHLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUM7QUFDdkUsTUFBTSx1QkFBdUIsR0FBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxlQUFlLFlBQVksSUFBSSxJQUFJLG9CQUFvQixDQUFDO0FBRXpILElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBRTlCLFNBQVMsZUFBZTtJQUNwQixNQUFNLEVBQUUsMEJBQTBCLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxJQUFBLG1CQUFhLEdBQUUsQ0FBQztJQUU5RSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGdDQUFrQixFQUFFO1FBQ3pDLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMscUJBQXFCLENB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QUFHLFlBQVksQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUUzRixPQUFPLHVCQUF1QixDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0FBQzNGLENBQUM7QUF2QkQsd0NBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGhhbW1lcmhlYWQgZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5pbXBvcnQgYXN5bmNUb0dlbmVyYXRvciBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3InO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9hZEJhYmVsTGlicyBmcm9tICcuL2JhYmVsL2xvYWQtbGlicyc7XG5pbXBvcnQgeyBDbGllbnRGdW5jdGlvbkFQSUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IGZvcm1hdEJhYmVsUHJvZHVjZWRDb2RlIGZyb20gJy4vYmFiZWwvZm9ybWF0LWJhYmVsLXByb2R1Y2VkLWNvZGUnO1xuaW1wb3J0IEJBU0VfQkFCRUxfT1BUSU9OUyBmcm9tICcuL2JhYmVsL2dldC1iYXNlLWJhYmVsLW9wdGlvbnMnO1xuXG5jb25zdCBBTk9OWU1PVVNfRk5fUkUgICAgICAgICAgICAgICAgPSAvXmZ1bmN0aW9uXFxzKlxcKj9cXHMqXFwoLztcbmNvbnN0IEVTNl9PQkpfTUVUSE9EX05BTUVfUkUgICAgICAgICA9IC9eKFxcUys/KVxccypcXCgvO1xuY29uc3QgVVNFX1NUUklDVF9SRSAgICAgICAgICAgICAgICAgID0gL14oJ3xcIil1c2Ugc3RyaWN0KCd8XCIpOz8vO1xuY29uc3QgVFJBSUxJTkdfU0VNSUNPTE9OX1JFICAgICAgICAgID0gLztcXHMqJC87XG5jb25zdCBSRUdFTkVSQVRPUl9GT09UUFJJTlRTX1JFICAgICAgPSAvKF9pbmRleFxcZCtcXC5kZWZhdWx0fF9yZWdlbmVyYXRvclxcZCtcXC5kZWZhdWx0fHJlZ2VuZXJhdG9yUnVudGltZSkoXFwoXFwpKT9cXC53cmFwXFwoZnVuY3Rpb24gZnVuY1xcJFxcKF9jb250ZXh0XFwpLztcbmNvbnN0IEFTWU5DX1RPX0dFTkVSQVRPUl9PVVRQVVRfQ09ERSA9IGZvcm1hdEJhYmVsUHJvZHVjZWRDb2RlKGFzeW5jVG9HZW5lcmF0b3Iobm9vcCkudG9TdHJpbmcoKSk7XG5cbmNvbnN0IENMSUVOVF9GVU5DVElPTl9CT0RZX1dSQVBQRVIgPSBjb2RlID0+IGBjb25zdCBmdW5jID0gKCR7Y29kZX0pO2A7XG5jb25zdCBDTElFTlRfRlVOQ1RJT05fV1JBUFBFUiAgICAgID0gKHsgY29kZSwgZGVwZW5kZW5jaWVzIH0pID0+IGAoZnVuY3Rpb24oKXske2RlcGVuZGVuY2llc30gJHtjb2RlfSByZXR1cm4gZnVuYzt9KSgpO2A7XG5cbmxldCBsb2FkZWRCYWJlbE9wdGlvbnMgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRCYWJlbE9wdGlvbnMgKCkge1xuICAgIGNvbnN0IHsgcHJlc2V0RW52Rm9yQ2xpZW50RnVuY3Rpb24sIHRyYW5zZm9ybUZvck9mQXNBcnJheSB9ID0gbG9hZEJhYmVsTGlicygpO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIEJBU0VfQkFCRUxfT1BUSU9OUywge1xuICAgICAgICBwcmVzZXRzOiBbeyBwbHVnaW5zOiBbdHJhbnNmb3JtRm9yT2ZBc0FycmF5XSB9LCBwcmVzZXRFbnZGb3JDbGllbnRGdW5jdGlvbl0sXG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZUxvYWRlZEJhYmVsT3B0aW9ucyAoKSB7XG4gICAgaWYgKCFsb2FkZWRCYWJlbE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBiYWJlbCB9ID0gbG9hZEJhYmVsTGlicygpO1xuICAgICAgICBjb25zdCBvcHRzICAgICAgPSBnZXRCYWJlbE9wdGlvbnMoKTtcblxuICAgICAgICBsb2FkZWRCYWJlbE9wdGlvbnMgPSBiYWJlbC5sb2FkT3B0aW9ucyhvcHRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbG9hZGVkQmFiZWxPcHRpb25zO1xufVxuXG5mdW5jdGlvbiBkb3duZ3JhZGVFUyAoZm5Db2RlKSB7XG4gICAgY29uc3QgeyBiYWJlbCB9ID0gbG9hZEJhYmVsTGlicygpO1xuICAgIGNvbnN0IG9wdHMgICAgICA9IGVuc3VyZUxvYWRlZEJhYmVsT3B0aW9ucygpO1xuICAgIGNvbnN0IGNvbXBpbGVkICA9IGJhYmVsLnRyYW5zZm9ybShmbkNvZGUsIG9wdHMpO1xuXG4gICAgcmV0dXJuIGNvbXBpbGVkLmNvZGVcbiAgICAgICAgLnJlcGxhY2UoVVNFX1NUUklDVF9SRSwgJycpXG4gICAgICAgIC50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGdldERlcGVuZGVuY2llc0RlZmluaXRpb24gKGRlcGVuZGVuY2llcykge1xuICAgIHJldHVybiBPYmplY3RcbiAgICAgICAgLmtleXMoZGVwZW5kZW5jaWVzKVxuICAgICAgICAucmVkdWNlKChjb2RlLCBuYW1lKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY29kZSArIGB2YXIgJHtuYW1lfT1fX2RlcGVuZGVuY2llcyRbJyR7bmFtZX0nXTtgO1xuICAgICAgICB9LCAnJyk7XG59XG5cbmZ1bmN0aW9uIG1ha2VGbkNvZGVTdWl0YWJsZUZvclBhcnNpbmcgKGZuQ29kZSkge1xuICAgIC8vIE5PVEU6ICdmdW5jdGlvbigpIHt9JyAtPiAnKGZ1bmN0aW9uKCkge30pJ1xuICAgIGlmIChBTk9OWU1PVVNfRk5fUkUudGVzdChmbkNvZGUpKVxuICAgICAgICByZXR1cm4gYCgke2ZuQ29kZX0pYDtcblxuICAgIC8vIE5PVEU6ICdteUZuICgpIHt9JyAtPiAnZnVuY3Rpb24gbXlGbigpIHt9J1xuICAgIGNvbnN0IG1hdGNoID0gZm5Db2RlLm1hdGNoKEVTNl9PQkpfTUVUSE9EX05BTUVfUkUpO1xuXG4gICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICByZXR1cm4gYGZ1bmN0aW9uICR7Zm5Db2RlfWA7XG5cbiAgICByZXR1cm4gZm5Db2RlO1xufVxuXG5mdW5jdGlvbiBjb250YWluc0FzeW5jVG9HZW5lcmF0b3JPdXRwdXRDb2RlIChjb2RlKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkQ29kZSA9IGZvcm1hdEJhYmVsUHJvZHVjZWRDb2RlKGNvZGUpO1xuXG4gICAgcmV0dXJuIGZvcm1hdHRlZENvZGUuaW5jbHVkZXMoQVNZTkNfVE9fR0VORVJBVE9SX09VVFBVVF9DT0RFKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcGlsZUNsaWVudEZ1bmN0aW9uIChmbkNvZGUsIGRlcGVuZGVuY2llcywgaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZSwgY29tcGlsYXRpb25DYWxsc2l0ZU5hbWUpIHtcbiAgICBpZiAoY29udGFpbnNBc3luY1RvR2VuZXJhdG9yT3V0cHV0Q29kZShmbkNvZGUpKVxuICAgICAgICB0aHJvdyBuZXcgQ2xpZW50RnVuY3Rpb25BUElFcnJvcihjb21waWxhdGlvbkNhbGxzaXRlTmFtZSwgaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZSwgUlVOVElNRV9FUlJPUlMucmVnZW5lcmF0b3JJbkNsaWVudEZ1bmN0aW9uQ29kZSk7XG5cbiAgICBmbkNvZGUgPSBtYWtlRm5Db2RlU3VpdGFibGVGb3JQYXJzaW5nKGZuQ29kZSk7XG5cblxuICAgIGZuQ29kZSA9IENMSUVOVF9GVU5DVElPTl9CT0RZX1dSQVBQRVIoZm5Db2RlKTtcblxuICAgIC8vIE5PVEU6IHdlIG5lZWQgdG8gcmVjb21waWxlIEVTNiBjb2RlIGZvciB0aGUgYnJvd3NlciBpZiB3ZSBhcmUgb24gbmV3ZXIgdmVyc2lvbnMgb2YgTm9kZS5cbiAgICBmbkNvZGUgPSBkb3duZ3JhZGVFUyhmbkNvZGUpO1xuICAgIGZuQ29kZSA9IGhhbW1lcmhlYWQucHJvY2Vzc1NjcmlwdChmbkNvZGUsIGZhbHNlKTtcblxuICAgIC8vIE5PVEU6IGNoZWNrIGNvbXBpbGVkIGNvZGUgZm9yIHJlZ2VuZXJhdG9yIGluamVjdGlvblxuICAgIGlmIChSRUdFTkVSQVRPUl9GT09UUFJJTlRTX1JFLnRlc3QoZm5Db2RlKSlcbiAgICAgICAgdGhyb3cgbmV3IENsaWVudEZ1bmN0aW9uQVBJRXJyb3IoY29tcGlsYXRpb25DYWxsc2l0ZU5hbWUsIGluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWUsIFJVTlRJTUVfRVJST1JTLnJlZ2VuZXJhdG9ySW5DbGllbnRGdW5jdGlvbkNvZGUpO1xuXG4gICAgaWYgKCFUUkFJTElOR19TRU1JQ09MT05fUkUudGVzdChmbkNvZGUpKVxuICAgICAgICBmbkNvZGUgKz0gJzsnO1xuXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzRGVmaW5pdGlvbiA9IGRlcGVuZGVuY2llcyA/IGdldERlcGVuZGVuY2llc0RlZmluaXRpb24oZGVwZW5kZW5jaWVzKSA6ICcnO1xuXG4gICAgcmV0dXJuIENMSUVOVF9GVU5DVElPTl9XUkFQUEVSKHsgY29kZTogZm5Db2RlLCBkZXBlbmRlbmNpZXM6IGRlcGVuZGVuY2llc0RlZmluaXRpb24gfSk7XG59XG4iXX0=
@@ -13,21 +13,21 @@ const SOURCE_CHUNK_LENGTH = 1000;
13
13
  class Compiler {
14
14
  constructor(sources, compilerOptions, { isCompilerServiceMode, baseUrl } = {}) {
15
15
  this.sources = sources;
16
- compilers_1.initTestFileCompilers(compilerOptions, { isCompilerServiceMode, baseUrl });
16
+ (0, compilers_1.initTestFileCompilers)(compilerOptions, { isCompilerServiceMode, baseUrl });
17
17
  }
18
18
  static getSupportedTestFileExtensions() {
19
- return lodash_1.uniq(lodash_1.flattenDeep(compilers_1.getTestFileCompilers().map(compiler => compiler.getSupportedExtension())));
19
+ return (0, lodash_1.uniq)((0, lodash_1.flattenDeep)((0, compilers_1.getTestFileCompilers)().map(compiler => compiler.getSupportedExtension())));
20
20
  }
21
21
  async _createTestFileInfo(filename) {
22
22
  let code = null;
23
23
  try {
24
- code = await promisified_functions_1.readFile(filename);
24
+ code = await (0, promisified_functions_1.readFile)(filename);
25
25
  }
26
26
  catch (err) {
27
27
  throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.cannotFindSpecifiedTestSource, filename);
28
28
  }
29
- code = strip_bom_1.default(code).toString();
30
- const compiler = lodash_1.find(compilers_1.getTestFileCompilers(), someCompiler => someCompiler.canCompile(code, filename));
29
+ code = (0, strip_bom_1.default)(code).toString();
30
+ const compiler = (0, lodash_1.find)((0, compilers_1.getTestFileCompilers)(), someCompiler => someCompiler.canCompile(code, filename));
31
31
  if (!compiler)
32
32
  return null;
33
33
  return {
@@ -78,17 +78,17 @@ class Compiler {
78
78
  async getTests() {
79
79
  // NOTE: split sources into chunks because the fs module can't read all files
80
80
  // simultaneously if the number of them is too large (several thousands).
81
- const sourceChunks = lodash_1.chunk(this.sources, SOURCE_CHUNK_LENGTH);
81
+ const sourceChunks = (0, lodash_1.chunk)(this.sources, SOURCE_CHUNK_LENGTH);
82
82
  let tests = [];
83
83
  while (sourceChunks.length)
84
84
  tests = tests.concat(await this._compileTestFiles(sourceChunks.shift()));
85
85
  Compiler.cleanUp();
86
- return lodash_1.flattenDeep(tests).filter(test => !!test);
86
+ return (0, lodash_1.flattenDeep)(tests).filter(test => !!test);
87
87
  }
88
88
  static cleanUp() {
89
- compilers_1.getTestFileCompilers().forEach(compiler => compiler.cleanUp());
89
+ (0, compilers_1.getTestFileCompilers)().forEach(compiler => compiler.cleanUp());
90
90
  }
91
91
  }
92
92
  exports.default = Compiler;
93
93
  module.exports = exports.default;
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcGlsZXIvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FLZ0I7QUFFaEIsMERBQWlDO0FBQ2pDLDBFQUEwRDtBQUMxRCwrQ0FBaUQ7QUFDakQsMkNBQWlEO0FBQ2pELDJDQUEwRTtBQUcxRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQztBQUVqQyxNQUFxQixRQUFRO0lBQ3pCLFlBQWEsT0FBTyxFQUFFLGVBQWUsRUFBRSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDMUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsaUNBQXFCLENBQUMsZUFBZSxFQUFFLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsTUFBTSxDQUFDLDhCQUE4QjtRQUNqQyxPQUFPLGFBQUksQ0FBQyxvQkFBVyxDQUFDLGdDQUFvQixFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBRSxRQUFRO1FBQy9CLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUVoQixJQUFJO1lBQ0EsSUFBSSxHQUFHLE1BQU0sZ0NBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNuQztRQUNELE9BQU8sR0FBRyxFQUFFO1lBQ1IsTUFBTSxJQUFJLHNCQUFZLENBQUMsc0JBQWMsQ0FBQyw2QkFBNkIsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNsRjtRQUVELElBQUksR0FBRyxtQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpDLE1BQU0sUUFBUSxHQUFHLGFBQUksQ0FBQyxnQ0FBb0IsRUFBRSxFQUFFLFlB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QUFDLENBQUMsQ0FBQztRQUV0SSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFakIsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhO1lBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFM0MsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1YsNkVBQTZFO1FBQzdFLHlFQUF5RTtRQUN6RSxNQUFNLFlBQVksR0FBRyxjQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBRTlELElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUVmLE9BQU8sWUFBWSxDQUFDLE1BQU07WUFDdEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3RSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFbkIsT0FBTyxvQkFBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU87UUFDVixnQ0FBb0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDSjtBQTlHRCwyQkE4R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGZsYXR0ZW5EZWVwLFxuICAgIGZpbmQsXG4gICAgY2h1bmssXG4gICAgdW5pcSxcbn0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHN0cmlwQm9tIGZyb20gJ3N0cmlwLWJvbSc7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJy4uL3V0aWxzL3Byb21pc2lmaWVkLWZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBnZXRUZXN0RmlsZUNvbXBpbGVycywgaW5pdFRlc3RGaWxlQ29tcGlsZXJzIH0gZnJvbSAnLi9jb21waWxlcnMnO1xuXG5cbmNvbnN0IFNPVVJDRV9DSFVOS19MRU5HVEggPSAxMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21waWxlciB7XG4gICAgY29uc3RydWN0b3IgKHNvdXJjZXMsIGNvbXBpbGVyT3B0aW9ucywgeyBpc0NvbXBpbGVyU2VydmljZU1vZGUsIGJhc2VVcmwgfSA9IHt9ICkge1xuICAgICAgICB0aGlzLnNvdXJjZXMgPSBzb3VyY2VzO1xuXG4gICAgICAgIGluaXRUZXN0RmlsZUNvbXBpbGVycyhjb21waWxlck9wdGlvbnMsIHsgaXNDb21waWxlclNlcnZpY2VNb2RlLCBiYXNlVXJsIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRTdXBwb3J0ZWRUZXN0RmlsZUV4dGVuc2lvbnMgKCkge1xuICAgICAgICByZXR1cm4gdW5pcShmbGF0dGVuRGVlcChnZXRUZXN0RmlsZUNvbXBpbGVycygpLm1hcChjb21waWxlciA9PiBjb21waWxlci5nZXRTdXBwb3J0ZWRFeHRlbnNpb24oKSkpKTtcbiAgICB9XG5cbiAgICBhc3luYyBfY3JlYXRlVGVzdEZpbGVJbmZvIChmaWxlbmFtZSkge1xuICAgICAgICBsZXQgY29kZSA9IG51bGw7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvZGUgPSBhd2FpdCByZWFkRmlsZShmaWxlbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5jYW5ub3RGaW5kU3BlY2lmaWVkVGVzdFNvdXJjZSwgZmlsZW5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29kZSA9IHN0cmlwQm9tKGNvZGUpLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgY29uc3QgY29tcGlsZXIgPSBmaW5kKGdldFRlc3RGaWxlQ29tcGlsZXJzKCksIHNvbWVDb21waWxlciA9PiBzb21lQ29tcGlsZXIuY2FuQ29tcGlsZShjb2RlLCBmaWxlbmFtZSkpO1xuXG4gICAgICAgIGlmICghY29tcGlsZXIpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgY29tcGlsZXIsXG5cbiAgICAgICAgICAgIGNvbXBpbGVkQ29kZTogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyBfY3JlYXRlVGVzdEZpbGVzSW5mbyAoZmlsZW5hbWVzKSB7XG4gICAgICAgIGNvbnN0IHRlc3RGaWxlc0luZm8gPSBhd2FpdCBQcm9taXNlLmFsbChmaWxlbmFtZXMubWFwKGZpbGVuYW1lID0+IHRoaXMuX2NyZWF0ZVRlc3RGaWxlSW5mbyhmaWxlbmFtZSkpKTtcblxuICAgICAgICByZXR1cm4gdGVzdEZpbGVzSW5mby5maWx0ZXIoaW5mbyA9PiAhIWluZm8pO1xuICAgIH1cblxuICAgIGFzeW5jIF9wcmVjb21waWxlRmlsZXMgKGNvbXBpbGVyLCB0ZXN0RmlsZXNJbmZvKSB7XG4gICAgICAgIGlmICghY29tcGlsZXIuY2FuUHJlY29tcGlsZSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBwcmVjb21waWxlZENvZGUgPSBhd2FpdCBjb21waWxlci5wcmVjb21waWxlKHRlc3RGaWxlc0luZm8pO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVzdEZpbGVzSW5mby5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRlc3RGaWxlc0luZm9baV0uY29tcGlsZWRDb2RlID0gcHJlY29tcGlsZWRDb2RlW2ldO1xuICAgIH1cblxuICAgIF9nZXRDb21waWxlclRhc2tzICh0ZXN0RmlsZXNJbmZvKSB7XG4gICAgICAgIGNvbnN0IHRhc2tzICAgICA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICAgIGNvbnN0IGNvbXBpbGVycyA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgaW5mbyBvZiB0ZXN0RmlsZXNJbmZvKSB7XG4gICAgICAgICAgICBjb25zdCB7IGNvbXBpbGVyIH0gPSBpbmZvO1xuXG4gICAgICAgICAgICBpZiAoIXRhc2tzLmhhcyhjb21waWxlcikpIHtcbiAgICAgICAgICAgICAgICBjb21waWxlcnMucHVzaChjb21waWxlcik7XG4gICAgICAgICAgICAgICAgdGFza3Muc2V0KGNvbXBpbGVyLCBbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRhc2tzLmdldChpbmZvLmNvbXBpbGVyKS5wdXNoKGluZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbXBpbGVycy5tYXAoY29tcGlsZXIgPT4gKHsgY29tcGlsZXIsIGNvbXBpbGVyVGVzdEZpbGVzSW5mbzogdGFza3MuZ2V0KGNvbXBpbGVyKSB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgX2dldFRlc3RzICh7IGNvbXBpbGVyLCBmaWxlbmFtZSwgY29kZSwgY29tcGlsZWRDb2RlIH0pIHtcbiAgICAgICAgaWYgKGNvbXBpbGVkQ29kZSlcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBjb21waWxlci5leGVjdXRlKGNvbXBpbGVkQ29kZSwgZmlsZW5hbWUpO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBjb21waWxlci5jb21waWxlKGNvZGUsIGZpbGVuYW1lKTtcbiAgICB9XG5cbiAgICBhc3luYyBfY29tcGlsZVRlc3RGaWxlcyAoZmlsZW5hbWVzKSB7XG4gICAgICAgIGNvbnN0IHRlc3RGaWxlc0luZm8gPSBhd2FpdCB0aGlzLl9jcmVhdGVUZXN0RmlsZXNJbmZvKGZpbGVuYW1lcyk7XG4gICAgICAgIGNvbnN0IGNvbXBpbGVyVGFza3MgPSB0aGlzLl9nZXRDb21waWxlclRhc2tzKHRlc3RGaWxlc0luZm8pO1xuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGNvbXBpbGVyVGFza3MubWFwKCh7IGNvbXBpbGVyLCBjb21waWxlclRlc3RGaWxlc0luZm8gfSkgPT4gdGhpcy5fcHJlY29tcGlsZUZpbGVzKGNvbXBpbGVyLCBjb21waWxlclRlc3RGaWxlc0luZm8pKSk7XG5cbiAgICAgICAgY29uc3QgdGVzdHMgPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGluZm8gb2YgdGVzdEZpbGVzSW5mbylcbiAgICAgICAgICAgIHRlc3RzLnB1c2goYXdhaXQgdGhpcy5fZ2V0VGVzdHMoaW5mbykpO1xuXG4gICAgICAgIHJldHVybiB0ZXN0cztcbiAgICB9XG5cbiAgICBhc3luYyBnZXRUZXN0cyAoKSB7XG4gICAgICAgIC8vIE5PVEU6IHNwbGl0IHNvdXJjZXMgaW50byBjaHVua3MgYmVjYXVzZSB0aGUgZnMgbW9kdWxlIGNhbid0IHJlYWQgYWxsIGZpbGVzXG4gICAgICAgIC8vIHNpbXVsdGFuZW91c2x5IGlmIHRoZSBudW1iZXIgb2YgdGhlbSBpcyB0b28gbGFyZ2UgKHNldmVyYWwgdGhvdXNhbmRzKS5cbiAgICAgICAgY29uc3Qgc291cmNlQ2h1bmtzID0gY2h1bmsodGhpcy5zb3VyY2VzLCBTT1VSQ0VfQ0hVTktfTEVOR1RIKTtcblxuICAgICAgICBsZXQgdGVzdHMgPSBbXTtcblxuICAgICAgICB3aGlsZSAoc291cmNlQ2h1bmtzLmxlbmd0aClcbiAgICAgICAgICAgIHRlc3RzID0gdGVzdHMuY29uY2F0KGF3YWl0IHRoaXMuX2NvbXBpbGVUZXN0RmlsZXMoc291cmNlQ2h1bmtzLnNoaWZ0KCkpKTtcblxuICAgICAgICBDb21waWxlci5jbGVhblVwKCk7XG5cbiAgICAgICAgcmV0dXJuIGZsYXR0ZW5EZWVwKHRlc3RzKS5maWx0ZXIodGVzdCA9PiAhIXRlc3QpO1xuICAgIH1cblxuICAgIHN0YXRpYyBjbGVhblVwICgpIHtcbiAgICAgICAgZ2V0VGVzdEZpbGVDb21waWxlcnMoKS5mb3JFYWNoKGNvbXBpbGVyID0+IGNvbXBpbGVyLmNsZWFuVXAoKSk7XG4gICAgfVxufVxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcGlsZXIvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FLZ0I7QUFFaEIsMERBQWlDO0FBQ2pDLDBFQUEwRDtBQUMxRCwrQ0FBaUQ7QUFDakQsMkNBQWlEO0FBQ2pELDJDQUEwRTtBQUcxRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQztBQUVqQyxNQUFxQixRQUFRO0lBQ3pCLFlBQWEsT0FBTyxFQUFFLGVBQWUsRUFBRSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDMUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBQSxpQ0FBcUIsRUFBQyxlQUFlLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxNQUFNLENBQUMsOEJBQThCO1FBQ2pDLE9BQU8sSUFBQSxhQUFJLEVBQUMsSUFBQSxvQkFBVyxFQUFDLElBQUEsZ0NBQW9CLEdBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUFFLFFBQVE7UUFDL0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWhCLElBQUk7WUFDQSxJQUFJLEdBQUcsTUFBTSxJQUFBLGdDQUFRLEVBQUMsUUFBUSxDQUFDLENBQUM7U0FDbkM7UUFDRCxPQUFPLEdBQUcsRUFBRTtZQUNSLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsNkJBQTZCLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDbEY7UUFFRCxJQUFJLEdBQUcsSUFBQSxtQkFBUSxFQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpDLE1BQU0sUUFBUSxHQUFHLElBQUEsYUFBSSxFQUFDLElBQUEsZ0NBQW9CLEdBQUUsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFdkcsSUFBSSxDQUFDLFFBQVE7WUFDVCxPQUFPLElBQUksQ0FBQztRQUVoQixPQUFPO1lBQ0gsUUFBUTtZQUNSLElBQUk7WUFDSixRQUFRO1lBRVIsWUFBWSxFQUFFLElBQUk7U0FDckIsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUUsU0FBUztRQUNqQyxNQUFNLGFBQWEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkcsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUUsUUFBUSxFQUFFLGFBQWE7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhO1lBQ3ZCLE9BQU87UUFFWCxNQUFNLGVBQWUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQ3pDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxpQkFBaUIsQ0FBRSxhQUFhO1FBQzVCLE1BQU0sS0FBSyxHQUFPLElBQUksT0FBTyxFQUFFLENBQUM7UUFDaEMsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRXJCLEtBQUssTUFBTSxJQUFJLElBQUksYUFBYSxFQUFFO1lBQzlCLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFFMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RCLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pCLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzNCO1lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO1FBQ3ZELElBQUksWUFBWTtZQUNaLE9BQU8sTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUxRCxPQUFPLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBRSxTQUFTO1FBQzlCLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU1RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEksTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWpCLEtBQUssTUFBTSxJQUFJLElBQUksYUFBYTtZQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTNDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNWLDZFQUE2RTtRQUM3RSx5RUFBeUU7UUFDekUsTUFBTSxZQUFZLEdBQUcsSUFBQSxjQUFLLEVBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBRTlELElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUVmLE9BQU8sWUFBWSxDQUFDLE1BQU07WUFDdEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3RSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFbkIsT0FBTyxJQUFBLG9CQUFXLEVBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTztRQUNWLElBQUEsZ0NBQW9CLEdBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0o7QUE5R0QsMkJBOEdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBmbGF0dGVuRGVlcCxcbiAgICBmaW5kLFxuICAgIGNodW5rLFxuICAgIHVuaXEsXG59IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCBzdHJpcEJvbSBmcm9tICdzdHJpcC1ib20nO1xuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICcuLi91dGlscy9wcm9taXNpZmllZC1mdW5jdGlvbnMnO1xuaW1wb3J0IHsgR2VuZXJhbEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0VGVzdEZpbGVDb21waWxlcnMsIGluaXRUZXN0RmlsZUNvbXBpbGVycyB9IGZyb20gJy4vY29tcGlsZXJzJztcblxuXG5jb25zdCBTT1VSQ0VfQ0hVTktfTEVOR1RIID0gMTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZXIge1xuICAgIGNvbnN0cnVjdG9yIChzb3VyY2VzLCBjb21waWxlck9wdGlvbnMsIHsgaXNDb21waWxlclNlcnZpY2VNb2RlLCBiYXNlVXJsIH0gPSB7fSApIHtcbiAgICAgICAgdGhpcy5zb3VyY2VzID0gc291cmNlcztcblxuICAgICAgICBpbml0VGVzdEZpbGVDb21waWxlcnMoY29tcGlsZXJPcHRpb25zLCB7IGlzQ29tcGlsZXJTZXJ2aWNlTW9kZSwgYmFzZVVybCB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0U3VwcG9ydGVkVGVzdEZpbGVFeHRlbnNpb25zICgpIHtcbiAgICAgICAgcmV0dXJuIHVuaXEoZmxhdHRlbkRlZXAoZ2V0VGVzdEZpbGVDb21waWxlcnMoKS5tYXAoY29tcGlsZXIgPT4gY29tcGlsZXIuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9uKCkpKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgX2NyZWF0ZVRlc3RGaWxlSW5mbyAoZmlsZW5hbWUpIHtcbiAgICAgICAgbGV0IGNvZGUgPSBudWxsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb2RlID0gYXdhaXQgcmVhZEZpbGUoZmlsZW5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuY2Fubm90RmluZFNwZWNpZmllZFRlc3RTb3VyY2UsIGZpbGVuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvZGUgPSBzdHJpcEJvbShjb2RlKS50b1N0cmluZygpO1xuXG4gICAgICAgIGNvbnN0IGNvbXBpbGVyID0gZmluZChnZXRUZXN0RmlsZUNvbXBpbGVycygpLCBzb21lQ29tcGlsZXIgPT4gc29tZUNvbXBpbGVyLmNhbkNvbXBpbGUoY29kZSwgZmlsZW5hbWUpKTtcblxuICAgICAgICBpZiAoIWNvbXBpbGVyKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgIGNvbXBpbGVyLFxuXG4gICAgICAgICAgICBjb21waWxlZENvZGU6IG51bGwsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYXN5bmMgX2NyZWF0ZVRlc3RGaWxlc0luZm8gKGZpbGVuYW1lcykge1xuICAgICAgICBjb25zdCB0ZXN0RmlsZXNJbmZvID0gYXdhaXQgUHJvbWlzZS5hbGwoZmlsZW5hbWVzLm1hcChmaWxlbmFtZSA9PiB0aGlzLl9jcmVhdGVUZXN0RmlsZUluZm8oZmlsZW5hbWUpKSk7XG5cbiAgICAgICAgcmV0dXJuIHRlc3RGaWxlc0luZm8uZmlsdGVyKGluZm8gPT4gISFpbmZvKTtcbiAgICB9XG5cbiAgICBhc3luYyBfcHJlY29tcGlsZUZpbGVzIChjb21waWxlciwgdGVzdEZpbGVzSW5mbykge1xuICAgICAgICBpZiAoIWNvbXBpbGVyLmNhblByZWNvbXBpbGUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcHJlY29tcGlsZWRDb2RlID0gYXdhaXQgY29tcGlsZXIucHJlY29tcGlsZSh0ZXN0RmlsZXNJbmZvKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRlc3RGaWxlc0luZm8ubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB0ZXN0RmlsZXNJbmZvW2ldLmNvbXBpbGVkQ29kZSA9IHByZWNvbXBpbGVkQ29kZVtpXTtcbiAgICB9XG5cbiAgICBfZ2V0Q29tcGlsZXJUYXNrcyAodGVzdEZpbGVzSW5mbykge1xuICAgICAgICBjb25zdCB0YXNrcyAgICAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICBjb25zdCBjb21waWxlcnMgPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGluZm8gb2YgdGVzdEZpbGVzSW5mbykge1xuICAgICAgICAgICAgY29uc3QgeyBjb21waWxlciB9ID0gaW5mbztcblxuICAgICAgICAgICAgaWYgKCF0YXNrcy5oYXMoY29tcGlsZXIpKSB7XG4gICAgICAgICAgICAgICAgY29tcGlsZXJzLnB1c2goY29tcGlsZXIpO1xuICAgICAgICAgICAgICAgIHRhc2tzLnNldChjb21waWxlciwgW10pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0YXNrcy5nZXQoaW5mby5jb21waWxlcikucHVzaChpbmZvKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21waWxlcnMubWFwKGNvbXBpbGVyID0+ICh7IGNvbXBpbGVyLCBjb21waWxlclRlc3RGaWxlc0luZm86IHRhc2tzLmdldChjb21waWxlcikgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIF9nZXRUZXN0cyAoeyBjb21waWxlciwgZmlsZW5hbWUsIGNvZGUsIGNvbXBpbGVkQ29kZSB9KSB7XG4gICAgICAgIGlmIChjb21waWxlZENvZGUpXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgY29tcGlsZXIuZXhlY3V0ZShjb21waWxlZENvZGUsIGZpbGVuYW1lKTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgY29tcGlsZXIuY29tcGlsZShjb2RlLCBmaWxlbmFtZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgX2NvbXBpbGVUZXN0RmlsZXMgKGZpbGVuYW1lcykge1xuICAgICAgICBjb25zdCB0ZXN0RmlsZXNJbmZvID0gYXdhaXQgdGhpcy5fY3JlYXRlVGVzdEZpbGVzSW5mbyhmaWxlbmFtZXMpO1xuICAgICAgICBjb25zdCBjb21waWxlclRhc2tzID0gdGhpcy5fZ2V0Q29tcGlsZXJUYXNrcyh0ZXN0RmlsZXNJbmZvKTtcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChjb21waWxlclRhc2tzLm1hcCgoeyBjb21waWxlciwgY29tcGlsZXJUZXN0RmlsZXNJbmZvIH0pID0+IHRoaXMuX3ByZWNvbXBpbGVGaWxlcyhjb21waWxlciwgY29tcGlsZXJUZXN0RmlsZXNJbmZvKSkpO1xuXG4gICAgICAgIGNvbnN0IHRlc3RzID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBpbmZvIG9mIHRlc3RGaWxlc0luZm8pXG4gICAgICAgICAgICB0ZXN0cy5wdXNoKGF3YWl0IHRoaXMuX2dldFRlc3RzKGluZm8pKTtcblxuICAgICAgICByZXR1cm4gdGVzdHM7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0VGVzdHMgKCkge1xuICAgICAgICAvLyBOT1RFOiBzcGxpdCBzb3VyY2VzIGludG8gY2h1bmtzIGJlY2F1c2UgdGhlIGZzIG1vZHVsZSBjYW4ndCByZWFkIGFsbCBmaWxlc1xuICAgICAgICAvLyBzaW11bHRhbmVvdXNseSBpZiB0aGUgbnVtYmVyIG9mIHRoZW0gaXMgdG9vIGxhcmdlIChzZXZlcmFsIHRob3VzYW5kcykuXG4gICAgICAgIGNvbnN0IHNvdXJjZUNodW5rcyA9IGNodW5rKHRoaXMuc291cmNlcywgU09VUkNFX0NIVU5LX0xFTkdUSCk7XG5cbiAgICAgICAgbGV0IHRlc3RzID0gW107XG5cbiAgICAgICAgd2hpbGUgKHNvdXJjZUNodW5rcy5sZW5ndGgpXG4gICAgICAgICAgICB0ZXN0cyA9IHRlc3RzLmNvbmNhdChhd2FpdCB0aGlzLl9jb21waWxlVGVzdEZpbGVzKHNvdXJjZUNodW5rcy5zaGlmdCgpKSk7XG5cbiAgICAgICAgQ29tcGlsZXIuY2xlYW5VcCgpO1xuXG4gICAgICAgIHJldHVybiBmbGF0dGVuRGVlcCh0ZXN0cykuZmlsdGVyKHRlc3QgPT4gISF0ZXN0KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgY2xlYW5VcCAoKSB7XG4gICAgICAgIGdldFRlc3RGaWxlQ29tcGlsZXJzKCkuZm9yRWFjaChjb21waWxlciA9PiBjb21waWxlci5jbGVhblVwKCkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -29,19 +29,19 @@ class APIBasedTestFileCompilerBase extends base_1.default {
29
29
  this.isCompilerServiceMode = isCompilerServiceMode;
30
30
  this.cache = Object.create(null);
31
31
  this.origRequireExtensions = Object.create(null);
32
- this.cachePrefix = nanoid_1.nanoid(7);
32
+ this.cachePrefix = (0, nanoid_1.nanoid)(7);
33
33
  }
34
34
  static _getNodeModulesLookupPath(filename) {
35
- const dir = path_1.dirname(filename);
35
+ const dir = (0, path_1.dirname)(filename);
36
36
  return Module._nodeModulePaths(dir);
37
37
  }
38
38
  static _isNodeModulesDep(filename) {
39
- return path_1.relative(CWD, filename)
39
+ return (0, path_1.relative)(CWD, filename)
40
40
  .split(path_1.sep)
41
41
  .includes(node_modules_folder_name_1.default);
42
42
  }
43
43
  static _isTestCafeLibDep(filename) {
44
- return path_1.relative(CWD, filename)
44
+ return (0, path_1.relative)(CWD, filename)
45
45
  .split(path_1.sep)[0] === TESTCAFE_LIB_FOLDER_NAME;
46
46
  }
47
47
  _execAsModule(code, filename) {
@@ -83,8 +83,8 @@ class APIBasedTestFileCompilerBase extends base_1.default {
83
83
  return origExt(mod, filename);
84
84
  }
85
85
  _compileModule(mod, filename, requireCompiler) {
86
- const code = fs_1.readFileSync(filename).toString();
87
- const compiledCode = requireCompiler(strip_bom_1.default(code), filename);
86
+ const code = (0, fs_1.readFileSync)(filename).toString();
87
+ const compiledCode = requireCompiler((0, strip_bom_1.default)(code), filename);
88
88
  mod.paths = APIBasedTestFileCompilerBase._getNodeModulesLookupPath(filename);
89
89
  mod._compile(compiledCode, filename);
90
90
  }
@@ -150,7 +150,7 @@ class APIBasedTestFileCompilerBase extends base_1.default {
150
150
  if (this.isCompilerServiceMode)
151
151
  this._addExportAPIInCompilerServiceMode(testFile);
152
152
  else
153
- add_export_api_1.default(testFile, exportable_lib_1.default, { baseUrl: this.baseUrl });
153
+ (0, add_export_api_1.default)(testFile, exportable_lib_1.default, { baseUrl: this.baseUrl });
154
154
  }
155
155
  _removeGlobalAPI() {
156
156
  delete global.fixture;
@@ -201,4 +201,4 @@ class APIBasedTestFileCompilerBase extends base_1.default {
201
201
  }
202
202
  exports.default = APIBasedTestFileCompilerBase;
203
203
  module.exports = exports.default;
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWJhc2VkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBpbGVyL3Rlc3QtZmlsZS9hcGktYmFzZWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFJYztBQUVkLDJCQUFrQztBQUNsQywwREFBaUM7QUFDakMsbUNBQWdDO0FBQ2hDLGtEQUEwQztBQUMxQyw4RUFBcUQ7QUFDckQsMEVBQWtEO0FBQ2xELG9FQUE0QztBQUM1QyxrREFBc0U7QUFDdEUsMkZBQWlFO0FBQ2pFLG9HQUFnRTtBQUNoRSxnRUFBdUM7QUFDdkMsOEVBQXFEO0FBQ3JELGtHQUEwRTtBQUMxRSxzRUFBNEM7QUFFNUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRTFCLE1BQU0sVUFBVSxHQUFHLDhCQUE4QixDQUFDO0FBQ2xELE1BQU0sT0FBTyxHQUFNLHlCQUF5QixDQUFDO0FBRTdDLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxDQUFDO0FBRXZDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7QUFFbEMsTUFBcUIsNEJBQTZCLFNBQVEsY0FBb0I7SUFDMUUsWUFBYSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRTtRQUMzQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRW5CLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsS0FBSyxHQUFtQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLEdBQWEsZUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxNQUFNLENBQUMseUJBQXlCLENBQUUsUUFBUTtRQUN0QyxNQUFNLEdBQUcs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UUFBUTtRQUN6QixNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRW5FLElBQUksWUFBWTtZQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFaEQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFNBQVMsQ0FBRSxJQUFJO1FBQ1gsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUEzT0QsK0NBMk9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBkaXJuYW1lLFxuICAgIHJlbGF0aXZlLFxuICAgIHNlcCBhcyBwYXRoU2VwLFxufSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHN0cmlwQm9tIGZyb20gJ3N0cmlwLWJvbSc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IFRlc3RGaWxlQ29tcGlsZXJCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgVGVzdEZpbGUgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS90ZXN0LWZpbGUnO1xuaW1wb3J0IEZpeHR1cmUgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS9maXh0dXJlJztcbmltcG9ydCBUZXN0IGZyb20gJy4uLy4uL2FwaS9zdHJ1Y3R1cmUvdGVzdCc7XG5pbXBvcnQgeyBUZXN0Q29tcGlsYXRpb25FcnJvciwgQVBJRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgc3RhY2tDbGVhbmluZ0hvb2sgZnJvbSAnLi4vLi4vZXJyb3JzL3N0YWNrLWNsZWFuaW5nLWhvb2snO1xuaW1wb3J0IE5PREVfTU9EVUxFUyBmcm9tICcuLi8uLi91dGlscy9ub2RlLW1vZHVsZXMtZm9sZGVyLW5hbWUnO1xuaW1wb3J0IGNhY2hlUHJveHkgZnJvbSAnLi9jYWNoZS1wcm94eSc7XG5pbXBvcnQgZXhwb3J0YWJsZUxpYiBmcm9tICcuLi8uLi9hcGkvZXhwb3J0YWJsZS1saWInO1xuaW1wb3J0IFRFU1RfRklMRV9URU1QX1ZBUklBQkxFX05BTUUgZnJvbSAnLi90ZXN0LWZpbGUtdGVtcC12YXJpYWJsZS1uYW1lJztcbmltcG9ydCBhZGRFeHBvcnRBUEkgZnJvbSAnLi9hZGQtZXhwb3J0LWFwaSc7XG5cbmNvbnN0IENXRCA9IHByb2Nlc3MuY3dkKCk7XG5cbmNvbnN0IEZJWFRVUkVfUkUgPSAvKF58O3xcXHMrKWZpeHR1cmVcXHMqKFxcLnxcXCh8YCkvO1xuY29uc3QgVEVTVF9SRSAgICA9IC8oXnw7fFxccyspdGVzdFxccyooXFwufFxcKCkvO1xuXG5jb25zdCBURVNUQ0FGRV9MSUJfRk9MREVSX05BTUUgPSAnbGliJztcblxuY29uc3QgTW9kdWxlID0gbW9kdWxlLmNvbnN0cnVjdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBUElCYXNlZFRlc3RGaWxlQ29tcGlsZXJCYXNlIGV4dGVuZHMgVGVzdEZpbGVDb21waWxlckJhc2Uge1xuICAgIGNvbnN0cnVjdG9yICh7IGlzQ29tcGlsZXJTZXJ2aWNlTW9kZSwgYmFzZVVybCB9KSB7XG4gICAgICAgIHN1cGVyKHsgYmFzZVVybCB9KTtcblxuICAgICAgICB0aGlzLmlzQ29tcGlsZXJTZXJ2aWNlTW9kZSA9IGlzQ29tcGlsZXJTZXJ2aWNlTW9kZTtcbiAgICAgICAgdGhpcy5jYWNoZSAgICAgICAgICAgICAgICAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLm9yaWdSZXF1aXJlRXh0ZW5zaW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMuY2FjaGVQcmVmaXggICAgICAgICAgID0gbmFub2lkKDcpO1xuICAgIH1cblxuICAgIHN0YXRpYyBfZ2V0Tm9kZU1vZHVsZXNMb29rdXBQYXRoIChmaWxlbmFtZSkge1xuICAgICAgICBjb25zdCBkaXIgPSBkaXJuYW1lKGZpbGVuYW1lKTtcblxuICAgICAgICByZXR1cm4gTW9kdWxlLl9ub2RlTW9kdWxlUGF0aHMoZGlyKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgX2lzTm9kZU1vZHVsZXNEZXAgKGZpbGVuYW1lKSB7XG4gICAgICAgIHJldHVybiByZWxhdGl2ZShDV0QsIGZpbGVuYW1lKVxuICAgICAgICAgICAgLnNwbGl0KHBhdGhTZXApXG4gICAgICAgICAgICAuaW5jbHVkZXMoTk9ERV9NT0RVTEVTKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgX2lzVGVzdENhZmVMaWJEZXAgKGZpbGVuYW1lKSB7XG4gICAgICAgIHJldHVybiByZWxhdGl2ZShDV0QsIGZpbGVuYW1lKVxuICAgICAgICAgICAgLnNwbGl0KHBhdGhTZXApWzBdID09PSBURVNUQ0FGRV9MSUJfRk9MREVSX05BTUU7XG4gICAgfVxuXG4gICAgX2V4ZWNBc01vZHVsZSAoY29kZSwgZmlsZW5hbWUpIHtcbiAgICAgICAgY29uc3QgbW9kID0gbmV3IE1vZHVsZShmaWxlbmFtZSwgbW9kdWxlLnBhcmVudCk7XG5cbiAgICAgICAgbW9kLmZpbGVuYW1lID0gZmlsZW5hbWU7XG4gICAgICAgIG1vZC5wYXRocyAgICA9IEFQSUJhc2VkVGVzdEZpbGVDb21waWxlckJhc2UuX2dldE5vZGVNb2R1bGVzTG9va3VwUGF0aChmaWxlbmFtZSk7XG5cbiAgICAgICAgY2FjaGVQcm94eS5zdGFydEV4dGVybmFsQ2FjaGluZyh0aGlzLmNhY2hlUHJlZml4KTtcblxuICAgICAgICBtb2QuX2NvbXBpbGUoY29kZSwgZmlsZW5hbWUpO1xuXG4gICAgICAgIGNhY2hlUHJveHkuc3RvcEV4dGVybmFsQ2FjaGluZygpO1xuICAgIH1cblxuICAgIF9jb21waWxlQ29kZSAoY29kZSwgZmlsZW5hbWUpIHtcbiAgICAgICAgaWYgKHRoaXMuY2FuUHJlY29tcGlsZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcmVjb21waWxlQ29kZShbeyBjb2RlLCBmaWxlbmFtZSB9XSlbMF07XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgX3ByZWNvbXBpbGVDb2RlICh0ZXN0RmlsZXNJbmZvKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgX2dldFJlcXVpcmVDb21waWxlcnMgKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIF9jb21waWxlRXh0ZXJuYWxNb2R1bGUgKG1vZCwgZmlsZW5hbWUsIHJlcXVpcmVDb21waWxlciwgb3JpZ0V4dCkge1xuICAgICAgICBpZiAoQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZS5faXNOb2RlTW9kdWxlc0RlcChmaWxlbmFtZSkgJiYgb3JpZ0V4dClcbiAgICAgICAgICAgIG9yaWdFeHQoIG1vZCwgZmlsZW5hbWUgKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5fY29tcGlsZU1vZHVsZShtb2QsIGZpbGVuYW1lLCByZXF1aXJlQ29tcGlsZXIsIG9yaWdFeHQpO1xuICAgIH1cblxuICAgIF9jb21waWxlRXh0ZXJuYWxNb2R1bGVJbkVzbU1vZGUgKG1vZCwgZmlsZW5hbWUsIHJlcXVpcmVDb21waWxlciwgb3JpZ0V4dCkge1xuICAgICAgICBpZiAoIW9yaWdFeHQpXG4gICAgICAgICAgICBvcmlnRXh0ID0gdGhpcy5vcmlnUmVxdWlyZUV4dGVuc2lvbnNbJy5qcyddO1xuXG4gICAgICAgIGlmICghQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZS5faXNOb2RlTW9kdWxlc0RlcChmaWxlbmFtZSkgJiZcbiAgICAgICAgICAgICFBUElCYXNlZFRlc3RGaWxlQ29tcGlsZXJCYXNlLl9pc1Rlc3RDYWZlTGliRGVwKGZpbGVuYW1lKSkge1xuICAgICAgICAgICAgZ2xvYmFsLmN1c3RvbUV4dGVuc2lvbkhvb2sgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZ2xvYmFsLmN1c3RvbUV4dGVuc2lvbkhvb2sgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fY29tcGlsZU1vZHVsZShtb2QsIGZpbGVuYW1lLCByZXF1aXJlQ29tcGlsZXIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcmlnRXh0KG1vZCwgZmlsZW5hbWUpO1xuICAgIH1cblxuXG4gICAgX2NvbXBpbGVNb2R1bGUgKG1vZCwgZmlsZW5hbWUsIHJlcXVpcmVDb21waWxlcikge1xuICAgICAgICBjb25zdCBjb2RlICAgICAgICAgPSByZWFkRmlsZVN5bmMoZmlsZW5hbWUpLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IGNvbXBpbGVkQ29kZSA9IHJlcXVpcmVDb21waWxlcihzdHJpcEJvbShjb2RlKSwgZmlsZW5hbWUpO1xuXG4gICAgICAgIG1vZC5wYXRocyA9IEFQSUJhc2VkVGVzdEZpbGVDb21waWxlckJhc2UuX2dldE5vZGVNb2R1bGVzTG9va3VwUGF0aChmaWxlbmFtZSk7XG5cbiAgICAgICAgbW9kLl9jb21waWxlKGNvbXBpbGVkQ29kZSwgZmlsZW5hbWUpO1xuICAgIH1cblxuICAgIF9zZXR1cFJlcXVpcmVIb29rICh0ZXN0RmlsZSkge1xuICAgICAgICBjb25zdCByZXF1aXJlQ29tcGlsZXJzID0gdGhpcy5fZ2V0UmVxdWlyZUNvbXBpbGVycygpO1xuXG4gICAgICAgIHRoaXMub3JpZ1JlcXVpcmVFeHRlbnNpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICBPYmplY3Qua2V5cyhyZXF1aXJlQ29tcGlsZXJzKS5mb3JFYWNoKGV4dCA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcmlnRXh0ID0gcmVxdWlyZS5leHRlbnNpb25zW2V4dF07XG5cbiAgICAgICAgICAgIHRoaXMub3JpZ1JlcXVpcmVFeHRlbnNpb25zW2V4dF0gPSBvcmlnRXh0O1xuXG4gICAgICAgICAgICByZXF1aXJlLmV4dGVuc2lvbnNbZXh0XSA9IChtb2QsIGZpbGVuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFkR2xvYmFsQVBJID0gdGhpcy5faGFzR2xvYmFsQVBJKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBOT1RFOiByZW1vdmUgZ2xvYmFsIEFQSSBzbyB0aGF0IGl0IHdpbGwgYmUgdW5hdmFpbGFibGUgZm9yIHRoZSBkZXBlbmRlbmNpZXNcbiAgICAgICAgICAgICAgICBpZiAoQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZS5faXNOb2RlTW9kdWxlc0RlcChmaWxlbmFtZSkgJiYgaGFkR2xvYmFsQVBJKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVHbG9iYWxBUEkoKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQ29tcGlsZXJTZXJ2aWNlTW9kZSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29tcGlsZUV4dGVybmFsTW9kdWxlSW5Fc21Nb2RlKG1vZCwgZmlsZW5hbWUsIHJlcXVpcmVDb21waWxlcnNbZXh0XSwgb3JpZ0V4dCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb21waWxlRXh0ZXJuYWxNb2R1bGUobW9kLCBmaWxlbmFtZSwgcmVxdWlyZUNvbXBpbGVyc1tleHRdLCBvcmlnRXh0KTtcblxuICAgICAgICAgICAgICAgIGlmIChoYWRHbG9iYWxBUEkgJiYgIXRoaXMuX2hhc0dsb2JhbEFQSSgpKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRHbG9iYWxBUEkodGVzdEZpbGUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX3JlbW92ZVJlcXVpcmVIb29rICgpIHtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5vcmlnUmVxdWlyZUV4dGVuc2lvbnMpLmZvckVhY2goZXh0ID0+IHtcbiAgICAgICAgICAgIHJlcXVpcmUuZXh0ZW5zaW9uc1tleHRdID0gdGhpcy5vcmlnUmVxdWlyZUV4dGVuc2lvbnNbZXh0XTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX2NvbXBpbGVDb2RlRm9yVGVzdEZpbGVzICh0ZXN0RmlsZXNJbmZvKSB7XG4gICAgICAgIHN0YWNrQ2xlYW5pbmdIb29rLmVuYWJsZWQgPSB0cnVlO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jYW5QcmVjb21waWxlKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcmVjb21waWxlQ29kZSh0ZXN0RmlsZXNJbmZvKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRlc3RGaWxlc0luZm8ubWFwKCh7IGNvZGUsIGZpbGVuYW1lIH0pID0+IHRoaXMuX2NvbXBpbGVDb2RlKGNvZGUsIGZpbGVuYW1lKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRlc3RDb21waWxhdGlvbkVycm9yKHN0YWNrQ2xlYW5pbmdIb29rLmNsZWFuRXJyb3IoZXJyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBzdGFja0NsZWFuaW5nSG9vay5lbmFibGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfYWRkR2xvYmFsQVBJICh0ZXN0RmlsZSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCAnZml4dHVyZScsIHtcbiAgICAgICAgICAgIGdldDogICAgICAgICAgKCkgPT4gbmV3IEZpeHR1cmUodGVzdEZpbGUsIHRoaXMuYmFzZVVybCksXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWwsICd0ZXN0Jywge1xuICAgICAgICAgICAgZ2V0OiAgICAgICAgICAoKSA9PiBuZXcgVGVzdCh0ZXN0RmlsZSwgZmFsc2UsIHRoaXMuYmFzZVVybCksXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9hZGRFeHBvcnRBUElJbkNvbXBpbGVyU2VydmljZU1vZGUgKHRlc3RGaWxlKSB7XG4gICAgICAgIC8vICdlc20nIGxpYnJhcnkgaGFzIGFuIGlzc3VlIHdpdGggbG9hZGluZyBtb2R1bGVzXG4gICAgICAgIC8vIGluIGNhc2Ugb2YgdGhlIGNvbWJpbmF0aW9uIG9mIHJlcXVpcmUgYW5kIGltcG9ydCBkaXJlY3RpdmVzLlxuICAgICAgICAvLyBUaGlzIGhhY2sgYWxsb3dpbmcgYWNoaWV2ZSB0aGUgZGVzaXJlZCBiZWhhdmlvci5cbiAgICAgICAgY29uc3QgZXhwb3J0YWJsZUxpYlBhdGggPSByZXF1aXJlLnJlc29sdmUoJy4uLy4uL2FwaS9leHBvcnRhYmxlLWxpYicpO1xuXG4gICAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2V4cG9ydGFibGVMaWJQYXRoXTtcblxuICAgICAgICBnbG9iYWxbVEVTVF9GSUxFX1RFTVBfVkFSSUFCTEVfTkFNRV0gPSB7IHRlc3RGaWxlLCBiYXNlVXJsOiB0aGlzLmJhc2VVcmwgfTtcblxuICAgICAgICByZXF1aXJlKCcuLi8uLi9hcGkvZXhwb3J0YWJsZS1saWInKTtcbiAgICB9XG5cbiAgICBfYWRkRXhwb3J0QVBJICh0ZXN0RmlsZSkge1xuICAgICAgICBpZiAodGhpcy5pc0NvbXBpbGVyU2VydmljZU1vZGUpXG4gICAgICAgICAgICB0aGlzLl9hZGRFeHBvcnRBUElJbkNvbXBpbGVyU2VydmljZU1vZGUodGVzdEZpbGUpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhZGRFeHBvcnRBUEkodGVzdEZpbGUsIGV4cG9ydGFibGVMaWIsIHsgYmFzZVVybDogdGhpcy5iYXNlVXJsIH0pO1xuICAgIH1cblxuICAgIF9yZW1vdmVHbG9iYWxBUEkgKCkge1xuICAgICAgICBkZWxldGUgZ2xvYmFsLmZpeHR1cmU7XG4gICAgICAgIGRlbGV0ZSBnbG9iYWwudGVzdDtcbiAgICB9XG5cbiAgICBfaGFzR2xvYmFsQVBJICgpIHtcbiAgICAgICAgcmV0dXJuIGdsb2JhbC5maXh0dXJlICYmIGdsb2JhbC50ZXN0O1xuICAgIH1cblxuICAgIF9ydW5Db21waWxlZENvZGUgKGNvbXBpbGVkQ29kZSwgZmlsZW5hbWUpIHtcbiAgICAgICAgY29uc3QgdGVzdEZpbGUgPSBuZXcgVGVzdEZpbGUoZmlsZW5hbWUpO1xuXG4gICAgICAgIHRoaXMuX2FkZEdsb2JhbEFQSSh0ZXN0RmlsZSk7XG4gICAgICAgIHRoaXMuX2FkZEV4cG9ydEFQSSh0ZXN0RmlsZSk7XG5cbiAgICAgICAgc3RhY2tDbGVhbmluZ0hvb2suZW5hYmxlZCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5fc2V0dXBSZXF1aXJlSG9vayh0ZXN0RmlsZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuX2V4ZWNBc01vZHVsZShjb21waWxlZENvZGUsIGZpbGVuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBBUElFcnJvcikpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRlc3RDb21waWxhdGlvbkVycm9yKHN0YWNrQ2xlYW5pbmdIb29rLmNsZWFuRXJyb3IoZXJyKSk7XG5cbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZVJlcXVpcmVIb29rKCk7XG4gICAgICAgICAgICBzdGFja0NsZWFuaW5nSG9vay5lbmFibGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUdsb2JhbEFQSSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlc3RGaWxlLmdldFRlc3RzKCk7XG4gICAgfVxuXG5cbiAgICBwcmVjb21waWxlICh0ZXN0RmlsZXNJbmZvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21waWxlQ29kZUZvclRlc3RGaWxlcyh0ZXN0RmlsZXNJbmZvKTtcbiAgICB9XG5cbiAgICBleGVjdXRlIChjb21waWxlZENvZGUsIGZpbGVuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Db21waWxlZENvZGUoY29tcGlsZWRDb2RlLCBmaWxlbmFtZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY29tcGlsZSAoY29kZSwgZmlsZW5hbWUpIHtcbiAgICAgICAgY29uc3QgW2NvbXBpbGVkQ29kZV0gPSBhd2FpdCB0aGlzLnByZWNvbXBpbGUoW3sgY29kZSwgZmlsZW5hbWUgfV0pO1xuXG4gICAgICAgIGlmIChjb21waWxlZENvZGUpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRlKGNvbXBpbGVkQ29kZSwgZmlsZW5hbWUpO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBfaGFzVGVzdHMgKGNvZGUpIHtcbiAgICAgICAgcmV0dXJuIEZJWFRVUkVfUkUudGVzdChjb2RlKSAmJiBURVNUX1JFLnRlc3QoY29kZSk7XG4gICAgfVxuXG4gICAgY2xlYW5VcCAoKSB7XG4gICAgICAgIHRoaXMuY2FjaGUgPSB7fTtcbiAgICB9XG59XG4iXX0=
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWJhc2VkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBpbGVyL3Rlc3QtZmlsZS9hcGktYmFzZWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFJYztBQUVkLDJCQUFrQztBQUNsQywwREFBaUM7QUFDakMsbUNBQWdDO0FBQ2hDLGtEQUEwQztBQUMxQyw4RUFBcUQ7QUFDckQsMEVBQWtEO0FBQ2xELG9FQUE0QztBQUM1QyxrREFBc0U7QUFDdEUsMkZBQWlFO0FBQ2pFLG9HQUFnRTtBQUNoRSxnRUFBdUM7QUFDdkMsOEVBQXFEO0FBQ3JELGtHQUEwRTtBQUMxRSxzRUFBNEM7QUFFNUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRTFCLE1BQU0sVUFBVSxHQUFHLDhCQUE4QixDQUFDO0FBQ2xELE1BQU0sT0FBTyxHQUFNLHlCQUF5QixDQUFDO0FBRTdDLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxDQUFDO0FBRXZDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7QUFFbEMsTUFBcUIsNEJBQTZCLFNBQVEsY0FBb0I7SUFDMUUsWUFBYSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRTtRQUMzQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRW5CLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsS0FBSyxHQUFtQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLEdBQWEsSUFBQSxlQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUIsQ0FBRSxRQUFRO1FBQ3RDLE1BQU0s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SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFFLElBQUksRUFBRSxRQUFRO1FBQ3pCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbkUsSUFBSSxZQUFZO1lBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVoRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsU0FBUyxDQUFFLElBQUk7UUFDWCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQTNPRCwrQ0EyT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGRpcm5hbWUsXG4gICAgcmVsYXRpdmUsXG4gICAgc2VwIGFzIHBhdGhTZXAsXG59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgc3RyaXBCb20gZnJvbSAnc3RyaXAtYm9tJztcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gJ25hbm9pZCc7XG5pbXBvcnQgVGVzdEZpbGVDb21waWxlckJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCBUZXN0RmlsZSBmcm9tICcuLi8uLi9hcGkvc3RydWN0dXJlL3Rlc3QtZmlsZSc7XG5pbXBvcnQgRml4dHVyZSBmcm9tICcuLi8uLi9hcGkvc3RydWN0dXJlL2ZpeHR1cmUnO1xuaW1wb3J0IFRlc3QgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS90ZXN0JztcbmltcG9ydCB7IFRlc3RDb21waWxhdGlvbkVycm9yLCBBUElFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCBzdGFja0NsZWFuaW5nSG9vayBmcm9tICcuLi8uLi9lcnJvcnMvc3RhY2stY2xlYW5pbmctaG9vayc7XG5pbXBvcnQgTk9ERV9NT0RVTEVTIGZyb20gJy4uLy4uL3V0aWxzL25vZGUtbW9kdWxlcy1mb2xkZXItbmFtZSc7XG5pbXBvcnQgY2FjaGVQcm94eSBmcm9tICcuL2NhY2hlLXByb3h5JztcbmltcG9ydCBleHBvcnRhYmxlTGliIGZyb20gJy4uLy4uL2FwaS9leHBvcnRhYmxlLWxpYic7XG5pbXBvcnQgVEVTVF9GSUxFX1RFTVBfVkFSSUFCTEVfTkFNRSBmcm9tICcuL3Rlc3QtZmlsZS10ZW1wLXZhcmlhYmxlLW5hbWUnO1xuaW1wb3J0IGFkZEV4cG9ydEFQSSBmcm9tICcuL2FkZC1leHBvcnQtYXBpJztcblxuY29uc3QgQ1dEID0gcHJvY2Vzcy5jd2QoKTtcblxuY29uc3QgRklYVFVSRV9SRSA9IC8oXnw7fFxccyspZml4dHVyZVxccyooXFwufFxcKHxgKS87XG5jb25zdCBURVNUX1JFICAgID0gLyhefDt8XFxzKyl0ZXN0XFxzKihcXC58XFwoKS87XG5cbmNvbnN0IFRFU1RDQUZFX0xJQl9GT0xERVJfTkFNRSA9ICdsaWInO1xuXG5jb25zdCBNb2R1bGUgPSBtb2R1bGUuY29uc3RydWN0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFQSUJhc2VkVGVzdEZpbGVDb21waWxlckJhc2UgZXh0ZW5kcyBUZXN0RmlsZUNvbXBpbGVyQmFzZSB7XG4gICAgY29uc3RydWN0b3IgKHsgaXNDb21waWxlclNlcnZpY2VNb2RlLCBiYXNlVXJsIH0pIHtcbiAgICAgICAgc3VwZXIoeyBiYXNlVXJsIH0pO1xuXG4gICAgICAgIHRoaXMuaXNDb21waWxlclNlcnZpY2VNb2RlID0gaXNDb21waWxlclNlcnZpY2VNb2RlO1xuICAgICAgICB0aGlzLmNhY2hlICAgICAgICAgICAgICAgICA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMub3JpZ1JlcXVpcmVFeHRlbnNpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5jYWNoZVByZWZpeCAgICAgICAgICAgPSBuYW5vaWQoNyk7XG4gICAgfVxuXG4gICAgc3RhdGljIF9nZXROb2RlTW9kdWxlc0xvb2t1cFBhdGggKGZpbGVuYW1lKSB7XG4gICAgICAgIGNvbnN0IGRpciA9IGRpcm5hbWUoZmlsZW5hbWUpO1xuXG4gICAgICAgIHJldHVybiBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhkaXIpO1xuICAgIH1cblxuICAgIHN0YXRpYyBfaXNOb2RlTW9kdWxlc0RlcCAoZmlsZW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHJlbGF0aXZlKENXRCwgZmlsZW5hbWUpXG4gICAgICAgICAgICAuc3BsaXQocGF0aFNlcClcbiAgICAgICAgICAgIC5pbmNsdWRlcyhOT0RFX01PRFVMRVMpO1xuICAgIH1cblxuICAgIHN0YXRpYyBfaXNUZXN0Q2FmZUxpYkRlcCAoZmlsZW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHJlbGF0aXZlKENXRCwgZmlsZW5hbWUpXG4gICAgICAgICAgICAuc3BsaXQocGF0aFNlcClbMF0gPT09IFRFU1RDQUZFX0xJQl9GT0xERVJfTkFNRTtcbiAgICB9XG5cbiAgICBfZXhlY0FzTW9kdWxlIChjb2RlLCBmaWxlbmFtZSkge1xuICAgICAgICBjb25zdCBtb2QgPSBuZXcgTW9kdWxlKGZpbGVuYW1lLCBtb2R1bGUucGFyZW50KTtcblxuICAgICAgICBtb2QuZmlsZW5hbWUgPSBmaWxlbmFtZTtcbiAgICAgICAgbW9kLnBhdGhzICAgID0gQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZS5fZ2V0Tm9kZU1vZHVsZXNMb29rdXBQYXRoKGZpbGVuYW1lKTtcblxuICAgICAgICBjYWNoZVByb3h5LnN0YXJ0RXh0ZXJuYWxDYWNoaW5nKHRoaXMuY2FjaGVQcmVmaXgpO1xuXG4gICAgICAgIG1vZC5fY29tcGlsZShjb2RlLCBmaWxlbmFtZSk7XG5cbiAgICAgICAgY2FjaGVQcm94eS5zdG9wRXh0ZXJuYWxDYWNoaW5nKCk7XG4gICAgfVxuXG4gICAgX2NvbXBpbGVDb2RlIChjb2RlLCBmaWxlbmFtZSkge1xuICAgICAgICBpZiAodGhpcy5jYW5QcmVjb21waWxlKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZWNvbXBpbGVDb2RlKFt7IGNvZGUsIGZpbGVuYW1lIH1dKVswXTtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBfcHJlY29tcGlsZUNvZGUgKHRlc3RGaWxlc0luZm8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBfZ2V0UmVxdWlyZUNvbXBpbGVycyAoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgX2NvbXBpbGVFeHRlcm5hbE1vZHVsZSAobW9kLCBmaWxlbmFtZSwgcmVxdWlyZUNvbXBpbGVyLCBvcmlnRXh0KSB7XG4gICAgICAgIGlmIChBUElCYXNlZFRlc3RGaWxlQ29tcGlsZXJCYXNlLl9pc05vZGVNb2R1bGVzRGVwKGZpbGVuYW1lKSAmJiBvcmlnRXh0KVxuICAgICAgICAgICAgb3JpZ0V4dCggbW9kLCBmaWxlbmFtZSApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLl9jb21waWxlTW9kdWxlKG1vZCwgZmlsZW5hbWUsIHJlcXVpcmVDb21waWxlciwgb3JpZ0V4dCk7XG4gICAgfVxuXG4gICAgX2NvbXBpbGVFeHRlcm5hbE1vZHVsZUluRXNtTW9kZSAobW9kLCBmaWxlbmFtZSwgcmVxdWlyZUNvbXBpbGVyLCBvcmlnRXh0KSB7XG4gICAgICAgIGlmICghb3JpZ0V4dClcbiAgICAgICAgICAgIG9yaWdFeHQgPSB0aGlzLm9yaWdSZXF1aXJlRXh0ZW5zaW9uc1snLmpzJ107XG5cbiAgICAgICAgaWYgKCFBUElCYXNlZFRlc3RGaWxlQ29tcGlsZXJCYXNlLl9pc05vZGVNb2R1bGVzRGVwKGZpbGVuYW1lKSAmJlxuICAgICAgICAgICAgIUFQSUJhc2VkVGVzdEZpbGVDb21waWxlckJhc2UuX2lzVGVzdENhZmVMaWJEZXAoZmlsZW5hbWUpKSB7XG4gICAgICAgICAgICBnbG9iYWwuY3VzdG9tRXh0ZW5zaW9uSG9vayA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBnbG9iYWwuY3VzdG9tRXh0ZW5zaW9uSG9vayA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9jb21waWxlTW9kdWxlKG1vZCwgZmlsZW5hbWUsIHJlcXVpcmVDb21waWxlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9yaWdFeHQobW9kLCBmaWxlbmFtZSk7XG4gICAgfVxuXG5cbiAgICBfY29tcGlsZU1vZHVsZSAobW9kLCBmaWxlbmFtZSwgcmVxdWlyZUNvbXBpbGVyKSB7XG4gICAgICAgIGNvbnN0IGNvZGUgICAgICAgICA9IHJlYWRGaWxlU3luYyhmaWxlbmFtZSkudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgY29tcGlsZWRDb2RlID0gcmVxdWlyZUNvbXBpbGVyKHN0cmlwQm9tKGNvZGUpLCBmaWxlbmFtZSk7XG5cbiAgICAgICAgbW9kLnBhdGhzID0gQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZS5fZ2V0Tm9kZU1vZHVsZXNMb29rdXBQYXRoKGZpbGVuYW1lKTtcblxuICAgICAgICBtb2QuX2NvbXBpbGUoY29tcGlsZWRDb2RlLCBmaWxlbmFtZSk7XG4gICAgfVxuXG4gICAgX3NldHVwUmVxdWlyZUhvb2sgKHRlc3RGaWxlKSB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVDb21waWxlcnMgPSB0aGlzLl9nZXRSZXF1aXJlQ29tcGlsZXJzKCk7XG5cbiAgICAgICAgdGhpcy5vcmlnUmVxdWlyZUV4dGVuc2lvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHJlcXVpcmVDb21waWxlcnMpLmZvckVhY2goZXh0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdFeHQgPSByZXF1aXJlLmV4dGVuc2lvbnNbZXh0XTtcblxuICAgICAgICAgICAgdGhpcy5vcmlnUmVxdWlyZUV4dGVuc2lvbnNbZXh0XSA9IG9yaWdFeHQ7XG5cbiAgICAgICAgICAgIHJlcXVpcmUuZXh0ZW5zaW9uc1tleHRdID0gKG1vZCwgZmlsZW5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBoYWRHbG9iYWxBUEkgPSB0aGlzLl9oYXNHbG9iYWxBUEkoKTtcblxuICAgICAgICAgICAgICAgIC8vIE5PVEU6IHJlbW92ZSBnbG9iYWwgQVBJIHNvIHRoYXQgaXQgd2lsbCBiZSB1bmF2YWlsYWJsZSBmb3IgdGhlIGRlcGVuZGVuY2llc1xuICAgICAgICAgICAgICAgIGlmIChBUElCYXNlZFRlc3RGaWxlQ29tcGlsZXJCYXNlLl9pc05vZGVNb2R1bGVzRGVwKGZpbGVuYW1lKSAmJiBoYWRHbG9iYWxBUEkpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUdsb2JhbEFQSSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDb21waWxlclNlcnZpY2VNb2RlKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb21waWxlRXh0ZXJuYWxNb2R1bGVJbkVzbU1vZGUobW9kLCBmaWxlbmFtZSwgcmVxdWlyZUNvbXBpbGVyc1tleHRdLCBvcmlnRXh0KTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbXBpbGVFeHRlcm5hbE1vZHVsZShtb2QsIGZpbGVuYW1lLCByZXF1aXJlQ29tcGlsZXJzW2V4dF0sIG9yaWdFeHQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGhhZEdsb2JhbEFQSSAmJiAhdGhpcy5faGFzR2xvYmFsQVBJKCkpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZEdsb2JhbEFQSSh0ZXN0RmlsZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfcmVtb3ZlUmVxdWlyZUhvb2sgKCkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLm9yaWdSZXF1aXJlRXh0ZW5zaW9ucykuZm9yRWFjaChleHQgPT4ge1xuICAgICAgICAgICAgcmVxdWlyZS5leHRlbnNpb25zW2V4dF0gPSB0aGlzLm9yaWdSZXF1aXJlRXh0ZW5zaW9uc1tleHRdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfY29tcGlsZUNvZGVGb3JUZXN0RmlsZXMgKHRlc3RGaWxlc0luZm8pIHtcbiAgICAgICAgc3RhY2tDbGVhbmluZ0hvb2suZW5hYmxlZCA9IHRydWU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNhblByZWNvbXBpbGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZWNvbXBpbGVDb2RlKHRlc3RGaWxlc0luZm8pO1xuXG4gICAgICAgICAgICByZXR1cm4gdGVzdEZpbGVzSW5mby5tYXAoKHsgY29kZSwgZmlsZW5hbWUgfSkgPT4gdGhpcy5fY29tcGlsZUNvZGUoY29kZSwgZmlsZW5hbWUpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVGVzdENvbXBpbGF0aW9uRXJyb3Ioc3RhY2tDbGVhbmluZ0hvb2suY2xlYW5FcnJvcihlcnIpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHN0YWNrQ2xlYW5pbmdIb29rLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9hZGRHbG9iYWxBUEkgKHRlc3RGaWxlKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWwsICdmaXh0dXJlJywge1xuICAgICAgICAgICAgZ2V0OiAgICAgICAgICAoKSA9PiBuZXcgRml4dHVyZSh0ZXN0RmlsZSwgdGhpcy5iYXNlVXJsKSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbCwgJ3Rlc3QnLCB7XG4gICAgICAgICAgICBnZXQ6ICAgICAgICAgICgpID0+IG5ldyBUZXN0KHRlc3RGaWxlLCBmYWxzZSwgdGhpcy5iYXNlVXJsKSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX2FkZEV4cG9ydEFQSUluQ29tcGlsZXJTZXJ2aWNlTW9kZSAodGVzdEZpbGUpIHtcbiAgICAgICAgLy8gJ2VzbScgbGlicmFyeSBoYXMgYW4gaXNzdWUgd2l0aCBsb2FkaW5nIG1vZHVsZXNcbiAgICAgICAgLy8gaW4gY2FzZSBvZiB0aGUgY29tYmluYXRpb24gb2YgcmVxdWlyZSBhbmQgaW1wb3J0IGRpcmVjdGl2ZXMuXG4gICAgICAgIC8vIFRoaXMgaGFjayBhbGxvd2luZyBhY2hpZXZlIHRoZSBkZXNpcmVkIGJlaGF2aW9yLlxuICAgICAgICBjb25zdCBleHBvcnRhYmxlTGliUGF0aCA9IHJlcXVpcmUucmVzb2x2ZSgnLi4vLi4vYXBpL2V4cG9ydGFibGUtbGliJyk7XG5cbiAgICAgICAgZGVsZXRlIHJlcXVpcmUuY2FjaGVbZXhwb3J0YWJsZUxpYlBhdGhdO1xuXG4gICAgICAgIGdsb2JhbFtURVNUX0ZJTEVfVEVNUF9WQVJJQUJMRV9OQU1FXSA9IHsgdGVzdEZpbGUsIGJhc2VVcmw6IHRoaXMuYmFzZVVybCB9O1xuXG4gICAgICAgIHJlcXVpcmUoJy4uLy4uL2FwaS9leHBvcnRhYmxlLWxpYicpO1xuICAgIH1cblxuICAgIF9hZGRFeHBvcnRBUEkgKHRlc3RGaWxlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ29tcGlsZXJTZXJ2aWNlTW9kZSlcbiAgICAgICAgICAgIHRoaXMuX2FkZEV4cG9ydEFQSUluQ29tcGlsZXJTZXJ2aWNlTW9kZSh0ZXN0RmlsZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGFkZEV4cG9ydEFQSSh0ZXN0RmlsZSwgZXhwb3J0YWJsZUxpYiwgeyBiYXNlVXJsOiB0aGlzLmJhc2VVcmwgfSk7XG4gICAgfVxuXG4gICAgX3JlbW92ZUdsb2JhbEFQSSAoKSB7XG4gICAgICAgIGRlbGV0ZSBnbG9iYWwuZml4dHVyZTtcbiAgICAgICAgZGVsZXRlIGdsb2JhbC50ZXN0O1xuICAgIH1cblxuICAgIF9oYXNHbG9iYWxBUEkgKCkge1xuICAgICAgICByZXR1cm4gZ2xvYmFsLmZpeHR1cmUgJiYgZ2xvYmFsLnRlc3Q7XG4gICAgfVxuXG4gICAgX3J1bkNvbXBpbGVkQ29kZSAoY29tcGlsZWRDb2RlLCBmaWxlbmFtZSkge1xuICAgICAgICBjb25zdCB0ZXN0RmlsZSA9IG5ldyBUZXN0RmlsZShmaWxlbmFtZSk7XG5cbiAgICAgICAgdGhpcy5fYWRkR2xvYmFsQVBJKHRlc3RGaWxlKTtcbiAgICAgICAgdGhpcy5fYWRkRXhwb3J0QVBJKHRlc3RGaWxlKTtcblxuICAgICAgICBzdGFja0NsZWFuaW5nSG9vay5lbmFibGVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLl9zZXR1cFJlcXVpcmVIb29rKHRlc3RGaWxlKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5fZXhlY0FzTW9kdWxlKGNvbXBpbGVkQ29kZSwgZmlsZW5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICghKGVyciBpbnN0YW5jZW9mIEFQSUVycm9yKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVGVzdENvbXBpbGF0aW9uRXJyb3Ioc3RhY2tDbGVhbmluZ0hvb2suY2xlYW5FcnJvcihlcnIpKTtcblxuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUmVxdWlyZUhvb2soKTtcbiAgICAgICAgICAgIHN0YWNrQ2xlYW5pbmdIb29rLmVuYWJsZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlR2xvYmFsQVBJKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGVzdEZpbGUuZ2V0VGVzdHMoKTtcbiAgICB9XG5cblxuICAgIHByZWNvbXBpbGUgKHRlc3RGaWxlc0luZm8pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBpbGVDb2RlRm9yVGVzdEZpbGVzKHRlc3RGaWxlc0luZm8pO1xuICAgIH1cblxuICAgIGV4ZWN1dGUgKGNvbXBpbGVkQ29kZSwgZmlsZW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkNvbXBpbGVkQ29kZShjb21waWxlZENvZGUsIGZpbGVuYW1lKTtcbiAgICB9XG5cbiAgICBhc3luYyBjb21waWxlIChjb2RlLCBmaWxlbmFtZSkge1xuICAgICAgICBjb25zdCBbY29tcGlsZWRDb2RlXSA9IGF3YWl0IHRoaXMucHJlY29tcGlsZShbeyBjb2RlLCBmaWxlbmFtZSB9XSk7XG5cbiAgICAgICAgaWYgKGNvbXBpbGVkQ29kZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGUoY29tcGlsZWRDb2RlLCBmaWxlbmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIF9oYXNUZXN0cyAoY29kZSkge1xuICAgICAgICByZXR1cm4gRklYVFVSRV9SRS50ZXN0KGNvZGUpICYmIFRFU1RfUkUudGVzdChjb2RlKTtcbiAgICB9XG5cbiAgICBjbGVhblVwICgpIHtcbiAgICAgICAgdGhpcy5jYWNoZSA9IHt9O1xuICAgIH1cbn1cbiJdfQ==
@@ -5,8 +5,8 @@ const test_page_url_1 = require("../../api/test-page-url");
5
5
  const type_assertions_1 = require("../../errors/runtime/type-assertions");
6
6
  class TestFileCompilerBase {
7
7
  constructor({ baseUrl }) {
8
- const escapedExt = lodash_1.flatten([this.getSupportedExtension()])
9
- .map(ext => lodash_1.escapeRegExp(ext))
8
+ const escapedExt = (0, lodash_1.flatten)([this.getSupportedExtension()])
9
+ .map(ext => (0, lodash_1.escapeRegExp)(ext))
10
10
  .join('|');
11
11
  this.supportedExtensionRe = new RegExp(`(${escapedExt})$`);
12
12
  this._ensureBaseUrl(baseUrl);
@@ -15,9 +15,9 @@ class TestFileCompilerBase {
15
15
  if (!url)
16
16
  return;
17
17
  this.baseUrl = url;
18
- type_assertions_1.assertType(type_assertions_1.is.string, '_ensureBaseUrl', 'The base URL', this.baseUrl);
19
- test_page_url_1.assertBaseUrl(this.baseUrl, '_ensureBaseUrl');
20
- this.baseUrl = test_page_url_1.getUrl(this.baseUrl);
18
+ (0, type_assertions_1.assertType)(type_assertions_1.is.string, '_ensureBaseUrl', 'The base URL', this.baseUrl);
19
+ (0, test_page_url_1.assertBaseUrl)(this.baseUrl, '_ensureBaseUrl');
20
+ this.baseUrl = (0, test_page_url_1.getUrl)(this.baseUrl);
21
21
  }
22
22
  _hasTests( /* code */) {
23
23
  throw new Error('Not implemented');
@@ -46,4 +46,4 @@ class TestFileCompilerBase {
46
46
  }
47
47
  exports.default = TestFileCompilerBase;
48
48
  module.exports = exports.default;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21waWxlci90ZXN0LWZpbGUvYmFzZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUEyRDtBQUMzRCwyREFBZ0U7QUFDaEUsMEVBQXNFO0FBRXRFLE1BQXFCLG9CQUFvQjtJQUNyQyxZQUFhLEVBQUUsT0FBTyxFQUFFO1FBQ3BCLE1BQU0sVUFBVSxHQUFHLGdCQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO2FBQ3JELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHFCQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksTUFBTSxDQUFDLElBQUksVUFBVSxJQUFJLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxjQUFjLENBQUUsR0FBRztRQUNmLElBQUksQ0FBQyxHQUFHO1lBQ0osT0FBTztRQUVYLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBRW5CLDRCQUFVLENBQUMsb0JBQUUsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSw2QkFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsT0FBTyxHQUFHLHNCQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxTQUFTLEVBQUUsVUFBVTtRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELHFCQUFxQjtRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLEVBQUUsbUJBQW1CO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sRUFBRSxvQkFBb0I7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxFQUFFLDRCQUE0QjtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFVBQVUsQ0FBRSxJQUFJLEVBQUUsUUFBUTtRQUN0QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPO1FBQ0gseUNBQXlDO0lBQzdDLENBQUM7Q0FDSjtBQXRERCx1Q0FzREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlc2NhcGVSZWdFeHAgYXMgZXNjYXBlUmUsIGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgYXNzZXJ0QmFzZVVybCwgZ2V0VXJsIH0gZnJvbSAnLi4vLi4vYXBpL3Rlc3QtcGFnZS11cmwnO1xuaW1wb3J0IHsgYXNzZXJ0VHlwZSwgaXMgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZS90eXBlLWFzc2VydGlvbnMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXN0RmlsZUNvbXBpbGVyQmFzZSB7XG4gICAgY29uc3RydWN0b3IgKHsgYmFzZVVybCB9KSB7XG4gICAgICAgIGNvbnN0IGVzY2FwZWRFeHQgPSBmbGF0dGVuKFt0aGlzLmdldFN1cHBvcnRlZEV4dGVuc2lvbigpXSlcbiAgICAgICAgICAgIC5tYXAoZXh0ID0+IGVzY2FwZVJlKGV4dCkpXG4gICAgICAgICAgICAuam9pbignfCcpO1xuXG4gICAgICAgIHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9uUmUgPSBuZXcgUmVnRXhwKGAoJHtlc2NhcGVkRXh0fSkkYCk7XG5cbiAgICAgICAgdGhpcy5fZW5zdXJlQmFzZVVybChiYXNlVXJsKTtcbiAgICB9XG5cbiAgICBfZW5zdXJlQmFzZVVybCAodXJsKSB7XG4gICAgICAgIGlmICghdXJsKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuYmFzZVVybCA9IHVybDtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLnN0cmluZywgJ19lbnN1cmVCYXNlVXJsJywgJ1RoZSBiYXNlIFVSTCcsIHRoaXMuYmFzZVVybCk7XG4gICAgICAgIGFzc2VydEJhc2VVcmwodGhpcy5iYXNlVXJsLCAnX2Vuc3VyZUJhc2VVcmwnKTtcblxuICAgICAgICB0aGlzLmJhc2VVcmwgPSBnZXRVcmwodGhpcy5iYXNlVXJsKTtcbiAgICB9XG5cbiAgICBfaGFzVGVzdHMgKC8qIGNvZGUgKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBnZXRTdXBwb3J0ZWRFeHRlbnNpb24gKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIGFzeW5jIHByZWNvbXBpbGUgKC8qIHRlc3RGaWxlc0luZm8gKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBhc3luYyBjb21waWxlICgvKiBjb2RlLCBmaWxlbmFtZSAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIGFzeW5jIGV4ZWN1dGUgKC8qIGNvbXBpbGVkQ29kZSwgZmlsZW5hbWUgKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBjYW5Db21waWxlIChjb2RlLCBmaWxlbmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25SZS50ZXN0KGZpbGVuYW1lKTtcbiAgICB9XG5cbiAgICBnZXQgY2FuUHJlY29tcGlsZSAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjbGVhblVwICgpIHtcbiAgICAgICAgLy8gTk9URTogT3B0aW9uYWwuIERvIG5vdGhpbmcgYnkgZGVmYXVsdC5cbiAgICB9XG59XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21waWxlci90ZXN0LWZpbGUvYmFzZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUEyRDtBQUMzRCwyREFBZ0U7QUFDaEUsMEVBQXNFO0FBRXRFLE1BQXFCLG9CQUFvQjtJQUNyQyxZQUFhLEVBQUUsT0FBTyxFQUFFO1FBQ3BCLE1BQU0sVUFBVSxHQUFHLElBQUEsZ0JBQU8sRUFBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7YUFDckQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBQSxxQkFBUSxFQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVmLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYyxDQUFFLEdBQUc7UUFDZixJQUFJLENBQUMsR0FBRztZQUNKLE9BQU87UUFFWCxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUVuQixJQUFBLDRCQUFVLEVBQUMsb0JBQUUsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxJQUFBLDZCQUFhLEVBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBQSxzQkFBTSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsU0FBUyxFQUFFLFVBQVU7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxxQkFBcUI7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxFQUFFLG1CQUFtQjtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLEVBQUUsb0JBQW9CO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sRUFBRSw0QkFBNEI7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxVQUFVLENBQUUsSUFBSSxFQUFFLFFBQVE7UUFDdEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTztRQUNILHlDQUF5QztJQUM3QyxDQUFDO0NBQ0o7QUF0REQsdUNBc0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXNjYXBlUmVnRXhwIGFzIGVzY2FwZVJlLCBmbGF0dGVuIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGFzc2VydEJhc2VVcmwsIGdldFVybCB9IGZyb20gJy4uLy4uL2FwaS90ZXN0LXBhZ2UtdXJsJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVzdEZpbGVDb21waWxlckJhc2Uge1xuICAgIGNvbnN0cnVjdG9yICh7IGJhc2VVcmwgfSkge1xuICAgICAgICBjb25zdCBlc2NhcGVkRXh0ID0gZmxhdHRlbihbdGhpcy5nZXRTdXBwb3J0ZWRFeHRlbnNpb24oKV0pXG4gICAgICAgICAgICAubWFwKGV4dCA9PiBlc2NhcGVSZShleHQpKVxuICAgICAgICAgICAgLmpvaW4oJ3wnKTtcblxuICAgICAgICB0aGlzLnN1cHBvcnRlZEV4dGVuc2lvblJlID0gbmV3IFJlZ0V4cChgKCR7ZXNjYXBlZEV4dH0pJGApO1xuXG4gICAgICAgIHRoaXMuX2Vuc3VyZUJhc2VVcmwoYmFzZVVybCk7XG4gICAgfVxuXG4gICAgX2Vuc3VyZUJhc2VVcmwgKHVybCkge1xuICAgICAgICBpZiAoIXVybClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLmJhc2VVcmwgPSB1cmw7XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdfZW5zdXJlQmFzZVVybCcsICdUaGUgYmFzZSBVUkwnLCB0aGlzLmJhc2VVcmwpO1xuICAgICAgICBhc3NlcnRCYXNlVXJsKHRoaXMuYmFzZVVybCwgJ19lbnN1cmVCYXNlVXJsJyk7XG5cbiAgICAgICAgdGhpcy5iYXNlVXJsID0gZ2V0VXJsKHRoaXMuYmFzZVVybCk7XG4gICAgfVxuXG4gICAgX2hhc1Rlc3RzICgvKiBjb2RlICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9uICgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBhc3luYyBwcmVjb21waWxlICgvKiB0ZXN0RmlsZXNJbmZvICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgYXN5bmMgY29tcGlsZSAoLyogY29kZSwgZmlsZW5hbWUgKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBhc3luYyBleGVjdXRlICgvKiBjb21waWxlZENvZGUsIGZpbGVuYW1lICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgY2FuQ29tcGlsZSAoY29kZSwgZmlsZW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9uUmUudGVzdChmaWxlbmFtZSk7XG4gICAgfVxuXG4gICAgZ2V0IGNhblByZWNvbXBpbGUgKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY2xlYW5VcCAoKSB7XG4gICAgICAgIC8vIE5PVEU6IE9wdGlvbmFsLiBEbyBub3RoaW5nIGJ5IGRlZmF1bHQuXG4gICAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const path_1 = require("path");
4
- const EXPORTABLE_LIB_PATH = path_1.join(__dirname, '../../api/exportable-lib');
4
+ const EXPORTABLE_LIB_PATH = (0, path_1.join)(__dirname, '../../api/exportable-lib');
5
5
  exports.default = EXPORTABLE_LIB_PATH;
6
6
  module.exports = exports.default;
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0YmxlLWxpYi1wYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBpbGVyL3Rlc3QtZmlsZS9leHBvcnRibGUtbGliLXBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBNEI7QUFFNUIsTUFBTSxtQkFBbUIsR0FBRyxXQUFJLENBQUMsU0FBUyxFQUFFLDBCQUEwQixDQUFDLENBQUM7QUFFeEUsa0JBQWUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5cbmNvbnN0IEVYUE9SVEFCTEVfTElCX1BBVEggPSBqb2luKF9fZGlybmFtZSwgJy4uLy4uL2FwaS9leHBvcnRhYmxlLWxpYicpO1xuXG5leHBvcnQgZGVmYXVsdCBFWFBPUlRBQkxFX0xJQl9QQVRIO1xuIl19
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0YmxlLWxpYi1wYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBpbGVyL3Rlc3QtZmlsZS9leHBvcnRibGUtbGliLXBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBNEI7QUFFNUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztBQUV4RSxrQkFBZSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcblxuY29uc3QgRVhQT1JUQUJMRV9MSUJfUEFUSCA9IGpvaW4oX19kaXJuYW1lLCAnLi4vLi4vYXBpL2V4cG9ydGFibGUtbGliJyk7XG5cbmV4cG9ydCBkZWZhdWx0IEVYUE9SVEFCTEVfTElCX1BBVEg7XG4iXX0=
@@ -22,7 +22,7 @@ class CoffeeScriptTestFileCompiler extends compiler_js_1.default {
22
22
  inlineMap: true,
23
23
  header: false,
24
24
  });
25
- const { babel } = load_libs_1.default();
25
+ const { babel } = (0, load_libs_1.default)();
26
26
  const babelOptions = compiler_js_1.default.getBabelOptions(filename, code);
27
27
  const compiled = babel.transform(transpiled.js, babelOptions);
28
28
  this.cache[filename] = compiled.code;
@@ -37,4 +37,4 @@ class CoffeeScriptTestFileCompiler extends compiler_js_1.default {
37
37
  }
38
38
  exports.default = CoffeeScriptTestFileCompiler;
39
39
  module.exports = exports.default;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGlsZXIvdGVzdC1maWxlL2Zvcm1hdHMvY29mZmVlc2NyaXB0L2NvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0VBQXdDO0FBQ3hDLHlFQUFxRDtBQUNyRCx5RUFBNEQ7QUFFNUQsTUFBTSxVQUFVLEdBQUcsZ0NBQWdDLENBQUM7QUFDcEQsTUFBTSxPQUFPLEdBQU0sa0JBQWtCLENBQUM7QUFFdEMsTUFBcUIsNEJBQTZCLFNBQVEscUJBQXNCO0lBQzVFLFNBQVMsQ0FBRSxJQUFJO1FBQ1gsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFlBQVksQ0FBRSxJQUFJLEVBQUUsUUFBUTtRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoQyxNQUFNLFVBQVUsR0FBRyxzQkFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDMUMsUUFBUTtZQUNSLElBQUksRUFBTyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUk7WUFDZixTQUFTLEVBQUUsSUFBSTtZQUNmLE1BQU0sRUFBSyxLQUFLO1NBQ25CLENBQUMsQ0FBQztRQUVILE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBTSxtQkFBYSxFQUFFLENBQUM7UUFDckMsTUFBTSxZQUFZLEdBQUcscUJBQXNCLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RSxNQUFNLFFBQVEsR0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBRXJDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ2hGLENBQUM7SUFFRCxxQkFBcUI7UUFDakIsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztDQUNKO0FBakNELCtDQWlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb2ZmZWVTY3JpcHQgZnJvbSAnY29mZmVlc2NyaXB0JztcbmltcG9ydCBsb2FkQmFiZWxMaWJzIGZyb20gJy4uLy4uLy4uL2JhYmVsL2xvYWQtbGlicyc7XG5pbXBvcnQgRVNOZXh0VGVzdEZpbGVDb21waWxlciBmcm9tICcuLi9lcy1uZXh0L2NvbXBpbGVyLmpzJztcblxuY29uc3QgRklYVFVSRV9SRSA9IC8oXnw7fFxccyspZml4dHVyZVxccyooXFwufFxcKHwnfFwiKS87XG5jb25zdCBURVNUX1JFICAgID0gLyhefDt8XFxzKyl0ZXN0XFxzKi87XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvZmZlZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIgZXh0ZW5kcyBFU05leHRUZXN0RmlsZUNvbXBpbGVyIHtcbiAgICBfaGFzVGVzdHMgKGNvZGUpIHtcbiAgICAgICAgcmV0dXJuIEZJWFRVUkVfUkUudGVzdChjb2RlKSAmJiBURVNUX1JFLnRlc3QoY29kZSk7XG4gICAgfVxuXG4gICAgX2NvbXBpbGVDb2RlIChjb2RlLCBmaWxlbmFtZSkge1xuICAgICAgICBpZiAodGhpcy5jYWNoZVtmaWxlbmFtZV0pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVtmaWxlbmFtZV07XG5cbiAgICAgICAgY29uc3QgdHJhbnNwaWxlZCA9IENvZmZlZVNjcmlwdC5jb21waWxlKGNvZGUsIHtcbiAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgYmFyZTogICAgICB0cnVlLFxuICAgICAgICAgICAgc291cmNlTWFwOiB0cnVlLFxuICAgICAgICAgICAgaW5saW5lTWFwOiB0cnVlLFxuICAgICAgICAgICAgaGVhZGVyOiAgICBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgeyBiYWJlbCB9ICAgID0gbG9hZEJhYmVsTGlicygpO1xuICAgICAgICBjb25zdCBiYWJlbE9wdGlvbnMgPSBFU05leHRUZXN0RmlsZUNvbXBpbGVyLmdldEJhYmVsT3B0aW9ucyhmaWxlbmFtZSwgY29kZSk7XG4gICAgICAgIGNvbnN0IGNvbXBpbGVkICAgICA9IGJhYmVsLnRyYW5zZm9ybSh0cmFuc3BpbGVkLmpzLCBiYWJlbE9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMuY2FjaGVbZmlsZW5hbWVdID0gY29tcGlsZWQuY29kZTtcblxuICAgICAgICByZXR1cm4gY29tcGlsZWQuY29kZTtcbiAgICB9XG5cbiAgICBfZ2V0UmVxdWlyZUNvbXBpbGVycyAoKSB7XG4gICAgICAgIHJldHVybiB7ICcuY29mZmVlJzogKGNvZGUsIGZpbGVuYW1lKSA9PiB0aGlzLl9jb21waWxlQ29kZShjb2RlLCBmaWxlbmFtZSkgfTtcbiAgICB9XG5cbiAgICBnZXRTdXBwb3J0ZWRFeHRlbnNpb24gKCkge1xuICAgICAgICByZXR1cm4gJy5jb2ZmZWUnO1xuICAgIH1cbn1cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGlsZXIvdGVzdC1maWxlL2Zvcm1hdHMvY29mZmVlc2NyaXB0L2NvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0VBQXdDO0FBQ3hDLHlFQUFxRDtBQUNyRCx5RUFBNEQ7QUFFNUQsTUFBTSxVQUFVLEdBQUcsZ0NBQWdDLENBQUM7QUFDcEQsTUFBTSxPQUFPLEdBQU0sa0JBQWtCLENBQUM7QUFFdEMsTUFBcUIsNEJBQTZCLFNBQVEscUJBQXNCO0lBQzVFLFNBQVMsQ0FBRSxJQUFJO1FBQ1gsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFlBQVksQ0FBRSxJQUFJLEVBQUUsUUFBUTtRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoQyxNQUFNLFVBQVUsR0FBRyxzQkFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDMUMsUUFBUTtZQUNSLElBQUksRUFBTyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUk7WUFDZixTQUFTLEVBQUUsSUFBSTtZQUNmLE1BQU0sRUFBSyxLQUFLO1NBQ25CLENBQUMsQ0FBQztRQUVILE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBTSxJQUFBLG1CQUFhLEdBQUUsQ0FBQztRQUNyQyxNQUFNLFlBQVksR0FBRyxxQkFBc0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVFLE1BQU0sUUFBUSxHQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUVsRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFckMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDaEYsQ0FBQztJQUVELHFCQUFxQjtRQUNqQixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0NBQ0o7QUFqQ0QsK0NBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvZmZlZVNjcmlwdCBmcm9tICdjb2ZmZWVzY3JpcHQnO1xuaW1wb3J0IGxvYWRCYWJlbExpYnMgZnJvbSAnLi4vLi4vLi4vYmFiZWwvbG9hZC1saWJzJztcbmltcG9ydCBFU05leHRUZXN0RmlsZUNvbXBpbGVyIGZyb20gJy4uL2VzLW5leHQvY29tcGlsZXIuanMnO1xuXG5jb25zdCBGSVhUVVJFX1JFID0gLyhefDt8XFxzKylmaXh0dXJlXFxzKihcXC58XFwofCd8XCIpLztcbmNvbnN0IFRFU1RfUkUgICAgPSAvKF58O3xcXHMrKXRlc3RcXHMqLztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29mZmVlU2NyaXB0VGVzdEZpbGVDb21waWxlciBleHRlbmRzIEVTTmV4dFRlc3RGaWxlQ29tcGlsZXIge1xuICAgIF9oYXNUZXN0cyAoY29kZSkge1xuICAgICAgICByZXR1cm4gRklYVFVSRV9SRS50ZXN0KGNvZGUpICYmIFRFU1RfUkUudGVzdChjb2RlKTtcbiAgICB9XG5cbiAgICBfY29tcGlsZUNvZGUgKGNvZGUsIGZpbGVuYW1lKSB7XG4gICAgICAgIGlmICh0aGlzLmNhY2hlW2ZpbGVuYW1lXSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlW2ZpbGVuYW1lXTtcblxuICAgICAgICBjb25zdCB0cmFuc3BpbGVkID0gQ29mZmVlU2NyaXB0LmNvbXBpbGUoY29kZSwge1xuICAgICAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgICAgICBiYXJlOiAgICAgIHRydWUsXG4gICAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgICBpbmxpbmVNYXA6IHRydWUsXG4gICAgICAgICAgICBoZWFkZXI6ICAgIGZhbHNlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB7IGJhYmVsIH0gICAgPSBsb2FkQmFiZWxMaWJzKCk7XG4gICAgICAgIGNvbnN0IGJhYmVsT3B0aW9ucyA9IEVTTmV4dFRlc3RGaWxlQ29tcGlsZXIuZ2V0QmFiZWxPcHRpb25zKGZpbGVuYW1lLCBjb2RlKTtcbiAgICAgICAgY29uc3QgY29tcGlsZWQgICAgID0gYmFiZWwudHJhbnNmb3JtKHRyYW5zcGlsZWQuanMsIGJhYmVsT3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5jYWNoZVtmaWxlbmFtZV0gPSBjb21waWxlZC5jb2RlO1xuXG4gICAgICAgIHJldHVybiBjb21waWxlZC5jb2RlO1xuICAgIH1cblxuICAgIF9nZXRSZXF1aXJlQ29tcGlsZXJzICgpIHtcbiAgICAgICAgcmV0dXJuIHsgJy5jb2ZmZWUnOiAoY29kZSwgZmlsZW5hbWUpID0+IHRoaXMuX2NvbXBpbGVDb2RlKGNvZGUsIGZpbGVuYW1lKSB9O1xuICAgIH1cblxuICAgIGdldFN1cHBvcnRlZEV4dGVuc2lvbiAoKSB7XG4gICAgICAgIHJldHVybiAnLmNvZmZlZSc7XG4gICAgfVxufVxuIl19