occam-model 1.0.496 → 1.0.498
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/.aiignore +11 -0
- package/.swcrc +3 -0
- package/lib/constants.js +6 -6
- package/lib/dependencies.js +48 -102
- package/lib/dependency.js +27 -66
- package/lib/directory.js +35 -90
- package/lib/entries.js +139 -226
- package/lib/file.js +65 -141
- package/lib/fileNames.js +14 -14
- package/lib/files.js +52 -109
- package/lib/index.js +17 -17
- package/lib/mixins/bnf.js +15 -15
- package/lib/mixins/entries.js +24 -24
- package/lib/mixins/files.js +16 -16
- package/lib/mixins/metaJSON.js +12 -12
- package/lib/mixins/vocabulary.js +15 -15
- package/lib/multiplers.js +4 -4
- package/lib/project.js +36 -78
- package/lib/projects.js +46 -100
- package/lib/propertyNames.js +4 -4
- package/lib/release.js +69 -114
- package/lib/releases.js +46 -100
- package/lib/shortenedVersion.js +40 -91
- package/lib/types.js +3 -3
- package/lib/utilities/content.js +7 -7
- package/lib/utilities/filePath.js +16 -16
- package/lib/utilities/files.js +20 -20
- package/lib/utilities/metaJSON.js +68 -68
- package/lib/utilities/name.js +4 -4
- package/lib/utilities/query.js +6 -6
- package/lib/utilities/version.js +13 -13
- package/lib/version.js +69 -141
- package/package.json +4 -4
package/lib/entries.js
CHANGED
|
@@ -8,244 +8,157 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return _default;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
function _class_call_check(instance, Constructor) {
|
|
20
|
-
if (!(instance instanceof Constructor)) {
|
|
21
|
-
throw new TypeError("Cannot call a class as a function");
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function _defineProperties(target, props) {
|
|
25
|
-
for(var i = 0; i < props.length; i++){
|
|
26
|
-
var descriptor = props[i];
|
|
27
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
28
|
-
descriptor.configurable = true;
|
|
29
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
30
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
34
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
35
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
36
|
-
return Constructor;
|
|
37
|
-
}
|
|
11
|
+
const _necessary = require("necessary");
|
|
12
|
+
const _file = /*#__PURE__*/ _interop_require_default(require("./file"));
|
|
13
|
+
const _files = /*#__PURE__*/ _interop_require_default(require("./files"));
|
|
14
|
+
const _directory = /*#__PURE__*/ _interop_require_default(require("./directory"));
|
|
15
|
+
const _bnf = /*#__PURE__*/ _interop_require_default(require("./mixins/bnf"));
|
|
16
|
+
const _files1 = /*#__PURE__*/ _interop_require_default(require("./mixins/files"));
|
|
17
|
+
const _metaJSON = /*#__PURE__*/ _interop_require_default(require("./mixins/metaJSON"));
|
|
18
|
+
const _vocabulary = /*#__PURE__*/ _interop_require_default(require("./mixins/vocabulary"));
|
|
38
19
|
function _interop_require_default(obj) {
|
|
39
20
|
return obj && obj.__esModule ? obj : {
|
|
40
21
|
default: obj
|
|
41
22
|
};
|
|
42
23
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
_class_call_check(this, Entries);
|
|
24
|
+
const { first, filter } = _necessary.arrayUtilities, { topmostDirectoryNameFromPath } = _necessary.pathUtilities;
|
|
25
|
+
class Entries {
|
|
26
|
+
constructor(array){
|
|
47
27
|
this.array = array;
|
|
48
28
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
var firstEntry = first(this.array); ///
|
|
61
|
-
if (firstEntry) {
|
|
62
|
-
var firstEntryPath = firstEntry.getPath();
|
|
63
|
-
topmostDirectoryName = topmostDirectoryNameFromPath(firstEntryPath);
|
|
64
|
-
if (topmostDirectoryName === null) {
|
|
65
|
-
topmostDirectoryName = firstEntryPath; ///
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return topmostDirectoryName;
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
key: "removeFileByPath",
|
|
73
|
-
value: function removeFileByPath(path) {
|
|
74
|
-
filter(this.array, function(entry) {
|
|
75
|
-
var entryFile = entry.isFile();
|
|
76
|
-
if (entryFile) {
|
|
77
|
-
var file = entry, filePath = file.getPath();
|
|
78
|
-
if (filePath === path) {
|
|
79
|
-
return false;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return true;
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
key: "findFile",
|
|
88
|
-
value: function findFile(filePath) {
|
|
89
|
-
var files = this.getFiles(), file = files.findFile(function(file) {
|
|
90
|
-
var filePathMatches = file.matchFilePath(filePath);
|
|
91
|
-
if (filePathMatches) {
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
}) || null;
|
|
95
|
-
return file;
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
key: "getFiles",
|
|
100
|
-
value: function getFiles() {
|
|
101
|
-
var files = _files.default.fromNothing();
|
|
102
|
-
this.mapEntry(function(entry) {
|
|
103
|
-
var entryFile = entry.isFile();
|
|
104
|
-
if (entryFile) {
|
|
105
|
-
var file = entry; ///
|
|
106
|
-
files.addFile(file);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
return files;
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
key: "getFilePaths",
|
|
114
|
-
value: function getFilePaths() {
|
|
115
|
-
var filePaths = this.reduceEntry(function(filePaths, entry) {
|
|
116
|
-
var entryFile = entry.isFile();
|
|
117
|
-
if (entryFile) {
|
|
118
|
-
var file = entry, filePath = file.getPath();
|
|
119
|
-
filePaths.push(filePath);
|
|
120
|
-
}
|
|
121
|
-
return filePaths;
|
|
122
|
-
}, []);
|
|
123
|
-
return filePaths;
|
|
124
|
-
}
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
key: "getDirectoryPaths",
|
|
128
|
-
value: function getDirectoryPaths() {
|
|
129
|
-
var directoryPaths = this.reduceEntry(function(directoryPaths, entry) {
|
|
130
|
-
var entryDirectory = entry.isDirectory();
|
|
131
|
-
if (entryDirectory) {
|
|
132
|
-
var directory = entry, directoryPath = directory.getPath();
|
|
133
|
-
directoryPaths.push(directoryPath);
|
|
134
|
-
}
|
|
135
|
-
return directoryPaths;
|
|
136
|
-
}, []);
|
|
137
|
-
return directoryPaths;
|
|
138
|
-
}
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
key: "matchShortenedVersion",
|
|
142
|
-
value: function matchShortenedVersion(shortenedVersion) {
|
|
143
|
-
var version = this.getVersion(), versionMatchesShortenedVersion = version.matchShortenedVersion(shortenedVersion);
|
|
144
|
-
return versionMatchesShortenedVersion;
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
key: "addFile",
|
|
149
|
-
value: function addFile(file) {
|
|
150
|
-
var entry = file; ///
|
|
151
|
-
this.addEntry(entry);
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
key: "addEntry",
|
|
156
|
-
value: function addEntry(entry) {
|
|
157
|
-
this.array.push(entry);
|
|
158
|
-
}
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
key: "addDirectory",
|
|
162
|
-
value: function addDirectory(directory) {
|
|
163
|
-
var entry = directory; ///
|
|
164
|
-
this.addEntry(entry);
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
key: "forEachFile",
|
|
169
|
-
value: function forEachFile(callback) {
|
|
170
|
-
var files = this.getFiles();
|
|
171
|
-
files.forEachFile(callback);
|
|
172
|
-
}
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
key: "mapEntry",
|
|
176
|
-
value: function mapEntry(callback) {
|
|
177
|
-
return this.array.map(callback);
|
|
178
|
-
}
|
|
179
|
-
},
|
|
180
|
-
{
|
|
181
|
-
key: "someEntry",
|
|
182
|
-
value: function someEntry(callback) {
|
|
183
|
-
return this.array.some(callback);
|
|
184
|
-
}
|
|
185
|
-
},
|
|
186
|
-
{
|
|
187
|
-
key: "everyEntry",
|
|
188
|
-
value: function everyEntry(callback) {
|
|
189
|
-
return this.array.every(callback);
|
|
190
|
-
}
|
|
191
|
-
},
|
|
192
|
-
{
|
|
193
|
-
key: "forEachEntry",
|
|
194
|
-
value: function forEachEntry(callback) {
|
|
195
|
-
this.array.forEach(callback);
|
|
196
|
-
}
|
|
197
|
-
},
|
|
198
|
-
{
|
|
199
|
-
key: "reduceEntry",
|
|
200
|
-
value: function reduceEntry(callback, initialValue) {
|
|
201
|
-
return this.array.reduce(callback, initialValue);
|
|
202
|
-
}
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
key: "toJSON",
|
|
206
|
-
value: function toJSON() {
|
|
207
|
-
var entriesJSON = this.array.map(function(entry) {
|
|
208
|
-
var entryJSON = entry.toJSON();
|
|
209
|
-
return entryJSON;
|
|
210
|
-
}), json = entriesJSON; ///
|
|
211
|
-
return json;
|
|
29
|
+
getArray() {
|
|
30
|
+
return this.array;
|
|
31
|
+
}
|
|
32
|
+
getTopmostDirectoryName() {
|
|
33
|
+
let topmostDirectoryName = null;
|
|
34
|
+
const firstEntry = first(this.array); ///
|
|
35
|
+
if (firstEntry) {
|
|
36
|
+
const firstEntryPath = firstEntry.getPath();
|
|
37
|
+
topmostDirectoryName = topmostDirectoryNameFromPath(firstEntryPath);
|
|
38
|
+
if (topmostDirectoryName === null) {
|
|
39
|
+
topmostDirectoryName = firstEntryPath; ///
|
|
212
40
|
}
|
|
213
41
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
{
|
|
227
|
-
key: "fromEntry",
|
|
228
|
-
value: function fromEntry(entry) {
|
|
229
|
-
var array = [
|
|
230
|
-
entry
|
|
231
|
-
], entries = new Entries(array);
|
|
232
|
-
return entries;
|
|
233
|
-
}
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
key: "fromNothing",
|
|
237
|
-
value: function fromNothing() {
|
|
238
|
-
var array = [], entries = new Entries(array);
|
|
239
|
-
return entries;
|
|
42
|
+
return topmostDirectoryName;
|
|
43
|
+
}
|
|
44
|
+
removeFileByPath(path) {
|
|
45
|
+
filter(this.array, (entry)=>{
|
|
46
|
+
const entryFile = entry.isFile();
|
|
47
|
+
if (entryFile) {
|
|
48
|
+
const file = entry, filePath = file.getPath();
|
|
49
|
+
if (filePath === path) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
240
52
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
53
|
+
return true;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
findFile(filePath) {
|
|
57
|
+
const files = this.getFiles(), file = files.findFile((file)=>{
|
|
58
|
+
const filePathMatches = file.matchFilePath(filePath);
|
|
59
|
+
if (filePathMatches) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
}) || null;
|
|
63
|
+
return file;
|
|
64
|
+
}
|
|
65
|
+
getFiles() {
|
|
66
|
+
const files = _files.default.fromNothing();
|
|
67
|
+
this.mapEntry((entry)=>{
|
|
68
|
+
const entryFile = entry.isFile();
|
|
69
|
+
if (entryFile) {
|
|
70
|
+
const file = entry; ///
|
|
71
|
+
files.addFile(file);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return files;
|
|
75
|
+
}
|
|
76
|
+
getFilePaths() {
|
|
77
|
+
const filePaths = this.reduceEntry((filePaths, entry)=>{
|
|
78
|
+
const entryFile = entry.isFile();
|
|
79
|
+
if (entryFile) {
|
|
80
|
+
const file = entry, filePath = file.getPath();
|
|
81
|
+
filePaths.push(filePath);
|
|
82
|
+
}
|
|
83
|
+
return filePaths;
|
|
84
|
+
}, []);
|
|
85
|
+
return filePaths;
|
|
86
|
+
}
|
|
87
|
+
getDirectoryPaths() {
|
|
88
|
+
const directoryPaths = this.reduceEntry((directoryPaths, entry)=>{
|
|
89
|
+
const entryDirectory = entry.isDirectory();
|
|
90
|
+
if (entryDirectory) {
|
|
91
|
+
const directory = entry, directoryPath = directory.getPath();
|
|
92
|
+
directoryPaths.push(directoryPath);
|
|
93
|
+
}
|
|
94
|
+
return directoryPaths;
|
|
95
|
+
}, []);
|
|
96
|
+
return directoryPaths;
|
|
97
|
+
}
|
|
98
|
+
matchShortenedVersion(shortenedVersion) {
|
|
99
|
+
const version = this.getVersion(), versionMatchesShortenedVersion = version.matchShortenedVersion(shortenedVersion);
|
|
100
|
+
return versionMatchesShortenedVersion;
|
|
101
|
+
}
|
|
102
|
+
addFile(file) {
|
|
103
|
+
const entry = file; ///
|
|
104
|
+
this.addEntry(entry);
|
|
105
|
+
}
|
|
106
|
+
addEntry(entry) {
|
|
107
|
+
this.array.push(entry);
|
|
108
|
+
}
|
|
109
|
+
addDirectory(directory) {
|
|
110
|
+
const entry = directory; ///
|
|
111
|
+
this.addEntry(entry);
|
|
112
|
+
}
|
|
113
|
+
forEachFile(callback) {
|
|
114
|
+
const files = this.getFiles();
|
|
115
|
+
files.forEachFile(callback);
|
|
116
|
+
}
|
|
117
|
+
mapEntry(callback) {
|
|
118
|
+
return this.array.map(callback);
|
|
119
|
+
}
|
|
120
|
+
someEntry(callback) {
|
|
121
|
+
return this.array.some(callback);
|
|
122
|
+
}
|
|
123
|
+
everyEntry(callback) {
|
|
124
|
+
return this.array.every(callback);
|
|
125
|
+
}
|
|
126
|
+
forEachEntry(callback) {
|
|
127
|
+
this.array.forEach(callback);
|
|
128
|
+
}
|
|
129
|
+
reduceEntry(callback, initialValue) {
|
|
130
|
+
return this.array.reduce(callback, initialValue);
|
|
131
|
+
}
|
|
132
|
+
toJSON() {
|
|
133
|
+
const entriesJSON = this.array.map((entry)=>{
|
|
134
|
+
const entryJSON = entry.toJSON();
|
|
135
|
+
return entryJSON;
|
|
136
|
+
}), json = entriesJSON; ///
|
|
137
|
+
return json;
|
|
138
|
+
}
|
|
139
|
+
static fromJSON(json) {
|
|
140
|
+
const array = [], entries = new Entries(array), entriesJSON = json; ///
|
|
141
|
+
entriesJSON.map((entryJSON)=>{
|
|
142
|
+
const json = entryJSON, file = _file.default.fromJSON(json), directory = _directory.default.fromJSON(json), entry = file || directory; ///
|
|
143
|
+
entries.addEntry(entry);
|
|
144
|
+
});
|
|
145
|
+
return entries;
|
|
146
|
+
}
|
|
147
|
+
static fromEntry(entry) {
|
|
148
|
+
const array = [
|
|
149
|
+
entry
|
|
150
|
+
], entries = new Entries(array);
|
|
151
|
+
return entries;
|
|
152
|
+
}
|
|
153
|
+
static fromNothing() {
|
|
154
|
+
const array = [], entries = new Entries(array);
|
|
155
|
+
return entries;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
245
158
|
Object.assign(Entries.prototype, _bnf.default);
|
|
246
159
|
Object.assign(Entries.prototype, _files1.default);
|
|
247
160
|
Object.assign(Entries.prototype, _metaJSON.default);
|
|
248
161
|
Object.assign(Entries.prototype, _vocabulary.default);
|
|
249
|
-
|
|
162
|
+
const _default = Entries;
|
|
250
163
|
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lbnRyaWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBwYXRoVXRpbGl0aWVzLCBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IEZpbGUgZnJvbSBcIi4vZmlsZVwiO1xuaW1wb3J0IEZpbGVzIGZyb20gXCIuL2ZpbGVzXCI7XG5pbXBvcnQgRGlyZWN0b3J5IGZyb20gXCIuL2RpcmVjdG9yeVwiO1xuaW1wb3J0IGJuZk1peGlucyBmcm9tIFwiLi9taXhpbnMvYm5mXCI7XG5pbXBvcnQgZmlsZXNNaXhpbnMgZnJvbSBcIi4vbWl4aW5zL2ZpbGVzXCI7XG5pbXBvcnQgbWV0YUpTT05NaXhpbnMgZnJvbSBcIi4vbWl4aW5zL21ldGFKU09OXCI7XG5pbXBvcnQgdm9jYWJ1bGFyeU1peGlucyBmcm9tIFwiLi9taXhpbnMvdm9jYWJ1bGFyeVwiO1xuXG5jb25zdCB7IGZpcnN0LCBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIH0gPSBwYXRoVXRpbGl0aWVzO1xuXG5jbGFzcyBFbnRyaWVzIHtcbiAgY29uc3RydWN0b3IoYXJyYXkpIHtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG4gIH1cblxuICBnZXRBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheTtcbiAgfVxuXG4gIGdldFRvcG1vc3REaXJlY3RvcnlOYW1lKCkge1xuICAgIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IG51bGw7XG4gICAgXG4gICAgY29uc3QgZmlyc3RFbnRyeSA9IGZpcnN0KHRoaXMuYXJyYXkpOyAvLy9cblxuICAgIGlmIChmaXJzdEVudHJ5KSB7IC8vL1xuICAgICAgY29uc3QgZmlyc3RFbnRyeVBhdGggPSBmaXJzdEVudHJ5LmdldFBhdGgoKTtcblxuICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGZpcnN0RW50cnlQYXRoKTtcblxuICAgICAgaWYgKHRvcG1vc3REaXJlY3RvcnlOYW1lID09PSBudWxsKSB7XG4gICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lID0gZmlyc3RFbnRyeVBhdGg7ICAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9wbW9zdERpcmVjdG9yeU5hbWU7XG4gIH1cblxuICByZW1vdmVGaWxlQnlQYXRoKHBhdGgpIHtcbiAgICBmaWx0ZXIodGhpcy5hcnJheSwgKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSBlbnRyeS5pc0ZpbGUoKTtcblxuICAgICAgaWYgKGVudHJ5RmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZW50cnksIC8vL1xuICAgICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpO1xuXG4gICAgICAgIGlmIChmaWxlUGF0aCA9PT0gcGF0aCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGZpbmRGaWxlKGZpbGVQYXRoKSB7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzKCksXG4gICAgICAgICAgZmlsZSA9IGZpbGVzLmZpbmRGaWxlKChmaWxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aE1hdGNoZXMgPSBmaWxlLm1hdGNoRmlsZVBhdGgoZmlsZVBhdGgpO1xuXG4gICAgICAgICAgICBpZiAoZmlsZVBhdGhNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGdldEZpbGVzKCkge1xuICAgIGNvbnN0IGZpbGVzID0gRmlsZXMuZnJvbU5vdGhpbmcoKTtcblxuICAgIHRoaXMubWFwRW50cnkoKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSBlbnRyeS5pc0ZpbGUoKTtcblxuICAgICAgaWYgKGVudHJ5RmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZW50cnk7IC8vL1xuXG4gICAgICAgIGZpbGVzLmFkZEZpbGUoZmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmlsZXM7XG4gIH1cblxuICBnZXRGaWxlUGF0aHMoKSB7XG4gICAgY29uc3QgZmlsZVBhdGhzID0gdGhpcy5yZWR1Y2VFbnRyeSgoZmlsZVBhdGhzLCBlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gZW50cnkuaXNGaWxlKCk7XG5cbiAgICAgIGlmIChlbnRyeUZpbGUpIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IGVudHJ5LCAvLy9cbiAgICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlLmdldFBhdGgoKTtcblxuICAgICAgICBmaWxlUGF0aHMucHVzaChmaWxlUGF0aCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWxlUGF0aHM7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRocztcbiAgfVxuXG4gIGdldERpcmVjdG9yeVBhdGhzKCkge1xuICAgIGNvbnN0IGRpcmVjdG9yeVBhdGhzID0gdGhpcy5yZWR1Y2VFbnRyeSgoZGlyZWN0b3J5UGF0aHMsIGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeURpcmVjdG9yeSA9IGVudHJ5LmlzRGlyZWN0b3J5KCk7XG5cbiAgICAgIGlmIChlbnRyeURpcmVjdG9yeSkge1xuICAgICAgICBjb25zdCBkaXJlY3RvcnkgPSBlbnRyeSwgLy8vXG4gICAgICAgICAgICAgIGRpcmVjdG9yeVBhdGggPSBkaXJlY3RvcnkuZ2V0UGF0aCgpO1xuXG4gICAgICAgIGRpcmVjdG9yeVBhdGhzLnB1c2goZGlyZWN0b3J5UGF0aCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkaXJlY3RvcnlQYXRocztcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gZGlyZWN0b3J5UGF0aHM7XG4gIH1cblxuICBtYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbikge1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFZlcnNpb24oKSxcbiAgICAgICAgICB2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb24gPSB2ZXJzaW9uLm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIHJldHVybiB2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb247XG4gIH1cblxuICBhZGRGaWxlKGZpbGUpIHtcbiAgICBjb25zdCBlbnRyeSA9IGZpbGU7IC8vL1xuXG4gICAgdGhpcy5hZGRFbnRyeShlbnRyeSk7XG4gIH1cblxuICBhZGRFbnRyeShlbnRyeSkgeyB0aGlzLmFycmF5LnB1c2goZW50cnkpOyB9XG5cbiAgYWRkRGlyZWN0b3J5KGRpcmVjdG9yeSkge1xuICAgIGNvbnN0IGVudHJ5ID0gZGlyZWN0b3J5OyAgLy8vXG5cbiAgICB0aGlzLmFkZEVudHJ5KGVudHJ5KTtcbiAgfVxuXG4gIGZvckVhY2hGaWxlKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzKCk7XG5cbiAgICBmaWxlcy5mb3JFYWNoRmlsZShjYWxsYmFjayk7XG4gIH1cblxuICBtYXBFbnRyeShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5tYXAoY2FsbGJhY2spOyB9XG5cbiAgc29tZUVudHJ5KGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmFycmF5LnNvbWUoY2FsbGJhY2spOyB9XG5cbiAgZXZlcnlFbnRyeShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5ldmVyeShjYWxsYmFjayk7IH1cblxuICBmb3JFYWNoRW50cnkoY2FsbGJhY2spIHsgdGhpcy5hcnJheS5mb3JFYWNoKGNhbGxiYWNrKTsgfVxuXG4gIHJlZHVjZUVudHJ5KGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHsgcmV0dXJuIHRoaXMuYXJyYXkucmVkdWNlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpOyB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGVudHJpZXNKU09OID0gdGhpcy5hcnJheS5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeUpTT04gPSBlbnRyeS50b0pTT04oKTtcbiAgXG4gICAgICAgICAgICByZXR1cm4gZW50cnlKU09OO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGpzb24gPSBlbnRyaWVzSlNPTjsgLy8vXG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpLFxuICAgICAgICAgIGVudHJpZXNKU09OID0ganNvbjsgLy8vXG5cbiAgICBlbnRyaWVzSlNPTi5tYXAoKGVudHJ5SlNPTikgPT4ge1xuICAgICAgY29uc3QganNvbiA9IGVudHJ5SlNPTiwgLy8vXG4gICAgICAgICAgICBmaWxlID0gRmlsZS5mcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5mcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIGVudHJ5ID0gZmlsZSB8fCBkaXJlY3Rvcnk7ICAvLy9cblxuICAgICAgZW50cmllcy5hZGRFbnRyeShlbnRyeSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW50cmllcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRW50cnkoZW50cnkpIHtcbiAgICBjb25zdCBhcnJheSA9IFtcbiAgICAgICAgICAgIGVudHJ5XG4gICAgICAgICAgXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpO1xuXG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpO1xuXG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cbn1cblxuT2JqZWN0LmFzc2lnbihFbnRyaWVzLnByb3RvdHlwZSwgYm5mTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIGZpbGVzTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIG1ldGFKU09OTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIHZvY2FidWxhcnlNaXhpbnMpO1xuXG5leHBvcnQgZGVmYXVsdCBFbnRyaWVzO1xuIl0sIm5hbWVzIjpbImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJmaWx0ZXIiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIiwicGF0aFV0aWxpdGllcyIsIkVudHJpZXMiLCJhcnJheSIsImdldEFycmF5IiwiZ2V0VG9wbW9zdERpcmVjdG9yeU5hbWUiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZSIsImZpcnN0RW50cnkiLCJmaXJzdEVudHJ5UGF0aCIsImdldFBhdGgiLCJyZW1vdmVGaWxlQnlQYXRoIiwicGF0aCIsImVudHJ5IiwiZW50cnlGaWxlIiwiaXNGaWxlIiwiZmlsZSIsImZpbGVQYXRoIiwiZmluZEZpbGUiLCJmaWxlcyIsImdldEZpbGVzIiwiZmlsZVBhdGhNYXRjaGVzIiwibWF0Y2hGaWxlUGF0aCIsIkZpbGVzIiwiZnJvbU5vdGhpbmciLCJtYXBFbnRyeSIsImFkZEZpbGUiLCJnZXRGaWxlUGF0aHMiLCJmaWxlUGF0aHMiLCJyZWR1Y2VFbnRyeSIsInB1c2giLCJnZXREaXJlY3RvcnlQYXRocyIsImRpcmVjdG9yeVBhdGhzIiwiZW50cnlEaXJlY3RvcnkiLCJpc0RpcmVjdG9yeSIsImRpcmVjdG9yeSIsImRpcmVjdG9yeVBhdGgiLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJzaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb24iLCJhZGRFbnRyeSIsImFkZERpcmVjdG9yeSIsImZvckVhY2hGaWxlIiwiY2FsbGJhY2siLCJtYXAiLCJzb21lRW50cnkiLCJzb21lIiwiZXZlcnlFbnRyeSIsImV2ZXJ5IiwiZm9yRWFjaEVudHJ5IiwiZm9yRWFjaCIsImluaXRpYWxWYWx1ZSIsInJlZHVjZSIsInRvSlNPTiIsImVudHJpZXNKU09OIiwiZW50cnlKU09OIiwianNvbiIsImZyb21KU09OIiwiZW50cmllcyIsIkZpbGUiLCJEaXJlY3RvcnkiLCJmcm9tRW50cnkiLCJPYmplY3QiLCJhc3NpZ24iLCJwcm90b3R5cGUiLCJibmZNaXhpbnMiLCJmaWxlc01peGlucyIsIm1ldGFKU09OTWl4aW5zIiwidm9jYWJ1bGFyeU1peGlucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBaU5BOzs7ZUFBQTs7O3lCQS9NOEM7MkRBRTdCOzREQUNDO2dFQUNJOzBEQUNBOzZEQUNFOytEQUNHO2lFQUNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTdCLElBQVFBLFFBQWtCQyx5QkFBYyxDQUFoQ0QsT0FBT0UsU0FBV0QseUJBQWMsQ0FBekJDLFFBQ1QsQUFBRUMsK0JBQWlDQyx3QkFBYSxDQUE5Q0Q7QUFFUixJQUFBLEFBQU1FLHdCQUFOO2FBQU1BLFFBQ1FDLEtBQUs7Z0NBRGJEO1FBRUYsSUFBSSxDQUFDQyxLQUFLLEdBQUdBOztrQkFGWEQ7O1lBS0pFLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0QsS0FBSztZQUNuQjs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJQyx1QkFBdUI7Z0JBRTNCLElBQU1DLGFBQWFWLE1BQU0sSUFBSSxDQUFDTSxLQUFLLEdBQUcsR0FBRztnQkFFekMsSUFBSUksWUFBWTtvQkFDZCxJQUFNQyxpQkFBaUJELFdBQVdFLE9BQU87b0JBRXpDSCx1QkFBdUJOLDZCQUE2QlE7b0JBRXBELElBQUlGLHlC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
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lbnRyaWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBwYXRoVXRpbGl0aWVzLCBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IEZpbGUgZnJvbSBcIi4vZmlsZVwiO1xuaW1wb3J0IEZpbGVzIGZyb20gXCIuL2ZpbGVzXCI7XG5pbXBvcnQgRGlyZWN0b3J5IGZyb20gXCIuL2RpcmVjdG9yeVwiO1xuaW1wb3J0IGJuZk1peGlucyBmcm9tIFwiLi9taXhpbnMvYm5mXCI7XG5pbXBvcnQgZmlsZXNNaXhpbnMgZnJvbSBcIi4vbWl4aW5zL2ZpbGVzXCI7XG5pbXBvcnQgbWV0YUpTT05NaXhpbnMgZnJvbSBcIi4vbWl4aW5zL21ldGFKU09OXCI7XG5pbXBvcnQgdm9jYWJ1bGFyeU1peGlucyBmcm9tIFwiLi9taXhpbnMvdm9jYWJ1bGFyeVwiO1xuXG5jb25zdCB7IGZpcnN0LCBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIH0gPSBwYXRoVXRpbGl0aWVzO1xuXG5jbGFzcyBFbnRyaWVzIHtcbiAgY29uc3RydWN0b3IoYXJyYXkpIHtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG4gIH1cblxuICBnZXRBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheTtcbiAgfVxuXG4gIGdldFRvcG1vc3REaXJlY3RvcnlOYW1lKCkge1xuICAgIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IG51bGw7XG4gICAgXG4gICAgY29uc3QgZmlyc3RFbnRyeSA9IGZpcnN0KHRoaXMuYXJyYXkpOyAvLy9cblxuICAgIGlmIChmaXJzdEVudHJ5KSB7IC8vL1xuICAgICAgY29uc3QgZmlyc3RFbnRyeVBhdGggPSBmaXJzdEVudHJ5LmdldFBhdGgoKTtcblxuICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGZpcnN0RW50cnlQYXRoKTtcblxuICAgICAgaWYgKHRvcG1vc3REaXJlY3RvcnlOYW1lID09PSBudWxsKSB7XG4gICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lID0gZmlyc3RFbnRyeVBhdGg7ICAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9wbW9zdERpcmVjdG9yeU5hbWU7XG4gIH1cblxuICByZW1vdmVGaWxlQnlQYXRoKHBhdGgpIHtcbiAgICBmaWx0ZXIodGhpcy5hcnJheSwgKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSBlbnRyeS5pc0ZpbGUoKTtcblxuICAgICAgaWYgKGVudHJ5RmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZW50cnksIC8vL1xuICAgICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpO1xuXG4gICAgICAgIGlmIChmaWxlUGF0aCA9PT0gcGF0aCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGZpbmRGaWxlKGZpbGVQYXRoKSB7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzKCksXG4gICAgICAgICAgZmlsZSA9IGZpbGVzLmZpbmRGaWxlKChmaWxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aE1hdGNoZXMgPSBmaWxlLm1hdGNoRmlsZVBhdGgoZmlsZVBhdGgpO1xuXG4gICAgICAgICAgICBpZiAoZmlsZVBhdGhNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGdldEZpbGVzKCkge1xuICAgIGNvbnN0IGZpbGVzID0gRmlsZXMuZnJvbU5vdGhpbmcoKTtcblxuICAgIHRoaXMubWFwRW50cnkoKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSBlbnRyeS5pc0ZpbGUoKTtcblxuICAgICAgaWYgKGVudHJ5RmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZW50cnk7IC8vL1xuXG4gICAgICAgIGZpbGVzLmFkZEZpbGUoZmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmlsZXM7XG4gIH1cblxuICBnZXRGaWxlUGF0aHMoKSB7XG4gICAgY29uc3QgZmlsZVBhdGhzID0gdGhpcy5yZWR1Y2VFbnRyeSgoZmlsZVBhdGhzLCBlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gZW50cnkuaXNGaWxlKCk7XG5cbiAgICAgIGlmIChlbnRyeUZpbGUpIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IGVudHJ5LCAvLy9cbiAgICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlLmdldFBhdGgoKTtcblxuICAgICAgICBmaWxlUGF0aHMucHVzaChmaWxlUGF0aCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWxlUGF0aHM7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRocztcbiAgfVxuXG4gIGdldERpcmVjdG9yeVBhdGhzKCkge1xuICAgIGNvbnN0IGRpcmVjdG9yeVBhdGhzID0gdGhpcy5yZWR1Y2VFbnRyeSgoZGlyZWN0b3J5UGF0aHMsIGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeURpcmVjdG9yeSA9IGVudHJ5LmlzRGlyZWN0b3J5KCk7XG5cbiAgICAgIGlmIChlbnRyeURpcmVjdG9yeSkge1xuICAgICAgICBjb25zdCBkaXJlY3RvcnkgPSBlbnRyeSwgLy8vXG4gICAgICAgICAgICAgIGRpcmVjdG9yeVBhdGggPSBkaXJlY3RvcnkuZ2V0UGF0aCgpO1xuXG4gICAgICAgIGRpcmVjdG9yeVBhdGhzLnB1c2goZGlyZWN0b3J5UGF0aCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkaXJlY3RvcnlQYXRocztcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gZGlyZWN0b3J5UGF0aHM7XG4gIH1cblxuICBtYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbikge1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFZlcnNpb24oKSxcbiAgICAgICAgICB2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb24gPSB2ZXJzaW9uLm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIHJldHVybiB2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb247XG4gIH1cblxuICBhZGRGaWxlKGZpbGUpIHtcbiAgICBjb25zdCBlbnRyeSA9IGZpbGU7IC8vL1xuXG4gICAgdGhpcy5hZGRFbnRyeShlbnRyeSk7XG4gIH1cblxuICBhZGRFbnRyeShlbnRyeSkgeyB0aGlzLmFycmF5LnB1c2goZW50cnkpOyB9XG5cbiAgYWRkRGlyZWN0b3J5KGRpcmVjdG9yeSkge1xuICAgIGNvbnN0IGVudHJ5ID0gZGlyZWN0b3J5OyAgLy8vXG5cbiAgICB0aGlzLmFkZEVudHJ5KGVudHJ5KTtcbiAgfVxuXG4gIGZvckVhY2hGaWxlKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzKCk7XG5cbiAgICBmaWxlcy5mb3JFYWNoRmlsZShjYWxsYmFjayk7XG4gIH1cblxuICBtYXBFbnRyeShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5tYXAoY2FsbGJhY2spOyB9XG5cbiAgc29tZUVudHJ5KGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmFycmF5LnNvbWUoY2FsbGJhY2spOyB9XG5cbiAgZXZlcnlFbnRyeShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5ldmVyeShjYWxsYmFjayk7IH1cblxuICBmb3JFYWNoRW50cnkoY2FsbGJhY2spIHsgdGhpcy5hcnJheS5mb3JFYWNoKGNhbGxiYWNrKTsgfVxuXG4gIHJlZHVjZUVudHJ5KGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHsgcmV0dXJuIHRoaXMuYXJyYXkucmVkdWNlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpOyB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGVudHJpZXNKU09OID0gdGhpcy5hcnJheS5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeUpTT04gPSBlbnRyeS50b0pTT04oKTtcbiAgXG4gICAgICAgICAgICByZXR1cm4gZW50cnlKU09OO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGpzb24gPSBlbnRyaWVzSlNPTjsgLy8vXG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpLFxuICAgICAgICAgIGVudHJpZXNKU09OID0ganNvbjsgLy8vXG5cbiAgICBlbnRyaWVzSlNPTi5tYXAoKGVudHJ5SlNPTikgPT4ge1xuICAgICAgY29uc3QganNvbiA9IGVudHJ5SlNPTiwgLy8vXG4gICAgICAgICAgICBmaWxlID0gRmlsZS5mcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5mcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIGVudHJ5ID0gZmlsZSB8fCBkaXJlY3Rvcnk7ICAvLy9cblxuICAgICAgZW50cmllcy5hZGRFbnRyeShlbnRyeSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW50cmllcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRW50cnkoZW50cnkpIHtcbiAgICBjb25zdCBhcnJheSA9IFtcbiAgICAgICAgICAgIGVudHJ5XG4gICAgICAgICAgXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpO1xuXG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpO1xuXG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cbn1cblxuT2JqZWN0LmFzc2lnbihFbnRyaWVzLnByb3RvdHlwZSwgYm5mTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIGZpbGVzTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIG1ldGFKU09OTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIHZvY2FidWxhcnlNaXhpbnMpO1xuXG5leHBvcnQgZGVmYXVsdCBFbnRyaWVzO1xuIl0sIm5hbWVzIjpbImZpcnN0IiwiZmlsdGVyIiwiYXJyYXlVdGlsaXRpZXMiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIiwicGF0aFV0aWxpdGllcyIsIkVudHJpZXMiLCJhcnJheSIsImdldEFycmF5IiwiZ2V0VG9wbW9zdERpcmVjdG9yeU5hbWUiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZSIsImZpcnN0RW50cnkiLCJmaXJzdEVudHJ5UGF0aCIsImdldFBhdGgiLCJyZW1vdmVGaWxlQnlQYXRoIiwicGF0aCIsImVudHJ5IiwiZW50cnlGaWxlIiwiaXNGaWxlIiwiZmlsZSIsImZpbGVQYXRoIiwiZmluZEZpbGUiLCJmaWxlcyIsImdldEZpbGVzIiwiZmlsZVBhdGhNYXRjaGVzIiwibWF0Y2hGaWxlUGF0aCIsIkZpbGVzIiwiZnJvbU5vdGhpbmciLCJtYXBFbnRyeSIsImFkZEZpbGUiLCJnZXRGaWxlUGF0aHMiLCJmaWxlUGF0aHMiLCJyZWR1Y2VFbnRyeSIsInB1c2giLCJnZXREaXJlY3RvcnlQYXRocyIsImRpcmVjdG9yeVBhdGhzIiwiZW50cnlEaXJlY3RvcnkiLCJpc0RpcmVjdG9yeSIsImRpcmVjdG9yeSIsImRpcmVjdG9yeVBhdGgiLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJzaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb24iLCJhZGRFbnRyeSIsImFkZERpcmVjdG9yeSIsImZvckVhY2hGaWxlIiwiY2FsbGJhY2siLCJtYXAiLCJzb21lRW50cnkiLCJzb21lIiwiZXZlcnlFbnRyeSIsImV2ZXJ5IiwiZm9yRWFjaEVudHJ5IiwiZm9yRWFjaCIsImluaXRpYWxWYWx1ZSIsInJlZHVjZSIsInRvSlNPTiIsImVudHJpZXNKU09OIiwiZW50cnlKU09OIiwianNvbiIsImZyb21KU09OIiwiZW50cmllcyIsIkZpbGUiLCJEaXJlY3RvcnkiLCJmcm9tRW50cnkiLCJPYmplY3QiLCJhc3NpZ24iLCJwcm90b3R5cGUiLCJibmZNaXhpbnMiLCJmaWxlc01peGlucyIsIm1ldGFKU09OTWl4aW5zIiwidm9jYWJ1bGFyeU1peGlucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBaU5BOzs7ZUFBQTs7OzJCQS9NOEM7NkRBRTdCOzhEQUNDO2tFQUNJOzREQUNBOytEQUNFO2lFQUNHO21FQUNFOzs7Ozs7QUFFN0IsTUFBTSxFQUFFQSxLQUFLLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyx5QkFBYyxFQUNsQyxFQUFFQyw0QkFBNEIsRUFBRSxHQUFHQyx3QkFBYTtBQUV0RCxNQUFNQztJQUNKLFlBQVlDLEtBQUssQ0FBRTtRQUNqQixJQUFJLENBQUNBLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsMEJBQTBCO1FBQ3hCLElBQUlDLHVCQUF1QjtRQUUzQixNQUFNQyxhQUFhVixNQUFNLElBQUksQ0FBQ00sS0FBSyxHQUFHLEdBQUc7UUFFekMsSUFBSUksWUFBWTtZQUNkLE1BQU1DLGlCQUFpQkQsV0FBV0UsT0FBTztZQUV6Q0gsdUJBQXVCTiw2QkFBNkJRO1lBRXBELElBQUlGLHlCQUF5QixNQUFNO2dCQUNqQ0EsdUJBQXVCRSxnQkFBaUIsR0FBRztZQUM3QztRQUNGO1FBRUEsT0FBT0Y7SUFDVDtJQUVBSSxp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
|