@angular/compiler 19.0.0-next.1 → 19.0.0-next.2

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 (185) hide show
  1. package/fesm2022/compiler.mjs +4742 -4473
  2. package/fesm2022/compiler.mjs.map +1 -1
  3. package/index.d.ts +35 -3
  4. package/package.json +2 -4
  5. package/esm2022/compiler.mjs +0 -13
  6. package/esm2022/index.mjs +0 -13
  7. package/esm2022/public_api.mjs +0 -15
  8. package/esm2022/src/assertions.mjs +0 -31
  9. package/esm2022/src/chars.mjs +0 -90
  10. package/esm2022/src/compiler.mjs +0 -88
  11. package/esm2022/src/compiler_facade_interface.mjs +0 -29
  12. package/esm2022/src/config.mjs +0 -20
  13. package/esm2022/src/constant_pool.mjs +0 -285
  14. package/esm2022/src/core.mjs +0 -96
  15. package/esm2022/src/expression_parser/ast.mjs +0 -755
  16. package/esm2022/src/expression_parser/lexer.mjs +0 -421
  17. package/esm2022/src/expression_parser/parser.mjs +0 -1222
  18. package/esm2022/src/i18n/digest.mjs +0 -322
  19. package/esm2022/src/i18n/extractor_merger.mjs +0 -409
  20. package/esm2022/src/i18n/i18n_ast.mjs +0 -212
  21. package/esm2022/src/i18n/i18n_html_parser.mjs +0 -54
  22. package/esm2022/src/i18n/i18n_parser.mjs +0 -247
  23. package/esm2022/src/i18n/index.mjs +0 -16
  24. package/esm2022/src/i18n/message_bundle.mjs +0 -93
  25. package/esm2022/src/i18n/parse_util.mjs +0 -17
  26. package/esm2022/src/i18n/serializers/placeholder.mjs +0 -139
  27. package/esm2022/src/i18n/serializers/serializer.mjs +0 -77
  28. package/esm2022/src/i18n/serializers/xliff.mjs +0 -300
  29. package/esm2022/src/i18n/serializers/xliff2.mjs +0 -349
  30. package/esm2022/src/i18n/serializers/xmb.mjs +0 -188
  31. package/esm2022/src/i18n/serializers/xml_helper.mjs +0 -94
  32. package/esm2022/src/i18n/serializers/xtb.mjs +0 -186
  33. package/esm2022/src/i18n/translation_bundle.mjs +0 -164
  34. package/esm2022/src/injectable_compiler_2.mjs +0 -138
  35. package/esm2022/src/jit_compiler_facade.mjs +0 -681
  36. package/esm2022/src/ml_parser/ast.mjs +0 -167
  37. package/esm2022/src/ml_parser/defaults.mjs +0 -24
  38. package/esm2022/src/ml_parser/entities.mjs +0 -2144
  39. package/esm2022/src/ml_parser/html_parser.mjs +0 -18
  40. package/esm2022/src/ml_parser/html_tags.mjs +0 -156
  41. package/esm2022/src/ml_parser/html_whitespaces.mjs +0 -107
  42. package/esm2022/src/ml_parser/icu_ast_expander.mjs +0 -125
  43. package/esm2022/src/ml_parser/lexer.mjs +0 -1210
  44. package/esm2022/src/ml_parser/parser.mjs +0 -539
  45. package/esm2022/src/ml_parser/tags.mjs +0 -47
  46. package/esm2022/src/ml_parser/tokens.mjs +0 -9
  47. package/esm2022/src/ml_parser/xml_parser.mjs +0 -19
  48. package/esm2022/src/ml_parser/xml_tags.mjs +0 -32
  49. package/esm2022/src/output/abstract_emitter.mjs +0 -524
  50. package/esm2022/src/output/abstract_js_emitter.mjs +0 -130
  51. package/esm2022/src/output/map_util.mjs +0 -19
  52. package/esm2022/src/output/output_ast.mjs +0 -1301
  53. package/esm2022/src/output/output_jit.mjs +0 -138
  54. package/esm2022/src/output/output_jit_trusted_types.mjs +0 -100
  55. package/esm2022/src/output/source_map.mjs +0 -150
  56. package/esm2022/src/parse_util.mjs +0 -198
  57. package/esm2022/src/render3/partial/api.mjs +0 -9
  58. package/esm2022/src/render3/partial/class_metadata.mjs +0 -52
  59. package/esm2022/src/render3/partial/component.mjs +0 -197
  60. package/esm2022/src/render3/partial/directive.mjs +0 -264
  61. package/esm2022/src/render3/partial/factory.mjs +0 -35
  62. package/esm2022/src/render3/partial/injectable.mjs +0 -67
  63. package/esm2022/src/render3/partial/injector.mjs +0 -41
  64. package/esm2022/src/render3/partial/ng_module.mjs +0 -63
  65. package/esm2022/src/render3/partial/pipe.mjs +0 -50
  66. package/esm2022/src/render3/partial/util.mjs +0 -79
  67. package/esm2022/src/render3/r3_ast.mjs +0 -493
  68. package/esm2022/src/render3/r3_class_debug_info_compiler.mjs +0 -35
  69. package/esm2022/src/render3/r3_class_metadata_compiler.mjs +0 -92
  70. package/esm2022/src/render3/r3_control_flow.mjs +0 -421
  71. package/esm2022/src/render3/r3_deferred_blocks.mjs +0 -170
  72. package/esm2022/src/render3/r3_deferred_triggers.mjs +0 -316
  73. package/esm2022/src/render3/r3_factory.mjs +0 -200
  74. package/esm2022/src/render3/r3_identifiers.mjs +0 -480
  75. package/esm2022/src/render3/r3_injector_compiler.mjs +0 -28
  76. package/esm2022/src/render3/r3_jit.mjs +0 -29
  77. package/esm2022/src/render3/r3_module_compiler.mjs +0 -211
  78. package/esm2022/src/render3/r3_pipe_compiler.mjs +0 -35
  79. package/esm2022/src/render3/r3_template_transform.mjs +0 -560
  80. package/esm2022/src/render3/util.mjs +0 -90
  81. package/esm2022/src/render3/view/api.mjs +0 -14
  82. package/esm2022/src/render3/view/compiler.mjs +0 -546
  83. package/esm2022/src/render3/view/i18n/get_msg_utils.mjs +0 -113
  84. package/esm2022/src/render3/view/i18n/icu_serializer.mjs +0 -43
  85. package/esm2022/src/render3/view/i18n/localize_utils.mjs +0 -118
  86. package/esm2022/src/render3/view/i18n/meta.mjs +0 -259
  87. package/esm2022/src/render3/view/i18n/util.mjs +0 -70
  88. package/esm2022/src/render3/view/query_generation.mjs +0 -182
  89. package/esm2022/src/render3/view/t2_api.mjs +0 -9
  90. package/esm2022/src/render3/view/t2_binder.mjs +0 -823
  91. package/esm2022/src/render3/view/template.mjs +0 -113
  92. package/esm2022/src/render3/view/util.mjs +0 -192
  93. package/esm2022/src/resource_loader.mjs +0 -17
  94. package/esm2022/src/schema/dom_element_schema_registry.mjs +0 -471
  95. package/esm2022/src/schema/dom_security_schema.mjs +0 -96
  96. package/esm2022/src/schema/element_schema_registry.mjs +0 -10
  97. package/esm2022/src/schema/trusted_types_sinks.mjs +0 -41
  98. package/esm2022/src/selector.mjs +0 -400
  99. package/esm2022/src/shadow_css.mjs +0 -1053
  100. package/esm2022/src/style_url_resolver.mjs +0 -17
  101. package/esm2022/src/template/pipeline/ir/index.mjs +0 -18
  102. package/esm2022/src/template/pipeline/ir/src/enums.mjs +0 -503
  103. package/esm2022/src/template/pipeline/ir/src/expression.mjs +0 -997
  104. package/esm2022/src/template/pipeline/ir/src/handle.mjs +0 -13
  105. package/esm2022/src/template/pipeline/ir/src/operations.mjs +0 -261
  106. package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +0 -405
  107. package/esm2022/src/template/pipeline/ir/src/ops/host.mjs +0 -25
  108. package/esm2022/src/template/pipeline/ir/src/ops/shared.mjs +0 -43
  109. package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +0 -277
  110. package/esm2022/src/template/pipeline/ir/src/traits.mjs +0 -64
  111. package/esm2022/src/template/pipeline/ir/src/variable.mjs +0 -13
  112. package/esm2022/src/template/pipeline/src/compilation.mjs +0 -194
  113. package/esm2022/src/template/pipeline/src/conversion.mjs +0 -64
  114. package/esm2022/src/template/pipeline/src/emit.mjs +0 -238
  115. package/esm2022/src/template/pipeline/src/ingest.mjs +0 -1058
  116. package/esm2022/src/template/pipeline/src/instruction.mjs +0 -564
  117. package/esm2022/src/template/pipeline/src/phases/any_cast.mjs +0 -32
  118. package/esm2022/src/template/pipeline/src/phases/apply_i18n_expressions.mjs +0 -63
  119. package/esm2022/src/template/pipeline/src/phases/assign_i18n_slot_dependencies.mjs +0 -63
  120. package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +0 -138
  121. package/esm2022/src/template/pipeline/src/phases/binding_specialization.mjs +0 -75
  122. package/esm2022/src/template/pipeline/src/phases/chaining.mjs +0 -112
  123. package/esm2022/src/template/pipeline/src/phases/collapse_singleton_interpolations.mjs +0 -32
  124. package/esm2022/src/template/pipeline/src/phases/conditionals.mjs +0 -58
  125. package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +0 -214
  126. package/esm2022/src/template/pipeline/src/phases/convert_i18n_bindings.mjs +0 -52
  127. package/esm2022/src/template/pipeline/src/phases/create_i18n_contexts.mjs +0 -105
  128. package/esm2022/src/template/pipeline/src/phases/deduplicate_text_bindings.mjs +0 -40
  129. package/esm2022/src/template/pipeline/src/phases/defer_configs.mjs +0 -29
  130. package/esm2022/src/template/pipeline/src/phases/defer_resolve_targets.mjs +0 -113
  131. package/esm2022/src/template/pipeline/src/phases/empty_elements.mjs +0 -47
  132. package/esm2022/src/template/pipeline/src/phases/expand_safe_reads.mjs +0 -192
  133. package/esm2022/src/template/pipeline/src/phases/extract_i18n_messages.mjs +0 -218
  134. package/esm2022/src/template/pipeline/src/phases/generate_advance.mjs +0 -66
  135. package/esm2022/src/template/pipeline/src/phases/generate_local_let_references.mjs +0 -29
  136. package/esm2022/src/template/pipeline/src/phases/generate_projection_def.mjs +0 -46
  137. package/esm2022/src/template/pipeline/src/phases/generate_variables.mjs +0 -170
  138. package/esm2022/src/template/pipeline/src/phases/has_const_expression_collection.mjs +0 -28
  139. package/esm2022/src/template/pipeline/src/phases/host_style_property_parsing.mjs +0 -81
  140. package/esm2022/src/template/pipeline/src/phases/i18n_const_collection.mjs +0 -309
  141. package/esm2022/src/template/pipeline/src/phases/i18n_text_extraction.mjs +0 -97
  142. package/esm2022/src/template/pipeline/src/phases/local_refs.mjs +0 -43
  143. package/esm2022/src/template/pipeline/src/phases/namespace.mjs +0 -26
  144. package/esm2022/src/template/pipeline/src/phases/naming.mjs +0 -179
  145. package/esm2022/src/template/pipeline/src/phases/next_context_merging.mjs +0 -75
  146. package/esm2022/src/template/pipeline/src/phases/ng_container.mjs +0 -29
  147. package/esm2022/src/template/pipeline/src/phases/nonbindable.mjs +0 -47
  148. package/esm2022/src/template/pipeline/src/phases/nullish_coalescing.mjs +0 -33
  149. package/esm2022/src/template/pipeline/src/phases/ordering.mjs +0 -140
  150. package/esm2022/src/template/pipeline/src/phases/parse_extracted_styles.mjs +0 -137
  151. package/esm2022/src/template/pipeline/src/phases/phase_remove_content_selectors.mjs +0 -42
  152. package/esm2022/src/template/pipeline/src/phases/pipe_creation.mjs +0 -74
  153. package/esm2022/src/template/pipeline/src/phases/pipe_variadic.mjs +0 -30
  154. package/esm2022/src/template/pipeline/src/phases/propagate_i18n_blocks.mjs +0 -81
  155. package/esm2022/src/template/pipeline/src/phases/pure_function_extraction.mjs +0 -55
  156. package/esm2022/src/template/pipeline/src/phases/pure_literal_structures.mjs +0 -58
  157. package/esm2022/src/template/pipeline/src/phases/reify.mjs +0 -433
  158. package/esm2022/src/template/pipeline/src/phases/remove_empty_bindings.mjs +0 -31
  159. package/esm2022/src/template/pipeline/src/phases/remove_i18n_contexts.mjs +0 -27
  160. package/esm2022/src/template/pipeline/src/phases/remove_illegal_let_references.mjs +0 -36
  161. package/esm2022/src/template/pipeline/src/phases/remove_unused_i18n_attrs.mjs +0 -33
  162. package/esm2022/src/template/pipeline/src/phases/resolve_contexts.mjs +0 -60
  163. package/esm2022/src/template/pipeline/src/phases/resolve_defer_deps_fns.mjs +0 -31
  164. package/esm2022/src/template/pipeline/src/phases/resolve_dollar_event.mjs +0 -36
  165. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_element_placeholders.mjs +0 -266
  166. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_expression_placeholders.mjs +0 -70
  167. package/esm2022/src/template/pipeline/src/phases/resolve_names.mjs +0 -124
  168. package/esm2022/src/template/pipeline/src/phases/resolve_sanitizers.mjs +0 -123
  169. package/esm2022/src/template/pipeline/src/phases/save_restore_view.mjs +0 -64
  170. package/esm2022/src/template/pipeline/src/phases/slot_allocation.mjs +0 -62
  171. package/esm2022/src/template/pipeline/src/phases/store_let_optimization.mjs +0 -35
  172. package/esm2022/src/template/pipeline/src/phases/style_binding_specialization.mjs +0 -42
  173. package/esm2022/src/template/pipeline/src/phases/temporary_variables.mjs +0 -87
  174. package/esm2022/src/template/pipeline/src/phases/track_fn_generation.mjs +0 -52
  175. package/esm2022/src/template/pipeline/src/phases/track_fn_optimization.mjs +0 -88
  176. package/esm2022/src/template/pipeline/src/phases/track_variables.mjs +0 -36
  177. package/esm2022/src/template/pipeline/src/phases/transform_two_way_binding_set.mjs +0 -43
  178. package/esm2022/src/template/pipeline/src/phases/var_counting.mjs +0 -155
  179. package/esm2022/src/template/pipeline/src/phases/variable_optimization.mjs +0 -423
  180. package/esm2022/src/template/pipeline/src/phases/wrap_icus.mjs +0 -41
  181. package/esm2022/src/template/pipeline/src/util/elements.mjs +0 -29
  182. package/esm2022/src/template_parser/binding_parser.mjs +0 -465
  183. package/esm2022/src/template_parser/template_preparser.mjs +0 -84
  184. package/esm2022/src/util.mjs +0 -124
  185. package/esm2022/src/version.mjs +0 -15
@@ -1,79 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import * as o from '../../output/output_ast';
9
- import { DefinitionMap } from '../view/util';
10
- /**
11
- * Creates an array literal expression from the given array, mapping all values to an expression
12
- * using the provided mapping function. If the array is empty or null, then null is returned.
13
- *
14
- * @param values The array to transfer into literal array expression.
15
- * @param mapper The logic to use for creating an expression for the array's values.
16
- * @returns An array literal expression representing `values`, or null if `values` is empty or
17
- * is itself null.
18
- */
19
- export function toOptionalLiteralArray(values, mapper) {
20
- if (values === null || values.length === 0) {
21
- return null;
22
- }
23
- return o.literalArr(values.map((value) => mapper(value)));
24
- }
25
- /**
26
- * Creates an object literal expression from the given object, mapping all values to an expression
27
- * using the provided mapping function. If the object has no keys, then null is returned.
28
- *
29
- * @param object The object to transfer into an object literal expression.
30
- * @param mapper The logic to use for creating an expression for the object's values.
31
- * @returns An object literal expression representing `object`, or null if `object` does not have
32
- * any keys.
33
- */
34
- export function toOptionalLiteralMap(object, mapper) {
35
- const entries = Object.keys(object).map((key) => {
36
- const value = object[key];
37
- return { key, value: mapper(value), quoted: true };
38
- });
39
- if (entries.length > 0) {
40
- return o.literalMap(entries);
41
- }
42
- else {
43
- return null;
44
- }
45
- }
46
- export function compileDependencies(deps) {
47
- if (deps === 'invalid') {
48
- // The `deps` can be set to the string "invalid" by the `unwrapConstructorDependencies()`
49
- // function, which tries to convert `ConstructorDeps` into `R3DependencyMetadata[]`.
50
- return o.literal('invalid');
51
- }
52
- else if (deps === null) {
53
- return o.literal(null);
54
- }
55
- else {
56
- return o.literalArr(deps.map(compileDependency));
57
- }
58
- }
59
- export function compileDependency(dep) {
60
- const depMeta = new DefinitionMap();
61
- depMeta.set('token', dep.token);
62
- if (dep.attributeNameType !== null) {
63
- depMeta.set('attribute', o.literal(true));
64
- }
65
- if (dep.host) {
66
- depMeta.set('host', o.literal(true));
67
- }
68
- if (dep.optional) {
69
- depMeta.set('optional', o.literal(true));
70
- }
71
- if (dep.self) {
72
- depMeta.set('self', o.literal(true));
73
- }
74
- if (dep.skipSelf) {
75
- depMeta.set('skipSelf', o.literal(true));
76
- }
77
- return depMeta.toLiteralMap();
78
- }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9yZW5kZXIzL3BhcnRpYWwvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEtBQUssQ0FBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTdDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFJM0M7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLE1BQWtCLEVBQ2xCLE1BQWtDO0lBRWxDLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsTUFBMEIsRUFDMUIsTUFBa0M7SUFFbEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUM5QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsT0FBTyxFQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxJQUErQztJQUUvQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2QiwwRkFBMEY7UUFDMUYsb0ZBQW9GO1FBQ3BGLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO1NBQU0sSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDekIsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEdBQXlCO0lBQ3pELE1BQU0sT0FBTyxHQUFHLElBQUksYUFBYSxFQUErQixDQUFDO0lBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0IHtSM0RlcGVuZGVuY3lNZXRhZGF0YX0gZnJvbSAnLi4vcjNfZmFjdG9yeSc7XG5pbXBvcnQge0RlZmluaXRpb25NYXB9IGZyb20gJy4uL3ZpZXcvdXRpbCc7XG5cbmltcG9ydCB7UjNEZWNsYXJlRGVwZW5kZW5jeU1ldGFkYXRhfSBmcm9tICcuL2FwaSc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBsaXRlcmFsIGV4cHJlc3Npb24gZnJvbSB0aGUgZ2l2ZW4gYXJyYXksIG1hcHBpbmcgYWxsIHZhbHVlcyB0byBhbiBleHByZXNzaW9uXG4gKiB1c2luZyB0aGUgcHJvdmlkZWQgbWFwcGluZyBmdW5jdGlvbi4gSWYgdGhlIGFycmF5IGlzIGVtcHR5IG9yIG51bGwsIHRoZW4gbnVsbCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdmFsdWVzIFRoZSBhcnJheSB0byB0cmFuc2ZlciBpbnRvIGxpdGVyYWwgYXJyYXkgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBtYXBwZXIgVGhlIGxvZ2ljIHRvIHVzZSBmb3IgY3JlYXRpbmcgYW4gZXhwcmVzc2lvbiBmb3IgdGhlIGFycmF5J3MgdmFsdWVzLlxuICogQHJldHVybnMgQW4gYXJyYXkgbGl0ZXJhbCBleHByZXNzaW9uIHJlcHJlc2VudGluZyBgdmFsdWVzYCwgb3IgbnVsbCBpZiBgdmFsdWVzYCBpcyBlbXB0eSBvclxuICogaXMgaXRzZWxmIG51bGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b09wdGlvbmFsTGl0ZXJhbEFycmF5PFQ+KFxuICB2YWx1ZXM6IFRbXSB8IG51bGwsXG4gIG1hcHBlcjogKHZhbHVlOiBUKSA9PiBvLkV4cHJlc3Npb24sXG4pOiBvLkxpdGVyYWxBcnJheUV4cHIgfCBudWxsIHtcbiAgaWYgKHZhbHVlcyA9PT0gbnVsbCB8fCB2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIG8ubGl0ZXJhbEFycih2YWx1ZXMubWFwKCh2YWx1ZSkgPT4gbWFwcGVyKHZhbHVlKSkpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGxpdGVyYWwgZXhwcmVzc2lvbiBmcm9tIHRoZSBnaXZlbiBvYmplY3QsIG1hcHBpbmcgYWxsIHZhbHVlcyB0byBhbiBleHByZXNzaW9uXG4gKiB1c2luZyB0aGUgcHJvdmlkZWQgbWFwcGluZyBmdW5jdGlvbi4gSWYgdGhlIG9iamVjdCBoYXMgbm8ga2V5cywgdGhlbiBudWxsIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBvYmplY3QgVGhlIG9iamVjdCB0byB0cmFuc2ZlciBpbnRvIGFuIG9iamVjdCBsaXRlcmFsIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gbWFwcGVyIFRoZSBsb2dpYyB0byB1c2UgZm9yIGNyZWF0aW5nIGFuIGV4cHJlc3Npb24gZm9yIHRoZSBvYmplY3QncyB2YWx1ZXMuXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgbGl0ZXJhbCBleHByZXNzaW9uIHJlcHJlc2VudGluZyBgb2JqZWN0YCwgb3IgbnVsbCBpZiBgb2JqZWN0YCBkb2VzIG5vdCBoYXZlXG4gKiBhbnkga2V5cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvT3B0aW9uYWxMaXRlcmFsTWFwPFQ+KFxuICBvYmplY3Q6IHtba2V5OiBzdHJpbmddOiBUfSxcbiAgbWFwcGVyOiAodmFsdWU6IFQpID0+IG8uRXhwcmVzc2lvbixcbik6IG8uTGl0ZXJhbE1hcEV4cHIgfCBudWxsIHtcbiAgY29uc3QgZW50cmllcyA9IE9iamVjdC5rZXlzKG9iamVjdCkubWFwKChrZXkpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IG9iamVjdFtrZXldO1xuICAgIHJldHVybiB7a2V5LCB2YWx1ZTogbWFwcGVyKHZhbHVlKSwgcXVvdGVkOiB0cnVlfTtcbiAgfSk7XG5cbiAgaWYgKGVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBvLmxpdGVyYWxNYXAoZW50cmllcyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVEZXBlbmRlbmNpZXMoXG4gIGRlcHM6IFIzRGVwZW5kZW5jeU1ldGFkYXRhW10gfCAnaW52YWxpZCcgfCBudWxsLFxuKTogby5MaXRlcmFsRXhwciB8IG8uTGl0ZXJhbEFycmF5RXhwciB7XG4gIGlmIChkZXBzID09PSAnaW52YWxpZCcpIHtcbiAgICAvLyBUaGUgYGRlcHNgIGNhbiBiZSBzZXQgdG8gdGhlIHN0cmluZyBcImludmFsaWRcIiAgYnkgdGhlIGB1bndyYXBDb25zdHJ1Y3RvckRlcGVuZGVuY2llcygpYFxuICAgIC8vIGZ1bmN0aW9uLCB3aGljaCB0cmllcyB0byBjb252ZXJ0IGBDb25zdHJ1Y3RvckRlcHNgIGludG8gYFIzRGVwZW5kZW5jeU1ldGFkYXRhW11gLlxuICAgIHJldHVybiBvLmxpdGVyYWwoJ2ludmFsaWQnKTtcbiAgfSBlbHNlIGlmIChkZXBzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG8ubGl0ZXJhbChudWxsKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gby5saXRlcmFsQXJyKGRlcHMubWFwKGNvbXBpbGVEZXBlbmRlbmN5KSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVEZXBlbmRlbmN5KGRlcDogUjNEZXBlbmRlbmN5TWV0YWRhdGEpOiBvLkxpdGVyYWxNYXBFeHByIHtcbiAgY29uc3QgZGVwTWV0YSA9IG5ldyBEZWZpbml0aW9uTWFwPFIzRGVjbGFyZURlcGVuZGVuY3lNZXRhZGF0YT4oKTtcbiAgZGVwTWV0YS5zZXQoJ3Rva2VuJywgZGVwLnRva2VuKTtcbiAgaWYgKGRlcC5hdHRyaWJ1dGVOYW1lVHlwZSAhPT0gbnVsbCkge1xuICAgIGRlcE1ldGEuc2V0KCdhdHRyaWJ1dGUnLCBvLmxpdGVyYWwodHJ1ZSkpO1xuICB9XG4gIGlmIChkZXAuaG9zdCkge1xuICAgIGRlcE1ldGEuc2V0KCdob3N0Jywgby5saXRlcmFsKHRydWUpKTtcbiAgfVxuICBpZiAoZGVwLm9wdGlvbmFsKSB7XG4gICAgZGVwTWV0YS5zZXQoJ29wdGlvbmFsJywgby5saXRlcmFsKHRydWUpKTtcbiAgfVxuICBpZiAoZGVwLnNlbGYpIHtcbiAgICBkZXBNZXRhLnNldCgnc2VsZicsIG8ubGl0ZXJhbCh0cnVlKSk7XG4gIH1cbiAgaWYgKGRlcC5za2lwU2VsZikge1xuICAgIGRlcE1ldGEuc2V0KCdza2lwU2VsZicsIG8ubGl0ZXJhbCh0cnVlKSk7XG4gIH1cbiAgcmV0dXJuIGRlcE1ldGEudG9MaXRlcmFsTWFwKCk7XG59XG4iXX0=