@ha-bits/bit-email 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -6,14 +6,10 @@
6
6
  */
7
7
  interface EmailContext {
8
8
  auth?: {
9
- imapHost?: string;
10
- imapPort?: number;
11
- imapUser?: string;
12
- imapPassword?: string;
13
- smtpHost?: string;
14
- smtpPort?: number;
15
- smtpUser?: string;
16
- smtpPassword?: string;
9
+ host?: string;
10
+ port?: number;
11
+ user?: string;
12
+ password?: string;
17
13
  };
18
14
  propsValue: Record<string, any>;
19
15
  }
@@ -40,44 +36,22 @@ declare const emailBit: {
40
36
  description: string;
41
37
  required: boolean;
42
38
  props: {
43
- imapHost: {
39
+ host: {
44
40
  type: string;
45
41
  displayName: string;
46
42
  required: boolean;
47
43
  };
48
- imapPort: {
44
+ port: {
49
45
  type: string;
50
46
  displayName: string;
51
47
  required: boolean;
52
- defaultValue: number;
53
48
  };
54
- imapUser: {
49
+ user: {
55
50
  type: string;
56
51
  displayName: string;
57
52
  required: boolean;
58
53
  };
59
- imapPassword: {
60
- type: string;
61
- displayName: string;
62
- required: boolean;
63
- };
64
- smtpHost: {
65
- type: string;
66
- displayName: string;
67
- required: boolean;
68
- };
69
- smtpPort: {
70
- type: string;
71
- displayName: string;
72
- required: boolean;
73
- defaultValue: number;
74
- };
75
- smtpUser: {
76
- type: string;
77
- displayName: string;
78
- required: boolean;
79
- };
80
- smtpPassword: {
54
+ password: {
81
55
  type: string;
82
56
  displayName: string;
83
57
  required: boolean;
@@ -409,44 +383,22 @@ export declare const email: {
409
383
  description: string;
410
384
  required: boolean;
411
385
  props: {
412
- imapHost: {
413
- type: string;
414
- displayName: string;
415
- required: boolean;
416
- };
417
- imapPort: {
418
- type: string;
419
- displayName: string;
420
- required: boolean;
421
- defaultValue: number;
422
- };
423
- imapUser: {
424
- type: string;
425
- displayName: string;
426
- required: boolean;
427
- };
428
- imapPassword: {
429
- type: string;
430
- displayName: string;
431
- required: boolean;
432
- };
433
- smtpHost: {
386
+ host: {
434
387
  type: string;
435
388
  displayName: string;
436
389
  required: boolean;
437
390
  };
438
- smtpPort: {
391
+ port: {
439
392
  type: string;
440
393
  displayName: string;
441
394
  required: boolean;
442
- defaultValue: number;
443
395
  };
444
- smtpUser: {
396
+ user: {
445
397
  type: string;
446
398
  displayName: string;
447
399
  required: boolean;
448
400
  };
449
- smtpPassword: {
401
+ password: {
450
402
  type: string;
451
403
  displayName: string;
452
404
  required: boolean;
package/dist/index.js CHANGED
@@ -146,17 +146,13 @@ const emailBit = {
146
146
  auth: {
147
147
  type: 'CUSTOM',
148
148
  displayName: 'Email Credentials',
149
- description: 'IMAP and SMTP server credentials',
149
+ description: 'Email server credentials',
150
150
  required: false,
151
151
  props: {
152
- imapHost: { type: 'SHORT_TEXT', displayName: 'IMAP Host', required: false },
153
- imapPort: { type: 'NUMBER', displayName: 'IMAP Port', required: false, defaultValue: 993 },
154
- imapUser: { type: 'SHORT_TEXT', displayName: 'IMAP Username', required: false },
155
- imapPassword: { type: 'SECRET_TEXT', displayName: 'IMAP Password', required: false },
156
- smtpHost: { type: 'SHORT_TEXT', displayName: 'SMTP Host', required: false },
157
- smtpPort: { type: 'NUMBER', displayName: 'SMTP Port', required: false, defaultValue: 587 },
158
- smtpUser: { type: 'SHORT_TEXT', displayName: 'SMTP Username', required: false },
159
- smtpPassword: { type: 'SECRET_TEXT', displayName: 'SMTP Password', required: false },
152
+ host: { type: 'SHORT_TEXT', displayName: 'Host', required: false },
153
+ port: { type: 'NUMBER', displayName: 'Port', required: false },
154
+ user: { type: 'SHORT_TEXT', displayName: 'Username', required: false },
155
+ password: { type: 'SECRET_TEXT', displayName: 'Password', required: false },
160
156
  }
161
157
  },
162
158
  triggers: {
@@ -218,10 +214,10 @@ const emailBit = {
218
214
  },
219
215
  async run(context) {
220
216
  const { imapHost, imapPort = 993, imapUser, imapPassword, folder = 'INBOX', unreadOnly = true, limit = 10 } = context.propsValue;
221
- const host = context.auth?.imapHost || imapHost;
222
- const port = context.auth?.imapPort || imapPort;
223
- const user = context.auth?.imapUser || imapUser;
224
- const password = context.auth?.imapPassword || imapPassword;
217
+ const host = context.auth?.host || imapHost;
218
+ const port = context.auth?.port || imapPort;
219
+ const user = context.auth?.user || imapUser;
220
+ const password = context.auth?.password || imapPassword;
225
221
  if (!host || !user || !password) {
226
222
  throw new Error('IMAP credentials are required');
227
223
  }
@@ -379,10 +375,10 @@ const emailBit = {
379
375
  },
380
376
  async run(context) {
381
377
  const { imapHost, imapPort = 993, imapUser, imapPassword, folder = 'INBOX', unreadOnly = false, limit = 10 } = context.propsValue;
382
- const host = context.auth?.imapHost || imapHost;
383
- const port = context.auth?.imapPort || imapPort;
384
- const user = context.auth?.imapUser || imapUser;
385
- const password = context.auth?.imapPassword || imapPassword;
378
+ const host = context.auth?.host || imapHost;
379
+ const port = context.auth?.port || imapPort;
380
+ const user = context.auth?.user || imapUser;
381
+ const password = context.auth?.password || imapPassword;
386
382
  if (!host || !user || !password) {
387
383
  throw new Error('IMAP credentials are required');
388
384
  }
@@ -479,10 +475,10 @@ const emailBit = {
479
475
  },
480
476
  async run(context) {
481
477
  const { smtpHost, smtpPort = 587, smtpUser, smtpPassword, from, to, subject, body, html, cc, bcc, replyTo } = context.propsValue;
482
- const host = context.auth?.smtpHost || smtpHost;
483
- const port = context.auth?.smtpPort || smtpPort;
484
- const user = context.auth?.smtpUser || smtpUser;
485
- const password = context.auth?.smtpPassword || smtpPassword;
478
+ const host = context.auth?.host || smtpHost;
479
+ const port = context.auth?.port || smtpPort;
480
+ const user = context.auth?.user || smtpUser;
481
+ const password = context.auth?.password || smtpPassword;
486
482
  if (!host || !user || !password) {
487
483
  throw new Error('SMTP credentials are required');
488
484
  }
@@ -572,4 +568,4 @@ const emailBit = {
572
568
  };
573
569
  exports.email = emailBit;
574
570
  exports.default = emailBit;
575
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOzs7QUFFSCx1Q0FBb0M7QUE4QnBDOztHQUVHO0FBQ0gsS0FBSyxVQUFVLGVBQWUsQ0FDNUIsSUFBWSxFQUNaLElBQVksRUFDWixJQUFZLEVBQ1osUUFBZ0IsRUFDaEIsU0FBaUIsT0FBTyxFQUN4QixRQUFnQixFQUFFLEVBQ2xCLGFBQXNCLElBQUk7SUFFMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLE1BQU0sWUFBWSxLQUFLLGlCQUFpQixVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBRTVGLE1BQU0sTUFBTSxHQUFHLElBQUksbUJBQVEsQ0FBQztRQUMxQixJQUFJO1FBQ0osSUFBSTtRQUNKLE1BQU0sRUFBRSxJQUFJLEtBQUssR0FBRztRQUNwQixJQUFJLEVBQUU7WUFDSixJQUFJO1lBQ0osSUFBSSxFQUFFLFFBQVE7U0FDZjtRQUNELE1BQU0sRUFBRSxLQUFLO0tBQ2QsQ0FBQyxDQUFDO0lBRUgsTUFBTSxNQUFNLEdBQW1CLEVBQUUsQ0FBQztJQUVsQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFFL0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQztZQUNILHFCQUFxQjtZQUNyQixNQUFNLFdBQVcsR0FBUSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFFOUQsc0JBQXNCO1lBQ3RC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b0JBQzVCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRTtvQkFDcEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRTtvQkFDdEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7b0JBQzVDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2lCQUNqRSxDQUFDO1lBQ0osQ0FBQztTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBRVcsUUFBQSxLQUFLLEdBQUcsUUFBUSxDQUFDO0FBQzlCLGtCQUFlLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGhhLWJpdHMvYml0LWVtYWlsXG4gKiBcbiAqIEVtYWlsIGludGVncmF0aW9uIGJpdCBmb3IgSU1BUCBmZXRjaGluZyBhbmQgU01UUCBzZW5kaW5nLlxuICogUHJvdmlkZXMgdHJpZ2dlcnMgZm9yIG5ldyBlbWFpbHMgYW5kIGFjdGlvbnMgZm9yIHNlbmRpbmcgZW1haWxzLlxuICovXG5cbmltcG9ydCB7IEltYXBGbG93IH0gZnJvbSAnaW1hcGZsb3cnO1xuXG5pbnRlcmZhY2UgRW1haWxDb250ZXh0IHtcbiAgYXV0aD86IHtcbiAgICBpbWFwSG9zdD86IHN0cmluZztcbiAgICBpbWFwUG9ydD86IG51bWJlcjtcbiAgICBpbWFwVXNlcj86IHN0cmluZztcbiAgICBpbWFwUGFzc3dvcmQ/OiBzdHJpbmc7XG4gICAgc210cEhvc3Q/OiBzdHJpbmc7XG4gICAgc210cFBvcnQ/OiBudW1iZXI7XG4gICAgc210cFVzZXI/OiBzdHJpbmc7XG4gICAgc210cFBhc3N3b3JkPzogc3RyaW5nO1xuICB9O1xuICBwcm9wc1ZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5pbnRlcmZhY2UgRW1haWxNZXNzYWdlIHtcbiAgaWQ6IHN0cmluZztcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICBzdWJqZWN0OiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgZGF0ZTogc3RyaW5nO1xuICBhdHRhY2htZW50cz86IEFycmF5PHtcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gICAgc2l6ZTogbnVtYmVyO1xuICB9Pjtcbn1cblxuLyoqXG4gKiBGZXRjaCBlbWFpbHMgZnJvbSBJTUFQIHNlcnZlciB1c2luZyBpbWFwZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBmZXRjaEltYXBFbWFpbHMoXG4gIGhvc3Q6IHN0cmluZyxcbiAgcG9ydDogbnVtYmVyLFxuICB1c2VyOiBzdHJpbmcsXG4gIHBhc3N3b3JkOiBzdHJpbmcsXG4gIGZvbGRlcjogc3RyaW5nID0gJ0lOQk9YJyxcbiAgbGltaXQ6IG51bWJlciA9IDEwLFxuICB1bnJlYWRPbmx5OiBib29sZWFuID0gdHJ1ZVxuKTogUHJvbWlzZTxFbWFpbE1lc3NhZ2VbXT4ge1xuICBjb25zb2xlLmxvZyhg8J+TpyBJTUFQOiBDb25uZWN0aW5nIHRvICR7aG9zdH06JHtwb3J0fSBhcyAke3VzZXJ9Li4uYCk7XG4gIGNvbnNvbGUubG9nKGDwn5OnIElNQVA6IEZldGNoaW5nIGZyb20gJHtmb2xkZXJ9LCBsaW1pdDogJHtsaW1pdH0sIHVucmVhZE9ubHk6ICR7dW5yZWFkT25seX1gKTtcbiAgXG4gIGNvbnN0IGNsaWVudCA9IG5ldyBJbWFwRmxvdyh7XG4gICAgaG9zdCxcbiAgICBwb3J0LFxuICAgIHNlY3VyZTogcG9ydCA9PT0gOTkzLFxuICAgIGF1dGg6IHtcbiAgICAgIHVzZXIsXG4gICAgICBwYXNzOiBwYXNzd29yZCxcbiAgICB9LFxuICAgIGxvZ2dlcjogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGVtYWlsczogRW1haWxNZXNzYWdlW10gPSBbXTtcblxuICB0cnkge1xuICAgIGF3YWl0IGNsaWVudC5jb25uZWN0KCk7XG4gICAgY29uc29sZS5sb2coYPCfk6cgSU1BUDogQ29ubmVjdGVkIHN1Y2Nlc3NmdWxseWApO1xuXG4gICAgY29uc3QgbG9jayA9IGF3YWl0IGNsaWVudC5nZXRNYWlsYm94TG9jayhmb2xkZXIpO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICAvLyBCdWlsZCBzZWFyY2ggcXVlcnlcbiAgICAgIGNvbnN0IHNlYXJjaFF1ZXJ5OiBhbnkgPSB1bnJlYWRPbmx5ID8geyBzZWVuOiBmYWxzZSB9IDogJ2FsbCc7XG4gICAgICBcbiAgICAgIC8vIFNlYXJjaCBmb3IgbWVzc2FnZXNcbiAgICAgIGNvbnN0IHNlYXJjaFJlc3VsdCA9IGF3YWl0IGNsaWVudC5zZWFyY2goc2VhcmNoUXVlcnksIHsgdWlkOiB0cnVlIH0pO1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSBBcnJheS5pc0FycmF5KHNlYXJjaFJlc3VsdCkgPyBzZWFyY2hSZXN1bHQgOiBbXTtcbiAgICAgIFxuICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhg8J+TpyBJTUFQOiBObyBtZXNzYWdlcyBmb3VuZCBtYXRjaGluZyBjcml0ZXJpYWApO1xuICAgICAgICByZXR1cm4gZW1haWxzO1xuICAgICAgfVxuXG4gICAgICAvLyBHZXQgdGhlIG1vc3QgcmVjZW50IG1lc3NhZ2VzIHVwIHRvIGxpbWl0XG4gICAgICBjb25zdCBtZXNzYWdlc1RvRmV0Y2ggPSBtZXNzYWdlcy5zbGljZSgtbGltaXQpLnJldmVyc2UoKTtcbiAgICAgIGNvbnNvbGUubG9nKGDwn5OnIElNQVA6IEZvdW5kICR7bWVzc2FnZXMubGVuZ3RofSBtZXNzYWdlcywgZmV0Y2hpbmcgJHttZXNzYWdlc1RvRmV0Y2gubGVuZ3RofWApO1xuXG4gICAgICAvLyBGZXRjaCBtZXNzYWdlIGRldGFpbHNcbiAgICAgIGZvciBhd2FpdCAoY29uc3QgbWVzc2FnZSBvZiBjbGllbnQuZmV0Y2gobWVzc2FnZXNUb0ZldGNoLCB7XG4gICAgICAgIHVpZDogdHJ1ZSxcbiAgICAgICAgZW52ZWxvcGU6IHRydWUsXG4gICAgICAgIHNvdXJjZTogdHJ1ZSxcbiAgICAgICAgYm9keVN0cnVjdHVyZTogdHJ1ZSxcbiAgICAgIH0pKSB7XG4gICAgICAgIGNvbnN0IGVudmVsb3BlID0gbWVzc2FnZS5lbnZlbG9wZTtcbiAgICAgICAgaWYgKCFlbnZlbG9wZSkgY29udGludWU7XG4gICAgICAgIFxuICAgICAgICAvLyBQYXJzZSBmcm9tIGFkZHJlc3NcbiAgICAgICAgY29uc3QgZnJvbUFkZHIgPSBlbnZlbG9wZS5mcm9tPy5bMF07XG4gICAgICAgIGNvbnN0IGZyb20gPSBmcm9tQWRkciBcbiAgICAgICAgICA/IChmcm9tQWRkci5uYW1lID8gYCR7ZnJvbUFkZHIubmFtZX0gPCR7ZnJvbUFkZHIuYWRkcmVzc30+YCA6IGZyb21BZGRyLmFkZHJlc3MgfHwgJycpXG4gICAgICAgICAgOiAnJztcbiAgICAgICAgXG4gICAgICAgIC8vIFBhcnNlIHRvIGFkZHJlc3Nlc1xuICAgICAgICBjb25zdCB0b0FkZHJzID0gZW52ZWxvcGUudG8gfHwgW107XG4gICAgICAgIGNvbnN0IHRvID0gdG9BZGRyc1xuICAgICAgICAgIC5tYXAoKGFkZHI6IGFueSkgPT4gYWRkci5uYW1lID8gYCR7YWRkci5uYW1lfSA8JHthZGRyLmFkZHJlc3N9PmAgOiBhZGRyLmFkZHJlc3MgfHwgJycpXG4gICAgICAgICAgLmpvaW4oJywgJyk7XG5cbiAgICAgICAgLy8gRXh0cmFjdCBib2R5IGZyb20gc291cmNlXG4gICAgICAgIGxldCBib2R5ID0gJyc7XG4gICAgICAgIGlmIChtZXNzYWdlLnNvdXJjZSkge1xuICAgICAgICAgIGNvbnN0IHNvdXJjZVN0ciA9IG1lc3NhZ2Uuc291cmNlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgLy8gU2ltcGxlIGV4dHJhY3Rpb24gLSBmaW5kIGJvZHkgYWZ0ZXIgaGVhZGVyc1xuICAgICAgICAgIGNvbnN0IGJvZHlNYXRjaCA9IHNvdXJjZVN0ci5zcGxpdCgvXFxyP1xcblxccj9cXG4vKTtcbiAgICAgICAgICBpZiAoYm9keU1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGJvZHkgPSBib2R5TWF0Y2guc2xpY2UoMSkuam9pbignXFxuXFxuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXh0cmFjdCBhdHRhY2htZW50cyBpbmZvIGZyb20gYm9keVN0cnVjdHVyZVxuICAgICAgICBjb25zdCBhdHRhY2htZW50czogQXJyYXk8eyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50VHlwZTogc3RyaW5nOyBzaXplOiBudW1iZXIgfT4gPSBbXTtcbiAgICAgICAgaWYgKG1lc3NhZ2UuYm9keVN0cnVjdHVyZSkge1xuICAgICAgICAgIGV4dHJhY3RBdHRhY2htZW50cyhtZXNzYWdlLmJvZHlTdHJ1Y3R1cmUsIGF0dGFjaG1lbnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVtYWlscy5wdXNoKHtcbiAgICAgICAgICBpZDogU3RyaW5nKG1lc3NhZ2UudWlkKSxcbiAgICAgICAgICBmcm9tLFxuICAgICAgICAgIHRvLFxuICAgICAgICAgIHN1YmplY3Q6IGVudmVsb3BlLnN1YmplY3QgfHwgJycsXG4gICAgICAgICAgYm9keSxcbiAgICAgICAgICBkYXRlOiBlbnZlbG9wZS5kYXRlPy50b0lTT1N0cmluZygpIHx8IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IGF0dGFjaG1lbnRzIDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgbG9jay5yZWxlYXNlKCk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGNsaWVudC5sb2dvdXQoKTtcbiAgICBjb25zb2xlLmxvZyhg8J+TpyBJTUFQOiBEaXNjb25uZWN0ZWRgKTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKGDwn5OnIElNQVA6IEZldGNoZWQgJHtlbWFpbHMubGVuZ3RofSBlbWFpbChzKWApO1xuICByZXR1cm4gZW1haWxzO1xufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGV4dHJhY3QgYXR0YWNobWVudCBpbmZvIGZyb20gYm9keVN0cnVjdHVyZVxuICovXG5mdW5jdGlvbiBleHRyYWN0QXR0YWNobWVudHMoXG4gIHN0cnVjdHVyZTogYW55LFxuICBhdHRhY2htZW50czogQXJyYXk8eyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50VHlwZTogc3RyaW5nOyBzaXplOiBudW1iZXIgfT5cbik6IHZvaWQge1xuICBpZiAoIXN0cnVjdHVyZSkgcmV0dXJuO1xuXG4gIC8vIENoZWNrIGlmIHRoaXMgcGFydCBpcyBhbiBhdHRhY2htZW50XG4gIGlmIChzdHJ1Y3R1cmUuZGlzcG9zaXRpb24gPT09ICdhdHRhY2htZW50JyB8fCBcbiAgICAgIChzdHJ1Y3R1cmUuZGlzcG9zaXRpb24gPT09ICdpbmxpbmUnICYmIHN0cnVjdHVyZS5kaXNwb3NpdGlvblBhcmFtZXRlcnM/LmZpbGVuYW1lKSkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gc3RydWN0dXJlLmRpc3Bvc2l0aW9uUGFyYW1ldGVycz8uZmlsZW5hbWUgfHwgXG4gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUucGFyYW1ldGVycz8ubmFtZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICdhdHRhY2htZW50JztcbiAgICBhdHRhY2htZW50cy5wdXNoKHtcbiAgICAgIGZpbGVuYW1lLFxuICAgICAgY29udGVudFR5cGU6IGAke3N0cnVjdHVyZS50eXBlfS8ke3N0cnVjdHVyZS5zdWJ0eXBlfWAsXG4gICAgICBzaXplOiBzdHJ1Y3R1cmUuc2l6ZSB8fCAwLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gUmVjdXJzZSBpbnRvIGNoaWxkIHBhcnRzXG4gIGlmIChzdHJ1Y3R1cmUuY2hpbGROb2RlcyAmJiBBcnJheS5pc0FycmF5KHN0cnVjdHVyZS5jaGlsZE5vZGVzKSkge1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygc3RydWN0dXJlLmNoaWxkTm9kZXMpIHtcbiAgICAgIGV4dHJhY3RBdHRhY2htZW50cyhjaGlsZCwgYXR0YWNobWVudHMpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFNpbXVsYXRlIFNNVFAgc2VuZCAoaW4gcmVhbCBpbXBsZW1lbnRhdGlvbiwgdXNlIG5vZGVtYWlsZXIgb3Igc2ltaWxhcilcbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2VuZFNtdHBFbWFpbChcbiAgaG9zdDogc3RyaW5nLFxuICBwb3J0OiBudW1iZXIsXG4gIHVzZXI6IHN0cmluZyxcbiAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgZnJvbTogc3RyaW5nLFxuICB0bzogc3RyaW5nLFxuICBzdWJqZWN0OiBzdHJpbmcsXG4gIGJvZHk6IHN0cmluZyxcbiAgaHRtbD86IHN0cmluZyxcbiAgYXR0YWNobWVudHM/OiBBcnJheTx7IGZpbGVuYW1lOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB8IEJ1ZmZlciB9PlxuKTogUHJvbWlzZTx7IG1lc3NhZ2VJZDogc3RyaW5nOyBhY2NlcHRlZDogc3RyaW5nW10gfT4ge1xuICBjb25zb2xlLmxvZyhg8J+TpCBTTVRQOiBDb25uZWN0aW5nIHRvICR7aG9zdH06JHtwb3J0fSBhcyAke3VzZXJ9Li4uYCk7XG4gIGNvbnNvbGUubG9nKGDwn5OkIFNNVFA6IFNlbmRpbmcgZnJvbSAke2Zyb219IHRvICR7dG99YCk7XG4gIGNvbnNvbGUubG9nKGDwn5OkIFNNVFA6IFN1YmplY3Q6ICR7c3ViamVjdH1gKTtcbiAgXG4gIC8vIEluIHByb2R1Y3Rpb24sIHRoaXMgd291bGQgdXNlIG5vZGVtYWlsZXJcbiAgLy8gRm9yIG5vdywgcmV0dXJuIG1vY2sgcmVzcG9uc2VcbiAgY29uc3QgbWVzc2FnZUlkID0gYDwke0RhdGUubm93KCl9LiR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDcpfUBoYWJpdHMubG9jYWw+YDtcbiAgXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZUlkLFxuICAgIGFjY2VwdGVkOiBbdG9dXG4gIH07XG59XG5cbmNvbnN0IGVtYWlsQml0ID0ge1xuICBkaXNwbGF5TmFtZTogJ0VtYWlsIChJTUFQL1NNVFApJyxcbiAgZGVzY3JpcHRpb246ICdFbWFpbCBpbnRlZ3JhdGlvbiBmb3IgZmV0Y2hpbmcgKElNQVApIGFuZCBzZW5kaW5nIChTTVRQKSBlbWFpbHMnLFxuICBsb2dvVXJsOiAnbHVjaWRlOk1haWwnLFxuICBcbiAgYXV0aDoge1xuICAgIHR5cGU6ICdDVVNUT00nLFxuICAgIGRpc3BsYXlOYW1lOiAnRW1haWwgQ3JlZGVudGlhbHMnLFxuICAgIGRlc2NyaXB0aW9uOiAnSU1BUCBhbmQgU01UUCBzZXJ2ZXIgY3JlZGVudGlhbHMnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBwcm9wczoge1xuICAgICAgaW1hcEhvc3Q6IHsgdHlwZTogJ1NIT1JUX1RFWFQnLCBkaXNwbGF5TmFtZTogJ0lNQVAgSG9zdCcsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgaW1hcFBvcnQ6IHsgdHlwZTogJ05VTUJFUicsIGRpc3BsYXlOYW1lOiAnSU1BUCBQb3J0JywgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0VmFsdWU6IDk5MyB9LFxuICAgICAgaW1hcFVzZXI6IHsgdHlwZTogJ1NIT1JUX1RFWFQnLCBkaXNwbGF5TmFtZTogJ0lNQVAgVXNlcm5hbWUnLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgIGltYXBQYXNzd29yZDogeyB0eXBlOiAnU0VDUkVUX1RFWFQnLCBkaXNwbGF5TmFtZTogJ0lNQVAgUGFzc3dvcmQnLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgIHNtdHBIb3N0OiB7IHR5cGU6ICdTSE9SVF9URVhUJywgZGlzcGxheU5hbWU6ICdTTVRQIEhvc3QnLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgIHNtdHBQb3J0OiB7IHR5cGU6ICdOVU1CRVInLCBkaXNwbGF5TmFtZTogJ1NNVFAgUG9ydCcsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdFZhbHVlOiA1ODcgfSxcbiAgICAgIHNtdHBVc2VyOiB7IHR5cGU6ICdTSE9SVF9URVhUJywgZGlzcGxheU5hbWU6ICdTTVRQIFVzZXJuYW1lJywgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICBzbXRwUGFzc3dvcmQ6IHsgdHlwZTogJ1NFQ1JFVF9URVhUJywgZGlzcGxheU5hbWU6ICdTTVRQIFBhc3N3b3JkJywgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgfVxuICB9LFxuICBcbiAgdHJpZ2dlcnM6IHtcbiAgICAvKipcbiAgICAgKiBJTUFQIHRyaWdnZXIgLSBmZXRjaCBuZXcgZW1haWxzXG4gICAgICovXG4gICAgbmV3RW1haWw6IHtcbiAgICAgIG5hbWU6ICduZXdFbWFpbCcsXG4gICAgICBkaXNwbGF5TmFtZTogJ05ldyBFbWFpbCAoSU1BUCknLFxuICAgICAgZGVzY3JpcHRpb246ICdUcmlnZ2VyIHdoZW4gbmV3IGVtYWlscyBhcnJpdmUgaW4gdGhlIG1haWxib3gnLFxuICAgICAgdHlwZTogJ1BPTExJTkcnLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgaW1hcEhvc3Q6IHtcbiAgICAgICAgICB0eXBlOiAnU0hPUlRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdJTUFQIEhvc3QnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSU1BUCBzZXJ2ZXIgaG9zdG5hbWUgKGUuZy4sIGltYXAuZ21haWwuY29tKScsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGltYXBQb3J0OiB7XG4gICAgICAgICAgdHlwZTogJ05VTUJFUicsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdJTUFQIFBvcnQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSU1BUCBzZXJ2ZXIgcG9ydCAoZGVmYXVsdDogOTkzIGZvciBTU0wpJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiA5OTMsXG4gICAgICAgIH0sXG4gICAgICAgIGltYXBVc2VyOiB7XG4gICAgICAgICAgdHlwZTogJ1NIT1JUX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnVXNlcm5hbWUnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgYWRkcmVzcyBvciB1c2VybmFtZScsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGltYXBQYXNzd29yZDoge1xuICAgICAgICAgIHR5cGU6ICdTRUNSRVRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdQYXNzd29yZCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdFbWFpbCBwYXNzd29yZCBvciBhcHAtc3BlY2lmaWMgcGFzc3dvcmQnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBmb2xkZXI6IHtcbiAgICAgICAgICB0eXBlOiAnU0hPUlRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdGb2xkZXInLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWFpbGJveCBmb2xkZXIgdG8gbW9uaXRvcicsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ0lOQk9YJyxcbiAgICAgICAgfSxcbiAgICAgICAgdW5yZWFkT25seToge1xuICAgICAgICAgIHR5cGU6ICdDSEVDS0JPWCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdVbnJlYWQgT25seScsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdPbmx5IGZldGNoIHVucmVhZCBlbWFpbHMnLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgdHlwZTogJ05VTUJFUicsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdMaW1pdCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdNYXhpbXVtIG51bWJlciBvZiBlbWFpbHMgdG8gZmV0Y2gnLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IDEwLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGFzeW5jIHJ1bihjb250ZXh0OiBFbWFpbENvbnRleHQpIHtcbiAgICAgICAgY29uc3QgeyBcbiAgICAgICAgICBpbWFwSG9zdCwgaW1hcFBvcnQgPSA5OTMsIGltYXBVc2VyLCBpbWFwUGFzc3dvcmQsXG4gICAgICAgICAgZm9sZGVyID0gJ0lOQk9YJywgdW5yZWFkT25seSA9IHRydWUsIGxpbWl0ID0gMTBcbiAgICAgICAgfSA9IGNvbnRleHQucHJvcHNWYWx1ZTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGhvc3QgPSBjb250ZXh0LmF1dGg/LmltYXBIb3N0IHx8IGltYXBIb3N0O1xuICAgICAgICBjb25zdCBwb3J0ID0gY29udGV4dC5hdXRoPy5pbWFwUG9ydCB8fCBpbWFwUG9ydDtcbiAgICAgICAgY29uc3QgdXNlciA9IGNvbnRleHQuYXV0aD8uaW1hcFVzZXIgfHwgaW1hcFVzZXI7XG4gICAgICAgIGNvbnN0IHBhc3N3b3JkID0gY29udGV4dC5hdXRoPy5pbWFwUGFzc3dvcmQgfHwgaW1hcFBhc3N3b3JkO1xuICAgICAgICBcbiAgICAgICAgaWYgKCFob3N0IHx8ICF1c2VyIHx8ICFwYXNzd29yZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSU1BUCBjcmVkZW50aWFscyBhcmUgcmVxdWlyZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgZW1haWxzID0gYXdhaXQgZmV0Y2hJbWFwRW1haWxzKFxuICAgICAgICAgIGhvc3QsIE51bWJlcihwb3J0KSwgdXNlciwgcGFzc3dvcmQsXG4gICAgICAgICAgU3RyaW5nKGZvbGRlciksIE51bWJlcihsaW1pdCksIEJvb2xlYW4odW5yZWFkT25seSlcbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5OnIElNQVAgVHJpZ2dlcjogRmV0Y2hlZCAke2VtYWlscy5sZW5ndGh9IGVtYWlsKHMpYCk7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVtYWlscyxcbiAgICAgICAgICBjb3VudDogZW1haWxzLmxlbmd0aCxcbiAgICAgICAgICBmb2xkZXIsXG4gICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIFxuICBhY3Rpb25zOiB7XG4gICAgLyoqXG4gICAgICogTmV3IEVtYWlsIGFjdGlvbiAoZm9yIHdvcmtmbG93IHRlc3RpbmcgLSBzaW11bGF0ZXMgSU1BUCB0cmlnZ2VyIGFzIGFjdGlvbilcbiAgICAgKi9cbiAgICBuZXdFbWFpbDoge1xuICAgICAgbmFtZTogJ25ld0VtYWlsJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnTmV3IEVtYWlsIChJTUFQKScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0ZldGNoIG5ldyBlbWFpbHMgZnJvbSBJTUFQIG1haWxib3ggKGFjdGlvbiB2ZXJzaW9uIG9mIHRyaWdnZXIpJyxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGltYXBIb3N0OiB7XG4gICAgICAgICAgdHlwZTogJ1NIT1JUX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnSU1BUCBIb3N0JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0lNQVAgc2VydmVyIGhvc3RuYW1lJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGltYXBQb3J0OiB7XG4gICAgICAgICAgdHlwZTogJ05VTUJFUicsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdJTUFQIFBvcnQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSU1BUCBzZXJ2ZXIgcG9ydCcsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogOTkzLFxuICAgICAgICB9LFxuICAgICAgICBpbWFwVXNlcjoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1VzZXJuYW1lJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0VtYWlsIGFkZHJlc3Mgb3IgdXNlcm5hbWUnLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW1hcFBhc3N3b3JkOiB7XG4gICAgICAgICAgdHlwZTogJ1NFQ1JFVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1Bhc3N3b3JkJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0VtYWlsIHBhc3N3b3JkJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGZvbGRlcjoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0ZvbGRlcicsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdNYWlsYm94IGZvbGRlcicsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ0lOQk9YJyxcbiAgICAgICAgfSxcbiAgICAgICAgdW5yZWFkT25seToge1xuICAgICAgICAgIHR5cGU6ICdDSEVDS0JPWCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdVbnJlYWQgT25seScsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdPbmx5IGZldGNoIHVucmVhZCBlbWFpbHMnLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgdHlwZTogJ05VTUJFUicsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdMaW1pdCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdNYXhpbXVtIG51bWJlciBvZiBlbWFpbHMnLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IDEwLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGFzeW5jIHJ1bihjb250ZXh0OiBFbWFpbENvbnRleHQpIHtcbiAgICAgICAgY29uc3QgeyBmb2xkZXIgPSAnSU5CT1gnIH0gPSBjb250ZXh0LnByb3BzVmFsdWU7XG4gICAgICAgIFxuICAgICAgICAvLyBSZXR1cm4gbW9jayB0ZXN0IGRhdGEgZm9yIHdvcmtmbG93IHRlc3RpbmdcbiAgICAgICAgY29uc3QgbW9ja0VtYWlsczogRW1haWxNZXNzYWdlW10gPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBlbWFpbF8ke0RhdGUubm93KCl9YCxcbiAgICAgICAgICAgIGZyb206ICdjdXN0b21lckBleGFtcGxlLmNvbScsXG4gICAgICAgICAgICB0bzogJ3N1cHBvcnRAY29tcGFueS5jb20nLFxuICAgICAgICAgICAgc3ViamVjdDogJ0hlbHAgd2l0aCBteSBvcmRlciAjMTIzNDUnLFxuICAgICAgICAgICAgYm9keTogJ0hpLCBJIHBsYWNlZCBhbiBvcmRlciBsYXN0IHdlZWsgYW5kIGhhdmVuXFwndCByZWNlaXZlZCBhbnkgc2hpcHBpbmcgY29uZmlybWF0aW9uLiBDYW4geW91IGhlbHAgbWUgdHJhY2sgaXQ/IE9yZGVyIG51bWJlciBpcyAxMjM0NS4gVGhhbmtzIScsXG4gICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYGVtYWlsXyR7RGF0ZS5ub3coKSArIDF9YCxcbiAgICAgICAgICAgIGZyb206ICdzYWxlcy5pbnF1aXJ5QHByb3NwZWN0LmNvbScsXG4gICAgICAgICAgICB0bzogJ3NhbGVzQGNvbXBhbnkuY29tJyxcbiAgICAgICAgICAgIHN1YmplY3Q6ICdQcmljaW5nIGlucXVpcnkgZm9yIGVudGVycHJpc2UgcGxhbicsXG4gICAgICAgICAgICBib2R5OiAnV2UgYXJlIGludGVyZXN0ZWQgaW4geW91ciBlbnRlcnByaXNlIHByaWNpbmcuIE91ciBjb21wYW55IGhhcyA1MDArIGVtcGxveWVlcy4gUGxlYXNlIHNlbmQgdXMgYSBxdW90ZS4nLFxuICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDM2MDAwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgXG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5OnIE5ldyBFbWFpbCAoTW9jayk6IFJldHVybmluZyAke21vY2tFbWFpbHMubGVuZ3RofSB0ZXN0IGVtYWlscyBmcm9tICR7Zm9sZGVyfWApO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbWFpbHM6IG1vY2tFbWFpbHMsXG4gICAgICAgICAgY291bnQ6IG1vY2tFbWFpbHMubGVuZ3RoLFxuICAgICAgICAgIGZvbGRlcixcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBcbiAgICAvKipcbiAgICAgKiBGZXRjaCBlbWFpbHMgZnJvbSBJTUFQIHNlcnZlclxuICAgICAqL1xuICAgIGZldGNoRW1haWxzOiB7XG4gICAgICBuYW1lOiAnZmV0Y2hFbWFpbHMnLFxuICAgICAgZGlzcGxheU5hbWU6ICdGZXRjaCBFbWFpbHMgKElNQVApJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRmV0Y2ggZW1haWxzIGZyb20gYW4gSU1BUCBtYWlsYm94JyxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGltYXBIb3N0OiB7XG4gICAgICAgICAgdHlwZTogJ1NIT1JUX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnSU1BUCBIb3N0JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0lNQVAgc2VydmVyIGhvc3RuYW1lJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW1hcFBvcnQ6IHtcbiAgICAgICAgICB0eXBlOiAnTlVNQkVSJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0lNQVAgUG9ydCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdJTUFQIHNlcnZlciBwb3J0JyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiA5OTMsXG4gICAgICAgIH0sXG4gICAgICAgIGltYXBVc2VyOiB7XG4gICAgICAgICAgdHlwZTogJ1NIT1JUX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnVXNlcm5hbWUnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgYWRkcmVzcyBvciB1c2VybmFtZScsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGltYXBQYXNzd29yZDoge1xuICAgICAgICAgIHR5cGU6ICdTRUNSRVRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdQYXNzd29yZCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdFbWFpbCBwYXNzd29yZCcsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGZvbGRlcjoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0ZvbGRlcicsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdNYWlsYm94IGZvbGRlciB0byBmZXRjaCBmcm9tJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiAnSU5CT1gnLFxuICAgICAgICB9LFxuICAgICAgICB1bnJlYWRPbmx5OiB7XG4gICAgICAgICAgdHlwZTogJ0NIRUNLQk9YJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1VucmVhZCBPbmx5JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ09ubHkgZmV0Y2ggdW5yZWFkIGVtYWlscycsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgdHlwZTogJ05VTUJFUicsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdMaW1pdCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdNYXhpbXVtIG51bWJlciBvZiBlbWFpbHMgdG8gZmV0Y2gnLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IDEwLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGFzeW5jIHJ1bihjb250ZXh0OiBFbWFpbENvbnRleHQpIHtcbiAgICAgICAgY29uc3QgeyBcbiAgICAgICAgICBpbWFwSG9zdCwgaW1hcFBvcnQgPSA5OTMsIGltYXBVc2VyLCBpbWFwUGFzc3dvcmQsXG4gICAgICAgICAgZm9sZGVyID0gJ0lOQk9YJywgdW5yZWFkT25seSA9IGZhbHNlLCBsaW1pdCA9IDEwXG4gICAgICAgIH0gPSBjb250ZXh0LnByb3BzVmFsdWU7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBob3N0ID0gY29udGV4dC5hdXRoPy5pbWFwSG9zdCB8fCBpbWFwSG9zdDtcbiAgICAgICAgY29uc3QgcG9ydCA9IGNvbnRleHQuYXV0aD8uaW1hcFBvcnQgfHwgaW1hcFBvcnQ7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBjb250ZXh0LmF1dGg/LmltYXBVc2VyIHx8IGltYXBVc2VyO1xuICAgICAgICBjb25zdCBwYXNzd29yZCA9IGNvbnRleHQuYXV0aD8uaW1hcFBhc3N3b3JkIHx8IGltYXBQYXNzd29yZDtcbiAgICAgICAgXG4gICAgICAgIGlmICghaG9zdCB8fCAhdXNlciB8fCAhcGFzc3dvcmQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lNQVAgY3JlZGVudGlhbHMgYXJlIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGVtYWlscyA9IGF3YWl0IGZldGNoSW1hcEVtYWlscyhcbiAgICAgICAgICBob3N0LCBOdW1iZXIocG9ydCksIHVzZXIsIHBhc3N3b3JkLFxuICAgICAgICAgIFN0cmluZyhmb2xkZXIpLCBOdW1iZXIobGltaXQpLCBCb29sZWFuKHVucmVhZE9ubHkpXG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICBjb25zb2xlLmxvZyhg8J+TpyBGZXRjaCBFbWFpbHM6IFJldHJpZXZlZCAke2VtYWlscy5sZW5ndGh9IGVtYWlsKHMpIGZyb20gJHtmb2xkZXJ9YCk7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVtYWlscyxcbiAgICAgICAgICBjb3VudDogZW1haWxzLmxlbmd0aCxcbiAgICAgICAgICBmb2xkZXIsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG4gICAgXG4gICAgLyoqXG4gICAgICogU2VuZCBlbWFpbCB2aWEgU01UUFxuICAgICAqL1xuICAgIHNlbmRFbWFpbDoge1xuICAgICAgbmFtZTogJ3NlbmRFbWFpbCcsXG4gICAgICBkaXNwbGF5TmFtZTogJ1NlbmQgRW1haWwgKFNNVFApJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnU2VuZCBhbiBlbWFpbCB2aWEgU01UUCcsXG4gICAgICBwcm9wczoge1xuICAgICAgICBzbXRwSG9zdDoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1NNVFAgSG9zdCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdTTVRQIHNlcnZlciBob3N0bmFtZSAoZS5nLiwgc210cC5nbWFpbC5jb20pJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc210cFBvcnQ6IHtcbiAgICAgICAgICB0eXBlOiAnTlVNQkVSJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1NNVFAgUG9ydCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdTTVRQIHNlcnZlciBwb3J0ICg1ODcgZm9yIFRMUywgNDY1IGZvciBTU0wpJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiA1ODcsXG4gICAgICAgIH0sXG4gICAgICAgIHNtdHBVc2VyOiB7XG4gICAgICAgICAgdHlwZTogJ1NIT1JUX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnVXNlcm5hbWUnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU01UUCB1c2VybmFtZS9lbWFpbCcsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHNtdHBQYXNzd29yZDoge1xuICAgICAgICAgIHR5cGU6ICdTRUNSRVRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdQYXNzd29yZCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdTTVRQIHBhc3N3b3JkJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0Zyb20nLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU2VuZGVyIGVtYWlsIGFkZHJlc3MnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1RvJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1JlY2lwaWVudCBlbWFpbCBhZGRyZXNzKGVzKSwgY29tbWEtc2VwYXJhdGVkJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2M6IHtcbiAgICAgICAgICB0eXBlOiAnU0hPUlRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdDQycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdDQyByZWNpcGllbnRzIChvcHRpb25hbCknLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmNjOiB7XG4gICAgICAgICAgdHlwZTogJ1NIT1JUX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnQkNDJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0JDQyByZWNpcGllbnRzIChvcHRpb25hbCknLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3ViamVjdDoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1N1YmplY3QnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgc3ViamVjdCBsaW5lJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgIHR5cGU6ICdMT05HX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnQm9keSAoUGxhaW4gVGV4dCknLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgYm9keSBpbiBwbGFpbiB0ZXh0JyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHRtbDoge1xuICAgICAgICAgIHR5cGU6ICdMT05HX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnQm9keSAoSFRNTCknLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgYm9keSBpbiBIVE1MIGZvcm1hdCAob3B0aW9uYWwpJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcGx5VG86IHtcbiAgICAgICAgICB0eXBlOiAnU0hPUlRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdSZXBseS1UbycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdSZXBseS10byBhZGRyZXNzIChvcHRpb25hbCknLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhc3luYyBydW4oY29udGV4dDogRW1haWxDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHsgXG4gICAgICAgICAgc210cEhvc3QsIHNtdHBQb3J0ID0gNTg3LCBzbXRwVXNlciwgc210cFBhc3N3b3JkLFxuICAgICAgICAgIGZyb20sIHRvLCBzdWJqZWN0LCBib2R5LCBodG1sLCBjYywgYmNjLCByZXBseVRvXG4gICAgICAgIH0gPSBjb250ZXh0LnByb3BzVmFsdWU7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBob3N0ID0gY29udGV4dC5hdXRoPy5zbXRwSG9zdCB8fCBzbXRwSG9zdDtcbiAgICAgICAgY29uc3QgcG9ydCA9IGNvbnRleHQuYXV0aD8uc210cFBvcnQgfHwgc210cFBvcnQ7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBjb250ZXh0LmF1dGg/LnNtdHBVc2VyIHx8IHNtdHBVc2VyO1xuICAgICAgICBjb25zdCBwYXNzd29yZCA9IGNvbnRleHQuYXV0aD8uc210cFBhc3N3b3JkIHx8IHNtdHBQYXNzd29yZDtcbiAgICAgICAgXG4gICAgICAgIGlmICghaG9zdCB8fCAhdXNlciB8fCAhcGFzc3dvcmQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NNVFAgY3JlZGVudGlhbHMgYXJlIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmICghZnJvbSB8fCAhdG8gfHwgIXN1YmplY3QgfHwgIWJvZHkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Zyb20sIFRvLCBTdWJqZWN0LCBhbmQgQm9keSBhcmUgcmVxdWlyZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VuZFNtdHBFbWFpbChcbiAgICAgICAgICBob3N0LCBOdW1iZXIocG9ydCksIHVzZXIsIHBhc3N3b3JkLFxuICAgICAgICAgIFN0cmluZyhmcm9tKSwgU3RyaW5nKHRvKSwgU3RyaW5nKHN1YmplY3QpLCBTdHJpbmcoYm9keSksIGh0bWxcbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5OkIFNlbmQgRW1haWw6IE1lc3NhZ2Ugc2VudCB0byAke3RvfWApO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2VJZDogcmVzdWx0Lm1lc3NhZ2VJZCxcbiAgICAgICAgICBhY2NlcHRlZDogcmVzdWx0LmFjY2VwdGVkLFxuICAgICAgICAgIGZyb20sXG4gICAgICAgICAgdG8sXG4gICAgICAgICAgc3ViamVjdCxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBcbiAgICAvKipcbiAgICAgKiBQYXJzZSBlbWFpbCBjb250ZW50XG4gICAgICovXG4gICAgcGFyc2VFbWFpbDoge1xuICAgICAgbmFtZTogJ3BhcnNlRW1haWwnLFxuICAgICAgZGlzcGxheU5hbWU6ICdQYXJzZSBFbWFpbCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0V4dHJhY3Qgc3RydWN0dXJlZCBkYXRhIGZyb20gZW1haWwgY29udGVudCcsXG4gICAgICBwcm9wczoge1xuICAgICAgICByYXdFbWFpbDoge1xuICAgICAgICAgIHR5cGU6ICdMT05HX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnUmF3IEVtYWlsJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1JhdyBlbWFpbCBjb250ZW50IG9yIEpTT04gZW1haWwgb2JqZWN0JyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXh0cmFjdEF0dGFjaG1lbnRzOiB7XG4gICAgICAgICAgdHlwZTogJ0NIRUNLQk9YJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0V4dHJhY3QgQXR0YWNobWVudHMnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSW5jbHVkZSBhdHRhY2htZW50IGluZm9ybWF0aW9uJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhc3luYyBydW4oY29udGV4dDogRW1haWxDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHsgcmF3RW1haWwsIGV4dHJhY3RBdHRhY2htZW50cyB9ID0gY29udGV4dC5wcm9wc1ZhbHVlO1xuICAgICAgICBcbiAgICAgICAgbGV0IGVtYWlsOiBhbnk7XG4gICAgICAgIGlmICh0eXBlb2YgcmF3RW1haWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGVtYWlsID0gSlNPTi5wYXJzZShyYXdFbWFpbCk7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBQYXJzZSBhcyByYXcgZW1haWwgdGV4dCAtIHNpbXBsaWZpZWQgcGFyc2luZ1xuICAgICAgICAgICAgY29uc3QgbGluZXMgPSByYXdFbWFpbC5zcGxpdCgnXFxuJyk7XG4gICAgICAgICAgICBlbWFpbCA9IHtcbiAgICAgICAgICAgICAgc3ViamVjdDogJycsXG4gICAgICAgICAgICAgIGZyb206ICcnLFxuICAgICAgICAgICAgICB0bzogJycsXG4gICAgICAgICAgICAgIGJvZHk6IHJhd0VtYWlsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICAgICAgICBpZiAobGluZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3N1YmplY3Q6JykpIHtcbiAgICAgICAgICAgICAgICBlbWFpbC5zdWJqZWN0ID0gbGluZS5zdWJzdHJpbmcoOCkudHJpbSgpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdmcm9tOicpKSB7XG4gICAgICAgICAgICAgICAgZW1haWwuZnJvbSA9IGxpbmUuc3Vic3RyaW5nKDUpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChsaW5lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndG86JykpIHtcbiAgICAgICAgICAgICAgICBlbWFpbC50byA9IGxpbmUuc3Vic3RyaW5nKDMpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbWFpbCA9IHJhd0VtYWlsO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zb2xlLmxvZyhg8J+TpyBQYXJzZSBFbWFpbDogRXh0cmFjdGVkIGZyb20gJHtlbWFpbC5mcm9tIHx8ICd1bmtub3duJ31gKTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZnJvbTogZW1haWwuZnJvbSB8fCAnJyxcbiAgICAgICAgICB0bzogZW1haWwudG8gfHwgJycsXG4gICAgICAgICAgc3ViamVjdDogZW1haWwuc3ViamVjdCB8fCAnJyxcbiAgICAgICAgICBib2R5OiBlbWFpbC5ib2R5IHx8IGVtYWlsLnRleHQgfHwgJycsXG4gICAgICAgICAgaHRtbDogZW1haWwuaHRtbCB8fCAnJyxcbiAgICAgICAgICBkYXRlOiBlbWFpbC5kYXRlIHx8IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBhdHRhY2htZW50czogZXh0cmFjdEF0dGFjaG1lbnRzID8gKGVtYWlsLmF0dGFjaG1lbnRzIHx8IFtdKSA6IFtdLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGVtYWlsID0gZW1haWxCaXQ7XG5leHBvcnQgZGVmYXVsdCBlbWFpbEJpdDtcbiJdfQ==
571
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOzs7QUFFSCx1Q0FBb0M7QUEwQnBDOztHQUVHO0FBQ0gsS0FBSyxVQUFVLGVBQWUsQ0FDNUIsSUFBWSxFQUNaLElBQVksRUFDWixJQUFZLEVBQ1osUUFBZ0IsRUFDaEIsU0FBaUIsT0FBTyxFQUN4QixRQUFnQixFQUFFLEVBQ2xCLGFBQXNCLElBQUk7SUFFMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLE1BQU0sWUFBWSxLQUFLLGlCQUFpQixVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBRTVGLE1BQU0sTUFBTSxHQUFHLElBQUksbUJBQVEsQ0FBQztRQUMxQixJQUFJO1FBQ0osSUFBSTtRQUNKLE1BQU0sRUFBRSxJQUFJLEtBQUssR0FBRztRQUNwQixJQUFJLEVBQUU7WUFDSixJQUFJO1lBQ0osSUFBSSxFQUFFLFFBQVE7U0FDZjtRQUNELE1BQU0sRUFBRSxLQUFLO0tBQ2QsQ0FBQyxDQUFDO0lBRUgsTUFBTSxNQUFNLEdBQW1CLEVBQUUsQ0FBQztJQUVsQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFFL0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQztZQUNILHFCQUFxQjtZQUNyQixNQUFNLFdBQVcsR0FBUSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFFOUQsc0JBQXNCO1lBQ3RCLE1BQU0sWUFBWSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNyRSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUVqRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOENBQThDLENBQUMsQ0FBQztnQkFDNUQsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUVELDJDQUEyQztZQUMzQyxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsUUFBUSxDQUFDLE1BQU0sdUJBQXVCLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBRTlGLHdCQUF3QjtZQUN4QixJQUFJLEtBQUssRUFBRSxNQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtnQkFDeEQsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsTUFBTSxFQUFFLElBQUk7Z0JBQ1osYUFBYSxFQUFFLElBQUk7YUFDcEIsQ0FBQyxFQUFFLENBQUM7Z0JBQ0gsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFFBQVE7b0JBQUUsU0FBUztnQkFFeEIscUJBQXFCO2dCQUNyQixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sSUFBSSxHQUFHLFFBQVE7b0JBQ25CLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO29CQUNyRixDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUVQLHFCQUFxQjtnQkFDckIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sRUFBRSxHQUFHLE9BQU87cUJBQ2YsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztxQkFDckYsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUVkLDJCQUEyQjtnQkFDM0IsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNkLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNuQixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUM1Qyw4Q0FBOEM7b0JBQzlDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ2hELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDekIsSUFBSSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN6QyxDQUFDO2dCQUNILENBQUM7Z0JBRUQsOENBQThDO2dCQUM5QyxNQUFNLFdBQVcsR0FBbUUsRUFBRSxDQUFDO2dCQUN2RixJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDMUIsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDekQsQ0FBQztnQkFFRCxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNWLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztvQkFDdkIsSUFBSTtvQkFDSixFQUFFO29CQUNGLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxJQUFJLEVBQUU7b0JBQy9CLElBQUk7b0JBQ0osSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7b0JBQzlELFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUM5RCxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO1lBQVMsQ0FBQztRQUNULE1BQU0sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsTUFBTSxDQUFDLE1BQU0sV0FBVyxDQUFDLENBQUM7SUFDMUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FDekIsU0FBYyxFQUNkLFdBQTJFO0lBRTNFLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTztJQUV2QixzQ0FBc0M7SUFDdEMsSUFBSSxTQUFTLENBQUMsV0FBVyxLQUFLLFlBQVk7UUFDdEMsQ0FBQyxTQUFTLENBQUMsV0FBVyxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMscUJBQXFCLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN0RixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMscUJBQXFCLEVBQUUsUUFBUTtZQUN6QyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUk7WUFDMUIsWUFBWSxDQUFDO1FBQzlCLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDZixRQUFRO1lBQ1IsV0FBVyxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQ3JELElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUM7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixJQUFJLFNBQVMsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNoRSxLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6QyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxLQUFLLFVBQVUsYUFBYSxDQUMxQixJQUFZLEVBQ1osSUFBWSxFQUNaLElBQVksRUFDWixRQUFnQixFQUNoQixJQUFZLEVBQ1osRUFBVSxFQUNWLE9BQWUsRUFDZixJQUFZLEVBQ1osSUFBYSxFQUNiLFdBQW1FO0lBRW5FLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNwRSxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixJQUFJLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RCxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRTVDLDJDQUEyQztJQUMzQyxnQ0FBZ0M7SUFDaEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO0lBRTVGLE9BQU87UUFDTCxTQUFTO1FBQ1QsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO0tBQ2YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFFBQVEsR0FBRztJQUNmLFdBQVcsRUFBRSxtQkFBbUI7SUFDaEMsV0FBVyxFQUFFLGlFQUFpRTtJQUM5RSxPQUFPLEVBQUUsYUFBYTtJQUV0QixJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxtQkFBbUI7UUFDaEMsV0FBVyxFQUFFLDBCQUEwQjtRQUN2QyxRQUFRLEVBQUUsS0FBSztRQUNmLEtBQUssRUFBRTtZQUNMLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQ2xFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQzlELElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQ3RFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1NBQzVFO0tBQ0Y7SUFFRCxRQUFRLEVBQUU7UUFDUjs7V0FFRztRQUNILFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxVQUFVO1lBQ2hCLFdBQVcsRUFBRSxrQkFBa0I7WUFDL0IsV0FBVyxFQUFFLCtDQUErQztZQUM1RCxJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFdBQVcsRUFBRSxXQUFXO29CQUN4QixXQUFXLEVBQUUsNkNBQTZDO29CQUMxRCxRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsV0FBVyxFQUFFLFdBQVc7b0JBQ3hCLFdBQVcsRUFBRSx5Q0FBeUM7b0JBQ3RELFFBQVEsRUFBRSxLQUFLO29CQUNmLFlBQVksRUFBRSxHQUFHO2lCQUNsQjtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFdBQVcsRUFBRSxVQUFVO29CQUN2QixXQUFXLEVBQUUsMkJBQTJCO29CQUN4QyxRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osSUFBSSxFQUFFLGFBQWE7b0JBQ25CLFdBQVcsRUFBRSxVQUFVO29CQUN2QixXQUFXLEVBQUUseUNBQXlDO29CQUN0RCxRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFdBQVcsRUFBRSxRQUFRO29CQUNyQixXQUFXLEVBQUUsMkJBQTJCO29CQUN4QyxRQUFRLEVBQUUsS0FBSztvQkFDZixZQUFZLEVBQUUsT0FBTztpQkFDdEI7Z0JBQ0QsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxVQUFVO29CQUNoQixXQUFXLEVBQUUsYUFBYTtvQkFDMUIsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsWUFBWSxFQUFFLElBQUk7aUJBQ25CO2dCQUNELEtBQUssRUFBRTtvQkFDTCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxXQUFXLEVBQUUsT0FBTztvQkFDcEIsV0FBVyxFQUFFLG1DQUFtQztvQkFDaEQsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsWUFBWSxFQUFFLEVBQUU7aUJBQ2pCO2FBQ0Y7WUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQXFCO2dCQUM3QixNQUFNLEVBQ0osUUFBUSxFQUFFLFFBQVEsR0FBRyxHQUFHLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFDaEQsTUFBTSxHQUFHLE9BQU8sRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQ2hELEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztnQkFFdkIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksUUFBUSxDQUFDO2dCQUM1QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxRQUFRLENBQUM7Z0JBQzVDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLFFBQVEsQ0FBQztnQkFDNUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksWUFBWSxDQUFDO2dCQUV4RCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztnQkFDbkQsQ0FBQztnQkFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FDbEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUNsQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FDbkQsQ0FBQztnQkFFRixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixNQUFNLENBQUMsTUFBTSxXQUFXLENBQUMsQ0FBQztnQkFFbEUsT0FBTztvQkFDTCxNQUFNO29CQUNOLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTTtvQkFDcEIsTUFBTTtvQkFDTixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7aUJBQ3BDLENBQUM7WUFDSixDQUFDO1NBQ0Y7S0FDRjtJQUVELE9BQU8sRUFBRTtRQUNQOztXQUVHO1FBQ0gsUUFBUSxFQUFFO1lBQ1IsSUFBSSxFQUFFLFVBQVU7WUFDaEIsV0FBVyxFQUFFLGtCQUFrQjtZQUMvQixXQUFXLEVBQUUsZ0VBQWdFO1lBQzdFLEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFdBQVcsRUFBRSxXQUFXO29CQUN4QixXQUFXLEVBQUUsc0JBQXNCO29CQUNuQyxRQUFRLEVBQUUsS0FBSztpQkFDaEI7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxRQUFRO29CQUNkLFdBQVcsRUFBRSxXQUFXO29CQUN4QixXQUFXLEVBQUUsa0JBQWtCO29CQUMvQixRQUFRLEVBQUUsS0FBSztvQkFDZixZQUFZLEVBQUUsR0FBRztpQkFDbEI7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxZQUFZO29CQUNsQixXQUFXLEVBQUUsVUFBVTtvQkFDdkIsV0FBVyxFQUFFLDJCQUEyQjtvQkFDeEMsUUFBUSxFQUFFLEtBQUs7aUJBQ2hCO2dCQUNELFlBQVksRUFBRTtvQkFDWixJQUFJLEVBQUUsYUFBYTtvQkFDbkIsV0FBVyxFQUFFLFVBQVU7b0JBQ3ZCLFdBQVcsRUFBRSxnQkFBZ0I7b0JBQzdCLFFBQVEsRUFBRSxLQUFLO2lCQUNoQjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFdBQVcsRUFBRSxRQUFRO29CQUNyQixXQUFXLEVBQUUsZ0JBQWdCO29CQUM3QixRQUFRLEVBQUUsS0FBSztvQkFDZixZQUFZLEVBQUUsT0FBTztpQkFDdEI7Z0JBQ0QsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxVQUFVO29CQUNoQixXQUFXLEVBQUUsYUFBYTtvQkFDMUIsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsWUFBWSxFQUFFLElBQUk7aUJBQ25CO2dCQUNELEtBQUssRUFBRTtvQkFDTCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxXQUFXLEVBQUUsT0FBTztvQkFDcEIsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsWUFBWSxFQUFFLEVBQUU7aUJBQ2pCO2FBQ0Y7WUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQXFCO2dCQUM3QixNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBRWhELDZDQUE2QztnQkFDN0MsTUFBTSxVQUFVLEdBQW1CO29CQUNqQzt3QkFDRSxFQUFFLEVBQUUsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7d0JBQ3pCLElBQUksRUFBRSxzQkFBc0I7d0JBQzVCLEVBQUUsRUFBRSxxQkFBcUI7d0JBQ3pCLE9BQU8sRUFBRSwyQkFBMkI7d0JBQ3BDLElBQUksRUFBRSwySUFBMkk7d0JBQ2pKLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtxQkFDL0I7b0JBQ0Q7d0JBQ0UsRUFBRSxFQUFFLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLDRCQUE0Qjt3QkFDbEMsRUFBRSxFQUFFLG1CQUFtQjt3QkFDdkIsT0FBTyxFQUFFLHFDQUFxQzt3QkFDOUMsSUFBSSxFQUFFLHVHQUF1Rzt3QkFDN0csSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUU7cUJBQ25EO2lCQUNGLENBQUM7Z0JBRUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsVUFBVSxDQUFDLE1BQU0scUJBQXFCLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBRTlGLE9BQU87b0JBQ0wsTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTTtvQkFDeEIsTUFBTTtvQkFDTixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7aUJBQ3BDLENBQUM7WUFDSixDQUFDO1NBQ0Y7UUFFRDs7V0FFRztRQUNILFdBQVcsRUFBRTtZQUNYLElBQUksRUFBRSxhQUFhO1lBQ25CLFdBQVcsRUFBRSxxQkFBcUI7WUFDbEMsV0FBVyxFQUFFLG1DQUFtQztZQUNoRCxLQUFLLEVBQUU7Z0JBQ0wsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxZQUFZO29CQUNsQixXQUFXLEVBQUUsV0FBVztvQkFDeEIsV0FBVyxFQUFFLHNCQUFzQjtvQkFDbkMsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxRQUFRO29CQUNkLFdBQVcsRUFBRSxXQUFXO29CQUN4QixXQUFXLEVBQUUsa0JBQWtCO29CQUMvQixRQUFRLEVBQUUsS0FBSztvQkFDZixZQUFZLEVBQUUsR0FBRztpQkFDbEI7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxZQUFZO29CQUNsQixXQUFXLEVBQUUsVUFBVTtvQkFDdkIsV0FBVyxFQUFFLDJCQUEyQjtvQkFDeEMsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLElBQUksRUFBRSxhQUFhO29CQUNuQixXQUFXLEVBQUUsVUFBVTtvQkFDdkIsV0FBVyxFQUFFLGdCQUFnQjtvQkFDN0IsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLElBQUksRUFBRSxZQUFZO29CQUNsQixXQUFXLEVBQUUsUUFBUTtvQkFDckIsV0FBVyxFQUFFLDhCQUE4QjtvQkFDM0MsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsWUFBWSxFQUFFLE9BQU87aUJBQ3RCO2dCQUNELFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsV0FBVyxFQUFFLGFBQWE7b0JBQzFCLFdBQVcsRUFBRSwwQkFBMEI7b0JBQ3ZDLFFBQVEsRUFBRSxLQUFLO29CQUNmLFlBQVksRUFBRSxLQUFLO2lCQUNwQjtnQkFDRCxLQUFLLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsV0FBVyxFQUFFLE9BQU87b0JBQ3BCLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFFBQVEsRUFBRSxLQUFLO29CQUNmLFlBQVksRUFBRSxFQUFFO2lCQUNqQjthQUNGO1lBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFxQjtnQkFDN0IsTUFBTSxFQUNKLFFBQVEsRUFBRSxRQUFRLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQ2hELE1BQU0sR0FBRyxPQUFPLEVBQUUsVUFBVSxHQUFHLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUNqRCxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBRXZCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLFFBQVEsQ0FBQztnQkFDNUMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksUUFBUSxDQUFDO2dCQUM1QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxRQUFRLENBQUM7Z0JBQzVDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLFlBQVksQ0FBQztnQkFFeEQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQ25ELENBQUM7Z0JBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQ2xDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQ25ELENBQUM7Z0JBRUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBRW5GLE9BQU87b0JBQ0wsTUFBTTtvQkFDTixLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU07b0JBQ3BCLE1BQU07aUJBQ1AsQ0FBQztZQUNKLENBQUM7U0FDRjtRQUVEOztXQUVHO1FBQ0gsU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFLFdBQVc7WUFDakIsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxXQUFXLEVBQUUsd0JBQXdCO1lBQ3JDLEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFdBQVcsRUFBRSxXQUFXO29CQUN4QixXQUFXLEVBQUUsNkNBQTZDO29CQUMxRCxRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsV0FBVyxFQUFFLFdBQVc7b0JBQ3hCLFdBQVcsRUFBRSw2Q0FBNkM7b0JBQzFELFFBQVEsRUFBRSxLQUFLO29CQUNmLFlBQVksRUFBRSxHQUFHO2lCQUNsQjtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFdBQVcsRUFBRSxVQUFVO29CQUN2QixXQUFXLEVBQUUscUJBQXFCO29CQUNsQyxRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osSUFBSSxFQUFFLGFBQWE7b0JBQ25CLFdBQVcsRUFBRSxVQUFVO29CQUN2QixXQUFXLEVBQUUsZUFBZTtvQkFDNUIsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLElBQUksRUFBRSxZQUFZO29CQUNsQixXQUFXLEVBQUUsTUFBTTtvQkFDbkIsV0FBVyxFQUFFLHNCQUFzQjtvQkFDbkMsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsRUFBRSxFQUFFO29CQUNGLElBQUksRUFBRSxZQUFZO29CQUNsQixXQUFXLEVBQUUsSUFBSTtvQkFDakIsV0FBVyxFQUFFLDhDQUE4QztvQkFDM0QsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsRUFBRSxFQUFFO29CQUNGLElBQUksRUFBRSxZQUFZO29CQUNsQixXQUFXLEVBQUUsSUFBSTtvQkFDakIsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsUUFBUSxFQUFFLEtBQUs7aUJBQ2hCO2dCQUNELEdBQUcsRUFBRTtvQkFDSCxJQUFJLEVBQUUsWUFBWTtvQkFDbEIsV0FBVyxFQUFFLEtBQUs7b0JBQ2xCLFdBQVcsRUFBRSwyQkFBMkI7b0JBQ3hDLFFBQVEsRUFBRSxLQUFLO2lCQUNoQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFdBQVcsRUFBRSxTQUFTO29CQUN0QixXQUFXLEVBQUUsb0JBQW9CO29CQUNqQyxRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFdBQVcsRUFBRSxtQkFBbUI7b0JBQ2hDLFdBQVcsRUFBRSwwQkFBMEI7b0JBQ3ZDLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNELElBQUksRUFBRTtvQkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsV0FBVyxFQUFFLGFBQWE7b0JBQzFCLFdBQVcsRUFBRSxzQ0FBc0M7b0JBQ25ELFFBQVEsRUFBRSxLQUFLO2lCQUNoQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFdBQVcsRUFBRSxVQUFVO29CQUN2QixXQUFXLEVBQUUsNkJBQTZCO29CQUMxQyxRQUFRLEVBQUUsS0FBSztpQkFDaEI7YUFDRjtZQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBcUI7Z0JBQzdCLE1BQU0sRUFDSixRQUFRLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUNoRCxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUNoRCxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBRXZCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLFFBQVEsQ0FBQztnQkFDNUMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksUUFBUSxDQUFDO2dCQUM1QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxRQUFRLENBQUM7Z0JBQzVDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLFlBQVksQ0FBQztnQkFFeEQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQ25ELENBQUM7Z0JBRUQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7Z0JBQzlELENBQUM7Z0JBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxhQUFhLENBQ2hDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FDOUQsQ0FBQztnQkFFRixPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUVwRCxPQUFPO29CQUNMLE9BQU8sRUFBRSxJQUFJO29CQUNiLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztvQkFDM0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO29CQUN6QixJQUFJO29CQUNKLEVBQUU7b0JBQ0YsT0FBTztvQkFDUCxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7aUJBQ3BDLENBQUM7WUFDSixDQUFDO1NBQ0Y7UUFFRDs7V0FFRztRQUNILFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSxZQUFZO1lBQ2xCLFdBQVcsRUFBRSxhQUFhO1lBQzFCLFdBQVcsRUFBRSw0Q0FBNEM7WUFDekQsS0FBSyxFQUFFO2dCQUNMLFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsV0FBVztvQkFDakIsV0FBVyxFQUFFLFdBQVc7b0JBQ3hCLFdBQVcsRUFBRSx3Q0FBd0M7b0JBQ3JELFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNELGtCQUFrQixFQUFFO29CQUNsQixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsV0FBVyxFQUFFLHFCQUFxQjtvQkFDbEMsV0FBVyxFQUFFLGdDQUFnQztvQkFDN0MsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsWUFBWSxFQUFFLEtBQUs7aUJBQ3BCO2FBQ0Y7WUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQXFCO2dCQUM3QixNQUFNLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztnQkFFNUQsSUFBSSxLQUFVLENBQUM7Z0JBQ2YsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDO3dCQUNILEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMvQixDQUFDO29CQUFDLE1BQU0sQ0FBQzt3QkFDUCwrQ0FBK0M7d0JBQy9DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ25DLEtBQUssR0FBRzs0QkFDTixPQUFPLEVBQUUsRUFBRTs0QkFDWCxJQUFJLEVBQUUsRUFBRTs0QkFDUixFQUFFLEVBQUUsRUFBRTs0QkFDTixJQUFJLEVBQUUsUUFBUTt5QkFDZixDQUFDO3dCQUNGLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7NEJBQ3pCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dDQUM5QyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7NEJBQzNDLENBQUM7aUNBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0NBQ2xELEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzs0QkFDeEMsQ0FBQztpQ0FBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQ0FDaEQsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDOzRCQUN0QyxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDbkIsQ0FBQztnQkFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxLQUFLLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBRXpFLE9BQU87b0JBQ0wsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRTtvQkFDdEIsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRTtvQkFDbEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRTtvQkFDNUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFO29CQUNwQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFO29CQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtvQkFDNUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7aUJBQ2pFLENBQUM7WUFDSixDQUFDO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFFVyxRQUFBLEtBQUssR0FBRyxRQUFRLENBQUM7QUFDOUIsa0JBQWUsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaGEtYml0cy9iaXQtZW1haWxcbiAqIFxuICogRW1haWwgaW50ZWdyYXRpb24gYml0IGZvciBJTUFQIGZldGNoaW5nIGFuZCBTTVRQIHNlbmRpbmcuXG4gKiBQcm92aWRlcyB0cmlnZ2VycyBmb3IgbmV3IGVtYWlscyBhbmQgYWN0aW9ucyBmb3Igc2VuZGluZyBlbWFpbHMuXG4gKi9cblxuaW1wb3J0IHsgSW1hcEZsb3cgfSBmcm9tICdpbWFwZmxvdyc7XG5cbmludGVyZmFjZSBFbWFpbENvbnRleHQge1xuICBhdXRoPzoge1xuICAgIGhvc3Q/OiBzdHJpbmc7XG4gICAgcG9ydD86IG51bWJlcjtcbiAgICB1c2VyPzogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xuICB9O1xuICBwcm9wc1ZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5pbnRlcmZhY2UgRW1haWxNZXNzYWdlIHtcbiAgaWQ6IHN0cmluZztcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICBzdWJqZWN0OiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgZGF0ZTogc3RyaW5nO1xuICBhdHRhY2htZW50cz86IEFycmF5PHtcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gICAgc2l6ZTogbnVtYmVyO1xuICB9Pjtcbn1cblxuLyoqXG4gKiBGZXRjaCBlbWFpbHMgZnJvbSBJTUFQIHNlcnZlciB1c2luZyBpbWFwZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBmZXRjaEltYXBFbWFpbHMoXG4gIGhvc3Q6IHN0cmluZyxcbiAgcG9ydDogbnVtYmVyLFxuICB1c2VyOiBzdHJpbmcsXG4gIHBhc3N3b3JkOiBzdHJpbmcsXG4gIGZvbGRlcjogc3RyaW5nID0gJ0lOQk9YJyxcbiAgbGltaXQ6IG51bWJlciA9IDEwLFxuICB1bnJlYWRPbmx5OiBib29sZWFuID0gdHJ1ZVxuKTogUHJvbWlzZTxFbWFpbE1lc3NhZ2VbXT4ge1xuICBjb25zb2xlLmxvZyhg8J+TpyBJTUFQOiBDb25uZWN0aW5nIHRvICR7aG9zdH06JHtwb3J0fSBhcyAke3VzZXJ9Li4uYCk7XG4gIGNvbnNvbGUubG9nKGDwn5OnIElNQVA6IEZldGNoaW5nIGZyb20gJHtmb2xkZXJ9LCBsaW1pdDogJHtsaW1pdH0sIHVucmVhZE9ubHk6ICR7dW5yZWFkT25seX1gKTtcbiAgXG4gIGNvbnN0IGNsaWVudCA9IG5ldyBJbWFwRmxvdyh7XG4gICAgaG9zdCxcbiAgICBwb3J0LFxuICAgIHNlY3VyZTogcG9ydCA9PT0gOTkzLFxuICAgIGF1dGg6IHtcbiAgICAgIHVzZXIsXG4gICAgICBwYXNzOiBwYXNzd29yZCxcbiAgICB9LFxuICAgIGxvZ2dlcjogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGVtYWlsczogRW1haWxNZXNzYWdlW10gPSBbXTtcblxuICB0cnkge1xuICAgIGF3YWl0IGNsaWVudC5jb25uZWN0KCk7XG4gICAgY29uc29sZS5sb2coYPCfk6cgSU1BUDogQ29ubmVjdGVkIHN1Y2Nlc3NmdWxseWApO1xuXG4gICAgY29uc3QgbG9jayA9IGF3YWl0IGNsaWVudC5nZXRNYWlsYm94TG9jayhmb2xkZXIpO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICAvLyBCdWlsZCBzZWFyY2ggcXVlcnlcbiAgICAgIGNvbnN0IHNlYXJjaFF1ZXJ5OiBhbnkgPSB1bnJlYWRPbmx5ID8geyBzZWVuOiBmYWxzZSB9IDogJ2FsbCc7XG4gICAgICBcbiAgICAgIC8vIFNlYXJjaCBmb3IgbWVzc2FnZXNcbiAgICAgIGNvbnN0IHNlYXJjaFJlc3VsdCA9IGF3YWl0IGNsaWVudC5zZWFyY2goc2VhcmNoUXVlcnksIHsgdWlkOiB0cnVlIH0pO1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSBBcnJheS5pc0FycmF5KHNlYXJjaFJlc3VsdCkgPyBzZWFyY2hSZXN1bHQgOiBbXTtcbiAgICAgIFxuICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhg8J+TpyBJTUFQOiBObyBtZXNzYWdlcyBmb3VuZCBtYXRjaGluZyBjcml0ZXJpYWApO1xuICAgICAgICByZXR1cm4gZW1haWxzO1xuICAgICAgfVxuXG4gICAgICAvLyBHZXQgdGhlIG1vc3QgcmVjZW50IG1lc3NhZ2VzIHVwIHRvIGxpbWl0XG4gICAgICBjb25zdCBtZXNzYWdlc1RvRmV0Y2ggPSBtZXNzYWdlcy5zbGljZSgtbGltaXQpLnJldmVyc2UoKTtcbiAgICAgIGNvbnNvbGUubG9nKGDwn5OnIElNQVA6IEZvdW5kICR7bWVzc2FnZXMubGVuZ3RofSBtZXNzYWdlcywgZmV0Y2hpbmcgJHttZXNzYWdlc1RvRmV0Y2gubGVuZ3RofWApO1xuXG4gICAgICAvLyBGZXRjaCBtZXNzYWdlIGRldGFpbHNcbiAgICAgIGZvciBhd2FpdCAoY29uc3QgbWVzc2FnZSBvZiBjbGllbnQuZmV0Y2gobWVzc2FnZXNUb0ZldGNoLCB7XG4gICAgICAgIHVpZDogdHJ1ZSxcbiAgICAgICAgZW52ZWxvcGU6IHRydWUsXG4gICAgICAgIHNvdXJjZTogdHJ1ZSxcbiAgICAgICAgYm9keVN0cnVjdHVyZTogdHJ1ZSxcbiAgICAgIH0pKSB7XG4gICAgICAgIGNvbnN0IGVudmVsb3BlID0gbWVzc2FnZS5lbnZlbG9wZTtcbiAgICAgICAgaWYgKCFlbnZlbG9wZSkgY29udGludWU7XG4gICAgICAgIFxuICAgICAgICAvLyBQYXJzZSBmcm9tIGFkZHJlc3NcbiAgICAgICAgY29uc3QgZnJvbUFkZHIgPSBlbnZlbG9wZS5mcm9tPy5bMF07XG4gICAgICAgIGNvbnN0IGZyb20gPSBmcm9tQWRkciBcbiAgICAgICAgICA/IChmcm9tQWRkci5uYW1lID8gYCR7ZnJvbUFkZHIubmFtZX0gPCR7ZnJvbUFkZHIuYWRkcmVzc30+YCA6IGZyb21BZGRyLmFkZHJlc3MgfHwgJycpXG4gICAgICAgICAgOiAnJztcbiAgICAgICAgXG4gICAgICAgIC8vIFBhcnNlIHRvIGFkZHJlc3Nlc1xuICAgICAgICBjb25zdCB0b0FkZHJzID0gZW52ZWxvcGUudG8gfHwgW107XG4gICAgICAgIGNvbnN0IHRvID0gdG9BZGRyc1xuICAgICAgICAgIC5tYXAoKGFkZHI6IGFueSkgPT4gYWRkci5uYW1lID8gYCR7YWRkci5uYW1lfSA8JHthZGRyLmFkZHJlc3N9PmAgOiBhZGRyLmFkZHJlc3MgfHwgJycpXG4gICAgICAgICAgLmpvaW4oJywgJyk7XG5cbiAgICAgICAgLy8gRXh0cmFjdCBib2R5IGZyb20gc291cmNlXG4gICAgICAgIGxldCBib2R5ID0gJyc7XG4gICAgICAgIGlmIChtZXNzYWdlLnNvdXJjZSkge1xuICAgICAgICAgIGNvbnN0IHNvdXJjZVN0ciA9IG1lc3NhZ2Uuc291cmNlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgLy8gU2ltcGxlIGV4dHJhY3Rpb24gLSBmaW5kIGJvZHkgYWZ0ZXIgaGVhZGVyc1xuICAgICAgICAgIGNvbnN0IGJvZHlNYXRjaCA9IHNvdXJjZVN0ci5zcGxpdCgvXFxyP1xcblxccj9cXG4vKTtcbiAgICAgICAgICBpZiAoYm9keU1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGJvZHkgPSBib2R5TWF0Y2guc2xpY2UoMSkuam9pbignXFxuXFxuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXh0cmFjdCBhdHRhY2htZW50cyBpbmZvIGZyb20gYm9keVN0cnVjdHVyZVxuICAgICAgICBjb25zdCBhdHRhY2htZW50czogQXJyYXk8eyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50VHlwZTogc3RyaW5nOyBzaXplOiBudW1iZXIgfT4gPSBbXTtcbiAgICAgICAgaWYgKG1lc3NhZ2UuYm9keVN0cnVjdHVyZSkge1xuICAgICAgICAgIGV4dHJhY3RBdHRhY2htZW50cyhtZXNzYWdlLmJvZHlTdHJ1Y3R1cmUsIGF0dGFjaG1lbnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVtYWlscy5wdXNoKHtcbiAgICAgICAgICBpZDogU3RyaW5nKG1lc3NhZ2UudWlkKSxcbiAgICAgICAgICBmcm9tLFxuICAgICAgICAgIHRvLFxuICAgICAgICAgIHN1YmplY3Q6IGVudmVsb3BlLnN1YmplY3QgfHwgJycsXG4gICAgICAgICAgYm9keSxcbiAgICAgICAgICBkYXRlOiBlbnZlbG9wZS5kYXRlPy50b0lTT1N0cmluZygpIHx8IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IGF0dGFjaG1lbnRzIDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgbG9jay5yZWxlYXNlKCk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGNsaWVudC5sb2dvdXQoKTtcbiAgICBjb25zb2xlLmxvZyhg8J+TpyBJTUFQOiBEaXNjb25uZWN0ZWRgKTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKGDwn5OnIElNQVA6IEZldGNoZWQgJHtlbWFpbHMubGVuZ3RofSBlbWFpbChzKWApO1xuICByZXR1cm4gZW1haWxzO1xufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGV4dHJhY3QgYXR0YWNobWVudCBpbmZvIGZyb20gYm9keVN0cnVjdHVyZVxuICovXG5mdW5jdGlvbiBleHRyYWN0QXR0YWNobWVudHMoXG4gIHN0cnVjdHVyZTogYW55LFxuICBhdHRhY2htZW50czogQXJyYXk8eyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50VHlwZTogc3RyaW5nOyBzaXplOiBudW1iZXIgfT5cbik6IHZvaWQge1xuICBpZiAoIXN0cnVjdHVyZSkgcmV0dXJuO1xuXG4gIC8vIENoZWNrIGlmIHRoaXMgcGFydCBpcyBhbiBhdHRhY2htZW50XG4gIGlmIChzdHJ1Y3R1cmUuZGlzcG9zaXRpb24gPT09ICdhdHRhY2htZW50JyB8fCBcbiAgICAgIChzdHJ1Y3R1cmUuZGlzcG9zaXRpb24gPT09ICdpbmxpbmUnICYmIHN0cnVjdHVyZS5kaXNwb3NpdGlvblBhcmFtZXRlcnM/LmZpbGVuYW1lKSkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gc3RydWN0dXJlLmRpc3Bvc2l0aW9uUGFyYW1ldGVycz8uZmlsZW5hbWUgfHwgXG4gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUucGFyYW1ldGVycz8ubmFtZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICdhdHRhY2htZW50JztcbiAgICBhdHRhY2htZW50cy5wdXNoKHtcbiAgICAgIGZpbGVuYW1lLFxuICAgICAgY29udGVudFR5cGU6IGAke3N0cnVjdHVyZS50eXBlfS8ke3N0cnVjdHVyZS5zdWJ0eXBlfWAsXG4gICAgICBzaXplOiBzdHJ1Y3R1cmUuc2l6ZSB8fCAwLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gUmVjdXJzZSBpbnRvIGNoaWxkIHBhcnRzXG4gIGlmIChzdHJ1Y3R1cmUuY2hpbGROb2RlcyAmJiBBcnJheS5pc0FycmF5KHN0cnVjdHVyZS5jaGlsZE5vZGVzKSkge1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygc3RydWN0dXJlLmNoaWxkTm9kZXMpIHtcbiAgICAgIGV4dHJhY3RBdHRhY2htZW50cyhjaGlsZCwgYXR0YWNobWVudHMpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFNpbXVsYXRlIFNNVFAgc2VuZCAoaW4gcmVhbCBpbXBsZW1lbnRhdGlvbiwgdXNlIG5vZGVtYWlsZXIgb3Igc2ltaWxhcilcbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2VuZFNtdHBFbWFpbChcbiAgaG9zdDogc3RyaW5nLFxuICBwb3J0OiBudW1iZXIsXG4gIHVzZXI6IHN0cmluZyxcbiAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgZnJvbTogc3RyaW5nLFxuICB0bzogc3RyaW5nLFxuICBzdWJqZWN0OiBzdHJpbmcsXG4gIGJvZHk6IHN0cmluZyxcbiAgaHRtbD86IHN0cmluZyxcbiAgYXR0YWNobWVudHM/OiBBcnJheTx7IGZpbGVuYW1lOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB8IEJ1ZmZlciB9PlxuKTogUHJvbWlzZTx7IG1lc3NhZ2VJZDogc3RyaW5nOyBhY2NlcHRlZDogc3RyaW5nW10gfT4ge1xuICBjb25zb2xlLmxvZyhg8J+TpCBTTVRQOiBDb25uZWN0aW5nIHRvICR7aG9zdH06JHtwb3J0fSBhcyAke3VzZXJ9Li4uYCk7XG4gIGNvbnNvbGUubG9nKGDwn5OkIFNNVFA6IFNlbmRpbmcgZnJvbSAke2Zyb219IHRvICR7dG99YCk7XG4gIGNvbnNvbGUubG9nKGDwn5OkIFNNVFA6IFN1YmplY3Q6ICR7c3ViamVjdH1gKTtcbiAgXG4gIC8vIEluIHByb2R1Y3Rpb24sIHRoaXMgd291bGQgdXNlIG5vZGVtYWlsZXJcbiAgLy8gRm9yIG5vdywgcmV0dXJuIG1vY2sgcmVzcG9uc2VcbiAgY29uc3QgbWVzc2FnZUlkID0gYDwke0RhdGUubm93KCl9LiR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDcpfUBoYWJpdHMubG9jYWw+YDtcbiAgXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZUlkLFxuICAgIGFjY2VwdGVkOiBbdG9dXG4gIH07XG59XG5cbmNvbnN0IGVtYWlsQml0ID0ge1xuICBkaXNwbGF5TmFtZTogJ0VtYWlsIChJTUFQL1NNVFApJyxcbiAgZGVzY3JpcHRpb246ICdFbWFpbCBpbnRlZ3JhdGlvbiBmb3IgZmV0Y2hpbmcgKElNQVApIGFuZCBzZW5kaW5nIChTTVRQKSBlbWFpbHMnLFxuICBsb2dvVXJsOiAnbHVjaWRlOk1haWwnLFxuICBcbiAgYXV0aDoge1xuICAgIHR5cGU6ICdDVVNUT00nLFxuICAgIGRpc3BsYXlOYW1lOiAnRW1haWwgQ3JlZGVudGlhbHMnLFxuICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgc2VydmVyIGNyZWRlbnRpYWxzJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcHJvcHM6IHtcbiAgICAgIGhvc3Q6IHsgdHlwZTogJ1NIT1JUX1RFWFQnLCBkaXNwbGF5TmFtZTogJ0hvc3QnLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgIHBvcnQ6IHsgdHlwZTogJ05VTUJFUicsIGRpc3BsYXlOYW1lOiAnUG9ydCcsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgdXNlcjogeyB0eXBlOiAnU0hPUlRfVEVYVCcsIGRpc3BsYXlOYW1lOiAnVXNlcm5hbWUnLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgIHBhc3N3b3JkOiB7IHR5cGU6ICdTRUNSRVRfVEVYVCcsIGRpc3BsYXlOYW1lOiAnUGFzc3dvcmQnLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICB9XG4gIH0sXG4gIFxuICB0cmlnZ2Vyczoge1xuICAgIC8qKlxuICAgICAqIElNQVAgdHJpZ2dlciAtIGZldGNoIG5ldyBlbWFpbHNcbiAgICAgKi9cbiAgICBuZXdFbWFpbDoge1xuICAgICAgbmFtZTogJ25ld0VtYWlsJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnTmV3IEVtYWlsIChJTUFQKScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RyaWdnZXIgd2hlbiBuZXcgZW1haWxzIGFycml2ZSBpbiB0aGUgbWFpbGJveCcsXG4gICAgICB0eXBlOiAnUE9MTElORycsXG4gICAgICBwcm9wczoge1xuICAgICAgICBpbWFwSG9zdDoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0lNQVAgSG9zdCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdJTUFQIHNlcnZlciBob3N0bmFtZSAoZS5nLiwgaW1hcC5nbWFpbC5jb20pJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW1hcFBvcnQ6IHtcbiAgICAgICAgICB0eXBlOiAnTlVNQkVSJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0lNQVAgUG9ydCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdJTUFQIHNlcnZlciBwb3J0IChkZWZhdWx0OiA5OTMgZm9yIFNTTCknLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IDk5MyxcbiAgICAgICAgfSxcbiAgICAgICAgaW1hcFVzZXI6IHtcbiAgICAgICAgICB0eXBlOiAnU0hPUlRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdVc2VybmFtZScsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdFbWFpbCBhZGRyZXNzIG9yIHVzZXJuYW1lJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW1hcFBhc3N3b3JkOiB7XG4gICAgICAgICAgdHlwZTogJ1NFQ1JFVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1Bhc3N3b3JkJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0VtYWlsIHBhc3N3b3JkIG9yIGFwcC1zcGVjaWZpYyBwYXNzd29yZCcsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGZvbGRlcjoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0ZvbGRlcicsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdNYWlsYm94IGZvbGRlciB0byBtb25pdG9yJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiAnSU5CT1gnLFxuICAgICAgICB9LFxuICAgICAgICB1bnJlYWRPbmx5OiB7XG4gICAgICAgICAgdHlwZTogJ0NIRUNLQk9YJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1VucmVhZCBPbmx5JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ09ubHkgZmV0Y2ggdW5yZWFkIGVtYWlscycsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGltaXQ6IHtcbiAgICAgICAgICB0eXBlOiAnTlVNQkVSJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0xpbWl0JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ01heGltdW0gbnVtYmVyIG9mIGVtYWlscyB0byBmZXRjaCcsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogMTAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYXN5bmMgcnVuKGNvbnRleHQ6IEVtYWlsQ29udGV4dCkge1xuICAgICAgICBjb25zdCB7IFxuICAgICAgICAgIGltYXBIb3N0LCBpbWFwUG9ydCA9IDk5MywgaW1hcFVzZXIsIGltYXBQYXNzd29yZCxcbiAgICAgICAgICBmb2xkZXIgPSAnSU5CT1gnLCB1bnJlYWRPbmx5ID0gdHJ1ZSwgbGltaXQgPSAxMFxuICAgICAgICB9ID0gY29udGV4dC5wcm9wc1ZhbHVlO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgaG9zdCA9IGNvbnRleHQuYXV0aD8uaG9zdCB8fCBpbWFwSG9zdDtcbiAgICAgICAgY29uc3QgcG9ydCA9IGNvbnRleHQuYXV0aD8ucG9ydCB8fCBpbWFwUG9ydDtcbiAgICAgICAgY29uc3QgdXNlciA9IGNvbnRleHQuYXV0aD8udXNlciB8fCBpbWFwVXNlcjtcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSBjb250ZXh0LmF1dGg/LnBhc3N3b3JkIHx8IGltYXBQYXNzd29yZDtcbiAgICAgICAgXG4gICAgICAgIGlmICghaG9zdCB8fCAhdXNlciB8fCAhcGFzc3dvcmQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lNQVAgY3JlZGVudGlhbHMgYXJlIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGVtYWlscyA9IGF3YWl0IGZldGNoSW1hcEVtYWlscyhcbiAgICAgICAgICBob3N0LCBOdW1iZXIocG9ydCksIHVzZXIsIHBhc3N3b3JkLFxuICAgICAgICAgIFN0cmluZyhmb2xkZXIpLCBOdW1iZXIobGltaXQpLCBCb29sZWFuKHVucmVhZE9ubHkpXG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICBjb25zb2xlLmxvZyhg8J+TpyBJTUFQIFRyaWdnZXI6IEZldGNoZWQgJHtlbWFpbHMubGVuZ3RofSBlbWFpbChzKWApO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbWFpbHMsXG4gICAgICAgICAgY291bnQ6IGVtYWlscy5sZW5ndGgsXG4gICAgICAgICAgZm9sZGVyLFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBcbiAgYWN0aW9uczoge1xuICAgIC8qKlxuICAgICAqIE5ldyBFbWFpbCBhY3Rpb24gKGZvciB3b3JrZmxvdyB0ZXN0aW5nIC0gc2ltdWxhdGVzIElNQVAgdHJpZ2dlciBhcyBhY3Rpb24pXG4gICAgICovXG4gICAgbmV3RW1haWw6IHtcbiAgICAgIG5hbWU6ICduZXdFbWFpbCcsXG4gICAgICBkaXNwbGF5TmFtZTogJ05ldyBFbWFpbCAoSU1BUCknLFxuICAgICAgZGVzY3JpcHRpb246ICdGZXRjaCBuZXcgZW1haWxzIGZyb20gSU1BUCBtYWlsYm94IChhY3Rpb24gdmVyc2lvbiBvZiB0cmlnZ2VyKScsXG4gICAgICBwcm9wczoge1xuICAgICAgICBpbWFwSG9zdDoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0lNQVAgSG9zdCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdJTUFQIHNlcnZlciBob3N0bmFtZScsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBpbWFwUG9ydDoge1xuICAgICAgICAgIHR5cGU6ICdOVU1CRVInLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnSU1BUCBQb3J0JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0lNQVAgc2VydmVyIHBvcnQnLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IDk5MyxcbiAgICAgICAgfSxcbiAgICAgICAgaW1hcFVzZXI6IHtcbiAgICAgICAgICB0eXBlOiAnU0hPUlRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdVc2VybmFtZScsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdFbWFpbCBhZGRyZXNzIG9yIHVzZXJuYW1lJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGltYXBQYXNzd29yZDoge1xuICAgICAgICAgIHR5cGU6ICdTRUNSRVRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdQYXNzd29yZCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdFbWFpbCBwYXNzd29yZCcsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBmb2xkZXI6IHtcbiAgICAgICAgICB0eXBlOiAnU0hPUlRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdGb2xkZXInLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWFpbGJveCBmb2xkZXInLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6ICdJTkJPWCcsXG4gICAgICAgIH0sXG4gICAgICAgIHVucmVhZE9ubHk6IHtcbiAgICAgICAgICB0eXBlOiAnQ0hFQ0tCT1gnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnVW5yZWFkIE9ubHknLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT25seSBmZXRjaCB1bnJlYWQgZW1haWxzJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsaW1pdDoge1xuICAgICAgICAgIHR5cGU6ICdOVU1CRVInLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnTGltaXQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWF4aW11bSBudW1iZXIgb2YgZW1haWxzJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiAxMCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhc3luYyBydW4oY29udGV4dDogRW1haWxDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHsgZm9sZGVyID0gJ0lOQk9YJyB9ID0gY29udGV4dC5wcm9wc1ZhbHVlO1xuICAgICAgICBcbiAgICAgICAgLy8gUmV0dXJuIG1vY2sgdGVzdCBkYXRhIGZvciB3b3JrZmxvdyB0ZXN0aW5nXG4gICAgICAgIGNvbnN0IG1vY2tFbWFpbHM6IEVtYWlsTWVzc2FnZVtdID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBgZW1haWxfJHtEYXRlLm5vdygpfWAsXG4gICAgICAgICAgICBmcm9tOiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLFxuICAgICAgICAgICAgdG86ICdzdXBwb3J0QGNvbXBhbnkuY29tJyxcbiAgICAgICAgICAgIHN1YmplY3Q6ICdIZWxwIHdpdGggbXkgb3JkZXIgIzEyMzQ1JyxcbiAgICAgICAgICAgIGJvZHk6ICdIaSwgSSBwbGFjZWQgYW4gb3JkZXIgbGFzdCB3ZWVrIGFuZCBoYXZlblxcJ3QgcmVjZWl2ZWQgYW55IHNoaXBwaW5nIGNvbmZpcm1hdGlvbi4gQ2FuIHlvdSBoZWxwIG1lIHRyYWNrIGl0PyBPcmRlciBudW1iZXIgaXMgMTIzNDUuIFRoYW5rcyEnLFxuICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBlbWFpbF8ke0RhdGUubm93KCkgKyAxfWAsXG4gICAgICAgICAgICBmcm9tOiAnc2FsZXMuaW5xdWlyeUBwcm9zcGVjdC5jb20nLFxuICAgICAgICAgICAgdG86ICdzYWxlc0Bjb21wYW55LmNvbScsXG4gICAgICAgICAgICBzdWJqZWN0OiAnUHJpY2luZyBpbnF1aXJ5IGZvciBlbnRlcnByaXNlIHBsYW4nLFxuICAgICAgICAgICAgYm9keTogJ1dlIGFyZSBpbnRlcmVzdGVkIGluIHlvdXIgZW50ZXJwcmlzZSBwcmljaW5nLiBPdXIgY29tcGFueSBoYXMgNTAwKyBlbXBsb3llZXMuIFBsZWFzZSBzZW5kIHVzIGEgcXVvdGUuJyxcbiAgICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKERhdGUubm93KCkgLSAzNjAwMDAwKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIFxuICAgICAgICBjb25zb2xlLmxvZyhg8J+TpyBOZXcgRW1haWwgKE1vY2spOiBSZXR1cm5pbmcgJHttb2NrRW1haWxzLmxlbmd0aH0gdGVzdCBlbWFpbHMgZnJvbSAke2ZvbGRlcn1gKTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW1haWxzOiBtb2NrRW1haWxzLFxuICAgICAgICAgIGNvdW50OiBtb2NrRW1haWxzLmxlbmd0aCxcbiAgICAgICAgICBmb2xkZXIsXG4gICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG4gICAgXG4gICAgLyoqXG4gICAgICogRmV0Y2ggZW1haWxzIGZyb20gSU1BUCBzZXJ2ZXJcbiAgICAgKi9cbiAgICBmZXRjaEVtYWlsczoge1xuICAgICAgbmFtZTogJ2ZldGNoRW1haWxzJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnRmV0Y2ggRW1haWxzIChJTUFQKScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0ZldGNoIGVtYWlscyBmcm9tIGFuIElNQVAgbWFpbGJveCcsXG4gICAgICBwcm9wczoge1xuICAgICAgICBpbWFwSG9zdDoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0lNQVAgSG9zdCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdJTUFQIHNlcnZlciBob3N0bmFtZScsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGltYXBQb3J0OiB7XG4gICAgICAgICAgdHlwZTogJ05VTUJFUicsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdJTUFQIFBvcnQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSU1BUCBzZXJ2ZXIgcG9ydCcsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogOTkzLFxuICAgICAgICB9LFxuICAgICAgICBpbWFwVXNlcjoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1VzZXJuYW1lJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0VtYWlsIGFkZHJlc3Mgb3IgdXNlcm5hbWUnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpbWFwUGFzc3dvcmQ6IHtcbiAgICAgICAgICB0eXBlOiAnU0VDUkVUX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnUGFzc3dvcmQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgcGFzc3dvcmQnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBmb2xkZXI6IHtcbiAgICAgICAgICB0eXBlOiAnU0hPUlRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdGb2xkZXInLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWFpbGJveCBmb2xkZXIgdG8gZmV0Y2ggZnJvbScsXG4gICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ0lOQk9YJyxcbiAgICAgICAgfSxcbiAgICAgICAgdW5yZWFkT25seToge1xuICAgICAgICAgIHR5cGU6ICdDSEVDS0JPWCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdVbnJlYWQgT25seScsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdPbmx5IGZldGNoIHVucmVhZCBlbWFpbHMnLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBsaW1pdDoge1xuICAgICAgICAgIHR5cGU6ICdOVU1CRVInLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnTGltaXQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWF4aW11bSBudW1iZXIgb2YgZW1haWxzIHRvIGZldGNoJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiAxMCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhc3luYyBydW4oY29udGV4dDogRW1haWxDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHsgXG4gICAgICAgICAgaW1hcEhvc3QsIGltYXBQb3J0ID0gOTkzLCBpbWFwVXNlciwgaW1hcFBhc3N3b3JkLFxuICAgICAgICAgIGZvbGRlciA9ICdJTkJPWCcsIHVucmVhZE9ubHkgPSBmYWxzZSwgbGltaXQgPSAxMFxuICAgICAgICB9ID0gY29udGV4dC5wcm9wc1ZhbHVlO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgaG9zdCA9IGNvbnRleHQuYXV0aD8uaG9zdCB8fCBpbWFwSG9zdDtcbiAgICAgICAgY29uc3QgcG9ydCA9IGNvbnRleHQuYXV0aD8ucG9ydCB8fCBpbWFwUG9ydDtcbiAgICAgICAgY29uc3QgdXNlciA9IGNvbnRleHQuYXV0aD8udXNlciB8fCBpbWFwVXNlcjtcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSBjb250ZXh0LmF1dGg/LnBhc3N3b3JkIHx8IGltYXBQYXNzd29yZDtcbiAgICAgICAgXG4gICAgICAgIGlmICghaG9zdCB8fCAhdXNlciB8fCAhcGFzc3dvcmQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lNQVAgY3JlZGVudGlhbHMgYXJlIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGVtYWlscyA9IGF3YWl0IGZldGNoSW1hcEVtYWlscyhcbiAgICAgICAgICBob3N0LCBOdW1iZXIocG9ydCksIHVzZXIsIHBhc3N3b3JkLFxuICAgICAgICAgIFN0cmluZyhmb2xkZXIpLCBOdW1iZXIobGltaXQpLCBCb29sZWFuKHVucmVhZE9ubHkpXG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICBjb25zb2xlLmxvZyhg8J+TpyBGZXRjaCBFbWFpbHM6IFJldHJpZXZlZCAke2VtYWlscy5sZW5ndGh9IGVtYWlsKHMpIGZyb20gJHtmb2xkZXJ9YCk7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVtYWlscyxcbiAgICAgICAgICBjb3VudDogZW1haWxzLmxlbmd0aCxcbiAgICAgICAgICBmb2xkZXIsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG4gICAgXG4gICAgLyoqXG4gICAgICogU2VuZCBlbWFpbCB2aWEgU01UUFxuICAgICAqL1xuICAgIHNlbmRFbWFpbDoge1xuICAgICAgbmFtZTogJ3NlbmRFbWFpbCcsXG4gICAgICBkaXNwbGF5TmFtZTogJ1NlbmQgRW1haWwgKFNNVFApJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnU2VuZCBhbiBlbWFpbCB2aWEgU01UUCcsXG4gICAgICBwcm9wczoge1xuICAgICAgICBzbXRwSG9zdDoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1NNVFAgSG9zdCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdTTVRQIHNlcnZlciBob3N0bmFtZSAoZS5nLiwgc210cC5nbWFpbC5jb20pJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc210cFBvcnQ6IHtcbiAgICAgICAgICB0eXBlOiAnTlVNQkVSJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1NNVFAgUG9ydCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdTTVRQIHNlcnZlciBwb3J0ICg1ODcgZm9yIFRMUywgNDY1IGZvciBTU0wpJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiA1ODcsXG4gICAgICAgIH0sXG4gICAgICAgIHNtdHBVc2VyOiB7XG4gICAgICAgICAgdHlwZTogJ1NIT1JUX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnVXNlcm5hbWUnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU01UUCB1c2VybmFtZS9lbWFpbCcsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHNtdHBQYXNzd29yZDoge1xuICAgICAgICAgIHR5cGU6ICdTRUNSRVRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdQYXNzd29yZCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdTTVRQIHBhc3N3b3JkJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ0Zyb20nLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU2VuZGVyIGVtYWlsIGFkZHJlc3MnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1RvJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1JlY2lwaWVudCBlbWFpbCBhZGRyZXNzKGVzKSwgY29tbWEtc2VwYXJhdGVkJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2M6IHtcbiAgICAgICAgICB0eXBlOiAnU0hPUlRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdDQycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdDQyByZWNpcGllbnRzIChvcHRpb25hbCknLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmNjOiB7XG4gICAgICAgICAgdHlwZTogJ1NIT1JUX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnQkNDJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0JDQyByZWNpcGllbnRzIChvcHRpb25hbCknLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3ViamVjdDoge1xuICAgICAgICAgIHR5cGU6ICdTSE9SVF9URVhUJyxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogJ1N1YmplY3QnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgc3ViamVjdCBsaW5lJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgIHR5cGU6ICdMT05HX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnQm9keSAoUGxhaW4gVGV4dCknLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgYm9keSBpbiBwbGFpbiB0ZXh0JyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHRtbDoge1xuICAgICAgICAgIHR5cGU6ICdMT05HX1RFWFQnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnQm9keSAoSFRNTCknLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgYm9keSBpbiBIVE1MIGZvcm1hdCAob3B0aW9uYWwpJyxcbiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcGx5VG86IHtcbiAgICAgICAgICB0eXBlOiAnU0hPUlRfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdSZXBseS1UbycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdSZXBseS10byBhZGRyZXNzIChvcHRpb25hbCknLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhc3luYyBydW4oY29udGV4dDogRW1haWxDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHsgXG4gICAgICAgICAgc210cEhvc3QsIHNtdHBQb3J0ID0gNTg3LCBzbXRwVXNlciwgc210cFBhc3N3b3JkLFxuICAgICAgICAgIGZyb20sIHRvLCBzdWJqZWN0LCBib2R5LCBodG1sLCBjYywgYmNjLCByZXBseVRvXG4gICAgICAgIH0gPSBjb250ZXh0LnByb3BzVmFsdWU7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBob3N0ID0gY29udGV4dC5hdXRoPy5ob3N0IHx8IHNtdHBIb3N0O1xuICAgICAgICBjb25zdCBwb3J0ID0gY29udGV4dC5hdXRoPy5wb3J0IHx8IHNtdHBQb3J0O1xuICAgICAgICBjb25zdCB1c2VyID0gY29udGV4dC5hdXRoPy51c2VyIHx8IHNtdHBVc2VyO1xuICAgICAgICBjb25zdCBwYXNzd29yZCA9IGNvbnRleHQuYXV0aD8ucGFzc3dvcmQgfHwgc210cFBhc3N3b3JkO1xuICAgICAgICBcbiAgICAgICAgaWYgKCFob3N0IHx8ICF1c2VyIHx8ICFwYXNzd29yZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU01UUCBjcmVkZW50aWFscyBhcmUgcmVxdWlyZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKCFmcm9tIHx8ICF0byB8fCAhc3ViamVjdCB8fCAhYm9keSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRnJvbSwgVG8sIFN1YmplY3QsIGFuZCBCb2R5IGFyZSByZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZW5kU210cEVtYWlsKFxuICAgICAgICAgIGhvc3QsIE51bWJlcihwb3J0KSwgdXNlciwgcGFzc3dvcmQsXG4gICAgICAgICAgU3RyaW5nKGZyb20pLCBTdHJpbmcodG8pLCBTdHJpbmcoc3ViamVjdCksIFN0cmluZyhib2R5KSwgaHRtbFxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgY29uc29sZS5sb2coYPCfk6QgU2VuZCBFbWFpbDogTWVzc2FnZSBzZW50IHRvICR7dG99YCk7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgbWVzc2FnZUlkOiByZXN1bHQubWVzc2FnZUlkLFxuICAgICAgICAgIGFjY2VwdGVkOiByZXN1bHQuYWNjZXB0ZWQsXG4gICAgICAgICAgZnJvbSxcbiAgICAgICAgICB0byxcbiAgICAgICAgICBzdWJqZWN0LFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICAgIFxuICAgIC8qKlxuICAgICAqIFBhcnNlIGVtYWlsIGNvbnRlbnRcbiAgICAgKi9cbiAgICBwYXJzZUVtYWlsOiB7XG4gICAgICBuYW1lOiAncGFyc2VFbWFpbCcsXG4gICAgICBkaXNwbGF5TmFtZTogJ1BhcnNlIEVtYWlsJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXh0cmFjdCBzdHJ1Y3R1cmVkIGRhdGEgZnJvbSBlbWFpbCBjb250ZW50JyxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIHJhd0VtYWlsOiB7XG4gICAgICAgICAgdHlwZTogJ0xPTkdfVEVYVCcsXG4gICAgICAgICAgZGlzcGxheU5hbWU6ICdSYXcgRW1haWwnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUmF3IGVtYWlsIGNvbnRlbnQgb3IgSlNPTiBlbWFpbCBvYmplY3QnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBleHRyYWN0QXR0YWNobWVudHM6IHtcbiAgICAgICAgICB0eXBlOiAnQ0hFQ0tCT1gnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiAnRXh0cmFjdCBBdHRhY2htZW50cycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdJbmNsdWRlIGF0dGFjaG1lbnQgaW5mb3JtYXRpb24nLFxuICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGFzeW5jIHJ1bihjb250ZXh0OiBFbWFpbENvbnRleHQpIHtcbiAgICAgICAgY29uc3QgeyByYXdFbWFpbCwgZXh0cmFjdEF0dGFjaG1lbnRzIH0gPSBjb250ZXh0LnByb3BzVmFsdWU7XG4gICAgICAgIFxuICAgICAgICBsZXQgZW1haWw6IGFueTtcbiAgICAgICAgaWYgKHR5cGVvZiByYXdFbWFpbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZW1haWwgPSBKU09OLnBhcnNlKHJhd0VtYWlsKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vIFBhcnNlIGFzIHJhdyBlbWFpbCB0ZXh0IC0gc2ltcGxpZmllZCBwYXJzaW5nXG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IHJhd0VtYWlsLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgIGVtYWlsID0ge1xuICAgICAgICAgICAgICBzdWJqZWN0OiAnJyxcbiAgICAgICAgICAgICAgZnJvbTogJycsXG4gICAgICAgICAgICAgIHRvOiAnJyxcbiAgICAgICAgICAgICAgYm9keTogcmF3RW1haWwsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICAgIGlmIChsaW5lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnc3ViamVjdDonKSkge1xuICAgICAgICAgICAgICAgIGVtYWlsLnN1YmplY3QgPSBsaW5lLnN1YnN0cmluZyg4KS50cmltKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobGluZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2Zyb206JykpIHtcbiAgICAgICAgICAgICAgICBlbWFpbC5mcm9tID0gbGluZS5zdWJzdHJpbmcoNSkudHJpbSgpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd0bzonKSkge1xuICAgICAgICAgICAgICAgIGVtYWlsLnRvID0gbGluZS5zdWJzdHJpbmcoMykudHJpbSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVtYWlsID0gcmF3RW1haWw7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5OnIFBhcnNlIEVtYWlsOiBFeHRyYWN0ZWQgZnJvbSAke2VtYWlsLmZyb20gfHwgJ3Vua25vd24nfWApO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmcm9tOiBlbWFpbC5mcm9tIHx8ICcnLFxuICAgICAgICAgIHRvOiBlbWFpbC50byB8fCAnJyxcbiAgICAgICAgICBzdWJqZWN0OiBlbWFpbC5zdWJqZWN0IHx8ICcnLFxuICAgICAgICAgIGJvZHk6IGVtYWlsLmJvZHkgfHwgZW1haWwudGV4dCB8fCAnJyxcbiAgICAgICAgICBodG1sOiBlbWFpbC5odG1sIHx8ICcnLFxuICAgICAgICAgIGRhdGU6IGVtYWlsLmRhdGUgfHwgbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIGF0dGFjaG1lbnRzOiBleHRyYWN0QXR0YWNobWVudHMgPyAoZW1haWwuYXR0YWNobWVudHMgfHwgW10pIDogW10sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgZW1haWwgPSBlbWFpbEJpdDtcbmV4cG9ydCBkZWZhdWx0IGVtYWlsQml0O1xuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ha-bits/bit-email",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Email integration bit for IMAP fetching and SMTP sending",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -31,12 +31,18 @@
31
31
  "nx": {
32
32
  "sourceRoot": "bits/@ha-bits/bit-email/src",
33
33
  "projectType": "library",
34
- "tags": ["scope:bits", "type:bit"],
34
+ "tags": [
35
+ "scope:bits",
36
+ "type:bit"
37
+ ],
35
38
  "targets": {
36
39
  "build": {
37
- "outputs": ["{projectRoot}/dist"]
40
+ "outputs": [
41
+ "{projectRoot}/dist"
42
+ ]
38
43
  },
39
44
  "publish-verdaccio": {},
45
+ "publish-npm": {},
40
46
  "publish-private": {}
41
47
  }
42
48
  }