@angular/core 14.0.0-next.7 → 14.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/esm2020/src/application_ref.mjs +232 -66
  2. package/esm2020/src/application_tokens.mjs +5 -2
  3. package/esm2020/src/change_detection/change_detection.mjs +2 -2
  4. package/esm2020/src/change_detection/change_detector_ref.mjs +3 -3
  5. package/esm2020/src/change_detection/differs/default_iterable_differ.mjs +3 -3
  6. package/esm2020/src/change_detection/differs/default_keyvalue_differ.mjs +3 -3
  7. package/esm2020/src/change_detection/differs/iterable_differs.mjs +2 -2
  8. package/esm2020/src/change_detection/differs/keyvalue_differs.mjs +2 -2
  9. package/esm2020/src/compiler/compiler_facade.mjs +2 -2
  10. package/esm2020/src/compiler/compiler_facade_interface.mjs +7 -1
  11. package/esm2020/src/console.mjs +4 -3
  12. package/esm2020/src/core.mjs +2 -2
  13. package/esm2020/src/core_private_export.mjs +5 -3
  14. package/esm2020/src/core_render3_private_export.mjs +5 -4
  15. package/esm2020/src/debug/debug_node.mjs +5 -5
  16. package/esm2020/src/di/create_injector.mjs +35 -0
  17. package/esm2020/src/di/index.mjs +4 -1
  18. package/esm2020/src/di/initializer_token.mjs +16 -0
  19. package/esm2020/src/di/injection_token.mjs +7 -1
  20. package/esm2020/src/di/injector.mjs +3 -3
  21. package/esm2020/src/di/injector_compatibility.mjs +5 -7
  22. package/esm2020/src/di/injector_token.mjs +2 -2
  23. package/esm2020/src/di/interface/defs.mjs +1 -1
  24. package/esm2020/src/di/interface/provider.mjs +1 -1
  25. package/esm2020/src/di/internal_tokens.mjs +10 -0
  26. package/esm2020/src/di/jit/injectable.mjs +3 -3
  27. package/esm2020/src/di/metadata.mjs +6 -6
  28. package/esm2020/src/di/provider_collection.mjs +224 -0
  29. package/esm2020/src/di/r3_injector.mjs +87 -157
  30. package/esm2020/src/di/reflective_provider.mjs +4 -4
  31. package/esm2020/src/di/scope.mjs +1 -1
  32. package/esm2020/src/errors.mjs +1 -1
  33. package/esm2020/src/linker/component_factory.mjs +1 -1
  34. package/esm2020/src/linker/ng_module_factory.mjs +1 -1
  35. package/esm2020/src/linker/ng_module_factory_loader.mjs +2 -2
  36. package/esm2020/src/linker/ng_module_registration.mjs +55 -0
  37. package/esm2020/src/linker/template_ref.mjs +3 -3
  38. package/esm2020/src/linker/view_container_ref.mjs +15 -12
  39. package/esm2020/src/metadata/directives.mjs +1 -1
  40. package/esm2020/src/metadata/ng_module.mjs +1 -1
  41. package/esm2020/src/metadata.mjs +1 -1
  42. package/esm2020/src/platform_core_providers.mjs +3 -14
  43. package/esm2020/src/reflection/platform_reflection_capabilities.mjs +1 -1
  44. package/esm2020/src/reflection/reflection_capabilities.mjs +1 -37
  45. package/esm2020/src/render3/assert.mjs +3 -3
  46. package/esm2020/src/render3/bindings.mjs +2 -2
  47. package/esm2020/src/render3/collect_native_nodes.mjs +5 -5
  48. package/esm2020/src/render3/component.mjs +8 -8
  49. package/esm2020/src/render3/component_ref.mjs +15 -7
  50. package/esm2020/src/render3/context_discovery.mjs +4 -4
  51. package/esm2020/src/render3/definition.mjs +18 -20
  52. package/esm2020/src/render3/di.mjs +21 -21
  53. package/esm2020/src/render3/di_setup.mjs +7 -6
  54. package/esm2020/src/render3/errors.mjs +22 -4
  55. package/esm2020/src/render3/errors_di.mjs +10 -7
  56. package/esm2020/src/render3/features/inherit_definition_feature.mjs +4 -3
  57. package/esm2020/src/render3/features/standalone_feature.mjs +70 -0
  58. package/esm2020/src/render3/hooks.mjs +19 -19
  59. package/esm2020/src/render3/i18n/i18n_apply.mjs +16 -16
  60. package/esm2020/src/render3/i18n/i18n_debug.mjs +9 -9
  61. package/esm2020/src/render3/i18n/i18n_insert_before_index.mjs +2 -2
  62. package/esm2020/src/render3/i18n/i18n_parse.mjs +16 -16
  63. package/esm2020/src/render3/i18n/i18n_util.mjs +7 -7
  64. package/esm2020/src/render3/index.mjs +6 -5
  65. package/esm2020/src/render3/instructions/advance.mjs +4 -4
  66. package/esm2020/src/render3/instructions/all.mjs +2 -1
  67. package/esm2020/src/render3/instructions/change_detection.mjs +2 -2
  68. package/esm2020/src/render3/instructions/element.mjs +47 -12
  69. package/esm2020/src/render3/instructions/element_container.mjs +3 -3
  70. package/esm2020/src/render3/instructions/i18n.mjs +2 -2
  71. package/esm2020/src/render3/instructions/listener.mjs +8 -11
  72. package/esm2020/src/render3/instructions/lview_debug.mjs +27 -27
  73. package/esm2020/src/render3/instructions/projection.mjs +3 -3
  74. package/esm2020/src/render3/instructions/shared.mjs +133 -87
  75. package/esm2020/src/render3/instructions/styling.mjs +5 -5
  76. package/esm2020/src/render3/instructions/template.mjs +3 -3
  77. package/esm2020/src/render3/instructions/text.mjs +2 -2
  78. package/esm2020/src/render3/interfaces/definition.mjs +1 -1
  79. package/esm2020/src/render3/interfaces/node.mjs +10 -10
  80. package/esm2020/src/render3/interfaces/public_definitions.mjs +1 -1
  81. package/esm2020/src/render3/interfaces/styling.mjs +18 -18
  82. package/esm2020/src/render3/interfaces/type_checks.mjs +5 -5
  83. package/esm2020/src/render3/interfaces/view.mjs +1 -1
  84. package/esm2020/src/render3/jit/directive.mjs +135 -13
  85. package/esm2020/src/render3/jit/environment.mjs +5 -1
  86. package/esm2020/src/render3/jit/module.mjs +90 -27
  87. package/esm2020/src/render3/jit/module_patch.mjs +11 -0
  88. package/esm2020/src/render3/jit/partial.mjs +8 -8
  89. package/esm2020/src/render3/jit/pipe.mjs +4 -6
  90. package/esm2020/src/render3/jit/util.mjs +15 -0
  91. package/esm2020/src/render3/ng_module_ref.mjs +34 -32
  92. package/esm2020/src/render3/node_assert.mjs +8 -8
  93. package/esm2020/src/render3/node_manipulation.mjs +40 -40
  94. package/esm2020/src/render3/node_manipulation_i18n.mjs +3 -3
  95. package/esm2020/src/render3/node_selector_matcher.mjs +28 -28
  96. package/esm2020/src/render3/pipe.mjs +2 -2
  97. package/esm2020/src/render3/query.mjs +12 -12
  98. package/esm2020/src/render3/state.mjs +34 -11
  99. package/esm2020/src/render3/styling/class_differ.mjs +3 -3
  100. package/esm2020/src/render3/styling/static_styling.mjs +3 -3
  101. package/esm2020/src/render3/styling/styling_parser.mjs +18 -18
  102. package/esm2020/src/render3/util/attrs_utils.mjs +10 -10
  103. package/esm2020/src/render3/util/discovery_utils.mjs +4 -4
  104. package/esm2020/src/render3/util/injector_utils.mjs +4 -4
  105. package/esm2020/src/render3/util/view_traversal_utils.mjs +2 -2
  106. package/esm2020/src/render3/util/view_utils.mjs +3 -3
  107. package/esm2020/src/render3/view_ref.mjs +12 -8
  108. package/esm2020/src/sanitization/bypass.mjs +7 -7
  109. package/esm2020/src/sanitization/sanitization.mjs +10 -10
  110. package/esm2020/src/testability/testability.mjs +69 -19
  111. package/esm2020/src/util/global.mjs +8 -8
  112. package/esm2020/src/util/raf.mjs +1 -1
  113. package/esm2020/src/version.mjs +1 -1
  114. package/esm2020/testing/src/logger.mjs +3 -3
  115. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  116. package/esm2020/testing/src/r3_test_bed.mjs +44 -13
  117. package/esm2020/testing/src/r3_test_bed_compiler.mjs +45 -4
  118. package/esm2020/testing/src/resolvers.mjs +1 -1
  119. package/esm2020/testing/src/test_bed.mjs +1 -1
  120. package/esm2020/testing/src/test_bed_common.mjs +5 -1
  121. package/fesm2015/core.mjs +1861 -1122
  122. package/fesm2015/core.mjs.map +1 -1
  123. package/fesm2015/testing.mjs +94 -15
  124. package/fesm2015/testing.mjs.map +1 -1
  125. package/fesm2020/core.mjs +1856 -1123
  126. package/fesm2020/core.mjs.map +1 -1
  127. package/fesm2020/testing.mjs +91 -15
  128. package/fesm2020/testing.mjs.map +1 -1
  129. package/{core.d.ts → index.d.ts} +14774 -14598
  130. package/package.json +4 -4
  131. package/schematics/migrations/path-match-type/index.d.ts +11 -0
  132. package/schematics/migrations/path-match-type/index.js +95 -0
  133. package/schematics/migrations/path-match-type/transform.d.ts +19 -0
  134. package/schematics/migrations/path-match-type/transform.js +48 -0
  135. package/schematics/migrations/path-match-type/update_recorder.d.ts +18 -0
  136. package/schematics/migrations/path-match-type/update_recorder.js +20 -0
  137. package/schematics/migrations/path-match-type/util.d.ts +11 -0
  138. package/schematics/migrations/path-match-type/util.js +106 -0
  139. package/schematics/migrations/typed-forms/util.d.ts +2 -1
  140. package/schematics/migrations/typed-forms/util.js +42 -13
  141. package/schematics/migrations.json +8 -3
  142. package/schematics/utils/import_manager.js +3 -15
  143. package/schematics/utils/typescript/imports.js +2 -7
  144. package/testing/{testing.d.ts → index.d.ts} +565 -577
  145. package/esm2020/src/change_detection/change_detection_util.mjs +0 -64
  146. package/esm2020/src/di/util.mjs +0 -51
  147. package/esm2020/src/linker/ng_module_factory_registration.mjs +0 -59
  148. package/esm2020/src/reflection/reflection.mjs +0 -16
  149. package/esm2020/src/reflection/reflector.mjs +0 -56
  150. package/esm2020/src/reflection/types.mjs +0 -9
  151. package/testing/package.json +0 -9
@@ -8,6 +8,10 @@
8
8
  import { InjectionToken } from '@angular/core';
9
9
  /** Whether test modules should be torn down by default. */
10
10
  export const TEARDOWN_TESTING_MODULE_ON_DESTROY_DEFAULT = true;
11
+ /** Whether unknown elements in templates should throw by default. */
12
+ export const THROW_ON_UNKNOWN_ELEMENTS_DEFAULT = false;
13
+ /** Whether unknown properties in templates should throw by default. */
14
+ export const THROW_ON_UNKNOWN_PROPERTIES_DEFAULT = false;
11
15
  /**
12
16
  * An abstract class for inserting the root test component element in a platform independent way.
13
17
  *
@@ -25,4 +29,4 @@ export const ComponentFixtureAutoDetect = new InjectionToken('ComponentFixtureAu
25
29
  * @publicApi
26
30
  */
27
31
  export const ComponentFixtureNoNgZone = new InjectionToken('ComponentFixtureNoNgZone');
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9iZWRfY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90ZXN0aW5nL3NyYy90ZXN0X2JlZF9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFvQyxjQUFjLEVBQW1FLE1BQU0sZUFBZSxDQUFDO0FBTWxKLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSwwQ0FBMEMsR0FBRyxJQUFJLENBQUM7QUFFL0Q7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsaUJBQWlCLENBQUMsYUFBcUIsSUFBRyxDQUFDO0lBQzNDLHFCQUFxQixLQUFLLENBQUM7Q0FDNUI7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUNuQyxJQUFJLGNBQWMsQ0FBWSw0QkFBNEIsQ0FBQyxDQUFDO0FBRWhFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQVksMEJBQTBCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRGlyZWN0aXZlLCBJbmplY3RGbGFncywgSW5qZWN0aW9uVG9rZW4sIE5nTW9kdWxlLCBQaXBlLCBQbGF0Zm9ybVJlZiwgUHJvdmlkZXJUb2tlbiwgU2NoZW1hTWV0YWRhdGEsIFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0NvbXBvbmVudEZpeHR1cmV9IGZyb20gJy4vY29tcG9uZW50X2ZpeHR1cmUnO1xuaW1wb3J0IHtNZXRhZGF0YU92ZXJyaWRlfSBmcm9tICcuL21ldGFkYXRhX292ZXJyaWRlJztcbmltcG9ydCB7VGVzdEJlZH0gZnJvbSAnLi90ZXN0X2JlZCc7XG5cbi8qKiBXaGV0aGVyIHRlc3QgbW9kdWxlcyBzaG91bGQgYmUgdG9ybiBkb3duIGJ5IGRlZmF1bHQuICovXG5leHBvcnQgY29uc3QgVEVBUkRPV05fVEVTVElOR19NT0RVTEVfT05fREVTVFJPWV9ERUZBVUxUID0gdHJ1ZTtcblxuLyoqXG4gKiBBbiBhYnN0cmFjdCBjbGFzcyBmb3IgaW5zZXJ0aW5nIHRoZSByb290IHRlc3QgY29tcG9uZW50IGVsZW1lbnQgaW4gYSBwbGF0Zm9ybSBpbmRlcGVuZGVudCB3YXkuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY2xhc3MgVGVzdENvbXBvbmVudFJlbmRlcmVyIHtcbiAgaW5zZXJ0Um9vdEVsZW1lbnQocm9vdEVsZW1lbnRJZDogc3RyaW5nKSB7fVxuICByZW1vdmVBbGxSb290RWxlbWVudHM/KCkge31cbn1cblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBDb21wb25lbnRGaXh0dXJlQXV0b0RldGVjdCA9XG4gICAgbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW5bXT4oJ0NvbXBvbmVudEZpeHR1cmVBdXRvRGV0ZWN0Jyk7XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY29uc3QgQ29tcG9uZW50Rml4dHVyZU5vTmdab25lID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW5bXT4oJ0NvbXBvbmVudEZpeHR1cmVOb05nWm9uZScpO1xuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IHR5cGUgVGVzdE1vZHVsZU1ldGFkYXRhID0ge1xuICBwcm92aWRlcnM/OiBhbnlbXSxcbiAgZGVjbGFyYXRpb25zPzogYW55W10sXG4gIGltcG9ydHM/OiBhbnlbXSxcbiAgc2NoZW1hcz86IEFycmF5PFNjaGVtYU1ldGFkYXRhfGFueVtdPixcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpdGggSXZ5LCBBT1Qgc3VtbWFyeSBmaWxlcyBhcmUgdW51c2VkLlxuICAgKi9cbiAgYW90U3VtbWFyaWVzPzogKCkgPT4gYW55W10sXG4gIHRlYXJkb3duPzogTW9kdWxlVGVhcmRvd25PcHRpb25zO1xufTtcblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdEVudmlyb25tZW50T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQcm92aWRlcyBhIHdheSB0byBzcGVjaWZ5IEFPVCBzdW1tYXJpZXMgdG8gdXNlIGluIFRlc3RCZWQuXG4gICAqIFRoaXMgcGFyYW1ldGVyIGlzIHVudXNlZCBhbmQgZGVwcmVjYXRlZCBpbiBJdnkuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFdpdGggSXZ5LCBBT1Qgc3VtbWFyeSBmaWxlcyBhcmUgdW51c2VkLlxuICAgKi9cbiAgYW90U3VtbWFyaWVzPzogKCkgPT4gYW55W107XG4gIC8qKlxuICAgKiBDb25maWd1cmVzIHRoZSB0ZXN0IG1vZHVsZSB0ZWFyZG93biBiZWhhdmlvciBpbiBgVGVzdEJlZGAuXG4gICAqL1xuICB0ZWFyZG93bj86IE1vZHVsZVRlYXJkb3duT3B0aW9ucztcbn1cblxuLyoqXG4gKiBDb25maWd1cmVzIHRoZSB0ZXN0IG1vZHVsZSB0ZWFyZG93biBiZWhhdmlvciBpbiBgVGVzdEJlZGAuXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlVGVhcmRvd25PcHRpb25zIHtcbiAgLyoqIFdoZXRoZXIgdGhlIHRlc3QgbW9kdWxlIHNob3VsZCBiZSBkZXN0cm95ZWQgYWZ0ZXIgZXZlcnkgdGVzdC4gKi9cbiAgZGVzdHJveUFmdGVyRWFjaDogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciBlcnJvcnMgZHVyaW5nIHRlc3QgbW9kdWxlIGRlc3RydWN0aW9uIHNob3VsZCBiZSByZS10aHJvd24uIERlZmF1bHRzIHRvIGB0cnVlYC4gKi9cbiAgcmV0aHJvd0Vycm9ycz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU3RhdGljIG1ldGhvZHMgaW1wbGVtZW50ZWQgYnkgdGhlIGBUZXN0QmVkVmlld0VuZ2luZWAgYW5kIGBUZXN0QmVkUmVuZGVyM2BcbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdEJlZFN0YXRpYyB7XG4gIG5ldyguLi5hcmdzOiBhbnlbXSk6IFRlc3RCZWQ7XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGVudmlyb25tZW50IGZvciB0ZXN0aW5nIHdpdGggYSBjb21waWxlciBmYWN0b3J5LCBhIFBsYXRmb3JtUmVmLCBhbmQgYW5cbiAgICogYW5ndWxhciBtb2R1bGUuIFRoZXNlIGFyZSBjb21tb24gdG8gZXZlcnkgdGVzdCBpbiB0aGUgc3VpdGUuXG4gICAqXG4gICAqIFRoaXMgbWF5IG9ubHkgYmUgY2FsbGVkIG9uY2UsIHRvIHNldCB1cCB0aGUgY29tbW9uIHByb3ZpZGVycyBmb3IgdGhlIGN1cnJlbnQgdGVzdFxuICAgKiBzdWl0ZSBvbiB0aGUgY3VycmVudCBwbGF0Zm9ybS4gSWYgeW91IGFic29sdXRlbHkgbmVlZCB0byBjaGFuZ2UgdGhlIHByb3ZpZGVycyxcbiAgICogZmlyc3QgdXNlIGByZXNldFRlc3RFbnZpcm9ubWVudGAuXG4gICAqXG4gICAqIFRlc3QgbW9kdWxlcyBhbmQgcGxhdGZvcm1zIGZvciBpbmRpdmlkdWFsIHBsYXRmb3JtcyBhcmUgYXZhaWxhYmxlIGZyb21cbiAgICogJ0Bhbmd1bGFyLzxwbGF0Zm9ybV9uYW1lPi90ZXN0aW5nJy5cbiAgICovXG4gIGluaXRUZXN0RW52aXJvbm1lbnQoXG4gICAgICBuZ01vZHVsZTogVHlwZTxhbnk+fFR5cGU8YW55PltdLCBwbGF0Zm9ybTogUGxhdGZvcm1SZWYsXG4gICAgICBvcHRpb25zPzogVGVzdEVudmlyb25tZW50T3B0aW9ucyk6IFRlc3RCZWQ7XG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBlbnZpcm9ubWVudCBmb3IgdGVzdGluZyB3aXRoIGEgY29tcGlsZXIgZmFjdG9yeSwgYSBQbGF0Zm9ybVJlZiwgYW5kIGFuXG4gICAqIGFuZ3VsYXIgbW9kdWxlLiBUaGVzZSBhcmUgY29tbW9uIHRvIGV2ZXJ5IHRlc3QgaW4gdGhlIHN1aXRlLlxuICAgKlxuICAgKiBUaGlzIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlLCB0byBzZXQgdXAgdGhlIGNvbW1vbiBwcm92aWRlcnMgZm9yIHRoZSBjdXJyZW50IHRlc3RcbiAgICogc3VpdGUgb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0uIElmIHlvdSBhYnNvbHV0ZWx5IG5lZWQgdG8gY2hhbmdlIHRoZSBwcm92aWRlcnMsXG4gICAqIGZpcnN0IHVzZSBgcmVzZXRUZXN0RW52aXJvbm1lbnRgLlxuICAgKlxuICAgKiBUZXN0IG1vZHVsZXMgYW5kIHBsYXRmb3JtcyBmb3IgaW5kaXZpZHVhbCBwbGF0Zm9ybXMgYXJlIGF2YWlsYWJsZSBmcm9tXG4gICAqICdAYW5ndWxhci88cGxhdGZvcm1fbmFtZT4vdGVzdGluZycuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgQVBJIHRoYXQgYWxsb3dzIHByb3ZpZGluZyBBT1Qgc3VtbWFyaWVzIGlzIGRlcHJlY2F0ZWQsIHNpbmNlIHN1bW1hcnkgZmlsZXMgYXJlXG4gICAqICAgICB1bnVzZWQgaW4gSXZ5LlxuICAgKi9cbiAgaW5pdFRlc3RFbnZpcm9ubWVudChcbiAgICAgIG5nTW9kdWxlOiBUeXBlPGFueT58VHlwZTxhbnk+W10sIHBsYXRmb3JtOiBQbGF0Zm9ybVJlZiwgYW90U3VtbWFyaWVzPzogKCkgPT4gYW55W10pOiBUZXN0QmVkO1xuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgcHJvdmlkZXJzIGZvciB0aGUgdGVzdCBpbmplY3Rvci5cbiAgICovXG4gIHJlc2V0VGVzdEVudmlyb25tZW50KCk6IHZvaWQ7XG5cbiAgcmVzZXRUZXN0aW5nTW9kdWxlKCk6IFRlc3RCZWRTdGF0aWM7XG5cbiAgLyoqXG4gICAqIEFsbG93cyBvdmVycmlkaW5nIGRlZmF1bHQgY29tcGlsZXIgcHJvdmlkZXJzIGFuZCBzZXR0aW5nc1xuICAgKiB3aGljaCBhcmUgZGVmaW5lZCBpbiB0ZXN0X2luamVjdG9yLmpzXG4gICAqL1xuICBjb25maWd1cmVDb21waWxlcihjb25maWc6IHtwcm92aWRlcnM/OiBhbnlbXTsgdXNlSml0PzogYm9vbGVhbjt9KTogVGVzdEJlZFN0YXRpYztcblxuICAvKipcbiAgICogQWxsb3dzIG92ZXJyaWRpbmcgZGVmYXVsdCBwcm92aWRlcnMsIGRpcmVjdGl2ZXMsIHBpcGVzLCBtb2R1bGVzIG9mIHRoZSB0ZXN0IGluamVjdG9yLFxuICAgKiB3aGljaCBhcmUgZGVmaW5lZCBpbiB0ZXN0X2luamVjdG9yLmpzXG4gICAqL1xuICBjb25maWd1cmVUZXN0aW5nTW9kdWxlKG1vZHVsZURlZjogVGVzdE1vZHVsZU1ldGFkYXRhKTogVGVzdEJlZFN0YXRpYztcblxuICAvKipcbiAgICogQ29tcGlsZSBjb21wb25lbnRzIHdpdGggYSBgdGVtcGxhdGVVcmxgIGZvciB0aGUgdGVzdCdzIE5nTW9kdWxlLlxuICAgKiBJdCBpcyBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uXG4gICAqIGFzIGZldGNoaW5nIHVybHMgaXMgYXN5bmNocm9ub3VzLlxuICAgKi9cbiAgY29tcGlsZUNvbXBvbmVudHMoKTogUHJvbWlzZTxhbnk+O1xuXG4gIG92ZXJyaWRlTW9kdWxlKG5nTW9kdWxlOiBUeXBlPGFueT4sIG92ZXJyaWRlOiBNZXRhZGF0YU92ZXJyaWRlPE5nTW9kdWxlPik6IFRlc3RCZWRTdGF0aWM7XG5cbiAgb3ZlcnJpZGVDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPGFueT4sIG92ZXJyaWRlOiBNZXRhZGF0YU92ZXJyaWRlPENvbXBvbmVudD4pOiBUZXN0QmVkU3RhdGljO1xuXG4gIG92ZXJyaWRlRGlyZWN0aXZlKGRpcmVjdGl2ZTogVHlwZTxhbnk+LCBvdmVycmlkZTogTWV0YWRhdGFPdmVycmlkZTxEaXJlY3RpdmU+KTogVGVzdEJlZFN0YXRpYztcblxuICBvdmVycmlkZVBpcGUocGlwZTogVHlwZTxhbnk+LCBvdmVycmlkZTogTWV0YWRhdGFPdmVycmlkZTxQaXBlPik6IFRlc3RCZWRTdGF0aWM7XG5cbiAgb3ZlcnJpZGVUZW1wbGF0ZShjb21wb25lbnQ6IFR5cGU8YW55PiwgdGVtcGxhdGU6IHN0cmluZyk6IFRlc3RCZWRTdGF0aWM7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgdGVtcGxhdGUgb2YgdGhlIGdpdmVuIGNvbXBvbmVudCwgY29tcGlsaW5nIHRoZSB0ZW1wbGF0ZVxuICAgKiBpbiB0aGUgY29udGV4dCBvZiB0aGUgVGVzdGluZ01vZHVsZS5cbiAgICpcbiAgICogTm90ZTogVGhpcyB3b3JrcyBmb3IgSklUIGFuZCBBT1RlZCBjb21wb25lbnRzIGFzIHdlbGwuXG4gICAqL1xuICBvdmVycmlkZVRlbXBsYXRlVXNpbmdUZXN0aW5nTW9kdWxlKGNvbXBvbmVudDogVHlwZTxhbnk+LCB0ZW1wbGF0ZTogc3RyaW5nKTogVGVzdEJlZFN0YXRpYztcblxuICAvKipcbiAgICogT3ZlcndyaXRlcyBhbGwgcHJvdmlkZXJzIGZvciB0aGUgZ2l2ZW4gdG9rZW4gd2l0aCB0aGUgZ2l2ZW4gcHJvdmlkZXIgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogTm90ZTogVGhpcyB3b3JrcyBmb3IgSklUIGFuZCBBT1RlZCBjb21wb25lbnRzIGFzIHdlbGwuXG4gICAqL1xuICBvdmVycmlkZVByb3ZpZGVyKHRva2VuOiBhbnksIHByb3ZpZGVyOiB7XG4gICAgdXNlRmFjdG9yeTogRnVuY3Rpb24sXG4gICAgZGVwczogYW55W10sXG4gIH0pOiBUZXN0QmVkU3RhdGljO1xuICBvdmVycmlkZVByb3ZpZGVyKHRva2VuOiBhbnksIHByb3ZpZGVyOiB7dXNlVmFsdWU6IGFueTt9KTogVGVzdEJlZFN0YXRpYztcbiAgb3ZlcnJpZGVQcm92aWRlcih0b2tlbjogYW55LCBwcm92aWRlcjoge1xuICAgIHVzZUZhY3Rvcnk/OiBGdW5jdGlvbixcbiAgICB1c2VWYWx1ZT86IGFueSxcbiAgICBkZXBzPzogYW55W10sXG4gIH0pOiBUZXN0QmVkU3RhdGljO1xuXG4gIGluamVjdDxUPih0b2tlbjogUHJvdmlkZXJUb2tlbjxUPiwgbm90Rm91bmRWYWx1ZT86IFQsIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBUO1xuICBpbmplY3Q8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU6IG51bGwsIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBUfG51bGw7XG5cbiAgLyoqIEBkZXByZWNhdGVkIGZyb20gdjkuMC4wIHVzZSBUZXN0QmVkLmluamVjdCAqL1xuICBnZXQ8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU/OiBULCBmbGFncz86IEluamVjdEZsYWdzKTogYW55O1xuICAvKiogQGRlcHJlY2F0ZWQgZnJvbSB2OS4wLjAgdXNlIFRlc3RCZWQuaW5qZWN0ICovXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55O1xuXG4gIGNyZWF0ZUNvbXBvbmVudDxUPihjb21wb25lbnQ6IFR5cGU8VD4pOiBDb21wb25lbnRGaXh0dXJlPFQ+O1xufVxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9iZWRfY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90ZXN0aW5nL3NyYy90ZXN0X2JlZF9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFvQyxjQUFjLEVBQW1FLE1BQU0sZUFBZSxDQUFDO0FBTWxKLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSwwQ0FBMEMsR0FBRyxJQUFJLENBQUM7QUFFL0QscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLEtBQUssQ0FBQztBQUV2RCx1RUFBdUU7QUFDdkUsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsS0FBSyxDQUFDO0FBRXpEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLGlCQUFpQixDQUFDLGFBQXFCLElBQUcsQ0FBQztJQUMzQyxxQkFBcUIsS0FBSyxDQUFDO0NBQzVCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FDbkMsSUFBSSxjQUFjLENBQVksNEJBQTRCLENBQUMsQ0FBQztBQUVoRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFZLDBCQUEwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIERpcmVjdGl2ZSwgSW5qZWN0RmxhZ3MsIEluamVjdGlvblRva2VuLCBOZ01vZHVsZSwgUGlwZSwgUGxhdGZvcm1SZWYsIFByb3ZpZGVyVG9rZW4sIFNjaGVtYU1ldGFkYXRhLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtDb21wb25lbnRGaXh0dXJlfSBmcm9tICcuL2NvbXBvbmVudF9maXh0dXJlJztcbmltcG9ydCB7TWV0YWRhdGFPdmVycmlkZX0gZnJvbSAnLi9tZXRhZGF0YV9vdmVycmlkZSc7XG5pbXBvcnQge1Rlc3RCZWR9IGZyb20gJy4vdGVzdF9iZWQnO1xuXG4vKiogV2hldGhlciB0ZXN0IG1vZHVsZXMgc2hvdWxkIGJlIHRvcm4gZG93biBieSBkZWZhdWx0LiAqL1xuZXhwb3J0IGNvbnN0IFRFQVJET1dOX1RFU1RJTkdfTU9EVUxFX09OX0RFU1RST1lfREVGQVVMVCA9IHRydWU7XG5cbi8qKiBXaGV0aGVyIHVua25vd24gZWxlbWVudHMgaW4gdGVtcGxhdGVzIHNob3VsZCB0aHJvdyBieSBkZWZhdWx0LiAqL1xuZXhwb3J0IGNvbnN0IFRIUk9XX09OX1VOS05PV05fRUxFTUVOVFNfREVGQVVMVCA9IGZhbHNlO1xuXG4vKiogV2hldGhlciB1bmtub3duIHByb3BlcnRpZXMgaW4gdGVtcGxhdGVzIHNob3VsZCB0aHJvdyBieSBkZWZhdWx0LiAqL1xuZXhwb3J0IGNvbnN0IFRIUk9XX09OX1VOS05PV05fUFJPUEVSVElFU19ERUZBVUxUID0gZmFsc2U7XG5cbi8qKlxuICogQW4gYWJzdHJhY3QgY2xhc3MgZm9yIGluc2VydGluZyB0aGUgcm9vdCB0ZXN0IGNvbXBvbmVudCBlbGVtZW50IGluIGEgcGxhdGZvcm0gaW5kZXBlbmRlbnQgd2F5LlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNsYXNzIFRlc3RDb21wb25lbnRSZW5kZXJlciB7XG4gIGluc2VydFJvb3RFbGVtZW50KHJvb3RFbGVtZW50SWQ6IHN0cmluZykge31cbiAgcmVtb3ZlQWxsUm9vdEVsZW1lbnRzPygpIHt9XG59XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY29uc3QgQ29tcG9uZW50Rml4dHVyZUF1dG9EZXRlY3QgPVxuICAgIG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuW10+KCdDb21wb25lbnRGaXh0dXJlQXV0b0RldGVjdCcpO1xuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IENvbXBvbmVudEZpeHR1cmVOb05nWm9uZSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuW10+KCdDb21wb25lbnRGaXh0dXJlTm9OZ1pvbmUnKTtcblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdE1vZHVsZU1ldGFkYXRhIHtcbiAgcHJvdmlkZXJzPzogYW55W107XG4gIGRlY2xhcmF0aW9ucz86IGFueVtdO1xuICBpbXBvcnRzPzogYW55W107XG4gIHNjaGVtYXM/OiBBcnJheTxTY2hlbWFNZXRhZGF0YXxhbnlbXT47XG4gIHRlYXJkb3duPzogTW9kdWxlVGVhcmRvd25PcHRpb25zO1xuICAvKipcbiAgICogV2hldGhlciBORzAzMDQgcnVudGltZSBlcnJvcnMgc2hvdWxkIGJlIHRocm93biB3aGVuIHVua25vd24gZWxlbWVudHMgYXJlIHByZXNlbnQgaW4gY29tcG9uZW50J3NcbiAgICogdGVtcGxhdGUuIERlZmF1bHRzIHRvIGBmYWxzZWAsIHdoZXJlIHRoZSBlcnJvciBpcyBzaW1wbHkgbG9nZ2VkLiBJZiBzZXQgdG8gYHRydWVgLCB0aGUgZXJyb3IgaXNcbiAgICogdGhyb3duLlxuICAgKiBAc2VlIGh0dHBzOi8vYW5ndWxhci5pby9lcnJvcnMvTkc4MDAxIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHByb2JsZW0gYW5kIGhvdyB0byBmaXggaXRcbiAgICovXG4gIGVycm9yT25Vbmtub3duRWxlbWVudHM/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBlcnJvcnMgc2hvdWxkIGJlIHRocm93biB3aGVuIHVua25vd24gcHJvcGVydGllcyBhcmUgcHJlc2VudCBpbiBjb21wb25lbnQncyB0ZW1wbGF0ZS5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgd2hlcmUgdGhlIGVycm9yIGlzIHNpbXBseSBsb2dnZWQuXG4gICAqIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBlcnJvciBpcyB0aHJvd24uXG4gICAqIEBzZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2Vycm9ycy9ORzgwMDIgZm9yIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZXJyb3IgYW5kIGhvdyB0byBmaXggaXRcbiAgICovXG4gIGVycm9yT25Vbmtub3duUHJvcGVydGllcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RFbnZpcm9ubWVudE9wdGlvbnMge1xuICAvKipcbiAgICogQ29uZmlndXJlcyB0aGUgdGVzdCBtb2R1bGUgdGVhcmRvd24gYmVoYXZpb3IgaW4gYFRlc3RCZWRgLlxuICAgKi9cbiAgdGVhcmRvd24/OiBNb2R1bGVUZWFyZG93bk9wdGlvbnM7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGVycm9ycyBzaG91bGQgYmUgdGhyb3duIHdoZW4gdW5rbm93biBlbGVtZW50cyBhcmUgcHJlc2VudCBpbiBjb21wb25lbnQncyB0ZW1wbGF0ZS5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgd2hlcmUgdGhlIGVycm9yIGlzIHNpbXBseSBsb2dnZWQuXG4gICAqIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBlcnJvciBpcyB0aHJvd24uXG4gICAqIEBzZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2Vycm9ycy9ORzgwMDEgZm9yIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZXJyb3IgYW5kIGhvdyB0byBmaXggaXRcbiAgICovXG4gIGVycm9yT25Vbmtub3duRWxlbWVudHM/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBlcnJvcnMgc2hvdWxkIGJlIHRocm93biB3aGVuIHVua25vd24gcHJvcGVydGllcyBhcmUgcHJlc2VudCBpbiBjb21wb25lbnQncyB0ZW1wbGF0ZS5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgd2hlcmUgdGhlIGVycm9yIGlzIHNpbXBseSBsb2dnZWQuXG4gICAqIElmIHNldCB0byBgdHJ1ZWAsIHRoZSBlcnJvciBpcyB0aHJvd24uXG4gICAqIEBzZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2Vycm9ycy9ORzgwMDIgZm9yIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZXJyb3IgYW5kIGhvdyB0byBmaXggaXRcbiAgICovXG4gIGVycm9yT25Vbmtub3duUHJvcGVydGllcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJlcyB0aGUgdGVzdCBtb2R1bGUgdGVhcmRvd24gYmVoYXZpb3IgaW4gYFRlc3RCZWRgLlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZVRlYXJkb3duT3B0aW9ucyB7XG4gIC8qKiBXaGV0aGVyIHRoZSB0ZXN0IG1vZHVsZSBzaG91bGQgYmUgZGVzdHJveWVkIGFmdGVyIGV2ZXJ5IHRlc3QuICovXG4gIGRlc3Ryb3lBZnRlckVhY2g6IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgZXJyb3JzIGR1cmluZyB0ZXN0IG1vZHVsZSBkZXN0cnVjdGlvbiBzaG91bGQgYmUgcmUtdGhyb3duLiBEZWZhdWx0cyB0byBgdHJ1ZWAuICovXG4gIHJldGhyb3dFcnJvcnM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFN0YXRpYyBtZXRob2RzIGltcGxlbWVudGVkIGJ5IHRoZSBgVGVzdEJlZFZpZXdFbmdpbmVgIGFuZCBgVGVzdEJlZFJlbmRlcjNgXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RCZWRTdGF0aWMge1xuICBuZXcoLi4uYXJnczogYW55W10pOiBUZXN0QmVkO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBlbnZpcm9ubWVudCBmb3IgdGVzdGluZyB3aXRoIGEgY29tcGlsZXIgZmFjdG9yeSwgYSBQbGF0Zm9ybVJlZiwgYW5kIGFuXG4gICAqIGFuZ3VsYXIgbW9kdWxlLiBUaGVzZSBhcmUgY29tbW9uIHRvIGV2ZXJ5IHRlc3QgaW4gdGhlIHN1aXRlLlxuICAgKlxuICAgKiBUaGlzIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlLCB0byBzZXQgdXAgdGhlIGNvbW1vbiBwcm92aWRlcnMgZm9yIHRoZSBjdXJyZW50IHRlc3RcbiAgICogc3VpdGUgb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0uIElmIHlvdSBhYnNvbHV0ZWx5IG5lZWQgdG8gY2hhbmdlIHRoZSBwcm92aWRlcnMsXG4gICAqIGZpcnN0IHVzZSBgcmVzZXRUZXN0RW52aXJvbm1lbnRgLlxuICAgKlxuICAgKiBUZXN0IG1vZHVsZXMgYW5kIHBsYXRmb3JtcyBmb3IgaW5kaXZpZHVhbCBwbGF0Zm9ybXMgYXJlIGF2YWlsYWJsZSBmcm9tXG4gICAqICdAYW5ndWxhci88cGxhdGZvcm1fbmFtZT4vdGVzdGluZycuXG4gICAqL1xuICBpbml0VGVzdEVudmlyb25tZW50KFxuICAgICAgbmdNb2R1bGU6IFR5cGU8YW55PnxUeXBlPGFueT5bXSwgcGxhdGZvcm06IFBsYXRmb3JtUmVmLFxuICAgICAgb3B0aW9ucz86IFRlc3RFbnZpcm9ubWVudE9wdGlvbnMpOiBUZXN0QmVkO1xuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgcHJvdmlkZXJzIGZvciB0aGUgdGVzdCBpbmplY3Rvci5cbiAgICovXG4gIHJlc2V0VGVzdEVudmlyb25tZW50KCk6IHZvaWQ7XG5cbiAgcmVzZXRUZXN0aW5nTW9kdWxlKCk6IFRlc3RCZWRTdGF0aWM7XG5cbiAgLyoqXG4gICAqIEFsbG93cyBvdmVycmlkaW5nIGRlZmF1bHQgY29tcGlsZXIgcHJvdmlkZXJzIGFuZCBzZXR0aW5nc1xuICAgKiB3aGljaCBhcmUgZGVmaW5lZCBpbiB0ZXN0X2luamVjdG9yLmpzXG4gICAqL1xuICBjb25maWd1cmVDb21waWxlcihjb25maWc6IHtwcm92aWRlcnM/OiBhbnlbXTsgdXNlSml0PzogYm9vbGVhbjt9KTogVGVzdEJlZFN0YXRpYztcblxuICAvKipcbiAgICogQWxsb3dzIG92ZXJyaWRpbmcgZGVmYXVsdCBwcm92aWRlcnMsIGRpcmVjdGl2ZXMsIHBpcGVzLCBtb2R1bGVzIG9mIHRoZSB0ZXN0IGluamVjdG9yLFxuICAgKiB3aGljaCBhcmUgZGVmaW5lZCBpbiB0ZXN0X2luamVjdG9yLmpzXG4gICAqL1xuICBjb25maWd1cmVUZXN0aW5nTW9kdWxlKG1vZHVsZURlZjogVGVzdE1vZHVsZU1ldGFkYXRhKTogVGVzdEJlZFN0YXRpYztcblxuICAvKipcbiAgICogQ29tcGlsZSBjb21wb25lbnRzIHdpdGggYSBgdGVtcGxhdGVVcmxgIGZvciB0aGUgdGVzdCdzIE5nTW9kdWxlLlxuICAgKiBJdCBpcyBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uXG4gICAqIGFzIGZldGNoaW5nIHVybHMgaXMgYXN5bmNocm9ub3VzLlxuICAgKi9cbiAgY29tcGlsZUNvbXBvbmVudHMoKTogUHJvbWlzZTxhbnk+O1xuXG4gIG92ZXJyaWRlTW9kdWxlKG5nTW9kdWxlOiBUeXBlPGFueT4sIG92ZXJyaWRlOiBNZXRhZGF0YU92ZXJyaWRlPE5nTW9kdWxlPik6IFRlc3RCZWRTdGF0aWM7XG5cbiAgb3ZlcnJpZGVDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPGFueT4sIG92ZXJyaWRlOiBNZXRhZGF0YU92ZXJyaWRlPENvbXBvbmVudD4pOiBUZXN0QmVkU3RhdGljO1xuXG4gIG92ZXJyaWRlRGlyZWN0aXZlKGRpcmVjdGl2ZTogVHlwZTxhbnk+LCBvdmVycmlkZTogTWV0YWRhdGFPdmVycmlkZTxEaXJlY3RpdmU+KTogVGVzdEJlZFN0YXRpYztcblxuICBvdmVycmlkZVBpcGUocGlwZTogVHlwZTxhbnk+LCBvdmVycmlkZTogTWV0YWRhdGFPdmVycmlkZTxQaXBlPik6IFRlc3RCZWRTdGF0aWM7XG5cbiAgb3ZlcnJpZGVUZW1wbGF0ZShjb21wb25lbnQ6IFR5cGU8YW55PiwgdGVtcGxhdGU6IHN0cmluZyk6IFRlc3RCZWRTdGF0aWM7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgdGVtcGxhdGUgb2YgdGhlIGdpdmVuIGNvbXBvbmVudCwgY29tcGlsaW5nIHRoZSB0ZW1wbGF0ZVxuICAgKiBpbiB0aGUgY29udGV4dCBvZiB0aGUgVGVzdGluZ01vZHVsZS5cbiAgICpcbiAgICogTm90ZTogVGhpcyB3b3JrcyBmb3IgSklUIGFuZCBBT1RlZCBjb21wb25lbnRzIGFzIHdlbGwuXG4gICAqL1xuICBvdmVycmlkZVRlbXBsYXRlVXNpbmdUZXN0aW5nTW9kdWxlKGNvbXBvbmVudDogVHlwZTxhbnk+LCB0ZW1wbGF0ZTogc3RyaW5nKTogVGVzdEJlZFN0YXRpYztcblxuICAvKipcbiAgICogT3ZlcndyaXRlcyBhbGwgcHJvdmlkZXJzIGZvciB0aGUgZ2l2ZW4gdG9rZW4gd2l0aCB0aGUgZ2l2ZW4gcHJvdmlkZXIgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogTm90ZTogVGhpcyB3b3JrcyBmb3IgSklUIGFuZCBBT1RlZCBjb21wb25lbnRzIGFzIHdlbGwuXG4gICAqL1xuICBvdmVycmlkZVByb3ZpZGVyKHRva2VuOiBhbnksIHByb3ZpZGVyOiB7XG4gICAgdXNlRmFjdG9yeTogRnVuY3Rpb24sXG4gICAgZGVwczogYW55W10sXG4gIH0pOiBUZXN0QmVkU3RhdGljO1xuICBvdmVycmlkZVByb3ZpZGVyKHRva2VuOiBhbnksIHByb3ZpZGVyOiB7dXNlVmFsdWU6IGFueTt9KTogVGVzdEJlZFN0YXRpYztcbiAgb3ZlcnJpZGVQcm92aWRlcih0b2tlbjogYW55LCBwcm92aWRlcjoge1xuICAgIHVzZUZhY3Rvcnk/OiBGdW5jdGlvbixcbiAgICB1c2VWYWx1ZT86IGFueSxcbiAgICBkZXBzPzogYW55W10sXG4gIH0pOiBUZXN0QmVkU3RhdGljO1xuXG4gIGluamVjdDxUPih0b2tlbjogUHJvdmlkZXJUb2tlbjxUPiwgbm90Rm91bmRWYWx1ZT86IFQsIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBUO1xuICBpbmplY3Q8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU6IG51bGwsIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBUfG51bGw7XG5cbiAgLyoqIEBkZXByZWNhdGVkIGZyb20gdjkuMC4wIHVzZSBUZXN0QmVkLmluamVjdCAqL1xuICBnZXQ8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU/OiBULCBmbGFncz86IEluamVjdEZsYWdzKTogYW55O1xuICAvKiogQGRlcHJlY2F0ZWQgZnJvbSB2OS4wLjAgdXNlIFRlc3RCZWQuaW5qZWN0ICovXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55O1xuXG4gIGNyZWF0ZUNvbXBvbmVudDxUPihjb21wb25lbnQ6IFR5cGU8VD4pOiBDb21wb25lbnRGaXh0dXJlPFQ+O1xufVxuIl19