@angular/compiler 16.0.0-next.4 → 16.0.0-next.6
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.
- package/esm2022/src/compiler_util/expression_converter.mjs +759 -0
- package/{esm2020 → esm2022}/src/expression_parser/parser.mjs +3 -2
- package/esm2022/src/i18n/digest.mjs +357 -0
- package/esm2022/src/i18n/i18n_ast.mjs +184 -0
- package/{esm2020 → esm2022}/src/render3/partial/class_metadata.mjs +1 -1
- package/{esm2020 → esm2022}/src/render3/partial/directive.mjs +1 -1
- package/{esm2020 → esm2022}/src/render3/partial/factory.mjs +1 -1
- package/{esm2020 → esm2022}/src/render3/partial/injectable.mjs +1 -1
- package/{esm2020 → esm2022}/src/render3/partial/injector.mjs +1 -1
- package/{esm2020 → esm2022}/src/render3/partial/ng_module.mjs +1 -1
- package/{esm2020 → esm2022}/src/render3/partial/pipe.mjs +1 -1
- package/esm2022/src/render3/r3_identifiers.mjs +214 -0
- package/esm2022/src/render3/view/i18n/meta.mjs +243 -0
- package/esm2022/src/render3/view/style_parser.mjs +86 -0
- package/{esm2020 → esm2022}/src/version.mjs +1 -1
- package/{fesm2020 → fesm2022}/compiler.mjs +221 -238
- package/fesm2022/compiler.mjs.map +1 -0
- package/{fesm2015 → fesm2022}/testing.mjs +1 -1
- package/index.d.ts +1 -1
- package/package.json +9 -17
- package/testing/index.d.ts +1 -1
- package/esm2020/src/compiler_util/expression_converter.mjs +0 -759
- package/esm2020/src/i18n/digest.mjs +0 -357
- package/esm2020/src/i18n/i18n_ast.mjs +0 -184
- package/esm2020/src/render3/r3_identifiers.mjs +0 -214
- package/esm2020/src/render3/view/i18n/meta.mjs +0 -244
- package/esm2020/src/render3/view/style_parser.mjs +0 -103
- package/fesm2015/compiler.mjs +0 -22352
- package/fesm2015/compiler.mjs.map +0 -1
- package/fesm2020/compiler.mjs.map +0 -1
- package/fesm2020/testing.mjs +0 -39
- package/fesm2020/testing.mjs.map +0 -1
- /package/{esm2020 → esm2022}/compiler.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/src/assertions.mjs +0 -0
- /package/{esm2020 → esm2022}/src/chars.mjs +0 -0
- /package/{esm2020 → esm2022}/src/compiler.mjs +0 -0
- /package/{esm2020 → esm2022}/src/compiler_facade_interface.mjs +0 -0
- /package/{esm2020 → esm2022}/src/config.mjs +0 -0
- /package/{esm2020 → esm2022}/src/constant_pool.mjs +0 -0
- /package/{esm2020 → esm2022}/src/core.mjs +0 -0
- /package/{esm2020 → esm2022}/src/expression_parser/ast.mjs +0 -0
- /package/{esm2020 → esm2022}/src/expression_parser/lexer.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/big_integer.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/extractor_merger.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/i18n_html_parser.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/i18n_parser.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/index.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/message_bundle.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/parse_util.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/serializers/placeholder.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/serializers/serializer.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/serializers/xliff.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/serializers/xliff2.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/serializers/xmb.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/serializers/xml_helper.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/serializers/xtb.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/translation_bundle.mjs +0 -0
- /package/{esm2020 → esm2022}/src/injectable_compiler_2.mjs +0 -0
- /package/{esm2020 → esm2022}/src/jit_compiler_facade.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/ast.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/entities.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/html_parser.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/html_tags.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/html_whitespaces.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/icu_ast_expander.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/interpolation_config.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/lexer.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/parser.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/tags.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/xml_parser.mjs +0 -0
- /package/{esm2020 → esm2022}/src/ml_parser/xml_tags.mjs +0 -0
- /package/{esm2020 → esm2022}/src/output/abstract_emitter.mjs +0 -0
- /package/{esm2020 → esm2022}/src/output/abstract_js_emitter.mjs +0 -0
- /package/{esm2020 → esm2022}/src/output/map_util.mjs +0 -0
- /package/{esm2020 → esm2022}/src/output/output_ast.mjs +0 -0
- /package/{esm2020 → esm2022}/src/output/output_jit.mjs +0 -0
- /package/{esm2020 → esm2022}/src/output/output_jit_trusted_types.mjs +0 -0
- /package/{esm2020 → esm2022}/src/output/source_map.mjs +0 -0
- /package/{esm2020 → esm2022}/src/parse_util.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/partial/api.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/partial/component.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/partial/util.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/r3_ast.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/r3_class_metadata_compiler.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/r3_factory.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/r3_injector_compiler.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/r3_jit.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/r3_module_compiler.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/r3_pipe_compiler.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/r3_template_transform.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/util.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/api.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/compiler.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/i18n/context.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/i18n/get_msg_utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/i18n/icu_serializer.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/i18n/localize_utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/i18n/util.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/styling_builder.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/t2_api.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/t2_binder.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/template.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view/util.mjs +0 -0
- /package/{esm2020 → esm2022}/src/resource_loader.mjs +0 -0
- /package/{esm2020 → esm2022}/src/schema/dom_element_schema_registry.mjs +0 -0
- /package/{esm2020 → esm2022}/src/schema/dom_security_schema.mjs +0 -0
- /package/{esm2020 → esm2022}/src/schema/element_schema_registry.mjs +0 -0
- /package/{esm2020 → esm2022}/src/schema/trusted_types_sinks.mjs +0 -0
- /package/{esm2020 → esm2022}/src/selector.mjs +0 -0
- /package/{esm2020 → esm2022}/src/shadow_css.mjs +0 -0
- /package/{esm2020 → esm2022}/src/style_url_resolver.mjs +0 -0
- /package/{esm2020 → esm2022}/src/template_parser/binding_parser.mjs +0 -0
- /package/{esm2020 → esm2022}/src/template_parser/template_preparser.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/testing.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testing.mjs +0 -0
- /package/{fesm2015 → fesm2022}/testing.mjs.map +0 -0
|
@@ -1,103 +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
|
-
/**
|
|
9
|
-
* Parses string representation of a style and converts it into object literal.
|
|
10
|
-
*
|
|
11
|
-
* @param value string representation of style as used in the `style` attribute in HTML.
|
|
12
|
-
* Example: `color: red; height: auto`.
|
|
13
|
-
* @returns An array of style property name and value pairs, e.g. `['color', 'red', 'height',
|
|
14
|
-
* 'auto']`
|
|
15
|
-
*/
|
|
16
|
-
export function parse(value) {
|
|
17
|
-
// we use a string array here instead of a string map
|
|
18
|
-
// because a string-map is not guaranteed to retain the
|
|
19
|
-
// order of the entries whereas a string array can be
|
|
20
|
-
// constructed in a [key, value, key, value] format.
|
|
21
|
-
const styles = [];
|
|
22
|
-
let i = 0;
|
|
23
|
-
let parenDepth = 0;
|
|
24
|
-
let quote = 0 /* Char.QuoteNone */;
|
|
25
|
-
let valueStart = 0;
|
|
26
|
-
let propStart = 0;
|
|
27
|
-
let currentProp = null;
|
|
28
|
-
let valueHasQuotes = false;
|
|
29
|
-
while (i < value.length) {
|
|
30
|
-
const token = value.charCodeAt(i++);
|
|
31
|
-
switch (token) {
|
|
32
|
-
case 40 /* Char.OpenParen */:
|
|
33
|
-
parenDepth++;
|
|
34
|
-
break;
|
|
35
|
-
case 41 /* Char.CloseParen */:
|
|
36
|
-
parenDepth--;
|
|
37
|
-
break;
|
|
38
|
-
case 39 /* Char.QuoteSingle */:
|
|
39
|
-
// valueStart needs to be there since prop values don't
|
|
40
|
-
// have quotes in CSS
|
|
41
|
-
valueHasQuotes = valueHasQuotes || valueStart > 0;
|
|
42
|
-
if (quote === 0 /* Char.QuoteNone */) {
|
|
43
|
-
quote = 39 /* Char.QuoteSingle */;
|
|
44
|
-
}
|
|
45
|
-
else if (quote === 39 /* Char.QuoteSingle */ && value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */) {
|
|
46
|
-
quote = 0 /* Char.QuoteNone */;
|
|
47
|
-
}
|
|
48
|
-
break;
|
|
49
|
-
case 34 /* Char.QuoteDouble */:
|
|
50
|
-
// same logic as above
|
|
51
|
-
valueHasQuotes = valueHasQuotes || valueStart > 0;
|
|
52
|
-
if (quote === 0 /* Char.QuoteNone */) {
|
|
53
|
-
quote = 34 /* Char.QuoteDouble */;
|
|
54
|
-
}
|
|
55
|
-
else if (quote === 34 /* Char.QuoteDouble */ && value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */) {
|
|
56
|
-
quote = 0 /* Char.QuoteNone */;
|
|
57
|
-
}
|
|
58
|
-
break;
|
|
59
|
-
case 58 /* Char.Colon */:
|
|
60
|
-
if (!currentProp && parenDepth === 0 && quote === 0 /* Char.QuoteNone */) {
|
|
61
|
-
currentProp = hyphenate(value.substring(propStart, i - 1).trim());
|
|
62
|
-
valueStart = i;
|
|
63
|
-
}
|
|
64
|
-
break;
|
|
65
|
-
case 59 /* Char.Semicolon */:
|
|
66
|
-
if (currentProp && valueStart > 0 && parenDepth === 0 && quote === 0 /* Char.QuoteNone */) {
|
|
67
|
-
const styleVal = value.substring(valueStart, i - 1).trim();
|
|
68
|
-
styles.push(currentProp, valueHasQuotes ? stripUnnecessaryQuotes(styleVal) : styleVal);
|
|
69
|
-
propStart = i;
|
|
70
|
-
valueStart = 0;
|
|
71
|
-
currentProp = null;
|
|
72
|
-
valueHasQuotes = false;
|
|
73
|
-
}
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
if (currentProp && valueStart) {
|
|
78
|
-
const styleVal = value.slice(valueStart).trim();
|
|
79
|
-
styles.push(currentProp, valueHasQuotes ? stripUnnecessaryQuotes(styleVal) : styleVal);
|
|
80
|
-
}
|
|
81
|
-
return styles;
|
|
82
|
-
}
|
|
83
|
-
export function stripUnnecessaryQuotes(value) {
|
|
84
|
-
const qS = value.charCodeAt(0);
|
|
85
|
-
const qE = value.charCodeAt(value.length - 1);
|
|
86
|
-
if (qS == qE && (qS == 39 /* Char.QuoteSingle */ || qS == 34 /* Char.QuoteDouble */)) {
|
|
87
|
-
const tempValue = value.substring(1, value.length - 1);
|
|
88
|
-
// special case to avoid using a multi-quoted string that was just chomped
|
|
89
|
-
// (e.g. `font-family: "Verdana", "sans-serif"`)
|
|
90
|
-
if (tempValue.indexOf('\'') == -1 && tempValue.indexOf('"') == -1) {
|
|
91
|
-
value = tempValue;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return value;
|
|
95
|
-
}
|
|
96
|
-
export function hyphenate(value) {
|
|
97
|
-
return value
|
|
98
|
-
.replace(/[a-z][A-Z]/g, v => {
|
|
99
|
-
return v.charAt(0) + '-' + v.charAt(1);
|
|
100
|
-
})
|
|
101
|
-
.toLowerCase();
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVfcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3JlbmRlcjMvdmlldy9zdHlsZV9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBY0g7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsS0FBYTtJQUNqQyxxREFBcUQ7SUFDckQsdURBQXVEO0lBQ3ZELHFEQUFxRDtJQUNyRCxvREFBb0Q7SUFDcEQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBRTVCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNWLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNuQixJQUFJLEtBQUsseUJBQXVCLENBQUM7SUFDakMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNsQixJQUFJLFdBQVcsR0FBZ0IsSUFBSSxDQUFDO0lBQ3BDLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztJQUMzQixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQVMsQ0FBQztRQUM1QyxRQUFRLEtBQUssRUFBRTtZQUNiO2dCQUNFLFVBQVUsRUFBRSxDQUFDO2dCQUNiLE1BQU07WUFDUjtnQkFDRSxVQUFVLEVBQUUsQ0FBQztnQkFDYixNQUFNO1lBQ1I7Z0JBQ0UsdURBQXVEO2dCQUN2RCxxQkFBcUI7Z0JBQ3JCLGNBQWMsR0FBRyxjQUFjLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxLQUFLLDJCQUFtQixFQUFFO29CQUM1QixLQUFLLDRCQUFtQixDQUFDO2lCQUMxQjtxQkFBTSxJQUFJLEtBQUssOEJBQXFCLElBQUksS0FBSyxDQUFDLFVB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QWEsRUFDYixDQUFDLENBQUMsRUFBRTtRQUNGLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDLENBQUM7U0FDTCxXQUFXLEVBQUUsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmNvbnN0IGVudW0gQ2hhciB7XG4gIE9wZW5QYXJlbiA9IDQwLFxuICBDbG9zZVBhcmVuID0gNDEsXG4gIENvbG9uID0gNTgsXG4gIFNlbWljb2xvbiA9IDU5LFxuICBCYWNrU2xhc2ggPSA5MixcbiAgUXVvdGVOb25lID0gMCwgIC8vIGluZGljYXRpbmcgd2UgYXJlIG5vdCBpbnNpZGUgYSBxdW90ZVxuICBRdW90ZURvdWJsZSA9IDM0LFxuICBRdW90ZVNpbmdsZSA9IDM5LFxufVxuXG5cbi8qKlxuICogUGFyc2VzIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHN0eWxlIGFuZCBjb252ZXJ0cyBpdCBpbnRvIG9iamVjdCBsaXRlcmFsLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygc3R5bGUgYXMgdXNlZCBpbiB0aGUgYHN0eWxlYCBhdHRyaWJ1dGUgaW4gSFRNTC5cbiAqICAgRXhhbXBsZTogYGNvbG9yOiByZWQ7IGhlaWdodDogYXV0b2AuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHlsZSBwcm9wZXJ0eSBuYW1lIGFuZCB2YWx1ZSBwYWlycywgZS5nLiBgWydjb2xvcicsICdyZWQnLCAnaGVpZ2h0JyxcbiAqICdhdXRvJ11gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAvLyB3ZSB1c2UgYSBzdHJpbmcgYXJyYXkgaGVyZSBpbnN0ZWFkIG9mIGEgc3RyaW5nIG1hcFxuICAvLyBiZWNhdXNlIGEgc3RyaW5nLW1hcCBpcyBub3QgZ3VhcmFudGVlZCB0byByZXRhaW4gdGhlXG4gIC8vIG9yZGVyIG9mIHRoZSBlbnRyaWVzIHdoZXJlYXMgYSBzdHJpbmcgYXJyYXkgY2FuIGJlXG4gIC8vIGNvbnN0cnVjdGVkIGluIGEgW2tleSwgdmFsdWUsIGtleSwgdmFsdWVdIGZvcm1hdC5cbiAgY29uc3Qgc3R5bGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxldCBpID0gMDtcbiAgbGV0IHBhcmVuRGVwdGggPSAwO1xuICBsZXQgcXVvdGU6IENoYXIgPSBDaGFyLlF1b3RlTm9uZTtcbiAgbGV0IHZhbHVlU3RhcnQgPSAwO1xuICBsZXQgcHJvcFN0YXJ0ID0gMDtcbiAgbGV0IGN1cnJlbnRQcm9wOiBzdHJpbmd8bnVsbCA9IG51bGw7XG4gIGxldCB2YWx1ZUhhc1F1b3RlcyA9IGZhbHNlO1xuICB3aGlsZSAoaSA8IHZhbHVlLmxlbmd0aCkge1xuICAgIGNvbnN0IHRva2VuID0gdmFsdWUuY2hhckNvZGVBdChpKyspIGFzIENoYXI7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBDaGFyLk9wZW5QYXJlbjpcbiAgICAgICAgcGFyZW5EZXB0aCsrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ2hhci5DbG9zZVBhcmVuOlxuICAgICAgICBwYXJlbkRlcHRoLS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDaGFyLlF1b3RlU2luZ2xlOlxuICAgICAgICAvLyB2YWx1ZVN0YXJ0IG5lZWRzIHRvIGJlIHRoZXJlIHNpbmNlIHByb3AgdmFsdWVzIGRvbid0XG4gICAgICAgIC8vIGhhdmUgcXVvdGVzIGluIENTU1xuICAgICAgICB2YWx1ZUhhc1F1b3RlcyA9IHZhbHVlSGFzUXVvdGVzIHx8IHZhbHVlU3RhcnQgPiAwO1xuICAgICAgICBpZiAocXVvdGUgPT09IENoYXIuUXVvdGVOb25lKSB7XG4gICAgICAgICAgcXVvdGUgPSBDaGFyLlF1b3RlU2luZ2xlO1xuICAgICAgICB9IGVsc2UgaWYgKHF1b3RlID09PSBDaGFyLlF1b3RlU2luZ2xlICYmIHZhbHVlLmNoYXJDb2RlQXQoaSAtIDEpICE9PSBDaGFyLkJhY2tTbGFzaCkge1xuICAgICAgICAgIHF1b3RlID0gQ2hhci5RdW90ZU5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENoYXIuUXVvdGVEb3VibGU6XG4gICAgICAgIC8vIHNhbWUgbG9naWMgYXMgYWJvdmVcbiAgICAgICAgdmFsdWVIYXNRdW90ZXMgPSB2YWx1ZUhhc1F1b3RlcyB8fCB2YWx1ZVN0YXJ0ID4gMDtcbiAgICAgICAgaWYgKHF1b3RlID09PSBDaGFyLlF1b3RlTm9uZSkge1xuICAgICAgICAgIHF1b3RlID0gQ2hhci5RdW90ZURvdWJsZTtcbiAgICAgICAgfSBlbHNlIGlmIChxdW90ZSA9PT0gQ2hhci5RdW90ZURvdWJsZSAmJiB2YWx1ZS5jaGFyQ29kZUF0KGkgLSAxKSAhPT0gQ2hhci5CYWNrU2xhc2gpIHtcbiAgICAgICAgICBxdW90ZSA9IENoYXIuUXVvdGVOb25lO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDaGFyLkNvbG9uOlxuICAgICAgICBpZiAoIWN1cnJlbnRQcm9wICYmIHBhcmVuRGVwdGggPT09IDAgJiYgcXVvdGUgPT09IENoYXIuUXVvdGVOb25lKSB7XG4gICAgICAgICAgY3VycmVudFByb3AgPSBoeXBoZW5hdGUodmFsdWUuc3Vic3RyaW5nKHByb3BTdGFydCwgaSAtIDEpLnRyaW0oKSk7XG4gICAgICAgICAgdmFsdWVTdGFydCA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENoYXIuU2VtaWNvbG9uOlxuICAgICAgICBpZiAoY3VycmVudFByb3AgJiYgdmFsdWVTdGFydCA+IDAgJiYgcGFyZW5EZXB0aCA9PT0gMCAmJiBxdW90ZSA9PT0gQ2hhci5RdW90ZU5vbmUpIHtcbiAgICAgICAgICBjb25zdCBzdHlsZVZhbCA9IHZhbHVlLnN1YnN0cmluZyh2YWx1ZVN0YXJ0LCBpIC0gMSkudHJpbSgpO1xuICAgICAgICAgIHN0eWxlcy5wdXNoKGN1cnJlbnRQcm9wLCB2YWx1ZUhhc1F1b3RlcyA/IHN0cmlwVW5uZWNlc3NhcnlRdW90ZXMoc3R5bGVWYWwpIDogc3R5bGVWYWwpO1xuICAgICAgICAgIHByb3BTdGFydCA9IGk7XG4gICAgICAgICAgdmFsdWVTdGFydCA9IDA7XG4gICAgICAgICAgY3VycmVudFByb3AgPSBudWxsO1xuICAgICAgICAgIHZhbHVlSGFzUXVvdGVzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKGN1cnJlbnRQcm9wICYmIHZhbHVlU3RhcnQpIHtcbiAgICBjb25zdCBzdHlsZVZhbCA9IHZhbHVlLnNsaWNlKHZhbHVlU3RhcnQpLnRyaW0oKTtcbiAgICBzdHlsZXMucHVzaChjdXJyZW50UHJvcCwgdmFsdWVIYXNRdW90ZXMgPyBzdHJpcFVubmVjZXNzYXJ5UXVvdGVzKHN0eWxlVmFsKSA6IHN0eWxlVmFsKTtcbiAgfVxuXG4gIHJldHVybiBzdHlsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcFVubmVjZXNzYXJ5UXVvdGVzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBxUyA9IHZhbHVlLmNoYXJDb2RlQXQoMCk7XG4gIGNvbnN0IHFFID0gdmFsdWUuY2hhckNvZGVBdCh2YWx1ZS5sZW5ndGggLSAxKTtcbiAgaWYgKHFTID09IHFFICYmIChxUyA9PSBDaGFyLlF1b3RlU2luZ2xlIHx8IHFTID09IENoYXIuUXVvdGVEb3VibGUpKSB7XG4gICAgY29uc3QgdGVtcFZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDEsIHZhbHVlLmxlbmd0aCAtIDEpO1xuICAgIC8vIHNwZWNpYWwgY2FzZSB0byBhdm9pZCB1c2luZyBhIG11bHRpLXF1b3RlZCBzdHJpbmcgdGhhdCB3YXMganVzdCBjaG9tcGVkXG4gICAgLy8gKGUuZy4gYGZvbnQtZmFtaWx5OiBcIlZlcmRhbmFcIiwgXCJzYW5zLXNlcmlmXCJgKVxuICAgIGlmICh0ZW1wVmFsdWUuaW5kZXhPZignXFwnJykgPT0gLTEgJiYgdGVtcFZhbHVlLmluZGV4T2YoJ1wiJykgPT0gLTEpIHtcbiAgICAgIHZhbHVlID0gdGVtcFZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBoZW5hdGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgICAgL1thLXpdW0EtWl0vZyxcbiAgICAgICAgICB2ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB2LmNoYXJBdCgwKSArICctJyArIHYuY2hhckF0KDEpO1xuICAgICAgICAgIH0pXG4gICAgICAudG9Mb3dlckNhc2UoKTtcbn1cbiJdfQ==
|