@angular/compiler-cli 7.2.4 → 7.2.8
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/index.js +1 -1
- package/package.json +4 -4
- package/src/diagnostics/expression_diagnostics.js +98 -151
- package/src/diagnostics/expression_type.js +122 -139
- package/src/diagnostics/translate_diagnostics.js +12 -12
- package/src/diagnostics/typescript_symbols.js +296 -514
- package/src/diagnostics/typescript_version.js +8 -8
- package/src/extract_i18n.js +11 -13
- package/src/main.js +80 -78
- package/src/metadata/bundle_index_host.js +39 -51
- package/src/metadata/bundler.js +214 -256
- package/src/metadata/collector.js +235 -317
- package/src/metadata/evaluator.js +146 -162
- package/src/metadata/index.js +1 -1
- package/src/metadata/index_writer.js +25 -47
- package/src/metadata/symbols.js +44 -62
- package/src/ngcc/src/packages/build_marker.d.ts +1 -1
- package/src/ngcc/src/packages/build_marker.js +1 -1
- package/src/ngtools_api.js +29 -44
- package/src/ngtools_api2.js +9 -11
- package/src/ngtsc/program.js +122 -162
- package/src/ngtsc/resource_loader.js +35 -50
- package/src/perform_compile.js +87 -93
- package/src/perform_watch.js +50 -51
- package/src/transformers/compiler_host.js +158 -171
- package/src/transformers/inline_resources.js +54 -57
- package/src/transformers/lower_expressions.js +87 -101
- package/src/transformers/metadata_cache.js +21 -50
- package/src/transformers/metadata_reader.js +17 -18
- package/src/transformers/nocollapse_hack.js +9 -9
- package/src/transformers/node_emitter.js +214 -237
- package/src/transformers/node_emitter_transform.js +25 -21
- package/src/transformers/program.js +336 -440
- package/src/transformers/r3_metadata_transform.js +21 -34
- package/src/transformers/r3_strip_decorators.js +29 -31
- package/src/transformers/r3_transform.js +7 -8
- package/src/transformers/tsc_pass_through.js +33 -37
- package/src/transformers/util.js +18 -30
- package/src/version.js +3 -3
package/src/transformers/util.js
CHANGED
|
@@ -11,16 +11,15 @@
|
|
|
11
11
|
if (v !== undefined) module.exports = v;
|
|
12
12
|
}
|
|
13
13
|
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/compiler-cli/src/transformers/util", ["require", "exports", "
|
|
14
|
+
define("@angular/compiler-cli/src/transformers/util", ["require", "exports", "@angular/compiler", "path", "typescript", "@angular/compiler-cli/src/transformers/api"], factory);
|
|
15
15
|
}
|
|
16
16
|
})(function (require, exports) {
|
|
17
17
|
"use strict";
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var api_1 = require("@angular/compiler-cli/src/transformers/api");
|
|
19
|
+
const compiler_1 = require("@angular/compiler");
|
|
20
|
+
const path = require("path");
|
|
21
|
+
const ts = require("typescript");
|
|
22
|
+
const api_1 = require("@angular/compiler-cli/src/transformers/api");
|
|
24
23
|
exports.GENERATED_FILES = /(.*?)\.(ngfactory|shim\.ngstyle|ngstyle|ngsummary)\.(js|d\.ts|ts)$/;
|
|
25
24
|
exports.DTS = /\.d\.ts$/;
|
|
26
25
|
exports.TS = /^(?!.*\.d\.ts$).*\.ts$/;
|
|
@@ -30,7 +29,7 @@
|
|
|
30
29
|
}
|
|
31
30
|
exports.tsStructureIsReused = tsStructureIsReused;
|
|
32
31
|
function error(msg) {
|
|
33
|
-
throw new Error(
|
|
32
|
+
throw new Error(`Internal error: ${msg}`);
|
|
34
33
|
}
|
|
35
34
|
exports.error = error;
|
|
36
35
|
function userError(msg) {
|
|
@@ -42,7 +41,7 @@
|
|
|
42
41
|
file: undefined,
|
|
43
42
|
start: undefined,
|
|
44
43
|
length: undefined,
|
|
45
|
-
category: ts.DiagnosticCategory.Message, messageText
|
|
44
|
+
category: ts.DiagnosticCategory.Message, messageText,
|
|
46
45
|
code: api_1.DEFAULT_ERROR_CODE,
|
|
47
46
|
source: api_1.SOURCE,
|
|
48
47
|
};
|
|
@@ -53,30 +52,19 @@
|
|
|
53
52
|
}
|
|
54
53
|
exports.isInRootDir = isInRootDir;
|
|
55
54
|
function relativeToRootDirs(filePath, rootDirs) {
|
|
56
|
-
var e_1, _a;
|
|
57
55
|
if (!filePath)
|
|
58
56
|
return filePath;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (rel) {
|
|
64
|
-
return rel;
|
|
65
|
-
}
|
|
57
|
+
for (const dir of rootDirs || []) {
|
|
58
|
+
const rel = pathStartsWithPrefix(dir, filePath);
|
|
59
|
+
if (rel) {
|
|
60
|
+
return rel;
|
|
66
61
|
}
|
|
67
62
|
}
|
|
68
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
69
|
-
finally {
|
|
70
|
-
try {
|
|
71
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
72
|
-
}
|
|
73
|
-
finally { if (e_1) throw e_1.error; }
|
|
74
|
-
}
|
|
75
63
|
return filePath;
|
|
76
64
|
}
|
|
77
65
|
exports.relativeToRootDirs = relativeToRootDirs;
|
|
78
66
|
function pathStartsWithPrefix(prefix, fullPath) {
|
|
79
|
-
|
|
67
|
+
const rel = path.relative(prefix, fullPath);
|
|
80
68
|
return rel.startsWith('..') ? null : rel;
|
|
81
69
|
}
|
|
82
70
|
/**
|
|
@@ -86,9 +74,9 @@
|
|
|
86
74
|
* I.e. only use this where the API allows only a ts.Diagnostic.
|
|
87
75
|
*/
|
|
88
76
|
function ngToTsDiagnostic(ng) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
77
|
+
let file;
|
|
78
|
+
let start;
|
|
79
|
+
let length;
|
|
92
80
|
if (ng.span) {
|
|
93
81
|
// Note: We can't use a real ts.SourceFile,
|
|
94
82
|
// but we can at least mirror the properties `fileName` and `text`, which
|
|
@@ -98,12 +86,12 @@
|
|
|
98
86
|
length = ng.span.end.offset - start;
|
|
99
87
|
}
|
|
100
88
|
return {
|
|
101
|
-
file
|
|
89
|
+
file,
|
|
102
90
|
messageText: ng.messageText,
|
|
103
91
|
category: ng.category,
|
|
104
|
-
code: ng.code, start
|
|
92
|
+
code: ng.code, start, length,
|
|
105
93
|
};
|
|
106
94
|
}
|
|
107
95
|
exports.ngToTsDiagnostic = ngToTsDiagnostic;
|
|
108
96
|
});
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvdHJhbnNmb3JtZXJzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFFSCxnREFBOEM7SUFDOUMsNkJBQTZCO0lBQzdCLGlDQUFpQztJQUVqQyxvRUFBOEU7SUFFakUsUUFBQSxlQUFlLEdBQUcsb0VBQW9FLENBQUM7SUFDdkYsUUFBQSxHQUFHLEdBQUcsVUFBVSxDQUFDO0lBQ2pCLFFBQUEsRUFBRSxHQUFHLHdCQUF3QixDQUFDO0lBSTNDLDBGQUEwRjtJQUMxRixTQUFnQixtQkFBbUIsQ0FBQyxPQUFtQjtRQUNyRCxPQUFRLE9BQWUsQ0FBQyxpQkFBaUIsQ0FBQztJQUM1QyxDQUFDO0lBRkQsa0RBRUM7SUFFRCxTQUFnQixLQUFLLENBQUMsR0FBVztRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFGRCxzQkFFQztJQUVELFNBQWdCLFNBQVMsQ0FBQyxHQUFXO1FBQ25DLE1BQU0sc0JBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRkQsOEJBRUM7SUFFRCxTQUFnQix1QkFBdUIsQ0FBQyxXQUFtQjtRQUN6RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsU0FBUztZQUNoQixNQUFNLEVBQUUsU0FBUztZQUNqQixRQUFRLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxXQUFXO1lBQ3BELElBQUksRUFBRSx3QkFBa0I7WUFDeEIsTUFBTSxFQUFFLFlBQU07U0FDZixDQUFDO0lBQ0osQ0FBQztJQVRELDBEQVNDO0lBRUQsU0FBZ0IsV0FBVyxDQUFDLFFBQWdCLEVBQUUsT0FBd0I7UUFDcEUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRkQsa0NBRUM7SUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxRQUFnQixFQUFFLFFBQWtCO1FBQ3JFLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxRQUFRLENBQUM7UUFDL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLElBQUksRUFBRSxFQUFFO1lBQ2hDLE1BQU0sR0FBRyxHQUFHLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNoRCxJQUFJLEdBQUcsRUFBRTtnQkFDUCxPQUFPLEdBQUcsQ0FBQzthQUNaO1NBQ0Y7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBVEQsZ0RBU0M7SUFFRCxTQUFTLG9CQUFvQixDQUFDLE1BQWMsRUFBRSxRQUFnQjtRQUM1RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1QyxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQWdCLGdCQUFnQixDQUFDLEVBQWM7UUFDN0MsSUFBSSxJQUE2QixDQUFDO1FBQ2xDLElBQUksS0FBdUIsQ0FBQztRQUM1QixJQUFJLE1BQXdCLENBQUM7UUFDN0IsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ1gsMkNBQTJDO1lBQzNDLHlFQUF5RTtZQUN6RSx1Q0FBdUM7WUFDdkMsSUFBSSxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQW1CLENBQUM7WUFDL0YsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM3QixNQUFNLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUNyQztRQUNELE9BQU87WUFDTCxJQUFJO1lBQ0osV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXO1lBQzNCLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUTtZQUNyQixJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTTtTQUM3QixDQUFDO0lBQ0osQ0FBQztJQWxCRCw0Q0FrQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7c3ludGF4RXJyb3J9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtDb21waWxlck9wdGlvbnMsIERFRkFVTFRfRVJST1JfQ09ERSwgRGlhZ25vc3RpYywgU09VUkNFfSBmcm9tICcuL2FwaSc7XG5cbmV4cG9ydCBjb25zdCBHRU5FUkFURURfRklMRVMgPSAvKC4qPylcXC4obmdmYWN0b3J5fHNoaW1cXC5uZ3N0eWxlfG5nc3R5bGV8bmdzdW1tYXJ5KVxcLihqc3xkXFwudHN8dHMpJC87XG5leHBvcnQgY29uc3QgRFRTID0gL1xcLmRcXC50cyQvO1xuZXhwb3J0IGNvbnN0IFRTID0gL14oPyEuKlxcLmRcXC50cyQpLipcXC50cyQvO1xuXG5leHBvcnQgY29uc3QgZW51bSBTdHJ1Y3R1cmVJc1JldXNlZCB7Tm90ID0gMCwgU2FmZU1vZHVsZXMgPSAxLCBDb21wbGV0ZWx5ID0gMn1cblxuLy8gTm90ZTogVGhpcyBpcyBhbiBpbnRlcm5hbCBwcm9wZXJ0eSBpbiBUeXBlU2NyaXB0LiBVc2UgaXQgb25seSBmb3IgYXNzZXJ0aW9ucyBhbmQgdGVzdHMuXG5leHBvcnQgZnVuY3Rpb24gdHNTdHJ1Y3R1cmVJc1JldXNlZChwcm9ncmFtOiB0cy5Qcm9ncmFtKTogU3RydWN0dXJlSXNSZXVzZWQge1xuICByZXR1cm4gKHByb2dyYW0gYXMgYW55KS5zdHJ1Y3R1cmVJc1JldXNlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVycm9yKG1zZzogc3RyaW5nKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIGVycm9yOiAke21zZ31gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJFcnJvcihtc2c6IHN0cmluZyk6IG5ldmVyIHtcbiAgdGhyb3cgc3ludGF4RXJyb3IobXNnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1lc3NhZ2VEaWFnbm9zdGljKG1lc3NhZ2VUZXh0OiBzdHJpbmcpOiB0cy5EaWFnbm9zdGljJkRpYWdub3N0aWMge1xuICByZXR1cm4ge1xuICAgIGZpbGU6IHVuZGVmaW5lZCxcbiAgICBzdGFydDogdW5kZWZpbmVkLFxuICAgIGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIGNhdGVnb3J5OiB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSwgbWVzc2FnZVRleHQsXG4gICAgY29kZTogREVGQVVMVF9FUlJPUl9DT0RFLFxuICAgIHNvdXJjZTogU09VUkNFLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJblJvb3REaXIoZmlsZU5hbWU6IHN0cmluZywgb3B0aW9uczogQ29tcGlsZXJPcHRpb25zKSB7XG4gIHJldHVybiAhb3B0aW9ucy5yb290RGlyIHx8IHBhdGhTdGFydHNXaXRoUHJlZml4KG9wdGlvbnMucm9vdERpciwgZmlsZU5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmVUb1Jvb3REaXJzKGZpbGVQYXRoOiBzdHJpbmcsIHJvb3REaXJzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGlmICghZmlsZVBhdGgpIHJldHVybiBmaWxlUGF0aDtcbiAgZm9yIChjb25zdCBkaXIgb2Ygcm9vdERpcnMgfHwgW10pIHtcbiAgICBjb25zdCByZWwgPSBwYXRoU3RhcnRzV2l0aFByZWZpeChkaXIsIGZpbGVQYXRoKTtcbiAgICBpZiAocmVsKSB7XG4gICAgICByZXR1cm4gcmVsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmlsZVBhdGg7XG59XG5cbmZ1bmN0aW9uIHBhdGhTdGFydHNXaXRoUHJlZml4KHByZWZpeDogc3RyaW5nLCBmdWxsUGF0aDogc3RyaW5nKTogc3RyaW5nfG51bGwge1xuICBjb25zdCByZWwgPSBwYXRoLnJlbGF0aXZlKHByZWZpeCwgZnVsbFBhdGgpO1xuICByZXR1cm4gcmVsLnN0YXJ0c1dpdGgoJy4uJykgPyBudWxsIDogcmVsO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbmcuRGlhZ25vc3RpYyBpbnRvIGEgdHMuRGlhZ25vc3RpYy5cbiAqIFRoaXMgbG9vc2VzIHNvbWUgaW5mb3JtYXRpb24sIGFuZCBhbHNvIHVzZXMgYW4gaW5jb21wbGV0ZSBvYmplY3QgYXMgYGZpbGVgLlxuICpcbiAqIEkuZS4gb25seSB1c2UgdGhpcyB3aGVyZSB0aGUgQVBJIGFsbG93cyBvbmx5IGEgdHMuRGlhZ25vc3RpYy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5nVG9Uc0RpYWdub3N0aWMobmc6IERpYWdub3N0aWMpOiB0cy5EaWFnbm9zdGljIHtcbiAgbGV0IGZpbGU6IHRzLlNvdXJjZUZpbGV8dW5kZWZpbmVkO1xuICBsZXQgc3RhcnQ6IG51bWJlcnx1bmRlZmluZWQ7XG4gIGxldCBsZW5ndGg6IG51bWJlcnx1bmRlZmluZWQ7XG4gIGlmIChuZy5zcGFuKSB7XG4gICAgLy8gTm90ZTogV2UgY2FuJ3QgdXNlIGEgcmVhbCB0cy5Tb3VyY2VGaWxlLFxuICAgIC8vIGJ1dCB3ZSBjYW4gYXQgbGVhc3QgbWlycm9yIHRoZSBwcm9wZXJ0aWVzIGBmaWxlTmFtZWAgYW5kIGB0ZXh0YCwgd2hpY2hcbiAgICAvLyBhcmUgbW9zdGx5IHVzZWQgZm9yIGVycm9yIHJlcG9ydGluZy5cbiAgICBmaWxlID0geyBmaWxlTmFtZTogbmcuc3Bhbi5zdGFydC5maWxlLnVybCwgdGV4dDogbmcuc3Bhbi5zdGFydC5maWxlLmNvbnRlbnQgfSBhcyB0cy5Tb3VyY2VGaWxlO1xuICAgIHN0YXJ0ID0gbmcuc3Bhbi5zdGFydC5vZmZzZXQ7XG4gICAgbGVuZ3RoID0gbmcuc3Bhbi5lbmQub2Zmc2V0IC0gc3RhcnQ7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBmaWxlLFxuICAgIG1lc3NhZ2VUZXh0OiBuZy5tZXNzYWdlVGV4dCxcbiAgICBjYXRlZ29yeTogbmcuY2F0ZWdvcnksXG4gICAgY29kZTogbmcuY29kZSwgc3RhcnQsIGxlbmd0aCxcbiAgfTtcbn1cbiJdfQ==
|
package/src/version.js
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* @description
|
|
22
22
|
* Entry point for all public APIs of the common package.
|
|
23
23
|
*/
|
|
24
|
-
|
|
25
|
-
exports.VERSION = new compiler_1.Version('7.2.
|
|
24
|
+
const compiler_1 = require("@angular/compiler");
|
|
25
|
+
exports.VERSION = new compiler_1.Version('7.2.8');
|
|
26
26
|
});
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVIOzs7O09BSUc7SUFFSCxnREFBMEM7SUFFN0IsUUFBQSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQG1vZHVsZVxuICogQGRlc2NyaXB0aW9uXG4gKiBFbnRyeSBwb2ludCBmb3IgYWxsIHB1YmxpYyBBUElzIG9mIHRoZSBjb21tb24gcGFja2FnZS5cbiAqL1xuXG5pbXBvcnQge1ZlcnNpb259IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBuZXcgVmVyc2lvbignMC4wLjAtUExBQ0VIT0xERVInKTtcbiJdfQ==
|