@wbce/projen-d9 0.1.0 → 0.1.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/.jsii +41 -23
- package/API.md +14 -0
- package/CHANGELOG.md +6 -0
- package/docs/D9-plumbing.md +7 -2
- package/lib/cli/commands/save/apply-snapshot.d.ts +2 -7
- package/lib/cli/commands/save/apply-snapshot.js +6 -5
- package/lib/cli/commands/save/env.d.ts +4 -0
- package/lib/cli/commands/save/env.js +3 -1
- package/lib/cli/commands/save/save-snapshot.d.ts +2 -7
- package/lib/cli/commands/save/save-snapshot.js +6 -5
- package/lib/cli/commands/save/transfer.js +2 -1
- package/lib/cli/index.js +4 -2
- package/lib/cli/plumbing-config.d.ts +1 -0
- package/lib/cli/plumbing-config.js +1 -1
- package/lib/index.d.ts +5 -0
- package/lib/index.js +3 -3
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
},
|
|
152
152
|
"locationInModule": {
|
|
153
153
|
"filename": "src/index.ts",
|
|
154
|
-
"line":
|
|
154
|
+
"line": 86
|
|
155
155
|
},
|
|
156
156
|
"parameters": [
|
|
157
157
|
{
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
"kind": "class",
|
|
166
166
|
"locationInModule": {
|
|
167
167
|
"filename": "src/index.ts",
|
|
168
|
-
"line":
|
|
168
|
+
"line": 73
|
|
169
169
|
},
|
|
170
170
|
"methods": [
|
|
171
171
|
{
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
},
|
|
175
175
|
"locationInModule": {
|
|
176
176
|
"filename": "src/index.ts",
|
|
177
|
-
"line":
|
|
177
|
+
"line": 201
|
|
178
178
|
},
|
|
179
179
|
"name": "addExtension",
|
|
180
180
|
"parameters": [
|
|
@@ -215,7 +215,7 @@
|
|
|
215
215
|
},
|
|
216
216
|
"locationInModule": {
|
|
217
217
|
"filename": "src/index.ts",
|
|
218
|
-
"line":
|
|
218
|
+
"line": 205
|
|
219
219
|
},
|
|
220
220
|
"name": "configurePlumbing",
|
|
221
221
|
"parameters": [
|
|
@@ -237,7 +237,7 @@
|
|
|
237
237
|
"immutable": true,
|
|
238
238
|
"locationInModule": {
|
|
239
239
|
"filename": "src/index.ts",
|
|
240
|
-
"line":
|
|
240
|
+
"line": 75
|
|
241
241
|
},
|
|
242
242
|
"name": "githubConfig",
|
|
243
243
|
"optional": true,
|
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
},
|
|
252
252
|
"locationInModule": {
|
|
253
253
|
"filename": "src/index.ts",
|
|
254
|
-
"line":
|
|
254
|
+
"line": 78
|
|
255
255
|
},
|
|
256
256
|
"name": "buildExtensionTask",
|
|
257
257
|
"type": {
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
},
|
|
265
265
|
"locationInModule": {
|
|
266
266
|
"filename": "src/index.ts",
|
|
267
|
-
"line":
|
|
267
|
+
"line": 83
|
|
268
268
|
},
|
|
269
269
|
"name": "cacheService",
|
|
270
270
|
"type": {
|
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
},
|
|
278
278
|
"locationInModule": {
|
|
279
279
|
"filename": "src/index.ts",
|
|
280
|
-
"line":
|
|
280
|
+
"line": 81
|
|
281
281
|
},
|
|
282
282
|
"name": "d9Service",
|
|
283
283
|
"type": {
|
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
},
|
|
291
291
|
"locationInModule": {
|
|
292
292
|
"filename": "src/index.ts",
|
|
293
|
-
"line":
|
|
293
|
+
"line": 82
|
|
294
294
|
},
|
|
295
295
|
"name": "databaseService",
|
|
296
296
|
"type": {
|
|
@@ -303,7 +303,7 @@
|
|
|
303
303
|
},
|
|
304
304
|
"locationInModule": {
|
|
305
305
|
"filename": "src/index.ts",
|
|
306
|
-
"line":
|
|
306
|
+
"line": 80
|
|
307
307
|
},
|
|
308
308
|
"name": "dockerComposeFile",
|
|
309
309
|
"type": {
|
|
@@ -316,7 +316,7 @@
|
|
|
316
316
|
},
|
|
317
317
|
"locationInModule": {
|
|
318
318
|
"filename": "src/index.ts",
|
|
319
|
-
"line":
|
|
319
|
+
"line": 79
|
|
320
320
|
},
|
|
321
321
|
"name": "dockerfile",
|
|
322
322
|
"type": {
|
|
@@ -329,7 +329,7 @@
|
|
|
329
329
|
},
|
|
330
330
|
"locationInModule": {
|
|
331
331
|
"filename": "src/index.ts",
|
|
332
|
-
"line":
|
|
332
|
+
"line": 77
|
|
333
333
|
},
|
|
334
334
|
"name": "extensionFolder",
|
|
335
335
|
"type": {
|
|
@@ -342,7 +342,7 @@
|
|
|
342
342
|
},
|
|
343
343
|
"locationInModule": {
|
|
344
344
|
"filename": "src/index.ts",
|
|
345
|
-
"line":
|
|
345
|
+
"line": 76
|
|
346
346
|
},
|
|
347
347
|
"name": "extensions",
|
|
348
348
|
"type": {
|
|
@@ -355,7 +355,7 @@
|
|
|
355
355
|
},
|
|
356
356
|
"locationInModule": {
|
|
357
357
|
"filename": "src/index.ts",
|
|
358
|
-
"line":
|
|
358
|
+
"line": 86
|
|
359
359
|
},
|
|
360
360
|
"name": "options",
|
|
361
361
|
"protected": true,
|
|
@@ -379,7 +379,7 @@
|
|
|
379
379
|
"kind": "interface",
|
|
380
380
|
"locationInModule": {
|
|
381
381
|
"filename": "src/index.ts",
|
|
382
|
-
"line":
|
|
382
|
+
"line": 57
|
|
383
383
|
},
|
|
384
384
|
"name": "D9ProjectOptions",
|
|
385
385
|
"properties": [
|
|
@@ -393,7 +393,7 @@
|
|
|
393
393
|
"immutable": true,
|
|
394
394
|
"locationInModule": {
|
|
395
395
|
"filename": "src/index.ts",
|
|
396
|
-
"line":
|
|
396
|
+
"line": 69
|
|
397
397
|
},
|
|
398
398
|
"name": "extensionsFolderName",
|
|
399
399
|
"optional": true,
|
|
@@ -412,7 +412,7 @@
|
|
|
412
412
|
"immutable": true,
|
|
413
413
|
"locationInModule": {
|
|
414
414
|
"filename": "src/index.ts",
|
|
415
|
-
"line":
|
|
415
|
+
"line": 63
|
|
416
416
|
},
|
|
417
417
|
"name": "githubConfig",
|
|
418
418
|
"optional": true,
|
|
@@ -437,7 +437,7 @@
|
|
|
437
437
|
"immutable": true,
|
|
438
438
|
"locationInModule": {
|
|
439
439
|
"filename": "src/index.ts",
|
|
440
|
-
"line":
|
|
440
|
+
"line": 70
|
|
441
441
|
},
|
|
442
442
|
"name": "packageVersions",
|
|
443
443
|
"optional": true,
|
|
@@ -462,7 +462,7 @@
|
|
|
462
462
|
},
|
|
463
463
|
"locationInModule": {
|
|
464
464
|
"filename": "src/index.ts",
|
|
465
|
-
"line":
|
|
465
|
+
"line": 86
|
|
466
466
|
},
|
|
467
467
|
"parameters": [
|
|
468
468
|
{
|
|
@@ -476,7 +476,7 @@
|
|
|
476
476
|
"kind": "class",
|
|
477
477
|
"locationInModule": {
|
|
478
478
|
"filename": "src/index.ts",
|
|
479
|
-
"line":
|
|
479
|
+
"line": 438
|
|
480
480
|
},
|
|
481
481
|
"name": "DirectusProject",
|
|
482
482
|
"symbolId": "src/index:DirectusProject"
|
|
@@ -495,7 +495,7 @@
|
|
|
495
495
|
"kind": "interface",
|
|
496
496
|
"locationInModule": {
|
|
497
497
|
"filename": "src/index.ts",
|
|
498
|
-
"line":
|
|
498
|
+
"line": 433
|
|
499
499
|
},
|
|
500
500
|
"name": "DirectusProjectOptions",
|
|
501
501
|
"symbolId": "src/index:DirectusProjectOptions"
|
|
@@ -646,6 +646,24 @@
|
|
|
646
646
|
},
|
|
647
647
|
"name": "PlumbingOptions",
|
|
648
648
|
"properties": [
|
|
649
|
+
{
|
|
650
|
+
"abstract": true,
|
|
651
|
+
"docs": {
|
|
652
|
+
"default": "\"d9-plumbing-common\"",
|
|
653
|
+
"stability": "stable",
|
|
654
|
+
"summary": "Name of the d9 folder kept in the snapshot, overridden by the COMMON_FOLDER_NAME environment variable."
|
|
655
|
+
},
|
|
656
|
+
"immutable": true,
|
|
657
|
+
"locationInModule": {
|
|
658
|
+
"filename": "src/index.ts",
|
|
659
|
+
"line": 54
|
|
660
|
+
},
|
|
661
|
+
"name": "commonFolderName",
|
|
662
|
+
"optional": true,
|
|
663
|
+
"type": {
|
|
664
|
+
"primitive": "string"
|
|
665
|
+
}
|
|
666
|
+
},
|
|
649
667
|
{
|
|
650
668
|
"abstract": true,
|
|
651
669
|
"docs": {
|
|
@@ -686,6 +704,6 @@
|
|
|
686
704
|
"symbolId": "src/index:PlumbingOptions"
|
|
687
705
|
}
|
|
688
706
|
},
|
|
689
|
-
"version": "0.1.
|
|
690
|
-
"fingerprint": "
|
|
707
|
+
"version": "0.1.1",
|
|
708
|
+
"fingerprint": "UdroE5xwdxC/OxkjwYVkl7p1fO64s0rn2AAAgOVDgPU="
|
|
691
709
|
}
|
package/API.md
CHANGED
|
@@ -8553,11 +8553,25 @@ const plumbingOptions: PlumbingOptions = { ... }
|
|
|
8553
8553
|
|
|
8554
8554
|
| **Name** | **Type** | **Description** |
|
|
8555
8555
|
| --- | --- | --- |
|
|
8556
|
+
| <code><a href="#@wbce/projen-d9.PlumbingOptions.property.commonFolderName">commonFolderName</a></code> | <code>string</code> | Name of the d9 folder kept in the snapshot, overridden by the COMMON_FOLDER_NAME environment variable. |
|
|
8556
8557
|
| <code><a href="#@wbce/projen-d9.PlumbingOptions.property.intermediateStorage">intermediateStorage</a></code> | <code><a href="#@wbce/projen-d9.IntermediateStorageOptions">IntermediateStorageOptions</a></code> | Storage shared between environments. |
|
|
8557
8558
|
| <code><a href="#@wbce/projen-d9.PlumbingOptions.property.logLevel">logLevel</a></code> | <code>string</code> | Default log level of the CLI, overridden by the LOG_LEVEL environment variable. |
|
|
8558
8559
|
|
|
8559
8560
|
---
|
|
8560
8561
|
|
|
8562
|
+
##### `commonFolderName`<sup>Optional</sup> <a name="commonFolderName" id="@wbce/projen-d9.PlumbingOptions.property.commonFolderName"></a>
|
|
8563
|
+
|
|
8564
|
+
```typescript
|
|
8565
|
+
public readonly commonFolderName: string;
|
|
8566
|
+
```
|
|
8567
|
+
|
|
8568
|
+
- *Type:* string
|
|
8569
|
+
- *Default:* "d9-plumbing-common"
|
|
8570
|
+
|
|
8571
|
+
Name of the d9 folder kept in the snapshot, overridden by the COMMON_FOLDER_NAME environment variable.
|
|
8572
|
+
|
|
8573
|
+
---
|
|
8574
|
+
|
|
8561
8575
|
##### `intermediateStorage`<sup>Optional</sup> <a name="intermediateStorage" id="@wbce/projen-d9.PlumbingOptions.property.intermediateStorage"></a>
|
|
8562
8576
|
|
|
8563
8577
|
```typescript
|
package/CHANGELOG.md
CHANGED
package/docs/D9-plumbing.md
CHANGED
|
@@ -31,6 +31,7 @@ The d9 environment (`.env`, environment variables) is read through `@wbce-d9/api
|
|
|
31
31
|
| Flag | Fallback |
|
|
32
32
|
| --- | --- |
|
|
33
33
|
| `--host <host>` | `DB_HOST` |
|
|
34
|
+
| `--port <port>` | `DB_PORT`, else `5432` |
|
|
34
35
|
| `--user <user>` | `DB_USER` |
|
|
35
36
|
| `--password <password>` | `DB_PASSWORD` |
|
|
36
37
|
| `--database <database>` | `DB_DATABASE` |
|
|
@@ -50,6 +51,10 @@ A storage shared between environments, used to transfer the files referenced by
|
|
|
50
51
|
|
|
51
52
|
`save`, `apply-schema` and `first-import` skip the file sync when no intermediate storage is configured, or when it is disabled with `--no-files` or `SKIP_FILE_SYNC=true`.
|
|
52
53
|
|
|
54
|
+
### Common folder
|
|
55
|
+
|
|
56
|
+
The d9 folder whose files are saved and transferred (see [`push-files` / `pull-files`](#push-files--pull-files)) is `--common-folder <name>`, else `COMMON_FOLDER_NAME`, else `commonFolderName` in `d9-plumbing.json` (`project.configurePlumbing({ commonFolderName })`), else `d9-plumbing-common`.
|
|
57
|
+
|
|
53
58
|
### Logging
|
|
54
59
|
|
|
55
60
|
The log level is `LOG_LEVEL`, else `logLevel` in `d9-plumbing.json` (`project.configurePlumbing({ logLevel })`), else `debug`.
|
|
@@ -65,7 +70,7 @@ The schema is dumped and diffed with [Atlas](https://atlasgo.io/) Community Edit
|
|
|
65
70
|
Saves the current d9 into the repository, then pushes its files to the intermediate storage.
|
|
66
71
|
|
|
67
72
|
1. Dumps the schema into `sql/schema.sql`.
|
|
68
|
-
2. Empties `sql/data` and dumps one CSV per table: every `directus_*` table except `directus_users`, `directus_sessions`, `directus_revisions`, `directus_activity` and `directus_presets`, plus the tables of `sql/tables_to_dump.txt`, minus those of `sql/tables_not_to_dump.txt`. Columns referencing a user are replaced by a fixed CI user. `directus_files` and `directus_folders` are limited to the `d9-plumbing-common`
|
|
73
|
+
2. Empties `sql/data` and dumps one CSV per table: every `directus_*` table except `directus_users`, `directus_sessions`, `directus_revisions`, `directus_activity` and `directus_presets`, plus the tables of `sql/tables_to_dump.txt`, minus those of `sql/tables_not_to_dump.txt`. Columns referencing a user are replaced by a fixed CI user. `directus_files` and `directus_folders` are limited to the common folder (`d9-plumbing-common` by default) and its subfolders.
|
|
69
74
|
3. Regenerates the Cedar policies in `permissions/` (see [`d9-to-cedar`](#d9-to-cedar)).
|
|
70
75
|
4. Pushes the files to the intermediate storage (see [`push-files`](#push-files--pull-files)), unless the [file sync is skipped](#intermediate-storage).
|
|
71
76
|
|
|
@@ -122,7 +127,7 @@ npx d9-plumbing check-unsaved --last-save 1b3387a
|
|
|
122
127
|
|
|
123
128
|
Syncs the files listed in `sql/data/directus_files.csv` from the current storage to the intermediate storage (`push-files`), or the other way (`pull-files`). Run by `save` and `apply-schema`.
|
|
124
129
|
|
|
125
|
-
Only the files of the d9 folder
|
|
130
|
+
Only the files of the common d9 folder (`d9-plumbing-common` by default, see [Common folder](#common-folder)) and its subfolders are saved and transferred: `save` dumps only those rows of `directus_files` and `directus_folders`, so everything else stays local to its environment. Put the files shared by all environments (logos, default images...) in it.
|
|
126
131
|
|
|
127
132
|
Options: [storage](#current-storage), [intermediate storage](#intermediate-storage).
|
|
128
133
|
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
user: string;
|
|
4
|
-
pwd: string;
|
|
5
|
-
database: string;
|
|
6
|
-
ssl?: boolean;
|
|
7
|
-
}): Promise<void>;
|
|
1
|
+
import { DbConfig } from './env';
|
|
2
|
+
export declare function applySQLSnapshot(dbConfig: DbConfig): Promise<void>;
|
|
@@ -17,6 +17,7 @@ async function applySQLSnapshot(dbConfig) {
|
|
|
17
17
|
const connectionProps = {
|
|
18
18
|
user: dbConfig.user,
|
|
19
19
|
host: dbConfig.host,
|
|
20
|
+
port: dbConfig.port,
|
|
20
21
|
password: dbConfig.pwd,
|
|
21
22
|
database: 'postgres',
|
|
22
23
|
...(dbConfig.ssl ? { ssl: { rejectUnauthorized: false } } : {}),
|
|
@@ -94,9 +95,9 @@ async function applySQLSnapshot(dbConfig) {
|
|
|
94
95
|
'schema',
|
|
95
96
|
'diff',
|
|
96
97
|
'--from',
|
|
97
|
-
`postgres://${encodeURIComponent(dbConfig.user)}:${encodeURIComponent(dbConfig.pwd)}@${dbConfig.host}/${dbConfig.database}?sslmode=${dbConfig.ssl ? 'require' : 'disable'}`,
|
|
98
|
+
`postgres://${encodeURIComponent(dbConfig.user)}:${encodeURIComponent(dbConfig.pwd)}@${dbConfig.host}:${dbConfig.port}/${dbConfig.database}?sslmode=${dbConfig.ssl ? 'require' : 'disable'}`,
|
|
98
99
|
'--to',
|
|
99
|
-
`postgres://${encodeURIComponent(dbConfig.user)}:${encodeURIComponent(dbConfig.pwd)}@${dbConfig.host}/${dbConfig.database}_tmp_bis?sslmode=${dbConfig.ssl ? 'require' : 'disable'}`,
|
|
100
|
+
`postgres://${encodeURIComponent(dbConfig.user)}:${encodeURIComponent(dbConfig.pwd)}@${dbConfig.host}:${dbConfig.port}/${dbConfig.database}_tmp_bis?sslmode=${dbConfig.ssl ? 'require' : 'disable'}`,
|
|
100
101
|
], {
|
|
101
102
|
env: {
|
|
102
103
|
...process.env,
|
|
@@ -165,7 +166,7 @@ async function applySQLSnapshot(dbConfig) {
|
|
|
165
166
|
let existingRowsCanCauseConflict = false;
|
|
166
167
|
if (['directus_files', 'directus_folders'].includes(nonParsedTableName)) {
|
|
167
168
|
//delete all files and folders that are inside the "d9-plumbing-common" folder
|
|
168
|
-
const commonFolderName =
|
|
169
|
+
const commonFolderName = pg.escapeLiteral(dbConfig.commonFolderName);
|
|
169
170
|
const folderKey = {
|
|
170
171
|
directus_files: 'folder',
|
|
171
172
|
directus_folders: 'parent',
|
|
@@ -175,7 +176,7 @@ async function applySQLSnapshot(dbConfig) {
|
|
|
175
176
|
-- Anchor: the "d9-plumbing-common" folder
|
|
176
177
|
SELECT id
|
|
177
178
|
FROM directus_folders
|
|
178
|
-
WHERE name =
|
|
179
|
+
WHERE name = ${commonFolderName}
|
|
179
180
|
UNION
|
|
180
181
|
-- Recursive step: find subfolders
|
|
181
182
|
SELECT f.id
|
|
@@ -284,4 +285,4 @@ async function applySQLSnapshot(dbConfig) {
|
|
|
284
285
|
//flows, operations and webhooks are loaded in memory at startup and only reloaded by their own services: a restart is needed.
|
|
285
286
|
logger_1.logger.warn('Purge the d9 cache (POST /utils/cache/clear) to take the new schema (and permissions, if CACHE_ENABLED) into account. If flows, operations or webhooks changed, also restart d9.');
|
|
286
287
|
}
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktc25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL3NhdmUvYXBwbHktc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFjQSw0Q0FrVEM7QUFoVUQseUJBQXlCO0FBQ3pCLG1DQUE4RDtBQUM5RCwrQkFBaUM7QUFDakMseUJBQXlCO0FBQ3pCLHFEQUFtRDtBQUNuRCwrQkFBNEI7QUFDNUIsbUNBQThDO0FBQzlDLHVDQUEwQztBQUMxQyx5Q0FBc0M7QUFFdEMsTUFBTSxPQUFPLEdBQUcsSUFBQSxnQkFBUyxFQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxNQUFNLFFBQVEsR0FBRyxJQUFBLGdCQUFTLEVBQUMsaUJBQWMsQ0FBQyxDQUFDO0FBR3BDLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxRQU10QztJQUNDLElBQUksUUFBbUIsQ0FBQztJQUN4QixNQUFNLGVBQWUsR0FBb0I7UUFDdkMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1FBQ25CLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtRQUNuQixRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUc7UUFDdEIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ2hFLENBQUM7SUFDQSxRQUFRO0lBQ1IsMEJBQTBCO0lBQzFCLGdDQUFnQztJQUNoQywwQkFBMEI7SUFDNUIsUUFBUSxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxQyxlQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxRQUFRLENBQUMsUUFBUSxVQUFVLENBQUMsQ0FBQztJQUM1RSxNQUFNLFFBQVEsQ0FBQyxP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SSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFFdkMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxlQUFNLENBQUMsS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7UUFDaEYsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWpDLE1BQU0sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNyQixNQUFNLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0Qsa0lBQWtJO0lBQ2xJLDhIQUE4SDtJQUM5SCxlQUFNLENBQUMsSUFBSSxDQUFDLGtMQUFrTCxDQUFDLENBQUM7QUFDbE0sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IHBpcGVsaW5lIGFzIHN0cmVhbVBpcGVsaW5lLCBXcml0YWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIHBnIGZyb20gJ3BnJztcbmltcG9ydCB7IGZyb20gYXMgY29weUZyb20gfSBmcm9tICdwZy1jb3B5LXN0cmVhbXMnO1xuaW1wb3J0IHsgQ2xpIH0gZnJvbSAnLi9jbGknO1xuaW1wb3J0IHsgcmVhZEZpcnN0TGluZU9mRmlsZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZW5zdXJlQXRsYXMgfSBmcm9tICcuLi8uLi9hdGxhcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi9sb2dnZXInO1xuXG5jb25zdCByZWFkZGlyID0gcHJvbWlzaWZ5KGZzLnJlYWRkaXIpO1xuY29uc3QgcGlwZWxpbmUgPSBwcm9taXNpZnkoc3RyZWFtUGlwZWxpbmUpO1xuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseVNRTFNuYXBzaG90KGRiQ29uZmlnOiB7XG4gIGhvc3Q6IHN0cmluZztcbiAgdXNlcjogc3RyaW5nO1xuICBwd2Q6IHN0cmluZztcbiAgZGF0YWJhc2U6IHN0cmluZztcbiAgc3NsPzogYm9vbGVhbjtcbn0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IHBnQ2xpZW50OiBwZy5DbGllbnQ7XG4gIGNvbnN0IGNvbm5lY3Rpb25Qcm9wczogcGcuQ2xpZW50Q29uZmlnID0ge1xuICAgIHVzZXI6IGRiQ29uZmlnLnVzZXIsXG4gICAgaG9zdDogZGJDb25maWcuaG9zdCxcbiAgICBwYXNzd29yZDogZGJDb25maWcucHdkLFxuICAgIGRhdGFiYXNlOiAncG9zdGdyZXMnLFxuICAgIC4uLihkYkNvbmZpZy5zc2wgPyB7IHNzbDogeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0gfSA6IHt9KSxcbiAgfTtcbiAgICAvL1NDSEVNQVxuICAgIC8vMS4gd2UgY3JlYXRlIGFuIGVtcHR5IGRiXG4gICAgLy8yLiB3ZSBwb3B1bGF0ZSB3aXRoIHRoZSBzY2hlbWFcbiAgICAvLzMuIHdlIGNhbGN1bGF0ZSB0aGUgZGlmZlxuICBwZ0NsaWVudCA9IG5ldyBwZy5DbGllbnQoY29ubmVjdGlvblByb3BzKTtcbiAgbG9nZ2VyLmluZm8oYENyZWF0aW5nIHRoZSB0ZW1wb3JhcnkgZGF0YWJhc2UgJHtkYkNvbmZpZy5kYXRhYmFzZX1fdG1wX2Jpc2ApO1xuICBhd2FpdCBwZ0NsaWVudC5jb25uZWN0KCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgcGdDbGllbnQucXVlcnkoYERST1AgREFUQUJBU0UgSUYgRVhJU1RTICR7ZGJDb25maWcuZGF0YWJhc2V9X3RtcF9iaXNgKTtcbiAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShgQ1JFQVRFIERBVEFCQVNFICR7ZGJDb25maWcuZGF0YWJhc2V9X3RtcF9iaXM7YCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcGdDbGllbnQuZW5kKCk7XG4gIH1cbiAgY29ubmVjdGlvblByb3BzLmRhdGFiYXNlID0gYCR7ZGJDb25maWcuZGF0YWJhc2V9X3RtcF9iaXNgO1xuICBwZ0NsaWVudCA9IG5ldyBwZy5DbGllbnQoY29ubmVjdGlvblByb3BzKTtcblxuICBjb25zdCBlbmREYkNsaWVudCA9IG5ldyBwZy5DbGllbnQoe1xuICAgIC4uLmNvbm5lY3Rpb25Qcm9wcyxcbiAgICBkYXRhYmFzZTogZGJDb25maWcuZGF0YWJhc2UsXG4gIH0pO1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKFtwZ0NsaWVudC5jb25uZWN0KCksIGVuZERiQ2xpZW50LmNvbm5lY3QoKV0pO1xuXG4gIGxldCBzcWxNaWdyYXRpb24gPSAnJztcbiAgdHJ5IHtcbiAgICBsb2dnZXIuaW5mbygnTG9hZGluZyB0aGUgdGFyZ2V0IHNjaGVtYSBpbnRvIHRoZSB0ZW1wb3JhcnkgZGF0YWJhc2UnKTtcbiAgICAvL3dlIG1hbnVhbGx5IGluc3RhbGwgcG9zdGdpcyBhbmQgc29tZSBleHRlbnNpb25zLiBXZSBzaG91bGQgZG8gYSBkdW1wIG9mIHNxbCBleHRlbnNpb25zIGJ1dCB3ZSBhcmUgd2FpdGluZyBmb3IgYXRsYXNnbyB0byBzdXBwb3J0IHRoaXMgKHRpbWUgb2Ygd3JpdGluZyA6IDE5LzAzIC0gYXRsYXNnbyByZWxlYXNlZCBleHRlbnNpb25zIHN1cHBvcnQgYnV0IG5vdCBpbiB0aGUgY29tbXVuaXR5IHZlcnNpb24pXG4gICAgbGV0IGV4dGVuc2lvblF1ZXJ5ID0gYFxuICAgICAgICAgICAgY3JlYXRlIGV4dGVuc2lvbiBpZiBub3QgZXhpc3RzIHBvc3RnaXM7XG4gICAgICAgICAgICBjcmVhdGUgZXh0ZW5zaW9uIGlmIG5vdCBleGlzdHMgZnV6enlzdHJtYXRjaDtcbiAgICAgICAgICAgIGNyZWF0ZSBleHRlbnNpb24gaWYgbm90IGV4aXN0cyBwb3N0Z2lzX3RpZ2VyX2dlb2NvZGVyIDtcbiAgICAgICAgICAgIGNyZWF0ZSBleHRlbnNpb24gaWYgbm90IGV4aXN0cyBwb3N0Z2lzX3Jhc3RlciA7XG4gICAgICAgICAgICBjcmVhdGUgZXh0ZW5zaW9uIGlmIG5vdCBleGlzdHMgcG9zdGdpc190b3BvbG9neSA7XG4gICAgICAgICAgICBjcmVhdGUgZXh0ZW5zaW9uIGlmIG5vdCBleGlzdHMgYWRkcmVzc19zdGFuZGFyZGl6ZXIgO1xuICAgICAgICBgO1xuICAgIC8vdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGR1bXAgaW4gYXRsYXMgOiBzY2hlbWEgYXJlIGNyZWF0ZWQgd2l0aCBDUkVBVEUgYW5kIG5vdCBjcmVhdGUgaWYgbm90IGV4aXRzLi4uXG4gICAgLy9zbyB3ZSBpbnNlcnQgZXh0ZW5zaW9uIGNyZWF0aW9uIGFmdGVyIHNjaGVtYSBjcmVhdGlvbiBpbiBvcmRlciB0byBhdm9pZCBnZXR0aW5nIFwic2NoZW1hIGFscmVhZHkgZXhpc3RzXCJcbiAgICBjb25zdCBzcWxTY2hlbWEgPSBmcy5yZWFkRmlsZVN5bmMoJy4vc3FsL3NjaGVtYS5zcWwnKS50b1N0cmluZygpO1xuICAgIGNvbnN0IHNxbFNjaGVtYVdpdGhFeHRlbnNpb24gPSBzcWxTY2hlbWFcbiAgICAgIC5yZXBsYWNlKFxuICAgICAgICAnQ1JFQVRFIFRBQkxFJyxcbiAgICAgICAgYCR7ZXh0ZW5zaW9uUXVlcnl9XG4gICAgICAgICAgICBDUkVBVEUgVEFCTEVgLFxuICAgICAgKSAvL29ubHkgZmlyc3Qgb2NjdXJyZW5jZSB3aWxsIGJlIHJlcGxhY2VkXG4gICAgICAucmVwbGFjZSgvQ1JFQVRFIFNDSEVNQSBJRiBOT1QgRVhJU1RTL2csICdDUkVBVEUgU0NIRU1BJylcbiAgICAgIC5yZXBsYWNlKC9DUkVBVEUgU0NIRU1BL2csICdDUkVBVEUgU0NIRU1BIElGIE5PVCBFWElTVFMnKTsgLy9lbnN1cmUgYWxsIGNyZWF0ZSBzY2hlbWEgdXNlIFwiaWYgbm90IGV4aXN0c1wiXG4gICAgLy9pZiB0YXJnZXQgZGF0YWJhc2UgZG9lcyBub3QgY29udGFpbiBhbnkgZDkgdGFibGVzIHdlIGp1c3QgbmVlZCB0byBwb3B1bGF0ZSB0aGUgYmFzZSBzY2hlbWEuXG4gICAgY29uc3QgY291bnRUYWJsZXNSZXEgPSBgXG4gICAgICAgICAgICBTRUxFQ1QgQ09VTlQoKikgXG4gICAgICAgICAgICBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgXG4gICAgICAgICAgICBXSEVSRSB0YWJsZV9zY2hlbWEgPSAncHVibGljJyBBTkQgdGFibGVfbmFtZSBMSUtFICdkaXJlY3R1c18lJztcbiAgICAgICAgYDtcbiAgICBjb25zdCBjb3VudFRhYmxlcyA9IGF3YWl0IGVuZERiQ2xpZW50LnF1ZXJ5KGNvdW50VGFibGVzUmVxKTtcbiAgICBpZiAoTnVtYmVyKGNvdW50VGFibGVzLnJvd3NbMF0uY291bnQpID09PSAwKSB7XG4gICAgICAvL3dlIGRyb3AgdGhlIGV4dGVuc2lvbiBhbmQgcmVhcHBseSB0aGUgc2NoZW1hIHdpdGggZDlcbiAgICAgIGxvZ2dlci5pbmZvKCdUYXJnZXQgZGF0YWJhc2UgaGFzIG5vIGQ5IHRhYmxlczogY3JlYXRpbmcgdGhlIHNjaGVtYSBkaXJlY3RseScpO1xuICAgICAgLy9ub3RlIHRoYXQgZmluYWxseSBibG9jayB3aWxsIGJlIGV4ZWN1dGVkLCBldmVuIGlmIHdlIHJldHVyblxuICAgICAgYXdhaXQgZW5kRGJDbGllbnQucXVlcnkoc3FsU2NoZW1hV2l0aEV4dGVuc2lvbik7XG4gICAgfVxuXG4gICAgYXdhaXQgcGdDbGllbnQucXVlcnkoc3FsU2NoZW1hV2l0aEV4dGVuc2lvbik7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcGdDbGllbnQuZW5kKCk7XG4gICAgYXdhaXQgZW5kRGJDbGllbnQuZW5kKCk7XG4gIH1cblxuICAvL3dlIGNhbGN1bGF0ZSB0aGUgZGlmZlxuICBjb25zdCBtaWdyYXRpb25TdHJlYW0gPSBuZXcgV3JpdGFibGUoe1xuICAgIHdyaXRlOiAoY2h1bmssIF9lbmNvZGluZywgbmV4dCkgPT4ge1xuICAgICAgc3FsTWlncmF0aW9uICs9IGNodW5rLnRvU3RyaW5nKCk7XG4gICAgICBuZXh0KCk7XG4gICAgfSxcbiAgfSk7XG4gIGxvZ2dlci5pbmZvKCdDb21wdXRpbmcgdGhlIHNjaGVtYSBkaWZmIHdpdGggYXRsYXMnKTtcbiAgY29uc3QgY2xpID0gbmV3IENsaSgpO1xuICBhd2FpdCBjbGkuY29tbWFuZChcbiAgICBhd2FpdCBlbnN1cmVBdGxhcygpLFxuICAgIFtcbiAgICAgICdzY2hlbWEnLFxuICAgICAgJ2RpZmYnLFxuICAgICAgJy0tZnJvbScsXG4gICAgICBgcG9zdGdyZXM6Ly8ke2VuY29kZVVSSUNvbXBvbmVudChkYkNvbmZpZy51c2VyKX06JHtlbmNvZGVVUklDb21wb25lbnQoZGJDb25maWcucHdkKX1AJHtkYkNvbmZpZy5ob3N0fS8ke2RiQ29uZmlnLmRhdGFiYXNlfT9zc2xtb2RlPSR7ZGJDb25maWcuc3NsID8gJ3JlcXVpcmUnIDogJ2Rpc2FibGUnfWAsXG4gICAgICAnLS10bycsXG4gICAgICBgcG9zdGdyZXM6Ly8ke2VuY29kZVVSSUNvbXBvbmVudChkYkNvbmZpZy51c2VyKX06JHtlbmNvZGVVUklDb21wb25lbnQoZGJDb25maWcucHdkKX1AJHtkYkNvbmZpZy5ob3N0fS8ke2RiQ29uZmlnLmRhdGFiYXNlfV90bXBfYmlzP3NzbG1vZGU9JHtkYkNvbmZpZy5zc2wgPyAncmVxdWlyZScgOiAnZGlzYWJsZSd9YCxcbiAgICBdLFxuICAgIHtcbiAgICAgIGVudjoge1xuICAgICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgICAgQVRMQVNfTk9fVVBEQVRFX05PVElGSUVSOiAndHJ1ZScsIC8vaWYgbm90IHNldCwgYXRsYXMgZW5kIGEgZmluYWwgbGluZSB3aXRoIFwiYSBuZXcgdmVyc2lvbiBvZiBhdGxhcyBpcyBhdmFpbGFibGVcIlxuICAgICAgfSxcbiAgICAgIHN0ZG91dDogbWlncmF0aW9uU3RyZWFtLFxuICAgIH0sXG4gICk7XG4gIGlmIChzcWxNaWdyYXRpb24uaW5jbHVkZXMoJ25vIGNoYW5nZXMgdG8gYmUgbWFkZScpKSB7XG4gICAgc3FsTWlncmF0aW9uID0gJyc7XG4gIH1cbiAgaWYgKHNxbE1pZ3JhdGlvbi50cmltKCkpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRzID0gc3FsTWlncmF0aW9uLnNwbGl0KCdcXG4nKS5maWx0ZXIoKGxpbmUpID0+IGxpbmUudHJpbSgpLmVuZHNXaXRoKCc7JykpLmxlbmd0aDtcbiAgICBsb2dnZXIuaW5mbyhgU2NoZW1hIG1pZ3JhdGlvbjogJHtzdGF0ZW1lbnRzfSBzdGF0ZW1lbnRzYCk7XG4gICAgbG9nZ2VyLmRlYnVnKHNxbE1pZ3JhdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgbG9nZ2VyLmluZm8oJ1NjaGVtYSBpcyB1cCB0byBkYXRlJyk7XG4gIH1cbiAgLy93ZSBhcHBseSB0aGUgZGlmZnMgaW4gc2NoZW1hIGFuZCBkYXRhIGluIG9uZSB0cmFuc2FjdGlvblxuICBjb25zdCBwZ1RtcENsaWVudCA9IG5ldyBwZy5DbGllbnQoY29ubmVjdGlvblByb3BzKTtcbiAgY29ubmVjdGlvblByb3BzLmRhdGFiYXNlID0gZGJDb25maWcuZGF0YWJhc2U7XG4gIHBnQ2xpZW50ID0gbmV3IHBnLkNsaWVudChjb25uZWN0aW9uUHJvcHMpO1xuICBhd2FpdCBQcm9taXNlLmFsbChbcGdDbGllbnQuY29ubmVjdCgpLCBwZ1RtcENsaWVudC5jb25uZWN0KCldKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeSgnQkVHSU4nKTtcbiAgICBsb2dnZXIuaW5mbygnQXBwbHlpbmcgdGhlIHNjaGVtYSBtaWdyYXRpb24nKTtcbiAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShzcWxNaWdyYXRpb24pO1xuICAgIC8vc3RyYXRlZ3kgdG8gYXBwbHkgZGF0YSA6XG4gICAgLy8tIHJlbW92ZSB0aGUgY29uc3RyYWludFxuICAgIC8vLSB1cHNlcnQgdGhlIGRhdGFcbiAgICAvLy0gYXBwbHkgdGhlIGNvbnN0cmFpbnRcblxuICAgIC8vYWx3YXlzIGJlIHN1cmUgdGhlIGNpIHVzZXIgZXhpc3RzXG4gICAgYXdhaXQgcGdDbGllbnQucXVlcnkoYFxuICAgICAgICAgICAgSU5TRVJUIElOVE8gcHVibGljLmRpcmVjdHVzX3VzZXJzIChpZCwgZmlyc3RfbmFtZSwgbGFzdF9uYW1lLCBlbWFpbClcbiAgICAgICAgICAgIFZBTFVFUyAoJzQ5YmNkZTVkLTkwYWEtNGJlOC1hYjEwLWY5YWUxYTA3NTQ2ZicsICdDSScsICdEOS1wbHVtYmluZycsICdkOUB3ZWJjYXBzdWxlLmlvJylcbiAgICAgICAgICAgIE9OIENPTkZMSUNUIERPIE5PVEhJTkdcbiAgICAgICAgYCk7XG5cbiAgICAvL2ZvciBjb25zdHJhaW50cyBzZWUgdGhpcyA6XG4gICAgLy9odHRwczovL2NvbmZsdWVuY2UuYXRsYXNzaWFuLmNvbS9rYi9ob3ctdG8tZHJvcC1hbmQtcmVjcmVhdGUtdGhlLWRhdGFiYXNlLWNvbnN0cmFpbnRzLW9uLXBvc3RncmVzcWwtNzc2ODEyNDUwLmh0bWxcbiAgICAvL3dlIGdldCBhbGwgdGhlIGNvbnN0cmFpbnRzIGV4Y2VwdCB0aGUgcHJpbWFyeSBrZXlzXG4gICAgY29uc3QgY29uc3RyYWludHMgPSBhd2FpdCBwZ0NsaWVudC5xdWVyeShgXG4gICAgICAgICAgICBTRUxFQ1QgbnNwbmFtZSwgcmVsbmFtZSwgY29ubmFtZSwgcGdfZ2V0X2NvbnN0cmFpbnRkZWYocGdfY29uc3RyYWludC5vaWQpXG4gICAgICAgICAgICBGUk9NIHBnX2NvbnN0cmFpbnRcbiAgICAgICAgICAgIElOTkVSIEpPSU4gcGdfY2xhc3MgT04gY29ucmVsaWQ9cGdfY2xhc3Mub2lkXG4gICAgICAgICAgICBJTk5FUiBKT0lOIHBnX25hbWVzcGFjZSBPTiBwZ19uYW1lc3BhY2Uub2lkPXBnX2NsYXNzLnJlbG5hbWVzcGFjZVxuICAgICAgICAgICAgV0hFUkUgTk9UIG5zcG5hbWUgPSAncGdfY2F0YWxvZycgQU5EIE5PVCBjb250eXBlID0gJ3AnXG4gICAgICAgICAgICBPUkRFUiBCWSBDQVNFIFdIRU4gY29udHlwZT0nZicgVEhFTiAwIEVMU0UgMSBFTkQgREVTQyxjb250eXBlIERFU0MsbnNwbmFtZSBERVNDLHJlbG5hbWUgREVTQyxjb25uYW1lIERFU0NcbiAgICAgICAgYCk7XG5cbiAgICAvL3JlbW92ZSB0aGUgY29uc3RyYWludHNcbiAgICBsb2dnZXIuaW5mbyhgRHJvcHBpbmcgJHtjb25zdHJhaW50cy5yb3dzLmxlbmd0aH0gY29uc3RyYWludHNgKTtcbiAgICAvL3RoZSBxdWVyeSBhYm92ZSBpcyBib3RoIGZvciBhZGRpbmcgb3IgZHJvcHBpbmcgb3JkZXIuIEZvciBkcm9wcGluZywgd2UgbmVlZCB0byByZXZlcnNlIHRoZSBvcmRlclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uc3RyYWludHMucm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY29uc3RyYWludCA9IGNvbnN0cmFpbnRzLnJvd3NbY29uc3RyYWludHMucm93cy5sZW5ndGggLSAxIC0gaV07XG4gICAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShgXG4gICAgICAgICAgICAgICAgQUxURVIgVEFCTEUgJHtjb25zdHJhaW50Lm5zcG5hbWV9LlwiJHtjb25zdHJhaW50LnJlbG5hbWV9XCIgRFJPUCBDT05TVFJBSU5UIFwiJHtjb25zdHJhaW50LmNvbm5hbWV9XCJcbiAgICAgICAgICAgIGApO1xuICAgIH1cblxuICAgIC8vcmVwbGFjZSBkYXRhXG4gICAgY29uc3QgY3N2RmlsZXMgPSBhd2FpdCByZWFkZGlyKCcuL3NxbC9kYXRhJyk7XG4gICAgbG9nZ2VyLmluZm8oYEltcG9ydGluZyAke2NzdkZpbGVzLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5lbmRzV2l0aCgnLmNzdicpKS5sZW5ndGh9IENTViBmaWxlcyBmcm9tIC4vc3FsL2RhdGFgKTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgY3N2RmlsZXMpIHtcbiAgICAgIGlmIChmaWxlLmVuZHNXaXRoKCcuY3N2JykpIHtcbiAgICAgICAgY29uc3Qgbm9uUGFyc2VkVGFibGVOYW1lID0gZmlsZS5zbGljZSgwLCAtNCk7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVGFibGVOYW1lID0gcGcuZXNjYXBlSWRlbnRpZmllcihub25QYXJzZWRUYWJsZU5hbWUpO1xuICAgICAgICBsZXQgY29weVRhYmxlTmFtZSA9IG9yaWdpbmFsVGFibGVOYW1lO1xuICAgICAgICBsZXQgZXhpc3RpbmdSb3dzQ2FuQ2F1c2VDb25mbGljdCA9IGZhbHNlO1xuICAgICAgICBpZiAoWydkaXJlY3R1c19maWxlcycsICdkaXJlY3R1c19mb2xkZXJzJ10uaW5jbHVkZXMobm9uUGFyc2VkVGFibGVOYW1lKSkge1xuICAgICAgICAgIC8vZGVsZXRlIGFsbCBmaWxlcyBhbmQgZm9sZGVycyB0aGF0IGFyZSBpbnNpZGUgdGhlIFwiZDktcGx1bWJpbmctY29tbW9uXCIgZm9sZGVyXG4gICAgICAgICAgY29uc3QgY29tbW9uRm9sZGVyTmFtZSA9ICdkOS1wbHVtYmluZy1jb21tb24nO1xuICAgICAgICAgIGNvbnN0IGZvbGRlcktleTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgICAgIGRpcmVjdHVzX2ZpbGVzOiAnZm9sZGVyJyxcbiAgICAgICAgICAgIGRpcmVjdHVzX2ZvbGRlcnM6ICdwYXJlbnQnLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYXdhaXQgcGdDbGllbnQucXVlcnkoYCBcbiAgICAgICAgICAgICAgICAgICAgICAgIFdJVEggUkVDVVJTSVZFIGZvbGRlcl90cmVlIEFTIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIEFuY2hvcjogdGhlIFwiZDktcGx1bWJpbmctY29tbW9uXCIgZm9sZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBkaXJlY3R1c19mb2xkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgbmFtZSA9ICcke2NvbW1vbkZvbGRlck5hbWV9J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JT05cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBSZWN1cnNpdmUgc3RlcDogZmluZCBzdWJmb2xkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGYuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIGRpcmVjdHVzX2ZvbGRlcnMgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpPSU4gZm9sZGVyX3RyZWUgZnQgT04gZi5wYXJlbnQgPSBmdC5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgREVMRVRFIEZST00gcHVibGljLiR7Y29weVRhYmxlTmFtZX0gQVMgdFxuICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgdC4ke2ZvbGRlcktleVtub25QYXJzZWRUYWJsZU5hbWVdfSBJTiAoU0VMRUNUIGlkIEZST00gZm9sZGVyX3RyZWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYCk7XG4gICAgICAgICAgaWYgKG5vblBhcnNlZFRhYmxlTmFtZSA9PT0gJ2RpcmVjdHVzX2ZvbGRlcnMnKSB7XG4gICAgICAgICAgICBleGlzdGluZ1Jvd3NDYW5DYXVzZUNvbmZsaWN0ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgcGdDbGllbnQucXVlcnkoYERFTEVURSBGUk9NIHB1YmxpYy4ke2NvcHlUYWJsZU5hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4aXN0aW5nUm93c0NhbkNhdXNlQ29uZmxpY3QpIHtcbiAgICAgICAgICAvL3dlIHdpbGwgaW1wb3J0IGRhdGEgaW4gYSB0ZW1wb3JhcnkgdGFibGUsIHRoZW4gZG8gdGhlIGluc2VydFxuICAgICAgICAgIGNvcHlUYWJsZU5hbWUgPSBwZy5lc2NhcGVJZGVudGlmaWVyKGAke25vblBhcnNlZFRhYmxlTmFtZX1fd2JjZV90bXBgKTtcbiAgICAgICAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShcbiAgICAgICAgICAgIGBDUkVBVEUgVEVNUCBUQUJMRSAke2NvcHlUYWJsZU5hbWV9IE9OIENPTU1JVCBEUk9QIEFTIFNFTEVDVCAqIEZST00gcHVibGljLiR7b3JpZ2luYWxUYWJsZU5hbWV9IFdJVEggTk8gREFUQWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvL3JlYWQgZmlyc3QgbGluZVxuICAgICAgICBsZXQgZmlyc3RMaW5lID0gYXdhaXQgcmVhZEZpcnN0TGluZU9mRmlsZShgLi9zcWwvZGF0YS8ke2ZpbGV9YCk7XG4gICAgICAgIGZpcnN0TGluZSA9IGZpcnN0TGluZVxuICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgLm1hcCgoYykgPT4gYFwiJHtjfVwiYClcbiAgICAgICAgICAuam9pbignLCcpO1xuICAgICAgICBjb25zdCBpbmdlc3RTdHJlYW0gPSBwZ0NsaWVudC5xdWVyeShcbiAgICAgICAgICBjb3B5RnJvbShcbiAgICAgICAgICAgIGBDT1BZICR7Y29weVRhYmxlTmFtZX0gKCR7Zmlyc3RMaW5lfSkgIEZST00gU1RESU4gIERFTElNSVRFUiAnLCcgQ1NWIEhFQURFUmAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc291cmNlU3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShgLi9zcWwvZGF0YS8ke2ZpbGV9YCk7XG4gICAgICAgIGluZ2VzdFN0cmVhbS5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKGBpbmdlc3RlZCAke2ZpbGV9YCk7XG4gICAgICAgIH0pO1xuICAgICAgICBsb2dnZXIuZGVidWcoYGluZ2VzdGluZyAke2ZpbGV9YCk7XG5cbiAgICAgICAgYXdhaXQgcGlwZWxpbmUoc291cmNlU3RyZWFtLCBpbmdlc3RTdHJlYW0pO1xuICAgICAgICBpZiAoZXhpc3RpbmdSb3dzQ2FuQ2F1c2VDb25mbGljdCkge1xuICAgICAgICAgIGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcblx0XHRcdFx0XHRcdFx0REVMRVRFIEZST00gcHVibGljLiR7b3JpZ2luYWxUYWJsZU5hbWV9XG5cdFx0XHRcdFx0XHRcdFdIRVJFIGlkIElOIChTRUxFQ1QgaWQgRlJPTSAke2NvcHlUYWJsZU5hbWV9KTtcblx0XHRcdFx0XHRcdGApO1xuICAgICAgICAgIGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcblx0XHRcdFx0XHRcdFx0SU5TRVJUIElOVE8gcHVibGljLiR7b3JpZ2luYWxUYWJsZU5hbWV9XG5cdFx0XHRcdFx0XHRcdFNFTEVDVCAqIEZST00gJHtjb3B5VGFibGVOYW1lfTtcblx0XHRcdFx0XHRcdGApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9yZWVzdGFibGlzaCB0aGUgY29uc3RyYWludHNcbiAgICBsb2dnZXIuaW5mbyhgUmVzdG9yaW5nICR7Y29uc3RyYWludHMucm93cy5sZW5ndGh9IGNvbnN0cmFpbnRzYCk7XG4gICAgZm9yIChjb25zdCBjb25zdHJhaW50IG9mIGNvbnN0cmFpbnRzLnJvd3MpIHtcbiAgICAgIGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcbiAgICAgICAgICAgICAgICBBTFRFUiBUQUJMRSAke2NvbnN0cmFpbnQubnNwbmFtZX0uXCIke2NvbnN0cmFpbnQucmVsbmFtZX1cIiBBREQgQ09OU1RSQUlOVCBcIiR7Y29uc3RyYWludC5jb25uYW1lfVwiICAke2NvbnN0cmFpbnQucGdfZ2V0X2NvbnN0cmFpbnRkZWZ9XG4gICAgICAgICAgICBgKTtcbiAgICB9XG5cbiAgICAvL3VwZGF0ZSB0aGUgc2VxdWVuY2VzXG4gICAgLy93aGVuIGFkZGluZyB3aXRoIENPUFksIGFsbCBzZXF1ZW5jZXMgYXJlIG5vdCB1cCB0byBkYXRlXG4gICAgLy93ZSBuZWVkIHRvIGZpbmQgYWxsIHNlcXVlbmNlcyBhbmQgdGhlbiB0byBmaW5kIHRoZSBtYXggb24gdGhlIG1hbmFnZWQgY29sdW1uIGFuZCB0aGVuIHRvIHVwZGF0ZSB0aGUgc2VxdWVuY2VcblxuICAgIGNvbnN0IHNlcXVlbmNlcyA9IGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcbiAgICAgICAgICAgIFNFTEVDVCBuLm5zcG5hbWUgYXMgXCJzY2hlbWFcIixcbiAgICAgICAgICAgICAgICBjLnJlbG5hbWUgYXMgXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgQ0FTRSBjLnJlbGtpbmQgV0hFTiAncicgVEhFTiAndGFibGUnIFdIRU4gJ3YnIFRIRU4gJ3ZpZXcnIFdIRU4gJ20nIFRIRU4gJ21hdGVyaWFsaXplZCB2aWV3JyBXSEVOICdpJyBUSEVOICdpbmRleCcgV0hFTiAnUycgVEhFTiAnc2VxdWVuY2UnIFdIRU4gJ3MnIFRIRU4gJ3NwZWNpYWwnIFdIRU4gJ3QnIFRIRU4gJ1RPQVNUIHRhYmxlJyBXSEVOICdmJyBUSEVOICdmb3JlaWduIHRhYmxlJyBXSEVOICdwJyBUSEVOICdwYXJ0aXRpb25lZCB0YWJsZScgV0hFTiAnSScgVEhFTiAncGFydGl0aW9uZWQgaW5kZXgnIEVORCBhcyBcIlR5cGVcIixcbiAgICAgICAgICAgICAgICBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZChjLnJlbG93bmVyKSBhcyBcIk93bmVyXCJcbiAgICAgICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4gICAgICAgICAgICAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZVxuICAgICAgICAgICAgV0hFUkUgYy5yZWxraW5kIElOICgnUycsJycpXG4gICAgICAgICAgICAgICAgQU5EIG4ubnNwbmFtZSA8PiAncGdfY2F0YWxvZydcbiAgICAgICAgICAgICAgICBBTkQgbi5uc3BuYW1lICF+ICdecGdfdG9hc3QnXG4gICAgICAgICAgICAgICAgQU5EIG4ubnNwbmFtZSA8PiAnaW5mb3JtYXRpb25fc2NoZW1hJ1xuICAgICAgICAgICAgQU5EIHBnX2NhdGFsb2cucGdfdGFibGVfaXNfdmlzaWJsZShjLm9pZClcbiAgICAgICAgICAgIE9SREVSIEJZIDEsMjtcbiAgICAgICAgYCk7XG5cbiAgICBsb2dnZXIuaW5mbyhgUmVzZXR0aW5nICR7c2VxdWVuY2VzLnJvd3MubGVuZ3RofSBzZXF1ZW5jZXNgKTtcbiAgICBmb3IgKGNvbnN0IHNlcSBvZiBzZXF1ZW5jZXMucm93cykge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBmaW5kIGNvbHVtbiBtYW5hZ2VkIGJ5ICR7c2VxLm5hbWV9YCk7XG4gICAgICBjb25zdCByZWxhdGlvbiA9IGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcbiAgICAgICAgICAgICAgICBTRUxFQ1QgZC5yZWZvYmppZDo6cmVnY2xhc3MgYXMgXCJ0YWJsZVwiLCBhLmF0dG5hbWUgYXMgXCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgRlJPTSAgIHBnX2RlcGVuZCAgICBkXG4gICAgICAgICAgICAgICAgSk9JTiAgIHBnX2F0dHJpYnV0ZSBhIE9OIGEuYXR0cmVsaWQgPSBkLnJlZm9iamlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkQgYS5hdHRudW0gICA9IGQucmVmb2Jqc3ViaWRcbiAgICAgICAgICAgICAgICBXSEVSRSAgZC5vYmppZCA9ICcke3NlcS5zY2hlbWF9LlwiJHtzZXEubmFtZX1cIic6OnJlZ2NsYXNzXG4gICAgICAgICAgICAgICAgQU5EICAgIGQucmVmb2Jqc3ViaWQgPiAwXG4gICAgICAgICAgICAgICAgQU5EICAgIGQuY2xhc3NpZCA9ICdwZ19jbGFzcyc6OnJlZ2NsYXNzO1xuICAgICAgICAgICAgYCk7XG4gICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgIGBmaW5kIG1heCBvZiAke3JlbGF0aW9uLnJvd3NbMF0udGFibGV9ICR7cmVsYXRpb24ucm93c1swXS5maWVsZH1gLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG1heCA9IGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcbiAgICAgICAgICAgICAgICBTRUxFQ1QgTUFYKCR7cmVsYXRpb24ucm93c1swXS5maWVsZH0pXG4gICAgICAgICAgICAgICAgRlJPTSAke3JlbGF0aW9uLnJvd3NbMF0udGFibGV9XG4gICAgICAgICAgICBgKTtcblxuICAgICAgaWYgKG1heC5yb3dzWzBdLm1heCAhPT0gbnVsbCkge1xuICAgICAgICBsb2dnZXIuZGVidWcoYHJlc3RhcnQgJHtzZXEubmFtZX0gYXQgJHttYXgucm93c1swXS5tYXggKyAxfWApO1xuICAgICAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShcbiAgICAgICAgICBgYWx0ZXIgc2VxdWVuY2UgJHtzZXEuc2NoZW1hfS5cIiR7c2VxLm5hbWV9XCIgcmVzdGFydCB3aXRoICR7bWF4LnJvd3NbMF0ubWF4ICsgMX07YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeSgnQ09NTUlUJyk7XG4gICAgbG9nZ2VyLmluZm8oJ1RyYW5zYWN0aW9uIGNvbW1pdHRlZCcpO1xuXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBzbmFwc2hvdCwgcm9sbGluZyBiYWNrIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KCdST0xMQkFDSycpO1xuXG4gICAgdGhyb3cgZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBwZ0NsaWVudC5lbmQoKTtcbiAgICBhd2FpdCBwZ1RtcENsaWVudC5lbmQoKTtcbiAgfVxuICAvL3NjaGVtYSAoY29sbGVjdGlvbnMsIGZpZWxkcywgcmVsYXRpb25zKSBpcyBhbHdheXMgY2FjaGVkIChDQUNIRV9TQ0hFTUEpLCBwZXJtaXNzaW9ucyBvbmx5IHdoZW4gQ0FDSEVfRU5BQkxFRDogYSBwdXJnZSBpcyBlbm91Z2guXG4gIC8vZmxvd3MsIG9wZXJhdGlvbnMgYW5kIHdlYmhvb2tzIGFyZSBsb2FkZWQgaW4gbWVtb3J5IGF0IHN0YXJ0dXAgYW5kIG9ubHkgcmVsb2FkZWQgYnkgdGhlaXIgb3duIHNlcnZpY2VzOiBhIHJlc3RhcnQgaXMgbmVlZGVkLlxuICBsb2dnZXIud2FybignUHVyZ2UgdGhlIGQ5IGNhY2hlIChQT1NUIC91dGlscy9jYWNoZS9jbGVhcikgdG8gdGFrZSB0aGUgbmV3IHNjaGVtYSAoYW5kIHBlcm1pc3Npb25zLCBpZiBDQUNIRV9FTkFCTEVEKSBpbnRvIGFjY291bnQuIElmIGZsb3dzLCBvcGVyYXRpb25zIG9yIHdlYmhvb2tzIGNoYW5nZWQsIGFsc28gcmVzdGFydCBkOS4nKTtcbn1cblxuIl19
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktc25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL3NhdmUvYXBwbHktc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFlQSw0Q0E2U0M7QUE1VEQseUJBQXlCO0FBQ3pCLG1DQUE4RDtBQUM5RCwrQkFBaUM7QUFDakMseUJBQXlCO0FBQ3pCLHFEQUFtRDtBQUNuRCwrQkFBNEI7QUFFNUIsbUNBQThDO0FBQzlDLHVDQUEwQztBQUMxQyx5Q0FBc0M7QUFFdEMsTUFBTSxPQUFPLEdBQUcsSUFBQSxnQkFBUyxFQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxNQUFNLFFBQVEsR0FBRyxJQUFBLGdCQUFTLEVBQUMsaUJBQWMsQ0FBQyxDQUFDO0FBR3BDLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxRQUFrQjtJQUN2RCxJQUFJLFFBQW1CLENBQUM7SUFDeEIsTUFBTSxlQUFlLEdBQW9CO1FBQ3ZDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtRQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7UUFDbkIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1FBQ25CLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRztRQUN0QixRQUFRLEVBQUUsVUFBVTtRQUNwQixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDaEUsQ0FBQztJQUNBLFFBQVE7SUFDUiwwQkFBMEI7SUFDMUIsZ0NBQWdDO0lBQ2hDLDBCQUEwQjtJQUM1QixRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLFFBQVEsQ0FBQyxRQUFRLFVBQVUs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RyxDQUFDLEdBQUcsQ0FDbEYsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLGVBQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUV2QyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLGVBQU0sQ0FBQyxLQUFLLENBQUMsaUVBQWlFLENBQUMsQ0FBQztRQUNoRixNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFakMsTUFBTSxDQUFDLENBQUM7SUFDVixDQUFDO1lBQVMsQ0FBQztRQUNULE1BQU0sUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxrSUFBa0k7SUFDbEksOEhBQThIO0lBQzlILGVBQU0sQ0FBQyxJQUFJLENBQUMsa0xBQWtMLENBQUMsQ0FBQztBQUNsTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgcGlwZWxpbmUgYXMgc3RyZWFtUGlwZWxpbmUsIFdyaXRhYmxlIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0ICogYXMgcGcgZnJvbSAncGcnO1xuaW1wb3J0IHsgZnJvbSBhcyBjb3B5RnJvbSB9IGZyb20gJ3BnLWNvcHktc3RyZWFtcyc7XG5pbXBvcnQgeyBDbGkgfSBmcm9tICcuL2NsaSc7XG5pbXBvcnQgeyBEYkNvbmZpZyB9IGZyb20gJy4vZW52JztcbmltcG9ydCB7IHJlYWRGaXJzdExpbmVPZkZpbGUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGVuc3VyZUF0bGFzIH0gZnJvbSAnLi4vLi4vYXRsYXMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vbG9nZ2VyJztcblxuY29uc3QgcmVhZGRpciA9IHByb21pc2lmeShmcy5yZWFkZGlyKTtcbmNvbnN0IHBpcGVsaW5lID0gcHJvbWlzaWZ5KHN0cmVhbVBpcGVsaW5lKTtcblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbHlTUUxTbmFwc2hvdChkYkNvbmZpZzogRGJDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IHBnQ2xpZW50OiBwZy5DbGllbnQ7XG4gIGNvbnN0IGNvbm5lY3Rpb25Qcm9wczogcGcuQ2xpZW50Q29uZmlnID0ge1xuICAgIHVzZXI6IGRiQ29uZmlnLnVzZXIsXG4gICAgaG9zdDogZGJDb25maWcuaG9zdCxcbiAgICBwb3J0OiBkYkNvbmZpZy5wb3J0LFxuICAgIHBhc3N3b3JkOiBkYkNvbmZpZy5wd2QsXG4gICAgZGF0YWJhc2U6ICdwb3N0Z3JlcycsXG4gICAgLi4uKGRiQ29uZmlnLnNzbCA/IHsgc3NsOiB7IHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UgfSB9IDoge30pLFxuICB9O1xuICAgIC8vU0NIRU1BXG4gICAgLy8xLiB3ZSBjcmVhdGUgYW4gZW1wdHkgZGJcbiAgICAvLzIuIHdlIHBvcHVsYXRlIHdpdGggdGhlIHNjaGVtYVxuICAgIC8vMy4gd2UgY2FsY3VsYXRlIHRoZSBkaWZmXG4gIHBnQ2xpZW50ID0gbmV3IHBnLkNsaWVudChjb25uZWN0aW9uUHJvcHMpO1xuICBsb2dnZXIuaW5mbyhgQ3JlYXRpbmcgdGhlIHRlbXBvcmFyeSBkYXRhYmFzZSAke2RiQ29uZmlnLmRhdGFiYXNlfV90bXBfYmlzYCk7XG4gIGF3YWl0IHBnQ2xpZW50LmNvbm5lY3QoKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShgRFJPUCBEQVRBQkFTRSBJRiBFWElTVFMgJHtkYkNvbmZpZy5kYXRhYmFzZX1fdG1wX2Jpc2ApO1xuICAgIGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBDUkVBVEUgREFUQUJBU0UgJHtkYkNvbmZpZy5kYXRhYmFzZX1fdG1wX2JpcztgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBwZ0NsaWVudC5lbmQoKTtcbiAgfVxuICBjb25uZWN0aW9uUHJvcHMuZGF0YWJhc2UgPSBgJHtkYkNvbmZpZy5kYXRhYmFzZX1fdG1wX2Jpc2A7XG4gIHBnQ2xpZW50ID0gbmV3IHBnLkNsaWVudChjb25uZWN0aW9uUHJvcHMpO1xuXG4gIGNvbnN0IGVuZERiQ2xpZW50ID0gbmV3IHBnLkNsaWVudCh7XG4gICAgLi4uY29ubmVjdGlvblByb3BzLFxuICAgIGRhdGFiYXNlOiBkYkNvbmZpZy5kYXRhYmFzZSxcbiAgfSk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoW3BnQ2xpZW50LmNvbm5lY3QoKSwgZW5kRGJDbGllbnQuY29ubmVjdCgpXSk7XG5cbiAgbGV0IHNxbE1pZ3JhdGlvbiA9ICcnO1xuICB0cnkge1xuICAgIGxvZ2dlci5pbmZvKCdMb2FkaW5nIHRoZSB0YXJnZXQgc2NoZW1hIGludG8gdGhlIHRlbXBvcmFyeSBkYXRhYmFzZScpO1xuICAgIC8vd2UgbWFudWFsbHkgaW5zdGFsbCBwb3N0Z2lzIGFuZCBzb21lIGV4dGVuc2lvbnMuIFdlIHNob3VsZCBkbyBhIGR1bXAgb2Ygc3FsIGV4dGVuc2lvbnMgYnV0IHdlIGFyZSB3YWl0aW5nIGZvciBhdGxhc2dvIHRvIHN1cHBvcnQgdGhpcyAodGltZSBvZiB3cml0aW5nIDogMTkvMDMgLSBhdGxhc2dvIHJlbGVhc2VkIGV4dGVuc2lvbnMgc3VwcG9ydCBidXQgbm90IGluIHRoZSBjb21tdW5pdHkgdmVyc2lvbilcbiAgICBsZXQgZXh0ZW5zaW9uUXVlcnkgPSBgXG4gICAgICAgICAgICBjcmVhdGUgZXh0ZW5zaW9uIGlmIG5vdCBleGlzdHMgcG9zdGdpcztcbiAgICAgICAgICAgIGNyZWF0ZSBleHRlbnNpb24gaWYgbm90IGV4aXN0cyBmdXp6eXN0cm1hdGNoO1xuICAgICAgICAgICAgY3JlYXRlIGV4dGVuc2lvbiBpZiBub3QgZXhpc3RzIHBvc3RnaXNfdGlnZXJfZ2VvY29kZXIgO1xuICAgICAgICAgICAgY3JlYXRlIGV4dGVuc2lvbiBpZiBub3QgZXhpc3RzIHBvc3RnaXNfcmFzdGVyIDtcbiAgICAgICAgICAgIGNyZWF0ZSBleHRlbnNpb24gaWYgbm90IGV4aXN0cyBwb3N0Z2lzX3RvcG9sb2d5IDtcbiAgICAgICAgICAgIGNyZWF0ZSBleHRlbnNpb24gaWYgbm90IGV4aXN0cyBhZGRyZXNzX3N0YW5kYXJkaXplciA7XG4gICAgICAgIGA7XG4gICAgLy90aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgZHVtcCBpbiBhdGxhcyA6IHNjaGVtYSBhcmUgY3JlYXRlZCB3aXRoIENSRUFURSBhbmQgbm90IGNyZWF0ZSBpZiBub3QgZXhpdHMuLi5cbiAgICAvL3NvIHdlIGluc2VydCBleHRlbnNpb24gY3JlYXRpb24gYWZ0ZXIgc2NoZW1hIGNyZWF0aW9uIGluIG9yZGVyIHRvIGF2b2lkIGdldHRpbmcgXCJzY2hlbWEgYWxyZWFkeSBleGlzdHNcIlxuICAgIGNvbnN0IHNxbFNjaGVtYSA9IGZzLnJlYWRGaWxlU3luYygnLi9zcWwvc2NoZW1hLnNxbCcpLnRvU3RyaW5nKCk7XG4gICAgY29uc3Qgc3FsU2NoZW1hV2l0aEV4dGVuc2lvbiA9IHNxbFNjaGVtYVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgICdDUkVBVEUgVEFCTEUnLFxuICAgICAgICBgJHtleHRlbnNpb25RdWVyeX1cbiAgICAgICAgICAgIENSRUFURSBUQUJMRWAsXG4gICAgICApIC8vb25seSBmaXJzdCBvY2N1cnJlbmNlIHdpbGwgYmUgcmVwbGFjZWRcbiAgICAgIC5yZXBsYWNlKC9DUkVBVEUgU0NIRU1BIElGIE5PVCBFWElTVFMvZywgJ0NSRUFURSBTQ0hFTUEnKVxuICAgICAgLnJlcGxhY2UoL0NSRUFURSBTQ0hFTUEvZywgJ0NSRUFURSBTQ0hFTUEgSUYgTk9UIEVYSVNUUycpOyAvL2Vuc3VyZSBhbGwgY3JlYXRlIHNjaGVtYSB1c2UgXCJpZiBub3QgZXhpc3RzXCJcbiAgICAvL2lmIHRhcmdldCBkYXRhYmFzZSBkb2VzIG5vdCBjb250YWluIGFueSBkOSB0YWJsZXMgd2UganVzdCBuZWVkIHRvIHBvcHVsYXRlIHRoZSBiYXNlIHNjaGVtYS5cbiAgICBjb25zdCBjb3VudFRhYmxlc1JlcSA9IGBcbiAgICAgICAgICAgIFNFTEVDVCBDT1VOVCgqKSBcbiAgICAgICAgICAgIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyBcbiAgICAgICAgICAgIFdIRVJFIHRhYmxlX3NjaGVtYSA9ICdwdWJsaWMnIEFORCB0YWJsZV9uYW1lIExJS0UgJ2RpcmVjdHVzXyUnO1xuICAgICAgICBgO1xuICAgIGNvbnN0IGNvdW50VGFibGVzID0gYXdhaXQgZW5kRGJDbGllbnQucXVlcnkoY291bnRUYWJsZXNSZXEpO1xuICAgIGlmIChOdW1iZXIoY291bnRUYWJsZXMucm93c1swXS5jb3VudCkgPT09IDApIHtcbiAgICAgIC8vd2UgZHJvcCB0aGUgZXh0ZW5zaW9uIGFuZCByZWFwcGx5IHRoZSBzY2hlbWEgd2l0aCBkOVxuICAgICAgbG9nZ2VyLmluZm8oJ1RhcmdldCBkYXRhYmFzZSBoYXMgbm8gZDkgdGFibGVzOiBjcmVhdGluZyB0aGUgc2NoZW1hIGRpcmVjdGx5Jyk7XG4gICAgICAvL25vdGUgdGhhdCBmaW5hbGx5IGJsb2NrIHdpbGwgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgd2UgcmV0dXJuXG4gICAgICBhd2FpdCBlbmREYkNsaWVudC5xdWVyeShzcWxTY2hlbWFXaXRoRXh0ZW5zaW9uKTtcbiAgICB9XG5cbiAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShzcWxTY2hlbWFXaXRoRXh0ZW5zaW9uKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBwZ0NsaWVudC5lbmQoKTtcbiAgICBhd2FpdCBlbmREYkNsaWVudC5lbmQoKTtcbiAgfVxuXG4gIC8vd2UgY2FsY3VsYXRlIHRoZSBkaWZmXG4gIGNvbnN0IG1pZ3JhdGlvblN0cmVhbSA9IG5ldyBXcml0YWJsZSh7XG4gICAgd3JpdGU6IChjaHVuaywgX2VuY29kaW5nLCBuZXh0KSA9PiB7XG4gICAgICBzcWxNaWdyYXRpb24gKz0gY2h1bmsudG9TdHJpbmcoKTtcbiAgICAgIG5leHQoKTtcbiAgICB9LFxuICB9KTtcbiAgbG9nZ2VyLmluZm8oJ0NvbXB1dGluZyB0aGUgc2NoZW1hIGRpZmYgd2l0aCBhdGxhcycpO1xuICBjb25zdCBjbGkgPSBuZXcgQ2xpKCk7XG4gIGF3YWl0IGNsaS5jb21tYW5kKFxuICAgIGF3YWl0IGVuc3VyZUF0bGFzKCksXG4gICAgW1xuICAgICAgJ3NjaGVtYScsXG4gICAgICAnZGlmZicsXG4gICAgICAnLS1mcm9tJyxcbiAgICAgIGBwb3N0Z3JlczovLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGRiQ29uZmlnLnVzZXIpfToke2VuY29kZVVSSUNvbXBvbmVudChkYkNvbmZpZy5wd2QpfUAke2RiQ29uZmlnLmhvc3R9OiR7ZGJDb25maWcucG9ydH0vJHtkYkNvbmZpZy5kYXRhYmFzZX0/c3NsbW9kZT0ke2RiQ29uZmlnLnNzbCA/ICdyZXF1aXJlJyA6ICdkaXNhYmxlJ31gLFxuICAgICAgJy0tdG8nLFxuICAgICAgYHBvc3RncmVzOi8vJHtlbmNvZGVVUklDb21wb25lbnQoZGJDb25maWcudXNlcil9OiR7ZW5jb2RlVVJJQ29tcG9uZW50KGRiQ29uZmlnLnB3ZCl9QCR7ZGJDb25maWcuaG9zdH06JHtkYkNvbmZpZy5wb3J0fS8ke2RiQ29uZmlnLmRhdGFiYXNlfV90bXBfYmlzP3NzbG1vZGU9JHtkYkNvbmZpZy5zc2wgPyAncmVxdWlyZScgOiAnZGlzYWJsZSd9YCxcbiAgICBdLFxuICAgIHtcbiAgICAgIGVudjoge1xuICAgICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgICAgQVRMQVNfTk9fVVBEQVRFX05PVElGSUVSOiAndHJ1ZScsIC8vaWYgbm90IHNldCwgYXRsYXMgZW5kIGEgZmluYWwgbGluZSB3aXRoIFwiYSBuZXcgdmVyc2lvbiBvZiBhdGxhcyBpcyBhdmFpbGFibGVcIlxuICAgICAgfSxcbiAgICAgIHN0ZG91dDogbWlncmF0aW9uU3RyZWFtLFxuICAgIH0sXG4gICk7XG4gIGlmIChzcWxNaWdyYXRpb24uaW5jbHVkZXMoJ25vIGNoYW5nZXMgdG8gYmUgbWFkZScpKSB7XG4gICAgc3FsTWlncmF0aW9uID0gJyc7XG4gIH1cbiAgaWYgKHNxbE1pZ3JhdGlvbi50cmltKCkpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRzID0gc3FsTWlncmF0aW9uLnNwbGl0KCdcXG4nKS5maWx0ZXIoKGxpbmUpID0+IGxpbmUudHJpbSgpLmVuZHNXaXRoKCc7JykpLmxlbmd0aDtcbiAgICBsb2dnZXIuaW5mbyhgU2NoZW1hIG1pZ3JhdGlvbjogJHtzdGF0ZW1lbnRzfSBzdGF0ZW1lbnRzYCk7XG4gICAgbG9nZ2VyLmRlYnVnKHNxbE1pZ3JhdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgbG9nZ2VyLmluZm8oJ1NjaGVtYSBpcyB1cCB0byBkYXRlJyk7XG4gIH1cbiAgLy93ZSBhcHBseSB0aGUgZGlmZnMgaW4gc2NoZW1hIGFuZCBkYXRhIGluIG9uZSB0cmFuc2FjdGlvblxuICBjb25zdCBwZ1RtcENsaWVudCA9IG5ldyBwZy5DbGllbnQoY29ubmVjdGlvblByb3BzKTtcbiAgY29ubmVjdGlvblByb3BzLmRhdGFiYXNlID0gZGJDb25maWcuZGF0YWJhc2U7XG4gIHBnQ2xpZW50ID0gbmV3IHBnLkNsaWVudChjb25uZWN0aW9uUHJvcHMpO1xuICBhd2FpdCBQcm9taXNlLmFsbChbcGdDbGllbnQuY29ubmVjdCgpLCBwZ1RtcENsaWVudC5jb25uZWN0KCldKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeSgnQkVHSU4nKTtcbiAgICBsb2dnZXIuaW5mbygnQXBwbHlpbmcgdGhlIHNjaGVtYSBtaWdyYXRpb24nKTtcbiAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShzcWxNaWdyYXRpb24pO1xuICAgIC8vc3RyYXRlZ3kgdG8gYXBwbHkgZGF0YSA6XG4gICAgLy8tIHJlbW92ZSB0aGUgY29uc3RyYWludFxuICAgIC8vLSB1cHNlcnQgdGhlIGRhdGFcbiAgICAvLy0gYXBwbHkgdGhlIGNvbnN0cmFpbnRcblxuICAgIC8vYWx3YXlzIGJlIHN1cmUgdGhlIGNpIHVzZXIgZXhpc3RzXG4gICAgYXdhaXQgcGdDbGllbnQucXVlcnkoYFxuICAgICAgICAgICAgSU5TRVJUIElOVE8gcHVibGljLmRpcmVjdHVzX3VzZXJzIChpZCwgZmlyc3RfbmFtZSwgbGFzdF9uYW1lLCBlbWFpbClcbiAgICAgICAgICAgIFZBTFVFUyAoJzQ5YmNkZTVkLTkwYWEtNGJlOC1hYjEwLWY5YWUxYTA3NTQ2ZicsICdDSScsICdEOS1wbHVtYmluZycsICdkOUB3ZWJjYXBzdWxlLmlvJylcbiAgICAgICAgICAgIE9OIENPTkZMSUNUIERPIE5PVEhJTkdcbiAgICAgICAgYCk7XG5cbiAgICAvL2ZvciBjb25zdHJhaW50cyBzZWUgdGhpcyA6XG4gICAgLy9odHRwczovL2NvbmZsdWVuY2UuYXRsYXNzaWFuLmNvbS9rYi9ob3ctdG8tZHJvcC1hbmQtcmVjcmVhdGUtdGhlLWRhdGFiYXNlLWNvbnN0cmFpbnRzLW9uLXBvc3RncmVzcWwtNzc2ODEyNDUwLmh0bWxcbiAgICAvL3dlIGdldCBhbGwgdGhlIGNvbnN0cmFpbnRzIGV4Y2VwdCB0aGUgcHJpbWFyeSBrZXlzXG4gICAgY29uc3QgY29uc3RyYWludHMgPSBhd2FpdCBwZ0NsaWVudC5xdWVyeShgXG4gICAgICAgICAgICBTRUxFQ1QgbnNwbmFtZSwgcmVsbmFtZSwgY29ubmFtZSwgcGdfZ2V0X2NvbnN0cmFpbnRkZWYocGdfY29uc3RyYWludC5vaWQpXG4gICAgICAgICAgICBGUk9NIHBnX2NvbnN0cmFpbnRcbiAgICAgICAgICAgIElOTkVSIEpPSU4gcGdfY2xhc3MgT04gY29ucmVsaWQ9cGdfY2xhc3Mub2lkXG4gICAgICAgICAgICBJTk5FUiBKT0lOIHBnX25hbWVzcGFjZSBPTiBwZ19uYW1lc3BhY2Uub2lkPXBnX2NsYXNzLnJlbG5hbWVzcGFjZVxuICAgICAgICAgICAgV0hFUkUgTk9UIG5zcG5hbWUgPSAncGdfY2F0YWxvZycgQU5EIE5PVCBjb250eXBlID0gJ3AnXG4gICAgICAgICAgICBPUkRFUiBCWSBDQVNFIFdIRU4gY29udHlwZT0nZicgVEhFTiAwIEVMU0UgMSBFTkQgREVTQyxjb250eXBlIERFU0MsbnNwbmFtZSBERVNDLHJlbG5hbWUgREVTQyxjb25uYW1lIERFU0NcbiAgICAgICAgYCk7XG5cbiAgICAvL3JlbW92ZSB0aGUgY29uc3RyYWludHNcbiAgICBsb2dnZXIuaW5mbyhgRHJvcHBpbmcgJHtjb25zdHJhaW50cy5yb3dzLmxlbmd0aH0gY29uc3RyYWludHNgKTtcbiAgICAvL3RoZSBxdWVyeSBhYm92ZSBpcyBib3RoIGZvciBhZGRpbmcgb3IgZHJvcHBpbmcgb3JkZXIuIEZvciBkcm9wcGluZywgd2UgbmVlZCB0byByZXZlcnNlIHRoZSBvcmRlclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uc3RyYWludHMucm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY29uc3RyYWludCA9IGNvbnN0cmFpbnRzLnJvd3NbY29uc3RyYWludHMucm93cy5sZW5ndGggLSAxIC0gaV07XG4gICAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShgXG4gICAgICAgICAgICAgICAgQUxURVIgVEFCTEUgJHtjb25zdHJhaW50Lm5zcG5hbWV9LlwiJHtjb25zdHJhaW50LnJlbG5hbWV9XCIgRFJPUCBDT05TVFJBSU5UIFwiJHtjb25zdHJhaW50LmNvbm5hbWV9XCJcbiAgICAgICAgICAgIGApO1xuICAgIH1cblxuICAgIC8vcmVwbGFjZSBkYXRhXG4gICAgY29uc3QgY3N2RmlsZXMgPSBhd2FpdCByZWFkZGlyKCcuL3NxbC9kYXRhJyk7XG4gICAgbG9nZ2VyLmluZm8oYEltcG9ydGluZyAke2NzdkZpbGVzLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5lbmRzV2l0aCgnLmNzdicpKS5sZW5ndGh9IENTViBmaWxlcyBmcm9tIC4vc3FsL2RhdGFgKTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgY3N2RmlsZXMpIHtcbiAgICAgIGlmIChmaWxlLmVuZHNXaXRoKCcuY3N2JykpIHtcbiAgICAgICAgY29uc3Qgbm9uUGFyc2VkVGFibGVOYW1lID0gZmlsZS5zbGljZSgwLCAtNCk7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVGFibGVOYW1lID0gcGcuZXNjYXBlSWRlbnRpZmllcihub25QYXJzZWRUYWJsZU5hbWUpO1xuICAgICAgICBsZXQgY29weVRhYmxlTmFtZSA9IG9yaWdpbmFsVGFibGVOYW1lO1xuICAgICAgICBsZXQgZXhpc3RpbmdSb3dzQ2FuQ2F1c2VDb25mbGljdCA9IGZhbHNlO1xuICAgICAgICBpZiAoWydkaXJlY3R1c19maWxlcycsICdkaXJlY3R1c19mb2xkZXJzJ10uaW5jbHVkZXMobm9uUGFyc2VkVGFibGVOYW1lKSkge1xuICAgICAgICAgIC8vZGVsZXRlIGFsbCBmaWxlcyBhbmQgZm9sZGVycyB0aGF0IGFyZSBpbnNpZGUgdGhlIFwiZDktcGx1bWJpbmctY29tbW9uXCIgZm9sZGVyXG4gICAgICAgICAgY29uc3QgY29tbW9uRm9sZGVyTmFtZSA9IHBnLmVzY2FwZUxpdGVyYWwoZGJDb25maWcuY29tbW9uRm9sZGVyTmFtZSk7XG4gICAgICAgICAgY29uc3QgZm9sZGVyS2V5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAgICAgZGlyZWN0dXNfZmlsZXM6ICdmb2xkZXInLFxuICAgICAgICAgICAgZGlyZWN0dXNfZm9sZGVyczogJ3BhcmVudCcsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShgIFxuICAgICAgICAgICAgICAgICAgICAgICAgV0lUSCBSRUNVUlNJVkUgZm9sZGVyX3RyZWUgQVMgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gQW5jaG9yOiB0aGUgXCJkOS1wbHVtYmluZy1jb21tb25cIiBmb2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIGRpcmVjdHVzX2ZvbGRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBuYW1lID0gJHtjb21tb25Gb2xkZXJOYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JT05cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBSZWN1cnNpdmUgc3RlcDogZmluZCBzdWJmb2xkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGYuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIGRpcmVjdHVzX2ZvbGRlcnMgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpPSU4gZm9sZGVyX3RyZWUgZnQgT04gZi5wYXJlbnQgPSBmdC5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgREVMRVRFIEZST00gcHVibGljLiR7Y29weVRhYmxlTmFtZX0gQVMgdFxuICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgdC4ke2ZvbGRlcktleVtub25QYXJzZWRUYWJsZU5hbWVdfSBJTiAoU0VMRUNUIGlkIEZST00gZm9sZGVyX3RyZWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYCk7XG4gICAgICAgICAgaWYgKG5vblBhcnNlZFRhYmxlTmFtZSA9PT0gJ2RpcmVjdHVzX2ZvbGRlcnMnKSB7XG4gICAgICAgICAgICBleGlzdGluZ1Jvd3NDYW5DYXVzZUNvbmZsaWN0ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgcGdDbGllbnQucXVlcnkoYERFTEVURSBGUk9NIHB1YmxpYy4ke2NvcHlUYWJsZU5hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4aXN0aW5nUm93c0NhbkNhdXNlQ29uZmxpY3QpIHtcbiAgICAgICAgICAvL3dlIHdpbGwgaW1wb3J0IGRhdGEgaW4gYSB0ZW1wb3JhcnkgdGFibGUsIHRoZW4gZG8gdGhlIGluc2VydFxuICAgICAgICAgIGNvcHlUYWJsZU5hbWUgPSBwZy5lc2NhcGVJZGVudGlmaWVyKGAke25vblBhcnNlZFRhYmxlTmFtZX1fd2JjZV90bXBgKTtcbiAgICAgICAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShcbiAgICAgICAgICAgIGBDUkVBVEUgVEVNUCBUQUJMRSAke2NvcHlUYWJsZU5hbWV9IE9OIENPTU1JVCBEUk9QIEFTIFNFTEVDVCAqIEZST00gcHVibGljLiR7b3JpZ2luYWxUYWJsZU5hbWV9IFdJVEggTk8gREFUQWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvL3JlYWQgZmlyc3QgbGluZVxuICAgICAgICBsZXQgZmlyc3RMaW5lID0gYXdhaXQgcmVhZEZpcnN0TGluZU9mRmlsZShgLi9zcWwvZGF0YS8ke2ZpbGV9YCk7XG4gICAgICAgIGZpcnN0TGluZSA9IGZpcnN0TGluZVxuICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgLm1hcCgoYykgPT4gYFwiJHtjfVwiYClcbiAgICAgICAgICAuam9pbignLCcpO1xuICAgICAgICBjb25zdCBpbmdlc3RTdHJlYW0gPSBwZ0NsaWVudC5xdWVyeShcbiAgICAgICAgICBjb3B5RnJvbShcbiAgICAgICAgICAgIGBDT1BZICR7Y29weVRhYmxlTmFtZX0gKCR7Zmlyc3RMaW5lfSkgIEZST00gU1RESU4gIERFTElNSVRFUiAnLCcgQ1NWIEhFQURFUmAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc291cmNlU3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShgLi9zcWwvZGF0YS8ke2ZpbGV9YCk7XG4gICAgICAgIGluZ2VzdFN0cmVhbS5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKGBpbmdlc3RlZCAke2ZpbGV9YCk7XG4gICAgICAgIH0pO1xuICAgICAgICBsb2dnZXIuZGVidWcoYGluZ2VzdGluZyAke2ZpbGV9YCk7XG5cbiAgICAgICAgYXdhaXQgcGlwZWxpbmUoc291cmNlU3RyZWFtLCBpbmdlc3RTdHJlYW0pO1xuICAgICAgICBpZiAoZXhpc3RpbmdSb3dzQ2FuQ2F1c2VDb25mbGljdCkge1xuICAgICAgICAgIGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcblx0XHRcdFx0XHRcdFx0REVMRVRFIEZST00gcHVibGljLiR7b3JpZ2luYWxUYWJsZU5hbWV9XG5cdFx0XHRcdFx0XHRcdFdIRVJFIGlkIElOIChTRUxFQ1QgaWQgRlJPTSAke2NvcHlUYWJsZU5hbWV9KTtcblx0XHRcdFx0XHRcdGApO1xuICAgICAgICAgIGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcblx0XHRcdFx0XHRcdFx0SU5TRVJUIElOVE8gcHVibGljLiR7b3JpZ2luYWxUYWJsZU5hbWV9XG5cdFx0XHRcdFx0XHRcdFNFTEVDVCAqIEZST00gJHtjb3B5VGFibGVOYW1lfTtcblx0XHRcdFx0XHRcdGApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9yZWVzdGFibGlzaCB0aGUgY29uc3RyYWludHNcbiAgICBsb2dnZXIuaW5mbyhgUmVzdG9yaW5nICR7Y29uc3RyYWludHMucm93cy5sZW5ndGh9IGNvbnN0cmFpbnRzYCk7XG4gICAgZm9yIChjb25zdCBjb25zdHJhaW50IG9mIGNvbnN0cmFpbnRzLnJvd3MpIHtcbiAgICAgIGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcbiAgICAgICAgICAgICAgICBBTFRFUiBUQUJMRSAke2NvbnN0cmFpbnQubnNwbmFtZX0uXCIke2NvbnN0cmFpbnQucmVsbmFtZX1cIiBBREQgQ09OU1RSQUlOVCBcIiR7Y29uc3RyYWludC5jb25uYW1lfVwiICAke2NvbnN0cmFpbnQucGdfZ2V0X2NvbnN0cmFpbnRkZWZ9XG4gICAgICAgICAgICBgKTtcbiAgICB9XG5cbiAgICAvL3VwZGF0ZSB0aGUgc2VxdWVuY2VzXG4gICAgLy93aGVuIGFkZGluZyB3aXRoIENPUFksIGFsbCBzZXF1ZW5jZXMgYXJlIG5vdCB1cCB0byBkYXRlXG4gICAgLy93ZSBuZWVkIHRvIGZpbmQgYWxsIHNlcXVlbmNlcyBhbmQgdGhlbiB0byBmaW5kIHRoZSBtYXggb24gdGhlIG1hbmFnZWQgY29sdW1uIGFuZCB0aGVuIHRvIHVwZGF0ZSB0aGUgc2VxdWVuY2VcblxuICAgIGNvbnN0IHNlcXVlbmNlcyA9IGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcbiAgICAgICAgICAgIFNFTEVDVCBuLm5zcG5hbWUgYXMgXCJzY2hlbWFcIixcbiAgICAgICAgICAgICAgICBjLnJlbG5hbWUgYXMgXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgQ0FTRSBjLnJlbGtpbmQgV0hFTiAncicgVEhFTiAndGFibGUnIFdIRU4gJ3YnIFRIRU4gJ3ZpZXcnIFdIRU4gJ20nIFRIRU4gJ21hdGVyaWFsaXplZCB2aWV3JyBXSEVOICdpJyBUSEVOICdpbmRleCcgV0hFTiAnUycgVEhFTiAnc2VxdWVuY2UnIFdIRU4gJ3MnIFRIRU4gJ3NwZWNpYWwnIFdIRU4gJ3QnIFRIRU4gJ1RPQVNUIHRhYmxlJyBXSEVOICdmJyBUSEVOICdmb3JlaWduIHRhYmxlJyBXSEVOICdwJyBUSEVOICdwYXJ0aXRpb25lZCB0YWJsZScgV0hFTiAnSScgVEhFTiAncGFydGl0aW9uZWQgaW5kZXgnIEVORCBhcyBcIlR5cGVcIixcbiAgICAgICAgICAgICAgICBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZChjLnJlbG93bmVyKSBhcyBcIk93bmVyXCJcbiAgICAgICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4gICAgICAgICAgICAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZVxuICAgICAgICAgICAgV0hFUkUgYy5yZWxraW5kIElOICgnUycsJycpXG4gICAgICAgICAgICAgICAgQU5EIG4ubnNwbmFtZSA8PiAncGdfY2F0YWxvZydcbiAgICAgICAgICAgICAgICBBTkQgbi5uc3BuYW1lICF+ICdecGdfdG9hc3QnXG4gICAgICAgICAgICAgICAgQU5EIG4ubnNwbmFtZSA8PiAnaW5mb3JtYXRpb25fc2NoZW1hJ1xuICAgICAgICAgICAgQU5EIHBnX2NhdGFsb2cucGdfdGFibGVfaXNfdmlzaWJsZShjLm9pZClcbiAgICAgICAgICAgIE9SREVSIEJZIDEsMjtcbiAgICAgICAgYCk7XG5cbiAgICBsb2dnZXIuaW5mbyhgUmVzZXR0aW5nICR7c2VxdWVuY2VzLnJvd3MubGVuZ3RofSBzZXF1ZW5jZXNgKTtcbiAgICBmb3IgKGNvbnN0IHNlcSBvZiBzZXF1ZW5jZXMucm93cykge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBmaW5kIGNvbHVtbiBtYW5hZ2VkIGJ5ICR7c2VxLm5hbWV9YCk7XG4gICAgICBjb25zdCByZWxhdGlvbiA9IGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcbiAgICAgICAgICAgICAgICBTRUxFQ1QgZC5yZWZvYmppZDo6cmVnY2xhc3MgYXMgXCJ0YWJsZVwiLCBhLmF0dG5hbWUgYXMgXCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgRlJPTSAgIHBnX2RlcGVuZCAgICBkXG4gICAgICAgICAgICAgICAgSk9JTiAgIHBnX2F0dHJpYnV0ZSBhIE9OIGEuYXR0cmVsaWQgPSBkLnJlZm9iamlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkQgYS5hdHRudW0gICA9IGQucmVmb2Jqc3ViaWRcbiAgICAgICAgICAgICAgICBXSEVSRSAgZC5vYmppZCA9ICcke3NlcS5zY2hlbWF9LlwiJHtzZXEubmFtZX1cIic6OnJlZ2NsYXNzXG4gICAgICAgICAgICAgICAgQU5EICAgIGQucmVmb2Jqc3ViaWQgPiAwXG4gICAgICAgICAgICAgICAgQU5EICAgIGQuY2xhc3NpZCA9ICdwZ19jbGFzcyc6OnJlZ2NsYXNzO1xuICAgICAgICAgICAgYCk7XG4gICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgIGBmaW5kIG1heCBvZiAke3JlbGF0aW9uLnJvd3NbMF0udGFibGV9ICR7cmVsYXRpb24ucm93c1swXS5maWVsZH1gLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG1heCA9IGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcbiAgICAgICAgICAgICAgICBTRUxFQ1QgTUFYKCR7cmVsYXRpb24ucm93c1swXS5maWVsZH0pXG4gICAgICAgICAgICAgICAgRlJPTSAke3JlbGF0aW9uLnJvd3NbMF0udGFibGV9XG4gICAgICAgICAgICBgKTtcblxuICAgICAgaWYgKG1heC5yb3dzWzBdLm1heCAhPT0gbnVsbCkge1xuICAgICAgICBsb2dnZXIuZGVidWcoYHJlc3RhcnQgJHtzZXEubmFtZX0gYXQgJHttYXgucm93c1swXS5tYXggKyAxfWApO1xuICAgICAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeShcbiAgICAgICAgICBgYWx0ZXIgc2VxdWVuY2UgJHtzZXEuc2NoZW1hfS5cIiR7c2VxLm5hbWV9XCIgcmVzdGFydCB3aXRoICR7bWF4LnJvd3NbMF0ubWF4ICsgMX07YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBwZ0NsaWVudC5xdWVyeSgnQ09NTUlUJyk7XG4gICAgbG9nZ2VyLmluZm8oJ1RyYW5zYWN0aW9uIGNvbW1pdHRlZCcpO1xuXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBzbmFwc2hvdCwgcm9sbGluZyBiYWNrIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KCdST0xMQkFDSycpO1xuXG4gICAgdGhyb3cgZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBwZ0NsaWVudC5lbmQoKTtcbiAgICBhd2FpdCBwZ1RtcENsaWVudC5lbmQoKTtcbiAgfVxuICAvL3NjaGVtYSAoY29sbGVjdGlvbnMsIGZpZWxkcywgcmVsYXRpb25zKSBpcyBhbHdheXMgY2FjaGVkIChDQUNIRV9TQ0hFTUEpLCBwZXJtaXNzaW9ucyBvbmx5IHdoZW4gQ0FDSEVfRU5BQkxFRDogYSBwdXJnZSBpcyBlbm91Z2guXG4gIC8vZmxvd3MsIG9wZXJhdGlvbnMgYW5kIHdlYmhvb2tzIGFyZSBsb2FkZWQgaW4gbWVtb3J5IGF0IHN0YXJ0dXAgYW5kIG9ubHkgcmVsb2FkZWQgYnkgdGhlaXIgb3duIHNlcnZpY2VzOiBhIHJlc3RhcnQgaXMgbmVlZGVkLlxuICBsb2dnZXIud2FybignUHVyZ2UgdGhlIGQ5IGNhY2hlIChQT1NUIC91dGlscy9jYWNoZS9jbGVhcikgdG8gdGFrZSB0aGUgbmV3IHNjaGVtYSAoYW5kIHBlcm1pc3Npb25zLCBpZiBDQUNIRV9FTkFCTEVEKSBpbnRvIGFjY291bnQuIElmIGZsb3dzLCBvcGVyYXRpb25zIG9yIHdlYmhvb2tzIGNoYW5nZWQsIGFsc28gcmVzdGFydCBkOS4nKTtcbn1cblxuIl19
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import type { DriverConfig } from '@wbce-d9/storage';
|
|
2
2
|
export interface DbConfig {
|
|
3
3
|
host: string;
|
|
4
|
+
port: number;
|
|
4
5
|
user: string;
|
|
5
6
|
pwd: string;
|
|
6
7
|
database: string;
|
|
7
8
|
ssl?: boolean;
|
|
9
|
+
commonFolderName: string;
|
|
8
10
|
}
|
|
9
11
|
export interface DbFlags {
|
|
10
12
|
host?: string;
|
|
13
|
+
port?: string;
|
|
11
14
|
user?: string;
|
|
12
15
|
password?: string;
|
|
13
16
|
database?: string;
|
|
14
17
|
ssl?: boolean;
|
|
18
|
+
commonFolder?: string;
|
|
15
19
|
}
|
|
16
20
|
export interface StorageFlags {
|
|
17
21
|
storageConfig?: string[];
|
|
@@ -20,11 +20,13 @@ async function resolveDbConfig(flags) {
|
|
|
20
20
|
const { env, getConfigFromEnv } = await loadD9Env();
|
|
21
21
|
const config = {
|
|
22
22
|
host: flags.host ?? env.DB_HOST,
|
|
23
|
+
port: Number(flags.port ?? env.DB_PORT ?? 5432),
|
|
23
24
|
user: flags.user ?? env.DB_USER,
|
|
24
25
|
pwd: flags.password ?? env.DB_PASSWORD,
|
|
25
26
|
database: flags.database ?? env.DB_DATABASE,
|
|
26
27
|
// getConfigFromEnv also picks up nested DB_SSL__* keys (e.g. DB_SSL__REJECT_UNAUTHORIZED)
|
|
27
28
|
ssl: flags.ssl ?? Boolean(getConfigFromEnv('DB_').ssl),
|
|
29
|
+
commonFolderName: flags.commonFolder ?? env.COMMON_FOLDER_NAME ?? (0, plumbing_config_1.readPlumbingConfig)().commonFolderName ?? 'd9-plumbing-common',
|
|
28
30
|
};
|
|
29
31
|
const missing = Object.entries(config).filter(([, value]) => value === undefined).map(([key]) => key);
|
|
30
32
|
if (missing.length > 0) {
|
|
@@ -106,4 +108,4 @@ async function resolveFileSync(flags, direction) {
|
|
|
106
108
|
? { origin: current, destination: intermediate }
|
|
107
109
|
: { origin: intermediate, destination: current };
|
|
108
110
|
}
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9zYXZlL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVDQSwwQ0FlQztBQU1ELHNEQVNDO0FBd0JELDBEQWlCQztBQUVELGdFQU1DO0FBTUQsMENBZUM7QUExSUQseUNBQXNDO0FBQ3RDLDJEQUFpRjtBQXdCakYsK0ZBQStGO0FBQy9GLHdFQUF3RTtBQUN4RSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQztBQUNyQyxNQUFNLG1CQUFtQixHQUFHLHdDQUF3QyxDQUFDO0FBRXJFLEtBQUssVUFBVSxTQUFTO0lBQ3RCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLHlCQUFhLFNBQVMseUJBQUMsQ0FBMEMsQ0FBQztJQUN0RixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLHlCQUFhLG1CQUFtQix5QkFBQyxDQUU5RCxDQUFDO0lBQ0YsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0FBQzdDLENBQUM7QUFFTSxLQUFLLFVBQVUsZUFBZSxDQUFDLEtBQWM7SUFDbEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sU0FBUyxFQUFFLENBQUM7SUFDcEQsTUFBTSxNQUFNLEdBQUc7UUFDYixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsT0FBTztRQUMvQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsT0FBTztRQUMvQixHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsV0FBVztRQUN0QyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsV0FBVztRQUMzQywwRkFBMEY7UUFDMUYsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFD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QUFLLENBQUMsb0VBQW9FLHNDQUFvQiw0RUFBNEUsQ0FBQyxDQUFDO0lBQ3hMLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLGVBQWUsQ0FBQyxLQUFtQixFQUFFLFNBQTBCO0lBQ25GLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLElBQUksR0FBRyxDQUFDLGNBQWMsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLGNBQWMsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUMxRixlQUFNLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDL0MsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sWUFBWSxHQUFHLE1BQU0sdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLGVBQU0sQ0FBQyxJQUFJLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUMxRSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxPQUFPLFNBQVMsS0FBSyxNQUFNO1FBQ3pCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRTtRQUNoRCxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEcml2ZXJDb25maWcgfSBmcm9tICdAd2JjZS1kOS9zdG9yYWdlJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBQTFVNQklOR19DT05GSUdfRklMRSwgcmVhZFBsdW1iaW5nQ29uZmlnIH0gZnJvbSAnLi4vLi4vcGx1bWJpbmctY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBEYkNvbmZpZyB7XG4gIGhvc3Q6IHN0cmluZztcbiAgdXNlcjogc3RyaW5nO1xuICBwd2Q6IHN0cmluZztcbiAgZGF0YWJhc2U6IHN0cmluZztcbiAgc3NsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYkZsYWdzIHtcbiAgaG9zdD86IHN0cmluZztcbiAgdXNlcj86IHN0cmluZztcbiAgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gIGRhdGFiYXNlPzogc3RyaW5nO1xuICBzc2w/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VGbGFncyB7XG4gIHN0b3JhZ2VDb25maWc/OiBzdHJpbmdbXTtcbiAgaW50ZXJtZWRpYXRlU3RvcmFnZUNvbmZpZz86IHN0cmluZ1tdO1xuICBmaWxlcz86IGJvb2xlYW47XG59XG5cbi8vIEB3YmNlLWQ5L2FwaSBpcyBub3QgYSBkZXBlbmRlbmN5IG9mIHRoaXMgcGFja2FnZTogaXQgaXMgcmVzb2x2ZWQgZnJvbSB0aGUgdXNlcidzIGQ5IHByb2plY3QuXG4vLyBTcGVjaWZpZXJzIGFyZSBrZXB0IGluIHZhcmlhYmxlcyBzbyB0c2MgZG9lcyBub3QgdHJ5IHRvIHJlc29sdmUgdGhlbS5cbmNvbnN0IGVudk1vZHVsZSA9ICdAd2JjZS1kOS9hcGkvZW52JztcbmNvbnN0IGNvbmZpZ0Zyb21FbnZNb2R1bGUgPSAnQHdiY2UtZDkvYXBpL3V0aWxzL2dldC1jb25maWctZnJvbS1lbnYnO1xuXG5hc3luYyBmdW5jdGlvbiBsb2FkRDlFbnYoKSB7XG4gIGNvbnN0IHsgZ2V0RW52IH0gPSAoYXdhaXQgaW1wb3J0KGVudk1vZHVsZSkpIGFzIHsgZ2V0RW52OiAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH07XG4gIGNvbnN0IHsgZ2V0Q29uZmlnRnJvbUVudiB9ID0gKGF3YWl0IGltcG9ydChjb25maWdGcm9tRW52TW9kdWxlKSkgYXMge1xuICAgIGdldENvbmZpZ0Zyb21FbnY6IChwcmVmaXg6IHN0cmluZykgPT4gUmVjb3JkPHN0cmluZywgYW55PjtcbiAgfTtcbiAgcmV0dXJuIHsgZW52OiBnZXRFbnYoKSwgZ2V0Q29uZmlnRnJvbUVudiB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZURiQ29uZmlnKGZsYWdzOiBEYkZsYWdzKTogUHJvbWlzZTxEYkNvbmZpZz4ge1xuICBjb25zdCB7IGVudiwgZ2V0Q29uZmlnRnJvbUVudiB9ID0gYXdhaXQgbG9hZEQ5RW52KCk7XG4gIGNvbnN0IGNvbmZpZyA9IHtcbiAgICBob3N0OiBmbGFncy5ob3N0ID8/IGVudi5EQl9IT1NULFxuICAgIHVzZXI6IGZsYWdzLnVzZXIgPz8gZW52LkRCX1VTRVIsXG4gICAgcHdkOiBmbGFncy5wYXNzd29yZCA/PyBlbnYuREJfUEFTU1dPUkQsXG4gICAgZGF0YWJhc2U6IGZsYWdzLmRhdGFiYXNlID8/IGVudi5EQl9EQVRBQkFTRSxcbiAgICAvLyBnZXRDb25maWdGcm9tRW52IGFsc28gcGlja3MgdXAgbmVzdGVkIERCX1NTTF9fKiBrZXlzIChlLmcuIERCX1NTTF9fUkVKRUNUX1VOQVVUSE9SSVpFRClcbiAgICBzc2w6IGZsYWdzLnNzbCA/PyBCb29sZWFuKGdldENvbmZpZ0Zyb21FbnYoJ0RCXycpLnNzbCksXG4gIH07XG4gIGNvbnN0IG1pc3NpbmcgPSBPYmplY3QuZW50cmllcyhjb25maWcpLmZpbHRlcigoWywgdmFsdWVdKSA9PiB2YWx1ZSA9PT0gdW5kZWZpbmVkKS5tYXAoKFtrZXldKSA9PiBrZXkpO1xuICBpZiAobWlzc2luZy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtaXNzaW5nIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb246ICR7bWlzc2luZy5qb2luKCcsICcpfSAodXNlIGZsYWdzIG9yIERCXyogZW52aXJvbm1lbnQgdmFyaWFibGVzKWApO1xuICB9XG4gIHJldHVybiBjb25maWc7XG59XG5cbmZ1bmN0aW9uIHRvRHJpdmVyQ29uZmlnKHsgZHJpdmVyLCAuLi5vcHRpb25zIH06IFJlY29yZDxzdHJpbmcsIGFueT4pOiBEcml2ZXJDb25maWcge1xuICByZXR1cm4geyBkcml2ZXIsIG9wdGlvbnMgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVDdXJyZW50U3RvcmFnZShmbGFnczogU3RvcmFnZUZsYWdzKTogUHJvbWlzZTxEcml2ZXJDb25maWc+IHtcbiAgY29uc3QgeyBlbnYsIGdldENvbmZpZ0Zyb21FbnYgfSA9IGF3YWl0IGxvYWREOUVudigpO1xuICBjb25zdCBsb2NhdGlvbiA9IFN0cmluZyhlbnYuU1RPUkFHRV9MT0NBVElPTlMgPz8gJycpLnNwbGl0KCcsJylbMF0udHJpbSgpO1xuICBjb25zdCBjb25maWcgPSBsb2NhdGlvbiA/IGdldENvbmZpZ0Zyb21FbnYoYFNUT1JBR0VfJHtsb2NhdGlvbi50b1VwcGVyQ2FzZSgpfV9gKSA6IHt9O1xuICBhcHBseUNvbmZpZ0ZsYWdzKGNvbmZpZywgJy0tc3RvcmFnZS1jb25maWcnLCBmbGFncy5zdG9yYWdlQ29uZmlnKTtcbiAgaWYgKCFjb25maWcuZHJpdmVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdubyBzdG9yYWdlIGRyaXZlciBmb3VuZCAodXNlIFNUT1JBR0VfTE9DQVRJT05TIGFuZCBTVE9SQUdFXzxMT0NBVElPTj5fRFJJVkVSIG9yIC0tc3RvcmFnZS1jb25maWcgZHJpdmVyPS4uLiknKTtcbiAgfVxuICByZXR1cm4gdG9Ecml2ZXJDb25maWcoY29uZmlnKTtcbn1cblxuZnVuY3Rpb24gc2V0UGF0aCh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIHBhdGg6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBjb25zdCBsYXN0ID0ga2V5cy5wb3AoKSE7XG4gIGxldCBjdXJyZW50ID0gdGFyZ2V0O1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY3VycmVudFtrZXldID0gY3VycmVudFtrZXldID8/IHt9O1xuICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gIH1cbiAgY3VycmVudFtsYXN0XSA9IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBhcHBseUNvbmZpZ0ZsYWdzKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiwgZmxhZzogc3RyaW5nLCBlbnRyaWVzOiBzdHJpbmdbXSA9IFtdKSB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IGVudHJ5LmluZGV4T2YoJz0nKTtcbiAgICBpZiAoc2VwYXJhdG9yID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkICR7ZmxhZ30gXCIke2VudHJ5fVwiLCBleHBlY3RlZCBrZXk9dmFsdWVgKTtcbiAgICB9XG4gICAgc2V0UGF0aChjb25maWcsIGVudHJ5LnNsaWNlKDAsIHNlcGFyYXRvciksIGVudHJ5LnNsaWNlKHNlcGFyYXRvciArIDEpKTtcbiAgfVxufVxuXG4vKiogVGhlIGludGVybWVkaWF0ZSBzdG9yYWdlLCBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIGRyaXZlciBpcyBjb25maWd1cmVkLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRJbnRlcm1lZGlhdGVTdG9yYWdlKGZsYWdzOiBTdG9yYWdlRmxhZ3MpOiBQcm9taXNlPERyaXZlckNvbmZpZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB7IGVudiwgZ2V0Q29uZmlnRnJvbUVudiB9ID0gYXdhaXQgbG9hZEQ5RW52KCk7XG4gIGxldCBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBjb25zdCBmaWxlID0gcmVhZFBsdW1iaW5nQ29uZmlnKCkuaW50ZXJtZWRpYXRlU3RvcmFnZTtcbiAgaWYgKGZpbGUpIHtcbiAgICBjb25maWcgPSB7IGRyaXZlcjogZmlsZS5kcml2ZXIsIC4uLmZpbGUub3B0aW9ucyB9O1xuICAgIGZvciAoY29uc3QgW2tleSwgZW52TmFtZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlsZS5zZWNyZXRFbnYgPz8ge30pKSB7XG4gICAgICBjb25maWdba2V5XSA9IGVudltlbnZOYW1lXTtcbiAgICB9XG4gIH1cblxuICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4uZ2V0Q29uZmlnRnJvbUVudignSU5URVJNRURJQVRFX1NUT1JBR0VfJykgfTtcblxuICBhcHBseUNvbmZpZ0ZsYWdzKGNvbmZpZywgJy0taW50ZXJtZWRpYXRlLXN0b3JhZ2UtY29uZmlnJywgZmxhZ3MuaW50ZXJtZWRpYXRlU3RvcmFnZUNvbmZpZyk7XG5cbiAgcmV0dXJuIGNvbmZpZy5kcml2ZXIgPyB0b0RyaXZlckNvbmZpZyhjb25maWcpIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUludGVybWVkaWF0ZVN0b3JhZ2UoZmxhZ3M6IFN0b3JhZ2VGbGFncyk6IFByb21pc2U8RHJpdmVyQ29uZmlnPiB7XG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGZpbmRJbnRlcm1lZGlhdGVTdG9yYWdlKGZsYWdzKTtcbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGludGVybWVkaWF0ZSBzdG9yYWdlIGRyaXZlciBmb3VuZCAodXNlIGludGVybWVkaWF0ZVN0b3JhZ2UgaW4gJHtQTFVNQklOR19DT05GSUdfRklMRX0sIElOVEVSTUVESUFURV9TVE9SQUdFX0RSSVZFUiBvciAtLWludGVybWVkaWF0ZS1zdG9yYWdlLWNvbmZpZyBkcml2ZXI9Li4uKWApO1xuICB9XG4gIHJldHVybiBjb25maWc7XG59XG5cbi8qKlxuICogVGhlIHN0b3JhZ2VzIHRvIHN5bmMgZmlsZXMgYmV0d2Vlbiwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGUgc3luYyBpcyBkaXNhYmxlZFxuICogKGAtLW5vLWZpbGVzYCwgU0tJUF9GSUxFX1NZTkMpIG9yIG5vIGludGVybWVkaWF0ZSBzdG9yYWdlIGlzIGNvbmZpZ3VyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlRmlsZVN5bmMoZmxhZ3M6IFN0b3JhZ2VGbGFncywgZGlyZWN0aW9uOiAncHVzaCcgfCAncHVsbCcpOiBQcm9taXNlPHsgb3JpZ2luOiBEcml2ZXJDb25maWc7IGRlc3RpbmF0aW9uOiBEcml2ZXJDb25maWcgfSB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB7IGVudiB9ID0gYXdhaXQgbG9hZEQ5RW52KCk7XG4gIGlmIChmbGFncy5maWxlcyA9PT0gZmFsc2UgfHwgZW52LlNLSVBfRklMRV9TWU5DID09PSB0cnVlIHx8IGVudi5TS0lQX0ZJTEVfU1lOQyA9PT0gJ3RydWUnKSB7XG4gICAgbG9nZ2VyLmluZm8oJ0ZpbGUgc3luYyBkaXNhYmxlZCwgc2tpcHBpbmcgaXQnKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGludGVybWVkaWF0ZSA9IGF3YWl0IGZpbmRJbnRlcm1lZGlhdGVTdG9yYWdlKGZsYWdzKTtcbiAgaWYgKCFpbnRlcm1lZGlhdGUpIHtcbiAgICBsb2dnZXIuaW5mbygnTm8gaW50ZXJtZWRpYXRlIHN0b3JhZ2UgY29uZmlndXJlZCwgc2tpcHBpbmcgdGhlIGZpbGUgc3luYycpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgY3VycmVudCA9IGF3YWl0IHJlc29sdmVDdXJyZW50U3RvcmFnZShmbGFncyk7XG4gIHJldHVybiBkaXJlY3Rpb24gPT09ICdwdXNoJ1xuICAgID8geyBvcmlnaW46IGN1cnJlbnQsIGRlc3RpbmF0aW9uOiBpbnRlcm1lZGlhdGUgfVxuICAgIDogeyBvcmlnaW46IGludGVybWVkaWF0ZSwgZGVzdGluYXRpb246IGN1cnJlbnQgfTtcbn1cbiJdfQ==
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS9jb21tYW5kcy9zYXZlL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTJDQSwwQ0FpQkM7QUFNRCxzREFTQztBQXdCRCwwREFpQkM7QUFFRCxnRUFNQztBQU1ELDBDQWVDO0FBaEpELHlDQUFzQztBQUN0QywyREFBaUY7QUE0QmpGLCtGQUErRjtBQUMvRix3RUFBd0U7QUFDeEUsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUM7QUFDckMsTUFBTSxtQkFBbUIsR0FBRyx3Q0FBd0MsQ0FBQztBQUVyRSxLQUFLLFVBQVUsU0FBUztJQUN0QixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyx5QkFBYSxTQUFTLHlCQUFDLENBQTBDLENBQUM7SUFDdEYsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyx5QkFBYSxtQkFBbUIseUJBQUMsQ0FFOUQsQ0FBQztJQUNGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBRU0sS0FBSyxVQUFVLGVBQWUsQ0FBQyxLQUFjO0lBQ2xELE1BQU0sRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLFNBQVMsRUFBRSxDQUFDO0lBQ3BELE1BQU0sTUFBTSxHQUFHO1FBQ2IsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLE9BQU87UUFDL0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQy9DLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxPQUFPO1FBQy9CLEdBQUcsRUFBRSxLQUFLLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxXQUFXO1FBQ3RDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxJ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QUFFLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRHJpdmVyQ29uZmlnIH0gZnJvbSAnQHdiY2UtZDkvc3RvcmFnZSc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi9sb2dnZXInO1xuaW1wb3J0IHsgUExVTUJJTkdfQ09ORklHX0ZJTEUsIHJlYWRQbHVtYmluZ0NvbmZpZyB9IGZyb20gJy4uLy4uL3BsdW1iaW5nLWNvbmZpZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJDb25maWcge1xuICBob3N0OiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbiAgdXNlcjogc3RyaW5nO1xuICBwd2Q6IHN0cmluZztcbiAgZGF0YWJhc2U6IHN0cmluZztcbiAgc3NsPzogYm9vbGVhbjtcbiAgY29tbW9uRm9sZGVyTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERiRmxhZ3Mge1xuICBob3N0Pzogc3RyaW5nO1xuICBwb3J0Pzogc3RyaW5nO1xuICB1c2VyPzogc3RyaW5nO1xuICBwYXNzd29yZD86IHN0cmluZztcbiAgZGF0YWJhc2U/OiBzdHJpbmc7XG4gIHNzbD86IGJvb2xlYW47XG4gIGNvbW1vbkZvbGRlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlRmxhZ3Mge1xuICBzdG9yYWdlQ29uZmlnPzogc3RyaW5nW107XG4gIGludGVybWVkaWF0ZVN0b3JhZ2VDb25maWc/OiBzdHJpbmdbXTtcbiAgZmlsZXM/OiBib29sZWFuO1xufVxuXG4vLyBAd2JjZS1kOS9hcGkgaXMgbm90IGEgZGVwZW5kZW5jeSBvZiB0aGlzIHBhY2thZ2U6IGl0IGlzIHJlc29sdmVkIGZyb20gdGhlIHVzZXIncyBkOSBwcm9qZWN0LlxuLy8gU3BlY2lmaWVycyBhcmUga2VwdCBpbiB2YXJpYWJsZXMgc28gdHNjIGRvZXMgbm90IHRyeSB0byByZXNvbHZlIHRoZW0uXG5jb25zdCBlbnZNb2R1bGUgPSAnQHdiY2UtZDkvYXBpL2Vudic7XG5jb25zdCBjb25maWdGcm9tRW52TW9kdWxlID0gJ0B3YmNlLWQ5L2FwaS91dGlscy9nZXQtY29uZmlnLWZyb20tZW52JztcblxuYXN5bmMgZnVuY3Rpb24gbG9hZEQ5RW52KCkge1xuICBjb25zdCB7IGdldEVudiB9ID0gKGF3YWl0IGltcG9ydChlbnZNb2R1bGUpKSBhcyB7IGdldEVudjogKCkgPT4gUmVjb3JkPHN0cmluZywgYW55PiB9O1xuICBjb25zdCB7IGdldENvbmZpZ0Zyb21FbnYgfSA9IChhd2FpdCBpbXBvcnQoY29uZmlnRnJvbUVudk1vZHVsZSkpIGFzIHtcbiAgICBnZXRDb25maWdGcm9tRW52OiAocHJlZml4OiBzdHJpbmcpID0+IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIH07XG4gIHJldHVybiB7IGVudjogZ2V0RW52KCksIGdldENvbmZpZ0Zyb21FbnYgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVEYkNvbmZpZyhmbGFnczogRGJGbGFncyk6IFByb21pc2U8RGJDb25maWc+IHtcbiAgY29uc3QgeyBlbnYsIGdldENvbmZpZ0Zyb21FbnYgfSA9IGF3YWl0IGxvYWREOUVudigpO1xuICBjb25zdCBjb25maWcgPSB7XG4gICAgaG9zdDogZmxhZ3MuaG9zdCA/PyBlbnYuREJfSE9TVCxcbiAgICBwb3J0OiBOdW1iZXIoZmxhZ3MucG9ydCA/PyBlbnYuREJfUE9SVCA/PyA1NDMyKSxcbiAgICB1c2VyOiBmbGFncy51c2VyID8/IGVudi5EQl9VU0VSLFxuICAgIHB3ZDogZmxhZ3MucGFzc3dvcmQgPz8gZW52LkRCX1BBU1NXT1JELFxuICAgIGRhdGFiYXNlOiBmbGFncy5kYXRhYmFzZSA/PyBlbnYuREJfREFUQUJBU0UsXG4gICAgLy8gZ2V0Q29uZmlnRnJvbUVudiBhbHNvIHBpY2tzIHVwIG5lc3RlZCBEQl9TU0xfXyoga2V5cyAoZS5nLiBEQl9TU0xfX1JFSkVDVF9VTkFVVEhPUklaRUQpXG4gICAgc3NsOiBmbGFncy5zc2wgPz8gQm9vbGVhbihnZXRDb25maWdGcm9tRW52KCdEQl8nKS5zc2wpLFxuICAgIGNvbW1vbkZvbGRlck5hbWU6IGZsYWdzLmNvbW1vbkZvbGRlciA/PyBlbnYuQ09NTU9OX0ZPTERFUl9OQU1FID8/IHJlYWRQbHVtYmluZ0NvbmZpZygpLmNvbW1vbkZvbGRlck5hbWUgPz8gJ2Q5LXBsdW1iaW5nLWNvbW1vbicsXG4gIH07XG4gIGNvbnN0IG1pc3NpbmcgPSBPYmplY3QuZW50cmllcyhjb25maWcpLmZpbHRlcigoWywgdmFsdWVdKSA9PiB2YWx1ZSA9PT0gdW5kZWZpbmVkKS5tYXAoKFtrZXldKSA9PiBrZXkpO1xuICBpZiAobWlzc2luZy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtaXNzaW5nIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb246ICR7bWlzc2luZy5qb2luKCcsICcpfSAodXNlIGZsYWdzIG9yIERCXyogZW52aXJvbm1lbnQgdmFyaWFibGVzKWApO1xuICB9XG4gIHJldHVybiBjb25maWc7XG59XG5cbmZ1bmN0aW9uIHRvRHJpdmVyQ29uZmlnKHsgZHJpdmVyLCAuLi5vcHRpb25zIH06IFJlY29yZDxzdHJpbmcsIGFueT4pOiBEcml2ZXJDb25maWcge1xuICByZXR1cm4geyBkcml2ZXIsIG9wdGlvbnMgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVDdXJyZW50U3RvcmFnZShmbGFnczogU3RvcmFnZUZsYWdzKTogUHJvbWlzZTxEcml2ZXJDb25maWc+IHtcbiAgY29uc3QgeyBlbnYsIGdldENvbmZpZ0Zyb21FbnYgfSA9IGF3YWl0IGxvYWREOUVudigpO1xuICBjb25zdCBsb2NhdGlvbiA9IFN0cmluZyhlbnYuU1RPUkFHRV9MT0NBVElPTlMgPz8gJycpLnNwbGl0KCcsJylbMF0udHJpbSgpO1xuICBjb25zdCBjb25maWcgPSBsb2NhdGlvbiA/IGdldENvbmZpZ0Zyb21FbnYoYFNUT1JBR0VfJHtsb2NhdGlvbi50b1VwcGVyQ2FzZSgpfV9gKSA6IHt9O1xuICBhcHBseUNvbmZpZ0ZsYWdzKGNvbmZpZywgJy0tc3RvcmFnZS1jb25maWcnLCBmbGFncy5zdG9yYWdlQ29uZmlnKTtcbiAgaWYgKCFjb25maWcuZHJpdmVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdubyBzdG9yYWdlIGRyaXZlciBmb3VuZCAodXNlIFNUT1JBR0VfTE9DQVRJT05TIGFuZCBTVE9SQUdFXzxMT0NBVElPTj5fRFJJVkVSIG9yIC0tc3RvcmFnZS1jb25maWcgZHJpdmVyPS4uLiknKTtcbiAgfVxuICByZXR1cm4gdG9Ecml2ZXJDb25maWcoY29uZmlnKTtcbn1cblxuZnVuY3Rpb24gc2V0UGF0aCh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIHBhdGg6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBjb25zdCBsYXN0ID0ga2V5cy5wb3AoKSE7XG4gIGxldCBjdXJyZW50ID0gdGFyZ2V0O1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY3VycmVudFtrZXldID0gY3VycmVudFtrZXldID8/IHt9O1xuICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gIH1cbiAgY3VycmVudFtsYXN0XSA9IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBhcHBseUNvbmZpZ0ZsYWdzKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiwgZmxhZzogc3RyaW5nLCBlbnRyaWVzOiBzdHJpbmdbXSA9IFtdKSB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IGVudHJ5LmluZGV4T2YoJz0nKTtcbiAgICBpZiAoc2VwYXJhdG9yID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkICR7ZmxhZ30gXCIke2VudHJ5fVwiLCBleHBlY3RlZCBrZXk9dmFsdWVgKTtcbiAgICB9XG4gICAgc2V0UGF0aChjb25maWcsIGVudHJ5LnNsaWNlKDAsIHNlcGFyYXRvciksIGVudHJ5LnNsaWNlKHNlcGFyYXRvciArIDEpKTtcbiAgfVxufVxuXG4vKiogVGhlIGludGVybWVkaWF0ZSBzdG9yYWdlLCBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIGRyaXZlciBpcyBjb25maWd1cmVkLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRJbnRlcm1lZGlhdGVTdG9yYWdlKGZsYWdzOiBTdG9yYWdlRmxhZ3MpOiBQcm9taXNlPERyaXZlckNvbmZpZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB7IGVudiwgZ2V0Q29uZmlnRnJvbUVudiB9ID0gYXdhaXQgbG9hZEQ5RW52KCk7XG4gIGxldCBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBjb25zdCBmaWxlID0gcmVhZFBsdW1iaW5nQ29uZmlnKCkuaW50ZXJtZWRpYXRlU3RvcmFnZTtcbiAgaWYgKGZpbGUpIHtcbiAgICBjb25maWcgPSB7IGRyaXZlcjogZmlsZS5kcml2ZXIsIC4uLmZpbGUub3B0aW9ucyB9O1xuICAgIGZvciAoY29uc3QgW2tleSwgZW52TmFtZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlsZS5zZWNyZXRFbnYgPz8ge30pKSB7XG4gICAgICBjb25maWdba2V5XSA9IGVudltlbnZOYW1lXTtcbiAgICB9XG4gIH1cblxuICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4uZ2V0Q29uZmlnRnJvbUVudignSU5URVJNRURJQVRFX1NUT1JBR0VfJykgfTtcblxuICBhcHBseUNvbmZpZ0ZsYWdzKGNvbmZpZywgJy0taW50ZXJtZWRpYXRlLXN0b3JhZ2UtY29uZmlnJywgZmxhZ3MuaW50ZXJtZWRpYXRlU3RvcmFnZUNvbmZpZyk7XG5cbiAgcmV0dXJuIGNvbmZpZy5kcml2ZXIgPyB0b0RyaXZlckNvbmZpZyhjb25maWcpIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUludGVybWVkaWF0ZVN0b3JhZ2UoZmxhZ3M6IFN0b3JhZ2VGbGFncyk6IFByb21pc2U8RHJpdmVyQ29uZmlnPiB7XG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGZpbmRJbnRlcm1lZGlhdGVTdG9yYWdlKGZsYWdzKTtcbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGludGVybWVkaWF0ZSBzdG9yYWdlIGRyaXZlciBmb3VuZCAodXNlIGludGVybWVkaWF0ZVN0b3JhZ2UgaW4gJHtQTFVNQklOR19DT05GSUdfRklMRX0sIElOVEVSTUVESUFURV9TVE9SQUdFX0RSSVZFUiBvciAtLWludGVybWVkaWF0ZS1zdG9yYWdlLWNvbmZpZyBkcml2ZXI9Li4uKWApO1xuICB9XG4gIHJldHVybiBjb25maWc7XG59XG5cbi8qKlxuICogVGhlIHN0b3JhZ2VzIHRvIHN5bmMgZmlsZXMgYmV0d2Vlbiwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGUgc3luYyBpcyBkaXNhYmxlZFxuICogKGAtLW5vLWZpbGVzYCwgU0tJUF9GSUxFX1NZTkMpIG9yIG5vIGludGVybWVkaWF0ZSBzdG9yYWdlIGlzIGNvbmZpZ3VyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlRmlsZVN5bmMoZmxhZ3M6IFN0b3JhZ2VGbGFncywgZGlyZWN0aW9uOiAncHVzaCcgfCAncHVsbCcpOiBQcm9taXNlPHsgb3JpZ2luOiBEcml2ZXJDb25maWc7IGRlc3RpbmF0aW9uOiBEcml2ZXJDb25maWcgfSB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB7IGVudiB9ID0gYXdhaXQgbG9hZEQ5RW52KCk7XG4gIGlmIChmbGFncy5maWxlcyA9PT0gZmFsc2UgfHwgZW52LlNLSVBfRklMRV9TWU5DID09PSB0cnVlIHx8IGVudi5TS0lQX0ZJTEVfU1lOQyA9PT0gJ3RydWUnKSB7XG4gICAgbG9nZ2VyLmluZm8oJ0ZpbGUgc3luYyBkaXNhYmxlZCwgc2tpcHBpbmcgaXQnKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGludGVybWVkaWF0ZSA9IGF3YWl0IGZpbmRJbnRlcm1lZGlhdGVTdG9yYWdlKGZsYWdzKTtcbiAgaWYgKCFpbnRlcm1lZGlhdGUpIHtcbiAgICBsb2dnZXIuaW5mbygnTm8gaW50ZXJtZWRpYXRlIHN0b3JhZ2UgY29uZmlndXJlZCwgc2tpcHBpbmcgdGhlIGZpbGUgc3luYycpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgY3VycmVudCA9IGF3YWl0IHJlc29sdmVDdXJyZW50U3RvcmFnZShmbGFncyk7XG4gIHJldHVybiBkaXJlY3Rpb24gPT09ICdwdXNoJ1xuICAgID8geyBvcmlnaW46IGN1cnJlbnQsIGRlc3RpbmF0aW9uOiBpbnRlcm1lZGlhdGUgfVxuICAgIDogeyBvcmlnaW46IGludGVybWVkaWF0ZSwgZGVzdGluYXRpb246IGN1cnJlbnQgfTtcbn1cbiJdfQ==
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
user: string;
|
|
4
|
-
pwd: string;
|
|
5
|
-
database: string;
|
|
6
|
-
ssl?: boolean;
|
|
7
|
-
}, opts?: {
|
|
1
|
+
import { DbConfig } from './env';
|
|
2
|
+
export declare function saveSQLSnapshot(dbConfig: DbConfig, opts?: {
|
|
8
3
|
cedar?: boolean;
|
|
9
4
|
}): Promise<void>;
|
|
@@ -26,6 +26,7 @@ async function saveSQLSnapshot(dbConfig, opts = {}) {
|
|
|
26
26
|
const connectionProps = {
|
|
27
27
|
user: dbConfig.user,
|
|
28
28
|
host: dbConfig.host,
|
|
29
|
+
port: dbConfig.port,
|
|
29
30
|
password: dbConfig.pwd,
|
|
30
31
|
database: dbConfig.database,
|
|
31
32
|
...(dbConfig.ssl ? { ssl: { rejectUnauthorized: false } } : {}),
|
|
@@ -40,7 +41,7 @@ async function saveSQLSnapshot(dbConfig, opts = {}) {
|
|
|
40
41
|
'schema', //schema only
|
|
41
42
|
'inspect',
|
|
42
43
|
'-u',
|
|
43
|
-
`postgres://${encodeURIComponent(dbConfig.user)}:${encodeURIComponent(dbConfig.pwd)}@${dbConfig.host}/${dbConfig.database}?sslmode=${dbConfig.ssl ? 'require' : 'disable'}`, //output file
|
|
44
|
+
`postgres://${encodeURIComponent(dbConfig.user)}:${encodeURIComponent(dbConfig.pwd)}@${dbConfig.host}:${dbConfig.port}/${dbConfig.database}?sslmode=${dbConfig.ssl ? 'require' : 'disable'}`, //output file
|
|
44
45
|
'--format',
|
|
45
46
|
'{{ sql . " " }}',
|
|
46
47
|
], {
|
|
@@ -162,13 +163,13 @@ async function saveSQLSnapshot(dbConfig, opts = {}) {
|
|
|
162
163
|
//for directus_files and directus_folders, we only want to keep some but not all files.
|
|
163
164
|
//for now, we keep all files included in the "d9-plumbing-common" folder
|
|
164
165
|
if (['directus_files', 'directus_folders'].includes(table.table_name)) {
|
|
165
|
-
const commonFolderName =
|
|
166
|
+
const commonFolderName = pg.escapeLiteral(dbConfig.commonFolderName);
|
|
166
167
|
let recursiveStatement = `
|
|
167
168
|
WITH RECURSIVE folder_tree AS (
|
|
168
169
|
-- Anchor: the "d9-plumbing-common" folder
|
|
169
170
|
SELECT id
|
|
170
171
|
FROM directus_folders
|
|
171
|
-
WHERE name =
|
|
172
|
+
WHERE name = ${commonFolderName}
|
|
172
173
|
UNION
|
|
173
174
|
-- Recursive step: find subfolders
|
|
174
175
|
SELECT f.id
|
|
@@ -203,7 +204,7 @@ async function saveSQLSnapshot(dbConfig, opts = {}) {
|
|
|
203
204
|
)
|
|
204
205
|
`;
|
|
205
206
|
sqlSelectStatement += ' OR t.id IN (SELECT id FROM folder_from_fields_tree) ';
|
|
206
|
-
sqlSelectStatement += ` OR t.name =
|
|
207
|
+
sqlSelectStatement += ` OR t.name = ${commonFolderName} `; //also include the common folder
|
|
207
208
|
}
|
|
208
209
|
sqlSelectStatement = recursiveStatement + sqlSelectStatement;
|
|
209
210
|
}
|
|
@@ -229,4 +230,4 @@ async function saveSQLSnapshot(dbConfig, opts = {}) {
|
|
|
229
230
|
await (0, d9_to_cedar_1.d9ToCedar)({ permissionPath: './permissions', sqlPath: './sql/data' });
|
|
230
231
|
}
|
|
231
232
|
}
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1zbmFwc2hvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2F2ZS9zYXZlLXNuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBd0JBLDBDQXdPQztBQWhRRCwyQkFBcUQ7QUFDckQsMENBQTZEO0FBQzdELDhDQUEyQztBQUMzQyx5QkFBeUI7QUFDekIscURBQStDO0FBQy9DLCtCQUE0QjtBQUM1Qix1Q0FBMEM7QUFDMUMseUNBQXNDO0FBQ3RDLHNEQUFpRDtBQUVqRCxLQUFLLFVBQVUsYUFBYTtJQUMxQiwwQ0FBMEM7SUFDMUMsNENBQTRDO0lBQzVDLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBTSxJQUFBLG1CQUFRLEVBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xFLElBQUksT0FBTyxHQUNMLG9FQUFvRSxDQUFDO0lBQzNFLElBQUksV0FBVyxHQUFHLG9CQUFvQixDQUFDO0lBQ3ZDLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sR0FBRyx1REFBdUQsQ0FBQztJQUNsRSxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQzFCLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNwRCxNQUFNLElBQUEsb0JBQVMsRUFBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRU0sS0FBSyxVQUFVLGVBQWUsQ0FBQyxRQU1yQyxFQUFFLE9BQTRCLEVBQUU7SUFDL0IsTUFBTSxlQUFlLEdBQW9CO1FBQ3ZDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtRQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7UUFDbkIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHO1FBQ3RCLFFBQVEsRUFBRSxRQUFR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QUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQzNDLFlBQVksRUFBRSxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDO1FBQ0QsZUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLFlBQVkseUJBQXlCLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLGVBQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsQ0FBQztJQUNWLENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUN6QixlQUFNLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDaEUsTUFBTSxJQUFBLHVCQUFTLEVBQUMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlV3JpdGVTdHJlYW0sIHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IG1rZGlyLCByZWFkRmlsZSwgcm0sIHdyaXRlRmlsZSB9IGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCB7IHBpcGVsaW5lIH0gZnJvbSAnc3RyZWFtL3Byb21pc2VzJztcbmltcG9ydCAqIGFzIHBnIGZyb20gJ3BnJztcbmltcG9ydCB7IHRvIGFzIGNvcHlUbyB9IGZyb20gJ3BnLWNvcHktc3RyZWFtcyc7XG5pbXBvcnQgeyBDbGkgfSBmcm9tICcuL2NsaSc7XG5pbXBvcnQgeyBlbnN1cmVBdGxhcyB9IGZyb20gJy4uLy4uL2F0bGFzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBkOVRvQ2VkYXIgfSBmcm9tICcuLi9jZWRhci9kOS10by1jZWRhcic7XG5cbmFzeW5jIGZ1bmN0aW9uIGZvcm1hdGVTZXJpYWwoKSB7XG4gIC8vdGhpcyBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoaXMgaXMgZml4ZWQgOlxuICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9hcmlnYS9hdGxhcy9pc3N1ZXMvMjQ5MlxuICBjb25zdCBzcWxTY2hlbWEgPSAoYXdhaXQgcmVhZEZpbGUoJy4vc3FsL3NjaGVtYS5zcWwnKSkudG9TdHJpbmcoKTtcbiAgbGV0IHBhdHRlcm4gPVxuICAgICAgICAvKFwiLipcIilcXHMraW50ZWdlclxccytOT1RcXHMrTlVMTFxccytERUZBVUxUXFxzK25leHR2YWxcXCguKjo6cmVnY2xhc3NcXCkvZztcbiAgbGV0IHJlcGxhY2VtZW50ID0gJyQxIHNlcmlhbCBOT1QgTlVMTCc7XG4gIGxldCBlbmRTY2hlbWEgPSBzcWxTY2hlbWEucmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudCk7XG4gIHBhdHRlcm4gPSAvKFwiLipcIilcXHMraW50ZWdlclxccytERUZBVUxUXFxzK25leHR2YWxcXCguKjo6cmVnY2xhc3NcXCkvZztcbiAgcmVwbGFjZW1lbnQgPSAnJDEgc2VyaWFsJztcbiAgZW5kU2NoZW1hID0gZW5kU2NoZW1hLnJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQpO1xuICBhd2FpdCB3cml0ZUZpbGUoJy4vc3FsL3NjaGVtYS5zcWwnLCBlbmRTY2hlbWEpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZVNRTFNuYXBzaG90KGRiQ29uZmlnOiB7XG4gIGhvc3Q6IHN0cmluZztcbiAgdXNlcjogc3RyaW5nO1xuICBwd2Q6IHN0cmluZztcbiAgZGF0YWJhc2U6IHN0cmluZztcbiAgc3NsPzogYm9vbGVhbjtcbn0sIG9wdHM6IHsgY2VkYXI/OiBib29sZWFuIH0gPSB7fSkge1xuICBjb25zdCBjb25uZWN0aW9uUHJvcHM6IHBnLkNsaWVudENvbmZpZyA9IHtcbiAgICB1c2VyOiBkYkNvbmZpZy51c2VyLFxuICAgIGhvc3Q6IGRiQ29uZmlnLmhvc3QsXG4gICAgcGFzc3dvcmQ6IGRiQ29uZmlnLnB3ZCxcbiAgICBkYXRhYmFzZTogZGJDb25maWcuZGF0YWJhc2UsXG4gICAgLi4uKGRiQ29uZmlnLnNzbCA/IHsgc3NsOiB7IHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UgfSB9IDoge30pLFxuICB9O1xuICBjb25zdCBjbGkgPSBuZXcgQ2xpKCk7XG4gIGF3YWl0IHJtKCcuL3NxbC9kYXRhJywgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pOyAvL3dlIG1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGVtcHR5IGRhdGEgc2V0XG4gIGF3YWl0IFByb21pc2UuYWxsKFthd2FpdCBta2Rpcignc3FsL2RhdGEnLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KV0pOyAvL3dpdGggcmVjdXJzaXZlLCB0aGVyZSBpcyBubyBlcnJvciBpZiBmb2xkZXIgYWxyZWFkeSBleGlzdHNcblxuICAvL2F0bGFzIGRvY3VtZW50YXRpb24gOiBodHRwczovL2F0bGFzZ28uaW8vXG4gIGxvZ2dlci5pbmZvKCdEdW1waW5nIHRoZSBzY2hlbWEgd2l0aCBhdGxhcyBpbnRvIC4vc3FsL3NjaGVtYS5zcWwnKTtcbiAgY29uc3Qgd3JpdGVGaWxlU3RyZWFtID0gY3JlYXRlV3JpdGVTdHJlYW0oJy4vc3FsL3NjaGVtYS5zcWwnKTtcbiAgYXdhaXQgY2xpLmNvbW1hbmQoXG4gICAgYXdhaXQgZW5zdXJlQXRsYXMoKSxcbiAgICBbXG4gICAgICAnc2NoZW1hJywgLy9zY2hlbWEgb25seVxuICAgICAgJ2luc3BlY3QnLFxuICAgICAgJy11JyxcbiAgICAgIGBwb3N0Z3JlczovLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGRiQ29uZmlnLnVzZXIpfToke2VuY29kZVVSSUNvbXBvbmVudChkYkNvbmZpZy5wd2QpfUAke2RiQ29uZmlnLmhvc3R9LyR7ZGJDb25maWcuZGF0YWJhc2V9P3NzbG1vZGU9JHtkYkNvbmZpZy5zc2wgPyAncmVxdWlyZScgOiAnZGlzYWJsZSd9YCwgLy9vdXRwdXQgZmlsZVxuICAgICAgJy0tZm9ybWF0JyxcbiAgICAgICd7eyBzcWwgLiBcIiAgXCIgfX0nLFxuICAgIF0sXG4gICAge1xuICAgICAgZW52OiB7XG4gICAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgICBBVExBU19OT19VUERBVEVfTk9USUZJRVI6ICd0cnVlJywgLy9pZiBub3Qgc2V0LCBhdGxhcyBlbmQgYSBmaW5hbCBsaW5lIHdpdGggXCJhIG5ldyB2ZXJzaW9uIG9mIGF0bGFzIGlzIGF2YWlsYWJsZVwiXG4gICAgICB9LFxuICAgICAgc3Rkb3V0OiB3cml0ZUZpbGVTdHJlYW0sXG4gICAgfSxcbiAgKTtcbiAgYXdhaXQgZm9ybWF0ZVNlcmlhbCgpO1xuICBsZXQgY3VzdG9tVGFibGVzVG9EdW1wIDogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGN1c3RvbVRhYmxlc05vdFRvRHVtcCA6IHN0cmluZ1tdID0gW107XG4gIHRyeSB7XG4gICAgY3VzdG9tVGFibGVzVG9EdW1wID0gcmVhZEZpbGVTeW5jKCcuL3NxbC90YWJsZXNfdG9fZHVtcC50eHQnKVxuICAgICAgLnRvU3RyaW5nKClcbiAgICAgIC5zcGxpdCgnXFxuJyk7XG4gICAgbG9nZ2VyLmluZm8oYFVzaW5nIHNxbC90YWJsZXNfdG9fZHVtcC50eHQgKCR7Y3VzdG9tVGFibGVzVG9EdW1wLmxlbmd0aH0gdGFibGVzKWApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdubyBzcWwvdGFibGVzX3RvX2R1bXAudHh0Jyk7XG4gIH1cbiAgdHJ5IHtcbiAgICBjdXN0b21UYWJsZXNOb3RUb0R1bXAgPSByZWFkRmlsZVN5bmMoJy4vc3FsL3RhYmxlc19ub3RfdG9fZHVtcC50eHQnKVxuICAgICAgLnRvU3RyaW5nKClcbiAgICAgIC5zcGxpdCgnXFxuJyk7XG4gICAgbG9nZ2VyLmluZm8oYFVzaW5nIHNxbC90YWJsZXNfbm90X3RvX2R1bXAudHh0ICgke2N1c3RvbVRhYmxlc05vdFRvRHVtcC5sZW5ndGh9IHRhYmxlcylgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5kZWJ1Zygnbm8gc3FsL3RhYmxlc19ub3RfdG9fZHVtcC50eHQnKTtcbiAgfVxuICBjb25zdCBwZ0NsaWVudCA9IG5ldyBwZy5DbGllbnQoY29ubmVjdGlvblByb3BzKTtcbiAgYXdhaXQgcGdDbGllbnQuY29ubmVjdCgpO1xuICB0cnkge1xuICAgIGxvZ2dlci5pbmZvKCdEdW1waW5nIHRoZSBkYXRhIGludG8gLi9zcWwvZGF0YScpO1xuICAgIGxldCBkdW1wZWRUYWJsZXMgPSAwO1xuICAgIGNvbnN0IHRhYmxlcyA9IGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcbiAgICAgICAgICBTRUxFQ1QgdGFibGVfbmFtZVxuICAgICAgICAgIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlc1xuICAgICAgICAgIFdIRVJFIHRhYmxlX3NjaGVtYT0ncHVibGljJ1xuICAgICAgICAgIEFORCB0YWJsZV90eXBlPSdCQVNFIFRBQkxFJztcbiAgICAgIGApO1xuXG4gICAgY29uc3QgZm9yZWlnbktleXNUb1VzZXIgPSBhd2FpdCBwZ0NsaWVudC5xdWVyeShgXG4gICAgICAgICAgU0VMRUNUXG4gICAgICAgICAgICAgIGNvbm5hbWUgQVMgZm9yZWlnbl9rZXlfbmFtZSxcbiAgICAgICAgICAgICAgY29ucmVsaWQ6OnJlZ2NsYXNzIEFTIHRhYmxlX25hbWUsXG4gICAgICAgICAgICAgIGEuYXR0bmFtZSBBUyBjb2x1bW5fbmFtZSxcbiAgICAgICAgICAgICAgY29uZnJlbGlkOjpyZWdjbGFzcyBBUyByZWZlcmVuY2VkX3RhYmxlLFxuICAgICAgICAgICAgICBhZi5hdHRuYW1lIEFTIHJlZmVyZW5jZWRfY29sdW1uXG4gICAgICAgICAgRlJPTVxuICAgICAgICAgICAgICBwZ19jb25zdHJhaW50IEFTIGNcbiAgICAgICAgICBKT0lOXG4gICAgICAgICAgICAgIHBnX2F0dHJpYnV0ZSBBUyBhIE9OIGEuYXR0bnVtID0gQU5ZKGMuY29ua2V5KSBBTkQgYS5hdHRyZWxpZCA9IGMuY29ucmVsaWRcbiAgICAgICAgICBKT0lOXG4gICAgICAgICAgICAgIHBnX2F0dHJpYnV0ZSBBUyBhZiBPTiBhZi5hdHRudW0gPSBBTlkoYy5jb25ma2V5KSBBTkQgYWYuYXR0cmVsaWQgPSBjLmNvbmZyZWxpZFxuICAgICAgICAgIFdIRVJFXG4gICAgICAgICAgICAgIGNvbmZyZWxpZCA9ICdkaXJlY3R1c191c2Vycyc6OnJlZ2NsYXNzXG4gICAgICBgKTtcblxuICAgIGNvbnN0IHRhYmxlSGFzRmdLZXk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PiA9IHt9O1xuICAgIGZvciAoY29uc3QgZm9yZWlnbktleSBvZiBmb3JlaWduS2V5c1RvVXNlci5yb3dzKSB7XG4gICAgICB0YWJsZUhhc0ZnS2V5W2ZvcmVpZ25LZXkudGFibGVfbmFtZV0gPSB7XG4gICAgICAgIC4uLnRhYmxlSGFzRmdLZXlbZm9yZWlnbktleS50YWJsZV9uYW1lXSxcbiAgICAgICAgW2ZvcmVpZ25LZXkuY29sdW1uX25hbWVdOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIHRhYmxlcy5yb3dzKSB7XG4gICAgICAvL3RoZSB0YWJsZSBpcyBub3QgaW4gdGFibGVzX25vdF90b19kdW1wLnR4dFxuICAgICAgLy9laXRoZXIgOiBpcyBhIGRpcmVjdHVzXyB0YWJsZVxuICAgICAgLy9laXRoZXIgOiB0aGUgdGFibGUgaXMgaW4gdGFibGVzX3RvX2R1bXAudHh0XG4gICAgICBpZiAoXG4gICAgICAgICFjdXN0b21UYWJsZXNOb3RUb0R1bXAuaW5jbHVkZXModGFibGUudGFibGVfbmFtZSkgJiZcbiAgICAgICAgICAgICAgKCh0YWJsZS50YWJsZV9uYW1lLnN0YXJ0c1dpdGgoJ2RpcmVjdHVzXycpICYmXG4gICAgICAgICAgICAgICAgICAhKHRhYmxlLnRhYmxlX25hbWUgPT09ICdkaXJlY3R1c191c2VycycpICYmXG4gICAgICAgICAgICAgICAgICAhKHRhYmxlLnRhYmxlX25hbWUgPT09ICdkaXJlY3R1c19zZXNzaW9ucycpICYmXG4gICAgICAgICAgICAgICAgICAhKHRhYmxlLnRhYmxlX25hbWUgPT09ICdkaXJlY3R1c19yZXZpc2lvbnMnKSAmJlxuICAgICAgICAgICAgICAgICAgISh0YWJsZS50YWJsZV9uYW1lID09PSAnZGlyZWN0dXNfYWN0aXZpdHknKSAmJlxuICAgICAgICAgICAgICAgICAgISh0YWJsZS50YWJsZV9uYW1lID09PSAnZGlyZWN0dXNfcHJlc2V0cycpKSB8fFxuICAgICAgICAgICAgICAgICAgY3VzdG9tVGFibGVzVG9EdW1wLmluY2x1ZGVzKHRhYmxlLnRhYmxlX25hbWUpKVxuICAgICAgKSB7XG4gICAgICAgIC8vV2UgY2FuIG5vdCBkdW1wIHRoZSB1c2VyIHRhYmxlXG4gICAgICAgIC8vc28gZm9yIGFsbCB0YWJsZSBwb2ludGluZyB0byB0aGUgdXNlciB0YWJsZVxuICAgICAgICAvL3dlIHBvaW50IHRvIGEgZmljdGlmIGNpIHVzZXIuXG4gICAgICAgIC8vZm9yIHRoaXMsIHdlIGZpbmQgYWxsIHRoZSBmb3JlaWduIGtleXMgcG9pbnRpbmcgdG8gZGlyZWN0dXNfdXNlciAoaWQpXG4gICAgICAgIC8vYW5kIHdlIGZvcm1hdCB0aGUgY29weVxuXG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcbiAgICAgICAgICAgICAgICAgIFNFTEVDVCBjb2x1bW5fbmFtZVxuICAgICAgICAgICAgICAgICAgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1uc1xuICAgICAgICAgICAgICAgICAgV0hFUkUgdGFibGVfbmFtZSA9ICcke3RhYmxlLnRhYmxlX25hbWV9J1xuICAgICAgICAgICAgICAgICAgT1JERVIgQlkgY29sdW1uX25hbWU7XG4gICAgICAgICAgICAgIGApO1xuICAgICAgICBjb25zdCBwcmltYXJ5S2V5cyA9IGF3YWl0IHBnQ2xpZW50LnF1ZXJ5KGBcbiAgICAgICAgICAgICAgICAgIFNFTEVDVCBhLmF0dG5hbWUgQVMgcGssIGZvcm1hdF90eXBlKGEuYXR0dHlwaWQsIGEuYXR0dHlwbW9kKSBBUyBkYXRhX3R5cGVcbiAgICAgICAgICAgICAgICAgIEZST00gICBwZ19pbmRleCBpXG4gICAgICAgICAgICAgICAgICBKT0lOICAgcGdfYXR0cmlidXRlIGEgT04gYS5hdHRyZWxpZCA9IGkuaW5kcmVsaWRcbiAgICAgICAgICAgICAgICAgIEFORCBhLmF0dG51bSA9IEFOWShpLmluZGtleSlcbiAgICAgICAgICAgICAgICAgIFdIRVJFICBpLmluZHJlbGlkID0gJ1wiJHt0YWJsZS50YWJsZV9uYW1lfVwiJzo6cmVnY2xhc3NcbiAgICAgICAgICAgICAgYCk7XG4gICAgICAgIGNvbnN0IHByaW1hcnlLZXlDb2x1bW5OYW1lID0gcHJpbWFyeUtleXMucm93c1swXS5waztcblxuICAgICAgICAvL3NxbCBzdGF0ZW1lbnQgd2lsbCBsb29rIGxpa2VcbiAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAqIFNFTEVDVCBpZCwgbWVzc2FnZSwgJycgQVMgdXNlcl9jcmVhdGVkLCAnJyBBUyB1c2VyX3VwZGF0ZWRcbiAgICAgICAgICAgICAgICogRlJPTSBkaXJlY3R1c19yZXZpc2lvbnNcbiAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgY29uc3Qgd2JjZUNpVXNlcklkID0gJzQ5YmNkZTVkLTkwYWEtNGJlOC1hYjEwLWY5YWUxYTA3NTQ2Zic7XG5cbiAgICAgICAgbGV0IHNxbFNlbGVjdFN0YXRlbWVudCA9ICdTRUxFQ1QgJztcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMucm93cykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRhYmxlSGFzRmdLZXk/Llt0YWJsZS50YWJsZV9uYW1lXT8uW2ZpZWxkLmNvbHVtbl9uYW1lXVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc3FsU2VsZWN0U3RhdGVtZW50ICs9IGBDQVNFIFdIRU4gKHQuXCIke2ZpZWxkLmNvbHVtbl9uYW1lfVwiIElTIE5VTEwpICAgXG4gICAgICAgICAgICAgICAgICBUSEVOIHQuXCIke2ZpZWxkLmNvbHVtbl9uYW1lfVwiXG4gICAgICAgICAgICAgICAgICBFTFNFICcke3diY2VDaVVzZXJJZH0nIFxuICAgICAgICAgICAgICAgICAgRU5EIEFTIFwiJHtmaWVsZC5jb2x1bW5fbmFtZX1cImA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNxbFNlbGVjdFN0YXRlbWVudCArPSBgdC5cIiR7ZmllbGQuY29sdW1uX25hbWV9XCJgO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzcWxTZWxlY3RTdGF0ZW1lbnQgKz0gJywgJztcbiAgICAgICAgfVxuICAgICAgICAvL3JlbW92ZSBsYXN0IGNvbW1hXG4gICAgICAgIHNxbFNlbGVjdFN0YXRlbWVudCA9IHNxbFNlbGVjdFN0YXRlbWVudC5zbGljZSgwLCAtMik7XG4gICAgICAgIC8vZmluaXNoIHN0YXRlbWVudFxuICAgICAgICBzcWxTZWxlY3RTdGF0ZW1lbnQgKz0gYCAgRlJPTSBcIiR7dGFibGUudGFibGVfbmFtZX1cIiBBUyB0YDtcbiAgICAgICAgLy9mb3IgZGlyZWN0dXNfZmlsZXMgYW5kIGRpcmVjdHVzX2ZvbGRlcnMsIHdlIG9ubHkgd2FudCB0byBrZWVwIHNvbWUgYnV0IG5vdCBhbGwgZmlsZXMuXG4gICAgICAgIC8vZm9yIG5vdywgd2Uga2VlcCBhbGwgZmlsZXMgaW5jbHVkZWQgaW4gdGhlIFwiZDktcGx1bWJpbmctY29tbW9uXCIgZm9sZGVyXG4gICAgICAgIGlmIChbJ2RpcmVjdHVzX2ZpbGVzJywgJ2RpcmVjdHVzX2ZvbGRlcnMnXS5pbmNsdWRlcyh0YWJsZS50YWJsZV9uYW1lKSkge1xuICAgICAgICAgIGNvbnN0IGNvbW1vbkZvbGRlck5hbWUgPSAnZDktcGx1bWJpbmctY29tbW9uJztcbiAgICAgICAgICBsZXQgcmVjdXJzaXZlU3RhdGVtZW50ID0gYFxuICAgICAgICAgICAgICAgICAgICAgIFdJVEggUkVDVVJTSVZFIGZvbGRlcl90cmVlIEFTIChcbiAgICAgICAgICAgICAgICAgICAgICAtLSBBbmNob3I6IHRoZSBcImQ5LXBsdW1iaW5nLWNvbW1vblwiIGZvbGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBkaXJlY3R1c19mb2xkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIG5hbWUgPSAnJHtjb21tb25Gb2xkZXJOYW1lfSdcbiAgICAgICAgICAgICAgICAgICAgICBVTklPTlxuICAgICAgICAgICAgICAgICAgICAgIC0tIFJlY3Vyc2l2ZSBzdGVwOiBmaW5kIHN1YmZvbGRlcnNcbiAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QgZi5pZFxuICAgICAgICAgICAgICAgICAgICAgIEZST00gZGlyZWN0dXNfZm9sZGVycyBmXG4gICAgICAgICAgICAgICAgICAgICAgSk9JTiBmb2xkZXJfdHJlZSBmdCBPTiBmLnBhcmVudCA9IGZ0LmlkXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgYDtcbiAgICAgICAgICBjb25zdCBmb2xkZXJLZXkgOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAgICAgZGlyZWN0dXNfZmlsZXM6ICdmb2xkZXInLFxuICAgICAgICAgICAgZGlyZWN0dXNfZm9sZGVyczogJ3BhcmVudCcsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBzcWxTZWxlY3RTdGF0ZW1lbnQgKz0gYCBXSEVSRSB0LiR7Zm9sZGVyS2V5W3RhYmxlLnRhYmxlX25hbWVdfSBJTiAoU0VMRUNUIGlkIEZST00gZm9sZGVyX3RyZWUpIGA7XG4gICAgICAgICAgaWYgKHRhYmxlLnRhYmxlX25hbWUgPT09ICdkaXJlY3R1c19mb2xkZXJzJykge1xuICAgICAgICAgICAgLy9hbHNvIGluY2x1ZGUgZm9sZGVycyB0YXJnZXR0ZWQgYnkgYSBmaWVsZCAoZm9yIGV4YW1wbGUsIGEgZmlsZSBmaWVsZCB3aG9zZSBmaWxlIHdpbGwgYmUgcGxhY2VkIG9uIGEgc3BlY2lmaWMgZm9sZGVyKVxuICAgICAgICAgICAgLy8gYW5kIHRoZWlyIHBhcmVudHNcblxuICAgICAgICAgICAgcmVjdXJzaXZlU3RhdGVtZW50ICs9IGAgLCBcbiAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJfZnJvbV9maWVsZHNfdHJlZSBBUyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBBbmNob3I6IEdldCB0aGUgaW5pdGlhbCBmb2xkZXIgSURzIGZyb20gZmllbGQgb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gV2UgY2FzdCB0byBVVUlEIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGZvbGRlcnMgdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCAob3B0aW9uczo6anNvbi0+Pidmb2xkZXInKTo6dXVpZCBBUyBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBkaXJlY3R1c19maWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIG9wdGlvbnMgSVMgTk9UIE5VTEwgQU5EIG9wdGlvbnM6Ompzb24tPj4nZm9sZGVyJyBJUyBOT1QgTlVMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JT05cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIFJlY3Vyc2l2ZSBzdGVwOiBmaW5kIHRoZSBwYXJlbnQgb2YgZWFjaCBmb2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIFRoaXMgXCJjbGltYnNcIiB0aGUgdHJlZSBieSBtYXRjaGluZyB0aGUgSUQgd2UganVzdCBmb3VuZCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIHRvIGEgcm93IGFuZCBzZWxlY3RpbmcgaXRzIHBhcmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGYucGFyZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIGRpcmVjdHVzX2ZvbGRlcnMgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSk9JTiBmb2xkZXJfZnJvbV9maWVsZHNfdHJlZSBmdCBPTiBmLmlkID0gZnQuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIGYucGFyZW50IElTIE5PVCBOVUxMXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgc3FsU2VsZWN0U3RhdGVtZW50ICs9ICcgT1IgdC5pZCBJTiAoU0VMRUNUIGlkIEZST00gZm9sZGVyX2Zyb21fZmllbGRzX3RyZWUpICc7XG4gICAgICAgICAgICBzcWxTZWxlY3RTdGF0ZW1lbnQgKz0gYCBPUiB0Lm5hbWUgPSAnJHtjb21tb25Gb2xkZXJOYW1lfScgYDsgLy9hbHNvIGluY2x1ZGUgdGhlIGNvbW1vbiBmb2xkZXJcbiAgICAgICAgICB9XG4gICAgICAgICAgc3FsU2VsZWN0U3RhdGVtZW50ID0gcmVjdXJzaXZlU3RhdGVtZW50ICsgc3FsU2VsZWN0U3RhdGVtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgc3FsU2VsZWN0U3RhdGVtZW50ICs9IGAgT1JERVIgQlkgdC5cIiR7cHJpbWFyeUtleUNvbHVtbk5hbWV9XCJgO1xuXG4gICAgICAgIGNvbnN0IGRiU3RyZWFtID0gcGdDbGllbnQucXVlcnkoXG4gICAgICAgICAgY29weVRvKFxuICAgICAgICAgICAgYENPUFkgKCR7c3FsU2VsZWN0U3RhdGVtZW50fSkgVE8gU1RET1VUIERFTElNSVRFUiAnLCcgQ1NWIEhFQURFUjtgLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVTdHJlYW0gPSBjcmVhdGVXcml0ZVN0cmVhbShcbiAgICAgICAgICBgLi9zcWwvZGF0YS8ke3RhYmxlLnRhYmxlX25hbWV9LmNzdmAsXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHBpcGVsaW5lKGRiU3RyZWFtLCBmaWxlU3RyZWFtKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBkdW1wZWQgJHt0YWJsZS50YWJsZV9uYW1lfWApO1xuICAgICAgICBkdW1wZWRUYWJsZXMrKztcbiAgICAgIH1cbiAgICB9XG4gICAgbG9nZ2VyLmluZm8oYER1bXBlZCAke2R1bXBlZFRhYmxlc30gdGFibGVzIGludG8gLi9zcWwvZGF0YWApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKCdFcnJvciB3aGlsZSBkdW1waW5nIHRoZSBkYXRhJyk7XG4gICAgdGhyb3cgZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBwZ0NsaWVudC5lbmQoKTtcbiAgfVxuICBpZiAob3B0cy5jZWRhciAhPT0gZmFsc2UpIHtcbiAgICBsb2dnZXIuaW5mbygnR2VuZXJhdGluZyB0aGUgQ2VkYXIgcG9saWNpZXMgaW50byAuL3Blcm1pc3Npb25zJyk7XG4gICAgYXdhaXQgZDlUb0NlZGFyKHsgcGVybWlzc2lvblBhdGg6ICcuL3Blcm1pc3Npb25zJywgc3FsUGF0aDogJy4vc3FsL2RhdGEnIH0pO1xuICB9XG59Il19
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1zbmFwc2hvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2F2ZS9zYXZlLXNuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBeUJBLDBDQW1PQztBQTVQRCwyQkFBcUQ7QUFDckQsMENBQTZEO0FBQzdELDhDQUEyQztBQUMzQyx5QkFBeUI7QUFDekIscURBQStDO0FBQy9DLCtCQUE0QjtBQUU1Qix1Q0FBMEM7QUFDMUMseUNBQXNDO0FBQ3RDLHNEQUFpRDtBQUVqRCxLQUFLLFVBQVUsYUFBYTtJQUMxQiwwQ0FBMEM7SUFDMUMsNENBQTRDO0lBQzVDLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBTSxJQUFBLG1CQUFRLEVBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xFLElBQUksT0FBTyxHQUNMLG9FQUFvRSxDQUFDO0lBQzNFLElBQUksV0FBVyxHQUFHLG9CQUFvQixDQUFDO0lBQ3ZDLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sR0FBRyx1REFBdUQsQ0FBQztJQUNsRSxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQzFCLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNwRCxNQUFNLElBQUEsb0JBQVMsRUFBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRU0sS0FBSyxVQUFVLGVBQWUsQ0FBQyxRQUFrQixFQUFFLE9BQTRCLEVBQUU7SUFDdEYsTUFBTSxlQUFlLEdBQW9CO1FBQ3ZDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtRQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7UUFDbkIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1FBQ25CLFFBQVEsRUFBRSxRQUFR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RixNQUFNLElBQUEsbUJBQVEsRUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ3JDLGVBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDM0MsWUFBWSxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7UUFDRCxlQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsWUFBWSx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsZUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ3pCLGVBQU0sQ0FBQyxJQUFJLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUNoRSxNQUFNLElBQUEsdUJBQVMsRUFBQyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVXcml0ZVN0cmVhbSwgcmVhZEZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgbWtkaXIsIHJlYWRGaWxlLCBybSwgd3JpdGVGaWxlIH0gZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgcGlwZWxpbmUgfSBmcm9tICdzdHJlYW0vcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGcgZnJvbSAncGcnO1xuaW1wb3J0IHsgdG8gYXMgY29weVRvIH0gZnJvbSAncGctY29weS1zdHJlYW1zJztcbmltcG9ydCB7IENsaSB9IGZyb20gJy4vY2xpJztcbmltcG9ydCB7IERiQ29uZmlnIH0gZnJvbSAnLi9lbnYnO1xuaW1wb3J0IHsgZW5zdXJlQXRsYXMgfSBmcm9tICcuLi8uLi9hdGxhcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi9sb2dnZXInO1xuaW1wb3J0IHsgZDlUb0NlZGFyIH0gZnJvbSAnLi4vY2VkYXIvZDktdG8tY2VkYXInO1xuXG5hc3luYyBmdW5jdGlvbiBmb3JtYXRlU2VyaWFsKCkge1xuICAvL3RoaXMgY2FuIGJlIHJlbW92ZWQgb25jZSB0aGlzIGlzIGZpeGVkIDpcbiAgLy9odHRwczovL2dpdGh1Yi5jb20vYXJpZ2EvYXRsYXMvaXNzdWVzLzI0OTJcbiAgY29uc3Qgc3FsU2NoZW1hID0gKGF3YWl0IHJlYWRGaWxlKCcuL3NxbC9zY2hlbWEuc3FsJykpLnRvU3RyaW5nKCk7XG4gIGxldCBwYXR0ZXJuID1cbiAgICAgICAgLyhcIi4qXCIpXFxzK2ludGVnZXJcXHMrTk9UXFxzK05VTExcXHMrREVGQVVMVFxccytuZXh0dmFsXFwoLio6OnJlZ2NsYXNzXFwpL2c7XG4gIGxldCByZXBsYWNlbWVudCA9ICckMSBzZXJpYWwgTk9UIE5VTEwnO1xuICBsZXQgZW5kU2NoZW1hID0gc3FsU2NoZW1hLnJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQpO1xuICBwYXR0ZXJuID0gLyhcIi4qXCIpXFxzK2ludGVnZXJcXHMrREVGQVVMVFxccytuZXh0dmFsXFwoLio6OnJlZ2NsYXNzXFwpL2c7XG4gIHJlcGxhY2VtZW50ID0gJyQxIHNlcmlhbCc7XG4gIGVuZFNjaGVtYSA9IGVuZFNjaGVtYS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KTtcbiAgYXdhaXQgd3JpdGVGaWxlKCcuL3NxbC9zY2hlbWEuc3FsJywgZW5kU2NoZW1hKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhdmVTUUxTbmFwc2hvdChkYkNvbmZpZzogRGJDb25maWcsIG9wdHM6IHsgY2VkYXI/OiBib29sZWFuIH0gPSB7fSkge1xuICBjb25zdCBjb25uZWN0aW9uUHJvcHM6IHBnLkNsaWVudENvbmZpZyA9IHtcbiAgICB1c2VyOiBkYkNvbmZpZy51c2VyLFxuICAgIGhvc3Q6IGRiQ29uZmlnLmhvc3QsXG4gICAgcG9ydDogZGJDb25maWcucG9ydCxcbiAgICBwYXNzd29yZDogZGJDb25maWcucHdkLFxuICAgIGRhdGFiYXNlOiBkYkNvbmZpZy5kYXRhYmFzZSxcbiAgICAuLi4oZGJDb25maWcuc3NsID8geyBzc2w6IHsgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSB9IH0gOiB7fSksXG4gIH07XG4gIGNvbnN0IGNsaSA9IG5ldyBDbGkoKTtcbiAgYXdhaXQgcm0oJy4vc3FsL2RhdGEnLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7IC8vd2UgbWFrZSBzdXJlIHdlIGhhdmUgYW4gZW1wdHkgZGF0YSBzZXRcbiAgYXdhaXQgUHJvbWlzZS5hbGwoW2F3YWl0IG1rZGlyKCdzcWwvZGF0YScsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXSk7IC8vd2l0aCByZWN1cnNpdmUsIHRoZXJlIGlzIG5vIGVycm9yIGlmIGZvbGRlciBhbHJlYWR5IGV4aXN0c1xuXG4gIC8vYXRsYXMgZG9jdW1lbnRhdGlvbiA6IGh0dHBzOi8vYXRsYXNnby5pby9cbiAgbG9nZ2VyLmluZm8oJ0R1bXBpbmcgdGhlIHNjaGVtYSB3aXRoIGF0bGFzIGludG8gLi9zcWwvc2NoZW1hLnNxbCcpO1xuICBjb25zdCB3cml0ZUZpbGVTdHJlYW0gPSBjcmVhdGVXcml0ZVN0cmVhbSgnLi9zcWwvc2NoZW1hLnNxbCcpO1xuICBhd2FpdCBjbGkuY29tbWFuZChcbiAgICBhd2FpdCBlbnN1cmVBdGxhcygpLFxuICAgIFtcbiAgICAgICdzY2hlbWEnLCAvL3NjaGVtYSBvbmx5XG4gICAgICAnaW5zcGVjdCcsXG4gICAgICAnLXUnLFxuICAgICAgYHBvc3RncmVzOi8vJHtlbmNvZGVVUklDb21wb25lbnQoZGJDb25maWcudXNlcil9OiR7ZW5jb2RlVVJJQ29tcG9uZW50KGRiQ29uZmlnLnB3ZCl9QCR7ZGJDb25maWcuaG9zdH06JHtkYkNvbmZpZy5wb3J0fS8ke2RiQ29uZmlnLmRhdGFiYXNlfT9zc2xtb2RlPSR7ZGJDb25maWcuc3NsID8gJ3JlcXVpcmUnIDogJ2Rpc2FibGUnfWAsIC8vb3V0cHV0IGZpbGVcbiAgICAgICctLWZvcm1hdCcsXG4gICAgICAne3sgc3FsIC4gXCIgIFwiIH19JyxcbiAgICBdLFxuICAgIHtcbiAgICAgIGVudjoge1xuICAgICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgICAgQVRMQVNfTk9fVVBEQVRFX05PVElGSUVSOiAndHJ1ZScsIC8vaWYgbm90IHNldCwgYXRsYXMgZW5kIGEgZmluYWwgbGluZSB3aXRoIFwiYSBuZXcgdmVyc2lvbiBvZiBhdGxhcyBpcyBhdmFpbGFibGVcIlxuICAgICAgfSxcbiAgICAgIHN0ZG91dDogd3JpdGVGaWxlU3RyZWFtLFxuICAgIH0sXG4gICk7XG4gIGF3YWl0IGZvcm1hdGVTZXJpYWwoKTtcbiAgbGV0IGN1c3RvbVRhYmxlc1RvRHVtcCA6IHN0cmluZ1tdID0gW107XG4gIGxldCBjdXN0b21UYWJsZXNOb3RUb0R1bXAgOiBzdHJpbmdbXSA9IFtdO1xuICB0cnkge1xuICAgIGN1c3RvbVRhYmxlc1RvRHVtcCA9IHJlYWRGaWxlU3luYygnLi9zcWwvdGFibGVzX3RvX2R1bXAudHh0JylcbiAgICAgIC50b1N0cmluZygpXG4gICAgICAuc3BsaXQoJ1xcbicpO1xuICAgIGxvZ2dlci5pbmZvKGBVc2luZyBzcWwvdGFibGVzX3RvX2R1bXAudHh0ICgke2N1c3RvbVRhYmxlc1RvRHVtcC5sZW5ndGh9IHRhYmxlcylgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5kZWJ1Zygnbm8gc3FsL3RhYmxlc190b19kdW1wLnR4dCcpO1xuICB9XG4gIHRyeSB7XG4gICAgY3VzdG9tVGFibGVzTm90VG9EdW1wID0gcmVhZEZpbGVTeW5jKCcuL3NxbC90YWJsZXNfbm90X3RvX2R1bXAudHh0JylcbiAgICAgIC50b1N0cmluZygpXG4gICAgICAuc3BsaXQoJ1xcbicpO1xuICAgIGxvZ2dlci5pbmZvKGBVc2luZyBzcWwvdGFibGVzX25vdF90b19kdW1wLnR4dCAoJHtjdXN0b21UYWJsZXNOb3RUb0R1bXAubGVuZ3RofSB0YWJsZXMpYCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZGVidWcoJ25vIHNxbC90YWJsZXNfbm90X3RvX2R1bXAudHh0Jyk7XG4gIH1cbiAgY29uc3QgcGdDbGllbnQgPSBuZXcgcGcuQ2xpZW50KGNvbm5lY3Rpb25Qcm9wcyk7XG4gIGF3YWl0IHBnQ2xpZW50LmNvbm5lY3QoKTtcbiAgdHJ5IHtcbiAgICBsb2dnZXIuaW5mbygnRHVtcGluZyB0aGUgZGF0YSBpbnRvIC4vc3FsL2RhdGEnKTtcbiAgICBsZXQgZHVtcGVkVGFibGVzID0gMDtcbiAgICBjb25zdCB0YWJsZXMgPSBhd2FpdCBwZ0NsaWVudC5xdWVyeShgXG4gICAgICAgICAgU0VMRUNUIHRhYmxlX25hbWVcbiAgICAgICAgICBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXNcbiAgICAgICAgICBXSEVSRSB0YWJsZV9zY2hlbWE9J3B1YmxpYydcbiAgICAgICAgICBBTkQgdGFibGVfdHlwZT0nQkFTRSBUQUJMRSc7XG4gICAgICBgKTtcblxuICAgIGNvbnN0IGZvcmVpZ25LZXlzVG9Vc2VyID0gYXdhaXQgcGdDbGllbnQucXVlcnkoYFxuICAgICAgICAgIFNFTEVDVFxuICAgICAgICAgICAgICBjb25uYW1lIEFTIGZvcmVpZ25fa2V5X25hbWUsXG4gICAgICAgICAgICAgIGNvbnJlbGlkOjpyZWdjbGFzcyBBUyB0YWJsZV9uYW1lLFxuICAgICAgICAgICAgICBhLmF0dG5hbWUgQVMgY29sdW1uX25hbWUsXG4gICAgICAgICAgICAgIGNvbmZyZWxpZDo6cmVnY2xhc3MgQVMgcmVmZXJlbmNlZF90YWJsZSxcbiAgICAgICAgICAgICAgYWYuYXR0bmFtZSBBUyByZWZlcmVuY2VkX2NvbHVtblxuICAgICAgICAgIEZST01cbiAgICAgICAgICAgICAgcGdfY29uc3RyYWludCBBUyBjXG4gICAgICAgICAgSk9JTlxuICAgICAgICAgICAgICBwZ19hdHRyaWJ1dGUgQVMgYSBPTiBhLmF0dG51bSA9IEFOWShjLmNvbmtleSkgQU5EIGEuYXR0cmVsaWQgPSBjLmNvbnJlbGlkXG4gICAgICAgICAgSk9JTlxuICAgICAgICAgICAgICBwZ19hdHRyaWJ1dGUgQVMgYWYgT04gYWYuYXR0bnVtID0gQU5ZKGMuY29uZmtleSkgQU5EIGFmLmF0dHJlbGlkID0gYy5jb25mcmVsaWRcbiAgICAgICAgICBXSEVSRVxuICAgICAgICAgICAgICBjb25mcmVsaWQgPSAnZGlyZWN0dXNfdXNlcnMnOjpyZWdjbGFzc1xuICAgICAgYCk7XG5cbiAgICBjb25zdCB0YWJsZUhhc0ZnS2V5OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGZvcmVpZ25LZXkgb2YgZm9yZWlnbktleXNUb1VzZXIucm93cykge1xuICAgICAgdGFibGVIYXNGZ0tleVtmb3JlaWduS2V5LnRhYmxlX25hbWVdID0ge1xuICAgICAgICAuLi50YWJsZUhhc0ZnS2V5W2ZvcmVpZ25LZXkudGFibGVfbmFtZV0sXG4gICAgICAgIFtmb3JlaWduS2V5LmNvbHVtbl9uYW1lXTogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0YWJsZSBvZiB0YWJsZXMucm93cykge1xuICAgICAgLy90aGUgdGFibGUgaXMgbm90IGluIHRhYmxlc19ub3RfdG9fZHVtcC50eHRcbiAgICAgIC8vZWl0aGVyIDogaXMgYSBkaXJlY3R1c18gdGFibGVcbiAgICAgIC8vZWl0aGVyIDogdGhlIHRhYmxlIGlzIGluIHRhYmxlc190b19kdW1wLnR4dFxuICAgICAgaWYgKFxuICAgICAgICAhY3VzdG9tVGFibGVzTm90VG9EdW1wLmluY2x1ZGVzKHRhYmxlLnRhYmxlX25hbWUpICYmXG4gICAgICAgICAgICAgICgodGFibGUudGFibGVfbmFtZS5zdGFydHNXaXRoKCdkaXJlY3R1c18nKSAmJlxuICAgICAgICAgICAgICAgICAgISh0YWJsZS50YWJsZV9uYW1lID09PSAnZGlyZWN0dXNfdXNlcnMnKSAmJlxuICAgICAgICAgICAgICAgICAgISh0YWJsZS50YWJsZV9uYW1lID09PSAnZGlyZWN0dXNfc2Vzc2lvbnMnKSAmJlxuICAgICAgICAgICAgICAgICAgISh0YWJsZS50YWJsZV9uYW1lID09PSAnZGlyZWN0dXNfcmV2aXNpb25zJykgJiZcbiAgICAgICAgICAgICAgICAgICEodGFibGUudGFibGVfbmFtZSA9PT0gJ2RpcmVjdHVzX2FjdGl2aXR5JykgJiZcbiAgICAgICAgICAgICAgICAgICEodGFibGUudGFibGVfbmFtZSA9PT0gJ2RpcmVjdHVzX3ByZXNldHMnKSkgfHxcbiAgICAgICAgICAgICAgICAgIGN1c3RvbVRhYmxlc1RvRHVtcC5pbmNsdWRlcyh0YWJsZS50YWJsZV9uYW1lKSlcbiAgICAgICkge1xuICAgICAgICAvL1dlIGNhbiBub3QgZHVtcCB0aGUgdXNlciB0YWJsZVxuICAgICAgICAvL3NvIGZvciBhbGwgdGFibGUgcG9pbnRpbmcgdG8gdGhlIHVzZXIgdGFibGVcbiAgICAgICAgLy93ZSBwb2ludCB0byBhIGZpY3RpZiBjaSB1c2VyLlxuICAgICAgICAvL2ZvciB0aGlzLCB3ZSBmaW5kIGFsbCB0aGUgZm9yZWlnbiBrZXlzIHBvaW50aW5nIHRvIGRpcmVjdHVzX3VzZXIgKGlkKVxuICAgICAgICAvL2FuZCB3ZSBmb3JtYXQgdGhlIGNvcHlcblxuICAgICAgICBjb25zdCBmaWVsZHMgPSBhd2FpdCBwZ0NsaWVudC5xdWVyeShgXG4gICAgICAgICAgICAgICAgICBTRUxFQ1QgY29sdW1uX25hbWVcbiAgICAgICAgICAgICAgICAgIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnNcbiAgICAgICAgICAgICAgICAgIFdIRVJFIHRhYmxlX25hbWUgPSAnJHt0YWJsZS50YWJsZV9uYW1lfSdcbiAgICAgICAgICAgICAgICAgIE9SREVSIEJZIGNvbHVtbl9uYW1lO1xuICAgICAgICAgICAgICBgKTtcbiAgICAgICAgY29uc3QgcHJpbWFyeUtleXMgPSBhd2FpdCBwZ0NsaWVudC5xdWVyeShgXG4gICAgICAgICAgICAgICAgICBTRUxFQ1QgYS5hdHRuYW1lIEFTIHBrLCBmb3JtYXRfdHlwZShhLmF0dHR5cGlkLCBhLmF0dHR5cG1vZCkgQVMgZGF0YV90eXBlXG4gICAgICAgICAgICAgICAgICBGUk9NICAgcGdfaW5kZXggaVxuICAgICAgICAgICAgICAgICAgSk9JTiAgIHBnX2F0dHJpYnV0ZSBhIE9OIGEuYXR0cmVsaWQgPSBpLmluZHJlbGlkXG4gICAgICAgICAgICAgICAgICBBTkQgYS5hdHRudW0gPSBBTlkoaS5pbmRrZXkpXG4gICAgICAgICAgICAgICAgICBXSEVSRSAgaS5pbmRyZWxpZCA9ICdcIiR7dGFibGUudGFibGVfbmFtZX1cIic6OnJlZ2NsYXNzXG4gICAgICAgICAgICAgIGApO1xuICAgICAgICBjb25zdCBwcmltYXJ5S2V5Q29sdW1uTmFtZSA9IHByaW1hcnlLZXlzLnJvd3NbMF0ucGs7XG5cbiAgICAgICAgLy9zcWwgc3RhdGVtZW50IHdpbGwgbG9vayBsaWtlXG4gICAgICAgIC8qKlxuICAgICAgICAgICAgICAgKiBTRUxFQ1QgaWQsIG1lc3NhZ2UsICcnIEFTIHVzZXJfY3JlYXRlZCwgJycgQVMgdXNlcl91cGRhdGVkXG4gICAgICAgICAgICAgICAqIEZST00gZGlyZWN0dXNfcmV2aXNpb25zXG4gICAgICAgICAgICAgICAqL1xuXG4gICAgICAgIGNvbnN0IHdiY2VDaVVzZXJJZCA9ICc0OWJjZGU1ZC05MGFhLTRiZTgtYWIxMC1mOWFlMWEwNzU0NmYnO1xuXG4gICAgICAgIGxldCBzcWxTZWxlY3RTdGF0ZW1lbnQgPSAnU0VMRUNUICc7XG4gICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzLnJvd3MpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0YWJsZUhhc0ZnS2V5Py5bdGFibGUudGFibGVfbmFtZV0/LltmaWVsZC5jb2x1bW5fbmFtZV1cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNxbFNlbGVjdFN0YXRlbWVudCArPSBgQ0FTRSBXSEVOICh0LlwiJHtmaWVsZC5jb2x1bW5fbmFtZX1cIiBJUyBOVUxMKSAgIFxuICAgICAgICAgICAgICAgICAgVEhFTiB0LlwiJHtmaWVsZC5jb2x1bW5fbmFtZX1cIlxuICAgICAgICAgICAgICAgICAgRUxTRSAnJHt3YmNlQ2lVc2VySWR9JyBcbiAgICAgICAgICAgICAgICAgIEVORCBBUyBcIiR7ZmllbGQuY29sdW1uX25hbWV9XCJgO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzcWxTZWxlY3RTdGF0ZW1lbnQgKz0gYHQuXCIke2ZpZWxkLmNvbHVtbl9uYW1lfVwiYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3FsU2VsZWN0U3RhdGVtZW50ICs9ICcsICc7XG4gICAgICAgIH1cbiAgICAgICAgLy9yZW1vdmUgbGFzdCBjb21tYVxuICAgICAgICBzcWxTZWxlY3RTdGF0ZW1lbnQgPSBzcWxTZWxlY3RTdGF0ZW1lbnQuc2xpY2UoMCwgLTIpO1xuICAgICAgICAvL2ZpbmlzaCBzdGF0ZW1lbnRcbiAgICAgICAgc3FsU2VsZWN0U3RhdGVtZW50ICs9IGAgIEZST00gXCIke3RhYmxlLnRhYmxlX25hbWV9XCIgQVMgdGA7XG4gICAgICAgIC8vZm9yIGRpcmVjdHVzX2ZpbGVzIGFuZCBkaXJlY3R1c19mb2xkZXJzLCB3ZSBvbmx5IHdhbnQgdG8ga2VlcCBzb21lIGJ1dCBub3QgYWxsIGZpbGVzLlxuICAgICAgICAvL2ZvciBub3csIHdlIGtlZXAgYWxsIGZpbGVzIGluY2x1ZGVkIGluIHRoZSBcImQ5LXBsdW1iaW5nLWNvbW1vblwiIGZvbGRlclxuICAgICAgICBpZiAoWydkaXJlY3R1c19maWxlcycsICdkaXJlY3R1c19mb2xkZXJzJ10uaW5jbHVkZXModGFibGUudGFibGVfbmFtZSkpIHtcbiAgICAgICAgICBjb25zdCBjb21tb25Gb2xkZXJOYW1lID0gcGcuZXNjYXBlTGl0ZXJhbChkYkNvbmZpZy5jb21tb25Gb2xkZXJOYW1lKTtcbiAgICAgICAgICBsZXQgcmVjdXJzaXZlU3RhdGVtZW50ID0gYFxuICAgICAgICAgICAgICAgICAgICAgIFdJVEggUkVDVVJTSVZFIGZvbGRlcl90cmVlIEFTIChcbiAgICAgICAgICAgICAgICAgICAgICAtLSBBbmNob3I6IHRoZSBcImQ5LXBsdW1iaW5nLWNvbW1vblwiIGZvbGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBkaXJlY3R1c19mb2xkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIG5hbWUgPSAke2NvbW1vbkZvbGRlck5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgVU5JT05cbiAgICAgICAgICAgICAgICAgICAgICAtLSBSZWN1cnNpdmUgc3RlcDogZmluZCBzdWJmb2xkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGYuaWRcbiAgICAgICAgICAgICAgICAgICAgICBGUk9NIGRpcmVjdHVzX2ZvbGRlcnMgZlxuICAgICAgICAgICAgICAgICAgICAgIEpPSU4gZm9sZGVyX3RyZWUgZnQgT04gZi5wYXJlbnQgPSBmdC5pZFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGA7XG4gICAgICAgICAgY29uc3QgZm9sZGVyS2V5IDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgICAgIGRpcmVjdHVzX2ZpbGVzOiAnZm9sZGVyJyxcbiAgICAgICAgICAgIGRpcmVjdHVzX2ZvbGRlcnM6ICdwYXJlbnQnLFxuICAgICAgICAgIH07XG4gICAgICAgICAgc3FsU2VsZWN0U3RhdGVtZW50ICs9IGAgV0hFUkUgdC4ke2ZvbGRlcktleVt0YWJsZS50YWJsZV9uYW1lXX0gSU4gKFNFTEVDVCBpZCBGUk9NIGZvbGRlcl90cmVlKSBgO1xuICAgICAgICAgIGlmICh0YWJsZS50YWJsZV9uYW1lID09PSAnZGlyZWN0dXNfZm9sZGVycycpIHtcbiAgICAgICAgICAgIC8vYWxzbyBpbmNsdWRlIGZvbGRlcnMgdGFyZ2V0dGVkIGJ5IGEgZmllbGQgKGZvciBleGFtcGxlLCBhIGZpbGUgZmllbGQgd2hvc2UgZmlsZSB3aWxsIGJlIHBsYWNlZCBvbiBhIHNwZWNpZmljIGZvbGRlcilcbiAgICAgICAgICAgIC8vIGFuZCB0aGVpciBwYXJlbnRzXG5cbiAgICAgICAgICAgIHJlY3Vyc2l2ZVN0YXRlbWVudCArPSBgICwgXG4gICAgICAgICAgICAgICAgICAgICAgZm9sZGVyX2Zyb21fZmllbGRzX3RyZWUgQVMgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gQW5jaG9yOiBHZXQgdGhlIGluaXRpYWwgZm9sZGVyIElEcyBmcm9tIGZpZWxkIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIFdlIGNhc3QgdG8gVVVJRCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBmb2xkZXJzIHRhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QgKG9wdGlvbnM6Ompzb24tPj4nZm9sZGVyJyk6OnV1aWQgQVMgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gZGlyZWN0dXNfZmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBvcHRpb25zIElTIE5PVCBOVUxMIEFORCBvcHRpb25zOjpqc29uLT4+J2ZvbGRlcicgSVMgTk9UIE5VTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOSU9OXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBSZWN1cnNpdmUgc3RlcDogZmluZCB0aGUgcGFyZW50IG9mIGVhY2ggZm9sZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBUaGlzIFwiY2xpbWJzXCIgdGhlIHRyZWUgYnkgbWF0Y2hpbmcgdGhlIElEIHdlIGp1c3QgZm91bmQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSB0byBhIHJvdyBhbmQgc2VsZWN0aW5nIGl0cyBwYXJlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCBmLnBhcmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBkaXJlY3R1c19mb2xkZXJzIGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpPSU4gZm9sZGVyX2Zyb21fZmllbGRzX3RyZWUgZnQgT04gZi5pZCA9IGZ0LmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBmLnBhcmVudCBJUyBOT1QgTlVMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgYDtcbiAgICAgICAgICAgIHNxbFNlbGVjdFN0YXRlbWVudCArPSAnIE9SIHQuaWQgSU4gKFNFTEVDVCBpZCBGUk9NIGZvbGRlcl9mcm9tX2ZpZWxkc190cmVlKSAnO1xuICAgICAgICAgICAgc3FsU2VsZWN0U3RhdGVtZW50ICs9IGAgT1IgdC5uYW1lID0gJHtjb21tb25Gb2xkZXJOYW1lfSBgOyAvL2Fsc28gaW5jbHVkZSB0aGUgY29tbW9uIGZvbGRlclxuICAgICAgICAgIH1cbiAgICAgICAgICBzcWxTZWxlY3RTdGF0ZW1lbnQgPSByZWN1cnNpdmVTdGF0ZW1lbnQgKyBzcWxTZWxlY3RTdGF0ZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBzcWxTZWxlY3RTdGF0ZW1lbnQgKz0gYCBPUkRFUiBCWSB0LlwiJHtwcmltYXJ5S2V5Q29sdW1uTmFtZX1cImA7XG5cbiAgICAgICAgY29uc3QgZGJTdHJlYW0gPSBwZ0NsaWVudC5xdWVyeShcbiAgICAgICAgICBjb3B5VG8oXG4gICAgICAgICAgICBgQ09QWSAoJHtzcWxTZWxlY3RTdGF0ZW1lbnR9KSBUTyBTVERPVVQgREVMSU1JVEVSICcsJyBDU1YgSEVBREVSO2AsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZVN0cmVhbSA9IGNyZWF0ZVdyaXRlU3RyZWFtKFxuICAgICAgICAgIGAuL3NxbC9kYXRhLyR7dGFibGUudGFibGVfbmFtZX0uY3N2YCxcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgcGlwZWxpbmUoZGJTdHJlYW0sIGZpbGVTdHJlYW0pO1xuICAgICAgICBsb2dnZXIuZGVidWcoYGR1bXBlZCAke3RhYmxlLnRhYmxlX25hbWV9YCk7XG4gICAgICAgIGR1bXBlZFRhYmxlcysrO1xuICAgICAgfVxuICAgIH1cbiAgICBsb2dnZXIuaW5mbyhgRHVtcGVkICR7ZHVtcGVkVGFibGVzfSB0YWJsZXMgaW50byAuL3NxbC9kYXRhYCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIGR1bXBpbmcgdGhlIGRhdGEnKTtcbiAgICB0aHJvdyBlO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHBnQ2xpZW50LmVuZCgpO1xuICB9XG4gIGlmIChvcHRzLmNlZGFyICE9PSBmYWxzZSkge1xuICAgIGxvZ2dlci5pbmZvKCdHZW5lcmF0aW5nIHRoZSBDZWRhciBwb2xpY2llcyBpbnRvIC4vcGVybWlzc2lvbnMnKTtcbiAgICBhd2FpdCBkOVRvQ2VkYXIoeyBwZXJtaXNzaW9uUGF0aDogJy4vcGVybWlzc2lvbnMnLCBzcWxQYXRoOiAnLi9zcWwvZGF0YScgfSk7XG4gIH1cbn0iXX0=
|
|
@@ -68,6 +68,7 @@ async function isDatabaseEmpty(db) {
|
|
|
68
68
|
const client = new pg.Client({
|
|
69
69
|
user: db.user,
|
|
70
70
|
host: db.host,
|
|
71
|
+
port: db.port,
|
|
71
72
|
password: db.pwd,
|
|
72
73
|
database: db.database,
|
|
73
74
|
...(db.ssl ? { ssl: { rejectUnauthorized: false } } : {}),
|
|
@@ -93,4 +94,4 @@ async function firstImport(flags) {
|
|
|
93
94
|
await (0, sync_files_1.syncFiles)(fileSync);
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL3NhdmUvdHJhbnNmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFVQSxzQ0FFQztBQUVELHdDQUVDO0FBRUQsOEJBS0M7QUFFRCw4QkFLQztBQUVELGtEQUVDO0FBRUQsb0JBWUM7QUFFRCxrQ0FhQztBQTBCRCxrQ0FXQztBQXBHRCx5QkFBeUI7QUFDekIscURBQW9EO0FBQ3BELG1EQUErQztBQUMvQywrQkFBNkk7QUFDN0ksbURBQWtEO0FBQ2xELDZDQUF5QztBQUN6Qyx5Q0FBc0M7QUFJL0IsS0FBSyxVQUFVLGFBQWEsQ0FBQyxLQUFvQztJQUN0RSxNQUFNLElBQUEsK0JBQWUsRUFBQyxNQUFNLElBQUEscUJBQWUsRUFBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRU0sS0FBSyxVQUFVLGNBQWMsQ0FBQyxLQUFjO0lBQ2pELE1BQU0sSUFBQSxpQ0FBZ0IsRUFBQyxNQUFNLElBQUEscUJBQWUsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFTSxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQW1CO0lBQ2pELE1BQU0sSUFBQSxzQkFBUyxFQUFDO1FBQ2QsTUFBTSxFQUFFLE1BQU0sSUFBQSwyQkFBcUIsRUFBQyxLQUFLLENBQUM7UUFDMUMsV0FBVyxFQUFFLE1BQU0sSUFBQSxnQ0FBMEIsRUFBQyxLQUFLLENBQUM7S0FDckQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVNLEtBQUssVUFBVSxTQUFTLENBQUMsS0FBbUI7SUFDakQsTUFBTSxJQUFBLHNCQUFTLEVBQUM7UUFDZCxNQUFNLEVBQUUsTUFBTSxJQUFBLGdDQUEwQixFQUFDLEtBQUssQ0FBQztRQUMvQyxXQUFXLEVBQUUsTUFBTSxJQUFBLDJCQUFxQixFQUFDLEtB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QVE7UUFDckIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQzFELENBQUMsQ0FBQztJQUNILE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZCLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQ2pDLG1HQUFtRyxDQUNwRyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO1lBQVMsQ0FBQztRQUNULE1BQU0sTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUE2QjtJQUM3RCxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEscUJBQWUsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxJQUFJLENBQUMsQ0FBQyxNQUFNLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakMsZUFBTSxDQUFDLElBQUksQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQ3BFLE9BQU87SUFDVCxDQUFDO0lBQ0QsTUFBTSxJQUFBLGlDQUFnQixFQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxxQkFBZSxFQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RCxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFBLHNCQUFTLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwZyBmcm9tICdwZyc7XG5pbXBvcnQgeyBhcHBseVNRTFNuYXBzaG90IH0gZnJvbSAnLi9hcHBseS1zbmFwc2hvdCc7XG5pbXBvcnQgeyBjaGVja1Vuc2F2ZWQgfSBmcm9tICcuL2NoZWNrLXVuc2F2ZWQnO1xuaW1wb3J0IHsgRGJDb25maWcsIERiRmxhZ3MsIHJlc29sdmVDdXJyZW50U3RvcmFnZSwgcmVzb2x2ZURiQ29uZmlnLCByZXNvbHZlRmlsZVN5bmMsIHJlc29sdmVJbnRlcm1lZGlhdGVTdG9yYWdlLCBTdG9yYWdlRmxhZ3MgfSBmcm9tICcuL2Vudic7XG5pbXBvcnQgeyBzYXZlU1FMU25hcHNob3QgfSBmcm9tICcuL3NhdmUtc25hcHNob3QnO1xuaW1wb3J0IHsgc3luY0ZpbGVzIH0gZnJvbSAnLi9zeW5jLWZpbGVzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL2xvZ2dlcic7XG5cbnR5cGUgQ2hlY2tGbGFncyA9IHsgbGFzdFNhdmU/OiBzdHJpbmcgfCBmYWxzZTsgeWVzPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZVNxbFNjaGVtYShmbGFnczogRGJGbGFncyAmIHsgY2VkYXI/OiBib29sZWFuIH0pIHtcbiAgYXdhaXQgc2F2ZVNRTFNuYXBzaG90KGF3YWl0IHJlc29sdmVEYkNvbmZpZyhmbGFncyksIHsgY2VkYXI6IGZsYWdzLmNlZGFyIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbHlTcWxTY2hlbWEoZmxhZ3M6IERiRmxhZ3MpIHtcbiAgYXdhaXQgYXBwbHlTUUxTbmFwc2hvdChhd2FpdCByZXNvbHZlRGJDb25maWcoZmxhZ3MpKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHB1c2hGaWxlcyhmbGFnczogU3RvcmFnZUZsYWdzKSB7XG4gIGF3YWl0IHN5bmNGaWxlcyh7XG4gICAgb3JpZ2luOiBhd2FpdCByZXNvbHZlQ3VycmVudFN0b3JhZ2UoZmxhZ3MpLFxuICAgIGRlc3RpbmF0aW9uOiBhd2FpdCByZXNvbHZlSW50ZXJtZWRpYXRlU3RvcmFnZShmbGFncyksXG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVsbEZpbGVzKGZsYWdzOiBTdG9yYWdlRmxhZ3MpIHtcbiAgYXdhaXQgc3luY0ZpbGVzKHtcbiAgICBvcmlnaW46IGF3YWl0IHJlc29sdmVJbnRlcm1lZGlhdGVTdG9yYWdlKGZsYWdzKSxcbiAgICBkZXN0aW5hdGlvbjogYXdhaXQgcmVzb2x2ZUN1cnJlbnRTdG9yYWdlKGZsYWdzKSxcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja1Vuc2F2ZWRDaGFuZ2VzKGZsYWdzOiBEYkZsYWdzICYgQ2hlY2tGbGFncykge1xuICBhd2FpdCBjaGVja1Vuc2F2ZWQoeyBsYXN0U2F2ZTogZmxhZ3MubGFzdFNhdmUsIHllczogZmxhZ3MueWVzID8/IGZhbHNlLCBkYjogYXdhaXQgcmVzb2x2ZURiQ29uZmlnKGZsYWdzKSB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhdmUoZmxhZ3M6IERiRmxhZ3MgJiBTdG9yYWdlRmxhZ3MgJiB7IGNlZGFyPzogYm9vbGVhbiB9KSB7XG4gIGNvbnN0IGRiID0gYXdhaXQgcmVzb2x2ZURiQ29uZmlnKGZsYWdzKTtcbiAgY29uc3QgZmlsZVN5bmMgPSBhd2FpdCByZXNvbHZlRmlsZVN5bmMoZmxhZ3MsICdwdXNoJyk7XG5cbiAgLy8gYWZ0ZXIgdGhlIHNuYXBzaG90LCBzbyB0aGF0IHN5bmNGaWxlcyByZWFkcyB0aGUgZnJlc2hseSBkdW1wZWQgZGlyZWN0dXNfZmlsZXMuY3N2XG4gIGxvZ2dlci5pbmZvKGBbMS8yXSBTYXZpbmcgdGhlIFNRTCBzbmFwc2hvdCBvZiAke2Rlc2NyaWJlRGIoZGIpfSBpbnRvIC4vc3FsYCk7XG4gIGF3YWl0IHNhdmVTUUxTbmFwc2hvdChkYiwgeyBjZWRhcjogZmxhZ3MuY2VkYXIgfSk7XG4gIGlmIChmaWxlU3luYykge1xuICAgIGxvZ2dlci5pbmZvKGBbMi8yXSBQdXNoaW5nIGZpbGVzIHRvIHRoZSBpbnRlcm1lZGlhdGUgc3RvcmFnZSAoJHtmaWxlU3luYy5vcmlnaW4uZHJpdmVyfSDihpIgJHtmaWxlU3luYy5kZXN0aW5hdGlvbi5kcml2ZXJ9KWApO1xuICAgIGF3YWl0IHN5bmNGaWxlcyhmaWxlU3luYyk7XG4gIH1cbiAgbG9nZ2VyLmluZm8oJ1NhdmUgY29tcGxldGVkJyk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseVNjaGVtYShmbGFnczogRGJGbGFncyAmIFN0b3JhZ2VGbGFncyAmIENoZWNrRmxhZ3MpIHtcbiAgY29uc3QgZGIgPSBhd2FpdCByZXNvbHZlRGJDb25maWcoZmxhZ3MpO1xuICBjb25zdCBmaWxlU3luYyA9IGF3YWl0IHJlc29sdmVGaWxlU3luYyhmbGFncywgJ3B1bGwnKTtcblxuICBsb2dnZXIuaW5mbyhgWzEvM10gQ2hlY2tpbmcgZm9yIHVuc2F2ZWQgY2hhbmdlcyBvbiAke2Rlc2NyaWJlRGIoZGIpfWApO1xuICBhd2FpdCBjaGVja1Vuc2F2ZWQoeyBsYXN0U2F2ZTogZmxhZ3MubGFzdFNhdmUsIHllczogZmxhZ3MueWVzID8/IGZhbHNlLCBkYiB9KTtcbiAgaWYgKGZpbGVTeW5jKSB7XG4gICAgbG9nZ2VyLmluZm8oYFsyLzNdIFB1bGxpbmcgZmlsZXMgZnJvbSB0aGUgaW50ZXJtZWRpYXRlIHN0b3JhZ2UgKCR7ZmlsZVN5bmMub3JpZ2luLmRyaXZlcn0g4oaSICR7ZmlsZVN5bmMuZGVzdGluYXRpb24uZHJpdmVyfSlgKTtcbiAgICBhd2FpdCBzeW5jRmlsZXMoZmlsZVN5bmMpO1xuICB9XG4gIGxvZ2dlci5pbmZvKGBbMy8zXSBBcHBseWluZyB0aGUgU1FMIHNuYXBzaG90IHRvICR7ZGVzY3JpYmVEYihkYil9YCk7XG4gIGF3YWl0IGFwcGx5U1FMU25hcHNob3QoZGIpO1xuICBsb2dnZXIuaW5mbygnU2NoZW1hIGFwcGxpZWQnKTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVEYihkYjogRGJDb25maWcpIHtcbiAgcmV0dXJuIGAke2RiLmRhdGFiYXNlfUAke2RiLmhvc3R9YDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNEYXRhYmFzZUVtcHR5KGRiOiBEYkNvbmZpZykge1xuICBjb25zdCBjbGllbnQgPSBuZXcgcGcuQ2xpZW50KHtcbiAgICB1c2VyOiBkYi51c2VyLFxuICAgIGhvc3Q6IGRiLmhvc3QsXG4gICAgcG9ydDogZGIucG9ydCxcbiAgICBwYXNzd29yZDogZGIucHdkLFxuICAgIGRhdGFiYXNlOiBkYi5kYXRhYmFzZSxcbiAgICAuLi4oZGIuc3NsID8geyBzc2w6IHsgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSB9IH0gOiB7fSksXG4gIH0pO1xuICBhd2FpdCBjbGllbnQuY29ubmVjdCgpO1xuICB0cnkge1xuICAgIGNvbnN0IHsgcm93cyB9ID0gYXdhaXQgY2xpZW50LnF1ZXJ5KFxuICAgICAgXCJTRUxFQ1QgY291bnQoKik6OmludCBBUyBjb3VudCBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgV0hFUkUgdGFibGVfbmFtZSBMSUtFICdkaXJlY3R1c1xcXFxfJSdcIixcbiAgICApO1xuICAgIHJldHVybiByb3dzWzBdLmNvdW50ID09PSAwO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGNsaWVudC5lbmQoKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlyc3RJbXBvcnQoZmxhZ3M6IERiRmxhZ3MgJiBTdG9yYWdlRmxhZ3MpIHtcbiAgY29uc3QgZGIgPSBhd2FpdCByZXNvbHZlRGJDb25maWcoZmxhZ3MpO1xuICBpZiAoIShhd2FpdCBpc0RhdGFiYXNlRW1wdHkoZGIpKSkge1xuICAgIGxvZ2dlci53YXJuKCdUaGUgZGF0YWJhc2UgaXMgbm90IGVtcHR5LCBza2lwcGluZyB0aGUgZmlyc3QgaW1wb3J0Jyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGF3YWl0IGFwcGx5U1FMU25hcHNob3QoZGIpO1xuICBjb25zdCBmaWxlU3luYyA9IGF3YWl0IHJlc29sdmVGaWxlU3luYyhmbGFncywgJ3B1bGwnKTtcbiAgaWYgKGZpbGVTeW5jKSB7XG4gICAgYXdhaXQgc3luY0ZpbGVzKGZpbGVTeW5jKTtcbiAgfVxufVxuIl19
|
package/lib/cli/index.js
CHANGED
|
@@ -44,10 +44,12 @@ program
|
|
|
44
44
|
const collect = (value, previous = []) => [...previous, value];
|
|
45
45
|
const withDbOptions = (command) => command
|
|
46
46
|
.option('--host <host>', 'database host (default: DB_HOST)')
|
|
47
|
+
.option('--port <port>', 'database port (default: DB_PORT or 5432)')
|
|
47
48
|
.option('--user <user>', 'database user (default: DB_USER)')
|
|
48
49
|
.option('--password <password>', 'database password (default: DB_PASSWORD)')
|
|
49
50
|
.option('--database <database>', 'database name (default: DB_DATABASE)')
|
|
50
|
-
.option('--ssl', 'enable SSL for database connections (default: DB_SSL)')
|
|
51
|
+
.option('--ssl', 'enable SSL for database connections (default: DB_SSL)')
|
|
52
|
+
.option('--common-folder <name>', 'd9 folder whose files and subfolders are kept in the snapshot (default: COMMON_FOLDER_NAME, then commonFolderName in d9-plumbing.json, then d9-plumbing-common)');
|
|
51
53
|
const withStorageOptions = (command) => command
|
|
52
54
|
.option('--storage-config <key=value>', 'd9 storage config entry, overrides STORAGE_<LOCATION>_*, repeatable (e.g. driver=s3)', collect)
|
|
53
55
|
.option('--intermediate-storage-config <key=value>', 'intermediate storage config entry, repeatable (e.g. driver=s3)', collect);
|
|
@@ -81,4 +83,4 @@ void program.parseAsync().catch((err) => {
|
|
|
81
83
|
logger_1.logger.error({ err }, 'command failed');
|
|
82
84
|
process.exit(1);
|
|
83
85
|
});
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUFvQztBQUNwQyw4REFBeUQ7QUFDekQsOERBQXlEO0FBQ3pELHVEQUFxSDtBQUNySCwwQ0FBdUM7QUFDdkMscUNBQWtDO0FBRWxDLE1BQU0sT0FBTyxHQUFHLElBQUksbUJBQU8sRUFBRSxDQUFDO0FBRTlCLE9BQU87S0FDSixJQUFJLENBQUMsYUFBYSxDQUFDO0tBQ25CLFdBQVcsQ0FBQyxxQ0FBcUMsQ0FBQztLQUNsRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFcEIsT0FBTztLQUNKLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDZixXQUFXLENBQUMsK0JBQStCLENBQUM7S0FDNUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxrREFBa0QsQ0FBQztLQUN2RSxNQUFNLENBQUMsV0FBSSxDQUFDLENBQUM7QUFFaEIsT0FBTztLQUNKLE9BQU8sQ0FBQyxhQUFhLENBQUM7S0FDdEIsV0FBVyxDQUFDLHlEQUF5RCxDQUFDO0tBQ3RFLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSxlQUFlLENBQUM7S0FDakYsTUFBTSxDQUFDLGNBQWMsRUFBRSw2QkFBNkIsRUFBRSxZQUFZLENBQUM7S0FDbkUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLDJFQUEyRSxDQUFDO0tBQ3RHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBMkQsRUFBRSxFQUFFO0lBQzVFLE1BQU0sSUFBQSx1QkFBUyxFQUFDO1FBQ2QsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXO1FBQ2hDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRztRQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU07S0FDeEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFTCxPQUFPO0tBQ0osT0FBTyxDQUFDLGFBQWEsQ0FBQztLQUN0QixXQUFX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QztLQUN0SixNQUFNLENBQUMsWUFBWSxFQUFFLDRFQUE0RSxDQUFDO0tBQ2xHLE1BQU0sQ0FBQyxzQkFBVyxDQUFDLENBQUM7QUFFdkIsS0FBSyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDdEMsZUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgY2VkYXJUb0Q5IH0gZnJvbSAnLi9jb21tYW5kcy9jZWRhci9jZWRhci10by1kOSc7XG5pbXBvcnQgeyBkOVRvQ2VkYXIgfSBmcm9tICcuL2NvbW1hbmRzL2NlZGFyL2Q5LXRvLWNlZGFyJztcbmltcG9ydCB7IGFwcGx5U2NoZW1hLCBjaGVja1Vuc2F2ZWRDaGFuZ2VzLCBmaXJzdEltcG9ydCwgcHVsbEZpbGVzLCBwdXNoRmlsZXMsIHNhdmUgfSBmcm9tICcuL2NvbW1hbmRzL3NhdmUvdHJhbnNmZXInO1xuaW1wb3J0IHsgc3luYyB9IGZyb20gJy4vY29tbWFuZHMvc3luYyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG4gIC5uYW1lKCdkOS1wbHVtYmluZycpXG4gIC5kZXNjcmlwdGlvbignQ0xJIHRvb2xzIGZvciBkOSBwcm9qZWN0IG1hbmFnZW1lbnQnKVxuICAudmVyc2lvbignMC4wLjEnKTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnc3luYycpXG4gIC5kZXNjcmlwdGlvbignU3luYyBkOSBzY2hlbWEgYW5kIGV4dGVuc2lvbnMnKVxuICAub3B0aW9uKCctLWRyeS1ydW4nLCAnc2hvdyB3aGF0IHdvdWxkIGJlIHN5bmNlZCB3aXRob3V0IG1ha2luZyBjaGFuZ2VzJylcbiAgLmFjdGlvbihzeW5jKTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnY2VkYXItdG8tZDknKVxuICAuZGVzY3JpcHRpb24oJ01lcmdlIENlZGFyIHBvbGljaWVzIGJhY2sgaW50byBkaXJlY3R1c19wZXJtaXNzaW9ucy5jc3YnKVxuICAub3B0aW9uKCctLXBlcm1pc3Npb25zIDxwYXRoPicsICdwYXRoIHRvIHRoZSBwZXJtaXNzaW9ucyBmb2xkZXInLCAnLi9wZXJtaXNzaW9ucycpXG4gIC5vcHRpb24oJy0tc3FsIDxwYXRoPicsICdwYXRoIHRvIHRoZSBzcWwvZGF0YSBmb2xkZXInLCAnLi9zcWwvZGF0YScpXG4gIC5vcHRpb24oJy0tb3V0cHV0IDxwYXRoPicsICdvdXRwdXQgQ1NWIHBhdGggKGRlZmF1bHRzIHRvIHJld3JpdGluZyBkaXJlY3R1c19wZXJtaXNzaW9ucy5jc3YgaW4gcGxhY2UpJylcbiAgLmFjdGlvbihhc3luYyAob3B0czogeyBwZXJtaXNzaW9uczogc3RyaW5nOyBzcWw6IHN0cmluZzsgb3V0cHV0Pzogc3RyaW5nIH0pID0+IHtcbiAgICBhd2FpdCBjZWRhclRvRDkoe1xuICAgICAgcGVybWlzc2lvblBhdGg6IG9wdHMucGVybWlzc2lvbnMsXG4gICAgICBzcWxQYXRoOiBvcHRzLnNxbCxcbiAgICAgIG91dHB1dFBhdGg6IG9wdHMub3V0cHV0LFxuICAgIH0pO1xuICB9KTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnZDktdG8tY2VkYXInKVxuICAuZGVzY3JpcHRpb24oJ0dlbmVyYXRlIHRoZSBDZWRhciBwb2xpY3kgZm9sZGVycyBmcm9tIGRpcmVjdHVzX3Blcm1pc3Npb25zLmNzdicpXG4gIC5vcHRpb24oJy0tcGVybWlzc2lvbnMgPHBhdGg+JywgJ3BhdGggdG8gdGhlIHBlcm1pc3Npb25zIGZvbGRlcicsICcuL3Blcm1pc3Npb25zJylcbiAgLm9wdGlvbignLS1zcWwgPHBhdGg+JywgJ3BhdGggdG8gdGhlIHNxbC9kYXRhIGZvbGRlcicsICcuL3NxbC9kYXRhJylcbiAgLmFjdGlvbihhc3luYyAob3B0czogeyBwZXJtaXNzaW9uczogc3RyaW5nOyBzcWw6IHN0cmluZyB9KSA9PiB7XG4gICAgYXdhaXQgZDlUb0NlZGFyKHtcbiAgICAgIHBlcm1pc3Npb25QYXRoOiBvcHRzLnBlcm1pc3Npb25zLFxuICAgICAgc3FsUGF0aDogb3B0cy5zcWwsXG4gICAgfSk7XG4gIH0pO1xuXG5jb25zdCBjb2xsZWN0ID0gKHZhbHVlOiBzdHJpbmcsIHByZXZpb3VzOiBzdHJpbmdbXSA9IFtdKSA9PiBbLi4ucHJldmlvdXMsIHZhbHVlXTtcblxuY29uc3Qgd2l0aERiT3B0aW9ucyA9IChjb21tYW5kOiBDb21tYW5kKSA9PiBjb21tYW5kXG4gIC5vcHRpb24oJy0taG9zdCA8aG9zdD4nLCAnZGF0YWJhc2UgaG9zdCAoZGVmYXVsdDogREJfSE9TVCknKVxuICAub3B0aW9uKCctLXVzZXIgPHVzZXI+JywgJ2RhdGFiYXNlIHVzZXIgKGRlZmF1bHQ6IERCX1VTRVIpJylcbiAgLm9wdGlvbignLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ2RhdGFiYXNlIHBhc3N3b3JkIChkZWZhdWx0OiBEQl9QQVNTV09SRCknKVxuICAub3B0aW9uKCctLWRhdGFiYXNlIDxkYXRhYmFzZT4nLCAnZGF0YWJhc2UgbmFtZSAoZGVmYXVsdDogREJfREFUQUJBU0UpJylcbiAgLm9wdGlvbignLS1zc2wnLCAnZW5hYmxlIFNTTCBmb3IgZGF0YWJhc2UgY29ubmVjdGlvbnMgKGRlZmF1bHQ6IERCX1NTTCknKTtcblxuY29uc3Qgd2l0aFN0b3JhZ2VPcHRpb25zID0gKGNvbW1hbmQ6IENvbW1hbmQpID0+IGNvbW1hbmRcbiAgLm9wdGlvbignLS1zdG9yYWdlLWNvbmZpZyA8a2V5PXZhbHVlPicsICdkOSBzdG9yYWdlIGNvbmZpZyBlbnRyeSwgb3ZlcnJpZGVzIFNUT1JBR0VfPExPQ0FUSU9OPl8qLCByZXBlYXRhYmxlIChlLmcuIGRyaXZlcj1zMyknLCBjb2xsZWN0KVxuICAub3B0aW9uKCctLWludGVybWVkaWF0ZS1zdG9yYWdlLWNvbmZpZyA8a2V5PXZhbHVlPicsICdpbnRlcm1lZGlhdGUgc3RvcmFnZSBjb25maWcgZW50cnksIHJlcGVhdGFibGUgKGUuZy4gZHJpdmVyPXMzKScsIGNvbGxlY3QpO1xuXG5jb25zdCB3aXRoQ2hlY2tPcHRpb25zID0gKGNvbW1hbmQ6IENvbW1hbmQpID0+IGNvbW1hbmRcbiAgLm9wdGlvbignLS1sYXN0LXNhdmUgPGNvbW1pdD4nLCAnY29tbWl0IG9mIHRoZSBsYXN0IHNhdmUgb2YgdGhpcyBlbnZpcm9ubWVudCwgdXNlZCB0byBkZXRlY3QgdW5zYXZlZCBjaGFuZ2VzJylcbiAgLm9wdGlvbignLS1uby1sYXN0LXNhdmUnLCAnc2tpcCB0aGUgdW5zYXZlZCBjaGFuZ2VzIGNoZWNrJylcbiAgLm9wdGlvbignLS15ZXMnLCAnZG8gbm90IGFzayBmb3IgY29uZmlybWF0aW9uJyk7XG5cbndpdGhTdG9yYWdlT3B0aW9ucyhwcm9ncmFtLmNvbW1hbmQoJ3B1c2gtZmlsZXMnKSlcbiAgLmRlc2NyaXB0aW9uKCdTeW5jIHRoZSBmaWxlcyBsaXN0ZWQgaW4gZGlyZWN0dXNfZmlsZXMuY3N2IGZyb20gdGhlIGN1cnJlbnQgc3RvcmFnZSB0byB0aGUgaW50ZXJtZWRpYXRlIHN0b3JhZ2UnKVxuICAuYWN0aW9uKHB1c2hGaWxlcyk7XG5cbndpdGhTdG9yYWdlT3B0aW9ucyhwcm9ncmFtLmNvbW1hbmQoJ3B1bGwtZmlsZXMnKSlcbiAgLmRlc2NyaXB0aW9uKCdTeW5jIHRoZSBmaWxlcyBsaXN0ZWQgaW4gZGlyZWN0dXNfZmlsZXMuY3N2IGZyb20gdGhlIGludGVybWVkaWF0ZSBzdG9yYWdlIHRvIHRoZSBjdXJyZW50IHN0b3JhZ2UnKVxuICAuYWN0aW9uKHB1bGxGaWxlcyk7XG5cbndpdGhDaGVja09wdGlvbnMod2l0aERiT3B0aW9ucyhwcm9ncmFtLmNvbW1hbmQoJ2NoZWNrLXVuc2F2ZWQnKSkpXG4gIC5kZXNjcmlwdGlvbignRmFpbCBpZiB0aGUgY3VycmVudCBkOSBkaWZmZXJzIGZyb20gdGhlIC0tbGFzdC1zYXZlIGNvbW1pdCcpXG4gIC5hY3Rpb24oY2hlY2tVbnNhdmVkQ2hhbmdlcyk7XG5cbndpdGhTdG9yYWdlT3B0aW9ucyh3aXRoRGJPcHRpb25zKHByb2dyYW0uY29tbWFuZCgnZmlyc3QtaW1wb3J0JykpKVxuICAuZGVzY3JpcHRpb24oJ0FwcGx5IHRoZSBTUUwgc25hcHNob3Qgb2YgLi9zcWwgdG8gYW4gZW1wdHkgZDkgZGF0YWJhc2UsIHRoZW4gc3luYyBmaWxlcyBmcm9tIHRoZSBpbnRlcm1lZGlhdGUgc3RvcmFnZSBpZiBvbmUgaXMgY29uZmlndXJlZCcpXG4gIC5vcHRpb24oJy0tbm8tZmlsZXMnLCAnc2tpcCB0aGUgZmlsZSBzeW5jIHdpdGggdGhlIGludGVybWVkaWF0ZSBzdG9yYWdlIChkZWZhdWx0OiBTS0lQX0ZJTEVfU1lOQyknKVxuICAuYWN0aW9uKGZpcnN0SW1wb3J0KTtcblxud2l0aFN0b3JhZ2VPcHRpb25zKHdpdGhEYk9wdGlvbnMocHJvZ3JhbS5jb21tYW5kKCdzYXZlJykpKVxuICAuZGVzY3JpcHRpb24oJ1NhdmUgdGhlIFNRTCBzbmFwc2hvdCBvZiB0aGUgY3VycmVudCBkOSwgdGhlbiBzeW5jIGZpbGVzIHRvIHRoZSBpbnRlcm1lZGlhdGUgc3RvcmFnZSBpZiBvbmUgaXMgY29uZmlndXJlZCcpXG4gIC5vcHRpb24oJy0tbm8tZmlsZXMnLCAnc2tpcCB0aGUgZmlsZSBzeW5jIHdpdGggdGhlIGludGVybWVkaWF0ZSBzdG9yYWdlIChkZWZhdWx0OiBTS0lQX0ZJTEVfU1lOQyknKVxuICAub3B0aW9uKCctLW5vLWNlZGFyJywgJ2RvIG5vdCBnZW5lcmF0ZSB0aGUgQ2VkYXIgcG9saWNpZXMgZnJvbSBkaXJlY3R1c19wZXJtaXNzaW9ucy5jc3YnKVxuICAuYWN0aW9uKHNhdmUpO1xuXG53aXRoQ2hlY2tPcHRpb25zKHdpdGhTdG9yYWdlT3B0aW9ucyh3aXRoRGJPcHRpb25zKHByb2dyYW0uY29tbWFuZCgnYXBwbHktc2NoZW1hJykpKSlcbiAgLmRlc2NyaXB0aW9uKCdDaGVjayBmb3IgdW5zYXZlZCBjaGFuZ2VzLCBzeW5jIGZpbGVzIGZyb20gdGhlIGludGVybWVkaWF0ZSBzdG9yYWdlIGlmIG9uZSBpcyBjb25maWd1cmVkLCB0aGVuIGFwcGx5IHRoZSBTUUwgc25hcHNob3QgdG8gdGhlIGN1cnJlbnQgZDknKVxuICAub3B0aW9uKCctLW5vLWZpbGVzJywgJ3NraXAgdGhlIGZpbGUgc3luYyB3aXRoIHRoZSBpbnRlcm1lZGlhdGUgc3RvcmFnZSAoZGVmYXVsdDogU0tJUF9GSUxFX1NZTkMpJylcbiAgLmFjdGlvbihhcHBseVNjaGVtYSk7XG5cbnZvaWQgcHJvZ3JhbS5wYXJzZUFzeW5jKCkuY2F0Y2goKGVycikgPT4ge1xuICBsb2dnZXIuZXJyb3IoeyBlcnIgfSwgJ2NvbW1hbmQgZmFpbGVkJyk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn0pO1xuIl19
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUFvQztBQUNwQyw4REFBeUQ7QUFDekQsOERBQXlEO0FBQ3pELHVEQUFxSDtBQUNySCwwQ0FBdUM7QUFDdkMscUNBQWtDO0FBRWxDLE1BQU0sT0FBTyxHQUFHLElBQUksbUJBQU8sRUFBRSxDQUFDO0FBRTlCLE9BQU87S0FDSixJQUFJLENBQUMsYUFBYSxDQUFDO0tBQ25CLFdBQVcsQ0FBQyxxQ0FBcUMsQ0FBQztLQUNsRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFcEIsT0FBTztLQUNKLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDZixXQUFXLENBQUMsK0JBQStCLENBQUM7S0FDNUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxrREFBa0QsQ0FBQztLQUN2RSxNQUFNLENBQUMsV0FBSSxDQUFDLENBQUM7QUFFaEIsT0FBTztLQUNKLE9BQU8sQ0FBQyxhQUFhLENBQUM7S0FDdEIsV0FBVyxDQUFDLHlEQUF5RCxDQUFDO0tBQ3RFLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSxlQUFlLENBQUM7S0FDakYsTUFBTSxDQUFDLGNBQWMsRUFBRSw2QkFBNkIsRUFBRSxZQUFZLENBQUM7S0FDbkUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLDJFQUEyRSxDQUFDO0tBQ3RHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBMkQsRUFBRSxFQUFFO0lBQzVFLE1BQU0sSUFBQSx1QkFBUyxFQUFDO1FBQ2QsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXO1FBQ2hDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRztRQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU07S0FDeEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFTCxPQUFPO0tBQ0osT0FBTyxDQUFDLGFBQWEsQ0FBQztLQUN0QixXQUFXLENBQUMsaUVBQWlFLENBQUM7S0FDOUUsTUFBTSxDQUFDLHNCQUFzQixFQUFFLGdDQUFnQyxFQUFFLGVBQWUsQ0FBQztLQUNqRixNQUFNLENBQUMsY0FBYyxFQUFFLDZCQUE2QixFQUFFLFlBQVksQ0FBQztLQUNuRSxNQUFNLENBQUMsS0FBSyxFQUFFLElBQTBDLEVBQUUsRUFBRTtJQUMzRCxNQUFNLElBQUEsdUJBQVMsRUFBQztRQUNkLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVztRQUNoQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUc7S0FDbEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFTCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQWEsRUFBRSxXQUFxQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFakYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FBQyxPQUFPO0tBQ2hELE1BQU0sQ0FBQyxlQUFlLEVBQUUsa0NBQWtDLENBQUM7S0FDM0QsTUFBTSxDQUFDLGVBQWUsRUFBRSwwQ0FBMEMsQ0FBQztLQUNuRSxNQUFNLENBQUMsZUFBZSxFQUFFLGtDQUFrQyxDQUFDO0tBQzNELE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSwwQ0FBMEMsQ0FBQztLQUMzRSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsc0NBQXNDLENBQUM7S0FDdkUsTUFBTSxDQUFDLE9BQU8sRUFBRSx1REFBdUQsQ0FBQztLQUN4RSxNQUFNLENBQUMsd0JBQXdCLEVBQUUsaUtBQWlLLENBQUMsQ0FBQztBQUV2TSxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsT0FBTztLQUNyRCxNQUFNLENBQUMsOEJBQThCLEVBQUUsc0ZBQXNGLEVBQUUsT0FBTyxDQUFDO0tBQ3ZJLE1BQU0sQ0FBQywyQ0FBMkMsRUFBRSxnRUFBZ0UsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUVsSSxNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsT0FBTztLQUNuRCxNQUFNLENBQUMsc0JBQXNCLEVBQUUsNkVBQTZFLENBQUM7S0FDN0csTUFBTSxDQUFDLGdCQUFnQixFQUFFLGdDQUFnQyxDQUFDO0tBQzFELE1BQU0sQ0FBQyxPQUFPLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztBQUVsRCxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQzlDLFdBQVcsQ0FBQyxrR0FBa0csQ0FBQztLQUMvRyxNQUFNLENBQUMsb0JBQVMsQ0FBQyxDQUFDO0FBRXJCLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDOUMsV0FBVyxDQUFDLGtHQUFrRyxDQUFDO0tBQy9HLE1BQU0sQ0FBQyxvQkFBUyxDQUFDLENBQUM7QUFFckIsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztLQUM5RCxXQUFXLENBQUMsNERBQTRELENBQUM7S0FDekUsTUFBTSxDQUFDLDhCQUFtQixDQUFDLENBQUM7QUFFL0Isa0JBQWtCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztLQUMvRCxXQUFXLENBQUMsNkhBQTZILENBQUM7S0FDMUksTUFBTSxDQUFDLFlBQVksRUFBRSw0RUFBNEUsQ0FBQztLQUNsRyxNQUFNLENBQUMsc0JBQVcsQ0FBQyxDQUFDO0FBRXZCLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDdkQsV0FBVyxDQUFDLDJHQUEyRyxDQUFDO0tBQ3hILE1BQU0sQ0FBQyxZQUFZLEVBQUUsNEVBQTRFLENBQUM7S0FDbEcsTUFBTSxDQUFDLFlBQVksRUFBRSxrRUFBa0UsQ0FBQztLQUN4RixNQUFNLENBQUMsZUFBSSxDQUFDLENBQUM7QUFFaEIsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pGLFdBQVcsQ0FBQyx5SUFBeUksQ0FBQztLQUN0SixNQUFNLENBQUMsWUFBWSxFQUFFLDRFQUE0RSxDQUFDO0tBQ2xHLE1BQU0sQ0FBQyxzQkFBVyxDQUFDLENBQUM7QUFFdkIsS0FBSyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDdEMsZUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgY2VkYXJUb0Q5IH0gZnJvbSAnLi9jb21tYW5kcy9jZWRhci9jZWRhci10by1kOSc7XG5pbXBvcnQgeyBkOVRvQ2VkYXIgfSBmcm9tICcuL2NvbW1hbmRzL2NlZGFyL2Q5LXRvLWNlZGFyJztcbmltcG9ydCB7IGFwcGx5U2NoZW1hLCBjaGVja1Vuc2F2ZWRDaGFuZ2VzLCBmaXJzdEltcG9ydCwgcHVsbEZpbGVzLCBwdXNoRmlsZXMsIHNhdmUgfSBmcm9tICcuL2NvbW1hbmRzL3NhdmUvdHJhbnNmZXInO1xuaW1wb3J0IHsgc3luYyB9IGZyb20gJy4vY29tbWFuZHMvc3luYyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG4gIC5uYW1lKCdkOS1wbHVtYmluZycpXG4gIC5kZXNjcmlwdGlvbignQ0xJIHRvb2xzIGZvciBkOSBwcm9qZWN0IG1hbmFnZW1lbnQnKVxuICAudmVyc2lvbignMC4wLjEnKTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnc3luYycpXG4gIC5kZXNjcmlwdGlvbignU3luYyBkOSBzY2hlbWEgYW5kIGV4dGVuc2lvbnMnKVxuICAub3B0aW9uKCctLWRyeS1ydW4nLCAnc2hvdyB3aGF0IHdvdWxkIGJlIHN5bmNlZCB3aXRob3V0IG1ha2luZyBjaGFuZ2VzJylcbiAgLmFjdGlvbihzeW5jKTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnY2VkYXItdG8tZDknKVxuICAuZGVzY3JpcHRpb24oJ01lcmdlIENlZGFyIHBvbGljaWVzIGJhY2sgaW50byBkaXJlY3R1c19wZXJtaXNzaW9ucy5jc3YnKVxuICAub3B0aW9uKCctLXBlcm1pc3Npb25zIDxwYXRoPicsICdwYXRoIHRvIHRoZSBwZXJtaXNzaW9ucyBmb2xkZXInLCAnLi9wZXJtaXNzaW9ucycpXG4gIC5vcHRpb24oJy0tc3FsIDxwYXRoPicsICdwYXRoIHRvIHRoZSBzcWwvZGF0YSBmb2xkZXInLCAnLi9zcWwvZGF0YScpXG4gIC5vcHRpb24oJy0tb3V0cHV0IDxwYXRoPicsICdvdXRwdXQgQ1NWIHBhdGggKGRlZmF1bHRzIHRvIHJld3JpdGluZyBkaXJlY3R1c19wZXJtaXNzaW9ucy5jc3YgaW4gcGxhY2UpJylcbiAgLmFjdGlvbihhc3luYyAob3B0czogeyBwZXJtaXNzaW9uczogc3RyaW5nOyBzcWw6IHN0cmluZzsgb3V0cHV0Pzogc3RyaW5nIH0pID0+IHtcbiAgICBhd2FpdCBjZWRhclRvRDkoe1xuICAgICAgcGVybWlzc2lvblBhdGg6IG9wdHMucGVybWlzc2lvbnMsXG4gICAgICBzcWxQYXRoOiBvcHRzLnNxbCxcbiAgICAgIG91dHB1dFBhdGg6IG9wdHMub3V0cHV0LFxuICAgIH0pO1xuICB9KTtcblxucHJvZ3JhbVxuICAuY29tbWFuZCgnZDktdG8tY2VkYXInKVxuICAuZGVzY3JpcHRpb24oJ0dlbmVyYXRlIHRoZSBDZWRhciBwb2xpY3kgZm9sZGVycyBmcm9tIGRpcmVjdHVzX3Blcm1pc3Npb25zLmNzdicpXG4gIC5vcHRpb24oJy0tcGVybWlzc2lvbnMgPHBhdGg+JywgJ3BhdGggdG8gdGhlIHBlcm1pc3Npb25zIGZvbGRlcicsICcuL3Blcm1pc3Npb25zJylcbiAgLm9wdGlvbignLS1zcWwgPHBhdGg+JywgJ3BhdGggdG8gdGhlIHNxbC9kYXRhIGZvbGRlcicsICcuL3NxbC9kYXRhJylcbiAgLmFjdGlvbihhc3luYyAob3B0czogeyBwZXJtaXNzaW9uczogc3RyaW5nOyBzcWw6IHN0cmluZyB9KSA9PiB7XG4gICAgYXdhaXQgZDlUb0NlZGFyKHtcbiAgICAgIHBlcm1pc3Npb25QYXRoOiBvcHRzLnBlcm1pc3Npb25zLFxuICAgICAgc3FsUGF0aDogb3B0cy5zcWwsXG4gICAgfSk7XG4gIH0pO1xuXG5jb25zdCBjb2xsZWN0ID0gKHZhbHVlOiBzdHJpbmcsIHByZXZpb3VzOiBzdHJpbmdbXSA9IFtdKSA9PiBbLi4ucHJldmlvdXMsIHZhbHVlXTtcblxuY29uc3Qgd2l0aERiT3B0aW9ucyA9IChjb21tYW5kOiBDb21tYW5kKSA9PiBjb21tYW5kXG4gIC5vcHRpb24oJy0taG9zdCA8aG9zdD4nLCAnZGF0YWJhc2UgaG9zdCAoZGVmYXVsdDogREJfSE9TVCknKVxuICAub3B0aW9uKCctLXBvcnQgPHBvcnQ+JywgJ2RhdGFiYXNlIHBvcnQgKGRlZmF1bHQ6IERCX1BPUlQgb3IgNTQzMiknKVxuICAub3B0aW9uKCctLXVzZXIgPHVzZXI+JywgJ2RhdGFiYXNlIHVzZXIgKGRlZmF1bHQ6IERCX1VTRVIpJylcbiAgLm9wdGlvbignLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ2RhdGFiYXNlIHBhc3N3b3JkIChkZWZhdWx0OiBEQl9QQVNTV09SRCknKVxuICAub3B0aW9uKCctLWRhdGFiYXNlIDxkYXRhYmFzZT4nLCAnZGF0YWJhc2UgbmFtZSAoZGVmYXVsdDogREJfREFUQUJBU0UpJylcbiAgLm9wdGlvbignLS1zc2wnLCAnZW5hYmxlIFNTTCBmb3IgZGF0YWJhc2UgY29ubmVjdGlvbnMgKGRlZmF1bHQ6IERCX1NTTCknKVxuICAub3B0aW9uKCctLWNvbW1vbi1mb2xkZXIgPG5hbWU+JywgJ2Q5IGZvbGRlciB3aG9zZSBmaWxlcyBhbmQgc3ViZm9sZGVycyBhcmUga2VwdCBpbiB0aGUgc25hcHNob3QgKGRlZmF1bHQ6IENPTU1PTl9GT0xERVJfTkFNRSwgdGhlbiBjb21tb25Gb2xkZXJOYW1lIGluIGQ5LXBsdW1iaW5nLmpzb24sIHRoZW4gZDktcGx1bWJpbmctY29tbW9uKScpO1xuXG5jb25zdCB3aXRoU3RvcmFnZU9wdGlvbnMgPSAoY29tbWFuZDogQ29tbWFuZCkgPT4gY29tbWFuZFxuICAub3B0aW9uKCctLXN0b3JhZ2UtY29uZmlnIDxrZXk9dmFsdWU+JywgJ2Q5IHN0b3JhZ2UgY29uZmlnIGVudHJ5LCBvdmVycmlkZXMgU1RPUkFHRV88TE9DQVRJT04+XyosIHJlcGVhdGFibGUgKGUuZy4gZHJpdmVyPXMzKScsIGNvbGxlY3QpXG4gIC5vcHRpb24oJy0taW50ZXJtZWRpYXRlLXN0b3JhZ2UtY29uZmlnIDxrZXk9dmFsdWU+JywgJ2ludGVybWVkaWF0ZSBzdG9yYWdlIGNvbmZpZyBlbnRyeSwgcmVwZWF0YWJsZSAoZS5nLiBkcml2ZXI9czMpJywgY29sbGVjdCk7XG5cbmNvbnN0IHdpdGhDaGVja09wdGlvbnMgPSAoY29tbWFuZDogQ29tbWFuZCkgPT4gY29tbWFuZFxuICAub3B0aW9uKCctLWxhc3Qtc2F2ZSA8Y29tbWl0PicsICdjb21taXQgb2YgdGhlIGxhc3Qgc2F2ZSBvZiB0aGlzIGVudmlyb25tZW50LCB1c2VkIHRvIGRldGVjdCB1bnNhdmVkIGNoYW5nZXMnKVxuICAub3B0aW9uKCctLW5vLWxhc3Qtc2F2ZScsICdza2lwIHRoZSB1bnNhdmVkIGNoYW5nZXMgY2hlY2snKVxuICAub3B0aW9uKCctLXllcycsICdkbyBub3QgYXNrIGZvciBjb25maXJtYXRpb24nKTtcblxud2l0aFN0b3JhZ2VPcHRpb25zKHByb2dyYW0uY29tbWFuZCgncHVzaC1maWxlcycpKVxuICAuZGVzY3JpcHRpb24oJ1N5bmMgdGhlIGZpbGVzIGxpc3RlZCBpbiBkaXJlY3R1c19maWxlcy5jc3YgZnJvbSB0aGUgY3VycmVudCBzdG9yYWdlIHRvIHRoZSBpbnRlcm1lZGlhdGUgc3RvcmFnZScpXG4gIC5hY3Rpb24ocHVzaEZpbGVzKTtcblxud2l0aFN0b3JhZ2VPcHRpb25zKHByb2dyYW0uY29tbWFuZCgncHVsbC1maWxlcycpKVxuICAuZGVzY3JpcHRpb24oJ1N5bmMgdGhlIGZpbGVzIGxpc3RlZCBpbiBkaXJlY3R1c19maWxlcy5jc3YgZnJvbSB0aGUgaW50ZXJtZWRpYXRlIHN0b3JhZ2UgdG8gdGhlIGN1cnJlbnQgc3RvcmFnZScpXG4gIC5hY3Rpb24ocHVsbEZpbGVzKTtcblxud2l0aENoZWNrT3B0aW9ucyh3aXRoRGJPcHRpb25zKHByb2dyYW0uY29tbWFuZCgnY2hlY2stdW5zYXZlZCcpKSlcbiAgLmRlc2NyaXB0aW9uKCdGYWlsIGlmIHRoZSBjdXJyZW50IGQ5IGRpZmZlcnMgZnJvbSB0aGUgLS1sYXN0LXNhdmUgY29tbWl0JylcbiAgLmFjdGlvbihjaGVja1Vuc2F2ZWRDaGFuZ2VzKTtcblxud2l0aFN0b3JhZ2VPcHRpb25zKHdpdGhEYk9wdGlvbnMocHJvZ3JhbS5jb21tYW5kKCdmaXJzdC1pbXBvcnQnKSkpXG4gIC5kZXNjcmlwdGlvbignQXBwbHkgdGhlIFNRTCBzbmFwc2hvdCBvZiAuL3NxbCB0byBhbiBlbXB0eSBkOSBkYXRhYmFzZSwgdGhlbiBzeW5jIGZpbGVzIGZyb20gdGhlIGludGVybWVkaWF0ZSBzdG9yYWdlIGlmIG9uZSBpcyBjb25maWd1cmVkJylcbiAgLm9wdGlvbignLS1uby1maWxlcycsICdza2lwIHRoZSBmaWxlIHN5bmMgd2l0aCB0aGUgaW50ZXJtZWRpYXRlIHN0b3JhZ2UgKGRlZmF1bHQ6IFNLSVBfRklMRV9TWU5DKScpXG4gIC5hY3Rpb24oZmlyc3RJbXBvcnQpO1xuXG53aXRoU3RvcmFnZU9wdGlvbnMod2l0aERiT3B0aW9ucyhwcm9ncmFtLmNvbW1hbmQoJ3NhdmUnKSkpXG4gIC5kZXNjcmlwdGlvbignU2F2ZSB0aGUgU1FMIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IGQ5LCB0aGVuIHN5bmMgZmlsZXMgdG8gdGhlIGludGVybWVkaWF0ZSBzdG9yYWdlIGlmIG9uZSBpcyBjb25maWd1cmVkJylcbiAgLm9wdGlvbignLS1uby1maWxlcycsICdza2lwIHRoZSBmaWxlIHN5bmMgd2l0aCB0aGUgaW50ZXJtZWRpYXRlIHN0b3JhZ2UgKGRlZmF1bHQ6IFNLSVBfRklMRV9TWU5DKScpXG4gIC5vcHRpb24oJy0tbm8tY2VkYXInLCAnZG8gbm90IGdlbmVyYXRlIHRoZSBDZWRhciBwb2xpY2llcyBmcm9tIGRpcmVjdHVzX3Blcm1pc3Npb25zLmNzdicpXG4gIC5hY3Rpb24oc2F2ZSk7XG5cbndpdGhDaGVja09wdGlvbnMod2l0aFN0b3JhZ2VPcHRpb25zKHdpdGhEYk9wdGlvbnMocHJvZ3JhbS5jb21tYW5kKCdhcHBseS1zY2hlbWEnKSkpKVxuICAuZGVzY3JpcHRpb24oJ0NoZWNrIGZvciB1bnNhdmVkIGNoYW5nZXMsIHN5bmMgZmlsZXMgZnJvbSB0aGUgaW50ZXJtZWRpYXRlIHN0b3JhZ2UgaWYgb25lIGlzIGNvbmZpZ3VyZWQsIHRoZW4gYXBwbHkgdGhlIFNRTCBzbmFwc2hvdCB0byB0aGUgY3VycmVudCBkOScpXG4gIC5vcHRpb24oJy0tbm8tZmlsZXMnLCAnc2tpcCB0aGUgZmlsZSBzeW5jIHdpdGggdGhlIGludGVybWVkaWF0ZSBzdG9yYWdlIChkZWZhdWx0OiBTS0lQX0ZJTEVfU1lOQyknKVxuICAuYWN0aW9uKGFwcGx5U2NoZW1hKTtcblxudm9pZCBwcm9ncmFtLnBhcnNlQXN5bmMoKS5jYXRjaCgoZXJyKSA9PiB7XG4gIGxvZ2dlci5lcnJvcih7IGVyciB9LCAnY29tbWFuZCBmYWlsZWQnKTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufSk7XG4iXX0=
|
|
@@ -10,4 +10,4 @@ function readPlumbingConfig() {
|
|
|
10
10
|
}
|
|
11
11
|
return JSON.parse((0, fs_1.readFileSync)(exports.PLUMBING_CONFIG_FILE).toString());
|
|
12
12
|
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1bWJpbmctY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9wbHVtYmluZy1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZUEsZ0RBS0M7QUFwQkQsMkJBQThDO0FBYWpDLFFBQUEsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7QUFFekQsU0FBZ0Isa0JBQWtCO0lBQ2hDLElBQUksQ0FBQyxJQUFBLGVBQVUsRUFBQyw0QkFBb0IsQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsaUJBQVksRUFBQyw0QkFBb0IsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDbkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcblxuZXhwb3J0IGludGVyZmFjZSBQbHVtYmluZ0NvbmZpZyB7XG4gIGludGVybWVkaWF0ZVN0b3JhZ2U/OiB7XG4gICAgZHJpdmVyPzogc3RyaW5nO1xuICAgIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIHNlY3JldEVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIH07XG4gIGxvZ0xldmVsPzogc3RyaW5nO1xuICBjb21tb25Gb2xkZXJOYW1lPzogc3RyaW5nO1xuICBhdGxhc1ZlcnNpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBQTFVNQklOR19DT05GSUdfRklMRSA9ICcuL2Q5LXBsdW1iaW5nLmpzb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFBsdW1iaW5nQ29uZmlnKCk6IFBsdW1iaW5nQ29uZmlnIHtcbiAgaWYgKCFleGlzdHNTeW5jKFBMVU1CSU5HX0NPTkZJR19GSUxFKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICByZXR1cm4gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoUExVTUJJTkdfQ09ORklHX0ZJTEUpLnRvU3RyaW5nKCkpO1xufVxuIl19
|
package/lib/index.d.ts
CHANGED
|
@@ -46,6 +46,11 @@ export interface PlumbingOptions {
|
|
|
46
46
|
* @default "debug"
|
|
47
47
|
*/
|
|
48
48
|
readonly logLevel?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Name of the d9 folder kept in the snapshot, overridden by the COMMON_FOLDER_NAME environment variable.
|
|
51
|
+
* @default "d9-plumbing-common"
|
|
52
|
+
*/
|
|
53
|
+
readonly commonFolderName?: string;
|
|
49
54
|
}
|
|
50
55
|
export interface D9ProjectOptions extends typescript.TypeScriptProjectOptions {
|
|
51
56
|
/**
|
package/lib/index.js
CHANGED
|
@@ -323,7 +323,7 @@ class D9Project extends projen_1.javascript.NodeProject {
|
|
|
323
323
|
}
|
|
324
324
|
exports.D9Project = D9Project;
|
|
325
325
|
_a = JSII_RTTI_SYMBOL_1;
|
|
326
|
-
D9Project[_a] = { fqn: "@wbce/projen-d9.D9Project", version: "0.1.
|
|
326
|
+
D9Project[_a] = { fqn: "@wbce/projen-d9.D9Project", version: "0.1.1" };
|
|
327
327
|
/**
|
|
328
328
|
* @deprecated Use {@link D9Project} instead. The package was renamed to `@wbce/projen-d9` to reflect that it targets the d9 fork, not upstream Directus.
|
|
329
329
|
*/
|
|
@@ -331,5 +331,5 @@ class DirectusProject extends D9Project {
|
|
|
331
331
|
}
|
|
332
332
|
exports.DirectusProject = DirectusProject;
|
|
333
333
|
_b = JSII_RTTI_SYMBOL_1;
|
|
334
|
-
DirectusProject[_b] = { fqn: "@wbce/projen-d9.DirectusProject", version: "0.1.
|
|
335
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtRUFBa0c7QUFDbEcsdURBQW9GO0FBQ3BGLG1DQUEwSTtBQUMxSSx1RUFBa0U7QUFDbEUsc0RBQW9FO0FBK0RwRSxNQUFhLFNBQVUsU0FBUSxtQkFBVSxDQUFDLFdBQVc7SUFhbkQsWUFBc0IsT0FBeUI7UUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLE9BQU8sQ0FBQztRQUMvRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsSUFBSSxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUc7WUFDM0UsTUFBTSxFQUFFLEtBQUssRUFBRSxzQ0FBc0M7WUFDckQsV0FBVyxFQUFFLElBQUk7WUFDakIsa0JBQWtCLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRTtvQkFDZixRQUFRLEVBQUUsd0NBQTJCLENBQUMsS0FBSztpQkFDNUM7YUFDRjtZQUNELFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUk7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDUixLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ25CLEVBQUU7b0JBQ0YsZ1BBQWdQO29CQUNoUCxFQUFFO29CQUNGLHNCQUFzQjtvQkFDdEIsRUFBRTtvQkFDRixPQUFPO29CQUNQLGdEQUFnRDtvQkFDaEQsOERBQThEO29CQUM5RCxLQUFLO29CQUNMLEVBQUU7b0JBQ0YscUlBQXFJO29CQUNySSxFQUFFO29CQUNGLFdBQVc7b0JBQ1gsRUFBRTtvQkFDRixtRkFBbUY7b0JBQ25GLEVBQUU7b0JBQ0YsT0FBTztvQkFDUCw0Q0FBNEM7b0JB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QUMsY0FBYyxFQUFFLGdGQUFnRixDQUFDO2FBQ3RHLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDO2FBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLENBQUM7YUFDeEMsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNmLElBQUksQ0FBQyxjQUFjLEVBQUUsaURBQWlELENBQUM7YUFDdkUsR0FBRyxDQUFDLGlDQUFpQyxDQUFDO2FBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUUsMkRBQTJELENBQUM7YUFDNUUsR0FBRyxDQUFDLHdDQUF3QyxDQUFDO2FBQzdDLElBQUksQ0FBQyxhQUFhLEVBQUUsdUNBQXVDLENBQUM7YUFDNUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7YUFDZCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUM7YUFDM0MsR0FBRyxDQUFDLDZCQUE2QixDQUFDO2FBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUM7YUFDaEMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDOztBQWhXSCw4QkFrV0M7OztBQVFEOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLFNBQVM7O0FBQTlDLDBDQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkZEV4dGVuc2lvbk9wdGlvbnMsIEQ5RXh0ZW5zaW9uVHlwZSwgRXh0ZW5zaW9uRm9sZGVyIH0gZnJvbSAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbic7XG5pbXBvcnQgeyBHaXRIdWJDb25maWcsIEdpdEh1YkNvbmZpZ09wdGlvbnMsIERvY2tlcmZpbGUgfSBmcm9tICdAd2JjZS9wcm9qZW4tc2hhcmVkJztcbmltcG9ydCB7IEFpQWdlbnQsIEFpSW5zdHJ1Y3Rpb25zLCBEb2NrZXJDb21wb3NlLCBEb2NrZXJDb21wb3NlU2VydmljZSwgamF2YXNjcmlwdCwgSnNvbkZpbGUsIFNhbXBsZUZpbGUsIFRhc2ssIHR5cGVzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VWZXJzaW9ucyB7XG4gIHJlYWRvbmx5IGQ5Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIEF0bGFzIGJpbmFyeSBkb3dubG9hZGVkIGJ5IGQ5LXBsdW1iaW5nLlxuICAgKiBAZGVmYXVsdCBcIjEuMy4zXCJcbiAgICovXG4gIHJlYWRvbmx5IGF0bGFzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0b3JhZ2Ugc2hhcmVkIGJldHdlZW4gZW52aXJvbm1lbnRzLCB1c2VkIGJ5IGBkOS1wbHVtYmluZyBzYXZlYCBhbmQgYGQ5LXBsdW1iaW5nIGFwcGx5LXNjaGVtYWAgdG8gdHJhbnNmZXIgZmlsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJtZWRpYXRlU3RvcmFnZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHN0b3JhZ2UgZHJpdmVyOiBzMywgZ2NzLCBhenVyZSwgbG9jYWwgb3IgY2xvdWRpbmFyeS5cbiAgICovXG4gIHJlYWRvbmx5IGRyaXZlcjogc3RyaW5nO1xuICAvKipcbiAgICogTm9uLXNlY3JldCBkcml2ZXIgb3B0aW9ucyAocm9vdCwgYnVja2V0LCByZWdpb24sIGVuZHBvaW50Li4uKS5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogU2VjcmV0IGRyaXZlciBvcHRpb25zLCBtYXBwaW5nIGVhY2ggb3B0aW9uIG5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGhvbGRpbmcgaXRzIHZhbHVlLlxuICAgKiBPbmx5IHRoZSB2YXJpYWJsZSBuYW1lIGlzIHdyaXR0ZW4gdG8gYGQ5LXBsdW1iaW5nLmpzb25gLCBuZXZlciB0aGUgdmFsdWU6IGl0IGlzIHJlYWQgZnJvbSB0aGUgZW52aXJvbm1lbnQgKG9yIGAuZW52YCkgYXQgcnVudGltZS5cbiAgICogQGV4YW1wbGUgeyBrZXk6ICdTM19BQ0NFU1NfS0VZX0lEX0VOVl9WQVInLCBzZWNyZXQ6ICdTM19TRUNSRVRfQUNDRVNTX0tFWV9FTlZfVkFSJyB9IC8vIHRoZSBgc2VjcmV0YCBvcHRpb24gaXMgcmVhZCBmcm9tICRTM19TRUNSRVRfQUNDRVNTX0tFWV9FTlZfVkFSXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRFbnY/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb2YgdGhlIGQ5LXBsdW1iaW5nIENMSSwgd3JpdHRlbiB0byBgZDktcGx1bWJpbmcuanNvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1bWJpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFN0b3JhZ2Ugc2hhcmVkIGJldHdlZW4gZW52aXJvbm1lbnRzLlxuICAgKiBAZGVmYXVsdCAtIG5vbmUsIHRoZSBpbnRlcm1lZGlhdGUgc3RvcmFnZSBpcyBjb25maWd1cmVkIHdpdGggSU5URVJNRURJQVRFX1NUT1JBR0VfKiB2YXJpYWJsZXMgb3IgZmxhZ3NcbiAgICovXG4gIHJlYWRvbmx5IGludGVybWVkaWF0ZVN0b3JhZ2U/OiBJbnRlcm1lZGlhdGVTdG9yYWdlT3B0aW9ucztcbiAgLyoqXG4gICAqIERlZmF1bHQgbG9nIGxldmVsIG9mIHRoZSBDTEksIG92ZXJyaWRkZW4gYnkgdGhlIExPR19MRVZFTCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQGRlZmF1bHQgXCJkZWJ1Z1wiXG4gICAqL1xuICByZWFkb25seSBsb2dMZXZlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEOVByb2plY3RPcHRpb25zIGV4dGVuZHMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIEdpdEh1YiBjb25maWd1cmF0aW9uLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBHaXRIdWIgY29uZmlnIGVudGlyZWx5LlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgR2l0SHViQ29uZmlnIHdpdGggcHJvamVjdCBkZWZhdWx0c1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViQ29uZmlnPzogR2l0SHViQ29uZmlnT3B0aW9ucyB8IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9ucyBmb2xkZXIuXG4gICAqIEBkZWZhdWx0IFwiZXh0ZW5zaW9uLXBhY2thZ2VzXCJcbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuc2lvbnNGb2xkZXJOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBwYWNrYWdlVmVyc2lvbnM/OiBQYWNrYWdlVmVyc2lvbnM7XG59XG5cbmV4cG9ydCBjbGFzcyBEOVByb2plY3QgZXh0ZW5kcyBqYXZhc2NyaXB0Lk5vZGVQcm9qZWN0IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgZ2l0aHViQ29uZmlnPzogR2l0SHViQ29uZmlnO1xuICBwdWJsaWMgZXh0ZW5zaW9ucyE6IEV4dGVuc2lvbkZvbGRlcjtcbiAgcHVibGljIGV4dGVuc2lvbkZvbGRlciE6IHN0cmluZztcbiAgcHVibGljIGJ1aWxkRXh0ZW5zaW9uVGFzayE6IFRhc2s7XG4gIHB1YmxpYyBkb2NrZXJmaWxlITogRG9ja2VyZmlsZTtcbiAgcHVibGljIGRvY2tlckNvbXBvc2VGaWxlITogRG9ja2VyQ29tcG9zZTtcbiAgcHVibGljIGQ5U2VydmljZSE6IERvY2tlckNvbXBvc2VTZXJ2aWNlO1xuICBwdWJsaWMgZGF0YWJhc2VTZXJ2aWNlITogRG9ja2VyQ29tcG9zZVNlcnZpY2U7XG4gIHB1YmxpYyBjYWNoZVNlcnZpY2UhOiBEb2NrZXJDb21wb3NlU2VydmljZTtcbiAgcHJpdmF0ZSBwbHVtYmluZ0NvbmZpZyE6IEpzb25GaWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBvcHRpb25zOiBEOVByb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgZDlWZXJzaW9uID0gb3B0aW9ucy5wYWNrYWdlVmVyc2lvbnM/LmQ5IHx8ICcxMi4wLjE1JztcbiAgICBjb25zdCBhdGxhc1ZlcnNpb24gPSBvcHRpb25zLnBhY2thZ2VWZXJzaW9ucz8uYXRsYXMgfHwgJzEuMy4zJztcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgcGFja2FnZU1hbmFnZXI6IG9wdGlvbnMucGFja2FnZU1hbmFnZXIgPz8gamF2YXNjcmlwdC5Ob2RlUGFja2FnZU1hbmFnZXIuTlBNLFxuICAgICAgZ2l0aHViOiBmYWxzZSwgLy8gV2UgdXNlIG91ciBvd24gR2l0SHViQ29uZmlnIGluc3RlYWRcbiAgICAgIGRlcHNVcGdyYWRlOiB0cnVlLFxuICAgICAgZGVwc1VwZ3JhZGVPcHRpb25zOiB7XG4gICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgIHNjaGVkdWxlOiBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuREFJTFksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbGljZW5zZWQ6IGZhbHNlLFxuICAgICAgcmVhZG1lOiBvcHRpb25zLnJlYWRtZSA/PyB7XG4gICAgICAgIGNvbnRlbnRzOiBbXG4gICAgICAgICAgYCMgJHtvcHRpb25zLm5hbWV9YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnQSBbZDldKGh0dHBzOi8vZ2l0aHViLmNvbS9MYVdlYmNhcHN1bGUvZDkpIChEaXJlY3R1cyA5IGZvcmspIHByb2plY3Qgc2NhZmZvbGRlZCB3aXRoIFtgQHdiY2UvcHJvamVuLWQ5YF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHdiY2UvcHJvamVuLWQ5KS4gRGV2ZWxvcCBsb2NhbGx5IGFnYWluc3QgRG9ja2VyIENvbXBvc2UsIHRoZW4gYnVpbGQgYSBEb2NrZXIgaW1hZ2UgdG8gZGVwbG95IGFueXdoZXJlLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIExvY2FsIGRldmVsb3BtZW50JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnYGBgc2gnLFxuICAgICAgICAgICducHggcHJvamVuIGluc3RhbGwgICAgICAjIGluc3RhbGwgZGVwZW5kZW5jaWVzJyxcbiAgICAgICAgICAnbnB4IHByb2plbiBmaXJzdC1ydW4gICAgIyBib290IHN0YWNrLCBjcmVhdGUgYWRtaW4sIHN0YXJ0IGQ5JyxcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnT3BlbiBodHRwOi8vbG9jYWxob3N0OjgwNTUgYW5kIHNpZ24gaW4gYXMgYGFkbWluQGV4YW1wbGUuY29tYCAvIGB0b3RvdG90b2AuIEV4dGVuc2lvbnMgYXV0by1yZWxvYWQgKGBFWFRFTlNJT05TX0FVVE9fUkVMT0FEPXRydWVgKS4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBEZXBsb3knLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdBIGBEb2NrZXJmaWxlYCBpcyBpbmNsdWRlZC4gQnVpbGQgYW5kIHB1c2ggdGhlIGltYWdlIGZvciB5b3VyIHRhcmdldCBlbnZpcm9ubWVudDonLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdgYGBzaCcsXG4gICAgICAgICAgJ2RvY2tlciBidWlsZCAtdCA8cmVnaXN0cnk+LzxpbWFnZT46PHRhZz4gLicsXG4gICAgICAgICAgJ2RvY2tlciBwdXNoIDxyZWdpc3RyeT4vPGltYWdlPjo8dGFnPicsXG4gICAgICAgICAgJ2BgYCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0NvbmZpZ3VyZSB0aGUgZGVwbG95ZWQgaW5zdGFuY2Ugd2l0aCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGRhdGFiYXNlLCBjYWNoZSwgc2VjcmV0cykg4oCUIHNlZSB0aGUgZDkgZG9jcy4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBDb21tb24gdGFza3MnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICd8IFRhc2sgfCBEZXNjcmlwdGlvbiB8JyxcbiAgICAgICAgICAnfCAtLS0gfCAtLS0gfCcsXG4gICAgICAgICAgJ3wgYG5weCBwcm9qZW4gcnVuYCB8IFN0YXJ0IGQ5IChgZG9ja2VyIGNvbXBvc2UgdXAgZDlgKSB8JyxcbiAgICAgICAgICAnfCBgbnB4IHByb2plbiBidWlsZC1leHRlbnNpb25zIFtuYW1lXWAgfCBJbnN0YWxsIGFuZCBidWlsZCBhbGwgZXh0ZW5zaW9ucyAob3Igb25seSBgbmFtZWApIHwnLFxuICAgICAgICAgICd8IGBucHggcHJvamVuIGNyZWF0ZS1hbi1hZG1pbmAgfCBDcmVhdGUgdGhlIGRlZmF1bHQgYWRtaW4gdXNlciB8JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnU2VlIGAucHJvamVuL3Rhc2tzLmpzb25gIGZvciB0aGUgZnVsbCBsaXN0LicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIENvbmZpZ3VyYXRpb24nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdFZGl0IGAucHJvamVucmMuanNgIGFuZCBydW4gYG5weCBwcm9qZW5gIHRvIHJlZ2VuZXJhdGUgcHJvamVjdCBmaWxlcy4gTG9jYWwgZW52aXJvbm1lbnQgb3ZlcnJpZGVzIGdvIGluIGAuZW52LmxvY2FsYC4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBFeHRlbnNpb25zJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnRXh0ZW5zaW9ucyBsaXZlIHVuZGVyIGAuL3BsdWdpbnMvYC4gQWRkIG5ldyBvbmVzIGluIGAucHJvamVucmMuanNgOicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2BgYGpzJyxcbiAgICAgICAgICBcImltcG9ydCB7IEQ5RXh0ZW5zaW9uVHlwZSB9IGZyb20gJ0B3YmNlL3Byb2plbi1kOS1leHRlbnNpb24nO1wiLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIFwicHJvamVjdC5hZGRFeHRlbnNpb24oJ215LWhvb2snLCBbRDlFeHRlbnNpb25UeXBlLkhPT0tdKTtcIixcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnVGhlbiBgbnB4IHByb2plbiAmJiBucHggcHJvamVuIGJ1aWxkLWV4dGVuc2lvbnNgLicsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9LFxuICAgICAgZGV2RGVwczogW1xuICAgICAgICAnQHdiY2UvcHJvamVuLWQ5JyxcbiAgICAgICAgJ0B3YmNlL3Byb2plbi1kOS1leHRlbnNpb24nLFxuICAgICAgICAuLi4ob3B0aW9ucy5kZXZEZXBzID8/IFtdKSxcbiAgICAgIF0sXG4gICAgICBkZXBzOiBbYEB3YmNlLWQ5L2RpcmVjdHVzOUAke2Q5VmVyc2lvbn1gXSxcbiAgICB9KTtcblxuICAgIC8vIE5vIHRzY29uZmlnIG1lYW5zIG5vIHRzYyAtLWJ1aWxkIGluIGNvbXBpbGVcbiAgICB0aGlzLmNvbXBpbGVUYXNrLnJlc2V0KCk7XG5cbiAgICB0aGlzLnBsdW1iaW5nQ29uZmlnID0gbmV3IEpzb25GaWxlKHRoaXMsICdkOS1wbHVtYmluZy5qc29uJywge1xuICAgICAgb2JqOiB7IGF0bGFzVmVyc2lvbiB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFeHRlbnNpb25Gb2xkZXIoKTtcbiAgICB0aGlzLmFkZERvY2tlckNvbXBvc2UoKTtcbiAgICB0aGlzLmFkZEZpcnN0UnVuVGFzaygpO1xuICAgIHRoaXMuYWRkQnVpbGRFeHRlbnNpb25UYXNrKCk7XG4gICAgdGhpcy5hZGRSdW5UYXNrKCk7XG4gICAgdGhpcy5hZGREOVBsdW1iaW5nVGFzaygpO1xuICAgIHRoaXMuYWRkRG9ja2VyZmlsZSgpO1xuICAgIHRoaXMuYWRkQ3JlYXRlQWRtaW5Vc2VyVGFzaygpO1xuXG4gICAgbmV3IEFpSW5zdHJ1Y3Rpb25zKHRoaXMsIHtcbiAgICAgIGFnZW50czogW0FpQWdlbnQuQ0xBVURFXSxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLmdpdGh1YkNvbmZpZyAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuZ2l0aHViQ29uZmlnID0gbmV3IEdpdEh1YkNvbmZpZyh0aGlzLCBvcHRpb25zLmdpdGh1YkNvbmZpZyk7XG4gICAgICB0aGlzLmFkZFNhdmVCcmFuY2hXb3JrZmxvdygpO1xuICAgIH1cbiAgICB0aGlzLmdpdGlnbm9yZS5hZGRQYXR0ZXJucygndXBsb2FkcycpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKCcqKi8uRFNfU3RvcmUnKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5hZGRQYXR0ZXJucygnLmVudi5sb2NhbCcpO1xuXG4gICAgLy8gQ3JlYXRlIGFuIGVtcHR5IC5lbnYubG9jYWwgaWYgaXQgZG9lc24ndCBleGlzdCwgc28gRG9ja2VyIGRvZXNuJ3QgbW91bnQgYSBkaXJlY3RvcnlcbiAgICBuZXcgU2FtcGxlRmlsZSh0aGlzLCAnLmVudi5sb2NhbCcsIHsgY29udGVudHM6ICcjIExvY2FsIGVudmlyb25tZW50IG92ZXJyaWRlcyBmb3IgZDknIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFeHRlbnNpb25Gb2xkZXIoKSB7XG4gICAgY29uc3QgZm9sZGVyTmFtZSA9IHRoaXMub3B0aW9ucy5leHRlbnNpb25zRm9sZGVyTmFtZSA/PyAncGx1Z2lucyc7XG4gICAgdGhpcy5leHRlbnNpb25zID0gbmV3IEV4dGVuc2lvbkZvbGRlcih7IHBhcmVudDogdGhpcywgbmFtZTogZm9sZGVyTmFtZSB9KTtcbiAgICB0aGlzLmV4dGVuc2lvbkZvbGRlciA9IGZvbGRlck5hbWU7XG4gICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZSgnZXh0ZW5zaW9ucy8qJyk7XG4gICAgdGhpcy5naXRpZ25vcmUuaW5jbHVkZSgnZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvJyk7XG4gIH1cblxuICBwdWJsaWMgYWRkRXh0ZW5zaW9uKG5hbWU6IHN0cmluZywgZXh0ZW5zaW9uVHlwZXM6IEQ5RXh0ZW5zaW9uVHlwZVtdLCBvcHRpb25zPzogQWRkRXh0ZW5zaW9uT3B0aW9ucyApIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbnNpb25zLmFkZChuYW1lLCBleHRlbnNpb25UeXBlcywgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlndXJlUGx1bWJpbmcob3B0aW9uczogUGx1bWJpbmdPcHRpb25zKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucykpIHtcbiAgICAgIHRoaXMucGx1bWJpbmdDb25maWcuYWRkT3ZlcnJpZGUoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRGaXJzdFJ1blRhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygnZmlyc3QtcnVuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdJbml0aWFsaXplIGFuZCBzdGFydCBhIGZyZXNoIGQ5IGluc3RhbmNlJyxcbiAgICB9KTtcbiAgICBjb25zdCBhZG1pbkVtYWlsID0gJ2FkbWluQGV4YW1wbGUuY29tJztcbiAgICBjb25zdCB1c2VyTm90RXhpc3RzQ29uZGl0aW9uID0gYGRvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGNvdW50KCopIEZST00gZGlyZWN0dXNfdXNlcnMgV0hFUkUgZW1haWwgPSAnJHthZG1pbkVtYWlsfSdcIiB8IGdyZXAgLXEgJ14wJCdgO1xuICAgIGNvbnN0IGVtcHR5RGF0YWJhc2VDb25kaXRpb24gPSAnZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgY291bnQoKikgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX25hbWUgTElLRSBcXCdkaXJlY3R1c18lXFwnXCIgfCBncmVwIC1xIFxcJ14wJFxcJyc7XG4gICAgdGFzay5leGVjKCdkb2NrZXIgY29tcG9zZSB1cCAtZCAtLXdhaXQgZGF0YWJhc2UgY2FjaGUnKTtcbiAgICB0YXNrLmV4ZWMoJ25weCBkOS1wbHVtYmluZyBmaXJzdC1pbXBvcnQgLS1ob3N0IGxvY2FsaG9zdCAtLXVzZXIgZDkgLS1wYXNzd29yZCBkOSAtLWRhdGFiYXNlIGQ5Jywge1xuICAgICAgY29uZGl0aW9uOiAndGVzdCAtZCAuL3NxbCcsXG4gICAgfSk7XG4gICAgdGFzay5leGVjKCdkb2NrZXIgY29tcG9zZSBydW4gLS1ybSBkOSBucHggZGlyZWN0dXMgYm9vdHN0cmFwJywge1xuICAgICAgY29uZGl0aW9uOiBgdGVzdCAhIC1kIC4vc3FsICYmICR7ZW1wdHlEYXRhYmFzZUNvbmRpdGlvbn1gLFxuICAgIH0pO1xuICAgIHRhc2suZXhlYyhgQURNSU5fUk9MRV9JRD0kKGRvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGlkIEZST00gZGlyZWN0dXNfcm9sZXMgV0hFUkUgYWRtaW5fYWNjZXNzID0gdHJ1ZSBMSU1JVCAxXCIpICYmIGRvY2tlciBjb21wb3NlIHJ1biAtLXJtIGQ5IG5weCBkaXJlY3R1cyB1c2VycyBjcmVhdGUgLS1lbWFpbCAke2FkbWluRW1haWx9IC0tcGFzc3dvcmQgdG90b3RvdG8gLS1yb2xlIFwiJEFETUlOX1JPTEVfSURcImAsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBwYXNzd29yZCB0b3RvdG90b2AsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyBjcmVhdGlvbmAsIHtcbiAgICAgIGNvbmRpdGlvbjogYCEgJHt1c2VyTm90RXhpc3RzQ29uZGl0aW9ufWAsXG4gICAgfSk7XG4gICAgdGFzay5leGVjKCdkb2NrZXIgY29tcG9zZSB1cCBkOScpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDcmVhdGVBZG1pblVzZXJUYXNrKCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFRhc2soJ2NyZWF0ZS1hbi1hZG1pbicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ3JlYXRlIGFuIGFkbWluIHVzZXInLFxuICAgIH0pO1xuICAgIGNvbnN0IGFkbWluRW1haWwgPSAnYWRtaW5AZXhhbXBsZS5jb20nO1xuICAgIGNvbnN0IHVzZXJOb3RFeGlzdHNDb25kaXRpb24gPSBgZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgY291bnQoKikgRlJPTSBkaXJlY3R1c191c2VycyBXSEVSRSBlbWFpbCA9ICcke2FkbWluRW1haWx9J1wiIHwgZ3JlcCAtcSAnXjAkJ2A7XG4gICAgdGFzay5leGVjKCdkb2NrZXIgY29tcG9zZSB1cCAtZCAtLXdhaXQgZGF0YWJhc2UgY2FjaGUnKTtcbiAgICB0YXNrLmV4ZWMoYEFETUlOX1JPTEVfSUQ9JChkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBpZCBGUk9NIGRpcmVjdHVzX3JvbGVzIFdIRVJFIGFkbWluX2FjY2VzcyA9IHRydWUgTElNSVQgMVwiKSAmJiBkb2NrZXIgY29tcG9zZSBydW4gLS1ybSBkOSBucHggZGlyZWN0dXMgdXNlcnMgY3JlYXRlIC0tZW1haWwgJHthZG1pbkVtYWlsfSAtLXBhc3N3b3JkIHRvdG90b3RvIC0tcm9sZSBcIiRBRE1JTl9ST0xFX0lEXCJgLCB7XG4gICAgICBjb25kaXRpb246IHVzZXJOb3RFeGlzdHNDb25kaXRpb24sXG4gICAgfSk7XG4gICAgdGFzay5zYXkoYFVzZXIgJHthZG1pbkVtYWlsfSBoYXMgYmVlbiBjcmVhdGVkIHdpdGggcGFzc3dvcmQgdG90b3RvdG9gLCB7XG4gICAgICBjb25kaXRpb246IHVzZXJOb3RFeGlzdHNDb25kaXRpb24sXG4gICAgfSk7XG4gICAgdGFzay5zYXkoYFVzZXIgJHthZG1pbkVtYWlsfSBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmcgY3JlYXRpb25gLCB7XG4gICAgICBjb25kaXRpb246IGAhICR7dXNlck5vdEV4aXN0c0NvbmRpdGlvbn1gLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRSdW5UYXNrKCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFRhc2soJ3J1bicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnc3RhcnQgdGhlIGQ5IGluc3RhbmNlJyxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIGQ5Jyk7XG4gIH1cblxuICBwcml2YXRlIGFkZEQ5UGx1bWJpbmdUYXNrKCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFRhc2soJ2Q5LXBsdW1iaW5nJywge1xuICAgICAgZGVzY3JpcHRpb246ICdSdW4gdGhlIGQ5LXBsdW1iaW5nIENMSSAoc2F2ZSwgYXBwbHktc2NoZW1hLCBmaXJzdC1pbXBvcnQuLi4pLiBVc2UgLS1oZWxwIHRvIGxpc3QgYWxsIHN1YmNvbW1hbmRzLicsXG4gICAgfSk7XG4gICAgdGFzay5zYXkoJ1RpcDogeW91IGNhbiBhbHNvIGNhbGwgaXQgZGlyZWN0bHkgd2l0aCBgbnB4IGQ5LXBsdW1iaW5nIDxjb21tYW5kPmAnKTtcbiAgICB0YXNrLmV4ZWMoJ25weCBkOS1wbHVtYmluZyBcIiRAXCInLCB7IHJlY2VpdmVBcmdzOiB0cnVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRCdWlsZEV4dGVuc2lvblRhc2soKSB7XG4gICAgdGhpcy5idWlsZEV4dGVuc2lvblRhc2sgPSB0aGlzLmFkZFRhc2soJ2J1aWxkLWV4dGVuc2lvbnMnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIHRoZSBkOSBleHRlbnNpb25zJyxcbiAgICB9KTtcbiAgICB0aGlzLmJ1aWxkRXh0ZW5zaW9uVGFzay5leGVjKGBjZCAke3RoaXMuZXh0ZW5zaW9uRm9sZGVyfSAmJiBwbnBtIGluc3RhbGxgKTtcbiAgICAvLyBwcm9qZW4gcmVwbGFjZXMgXCIkQFwiIHdpdGggdGhlIHF1b3RlZCB0YXNrIGFyZ3M7IGBzZXQgLS1gIHR1cm5zIHRoZW0gYmFjayBpbnRvICQxXG4gICAgdGhpcy5idWlsZEV4dGVuc2lvblRhc2suZXhlYyhcbiAgICAgIGBjZCAke3RoaXMuZXh0ZW5zaW9uRm9sZGVyfSAmJiBzZXQgLS0gXCIkQFwiICYmIGlmIFsgLW4gXCIkMVwiIF07IHRoZW4gcG5wbSAtLXJlY3Vyc2l2ZSAtLWZpbHRlciBcIiQxLi4uXCIgcnVuIGJ1aWxkOyBlbHNlIHBucG0gcnVuIC0tcmVjdXJzaXZlIGJ1aWxkOyBmaWAsXG4gICAgICB7IHJlY2VpdmVBcmdzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBhZGREb2NrZXJDb21wb3NlKCkge1xuICAgIGNvbnN0IGRjID0gbmV3IERvY2tlckNvbXBvc2UodGhpcyk7XG5cbiAgICB0aGlzLmRhdGFiYXNlU2VydmljZSA9IGRjLmFkZFNlcnZpY2UoJ2RhdGFiYXNlJywge1xuICAgICAgaW1hZ2U6ICdwb3N0Z2lzL3Bvc3RnaXM6MTMtbWFzdGVyJyxcbiAgICAgIHZvbHVtZXM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5uYW1lZFZvbHVtZSgncGdkYXRhJywgJy92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScpLFxuICAgICAgXSxcbiAgICAgIHBvcnRzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UucG9ydE1hcHBpbmcoNTQzMiwgNTQzMiksXG4gICAgICBdLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgUE9TVEdSRVNfVVNFUjogJ2Q5JyxcbiAgICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6ICdkOScsXG4gICAgICAgIFBPU1RHUkVTX0RCOiAnZDknLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuY2FjaGVTZXJ2aWNlID0gZGMuYWRkU2VydmljZSgnY2FjaGUnLCB7XG4gICAgICBpbWFnZTogJ3JlZGlzOjYnLFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLm5hbWVkVm9sdW1lKCdyZWRpc19zdG9yYWdlJywgJy9kYXRhJyksXG4gICAgICBdLFxuICAgICAgcG9ydHM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5wb3J0TWFwcGluZyg2Mzc5LCA2Mzc5KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmQ5U2VydmljZSA9IGRjLmFkZFNlcnZpY2UoJ2Q5Jywge1xuICAgICAgaW1hZ2VCdWlsZDogeyBjb250ZXh0OiAnLicgfSxcbiAgICAgIHBvcnRzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UucG9ydE1hcHBpbmcoODA1NSwgODA1NSksXG4gICAgICBdLFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLmJpbmRWb2x1bWUoJy4vdXBsb2FkcycsICcvYXBwL3VwbG9hZHMnKSxcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5iaW5kVm9sdW1lKCcuL2V4dGVuc2lvbnMnLCAnL2FwcC9leHRlbnNpb25zJyksXG4gICAgICBdLFxuICAgICAgLy8gZGVwZW5kc09uIGlzIHNldCB2aWEgYWRkT3ZlcnJpZGUgYmVsb3cgd2l0aCBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgS0VZOiAnc29tZS1yYW5kb20ta2V5JyxcbiAgICAgICAgU0VDUkVUOiAnYW5vdGhlci1yYW5kb20ta2V5JyxcbiAgICAgICAgQ09ORklHX1BBVEg6ICcuZW52LmxvY2FsJyxcbiAgICAgICAgREJfQ0xJRU5UOiAncGcnLFxuICAgICAgICBEQl9IT1NUOiAnZGF0YWJhc2UnLFxuICAgICAgICBEQl9QT1JUOiAnNTQzMicsXG4gICAgICAgIERCX0RBVEFCQVNFOiAnZDknLFxuICAgICAgICBEQl9VU0VSOiAnZDknLFxuICAgICAgICBEQl9QQVNTV09SRDogJ2Q5JyxcbiAgICAgICAgQ0FDSEVfRU5BQkxFRDogJ2ZhbHNlJyxcbiAgICAgICAgQ0FDSEVfU1RPUkU6ICdyZWRpcycsXG4gICAgICAgIENBQ0hFX1JFRElTX0hPU1Q6ICdjYWNoZScsXG4gICAgICAgIE1FU1NFTkdFUl9TVE9SRTogJ3JlZGlzJyxcbiAgICAgICAgTUVTU0VOR0VSX1JFRElTOiAncmVkaXM6Ly9jYWNoZTo2Mzc5JyxcbiAgICAgICAgQ0FDSEVfU1RBVFVTX0hFQURFUjogJ2NhY2hlLWhpdCcsXG4gICAgICAgIENPUlNfRU5BQkxFRDogJ3RydWUnLFxuICAgICAgICBDT1JTX09SSUdJTjogJ3RydWUnLFxuICAgICAgICBMT0dfTEVWRUw6ICdpbmZvJyxcbiAgICAgICAgQURNSU5fRU1BSUw6ICdhZG1pbkBleGFtcGxlLmNvbScsXG4gICAgICAgIEFETUlOX1BBU1NXT1JEOiAndG90b3RvdG8nLFxuICAgICAgICBFWFRFTlNJT05TX0FVVE9fUkVMT0FEOiAndHJ1ZScsXG4gICAgICAgIFZBTElEQVRFX0VOVElUSUVTX1RPS0VOU19BUElfS0VZOiAndG90bycsXG4gICAgICAgIEFXU19LTVNfS0VZX0lEOiAndHV0dScsXG4gICAgICB9LFxuICAgICAgY29tbWFuZDogWydzaCcsICctYycsICducHggZGlyZWN0dXMgc3RhcnQnXSxcbiAgICB9KTtcblxuICAgIHRoaXMuZDlTZXJ2aWNlLmFkZFZvbHVtZShEb2NrZXJDb21wb3NlLmJpbmRWb2x1bWUoJy4vLmVudi5sb2NhbCcsICcvYXBwLy5lbnYubG9jYWwnKSk7XG5cbiAgICAvLyBBZGQgaGVhbHRoY2hlY2sgZm9yIGRhdGFiYXNlIChub3QgbmF0aXZlbHkgc3VwcG9ydGVkIGJ5IHByb2plbiBEb2NrZXJDb21wb3NlKVxuICAgIGRjLmZpbGUuYWRkT3ZlcnJpZGUoJ3NlcnZpY2VzLmRhdGFiYXNlLmhlYWx0aGNoZWNrJywge1xuICAgICAgdGVzdDogWydDTUQnLCAncGdfaXNyZWFkeScsICctLWhvc3Q9bG9jYWxob3N0JywgJy0tdXNlcm5hbWU9ZDknXSxcbiAgICAgIGludGVydmFsOiAnMTBzJyxcbiAgICAgIHRpbWVvdXQ6ICc1cycsXG4gICAgICByZXRyaWVzOiA1LFxuICAgICAgc3RhcnRfaW50ZXJ2YWw6ICc1cycsXG4gICAgICBzdGFydF9wZXJpb2Q6ICczMHMnLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIGhlYWx0aGNoZWNrIGZvciBjYWNoZVxuICAgIGRjLmZpbGUuYWRkT3ZlcnJpZGUoJ3NlcnZpY2VzLmNhY2hlLmhlYWx0aGNoZWNrJywge1xuICAgICAgdGVzdDogWydDTUQtU0hFTEwnLCAnWyAkKHJlZGlzLWNsaSBwaW5nKSA9IFxcJ1BPTkdcXCcgXSddLFxuICAgICAgaW50ZXJ2YWw6ICcxMHMnLFxuICAgICAgdGltZW91dDogJzVzJyxcbiAgICAgIHJldHJpZXM6IDUsXG4gICAgICBzdGFydF9pbnRlcnZhbDogJzVzJyxcbiAgICAgIHN0YXJ0X3BlcmlvZDogJzMwcycsXG4gICAgfSk7XG5cbiAgICAvLyBPdmVycmlkZSBkZXBlbmRzX29uIHRvIHVzZSBjb25kaXRpb24gc3ludGF4XG4gICAgZGMuZmlsZS5hZGRPdmVycmlkZSgnc2VydmljZXMuZDkuZGVwZW5kc19vbicsIHtcbiAgICAgIGNhY2hlOiB7IGNvbmRpdGlvbjogJ3NlcnZpY2VfaGVhbHRoeScgfSxcbiAgICAgIGRhdGFiYXNlOiB7IGNvbmRpdGlvbjogJ3NlcnZpY2VfaGVhbHRoeScgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuZG9ja2VyQ29tcG9zZUZpbGUgPSBkYztcblxuICAgIHJldHVybiBkYztcbiAgfVxuXG4gIHByaXZhdGUgYWRkU2F2ZUJyYW5jaFdvcmtmbG93KCkge1xuICAgIGNvbnN0IHdvcmtmbG93ID0gdGhpcy5naXRodWJDb25maWchLmFkZFdvcmtmbG93KCdzYXZlLWJyYW5jaCcpO1xuICAgIHdvcmtmbG93Lm9uKHsgcHVzaDogeyBicmFuY2hlczogWycqLXNhdmUnXSB9IH0pO1xuICAgIHdvcmtmbG93LmFkZEpvYignY3JlYXRlLXByJywge1xuICAgICAgbmFtZTogJ0NyZWF0ZSBQdWxsIFJlcXVlc3QnLFxuICAgICAgcnVuc09uOiBbJ3VidW50dS1sYXRlc3QnXSxcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIHB1bGxSZXF1ZXN0czogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7IG5hbWU6ICdDaGVja291dCcsIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY0JyB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NyZWF0ZSBQdWxsIFJlcXVlc3QnLFxuICAgICAgICAgIHJ1bjogJ2doIHByIGNyZWF0ZSAtLXRpdGxlIFwiU2F2ZTogJHtHSVRIVUJfUkVGX05BTUUlLXNhdmV9XCIgLS1ib2R5IFwiQXV0by1nZW5lcmF0ZWQgUFIgZnJvbSBicmFuY2ggXFxcXGAke0dJVEhVQl9SRUZfTkFNRSUtc2F2ZX1cXFxcYFwiIC0tYmFzZSBcIiR7R0lUSFVCX1JFRl9OQU1FJS1zYXZlfVwiIHx8IGVjaG8gXCJQUiBhbHJlYWR5IGV4aXN0c1wiJyxcbiAgICAgICAgICBlbnY6IHsgR0hfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREb2NrZXJmaWxlKCkge1xuICAgIHRoaXMuZG9ja2VyZmlsZSA9IG5ldyBEb2NrZXJmaWxlKHRoaXMpXG4gICAgICAuZnJvbSgnbm9kZScsICcyMi1ib29rd29ybS1zbGltJylcbiAgICAgIC5zdGVwKCd1cGRhdGUtbnBtJywgJ1VwZGF0ZSBucG0gdG8gZml4IGRlcGVuZGVuY2llcycpXG4gICAgICAucnVuKCducG0gaW5zdGFsbCAtZyBucG1AMTEuOC4wJylcbiAgICAgIC5zdGVwKCdpbnN0YWxsLXBucG0nLCAnaW5zdGFsbCBwbnBtJylcbiAgICAgIC5ydW4oJ25wbSBpbnN0YWxsIC1nIHBucG1AMTAuMzMuMCcpXG4gICAgICAuc3RlcCgnY29weS1wYWNrYWdlJywgJ0NvcHkgcGFja2FnZS5qc29uIGFuZCBwYWNrYWdlLWxvY2suanNvbiBmaXJzdCB0byBsZXZlcmFnZSBEb2NrZXIgbGF5ZXIgY2FjaGluZycpXG4gICAgICAuY29weSgncGFja2FnZSouanNvbicsICcvYXBwLycpXG4gICAgICAuc3RlcCgnd29ya2RpcicsICdTZXQgd29ya2luZyBkaXJlY3RvcnknKVxuICAgICAgLndvcmtkaXIoJy9hcHAnKVxuICAgICAgLnN0ZXAoJ2luc3RhbGwtZGVwcycsICdJbnN0YWxsIGRlcGVuZGVuY2llcyAtIHdpdGhvdXQgZGV2IGRlcGVuZGVuY2llcycpXG4gICAgICAucnVuKCdOT0RFX0VOVj1wcm9kdWN0aW9uIG5wbSBpbnN0YWxsJylcbiAgICAgIC5zdGVwKCdjbGVhbnVwJywgJ0NsZWFuaW5nIGJlbmNobWFya3MgZm9sZGVyIGluIHRlZGlvdXMgbW9kdWxlIGZvciBzZWN1cml0eScpXG4gICAgICAucnVuKCdybSAtcmYgbm9kZV9tb2R1bGVzL3RlZGlvdXMvYmVuY2htYXJrcycpXG4gICAgICAuc3RlcCgnY29weS1zb3VyY2UnLCAnQ29weSB0aGUgcmVzdCBvZiB0aGUgYXBwbGljYXRpb24gY29kZScpXG4gICAgICAuY29weSgnLicsICcuJylcbiAgICAgIC5zdGVwKCdidWlsZC1leHRlbnNpb24nLCAnYnVpbGQgZXh0ZW5zaW9ucycpXG4gICAgICAucnVuKCducHggcHJvamVuIGJ1aWxkLWV4dGVuc2lvbnMnKVxuICAgICAgLnN0ZXAoJ3N0YXJ0JywgJ1N0YXJ0IGQ5IHNlcnZlcicpXG4gICAgICAuY21kRXhlYyhbJ25weCcsICdkaXJlY3R1cycsICdzdGFydCddKTtcbiAgICByZXR1cm4gdGhpcy5kb2NrZXJmaWxlO1xuICB9XG5cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIEQ5UHJvamVjdE9wdGlvbnN9IGluc3RlYWQuIFRoZSBwYWNrYWdlIHdhcyByZW5hbWVkIHRvIGBAd2JjZS9wcm9qZW4tZDlgIHRvIHJlZmxlY3QgdGhhdCBpdCB0YXJnZXRzIHRoZSBkOSBmb3JrLCBub3QgdXBzdHJlYW0gRGlyZWN0dXMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0dXNQcm9qZWN0T3B0aW9ucyBleHRlbmRzIEQ5UHJvamVjdE9wdGlvbnMge31cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIEQ5UHJvamVjdH0gaW5zdGVhZC4gVGhlIHBhY2thZ2Ugd2FzIHJlbmFtZWQgdG8gYEB3YmNlL3Byb2plbi1kOWAgdG8gcmVmbGVjdCB0aGF0IGl0IHRhcmdldHMgdGhlIGQ5IGZvcmssIG5vdCB1cHN0cmVhbSBEaXJlY3R1cy5cbiAqL1xuZXhwb3J0IGNsYXNzIERpcmVjdHVzUHJvamVjdCBleHRlbmRzIEQ5UHJvamVjdCB7fVxuIl19
|
|
334
|
+
DirectusProject[_b] = { fqn: "@wbce/projen-d9.DirectusProject", version: "0.1.1" };
|
|
335
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtRUFBa0c7QUFDbEcsdURBQW9GO0FBQ3BGLG1DQUEwSTtBQUMxSSx1RUFBa0U7QUFDbEUsc0RBQW9FO0FBb0VwRSxNQUFhLFNBQVUsU0FBUSxtQkFBVSxDQUFDLFdBQVc7SUFhbkQsWUFBc0IsT0FBeUI7UUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLE9BQU8sQ0FBQztRQUMvRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsSUFBSSxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUc7WUFDM0UsTUFBTSxFQUFFLEtBQUssRUFBRSxzQ0FBc0M7WUFDckQsV0FBVyxFQUFFLElBQUk7WUFDakIsa0JBQWtCLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRTtvQkFDZixRQUFRLEVBQUUsd0NBQTJCLENBQUMsS0FBSztpQkFDNUM7YUFDRjtZQUNELFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUk7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDUixLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ25CLEVBQUU7b0JBQ0YsZ1BBQWdQO29CQUNoUCxFQUFFO29CQUNGLHNCQUFzQjtvQkFDdEIsRUFBRTtvQkFDRixPQUFPO29CQUNQLGdEQUFnRDtvQkFDaEQsOERBQThEO29CQUM5RCxLQUFLO29CQUNMLEVBQUU7b0JBQ0YscUlBQXFJO29CQUNySSxFQUFFO29CQUNGLFdBQVc7b0JBQ1gsRUFBRTtvQkFDRixtRkFBbUY7b0JBQ25GLEVBQUU7b0JBQ0YsT0FBTztvQkFDUCw0Q0FBNEM7b0JB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QUMsY0FBYyxFQUFFLGdGQUFnRixDQUFDO2FBQ3RHLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDO2FBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLENBQUM7YUFDeEMsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNmLElBQUksQ0FBQyxjQUFjLEVBQUUsaURBQWlELENBQUM7YUFDdkUsR0FBRyxDQUFDLGlDQUFpQyxDQUFDO2FBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUUsMkRBQTJELENBQUM7YUFDNUUsR0FBRyxDQUFDLHdDQUF3QyxDQUFDO2FBQzdDLElBQUksQ0FBQyxhQUFhLEVBQUUsdUNBQXVDLENBQUM7YUFDNUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7YUFDZCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUM7YUFDM0MsR0FBRyxDQUFDLDZCQUE2QixDQUFDO2FBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUM7YUFDaEMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDOztBQWhXSCw4QkFrV0M7OztBQVFEOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLFNBQVM7O0FBQTlDLDBDQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkZEV4dGVuc2lvbk9wdGlvbnMsIEQ5RXh0ZW5zaW9uVHlwZSwgRXh0ZW5zaW9uRm9sZGVyIH0gZnJvbSAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbic7XG5pbXBvcnQgeyBHaXRIdWJDb25maWcsIEdpdEh1YkNvbmZpZ09wdGlvbnMsIERvY2tlcmZpbGUgfSBmcm9tICdAd2JjZS9wcm9qZW4tc2hhcmVkJztcbmltcG9ydCB7IEFpQWdlbnQsIEFpSW5zdHJ1Y3Rpb25zLCBEb2NrZXJDb21wb3NlLCBEb2NrZXJDb21wb3NlU2VydmljZSwgamF2YXNjcmlwdCwgSnNvbkZpbGUsIFNhbXBsZUZpbGUsIFRhc2ssIHR5cGVzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VWZXJzaW9ucyB7XG4gIHJlYWRvbmx5IGQ5Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIEF0bGFzIGJpbmFyeSBkb3dubG9hZGVkIGJ5IGQ5LXBsdW1iaW5nLlxuICAgKiBAZGVmYXVsdCBcIjEuMy4zXCJcbiAgICovXG4gIHJlYWRvbmx5IGF0bGFzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0b3JhZ2Ugc2hhcmVkIGJldHdlZW4gZW52aXJvbm1lbnRzLCB1c2VkIGJ5IGBkOS1wbHVtYmluZyBzYXZlYCBhbmQgYGQ5LXBsdW1iaW5nIGFwcGx5LXNjaGVtYWAgdG8gdHJhbnNmZXIgZmlsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJtZWRpYXRlU3RvcmFnZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHN0b3JhZ2UgZHJpdmVyOiBzMywgZ2NzLCBhenVyZSwgbG9jYWwgb3IgY2xvdWRpbmFyeS5cbiAgICovXG4gIHJlYWRvbmx5IGRyaXZlcjogc3RyaW5nO1xuICAvKipcbiAgICogTm9uLXNlY3JldCBkcml2ZXIgb3B0aW9ucyAocm9vdCwgYnVja2V0LCByZWdpb24sIGVuZHBvaW50Li4uKS5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogU2VjcmV0IGRyaXZlciBvcHRpb25zLCBtYXBwaW5nIGVhY2ggb3B0aW9uIG5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGhvbGRpbmcgaXRzIHZhbHVlLlxuICAgKiBPbmx5IHRoZSB2YXJpYWJsZSBuYW1lIGlzIHdyaXR0ZW4gdG8gYGQ5LXBsdW1iaW5nLmpzb25gLCBuZXZlciB0aGUgdmFsdWU6IGl0IGlzIHJlYWQgZnJvbSB0aGUgZW52aXJvbm1lbnQgKG9yIGAuZW52YCkgYXQgcnVudGltZS5cbiAgICogQGV4YW1wbGUgeyBrZXk6ICdTM19BQ0NFU1NfS0VZX0lEX0VOVl9WQVInLCBzZWNyZXQ6ICdTM19TRUNSRVRfQUNDRVNTX0tFWV9FTlZfVkFSJyB9IC8vIHRoZSBgc2VjcmV0YCBvcHRpb24gaXMgcmVhZCBmcm9tICRTM19TRUNSRVRfQUNDRVNTX0tFWV9FTlZfVkFSXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRFbnY/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb2YgdGhlIGQ5LXBsdW1iaW5nIENMSSwgd3JpdHRlbiB0byBgZDktcGx1bWJpbmcuanNvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1bWJpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFN0b3JhZ2Ugc2hhcmVkIGJldHdlZW4gZW52aXJvbm1lbnRzLlxuICAgKiBAZGVmYXVsdCAtIG5vbmUsIHRoZSBpbnRlcm1lZGlhdGUgc3RvcmFnZSBpcyBjb25maWd1cmVkIHdpdGggSU5URVJNRURJQVRFX1NUT1JBR0VfKiB2YXJpYWJsZXMgb3IgZmxhZ3NcbiAgICovXG4gIHJlYWRvbmx5IGludGVybWVkaWF0ZVN0b3JhZ2U/OiBJbnRlcm1lZGlhdGVTdG9yYWdlT3B0aW9ucztcbiAgLyoqXG4gICAqIERlZmF1bHQgbG9nIGxldmVsIG9mIHRoZSBDTEksIG92ZXJyaWRkZW4gYnkgdGhlIExPR19MRVZFTCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQGRlZmF1bHQgXCJkZWJ1Z1wiXG4gICAqL1xuICByZWFkb25seSBsb2dMZXZlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGQ5IGZvbGRlciBrZXB0IGluIHRoZSBzbmFwc2hvdCwgb3ZlcnJpZGRlbiBieSB0aGUgQ09NTU9OX0ZPTERFUl9OQU1FIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBAZGVmYXVsdCBcImQ5LXBsdW1iaW5nLWNvbW1vblwiXG4gICAqL1xuICByZWFkb25seSBjb21tb25Gb2xkZXJOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEQ5UHJvamVjdE9wdGlvbnMgZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgR2l0SHViIGNvbmZpZ3VyYXRpb24uXG4gICAqIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIEdpdEh1YiBjb25maWcgZW50aXJlbHkuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBHaXRIdWJDb25maWcgd2l0aCBwcm9qZWN0IGRlZmF1bHRzXG4gICAqL1xuICByZWFkb25seSBnaXRodWJDb25maWc/OiBHaXRIdWJDb25maWdPcHRpb25zIHwgZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb25zIGZvbGRlci5cbiAgICogQGRlZmF1bHQgXCJleHRlbnNpb24tcGFja2FnZXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uc0ZvbGRlck5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VWZXJzaW9ucz86IFBhY2thZ2VWZXJzaW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIEQ5UHJvamVjdCBleHRlbmRzIGphdmFzY3JpcHQuTm9kZVByb2plY3Qge1xuXG4gIHB1YmxpYyByZWFkb25seSBnaXRodWJDb25maWc/OiBHaXRIdWJDb25maWc7XG4gIHB1YmxpYyBleHRlbnNpb25zITogRXh0ZW5zaW9uRm9sZGVyO1xuICBwdWJsaWMgZXh0ZW5zaW9uRm9sZGVyITogc3RyaW5nO1xuICBwdWJsaWMgYnVpbGRFeHRlbnNpb25UYXNrITogVGFzaztcbiAgcHVibGljIGRvY2tlcmZpbGUhOiBEb2NrZXJmaWxlO1xuICBwdWJsaWMgZG9ja2VyQ29tcG9zZUZpbGUhOiBEb2NrZXJDb21wb3NlO1xuICBwdWJsaWMgZDlTZXJ2aWNlITogRG9ja2VyQ29tcG9zZVNlcnZpY2U7XG4gIHB1YmxpYyBkYXRhYmFzZVNlcnZpY2UhOiBEb2NrZXJDb21wb3NlU2VydmljZTtcbiAgcHVibGljIGNhY2hlU2VydmljZSE6IERvY2tlckNvbXBvc2VTZXJ2aWNlO1xuICBwcml2YXRlIHBsdW1iaW5nQ29uZmlnITogSnNvbkZpbGU7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIG9wdGlvbnM6IEQ5UHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBkOVZlcnNpb24gPSBvcHRpb25zLnBhY2thZ2VWZXJzaW9ucz8uZDkgfHwgJzEyLjAuMTUnO1xuICAgIGNvbnN0IGF0bGFzVmVyc2lvbiA9IG9wdGlvbnMucGFja2FnZVZlcnNpb25zPy5hdGxhcyB8fCAnMS4zLjMnO1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBwYWNrYWdlTWFuYWdlcjogb3B0aW9ucy5wYWNrYWdlTWFuYWdlciA/PyBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5OUE0sXG4gICAgICBnaXRodWI6IGZhbHNlLCAvLyBXZSB1c2Ugb3VyIG93biBHaXRIdWJDb25maWcgaW5zdGVhZFxuICAgICAgZGVwc1VwZ3JhZGU6IHRydWUsXG4gICAgICBkZXBzVXBncmFkZU9wdGlvbnM6IHtcbiAgICAgICAgd29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgICAgc2NoZWR1bGU6IFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZS5EQUlMWSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsaWNlbnNlZDogZmFsc2UsXG4gICAgICByZWFkbWU6IG9wdGlvbnMucmVhZG1lID8/IHtcbiAgICAgICAgY29udGVudHM6IFtcbiAgICAgICAgICBgIyAke29wdGlvbnMubmFtZX1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdBIFtkOV0oaHR0cHM6Ly9naXRodWIuY29tL0xhV2ViY2Fwc3VsZS9kOSkgKERpcmVjdHVzIDkgZm9yaykgcHJvamVjdCBzY2FmZm9sZGVkIHdpdGggW2BAd2JjZS9wcm9qZW4tZDlgXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ad2JjZS9wcm9qZW4tZDkpLiBEZXZlbG9wIGxvY2FsbHkgYWdhaW5zdCBEb2NrZXIgQ29tcG9zZSwgdGhlbiBidWlsZCBhIERvY2tlciBpbWFnZSB0byBkZXBsb3kgYW55d2hlcmUuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgTG9jYWwgZGV2ZWxvcG1lbnQnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdgYGBzaCcsXG4gICAgICAgICAgJ25weCBwcm9qZW4gaW5zdGFsbCAgICAgICMgaW5zdGFsbCBkZXBlbmRlbmNpZXMnLFxuICAgICAgICAgICducHggcHJvamVuIGZpcnN0LXJ1biAgICAjIGJvb3Qgc3RhY2ssIGNyZWF0ZSBhZG1pbiwgc3RhcnQgZDknLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdPcGVuIGh0dHA6Ly9sb2NhbGhvc3Q6ODA1NSBhbmQgc2lnbiBpbiBhcyBgYWRtaW5AZXhhbXBsZS5jb21gIC8gYHRvdG90b3RvYC4gRXh0ZW5zaW9ucyBhdXRvLXJlbG9hZCAoYEVYVEVOU0lPTlNfQVVUT19SRUxPQUQ9dHJ1ZWApLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIERlcGxveScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0EgYERvY2tlcmZpbGVgIGlzIGluY2x1ZGVkLiBCdWlsZCBhbmQgcHVzaCB0aGUgaW1hZ2UgZm9yIHlvdXIgdGFyZ2V0IGVudmlyb25tZW50OicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2BgYHNoJyxcbiAgICAgICAgICAnZG9ja2VyIGJ1aWxkIC10IDxyZWdpc3RyeT4vPGltYWdlPjo8dGFnPiAuJyxcbiAgICAgICAgICAnZG9ja2VyIHB1c2ggPHJlZ2lzdHJ5Pi88aW1hZ2U+Ojx0YWc+JyxcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnQ29uZmlndXJlIHRoZSBkZXBsb3llZCBpbnN0YW5jZSB3aXRoIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZGF0YWJhc2UsIGNhY2hlLCBzZWNyZXRzKSDigJQgc2VlIHRoZSBkOSBkb2NzLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIENvbW1vbiB0YXNrcycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ3wgVGFzayB8IERlc2NyaXB0aW9uIHwnLFxuICAgICAgICAgICd8IC0tLSB8IC0tLSB8JyxcbiAgICAgICAgICAnfCBgbnB4IHByb2plbiBydW5gIHwgU3RhcnQgZDkgKGBkb2NrZXIgY29tcG9zZSB1cCBkOWApIHwnLFxuICAgICAgICAgICd8IGBucHggcHJvamVuIGJ1aWxkLWV4dGVuc2lvbnMgW25hbWVdYCB8IEluc3RhbGwgYW5kIGJ1aWxkIGFsbCBleHRlbnNpb25zIChvciBvbmx5IGBuYW1lYCkgfCcsXG4gICAgICAgICAgJ3wgYG5weCBwcm9qZW4gY3JlYXRlLWFuLWFkbWluYCB8IENyZWF0ZSB0aGUgZGVmYXVsdCBhZG1pbiB1c2VyIHwnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdTZWUgYC5wcm9qZW4vdGFza3MuanNvbmAgZm9yIHRoZSBmdWxsIGxpc3QuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgQ29uZmlndXJhdGlvbicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0VkaXQgYC5wcm9qZW5yYy5qc2AgYW5kIHJ1biBgbnB4IHByb2plbmAgdG8gcmVnZW5lcmF0ZSBwcm9qZWN0IGZpbGVzLiBMb2NhbCBlbnZpcm9ubWVudCBvdmVycmlkZXMgZ28gaW4gYC5lbnYubG9jYWxgLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIEV4dGVuc2lvbnMnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdFeHRlbnNpb25zIGxpdmUgdW5kZXIgYC4vcGx1Z2lucy9gLiBBZGQgbmV3IG9uZXMgaW4gYC5wcm9qZW5yYy5qc2A6JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnYGBganMnLFxuICAgICAgICAgIFwiaW1wb3J0IHsgRDlFeHRlbnNpb25UeXBlIH0gZnJvbSAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbic7XCIsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgXCJwcm9qZWN0LmFkZEV4dGVuc2lvbignbXktaG9vaycsIFtEOUV4dGVuc2lvblR5cGUuSE9PS10pO1wiLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdUaGVuIGBucHggcHJvamVuICYmIG5weCBwcm9qZW4gYnVpbGQtZXh0ZW5zaW9uc2AuJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgICBkZXZEZXBzOiBbXG4gICAgICAgICdAd2JjZS9wcm9qZW4tZDknLFxuICAgICAgICAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbicsXG4gICAgICAgIC4uLihvcHRpb25zLmRldkRlcHMgPz8gW10pLFxuICAgICAgXSxcbiAgICAgIGRlcHM6IFtgQHdiY2UtZDkvZGlyZWN0dXM5QCR7ZDlWZXJzaW9ufWBdLFxuICAgIH0pO1xuXG4gICAgLy8gTm8gdHNjb25maWcgbWVhbnMgbm8gdHNjIC0tYnVpbGQgaW4gY29tcGlsZVxuICAgIHRoaXMuY29tcGlsZVRhc2sucmVzZXQoKTtcblxuICAgIHRoaXMucGx1bWJpbmdDb25maWcgPSBuZXcgSnNvbkZpbGUodGhpcywgJ2Q5LXBsdW1iaW5nLmpzb24nLCB7XG4gICAgICBvYmo6IHsgYXRsYXNWZXJzaW9uIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV4dGVuc2lvbkZvbGRlcigpO1xuICAgIHRoaXMuYWRkRG9ja2VyQ29tcG9zZSgpO1xuICAgIHRoaXMuYWRkRmlyc3RSdW5UYXNrKCk7XG4gICAgdGhpcy5hZGRCdWlsZEV4dGVuc2lvblRhc2soKTtcbiAgICB0aGlzLmFkZFJ1blRhc2soKTtcbiAgICB0aGlzLmFkZEQ5UGx1bWJpbmdUYXNrKCk7XG4gICAgdGhpcy5hZGREb2NrZXJmaWxlKCk7XG4gICAgdGhpcy5hZGRDcmVhdGVBZG1pblVzZXJUYXNrKCk7XG5cbiAgICBuZXcgQWlJbnN0cnVjdGlvbnModGhpcywge1xuICAgICAgYWdlbnRzOiBbQWlBZ2VudC5DTEFVREVdLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMuZ2l0aHViQ29uZmlnICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5naXRodWJDb25maWcgPSBuZXcgR2l0SHViQ29uZmlnKHRoaXMsIG9wdGlvbnMuZ2l0aHViQ29uZmlnKTtcbiAgICAgIHRoaXMuYWRkU2F2ZUJyYW5jaFdvcmtmbG93KCk7XG4gICAgfVxuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKCd1cGxvYWRzJyk7XG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoJyoqLy5EU19TdG9yZScpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKCcuZW52LmxvY2FsJyk7XG5cbiAgICAvLyBDcmVhdGUgYW4gZW1wdHkgLmVudi5sb2NhbCBpZiBpdCBkb2Vzbid0IGV4aXN0LCBzbyBEb2NrZXIgZG9lc24ndCBtb3VudCBhIGRpcmVjdG9yeVxuICAgIG5ldyBTYW1wbGVGaWxlKHRoaXMsICcuZW52LmxvY2FsJywgeyBjb250ZW50czogJyMgTG9jYWwgZW52aXJvbm1lbnQgb3ZlcnJpZGVzIGZvciBkOScgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEV4dGVuc2lvbkZvbGRlcigpIHtcbiAgICBjb25zdCBmb2xkZXJOYW1lID0gdGhpcy5vcHRpb25zLmV4dGVuc2lvbnNGb2xkZXJOYW1lID8/ICdwbHVnaW5zJztcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBuZXcgRXh0ZW5zaW9uRm9sZGVyKHsgcGFyZW50OiB0aGlzLCBuYW1lOiBmb2xkZXJOYW1lIH0pO1xuICAgIHRoaXMuZXh0ZW5zaW9uRm9sZGVyID0gZm9sZGVyTmFtZTtcbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKCdleHRlbnNpb25zLyonKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5pbmNsdWRlKCdleHRlbnNpb25zL3RlbXBsYXRlcy8nKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRFeHRlbnNpb24obmFtZTogc3RyaW5nLCBleHRlbnNpb25UeXBlczogRDlFeHRlbnNpb25UeXBlW10sIG9wdGlvbnM/OiBBZGRFeHRlbnNpb25PcHRpb25zICkge1xuICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbnMuYWRkKG5hbWUsIGV4dGVuc2lvblR5cGVzLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVQbHVtYmluZyhvcHRpb25zOiBQbHVtYmluZ09wdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zKSkge1xuICAgICAgdGhpcy5wbHVtYmluZ0NvbmZpZy5hZGRPdmVycmlkZShrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEZpcnN0UnVuVGFzaygpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRUYXNrKCdmaXJzdC1ydW4nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0luaXRpYWxpemUgYW5kIHN0YXJ0IGEgZnJlc2ggZDkgaW5zdGFuY2UnLFxuICAgIH0pO1xuICAgIGNvbnN0IGFkbWluRW1haWwgPSAnYWRtaW5AZXhhbXBsZS5jb20nO1xuICAgIGNvbnN0IHVzZXJOb3RFeGlzdHNDb25kaXRpb24gPSBgZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgY291bnQoKikgRlJPTSBkaXJlY3R1c191c2VycyBXSEVSRSBlbWFpbCA9ICcke2FkbWluRW1haWx9J1wiIHwgZ3JlcCAtcSAnXjAkJ2A7XG4gICAgY29uc3QgZW1wdHlEYXRhYmFzZUNvbmRpdGlvbiA9ICdkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBjb3VudCgqKSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgV0hFUkUgdGFibGVfbmFtZSBMSUtFIFxcJ2RpcmVjdHVzXyVcXCdcIiB8IGdyZXAgLXEgXFwnXjAkXFwnJztcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIC1kIC0td2FpdCBkYXRhYmFzZSBjYWNoZScpO1xuICAgIHRhc2suZXhlYygnbnB4IGQ5LXBsdW1iaW5nIGZpcnN0LWltcG9ydCAtLWhvc3QgbG9jYWxob3N0IC0tdXNlciBkOSAtLXBhc3N3b3JkIGQ5IC0tZGF0YWJhc2UgZDknLCB7XG4gICAgICBjb25kaXRpb246ICd0ZXN0IC1kIC4vc3FsJyxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHJ1biAtLXJtIGQ5IG5weCBkaXJlY3R1cyBib290c3RyYXAnLCB7XG4gICAgICBjb25kaXRpb246IGB0ZXN0ICEgLWQgLi9zcWwgJiYgJHtlbXB0eURhdGFiYXNlQ29uZGl0aW9ufWAsXG4gICAgfSk7XG4gICAgdGFzay5leGVjKGBBRE1JTl9ST0xFX0lEPSQoZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgaWQgRlJPTSBkaXJlY3R1c19yb2xlcyBXSEVSRSBhZG1pbl9hY2Nlc3MgPSB0cnVlIExJTUlUIDFcIikgJiYgZG9ja2VyIGNvbXBvc2UgcnVuIC0tcm0gZDkgbnB4IGRpcmVjdHVzIHVzZXJzIGNyZWF0ZSAtLWVtYWlsICR7YWRtaW5FbWFpbH0gLS1wYXNzd29yZCB0b3RvdG90byAtLXJvbGUgXCIkQURNSU5fUk9MRV9JRFwiYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHBhc3N3b3JkIHRvdG90b3RvYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIGNyZWF0aW9uYCwge1xuICAgICAgY29uZGl0aW9uOiBgISAke3VzZXJOb3RFeGlzdHNDb25kaXRpb259YCxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIGQ5Jyk7XG4gIH1cblxuICBwcml2YXRlIGFkZENyZWF0ZUFkbWluVXNlclRhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygnY3JlYXRlLWFuLWFkbWluJywge1xuICAgICAgZGVzY3JpcHRpb246ICdDcmVhdGUgYW4gYWRtaW4gdXNlcicsXG4gICAgfSk7XG4gICAgY29uc3QgYWRtaW5FbWFpbCA9ICdhZG1pbkBleGFtcGxlLmNvbSc7XG4gICAgY29uc3QgdXNlck5vdEV4aXN0c0NvbmRpdGlvbiA9IGBkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBjb3VudCgqKSBGUk9NIGRpcmVjdHVzX3VzZXJzIFdIRVJFIGVtYWlsID0gJyR7YWRtaW5FbWFpbH0nXCIgfCBncmVwIC1xICdeMCQnYDtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIC1kIC0td2FpdCBkYXRhYmFzZSBjYWNoZScpO1xuICAgIHRhc2suZXhlYyhgQURNSU5fUk9MRV9JRD0kKGRvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGlkIEZST00gZGlyZWN0dXNfcm9sZXMgV0hFUkUgYWRtaW5fYWNjZXNzID0gdHJ1ZSBMSU1JVCAxXCIpICYmIGRvY2tlciBjb21wb3NlIHJ1biAtLXJtIGQ5IG5weCBkaXJlY3R1cyB1c2VycyBjcmVhdGUgLS1lbWFpbCAke2FkbWluRW1haWx9IC0tcGFzc3dvcmQgdG90b3RvdG8gLS1yb2xlIFwiJEFETUlOX1JPTEVfSURcImAsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBwYXNzd29yZCB0b3RvdG90b2AsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyBjcmVhdGlvbmAsIHtcbiAgICAgIGNvbmRpdGlvbjogYCEgJHt1c2VyTm90RXhpc3RzQ29uZGl0aW9ufWAsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJ1blRhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygncnVuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdzdGFydCB0aGUgZDkgaW5zdGFuY2UnLFxuICAgIH0pO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgdXAgZDknKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRDlQbHVtYmluZ1Rhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygnZDktcGx1bWJpbmcnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1J1biB0aGUgZDktcGx1bWJpbmcgQ0xJIChzYXZlLCBhcHBseS1zY2hlbWEsIGZpcnN0LWltcG9ydC4uLikuIFVzZSAtLWhlbHAgdG8gbGlzdCBhbGwgc3ViY29tbWFuZHMuJyxcbiAgICB9KTtcbiAgICB0YXNrLnNheSgnVGlwOiB5b3UgY2FuIGFsc28gY2FsbCBpdCBkaXJlY3RseSB3aXRoIGBucHggZDktcGx1bWJpbmcgPGNvbW1hbmQ+YCcpO1xuICAgIHRhc2suZXhlYygnbnB4IGQ5LXBsdW1iaW5nIFwiJEBcIicsIHsgcmVjZWl2ZUFyZ3M6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEJ1aWxkRXh0ZW5zaW9uVGFzaygpIHtcbiAgICB0aGlzLmJ1aWxkRXh0ZW5zaW9uVGFzayA9IHRoaXMuYWRkVGFzaygnYnVpbGQtZXh0ZW5zaW9ucycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgdGhlIGQ5IGV4dGVuc2lvbnMnLFxuICAgIH0pO1xuICAgIHRoaXMuYnVpbGRFeHRlbnNpb25UYXNrLmV4ZWMoYGNkICR7dGhpcy5leHRlbnNpb25Gb2xkZXJ9ICYmIHBucG0gaW5zdGFsbGApO1xuICAgIC8vIHByb2plbiByZXBsYWNlcyBcIiRAXCIgd2l0aCB0aGUgcXVvdGVkIHRhc2sgYXJnczsgYHNldCAtLWAgdHVybnMgdGhlbSBiYWNrIGludG8gJDFcbiAgICB0aGlzLmJ1aWxkRXh0ZW5zaW9uVGFzay5leGVjKFxuICAgICAgYGNkICR7dGhpcy5leHRlbnNpb25Gb2xkZXJ9ICYmIHNldCAtLSBcIiRAXCIgJiYgaWYgWyAtbiBcIiQxXCIgXTsgdGhlbiBwbnBtIC0tcmVjdXJzaXZlIC0tZmlsdGVyIFwiJDEuLi5cIiBydW4gYnVpbGQ7IGVsc2UgcG5wbSBydW4gLS1yZWN1cnNpdmUgYnVpbGQ7IGZpYCxcbiAgICAgIHsgcmVjZWl2ZUFyZ3M6IHRydWUgfSxcbiAgICApO1xuICB9XG5cblxuICBwcml2YXRlIGFkZERvY2tlckNvbXBvc2UoKSB7XG4gICAgY29uc3QgZGMgPSBuZXcgRG9ja2VyQ29tcG9zZSh0aGlzKTtcblxuICAgIHRoaXMuZGF0YWJhc2VTZXJ2aWNlID0gZGMuYWRkU2VydmljZSgnZGF0YWJhc2UnLCB7XG4gICAgICBpbWFnZTogJ3Bvc3RnaXMvcG9zdGdpczoxMy1tYXN0ZXInLFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLm5hbWVkVm9sdW1lKCdwZ2RhdGEnLCAnL3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJyksXG4gICAgICBdLFxuICAgICAgcG9ydHM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5wb3J0TWFwcGluZyg1NDMyLCA1NDMyKSxcbiAgICAgIF0sXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQT1NUR1JFU19VU0VSOiAnZDknLFxuICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogJ2Q5JyxcbiAgICAgICAgUE9TVEdSRVNfREI6ICdkOScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYWNoZVNlcnZpY2UgPSBkYy5hZGRTZXJ2aWNlKCdjYWNoZScsIHtcbiAgICAgIGltYWdlOiAncmVkaXM6NicsXG4gICAgICB2b2x1bWVzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UubmFtZWRWb2x1bWUoJ3JlZGlzX3N0b3JhZ2UnLCAnL2RhdGEnKSxcbiAgICAgIF0sXG4gICAgICBwb3J0czogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLnBvcnRNYXBwaW5nKDYzNzksIDYzNzkpLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMuZDlTZXJ2aWNlID0gZGMuYWRkU2VydmljZSgnZDknLCB7XG4gICAgICBpbWFnZUJ1aWxkOiB7IGNvbnRleHQ6ICcuJyB9LFxuICAgICAgcG9ydHM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5wb3J0TWFwcGluZyg4MDU1LCA4MDU1KSxcbiAgICAgIF0sXG4gICAgICB2b2x1bWVzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UuYmluZFZvbHVtZSgnLi91cGxvYWRzJywgJy9hcHAvdXBsb2FkcycpLFxuICAgICAgICBEb2NrZXJDb21wb3NlLmJpbmRWb2x1bWUoJy4vZXh0ZW5zaW9ucycsICcvYXBwL2V4dGVuc2lvbnMnKSxcbiAgICAgIF0sXG4gICAgICAvLyBkZXBlbmRzT24gaXMgc2V0IHZpYSBhZGRPdmVycmlkZSBiZWxvdyB3aXRoIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBLRVk6ICdzb21lLXJhbmRvbS1rZXknLFxuICAgICAgICBTRUNSRVQ6ICdhbm90aGVyLXJhbmRvbS1rZXknLFxuICAgICAgICBDT05GSUdfUEFUSDogJy5lbnYubG9jYWwnLFxuICAgICAgICBEQl9DTElFTlQ6ICdwZycsXG4gICAgICAgIERCX0hPU1Q6ICdkYXRhYmFzZScsXG4gICAgICAgIERCX1BPUlQ6ICc1NDMyJyxcbiAgICAgICAgREJfREFUQUJBU0U6ICdkOScsXG4gICAgICAgIERCX1VTRVI6ICdkOScsXG4gICAgICAgIERCX1BBU1NXT1JEOiAnZDknLFxuICAgICAgICBDQUNIRV9FTkFCTEVEOiAnZmFsc2UnLFxuICAgICAgICBDQUNIRV9TVE9SRTogJ3JlZGlzJyxcbiAgICAgICAgQ0FDSEVfUkVESVNfSE9TVDogJ2NhY2hlJyxcbiAgICAgICAgTUVTU0VOR0VSX1NUT1JFOiAncmVkaXMnLFxuICAgICAgICBNRVNTRU5HRVJfUkVESVM6ICdyZWRpczovL2NhY2hlOjYzNzknLFxuICAgICAgICBDQUNIRV9TVEFUVVNfSEVBREVSOiAnY2FjaGUtaGl0JyxcbiAgICAgICAgQ09SU19FTkFCTEVEOiAndHJ1ZScsXG4gICAgICAgIENPUlNfT1JJR0lOOiAndHJ1ZScsXG4gICAgICAgIExPR19MRVZFTDogJ2luZm8nLFxuICAgICAgICBBRE1JTl9FTUFJTDogJ2FkbWluQGV4YW1wbGUuY29tJyxcbiAgICAgICAgQURNSU5fUEFTU1dPUkQ6ICd0b3RvdG90bycsXG4gICAgICAgIEVYVEVOU0lPTlNfQVVUT19SRUxPQUQ6ICd0cnVlJyxcbiAgICAgICAgVkFMSURBVEVfRU5USVRJRVNfVE9LRU5TX0FQSV9LRVk6ICd0b3RvJyxcbiAgICAgICAgQVdTX0tNU19LRVlfSUQ6ICd0dXR1JyxcbiAgICAgIH0sXG4gICAgICBjb21tYW5kOiBbJ3NoJywgJy1jJywgJ25weCBkaXJlY3R1cyBzdGFydCddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kOVNlcnZpY2UuYWRkVm9sdW1lKERvY2tlckNvbXBvc2UuYmluZFZvbHVtZSgnLi8uZW52LmxvY2FsJywgJy9hcHAvLmVudi5sb2NhbCcpKTtcblxuICAgIC8vIEFkZCBoZWFsdGhjaGVjayBmb3IgZGF0YWJhc2UgKG5vdCBuYXRpdmVseSBzdXBwb3J0ZWQgYnkgcHJvamVuIERvY2tlckNvbXBvc2UpXG4gICAgZGMuZmlsZS5hZGRPdmVycmlkZSgnc2VydmljZXMuZGF0YWJhc2UuaGVhbHRoY2hlY2snLCB7XG4gICAgICB0ZXN0OiBbJ0NNRCcsICdwZ19pc3JlYWR5JywgJy0taG9zdD1sb2NhbGhvc3QnLCAnLS11c2VybmFtZT1kOSddLFxuICAgICAgaW50ZXJ2YWw6ICcxMHMnLFxuICAgICAgdGltZW91dDogJzVzJyxcbiAgICAgIHJldHJpZXM6IDUsXG4gICAgICBzdGFydF9pbnRlcnZhbDogJzVzJyxcbiAgICAgIHN0YXJ0X3BlcmlvZDogJzMwcycsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgaGVhbHRoY2hlY2sgZm9yIGNhY2hlXG4gICAgZGMuZmlsZS5hZGRPdmVycmlkZSgnc2VydmljZXMuY2FjaGUuaGVhbHRoY2hlY2snLCB7XG4gICAgICB0ZXN0OiBbJ0NNRC1TSEVMTCcsICdbICQocmVkaXMtY2xpIHBpbmcpID0gXFwnUE9OR1xcJyBdJ10sXG4gICAgICBpbnRlcnZhbDogJzEwcycsXG4gICAgICB0aW1lb3V0OiAnNXMnLFxuICAgICAgcmV0cmllczogNSxcbiAgICAgIHN0YXJ0X2ludGVydmFsOiAnNXMnLFxuICAgICAgc3RhcnRfcGVyaW9kOiAnMzBzJyxcbiAgICB9KTtcblxuICAgIC8vIE92ZXJyaWRlIGRlcGVuZHNfb24gdG8gdXNlIGNvbmRpdGlvbiBzeW50YXhcbiAgICBkYy5maWxlLmFkZE92ZXJyaWRlKCdzZXJ2aWNlcy5kOS5kZXBlbmRzX29uJywge1xuICAgICAgY2FjaGU6IHsgY29uZGl0aW9uOiAnc2VydmljZV9oZWFsdGh5JyB9LFxuICAgICAgZGF0YWJhc2U6IHsgY29uZGl0aW9uOiAnc2VydmljZV9oZWFsdGh5JyB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5kb2NrZXJDb21wb3NlRmlsZSA9IGRjO1xuXG4gICAgcmV0dXJuIGRjO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTYXZlQnJhbmNoV29ya2Zsb3coKSB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLmdpdGh1YkNvbmZpZyEuYWRkV29ya2Zsb3coJ3NhdmUtYnJhbmNoJyk7XG4gICAgd29ya2Zsb3cub24oeyBwdXNoOiB7IGJyYW5jaGVzOiBbJyotc2F2ZSddIH0gfSk7XG4gICAgd29ya2Zsb3cuYWRkSm9iKCdjcmVhdGUtcHInLCB7XG4gICAgICBuYW1lOiAnQ3JlYXRlIFB1bGwgUmVxdWVzdCcsXG4gICAgICBydW5zT246IFsndWJ1bnR1LWxhdGVzdCddLFxuICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgcHVsbFJlcXVlc3RzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHsgbmFtZTogJ0NoZWNrb3V0JywgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ3JlYXRlIFB1bGwgUmVxdWVzdCcsXG4gICAgICAgICAgcnVuOiAnZ2ggcHIgY3JlYXRlIC0tdGl0bGUgXCJTYXZlOiAke0dJVEhVQl9SRUZfTkFNRSUtc2F2ZX1cIiAtLWJvZHkgXCJBdXRvLWdlbmVyYXRlZCBQUiBmcm9tIGJyYW5jaCBcXFxcYCR7R0lUSFVCX1JFRl9OQU1FJS1zYXZlfVxcXFxgXCIgLS1iYXNlIFwiJHtHSVRIVUJfUkVGX05BTUUlLXNhdmV9XCIgfHwgZWNobyBcIlBSIGFscmVhZHkgZXhpc3RzXCInLFxuICAgICAgICAgIGVudjogeyBHSF9UT0tFTjogJyR7eyBzZWNyZXRzLkdJVEhVQl9UT0tFTiB9fScgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZERvY2tlcmZpbGUoKSB7XG4gICAgdGhpcy5kb2NrZXJmaWxlID0gbmV3IERvY2tlcmZpbGUodGhpcylcbiAgICAgIC5mcm9tKCdub2RlJywgJzIyLWJvb2t3b3JtLXNsaW0nKVxuICAgICAgLnN0ZXAoJ3VwZGF0ZS1ucG0nLCAnVXBkYXRlIG5wbSB0byBmaXggZGVwZW5kZW5jaWVzJylcbiAgICAgIC5ydW4oJ25wbSBpbnN0YWxsIC1nIG5wbUAxMS44LjAnKVxuICAgICAgLnN0ZXAoJ2luc3RhbGwtcG5wbScsICdpbnN0YWxsIHBucG0nKVxuICAgICAgLnJ1bignbnBtIGluc3RhbGwgLWcgcG5wbUAxMC4zMy4wJylcbiAgICAgIC5zdGVwKCdjb3B5LXBhY2thZ2UnLCAnQ29weSBwYWNrYWdlLmpzb24gYW5kIHBhY2thZ2UtbG9jay5qc29uIGZpcnN0IHRvIGxldmVyYWdlIERvY2tlciBsYXllciBjYWNoaW5nJylcbiAgICAgIC5jb3B5KCdwYWNrYWdlKi5qc29uJywgJy9hcHAvJylcbiAgICAgIC5zdGVwKCd3b3JrZGlyJywgJ1NldCB3b3JraW5nIGRpcmVjdG9yeScpXG4gICAgICAud29ya2RpcignL2FwcCcpXG4gICAgICAuc3RlcCgnaW5zdGFsbC1kZXBzJywgJ0luc3RhbGwgZGVwZW5kZW5jaWVzIC0gd2l0aG91dCBkZXYgZGVwZW5kZW5jaWVzJylcbiAgICAgIC5ydW4oJ05PREVfRU5WPXByb2R1Y3Rpb24gbnBtIGluc3RhbGwnKVxuICAgICAgLnN0ZXAoJ2NsZWFudXAnLCAnQ2xlYW5pbmcgYmVuY2htYXJrcyBmb2xkZXIgaW4gdGVkaW91cyBtb2R1bGUgZm9yIHNlY3VyaXR5JylcbiAgICAgIC5ydW4oJ3JtIC1yZiBub2RlX21vZHVsZXMvdGVkaW91cy9iZW5jaG1hcmtzJylcbiAgICAgIC5zdGVwKCdjb3B5LXNvdXJjZScsICdDb3B5IHRoZSByZXN0IG9mIHRoZSBhcHBsaWNhdGlvbiBjb2RlJylcbiAgICAgIC5jb3B5KCcuJywgJy4nKVxuICAgICAgLnN0ZXAoJ2J1aWxkLWV4dGVuc2lvbicsICdidWlsZCBleHRlbnNpb25zJylcbiAgICAgIC5ydW4oJ25weCBwcm9qZW4gYnVpbGQtZXh0ZW5zaW9ucycpXG4gICAgICAuc3RlcCgnc3RhcnQnLCAnU3RhcnQgZDkgc2VydmVyJylcbiAgICAgIC5jbWRFeGVjKFsnbnB4JywgJ2RpcmVjdHVzJywgJ3N0YXJ0J10pO1xuICAgIHJldHVybiB0aGlzLmRvY2tlcmZpbGU7XG4gIH1cblxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgRDlQcm9qZWN0T3B0aW9uc30gaW5zdGVhZC4gVGhlIHBhY2thZ2Ugd2FzIHJlbmFtZWQgdG8gYEB3YmNlL3Byb2plbi1kOWAgdG8gcmVmbGVjdCB0aGF0IGl0IHRhcmdldHMgdGhlIGQ5IGZvcmssIG5vdCB1cHN0cmVhbSBEaXJlY3R1cy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3R1c1Byb2plY3RPcHRpb25zIGV4dGVuZHMgRDlQcm9qZWN0T3B0aW9ucyB7fVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgRDlQcm9qZWN0fSBpbnN0ZWFkLiBUaGUgcGFja2FnZSB3YXMgcmVuYW1lZCB0byBgQHdiY2UvcHJvamVuLWQ5YCB0byByZWZsZWN0IHRoYXQgaXQgdGFyZ2V0cyB0aGUgZDkgZm9yaywgbm90IHVwc3RyZWFtIERpcmVjdHVzLlxuICovXG5leHBvcnQgY2xhc3MgRGlyZWN0dXNQcm9qZWN0IGV4dGVuZHMgRDlQcm9qZWN0IHt9XG4iXX0=
|