@angular/cli 7.2.0-beta.1 → 7.2.1
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/README.md +3 -2
- package/commands/add.d.ts +2 -2
- package/commands/add.js +3 -3
- package/commands/build.d.ts +6 -2
- package/commands/build.js +3 -3
- package/commands/build.json +10 -1
- package/commands/config.d.ts +2 -2
- package/commands/config.js +3 -3
- package/commands/deprecated.d.ts +2 -2
- package/commands/deprecated.js +3 -3
- package/commands/doc.d.ts +2 -2
- package/commands/doc.js +3 -3
- package/commands/e2e.d.ts +2 -2
- package/commands/e2e.js +3 -3
- package/commands/easter-egg.d.ts +2 -2
- package/commands/easter-egg.js +3 -3
- package/commands/eject.d.ts +2 -2
- package/commands/eject.js +3 -3
- package/commands/generate.d.ts +2 -2
- package/commands/generate.js +3 -3
- package/commands/help.d.ts +2 -2
- package/commands/help.js +3 -3
- package/commands/lint.d.ts +2 -2
- package/commands/lint.js +3 -3
- package/commands/new.d.ts +2 -2
- package/commands/new.js +3 -3
- package/commands/run.d.ts +2 -2
- package/commands/run.js +3 -3
- package/commands/serve.d.ts +6 -2
- package/commands/serve.js +3 -3
- package/commands/serve.json +10 -1
- package/commands/test.d.ts +2 -2
- package/commands/test.js +3 -3
- package/commands/update.d.ts +2 -2
- package/commands/update.js +3 -3
- package/commands/version.d.ts +2 -2
- package/commands/version.js +3 -3
- package/commands/xi18n.d.ts +2 -2
- package/commands/xi18n.js +3 -3
- package/lib/config/schema.d.ts +23 -7
- package/lib/config/schema.js +2 -2
- package/lib/config/schema.json +53 -33
- package/models/architect-command.d.ts +3 -2
- package/models/architect-command.js +37 -7
- package/models/parser.js +2 -2
- package/package.json +7 -7
- package/utilities/bep.d.ts +18 -0
- package/utilities/bep.js +55 -0
- package/utilities/json-schema.js +3 -1
package/commands/xi18n.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
var HelpEnum;
|
|
6
6
|
(function (HelpEnum) {
|
|
7
|
-
HelpEnum["
|
|
8
|
-
HelpEnum["
|
|
7
|
+
HelpEnum["HelpJson"] = "JSON";
|
|
8
|
+
HelpEnum["Json"] = "json";
|
|
9
9
|
})(HelpEnum = exports.HelpEnum || (exports.HelpEnum = {}));
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGkxOG4uanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbImRpc3Qtc2NoZW1hL3BhY2thZ2VzL2FuZ3VsYXIvY2xpL2NvbW1hbmRzL3hpMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxtRkFBbUY7QUFDbkYsb0ZBQW9GOztBQW1DcEYsSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2hCLDZCQUFpQixDQUFBO0lBQ2pCLHlCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUhXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBR25CIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBUSElTIEZJTEUgSVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQuIFRPIFVQREFURSBUSElTIEZJTEUgWU9VIE5FRUQgVE8gQ0hBTkdFIFRIRVxuLy8gQ09SUkVTUE9ORElORyBKU09OIFNDSEVNQSBGSUxFLCBUSEVOIFJVTiBkZXZraXQtYWRtaW4gYnVpbGQgKG9yIGJhemVsIGJ1aWxkIC4uLikuXG5cbi8vIHRzbGludDpkaXNhYmxlOm5vLWdsb2JhbC10c2xpbnQtZGlzYWJsZVxuLy8gdHNsaW50OmRpc2FibGVcblxuLyoqXG4gKiBFeHRyYWN0cyBpMThuIG1lc3NhZ2VzIGZyb20gc291cmNlIGNvZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hIHtcbiAgICAvKipcbiAgICAgKiBBIG5hbWVkIGJ1aWxkIHRhcmdldCwgYXMgc3BlY2lmaWVkIGluIHRoZSBcImNvbmZpZ3VyYXRpb25zXCIgc2VjdGlvbiBvZiBhbmd1bGFyLmpzb24uXG4gICAgICogRWFjaCBuYW1lZCB0YXJnZXQgaXMgYWNjb21wYW5pZWQgYnkgYSBjb25maWd1cmF0aW9uIG9mIG9wdGlvbiBkZWZhdWx0cyBmb3IgdGhhdCB0YXJnZXQuXG4gICAgICovXG4gICAgY29uZmlndXJhdGlvbj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTaG93cyBhIGhlbHAgbWVzc2FnZSBmb3IgdGhpcyBjb21tYW5kIGluIHRoZSBjb25zb2xlLlxuICAgICAqL1xuICAgIGhlbHA/OiBIZWxwVW5pb247XG4gICAgLyoqXG4gICAgICogV2hlbiB0cnVlLCBzZXRzIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIHRvIHRoZSBwcm9kdWN0aW9uIHRhcmdldC5cbiAgICAgKiBBbGwgYnVpbGRzIG1ha2UgdXNlIG9mIGJ1bmRsaW5nIGFuZCBsaW1pdGVkIHRyZWUtc2hha2luZy4gQSBwcm9kdWN0aW9uIGJ1aWxkIGFsc28gcnVuc1xuICAgICAqIGxpbWl0ZWQgZGVhZCBjb2RlIGVsaW1pbmF0aW9uLlxuICAgICAqL1xuICAgIHByb2Q/
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGkxOG4uanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbImRpc3Qtc2NoZW1hL3BhY2thZ2VzL2FuZ3VsYXIvY2xpL2NvbW1hbmRzL3hpMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxtRkFBbUY7QUFDbkYsb0ZBQW9GOztBQW1DcEYsSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2hCLDZCQUFpQixDQUFBO0lBQ2pCLHlCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUhXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBR25CIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBUSElTIEZJTEUgSVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQuIFRPIFVQREFURSBUSElTIEZJTEUgWU9VIE5FRUQgVE8gQ0hBTkdFIFRIRVxuLy8gQ09SUkVTUE9ORElORyBKU09OIFNDSEVNQSBGSUxFLCBUSEVOIFJVTiBkZXZraXQtYWRtaW4gYnVpbGQgKG9yIGJhemVsIGJ1aWxkIC4uLikuXG5cbi8vIHRzbGludDpkaXNhYmxlOm5vLWdsb2JhbC10c2xpbnQtZGlzYWJsZVxuLy8gdHNsaW50OmRpc2FibGVcblxuLyoqXG4gKiBFeHRyYWN0cyBpMThuIG1lc3NhZ2VzIGZyb20gc291cmNlIGNvZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hIHtcbiAgICAvKipcbiAgICAgKiBBIG5hbWVkIGJ1aWxkIHRhcmdldCwgYXMgc3BlY2lmaWVkIGluIHRoZSBcImNvbmZpZ3VyYXRpb25zXCIgc2VjdGlvbiBvZiBhbmd1bGFyLmpzb24uXG4gICAgICogRWFjaCBuYW1lZCB0YXJnZXQgaXMgYWNjb21wYW5pZWQgYnkgYSBjb25maWd1cmF0aW9uIG9mIG9wdGlvbiBkZWZhdWx0cyBmb3IgdGhhdCB0YXJnZXQuXG4gICAgICovXG4gICAgY29uZmlndXJhdGlvbj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTaG93cyBhIGhlbHAgbWVzc2FnZSBmb3IgdGhpcyBjb21tYW5kIGluIHRoZSBjb25zb2xlLlxuICAgICAqL1xuICAgIGhlbHA/OiBIZWxwVW5pb247XG4gICAgLyoqXG4gICAgICogV2hlbiB0cnVlLCBzZXRzIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIHRvIHRoZSBwcm9kdWN0aW9uIHRhcmdldC5cbiAgICAgKiBBbGwgYnVpbGRzIG1ha2UgdXNlIG9mIGJ1bmRsaW5nIGFuZCBsaW1pdGVkIHRyZWUtc2hha2luZy4gQSBwcm9kdWN0aW9uIGJ1aWxkIGFsc28gcnVuc1xuICAgICAqIGxpbWl0ZWQgZGVhZCBjb2RlIGVsaW1pbmF0aW9uLlxuICAgICAqL1xuICAgIHByb2Q/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0IHRvIGJ1aWxkLiBDYW4gYmUgYW4gYXBwIG9yIGEgbGlicmFyeS5cbiAgICAgKi9cbiAgICBwcm9qZWN0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNob3dzIGEgaGVscCBtZXNzYWdlIGZvciB0aGlzIGNvbW1hbmQgaW4gdGhlIGNvbnNvbGUuXG4gKi9cbmV4cG9ydCB0eXBlIEhlbHBVbmlvbiA9IGJvb2xlYW4gfCBIZWxwRW51bTtcblxuZXhwb3J0IGVudW0gSGVscEVudW0ge1xuICAgIEhlbHBKc29uID0gXCJKU09OXCIsXG4gICAgSnNvbiA9IFwianNvblwiLFxufVxuIl19
|
package/lib/config/schema.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export interface Schema {
|
|
2
2
|
$schema?: string;
|
|
3
|
-
cli?:
|
|
3
|
+
cli?: CliOptions;
|
|
4
4
|
/**
|
|
5
5
|
* Default project name used in commands.
|
|
6
6
|
*/
|
|
@@ -13,7 +13,7 @@ export interface Schema {
|
|
|
13
13
|
schematics?: SchematicOptions;
|
|
14
14
|
version: number;
|
|
15
15
|
}
|
|
16
|
-
export interface
|
|
16
|
+
export interface CliOptions {
|
|
17
17
|
/**
|
|
18
18
|
* The default schematics collection to use.
|
|
19
19
|
*/
|
|
@@ -59,6 +59,10 @@ export interface SchematicOptions {
|
|
|
59
59
|
"@schematics/angular:service"?: SchematicsAngularService;
|
|
60
60
|
}
|
|
61
61
|
export interface SchematicsAngularClass {
|
|
62
|
+
/**
|
|
63
|
+
* When true, does not create test files.
|
|
64
|
+
*/
|
|
65
|
+
skipTests?: boolean;
|
|
62
66
|
/**
|
|
63
67
|
* Specifies if a spec file is generated.
|
|
64
68
|
*/
|
|
@@ -109,6 +113,10 @@ export interface SchematicsAngularComponent {
|
|
|
109
113
|
* Specifies if a spec file is generated.
|
|
110
114
|
*/
|
|
111
115
|
spec?: boolean;
|
|
116
|
+
/**
|
|
117
|
+
* The file extension to use for style files.
|
|
118
|
+
*/
|
|
119
|
+
style?: string;
|
|
112
120
|
/**
|
|
113
121
|
* The file extension to be used for style files.
|
|
114
122
|
*/
|
|
@@ -132,7 +140,7 @@ export declare enum ViewEncapsulation {
|
|
|
132
140
|
Emulated = "Emulated",
|
|
133
141
|
Native = "Native",
|
|
134
142
|
None = "None",
|
|
135
|
-
|
|
143
|
+
ShadowDom = "ShadowDom"
|
|
136
144
|
}
|
|
137
145
|
export interface SchematicsAngularDirective {
|
|
138
146
|
/**
|
|
@@ -159,6 +167,10 @@ export interface SchematicsAngularDirective {
|
|
|
159
167
|
* Flag to skip the module import.
|
|
160
168
|
*/
|
|
161
169
|
skipImport?: boolean;
|
|
170
|
+
/**
|
|
171
|
+
* When true, does not create test files.
|
|
172
|
+
*/
|
|
173
|
+
skipTests?: boolean;
|
|
162
174
|
/**
|
|
163
175
|
* Specifies if a spec file is generated.
|
|
164
176
|
*/
|
|
@@ -185,10 +197,6 @@ export interface SchematicsAngularModule {
|
|
|
185
197
|
* The scope for the generated routing.
|
|
186
198
|
*/
|
|
187
199
|
routingScope?: RoutingScope;
|
|
188
|
-
/**
|
|
189
|
-
* Specifies if a spec file is generated.
|
|
190
|
-
*/
|
|
191
|
-
spec?: boolean;
|
|
192
200
|
}
|
|
193
201
|
/**
|
|
194
202
|
* The scope for the generated routing.
|
|
@@ -214,6 +222,10 @@ export interface SchematicsAngularPipe {
|
|
|
214
222
|
* Allows for skipping the module import.
|
|
215
223
|
*/
|
|
216
224
|
skipImport?: boolean;
|
|
225
|
+
/**
|
|
226
|
+
* When true, does not create test files.
|
|
227
|
+
*/
|
|
228
|
+
skipTests?: boolean;
|
|
217
229
|
/**
|
|
218
230
|
* Specifies if a spec file is generated.
|
|
219
231
|
*/
|
|
@@ -224,6 +236,10 @@ export interface SchematicsAngularService {
|
|
|
224
236
|
* Flag to indicate if a directory is created.
|
|
225
237
|
*/
|
|
226
238
|
flat?: boolean;
|
|
239
|
+
/**
|
|
240
|
+
* When true, does not create test files.
|
|
241
|
+
*/
|
|
242
|
+
skipTests?: boolean;
|
|
227
243
|
/**
|
|
228
244
|
* Specifies if a spec file is generated.
|
|
229
245
|
*/
|
package/lib/config/schema.js
CHANGED
|
@@ -27,7 +27,7 @@ var ViewEncapsulation;
|
|
|
27
27
|
ViewEncapsulation["Emulated"] = "Emulated";
|
|
28
28
|
ViewEncapsulation["Native"] = "Native";
|
|
29
29
|
ViewEncapsulation["None"] = "None";
|
|
30
|
-
ViewEncapsulation["
|
|
30
|
+
ViewEncapsulation["ShadowDom"] = "ShadowDom";
|
|
31
31
|
})(ViewEncapsulation = exports.ViewEncapsulation || (exports.ViewEncapsulation = {}));
|
|
32
32
|
/**
|
|
33
33
|
* The scope for the generated routing.
|
|
@@ -37,4 +37,4 @@ var RoutingScope;
|
|
|
37
37
|
RoutingScope["Child"] = "Child";
|
|
38
38
|
RoutingScope["Root"] = "Root";
|
|
39
39
|
})(RoutingScope = exports.RoutingScope || (exports.RoutingScope = {}));
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJkaXN0LXNjaGVtYS9wYWNrYWdlcy9hbmd1bGFyL2NsaS9saWIvY29uZmlnL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsbUZBQW1GO0FBQ25GLG9GQUFvRjs7QUFvQ3BGOztHQUVHO0FBQ0gsSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3RCLCtCQUFhLENBQUE7SUFDYiw2QkFBVyxDQUFBO0lBQ1gsK0JBQWEsQ0FBQTtBQUNqQixDQUFDLEVBSlcsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUFJekI7QUFrR0Q7O0dBRUc7QUFDSCxJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDdkIsc0NBQW1CLENBQUE7SUFDbkIsb0NBQWlCLENBQUE7QUFDckIsQ0FBQyxFQUhXLGVBQWUsR0FBZix1QkFBZSxLQUFmLHVCQUFlLFFBRzFCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDekIsMENBQXFCLENBQUE7SUFDckIsc0NBQWlCLENBQUE7SUFDakIsa0NBQWEsQ0FBQTtJQUNiLDRDQUF1QixDQUFBO0FBQzNCLENBQUMsRUFMVyxpQkFBaUIsR0FBakIseUJBQWlCLEtBQWpCLHlCQUFpQixRQUs1QjtBQTRERDs7R0FFRztBQUNILElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUNwQiwrQkFBZSxDQUFBO0lBQ2YsNkJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBSFcsWUFBWSxHQUFaLG9CQUFZLEtBQVosb0JBQVksUUFHdkIiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIFRISVMgRklMRSBJUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRC4gVE8gVVBEQVRFIFRISVMgRklMRSBZT1UgTkVFRCBUTyBDSEFOR0UgVEhFXG4vLyBDT1JSRVNQT05ESU5HIEpTT04gU0NIRU1BIEZJTEUsIFRIRU4gUlVOIGRldmtpdC1hZG1pbiBidWlsZCAob3IgYmF6ZWwgYnVpbGQgLi4uKS5cblxuLy8gdHNsaW50OmRpc2FibGU6bm8tZ2xvYmFsLXRzbGludC1kaXNhYmxlXG4vLyB0c2xpbnQ6ZGlzYWJsZVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYSB7XG4gICAgJHNjaGVtYT86IHN0cmluZztcbiAgICBjbGk/OiAgICAgQ2xpT3B0aW9ucztcbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHByb2plY3QgbmFtZSB1c2VkIGluIGNvbW1hbmRzLlxuICAgICAqL1xuICAgIGRlZmF1bHRQcm9qZWN0Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggd2hlcmUgbmV3IHByb2plY3RzIHdpbGwgYmUgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBuZXdQcm9qZWN0Um9vdD86IHN0cmluZztcbiAgICBwcm9qZWN0cz86ICAgICAgIFByb2plY3RzO1xuICAgIHNjaGVtYXRpY3M/OiAgICAgU2NoZW1hdGljT3B0aW9ucztcbiAgICB2ZXJzaW9uOiAgICAgICAgIG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGlPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgZGVmYXVsdCBzY2hlbWF0aWNzIGNvbGxlY3Rpb24gdG8gdXNlLlxuICAgICAqL1xuICAgIGRlZmF1bHRDb2xsZWN0aW9uPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZnkgd2hpY2ggcGFja2FnZSBtYW5hZ2VyIHRvb2wgdG8gdXNlLlxuICAgICAqL1xuICAgIHBhY2thZ2VNYW5hZ2VyPzogUGFja2FnZU1hbmFnZXI7XG4gICAgLyoqXG4gICAgICogQ29udHJvbCBDTEkgc3BlY2lmaWMgY29uc29sZSB3YXJuaW5nc1xuICAgICAqL1xuICAgIHdhcm5pbmdzPzogV2FybmluZ3M7XG59XG5cbi8qKlxuICogU3BlY2lmeSB3aGljaCBwYWNrYWdlIG1hbmFnZXIgdG9vbCB0byB1c2UuXG4gKi9cbmV4cG9ydCBlbnVtIFBhY2thZ2VNYW5hZ2VyIHtcbiAgICBDbnBtID0gXCJjbnBtXCIsXG4gICAgTnBtID0gXCJucG1cIixcbiAgICBZYXJuID0gXCJ5YXJuXCIsXG59XG5cbi8qKlxuICogQ29udHJvbCBDTEkgc3BlY2lmaWMgY29uc29sZSB3YXJuaW5nc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFdhcm5pbmdzIHtcbiAgICAvKipcbiAgICAgKiBTaG93IGEgd2FybmluZyB3aGVuIHRoZSBUeXBlU2NyaXB0IHZlcnNpb24gaXMgaW5jb21wYXRpYmxlLlxuICAgICAqL1xuICAgIHR5cGVzY3JpcHRNaXNtYXRjaD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogU2hvdyBhIHdhcm5pbmcgd2hlbiB0aGUgZ2xvYmFsIHZlcnNpb24gaXMgbmV3ZXIgdGhhbiB0aGUgbG9jYWwgb25lLlxuICAgICAqL1xuICAgIHZlcnNpb25NaXNtYXRjaD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdHMge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYXRpY09wdGlvbnMge1xuICAgIFwiQHNjaGVtYXRpY3MvYW5ndWxhcjpjbGFzc1wiPzogICAgIFNjaGVtYXRpY3NBbmd1bGFyQ2xhc3M7XG4gICAgXCJAc2NoZW1hdGljcy9hbmd1bGFyOmNvbXBvbmVudFwiPzogU2NoZW1hdGljc0FuZ3VsYXJDb21wb25lbnQ7XG4gICAgXCJAc2NoZW1hdGljcy9hbmd1bGFyOmRpcmVjdGl2ZVwiPzogU2NoZW1hdGljc0FuZ3VsYXJEaXJlY3RpdmU7XG4gICAgXCJAc2NoZW1hdGljcy9hbmd1bGFyOm1vZHVsZVwiPzogICAgU2NoZW1hdGljc0FuZ3VsYXJNb2R1bGU7XG4gICAgXCJAc2NoZW1hdGljcy9hbmd1bGFyOnBpcGVcIj86ICAgICAgU2NoZW1hdGljc0FuZ3VsYXJQaXBlO1xuICAgIFwiQHNjaGVtYXRpY3MvYW5ndWxhcjpzZXJ2aWNlXCI/OiAgIFNjaGVtYXRpY3NBbmd1bGFyU2VydmljZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWF0aWNzQW5ndWxhckNsYXNzIHtcbiAgICAvKipcbiAgICAgKiBXaGVuIHRydWUsIGRvZXMgbm90IGNyZWF0ZSB0ZXN0IGZpbGVzLlxuICAgICAqL1xuICAgIHNraXBUZXN0cz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIGlmIGEgc3BlYyBmaWxlIGlzIGdlbmVyYXRlZC5cbiAgICAgKi9cbiAgICBzcGVjPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWF0aWNzQW5ndWxhckNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5LlxuICAgICAqL1xuICAgIGNoYW5nZURldGVjdGlvbj86IENoYW5nZURldGVjdGlvbjtcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgaWYgdGhlIGNvbXBvbmVudCBpcyBhbiBlbnRyeSBjb21wb25lbnQgb2YgZGVjbGFyaW5nIG1vZHVsZS5cbiAgICAgKi9cbiAgICBlbnRyeUNvbXBvbmVudD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIGlmIGRlY2xhcmluZyBtb2R1bGUgZXhwb3J0cyB0aGUgY29tcG9uZW50LlxuICAgICAqL1xuICAgIGV4cG9ydD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogRmxhZyB0byBpbmRpY2F0ZSBpZiBhIGRpcmVjdG9yeSBpcyBjcmVhdGVkLlxuICAgICAqL1xuICAgIGZsYXQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBpZiB0aGUgc3R5bGUgd2lsbCBiZSBpbiB0aGUgdHMgZmlsZS5cbiAgICAgKi9cbiAgICBpbmxpbmVTdHlsZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIGlmIHRoZSB0ZW1wbGF0ZSB3aWxsIGJlIGluIHRoZSB0cyBmaWxlLlxuICAgICAqL1xuICAgIGlubGluZVRlbXBsYXRlPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBBbGxvd3Mgc3BlY2lmaWNhdGlvbiBvZiB0aGUgZGVjbGFyaW5nIG1vZHVsZS5cbiAgICAgKi9cbiAgICBtb2R1bGU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIHByZWZpeCB0byBhcHBseSB0byBnZW5lcmF0ZWQgc2VsZWN0b3JzLlxuICAgICAqL1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgc2VsZWN0b3IgdG8gdXNlIGZvciB0aGUgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHNlbGVjdG9yPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEZsYWcgdG8gc2tpcCB0aGUgbW9kdWxlIGltcG9ydC5cbiAgICAgKi9cbiAgICBza2lwSW1wb3J0PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgaWYgYSBzcGVjIGZpbGUgaXMgZ2VuZXJhdGVkLlxuICAgICAqL1xuICAgIHNwZWM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBmaWxlIGV4dGVuc2lvbiB0byB1c2UgZm9yIHN0eWxlIGZpbGVzLlxuICAgICAqL1xuICAgIHN0eWxlPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBmaWxlIGV4dGVuc2lvbiB0byBiZSB1c2VkIGZvciBzdHlsZSBmaWxlcy5cbiAgICAgKi9cbiAgICBzdHlsZWV4dD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHZpZXcgZW5jYXBzdWxhdGlvbiBzdHJhdGVneS5cbiAgICAgKi9cbiAgICB2aWV3RW5jYXBzdWxhdGlvbj86IFZpZXdFbmNhcHN1bGF0aW9uO1xufVxuXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneS5cbiAqL1xuZXhwb3J0IGVudW0gQ2hhbmdlRGV0ZWN0aW9uIHtcbiAgICBEZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG4gICAgT25QdXNoID0gXCJPblB1c2hcIixcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHZpZXcgZW5jYXBzdWxhdGlvbiBzdHJhdGVneS5cbiAqL1xuZXhwb3J0IGVudW0gVmlld0VuY2Fwc3VsYXRpb24ge1xuICAgIEVtdWxhdGVkID0gXCJFbXVsYXRlZFwiLFxuICAgIE5hdGl2ZSA9IFwiTmF0aXZlXCIsXG4gICAgTm9uZSA9IFwiTm9uZVwiLFxuICAgIFNoYWRvd0RvbSA9IFwiU2hhZG93RG9tXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hdGljc0FuZ3VsYXJEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBpZiBkZWNsYXJpbmcgbW9kdWxlIGV4cG9ydHMgdGhlIGRpcmVjdGl2ZS5cbiAgICAgKi9cbiAgICBleHBvcnQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEZsYWcgdG8gaW5kaWNhdGUgaWYgYSBkaXJlY3RvcnkgaXMgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBmbGF0PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBBbGxvd3Mgc3BlY2lmaWNhdGlvbiBvZiB0aGUgZGVjbGFyaW5nIG1vZHVsZS5cbiAgICAgKi9cbiAgICBtb2R1bGU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIHByZWZpeCB0byBhcHBseSB0byBnZW5lcmF0ZWQgc2VsZWN0b3JzLlxuICAgICAqL1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgc2VsZWN0b3IgdG8gdXNlIGZvciB0aGUgZGlyZWN0aXZlLlxuICAgICAqL1xuICAgIHNlbGVjdG9yPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEZsYWcgdG8gc2tpcCB0aGUgbW9kdWxlIGltcG9ydC5cbiAgICAgKi9cbiAgICBza2lwSW1wb3J0PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGVuIHRydWUsIGRvZXMgbm90IGNyZWF0ZSB0ZXN0IGZpbGVzLlxuICAgICAqL1xuICAgIHNraXBUZXN0cz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIGlmIGEgc3BlYyBmaWxlIGlzIGdlbmVyYXRlZC5cbiAgICAgKi9cbiAgICBzcGVjPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWF0aWNzQW5ndWxhck1vZHVsZSB7XG4gICAgLyoqXG4gICAgICogRmxhZyB0byBjb250cm9sIHdoZXRoZXIgdGhlIENvbW1vbk1vZHVsZSBpcyBpbXBvcnRlZC5cbiAgICAgKi9cbiAgICBjb21tb25Nb2R1bGU/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEZsYWcgdG8gaW5kaWNhdGUgaWYgYSBkaXJlY3RvcnkgaXMgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBmbGF0PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBBbGxvd3Mgc3BlY2lmaWNhdGlvbiBvZiB0aGUgZGVjbGFyaW5nIG1vZHVsZS5cbiAgICAgKi9cbiAgICBtb2R1bGU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgcm91dGluZyBtb2R1bGUuXG4gICAgICovXG4gICAgcm91dGluZz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIHNjb3BlIGZvciB0aGUgZ2VuZXJhdGVkIHJvdXRpbmcuXG4gICAgICovXG4gICAgcm91dGluZ1Njb3BlPzogUm91dGluZ1Njb3BlO1xufVxuXG4vKipcbiAqIFRoZSBzY29wZSBmb3IgdGhlIGdlbmVyYXRlZCByb3V0aW5nLlxuICovXG5leHBvcnQgZW51bSBSb3V0aW5nU2NvcGUge1xuICAgIENoaWxkID0gXCJDaGlsZFwiLFxuICAgIFJvb3QgPSBcIlJvb3RcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWF0aWNzQW5ndWxhclBpcGUge1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBpZiBkZWNsYXJpbmcgbW9kdWxlIGV4cG9ydHMgdGhlIHBpcGUuXG4gICAgICovXG4gICAgZXhwb3J0PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBGbGFnIHRvIGluZGljYXRlIGlmIGEgZGlyZWN0b3J5IGlzIGNyZWF0ZWQuXG4gICAgICovXG4gICAgZmxhdD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQWxsb3dzIHNwZWNpZmljYXRpb24gb2YgdGhlIGRlY2xhcmluZyBtb2R1bGUuXG4gICAgICovXG4gICAgbW9kdWxlPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEFsbG93cyBmb3Igc2tpcHBpbmcgdGhlIG1vZHVsZSBpbXBvcnQuXG4gICAgICovXG4gICAgc2tpcEltcG9ydD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogV2hlbiB0cnVlLCBkb2VzIG5vdCBjcmVhdGUgdGVzdCBmaWxlcy5cbiAgICAgKi9cbiAgICBza2lwVGVzdHM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBpZiBhIHNwZWMgZmlsZSBpcyBnZW5lcmF0ZWQuXG4gICAgICovXG4gICAgc3BlYz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hdGljc0FuZ3VsYXJTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBGbGFnIHRvIGluZGljYXRlIGlmIGEgZGlyZWN0b3J5IGlzIGNyZWF0ZWQuXG4gICAgICovXG4gICAgZmxhdD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogV2hlbiB0cnVlLCBkb2VzIG5vdCBjcmVhdGUgdGVzdCBmaWxlcy5cbiAgICAgKi9cbiAgICBza2lwVGVzdHM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBpZiBhIHNwZWMgZmlsZSBpcyBnZW5lcmF0ZWQuXG4gICAgICovXG4gICAgc3BlYz86IGJvb2xlYW47XG59XG4iXX0=
|
package/lib/config/schema.json
CHANGED
|
@@ -139,6 +139,11 @@
|
|
|
139
139
|
"type": "string",
|
|
140
140
|
"default": "css"
|
|
141
141
|
},
|
|
142
|
+
"style": {
|
|
143
|
+
"description": "The file extension to use for style files.",
|
|
144
|
+
"type": "string",
|
|
145
|
+
"default": "css"
|
|
146
|
+
},
|
|
142
147
|
"viewEncapsulation": {
|
|
143
148
|
"description": "Specifies the view encapsulation strategy.",
|
|
144
149
|
"enum": ["Emulated", "Native", "None", "ShadowDom"],
|
|
@@ -186,6 +191,11 @@
|
|
|
186
191
|
"type": "boolean",
|
|
187
192
|
"description": "Specifies if a spec file is generated.",
|
|
188
193
|
"default": true
|
|
194
|
+
},
|
|
195
|
+
"skipTests": {
|
|
196
|
+
"type": "boolean",
|
|
197
|
+
"description": "When true, does not create test files.",
|
|
198
|
+
"default": false
|
|
189
199
|
}
|
|
190
200
|
}
|
|
191
201
|
},
|
|
@@ -203,11 +213,6 @@
|
|
|
203
213
|
"description": "The scope for the generated routing.",
|
|
204
214
|
"default": "Child"
|
|
205
215
|
},
|
|
206
|
-
"spec": {
|
|
207
|
-
"type": "boolean",
|
|
208
|
-
"description": "Specifies if a spec file is generated.",
|
|
209
|
-
"default": true
|
|
210
|
-
},
|
|
211
216
|
"flat": {
|
|
212
217
|
"type": "boolean",
|
|
213
218
|
"description": "Flag to indicate if a directory is created.",
|
|
@@ -236,8 +241,13 @@
|
|
|
236
241
|
},
|
|
237
242
|
"spec": {
|
|
238
243
|
"type": "boolean",
|
|
239
|
-
"
|
|
240
|
-
"
|
|
244
|
+
"description": "Specifies if a spec file is generated.",
|
|
245
|
+
"default": true
|
|
246
|
+
},
|
|
247
|
+
"skipTests": {
|
|
248
|
+
"type": "boolean",
|
|
249
|
+
"description": "When true, does not create test files.",
|
|
250
|
+
"default": false
|
|
241
251
|
}
|
|
242
252
|
}
|
|
243
253
|
},
|
|
@@ -251,8 +261,13 @@
|
|
|
251
261
|
},
|
|
252
262
|
"spec": {
|
|
253
263
|
"type": "boolean",
|
|
254
|
-
"
|
|
255
|
-
"
|
|
264
|
+
"description": "Specifies if a spec file is generated.",
|
|
265
|
+
"default": true
|
|
266
|
+
},
|
|
267
|
+
"skipTests": {
|
|
268
|
+
"type": "boolean",
|
|
269
|
+
"description": "When true, does not create test files.",
|
|
270
|
+
"default": false
|
|
256
271
|
},
|
|
257
272
|
"skipImport": {
|
|
258
273
|
"type": "boolean",
|
|
@@ -277,8 +292,13 @@
|
|
|
277
292
|
"properties": {
|
|
278
293
|
"spec": {
|
|
279
294
|
"type": "boolean",
|
|
280
|
-
"
|
|
281
|
-
"
|
|
295
|
+
"description": "Specifies if a spec file is generated.",
|
|
296
|
+
"default": true
|
|
297
|
+
},
|
|
298
|
+
"skipTests": {
|
|
299
|
+
"type": "boolean",
|
|
300
|
+
"description": "When true, does not create test files.",
|
|
301
|
+
"default": false
|
|
282
302
|
}
|
|
283
303
|
}
|
|
284
304
|
}
|
|
@@ -1043,18 +1063,18 @@
|
|
|
1043
1063
|
},
|
|
1044
1064
|
"open": {
|
|
1045
1065
|
"type": "boolean",
|
|
1046
|
-
"description": "
|
|
1066
|
+
"description": "When true, open the live-reload URL in default browser.",
|
|
1047
1067
|
"default": false,
|
|
1048
1068
|
"alias": "o"
|
|
1049
1069
|
},
|
|
1050
1070
|
"liveReload": {
|
|
1051
1071
|
"type": "boolean",
|
|
1052
|
-
"description": "
|
|
1072
|
+
"description": "When true, reload the page on change using live-reload.",
|
|
1053
1073
|
"default": true
|
|
1054
1074
|
},
|
|
1055
1075
|
"publicHost": {
|
|
1056
1076
|
"type": "string",
|
|
1057
|
-
"description": "
|
|
1077
|
+
"description": "The URL that the browser client (or live-reload client, if enabled) should use to connect to the development server. Use for a complex dev server setup, such as one with reverse proxies."
|
|
1058
1078
|
},
|
|
1059
1079
|
"servePath": {
|
|
1060
1080
|
"type": "string",
|
|
@@ -1062,43 +1082,43 @@
|
|
|
1062
1082
|
},
|
|
1063
1083
|
"disableHostCheck": {
|
|
1064
1084
|
"type": "boolean",
|
|
1065
|
-
"description": "
|
|
1085
|
+
"description": "When true, don't verify that connected clients are part of allowed hosts.",
|
|
1066
1086
|
"default": false
|
|
1067
1087
|
},
|
|
1068
1088
|
"hmr": {
|
|
1069
1089
|
"type": "boolean",
|
|
1070
|
-
"description": "
|
|
1090
|
+
"description": "When true, enable hot module replacement.",
|
|
1071
1091
|
"default": false
|
|
1072
1092
|
},
|
|
1073
1093
|
"watch": {
|
|
1074
1094
|
"type": "boolean",
|
|
1075
|
-
"description": "
|
|
1095
|
+
"description": "When true, rebuild on change.",
|
|
1076
1096
|
"default": true
|
|
1077
1097
|
},
|
|
1078
1098
|
"hmrWarning": {
|
|
1079
1099
|
"type": "boolean",
|
|
1080
|
-
"description": "
|
|
1100
|
+
"description": "When true, show a warning when the --hmr option is enabled.",
|
|
1081
1101
|
"default": true
|
|
1082
1102
|
},
|
|
1083
1103
|
"servePathDefaultWarning": {
|
|
1084
1104
|
"type": "boolean",
|
|
1085
|
-
"description": "
|
|
1105
|
+
"description": "When true, show a warning when deploy-url/base-href use unsupported serve path values.",
|
|
1086
1106
|
"default": true
|
|
1087
1107
|
},
|
|
1088
1108
|
"optimization": {
|
|
1089
|
-
"description": "
|
|
1109
|
+
"description": "Enable optimization of the build output.",
|
|
1090
1110
|
"oneOf": [
|
|
1091
1111
|
{
|
|
1092
1112
|
"type": "object",
|
|
1093
1113
|
"properties": {
|
|
1094
1114
|
"scripts": {
|
|
1095
1115
|
"type": "boolean",
|
|
1096
|
-
"description": "
|
|
1116
|
+
"description": "When true, enable optimization of the scripts output.",
|
|
1097
1117
|
"default": true
|
|
1098
1118
|
},
|
|
1099
1119
|
"styles": {
|
|
1100
1120
|
"type": "boolean",
|
|
1101
|
-
"description": "
|
|
1121
|
+
"description": "When true, enable optimization of the styles output.",
|
|
1102
1122
|
"default": true
|
|
1103
1123
|
}
|
|
1104
1124
|
},
|
|
@@ -1111,10 +1131,10 @@
|
|
|
1111
1131
|
},
|
|
1112
1132
|
"aot": {
|
|
1113
1133
|
"type": "boolean",
|
|
1114
|
-
"description": "Build using
|
|
1134
|
+
"description": "Build using ahead-of-time compilation."
|
|
1115
1135
|
},
|
|
1116
1136
|
"sourceMap": {
|
|
1117
|
-
"description": "
|
|
1137
|
+
"description": "When true, output sourcemaps.",
|
|
1118
1138
|
"default": true,
|
|
1119
1139
|
"oneOf": [
|
|
1120
1140
|
{
|
|
@@ -1122,17 +1142,17 @@
|
|
|
1122
1142
|
"properties": {
|
|
1123
1143
|
"scripts": {
|
|
1124
1144
|
"type": "boolean",
|
|
1125
|
-
"description": "
|
|
1145
|
+
"description": "When true, output sourcemaps for all scripts.",
|
|
1126
1146
|
"default": true
|
|
1127
1147
|
},
|
|
1128
1148
|
"styles": {
|
|
1129
1149
|
"type": "boolean",
|
|
1130
|
-
"description": "
|
|
1150
|
+
"description": "When true, output sourcemaps for all styles.",
|
|
1131
1151
|
"default": true
|
|
1132
1152
|
},
|
|
1133
1153
|
"vendor": {
|
|
1134
1154
|
"type": "boolean",
|
|
1135
|
-
"description": "
|
|
1155
|
+
"description": "When true, resolve vendor packages sourcemaps.",
|
|
1136
1156
|
"default": false
|
|
1137
1157
|
}
|
|
1138
1158
|
},
|
|
@@ -1145,20 +1165,20 @@
|
|
|
1145
1165
|
},
|
|
1146
1166
|
"vendorSourceMap": {
|
|
1147
1167
|
"type": "boolean",
|
|
1148
|
-
"description": "
|
|
1168
|
+
"description": "When true, resolve vendor packages sourcemaps.",
|
|
1149
1169
|
"default": false
|
|
1150
1170
|
},
|
|
1151
1171
|
"evalSourceMap": {
|
|
1152
1172
|
"type": "boolean",
|
|
1153
|
-
"description": "
|
|
1173
|
+
"description": "When true, output in-file eval sourcemaps."
|
|
1154
1174
|
},
|
|
1155
1175
|
"vendorChunk": {
|
|
1156
1176
|
"type": "boolean",
|
|
1157
|
-
"description": "
|
|
1177
|
+
"description": "When true, use a separate bundle containing only vendor libraries."
|
|
1158
1178
|
},
|
|
1159
1179
|
"commonChunk": {
|
|
1160
1180
|
"type": "boolean",
|
|
1161
|
-
"description": "
|
|
1181
|
+
"description": "When true, use a separate bundle containing code used across multiple bundles."
|
|
1162
1182
|
},
|
|
1163
1183
|
"baseHref": {
|
|
1164
1184
|
"type": "string",
|
|
@@ -1170,11 +1190,11 @@
|
|
|
1170
1190
|
},
|
|
1171
1191
|
"verbose": {
|
|
1172
1192
|
"type": "boolean",
|
|
1173
|
-
"description": "
|
|
1193
|
+
"description": "When true, add more details to output logging."
|
|
1174
1194
|
},
|
|
1175
1195
|
"progress": {
|
|
1176
1196
|
"type": "boolean",
|
|
1177
|
-
"description": "
|
|
1197
|
+
"description": "When true, log progress to the console while building."
|
|
1178
1198
|
}
|
|
1179
1199
|
},
|
|
1180
1200
|
"additionalProperties": false
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
|
-
import { Architect, TargetSpecifier } from '@angular-devkit/architect';
|
|
8
|
+
import { Architect, BuilderConfiguration, TargetSpecifier } from '@angular-devkit/architect';
|
|
9
9
|
import { experimental, json } from '@angular-devkit/core';
|
|
10
10
|
import { BaseCommandOptions, Command } from './command';
|
|
11
11
|
import { Arguments } from './interface';
|
|
@@ -24,7 +24,8 @@ export declare abstract class ArchitectCommand<T extends ArchitectCommandOptions
|
|
|
24
24
|
target: string | undefined;
|
|
25
25
|
initialize(options: ArchitectCommandOptions & Arguments): Promise<void>;
|
|
26
26
|
run(options: ArchitectCommandOptions & Arguments): Promise<number>;
|
|
27
|
-
protected
|
|
27
|
+
protected runBepTarget<T>(command: string, configuration: BuilderConfiguration<T>, buildEventLog: string): Promise<number>;
|
|
28
|
+
protected runSingleTarget(targetSpec: TargetSpecifier, targetOptions: string[], commandOptions: ArchitectCommandOptions & Arguments): Promise<number>;
|
|
28
29
|
protected runArchitectTarget(options: ArchitectCommandOptions & Arguments): Promise<number>;
|
|
29
30
|
private getProjectNamesByTarget;
|
|
30
31
|
private _loadWorkspaceAndArchitect;
|
|
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
const architect_1 = require("@angular-devkit/architect");
|
|
11
11
|
const core_1 = require("@angular-devkit/core");
|
|
12
12
|
const node_1 = require("@angular-devkit/core/node");
|
|
13
|
+
const bep_1 = require("../utilities/bep");
|
|
13
14
|
const json_schema_1 = require("../utilities/json-schema");
|
|
14
15
|
const command_1 = require("./command");
|
|
15
16
|
const parser_1 = require("./parser");
|
|
@@ -132,14 +133,34 @@ class ArchitectCommand extends command_1.Command {
|
|
|
132
133
|
async run(options) {
|
|
133
134
|
return await this.runArchitectTarget(options);
|
|
134
135
|
}
|
|
135
|
-
async
|
|
136
|
+
async runBepTarget(command, configuration, buildEventLog) {
|
|
137
|
+
const bep = new bep_1.BepJsonWriter(buildEventLog);
|
|
138
|
+
// Send start
|
|
139
|
+
bep.writeBuildStarted(command);
|
|
140
|
+
let last = 1;
|
|
141
|
+
let rebuild = false;
|
|
142
|
+
await this._architect.run(configuration, { logger: this.logger }).forEach(event => {
|
|
143
|
+
last = event.success ? 0 : 1;
|
|
144
|
+
if (rebuild) {
|
|
145
|
+
// NOTE: This will have an incorrect timestamp but this cannot be fixed
|
|
146
|
+
// until builders report additional status events
|
|
147
|
+
bep.writeBuildStarted(command);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
rebuild = true;
|
|
151
|
+
}
|
|
152
|
+
bep.writeBuildFinished(last);
|
|
153
|
+
});
|
|
154
|
+
return last;
|
|
155
|
+
}
|
|
156
|
+
async runSingleTarget(targetSpec, targetOptions, commandOptions) {
|
|
136
157
|
// We need to build the builderSpec twice because architect does not understand
|
|
137
158
|
// overrides separately (getting the configuration builds the whole project, including
|
|
138
159
|
// overrides).
|
|
139
160
|
const builderConf = this._architect.getBuilderConfiguration(targetSpec);
|
|
140
161
|
const builderDesc = await this._architect.getBuilderDescription(builderConf).toPromise();
|
|
141
162
|
const targetOptionArray = await json_schema_1.parseJsonSchemaToOptions(this._registry, builderDesc.schema);
|
|
142
|
-
const overrides = parser_1.parseArguments(
|
|
163
|
+
const overrides = parser_1.parseArguments(targetOptions, targetOptionArray, this.logger);
|
|
143
164
|
if (overrides['--']) {
|
|
144
165
|
(overrides['--'] || []).forEach(additional => {
|
|
145
166
|
this.logger.fatal(`Unknown option: '${additional.split(/=/)[0]}'`);
|
|
@@ -151,8 +172,17 @@ class ArchitectCommand extends command_1.Command {
|
|
|
151
172
|
logger: this.logger,
|
|
152
173
|
targetSpecifier: targetSpec,
|
|
153
174
|
};
|
|
154
|
-
|
|
155
|
-
|
|
175
|
+
if (commandOptions.buildEventLog && ['build', 'serve'].includes(this.description.name)) {
|
|
176
|
+
// The build/serve commands supports BEP messaging
|
|
177
|
+
this.logger.warn('BEP support is experimental and subject to change.');
|
|
178
|
+
return this.runBepTarget(this.description.name, realBuilderConf, commandOptions.buildEventLog);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
const result = await this._architect
|
|
182
|
+
.run(realBuilderConf, builderContext)
|
|
183
|
+
.toPromise();
|
|
184
|
+
return result.success ? 0 : 1;
|
|
185
|
+
}
|
|
156
186
|
}
|
|
157
187
|
async runArchitectTarget(options) {
|
|
158
188
|
const extra = options['--'] || [];
|
|
@@ -163,12 +193,12 @@ class ArchitectCommand extends command_1.Command {
|
|
|
163
193
|
// Running them in parallel would jumble the log messages.
|
|
164
194
|
let result = 0;
|
|
165
195
|
for (const project of this.getProjectNamesByTarget(this.target)) {
|
|
166
|
-
result |= await this.runSingleTarget(Object.assign({}, targetSpec, { project }), extra);
|
|
196
|
+
result |= await this.runSingleTarget(Object.assign({}, targetSpec, { project }), extra, options);
|
|
167
197
|
}
|
|
168
198
|
return result;
|
|
169
199
|
}
|
|
170
200
|
else {
|
|
171
|
-
return await this.runSingleTarget(targetSpec, extra);
|
|
201
|
+
return await this.runSingleTarget(targetSpec, extra, options);
|
|
172
202
|
}
|
|
173
203
|
}
|
|
174
204
|
catch (e) {
|
|
@@ -250,4 +280,4 @@ class ArchitectCommand extends command_1.Command {
|
|
|
250
280
|
}
|
|
251
281
|
}
|
|
252
282
|
exports.ArchitectCommand = ArchitectCommand;
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl0ZWN0LWNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXIvY2xpL21vZGVscy9hcmNoaXRlY3QtY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7R0FNRztBQUNILHlEQUltQztBQUNuQywrQ0FBd0U7QUFDeEUsb0RBQWdGO0FBQ2hGLDBEQUFvRTtBQUNwRSx1Q0FBd0Q7QUFFeEQscUNBQTBDO0FBQzFDLHlEQUFxRDtBQVNyRCxNQUFzQixnQkFFcEIsU0FBUSxpQkFBZ0M7SUFGMUM7O1FBR1UsVUFBSyxHQUFHLElBQUkscUJBQWMsRUFBRSxDQUFDO1FBS3JDLHFEQUFxRDtRQUMzQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztJQThRaEMsQ0FBQztJQTFRUSxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQTRDO1FBQ2xFLE1BQU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksV0FBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUU3RSxNQUFNLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDaEIsK0NBQStDO2dCQUMvQyxPQUFPO2FBQ1I7WUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO2dCQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxD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TSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVwRSxJQUFJLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ2hDLGFBQWEsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO2FBQzlDO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3JCLGFBQWEsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1lBQzdDLElBQUksQ0FBQyxhQUFhLElBQUksY0FBYyxDQUFDLElBQUksRUFBRTtnQkFDekMsYUFBYSxHQUFHLFlBQVksQ0FBQzthQUM5QjtTQUNGO1FBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sR0FBRyxFQUFFLENBQUM7U0FDZDtRQUNELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2I7UUFFRCxPQUFPO1lBQ0wsT0FBTztZQUNQLGFBQWE7WUFDYixNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXZSRCw0Q0F1UkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge1xuICBBcmNoaXRlY3QsXG4gIEJ1aWxkZXJDb250ZXh0LFxuICBUYXJnZXRTcGVjaWZpZXIsXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9hcmNoaXRlY3QnO1xuaW1wb3J0IHsgZXhwZXJpbWVudGFsLCBqc29uLCBzY2hlbWEsIHRhZ3MgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQgeyBOb2RlSnNTeW5jSG9zdCwgY3JlYXRlQ29uc29sZUxvZ2dlciB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlL25vZGUnO1xuaW1wb3J0IHsgcGFyc2VKc29uU2NoZW1hVG9PcHRpb25zIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IEJhc2VDb21tYW5kT3B0aW9ucywgQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZCc7XG5pbXBvcnQgeyBBcmd1bWVudHMsIE9wdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IHBhcnNlQXJndW1lbnRzIH0gZnJvbSAnLi9wYXJzZXInO1xuaW1wb3J0IHsgV29ya3NwYWNlTG9hZGVyIH0gZnJvbSAnLi93b3Jrc3BhY2UtbG9hZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBBcmNoaXRlY3RDb21tYW5kT3B0aW9ucyBleHRlbmRzIEJhc2VDb21tYW5kT3B0aW9ucyB7XG4gIHByb2plY3Q/OiBzdHJpbmc7XG4gIGNvbmZpZ3VyYXRpb24/OiBzdHJpbmc7XG4gIHByb2Q/OiBib29sZWFuO1xuICB0YXJnZXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcmNoaXRlY3RDb21tYW5kPFxuICBUIGV4dGVuZHMgQXJjaGl0ZWN0Q29tbWFuZE9wdGlvbnMgPSBBcmNoaXRlY3RDb21tYW5kT3B0aW9ucyxcbj4gZXh0ZW5kcyBDb21tYW5kPEFyY2hpdGVjdENvbW1hbmRPcHRpb25zPiB7XG4gIHByaXZhdGUgX2hvc3QgPSBuZXcgTm9kZUpzU3luY0hvc3QoKTtcbiAgcHJvdGVjdGVkIF9hcmNoaXRlY3Q6IEFyY2hpdGVjdDtcbiAgcHJvdGVjdGVkIF93b3Jrc3BhY2U6IGV4cGVyaW1lbnRhbC53b3Jrc3BhY2UuV29ya3NwYWNlO1xuICBwcm90ZWN0ZWQgX3JlZ2lzdHJ5OiBqc29uLnNjaGVtYS5TY2hlbWFSZWdpc3RyeTtcblxuICAvLyBJZiB0aGlzIGNvbW1hbmQgc3VwcG9ydHMgcnVubmluZyBtdWx0aXBsZSB0YXJnZXRzLlxuICBwcm90ZWN0ZWQgbXVsdGlUYXJnZXQgPSBmYWxzZTtcblxuICB0YXJnZXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZShvcHRpb25zOiBBcmNoaXRlY3RDb21tYW5kT3B0aW9ucyAmIEFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLmluaXRpYWxpemUob3B0aW9ucyk7XG5cbiAgICB0aGlzLl9yZWdpc3RyeSA9IG5ldyBqc29uLnNjaGVtYS5Db3JlU2NoZW1hUmVnaXN0cnkoKTtcbiAgICB0aGlzLl9yZWdpc3RyeS5hZGRQb3N0VHJhbnNmb3JtKGpzb24uc2NoZW1hLnRyYW5zZm9ybXMuYWRkVW5kZWZpbmVkRGVmYXVsdHMpO1xuXG4gICAgYXdhaXQgdGhpcy5fbG9hZFdvcmtzcGFjZUFuZEFyY2hpdGVjdCgpO1xuXG4gICAgaWYgKCF0aGlzLnRhcmdldCkge1xuICAgICAgaWYgKG9wdGlvbnMuaGVscCkge1xuICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIHdoZXJlIHdlIGp1c3QgcmV0dXJuLlxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNwZWNpZmllciA9IHRoaXMuX21ha2VUYXJnZXRTcGVjaWZpZXIob3B0aW9ucyk7XG4gICAgICBpZiAoIXNwZWNpZmllci5wcm9qZWN0IHx8ICFzcGVjaWZpZXIudGFyZ2V0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGRldGVybWluZSBwcm9qZWN0IG9yIHRhcmdldCBmb3IgY29tbWFuZC4nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbW1hbmRMZWZ0b3ZlcnMgPSBvcHRpb25zWyctLSddO1xuICAgIGxldCBwcm9qZWN0TmFtZSA9IG9wdGlvbnMucHJvamVjdDtcbiAgICBjb25zdCB0YXJnZXRQcm9qZWN0TmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHRoaXMuX3dvcmtzcGFjZS5saXN0UHJvamVjdE5hbWVzKCkpIHtcbiAgICAgIGlmICh0aGlzLl9hcmNoaXRlY3QubGlzdFByb2plY3RUYXJnZXRzKG5hbWUpLmluY2x1ZGVzKHRoaXMudGFyZ2V0KSkge1xuICAgICAgICB0YXJnZXRQcm9qZWN0TmFtZXMucHVzaChuYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0UHJvamVjdE5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBwcm9qZWN0cyBzdXBwb3J0IHRoZSAnJHt0aGlzLnRhcmdldH0nIHRhcmdldC5gKTtcbiAgICB9XG5cbiAgICBpZiAocHJvamVjdE5hbWUgJiYgIXRhcmdldFByb2plY3ROYW1lcy5pbmNsdWRlcyhwcm9qZWN0TmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvamVjdCAnJHtwcm9qZWN0TmFtZX0nIGRvZXMgbm90IHN1cHBvcnQgdGhlICcke3RoaXMudGFyZ2V0fScgdGFyZ2V0LmApO1xuICAgIH1cblxuICAgIGlmICghcHJvamVjdE5hbWUgJiYgY29tbWFuZExlZnRvdmVycyAmJiBjb21tYW5kTGVmdG92ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXJOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgY29uc3QgbGVmdG92ZXJNYXAgPSBuZXcgTWFwPHN0cmluZywgeyBvcHRpb25EZWZzOiBPcHRpb25bXSwgcGFyc2VkT3B0aW9uczogQXJndW1lbnRzIH0+KCk7XG4gICAgICBsZXQgcG90ZW50aWFsUHJvamVjdE5hbWVzID0gbmV3IFNldDxzdHJpbmc+KHRhcmdldFByb2plY3ROYW1lcyk7XG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgdGFyZ2V0UHJvamVjdE5hbWVzKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXJDb25maWcgPSB0aGlzLl9hcmNoaXRlY3QuZ2V0QnVpbGRlckNvbmZpZ3VyYXRpb24oe1xuICAgICAgICAgIHByb2plY3Q6IG5hbWUsXG4gICAgICAgICAgdGFyZ2V0OiB0aGlzLnRhcmdldCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlUYXJnZXQpIHtcbiAgICAgICAgICBidWlsZGVyTmFtZXMuYWRkKGJ1aWxkZXJDb25maWcuYnVpbGRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidWlsZGVyRGVzYyA9IGF3YWl0IHRoaXMuX2FyY2hpdGVjdC5nZXRCdWlsZGVyRGVzY3JpcHRpb24oYnVpbGRlckNvbmZpZykudG9Qcm9taXNlKCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbkRlZnMgPSBhd2FpdCBwYXJzZUpzb25TY2hlbWFUb09wdGlvbnModGhpcy5fcmVnaXN0cnksIGJ1aWxkZXJEZXNjLnNjaGVtYSk7XG4gICAgICAgIGNvbnN0IHBhcnNlZE9wdGlvbnMgPSBwYXJzZUFyZ3VtZW50cyhbLi4uY29tbWFuZExlZnRvdmVyc10sIG9wdGlvbkRlZnMpO1xuICAgICAgICBjb25zdCBidWlsZGVyTGVmdG92ZXJzID0gcGFyc2VkT3B0aW9uc1snLS0nXSB8fCBbXTtcbiAgICAgICAgbGVmdG92ZXJNYXAuc2V0KG5hbWUsIHsgb3B0aW9uRGVmcywgcGFyc2VkT3B0aW9ucyB9KTtcblxuICAgICAgICBwb3RlbnRpYWxQcm9qZWN0TmFtZXMgPSBuZXcgU2V0KGJ1aWxkZXJMZWZ0b3ZlcnMuZmlsdGVyKHggPT4gcG90ZW50aWFsUHJvamVjdE5hbWVzLmhhcyh4KSkpO1xuICAgICAgfVxuXG4gICAgICBpZiAocG90ZW50aWFsUHJvamVjdE5hbWVzLnNpemUgPT09IDEpIHtcbiAgICAgICAgcHJvamVjdE5hbWUgPSBbLi4ucG90ZW50aWFsUHJvamVjdE5hbWVzXVswXTtcblxuICAgICAgICAvLyByZW1vdmUgdGhlIHByb2plY3QgbmFtZSBmcm9tIHRoZSBsZWZ0b3ZlcnNcbiAgICAgICAgY29uc3Qgb3B0aW9uSW5mbyA9IGxlZnRvdmVyTWFwLmdldChwcm9qZWN0TmFtZSk7XG4gICAgICAgIGlmIChvcHRpb25JbmZvKSB7XG4gICAgICAgICAgY29uc3QgbG9jYXRpb25zID0gW107XG4gICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgIHdoaWxlIChpIDwgY29tbWFuZExlZnRvdmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGkgPSBjb21tYW5kTGVmdG92ZXJzLmluZGV4T2YocHJvamVjdE5hbWUsIGkgKyAxKTtcbiAgICAgICAgICAgIGlmIChpID09PSAtMSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2F0aW9ucy5wdXNoKGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgb3B0aW9uSW5mby5wYXJzZWRPcHRpb25zWyctLSddO1xuICAgICAgICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCB0ZW1wTGVmdG92ZXJzID0gWy4uLmNvbW1hbmRMZWZ0b3ZlcnNdO1xuICAgICAgICAgICAgdGVtcExlZnRvdmVycy5zcGxpY2UobG9jYXRpb24sIDEpO1xuICAgICAgICAgICAgY29uc3QgdGVtcEFyZ3MgPSBwYXJzZUFyZ3VtZW50cyhbLi4udGVtcExlZnRvdmVyc10sIG9wdGlvbkluZm8ub3B0aW9uRGVmcyk7XG4gICAgICAgICAgICBkZWxldGUgdGVtcEFyZ3NbJy0tJ107XG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkob3B0aW9uSW5mby5wYXJzZWRPcHRpb25zKSA9PT0gSlNPTi5zdHJpbmdpZnkodGVtcEFyZ3MpKSB7XG4gICAgICAgICAgICAgIG9wdGlvbnNbJy0tJ10gPSB0ZW1wTGVmdG92ZXJzO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFwcm9qZWN0TmFtZSAmJiB0aGlzLm11bHRpVGFyZ2V0ICYmIGJ1aWxkZXJOYW1lcy5zaXplID4gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGFncy5vbmVMaW5lYFxuICAgICAgICAgIEFyY2hpdGVjdCBjb21tYW5kcyB3aXRoIGNvbW1hbmQgbGluZSBvdmVycmlkZXMgY2Fubm90IHRhcmdldCBkaWZmZXJlbnQgYnVpbGRlcnMuIFRoZVxuICAgICAgICAgICcke3RoaXMudGFyZ2V0fScgdGFyZ2V0IHdvdWxkIHJ1biBvbiBwcm9qZWN0cyAke3RhcmdldFByb2plY3ROYW1lcy5qb2luKCl9IHdoaWNoIGhhdmUgdGhlXG4gICAgICAgICAgZm9sbG93aW5nIGJ1aWxkZXJzOiAkeydcXG4gICcgKyBbLi4uYnVpbGRlck5hbWVzXS5qb2luKCdcXG4gICcpfVxuICAgICAgICBgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXByb2plY3ROYW1lICYmICF0aGlzLm11bHRpVGFyZ2V0KSB7XG4gICAgICBjb25zdCBkZWZhdWx0UHJvamVjdE5hbWUgPSB0aGlzLl93b3Jrc3BhY2UuZ2V0RGVmYXVsdFByb2plY3ROYW1lKCk7XG4gICAgICBpZiAodGFyZ2V0UHJvamVjdE5hbWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBwcm9qZWN0TmFtZSA9IHRhcmdldFByb2plY3ROYW1lc1swXTtcbiAgICAgIH0gZWxzZSBpZiAoZGVmYXVsdFByb2plY3ROYW1lICYmIHRhcmdldFByb2plY3ROYW1lcy5pbmNsdWRlcyhkZWZhdWx0UHJvamVjdE5hbWUpKSB7XG4gICAgICAgIHByb2plY3ROYW1lID0gZGVmYXVsdFByb2plY3ROYW1lO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmhlbHApIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBqdXN0IHJldHVybi5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGV0ZXJtaW5lIHByb2plY3Qgb3IgdGFyZ2V0IGZvciBjb21tYW5kLicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIG9wdGlvbnMucHJvamVjdCA9IHByb2plY3ROYW1lO1xuXG4gICAgY29uc3QgYnVpbGRlckNvbmYgPSB0aGlzLl9hcmNoaXRlY3QuZ2V0QnVpbGRlckNvbmZpZ3VyYXRpb24oe1xuICAgICAgcHJvamVjdDogcHJvamVjdE5hbWUgfHwgKHRhcmdldFByb2plY3ROYW1lcy5sZW5ndGggPiAwID8gdGFyZ2V0UHJvamVjdE5hbWVzWzBdIDogJycpLFxuICAgICAgdGFyZ2V0OiB0aGlzLnRhcmdldCxcbiAgICB9KTtcbiAgICBjb25zdCBidWlsZGVyRGVzYyA9IGF3YWl0IHRoaXMuX2FyY2hpdGVjdC5nZXRCdWlsZGVyRGVzY3JpcHRpb24oYnVpbGRlckNvbmYpLnRvUHJvbWlzZSgpO1xuXG4gICAgdGhpcy5kZXNjcmlwdGlvbi5vcHRpb25zLnB1c2goLi4uKFxuICAgICAgYXdhaXQgcGFyc2VKc29uU2NoZW1hVG9PcHRpb25zKHRoaXMuX3JlZ2lzdHJ5LCBidWlsZGVyRGVzYy5zY2hlbWEpXG4gICAgKSk7XG4gIH1cblxuICBhc3luYyBydW4ob3B0aW9uczogQXJjaGl0ZWN0Q29tbWFuZE9wdGlvbnMgJiBBcmd1bWVudHMpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ydW5BcmNoaXRlY3RUYXJnZXQob3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcnVuU2luZ2xlVGFyZ2V0KHRhcmdldFNwZWM6IFRhcmdldFNwZWNpZmllciwgb3B0aW9uczogc3RyaW5nW10pIHtcbiAgICAvLyBXZSBuZWVkIHRvIGJ1aWxkIHRoZSBidWlsZGVyU3BlYyB0d2ljZSBiZWNhdXNlIGFyY2hpdGVjdCBkb2VzIG5vdCB1bmRlcnN0YW5kXG4gICAgLy8gb3ZlcnJpZGVzIHNlcGFyYXRlbHkgKGdldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gYnVpbGRzIHRoZSB3aG9sZSBwcm9qZWN0LCBpbmNsdWRpbmdcbiAgICAvLyBvdmVycmlkZXMpLlxuICAgIGNvbnN0IGJ1aWxkZXJDb25mID0gdGhpcy5fYXJjaGl0ZWN0LmdldEJ1aWxkZXJDb25maWd1cmF0aW9uKHRhcmdldFNwZWMpO1xuICAgIGNvbnN0IGJ1aWxkZXJEZXNjID0gYXdhaXQgdGhpcy5fYXJjaGl0ZWN0LmdldEJ1aWxkZXJEZXNjcmlwdGlvbihidWlsZGVyQ29uZikudG9Qcm9taXNlKCk7XG4gICAgY29uc3QgdGFyZ2V0T3B0aW9uQXJyYXkgPSBhd2FpdCBwYXJzZUpzb25TY2hlbWFUb09wdGlvbnModGhpcy5fcmVnaXN0cnksIGJ1aWxkZXJEZXNjLnNjaGVtYSk7XG4gICAgY29uc3Qgb3ZlcnJpZGVzID0gcGFyc2VBcmd1bWVudHMob3B0aW9ucywgdGFyZ2V0T3B0aW9uQXJyYXksIHRoaXMubG9nZ2VyKTtcblxuICAgIGlmIChvdmVycmlkZXNbJy0tJ10pIHtcbiAgICAgIChvdmVycmlkZXNbJy0tJ10gfHwgW10pLmZvckVhY2goYWRkaXRpb25hbCA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmZhdGFsKGBVbmtub3duIG9wdGlvbjogJyR7YWRkaXRpb25hbC5zcGxpdCgvPS8pWzBdfSdgKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgY29uc3QgcmVhbEJ1aWxkZXJDb25mID0gdGhpcy5fYXJjaGl0ZWN0LmdldEJ1aWxkZXJDb25maWd1cmF0aW9uKHsgLi4udGFyZ2V0U3BlYywgb3ZlcnJpZGVzIH0pO1xuICAgIGNvbnN0IGJ1aWxkZXJDb250ZXh0OiBQYXJ0aWFsPEJ1aWxkZXJDb250ZXh0PiA9IHtcbiAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgICB0YXJnZXRTcGVjaWZpZXI6IHRhcmdldFNwZWMsXG4gICAgfTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLl9hcmNoaXRlY3QucnVuKHJlYWxCdWlsZGVyQ29uZiwgYnVpbGRlckNvbnRleHQpLnRvUHJvbWlzZSgpO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5zdWNjZXNzID8gMCA6IDE7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcnVuQXJjaGl0ZWN0VGFyZ2V0KFxuICAgIG9wdGlvbnM6IEFyY2hpdGVjdENvbW1hbmRPcHRpb25zICYgQXJndW1lbnRzLFxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGV4dHJhID0gb3B0aW9uc1snLS0nXSB8fCBbXTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0YXJnZXRTcGVjID0gdGhpcy5fbWFrZVRhcmdldFNwZWNpZmllcihvcHRpb25zKTtcbiAgICAgIGlmICghdGFyZ2V0U3BlYy5wcm9qZWN0ICYmIHRoaXMudGFyZ2V0KSB7XG4gICAgICAgIC8vIFRoaXMgcnVucyBlYWNoIHRhcmdldCBzZXF1ZW50aWFsbHkuXG4gICAgICAgIC8vIFJ1bm5pbmcgdGhlbSBpbiBwYXJhbGxlbCB3b3VsZCBqdW1ibGUgdGhlIGxvZyBtZXNzYWdlcy5cbiAgICAgICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgcHJvamVjdCBvZiB0aGlzLmdldFByb2plY3ROYW1lc0J5VGFyZ2V0KHRoaXMudGFyZ2V0KSkge1xuICAgICAgICAgIHJlc3VsdCB8PSBhd2FpdCB0aGlzLnJ1blNpbmdsZVRhcmdldCh7IC4uLnRhcmdldFNwZWMsIHByb2plY3QgfSwgZXh0cmEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJ1blNpbmdsZVRhcmdldCh0YXJnZXRTcGVjLCBleHRyYSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBzY2hlbWEuU2NoZW1hVmFsaWRhdGlvbkV4Y2VwdGlvbikge1xuICAgICAgICBjb25zdCBuZXdFcnJvcnM6IHNjaGVtYS5TY2hlbWFWYWxpZGF0b3JFcnJvcltdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgc2NoZW1hRXJyb3Igb2YgZS5lcnJvcnMpIHtcbiAgICAgICAgICBpZiAoc2NoZW1hRXJyb3Iua2V5d29yZCA9PT0gJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJykge1xuICAgICAgICAgICAgY29uc3QgdW5rbm93blByb3BlcnR5ID0gc2NoZW1hRXJyb3IucGFyYW1zLmFkZGl0aW9uYWxQcm9wZXJ0eTtcbiAgICAgICAgICAgIGlmICh1bmtub3duUHJvcGVydHkgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgICBjb25zdCBkYXNoZXMgPSB1bmtub3duUHJvcGVydHkubGVuZ3RoID09PSAxID8gJy0nIDogJy0tJztcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZmF0YWwoYFVua25vd24gb3B0aW9uOiAnJHtkYXNoZXN9JHt1bmtub3duUHJvcGVydHl9J2ApO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgbmV3RXJyb3JzLnB1c2goc2NoZW1hRXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0Vycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IobmV3IHNjaGVtYS5TY2hlbWFWYWxpZGF0aW9uRXhjZXB0aW9uKG5ld0Vycm9ycykubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQcm9qZWN0TmFtZXNCeVRhcmdldCh0YXJnZXROYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYWxsUHJvamVjdHNGb3JUYXJnZXROYW1lID0gdGhpcy5fd29ya3NwYWNlLmxpc3RQcm9qZWN0TmFtZXMoKS5tYXAocHJvamVjdE5hbWUgPT5cbiAgICAgIHRoaXMuX2FyY2hpdGVjdC5saXN0UHJvamVjdFRhcmdldHMocHJvamVjdE5hbWUpLmluY2x1ZGVzKHRhcmdldE5hbWUpID8gcHJvamVjdE5hbWUgOiBudWxsLFxuICAgICkuZmlsdGVyKHggPT4gISF4KSBhcyBzdHJpbmdbXTtcblxuICAgIGlmICh0aGlzLm11bHRpVGFyZ2V0KSB7XG4gICAgICAvLyBGb3IgbXVsdGkgdGFyZ2V0IGNvbW1hbmRzLCB3ZSBhbHdheXMgbGlzdCBhbGwgcHJvamVjdHMgdGhhdCBoYXZlIHRoZSB0YXJnZXQuXG4gICAgICByZXR1cm4gYWxsUHJvamVjdHNGb3JUYXJnZXROYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3Igc2luZ2xlIHRhcmdldCBjb21tYW5kcywgd2UgdHJ5IHRoZSBkZWZhdWx0IHByb2plY3QgZmlyc3QsXG4gICAgICAvLyB0aGVuIHRoZSBmdWxsIGxpc3QgaWYgaXQgaGFzIGEgc2luZ2xlIHByb2plY3QsIHRoZW4gZXJyb3Igb3V0LlxuICAgICAgY29uc3QgbWF5YmVEZWZhdWx0UHJvamVjdCA9IHRoaXMuX3dvcmtzcGFjZS5nZXREZWZhdWx0UHJvamVjdE5hbWUoKTtcbiAgICAgIGlmIChtYXliZURlZmF1bHRQcm9qZWN0ICYmIGFsbFByb2plY3RzRm9yVGFyZ2V0TmFtZS5pbmNsdWRlcyhtYXliZURlZmF1bHRQcm9qZWN0KSkge1xuICAgICAgICByZXR1cm4gW21heWJlRGVmYXVsdFByb2plY3RdO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWxsUHJvamVjdHNGb3JUYXJnZXROYW1lLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gYWxsUHJvamVjdHNGb3JUYXJnZXROYW1lO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBkZXRlcm1pbmUgYSBzaW5nbGUgcHJvamVjdCBmb3IgdGhlICcke3RhcmdldE5hbWV9JyB0YXJnZXQuYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfbG9hZFdvcmtzcGFjZUFuZEFyY2hpdGVjdCgpIHtcbiAgICBjb25zdCB3b3Jrc3BhY2VMb2FkZXIgPSBuZXcgV29ya3NwYWNlTG9hZGVyKHRoaXMuX2hvc3QpO1xuXG4gICAgY29uc3Qgd29ya3NwYWNlID0gYXdhaXQgd29ya3NwYWNlTG9hZGVyLmxvYWRXb3Jrc3BhY2UodGhpcy53b3Jrc3BhY2Uucm9vdCk7XG5cbiAgICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7XG4gICAgdGhpcy5fYXJjaGl0ZWN0ID0gYXdhaXQgbmV3IEFyY2hpdGVjdCh3b3Jrc3BhY2UpLmxvYWRBcmNoaXRlY3QoKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgX21ha2VUYXJnZXRTcGVjaWZpZXIoY29tbWFuZE9wdGlvbnM6IEFyY2hpdGVjdENvbW1hbmRPcHRpb25zKTogVGFyZ2V0U3BlY2lmaWVyIHtcbiAgICBsZXQgcHJvamVjdCwgdGFyZ2V0LCBjb25maWd1cmF0aW9uO1xuXG4gICAgaWYgKGNvbW1hbmRPcHRpb25zLnRhcmdldCkge1xuICAgICAgW3Byb2plY3QsIHRhcmdldCwgY29uZmlndXJhdGlvbl0gPSBjb21tYW5kT3B0aW9ucy50YXJnZXQuc3BsaXQoJzonKTtcblxuICAgICAgaWYgKGNvbW1hbmRPcHRpb25zLmNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgY29uZmlndXJhdGlvbiA9IGNvbW1hbmRPcHRpb25zLmNvbmZpZ3VyYXRpb247XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2plY3QgPSBjb21tYW5kT3B0aW9ucy5wcm9qZWN0O1xuICAgICAgdGFyZ2V0ID0gdGhpcy50YXJnZXQ7XG4gICAgICBjb25maWd1cmF0aW9uID0gY29tbWFuZE9wdGlvbnMuY29uZmlndXJhdGlvbjtcbiAgICAgIGlmICghY29uZmlndXJhdGlvbiAmJiBjb21tYW5kT3B0aW9ucy5wcm9kKSB7XG4gICAgICAgIGNvbmZpZ3VyYXRpb24gPSAncHJvZHVjdGlvbic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFwcm9qZWN0KSB7XG4gICAgICBwcm9qZWN0ID0gJyc7XG4gICAgfVxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICB0YXJnZXQgPSAnJztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHJvamVjdCxcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICB0YXJnZXQsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
283
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl0ZWN0LWNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXIvY2xpL21vZGVscy9hcmNoaXRlY3QtY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7R0FNRztBQUNILHlEQUttQztBQUNuQywrQ0FBd0U7QUFDeEUsb0RBQTJEO0FBQzNELDBDQUFpRDtBQUNqRCwwREFBb0U7QUFDcEUsdUNBQXdEO0FBRXhELHFDQUEwQztBQUMxQyx5REFBcUQ7QUFTckQsTUFBc0IsZ0JBRXBCLFNBQVEsaUJBQWdDO0lBRjFDOztRQUdVLFVBQUssR0FBRyxJQUFJLHFCQUFjLEVBQUUsQ0FBQztRQUtyQyxxREFBcUQ7UUFDM0MsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUE0VGhDLENBQUM7SUF4VFEsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUE0QztRQUNsRSxNQUFNLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFdBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFN0UsTUFBTSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUV4QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7Z0JBQ2hCLCtDQUErQztnQkFDL0MsT0FBTzthQUNSO1lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO2FBQ3BFO1lBRUQsT0FBTztTQUNSO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNsQyxNQUFNLGtCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUN4QyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUNyRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDbEUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9CO1NBQ0Y7UUFFRCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsSUFBSSxDQUFDLE1BQU0sV0FBVyxDQUFDLENBQUM7U0FDckU7UUFFRCxJQUFJLFdBQVcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksV0FBVywyQkFBMkIsSUFBSSxDQUFDLE1BQU0sV0FBVyxDQUFDLENBQUM7U0FDM0Y7UUFFRCxJQUFJLENBQUMsV0FBVyxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkUsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztZQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBOEQsQ0FBQztZQUMxRixJQUFJLHFCQUFxQixHQUFHLElBQUksR0FBRyxDQUFTLGtCQUFrQixDQUFDLENBQUM7WUFDaEUsS0FBSyxNQUFNLElBQUksSUFBSSxrQkFBa0IsRUFBRTtnQkFDckMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDNUQsT0FBTyxFQUFFLElBQUk7b0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2lCQUNwQixDQUFDLENBQUM7Z0JBRUgsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNwQixZQUFZLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDekM7Z0JBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMzRixNQUFNLFVBQVUsR0FBRyxNQUFNLHNDQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0RixNQUFNLGFBQWEsR0FBRyx1QkFBYyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUN4RSxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ25ELFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7Z0JBRXJELHFCQUFxQixHQUFHLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0Y7WUFFRCxJQUFJLHFCQUFxQixDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ3BDLFdBQVcsR0FBRyxDQUFDLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFNUMsNkNBQTZDO2dCQUM3QyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLFVBQVUsRUFBRTtvQkFDZCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDVixPQUFPLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7d0JBQ2xDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7NEJBQ1osTUFBTTt5QkFDUDt3QkFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNuQjtvQkFDRCxPQUFPLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3RDLEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO3dCQUNoQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQzt3QkFDNUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ2xDLE1BQU0sUUFBUSxHQUFHLHVCQUFjLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDM0UsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3RCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTs0QkFDekUsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQzs0QkFDOUIsTUFBTTt5QkFDUDtxQkFDRjtpQkFDRjthQUNGO1lBRUQsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO2dCQUM3RCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQUksQ0FBQyxPQUFPLENBQUE7O2FBRXZCLElBQUksQ0FBQyxNQUFNLGtDQUFrQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7Z0NBQ25ELE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUM5RCxDQUFDLENBQUM7YUFDSjtTQUNGO1FBRUQsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDbkUsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNuQyxXQUFXLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckM7aUJBQU0sSUFBSSxrQkFBa0IsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRTtnQkFDaEYsV0FBVyxHQUFHLGtCQUFrQixDQUFDO2FBQ2xDO2lCQUFNLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDdkIsK0NBQStDO2dCQUMvQyxPQUFPO2FBQ1I7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO2FBQ3BFO1NBQ0Y7UUFFRCxPQUFPLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQztRQUU5QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDO1lBQzFELE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BGLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFekYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDL0IsTUFBTSxzQ0FBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FDbkUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBNEM7UUFDcEQsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVMsS0FBSyxDQUFDLFlBQVksQ0FDMUIsT0FBZSxFQUNmLGFBQXNDLEVBQ3RDLGFBQXFCO1FBRXJCLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU3QyxhQUFhO1FBQ2IsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRS9CLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEYsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTdCLElBQUksT0FBTyxFQUFFO2dCQUNYLHVFQUF1RTtnQkFDdkUsdURBQXVEO2dCQUN2RCxHQUFHLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDaEM7aUJBQU07Z0JBQ0wsT0FBTyxHQUFHLElBQUksQ0FBQzthQUNoQjtZQUVELEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVTLEtBQUssQ0FBQyxlQUFlLENBQzdCLFVBQTJCLEVBQzNCLGFBQXVCLEVBQ3ZCLGNBQW1EO1FBQ25ELCtFQUErRTtRQUMvRSxzRkFBc0Y7UUFDdEYsY0FBYztRQUNkLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEUsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pGLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxzQ0FBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RixNQUFNLFNBQVMsR0FBRyx1QkFBYyxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEYsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsbUJBQU0sVUFBVSxJQUFFLFNBQVMsSUFBRyxDQUFDO1FBQzlGLE1BQU0sY0FBYyxHQUE0QjtZQUM5QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsZUFBZSxFQUFFLFVBQVU7U0FDNUIsQ0FBQztRQUVGLElBQUksY0FBYyxDQUFDLGFBQWEsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0RixrREFBa0Q7WUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUV2RSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUNyQixlQUFlLEVBQ2YsY0FBYyxDQUFDLGFBQXVCLENBQ3ZDLENBQUM7U0FDSDthQUFNO1lBQ0wsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVTtpQkFDakMsR0FBRyxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUM7aUJBQ3BDLFNBQVMsRUFBRSxDQUFDO1lBRWYsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFUyxLQUFLLENBQUMsa0JBQWtCLENBQ2hDLE9BQTRDO1FBRTVDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbEMsSUFBSTtZQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUN0QyxzQ0FBc0M7Z0JBQ3RDLDBEQUEwRDtnQkFDMUQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDL0QsTUFBTSxJQUFJLE1BQU0sSUFBSSxDQUFDLGVBQWUsbUJBQU0sVUFBVSxJQUFFLE9BQU8sS0FBSSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7aUJBQ2xGO2dCQUVELE9BQU8sTUFBTSxDQUFDO2FBQ2Y7aUJBQU07Z0JBQ0wsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQzthQUMvRDtTQUNGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsWUFBWSxhQUFNLENBQUMseUJBQXlCLEVBQUU7Z0JBQ2pELE1BQU0sU0FBUyxHQUFrQyxFQUFFLENBQUM7Z0JBQ3BELEtBQUssTUFBTSxXQUFXLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRTtvQkFDbEMsSUFBSSxXQUFXLENBQUMsT0FBTyxLQUFLLHNCQUFzQixFQUFFO3dCQUNsRCxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDO3dCQUM5RCxJQUFJLGVBQWUsSUFBSSxPQUFPLEVBQUU7NEJBQzlCLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzs0QkFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLE1BQU0sR0FBRyxlQUFlLEdBQUcsQ0FBQyxDQUFDOzRCQUNuRSxTQUFTO3lCQUNWO3FCQUNGO29CQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQzdCO2dCQUVELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksYUFBTSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUM1RTtnQkFFRCxPQUFPLENBQUMsQ0FBQzthQUNWO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxDQUFDO2FBQ1Q7U0FDRjtJQUNILENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxVQUFrQjtRQUNoRCxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FDcEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMxRixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWEsQ0FBQztRQUUvQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsK0VBQStFO1lBQy9FLE9BQU8sd0JBQXdCLENBQUM7U0FDakM7YUFBTTtZQUNMLGdFQUFnRTtZQUNoRSxpRUFBaUU7WUFDakUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDcEUsSUFBSSxtQkFBbUIsSUFBSSx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDakYsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDOUI7WUFFRCxJQUFJLHdCQUF3QixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3pDLE9BQU8sd0JBQXdCLENBQUM7YUFDakM7WUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxVQUFVLFdBQVcsQ0FBQyxDQUFDO1NBQ3pGO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQywwQkFBMEI7UUFDdEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxrQ0FBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4RCxNQUFNLFNBQVMsR0FBRyxNQUFNLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sSUFBSSxxQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQy9FLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxjQUF1QztRQUNsRSxJQUFJLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDO1FBRW5DLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRTtZQUN6QixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFcEUsSUFBSSxjQUFjLENBQUMsYUFBYSxFQUFFO2dCQUNoQyxhQUFhLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQzthQUM5QztTQUNGO2FBQU07WUFDTCxPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQztZQUNqQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNyQixhQUFhLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUM3QyxJQUFJLENBQUMsYUFBYSxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3pDLGFBQWEsR0FBRyxZQUFZLENBQUM7YUFDOUI7U0FDRjtRQUVELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLEdBQUcsRUFBRSxDQUFDO1NBQ2Q7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxHQUFHLEVBQUUsQ0FBQztTQUNiO1FBRUQsT0FBTztZQUNMLE9BQU87WUFDUCxhQUFhO1lBQ2IsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFyVUQsNENBcVVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtcbiAgQXJjaGl0ZWN0LFxuICBCdWlsZGVyQ29uZmlndXJhdGlvbixcbiAgQnVpbGRlckNvbnRleHQsXG4gIFRhcmdldFNwZWNpZmllcixcbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2FyY2hpdGVjdCc7XG5pbXBvcnQgeyBleHBlcmltZW50YWwsIGpzb24sIHNjaGVtYSwgdGFncyB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IE5vZGVKc1N5bmNIb3N0IH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUvbm9kZSc7XG5pbXBvcnQgeyBCZXBKc29uV3JpdGVyIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2JlcCc7XG5pbXBvcnQgeyBwYXJzZUpzb25TY2hlbWFUb09wdGlvbnMgfSBmcm9tICcuLi91dGlsaXRpZXMvanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgQmFzZUNvbW1hbmRPcHRpb25zLCBDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kJztcbmltcG9ydCB7IEFyZ3VtZW50cywgT3B0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgcGFyc2VBcmd1bWVudHMgfSBmcm9tICcuL3BhcnNlcic7XG5pbXBvcnQgeyBXb3Jrc3BhY2VMb2FkZXIgfSBmcm9tICcuL3dvcmtzcGFjZS1sb2FkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFyY2hpdGVjdENvbW1hbmRPcHRpb25zIGV4dGVuZHMgQmFzZUNvbW1hbmRPcHRpb25zIHtcbiAgcHJvamVjdD86IHN0cmluZztcbiAgY29uZmlndXJhdGlvbj86IHN0cmluZztcbiAgcHJvZD86IGJvb2xlYW47XG4gIHRhcmdldD86IHN0cmluZztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFyY2hpdGVjdENvbW1hbmQ8XG4gIFQgZXh0ZW5kcyBBcmNoaXRlY3RDb21tYW5kT3B0aW9ucyA9IEFyY2hpdGVjdENvbW1hbmRPcHRpb25zLFxuPiBleHRlbmRzIENvbW1hbmQ8QXJjaGl0ZWN0Q29tbWFuZE9wdGlvbnM+IHtcbiAgcHJpdmF0ZSBfaG9zdCA9IG5ldyBOb2RlSnNTeW5jSG9zdCgpO1xuICBwcm90ZWN0ZWQgX2FyY2hpdGVjdDogQXJjaGl0ZWN0O1xuICBwcm90ZWN0ZWQgX3dvcmtzcGFjZTogZXhwZXJpbWVudGFsLndvcmtzcGFjZS5Xb3Jrc3BhY2U7XG4gIHByb3RlY3RlZCBfcmVnaXN0cnk6IGpzb24uc2NoZW1hLlNjaGVtYVJlZ2lzdHJ5O1xuXG4gIC8vIElmIHRoaXMgY29tbWFuZCBzdXBwb3J0cyBydW5uaW5nIG11bHRpcGxlIHRhcmdldHMuXG4gIHByb3RlY3RlZCBtdWx0aVRhcmdldCA9IGZhbHNlO1xuXG4gIHRhcmdldDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKG9wdGlvbnM6IEFyY2hpdGVjdENvbW1hbmRPcHRpb25zICYgQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIuaW5pdGlhbGl6ZShvcHRpb25zKTtcblxuICAgIHRoaXMuX3JlZ2lzdHJ5ID0gbmV3IGpzb24uc2NoZW1hLkNvcmVTY2hlbWFSZWdpc3RyeSgpO1xuICAgIHRoaXMuX3JlZ2lzdHJ5LmFkZFBvc3RUcmFuc2Zvcm0oanNvbi5zY2hlbWEudHJhbnNmb3Jtcy5hZGRVbmRlZmluZWREZWZhdWx0cyk7XG5cbiAgICBhd2FpdCB0aGlzLl9sb2FkV29ya3NwYWNlQW5kQXJjaGl0ZWN0KCk7XG5cbiAgICBpZiAoIXRoaXMudGFyZ2V0KSB7XG4gICAgICBpZiAob3B0aW9ucy5oZWxwKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugd2hlcmUgd2UganVzdCByZXR1cm4uXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3BlY2lmaWVyID0gdGhpcy5fbWFrZVRhcmdldFNwZWNpZmllcihvcHRpb25zKTtcbiAgICAgIGlmICghc3BlY2lmaWVyLnByb2plY3QgfHwgIXNwZWNpZmllci50YXJnZXQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGV0ZXJtaW5lIHByb2plY3Qgb3IgdGFyZ2V0IGZvciBjb21tYW5kLicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tbWFuZExlZnRvdmVycyA9IG9wdGlvbnNbJy0tJ107XG4gICAgbGV0IHByb2plY3ROYW1lID0gb3B0aW9ucy5wcm9qZWN0O1xuICAgIGNvbnN0IHRhcmdldFByb2plY3ROYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgdGhpcy5fd29ya3NwYWNlLmxpc3RQcm9qZWN0TmFtZXMoKSkge1xuICAgICAgaWYgKHRoaXMuX2FyY2hpdGVjdC5saXN0UHJvamVjdFRhcmdldHMobmFtZSkuaW5jbHVkZXModGhpcy50YXJnZXQpKSB7XG4gICAgICAgIHRhcmdldFByb2plY3ROYW1lcy5wdXNoKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0YXJnZXRQcm9qZWN0TmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHByb2plY3RzIHN1cHBvcnQgdGhlICcke3RoaXMudGFyZ2V0fScgdGFyZ2V0LmApO1xuICAgIH1cblxuICAgIGlmIChwcm9qZWN0TmFtZSAmJiAhdGFyZ2V0UHJvamVjdE5hbWVzLmluY2x1ZGVzKHByb2plY3ROYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm9qZWN0ICcke3Byb2plY3ROYW1lfScgZG9lcyBub3Qgc3VwcG9ydCB0aGUgJyR7dGhpcy50YXJnZXR9JyB0YXJnZXQuYCk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9qZWN0TmFtZSAmJiBjb21tYW5kTGVmdG92ZXJzICYmIGNvbW1hbmRMZWZ0b3ZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYnVpbGRlck5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICBjb25zdCBsZWZ0b3Zlck1hcCA9IG5ldyBNYXA8c3RyaW5nLCB7IG9wdGlvbkRlZnM6IE9wdGlvbltdLCBwYXJzZWRPcHRpb25zOiBBcmd1bWVudHMgfT4oKTtcbiAgICAgIGxldCBwb3RlbnRpYWxQcm9qZWN0TmFtZXMgPSBuZXcgU2V0PHN0cmluZz4odGFyZ2V0UHJvamVjdE5hbWVzKTtcbiAgICAgIGZvciAoY29uc3QgbmFtZSBvZiB0YXJnZXRQcm9qZWN0TmFtZXMpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlckNvbmZpZyA9IHRoaXMuX2FyY2hpdGVjdC5nZXRCdWlsZGVyQ29uZmlndXJhdGlvbih7XG4gICAgICAgICAgcHJvamVjdDogbmFtZSxcbiAgICAgICAgICB0YXJnZXQ6IHRoaXMudGFyZ2V0LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aVRhcmdldCkge1xuICAgICAgICAgIGJ1aWxkZXJOYW1lcy5hZGQoYnVpbGRlckNvbmZpZy5idWlsZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1aWxkZXJEZXNjID0gYXdhaXQgdGhpcy5fYXJjaGl0ZWN0LmdldEJ1aWxkZXJEZXNjcmlwdGlvbihidWlsZGVyQ29uZmlnKS50b1Byb21pc2UoKTtcbiAgICAgICAgY29uc3Qgb3B0aW9uRGVmcyA9IGF3YWl0IHBhcnNlSnNvblNjaGVtYVRvT3B0aW9ucyh0aGlzLl9yZWdpc3RyeSwgYnVpbGRlckRlc2Muc2NoZW1hKTtcbiAgICAgICAgY29uc3QgcGFyc2VkT3B0aW9ucyA9IHBhcnNlQXJndW1lbnRzKFsuLi5jb21tYW5kTGVmdG92ZXJzXSwgb3B0aW9uRGVmcyk7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXJMZWZ0b3ZlcnMgPSBwYXJzZWRPcHRpb25zWyctLSddIHx8IFtdO1xuICAgICAgICBsZWZ0b3Zlck1hcC5zZXQobmFtZSwgeyBvcHRpb25EZWZzLCBwYXJzZWRPcHRpb25zIH0pO1xuXG4gICAgICAgIHBvdGVudGlhbFByb2plY3ROYW1lcyA9IG5ldyBTZXQoYnVpbGRlckxlZnRvdmVycy5maWx0ZXIoeCA9PiBwb3RlbnRpYWxQcm9qZWN0TmFtZXMuaGFzKHgpKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwb3RlbnRpYWxQcm9qZWN0TmFtZXMuc2l6ZSA9PT0gMSkge1xuICAgICAgICBwcm9qZWN0TmFtZSA9IFsuLi5wb3RlbnRpYWxQcm9qZWN0TmFtZXNdWzBdO1xuXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgcHJvamVjdCBuYW1lIGZyb20gdGhlIGxlZnRvdmVyc1xuICAgICAgICBjb25zdCBvcHRpb25JbmZvID0gbGVmdG92ZXJNYXAuZ2V0KHByb2plY3ROYW1lKTtcbiAgICAgICAgaWYgKG9wdGlvbkluZm8pIHtcbiAgICAgICAgICBjb25zdCBsb2NhdGlvbnMgPSBbXTtcbiAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgd2hpbGUgKGkgPCBjb21tYW5kTGVmdG92ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgaSA9IGNvbW1hbmRMZWZ0b3ZlcnMuaW5kZXhPZihwcm9qZWN0TmFtZSwgaSArIDEpO1xuICAgICAgICAgICAgaWYgKGkgPT09IC0xKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9jYXRpb25zLnB1c2goaSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSBvcHRpb25JbmZvLnBhcnNlZE9wdGlvbnNbJy0tJ107XG4gICAgICAgICAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiBsb2NhdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlbXBMZWZ0b3ZlcnMgPSBbLi4uY29tbWFuZExlZnRvdmVyc107XG4gICAgICAgICAgICB0ZW1wTGVmdG92ZXJzLnNwbGljZShsb2NhdGlvbiwgMSk7XG4gICAgICAgICAgICBjb25zdCB0ZW1wQXJncyA9IHBhcnNlQXJndW1lbnRzKFsuLi50ZW1wTGVmdG92ZXJzXSwgb3B0aW9uSW5mby5vcHRpb25EZWZzKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0ZW1wQXJnc1snLS0nXTtcbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShvcHRpb25JbmZvLnBhcnNlZE9wdGlvbnMpID09PSBKU09OLnN0cmluZ2lmeSh0ZW1wQXJncykpIHtcbiAgICAgICAgICAgICAgb3B0aW9uc1snLS0nXSA9IHRlbXBMZWZ0b3ZlcnM7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXByb2plY3ROYW1lICYmIHRoaXMubXVsdGlUYXJnZXQgJiYgYnVpbGRlck5hbWVzLnNpemUgPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcih0YWdzLm9uZUxpbmVgXG4gICAgICAgICAgQXJjaGl0ZWN0IGNvbW1hbmRzIHdpdGggY29tbWFuZCBsaW5lIG92ZXJyaWRlcyBjYW5ub3QgdGFyZ2V0IGRpZmZlcmVudCBidWlsZGVycy4gVGhlXG4gICAgICAgICAgJyR7dGhpcy50YXJnZXR9JyB0YXJnZXQgd291bGQgcnVuIG9uIHByb2plY3RzICR7dGFyZ2V0UHJvamVjdE5hbWVzLmpvaW4oKX0gd2hpY2ggaGF2ZSB0aGVcbiAgICAgICAgICBmb2xsb3dpbmcgYnVpbGRlcnM6ICR7J1xcbiAgJyArIFsuLi5idWlsZGVyTmFtZXNdLmpvaW4oJ1xcbiAgJyl9XG4gICAgICAgIGApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcHJvamVjdE5hbWUgJiYgIXRoaXMubXVsdGlUYXJnZXQpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRQcm9qZWN0TmFtZSA9IHRoaXMuX3dvcmtzcGFjZS5nZXREZWZhdWx0UHJvamVjdE5hbWUoKTtcbiAgICAgIGlmICh0YXJnZXRQcm9qZWN0TmFtZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHByb2plY3ROYW1lID0gdGFyZ2V0UHJvamVjdE5hbWVzWzBdO1xuICAgICAgfSBlbHNlIGlmIChkZWZhdWx0UHJvamVjdE5hbWUgJiYgdGFyZ2V0UHJvamVjdE5hbWVzLmluY2x1ZGVzKGRlZmF1bHRQcm9qZWN0TmFtZSkpIHtcbiAgICAgICAgcHJvamVjdE5hbWUgPSBkZWZhdWx0UHJvamVjdE5hbWU7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaGVscCkge1xuICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIHdoZXJlIHdlIGp1c3QgcmV0dXJuLlxuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZXRlcm1pbmUgcHJvamVjdCBvciB0YXJnZXQgZm9yIGNvbW1hbmQuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgb3B0aW9ucy5wcm9qZWN0ID0gcHJvamVjdE5hbWU7XG5cbiAgICBjb25zdCBidWlsZGVyQ29uZiA9IHRoaXMuX2FyY2hpdGVjdC5nZXRCdWlsZGVyQ29uZmlndXJhdGlvbih7XG4gICAgICBwcm9qZWN0OiBwcm9qZWN0TmFtZSB8fCAodGFyZ2V0UHJvamVjdE5hbWVzLmxlbmd0aCA+IDAgPyB0YXJnZXRQcm9qZWN0TmFtZXNbMF0gOiAnJyksXG4gICAgICB0YXJnZXQ6IHRoaXMudGFyZ2V0LFxuICAgIH0pO1xuICAgIGNvbnN0IGJ1aWxkZXJEZXNjID0gYXdhaXQgdGhpcy5fYXJjaGl0ZWN0LmdldEJ1aWxkZXJEZXNjcmlwdGlvbihidWlsZGVyQ29uZikudG9Qcm9taXNlKCk7XG5cbiAgICB0aGlzLmRlc2NyaXB0aW9uLm9wdGlvbnMucHVzaCguLi4oXG4gICAgICBhd2FpdCBwYXJzZUpzb25TY2hlbWFUb09wdGlvbnModGhpcy5fcmVnaXN0cnksIGJ1aWxkZXJEZXNjLnNjaGVtYSlcbiAgICApKTtcbiAgfVxuXG4gIGFzeW5jIHJ1bihvcHRpb25zOiBBcmNoaXRlY3RDb21tYW5kT3B0aW9ucyAmIEFyZ3VtZW50cykge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJ1bkFyY2hpdGVjdFRhcmdldChvcHRpb25zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBydW5CZXBUYXJnZXQ8VD4oXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIGNvbmZpZ3VyYXRpb246IEJ1aWxkZXJDb25maWd1cmF0aW9uPFQ+LFxuICAgIGJ1aWxkRXZlbnRMb2c6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBiZXAgPSBuZXcgQmVwSnNvbldyaXRlcihidWlsZEV2ZW50TG9nKTtcblxuICAgIC8vIFNlbmQgc3RhcnRcbiAgICBiZXAud3JpdGVCdWlsZFN0YXJ0ZWQoY29tbWFuZCk7XG5cbiAgICBsZXQgbGFzdCA9IDE7XG4gICAgbGV0IHJlYnVpbGQgPSBmYWxzZTtcbiAgICBhd2FpdCB0aGlzLl9hcmNoaXRlY3QucnVuKGNvbmZpZ3VyYXRpb24sIHsgbG9nZ2VyOiB0aGlzLmxvZ2dlciB9KS5mb3JFYWNoKGV2ZW50ID0+IHtcbiAgICAgIGxhc3QgPSBldmVudC5zdWNjZXNzID8gMCA6IDE7XG5cbiAgICAgIGlmIChyZWJ1aWxkKSB7XG4gICAgICAgIC8vIE5PVEU6IFRoaXMgd2lsbCBoYXZlIGFuIGluY29ycmVjdCB0aW1lc3RhbXAgYnV0IHRoaXMgY2Fubm90IGJlIGZpeGVkXG4gICAgICAgIC8vICAgICAgIHVudGlsIGJ1aWxkZXJzIHJlcG9ydCBhZGRpdGlvbmFsIHN0YXR1cyBldmVudHNcbiAgICAgICAgYmVwLndyaXRlQnVpbGRTdGFydGVkKGNvbW1hbmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVidWlsZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGJlcC53cml0ZUJ1aWxkRmluaXNoZWQobGFzdCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGFzdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBydW5TaW5nbGVUYXJnZXQoXG4gICAgdGFyZ2V0U3BlYzogVGFyZ2V0U3BlY2lmaWVyLFxuICAgIHRhcmdldE9wdGlvbnM6IHN0cmluZ1tdLFxuICAgIGNvbW1hbmRPcHRpb25zOiBBcmNoaXRlY3RDb21tYW5kT3B0aW9ucyAmIEFyZ3VtZW50cykge1xuICAgIC8vIFdlIG5lZWQgdG8gYnVpbGQgdGhlIGJ1aWxkZXJTcGVjIHR3aWNlIGJlY2F1c2UgYXJjaGl0ZWN0IGRvZXMgbm90IHVuZGVyc3RhbmRcbiAgICAvLyBvdmVycmlkZXMgc2VwYXJhdGVseSAoZ2V0dGluZyB0aGUgY29uZmlndXJhdGlvbiBidWlsZHMgdGhlIHdob2xlIHByb2plY3QsIGluY2x1ZGluZ1xuICAgIC8vIG92ZXJyaWRlcykuXG4gICAgY29uc3QgYnVpbGRlckNvbmYgPSB0aGlzLl9hcmNoaXRlY3QuZ2V0QnVpbGRlckNvbmZpZ3VyYXRpb24odGFyZ2V0U3BlYyk7XG4gICAgY29uc3QgYnVpbGRlckRlc2MgPSBhd2FpdCB0aGlzLl9hcmNoaXRlY3QuZ2V0QnVpbGRlckRlc2NyaXB0aW9uKGJ1aWxkZXJDb25mKS50b1Byb21pc2UoKTtcbiAgICBjb25zdCB0YXJnZXRPcHRpb25BcnJheSA9IGF3YWl0IHBhcnNlSnNvblNjaGVtYVRvT3B0aW9ucyh0aGlzLl9yZWdpc3RyeSwgYnVpbGRlckRlc2Muc2NoZW1hKTtcbiAgICBjb25zdCBvdmVycmlkZXMgPSBwYXJzZUFyZ3VtZW50cyh0YXJnZXRPcHRpb25zLCB0YXJnZXRPcHRpb25BcnJheSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgaWYgKG92ZXJyaWRlc1snLS0nXSkge1xuICAgICAgKG92ZXJyaWRlc1snLS0nXSB8fCBbXSkuZm9yRWFjaChhZGRpdGlvbmFsID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZmF0YWwoYFVua25vd24gb3B0aW9uOiAnJHthZGRpdGlvbmFsLnNwbGl0KC89LylbMF19J2ApO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBjb25zdCByZWFsQnVpbGRlckNvbmYgPSB0aGlzLl9hcmNoaXRlY3QuZ2V0QnVpbGRlckNvbmZpZ3VyYXRpb24oeyAuLi50YXJnZXRTcGVjLCBvdmVycmlkZXMgfSk7XG4gICAgY29uc3QgYnVpbGRlckNvbnRleHQ6IFBhcnRpYWw8QnVpbGRlckNvbnRleHQ+ID0ge1xuICAgICAgbG9nZ2VyOiB0aGlzLmxvZ2dlcixcbiAgICAgIHRhcmdldFNwZWNpZmllcjogdGFyZ2V0U3BlYyxcbiAgICB9O1xuXG4gICAgaWYgKGNvbW1hbmRPcHRpb25zLmJ1aWxkRXZlbnRMb2cgJiYgWydidWlsZCcsICdzZXJ2ZSddLmluY2x1ZGVzKHRoaXMuZGVzY3JpcHRpb24ubmFtZSkpIHtcbiAgICAgIC8vIFRoZSBidWlsZC9zZXJ2ZSBjb21tYW5kcyBzdXBwb3J0cyBCRVAgbWVzc2FnaW5nXG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdCRVAgc3VwcG9ydCBpcyBleHBlcmltZW50YWwgYW5kIHN1YmplY3QgdG8gY2hhbmdlLicpO1xuXG4gICAgICByZXR1cm4gdGhpcy5ydW5CZXBUYXJnZXQoXG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb24ubmFtZSxcbiAgICAgICAgcmVhbEJ1aWxkZXJDb25mLFxuICAgICAgICBjb21tYW5kT3B0aW9ucy5idWlsZEV2ZW50TG9nIGFzIHN0cmluZyxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX2FyY2hpdGVjdFxuICAgICAgICAucnVuKHJlYWxCdWlsZGVyQ29uZiwgYnVpbGRlckNvbnRleHQpXG4gICAgICAgIC50b1Byb21pc2UoKTtcblxuICAgICAgcmV0dXJuIHJlc3VsdC5zdWNjZXNzID8gMCA6IDE7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJ1bkFyY2hpdGVjdFRhcmdldChcbiAgICBvcHRpb25zOiBBcmNoaXRlY3RDb21tYW5kT3B0aW9ucyAmIEFyZ3VtZW50cyxcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBleHRyYSA9IG9wdGlvbnNbJy0tJ10gfHwgW107XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdGFyZ2V0U3BlYyA9IHRoaXMuX21ha2VUYXJnZXRTcGVjaWZpZXIob3B0aW9ucyk7XG4gICAgICBpZiAoIXRhcmdldFNwZWMucHJvamVjdCAmJiB0aGlzLnRhcmdldCkge1xuICAgICAgICAvLyBUaGlzIHJ1bnMgZWFjaCB0YXJnZXQgc2VxdWVudGlhbGx5LlxuICAgICAgICAvLyBSdW5uaW5nIHRoZW0gaW4gcGFyYWxsZWwgd291bGQganVtYmxlIHRoZSBsb2cgbWVzc2FnZXMuXG4gICAgICAgIGxldCByZXN1bHQgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IHByb2plY3Qgb2YgdGhpcy5nZXRQcm9qZWN0TmFtZXNCeVRhcmdldCh0aGlzLnRhcmdldCkpIHtcbiAgICAgICAgICByZXN1bHQgfD0gYXdhaXQgdGhpcy5ydW5TaW5nbGVUYXJnZXQoeyAuLi50YXJnZXRTcGVjLCBwcm9qZWN0IH0sIGV4dHJhLCBvcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5ydW5TaW5nbGVUYXJnZXQodGFyZ2V0U3BlYywgZXh0cmEsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2Ygc2NoZW1hLlNjaGVtYVZhbGlkYXRpb25FeGNlcHRpb24pIHtcbiAgICAgICAgY29uc3QgbmV3RXJyb3JzOiBzY2hlbWEuU2NoZW1hVmFsaWRhdG9yRXJyb3JbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHNjaGVtYUVycm9yIG9mIGUuZXJyb3JzKSB7XG4gICAgICAgICAgaWYgKHNjaGVtYUVycm9yLmtleXdvcmQgPT09ICdhZGRpdGlvbmFsUHJvcGVydGllcycpIHtcbiAgICAgICAgICAgIGNvbnN0IHVua25vd25Qcm9wZXJ0eSA9IHNjaGVtYUVycm9yLnBhcmFtcy5hZGRpdGlvbmFsUHJvcGVydHk7XG4gICAgICAgICAgICBpZiAodW5rbm93blByb3BlcnR5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgZGFzaGVzID0gdW5rbm93blByb3BlcnR5Lmxlbmd0aCA9PT0gMSA/ICctJyA6ICctLSc7XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmZhdGFsKGBVbmtub3duIG9wdGlvbjogJyR7ZGFzaGVzfSR7dW5rbm93blByb3BlcnR5fSdgKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIG5ld0Vycm9ycy5wdXNoKHNjaGVtYUVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKG5ldyBzY2hlbWEuU2NoZW1hVmFsaWRhdGlvbkV4Y2VwdGlvbihuZXdFcnJvcnMpLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJvamVjdE5hbWVzQnlUYXJnZXQodGFyZ2V0TmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGFsbFByb2plY3RzRm9yVGFyZ2V0TmFtZSA9IHRoaXMuX3dvcmtzcGFjZS5saXN0UHJvamVjdE5hbWVzKCkubWFwKHByb2plY3ROYW1lID0+XG4gICAgICB0aGlzLl9hcmNoaXRlY3QubGlzdFByb2plY3RUYXJnZXRzKHByb2plY3ROYW1lKS5pbmNsdWRlcyh0YXJnZXROYW1lKSA/IHByb2plY3ROYW1lIDogbnVsbCxcbiAgICApLmZpbHRlcih4ID0+ICEheCkgYXMgc3RyaW5nW107XG5cbiAgICBpZiAodGhpcy5tdWx0aVRhcmdldCkge1xuICAgICAgLy8gRm9yIG11bHRpIHRhcmdldCBjb21tYW5kcywgd2UgYWx3YXlzIGxpc3QgYWxsIHByb2plY3RzIHRoYXQgaGF2ZSB0aGUgdGFyZ2V0LlxuICAgICAgcmV0dXJuIGFsbFByb2plY3RzRm9yVGFyZ2V0TmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIHNpbmdsZSB0YXJnZXQgY29tbWFuZHMsIHdlIHRyeSB0aGUgZGVmYXVsdCBwcm9qZWN0IGZpcnN0LFxuICAgICAgLy8gdGhlbiB0aGUgZnVsbCBsaXN0IGlmIGl0IGhhcyBhIHNpbmdsZSBwcm9qZWN0LCB0aGVuIGVycm9yIG91dC5cbiAgICAgIGNvbnN0IG1heWJlRGVmYXVsdFByb2plY3QgPSB0aGlzLl93b3Jrc3BhY2UuZ2V0RGVmYXVsdFByb2plY3ROYW1lKCk7XG4gICAgICBpZiAobWF5YmVEZWZhdWx0UHJvamVjdCAmJiBhbGxQcm9qZWN0c0ZvclRhcmdldE5hbWUuaW5jbHVkZXMobWF5YmVEZWZhdWx0UHJvamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIFttYXliZURlZmF1bHRQcm9qZWN0XTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFsbFByb2plY3RzRm9yVGFyZ2V0TmFtZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGFsbFByb2plY3RzRm9yVGFyZ2V0TmFtZTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZGV0ZXJtaW5lIGEgc2luZ2xlIHByb2plY3QgZm9yIHRoZSAnJHt0YXJnZXROYW1lfScgdGFyZ2V0LmApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2xvYWRXb3Jrc3BhY2VBbmRBcmNoaXRlY3QoKSB7XG4gICAgY29uc3Qgd29ya3NwYWNlTG9hZGVyID0gbmV3IFdvcmtzcGFjZUxvYWRlcih0aGlzLl9ob3N0KTtcblxuICAgIGNvbnN0IHdvcmtzcGFjZSA9IGF3YWl0IHdvcmtzcGFjZUxvYWRlci5sb2FkV29ya3NwYWNlKHRoaXMud29ya3NwYWNlLnJvb3QpO1xuXG4gICAgdGhpcy5fd29ya3NwYWNlID0gd29ya3NwYWNlO1xuICAgIHRoaXMuX2FyY2hpdGVjdCA9IGF3YWl0IG5ldyBBcmNoaXRlY3Qod29ya3NwYWNlKS5sb2FkQXJjaGl0ZWN0KCkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIF9tYWtlVGFyZ2V0U3BlY2lmaWVyKGNvbW1hbmRPcHRpb25zOiBBcmNoaXRlY3RDb21tYW5kT3B0aW9ucyk6IFRhcmdldFNwZWNpZmllciB7XG4gICAgbGV0IHByb2plY3QsIHRhcmdldCwgY29uZmlndXJhdGlvbjtcblxuICAgIGlmIChjb21tYW5kT3B0aW9ucy50YXJnZXQpIHtcbiAgICAgIFtwcm9qZWN0LCB0YXJnZXQsIGNvbmZpZ3VyYXRpb25dID0gY29tbWFuZE9wdGlvbnMudGFyZ2V0LnNwbGl0KCc6Jyk7XG5cbiAgICAgIGlmIChjb21tYW5kT3B0aW9ucy5jb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGNvbmZpZ3VyYXRpb24gPSBjb21tYW5kT3B0aW9ucy5jb25maWd1cmF0aW9uO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwcm9qZWN0ID0gY29tbWFuZE9wdGlvbnMucHJvamVjdDtcbiAgICAgIHRhcmdldCA9IHRoaXMudGFyZ2V0O1xuICAgICAgY29uZmlndXJhdGlvbiA9IGNvbW1hbmRPcHRpb25zLmNvbmZpZ3VyYXRpb247XG4gICAgICBpZiAoIWNvbmZpZ3VyYXRpb24gJiYgY29tbWFuZE9wdGlvbnMucHJvZCkge1xuICAgICAgICBjb25maWd1cmF0aW9uID0gJ3Byb2R1Y3Rpb24nO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcHJvamVjdCkge1xuICAgICAgcHJvamVjdCA9ICcnO1xuICAgIH1cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgdGFyZ2V0ID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2plY3QsXG4gICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgdGFyZ2V0LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|