@appium/support 2.56.1 → 2.57.0
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/build/lib/env.d.ts +54 -0
- package/build/lib/env.d.ts.map +1 -0
- package/build/lib/fs.d.ts +221 -0
- package/build/lib/fs.d.ts.map +1 -0
- package/build/lib/fs.js +1 -1
- package/build/lib/image-util.d.ts +56 -0
- package/build/lib/image-util.d.ts.map +1 -0
- package/build/lib/image-util.js +2 -3
- package/build/lib/index.d.ts +38 -0
- package/build/lib/index.d.ts.map +1 -0
- package/build/lib/index.js +20 -14
- package/build/lib/log-internal.d.ts +74 -0
- package/build/lib/log-internal.d.ts.map +1 -0
- package/build/lib/log-internal.js +10 -18
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logging.d.ts +45 -0
- package/build/lib/logging.d.ts.map +1 -0
- package/build/lib/logging.js +11 -13
- package/build/lib/mjpeg.d.ts +65 -0
- package/build/lib/mjpeg.d.ts.map +1 -0
- package/build/lib/mjpeg.js +11 -4
- package/build/lib/mkdirp.d.ts +3 -0
- package/build/lib/mkdirp.d.ts.map +1 -0
- package/build/lib/net.d.ts +95 -0
- package/build/lib/net.d.ts.map +1 -0
- package/build/lib/net.js +41 -23
- package/build/lib/node.d.ts +26 -0
- package/build/lib/node.d.ts.map +1 -0
- package/build/lib/node.js +4 -2
- package/build/lib/npm.d.ts +123 -0
- package/build/lib/npm.d.ts.map +1 -0
- package/build/lib/npm.js +18 -41
- package/build/lib/plist.d.ts +43 -0
- package/build/lib/plist.d.ts.map +1 -0
- package/build/lib/plist.js +1 -1
- package/build/lib/process.d.ts +3 -0
- package/build/lib/process.d.ts.map +1 -0
- package/build/lib/system.d.ts +7 -0
- package/build/lib/system.d.ts.map +1 -0
- package/build/lib/tempdir.d.ts +63 -0
- package/build/lib/tempdir.d.ts.map +1 -0
- package/build/lib/tempdir.js +3 -6
- package/build/lib/timing.d.ts +46 -0
- package/build/lib/timing.d.ts.map +1 -0
- package/build/lib/util.d.ts +183 -0
- package/build/lib/util.d.ts.map +1 -0
- package/build/lib/util.js +4 -8
- package/build/lib/zip.d.ts +180 -0
- package/build/lib/zip.d.ts.map +1 -0
- package/build/lib/zip.js +6 -2
- package/build/tsconfig.tsbuildinfo +1 -0
- package/lib/fs.js +9 -4
- package/lib/image-util.js +23 -7
- package/lib/index.js +2 -8
- package/lib/log-internal.js +31 -38
- package/lib/logging.js +40 -16
- package/lib/mjpeg.js +14 -5
- package/lib/net.js +116 -60
- package/lib/node.js +4 -4
- package/lib/npm.js +33 -90
- package/lib/plist.js +3 -1
- package/lib/tempdir.js +8 -7
- package/lib/util.js +10 -11
- package/lib/zip.js +24 -13
- package/package.json +14 -7
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common options for {@linkcode uploadFile } and {@linkcode downloadFile }.
|
|
3
|
+
*/
|
|
4
|
+
export type NetOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* - Whether to log the actual download performance
|
|
7
|
+
* (e.g. timings and speed)
|
|
8
|
+
*/
|
|
9
|
+
isMetered?: boolean | undefined;
|
|
10
|
+
auth: AuthCredentials;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Specific options for {@linkcode downloadFile }.
|
|
14
|
+
*/
|
|
15
|
+
export type DownloadOptions = {
|
|
16
|
+
/**
|
|
17
|
+
* - The actual request timeout in milliseconds; defaults to {@linkcode DEFAULT_TIMEOUT_MS }
|
|
18
|
+
*/
|
|
19
|
+
timeout?: number | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* - Request headers mapping
|
|
22
|
+
*/
|
|
23
|
+
headers: Record<string, any>;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Basic auth credentials; used by {@linkcode NetOptions }.
|
|
27
|
+
*/
|
|
28
|
+
export type AuthCredentials = {
|
|
29
|
+
/**
|
|
30
|
+
* - Non-empty user name
|
|
31
|
+
*/
|
|
32
|
+
user: string;
|
|
33
|
+
/**
|
|
34
|
+
* - Non-empty password
|
|
35
|
+
*/
|
|
36
|
+
pass: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* This type is used in {@linkcode uploadFile } if the remote location uses the `ftp` protocol, and distinguishes the type from {@linkcode HttpUploadOptions }.
|
|
40
|
+
*/
|
|
41
|
+
export type NotHttpUploadOptions = {
|
|
42
|
+
headers: never;
|
|
43
|
+
method: never;
|
|
44
|
+
timeout: never;
|
|
45
|
+
fileFieldName: never;
|
|
46
|
+
formFields: never;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Specific options for {@linkcode uploadFile } if the remote location uses the `http(s)` protocol
|
|
50
|
+
*/
|
|
51
|
+
export type HttpUploadOptions = {
|
|
52
|
+
/**
|
|
53
|
+
* - Additional request headers mapping
|
|
54
|
+
*/
|
|
55
|
+
headers: Record<string, any>;
|
|
56
|
+
/**
|
|
57
|
+
* - The HTTP method used for file upload
|
|
58
|
+
*/
|
|
59
|
+
method?: import("axios").Method | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* - The actual request timeout in milliseconds; defaults to {@linkcode DEFAULT_TIMEOUT_MS }
|
|
62
|
+
*/
|
|
63
|
+
timeout?: number | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* - The name of the form field containing the file
|
|
66
|
+
* content to be uploaded. Any falsy value make the request to use non-multipart upload
|
|
67
|
+
*/
|
|
68
|
+
fileFieldName?: string | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* - The additional form fields
|
|
71
|
+
* to be included into the upload request. This property is only considered if
|
|
72
|
+
* `fileFieldName` is set
|
|
73
|
+
*/
|
|
74
|
+
formFields?: Record<string, any> | undefined;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Uploads the given file to a remote location. HTTP(S) and FTP
|
|
78
|
+
* protocols are supported.
|
|
79
|
+
*
|
|
80
|
+
* @param {string} localPath - The path to a file on the local storage.
|
|
81
|
+
* @param {string} remoteUri - The remote URI to upload the file to.
|
|
82
|
+
* @param {(HttpUploadOptions|NotHttpUploadOptions) & NetOptions} [uploadOptions]
|
|
83
|
+
* @returns {Promise<void>}
|
|
84
|
+
*/
|
|
85
|
+
export function uploadFile(localPath: string, remoteUri: string, uploadOptions?: ((HttpUploadOptions | NotHttpUploadOptions) & NetOptions) | undefined): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Downloads the given file via HTTP(S)
|
|
88
|
+
*
|
|
89
|
+
* @param {string} remoteUrl - The remote url
|
|
90
|
+
* @param {string} dstPath - The local path to download the file to
|
|
91
|
+
* @param {DownloadOptions & NetOptions} [downloadOptions]
|
|
92
|
+
* @throws {Error} If download operation fails
|
|
93
|
+
*/
|
|
94
|
+
export function downloadFile(remoteUrl: string, dstPath: string, downloadOptions?: (DownloadOptions & NetOptions) | undefined): Promise<void>;
|
|
95
|
+
//# sourceMappingURL=net.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net.d.ts","sourceRoot":"","sources":["../../lib/net.js"],"names":[],"mappings":";;;;;;;;;UAuRc,eAAe;;;;;;;;;;;;;aAOf,OAAO,MAAM,EAAC,GAAG,CAAC;;;;;;;;;UAMlB,MAAM;;;;UACN,MAAM;;;;;;aAMN,KAAK;YACL,KAAK;aACL,KAAK;mBACL,KAAK;gBACL,KAAK;;;;;;;;;aAML,OAAO,MAAM,EAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;AAzJhC;;;;;;;;GAQG;AACH,sCALW,MAAM,aACN,MAAM,0FAEJ,QAAQ,IAAI,CAAC,CAmCzB;AAED;;;;;;;GAOG;AACH,wCALW,MAAM,WACN,MAAM,+EAkEhB"}
|
package/build/lib/net.js
CHANGED
|
@@ -14,8 +14,6 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
14
14
|
|
|
15
15
|
var _fs = _interopRequireDefault(require("./fs"));
|
|
16
16
|
|
|
17
|
-
var _url = _interopRequireDefault(require("url"));
|
|
18
|
-
|
|
19
17
|
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
20
18
|
|
|
21
19
|
var _util = require("./util");
|
|
@@ -38,8 +36,8 @@ function toAxiosAuth(auth) {
|
|
|
38
36
|
}
|
|
39
37
|
|
|
40
38
|
const axiosAuth = {
|
|
41
|
-
username: auth
|
|
42
|
-
password: auth
|
|
39
|
+
username: _lodash.default.get(auth, 'username', _lodash.default.get(auth, 'user')),
|
|
40
|
+
password: _lodash.default.get(auth, 'password', _lodash.default.get(auth, 'pass'))
|
|
43
41
|
};
|
|
44
42
|
return axiosAuth.username && axiosAuth.password ? axiosAuth : null;
|
|
45
43
|
}
|
|
@@ -89,7 +87,9 @@ async function uploadFileToHttp(localFileStream, parsedUri, uploadOptions = {})
|
|
|
89
87
|
}
|
|
90
88
|
}
|
|
91
89
|
|
|
92
|
-
requestOpts.headers =
|
|
90
|
+
requestOpts.headers = { ...(_lodash.default.isPlainObject(headers) ? headers : {}),
|
|
91
|
+
...form.getHeaders()
|
|
92
|
+
};
|
|
93
93
|
requestOpts.data = form;
|
|
94
94
|
} else {
|
|
95
95
|
if (_lodash.default.isPlainObject(headers)) {
|
|
@@ -111,9 +111,7 @@ async function uploadFileToHttp(localFileStream, parsedUri, uploadOptions = {})
|
|
|
111
111
|
|
|
112
112
|
async function uploadFileToFtp(localFileStream, parsedUri, uploadOptions = {}) {
|
|
113
113
|
const {
|
|
114
|
-
auth
|
|
115
|
-
user,
|
|
116
|
-
pass
|
|
114
|
+
auth
|
|
117
115
|
} = uploadOptions;
|
|
118
116
|
const {
|
|
119
117
|
hostname,
|
|
@@ -123,12 +121,12 @@ async function uploadFileToFtp(localFileStream, parsedUri, uploadOptions = {}) {
|
|
|
123
121
|
} = parsedUri;
|
|
124
122
|
const ftpOpts = {
|
|
125
123
|
host: hostname,
|
|
126
|
-
port: port
|
|
124
|
+
port: !_lodash.default.isUndefined(port) ? _lodash.default.parseInt(port) : 21
|
|
127
125
|
};
|
|
128
126
|
|
|
129
|
-
if (auth !== null && auth !== void 0 && auth.user && auth !== null && auth !== void 0 && auth.pass
|
|
130
|
-
ftpOpts.user =
|
|
131
|
-
ftpOpts.pass =
|
|
127
|
+
if (auth !== null && auth !== void 0 && auth.user && auth !== null && auth !== void 0 && auth.pass) {
|
|
128
|
+
ftpOpts.user = auth.user;
|
|
129
|
+
ftpOpts.pass = auth.pass;
|
|
132
130
|
}
|
|
133
131
|
|
|
134
132
|
_logger.default.debug(`${protocol} upload options: ${JSON.stringify(ftpOpts)}`);
|
|
@@ -144,6 +142,28 @@ async function uploadFileToFtp(localFileStream, parsedUri, uploadOptions = {}) {
|
|
|
144
142
|
});
|
|
145
143
|
}
|
|
146
144
|
|
|
145
|
+
function isHttpUploadOptions(opts, url) {
|
|
146
|
+
try {
|
|
147
|
+
const {
|
|
148
|
+
protocol
|
|
149
|
+
} = new URL(url);
|
|
150
|
+
return protocol === 'http:' || protocol === 'https:';
|
|
151
|
+
} catch {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function isNotHttpUploadOptions(opts, url) {
|
|
157
|
+
try {
|
|
158
|
+
const {
|
|
159
|
+
protocol
|
|
160
|
+
} = new URL(url);
|
|
161
|
+
return protocol === 'ftp:';
|
|
162
|
+
} catch {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
147
167
|
async function uploadFile(localPath, remoteUri, uploadOptions = {}) {
|
|
148
168
|
if (!(await _fs.default.exists(localPath))) {
|
|
149
169
|
throw new Error(`'${localPath}' does not exists or is not accessible`);
|
|
@@ -152,9 +172,7 @@ async function uploadFile(localPath, remoteUri, uploadOptions = {}) {
|
|
|
152
172
|
const {
|
|
153
173
|
isMetered = true
|
|
154
174
|
} = uploadOptions;
|
|
155
|
-
|
|
156
|
-
const parsedUri = _url.default.parse(remoteUri);
|
|
157
|
-
|
|
175
|
+
const url = new URL(remoteUri);
|
|
158
176
|
const {
|
|
159
177
|
size
|
|
160
178
|
} = await _fs.default.stat(localPath);
|
|
@@ -165,18 +183,18 @@ async function uploadFile(localPath, remoteUri, uploadOptions = {}) {
|
|
|
165
183
|
|
|
166
184
|
const timer = new _timing.default().start();
|
|
167
185
|
|
|
168
|
-
if (
|
|
186
|
+
if (isHttpUploadOptions(uploadOptions, url)) {
|
|
169
187
|
if (!uploadOptions.fileFieldName) {
|
|
170
|
-
uploadOptions.headers =
|
|
188
|
+
uploadOptions.headers = { ...(_lodash.default.isPlainObject(uploadOptions.headers) ? uploadOptions.headers : {}),
|
|
171
189
|
'Content-Length': size
|
|
172
|
-
}
|
|
190
|
+
};
|
|
173
191
|
}
|
|
174
192
|
|
|
175
|
-
await uploadFileToHttp(_fs.default.createReadStream(localPath),
|
|
176
|
-
} else if (
|
|
177
|
-
await uploadFileToFtp(_fs.default.createReadStream(localPath),
|
|
193
|
+
await uploadFileToHttp(_fs.default.createReadStream(localPath), url, uploadOptions);
|
|
194
|
+
} else if (isNotHttpUploadOptions(uploadOptions, url)) {
|
|
195
|
+
await uploadFileToFtp(_fs.default.createReadStream(localPath), url, uploadOptions);
|
|
178
196
|
} else {
|
|
179
|
-
throw new Error(`Cannot upload the file at '${localPath}' to '${remoteUri}'. ` + `Unsupported remote protocol '${
|
|
197
|
+
throw new Error(`Cannot upload the file at '${localPath}' to '${remoteUri}'. ` + `Unsupported remote protocol '${url.protocol}'. ` + `Only http/https and ftp/ftps protocols are supported.`);
|
|
180
198
|
}
|
|
181
199
|
|
|
182
200
|
if (isMetered) {
|
|
@@ -251,4 +269,4 @@ async function downloadFile(remoteUrl, dstPath, downloadOptions = {}) {
|
|
|
251
269
|
}
|
|
252
270
|
}
|
|
253
271
|
}
|
|
254
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9uZXQuanMiXSwibmFtZXMiOlsiREVGQVVMVF9USU1FT1VUX01TIiwidG9BeGlvc0F1dGgiLCJhdXRoIiwiXyIsImlzUGxhaW5PYmplY3QiLCJheGlvc0F1dGgiLCJ1c2VybmFtZSIsInVzZXIiLCJwYXNzd29yZCIsInBhc3MiLCJ1cGxvYWRGaWxlVG9IdHRwIiwibG9jYWxGaWxlU3RyZWFtIiwicGFyc2VkVXJpIiwidXBsb2FkT3B0aW9ucyIsIm1ldGhvZCIsInRpbWVvdXQiLCJoZWFkZXJzIiwiZmlsZUZpZWxkTmFtZSIsImZvcm1GaWVsZHMiLCJocmVmIiwicmVxdWVzdE9wdHMiLCJ1cmwiLCJtYXhDb250ZW50TGVuZ3RoIiwiSW5maW5pdHkiLCJtYXhCb2R5TGVuZ3RoIiwiZm9ybSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwicGFpcnMiLCJpc0FycmF5IiwidG9QYWlycyIsImtleSIsInZhbHVlIiwidG9Mb3dlciIsIk9iamVjdCIsImFzc2lnbiIsImdldEhlYWRlcnMiLCJkYXRhIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5Iiwib21pdCIsInN0YXR1cyIsInN0YXR1c1RleHQiLCJpbmZvIiwidXBsb2FkRmlsZVRvRnRwIiwiaG9zdG5hbWUiLCJwb3J0IiwicHJvdG9jb2wiLCJwYXRobmFtZSIsImZ0cE9wdHMiLCJob3N0IiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJGdHAiLCJwdXQiLCJlcnIiLCJ1cGxvYWRGaWxlIiwibG9jYWxQYXRoIiwicmVtb3RlVXJpIiwiZnMiLCJleGlzdHMiLCJFcnJvciIsImlzTWV0ZXJlZCIsInBhcnNlIiwic2l6ZSIsInN0YXQiLCJ0aW1lciIsIlRpbWVyIiwic3RhcnQiLCJpbmNsdWRlcyIsImNyZWF0ZVJlYWRTdHJlYW0iLCJnZXREdXJhdGlvbiIsImFzU2Vjb25kcyIsInRvRml4ZWQiLCJkb3dubG9hZEZpbGUiLCJyZW1vdGVVcmwiLCJkc3RQYXRoIiwiZG93bmxvYWRPcHRpb25zIiwicmVzcG9uc2VUeXBlIiwicmVzcG9uc2VMZW5ndGgiLCJ3cml0ZXIiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInJlc3BvbnNlU3RyZWFtIiwicmVzcG9uc2VIZWFkZXJzIiwicGFyc2VJbnQiLCJwaXBlIiwib25jZSIsImUiLCJ1bnBpcGUiLCJtZXNzYWdlIiwicmltcmFmIiwic2Vjb25kc0VsYXBzZWQiLCJieXRlc1BlclNlYyIsIk1hdGgiLCJmbG9vciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsa0JBQWtCLEdBQUcsSUFBSSxFQUFKLEdBQVMsSUFBcEM7O0FBRUEsU0FBU0MsV0FBVCxDQUFzQkMsSUFBdEIsRUFBNEI7QUFDMUIsTUFBSSxDQUFDQyxnQkFBRUMsYUFBRixDQUFnQkYsSUFBaEIsQ0FBTCxFQUE0QjtBQUMxQixXQUFPLElBQVA7QUFDRDs7QUFFRCxRQUFNRyxTQUFTLEdBQUc7QUFDaEJDLElBQUFBLFFBQVEsRUFBRUosSUFBSSxDQUFDSSxRQUFMLElBQWlCSixJQUFJLENBQUNLLElBRGhCO0FBRWhCQyxJQUFBQSxRQUFRLEVBQUVOLElBQUksQ0FBQ00sUUFBTCxJQUFpQk4sSUFBSSxDQUFDTztBQUZoQixHQUFsQjtBQUlBLFNBQVFKLFNBQVMsQ0FBQ0MsUUFBVixJQUFzQkQsU0FBUyxDQUFDRyxRQUFqQyxHQUE2Q0gsU0FBN0MsR0FBeUQsSUFBaEU7QUFDRDs7QUFFRCxlQUFlSyxnQkFBZixDQUFpQ0MsZUFBakMsRUFBa0RDLFNBQWxELEVBQTZEQyxhQUFhLEdBQUcsRUFBN0UsRUFBaUY7QUFDL0UsUUFBTTtBQUNKQyxJQUFBQSxNQUFNLEdBQUcsTUFETDtBQUVKQyxJQUFBQSxPQUFPLEdBQUdmLGtCQUZOO0FBR0pnQixJQUFBQSxPQUhJO0FBSUpkLElBQUFBLElBSkk7QUFLSmUsSUFBQUEsYUFBYSxHQUFHLE1BTFo7QUFNSkMsSUFBQUE7QUFOSSxNQU9GTCxh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Q2IsMkRBQTBEZSxjQUFlLFNBRHRFLENBQU47QUFFRDs7QUFDRCxNQUFJakIsU0FBSixFQUFlO0FBQ2IsVUFBTTZCLGNBQWMsR0FBR3pCLEtBQUssQ0FBQ0ssV0FBTixHQUFvQkMsU0FBM0M7O0FBQ0FyQyxvQkFBSUMsS0FBSixDQUFXLEdBQUV1QyxTQUFVLEtBQUksZ0NBQXFCWCxJQUFyQixDQUEyQixJQUE1QyxHQUNQLDJCQUEwQlksT0FBUSxRQUFPZSxjQUFjLENBQUNsQixPQUFmLENBQXVCLENBQXZCLENBQTBCLEdBRHRFOztBQUVBLFFBQUlrQixjQUFjLElBQUksQ0FBdEIsRUFBeUI7QUFDdkIsWUFBTUMsV0FBVyxHQUFHQyxJQUFJLENBQUNDLEtBQUwsQ0FBVzlCLElBQUksR0FBRzJCLGNBQWxCLENBQXBCOztBQUNBeEQsc0JBQUlDLEtBQUosQ0FBVywrQkFBOEIsZ0NBQXFCd0QsV0FBckIsQ0FBa0MsSUFBM0U7QUFDRDtBQUNGO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGZzIGZyb20gJy4vZnMnO1xuaW1wb3J0IHVybCBmcm9tICd1cmwnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgdG9SZWFkYWJsZVNpemVTdHJpbmcgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgRnRwIGZyb20gJ2pzZnRwJztcbmltcG9ydCBUaW1lciBmcm9tICcuL3RpbWluZyc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEZvcm1EYXRhIGZyb20gJ2Zvcm0tZGF0YSc7XG5cbmNvbnN0IERFRkFVTFRfVElNRU9VVF9NUyA9IDQgKiA2MCAqIDEwMDA7XG5cbmZ1bmN0aW9uIHRvQXhpb3NBdXRoIChhdXRoKSB7XG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGF1dGgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBheGlvc0F1dGggPSB7XG4gICAgdXNlcm5hbWU6IGF1dGgudXNlcm5hbWUgfHwgYXV0aC51c2VyLFxuICAgIHBhc3N3b3JkOiBhdXRoLnBhc3N3b3JkIHx8IGF1dGgucGFzcyxcbiAgfTtcbiAgcmV0dXJuIChheGlvc0F1dGgudXNlcm5hbWUgJiYgYXhpb3NBdXRoLnBhc3N3b3JkKSA/IGF4aW9zQXV0aCA6IG51bGw7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwbG9hZEZpbGVUb0h0dHAgKGxvY2FsRmlsZVN0cmVhbSwgcGFyc2VkVXJpLCB1cGxvYWRPcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG1ldGhvZCA9ICdQT1NUJyxcbiAgICB0aW1lb3V0ID0gREVGQVVMVF9USU1FT1VUX01TLFxuICAgIGhlYWRlcnMsXG4gICAgYXV0aCxcbiAgICBmaWxlRmllbGROYW1lID0gJ2ZpbGUnLFxuICAgIGZvcm1GaWVsZHMsXG4gIH0gPSB1cGxvYWRPcHRpb25zO1xuICBjb25zdCB7IGhyZWYgfSA9IHBhcnNlZFVyaTtcblxuICBjb25zdCByZXF1ZXN0T3B0cyA9IHtcbiAgICB1cmw6IGhyZWYsXG4gICAgbWV0aG9kLFxuICAgIHRpbWVvdXQsXG4gICAgbWF4Q29udGVudExlbmd0aDogSW5maW5pdHksXG4gICAgbWF4Qm9keUxlbmd0aDogSW5maW5pdHksXG4gIH07XG4gIGNvbnN0IGF4aW9zQXV0aCA9IHRvQXhpb3NBdXRoKGF1dGgpO1xuICBpZiAoYXhpb3NBdXRoKSB7XG4gICAgcmVxdWVzdE9wdHMuYXV0aCA9IGF4aW9zQXV0aDtcbiAgfVxuICBpZiAoZmlsZUZpZWxkTmFtZSkge1xuICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtLmFwcGVuZChmaWxlRmllbGROYW1lLCBsb2NhbEZpbGVTdHJlYW0pO1xuICAgIGlmIChmb3JtRmllbGRzKSB7XG4gICAgICBsZXQgcGFpcnMgPSBbXTtcbiAgICAgIGlmIChfLmlzQXJyYXkoZm9ybUZpZWxkcykpIHtcbiAgICAgICAgcGFpcnMgPSBmb3JtRmllbGRzO1xuICAgICAgfSBlbHNlIGlmIChfLmlzUGxhaW5PYmplY3QoZm9ybUZpZWxkcykpIHtcbiAgICAgICAgcGFpcnMgPSBfLnRvUGFpcnMoZm9ybUZpZWxkcyk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBwYWlycykge1xuICAgICAgICBpZiAoXy50b0xvd2VyKGtleSkgIT09IF8udG9Mb3dlcihmaWxlRmllbGROYW1lKSkge1xuICAgICAgICAgIGZvcm0uYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJlcXVlc3RPcHRzLmhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBfLmlzUGxhaW5PYmplY3QoaGVhZGVycykgPyBoZWFkZXJzIDoge30sXG4gICAgICBmb3JtLmdldEhlYWRlcnMoKSk7XG4gICAgcmVxdWVzdE9wdHMuZGF0YSA9IGZvcm07XG4gIH0gZWxzZSB7XG4gICAgaWYgKF8uaXNQbGFpbk9iamVjdChoZWFkZXJzKSkge1xuICAgICAgcmVxdWVzdE9wdHMuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgfVxuICAgIHJlcXVlc3RPcHRzLmRhdGEgPSBsb2NhbEZpbGVTdHJlYW07XG4gIH1cbiAgbG9nLmRlYnVnKGBQZXJmb3JtaW5nICR7bWV0aG9kfSB0byAke2hyZWZ9IHdpdGggb3B0aW9ucyAoZXhjbHVkaW5nIGRhdGEpOiBgICtcbiAgICBKU09OLnN0cmluZ2lmeShfLm9taXQocmVxdWVzdE9wdHMsIFsnZGF0YSddKSkpO1xuXG4gIGNvbnN0IHtzdGF0dXMsIHN0YXR1c1RleHR9ID0gYXdhaXQgYXhpb3MocmVxdWVzdE9wdHMpO1xuICBsb2cuaW5mbyhgU2VydmVyIHJlc3BvbnNlOiAke3N0YXR1c30gJHtzdGF0dXNUZXh0fWApO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGxvYWRGaWxlVG9GdHAgKGxvY2FsRmlsZVN0cmVhbSwgcGFyc2VkVXJpLCB1cGxvYWRPcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGF1dGgsXG4gICAgdXNlcixcbiAgICBwYXNzLFxuICB9ID0gdXBsb2FkT3B0aW9ucztcbiAgY29uc3Qge1xuICAgIGhvc3RuYW1lLFxuICAgIHBvcnQsXG4gICAgcHJvdG9jb2wsXG4gICAgcGF0aG5hbWUsXG4gIH0gPSBwYXJzZWRVcmk7XG5cbiAgY29uc3QgZnRwT3B0cyA9IHtcbiAgICBob3N0OiBob3N0bmFtZSxcbiAgICBwb3J0OiBwb3J0IHx8IDIxLFxuICB9O1xuICBpZiAoKGF1dGg/LnVzZXIgJiYgYXV0aD8ucGFzcykgfHwgKHVzZXIgJiYgcGFzcykpIHtcbiAgICBmdHBPcHRzLnVzZXIgPSBhdXRoPy51c2VyIHx8IHVzZXI7XG4gICAgZnRwT3B0cy5wYXNzID0gYXV0aD8ucGFzcyB8fCBwYXNzO1xuICB9XG4gIGxvZy5kZWJ1ZyhgJHtwcm90b2NvbH0gdXBsb2FkIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkoZnRwT3B0cyl9YCk7XG4gIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgbmV3IEZ0cChmdHBPcHRzKS5wdXQobG9jYWxGaWxlU3RyZWFtLCBwYXRobmFtZSwgKGVycikgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgQXV0aENyZWRlbnRpYWxzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdXNlciAtIE5vbi1lbXB0eSB1c2VyIG5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXNzIC0gTm9uLWVtcHR5IHBhc3N3b3JkXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBGdHBVcGxvYWRPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzTWV0ZXJlZCBbdHJ1ZV0gLSBXaGV0aGVyIHRvIGxvZyB0aGUgYWN0dWFsIHVwbG9hZCBwZXJmb3JtYW5jZVxuICogKGUuZy4gdGltaW5ncyBhbmQgc3BlZWQpXG4gKiBAcHJvcGVydHkge0F1dGhDcmVkZW50aWFsc30gYXV0aFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgSHR0cFVwbG9hZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNNZXRlcmVkIFt0cnVlXSAtIFdoZXRoZXIgdG8gbG9nIHRoZSBhY3R1YWwgdXBsb2FkIHBlcmZvcm1hbmNlXG4gKiAoZS5nLiB0aW1pbmdzIGFuZCBzcGVlZClcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtZXRob2QgW1BPU1RdIC0gVGhlIEhUVFAgbWV0aG9kIHVzZWQgZm9yIGZpbGUgdXBsb2FkXG4gKiBAcHJvcGVydHkge0F1dGhDcmVkZW50aWFsc30gYXV0aFxuICogQHByb3BlcnR5IHtudW1iZXJ9IHRpbWVvdXQgWzI0MDAwMF0gLSBUaGUgYWN0dWFsIHJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBoZWFkZXJzIC0gQWRkaXRpb25hbCByZXF1ZXN0IGhlYWRlcnMgbWFwcGluZ1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmaWxlRmllbGROYW1lIFtmaWxlXSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtIGZpZWxkIGNvbnRhaW5pbmcgdGhlIGZpbGVcbiAqIGNvbnRlbnQgdG8gYmUgdXBsb2FkZWQuIEFueSBmYWxzeSB2YWx1ZSBtYWtlIHRoZSByZXF1ZXN0IHRvIHVzZSBub24tbXVsdGlwYXJ0IHVwbG9hZFxuICogQHByb3BlcnR5IHtBcnJheTxQYWlyPnxPYmplY3R9IGZvcm1GaWVsZHMgLSBUaGUgYWRkaXRpb25hbCBmb3JtIGZpZWxkc1xuICogdG8gYmUgaW5jbHVkZWQgaW50byB0aGUgdXBsb2FkIHJlcXVlc3QuIFRoaXMgcHJvcGVydHkgaXMgb25seSBjb25zaWRlcmVkIGlmXG4gKiBgZmlsZUZpZWxkTmFtZWAgaXMgc2V0XG4gKi9cblxuLyoqXG4gKiBVcGxvYWRzIHRoZSBnaXZlbiBmaWxlIHRvIGEgcmVtb3RlIGxvY2F0aW9uLiBIVFRQKFMpIGFuZCBGVFBcbiAqIHByb3RvY29scyBhcmUgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbFBhdGggLSBUaGUgcGF0aCB0byBhIGZpbGUgb24gdGhlIGxvY2FsIHN0b3JhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlVXJpIC0gVGhlIHJlbW90ZSBVUkkgdG8gdXBsb2FkIHRoZSBmaWxlIHRvLlxuICogQHBhcmFtIHs/RnRwVXBsb2FkT3B0aW9uc3xIdHRwVXBsb2FkT3B0aW9uc30gdXBsb2FkT3B0aW9uc1xuICovXG5hc3luYyBmdW5jdGlvbiB1cGxvYWRGaWxlIChsb2NhbFBhdGgsIHJlbW90ZVVyaSwgdXBsb2FkT3B0aW9ucyA9IHt9KSB7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKGxvY2FsUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IgKGAnJHtsb2NhbFBhdGh9JyBkb2VzIG5vdCBleGlzdHMgb3IgaXMgbm90IGFjY2Vzc2libGVgKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpc01ldGVyZWQgPSB0cnVlLFxuICB9ID0gdXBsb2FkT3B0aW9ucztcblxuICBjb25zdCBwYXJzZWRVcmkgPSB1cmwucGFyc2UocmVtb3RlVXJpKTtcbiAgY29uc3Qge3NpemV9ID0gYXdhaXQgZnMuc3RhdChsb2NhbFBhdGgpO1xuICBpZiAoaXNNZXRlcmVkKSB7XG4gICAgbG9nLmluZm8oYFVwbG9hZGluZyAnJHtsb2NhbFBhdGh9JyBvZiAke3RvUmVhZGFibGVTaXplU3RyaW5nKHNpemUpfSBzaXplIHRvICcke3JlbW90ZVVyaX0nYCk7XG4gIH1cbiAgY29uc3QgdGltZXIgPSBuZXcgVGltZXIoKS5zdGFydCgpO1xuICBpZiAoWydodHRwOicsICdodHRwczonXS5pbmNsdWRlcyhwYXJzZWRVcmkucHJvdG9jb2wpKSB7XG4gICAgaWYgKCF1cGxvYWRPcHRpb25zLmZpbGVGaWVsZE5hbWUpIHtcbiAgICAgIHVwbG9hZE9wdGlvbnMuaGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe30sXG4gICAgICAgIF8uaXNQbGFpbk9iamVjdCh1cGxvYWRPcHRpb25zLmhlYWRlcnMpID8gdXBsb2FkT3B0aW9ucy5oZWFkZXJzIDoge30sXG4gICAgICAgIHsnQ29udGVudC1MZW5ndGgnOiBzaXplfVxuICAgICAgKTtcbiAgICB9XG4gICAgYXdhaXQgdXBsb2FkRmlsZVRvSHR0cChmcy5jcmVhdGVSZWFkU3RyZWFtKGxvY2FsUGF0aCksIHBhcnNlZFVyaSwgdXBsb2FkT3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAocGFyc2VkVXJpLnByb3RvY29sID09PSAnZnRwOicpIHtcbiAgICBhd2FpdCB1cGxvYWRGaWxlVG9GdHAoZnMuY3JlYXRlUmVhZFN0cmVhbShsb2NhbFBhdGgpLCBwYXJzZWRVcmksIHVwbG9hZE9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVwbG9hZCB0aGUgZmlsZSBhdCAnJHtsb2NhbFBhdGh9JyB0byAnJHtyZW1vdGVVcml9Jy4gYCArXG4gICAgICBgVW5zdXBwb3J0ZWQgcmVtb3RlIHByb3RvY29sICcke3BhcnNlZFVyaS5wcm90b2NvbH0nLiBgICtcbiAgICAgIGBPbmx5IGh0dHAvaHR0cHMgYW5kIGZ0cC9mdHBzIHByb3RvY29scyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIGlmIChpc01ldGVyZWQpIHtcbiAgICBsb2cuaW5mbyhgVXBsb2FkZWQgJyR7bG9jYWxQYXRofScgb2YgJHt0b1JlYWRhYmxlU2l6ZVN0cmluZyhzaXplKX0gc2l6ZSBpbiBgICtcbiAgICAgIGAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNTZWNvbmRzLnRvRml4ZWQoMyl9c2ApO1xuICB9XG59XG5cbi8qKlxuICogQHR5cGVkZWYgRG93bmxvYWRPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzTWV0ZXJlZCBbdHJ1ZV0gLSBXaGV0aGVyIHRvIGxvZyB0aGUgYWN0dWFsIGRvd25sb2FkIHBlcmZvcm1hbmNlXG4gKiAoZS5nLiB0aW1pbmdzIGFuZCBzcGVlZClcbiAqIEBwcm9wZXJ0eSB7QXV0aENyZWRlbnRpYWxzfSBhdXRoXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dCBbMjQwMDAwXSAtIFRoZSBhY3R1YWwgcmVxdWVzdCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kc1xuICogQHByb3BlcnR5IHtPYmplY3R9IGhlYWRlcnMgLSBSZXF1ZXN0IGhlYWRlcnMgbWFwcGluZ1xuICovXG5cbi8qKlxuICogRG93bmxvYWRzIHRoZSBnaXZlbiBmaWxlIHZpYSBIVFRQKFMpXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbW90ZVVybCAtIFRoZSByZW1vdGUgdXJsXG4gKiBAcGFyYW0ge3N0cmluZ30gZHN0UGF0aCAtIFRoZSBsb2NhbCBwYXRoIHRvIGRvd25sb2FkIHRoZSBmaWxlIHRvXG4gKiBAcGFyYW0gez9Eb3dubG9hZE9wdGlvbnN9IGRvd25sb2FkT3B0aW9uc1xuICogQHRocm93cyB7RXJyb3J9IElmIGRvd25sb2FkIG9wZXJhdGlvbiBmYWlsc1xuICovXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZEZpbGUgKHJlbW90ZVVybCwgZHN0UGF0aCwgZG93bmxvYWRPcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGlzTWV0ZXJlZCA9IHRydWUsXG4gICAgYXV0aCxcbiAgICB0aW1lb3V0ID0gREVGQVVMVF9USU1FT1VUX01TLFxuICAgIGhlYWRlcnMsXG4gIH0gPSBkb3dubG9hZE9wdGlvbnM7XG5cbiAgY29uc3QgcmVxdWVzdE9wdHMgPSB7XG4gICAgdXJsOiByZW1vdGVVcmwsXG4gICAgcmVzcG9uc2VUeXBlOiAnc3RyZWFtJyxcbiAgICB0aW1lb3V0LFxuICB9O1xuICBjb25zdCBheGlvc0F1dGggPSB0b0F4aW9zQXV0aChhdXRoKTtcbiAgaWYgKGF4aW9zQXV0aCkge1xuICAgIHJlcXVlc3RPcHRzLmF1dGggPSBheGlvc0F1dGg7XG4gIH1cbiAgaWYgKF8uaXNQbGFpbk9iamVjdChoZWFkZXJzKSkge1xuICAgIHJlcXVlc3RPcHRzLmhlYWRlcnMgPSBoZWFkZXJzO1xuICB9XG5cbiAgY29uc3QgdGltZXIgPSBuZXcgVGltZXIoKS5zdGFydCgpO1xuICBsZXQgcmVzcG9uc2VMZW5ndGg7XG4gIHRyeSB7XG4gICAgY29uc3Qgd3JpdGVyID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0oZHN0UGF0aCk7XG4gICAgY29uc3Qge1xuICAgICAgZGF0YTogcmVzcG9uc2VTdHJlYW0sXG4gICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgfSA9IGF3YWl0IGF4aW9zKHJlcXVlc3RPcHRzKTtcbiAgICByZXNwb25zZUxlbmd0aCA9IHBhcnNlSW50KHJlc3BvbnNlSGVhZGVyc1snY29udGVudC1sZW5ndGgnXSwgMTApO1xuICAgIHJlc3BvbnNlU3RyZWFtLnBpcGUod3JpdGVyKTtcblxuICAgIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlc3BvbnNlU3RyZWFtLm9uY2UoJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHdyaXRlci5vbmNlKCdmaW5pc2gnLCByZXNvbHZlKTtcbiAgICAgIHdyaXRlci5vbmNlKCdlcnJvcicsIChlKSA9PiB7XG4gICAgICAgIHJlc3BvbnNlU3RyZWFtLnVucGlwZSh3cml0ZXIpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZG93bmxvYWQgdGhlIGZpbGUgZnJvbSAke3JlbW90ZVVybH06ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cblxuICBjb25zdCB7c2l6ZX0gPSBhd2FpdCBmcy5zdGF0KGRzdFBhdGgpO1xuICBpZiAocmVzcG9uc2VMZW5ndGggJiYgc2l6ZSAhPT0gcmVzcG9uc2VMZW5ndGgpIHtcbiAgICBhd2FpdCBmcy5yaW1yYWYoZHN0UGF0aCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc2l6ZSBvZiB0aGUgZmlsZSBkb3dubG9hZGVkIGZyb20gJHtyZW1vdGVVcmx9ICgke3NpemV9IGJ5dGVzKSBgICtcbiAgICAgIGBkaWZmZXJzIGZyb20gdGhlIG9uZSBpbiBDb250ZW50LUxlbmd0aCByZXNwb25zZSBoZWFkZXIgKCR7cmVzcG9uc2VMZW5ndGh9IGJ5dGVzKWApO1xuICB9XG4gIGlmIChpc01ldGVyZWQpIHtcbiAgICBjb25zdCBzZWNvbmRzRWxhcHNlZCA9IHRpbWVyLmdldER1cmF0aW9uKCkuYXNTZWNvbmRzO1xuICAgIGxvZy5kZWJ1ZyhgJHtyZW1vdGVVcmx9ICgke3RvUmVhZGFibGVTaXplU3RyaW5nKHNpemUpfSkgYCArXG4gICAgICBgaGFzIGJlZW4gZG93bmxvYWRlZCB0byAnJHtkc3RQYXRofScgaW4gJHtzZWNvbmRzRWxhcHNlZC50b0ZpeGVkKDMpfXNgKTtcbiAgICBpZiAoc2Vjb25kc0VsYXBzZWQgPj0gMikge1xuICAgICAgY29uc3QgYnl0ZXNQZXJTZWMgPSBNYXRoLmZsb29yKHNpemUgLyBzZWNvbmRzRWxhcHNlZCk7XG4gICAgICBsb2cuZGVidWcoYEFwcHJveGltYXRlIGRvd25sb2FkIHNwZWVkOiAke3RvUmVhZGFibGVTaXplU3RyaW5nKGJ5dGVzUGVyU2VjKX0vc2ApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgeyB1cGxvYWRGaWxlLCBkb3dubG9hZEZpbGUgfTtcbiJdfQ==
|
|
272
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9uZXQuanMiXSwibmFtZXMiOlsiREVGQVVMVF9USU1FT1VUX01TIiwidG9BeGlvc0F1dGgiLCJhdXRoIiwiXyIsImlzUGxhaW5PYmplY3QiLCJheGlvc0F1dGgiLCJ1c2VybmFtZSIsImdldCIsInBhc3N3b3JkIiwidXBsb2FkRmlsZVRvSHR0cCIsImxvY2FsRmlsZVN0cmVhbSIsInBhcnNlZFVyaSIsInVwbG9hZE9wdGlvbnMiLCJtZXRob2QiLCJ0aW1lb3V0IiwiaGVhZGVycyIsImZpbGVGaWVsZE5hbWUiLCJmb3JtRmllbGRzIiwiaHJlZiIsInJlcXVlc3RPcHRzIiwidXJsIiwibWF4Q29udGVudExlbmd0aCIsIkluZmluaXR5IiwibWF4Qm9keUxlbmd0aCIsImZvcm0iLCJGb3JtRGF0YSIsImFwcGVuZCIsInBhaXJzIiwiaXNBcnJheSIsInRvUGFpcnMiLCJrZXkiLCJ2YWx1ZSIsInRvTG93ZXIiLCJnZXRIZWFkZXJzIiwiZGF0YSIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsIm9taXQiLCJzdGF0dXMiLCJzdGF0dXNUZXh0IiwiaW5mbyIsInVwbG9hZEZpbGVUb0Z0cCIsImhvc3RuYW1lIiwicG9ydCIsInByb3RvY29sIiwicGF0aG5hbWUiLCJmdHBPcHRzIiwiaG9zdCIsImlzVW5kZWZpbmVkIiwicGFyc2VJbnQiLCJ1c2VyIiwicGFzcyIsIkIiLCJyZXNvbHZlIiwicmVqZWN0IiwiRnRwIiwicHV0IiwiZXJyIiwiaXNIdHRwVXBsb2FkT3B0aW9ucyIsIm9wdHMiLCJVUkwiLCJpc05vdEh0dHBVcGxvYWRPcHRpb25zIiwidXBsb2FkRmlsZSIsImxvY2FsUGF0aCIsInJlbW90ZVVyaSIsImZzIiwiZXhpc3RzIiwiRXJyb3IiLCJpc01ldGVyZWQiLCJzaXplIiwic3RhdCIsInRpbWVyIiwiVGltZXIiLCJzdGFydCIsImNyZWF0ZVJlYWRTdHJlYW0iLCJnZXREdXJhdGlvbiIsImFzU2Vjb25kcyIsInRvRml4ZWQiLCJkb3dubG9hZEZpbGUiLCJyZW1vdGVVcmwiLCJkc3RQYXRoIiwiZG93bmxvYWRPcHRpb25zIiwicmVzcG9uc2VUeXBlIiwicmVzcG9uc2VMZW5ndGgiLCJ3cml0ZXIiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInJlc3BvbnNlU3RyZWFtIiwicmVzcG9uc2VIZWFkZXJzIiwicGlwZSIsIm9uY2UiLCJlIiwidW5waXBlIiwibWVzc2FnZSIsInJpbXJhZiIsInNlY29uZHNFbGFwc2VkIiwiYnl0ZXNQZXJTZWMiLCJNYXRoIiwiZmxvb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGtCQUFrQixHQUFHLElBQUksRUFBSixHQUFTLElBQXBDOztBQU9BLFNBQVNDLFdBQVQsQ0FBc0JDLElBQXRCLEVBQTRCO0FBQzFCLE1BQUksQ0FBQ0MsZ0JBQUVDLGFBQUYsQ0FBZ0JGLElBQWhCLENBQUwsRUFBNEI7QUFDMUIsV0FBTyxJQUFQO0FBQ0Q7O0FBRUQsUUFBTUcsU0FBUyxHQUFHO0FBQ2hCQyxJQUFBQSxRQUFRLEVBQUVILGdCQUFFSSxHQUFGLENBQU1MLElBQU4sRUFBWSxVQUFaLEVBQXdCQyxnQkFBRUksR0FBRixDQUFNTCxJQUFOLEVBQVksTUFBWixDQUF4QixDQURNO0FBRWhCTSxJQUFBQSxRQUFRLEVBQUVMLGdCQUFFSSxHQUFGLENBQU1MLElBQU4sRUFBWSxVQUFaLEVBQXdCQyxnQkFBRUksR0FBRixDQUFNTCxJQUFOLEVBQVksTUFBWixDQUF4QjtBQUZNLEdBQWxCO0FBSUEsU0FBUUcsU0FBUyxDQUFDQyxRQUFWLElBQXNCRCxTQUFTLENBQUNHLFFBQWpDLEdBQTZDSCxTQUE3QyxHQUF5RCxJQUFoRTtBQUNEOztBQU9ELGVBQWVJLGdCQUFmLENBQWlDQyxlQUFqQyxFQUFrREMsU0FBbEQsRUFBNkRDLGFBQWEsR0FBaUQsRUFBM0gsRUFBZ0k7QUFDOUgsUUFBTTtBQUNKQyxJQUFBQSxNQUFN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QUFmLENBQXNCUCxNQUF0QjtBQUNBOUIsUUFBQUEsTUFBTSxDQUFDb0MsQ0FBRCxDQUFOO0FBQ0QsT0FIRDtBQUlELEtBUEssQ0FBTjtBQVFELEdBakJELENBaUJFLE9BQU9qQyxHQUFQLEVBQVk7QUFDWixVQUFNLElBQUlVLEtBQUosQ0FBVyxpQ0FBZ0NZLFNBQVUsS0FBSXRCLEdBQUcsQ0FBQ21DLE9BQVEsRUFBckUsQ0FBTjtBQUNEOztBQUVELFFBQU07QUFBQ3ZCLElBQUFBO0FBQUQsTUFBUyxNQUFNSixZQUFHSyxJQUFILENBQVFVLE9BQVIsQ0FBckI7O0FBQ0EsTUFBSUcsY0FBYyxJQUFJZCxJQUFJLEtBQUtjLGNBQS9CLEVBQStDO0FBQzdDLFVBQU1sQixZQUFHNEIsTUFBSCxDQUFVYixPQUFWLENBQU47QUFDQSxVQUFNLElBQUliLEtBQUosQ0FBVyx3Q0FBdUNZLFNBQVUsS0FBSVYsSUFBSyxVQUEzRCxHQUNiLDJEQUEwRGMsY0FBZSxTQUR0RSxDQUFOO0FBRUQ7O0FBQ0QsTUFBSWYsU0FBSixFQUFlO0FBQ2IsVUFBTTBCLGNBQWMsR0FBR3ZCLEtBQUssQ0FBQ0ksV0FBTixHQUFvQkMsU0FBM0M7O0FBQ0EzQyxvQkFBSUMsS0FBSixDQUFXLEdBQUU2QyxTQUFVLEtBQUksZ0NBQXFCVixJQUFyQixDQUEyQixJQUE1QyxHQUNQLDJCQUEwQlcsT0FBUSxRQUFPYyxjQUFjLENBQUNqQixPQUFmLENBQXVCLENBQXZCLENBQTBCLEdBRHRFOztBQUVBLFFBQUlpQixjQUFjLElBQUksQ0FBdEIsRUFBeUI7QUFDdkIsWUFBTUMsV0FBVyxHQUFHQyxJQUFJLENBQUNDLEtBQUwsQ0FBVzVCLElBQUksR0FBR3lCLGNBQWxCLENBQXBCOztBQUNBN0Qsc0JBQUlDLEtBQUosQ0FBVywrQkFBOEIsZ0NBQXFCNkQsV0FBckIsQ0FBa0MsSUFBM0U7QUFDRDtBQUNGO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGZzIGZyb20gJy4vZnMnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgdG9SZWFkYWJsZVNpemVTdHJpbmcgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgRnRwIGZyb20gJ2pzZnRwJztcbmltcG9ydCBUaW1lciBmcm9tICcuL3RpbWluZyc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEZvcm1EYXRhIGZyb20gJ2Zvcm0tZGF0YSc7XG5cbmNvbnN0IERFRkFVTFRfVElNRU9VVF9NUyA9IDQgKiA2MCAqIDEwMDA7XG5cbi8qKlxuICogQ29udmVydHMge0BsaW5rY29kZSBBdXRoQ3JlZGVudGlhbHN9IHRvIGNyZWRlbnRpYWxzIHVuZGVyc3Rvb2QgYnkge0BsaW5rY29kZSBheGlvc30uXG4gKiBAcGFyYW0ge0F1dGhDcmVkZW50aWFscyB8IGltcG9ydCgnYXhpb3MnKS5BeGlvc0Jhc2ljQ3JlZGVudGlhbHN9IGF1dGhcbiAqIEByZXR1cm5zIHtpbXBvcnQoJ2F4aW9zJykuQXhpb3NCYXNpY0NyZWRlbnRpYWxzP31cbiAqL1xuZnVuY3Rpb24gdG9BeGlvc0F1dGggKGF1dGgpIHtcbiAgaWYgKCFfLmlzUGxhaW5PYmplY3QoYXV0aCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGF4aW9zQXV0aCA9IHtcbiAgICB1c2VybmFtZTogXy5nZXQoYXV0aCwgJ3VzZXJuYW1lJywgXy5nZXQoYXV0aCwgJ3VzZXInKSksXG4gICAgcGFzc3dvcmQ6IF8uZ2V0KGF1dGgsICdwYXNzd29yZCcsIF8uZ2V0KGF1dGgsICdwYXNzJykpLFxuICB9O1xuICByZXR1cm4gKGF4aW9zQXV0aC51c2VybmFtZSAmJiBheGlvc0F1dGgucGFzc3dvcmQpID8gYXhpb3NBdXRoIDogbnVsbDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge05vZGVKUy5SZWFkYWJsZVN0cmVhbX0gbG9jYWxGaWxlU3RyZWFtXG4gKiBAcGFyYW0ge1VSTH0gcGFyc2VkVXJpXG4gKiBAcGFyYW0ge0h0dHBVcGxvYWRPcHRpb25zICYgTmV0T3B0aW9uc30gW3VwbG9hZE9wdGlvbnNdXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVwbG9hZEZpbGVUb0h0dHAgKGxvY2FsRmlsZVN0cmVhbSwgcGFyc2VkVXJpLCB1cGxvYWRPcHRpb25zID0gLyoqIEB0eXBlIHtIdHRwVXBsb2FkT3B0aW9ucyAmIE5ldE9wdGlvbnN9ICovKHt9KSkge1xuICBjb25zdCB7XG4gICAgbWV0aG9kID0gJ1BPU1QnLFxuICAgIHRpbWVvdXQgPSBERUZBVUxUX1RJTUVPVVRfTVMsXG4gICAgaGVhZGVycyxcbiAgICBhdXRoLFxuICAgIGZpbGVGaWVsZE5hbWUgPSAnZmlsZScsXG4gICAgZm9ybUZpZWxkcyxcbiAgfSA9IHVwbG9hZE9wdGlvbnM7XG4gIGNvbnN0IHsgaHJlZiB9ID0gcGFyc2VkVXJpO1xuXG4gIC8qKiBAdHlwZSB7aW1wb3J0KCdheGlvcycpLkF4aW9zUmVxdWVzdENvbmZpZ30gKi9cbiAgY29uc3QgcmVxdWVzdE9wdHMgPSB7XG4gICAgdXJsOiBocmVmLFxuICAgIG1ldGhvZCxcbiAgICB0aW1lb3V0LFxuICAgIG1heENvbnRlbnRMZW5ndGg6IEluZmluaXR5LFxuICAgIG1heEJvZHlMZW5ndGg6IEluZmluaXR5LFxuICB9O1xuICBjb25zdCBheGlvc0F1dGggPSB0b0F4aW9zQXV0aChhdXRoKTtcbiAgaWYgKGF4aW9zQXV0aCkge1xuICAgIHJlcXVlc3RPcHRzLmF1dGggPSBheGlvc0F1dGg7XG4gIH1cbiAgaWYgKGZpbGVGaWVsZE5hbWUpIHtcbiAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybS5hcHBlbmQoZmlsZUZpZWxkTmFtZSwgbG9jYWxGaWxlU3RyZWFtKTtcbiAgICBpZiAoZm9ybUZpZWxkcykge1xuICAgICAgbGV0IHBhaXJzID0gW107XG4gICAgICBpZiAoXy5pc0FycmF5KGZvcm1GaWVsZHMpKSB7XG4gICAgICAgIHBhaXJzID0gZm9ybUZpZWxkcztcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1BsYWluT2JqZWN0KGZvcm1GaWVsZHMpKSB7XG4gICAgICAgIHBhaXJzID0gXy50b1BhaXJzKGZvcm1GaWVsZHMpO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgcGFpcnMpIHtcbiAgICAgICAgaWYgKF8udG9Mb3dlcihrZXkpICE9PSBfLnRvTG93ZXIoZmlsZUZpZWxkTmFtZSkpIHtcbiAgICAgICAgICBmb3JtLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXF1ZXN0T3B0cy5oZWFkZXJzID0ge1xuICAgICAgLi4uKF8uaXNQbGFpbk9iamVjdChoZWFkZXJzKSA/IGhlYWRlcnMgOiB7fSksXG4gICAgICAuLi5mb3JtLmdldEhlYWRlcnMoKVxuICAgIH07XG4gICAgcmVxdWVzdE9wdHMuZGF0YSA9IGZvcm07XG4gIH0gZWxzZSB7XG4gICAgaWYgKF8uaXNQbGFpbk9iamVjdChoZWFkZXJzKSkge1xuICAgICAgcmVxdWVzdE9wdHMuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgfVxuICAgIHJlcXVlc3RPcHRzLmRhdGEgPSBsb2NhbEZpbGVTdHJlYW07XG4gIH1cbiAgbG9nLmRlYnVnKGBQZXJmb3JtaW5nICR7bWV0aG9kfSB0byAke2hyZWZ9IHdpdGggb3B0aW9ucyAoZXhjbHVkaW5nIGRhdGEpOiBgICtcbiAgICBKU09OLnN0cmluZ2lmeShfLm9taXQocmVxdWVzdE9wdHMsIFsnZGF0YSddKSkpO1xuXG4gIGNvbnN0IHtzdGF0dXMsIHN0YXR1c1RleHR9ID0gYXdhaXQgYXhpb3MocmVxdWVzdE9wdHMpO1xuICBsb2cuaW5mbyhgU2VydmVyIHJlc3BvbnNlOiAke3N0YXR1c30gJHtzdGF0dXNUZXh0fWApO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyIHwgTm9kZUpTLlJlYWRhYmxlU3RyZWFtfSBsb2NhbEZpbGVTdHJlYW1cbiAqIEBwYXJhbSB7VVJMfSBwYXJzZWRVcmlcbiAqIEBwYXJhbSB7Tm90SHR0cFVwbG9hZE9wdGlvbnMgJiBOZXRPcHRpb25zfSBbdXBsb2FkT3B0aW9uc11cbiAqL1xuYXN5bmMgZnVuY3Rpb24gdXBsb2FkRmlsZVRvRnRwIChsb2NhbEZpbGVTdHJlYW0sIHBhcnNlZFVyaSwgdXBsb2FkT3B0aW9ucyA9IC8qKiBAdHlwZSB7Tm90SHR0cFVwbG9hZE9wdGlvbnMgJiBOZXRPcHRpb25zfSAqLyh7fSkpIHtcbiAgY29uc3Qge1xuICAgIGF1dGgsXG4gIH0gPSB1cGxvYWRPcHRpb25zO1xuICBjb25zdCB7XG4gICAgaG9zdG5hbWUsXG4gICAgcG9ydCxcbiAgICBwcm90b2NvbCxcbiAgICBwYXRobmFtZSxcbiAgfSA9IHBhcnNlZFVyaTtcblxuICBjb25zdCBmdHBPcHRzID0ge1xuICAgIGhvc3Q6IGhvc3RuYW1lLFxuICAgIHBvcnQ6ICFfLmlzVW5kZWZpbmVkKHBvcnQpID8gXy5wYXJzZUludChwb3J0KSA6IDIxLFxuICB9O1xuICBpZiAoYXV0aD8udXNlciAmJiBhdXRoPy5wYXNzKSB7XG4gICAgZnRwT3B0cy51c2VyID0gYXV0aC51c2VyO1xuICAgIGZ0cE9wdHMucGFzcyA9IGF1dGgucGFzcztcbiAgfVxuICBsb2cuZGVidWcoYCR7cHJvdG9jb2x9IHVwbG9hZCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KGZ0cE9wdHMpfWApO1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIG5ldyBGdHAoZnRwT3B0cykucHV0KGxvY2FsRmlsZVN0cmVhbSwgcGF0aG5hbWUsIChlcnIpID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYHRydWVgIGlmIHBhcmFtcyBhcmUgdmFsaWQgZm9yIHtAbGlua2NvZGUgdXBsb2FkRmlsZVRvSHR0cH0uXG4gKiBAcGFyYW0ge2FueX0gb3B0c1xuICogQHBhcmFtIHtVUkx9IHVybFxuICogQHJldHVybnMge29wdHMgaXMgSHR0cFVwbG9hZE9wdGlvbnMgJiBOZXRPcHRpb25zfVxuICovXG5mdW5jdGlvbiBpc0h0dHBVcGxvYWRPcHRpb25zIChvcHRzLCB1cmwpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7cHJvdG9jb2x9ID0gbmV3IFVSTCh1cmwpO1xuICAgIHJldHVybiBwcm90b2NvbCA9PT0gJ2h0dHA6JyB8fCBwcm90b2NvbCA9PT0gJ2h0dHBzOic7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYHRydWVgIGlmIHBhcmFtcyBhcmUgdmFsaWQgZm9yIHtAbGlua2NvZGUgdXBsb2FkRmlsZVRvRnRwfS5cbiAqIEBwYXJhbSB7YW55fSBvcHRzXG4gKiBAcGFyYW0ge1VSTH0gdXJsXG4gKiBAcmV0dXJucyB7b3B0cyBpcyBOb3RIdHRwVXBsb2FkT3B0aW9ucyAmIE5ldE9wdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIGlzTm90SHR0cFVwbG9hZE9wdGlvbnMgKG9wdHMsIHVybCkge1xuICB0cnkge1xuICAgIGNvbnN0IHtwcm90b2NvbH0gPSBuZXcgVVJMKHVybCk7XG4gICAgcmV0dXJuIHByb3RvY29sID09PSAnZnRwOic7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuLyoqXG4gKiBVcGxvYWRzIHRoZSBnaXZlbiBmaWxlIHRvIGEgcmVtb3RlIGxvY2F0aW9uLiBIVFRQKFMpIGFuZCBGVFBcbiAqIHByb3RvY29scyBhcmUgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbFBhdGggLSBUaGUgcGF0aCB0byBhIGZpbGUgb24gdGhlIGxvY2FsIHN0b3JhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlVXJpIC0gVGhlIHJlbW90ZSBVUkkgdG8gdXBsb2FkIHRoZSBmaWxlIHRvLlxuICogQHBhcmFtIHsoSHR0cFVwbG9hZE9wdGlvbnN8Tm90SHR0cFVwbG9hZE9wdGlvbnMpICYgTmV0T3B0aW9uc30gW3VwbG9hZE9wdGlvbnNdXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gdXBsb2FkRmlsZSAobG9jYWxQYXRoLCByZW1vdGVVcmksIHVwbG9hZE9wdGlvbnMgPSAvKiogQHR5cGUgeyhIdHRwVXBsb2FkT3B0aW9uc3xOb3RIdHRwVXBsb2FkT3B0aW9ucykgJiBOZXRPcHRpb25zfSAqLyh7fSkpIHtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMobG9jYWxQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvciAoYCcke2xvY2FsUGF0aH0nIGRvZXMgbm90IGV4aXN0cyBvciBpcyBub3QgYWNjZXNzaWJsZWApO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGlzTWV0ZXJlZCA9IHRydWUsXG4gIH0gPSB1cGxvYWRPcHRpb25zO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlbW90ZVVyaSk7XG4gIGNvbnN0IHtzaXplfSA9IGF3YWl0IGZzLnN0YXQobG9jYWxQYXRoKTtcbiAgaWYgKGlzTWV0ZXJlZCkge1xuICAgIGxvZy5pbmZvKGBVcGxvYWRpbmcgJyR7bG9jYWxQYXRofScgb2YgJHt0b1JlYWRhYmxlU2l6ZVN0cmluZyhzaXplKX0gc2l6ZSB0byAnJHtyZW1vdGVVcml9J2ApO1xuICB9XG4gIGNvbnN0IHRpbWVyID0gbmV3IFRpbWVyKCkuc3RhcnQoKTtcbiAgaWYgKGlzSHR0cFVwbG9hZE9wdGlvbnModXBsb2FkT3B0aW9ucywgdXJsKSkge1xuICAgIGlmICghdXBsb2FkT3B0aW9ucy5maWxlRmllbGROYW1lKSB7XG4gICAgICB1cGxvYWRPcHRpb25zLmhlYWRlcnMgPSB7XG4gICAgICAgIC4uLihfLmlzUGxhaW5PYmplY3QodXBsb2FkT3B0aW9ucy5oZWFkZXJzKSA/IHVwbG9hZE9wdGlvbnMuaGVhZGVycyA6IHt9KSxcbiAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoJzogc2l6ZVxuICAgICAgfTtcbiAgICB9XG4gICAgYXdhaXQgdXBsb2FkRmlsZVRvSHR0cChmcy5jcmVhdGVSZWFkU3RyZWFtKGxvY2FsUGF0aCksIHVybCwgdXBsb2FkT3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNOb3RIdHRwVXBsb2FkT3B0aW9ucyh1cGxvYWRPcHRpb25zLCB1cmwpKSB7XG4gICAgYXdhaXQgdXBsb2FkRmlsZVRvRnRwKGZzLmNyZWF0ZVJlYWRTdHJlYW0obG9jYWxQYXRoKSwgdXJsLCB1cGxvYWRPcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCB1cGxvYWQgdGhlIGZpbGUgYXQgJyR7bG9jYWxQYXRofScgdG8gJyR7cmVtb3RlVXJpfScuIGAgK1xuICAgICAgYFVuc3VwcG9ydGVkIHJlbW90ZSBwcm90b2NvbCAnJHt1cmwucHJvdG9jb2x9Jy4gYCArXG4gICAgICBgT25seSBodHRwL2h0dHBzIGFuZCBmdHAvZnRwcyBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZC5gKTtcbiAgfVxuICBpZiAoaXNNZXRlcmVkKSB7XG4gICAgbG9nLmluZm8oYFVwbG9hZGVkICcke2xvY2FsUGF0aH0nIG9mICR7dG9SZWFkYWJsZVNpemVTdHJpbmcoc2l6ZSl9IHNpemUgaW4gYCArXG4gICAgICBgJHt0aW1lci5nZXREdXJhdGlvbigpLmFzU2Vjb25kcy50b0ZpeGVkKDMpfXNgKTtcbiAgfVxufVxuXG4vKipcbiAqIERvd25sb2FkcyB0aGUgZ2l2ZW4gZmlsZSB2aWEgSFRUUChTKVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByZW1vdGVVcmwgLSBUaGUgcmVtb3RlIHVybFxuICogQHBhcmFtIHtzdHJpbmd9IGRzdFBhdGggLSBUaGUgbG9jYWwgcGF0aCB0byBkb3dubG9hZCB0aGUgZmlsZSB0b1xuICogQHBhcmFtIHtEb3dubG9hZE9wdGlvbnMgJiBOZXRPcHRpb25zfSBbZG93bmxvYWRPcHRpb25zXVxuICogQHRocm93cyB7RXJyb3J9IElmIGRvd25sb2FkIG9wZXJhdGlvbiBmYWlsc1xuICovXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZEZpbGUgKHJlbW90ZVVybCwgZHN0UGF0aCwgZG93bmxvYWRPcHRpb25zID0gLyoqIEB0eXBlIHtEb3dubG9hZE9wdGlvbnMgJiBOZXRPcHRpb25zfSAqLyh7fSkpIHtcbiAgY29uc3Qge1xuICAgIGlzTWV0ZXJlZCA9IHRydWUsXG4gICAgYXV0aCxcbiAgICB0aW1lb3V0ID0gREVGQVVMVF9USU1FT1VUX01TLFxuICAgIGhlYWRlcnMsXG4gIH0gPSBkb3dubG9hZE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtpbXBvcnQoJ2F4aW9zJykuQXhpb3NSZXF1ZXN0Q29uZmlnfVxuICAgKi9cbiAgY29uc3QgcmVxdWVzdE9wdHMgPSB7XG4gICAgdXJsOiByZW1vdGVVcmwsXG4gICAgcmVzcG9uc2VUeXBlOiAnc3RyZWFtJyxcbiAgICB0aW1lb3V0LFxuICB9O1xuICBjb25zdCBheGlvc0F1dGggPSB0b0F4aW9zQXV0aChhdXRoKTtcbiAgaWYgKGF4aW9zQXV0aCkge1xuICAgIHJlcXVlc3RPcHRzLmF1dGggPSBheGlvc0F1dGg7XG4gIH1cbiAgaWYgKF8uaXNQbGFpbk9iamVjdChoZWFkZXJzKSkge1xuICAgIHJlcXVlc3RPcHRzLmhlYWRlcnMgPSBoZWFkZXJzO1xuICB9XG5cbiAgY29uc3QgdGltZXIgPSBuZXcgVGltZXIoKS5zdGFydCgpO1xuICBsZXQgcmVzcG9uc2VMZW5ndGg7XG4gIHRyeSB7XG4gICAgY29uc3Qgd3JpdGVyID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0oZHN0UGF0aCk7XG4gICAgY29uc3Qge1xuICAgICAgZGF0YTogcmVzcG9uc2VTdHJlYW0sXG4gICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgfSA9IGF3YWl0IGF4aW9zKHJlcXVlc3RPcHRzKTtcbiAgICByZXNwb25zZUxlbmd0aCA9IHBhcnNlSW50KHJlc3BvbnNlSGVhZGVyc1snY29udGVudC1sZW5ndGgnXSwgMTApO1xuICAgIHJlc3BvbnNlU3RyZWFtLnBpcGUod3JpdGVyKTtcblxuICAgIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlc3BvbnNlU3RyZWFtLm9uY2UoJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHdyaXRlci5vbmNlKCdmaW5pc2gnLCByZXNvbHZlKTtcbiAgICAgIHdyaXRlci5vbmNlKCdlcnJvcicsIChlKSA9PiB7XG4gICAgICAgIHJlc3BvbnNlU3RyZWFtLnVucGlwZSh3cml0ZXIpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZG93bmxvYWQgdGhlIGZpbGUgZnJvbSAke3JlbW90ZVVybH06ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cblxuICBjb25zdCB7c2l6ZX0gPSBhd2FpdCBmcy5zdGF0KGRzdFBhdGgpO1xuICBpZiAocmVzcG9uc2VMZW5ndGggJiYgc2l6ZSAhPT0gcmVzcG9uc2VMZW5ndGgpIHtcbiAgICBhd2FpdCBmcy5yaW1yYWYoZHN0UGF0aCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc2l6ZSBvZiB0aGUgZmlsZSBkb3dubG9hZGVkIGZyb20gJHtyZW1vdGVVcmx9ICgke3NpemV9IGJ5dGVzKSBgICtcbiAgICAgIGBkaWZmZXJzIGZyb20gdGhlIG9uZSBpbiBDb250ZW50LUxlbmd0aCByZXNwb25zZSBoZWFkZXIgKCR7cmVzcG9uc2VMZW5ndGh9IGJ5dGVzKWApO1xuICB9XG4gIGlmIChpc01ldGVyZWQpIHtcbiAgICBjb25zdCBzZWNvbmRzRWxhcHNlZCA9IHRpbWVyLmdldER1cmF0aW9uKCkuYXNTZWNvbmRzO1xuICAgIGxvZy5kZWJ1ZyhgJHtyZW1vdGVVcmx9ICgke3RvUmVhZGFibGVTaXplU3RyaW5nKHNpemUpfSkgYCArXG4gICAgICBgaGFzIGJlZW4gZG93bmxvYWRlZCB0byAnJHtkc3RQYXRofScgaW4gJHtzZWNvbmRzRWxhcHNlZC50b0ZpeGVkKDMpfXNgKTtcbiAgICBpZiAoc2Vjb25kc0VsYXBzZWQgPj0gMikge1xuICAgICAgY29uc3QgYnl0ZXNQZXJTZWMgPSBNYXRoLmZsb29yKHNpemUgLyBzZWNvbmRzRWxhcHNlZCk7XG4gICAgICBsb2cuZGVidWcoYEFwcHJveGltYXRlIGRvd25sb2FkIHNwZWVkOiAke3RvUmVhZGFibGVTaXplU3RyaW5nKGJ5dGVzUGVyU2VjKX0vc2ApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgeyB1cGxvYWRGaWxlLCBkb3dubG9hZEZpbGUgfTtcblxuLyoqXG4gKiBDb21tb24gb3B0aW9ucyBmb3Ige0BsaW5rY29kZSB1cGxvYWRGaWxlfSBhbmQge0BsaW5rY29kZSBkb3dubG9hZEZpbGV9LlxuICogQHR5cGVkZWYgTmV0T3B0aW9uc1xuICogQHByb3BlcnR5IHtib29sZWFufSBbaXNNZXRlcmVkPXRydWVdIC0gV2hldGhlciB0byBsb2cgdGhlIGFjdHVhbCBkb3dubG9hZCBwZXJmb3JtYW5jZVxuICogKGUuZy4gdGltaW5ncyBhbmQgc3BlZWQpXG4gKiBAcHJvcGVydHkge0F1dGhDcmVkZW50aWFsc30gYXV0aFxuICovXG5cbi8qKlxuICogU3BlY2lmaWMgb3B0aW9ucyBmb3Ige0BsaW5rY29kZSBkb3dubG9hZEZpbGV9LlxuICogQHR5cGVkZWYgRG93bmxvYWRPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3RpbWVvdXRdIC0gVGhlIGFjdHVhbCByZXF1ZXN0IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzOyBkZWZhdWx0cyB0byB7QGxpbmtjb2RlIERFRkFVTFRfVElNRU9VVF9NU31cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZyxhbnk+fSBoZWFkZXJzIC0gUmVxdWVzdCBoZWFkZXJzIG1hcHBpbmdcbiAqL1xuXG4vKipcbiAqIEJhc2ljIGF1dGggY3JlZGVudGlhbHM7IHVzZWQgYnkge0BsaW5rY29kZSBOZXRPcHRpb25zfS5cbiAqIEB0eXBlZGVmIEF1dGhDcmVkZW50aWFsc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHVzZXIgLSBOb24tZW1wdHkgdXNlciBuYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGFzcyAtIE5vbi1lbXB0eSBwYXNzd29yZFxuICovXG5cbi8qKlxuICogVGhpcyB0eXBlIGlzIHVzZWQgaW4ge0BsaW5rY29kZSB1cGxvYWRGaWxlfSBpZiB0aGUgcmVtb3RlIGxvY2F0aW9uIHVzZXMgdGhlIGBmdHBgIHByb3RvY29sLCBhbmQgZGlzdGluZ3Vpc2hlcyB0aGUgdHlwZSBmcm9tIHtAbGlua2NvZGUgSHR0cFVwbG9hZE9wdGlvbnN9LlxuICogQHR5cGVkZWYgTm90SHR0cFVwbG9hZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bmV2ZXJ9IGhlYWRlcnNcbiAqIEBwcm9wZXJ0eSB7bmV2ZXJ9IG1ldGhvZFxuICogQHByb3BlcnR5IHtuZXZlcn0gdGltZW91dFxuICogQHByb3BlcnR5IHtuZXZlcn0gZmlsZUZpZWxkTmFtZVxuICogQHByb3BlcnR5IHtuZXZlcn0gZm9ybUZpZWxkc1xuICovXG5cbi8qKlxuICogU3BlY2lmaWMgb3B0aW9ucyBmb3Ige0BsaW5rY29kZSB1cGxvYWRGaWxlfSBpZiB0aGUgcmVtb3RlIGxvY2F0aW9uIHVzZXMgdGhlIGBodHRwKHMpYCBwcm90b2NvbFxuICogQHR5cGVkZWYgSHR0cFVwbG9hZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZyxhbnk+fSBoZWFkZXJzIC0gQWRkaXRpb25hbCByZXF1ZXN0IGhlYWRlcnMgbWFwcGluZ1xuICogQHByb3BlcnR5IHtpbXBvcnQoJ2F4aW9zJykuTWV0aG9kfSBbbWV0aG9kPSdQT1NUJ10gLSBUaGUgSFRUUCBtZXRob2QgdXNlZCBmb3IgZmlsZSB1cGxvYWRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbdGltZW91dF0gLSBUaGUgYWN0dWFsIHJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHM7IGRlZmF1bHRzIHRvIHtAbGlua2NvZGUgREVGQVVMVF9USU1FT1VUX01TfVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtmaWxlRmllbGROYW1lPSdmaWxlJ10gLSBUaGUgbmFtZSBvZiB0aGUgZm9ybSBmaWVsZCBjb250YWluaW5nIHRoZSBmaWxlXG4gKiBjb250ZW50IHRvIGJlIHVwbG9hZGVkLiBBbnkgZmFsc3kgdmFsdWUgbWFrZSB0aGUgcmVxdWVzdCB0byB1c2Ugbm9uLW11bHRpcGFydCB1cGxvYWRcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZyxhbnk+fSBbZm9ybUZpZWxkc10gLSBUaGUgYWRkaXRpb25hbCBmb3JtIGZpZWxkc1xuICogdG8gYmUgaW5jbHVkZWQgaW50byB0aGUgdXBsb2FkIHJlcXVlc3QuIFRoaXMgcHJvcGVydHkgaXMgb25seSBjb25zaWRlcmVkIGlmXG4gKiBgZmlsZUZpZWxkTmFtZWAgaXMgc2V0XG4gKi9cblxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility function to extend node functionality, allowing us to require
|
|
3
|
+
* modules that are installed globally. If the package cannot be required,
|
|
4
|
+
* this will attempt to link the package and then re-require it
|
|
5
|
+
*
|
|
6
|
+
* @param {string} packageName - the name of the package to be required
|
|
7
|
+
* @returns {Promise<unknown>} - the package object
|
|
8
|
+
* @throws {Error} If the package is not found locally or globally
|
|
9
|
+
*/
|
|
10
|
+
export function requirePackage(packageName: string): Promise<unknown>;
|
|
11
|
+
/**
|
|
12
|
+
* Calculate the in-depth size in memory of the provided object.
|
|
13
|
+
* The original implementation is borrowed from https://github.com/miktam/sizeof.
|
|
14
|
+
*
|
|
15
|
+
* @param {*} obj An object whose size should be calculated
|
|
16
|
+
* @returns {number} Object size in bytes.
|
|
17
|
+
*/
|
|
18
|
+
export function getObjectSize(obj: any): number;
|
|
19
|
+
/**
|
|
20
|
+
* Calculates a unique object identifier
|
|
21
|
+
*
|
|
22
|
+
* @param {object} object Any valid ECMA object
|
|
23
|
+
* @returns {string} A uuidV4 string that uniquely identifies given object
|
|
24
|
+
*/
|
|
25
|
+
export function getObjectId(object: object): string;
|
|
26
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../lib/node.js"],"names":[],"mappings":"AAoCA;;;;;;;;GAQG;AACH,4CAJW,MAAM,GACJ,QAAQ,OAAO,CAAC,CA6B5B;AAuED;;;;;;GAMG;AACH,yCAFa,MAAM,CAIlB;AAID;;;;;GAKG;AACH,oCAHW,MAAM,GACJ,MAAM,CAOlB"}
|
package/build/lib/node.js
CHANGED
|
@@ -60,7 +60,9 @@ async function requirePackage(packageName) {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
try {
|
|
63
|
-
|
|
63
|
+
var _process$env$npm_conf;
|
|
64
|
+
|
|
65
|
+
const globalPackageName = _path.default.resolve((_process$env$npm_conf = process.env.npm_config_prefix) !== null && _process$env$npm_conf !== void 0 ? _process$env$npm_conf : '', 'lib', 'node_modules', packageName);
|
|
64
66
|
|
|
65
67
|
_logger.default.debug(`Loading global package '${globalPackageName}'`);
|
|
66
68
|
|
|
@@ -166,4 +168,4 @@ function getObjectId(object) {
|
|
|
166
168
|
|
|
167
169
|
return OBJECTS_MAPPING.get(object);
|
|
168
170
|
}
|
|
169
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9ub2RlLmpzIl0sIm5hbWVzIjpbIkVDTUFfU0laRVMiLCJPYmplY3QiLCJmcmVlemUiLCJTVFJJTkciLCJCT09MRUFOIiwiTlVNQkVSIiwibGlua0dsb2JhbFBhY2thZ2UiLCJwYWNrYWdlTmFtZSIsImxvZyIsImRlYnVnIiwiY21kIiwidGltZW91dCIsImVyciIsIm1zZyIsIm1lc3NhZ2UiLCJzdGRlcnIiLCJFcnJvciIsInJlcXVpcmVQYWNrYWdlIiwicmVxdWlyZSIsImdsb2JhbFBhY2thZ2VOYW1lIiwicGF0aCIsInJlc29sdmUiLCJwcm9jZXNzIiwiZW52IiwibnBtX2NvbmZpZ19wcmVmaXgiLCJlcnJvckFuZFRocm93IiwiZXh0cmFjdEFsbFByb3BlcnRpZXMiLCJvYmoiLCJzdHJpbmdQcm9wZXJ0aWVzIiwicHJvcCIsInB1c2giLCJfIiwiaXNGdW5jdGlvbiIsImdldE93blByb3BlcnR5U3ltYm9scyIsIl9nZXRTaXplT2ZPYmplY3QiLCJzZWVuIiwib2JqZWN0IiwiaXNOaWwiLCJieXRlcyIsInByb3BlcnRpZXMiLCJrZXkiLCJoYXMiLCJhZGQiLCJnZXRDYWxjdWxhdG9yIiwiZXgiLCJSYW5nZUVycm9yIiwiY2FsY3VsYXRvciIsImlzQnVmZmVyIiwibGVuZ3RoIiwiU3ltYm9sIiwia2V5Rm9yIiwidG9TdHJpbmciLCJpc0FycmF5IiwibWFwIiwicmVkdWNlIiwiYWNjIiwiY3VyciIsImdldE9iamVjdFNpemUiLCJXZWFrU2V0IiwiT0JKRUNUU19NQVBQSU5HIiwiV2Vha01hcCIsImdldE9iamVjdElkIiwic2V0IiwiZ2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUMvQkMsRUFBQUEsTUFBTSxFQUFFLENBRHVCO0FBRS9CQyxFQUFBQSxPQUFPLEVBQUUsQ0FGc0I7QUFHL0JDLEVBQUFBLE1BQU0sRUFBRTtBQUh1QixDQUFkLENBQW5COztBQVlBLGVBQWVDLGlCQUFmLENBQWtDQyxXQUFsQyxFQUErQztBQUM3QyxNQUFJO0FBQ0ZDLG9CQUFJQyxLQUFKLENBQVcsb0JBQW1CRixXQUFZLEdBQTFDOztBQUNBLFVBQU1HLEdBQUcsR0FBRywyQkFBYyxTQUFkLEdBQTBCLEtBQXRDO0FBQ0EsVUFBTSx3QkFBS0EsR0FBTCxFQUFVLENBQUMsTUFBRCxFQUFTSCxXQUFULENBQVYsRUFBaUM7QUFBQ0ksTUFBQUEsT0FBTyxFQUFFO0FBQVYsS0FBakMsQ0FBTjtBQUNELEdBSkQsQ0FJRSxPQUFPQyxHQUFQLEVBQVk7QUFDWixVQUFNQyxHQUFHLEdBQUksMkJBQTBCTixXQUFZLHNCQUFxQkssR0FBRyxDQUFDRSxPQUFRLEVBQXBGOztBQUNBTixvQkFBSUMsS0FBSixDQUFVSSxHQUFWOztBQUNBLFFBQUlELEdBQUcsQ0FBQ0csTUFBUixFQUFnQjtBQUdkUCxzQkFBSUMsS0FBSixDQUFVRyxHQUFHLENBQUNHLE1BQWQ7QUFDRDs7QUFDRCxVQUFNLElBQUlDLEtBQUosQ0FBVUgsR0FBVixDQUFOO0FBQ0Q7QUFDRjs7QUFXRCxlQUFlSSxjQUFmLENBQStCVixXQUEvQixFQUE0QztBQUUxQyxNQUFJO0FBQ0ZDLG9CQUFJQyxLQUFKLENBQVcsMEJBQXlCRixXQUFZLEdBQWhEOztBQUNBLFdBQU9XLE9BQU8sQ0FBQ1gsV0FBRCxDQUFkO0FBQ0QsR0FIRCxDQUdFLE9BQU9LLEdBQVAsRUFBWTtBQUNaSixvQkFBSUMsS0FBSixDQUFXLGlDQUFnQ0YsV0FBWSxNQUFLSyxHQUFHLENBQUNFLE9BQVEsRUFBeEU7QUFDRDs7QUFHRCxNQUFJO0FBQ0YsVUFBTUssaUJBQWlCLEdBQUdDLGNBQUtDLE9BQUwsQ0FBYUMsT0FBTyxDQUFDQyxHQUFSLENBQVlDLGlCQUF6QixFQUE0QyxLQUE1QyxFQUFtRCxjQUFuRCxFQUFtRWpCLFdBQW5FLENBQTFCOztBQUNBQyxvQkFBSUMsS0FBSixDQUFXLDJCQUEwQlUsaUJBQWtCLEdBQXZEOztBQUNBLFdBQU9ELE9BQU8sQ0FBQ0MsaUJBQUQsQ0FBZDtBQUNELEdBSkQsQ0FJRSxPQUFPUCxHQUFQLEVBQVk7QUFDWkosb0JBQUlDLEtBQUosQ0FBVyxrQ0FBaUNGLFdBQVksTUFBS0ssR0FBRyxDQUFDRSxPQUFRLEVBQXpFO0FBQ0Q7O0FBR0QsTUFBSTtBQUNGLFVBQU1SLGlCQUFpQixDQUFDQyxXQUFELENBQXZCOztBQUNBQyxvQkFBSUMsS0FBSixDQUFXLG9DQUFtQ0YsV0FBWSxHQUExRDs7QUFDQSxXQUFPVyxPQUFPLENBQUNYLFdBQUQsQ0FBZDtBQUNELEdBSkQsQ0FJRSxPQUFPSyxHQUFQLEVBQVk7QUFDWkosb0JBQUlpQixhQUFKLENBQW1CLDJCQUEwQmxCLFdBQVksTUFBS0ssR0FBRyxDQUFDRSxPQUFRLEVBQTFFO0FBQ0Q7QUFDRjs7QUFFRCxTQUFTWSxvQkFBVCxDQUErQkMsR0FBL0IsRUFBb0M7QUFDbEMsUUFBTUMsZ0JBQWdCLEdBQUcsRUFBekI7O0FBQ0EsT0FBSyxNQUFNQyxJQUFYLElBQW1CRixHQUFuQixFQUF3QjtBQUN0QkMsSUFBQUEsZ0JBQWdCLENBQUNFLElBQWpCLENBQXNCRCxJQUF0QjtBQUNEOztBQUNELE1BQUlFLGdCQUFFQyxVQUFGLENBQWEvQixNQUFNLENBQUNnQyxxQkFBcEIsQ0FBSixFQUFnRDtBQUM5Q0wsSUFBQUEsZ0JBQWdCLENBQUNFLElBQWpCLENBQXNCLEdBQUk3QixNQUFNLENBQUNnQyxxQkFBUCxDQUE2Qk4sR0FBN0IsQ0FBMUI7QUFDRDs7QUFDRCxTQUFPQyxnQkFBUDtBQUNEOztBQUVELFNBQVNNLGdCQUFULENBQTJCQyxJQUEzQixFQUFpQ0MsTUFBakMsRUFBeUM7QUFDdkMsTUFBSUwsZ0JBQUVNLEtBQUYsQ0FBUUQsTUFBUixDQUFKLEVBQXFCO0FBQ25CLFdBQU8sQ0FBUDtBQUNEOztBQUVELE1BQUlFLEtBQUssR0FBRyxDQUFaO0FBQ0EsUUFBTUMsVUFBVSxHQUFHYixvQkFBb0IsQ0FBQ1UsTUFBRCxDQUF2Qzs7QUFDQSxPQUFLLE1BQU1JLEdBQVgsSUFBa0JELFVBQWxCLEVBQThCO0FBRTVCLFFBQUksT0FBT0gsTUFBTSxDQUFDSSxHQUFELENBQWIsS0FBdUIsUUFBdkIsSUFBbUMsQ0FBQ1QsZ0JBQUVNLEtBQUYsQ0FBUUQsTUFBTSxDQUFDSSxHQUFELENBQWQsQ0FBeEMsRUFBOEQ7QUFDNUQsVUFBSUwsSUFBSSxDQUFDTSxHQUFMLENBQVNMLE1BQU0sQ0FBQ0ksR0FBRCxDQUFmLENBQUosRUFBMkI7QUFDekI7QUFDRDs7QUFDREwsTUFBQUEsSUFBSSxDQUFDTyxHQUFMLENBQVNOLE1BQU0sQ0FBQ0ksR0FBRCxDQUFmO0FBQ0Q7O0FBRURGLElBQUFBLEtBQUssSUFBSUssYUFBYSxDQUFDUixJQUFELENBQWIsQ0FBb0JLLEdBQXBCLENBQVQ7O0FBQ0EsUUFBSTtBQUNGRixNQUFBQSxLQUFLLElBQUlLLGFBQWEsQ0FBQ1IsSUFBRCxDQUFiLENBQW9CQyxNQUFNLENBQUNJLEdBQUQsQ0FBMUIsQ0FBVDtBQUNELEtBRkQsQ0FFRSxPQUFPSSxFQUFQLEVBQVc7QUFDWCxVQUFJQSxFQUFFLFlBQVlDLFVBQWxCLEVBQThCO0FBRzVCUCxRQUFBQSxLQUFLLEdBQUcsQ0FBUjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPQSxLQUFQO0FBQ0Q7O0FBRUQsU0FBU0ssYUFBVCxDQUF3QlIsSUFBeEIsRUFBOEI7QUFDNUIsU0FBTyxTQUFTVyxVQUFULENBQXFCbkIsR0FBckIsRUFBMEI7QUFDL0IsUUFBSUksZ0JBQUVnQixRQUFGLENBQVdwQixHQUFYLENBQUosRUFBcUI7QUFDbkIsYUFBT0EsR0FBRyxDQUFDcUIsTUFBWDtBQUNEOztBQUVELFlBQVEsT0FBUXJCLEdBQWhCO0FBQ0UsV0FBSyxRQUFMO0FBQ0UsZUFBT0EsR0FBRyxDQUFDcUIsTUFBSixHQUFhaEQsVUFBVSxDQUFDRyxNQUEvQjs7QUFDRixXQUFLLFNBQUw7QUFDRSxlQUFPSCxVQUFVLENBQUNJLE9BQWxCOztBQUNGLFdBQUssUUFBTDtBQUNFLGVBQU9KLFVBQVUsQ0FBQ0ssTUFBbEI7O0FBQ0YsV0FBSyxRQUFMO0FBQ0UsZUFBTzBCLGdCQUFFQyxVQUFGLENBQWFpQixNQUFNLENBQUNDLE1BQXBCLEtBQStCRCxNQUFNLENBQUNDLE1BQVAsQ0FBY3ZCLEdBQWQsQ0FBL0IsR0FDSHNCLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjdkIsR0FBZCxFQUFtQnFCLE1BQW5CLEdBQTRCaEQsVUFBVSxDQUFDRyxNQURwQyxHQUVILENBQUN3QixHQUFHLENBQUN3QixRQUFKLEdBQWVILE1BQWYsR0FBd0IsQ0FBekIsSUFBOEJoRCxVQUFVLENBQUNHLE1BRjdDOztBQUdGLFdBQUssUUFBTDtBQUNFLGVBQU80QixnQkFBRXFCLE9BQUYsQ0FBVXpCLEdBQVYsSUFDSEEsR0FBRyxDQUFDMEIsR0FBSixDQUFRVixhQUFhLENBQUNSLElBQUQsQ0FBckIsRUFBNkJtQixNQUE3QixDQUFvQyxDQUFDQyxHQUFELEVBQU1DLElBQU4sS0FBZUQsR0FBRyxHQUFHQyxJQUF6RCxFQUErRCxDQUEvRCxDQURHLEdBRUh0QixnQkFBZ0IsQ0FBQ0MsSUFBRCxFQUFPUixHQUFQLENBRnBCOztBQUdGO0FBQ0UsZUFBTyxDQUFQO0FBaEJKO0FBa0JELEdBdkJEO0FBd0JEOztBQVNELFNBQVM4QixhQUFULENBQXdCOUIsR0FBeEIsRUFBNkI7QUFDM0IsU0FBT2dCLGFBQWEsQ0FBQyxJQUFJZSxPQUFKLEVBQUQsQ0FBYixDQUE2Qi9CLEdBQTdCLENBQVA7QUFDRDs7QUFFRCxNQUFNZ0MsZUFBZSxHQUFHLElBQUlDLE9BQUosRUFBeEI7O0FBUUEsU0FBU0MsV0FBVCxDQUFzQnpCLE1BQXRCLEVBQThCO0FBQzVCLE1BQUksQ0FBQ3VCLGVBQWUsQ0FBQ2xCLEdBQWhCLENBQW9CTCxNQUFwQixDQUFMLEVBQWtDO0FBQ2hDdUIsSUFBQUEsZUFBZSxDQUFDRyxHQUFoQixDQUFvQjFCLE1BQXBCLEVBQTRCLGVBQTVCO0FBQ0Q7O0FBQ0QsU0FBT3VCLGVBQWUsQ0FBQ0ksR0FBaEIsQ0FBb0IzQixNQUFwQixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tICcuL3N5c3RlbSc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZFY0IH0gZnJvbSAndXVpZCc7XG5cbmNvbnN0IEVDTUFfU0laRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgU1RSSU5HOiAyLFxuICBCT09MRUFOOiA0LFxuICBOVU1CRVI6IDgsXG59KTtcblxuLyoqXG4gKiBJbnRlcm5hbCB1dGlsaXR5IHRvIGxpbmsgZ2xvYmFsIHBhY2thZ2UgdG8gbG9jYWwgY29udGV4dFxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gbmFtZSBvZiB0aGUgcGFja2FnZSB0byBsaW5rXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvbW1hbmQgZmFpbHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbGlua0dsb2JhbFBhY2thZ2UgKHBhY2thZ2VOYW1lKSB7XG4gIHRyeSB7XG4gICAgbG9nLmRlYnVnKGBMaW5raW5nIHBhY2thZ2UgJyR7cGFja2FnZU5hbWV9J2ApO1xuICAgIGNvbnN0IGNtZCA9IGlzV2luZG93cygpID8gJ25wbS5jbWQnIDogJ25wbSc7XG4gICAgYXdhaXQgZXhlYyhjbWQsIFsnbGluaycsIHBhY2thZ2VOYW1lXSwge3RpbWVvdXQ6IDIwMDAwfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnN0IG1zZyA9IGBVbmFibGUgdG8gbG9hZCBwYWNrYWdlICcke3BhY2thZ2VOYW1lfScsIGxpbmtpbmcgZmFpbGVkOiAke2Vyci5tZXNzYWdlfWA7XG4gICAgbG9nLmRlYnVnKG1zZyk7XG4gICAgaWYgKGVyci5zdGRlcnIpIHtcbiAgICAgIC8vIGxvZyB0aGUgc3RkZXJyIGlmIHRoZXJlLCBidXQgZG8gbm90IGFkZCB0byB0aHJvd24gZXJyb3IgYXMgaXQgaXNcbiAgICAgIC8vIF92ZXJ5XyB2ZXJib3NlXG4gICAgICBsb2cuZGVidWcoZXJyLnN0ZGVycik7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICB9XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBleHRlbmQgbm9kZSBmdW5jdGlvbmFsaXR5LCBhbGxvd2luZyB1cyB0byByZXF1aXJlXG4gKiBtb2R1bGVzIHRoYXQgYXJlIGluc3RhbGxlZCBnbG9iYWxseS4gSWYgdGhlIHBhY2thZ2UgY2Fubm90IGJlIHJlcXVpcmVkLFxuICogdGhpcyB3aWxsIGF0dGVtcHQgdG8gbGluayB0aGUgcGFja2FnZSBhbmQgdGhlbiByZS1yZXF1aXJlIGl0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhY2thZ2VOYW1lIC0gdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UgdG8gYmUgcmVxdWlyZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9IC0gdGhlIHBhY2thZ2Ugb2JqZWN0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHBhY2thZ2UgaXMgbm90IGZvdW5kIGxvY2FsbHkgb3IgZ2xvYmFsbHlcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVxdWlyZVBhY2thZ2UgKHBhY2thZ2VOYW1lKSB7XG4gIC8vIGZpcnN0LCBnZXQgaXQgaW4gdGhlIG5vcm1hbCB3YXkgKHNlZSBodHRwczovL25vZGVqcy5vcmcvYXBpL21vZHVsZXMuaHRtbCNtb2R1bGVzX2FsbF90b2dldGhlcilcbiAgdHJ5IHtcbiAgICBsb2cuZGVidWcoYExvYWRpbmcgbG9jYWwgcGFja2FnZSAnJHtwYWNrYWdlTmFtZX0nYCk7XG4gICAgcmV0dXJuIHJlcXVpcmUocGFja2FnZU5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cuZGVidWcoYEZhaWxlZCB0byBsb2FkIGxvY2FsIHBhY2thZ2UgJyR7cGFja2FnZU5hbWV9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxuXG4gIC8vIHNlY29uZCwgZ2V0IGl0IGZyb20gd2hlcmUgaXQgb3VnaHQgdG8gYmUgaW4gdGhlIGdsb2JhbCBub2RlX21vZHVsZXNcbiAgdHJ5IHtcbiAgICBjb25zdCBnbG9iYWxQYWNrYWdlTmFtZSA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5ucG1fY29uZmlnX3ByZWZpeCwgJ2xpYicsICdub2RlX21vZHVsZXMnLCBwYWNrYWdlTmFtZSk7XG4gICAgbG9nLmRlYnVnKGBMb2FkaW5nIGdsb2JhbCBwYWNrYWdlICcke2dsb2JhbFBhY2thZ2VOYW1lfSdgKTtcbiAgICByZXR1cm4gcmVxdWlyZShnbG9iYWxQYWNrYWdlTmFtZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhgRmFpbGVkIHRvIGxvYWQgZ2xvYmFsIHBhY2thZ2UgJyR7cGFja2FnZU5hbWV9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxuXG4gIC8vIHRoaXJkLCBsaW5rIHRoZSBmaWxlIGFuZCBnZXQgbG9jYWxseVxuICB0cnkge1xuICAgIGF3YWl0IGxpbmtHbG9iYWxQYWNrYWdlKHBhY2thZ2VOYW1lKTtcbiAgICBsb2cuZGVidWcoYFJldHJ5aW5nIGxvYWQgb2YgbGlua2VkIHBhY2thZ2UgJyR7cGFja2FnZU5hbWV9J2ApO1xuICAgIHJldHVybiByZXF1aXJlKHBhY2thZ2VOYW1lKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coYFVuYWJsZSB0byBsb2FkIHBhY2thZ2UgJyR7cGFja2FnZU5hbWV9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBleHRyYWN0QWxsUHJvcGVydGllcyAob2JqKSB7XG4gIGNvbnN0IHN0cmluZ1Byb3BlcnRpZXMgPSBbXTtcbiAgZm9yIChjb25zdCBwcm9wIGluIG9iaikge1xuICAgIHN0cmluZ1Byb3BlcnRpZXMucHVzaChwcm9wKTtcbiAgfVxuICBpZiAoXy5pc0Z1bmN0aW9uKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpKSB7XG4gICAgc3RyaW5nUHJvcGVydGllcy5wdXNoKC4uLihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iaikpKTtcbiAgfVxuICByZXR1cm4gc3RyaW5nUHJvcGVydGllcztcbn1cblxuZnVuY3Rpb24gX2dldFNpemVPZk9iamVjdCAoc2Vlbiwgb2JqZWN0KSB7XG4gIGlmIChfLmlzTmlsKG9iamVjdCkpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGxldCBieXRlcyA9IDA7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBleHRyYWN0QWxsUHJvcGVydGllcyhvYmplY3QpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgLy8gRG8gbm90IHJlY2FsY3VsYXRlIGNpcmN1bGFyIHJlZmVyZW5jZXNcbiAgICBpZiAodHlwZW9mIG9iamVjdFtrZXldID09PSAnb2JqZWN0JyAmJiAhXy5pc05pbChvYmplY3Rba2V5XSkpIHtcbiAgICAgIGlmIChzZWVuLmhhcyhvYmplY3Rba2V5XSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzZWVuLmFkZChvYmplY3Rba2V5XSk7XG4gICAgfVxuXG4gICAgYnl0ZXMgKz0gZ2V0Q2FsY3VsYXRvcihzZWVuKShrZXkpO1xuICAgIHRyeSB7XG4gICAgICBieXRlcyArPSBnZXRDYWxjdWxhdG9yKHNlZW4pKG9iamVjdFtrZXldKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgaWYgKGV4IGluc3RhbmNlb2YgUmFuZ2VFcnJvcikge1xuICAgICAgICAvLyBjaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQsIGZpbmFsIHJlc3VsdCBtaWdodCBiZSBpbmNvcnJlY3RcbiAgICAgICAgLy8gbGV0J3MgYmUgbmljZSBhbmQgbm90IHRocm93IGFuIGV4Y2VwdGlvblxuICAgICAgICBieXRlcyA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzO1xufVxuXG5mdW5jdGlvbiBnZXRDYWxjdWxhdG9yIChzZWVuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBjYWxjdWxhdG9yIChvYmopIHtcbiAgICBpZiAoXy5pc0J1ZmZlcihvYmopKSB7XG4gICAgICByZXR1cm4gb2JqLmxlbmd0aDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGVvZiAob2JqKSkge1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIG9iai5sZW5ndGggKiBFQ01BX1NJWkVTLlNUUklORztcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICByZXR1cm4gRUNNQV9TSVpFUy5CT09MRUFOO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmV0dXJuIEVDTUFfU0laRVMuTlVNQkVSO1xuICAgICAgY2FzZSAnc3ltYm9sJzpcbiAgICAgICAgcmV0dXJuIF8uaXNGdW5jdGlvbihTeW1ib2wua2V5Rm9yKSAmJiBTeW1ib2wua2V5Rm9yKG9iailcbiAgICAgICAgICA/IFN5bWJvbC5rZXlGb3Iob2JqKS5sZW5ndGggKiBFQ01BX1NJWkVTLlNUUklOR1xuICAgICAgICAgIDogKG9iai50b1N0cmluZygpLmxlbmd0aCAtIDgpICogRUNNQV9TSVpFUy5TVFJJTkc7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICByZXR1cm4gXy5pc0FycmF5KG9iailcbiAgICAgICAgICA/IG9iai5tYXAoZ2V0Q2FsY3VsYXRvcihzZWVuKSkucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIsIDApXG4gICAgICAgICAgOiBfZ2V0U2l6ZU9mT2JqZWN0KHNlZW4sIG9iaik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBpbi1kZXB0aCBzaXplIGluIG1lbW9yeSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0LlxuICogVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIGlzIGJvcnJvd2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21pa3RhbS9zaXplb2YuXG4gKlxuICogQHBhcmFtIHsqfSBvYmogQW4gb2JqZWN0IHdob3NlIHNpemUgc2hvdWxkIGJlIGNhbGN1bGF0ZWRcbiAqIEByZXR1cm5zIHtudW1iZXJ9IE9iamVjdCBzaXplIGluIGJ5dGVzLlxuICovXG5mdW5jdGlvbiBnZXRPYmplY3RTaXplIChvYmopIHtcbiAgcmV0dXJuIGdldENhbGN1bGF0b3IobmV3IFdlYWtTZXQoKSkob2JqKTtcbn1cblxuY29uc3QgT0JKRUNUU19NQVBQSU5HID0gbmV3IFdlYWtNYXAoKTtcblxuLyoqXG4gKiBDYWxjdWxhdGVzIGEgdW5pcXVlIG9iamVjdCBpZGVudGlmaWVyXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9iamVjdCBBbnkgdmFsaWQgRUNNQSBvYmplY3RcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgdXVpZFY0IHN0cmluZyB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgZ2l2ZW4gb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGdldE9iamVjdElkIChvYmplY3QpIHtcbiAgaWYgKCFPQkpFQ1RTX01BUFBJTkcuaGFzKG9iamVjdCkpIHtcbiAgICBPQkpFQ1RTX01BUFBJTkcuc2V0KG9iamVjdCwgdXVpZFY0KCkpO1xuICB9XG4gIHJldHVybiBPQkpFQ1RTX01BUFBJTkcuZ2V0KG9iamVjdCk7XG59XG5cbmV4cG9ydCB7IHJlcXVpcmVQYWNrYWdlLCBnZXRPYmplY3RTaXplLCBnZXRPYmplY3RJZCB9O1xuIl19
|
|
171
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9ub2RlLmpzIl0sIm5hbWVzIjpbIkVDTUFfU0laRVMiLCJPYmplY3QiLCJmcmVlemUiLCJTVFJJTkciLCJCT09MRUFOIiwiTlVNQkVSIiwibGlua0dsb2JhbFBhY2thZ2UiLCJwYWNrYWdlTmFtZSIsImxvZyIsImRlYnVnIiwiY21kIiwidGltZW91dCIsImVyciIsIm1zZyIsIm1lc3NhZ2UiLCJzdGRlcnIiLCJFcnJvciIsInJlcXVpcmVQYWNrYWdlIiwicmVxdWlyZSIsImdsb2JhbFBhY2thZ2VOYW1lIiwicGF0aCIsInJlc29sdmUiLCJwcm9jZXNzIiwiZW52IiwibnBtX2NvbmZpZ19wcmVmaXgiLCJlcnJvckFuZFRocm93IiwiZXh0cmFjdEFsbFByb3BlcnRpZXMiLCJvYmoiLCJzdHJpbmdQcm9wZXJ0aWVzIiwicHJvcCIsInB1c2giLCJfIiwiaXNGdW5jdGlvbiIsImdldE93blByb3BlcnR5U3ltYm9scyIsIl9nZXRTaXplT2ZPYmplY3QiLCJzZWVuIiwib2JqZWN0IiwiaXNOaWwiLCJieXRlcyIsInByb3BlcnRpZXMiLCJrZXkiLCJoYXMiLCJhZGQiLCJnZXRDYWxjdWxhdG9yIiwiZXgiLCJSYW5nZUVycm9yIiwiY2FsY3VsYXRvciIsImlzQnVmZmVyIiwibGVuZ3RoIiwiU3ltYm9sIiwia2V5Rm9yIiwidG9TdHJpbmciLCJpc0FycmF5IiwibWFwIiwicmVkdWNlIiwiYWNjIiwiY3VyciIsImdldE9iamVjdFNpemUiLCJXZWFrU2V0IiwiT0JKRUNUU19NQVBQSU5HIiwiV2Vha01hcCIsImdldE9iamVjdElkIiwic2V0IiwiZ2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUMvQkMsRUFBQUEsTUFBTSxFQUFFLENBRHVCO0FBRS9CQyxFQUFBQSxPQUFPLEVBQUUsQ0FGc0I7QUFHL0JD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QjNCLE1BQXBCLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gJy4vc3lzdGVtJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tICd1dWlkJztcblxuY29uc3QgRUNNQV9TSVpFUyA9IE9iamVjdC5mcmVlemUoe1xuICBTVFJJTkc6IDIsXG4gIEJPT0xFQU46IDQsXG4gIE5VTUJFUjogOCxcbn0pO1xuXG4vKipcbiAqIEludGVybmFsIHV0aWxpdHkgdG8gbGluayBnbG9iYWwgcGFja2FnZSB0byBsb2NhbCBjb250ZXh0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhY2thZ2VOYW1lIC0gbmFtZSBvZiB0aGUgcGFja2FnZSB0byBsaW5rXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvbW1hbmQgZmFpbHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbGlua0dsb2JhbFBhY2thZ2UgKHBhY2thZ2VOYW1lKSB7XG4gIHRyeSB7XG4gICAgbG9nLmRlYnVnKGBMaW5raW5nIHBhY2thZ2UgJyR7cGFja2FnZU5hbWV9J2ApO1xuICAgIGNvbnN0IGNtZCA9IGlzV2luZG93cygpID8gJ25wbS5jbWQnIDogJ25wbSc7XG4gICAgYXdhaXQgZXhlYyhjbWQsIFsnbGluaycsIHBhY2thZ2VOYW1lXSwge3RpbWVvdXQ6IDIwMDAwfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnN0IG1zZyA9IGBVbmFibGUgdG8gbG9hZCBwYWNrYWdlICcke3BhY2thZ2VOYW1lfScsIGxpbmtpbmcgZmFpbGVkOiAke2Vyci5tZXNzYWdlfWA7XG4gICAgbG9nLmRlYnVnKG1zZyk7XG4gICAgaWYgKGVyci5zdGRlcnIpIHtcbiAgICAgIC8vIGxvZyB0aGUgc3RkZXJyIGlmIHRoZXJlLCBidXQgZG8gbm90IGFkZCB0byB0aHJvd24gZXJyb3IgYXMgaXQgaXNcbiAgICAgIC8vIF92ZXJ5XyB2ZXJib3NlXG4gICAgICBsb2cuZGVidWcoZXJyLnN0ZGVycik7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICB9XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBleHRlbmQgbm9kZSBmdW5jdGlvbmFsaXR5LCBhbGxvd2luZyB1cyB0byByZXF1aXJlXG4gKiBtb2R1bGVzIHRoYXQgYXJlIGluc3RhbGxlZCBnbG9iYWxseS4gSWYgdGhlIHBhY2thZ2UgY2Fubm90IGJlIHJlcXVpcmVkLFxuICogdGhpcyB3aWxsIGF0dGVtcHQgdG8gbGluayB0aGUgcGFja2FnZSBhbmQgdGhlbiByZS1yZXF1aXJlIGl0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhY2thZ2VOYW1lIC0gdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UgdG8gYmUgcmVxdWlyZWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPHVua25vd24+fSAtIHRoZSBwYWNrYWdlIG9iamVjdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBwYWNrYWdlIGlzIG5vdCBmb3VuZCBsb2NhbGx5IG9yIGdsb2JhbGx5XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlcXVpcmVQYWNrYWdlIChwYWNrYWdlTmFtZSkge1xuICAvLyBmaXJzdCwgZ2V0IGl0IGluIHRoZSBub3JtYWwgd2F5IChzZWUgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9tb2R1bGVzLmh0bWwjbW9kdWxlc19hbGxfdG9nZXRoZXIpXG4gIHRyeSB7XG4gICAgbG9nLmRlYnVnKGBMb2FkaW5nIGxvY2FsIHBhY2thZ2UgJyR7cGFja2FnZU5hbWV9J2ApO1xuICAgIHJldHVybiByZXF1aXJlKHBhY2thZ2VOYW1lKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmRlYnVnKGBGYWlsZWQgdG8gbG9hZCBsb2NhbCBwYWNrYWdlICcke3BhY2thZ2VOYW1lfSc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cblxuICAvLyBzZWNvbmQsIGdldCBpdCBmcm9tIHdoZXJlIGl0IG91Z2h0IHRvIGJlIGluIHRoZSBnbG9iYWwgbm9kZV9tb2R1bGVzXG4gIHRyeSB7XG4gICAgY29uc3QgZ2xvYmFsUGFja2FnZU5hbWUgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYubnBtX2NvbmZpZ19wcmVmaXggPz8gJycsICdsaWInLCAnbm9kZV9tb2R1bGVzJywgcGFja2FnZU5hbWUpO1xuICAgIGxvZy5kZWJ1ZyhgTG9hZGluZyBnbG9iYWwgcGFja2FnZSAnJHtnbG9iYWxQYWNrYWdlTmFtZX0nYCk7XG4gICAgcmV0dXJuIHJlcXVpcmUoZ2xvYmFsUGFja2FnZU5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cuZGVidWcoYEZhaWxlZCB0byBsb2FkIGdsb2JhbCBwYWNrYWdlICcke3BhY2thZ2VOYW1lfSc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cblxuICAvLyB0aGlyZCwgbGluayB0aGUgZmlsZSBhbmQgZ2V0IGxvY2FsbHlcbiAgdHJ5IHtcbiAgICBhd2FpdCBsaW5rR2xvYmFsUGFja2FnZShwYWNrYWdlTmFtZSk7XG4gICAgbG9nLmRlYnVnKGBSZXRyeWluZyBsb2FkIG9mIGxpbmtlZCBwYWNrYWdlICcke3BhY2thZ2VOYW1lfSdgKTtcbiAgICByZXR1cm4gcmVxdWlyZShwYWNrYWdlTmFtZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5lcnJvckFuZFRocm93KGBVbmFibGUgdG8gbG9hZCBwYWNrYWdlICcke3BhY2thZ2VOYW1lfSc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFsbFByb3BlcnRpZXMgKG9iaikge1xuICBjb25zdCBzdHJpbmdQcm9wZXJ0aWVzID0gW107XG4gIGZvciAoY29uc3QgcHJvcCBpbiBvYmopIHtcbiAgICBzdHJpbmdQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG4gIH1cbiAgaWYgKF8uaXNGdW5jdGlvbihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSkge1xuICAgIHN0cmluZ1Byb3BlcnRpZXMucHVzaCguLi4oT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmopKSk7XG4gIH1cbiAgcmV0dXJuIHN0cmluZ1Byb3BlcnRpZXM7XG59XG5cbmZ1bmN0aW9uIF9nZXRTaXplT2ZPYmplY3QgKHNlZW4sIG9iamVjdCkge1xuICBpZiAoXy5pc05pbChvYmplY3QpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBsZXQgYnl0ZXMgPSAwO1xuICBjb25zdCBwcm9wZXJ0aWVzID0gZXh0cmFjdEFsbFByb3BlcnRpZXMob2JqZWN0KTtcbiAgZm9yIChjb25zdCBrZXkgb2YgcHJvcGVydGllcykge1xuICAgIC8vIERvIG5vdCByZWNhbGN1bGF0ZSBjaXJjdWxhciByZWZlcmVuY2VzXG4gICAgaWYgKHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ29iamVjdCcgJiYgIV8uaXNOaWwob2JqZWN0W2tleV0pKSB7XG4gICAgICBpZiAoc2Vlbi5oYXMob2JqZWN0W2tleV0pKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgc2Vlbi5hZGQob2JqZWN0W2tleV0pO1xuICAgIH1cblxuICAgIGJ5dGVzICs9IGdldENhbGN1bGF0b3Ioc2Vlbikoa2V5KTtcbiAgICB0cnkge1xuICAgICAgYnl0ZXMgKz0gZ2V0Q2FsY3VsYXRvcihzZWVuKShvYmplY3Rba2V5XSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmIChleCBpbnN0YW5jZW9mIFJhbmdlRXJyb3IpIHtcbiAgICAgICAgLy8gY2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkLCBmaW5hbCByZXN1bHQgbWlnaHQgYmUgaW5jb3JyZWN0XG4gICAgICAgIC8vIGxldCdzIGJlIG5pY2UgYW5kIG5vdCB0aHJvdyBhbiBleGNlcHRpb25cbiAgICAgICAgYnl0ZXMgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBieXRlcztcbn1cblxuZnVuY3Rpb24gZ2V0Q2FsY3VsYXRvciAoc2Vlbikge1xuICByZXR1cm4gZnVuY3Rpb24gY2FsY3VsYXRvciAob2JqKSB7XG4gICAgaWYgKF8uaXNCdWZmZXIob2JqKSkge1xuICAgICAgcmV0dXJuIG9iai5sZW5ndGg7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0eXBlb2YgKG9iaikpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiBvYmoubGVuZ3RoICogRUNNQV9TSVpFUy5TVFJJTkc7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcmV0dXJuIEVDTUFfU0laRVMuQk9PTEVBTjtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHJldHVybiBFQ01BX1NJWkVTLk5VTUJFUjtcbiAgICAgIGNhc2UgJ3N5bWJvbCc6XG4gICAgICAgIHJldHVybiBfLmlzRnVuY3Rpb24oU3ltYm9sLmtleUZvcikgJiYgU3ltYm9sLmtleUZvcihvYmopXG4gICAgICAgICAgPyAvKiogQHR5cGUge3N0cmluZ30gKi8oU3ltYm9sLmtleUZvcihvYmopKS5sZW5ndGggKiBFQ01BX1NJWkVTLlNUUklOR1xuICAgICAgICAgIDogKG9iai50b1N0cmluZygpLmxlbmd0aCAtIDgpICogRUNNQV9TSVpFUy5TVFJJTkc7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICByZXR1cm4gXy5pc0FycmF5KG9iailcbiAgICAgICAgICA/IG9iai5tYXAoZ2V0Q2FsY3VsYXRvcihzZWVuKSkucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIsIDApXG4gICAgICAgICAgOiBfZ2V0U2l6ZU9mT2JqZWN0KHNlZW4sIG9iaik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBpbi1kZXB0aCBzaXplIGluIG1lbW9yeSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0LlxuICogVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIGlzIGJvcnJvd2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21pa3RhbS9zaXplb2YuXG4gKlxuICogQHBhcmFtIHsqfSBvYmogQW4gb2JqZWN0IHdob3NlIHNpemUgc2hvdWxkIGJlIGNhbGN1bGF0ZWRcbiAqIEByZXR1cm5zIHtudW1iZXJ9IE9iamVjdCBzaXplIGluIGJ5dGVzLlxuICovXG5mdW5jdGlvbiBnZXRPYmplY3RTaXplIChvYmopIHtcbiAgcmV0dXJuIGdldENhbGN1bGF0b3IobmV3IFdlYWtTZXQoKSkob2JqKTtcbn1cblxuY29uc3QgT0JKRUNUU19NQVBQSU5HID0gbmV3IFdlYWtNYXAoKTtcblxuLyoqXG4gKiBDYWxjdWxhdGVzIGEgdW5pcXVlIG9iamVjdCBpZGVudGlmaWVyXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9iamVjdCBBbnkgdmFsaWQgRUNNQSBvYmplY3RcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgdXVpZFY0IHN0cmluZyB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgZ2l2ZW4gb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGdldE9iamVjdElkIChvYmplY3QpIHtcbiAgaWYgKCFPQkpFQ1RTX01BUFBJTkcuaGFzKG9iamVjdCkpIHtcbiAgICBPQkpFQ1RTX01BUFBJTkcuc2V0KG9iamVjdCwgdXVpZFY0KCkpO1xuICB9XG4gIHJldHVybiBPQkpFQ1RTX01BUFBJTkcuZ2V0KG9iamVjdCk7XG59XG5cbmV4cG9ydCB7IHJlcXVpcmVQYWNrYWdlLCBnZXRPYmplY3RTaXplLCBnZXRPYmplY3RJZCB9O1xuIl19
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Relative path to directory containing any Appium internal files
|
|
3
|
+
* XXX: this is duplicated in `appium/lib/constants.js`.
|
|
4
|
+
*/
|
|
5
|
+
export const CACHE_DIR_RELATIVE_PATH: string;
|
|
6
|
+
/**
|
|
7
|
+
* Relative path to lockfile used when installing an extension via `appium`
|
|
8
|
+
*/
|
|
9
|
+
export const INSTALL_LOCKFILE_RELATIVE_PATH: string;
|
|
10
|
+
/**
|
|
11
|
+
* XXX: This should probably be a singleton, but it isn't. Maybe this module should just export functions?
|
|
12
|
+
*/
|
|
13
|
+
export class NPM {
|
|
14
|
+
/**
|
|
15
|
+
* Returns path to "install" lockfile
|
|
16
|
+
* @private
|
|
17
|
+
* @param {string} cwd
|
|
18
|
+
*/
|
|
19
|
+
private _getInstallLockfilePath;
|
|
20
|
+
/**
|
|
21
|
+
* Execute `npm` with given args.
|
|
22
|
+
*
|
|
23
|
+
* If the process exits with a nonzero code, the contents of `STDOUT` and `STDERR` will be in the
|
|
24
|
+
* `message` of the {@link TeenProcessExecError} rejected.
|
|
25
|
+
* @param {string} cmd
|
|
26
|
+
* @param {string[]} args
|
|
27
|
+
* @param {ExecOpts} opts
|
|
28
|
+
* @param {ExecOpts} [execOpts]
|
|
29
|
+
*/
|
|
30
|
+
exec(cmd: string, args: string[], opts: ExecOpts, execOpts?: ExecOpts | undefined): Promise<import("teen_process").ExecResult<string> & {
|
|
31
|
+
json?: any;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* @param {string} cwd
|
|
35
|
+
* @param {string} pkg
|
|
36
|
+
*/
|
|
37
|
+
getLatestVersion(cwd: string, pkg: string): Promise<any>;
|
|
38
|
+
/**
|
|
39
|
+
* @param {string} cwd
|
|
40
|
+
* @param {string} pkg
|
|
41
|
+
* @param {string} curVersion
|
|
42
|
+
*/
|
|
43
|
+
getLatestSafeUpgradeVersion(cwd: string, pkg: string, curVersion: string): Promise<string | null>;
|
|
44
|
+
/**
|
|
45
|
+
* Runs `npm ls`, optionally for a particular package.
|
|
46
|
+
* @param {string} cwd
|
|
47
|
+
* @param {string} [pkg]
|
|
48
|
+
*/
|
|
49
|
+
list(cwd: string, pkg?: string | undefined): Promise<any>;
|
|
50
|
+
/**
|
|
51
|
+
* Given a current version and a list of all versions for a package, return the version which is
|
|
52
|
+
* the highest safely-upgradable version (meaning not crossing any major revision boundaries, and
|
|
53
|
+
* not including any alpha/beta/rc versions)
|
|
54
|
+
*
|
|
55
|
+
* @param {string} curVersion - the current version of a package
|
|
56
|
+
* @param {Array<string>} allVersions - a list of version strings
|
|
57
|
+
*
|
|
58
|
+
* @return {string|null} - the highest safely-upgradable version, or null if there isn't one
|
|
59
|
+
*/
|
|
60
|
+
getLatestSafeUpgradeFromVersions(curVersion: string, allVersions: Array<string>): string | null;
|
|
61
|
+
/**
|
|
62
|
+
* Installs a package w/ `npm`
|
|
63
|
+
* @param {string} cwd
|
|
64
|
+
* @param {string} pkgName
|
|
65
|
+
* @param {InstallPackageOpts} [opts]
|
|
66
|
+
* @returns {Promise<import('type-fest').PackageJson>}
|
|
67
|
+
*/
|
|
68
|
+
installPackage(cwd: string, pkgName: string, { pkgVer }?: InstallPackageOpts | undefined): Promise<import('type-fest').PackageJson>;
|
|
69
|
+
/**
|
|
70
|
+
* @param {string} cwd
|
|
71
|
+
* @param {string} pkg
|
|
72
|
+
*/
|
|
73
|
+
uninstallPackage(cwd: string, pkg: string): Promise<void>;
|
|
74
|
+
}
|
|
75
|
+
export const npm: NPM;
|
|
76
|
+
/**
|
|
77
|
+
* Options for {@link NPM.installPackage }
|
|
78
|
+
*/
|
|
79
|
+
export type InstallPackageOpts = {
|
|
80
|
+
/**
|
|
81
|
+
* - the version of the package to install
|
|
82
|
+
*/
|
|
83
|
+
pkgVer?: string | undefined;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Options for {@link NPM.exec }
|
|
87
|
+
*/
|
|
88
|
+
export type ExecOpts = {
|
|
89
|
+
/**
|
|
90
|
+
* - Current working directory
|
|
91
|
+
*/
|
|
92
|
+
cwd: string;
|
|
93
|
+
/**
|
|
94
|
+
* - If `true`, supply `--json` flag to npm and resolve w/ parsed JSON
|
|
95
|
+
*/
|
|
96
|
+
json?: boolean | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* - Path to lockfile to use
|
|
99
|
+
*/
|
|
100
|
+
lockFile?: string | undefined;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Extra props `teen_process.exec` adds to its error objects
|
|
104
|
+
*/
|
|
105
|
+
export type TeenProcessExecErrorProps = {
|
|
106
|
+
/**
|
|
107
|
+
* - STDOUT
|
|
108
|
+
*/
|
|
109
|
+
stdout: string;
|
|
110
|
+
/**
|
|
111
|
+
* - STDERR
|
|
112
|
+
*/
|
|
113
|
+
stderr: string;
|
|
114
|
+
/**
|
|
115
|
+
* - Exit code
|
|
116
|
+
*/
|
|
117
|
+
code: number | null;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Error thrown by `teen_process.exec`
|
|
121
|
+
*/
|
|
122
|
+
export type TeenProcessExecError = Error & TeenProcessExecErrorProps;
|
|
123
|
+
//# sourceMappingURL=npm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../lib/npm.js"],"names":[],"mappings":"AAYA;;;GAGG;AACH,6CAIE;AAEF;;GAEG;AACH,oDAGE;AAEF;;GAEG;AACH;IACE;;;;OAIG;IACH,gCAEC;IAED;;;;;;;;;OASG;IACH,UALW,MAAM,QACN,MAAM,EAAE,QACR,QAAQ;eAqB8C,GAAG;OAiBnE;IAED;;;OAGG;IACH,sBAHW,MAAM,OACN,MAAM,gBAOhB;IAED;;;;OAIG;IACH,iCAJW,MAAM,OACN,MAAM,cACN,MAAM,0BAQhB;IAED;;;;OAIG;IACH,UAHW,MAAM,0CAKhB;IAED;;;;;;;;;OASG;IACH,6CALW,MAAM,eACN,MAAM,MAAM,CAAC,GAEZ,MAAM,GAAC,IAAI,CAmCtB;IAED;;;;;;OAMG;IACH,oBALW,MAAM,WACN,MAAM,gDAEJ,QAAQ,OAAO,WAAW,EAAE,WAAW,CAAC,CA6DpD;IAED;;;OAGG;IACH,sBAHW,MAAM,OACN,MAAM,iBAOhB;CACF;AAED,sBAA6B;;;;;;;;;;;;;;;;;SAWf,MAAM;;;;;;;;;;;;;;;;;YAUN,MAAM;;;;YACN,MAAM;;;;UACN,MAAM;;;;;mCAKP,KAAK,GAAG,yBAAyB"}
|