dcdx 1.3.0-next.55 → 1.3.0-next.57

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.
@@ -160,14 +160,16 @@ z.object({
160
160
  config: true,
161
161
  cwd: true
162
162
  });
163
- const ConfigureJira = z.object({
163
+ const ConfigureBase = z.object({
164
+ username: z.string(),
165
+ password: z.string()
166
+ });
167
+ const ConfigureJira = ConfigureBase.extend({
164
168
  title: z.string(),
165
169
  mode: z.enum(['private', 'public']),
166
170
  baseUrl: z.string(),
167
171
  fullname: z.string(),
168
172
  email: z.string(),
169
- username: z.string(),
170
- password: z.string(),
171
173
  configureEmail: z.enum(['later', 'now']),
172
174
  emailName: z.string(),
173
175
  emailFromAddress: z.string(),
@@ -224,14 +226,21 @@ const ConfigureJira = z.object({
224
226
  emailPassword: true,
225
227
  language: true,
226
228
  avatarPath: true
229
+ }).default({
230
+ title: 'Jira',
231
+ mode: 'private',
232
+ baseUrl: 'http://localhost',
233
+ fullname: 'Administrator',
234
+ email: 'admin@example.org',
235
+ configureEmail: 'later',
236
+ username: 'admin',
237
+ password: 'admin'
227
238
  });
228
- const ConfigureConfluence = z.object({
239
+ const ConfigureConfluence = ConfigureBase.extend({
229
240
  baseUrl: z.string(),
230
241
  deploymentType: z.enum(['non-clustered', 'clustered']),
231
- username: z.string(),
232
242
  fullName: z.string(),
233
243
  email: z.string(),
234
- password: z.string(),
235
244
  clusterName: z.string(),
236
245
  clusterHome: z.string(),
237
246
  clusterJoinMode: z.enum(['useMulticast', 'useTcpIp', 'useAws']),
@@ -253,15 +262,39 @@ const ConfigureConfluence = z.object({
253
262
  jiraPassword: true,
254
263
  jiraUserGroups: true,
255
264
  jiraAdminGroups: true
265
+ }).default({
266
+ baseUrl: 'http://localhost',
267
+ deploymentType: 'non-clustered',
268
+ fullName: 'Administrator',
269
+ email: 'admin@example.org',
270
+ loadContent: 'empty',
271
+ userManagement: 'confluence',
272
+ username: 'admin',
273
+ password: 'admin'
274
+ });
275
+ const ConfigureBitbucket = ConfigureBase.extend({}).default({
276
+ username: 'admin',
277
+ password: 'admin'
278
+ });
279
+ const ConfigureBamboo = ConfigureBase.extend({}).default({
280
+ username: 'admin',
281
+ password: 'admin'
256
282
  });
257
283
 
258
284
  const Config = z.object({
259
285
  setup: z.object({
260
286
  [SupportedApplications.Values.jira]: ConfigureJira,
261
287
  [SupportedApplications.Values.confluence]: ConfigureConfluence,
262
- [SupportedApplications.Values.bamboo]: z.object({}),
263
- [SupportedApplications.Values.bitbucket]: z.object({})
288
+ [SupportedApplications.Values.bamboo]: ConfigureBamboo,
289
+ [SupportedApplications.Values.bitbucket]: ConfigureBitbucket
264
290
  }).partial()
291
+ }).default({
292
+ setup: {
293
+ [SupportedApplications.Values.jira]: ConfigureJira.parse(undefined),
294
+ [SupportedApplications.Values.confluence]: ConfigureConfluence.parse(undefined),
295
+ [SupportedApplications.Values.bamboo]: ConfigureBamboo.parse(undefined),
296
+ [SupportedApplications.Values.bitbucket]: ConfigureBitbucket.parse(undefined)
297
+ }
265
298
  });
266
299
 
267
300
  /*
@@ -270,34 +303,34 @@ const Config = z.object({
270
303
  https://github.com/eslint/eslint/blob/main/lib/config/config-loader.js
271
304
  */
272
305
  const getConfig = async (path, cwd) => {
306
+ let config;
273
307
  const directory = cwd || process.cwd();
274
308
  const configFile = path || 'dcdx.config.mjs';
275
309
  const configPath = isAbsolute(configFile) && existsSync(configFile) ? configFile : join(directory, configFile);
276
- if (!existsSync(configPath)) {
277
- throw new Error('Unable to find dcdx configuration file. Please make sure to specify the correct working directory (--cwd) or path to the file (-c, --config)');
310
+ if (existsSync(configPath)) {
311
+ /*
312
+ * Explanation copied from ESLint
313
+ *
314
+ * Append a query with the config file's modification time (`mtime`) in order
315
+ * to import the current version of the config file. Without the query, `import()` would
316
+ * cache the config file module by the pathname only, and then always return
317
+ * the same version (the one that was actual when the module was imported for the first time).
318
+ *
319
+ * This ensures that the config file module is loaded and executed again
320
+ * if it has been changed since the last time it was imported.
321
+ * If it hasn't been changed, `import()` will just return the cached version.
322
+ *
323
+ * Note that we should not overuse queries (e.g., by appending the current time
324
+ * to always reload the config file module) as that could cause memory leaks
325
+ * because entries are never removed from the import cache.
326
+ */
327
+ const mtime = statSync(configPath).mtime.getTime();
328
+ const fileURL = pathToFileURL(configPath);
329
+ fileURL.searchParams.append('mtime', mtime.toFixed());
330
+ const filePath = fileURL.toString();
331
+ config = (await import(filePath)).default;
278
332
  }
279
- /*
280
- * Explanation copied from ESLint
281
- *
282
- * Append a query with the config file's modification time (`mtime`) in order
283
- * to import the current version of the config file. Without the query, `import()` would
284
- * cache the config file module by the pathname only, and then always return
285
- * the same version (the one that was actual when the module was imported for the first time).
286
- *
287
- * This ensures that the config file module is loaded and executed again
288
- * if it has been changed since the last time it was imported.
289
- * If it hasn't been changed, `import()` will just return the cached version.
290
- *
291
- * Note that we should not overuse queries (e.g., by appending the current time
292
- * to always reload the config file module) as that could cause memory leaks
293
- * because entries are never removed from the import cache.
294
- */
295
- const mtime = statSync(configPath).mtime.getTime();
296
- const fileURL = pathToFileURL(configPath);
297
- fileURL.searchParams.append('mtime', mtime.toFixed());
298
- const filePath = fileURL.toString();
299
- const result = (await import(filePath)).default;
300
- return Config.parse(result);
333
+ return Config.parse(config);
301
334
  };
302
335
 
303
336
  const capitalize = (value) => value.charAt(0).toUpperCase() + value.slice(1);
@@ -557,4 +590,4 @@ process.on('SIGINT', () => {
557
590
  console.log(`Received term signal, trying to stop gracefully 💪`);
558
591
  gracefulExit();
559
592
  });
560
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLmpzIiwic291cmNlcyI6WyIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0FjdGlvbkhhbmRsZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXRWZXJzaW9ucy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy90eXBlcy9Db25maWd1cmUuanMiLCIuLi8uLi9kaXN0L3NyYy90eXBlcy9Db25maWcuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldENvbmZpZy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvY2FwaXRhbGl6ZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvc2V0dXBIb3N0LmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9zaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9jb25maWd1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXN5bmNFeGl0SG9vaywgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuZXhwb3J0IGNvbnN0IEFjdGlvbkhhbmRsZXIgPSBhc3luYyAocHJvZ3JhbSwgeyBhY3Rpb24sIGVycm9ySGFuZGxlciB9LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgb3BzID0gb3B0aW9ucyB8fCBwcm9ncmFtLm9wdHMoKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgYXN5bmNFeGl0SG9vayhhc3luYyAoY29kZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBlcnJvckhhbmRsZXIob3BzKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcmVqZWN0aW5nIHRoZSBwcm9taXNlIHRvIGF2b2lkIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBcIkNhbGxpbmcgcHJvY2Vzcy5leGl0XCIgbG9nIG1lc3NhZ2UgZnJvbSBleGl0LWhvb2tcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHdhaXQ6IDYwICogMSAqIDEwMDBcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvbihvcHMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDApO1xuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBlcnIuaXNzdWVzLmZvckVhY2goaXNzdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgKz0gYFVuYWJsZSB0byBwYXJzZSBvcHRpb24gJHtpc3N1ZS5wYXRoLmpvaW4oJywnKX06ICR7aXNzdWUubWVzc2FnZX1cXG5gO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgfHwgdHlwZW9mIGVyciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnIudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyYWNlZnVsRXhpdCgxKTtcbiAgICAgICAgfSk7XG4gICAgfSkuY2F0Y2gobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBwcm9ncmFtLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZSxcbiAgICAgICAgICAgIC8vIHdlIGNhbiBhc3N1bWUgYSBjbGVhbiBleGl0XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5leHBvcnQgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSAocmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgY29uc3QgWywgZmlsZVBhdGhdID0gcHJvY2Vzcy5hcmd2O1xuICAgIGNvbnN0IGV4ZWN1dGFibGVGaWxlRGlyID0gZGlybmFtZShyZWFscGF0aFN5bmMoZmlsZVBhdGgpKTtcbiAgICBjb25zdCBiYXNlZGlyID0gZXhlY3V0YWJsZUZpbGVEaXIuc3Vic3RyaW5nKDAsIGV4ZWN1dGFibGVGaWxlRGlyLmluZGV4T2YoJ2RjZHgnKSArIDQpO1xuICAgIHJldHVybiBqb2luKGJhc2VkaXIsIHJlbGF0aXZlUGF0aC5yZXBsYWNlQWxsKCcuLi8nLCAnJykpO1xufTtcbiIsImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi90b0Fic29sdXRlUGF0aCc7XG5leHBvcnQgY29uc3QgZ2V0VmVyc2lvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyh0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nKSwgJ3V0Zi04Jyk7XG4gICAgY29uc3QgdmVyc2lvbnMgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICAgIHJldHVybiB2ZXJzaW9ucztcbn07XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IGdldFZlcnNpb25zIH0gZnJvbSAnLi4vaGVscGVycy9nZXRWZXJzaW9ucyc7XG5jb25zdCB2ZXJzaW9ucyA9IGdldFZlcnNpb25zKCk7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzID0gei5lbnVtKFtcbiAgICAncG9zdGdyZXNxbCcsXG4gICAgJ215c3FsJyxcbiAgICAnbXNzcWwnXG5dKTtcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zID0gei5lbnVtKFtcbiAgICAnRGV2ZWxvcGVyJyxcbiAgICAnRXhwcmVzcycsXG4gICAgJ1N0YW5kYXJkJyxcbiAgICAnRW50ZXJwcmlzZScsXG4gICAgJ0VudGVycHJpc2VDb3JlJ1xuXSk7XG5leHBvcnQgY29uc3QgRGF0YWJhc2VPcHRpb25zID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSksXG4gICAgZGF0YWJhc2U6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgY2xlYW46IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHBydW5lOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICB2ZXJib3NlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKClcbn0pO1xuZXhwb3J0IGNvbnN0IFBvc3RncmVTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCg1NDMyKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ29yZy5wb3N0Z3Jlc3FsLkRyaXZlcicpLmRlZmF1bHQoJ29yZy5wb3N0Z3Jlc3FsLkRyaXZlcicpXG59KTtcbmV4cG9ydCBjb25zdCBNeVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDMzMDYpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm15c3FsLmpkYmMuRHJpdmVyJykuZGVmYXVsdCgnY29tLm15c3FsLmpkYmMuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE1TU1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgZWRpdGlvbjogU3VwcG9ydGVkTVNTUUxFZGl0aW9ucy5kZWZhdWx0KCdEZXZlbG9wZXInKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCgxNDMzKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnc2EnKS5kZWZhdWx0KCdzYScpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ0RhdGFDZW50ZXJEWCEnKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ2NvbS5taWNyb3NvZnQuc3Fsc2VydmVyLmpkYmMuU1FMU2VydmVyRHJpdmVyJykuZGVmYXVsdCgnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKVxufSk7XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4vRGF0YWJhc2UnO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyA9IHouZW51bShbXG4gICAgJ2ppcmEnLFxuICAgICdjb25mbHVlbmNlJyxcbiAgICAnYml0YnVja2V0JyxcbiAgICAnYmFtYm9vJ1xuXSk7XG5leHBvcnQgY29uc3QgQXBwbGljYXRpb25PcHRpb25zID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyxcbiAgICB0YWc6IHouc3RyaW5nKCkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgZGF0YWJhc2U6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5kZWZhdWx0KCdwb3N0Z3Jlc3FsJyksXG4gICAgZGF0YWJhc2VUYWc6IHouc3RyaW5nKCkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpLmRlZmF1bHQoJzgwJyksXG4gICAgY29udGV4dFBhdGg6IHouc3RyaW5nKCksXG4gICAgeG1zOiB6LnN0cmluZygpLmRlZmF1bHQoJzEwMjRtJyksXG4gICAgeG14OiB6LnN0cmluZygpLmRlZmF1bHQoJzEwMjRtJyksXG4gICAgd2F0Y2g6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGV4dDogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICBpbnN0YWxsOiB6LmJvb2xlYW4oKSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHouc3RyaW5nKCksXG4gICAgYWN0aXZhdGVQcm9maWxlczogei5zdHJpbmcoKSxcbiAgICBjb25maWd1cmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZGVidWc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAganZtOiB6LnN0cmluZygpLFxuICAgIGN3ZDogei5zdHJpbmcoKVxufSkucGFydGlhbCh7XG4gICAgY29udGV4dFBhdGg6IHRydWUsXG4gICAgZXh0OiB0cnVlLFxuICAgIGluc3RhbGw6IHRydWUsXG4gICAgb3V0cHV0RGlyZWN0b3J5OiB0cnVlLFxuICAgIGFjdGl2YXRlUHJvZmlsZXM6IHRydWUsXG4gICAganZtOiB0cnVlLFxuICAgIGN3ZDogdHJ1ZVxufSk7XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4vQXBwbGljYXRpb24nO1xuZXhwb3J0IGNvbnN0IENvbmZpZ3VyZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgcHJvZHVjdDogU3VwcG9ydGVkQXBwbGljYXRpb25zLFxuICAgIGNvbmZpZzogei5zdHJpbmcoKSxcbiAgICBjd2Q6IHouc3RyaW5nKClcbn0pLnBhcnRpYWwoe1xuICAgIGNvbmZpZzogdHJ1ZSxcbiAgICBjd2Q6IHRydWVcbn0pO1xuZXhwb3J0IGNvbnN0IENvbmZpZ3VyZUppcmEgPSB6Lm9iamVjdCh7XG4gICAgdGl0bGU6IHouc3RyaW5nKCksXG4gICAgbW9kZTogei5lbnVtKFsncHJpdmF0ZScsICdwdWJsaWMnXSksXG4gICAgYmFzZVVybDogei5zdHJpbmcoKSxcbiAgICBmdWxsbmFtZTogei5zdHJpbmcoKSxcbiAgICBlbWFpbDogei5zdHJpbmcoKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKSxcbiAgICBjb25maWd1cmVFbWFpbDogei5lbnVtKFsnbGF0ZXInLCAnbm93J10pLFxuICAgIGVtYWlsTmFtZTogei5zdHJpbmcoKSxcbiAgICBlbWFpbEZyb21BZGRyZXNzOiB6LnN0cmluZygpLFxuICAgIGVtYWlsUHJlZml4OiB6LnN0cmluZygpLFxuICAgIGVtYWlsU2VydmVyVHlwZTogei5lbnVtKFsnc210cCcsICdqbmRpJ10pLFxuICAgIGVtYWlsSm5kaUxvY2F0aW9uOiB6LnN0cmluZygpLFxuICAgIGVtYWlsU2VydmljZVByb3ZpZGVyOiB6LmVudW0oWydjdXN0b20nLCAnZ29vZ2xlLWFwcHMtbWFpbC0vLWdtYWlsLTgnLCAneWFob28hLW1haWwtcGx1cy05J10pLFxuICAgIGVtYWlsSG9zdE5hbWU6IHouc3RyaW5nKCksXG4gICAgZW1haWxQcm90b2NvbDogei5lbnVtKFsnU01UUCcsICdTRUNVUkVfU01UUCddKSxcbiAgICBlbWFpbFBvcnQ6IHoubnVtYmVyKCksXG4gICAgZW1haWxUaW1lb3V0OiB6Lm51bWJlcigpLFxuICAgIGVtYWlsVExTOiB6LmJvb2xlYW4oKSxcbiAgICBlbWFpbFVzZXJuYW1lOiB6LnN0cmluZygpLFxuICAgIGVtYWlsUGFzc3dvcmQ6IHouc3RyaW5nKCksXG4gICAgbGFuZ3VhZ2U6IHouZW51bShbXG4gICAgICAgICdlbi1VUycsXG4gICAgICAgICd6aF9DTicsXG4gICAgICAgICdjc19DWicsXG4gICAgICAgICdkYV9ESycsXG4gICAgICAgICdubF9OTCcsXG4gICAgICAgICdlbl9VSycsXG4gICAgICAgICdldF9FRScsXG4gICAgICAgICdmaV9GSScsXG4gICAgICAgICdmcl9GUicsXG4gICAgICAgICdkZV9ERScsXG4gICAgICAgICdodV9IVScsXG4gICAgICAgICdpc19JUycsXG4gICAgICAgICdpdF9JVCcsXG4gICAgICAgICdqYV9KUCcsXG4gICAgICAgICdrb19LUicsXG4gICAgICAgICdub19OTycsXG4gICAgICAgICdwbF9QTCcsXG4gICAgICAgICdwdF9CUicsXG4gICAgICAgICdyb19STycsXG4gICAgICAgICdydV9SVScsXG4gICAgICAgICdza19TSycsXG4gICAgICAgICdlc19FUycsXG4gICAgICAgICdzdl9TRSdcbiAgICBdKSxcbiAgICBhdmF0YXJQYXRoOiB6LnN0cmluZygpXG59KS5wYXJ0aWFsKHtcbiAgICBlbWFpbE5hbWU6IHRydWUsXG4gICAgZW1haWxGcm9tQWRkcmVzczogdHJ1ZSxcbiAgICBlbWFpbFByZWZpeDogdHJ1ZSxcbiAgICBlbWFpbFNlcnZlclR5cGU6IHRydWUsXG4gICAgZW1haWxKbmRpTG9jYXRpb246IHRydWUsXG4gICAgZW1haWxTZXJ2aWNlUHJvdmlkZXI6IHRydWUsXG4gICAgZW1haWxIb3N0TmFtZTogdHJ1ZSxcbiAgICBlbWFpbFByb3RvY29sOiB0cnVlLFxuICAgIGVtYWlsUG9ydDogdHJ1ZSxcbiAgICBlbWFpbFRpbWVvdXQ6IHRydWUsXG4gICAgZW1haWxUTFM6IHRydWUsXG4gICAgZW1haWxVc2VybmFtZTogdHJ1ZSxcbiAgICBlbWFpbFBhc3N3b3JkOiB0cnVlLFxuICAgIGxhbmd1YWdlOiB0cnVlLFxuICAgIGF2YXRhclBhdGg6IHRydWVcbn0pO1xuZXhwb3J0IGNvbnN0IENvbmZpZ3VyZUNvbmZsdWVuY2UgPSB6Lm9iamVjdCh7XG4gICAgYmFzZVVybDogei5zdHJpbmcoKSxcbiAgICBkZXBsb3ltZW50VHlwZTogei5lbnVtKFsnbm9uLWNsdXN0ZXJlZCcsICdjbHVzdGVyZWQnXSksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gICAgZnVsbE5hbWU6IHouc3RyaW5nKCksXG4gICAgZW1haWw6IHouc3RyaW5nKCksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCksXG4gICAgY2x1c3Rlck5hbWU6IHouc3RyaW5nKCksXG4gICAgY2x1c3RlckhvbWU6IHouc3RyaW5nKCksXG4gICAgY2x1c3RlckpvaW5Nb2RlOiB6LmVudW0oWyd1c2VNdWx0aWNhc3QnLCAndXNlVGNwSXAnLCAndXNlQXdzJ10pLFxuICAgIGNsdXN0ZXJBdXRvQWRkcmVzczogei5ib29sZWFuKCksXG4gICAgbG9hZENvbnRlbnQ6IHouZW51bShbJ2V4YW1wbGUnLCAnZW1wdHknXSksXG4gICAgdXNlck1hbmFnZW1lbnQ6IHouZW51bShbJ2NvbmZsdWVuY2UnLCAnamlyYSddKSxcbiAgICBqaXJhQmFzZVVybDogei5zdHJpbmcoKSxcbiAgICBqaXJhVXNlcm5hbWU6IHouc3RyaW5nKCksXG4gICAgamlyYVBhc3N3b3JkOiB6LnN0cmluZygpLFxuICAgIGppcmFVc2VyR3JvdXBzOiB6LnN0cmluZygpLFxuICAgIGppcmFBZG1pbkdyb3Vwczogei5zdHJpbmcoKSxcbn0pLnBhcnRpYWwoe1xuICAgIGNsdXN0ZXJOYW1lOiB0cnVlLFxuICAgIGNsdXN0ZXJIb21lOiB0cnVlLFxuICAgIGNsdXN0ZXJKb2luTW9kZTogdHJ1ZSxcbiAgICBjbHVzdGVyQXV0b0FkZHJlc3M6IHRydWUsXG4gICAgamlyYUJhc2VVcmw6IHRydWUsXG4gICAgamlyYVVzZXJuYW1lOiB0cnVlLFxuICAgIGppcmFQYXNzd29yZDogdHJ1ZSxcbiAgICBqaXJhVXNlckdyb3VwczogdHJ1ZSxcbiAgICBqaXJhQWRtaW5Hcm91cHM6IHRydWVcbn0pO1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IENvbmZpZ3VyZUNvbmZsdWVuY2UsIENvbmZpZ3VyZUppcmEgfSBmcm9tICcuL0NvbmZpZ3VyZSc7XG5leHBvcnQgY29uc3QgQ29uZmlnID0gei5vYmplY3Qoe1xuICAgIHNldHVwOiB6Lm9iamVjdCh7XG4gICAgICAgIFtTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmFdOiBDb25maWd1cmVKaXJhLFxuICAgICAgICBbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlXTogQ29uZmlndXJlQ29uZmx1ZW5jZSxcbiAgICAgICAgW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vXTogei5vYmplY3Qoe30pLFxuICAgICAgICBbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXRdOiB6Lm9iamVjdCh7fSlcbiAgICB9KS5wYXJ0aWFsKClcbn0pO1xuIiwiLypcbiAgQ29kZSBhdHJyaWJ1dGlvblxuICBib3Jyb3dlZCBzb21lIGxvZ2ljIGZvciBsb2FkaW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMgZnJvbSBFU0xpbnRcbiAgaHR0cHM6Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvYmxvYi9tYWluL2xpYi9jb25maWcvY29uZmlnLWxvYWRlci5qc1xuKi9cbmltcG9ydCB7IGV4aXN0c1N5bmMsIHN0YXRTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZSwgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi90eXBlcy9Db25maWcnO1xuZXhwb3J0IGNvbnN0IGdldENvbmZpZyA9IGFzeW5jIChwYXRoLCBjd2QpID0+IHtcbiAgICBjb25zdCBkaXJlY3RvcnkgPSBjd2QgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBjb25maWdGaWxlID0gcGF0aCB8fCAnZGNkeC5jb25maWcubWpzJztcbiAgICBjb25zdCBjb25maWdQYXRoID0gaXNBYnNvbHV0ZShjb25maWdGaWxlKSAmJiBleGlzdHNTeW5jKGNvbmZpZ0ZpbGUpID8gY29uZmlnRmlsZSA6IGpvaW4oZGlyZWN0b3J5LCBjb25maWdGaWxlKTtcbiAgICBpZiAoIWV4aXN0c1N5bmMoY29uZmlnUGF0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBkY2R4IGNvbmZpZ3VyYXRpb24gZmlsZS4gUGxlYXNlIG1ha2Ugc3VyZSB0byBzcGVjaWZ5IHRoZSBjb3JyZWN0IHdvcmtpbmcgZGlyZWN0b3J5ICgtLWN3ZCkgb3IgcGF0aCB0byB0aGUgZmlsZSAoLWMsIC0tY29uZmlnKScpO1xuICAgIH1cbiAgICAvKlxuICAgICAqIEV4cGxhbmF0aW9uIGNvcGllZCBmcm9tIEVTTGludFxuICAgICAqXG4gICAgICogQXBwZW5kIGEgcXVlcnkgd2l0aCB0aGUgY29uZmlnIGZpbGUncyBtb2RpZmljYXRpb24gdGltZSAoYG10aW1lYCkgaW4gb3JkZXJcbiAgICAgKiB0byBpbXBvcnQgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgY29uZmlnIGZpbGUuIFdpdGhvdXQgdGhlIHF1ZXJ5LCBgaW1wb3J0KClgIHdvdWxkXG4gICAgICogY2FjaGUgdGhlIGNvbmZpZyBmaWxlIG1vZHVsZSBieSB0aGUgcGF0aG5hbWUgb25seSwgYW5kIHRoZW4gYWx3YXlzIHJldHVyblxuICAgICAqIHRoZSBzYW1lIHZlcnNpb24gKHRoZSBvbmUgdGhhdCB3YXMgYWN0dWFsIHdoZW4gdGhlIG1vZHVsZSB3YXMgaW1wb3J0ZWQgZm9yIHRoZSBmaXJzdCB0aW1lKS5cbiAgICAgKlxuICAgICAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBjb25maWcgZmlsZSBtb2R1bGUgaXMgbG9hZGVkIGFuZCBleGVjdXRlZCBhZ2FpblxuICAgICAqIGlmIGl0IGhhcyBiZWVuIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdGltZSBpdCB3YXMgaW1wb3J0ZWQuXG4gICAgICogSWYgaXQgaGFzbid0IGJlZW4gY2hhbmdlZCwgYGltcG9ydCgpYCB3aWxsIGp1c3QgcmV0dXJuIHRoZSBjYWNoZWQgdmVyc2lvbi5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCB3ZSBzaG91bGQgbm90IG92ZXJ1c2UgcXVlcmllcyAoZS5nLiwgYnkgYXBwZW5kaW5nIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgKiB0byBhbHdheXMgcmVsb2FkIHRoZSBjb25maWcgZmlsZSBtb2R1bGUpIGFzIHRoYXQgY291bGQgY2F1c2UgbWVtb3J5IGxlYWtzXG4gICAgICogYmVjYXVzZSBlbnRyaWVzIGFyZSBuZXZlciByZW1vdmVkIGZyb20gdGhlIGltcG9ydCBjYWNoZS5cbiAgICAgKi9cbiAgICBjb25zdCBtdGltZSA9IHN0YXRTeW5jKGNvbmZpZ1BhdGgpLm10aW1lLmdldFRpbWUoKTtcbiAgICBjb25zdCBmaWxlVVJMID0gcGF0aFRvRmlsZVVSTChjb25maWdQYXRoKTtcbiAgICBmaWxlVVJMLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ210aW1lJywgbXRpbWUudG9GaXhlZCgpKTtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGZpbGVVUkwudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZXN1bHQgPSAoYXdhaXQgaW1wb3J0KGZpbGVQYXRoKSkuZGVmYXVsdDtcbiAgICByZXR1cm4gQ29uZmlnLnBhcnNlKHJlc3VsdCk7XG59O1xuIiwiZXhwb3J0IGNvbnN0IGNhcGl0YWxpemUgPSAodmFsdWUpID0+IHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG4iLCJpbXBvcnQgcHVwcGV0ZWVyIGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb25maWd1cmVDb25mbHVlbmNlLCBDb25maWd1cmVKaXJhIH0gZnJvbSAnLi4vdHlwZXMvQ29uZmlndXJlJztcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tICcuL2NhcGl0YWxpemUnO1xuZXhwb3J0IGNvbnN0IHNldHVwSG9zdCA9IGFzeW5jIChuYW1lLCBjb25maWcpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gY29uZmlnLnNldHVwW25hbWVdO1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGluaXRpYWwgc2V0dXAgY29uZmlndXJhdGlvbiBmb3IgJHtjYXBpdGFsaXplKG5hbWUpfWApO1xuICAgIH1cbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE6XG4gICAgICAgICAgICByZXR1cm4gc2V0dXBKaXJhKENvbmZpZ3VyZUppcmEucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTpcbiAgICAgICAgICAgIHJldHVybiBzZXR1cENvbmZsdWVuY2UoQ29uZmlndXJlQ29uZmx1ZW5jZS5wYXJzZShvcHRpb25zKSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXQ6XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnT29wc2llIGRhaXN5IPCfjLwgQXRsYXNzaWFuIEJpdGJ1Y2tldCBkb2VzIG5vdCByZXF1aXJlIGFkZGl0aW9uYWwgc2V0dXAg8J+klicpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufTtcbmNvbnN0IHNldHVwSmlyYSA9IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gTGF1bmNoIEdvb2dsZSBDaHJvbWVcbiAgICAgICAgY29uc3QgYnJvd3NlciA9IGF3YWl0IHB1cHBldGVlci5sYXVuY2goKTtcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBwYWdlIHZpZXdcbiAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IGJyb3dzZXIubmV3UGFnZSgpO1xuICAgICAgICBhd2FpdCBwYWdlLnNldFZpZXdwb3J0KHsgd2lkdGg6IDEwODAsIGhlaWdodDogMTAyNCB9KTtcbiAgICAgICAgLy8gT3BlbiB0aGUgU2V0dXAgcGFnZVxuICAgICAgICBjb25zb2xlLmxvZyhgU3RhcnRpbmcgYXV0b21hdGVkIGluaXRpYWwgc2V0dXAgb2YgQXRsYXNzaWFuIEppcmEg8J+klmApO1xuICAgICAgICBhd2FpdCBwYWdlLmdvdG8ob3B0aW9ucy5iYXNlVXJsLCB7IHdhaXRVbnRpbDogWydkb21jb250ZW50bG9hZGVkJywgJ2xvYWQnLCAnbmV0d29ya2lkbGUwJ10sIHRpbWVvdXQ6IDUgKiA2MCAqIDEwMDAgfSk7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgcHJvZ3Jlc3MgaGFzIGVuZGVkXG4gICAgICAgIGNvbnN0IGlzU3RpbGxMb2FkaW5nID0gISFhd2FpdCBwYWdlLiQoJyNwcm9ncmVzcycpO1xuICAgICAgICBpZiAoaXNTdGlsbExvYWRpbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciBBdGxhc3NpYW4gSmlyYSB0byBiZSByZWFkeS4uLiDij7MnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvck5hdmlnYXRpb24oeyB3YWl0VW50aWw6IFsnZG9tY29udGVudGxvYWRlZCcsICdsb2FkJywgJ25ldHdvcmtpZGxlMCddLCB0aW1lb3V0OiA1ICogNjAgKiAxMDAwIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNldCB1cCBhcHBsaWNhdGlvbiBwcm9wZXJ0aWVzXG4gICAgICAgIGNvbnN0IG11c3RTZXR1cEFwcGxpY2F0aW9uUHJvcGVydGllcyA9ICEhYXdhaXQgcGFnZS4kKCdmb3JtW2FjdGlvbj1cIlNldHVwQXBwbGljYXRpb25Qcm9wZXJ0aWVzLmpzcGFcIl0nKTtcbiAgICAgICAgaWYgKG11c3RTZXR1cEFwcGxpY2F0aW9uUHJvcGVydGllcykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1NldHRpbmcgdXAgYXBwbGljYXRpb24gcHJvcGVydGllcycpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCdpbnB1dFtuYW1lPXRpdGxlXScpLmZpbGwob3B0aW9ucy50aXRsZSk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoYGxhYmVsW2Zvcj1qaXJhLXNldHVwd2l6YXJkLW1vZGUtJHtvcHRpb25zLm1vZGV9XWApLmNsaWNrKCk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJ2lucHV0W25hbWU9YmFzZVVSTF0nKS5maWxsKG9wdGlvbnMuYmFzZVVybCk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJyNqaXJhLXNldHVwd2l6YXJkLXN1Ym1pdCcpLmNsaWNrKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnV2FpdGluZyBmb3IgdGhlIGFkbWluaXN0cmF0b3IgYWNjb3VudCBzZXR1cCB3aXphcmQgdG8gbG9hZC4uLiDij7MnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCdmb3JtW2FjdGlvbj1cIlNldHVwQWRtaW5BY2NvdW50LmpzcGFcIl0nLCB7IHRpbWVvdXQ6IDUgKiA2MCAqIDEwMDAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2V0IHVwIGFkbWluaXN0cmF0b3IgYWNjb3VudFxuICAgICAgICBjb25zdCBtdXN0U2V0dXBBZG1pbkFjY291bnQgPSAhIWF3YWl0IHBhZ2UuJCgnZm9ybVthY3Rpb249XCJTZXR1cEFkbWluQWNjb3VudC5qc3BhXCJdJyk7XG4gICAgICAgIGlmIChtdXN0U2V0dXBBZG1pbkFjY291bnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZXR0aW5nIHVwIHRoZSBhZG1pbmlzdHJhdG9yIGFjY291bnQnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignaW5wdXRbbmFtZT1mdWxsbmFtZV0nKS5maWxsKG9wdGlvbnMuZnVsbG5hbWUpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCdpbnB1dFtuYW1lPWVtYWlsXScpLmZpbGwob3B0aW9ucy5lbWFpbCk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJ2lucHV0W25hbWU9dXNlcm5hbWVdJykuZmlsbChvcHRpb25zLnVzZXJuYW1lKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignaW5wdXRbbmFtZT1wYXNzd29yZF0nKS5maWxsKG9wdGlvbnMucGFzc3dvcmQpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCdpbnB1dFtuYW1lPWNvbmZpcm1dJykuZmlsbChvcHRpb25zLnBhc3N3b3JkKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignI2ppcmEtc2V0dXB3aXphcmQtc3VibWl0JykuY2xpY2soKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciB0aGUgZW1haWwgbm90aWZpY2F0aW9uIHNldHVwIHdpemFyZCB0byBsb2FkLi4uIOKPsycpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS53YWl0Rm9yU2VsZWN0b3IoJ2Zvcm1bYWN0aW9uPVwiU2V0dXBNYWlsTm90aWZpY2F0aW9ucy5qc3BhXCJdJywgeyB0aW1lb3V0OiA1ICogNjAgKiAxMDAwIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNldCB1cCBlbWFpbCBub3RpZmljYXRpb25zXG4gICAgICAgIGNvbnN0IG11c3RTZXR1cEVtYWlsTm90aWZpY2F0aW9uID0gISFhd2FpdCBwYWdlLiQoJ2Zvcm1bYWN0aW9uPVwiU2V0dXBNYWlsTm90aWZpY2F0aW9ucy5qc3BhXCJdJyk7XG4gICAgICAgIGlmIChtdXN0U2V0dXBFbWFpbE5vdGlmaWNhdGlvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1NldHRpbmcgdXAgdGhlIGVtYWlsIG5vdGlmaWNhdGlvbiBzZXR0aW5ncycpO1xuICAgICAgICAgICAgY29uc3QgY29uZmlndXJlRW1haWxOb3RpZmljYXRpb25zID0gb3B0aW9ucy5jb25maWd1cmVFbWFpbCA9PT0gJ2xhdGVyJyA/ICdkaXNhYmxlZCcgOiAnZW5hYmxlZCc7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoYGxhYmVsW2Zvcj1qaXJhLXNldHVwd2l6YXJkLWVtYWlsLW5vdGlmaWNhdGlvbnMtJHtjb25maWd1cmVFbWFpbE5vdGlmaWNhdGlvbnN9XWApLmNsaWNrKCk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJyNqaXJhLXNldHVwd2l6YXJkLXN1Ym1pdCcpLmNsaWNrKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnV2FpdGluZyBmb3IgdGhlIGxhbmd1YWdlIGNob29zZXIgdG8gbG9hZC4uLiDij7MnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCcjY2hvb3NlLWxhbmd1YWdlLWZvcm0nLCB7IHRpbWVvdXQ6IDUgKiA2MCAqIDEwMDAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2VsY29tZSB0byBKaXJhLCBBZG1pbmlzdHJhdG9yIVxuICAgICAgICBjb25zdCBtdXN0U2V0dXBMYW5ndWFnZSA9ICEhYXdhaXQgcGFnZS4kKCcjY2hvb3NlLWxhbmd1YWdlLWZvcm0nKTtcbiAgICAgICAgaWYgKG11c3RTZXR1cExhbmd1YWdlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnU2V0dGluZyB1cCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBhZG1pbmlzdHJhdG9yIGFjY291bnQnKTtcbiAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlU2VsZWN0b3IgPSAhb3B0aW9ucy5sYW5ndWFnZSB8fCBvcHRpb25zLmxhbmd1YWdlID09PSAnZW4tVVMnID8gJ2xvY2FsZV8tMScgOiBgbG9jYWxlXyR7b3B0aW9ucy5sYW5ndWFnZX1gO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKGBsYWJlbFtmb3I9JHtsYW5ndWFnZVNlbGVjdG9yfV1gKS5jbGljaygpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCcjbmV4dCcpLmNsaWNrKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnV2FpdGluZyBmb3IgdGhlIGF2YXRhciBzZXR1cCB3aXphcmQgdG8gbG9hZC4uLiDij7MnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCcub25ib2FyZGluZy1zZXF1ZW5jZS1hdmF0YXItcGlja2VyJywgeyB0aW1lb3V0OiA1ICogNjAgKiAxMDAwIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11c3RTZXR1cEF2YXRhciA9ICEhYXdhaXQgcGFnZS4kKCcub25ib2FyZGluZy1zZXF1ZW5jZS1hdmF0YXItcGlja2VyJyk7XG4gICAgICAgIGlmIChtdXN0U2V0dXBBdmF0YXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZXR0aW5nIHVwIHRoZSBhdmF0YXIgZm9yIHRoZSBhZG1pbmlzdHJhdG9yIGFjY291bnQnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignaW5wdXQuYXZhdGFyLXBpY2tlci1kb25lJykuY2xpY2soKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCcjb25ib2FyZGluZycsIHsgdGltZW91dDogNSAqIDYwICogMTAwMCB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSdyZSBkb25lIGhlcmUsIGxldCdzIHdyYXAgdGhpbmdzIHVwXG4gICAgICAgIGNvbnNvbGUubG9nKGBGaW5pc2hlZCBhdXRvbWF0ZWQgaW5pdGlhbCBzZXR1cCBvZiBBdGxhc3NpYW4gSmlyYSDwn5KqYCk7XG4gICAgICAgIGF3YWl0IHBhZ2UuY2xvc2UoKTtcbiAgICAgICAgYXdhaXQgYnJvd3Nlci5jbG9zZSgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gYXV0b21hdGljYWxseSBzZXR1cCBBdGxhc3NpYW4gSmlyYScpO1xuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufTtcbmNvbnN0IHNldHVwQ29uZmx1ZW5jZSA9IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gTGF1bmNoIEdvb2dsZSBDaHJvbWVcbiAgICAgICAgY29uc3QgYnJvd3NlciA9IGF3YWl0IHB1cHBldGVlci5sYXVuY2goKTtcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBwYWdlIHZpZXdcbiAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IGJyb3dzZXIubmV3UGFnZSgpO1xuICAgICAgICBhd2FpdCBwYWdlLnNldFZpZXdwb3J0KHsgd2lkdGg6IDEwODAsIGhlaWdodDogMTAyNCB9KTtcbiAgICAgICAgLy8gT3BlbiB0aGUgU2V0dXAgcGFnZVxuICAgICAgICBjb25zb2xlLmxvZyhgU3RhcnRpbmcgYXV0b21hdGVkIGluaXRpYWwgc2V0dXAgb2YgQXRsYXNzaWFuIENvbmZsdWVuY2Ug8J+klmApO1xuICAgICAgICBhd2FpdCBwYWdlLmdvdG8ob3B0aW9ucy5iYXNlVXJsLCB7IHdhaXRVbnRpbDogWydkb21jb250ZW50bG9hZGVkJywgJ2xvYWQnLCAnbmV0d29ya2lkbGUwJ10sIHRpbWVvdXQ6IDUgKiA2MCAqIDEwMDAgfSk7XG4gICAgICAgIC8vIENob29zZSB5b3VyIGRlcGxveW1lbnQgdHlwZVxuICAgICAgICBjb25zdCBtdXN0Q2hvb3NlRGVwbG95bWVudFR5cGUgPSAhIWF3YWl0IHBhZ2UuJCgnZm9ybVthY3Rpb249XCJzZXR1cGNsdXN0ZXIuYWN0aW9uXCJdJyk7XG4gICAgICAgIGlmIChtdXN0Q2hvb3NlRGVwbG95bWVudFR5cGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZXR0aW5nIHVwIGRlcGxveW1lbnQgdHlwZScpO1xuICAgICAgICAgICAgY29uc3QgY2x1c3RlcmluZ1N0YXR1cyA9IG9wdGlvbnMuZGVwbG95bWVudFR5cGUgPT09ICdjbHVzdGVyZWQnID8gJ2NsdXN0ZXJpbmdFbmFibGVkJyA6ICdjbHVzdGVyaW5nRGlzYWJsZWQnO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKGBsYWJlbFtmb3I9JHtjbHVzdGVyaW5nU3RhdHVzfV1gKS5jbGljaygpO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGVwbG95bWVudFR5cGUgPT09ICdjbHVzdGVyZWQnKSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogYWRkIGNsdXN0ZXIgb3B0aW9uc1xuICAgICAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignYnV0dG9uW25hbWU9bmV3Q2x1c3Rlcl0nKS5jbGljaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCcjc2tpcC1idXR0b24nKS5jbGljaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1dhaXRpbmcgZm9yIHRoZSBjb250ZW50IGNob29zZXIgcGFnZSB0byBsb2FkLi4uIOKPsycpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS53YWl0Rm9yU2VsZWN0b3IoJ2Zvcm1bYWN0aW9uPVwic2V0dXBkYXRhLmFjdGlvblwiXScsIHsgdGltZW91dDogNSAqIDYwICogMTAwMCB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBMb2FkIENvbnRlbnRcbiAgICAgICAgY29uc3QgbXVzdExvYWRDb250ZW50ID0gISFhd2FpdCBwYWdlLiQoJ2Zvcm1bYWN0aW9uPVwic2V0dXBkYXRhLmFjdGlvblwiXScpO1xuICAgICAgICBpZiAobXVzdExvYWRDb250ZW50KSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5sb2FkQ29udGVudCA9PT0gJ2V4YW1wbGUnKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCcjZGVtb0Nob2ljZUZvcm0gPiBpbnB1dFt0eXBlPXN1Ym1pdF0nKS5jbGljaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCcjYmxhbmtDaG9pY2VGb3JtID4gaW5wdXRbdHlwZT1zdWJtaXRdJykuY2xpY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciB0aGUgdXNlciBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gcGFnZSB0byBsb2FkLi4uIOKPsycpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS53YWl0Rm9yU2VsZWN0b3IoJ2Zvcm1bYWN0aW9uPVwic2V0dXB1c2VybWFuYWdlbWVudGNob2ljZS5hY3Rpb25cIl0nLCB7IHRpbWVvdXQ6IDUgKiA2MCAqIDEwMDAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29uZmlndXJlIFVzZXIgTWFuYWdlbWVudFxuICAgICAgICBjb25zdCBtdXN0Q29uZmlndXJlVXNlck1hbmFnZW1lbnQgPSAhIWF3YWl0IHBhZ2UuJCgnZm9ybVthY3Rpb249XCJzZXR1cHVzZXJtYW5hZ2VtZW50Y2hvaWNlLmFjdGlvblwiXScpO1xuICAgICAgICBpZiAobXVzdENvbmZpZ3VyZVVzZXJNYW5hZ2VtZW50KSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy51c2VyTWFuYWdlbWVudCA9PT0gJ2NvbmZsdWVuY2UnKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCcjaW50ZXJuYWwnKS5jbGljaygpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciB0aGUgc3lzdGVtIGFkbWluaXN0cmF0aW9uIGFjY291bnQgY29uZmlndXJhdGlvbiBwYWdlIHRvIGxvYWQuLi4g4o+zJyk7XG4gICAgICAgICAgICAgICAgYXdhaXQgcGFnZS53YWl0Rm9yU2VsZWN0b3IoJ2Zvcm1bYWN0aW9uPVwic2V0dXBhZG1pbmlzdHJhdG9yLmFjdGlvblwiXScsIHsgdGltZW91dDogNSAqIDYwICogMTAwMCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignI2phYWNzJykuY2xpY2soKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnV2FpdGluZyBmb3IgdGhlIENvbm5lY3QgdG8gSmlyYSBwYWdlIHRvIGxvYWQuLi4g4o+zJyk7XG4gICAgICAgICAgICAgICAgYXdhaXQgcGFnZS53YWl0Rm9yU2VsZWN0b3IoJ2Zvcm1bYWN0aW9uPVwiY29ubmVjdHRvamlyYS5hY3Rpb25cIl0nLCB7IHRpbWVvdXQ6IDUgKiA2MCAqIDEwMDAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29uZmlndXJlIFN5c3RlbSBBZG1pbmlzdHJhdG9yIEFjY291bnRcbiAgICAgICAgY29uc3QgbXVzdENvbmZpZ3VyZUFkbWluaXN0cmF0b3JBY2NvdW50ID0gISFhd2FpdCBwYWdlLiQoJ2Zvcm1bYWN0aW9uPVwic2V0dXBhZG1pbmlzdHJhdG9yLmFjdGlvblwiXScpO1xuICAgICAgICBpZiAobXVzdENvbmZpZ3VyZUFkbWluaXN0cmF0b3JBY2NvdW50KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQ29uZmlndXJpbmcgdGhlIGFkbWluaXN0cmF0b3IgYWNjb3VudCcpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCdpbnB1dFtuYW1lPXVzZXJuYW1lXScpLmZpbGwob3B0aW9ucy51c2VybmFtZSk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJ2lucHV0W25hbWU9ZnVsbE5hbWVdJykuZmlsbChvcHRpb25zLmZ1bGxOYW1lKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignaW5wdXRbbmFtZT1lbWFpbF0nKS5maWxsKG9wdGlvbnMuZW1haWwpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCdpbnB1dFtuYW1lPXBhc3N3b3JkXScpLmZpbGwob3B0aW9ucy5wYXNzd29yZCk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJ2lucHV0W25hbWU9Y29uZmlybV0nKS5maWxsKG9wdGlvbnMucGFzc3dvcmQpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCcjc2V0dXAtbmV4dC1idXR0b24nKS5jbGljaygpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1dhaXRpbmcgZm9yIHRoZSBzZXR1cCBzdWNjZXNzZnVsIG5vdGlmaWNhdGlvbiB0byBsb2FkLi4uIOKPsycpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS53YWl0Rm9yU2VsZWN0b3IoJ2EuZmluaXNoQWN0aW9uJywgeyB0aW1lb3V0OiA1ICogNjAgKiAxMDAwIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11c3RGaW5pc2hTZXR1cCA9ICEhYXdhaXQgcGFnZS4kKCdhLmZpbmlzaEFjdGlvbicpO1xuICAgICAgICBpZiAobXVzdEZpbmlzaFNldHVwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRmluYWxpemluZyBpbml0aWFsIENvbmZsdWVuY2Ugc2V0dXAnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignYS5maW5pc2hBY3Rpb24nKS5jbGljaygpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1dhaXRpbmcgZm9yIHRoZSBpbml0aWFsIHNwYWNlIGNyZWF0aW9uIGZvcm0gdG8gbG9hZC4uLiDij7MnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCcjZ3Jvdy1pbnRyby1jcmVhdGUtc3BhY2UnLCB7IHRpbWVvdXQ6IDUgKiA2MCAqIDEwMDAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2UncmUgZG9uZSBoZXJlLCBsZXQncyB3cmFwIHRoaW5ncyB1cFxuICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgYXV0b21hdGVkIGluaXRpYWwgc2V0dXAgb2YgQXRsYXNzaWFuIENvbmZsdWVuY2Ug8J+SqmApO1xuICAgICAgICBhd2FpdCBwYWdlLmNsb3NlKCk7XG4gICAgICAgIGF3YWl0IGJyb3dzZXIuY2xvc2UoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGF1dG9tYXRpY2FsbHkgc2V0dXAgQXRsYXNzaWFuIENvbmZsdWVuY2UnKTtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn07XG4iLCJleHBvcnQgY29uc3Qgc2hvd0hlbHBXaXRoRGVmYXVsdENvbW1hbmRPcHRpb25zID0ge1xuICAgIHZpc2libGVPcHRpb25zOiAoY21kKSA9PiB7XG4gICAgICAgIGxldCBvcHRpb25zID0gY21kLm9wdGlvbnM7XG4gICAgICAgIGlmICghY21kLnBhcmVudCAmJiBvcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdENvbW1hbmROYW1lID0gY21kLl9kZWZhdWx0Q29tbWFuZE5hbWU7XG4gICAgICAgICAgICBpZiAoZGVmYXVsdENvbW1hbmROYW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdENvbW1hbmQgPSBjbWQuY29tbWFuZHMuZmluZChpdGVtID0+IGl0ZW0uX25hbWUgPT09IGRlZmF1bHRDb21tYW5kTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRDb21tYW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBkZWZhdWx0Q29tbWFuZC5vcHRpb25zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShvcHRpb25zKTtcbiAgICB9XG59O1xuIiwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgQ29tbWFuZCBhcyBDb21tYW5kZXIsIE9wdGlvbiB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgQWN0aW9uSGFuZGxlciB9IGZyb20gJy4uL2hlbHBlcnMvQWN0aW9uSGFuZGxlcic7XG5pbXBvcnQgeyBnZXRDb25maWcgfSBmcm9tICcuLi9oZWxwZXJzL2dldENvbmZpZyc7XG5pbXBvcnQgeyBzZXR1cEhvc3QgfSBmcm9tICcuLi9oZWxwZXJzL3NldHVwSG9zdCc7XG5pbXBvcnQgeyBzaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3Nob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmRlcigpO1xuY29uc3QgQ29tbWFuZCA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBhY3Rpb246IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCBnZXRDb25maWcob3B0aW9ucy5jb25maWcsIG9wdGlvbnMuY3dkKTtcbiAgICAgICAgICAgIGF3YWl0IHNldHVwSG9zdChvcHRpb25zLnByb2R1Y3QsIGNvbmZpZyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9ySGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICB9XG4gICAgfTtcbn07XG5wcm9ncmFtXG4gICAgLm5hbWUoJ2RjZHggY29uZmlndXJlJylcbiAgICAuZGVzY3JpcHRpb24oYEF1dG9tYXRlZCBpbml0aWFsIHNldHVwIG9mIHRoZSBob3N0IGFwcGxpY2F0aW9uXG5JZiB5b3Ugd2lzaCB0byBydW4gYSBzcGVjaWZpYyBob3N0IGFwcGxpY2F0aW9uLCBjYWxsIHRoaXMgY29tbWFuZCB3aXRoICdkY2R4IGNvbmZpZ3VyZSA8bmFtZT4nYClcbiAgICAuYWRkSGVscFRleHQoJ2FmdGVyQWxsJywgJ+KAiycpIC8vIHRoZXJlIGlzIGEgbm9uLXplcm8gd2hpdGUgc3BhY2UgYmVjYXVzZSB0aGUgb25seSByZWFzb24gdG8gaGF2ZSB0aGlzIGlzIHRvIGZvcmNlIGEgbGluZSBicmVha1xuICAgIC5jb25maWd1cmVIZWxwKHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucylcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKGZhbHNlKVxuICAgIC5hbGxvd0V4Y2Vzc0FyZ3VtZW50cyhmYWxzZSlcbiAgICAuc2hvd0hlbHBBZnRlckVycm9yKHRydWUpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdkZWZhdWx0JywgeyBpc0RlZmF1bHQ6IHRydWUsIGhpZGRlbjogdHJ1ZSB9KVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXAsIC0tcHJvZHVjdCA8bmFtZT4nLCAnVGhlIG5hbWUgb2YgdGhlIGhvc3QgYXBwbGljYXRpb24nKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcykpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWMsIC0tY29uZmlnIDxwYXRoPicsICdQYXRoIHRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGUnKS5kZWZhdWx0KCdkY2R4LmNvbmZpZy5tanMnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy11LCAtLXVybCA8dXJsPicsICdUaGUgVVJMIG9mIHRoZSBob3N0IGFwcGxpY2F0aW9uJykuZGVmYXVsdCgnaHR0cDovL2xvY2FsaG9zdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbicpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgb3B0aW9ucykpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSlcbiAgICAuZGVzY3JpcHRpb24oJ0F1dG9tYXRlZCBpbml0aWFsIHNldHVwIG9mIEF0bGFzc2lhbiBKaXJhJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1jLCAtLWNvbmZpZyA8cGF0aD4nLCAnUGF0aCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlJykuZGVmYXVsdCgnZGNkeC5jb25maWcubWpzJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnVGhlIFVSTCBvZiB0aGUgaG9zdCBhcHBsaWNhdGlvbicpLmRlZmF1bHQoJ2h0dHA6Ly9sb2NhbGhvc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZXJlIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24nKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZChTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2UpXG4gICAgLmRlc2NyaXB0aW9uKCdBdXRvbWF0ZWQgaW5pdGlhbCBzZXR1cCBvZiBBdGxhc3NpYW4gQ29uZmx1ZW5jZScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctYywgLS1jb25maWcgPHBhdGg+JywgJ1BhdGggdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZScpLmRlZmF1bHQoJ2RjZHguY29uZmlnLm1qcycpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ1RoZSBVUkwgb2YgdGhlIGhvc3QgYXBwbGljYXRpb24nKS5kZWZhdWx0KCdodHRwOi8vbG9jYWxob3N0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVyZSB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZSB9KSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib28pXG4gICAgLmRlc2NyaXB0aW9uKCdBdXRvbWF0ZWQgaW5pdGlhbCBzZXR1cCBvZiBBdGxhc3NpYW4gQmFtYm9vJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1jLCAtLWNvbmZpZyA8cGF0aD4nLCAnUGF0aCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlJykuZGVmYXVsdCgnZGNkeC5jb25maWcubWpzJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnVGhlIFVSTCBvZiB0aGUgaG9zdCBhcHBsaWNhdGlvbicpLmRlZmF1bHQoJ2h0dHA6Ly9sb2NhbGhvc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZXJlIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24nKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib28gfSkpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0KVxuICAgIC5kZXNjcmlwdGlvbignQXV0b21hdGVkIGluaXRpYWwgc2V0dXAgb2YgQXRsYXNzaWFuIEJpdGJ1Y2tldCcpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctYywgLS1jb25maWcgPHBhdGg+JywgJ1BhdGggdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZScpLmRlZmF1bHQoJ2RjZHguY29uZmlnLm1qcycpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ1RoZSBVUkwgb2YgdGhlIGhvc3QgYXBwbGljYXRpb24nKS5kZWZhdWx0KCdodHRwOi8vbG9jYWxob3N0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVyZSB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0IH0pKTtcbnByb2dyYW0ucGFyc2VBc3luYygpLmNhdGNoKCgpID0+IGdyYWNlZnVsRXhpdCgxKSk7XG5wcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFJlY2VpdmVkIHRlcm0gc2lnbmFsLCB0cnlpbmcgdG8gc3RvcCBncmFjZWZ1bGx5IPCfkqpgKTtcbiAgICBncmFjZWZ1bEV4aXQoKTtcbn0pO1xuIl0sIm5hbWVzIjpbIkNvbW1hbmRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRU8sTUFBTSxhQUFhLEdBQUcsT0FBTyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsT0FBTyxLQUFLO0FBQ25GLElBQUksTUFBTSxHQUFHLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMxQyxJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxLQUFLO0FBQ3JDLFFBQVEsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQzlC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
593
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLmpzIiwic291cmNlcyI6WyIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0FjdGlvbkhhbmRsZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXRWZXJzaW9ucy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy90eXBlcy9Db25maWd1cmUuanMiLCIuLi8uLi9kaXN0L3NyYy90eXBlcy9Db25maWcuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldENvbmZpZy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvY2FwaXRhbGl6ZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvc2V0dXBIb3N0LmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9zaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9jb25maWd1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXN5bmNFeGl0SG9vaywgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuZXhwb3J0IGNvbnN0IEFjdGlvbkhhbmRsZXIgPSBhc3luYyAocHJvZ3JhbSwgeyBhY3Rpb24sIGVycm9ySGFuZGxlciB9LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgb3BzID0gb3B0aW9ucyB8fCBwcm9ncmFtLm9wdHMoKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgYXN5bmNFeGl0SG9vayhhc3luYyAoY29kZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBlcnJvckhhbmRsZXIob3BzKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcmVqZWN0aW5nIHRoZSBwcm9taXNlIHRvIGF2b2lkIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBcIkNhbGxpbmcgcHJvY2Vzcy5leGl0XCIgbG9nIG1lc3NhZ2UgZnJvbSBleGl0LWhvb2tcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHdhaXQ6IDYwICogMSAqIDEwMDBcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvbihvcHMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDApO1xuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBlcnIuaXNzdWVzLmZvckVhY2goaXNzdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgKz0gYFVuYWJsZSB0byBwYXJzZSBvcHRpb24gJHtpc3N1ZS5wYXRoLmpvaW4oJywnKX06ICR7aXNzdWUubWVzc2FnZX1cXG5gO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgfHwgdHlwZW9mIGVyciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnIudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyYWNlZnVsRXhpdCgxKTtcbiAgICAgICAgfSk7XG4gICAgfSkuY2F0Y2gobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBwcm9ncmFtLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZSxcbiAgICAgICAgICAgIC8vIHdlIGNhbiBhc3N1bWUgYSBjbGVhbiBleGl0XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5leHBvcnQgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSAocmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgY29uc3QgWywgZmlsZVBhdGhdID0gcHJvY2Vzcy5hcmd2O1xuICAgIGNvbnN0IGV4ZWN1dGFibGVGaWxlRGlyID0gZGlybmFtZShyZWFscGF0aFN5bmMoZmlsZVBhdGgpKTtcbiAgICBjb25zdCBiYXNlZGlyID0gZXhlY3V0YWJsZUZpbGVEaXIuc3Vic3RyaW5nKDAsIGV4ZWN1dGFibGVGaWxlRGlyLmluZGV4T2YoJ2RjZHgnKSArIDQpO1xuICAgIHJldHVybiBqb2luKGJhc2VkaXIsIHJlbGF0aXZlUGF0aC5yZXBsYWNlQWxsKCcuLi8nLCAnJykpO1xufTtcbiIsImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi90b0Fic29sdXRlUGF0aCc7XG5leHBvcnQgY29uc3QgZ2V0VmVyc2lvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyh0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nKSwgJ3V0Zi04Jyk7XG4gICAgY29uc3QgdmVyc2lvbnMgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICAgIHJldHVybiB2ZXJzaW9ucztcbn07XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IGdldFZlcnNpb25zIH0gZnJvbSAnLi4vaGVscGVycy9nZXRWZXJzaW9ucyc7XG5jb25zdCB2ZXJzaW9ucyA9IGdldFZlcnNpb25zKCk7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzID0gei5lbnVtKFtcbiAgICAncG9zdGdyZXNxbCcsXG4gICAgJ215c3FsJyxcbiAgICAnbXNzcWwnXG5dKTtcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zID0gei5lbnVtKFtcbiAgICAnRGV2ZWxvcGVyJyxcbiAgICAnRXhwcmVzcycsXG4gICAgJ1N0YW5kYXJkJyxcbiAgICAnRW50ZXJwcmlzZScsXG4gICAgJ0VudGVycHJpc2VDb3JlJ1xuXSk7XG5leHBvcnQgY29uc3QgRGF0YWJhc2VPcHRpb25zID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSksXG4gICAgZGF0YWJhc2U6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgY2xlYW46IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHBydW5lOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICB2ZXJib3NlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKClcbn0pO1xuZXhwb3J0IGNvbnN0IFBvc3RncmVTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCg1NDMyKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ29yZy5wb3N0Z3Jlc3FsLkRyaXZlcicpLmRlZmF1bHQoJ29yZy5wb3N0Z3Jlc3FsLkRyaXZlcicpXG59KTtcbmV4cG9ydCBjb25zdCBNeVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDMzMDYpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm15c3FsLmpkYmMuRHJpdmVyJykuZGVmYXVsdCgnY29tLm15c3FsLmpkYmMuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE1TU1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgZWRpdGlvbjogU3VwcG9ydGVkTVNTUUxFZGl0aW9ucy5kZWZhdWx0KCdEZXZlbG9wZXInKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCgxNDMzKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnc2EnKS5kZWZhdWx0KCdzYScpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ0RhdGFDZW50ZXJEWCEnKSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ2NvbS5taWNyb3NvZnQuc3Fsc2VydmVyLmpkYmMuU1FMU2VydmVyRHJpdmVyJykuZGVmYXVsdCgnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKVxufSk7XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4vRGF0YWJhc2UnO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyA9IHouZW51bShbXG4gICAgJ2ppcmEnLFxuICAgICdjb25mbHVlbmNlJyxcbiAgICAnYml0YnVja2V0JyxcbiAgICAnYmFtYm9vJ1xuXSk7XG5leHBvcnQgY29uc3QgQXBwbGljYXRpb25PcHRpb25zID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyxcbiAgICB0YWc6IHouc3RyaW5nKCkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgZGF0YWJhc2U6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5kZWZhdWx0KCdwb3N0Z3Jlc3FsJyksXG4gICAgZGF0YWJhc2VUYWc6IHouc3RyaW5nKCkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpLmRlZmF1bHQoJzgwJyksXG4gICAgY29udGV4dFBhdGg6IHouc3RyaW5nKCksXG4gICAgeG1zOiB6LnN0cmluZygpLmRlZmF1bHQoJzEwMjRtJyksXG4gICAgeG14OiB6LnN0cmluZygpLmRlZmF1bHQoJzEwMjRtJyksXG4gICAgd2F0Y2g6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGV4dDogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICBpbnN0YWxsOiB6LmJvb2xlYW4oKSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHouc3RyaW5nKCksXG4gICAgYWN0aXZhdGVQcm9maWxlczogei5zdHJpbmcoKSxcbiAgICBjb25maWd1cmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZGVidWc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAganZtOiB6LnN0cmluZygpLFxuICAgIGN3ZDogei5zdHJpbmcoKVxufSkucGFydGlhbCh7XG4gICAgY29udGV4dFBhdGg6IHRydWUsXG4gICAgZXh0OiB0cnVlLFxuICAgIGluc3RhbGw6IHRydWUsXG4gICAgb3V0cHV0RGlyZWN0b3J5OiB0cnVlLFxuICAgIGFjdGl2YXRlUHJvZmlsZXM6IHRydWUsXG4gICAganZtOiB0cnVlLFxuICAgIGN3ZDogdHJ1ZVxufSk7XG4iLCJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4vQXBwbGljYXRpb24nO1xuZXhwb3J0IGNvbnN0IENvbmZpZ3VyZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgcHJvZHVjdDogU3VwcG9ydGVkQXBwbGljYXRpb25zLFxuICAgIGNvbmZpZzogei5zdHJpbmcoKSxcbiAgICBjd2Q6IHouc3RyaW5nKClcbn0pLnBhcnRpYWwoe1xuICAgIGNvbmZpZzogdHJ1ZSxcbiAgICBjd2Q6IHRydWVcbn0pO1xuZXhwb3J0IGNvbnN0IENvbmZpZ3VyZUJhc2UgPSB6Lm9iamVjdCh7XG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKClcbn0pO1xuZXhwb3J0IGNvbnN0IENvbmZpZ3VyZUppcmEgPSBDb25maWd1cmVCYXNlLmV4dGVuZCh7XG4gICAgdGl0bGU6IHouc3RyaW5nKCksXG4gICAgbW9kZTogei5lbnVtKFsncHJpdmF0ZScsICdwdWJsaWMnXSksXG4gICAgYmFzZVVybDogei5zdHJpbmcoKSxcbiAgICBmdWxsbmFtZTogei5zdHJpbmcoKSxcbiAgICBlbWFpbDogei5zdHJpbmcoKSxcbiAgICBjb25maWd1cmVFbWFpbDogei5lbnVtKFsnbGF0ZXInLCAnbm93J10pLFxuICAgIGVtYWlsTmFtZTogei5zdHJpbmcoKSxcbiAgICBlbWFpbEZyb21BZGRyZXNzOiB6LnN0cmluZygpLFxuICAgIGVtYWlsUHJlZml4OiB6LnN0cmluZygpLFxuICAgIGVtYWlsU2VydmVyVHlwZTogei5lbnVtKFsnc210cCcsICdqbmRpJ10pLFxuICAgIGVtYWlsSm5kaUxvY2F0aW9uOiB6LnN0cmluZygpLFxuICAgIGVtYWlsU2VydmljZVByb3ZpZGVyOiB6LmVudW0oWydjdXN0b20nLCAnZ29vZ2xlLWFwcHMtbWFpbC0vLWdtYWlsLTgnLCAneWFob28hLW1haWwtcGx1cy05J10pLFxuICAgIGVtYWlsSG9zdE5hbWU6IHouc3RyaW5nKCksXG4gICAgZW1haWxQcm90b2NvbDogei5lbnVtKFsnU01UUCcsICdTRUNVUkVfU01UUCddKSxcbiAgICBlbWFpbFBvcnQ6IHoubnVtYmVyKCksXG4gICAgZW1haWxUaW1lb3V0OiB6Lm51bWJlcigpLFxuICAgIGVtYWlsVExTOiB6LmJvb2xlYW4oKSxcbiAgICBlbWFpbFVzZXJuYW1lOiB6LnN0cmluZygpLFxuICAgIGVtYWlsUGFzc3dvcmQ6IHouc3RyaW5nKCksXG4gICAgbGFuZ3VhZ2U6IHouZW51bShbXG4gICAgICAgICdlbi1VUycsXG4gICAgICAgICd6aF9DTicsXG4gICAgICAgICdjc19DWicsXG4gICAgICAgICdkYV9ESycsXG4gICAgICAgICdubF9OTCcsXG4gICAgICAgICdlbl9VSycsXG4gICAgICAgICdldF9FRScsXG4gICAgICAgICdmaV9GSScsXG4gICAgICAgICdmcl9GUicsXG4gICAgICAgICdkZV9ERScsXG4gICAgICAgICdodV9IVScsXG4gICAgICAgICdpc19JUycsXG4gICAgICAgICdpdF9JVCcsXG4gICAgICAgICdqYV9KUCcsXG4gICAgICAgICdrb19LUicsXG4gICAgICAgICdub19OTycsXG4gICAgICAgICdwbF9QTCcsXG4gICAgICAgICdwdF9CUicsXG4gICAgICAgICdyb19STycsXG4gICAgICAgICdydV9SVScsXG4gICAgICAgICdza19TSycsXG4gICAgICAgICdlc19FUycsXG4gICAgICAgICdzdl9TRSdcbiAgICBdKSxcbiAgICBhdmF0YXJQYXRoOiB6LnN0cmluZygpXG59KS5wYXJ0aWFsKHtcbiAgICBlbWFpbE5hbWU6IHRydWUsXG4gICAgZW1haWxGcm9tQWRkcmVzczogdHJ1ZSxcbiAgICBlbWFpbFByZWZpeDogdHJ1ZSxcbiAgICBlbWFpbFNlcnZlclR5cGU6IHRydWUsXG4gICAgZW1haWxKbmRpTG9jYXRpb246IHRydWUsXG4gICAgZW1haWxTZXJ2aWNlUHJvdmlkZXI6IHRydWUsXG4gICAgZW1haWxIb3N0TmFtZTogdHJ1ZSxcbiAgICBlbWFpbFByb3RvY29sOiB0cnVlLFxuICAgIGVtYWlsUG9ydDogdHJ1ZSxcbiAgICBlbWFpbFRpbWVvdXQ6IHRydWUsXG4gICAgZW1haWxUTFM6IHRydWUsXG4gICAgZW1haWxVc2VybmFtZTogdHJ1ZSxcbiAgICBlbWFpbFBhc3N3b3JkOiB0cnVlLFxuICAgIGxhbmd1YWdlOiB0cnVlLFxuICAgIGF2YXRhclBhdGg6IHRydWVcbn0pLmRlZmF1bHQoe1xuICAgIHRpdGxlOiAnSmlyYScsXG4gICAgbW9kZTogJ3ByaXZhdGUnLFxuICAgIGJhc2VVcmw6ICdodHRwOi8vbG9jYWxob3N0JyxcbiAgICBmdWxsbmFtZTogJ0FkbWluaXN0cmF0b3InLFxuICAgIGVtYWlsOiAnYWRtaW5AZXhhbXBsZS5vcmcnLFxuICAgIGNvbmZpZ3VyZUVtYWlsOiAnbGF0ZXInLFxuICAgIHVzZXJuYW1lOiAnYWRtaW4nLFxuICAgIHBhc3N3b3JkOiAnYWRtaW4nXG59KTtcbmV4cG9ydCBjb25zdCBDb25maWd1cmVDb25mbHVlbmNlID0gQ29uZmlndXJlQmFzZS5leHRlbmQoe1xuICAgIGJhc2VVcmw6IHouc3RyaW5nKCksXG4gICAgZGVwbG95bWVudFR5cGU6IHouZW51bShbJ25vbi1jbHVzdGVyZWQnLCAnY2x1c3RlcmVkJ10pLFxuICAgIGZ1bGxOYW1lOiB6LnN0cmluZygpLFxuICAgIGVtYWlsOiB6LnN0cmluZygpLFxuICAgIGNsdXN0ZXJOYW1lOiB6LnN0cmluZygpLFxuICAgIGNsdXN0ZXJIb21lOiB6LnN0cmluZygpLFxuICAgIGNsdXN0ZXJKb2luTW9kZTogei5lbnVtKFsndXNlTXVsdGljYXN0JywgJ3VzZVRjcElwJywgJ3VzZUF3cyddKSxcbiAgICBjbHVzdGVyQXV0b0FkZHJlc3M6IHouYm9vbGVhbigpLFxuICAgIGxvYWRDb250ZW50OiB6LmVudW0oWydleGFtcGxlJywgJ2VtcHR5J10pLFxuICAgIHVzZXJNYW5hZ2VtZW50OiB6LmVudW0oWydjb25mbHVlbmNlJywgJ2ppcmEnXSksXG4gICAgamlyYUJhc2VVcmw6IHouc3RyaW5nKCksXG4gICAgamlyYVVzZXJuYW1lOiB6LnN0cmluZygpLFxuICAgIGppcmFQYXNzd29yZDogei5zdHJpbmcoKSxcbiAgICBqaXJhVXNlckdyb3Vwczogei5zdHJpbmcoKSxcbiAgICBqaXJhQWRtaW5Hcm91cHM6IHouc3RyaW5nKCksXG59KS5wYXJ0aWFsKHtcbiAgICBjbHVzdGVyTmFtZTogdHJ1ZSxcbiAgICBjbHVzdGVySG9tZTogdHJ1ZSxcbiAgICBjbHVzdGVySm9pbk1vZGU6IHRydWUsXG4gICAgY2x1c3RlckF1dG9BZGRyZXNzOiB0cnVlLFxuICAgIGppcmFCYXNlVXJsOiB0cnVlLFxuICAgIGppcmFVc2VybmFtZTogdHJ1ZSxcbiAgICBqaXJhUGFzc3dvcmQ6IHRydWUsXG4gICAgamlyYVVzZXJHcm91cHM6IHRydWUsXG4gICAgamlyYUFkbWluR3JvdXBzOiB0cnVlXG59KS5kZWZhdWx0KHtcbiAgICBiYXNlVXJsOiAnaHR0cDovL2xvY2FsaG9zdCcsXG4gICAgZGVwbG95bWVudFR5cGU6ICdub24tY2x1c3RlcmVkJyxcbiAgICBmdWxsTmFtZTogJ0FkbWluaXN0cmF0b3InLFxuICAgIGVtYWlsOiAnYWRtaW5AZXhhbXBsZS5vcmcnLFxuICAgIGxvYWRDb250ZW50OiAnZW1wdHknLFxuICAgIHVzZXJNYW5hZ2VtZW50OiAnY29uZmx1ZW5jZScsXG4gICAgdXNlcm5hbWU6ICdhZG1pbicsXG4gICAgcGFzc3dvcmQ6ICdhZG1pbidcbn0pO1xuZXhwb3J0IGNvbnN0IENvbmZpZ3VyZUJpdGJ1Y2tldCA9IENvbmZpZ3VyZUJhc2UuZXh0ZW5kKHt9KS5kZWZhdWx0KHtcbiAgICB1c2VybmFtZTogJ2FkbWluJyxcbiAgICBwYXNzd29yZDogJ2FkbWluJ1xufSk7XG5leHBvcnQgY29uc3QgQ29uZmlndXJlQmFtYm9vID0gQ29uZmlndXJlQmFzZS5leHRlbmQoe30pLmRlZmF1bHQoe1xuICAgIHVzZXJuYW1lOiAnYWRtaW4nLFxuICAgIHBhc3N3b3JkOiAnYWRtaW4nXG59KTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb25maWd1cmVCYW1ib28sIENvbmZpZ3VyZUJpdGJ1Y2tldCwgQ29uZmlndXJlQ29uZmx1ZW5jZSwgQ29uZmlndXJlSmlyYSB9IGZyb20gJy4vQ29uZmlndXJlJztcbmV4cG9ydCBjb25zdCBDb25maWcgPSB6Lm9iamVjdCh7XG4gICAgc2V0dXA6IHoub2JqZWN0KHtcbiAgICAgICAgW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYV06IENvbmZpZ3VyZUppcmEsXG4gICAgICAgIFtTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2VdOiBDb25maWd1cmVDb25mbHVlbmNlLFxuICAgICAgICBbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib29dOiBDb25maWd1cmVCYW1ib28sXG4gICAgICAgIFtTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldF06IENvbmZpZ3VyZUJpdGJ1Y2tldFxuICAgIH0pLnBhcnRpYWwoKVxufSkuZGVmYXVsdCh7XG4gICAgc2V0dXA6IHtcbiAgICAgICAgW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYV06IENvbmZpZ3VyZUppcmEucGFyc2UodW5kZWZpbmVkKSxcbiAgICAgICAgW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZV06IENvbmZpZ3VyZUNvbmZsdWVuY2UucGFyc2UodW5kZWZpbmVkKSxcbiAgICAgICAgW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vXTogQ29uZmlndXJlQmFtYm9vLnBhcnNlKHVuZGVmaW5lZCksXG4gICAgICAgIFtTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldF06IENvbmZpZ3VyZUJpdGJ1Y2tldC5wYXJzZSh1bmRlZmluZWQpXG4gICAgfVxufSk7XG4iLCIvKlxuICBDb2RlIGF0cnJpYnV0aW9uXG4gIGJvcnJvd2VkIHNvbWUgbG9naWMgZm9yIGxvYWRpbmcgY29uZmlndXJhdGlvbiBmaWxlcyBmcm9tIEVTTGludFxuICBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9ibG9iL21haW4vbGliL2NvbmZpZy9jb25maWctbG9hZGVyLmpzXG4qL1xuaW1wb3J0IHsgZXhpc3RzU3luYywgc3RhdFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBpc0Fic29sdXRlLCBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSAndXJsJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uL3R5cGVzL0NvbmZpZyc7XG5leHBvcnQgY29uc3QgZ2V0Q29uZmlnID0gYXN5bmMgKHBhdGgsIGN3ZCkgPT4ge1xuICAgIGxldCBjb25maWc7XG4gICAgY29uc3QgZGlyZWN0b3J5ID0gY3dkIHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3QgY29uZmlnRmlsZSA9IHBhdGggfHwgJ2RjZHguY29uZmlnLm1qcyc7XG4gICAgY29uc3QgY29uZmlnUGF0aCA9IGlzQWJzb2x1dGUoY29uZmlnRmlsZSkgJiYgZXhpc3RzU3luYyhjb25maWdGaWxlKSA/IGNvbmZpZ0ZpbGUgOiBqb2luKGRpcmVjdG9yeSwgY29uZmlnRmlsZSk7XG4gICAgaWYgKGV4aXN0c1N5bmMoY29uZmlnUGF0aCkpIHtcbiAgICAgICAgLypcbiAgICAgICAgKiBFeHBsYW5hdGlvbiBjb3BpZWQgZnJvbSBFU0xpbnRcbiAgICAgICAgKlxuICAgICAgICAqIEFwcGVuZCBhIHF1ZXJ5IHdpdGggdGhlIGNvbmZpZyBmaWxlJ3MgbW9kaWZpY2F0aW9uIHRpbWUgKGBtdGltZWApIGluIG9yZGVyXG4gICAgICAgICogdG8gaW1wb3J0IHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIGNvbmZpZyBmaWxlLiBXaXRob3V0IHRoZSBxdWVyeSwgYGltcG9ydCgpYCB3b3VsZFxuICAgICAgICAqIGNhY2hlIHRoZSBjb25maWcgZmlsZSBtb2R1bGUgYnkgdGhlIHBhdGhuYW1lIG9ubHksIGFuZCB0aGVuIGFsd2F5cyByZXR1cm5cbiAgICAgICAgKiB0aGUgc2FtZSB2ZXJzaW9uICh0aGUgb25lIHRoYXQgd2FzIGFjdHVhbCB3aGVuIHRoZSBtb2R1bGUgd2FzIGltcG9ydGVkIGZvciB0aGUgZmlyc3QgdGltZSkuXG4gICAgICAgICpcbiAgICAgICAgKiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgY29uZmlnIGZpbGUgbW9kdWxlIGlzIGxvYWRlZCBhbmQgZXhlY3V0ZWQgYWdhaW5cbiAgICAgICAgKiBpZiBpdCBoYXMgYmVlbiBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgaXQgd2FzIGltcG9ydGVkLlxuICAgICAgICAqIElmIGl0IGhhc24ndCBiZWVuIGNoYW5nZWQsIGBpbXBvcnQoKWAgd2lsbCBqdXN0IHJldHVybiB0aGUgY2FjaGVkIHZlcnNpb24uXG4gICAgICAgICpcbiAgICAgICAgKiBOb3RlIHRoYXQgd2Ugc2hvdWxkIG5vdCBvdmVydXNlIHF1ZXJpZXMgKGUuZy4sIGJ5IGFwcGVuZGluZyB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgICogdG8gYWx3YXlzIHJlbG9hZCB0aGUgY29uZmlnIGZpbGUgbW9kdWxlKSBhcyB0aGF0IGNvdWxkIGNhdXNlIG1lbW9yeSBsZWFrc1xuICAgICAgICAqIGJlY2F1c2UgZW50cmllcyBhcmUgbmV2ZXIgcmVtb3ZlZCBmcm9tIHRoZSBpbXBvcnQgY2FjaGUuXG4gICAgICAgICovXG4gICAgICAgIGNvbnN0IG10aW1lID0gc3RhdFN5bmMoY29uZmlnUGF0aCkubXRpbWUuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBmaWxlVVJMID0gcGF0aFRvRmlsZVVSTChjb25maWdQYXRoKTtcbiAgICAgICAgZmlsZVVSTC5zZWFyY2hQYXJhbXMuYXBwZW5kKCdtdGltZScsIG10aW1lLnRvRml4ZWQoKSk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gZmlsZVVSTC50b1N0cmluZygpO1xuICAgICAgICBjb25maWcgPSAoYXdhaXQgaW1wb3J0KGZpbGVQYXRoKSkuZGVmYXVsdDtcbiAgICB9XG4gICAgcmV0dXJuIENvbmZpZy5wYXJzZShjb25maWcpO1xufTtcbiIsImV4cG9ydCBjb25zdCBjYXBpdGFsaXplID0gKHZhbHVlKSA9PiB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnNsaWNlKDEpO1xuIiwiaW1wb3J0IHB1cHBldGVlciBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQ29uZmlndXJlQ29uZmx1ZW5jZSwgQ29uZmlndXJlSmlyYSB9IGZyb20gJy4uL3R5cGVzL0NvbmZpZ3VyZSc7XG5pbXBvcnQgeyBjYXBpdGFsaXplIH0gZnJvbSAnLi9jYXBpdGFsaXplJztcbmV4cG9ydCBjb25zdCBzZXR1cEhvc3QgPSBhc3luYyAobmFtZSwgY29uZmlnKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGNvbmZpZy5zZXR1cFtuYW1lXTtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBpbml0aWFsIHNldHVwIGNvbmZpZ3VyYXRpb24gZm9yICR7Y2FwaXRhbGl6ZShuYW1lKX1gKTtcbiAgICB9XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhOlxuICAgICAgICAgICAgcmV0dXJuIHNldHVwSmlyYShDb25maWd1cmVKaXJhLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U6XG4gICAgICAgICAgICByZXR1cm4gc2V0dXBDb25mbHVlbmNlKENvbmZpZ3VyZUNvbmZsdWVuY2UucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0OlxuICAgICAgICAgICAgY29uc29sZS5sb2coJ09vcHNpZSBkYWlzeSDwn4y8IEF0bGFzc2lhbiBCaXRidWNrZXQgZG9lcyBub3QgcmVxdWlyZSBhZGRpdGlvbmFsIHNldHVwIPCfpJYnKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5jb25zdCBzZXR1cEppcmEgPSBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIExhdW5jaCBHb29nbGUgQ2hyb21lXG4gICAgICAgIGNvbnN0IGJyb3dzZXIgPSBhd2FpdCBwdXBwZXRlZXIubGF1bmNoKCk7XG4gICAgICAgIC8vIENyZWF0ZSB0aGUgcGFnZSB2aWV3XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCBicm93c2VyLm5ld1BhZ2UoKTtcbiAgICAgICAgYXdhaXQgcGFnZS5zZXRWaWV3cG9ydCh7IHdpZHRoOiAxMDgwLCBoZWlnaHQ6IDEwMjQgfSk7XG4gICAgICAgIC8vIE9wZW4gdGhlIFNldHVwIHBhZ2VcbiAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nIGF1dG9tYXRlZCBpbml0aWFsIHNldHVwIG9mIEF0bGFzc2lhbiBKaXJhIPCfpJZgKTtcbiAgICAgICAgYXdhaXQgcGFnZS5nb3RvKG9wdGlvbnMuYmFzZVVybCwgeyB3YWl0VW50aWw6IFsnZG9tY29udGVudGxvYWRlZCcsICdsb2FkJywgJ25ldHdvcmtpZGxlMCddLCB0aW1lb3V0OiA1ICogNjAgKiAxMDAwIH0pO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHByb2dyZXNzIGhhcyBlbmRlZFxuICAgICAgICBjb25zdCBpc1N0aWxsTG9hZGluZyA9ICEhYXdhaXQgcGFnZS4kKCcjcHJvZ3Jlc3MnKTtcbiAgICAgICAgaWYgKGlzU3RpbGxMb2FkaW5nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnV2FpdGluZyBmb3IgQXRsYXNzaWFuIEppcmEgdG8gYmUgcmVhZHkuLi4g4o+zJyk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLndhaXRGb3JOYXZpZ2F0aW9uKHsgd2FpdFVudGlsOiBbJ2RvbWNvbnRlbnRsb2FkZWQnLCAnbG9hZCcsICduZXR3b3JraWRsZTAnXSwgdGltZW91dDogNSAqIDYwICogMTAwMCB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXQgdXAgYXBwbGljYXRpb24gcHJvcGVydGllc1xuICAgICAgICBjb25zdCBtdXN0U2V0dXBBcHBsaWNhdGlvblByb3BlcnRpZXMgPSAhIWF3YWl0IHBhZ2UuJCgnZm9ybVthY3Rpb249XCJTZXR1cEFwcGxpY2F0aW9uUHJvcGVydGllcy5qc3BhXCJdJyk7XG4gICAgICAgIGlmIChtdXN0U2V0dXBBcHBsaWNhdGlvblByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZXR0aW5nIHVwIGFwcGxpY2F0aW9uIHByb3BlcnRpZXMnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignaW5wdXRbbmFtZT10aXRsZV0nKS5maWxsKG9wdGlvbnMudGl0bGUpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKGBsYWJlbFtmb3I9amlyYS1zZXR1cHdpemFyZC1tb2RlLSR7b3B0aW9ucy5tb2RlfV1gKS5jbGljaygpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCdpbnB1dFtuYW1lPWJhc2VVUkxdJykuZmlsbChvcHRpb25zLmJhc2VVcmwpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCcjamlyYS1zZXR1cHdpemFyZC1zdWJtaXQnKS5jbGljaygpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1dhaXRpbmcgZm9yIHRoZSBhZG1pbmlzdHJhdG9yIGFjY291bnQgc2V0dXAgd2l6YXJkIHRvIGxvYWQuLi4g4o+zJyk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLndhaXRGb3JTZWxlY3RvcignZm9ybVthY3Rpb249XCJTZXR1cEFkbWluQWNjb3VudC5qc3BhXCJdJywgeyB0aW1lb3V0OiA1ICogNjAgKiAxMDAwIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNldCB1cCBhZG1pbmlzdHJhdG9yIGFjY291bnRcbiAgICAgICAgY29uc3QgbXVzdFNldHVwQWRtaW5BY2NvdW50ID0gISFhd2FpdCBwYWdlLiQoJ2Zvcm1bYWN0aW9uPVwiU2V0dXBBZG1pbkFjY291bnQuanNwYVwiXScpO1xuICAgICAgICBpZiAobXVzdFNldHVwQWRtaW5BY2NvdW50KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnU2V0dGluZyB1cCB0aGUgYWRtaW5pc3RyYXRvciBhY2NvdW50Jyk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJ2lucHV0W25hbWU9ZnVsbG5hbWVdJykuZmlsbChvcHRpb25zLmZ1bGxuYW1lKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignaW5wdXRbbmFtZT1lbWFpbF0nKS5maWxsKG9wdGlvbnMuZW1haWwpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCdpbnB1dFtuYW1lPXVzZXJuYW1lXScpLmZpbGwob3B0aW9ucy51c2VybmFtZSk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJ2lucHV0W25hbWU9cGFzc3dvcmRdJykuZmlsbChvcHRpb25zLnBhc3N3b3JkKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignaW5wdXRbbmFtZT1jb25maXJtXScpLmZpbGwob3B0aW9ucy5wYXNzd29yZCk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJyNqaXJhLXNldHVwd2l6YXJkLXN1Ym1pdCcpLmNsaWNrKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnV2FpdGluZyBmb3IgdGhlIGVtYWlsIG5vdGlmaWNhdGlvbiBzZXR1cCB3aXphcmQgdG8gbG9hZC4uLiDij7MnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCdmb3JtW2FjdGlvbj1cIlNldHVwTWFpbE5vdGlmaWNhdGlvbnMuanNwYVwiXScsIHsgdGltZW91dDogNSAqIDYwICogMTAwMCB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXQgdXAgZW1haWwgbm90aWZpY2F0aW9uc1xuICAgICAgICBjb25zdCBtdXN0U2V0dXBFbWFpbE5vdGlmaWNhdGlvbiA9ICEhYXdhaXQgcGFnZS4kKCdmb3JtW2FjdGlvbj1cIlNldHVwTWFpbE5vdGlmaWNhdGlvbnMuanNwYVwiXScpO1xuICAgICAgICBpZiAobXVzdFNldHVwRW1haWxOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZXR0aW5nIHVwIHRoZSBlbWFpbCBub3RpZmljYXRpb24gc2V0dGluZ3MnKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ3VyZUVtYWlsTm90aWZpY2F0aW9ucyA9IG9wdGlvbnMuY29uZmlndXJlRW1haWwgPT09ICdsYXRlcicgPyAnZGlzYWJsZWQnIDogJ2VuYWJsZWQnO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKGBsYWJlbFtmb3I9amlyYS1zZXR1cHdpemFyZC1lbWFpbC1ub3RpZmljYXRpb25zLSR7Y29uZmlndXJlRW1haWxOb3RpZmljYXRpb25zfV1gKS5jbGljaygpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCcjamlyYS1zZXR1cHdpemFyZC1zdWJtaXQnKS5jbGljaygpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1dhaXRpbmcgZm9yIHRoZSBsYW5ndWFnZSBjaG9vc2VyIHRvIGxvYWQuLi4g4o+zJyk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLndhaXRGb3JTZWxlY3RvcignI2Nob29zZS1sYW5ndWFnZS1mb3JtJywgeyB0aW1lb3V0OiA1ICogNjAgKiAxMDAwIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdlbGNvbWUgdG8gSmlyYSwgQWRtaW5pc3RyYXRvciFcbiAgICAgICAgY29uc3QgbXVzdFNldHVwTGFuZ3VhZ2UgPSAhIWF3YWl0IHBhZ2UuJCgnI2Nob29zZS1sYW5ndWFnZS1mb3JtJyk7XG4gICAgICAgIGlmIChtdXN0U2V0dXBMYW5ndWFnZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1NldHRpbmcgdXAgdGhlIGxhbmd1YWdlIGZvciB0aGUgYWRtaW5pc3RyYXRvciBhY2NvdW50Jyk7XG4gICAgICAgICAgICBjb25zdCBsYW5ndWFnZVNlbGVjdG9yID0gIW9wdGlvbnMubGFuZ3VhZ2UgfHwgb3B0aW9ucy5sYW5ndWFnZSA9PT0gJ2VuLVVTJyA/ICdsb2NhbGVfLTEnIDogYGxvY2FsZV8ke29wdGlvbnMubGFuZ3VhZ2V9YDtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcihgbGFiZWxbZm9yPSR7bGFuZ3VhZ2VTZWxlY3Rvcn1dYCkuY2xpY2soKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignI25leHQnKS5jbGljaygpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1dhaXRpbmcgZm9yIHRoZSBhdmF0YXIgc2V0dXAgd2l6YXJkIHRvIGxvYWQuLi4g4o+zJyk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLndhaXRGb3JTZWxlY3RvcignLm9uYm9hcmRpbmctc2VxdWVuY2UtYXZhdGFyLXBpY2tlcicsIHsgdGltZW91dDogNSAqIDYwICogMTAwMCB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtdXN0U2V0dXBBdmF0YXIgPSAhIWF3YWl0IHBhZ2UuJCgnLm9uYm9hcmRpbmctc2VxdWVuY2UtYXZhdGFyLXBpY2tlcicpO1xuICAgICAgICBpZiAobXVzdFNldHVwQXZhdGFyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnU2V0dGluZyB1cCB0aGUgYXZhdGFyIGZvciB0aGUgYWRtaW5pc3RyYXRvciBhY2NvdW50Jyk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJ2lucHV0LmF2YXRhci1waWNrZXItZG9uZScpLmNsaWNrKCk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLndhaXRGb3JTZWxlY3RvcignI29uYm9hcmRpbmcnLCB7IHRpbWVvdXQ6IDUgKiA2MCAqIDEwMDAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2UncmUgZG9uZSBoZXJlLCBsZXQncyB3cmFwIHRoaW5ncyB1cFxuICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgYXV0b21hdGVkIGluaXRpYWwgc2V0dXAgb2YgQXRsYXNzaWFuIEppcmEg8J+SqmApO1xuICAgICAgICBhd2FpdCBwYWdlLmNsb3NlKCk7XG4gICAgICAgIGF3YWl0IGJyb3dzZXIuY2xvc2UoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGF1dG9tYXRpY2FsbHkgc2V0dXAgQXRsYXNzaWFuIEppcmEnKTtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn07XG5jb25zdCBzZXR1cENvbmZsdWVuY2UgPSBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIExhdW5jaCBHb29nbGUgQ2hyb21lXG4gICAgICAgIGNvbnN0IGJyb3dzZXIgPSBhd2FpdCBwdXBwZXRlZXIubGF1bmNoKCk7XG4gICAgICAgIC8vIENyZWF0ZSB0aGUgcGFnZSB2aWV3XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCBicm93c2VyLm5ld1BhZ2UoKTtcbiAgICAgICAgYXdhaXQgcGFnZS5zZXRWaWV3cG9ydCh7IHdpZHRoOiAxMDgwLCBoZWlnaHQ6IDEwMjQgfSk7XG4gICAgICAgIC8vIE9wZW4gdGhlIFNldHVwIHBhZ2VcbiAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nIGF1dG9tYXRlZCBpbml0aWFsIHNldHVwIG9mIEF0bGFzc2lhbiBDb25mbHVlbmNlIPCfpJZgKTtcbiAgICAgICAgYXdhaXQgcGFnZS5nb3RvKG9wdGlvbnMuYmFzZVVybCwgeyB3YWl0VW50aWw6IFsnZG9tY29udGVudGxvYWRlZCcsICdsb2FkJywgJ25ldHdvcmtpZGxlMCddLCB0aW1lb3V0OiA1ICogNjAgKiAxMDAwIH0pO1xuICAgICAgICAvLyBDaG9vc2UgeW91ciBkZXBsb3ltZW50IHR5cGVcbiAgICAgICAgY29uc3QgbXVzdENob29zZURlcGxveW1lbnRUeXBlID0gISFhd2FpdCBwYWdlLiQoJ2Zvcm1bYWN0aW9uPVwic2V0dXBjbHVzdGVyLmFjdGlvblwiXScpO1xuICAgICAgICBpZiAobXVzdENob29zZURlcGxveW1lbnRUeXBlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnU2V0dGluZyB1cCBkZXBsb3ltZW50IHR5cGUnKTtcbiAgICAgICAgICAgIGNvbnN0IGNsdXN0ZXJpbmdTdGF0dXMgPSBvcHRpb25zLmRlcGxveW1lbnRUeXBlID09PSAnY2x1c3RlcmVkJyA/ICdjbHVzdGVyaW5nRW5hYmxlZCcgOiAnY2x1c3RlcmluZ0Rpc2FibGVkJztcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcihgbGFiZWxbZm9yPSR7Y2x1c3RlcmluZ1N0YXR1c31dYCkuY2xpY2soKTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmRlcGxveW1lbnRUeXBlID09PSAnY2x1c3RlcmVkJykge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGFkZCBjbHVzdGVyIG9wdGlvbnNcbiAgICAgICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJ2J1dHRvbltuYW1lPW5ld0NsdXN0ZXJdJykuY2xpY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignI3NraXAtYnV0dG9uJykuY2xpY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciB0aGUgY29udGVudCBjaG9vc2VyIHBhZ2UgdG8gbG9hZC4uLiDij7MnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCdmb3JtW2FjdGlvbj1cInNldHVwZGF0YS5hY3Rpb25cIl0nLCB7IHRpbWVvdXQ6IDUgKiA2MCAqIDEwMDAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTG9hZCBDb250ZW50XG4gICAgICAgIGNvbnN0IG11c3RMb2FkQ29udGVudCA9ICEhYXdhaXQgcGFnZS4kKCdmb3JtW2FjdGlvbj1cInNldHVwZGF0YS5hY3Rpb25cIl0nKTtcbiAgICAgICAgaWYgKG11c3RMb2FkQ29udGVudCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9hZENvbnRlbnQgPT09ICdleGFtcGxlJykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignI2RlbW9DaG9pY2VGb3JtID4gaW5wdXRbdHlwZT1zdWJtaXRdJykuY2xpY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignI2JsYW5rQ2hvaWNlRm9ybSA+IGlucHV0W3R5cGU9c3VibWl0XScpLmNsaWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnV2FpdGluZyBmb3IgdGhlIHVzZXIgbWFuYWdlbWVudCBjb25maWd1cmF0aW9uIHBhZ2UgdG8gbG9hZC4uLiDij7MnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCdmb3JtW2FjdGlvbj1cInNldHVwdXNlcm1hbmFnZW1lbnRjaG9pY2UuYWN0aW9uXCJdJywgeyB0aW1lb3V0OiA1ICogNjAgKiAxMDAwIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIENvbmZpZ3VyZSBVc2VyIE1hbmFnZW1lbnRcbiAgICAgICAgY29uc3QgbXVzdENvbmZpZ3VyZVVzZXJNYW5hZ2VtZW50ID0gISFhd2FpdCBwYWdlLiQoJ2Zvcm1bYWN0aW9uPVwic2V0dXB1c2VybWFuYWdlbWVudGNob2ljZS5hY3Rpb25cIl0nKTtcbiAgICAgICAgaWYgKG11c3RDb25maWd1cmVVc2VyTWFuYWdlbWVudCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudXNlck1hbmFnZW1lbnQgPT09ICdjb25mbHVlbmNlJykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignI2ludGVybmFsJykuY2xpY2soKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnV2FpdGluZyBmb3IgdGhlIHN5c3RlbSBhZG1pbmlzdHJhdGlvbiBhY2NvdW50IGNvbmZpZ3VyYXRpb24gcGFnZSB0byBsb2FkLi4uIOKPsycpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCdmb3JtW2FjdGlvbj1cInNldHVwYWRtaW5pc3RyYXRvci5hY3Rpb25cIl0nLCB7IHRpbWVvdXQ6IDUgKiA2MCAqIDEwMDAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJyNqYWFjcycpLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1dhaXRpbmcgZm9yIHRoZSBDb25uZWN0IHRvIEppcmEgcGFnZSB0byBsb2FkLi4uIOKPsycpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCdmb3JtW2FjdGlvbj1cImNvbm5lY3R0b2ppcmEuYWN0aW9uXCJdJywgeyB0aW1lb3V0OiA1ICogNjAgKiAxMDAwIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIENvbmZpZ3VyZSBTeXN0ZW0gQWRtaW5pc3RyYXRvciBBY2NvdW50XG4gICAgICAgIGNvbnN0IG11c3RDb25maWd1cmVBZG1pbmlzdHJhdG9yQWNjb3VudCA9ICEhYXdhaXQgcGFnZS4kKCdmb3JtW2FjdGlvbj1cInNldHVwYWRtaW5pc3RyYXRvci5hY3Rpb25cIl0nKTtcbiAgICAgICAgaWYgKG11c3RDb25maWd1cmVBZG1pbmlzdHJhdG9yQWNjb3VudCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0NvbmZpZ3VyaW5nIHRoZSBhZG1pbmlzdHJhdG9yIGFjY291bnQnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignaW5wdXRbbmFtZT11c2VybmFtZV0nKS5maWxsKG9wdGlvbnMudXNlcm5hbWUpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCdpbnB1dFtuYW1lPWZ1bGxOYW1lXScpLmZpbGwob3B0aW9ucy5mdWxsTmFtZSk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJ2lucHV0W25hbWU9ZW1haWxdJykuZmlsbChvcHRpb25zLmVtYWlsKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignaW5wdXRbbmFtZT1wYXNzd29yZF0nKS5maWxsKG9wdGlvbnMucGFzc3dvcmQpO1xuICAgICAgICAgICAgYXdhaXQgcGFnZS5sb2NhdG9yKCdpbnB1dFtuYW1lPWNvbmZpcm1dJykuZmlsbChvcHRpb25zLnBhc3N3b3JkKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2UubG9jYXRvcignI3NldHVwLW5leHQtYnV0dG9uJykuY2xpY2soKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciB0aGUgc2V0dXAgc3VjY2Vzc2Z1bCBub3RpZmljYXRpb24gdG8gbG9hZC4uLiDij7MnKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCdhLmZpbmlzaEFjdGlvbicsIHsgdGltZW91dDogNSAqIDYwICogMTAwMCB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtdXN0RmluaXNoU2V0dXAgPSAhIWF3YWl0IHBhZ2UuJCgnYS5maW5pc2hBY3Rpb24nKTtcbiAgICAgICAgaWYgKG11c3RGaW5pc2hTZXR1cCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0ZpbmFsaXppbmcgaW5pdGlhbCBDb25mbHVlbmNlIHNldHVwJyk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLmxvY2F0b3IoJ2EuZmluaXNoQWN0aW9uJykuY2xpY2soKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciB0aGUgaW5pdGlhbCBzcGFjZSBjcmVhdGlvbiBmb3JtIHRvIGxvYWQuLi4g4o+zJyk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlLndhaXRGb3JTZWxlY3RvcignI2dyb3ctaW50cm8tY3JlYXRlLXNwYWNlJywgeyB0aW1lb3V0OiA1ICogNjAgKiAxMDAwIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdlJ3JlIGRvbmUgaGVyZSwgbGV0J3Mgd3JhcCB0aGluZ3MgdXBcbiAgICAgICAgY29uc29sZS5sb2coYEZpbmlzaGVkIGF1dG9tYXRlZCBpbml0aWFsIHNldHVwIG9mIEF0bGFzc2lhbiBDb25mbHVlbmNlIPCfkqpgKTtcbiAgICAgICAgYXdhaXQgcGFnZS5jbG9zZSgpO1xuICAgICAgICBhd2FpdCBicm93c2VyLmNsb3NlKCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBhdXRvbWF0aWNhbGx5IHNldHVwIEF0bGFzc2lhbiBDb25mbHVlbmNlJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59O1xuIiwiZXhwb3J0IGNvbnN0IHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyA9IHtcbiAgICB2aXNpYmxlT3B0aW9uczogKGNtZCkgPT4ge1xuICAgICAgICBsZXQgb3B0aW9ucyA9IGNtZC5vcHRpb25zO1xuICAgICAgICBpZiAoIWNtZC5wYXJlbnQgJiYgb3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kTmFtZSA9IGNtZC5fZGVmYXVsdENvbW1hbmROYW1lO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb21tYW5kTmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kID0gY21kLmNvbW1hbmRzLmZpbmQoaXRlbSA9PiBpdGVtLl9uYW1lID09PSBkZWZhdWx0Q29tbWFuZE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0Q29tbWFuZCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZGVmYXVsdENvbW1hbmQub3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20ob3B0aW9ucyk7XG4gICAgfVxufTtcbiIsIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZGVyLCBPcHRpb24gfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IEFjdGlvbkhhbmRsZXIgfSBmcm9tICcuLi9oZWxwZXJzL0FjdGlvbkhhbmRsZXInO1xuaW1wb3J0IHsgZ2V0Q29uZmlnIH0gZnJvbSAnLi4vaGVscGVycy9nZXRDb25maWcnO1xuaW1wb3J0IHsgc2V0dXBIb3N0IH0gZnJvbSAnLi4vaGVscGVycy9zZXR1cEhvc3QnO1xuaW1wb3J0IHsgc2hvd0hlbHBXaXRoRGVmYXVsdENvbW1hbmRPcHRpb25zIH0gZnJvbSAnLi4vaGVscGVycy9zaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kZXIoKTtcbmNvbnN0IENvbW1hbmQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWN0aW9uOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgZ2V0Q29uZmlnKG9wdGlvbnMuY29uZmlnLCBvcHRpb25zLmN3ZCk7XG4gICAgICAgICAgICBhd2FpdCBzZXR1cEhvc3Qob3B0aW9ucy5wcm9kdWN0LCBjb25maWcpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvckhhbmRsZXI6IGFzeW5jICgpID0+IHtcbiAgICAgICAgfVxuICAgIH07XG59O1xucHJvZ3JhbVxuICAgIC5uYW1lKCdkY2R4IGNvbmZpZ3VyZScpXG4gICAgLmRlc2NyaXB0aW9uKGBBdXRvbWF0ZWQgaW5pdGlhbCBzZXR1cCBvZiB0aGUgaG9zdCBhcHBsaWNhdGlvblxuSWYgeW91IHdpc2ggdG8gcnVuIGEgc3BlY2lmaWMgaG9zdCBhcHBsaWNhdGlvbiwgY2FsbCB0aGlzIGNvbW1hbmQgd2l0aCAnZGNkeCBjb25maWd1cmUgPG5hbWU+J2ApXG4gICAgLmFkZEhlbHBUZXh0KCdhZnRlckFsbCcsICfigIsnKSAvLyB0aGVyZSBpcyBhIG5vbi16ZXJvIHdoaXRlIHNwYWNlIGJlY2F1c2UgdGhlIG9ubHkgcmVhc29uIHRvIGhhdmUgdGhpcyBpcyB0byBmb3JjZSBhIGxpbmUgYnJlYWtcbiAgICAuY29uZmlndXJlSGVscChzaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMpXG4gICAgLmFsbG93VW5rbm93bk9wdGlvbihmYWxzZSlcbiAgICAuYWxsb3dFeGNlc3NBcmd1bWVudHMoZmFsc2UpXG4gICAgLnNob3dIZWxwQWZ0ZXJFcnJvcih0cnVlKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnZGVmYXVsdCcsIHsgaXNEZWZhdWx0OiB0cnVlLCBoaWRkZW46IHRydWUgfSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1wLCAtLXByb2R1Y3QgPG5hbWU+JywgJ1RoZSBuYW1lIG9mIHRoZSBob3N0IGFwcGxpY2F0aW9uJykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMpKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1jLCAtLWNvbmZpZyA8cGF0aD4nLCAnUGF0aCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlJykuZGVmYXVsdCgnZGNkeC5jb25maWcubWpzJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdSwgLS11cmwgPHVybD4nLCAnVGhlIFVSTCBvZiB0aGUgaG9zdCBhcHBsaWNhdGlvbicpLmRlZmF1bHQoJ2h0dHA6Ly9sb2NhbGhvc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZXJlIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24nKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIG9wdGlvbnMpKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZChTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmEpXG4gICAgLmRlc2NyaXB0aW9uKCdBdXRvbWF0ZWQgaW5pdGlhbCBzZXR1cCBvZiBBdGxhc3NpYW4gSmlyYScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctYywgLS1jb25maWcgPHBhdGg+JywgJ1BhdGggdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZScpLmRlZmF1bHQoJ2RjZHguY29uZmlnLm1qcycpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ1RoZSBVUkwgb2YgdGhlIGhvc3QgYXBwbGljYXRpb24nKS5kZWZhdWx0KCdodHRwOi8vbG9jYWxob3N0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVyZSB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSB9KSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlKVxuICAgIC5kZXNjcmlwdGlvbignQXV0b21hdGVkIGluaXRpYWwgc2V0dXAgb2YgQXRsYXNzaWFuIENvbmZsdWVuY2UnKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWMsIC0tY29uZmlnIDxwYXRoPicsICdQYXRoIHRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGUnKS5kZWZhdWx0KCdkY2R4LmNvbmZpZy5tanMnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy11LCAtLXVybCA8dXJsPicsICdUaGUgVVJMIG9mIHRoZSBob3N0IGFwcGxpY2F0aW9uJykuZGVmYXVsdCgnaHR0cDovL2xvY2FsaG9zdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbicpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2UgfSkpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vKVxuICAgIC5kZXNjcmlwdGlvbignQXV0b21hdGVkIGluaXRpYWwgc2V0dXAgb2YgQXRsYXNzaWFuIEJhbWJvbycpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctYywgLS1jb25maWcgPHBhdGg+JywgJ1BhdGggdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZScpLmRlZmF1bHQoJ2RjZHguY29uZmlnLm1qcycpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXUsIC0tdXJsIDx1cmw+JywgJ1RoZSBVUkwgb2YgdGhlIGhvc3QgYXBwbGljYXRpb24nKS5kZWZhdWx0KCdodHRwOi8vbG9jYWxob3N0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVyZSB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vIH0pKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZChTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldClcbiAgICAuZGVzY3JpcHRpb24oJ0F1dG9tYXRlZCBpbml0aWFsIHNldHVwIG9mIEF0bGFzc2lhbiBCaXRidWNrZXQnKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWMsIC0tY29uZmlnIDxwYXRoPicsICdQYXRoIHRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGUnKS5kZWZhdWx0KCdkY2R4LmNvbmZpZy5tanMnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy11LCAtLXVybCA8dXJsPicsICdUaGUgVVJMIG9mIHRoZSBob3N0IGFwcGxpY2F0aW9uJykuZGVmYXVsdCgnaHR0cDovL2xvY2FsaG9zdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbicpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCB9KSk7XG5wcm9ncmFtLnBhcnNlQXN5bmMoKS5jYXRjaCgoKSA9PiBncmFjZWZ1bEV4aXQoMSkpO1xucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCB0ZXJtIHNpZ25hbCwgdHJ5aW5nIHRvIHN0b3AgZ3JhY2VmdWxseSDwn5KqYCk7XG4gICAgZ3JhY2VmdWxFeGl0KCk7XG59KTtcbiJdLCJuYW1lcyI6WyJDb21tYW5kZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVPLE1BQU0sYUFBYSxHQUFHLE9BQU8sT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFB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RSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDeEMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDeEMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDeEMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDckMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDckMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDdkMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUN0QixDQUFDLENBQUMsQ0FBQztBQUM4QixlQUFlLENBQUMsTUFBTSxDQUFDO0FBQ3hELElBQUksSUFBSSxFQUFFLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUMxSixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDekgsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFD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