@codedrifters/configulator 0.0.64 → 0.0.65
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/lib/pnpm/pnpm-workspace.d.ts +141 -1
- package/lib/pnpm/pnpm-workspace.js +113 -11
- package/package.json +1 -1
|
@@ -1,5 +1,145 @@
|
|
|
1
1
|
import { Component, Project } from "projen";
|
|
2
|
+
import { ValueOf } from "type-fest";
|
|
3
|
+
/**
|
|
4
|
+
* Predefined minimum release age values in minutes.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MIMIMUM_RELEASE_AGE: {
|
|
7
|
+
ZERO_DAYS: number;
|
|
8
|
+
ONE_HOUR: number;
|
|
9
|
+
SIX_HOURS: number;
|
|
10
|
+
TWELVE_HOURS: number;
|
|
11
|
+
ONE_DAY: number;
|
|
12
|
+
TWO_DAYS: number;
|
|
13
|
+
THREE_DAYS: number;
|
|
14
|
+
FOUR_DAYS: number;
|
|
15
|
+
FIVE_DAYS: number;
|
|
16
|
+
SIX_DAYS: number;
|
|
17
|
+
ONE_WEEK: number;
|
|
18
|
+
};
|
|
19
|
+
export interface PnpmWorkspaceOptions {
|
|
20
|
+
/**
|
|
21
|
+
* Filename for the pnpm workspace file. This should probably never change.
|
|
22
|
+
*
|
|
23
|
+
* @default "pnpm-workspace.yaml"
|
|
24
|
+
*/
|
|
25
|
+
readonly fileName?: string;
|
|
26
|
+
/**
|
|
27
|
+
* To reduce the risk of installing compromised packages, you can delay the
|
|
28
|
+
* installation of newly published versions. In most cases, malicious releases
|
|
29
|
+
* are discovered and removed from the registry within an hour.
|
|
30
|
+
*
|
|
31
|
+
* minimumReleaseAge defines the minimum number of minutes that must pass
|
|
32
|
+
* after a version is published before pnpm will install it. This applies to
|
|
33
|
+
* all dependencies, including transitive ones.
|
|
34
|
+
*
|
|
35
|
+
* Note: this should match depsUpgradeOptions.cooldown in the project config.
|
|
36
|
+
*
|
|
37
|
+
* See: https://pnpm.io/settings#minimumreleaseage
|
|
38
|
+
*
|
|
39
|
+
* @default MIMIMUM_RELEASE_AGE.ONE_DAY
|
|
40
|
+
*/
|
|
41
|
+
readonly minimumReleaseAge?: ValueOf<typeof MIMIMUM_RELEASE_AGE>;
|
|
42
|
+
/**
|
|
43
|
+
* If you set minimumReleaseAge but need certain dependencies to always
|
|
44
|
+
* install the newest version immediately, you can list them under
|
|
45
|
+
* minimumReleaseAgeExclude. The exclusion works by package name and applies
|
|
46
|
+
* to all versions of that package.
|
|
47
|
+
*
|
|
48
|
+
* @default - no exclusions (empty array)
|
|
49
|
+
*
|
|
50
|
+
* See: https://pnpm.io/settings#minimumreleaseageexclude
|
|
51
|
+
*/
|
|
52
|
+
readonly minimumReleaseAgeExclude?: Array<string>;
|
|
53
|
+
/**
|
|
54
|
+
* A list of package names that are allowed to execute "preinstall",
|
|
55
|
+
* "install", and/or "postinstall" scripts during installation. Only the
|
|
56
|
+
* packages listed in this array will be able to run those lifecycle scripts.
|
|
57
|
+
* If onlyBuiltDependenciesFile and neverBuiltDependencies are omitted, this
|
|
58
|
+
* configuration option will default to blocking all install scripts.
|
|
59
|
+
*
|
|
60
|
+
* You may restrict allowances to specific versions (and lists of versions
|
|
61
|
+
* using a disjunction with ||). When versions are specified, only those
|
|
62
|
+
* versions of the package may run lifecycle scripts:
|
|
63
|
+
*
|
|
64
|
+
* See: https://pnpm.io/settings#onlybuiltdependencies
|
|
65
|
+
*
|
|
66
|
+
* @default none (empty array)
|
|
67
|
+
*/
|
|
68
|
+
readonly onlyBuiltDependencies?: Array<string>;
|
|
69
|
+
/**
|
|
70
|
+
* A list of package names that are NOT allowed to execute "preinstall",
|
|
71
|
+
* "install", and/or "postinstall" scripts during installation and will not
|
|
72
|
+
* warn or ask to be executed.
|
|
73
|
+
*
|
|
74
|
+
* This is useful when you want to hide the warning because you know the
|
|
75
|
+
* lifecycle scripts are not needed.
|
|
76
|
+
*
|
|
77
|
+
* https://pnpm.io/settings#ignoredbuiltdependencies
|
|
78
|
+
*
|
|
79
|
+
* @default none (empty array)
|
|
80
|
+
*/
|
|
81
|
+
readonly ignoredBuiltDependencies?: Array<string>;
|
|
82
|
+
}
|
|
2
83
|
export declare class PnpmWorkspace extends Component {
|
|
84
|
+
/**
|
|
85
|
+
* Get the pnpm workspace component of a project. If it does not exist,
|
|
86
|
+
* return undefined.
|
|
87
|
+
*
|
|
88
|
+
* @param project
|
|
89
|
+
* @returns
|
|
90
|
+
*/
|
|
3
91
|
static of(project: Project): PnpmWorkspace | undefined;
|
|
4
|
-
|
|
92
|
+
/**
|
|
93
|
+
* Filename for the pnpm workspace file.
|
|
94
|
+
*/
|
|
95
|
+
readonly fileName: string;
|
|
96
|
+
/**
|
|
97
|
+
* To reduce the risk of installing compromised packages, you can delay the
|
|
98
|
+
* installation of newly published versions. In most cases, malicious releases
|
|
99
|
+
* are discovered and removed from the registry within an hour.
|
|
100
|
+
*
|
|
101
|
+
* minimumReleaseAge defines the minimum number of minutes that must pass
|
|
102
|
+
* after a version is published before pnpm will install it. This applies to
|
|
103
|
+
* all dependencies, including transitive ones.
|
|
104
|
+
*
|
|
105
|
+
* Note: this should match depsUpgradeOptions.cooldown in the project config.
|
|
106
|
+
*
|
|
107
|
+
* See: https://pnpm.io/settings#minimumreleaseage
|
|
108
|
+
*/
|
|
109
|
+
minimumReleaseAge: ValueOf<typeof MIMIMUM_RELEASE_AGE>;
|
|
110
|
+
/**
|
|
111
|
+
* If you set minimumReleaseAge but need certain dependencies to always
|
|
112
|
+
* install the newest version immediately, you can list them under
|
|
113
|
+
* minimumReleaseAgeExclude. The exclusion works by package name and applies
|
|
114
|
+
* to all versions of that package.
|
|
115
|
+
*
|
|
116
|
+
* See: https://pnpm.io/settings#minimumreleaseageexclude
|
|
117
|
+
*/
|
|
118
|
+
minimumReleaseAgeExclude: Array<string>;
|
|
119
|
+
/**
|
|
120
|
+
* A list of package names that are allowed to execute "preinstall",
|
|
121
|
+
* "install", and/or "postinstall" scripts during installation. Only the
|
|
122
|
+
* packages listed in this array will be able to run those lifecycle scripts.
|
|
123
|
+
* If onlyBuiltDependenciesFile and neverBuiltDependencies are omitted, this
|
|
124
|
+
* configuration option will default to blocking all install scripts.
|
|
125
|
+
*
|
|
126
|
+
* You may restrict allowances to specific versions (and lists of versions
|
|
127
|
+
* using a disjunction with ||). When versions are specified, only those
|
|
128
|
+
* versions of the package may run lifecycle scripts:
|
|
129
|
+
*
|
|
130
|
+
* See: https://pnpm.io/settings#onlybuiltdependencies
|
|
131
|
+
*/
|
|
132
|
+
onlyBuiltDependencies: Array<string>;
|
|
133
|
+
/**
|
|
134
|
+
* A list of package names that are NOT allowed to execute "preinstall",
|
|
135
|
+
* "install", and/or "postinstall" scripts during installation and will not
|
|
136
|
+
* warn or ask to be executed.
|
|
137
|
+
*
|
|
138
|
+
* This is useful when you want to hide the warning because you know the
|
|
139
|
+
* lifecycle scripts are not needed.
|
|
140
|
+
*
|
|
141
|
+
* https://pnpm.io/settings#ignoredbuiltdependencies
|
|
142
|
+
*/
|
|
143
|
+
ignoredBuiltDependencies: Array<string>;
|
|
144
|
+
constructor(project: Project, options?: PnpmWorkspaceOptions);
|
|
5
145
|
}
|
|
@@ -1,36 +1,138 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PnpmWorkspace = void 0;
|
|
3
|
+
exports.PnpmWorkspace = exports.MIMIMUM_RELEASE_AGE = void 0;
|
|
4
4
|
const path_1 = require("path");
|
|
5
5
|
const projen_1 = require("projen");
|
|
6
|
+
/**
|
|
7
|
+
* Predefined minimum release age values in minutes.
|
|
8
|
+
*/
|
|
9
|
+
exports.MIMIMUM_RELEASE_AGE = {
|
|
10
|
+
ZERO_DAYS: 0,
|
|
11
|
+
ONE_HOUR: 60,
|
|
12
|
+
SIX_HOURS: 360,
|
|
13
|
+
TWELVE_HOURS: 720,
|
|
14
|
+
ONE_DAY: 1440,
|
|
15
|
+
TWO_DAYS: 2880,
|
|
16
|
+
THREE_DAYS: 4320,
|
|
17
|
+
FOUR_DAYS: 5760,
|
|
18
|
+
FIVE_DAYS: 7200,
|
|
19
|
+
SIX_DAYS: 8640,
|
|
20
|
+
ONE_WEEK: 10080,
|
|
21
|
+
};
|
|
6
22
|
class PnpmWorkspace extends projen_1.Component {
|
|
23
|
+
/**
|
|
24
|
+
* Get the pnpm workspace component of a project. If it does not exist,
|
|
25
|
+
* return undefined.
|
|
26
|
+
*
|
|
27
|
+
* @param project
|
|
28
|
+
* @returns
|
|
29
|
+
*/
|
|
7
30
|
static of(project) {
|
|
8
31
|
const isDefined = (c) => c instanceof PnpmWorkspace;
|
|
9
32
|
return project.root.components.find(isDefined);
|
|
10
33
|
}
|
|
11
|
-
constructor(project) {
|
|
34
|
+
constructor(project, options = {}) {
|
|
12
35
|
super(project);
|
|
13
|
-
|
|
36
|
+
/***************************************************************************
|
|
37
|
+
*
|
|
38
|
+
* CLEAR package,json
|
|
39
|
+
*
|
|
40
|
+
* It appears that if ANY pnpm settings exist in the package.json file, all
|
|
41
|
+
* of the setting in the pnpm-workspace.yaml file are ignored. so we need to
|
|
42
|
+
* clear out anything that was placed into the package.json file.
|
|
43
|
+
*
|
|
44
|
+
**************************************************************************/
|
|
45
|
+
project.tryFindObjectFile("package.json")?.addDeletionOverride("pnpm");
|
|
46
|
+
/***************************************************************************
|
|
47
|
+
*
|
|
48
|
+
* Setup pnpm-workspace.yaml file.
|
|
49
|
+
*
|
|
50
|
+
* Now that the package.json file is cleared of any pnpm settings, we can
|
|
51
|
+
* safely write settings to the pnpm-workspace.yaml file.
|
|
52
|
+
*
|
|
53
|
+
**************************************************************************
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Set filename to default if not provided.
|
|
57
|
+
*/
|
|
58
|
+
this.fileName = options.fileName ?? "pnpm-workspace.yaml";
|
|
59
|
+
/**
|
|
60
|
+
* Set minimum release age to default if not provided
|
|
61
|
+
*/
|
|
62
|
+
this.minimumReleaseAge = options.minimumReleaseAge
|
|
63
|
+
? options.minimumReleaseAge
|
|
64
|
+
: exports.MIMIMUM_RELEASE_AGE.ONE_DAY;
|
|
65
|
+
/**
|
|
66
|
+
* Set minimum release age exclude to empty array if not provided
|
|
67
|
+
*/
|
|
68
|
+
this.minimumReleaseAgeExclude = options.minimumReleaseAgeExclude
|
|
69
|
+
? ["@codedrifters/*", ...options.minimumReleaseAgeExclude]
|
|
70
|
+
: ["@codedrifters/*"];
|
|
71
|
+
/**
|
|
72
|
+
* Set only built dependencies to empty array if not provided
|
|
73
|
+
*/
|
|
74
|
+
this.onlyBuiltDependencies = options.onlyBuiltDependencies
|
|
75
|
+
? options.onlyBuiltDependencies
|
|
76
|
+
: [];
|
|
77
|
+
/**
|
|
78
|
+
* Set ignored built dependencies to empty array if not provided
|
|
79
|
+
*/
|
|
80
|
+
this.ignoredBuiltDependencies = options.ignoredBuiltDependencies
|
|
81
|
+
? options.ignoredBuiltDependencies
|
|
82
|
+
: [];
|
|
14
83
|
/**
|
|
15
84
|
* In case that this file is in a package, don't package it.
|
|
16
85
|
*/
|
|
17
|
-
project.addPackageIgnore(fileName);
|
|
86
|
+
project.addPackageIgnore(this.fileName);
|
|
18
87
|
/**
|
|
19
88
|
* Write pnpm workspace file
|
|
20
89
|
*/
|
|
21
|
-
new projen_1.YamlFile(this.project, fileName, {
|
|
22
|
-
obj: {
|
|
23
|
-
|
|
24
|
-
|
|
90
|
+
new projen_1.YamlFile(this.project, this.fileName, {
|
|
91
|
+
obj: () => {
|
|
92
|
+
const pnpmConfig = {};
|
|
93
|
+
const packages = new Array();
|
|
94
|
+
/**
|
|
95
|
+
* If any subprojects exist, output all subprojects in the workspace as
|
|
96
|
+
* packages.
|
|
97
|
+
*/
|
|
98
|
+
if (this.project.subprojects.length > 0) {
|
|
25
99
|
for (const subproject of project.subprojects) {
|
|
26
100
|
// grab the relative out directory
|
|
27
101
|
packages.push((0, path_1.relative)(this.project.outdir, subproject.outdir));
|
|
28
102
|
}
|
|
29
|
-
|
|
30
|
-
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Set minimum release age.
|
|
106
|
+
*/
|
|
107
|
+
pnpmConfig.minimumReleaseAge = this.minimumReleaseAge;
|
|
108
|
+
/**
|
|
109
|
+
* Set minimum release age exclude if any are provided.
|
|
110
|
+
*/
|
|
111
|
+
if (this.minimumReleaseAgeExclude.length > 0) {
|
|
112
|
+
pnpmConfig.minimumReleaseAgeExclude = this.minimumReleaseAgeExclude;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Set only built dependencies if any are provided.
|
|
116
|
+
*/
|
|
117
|
+
if (this.onlyBuiltDependencies.length > 0) {
|
|
118
|
+
pnpmConfig.onlyBuiltDependencies = this.onlyBuiltDependencies;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Set ignored built dependencies if any are provided.
|
|
122
|
+
*/
|
|
123
|
+
if (this.ignoredBuiltDependencies.length > 0) {
|
|
124
|
+
pnpmConfig.ignoreBuiltDependencies = this.ignoredBuiltDependencies;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Return the final pnpm config object.
|
|
128
|
+
*/
|
|
129
|
+
return {
|
|
130
|
+
...(packages.length > 0 ? { packages } : {}),
|
|
131
|
+
...(pnpmConfig ? { ...pnpmConfig } : {}),
|
|
132
|
+
};
|
|
31
133
|
},
|
|
32
134
|
});
|
|
33
135
|
}
|
|
34
136
|
}
|
|
35
137
|
exports.PnpmWorkspace = PnpmWorkspace;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG5wbS9wbnBtLXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBZ0M7QUFDaEMsbUNBQXNEO0FBRXRELE1BQWEsYUFBYyxTQUFRLGtCQUFTO0lBQ25DLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFZLEVBQXNCLEVBQUUsQ0FDckQsQ0FBQyxZQUFZLGFBQWEsQ0FBQztRQUM3QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsWUFBWSxPQUFnQjtRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLFFBQVEsR0FBVyxxQkFBcUIsQ0FBQztRQUUvQzs7V0FFRztRQUNILE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuQzs7V0FFRztRQUNILElBQUksaUJBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtZQUNuQyxHQUFHLEVBQUU7Z0JBQ0gsUUFBUSxFQUFFLEdBQUcsRUFBRTtvQkFDYixNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO29CQUNyQyxLQUFLLE1BQU0sVUFBVSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDN0Msa0NBQWtDO3dCQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUEsZUFBUSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUNsRSxDQUFDO29CQUNELE9BQU8sUUFBUSxDQUFDO2dCQUNsQixDQUFDO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqQ0Qsc0NBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBQcm9qZWN0LCBZYW1sRmlsZSB9IGZyb20gXCJwcm9qZW5cIjtcblxuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2UgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBQbnBtV29ya3NwYWNlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc0RlZmluZWQgPSAoYzogQ29tcG9uZW50KTogYyBpcyBQbnBtV29ya3NwYWNlID0+XG4gICAgICBjIGluc3RhbmNlb2YgUG5wbVdvcmtzcGFjZTtcbiAgICByZXR1cm4gcHJvamVjdC5yb290LmNvbXBvbmVudHMuZmluZChpc0RlZmluZWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgZmlsZU5hbWU6IHN0cmluZyA9IFwicG5wbS13b3Jrc3BhY2UueWFtbFwiO1xuXG4gICAgLyoqXG4gICAgICogSW4gY2FzZSB0aGF0IHRoaXMgZmlsZSBpcyBpbiBhIHBhY2thZ2UsIGRvbid0IHBhY2thZ2UgaXQuXG4gICAgICovXG4gICAgcHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGZpbGVOYW1lKTtcblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHBucG0gd29ya3NwYWNlIGZpbGVcbiAgICAgKi9cbiAgICBuZXcgWWFtbEZpbGUodGhpcy5wcm9qZWN0LCBmaWxlTmFtZSwge1xuICAgICAgb2JqOiB7XG4gICAgICAgIHBhY2thZ2VzOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFja2FnZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgICAgICAgIGZvciAoY29uc3Qgc3VicHJvamVjdCBvZiBwcm9qZWN0LnN1YnByb2plY3RzKSB7XG4gICAgICAgICAgICAvLyBncmFiIHRoZSByZWxhdGl2ZSBvdXQgZGlyZWN0b3J5XG4gICAgICAgICAgICBwYWNrYWdlcy5wdXNoKHJlbGF0aXZlKHRoaXMucHJvamVjdC5vdXRkaXIsIHN1YnByb2plY3Qub3V0ZGlyKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYWNrYWdlcztcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG5wbS9wbnBtLXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBZ0M7QUFDaEMsbUNBQXNEO0FBR3REOztHQUVHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRztJQUNqQyxTQUFTLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxFQUFFO0lBQ1osU0FBUyxFQUFFLEdBQUc7SUFDZCxZQUFZLEVBQUUsR0FBRztJQUNqQixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxJQUFJO0lBQ2QsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixTQUFTLEVBQUUsSUFBSTtJQUNmLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLEtBQUs7Q0FDaEIsQ0FBQztBQXVFRixNQUFhLGFBQWMsU0FBUSxrQkFBUztJQUMxQzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQWdCO1FBQy9CLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBWSxFQUFzQixFQUFFLENBQ3JELENBQUMsWUFBWSxhQUFhLENBQUM7UUFDN0IsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQTJERCxZQUFZLE9BQWdCLEVBQUUsVUFBZ0MsRUFBRTtRQUM5RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZjs7Ozs7Ozs7b0ZBUTRFO1FBRTVFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2RTs7Ozs7Ozs7Ozs7V0FXRztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQztRQUUxRDs7V0FFRztRQUNILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCO1lBQ2hELENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCO1lBQzNCLENBQUMsQ0FBQywyQkFBbUIsQ0FBQyxPQUFPLENBQUM7UUFFaEM7O1dBRUc7UUFDSCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsT0FBTyxDQUFDLHdCQUF3QjtZQUM5RCxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztZQUMxRCxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXhCOztXQUVHO1FBQ0gsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxxQkFBcUI7WUFDeEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUI7WUFDL0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQOztXQUVHO1FBQ0gsSUFBSSxDQUFDLHdCQUF3QixHQUFHLE9BQU8sQ0FBQyx3QkFBd0I7WUFDOUQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0I7WUFDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQOztXQUVHO1FBQ0gsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV4Qzs7V0FFRztRQUNILElBQUksaUJBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDeEMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixNQUFNLFVBQVUsR0FBUSxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7Z0JBRXJDOzs7bUJBR0c7Z0JBQ0gsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hDLEtBQUssTUFBTSxVQUFVLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUM3QyxrQ0FBa0M7d0JBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBQSxlQUFRLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ2xFLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRDs7bUJBRUc7Z0JBQ0gsVUFBVSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztnQkFFdEQ7O21CQUVHO2dCQUNILElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDN0MsVUFBVSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztnQkFDdEUsQ0FBQztnQkFFRDs7bUJBRUc7Z0JBQ0gsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMxQyxVQUFVLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO2dCQUNoRSxDQUFDO2dCQUVEOzttQkFFRztnQkFDSCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzdDLFVBQVUsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3JFLENBQUM7Z0JBRUQ7O21CQUVHO2dCQUNILE9BQU87b0JBQ0wsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzVDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUN6QyxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTVMRCxzQ0E0TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWxhdGl2ZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIFByb2plY3QsIFlhbWxGaWxlIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgVmFsdWVPZiB9IGZyb20gXCJ0eXBlLWZlc3RcIjtcblxuLyoqXG4gKiBQcmVkZWZpbmVkIG1pbmltdW0gcmVsZWFzZSBhZ2UgdmFsdWVzIGluIG1pbnV0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBNSU1JTVVNX1JFTEVBU0VfQUdFID0ge1xuICBaRVJPX0RBWVM6IDAsXG4gIE9ORV9IT1VSOiA2MCxcbiAgU0lYX0hPVVJTOiAzNjAsXG4gIFRXRUxWRV9IT1VSUzogNzIwLFxuICBPTkVfREFZOiAxNDQwLFxuICBUV09fREFZUzogMjg4MCxcbiAgVEhSRUVfREFZUzogNDMyMCxcbiAgRk9VUl9EQVlTOiA1NzYwLFxuICBGSVZFX0RBWVM6IDcyMDAsXG4gIFNJWF9EQVlTOiA4NjQwLFxuICBPTkVfV0VFSzogMTAwODAsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGVuYW1lIGZvciB0aGUgcG5wbSB3b3Jrc3BhY2UgZmlsZS4gVGhpcyBzaG91bGQgcHJvYmFibHkgbmV2ZXIgY2hhbmdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInBucG0td29ya3NwYWNlLnlhbWxcIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvIHJlZHVjZSB0aGUgcmlzayBvZiBpbnN0YWxsaW5nIGNvbXByb21pc2VkIHBhY2thZ2VzLCB5b3UgY2FuIGRlbGF5IHRoZVxuICAgKiBpbnN0YWxsYXRpb24gb2YgbmV3bHkgcHVibGlzaGVkIHZlcnNpb25zLiBJbiBtb3N0IGNhc2VzLCBtYWxpY2lvdXMgcmVsZWFzZXNcbiAgICogYXJlIGRpc2NvdmVyZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgcmVnaXN0cnkgd2l0aGluIGFuIGhvdXIuXG4gICAqXG4gICAqIG1pbmltdW1SZWxlYXNlQWdlIGRlZmluZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgdGhhdCBtdXN0IHBhc3NcbiAgICogYWZ0ZXIgYSB2ZXJzaW9uIGlzIHB1Ymxpc2hlZCBiZWZvcmUgcG5wbSB3aWxsIGluc3RhbGwgaXQuIFRoaXMgYXBwbGllcyB0b1xuICAgKiBhbGwgZGVwZW5kZW5jaWVzLCBpbmNsdWRpbmcgdHJhbnNpdGl2ZSBvbmVzLlxuICAgKlxuICAgKiBOb3RlOiB0aGlzIHNob3VsZCBtYXRjaCBkZXBzVXBncmFkZU9wdGlvbnMuY29vbGRvd24gaW4gdGhlIHByb2plY3QgY29uZmlnLlxuICAgKlxuICAgKiBTZWU6IGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNtaW5pbXVtcmVsZWFzZWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCBNSU1JTVVNX1JFTEVBU0VfQUdFLk9ORV9EQVlcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlPzogVmFsdWVPZjx0eXBlb2YgTUlNSU1VTV9SRUxFQVNFX0FHRT47XG5cbiAgLyoqXG4gICAqIElmIHlvdSBzZXQgbWluaW11bVJlbGVhc2VBZ2UgYnV0IG5lZWQgY2VydGFpbiBkZXBlbmRlbmNpZXMgdG8gYWx3YXlzXG4gICAqIGluc3RhbGwgdGhlIG5ld2VzdCB2ZXJzaW9uIGltbWVkaWF0ZWx5LCB5b3UgY2FuIGxpc3QgdGhlbSB1bmRlclxuICAgKiBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUuIFRoZSBleGNsdXNpb24gd29ya3MgYnkgcGFja2FnZSBuYW1lIGFuZCBhcHBsaWVzXG4gICAqIHRvIGFsbCB2ZXJzaW9ucyBvZiB0aGF0IHBhY2thZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhjbHVzaW9ucyAoZW1wdHkgYXJyYXkpXG4gICAqXG4gICAqIFNlZTogaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI21pbmltdW1yZWxlYXNlYWdlZXhjbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlPzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2UgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBleGVjdXRlIFwicHJlaW5zdGFsbFwiLFxuICAgKiBcImluc3RhbGxcIiwgYW5kL29yIFwicG9zdGluc3RhbGxcIiBzY3JpcHRzIGR1cmluZyBpbnN0YWxsYXRpb24uIE9ubHkgdGhlXG4gICAqIHBhY2thZ2VzIGxpc3RlZCBpbiB0aGlzIGFycmF5IHdpbGwgYmUgYWJsZSB0byBydW4gdGhvc2UgbGlmZWN5Y2xlIHNjcmlwdHMuXG4gICAqIElmIG9ubHlCdWlsdERlcGVuZGVuY2llc0ZpbGUgYW5kIG5ldmVyQnVpbHREZXBlbmRlbmNpZXMgYXJlIG9taXR0ZWQsIHRoaXNcbiAgICogY29uZmlndXJhdGlvbiBvcHRpb24gd2lsbCBkZWZhdWx0IHRvIGJsb2NraW5nIGFsbCBpbnN0YWxsIHNjcmlwdHMuXG4gICAqXG4gICAqIFlvdSBtYXkgcmVzdHJpY3QgYWxsb3dhbmNlcyB0byBzcGVjaWZpYyB2ZXJzaW9ucyAoYW5kIGxpc3RzIG9mIHZlcnNpb25zXG4gICAqIHVzaW5nIGEgZGlzanVuY3Rpb24gd2l0aCB8fCkuIFdoZW4gdmVyc2lvbnMgYXJlIHNwZWNpZmllZCwgb25seSB0aG9zZVxuICAgKiB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSBtYXkgcnVuIGxpZmVjeWNsZSBzY3JpcHRzOlxuICAgKlxuICAgKiBTZWU6IGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNvbmx5YnVpbHRkZXBlbmRlbmNpZXNcbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZSAoZW1wdHkgYXJyYXkpXG4gICAqL1xuICByZWFkb25seSBvbmx5QnVpbHREZXBlbmRlbmNpZXM/OiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcGFja2FnZSBuYW1lcyB0aGF0IGFyZSBOT1QgYWxsb3dlZCB0byBleGVjdXRlIFwicHJlaW5zdGFsbFwiLFxuICAgKiBcImluc3RhbGxcIiwgYW5kL29yIFwicG9zdGluc3RhbGxcIiBzY3JpcHRzIGR1cmluZyBpbnN0YWxsYXRpb24gYW5kIHdpbGwgbm90XG4gICAqIHdhcm4gb3IgYXNrIHRvIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIGhpZGUgdGhlIHdhcm5pbmcgYmVjYXVzZSB5b3Uga25vdyB0aGVcbiAgICogbGlmZWN5Y2xlIHNjcmlwdHMgYXJlIG5vdCBuZWVkZWQuXG4gICAqXG4gICAqIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNpZ25vcmVkYnVpbHRkZXBlbmRlbmNpZXNcbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZSAoZW1wdHkgYXJyYXkpXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM/OiBBcnJheTxzdHJpbmc+O1xufVxuXG5leHBvcnQgY2xhc3MgUG5wbVdvcmtzcGFjZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIHBucG0gd29ya3NwYWNlIGNvbXBvbmVudCBvZiBhIHByb2plY3QuIElmIGl0IGRvZXMgbm90IGV4aXN0LFxuICAgKiByZXR1cm4gdW5kZWZpbmVkLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihwcm9qZWN0OiBQcm9qZWN0KTogUG5wbVdvcmtzcGFjZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNEZWZpbmVkID0gKGM6IENvbXBvbmVudCk6IGMgaXMgUG5wbVdvcmtzcGFjZSA9PlxuICAgICAgYyBpbnN0YW5jZW9mIFBucG1Xb3Jrc3BhY2U7XG4gICAgcmV0dXJuIHByb2plY3Qucm9vdC5jb21wb25lbnRzLmZpbmQoaXNEZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWxlbmFtZSBmb3IgdGhlIHBucG0gd29ya3NwYWNlIGZpbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVG8gcmVkdWNlIHRoZSByaXNrIG9mIGluc3RhbGxpbmcgY29tcHJvbWlzZWQgcGFja2FnZXMsIHlvdSBjYW4gZGVsYXkgdGhlXG4gICAqIGluc3RhbGxhdGlvbiBvZiBuZXdseSBwdWJsaXNoZWQgdmVyc2lvbnMuIEluIG1vc3QgY2FzZXMsIG1hbGljaW91cyByZWxlYXNlc1xuICAgKiBhcmUgZGlzY292ZXJlZCBhbmQgcmVtb3ZlZCBmcm9tIHRoZSByZWdpc3RyeSB3aXRoaW4gYW4gaG91ci5cbiAgICpcbiAgICogbWluaW11bVJlbGVhc2VBZ2UgZGVmaW5lcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWludXRlcyB0aGF0IG11c3QgcGFzc1xuICAgKiBhZnRlciBhIHZlcnNpb24gaXMgcHVibGlzaGVkIGJlZm9yZSBwbnBtIHdpbGwgaW5zdGFsbCBpdC4gVGhpcyBhcHBsaWVzIHRvXG4gICAqIGFsbCBkZXBlbmRlbmNpZXMsIGluY2x1ZGluZyB0cmFuc2l0aXZlIG9uZXMuXG4gICAqXG4gICAqIE5vdGU6IHRoaXMgc2hvdWxkIG1hdGNoIGRlcHNVcGdyYWRlT3B0aW9ucy5jb29sZG93biBpbiB0aGUgcHJvamVjdCBjb25maWcuXG4gICAqXG4gICAqIFNlZTogaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI21pbmltdW1yZWxlYXNlYWdlXG4gICAqL1xuICBwdWJsaWMgbWluaW11bVJlbGVhc2VBZ2U6IFZhbHVlT2Y8dHlwZW9mIE1JTUlNVU1fUkVMRUFTRV9BR0U+O1xuXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IG1pbmltdW1SZWxlYXNlQWdlIGJ1dCBuZWVkIGNlcnRhaW4gZGVwZW5kZW5jaWVzIHRvIGFsd2F5c1xuICAgKiBpbnN0YWxsIHRoZSBuZXdlc3QgdmVyc2lvbiBpbW1lZGlhdGVseSwgeW91IGNhbiBsaXN0IHRoZW0gdW5kZXJcbiAgICogbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlLiBUaGUgZXhjbHVzaW9uIHdvcmtzIGJ5IHBhY2thZ2UgbmFtZSBhbmQgYXBwbGllc1xuICAgKiB0byBhbGwgdmVyc2lvbnMgb2YgdGhhdCBwYWNrYWdlLlxuICAgKlxuICAgKiBTZWU6IGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNtaW5pbXVtcmVsZWFzZWFnZWV4Y2x1ZGVcbiAgICovXG4gIHB1YmxpYyBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGU6IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZXhlY3V0ZSBcInByZWluc3RhbGxcIixcbiAgICogXCJpbnN0YWxsXCIsIGFuZC9vciBcInBvc3RpbnN0YWxsXCIgc2NyaXB0cyBkdXJpbmcgaW5zdGFsbGF0aW9uLiBPbmx5IHRoZVxuICAgKiBwYWNrYWdlcyBsaXN0ZWQgaW4gdGhpcyBhcnJheSB3aWxsIGJlIGFibGUgdG8gcnVuIHRob3NlIGxpZmVjeWNsZSBzY3JpcHRzLlxuICAgKiBJZiBvbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlIGFuZCBuZXZlckJ1aWx0RGVwZW5kZW5jaWVzIGFyZSBvbWl0dGVkLCB0aGlzXG4gICAqIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdpbGwgZGVmYXVsdCB0byBibG9ja2luZyBhbGwgaW5zdGFsbCBzY3JpcHRzLlxuICAgKlxuICAgKiBZb3UgbWF5IHJlc3RyaWN0IGFsbG93YW5jZXMgdG8gc3BlY2lmaWMgdmVyc2lvbnMgKGFuZCBsaXN0cyBvZiB2ZXJzaW9uc1xuICAgKiB1c2luZyBhIGRpc2p1bmN0aW9uIHdpdGggfHwpLiBXaGVuIHZlcnNpb25zIGFyZSBzcGVjaWZpZWQsIG9ubHkgdGhvc2VcbiAgICogdmVyc2lvbnMgb2YgdGhlIHBhY2thZ2UgbWF5IHJ1biBsaWZlY3ljbGUgc2NyaXB0czpcbiAgICpcbiAgICogU2VlOiBodHRwczovL3BucG0uaW8vc2V0dGluZ3Mjb25seWJ1aWx0ZGVwZW5kZW5jaWVzXG4gICAqL1xuICBwdWJsaWMgb25seUJ1aWx0RGVwZW5kZW5jaWVzOiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcGFja2FnZSBuYW1lcyB0aGF0IGFyZSBOT1QgYWxsb3dlZCB0byBleGVjdXRlIFwicHJlaW5zdGFsbFwiLFxuICAgKiBcImluc3RhbGxcIiwgYW5kL29yIFwicG9zdGluc3RhbGxcIiBzY3JpcHRzIGR1cmluZyBpbnN0YWxsYXRpb24gYW5kIHdpbGwgbm90XG4gICAqIHdhcm4gb3IgYXNrIHRvIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIGhpZGUgdGhlIHdhcm5pbmcgYmVjYXVzZSB5b3Uga25vdyB0aGVcbiAgICogbGlmZWN5Y2xlIHNjcmlwdHMgYXJlIG5vdCBuZWVkZWQuXG4gICAqXG4gICAqIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNpZ25vcmVkYnVpbHRkZXBlbmRlbmNpZXNcbiAgICovXG4gIHB1YmxpYyBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM6IEFycmF5PHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogUG5wbVdvcmtzcGFjZU9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogQ0xFQVIgcGFja2FnZSxqc29uXG4gICAgICpcbiAgICAgKiBJdCBhcHBlYXJzIHRoYXQgaWYgQU5ZIHBucG0gc2V0dGluZ3MgZXhpc3QgaW4gdGhlIHBhY2thZ2UuanNvbiBmaWxlLCBhbGxcbiAgICAgKiBvZiB0aGUgc2V0dGluZyBpbiB0aGUgcG5wbS13b3Jrc3BhY2UueWFtbCBmaWxlIGFyZSBpZ25vcmVkLiBzbyB3ZSBuZWVkIHRvXG4gICAgICogY2xlYXIgb3V0IGFueXRoaW5nIHRoYXQgd2FzIHBsYWNlZCBpbnRvIHRoZSBwYWNrYWdlLmpzb24gZmlsZS5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIHByb2plY3QudHJ5RmluZE9iamVjdEZpbGUoXCJwYWNrYWdlLmpzb25cIik/LmFkZERlbGV0aW9uT3ZlcnJpZGUoXCJwbnBtXCIpO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqIFxuICAgICAqIFNldHVwIHBucG0td29ya3NwYWNlLnlhbWwgZmlsZS5cbiAgICAgKiBcbiAgICAgKiBOb3cgdGhhdCB0aGUgcGFja2FnZS5qc29uIGZpbGUgaXMgY2xlYXJlZCBvZiBhbnkgcG5wbSBzZXR0aW5ncywgd2UgY2FuXG4gICAgICogc2FmZWx5IHdyaXRlIHNldHRpbmdzIHRvIHRoZSBwbnBtLXdvcmtzcGFjZS55YW1sIGZpbGUuXG4gICAgICogXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgICAvKipcbiAgICAgKiBTZXQgZmlsZW5hbWUgdG8gZGVmYXVsdCBpZiBub3QgcHJvdmlkZWQuXG4gICAgICovXG4gICAgdGhpcy5maWxlTmFtZSA9IG9wdGlvbnMuZmlsZU5hbWUgPz8gXCJwbnBtLXdvcmtzcGFjZS55YW1sXCI7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgbWluaW11bSByZWxlYXNlIGFnZSB0byBkZWZhdWx0IGlmIG5vdCBwcm92aWRlZFxuICAgICAqL1xuICAgIHRoaXMubWluaW11bVJlbGVhc2VBZ2UgPSBvcHRpb25zLm1pbmltdW1SZWxlYXNlQWdlXG4gICAgICA/IG9wdGlvbnMubWluaW11bVJlbGVhc2VBZ2VcbiAgICAgIDogTUlNSU1VTV9SRUxFQVNFX0FHRS5PTkVfREFZO1xuXG4gICAgLyoqXG4gICAgICogU2V0IG1pbmltdW0gcmVsZWFzZSBhZ2UgZXhjbHVkZSB0byBlbXB0eSBhcnJheSBpZiBub3QgcHJvdmlkZWRcbiAgICAgKi9cbiAgICB0aGlzLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZSA9IG9wdGlvbnMubWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlXG4gICAgICA/IFtcIkBjb2RlZHJpZnRlcnMvKlwiLCAuLi5vcHRpb25zLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZV1cbiAgICAgIDogW1wiQGNvZGVkcmlmdGVycy8qXCJdO1xuXG4gICAgLyoqXG4gICAgICogU2V0IG9ubHkgYnVpbHQgZGVwZW5kZW5jaWVzIHRvIGVtcHR5IGFycmF5IGlmIG5vdCBwcm92aWRlZFxuICAgICAqL1xuICAgIHRoaXMub25seUJ1aWx0RGVwZW5kZW5jaWVzID0gb3B0aW9ucy5vbmx5QnVpbHREZXBlbmRlbmNpZXNcbiAgICAgID8gb3B0aW9ucy5vbmx5QnVpbHREZXBlbmRlbmNpZXNcbiAgICAgIDogW107XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaWdub3JlZCBidWlsdCBkZXBlbmRlbmNpZXMgdG8gZW1wdHkgYXJyYXkgaWYgbm90IHByb3ZpZGVkXG4gICAgICovXG4gICAgdGhpcy5pZ25vcmVkQnVpbHREZXBlbmRlbmNpZXMgPSBvcHRpb25zLmlnbm9yZWRCdWlsdERlcGVuZGVuY2llc1xuICAgICAgPyBvcHRpb25zLmlnbm9yZWRCdWlsdERlcGVuZGVuY2llc1xuICAgICAgOiBbXTtcblxuICAgIC8qKlxuICAgICAqIEluIGNhc2UgdGhhdCB0aGlzIGZpbGUgaXMgaW4gYSBwYWNrYWdlLCBkb24ndCBwYWNrYWdlIGl0LlxuICAgICAqL1xuICAgIHByb2plY3QuYWRkUGFja2FnZUlnbm9yZSh0aGlzLmZpbGVOYW1lKTtcblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHBucG0gd29ya3NwYWNlIGZpbGVcbiAgICAgKi9cbiAgICBuZXcgWWFtbEZpbGUodGhpcy5wcm9qZWN0LCB0aGlzLmZpbGVOYW1lLCB7XG4gICAgICBvYmo6ICgpID0+IHtcbiAgICAgICAgY29uc3QgcG5wbUNvbmZpZzogYW55ID0ge307XG4gICAgICAgIGNvbnN0IHBhY2thZ2VzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgYW55IHN1YnByb2plY3RzIGV4aXN0LCBvdXRwdXQgYWxsIHN1YnByb2plY3RzIGluIHRoZSB3b3Jrc3BhY2UgYXNcbiAgICAgICAgICogcGFja2FnZXMuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5wcm9qZWN0LnN1YnByb2plY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHN1YnByb2plY3Qgb2YgcHJvamVjdC5zdWJwcm9qZWN0cykge1xuICAgICAgICAgICAgLy8gZ3JhYiB0aGUgcmVsYXRpdmUgb3V0IGRpcmVjdG9yeVxuICAgICAgICAgICAgcGFja2FnZXMucHVzaChyZWxhdGl2ZSh0aGlzLnByb2plY3Qub3V0ZGlyLCBzdWJwcm9qZWN0Lm91dGRpcikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgbWluaW11bSByZWxlYXNlIGFnZS5cbiAgICAgICAgICovXG4gICAgICAgIHBucG1Db25maWcubWluaW11bVJlbGVhc2VBZ2UgPSB0aGlzLm1pbmltdW1SZWxlYXNlQWdlO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgbWluaW11bSByZWxlYXNlIGFnZSBleGNsdWRlIGlmIGFueSBhcmUgcHJvdmlkZWQuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5taW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHBucG1Db25maWcubWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlID0gdGhpcy5taW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGU7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IG9ubHkgYnVpbHQgZGVwZW5kZW5jaWVzIGlmIGFueSBhcmUgcHJvdmlkZWQuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5vbmx5QnVpbHREZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHBucG1Db25maWcub25seUJ1aWx0RGVwZW5kZW5jaWVzID0gdGhpcy5vbmx5QnVpbHREZXBlbmRlbmNpZXM7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IGlnbm9yZWQgYnVpbHQgZGVwZW5kZW5jaWVzIGlmIGFueSBhcmUgcHJvdmlkZWQuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5pZ25vcmVkQnVpbHREZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHBucG1Db25maWcuaWdub3JlQnVpbHREZXBlbmRlbmNpZXMgPSB0aGlzLmlnbm9yZWRCdWlsdERlcGVuZGVuY2llcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXR1cm4gdGhlIGZpbmFsIHBucG0gY29uZmlnIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uKHBhY2thZ2VzLmxlbmd0aCA+IDAgPyB7IHBhY2thZ2VzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHBucG1Db25maWcgPyB7IC4uLnBucG1Db25maWcgfSA6IHt9KSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED