cdklabs-projen-project-types 0.3.18 → 0.3.19

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 CHANGED
@@ -7906,7 +7906,7 @@
7906
7906
  },
7907
7907
  "locationInModule": {
7908
7908
  "filename": "src/yarn/monorepo.ts",
7909
- "line": 299
7909
+ "line": 310
7910
7910
  },
7911
7911
  "parameters": [
7912
7912
  {
@@ -7920,7 +7920,7 @@
7920
7920
  "kind": "class",
7921
7921
  "locationInModule": {
7922
7922
  "filename": "src/yarn/monorepo.ts",
7923
- "line": 298
7923
+ "line": 309
7924
7924
  },
7925
7925
  "name": "CdkLabsMonorepo",
7926
7926
  "namespace": "yarn",
@@ -7940,7 +7940,7 @@
7940
7940
  "kind": "interface",
7941
7941
  "locationInModule": {
7942
7942
  "filename": "src/yarn/monorepo.ts",
7943
- "line": 292
7943
+ "line": 303
7944
7944
  },
7945
7945
  "name": "CdkLabsMonorepoOptions",
7946
7946
  "namespace": "yarn",
@@ -7955,7 +7955,7 @@
7955
7955
  "kind": "interface",
7956
7956
  "locationInModule": {
7957
7957
  "filename": "src/yarn/monorepo.ts",
7958
- "line": 281
7958
+ "line": 292
7959
7959
  },
7960
7960
  "methods": [
7961
7961
  {
@@ -7965,7 +7965,7 @@
7965
7965
  },
7966
7966
  "locationInModule": {
7967
7967
  "filename": "src/yarn/monorepo.ts",
7968
- "line": 282
7968
+ "line": 293
7969
7969
  },
7970
7970
  "name": "resolveDepsAndWritePackageJson",
7971
7971
  "returns": {
@@ -8124,7 +8124,7 @@
8124
8124
  },
8125
8125
  "locationInModule": {
8126
8126
  "filename": "src/yarn/monorepo.ts",
8127
- "line": 266
8127
+ "line": 277
8128
8128
  },
8129
8129
  "name": "postSynthesize",
8130
8130
  "overrides": "projen.Project"
@@ -8135,7 +8135,7 @@
8135
8135
  },
8136
8136
  "locationInModule": {
8137
8137
  "filename": "src/yarn/monorepo.ts",
8138
- "line": 200
8138
+ "line": 202
8139
8139
  },
8140
8140
  "name": "register",
8141
8141
  "parameters": [
@@ -8155,7 +8155,7 @@
8155
8155
  },
8156
8156
  "locationInModule": {
8157
8157
  "filename": "src/yarn/monorepo.ts",
8158
- "line": 215
8158
+ "line": 217
8159
8159
  },
8160
8160
  "name": "requestInstallDependencies",
8161
8161
  "parameters": [
@@ -8175,7 +8175,7 @@
8175
8175
  },
8176
8176
  "locationInModule": {
8177
8177
  "filename": "src/yarn/monorepo.ts",
8178
- "line": 204
8178
+ "line": 206
8179
8179
  },
8180
8180
  "name": "synth",
8181
8181
  "overrides": "projen.Project"
@@ -11230,7 +11230,7 @@
11230
11230
  },
11231
11231
  "locationInModule": {
11232
11232
  "filename": "src/yarn/monorepo-release.ts",
11233
- "line": 41
11233
+ "line": 42
11234
11234
  },
11235
11235
  "parameters": [
11236
11236
  {
@@ -11286,7 +11286,7 @@
11286
11286
  },
11287
11287
  "locationInModule": {
11288
11288
  "filename": "src/yarn/monorepo-release.ts",
11289
- "line": 62
11289
+ "line": 64
11290
11290
  },
11291
11291
  "name": "addWorkspace",
11292
11292
  "parameters": [
@@ -11311,7 +11311,7 @@
11311
11311
  },
11312
11312
  "locationInModule": {
11313
11313
  "filename": "src/yarn/monorepo-release.ts",
11314
- "line": 96
11314
+ "line": 98
11315
11315
  },
11316
11316
  "name": "preSynthesize",
11317
11317
  "overrides": "projen.Component"
@@ -11322,7 +11322,7 @@
11322
11322
  },
11323
11323
  "locationInModule": {
11324
11324
  "filename": "src/yarn/monorepo-release.ts",
11325
- "line": 54
11325
+ "line": 56
11326
11326
  },
11327
11327
  "name": "workspaceRelease",
11328
11328
  "parameters": [
@@ -11780,6 +11780,25 @@
11780
11780
  "type": {
11781
11781
  "fqn": "projen.GroupRunnerOptions"
11782
11782
  }
11783
+ },
11784
+ {
11785
+ "abstract": true,
11786
+ "docs": {
11787
+ "default": "false",
11788
+ "remarks": "When enabled, release tasks use Yarn Berry compatible commands.",
11789
+ "stability": "stable",
11790
+ "summary": "Whether the monorepo uses Yarn Berry."
11791
+ },
11792
+ "immutable": true,
11793
+ "locationInModule": {
11794
+ "filename": "src/yarn/monorepo-release-options.ts",
11795
+ "line": 154
11796
+ },
11797
+ "name": "yarnBerry",
11798
+ "optional": true,
11799
+ "type": {
11800
+ "primitive": "boolean"
11801
+ }
11783
11802
  }
11784
11803
  ],
11785
11804
  "symbolId": "src/yarn/monorepo-release-options:MonorepoReleaseOptions"
@@ -11795,7 +11814,7 @@
11795
11814
  "kind": "interface",
11796
11815
  "locationInModule": {
11797
11816
  "filename": "src/yarn/typescript-workspace.ts",
11798
- "line": 336
11817
+ "line": 337
11799
11818
  },
11800
11819
  "name": "ReferenceOptions",
11801
11820
  "namespace": "yarn",
@@ -11811,7 +11830,7 @@
11811
11830
  "immutable": true,
11812
11831
  "locationInModule": {
11813
11832
  "filename": "src/yarn/typescript-workspace.ts",
11814
- "line": 347
11833
+ "line": 348
11815
11834
  },
11816
11835
  "name": "versionType",
11817
11836
  "optional": true,
@@ -11864,7 +11883,7 @@
11864
11883
  },
11865
11884
  "locationInModule": {
11866
11885
  "filename": "src/yarn/typescript-workspace.ts",
11867
- "line": 296
11886
+ "line": 297
11868
11887
  },
11869
11888
  "name": "addEslintRcFix",
11870
11889
  "protected": true
@@ -11876,7 +11895,7 @@
11876
11895
  },
11877
11896
  "locationInModule": {
11878
11897
  "filename": "src/yarn/typescript-workspace.ts",
11879
- "line": 282
11898
+ "line": 283
11880
11899
  },
11881
11900
  "name": "addTsconfigDevFix",
11882
11901
  "protected": true
@@ -11888,7 +11907,7 @@
11888
11907
  },
11889
11908
  "locationInModule": {
11890
11909
  "filename": "src/yarn/typescript-workspace.ts",
11891
- "line": 323
11910
+ "line": 324
11892
11911
  },
11893
11912
  "name": "customizeReference",
11894
11913
  "parameters": [
@@ -11914,7 +11933,7 @@
11914
11933
  },
11915
11934
  "locationInModule": {
11916
11935
  "filename": "src/yarn/typescript-workspace.ts",
11917
- "line": 314
11936
+ "line": 315
11918
11937
  },
11919
11938
  "name": "workspaceDependencies",
11920
11939
  "parameters": [
@@ -15296,6 +15315,6 @@
15296
15315
  "symbolId": "src/yarn/typescript-workspace-release:WorkspaceReleaseOptions"
15297
15316
  }
15298
15317
  },
15299
- "version": "0.3.18",
15300
- "fingerprint": "/1WzbNi8SFjK+pyeL0dIZK/M2F19UYJSfvH3TVzt0hQ="
15318
+ "version": "0.3.19",
15319
+ "fingerprint": "E+TWluC2hLUVZh81+q7+cVDh8KawwBd4ubb41ZTm4VM="
15301
15320
  }
package/API.md CHANGED
@@ -36652,6 +36652,7 @@ const monorepoReleaseOptions: yarn.MonorepoReleaseOptions = { ... }
36652
36652
  | <code><a href="#cdklabs-projen-project-types.yarn.MonorepoReleaseOptions.property.workflowContainerImage">workflowContainerImage</a></code> | <code>string</code> | Container image to use for GitHub workflows. |
36653
36653
  | <code><a href="#cdklabs-projen-project-types.yarn.MonorepoReleaseOptions.property.workflowRunsOn">workflowRunsOn</a></code> | <code>string[]</code> | Github Runner selection labels. |
36654
36654
  | <code><a href="#cdklabs-projen-project-types.yarn.MonorepoReleaseOptions.property.workflowRunsOnGroup">workflowRunsOnGroup</a></code> | <code>projen.GroupRunnerOptions</code> | Github Runner Group selection options. |
36655
+ | <code><a href="#cdklabs-projen-project-types.yarn.MonorepoReleaseOptions.property.yarnBerry">yarnBerry</a></code> | <code>boolean</code> | Whether the monorepo uses Yarn Berry. |
36655
36656
 
36656
36657
  ---
36657
36658
 
@@ -36979,6 +36980,21 @@ Github Runner Group selection options.
36979
36980
 
36980
36981
  ---
36981
36982
 
36983
+ ##### `yarnBerry`<sup>Optional</sup> <a name="yarnBerry" id="cdklabs-projen-project-types.yarn.MonorepoReleaseOptions.property.yarnBerry"></a>
36984
+
36985
+ ```typescript
36986
+ public readonly yarnBerry: boolean;
36987
+ ```
36988
+
36989
+ - *Type:* boolean
36990
+ - *Default:* false
36991
+
36992
+ Whether the monorepo uses Yarn Berry.
36993
+
36994
+ When enabled, release tasks use Yarn Berry compatible commands.
36995
+
36996
+ ---
36997
+
36982
36998
  ### ReferenceOptions <a name="ReferenceOptions" id="cdklabs-projen-project-types.yarn.ReferenceOptions"></a>
36983
36999
 
36984
37000
  Options for the `workspace.customizeReference()` method.
package/lib/cdk.js CHANGED
@@ -55,7 +55,7 @@ class CdkConstructLibrary extends projen_1.awscdk.AwsCdkConstructLibrary {
55
55
  }
56
56
  exports.CdkConstructLibrary = CdkConstructLibrary;
57
57
  _a = JSII_RTTI_SYMBOL_1;
58
- CdkConstructLibrary[_a] = { fqn: "cdklabs-projen-project-types.CdkConstructLibrary", version: "0.3.18" };
58
+ CdkConstructLibrary[_a] = { fqn: "cdklabs-projen-project-types.CdkConstructLibrary", version: "0.3.19" };
59
59
  /**
60
60
  * Create a Cdk TypeScript Project
61
61
  *
@@ -71,5 +71,5 @@ class CdkTypeScriptProject extends projen_1.typescript.TypeScriptProject {
71
71
  }
72
72
  exports.CdkTypeScriptProject = CdkTypeScriptProject;
73
73
  _b = JSII_RTTI_SYMBOL_1;
74
- CdkTypeScriptProject[_b] = { fqn: "cdklabs-projen-project-types.CdkTypeScriptProject", version: "0.3.18" };
74
+ CdkTypeScriptProject[_b] = { fqn: "cdklabs-projen-project-types.CdkTypeScriptProject", version: "0.3.19" };
75
75
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nkay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFpRDtBQUdqRCxxREFBd0Y7QUFDeEYsaURBQTZDO0FBQzdDLHVDQUFvQztBQUdwQzs7OztHQUlHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxlQUFNLENBQUMsc0JBQXNCO0lBQzVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxPQUFtQztRQUN0RSxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLCtEQUErRCxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsOERBQThELENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFJRCxZQUFZLE9BQW1DO1FBQzdDLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxZQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9DLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xFLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvRkFBb0YsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0gsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFBLDBDQUF5QixFQUFDO1lBQ3JDLEdBQUcsT0FBTztZQUNWLGtEQUFrRDtZQUNsRCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsYUFBYTtTQUN4RCxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUM7WUFDSixTQUFTLEVBQUUsWUFBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZO1lBQ3JDLHNEQUFzRDtZQUN0RCxhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDOUIsR0FBRyxJQUFJO1NBQ1IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRTVCLElBQUksaUJBQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLElBQUksMEJBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QixJQUFBLDBDQUF5QixFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDOztBQTlDSCxrREErQ0M7OztBQUlEOzs7O0dBSUc7QUFDSCxNQUFhLG9CQUFxQixTQUFRLG1CQUFVLENBQUMsaUJBQWlCO0lBR3BFLFlBQVksT0FBb0M7UUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBQSwwQ0FBeUIsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFNUIsSUFBQSwwQ0FBeUIsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7QUFUSCxvREFVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c2NkaywgY2RrLCB0eXBlc2NyaXB0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IENka0NvbW1vbk9wdGlvbnMgfSBmcm9tICcuL2Nkay1jb21tb24tb3B0aW9ucyc7XG5pbXBvcnQgeyBDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB9IGZyb20gJy4vY2RrLWNvbnN0cnVjdC1saWJyYXJ5LW9wdGlvbnMnO1xuaW1wb3J0IHsgY29uZmlndXJlQ29tbW9uQ29tcG9uZW50cywgd2l0aENvbW1vbk9wdGlvbnNEZWZhdWx0cyB9IGZyb20gJy4vY29tbW9uLW9wdGlvbnMnO1xuaW1wb3J0IHsgSW50ZWdSdW5uZXIgfSBmcm9tICcuL2ludGVnLXJ1bm5lcic7XG5pbXBvcnQgeyBSb3NldHRhIH0gZnJvbSAnLi9yb3NldHRhJztcblxuXG4vKipcbiAqIENyZWF0ZSBhIENkayBDb25zdHJ1Y3QgTGlicmFyeSBQcm9qZWN0XG4gKlxuICogQHBqaWQgY2RrLWNvbnN0cnVjdC1saWJcbiAqL1xuZXhwb3J0IGNsYXNzIENka0NvbnN0cnVjdExpYnJhcnkgZXh0ZW5kcyBhd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeSB7XG4gIHByaXZhdGUgc3RhdGljIHN0YWJpbGl0eVJlcXVpcmVtZW50cyhvcHRpb25zOiBDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKCFvcHRpb25zLnB1Ymxpc2hUb1B5cGkpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdQdWJsaXNoaW5nIEVycm9yOiBwcm9qZWN0IG5vdCBjb25maWd1cmVkIHRvIHB1Ymxpc2ggdG8gUHl0aG9uJyk7XG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5wdWJsaXNoVG9NYXZlbikge1xuICAgICAgZXJyb3JzLnB1c2goJ1B1Ymxpc2hpbmcgRXJyb3I6IHByb2plY3Qgbm90IGNvbmZpZ3VyZWQgdG8gcHVibGlzaCB0byBNYXZlbicpO1xuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMucHVibGlzaFRvTnVnZXQpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdQdWJsaXNoaW5nIEVycm9yOiBwcm9qZWN0IG5vdCBjb25maWd1cmVkIHRvIHB1Ymxpc2ggdG8gTnVnZXQnKTtcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLnB1Ymxpc2hUb0dvKSB7XG4gICAgICBlcnJvcnMucHVzaCgnUHVibGlzaGluZyBFcnJvcjogcHJvamVjdCBub3QgY29uZmlndXJlZCB0byBwdWJsaXNoIHRvIEdvJyk7XG4gICAgfVxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcHJpdmF0ZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLnN0YWJpbGl0eSA9PT0gY2RrLlN0YWJpbGl0eS5TVEFCTEUpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IENka0NvbnN0cnVjdExpYnJhcnkuc3RhYmlsaXR5UmVxdWlyZW1lbnRzKG9wdGlvbnMpO1xuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHByb2plY3QgZG9lcyBub3QgcGFzcyBzdGFiaWxpdHkgcmVxdWlyZW1lbnRzIGR1ZSB0byB0aGUgZm9sbG93aW5nIGVycm9yczpcXG4gICR7ZXJyb3JzLmpvaW4oJ1xcbiAgJyl9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0cyA9IHdpdGhDb21tb25PcHRpb25zRGVmYXVsdHMoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIC8vIGFsc28gYWNjZXB0IHRoZSBkZXByZWNhdGVkIHJlcG9zaXRvcnlVcmwgb3B0aW9uXG4gICAgICByZXBvc2l0b3J5OiBvcHRpb25zLnJlcG9zaXRvcnkgPz8gb3B0aW9ucy5yZXBvc2l0b3J5VXJsLFxuICAgIH0pO1xuXG4gICAgc3VwZXIoe1xuICAgICAgc3RhYmlsaXR5OiBjZGsuU3RhYmlsaXR5LkVYUEVSSU1FTlRBTCxcbiAgICAgIC8vIHVwc3RyZWFtIEpzaWlQcm9qZWN0IHVzZXMgYSBkaWZmZXJlbnQgbmFtZSBmb3IgdGhpc1xuICAgICAgcmVwb3NpdG9yeVVybDogb3B0cy5yZXBvc2l0b3J5LFxuICAgICAgLi4ub3B0cyxcbiAgICB9KTtcbiAgICB0aGlzLnByaXZhdGUgPSBvcHRzLnByaXZhdGU7XG5cbiAgICBuZXcgUm9zZXR0YSh0aGlzLCBvcHRpb25zLnJvc2V0dGFPcHRpb25zKTtcbiAgICBuZXcgSW50ZWdSdW5uZXIodGhpcyk7XG5cbiAgICBjb25maWd1cmVDb21tb25Db21wb25lbnRzKHRoaXMsIG9wdHMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIGV4dGVuZHMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsIENka0NvbW1vbk9wdGlvbnMgeyB9XG5cbi8qKlxuICogQ3JlYXRlIGEgQ2RrIFR5cGVTY3JpcHQgUHJvamVjdFxuICpcbiAqIEBwamlkIGNkay10cy1wcm9qXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtUeXBlU2NyaXB0UHJvamVjdCBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpdmF0ZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDZGtUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHRzID0gd2l0aENvbW1vbk9wdGlvbnNEZWZhdWx0cyhvcHRpb25zKTtcbiAgICBzdXBlcihvcHRzKTtcbiAgICB0aGlzLnByaXZhdGUgPSBvcHRzLnByaXZhdGU7XG5cbiAgICBjb25maWd1cmVDb21tb25Db21wb25lbnRzKHRoaXMsIG9wdHMpO1xuICB9XG59XG4iXX0=
package/lib/cdklabs.js CHANGED
@@ -129,7 +129,7 @@ class CdklabsConstructLibrary extends cdk_1.CdkConstructLibrary {
129
129
  }
130
130
  exports.CdklabsConstructLibrary = CdklabsConstructLibrary;
131
131
  _a = JSII_RTTI_SYMBOL_1;
132
- CdklabsConstructLibrary[_a] = { fqn: "cdklabs-projen-project-types.CdklabsConstructLibrary", version: "0.3.18" };
132
+ CdklabsConstructLibrary[_a] = { fqn: "cdklabs-projen-project-types.CdklabsConstructLibrary", version: "0.3.19" };
133
133
  /**
134
134
  * Create a Cdklabs TypeScript Project
135
135
  *
@@ -150,7 +150,7 @@ class CdklabsTypeScriptProject extends cdk_1.CdkTypeScriptProject {
150
150
  }
151
151
  exports.CdklabsTypeScriptProject = CdklabsTypeScriptProject;
152
152
  _b = JSII_RTTI_SYMBOL_1;
153
- CdklabsTypeScriptProject[_b] = { fqn: "cdklabs-projen-project-types.CdklabsTypeScriptProject", version: "0.3.18" };
153
+ CdklabsTypeScriptProject[_b] = { fqn: "cdklabs-projen-project-types.CdklabsTypeScriptProject", version: "0.3.19" };
154
154
  /**
155
155
  * Create a Cdklabs Jsii Project
156
156
  *
@@ -173,5 +173,5 @@ class CdklabsJsiiProject extends jsii_1.CdkJsiiProject {
173
173
  }
174
174
  exports.CdklabsJsiiProject = CdklabsJsiiProject;
175
175
  _c = JSII_RTTI_SYMBOL_1;
176
- CdklabsJsiiProject[_c] = { fqn: "cdklabs-projen-project-types.CdklabsJsiiProject", version: "0.3.18" };
176
+ CdklabsJsiiProject[_c] = { fqn: "cdklabs-projen-project-types.CdklabsJsiiProject", version: "0.3.19" };
177
177
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrbGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZGtsYWJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQWdDO0FBQ2hDLHNEQUF1RDtBQUN2RCwwQ0FBNEM7QUFFNUMsSUFBWSxZQUtYO0FBTEQsV0FBWSxZQUFZO0lBQ3RCLG1EQUFNLENBQUE7SUFDTiwrQ0FBSSxDQUFBO0lBQ0osbURBQU0sQ0FBQTtJQUNOLDJDQUFFLENBQUE7QUFDSixDQUFDLEVBTFcsWUFBWSw0QkFBWixZQUFZLFFBS3ZCO0FBQUEsQ0FBQztBQUVGLCtCQUllO0FBR2YsaUNBQXdDO0FBQ3hDLHdDQUF3QztBQUN4QyxtQ0FBMkM7QUFFM0Msd0VBQXdFO0FBQ3hFLE1BQU0sa0JBQWtCLEdBQUc7SUFDekIsTUFBTSxFQUFFLHFCQUFxQjtJQUM3QixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLGFBQWEsRUFBRSx3QkFBd0I7SUFDdkMsV0FBVyxFQUFFLHdCQUF3QjtJQUNyQyxrQkFBa0IsRUFBRSxJQUFJO0NBQ3pCLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUE0QztJQUNuRSxtQkFBbUIsRUFBRSxJQUFJO0lBQ3pCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLG1CQUFtQixFQUFFLE9BQU87SUFDNUIsV0FBVyxFQUFFO1FBQ1gsY0FBYyxFQUFFLDJCQUFjLENBQUMsTUFBTTtLQUN0QztJQUNELG9CQUFvQixFQUFFLE1BQU07SUFDNUIsbUZBQW1GO0lBQ25GLHdGQUF3RjtJQUN4RixvREFBb0Q7SUFDcEQsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsZ0JBQWdCLEVBQUU7SUFDdkQsV0FBVyxFQUFFLE1BQU07Q0FDcEIsQ0FBQztBQUVGLFNBQVMsK0JBQStCLENBQUMsY0FBc0IsRUFBRSxLQUFzQjtJQUNyRixNQUFNLGVBQWUsR0FBRyxJQUFBLGVBQVEsRUFBQyxjQUFjLENBQUMsQ0FBQztJQUVqRCxPQUFPLHdCQUF3QixDQUFDLFNBQVMsRUFB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QWtDO1FBQzVDLE1BQU0sNkJBQTZCLEdBQXdCLENBQUMsT0FBTyxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdEcsK0JBQStCLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xGLDJEQUEyRDtRQUMzRCxNQUFNLGFBQWEsR0FBRyxJQUFBLGdCQUFTLEVBQUM7WUFDOUIsRUFBRTtZQUNGLG1CQUFtQjtZQUNuQiw2QkFBNkI7WUFDN0IsT0FBTztZQUNQLGtCQUFrQjtTQUNuQixDQUE4QixDQUFDO1FBRWhDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2QixDQUFDOztBQWRILGdEQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IFVwZGF0ZVNuYXBzaG90IH0gZnJvbSAncHJvamVuL2xpYi9qYXZhc2NyaXB0JztcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gJ3Byb2plbi9saWIvdXRpbCc7XG5cbmV4cG9ydCBlbnVtIEpzaWlMYW5ndWFnZSB7XG4gIFBZVEhPTixcbiAgSkFWQSxcbiAgRE9UTkVULFxuICBHTyxcbn07XG5cbmltcG9ydCB7XG4gIENka0NvbnN0cnVjdExpYnJhcnksXG4gIENka1R5cGVTY3JpcHRQcm9qZWN0LFxuICBDZGtUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsXG59IGZyb20gJy4vY2RrJztcbmltcG9ydCB7IENka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zIH0gZnJvbSAnLi9jZGstY29uc3RydWN0LWxpYnJhcnktb3B0aW9ucyc7XG5pbXBvcnQgeyBDZGtKc2lpUHJvamVjdE9wdGlvbnMgfSBmcm9tICcuL2Nkay1qc2lpLW9wdGlvbnMnO1xuaW1wb3J0IHsgQ2RrSnNpaVByb2plY3QgfSBmcm9tICcuL2pzaWknO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9vcmRlclxuaW1wb3J0IHsgUmVsZWFzYWJsZUNvbW1pdHMgfSBmcm9tICdwcm9qZW4nO1xuXG4vLyBvdmVycmlkZSB0aGVzZSBwcm9wZXJ0aWVzIG5vIG1hdHRlciB3aGF0IHZhbHVlcyBhcmUgZ2l2ZW4gY2xpZW50LXNpZGVcbmNvbnN0IGNka2xhYnNGb3JjZWRQcm9wcyA9IHtcbiAgYXV0aG9yOiAnQW1hem9uIFdlYiBTZXJ2aWNlcycsXG4gIGF1dGhvck5hbWU6ICdBbWF6b24gV2ViIFNlcnZpY2VzJyxcbiAgYXV0aG9yQWRkcmVzczogJ2F3cy1jZGstZGV2QGFtYXpvbi5jb20nLFxuICBhdXRob3JFbWFpbDogJ2F3cy1jZGstZGV2QGFtYXpvbi5jb20nLFxuICBhdXRob3JPcmdhbml6YXRpb246IHRydWUsXG59O1xuXG5jb25zdCBjZGtsYWJzRGVmYXVsdFByb3BzOiBQYXJ0aWFsPENka2xhYnNDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucz4gPSB7XG4gIGF1dG9BcHByb3ZlVXBncmFkZXM6IHRydWUsXG4gIG1pbk5vZGVWZXJzaW9uOiAnMTguMTIuMCcsXG4gIHdvcmtmbG93Tm9kZVZlcnNpb246ICdsdHMvKicsXG4gIGplc3RPcHRpb25zOiB7XG4gICAgdXBkYXRlU25hcHNob3Q6IFVwZGF0ZVNuYXBzaG90LkFMV0FZUyxcbiAgfSxcbiAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6ICdtYWluJyxcbiAgLy8gRGVmYXVsdCBpcyB0byByZWxlYXNlIG9ubHkgZmVhdHVyZXMgYW5kIGZpeGVzLiBJZiB3ZSBkb24ndCBkbyB0aGlzLCBldmVyeSBwcm9qZW5cbiAgLy8gcHJvamVjdCB3aWxsIGJhc2ljYWxseSByZWxlYXNlIGV2ZXJ5IGRheSwgYmVjYXVzZSBpdCB3aWxsIHNlZSBkZXZEZXBlbmRlbmNpZXMgdXBkYXRlc1xuICAvLyBldmVyeSBkYXksIGV2ZW4gdGhvdWdoIHRob3NlIGFyZSBub3QgaW50ZXJlc3RpbmcuXG4gIHJlbGVhc2FibGVDb21taXRzOiBSZWxlYXNhYmxlQ29tbWl0cy5mZWF0dXJlc0FuZEZpeGVzKCksXG4gIGpzaWlWZXJzaW9uOiAnfjUuOScsXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVDZGtsYWJzUHVibGlzaGluZ0RlZmF1bHRzKG5wbVBhY2thZ2VOYW1lOiBzdHJpbmcsIGxhbmdzPzogSnNpaUxhbmd1YWdlW10pIHtcbiAgY29uc3QgcGFja2FnZUJhc2VuYW1lID0gYmFzZW5hbWUobnBtUGFja2FnZU5hbWUpO1xuXG4gIHJldHVybiBjcmVhdGVQdWJsaXNoaW5nRGVmYXVsdHMoJ2Nka2xhYnMnLCBwYWNrYWdlQmFzZW5hbWUsIEJvb2xlYW4ocGFja2FnZUJhc2VuYW1lICE9PSBucG1QYWNrYWdlTmFtZSksIGxhbmdzKTtcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVB1Ymxpc2hpbmdEZWZhdWx0cyhuYW1lc3BhY2U6IHN0cmluZywgcGFja2FnZUJhc2VuYW1lOiBzdHJpbmcsIGFsd2F5c1VzZU5hbWVzcGFjZSA9IHRydWUsIGxhbmdzPzogSnNpaUxhbmd1YWdlW10pIHtcbiAgY29uc3QgcGlQeVByZWZpeCA9IGFsd2F5c1VzZU5hbWVzcGFjZSA/IGAke25hbWVzcGFjZX0uYCA6ICcnO1xuICBjb25zdCBudWdldFByZWZpeCA9IGFsd2F5c1VzZU5hbWVzcGFjZSA/IGAke3VwcGVyQ2FzZU5hbWUobmFtZXNwYWNlKX0uYCA6IGAke3VwcGVyQ2FzZU5hbWUobmFtZXNwYWNlKX1gO1xuXG4gIHJldHVybiB7XG4gICAgLi4uY3JlYXRlTnBtUHVibGlzaGluZ0RlZmF1bHRzKCksXG4gICAgLi4ucHVibGlzaExhbmd1YWdlV3JhcHBlcihKc2lpTGFuZ3VhZ2UuUFlUSE9OLCB7XG4gICAgICBwdWJsaXNoVG9QeXBpOiB7XG4gICAgICAgIHRydXN0ZWRQdWJsaXNoaW5nOiAxLFxuICAgICAgICBkaXN0TmFtZTogYCR7cGlQeVByZWZpeH0ke3BhY2thZ2VCYXNlbmFtZX1gLFxuICAgICAgICBtb2R1bGU6IGAke3BpUHlQcmVmaXh9JHtjaGFuZ2VEZWxpbWl0ZXIocGFja2FnZUJhc2VuYW1lLCAnXycpfWAsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIC4uLnB1Ymxpc2hMYW5ndWFnZVdyYXBwZXIoSnNpaUxhbmd1YWdlLkpBVkEsIHtcbiAgICAgIHB1Ymxpc2hUb01hdmVuOiB7XG4gICAgICAgIGphdmFQYWNrYWdlOiBgaW8uZ2l0aHViLiR7bmFtZXNwYWNlfS4ke2NoYW5nZURlbGltaXRlcihwYWNrYWdlQmFzZW5hbWUsICcuJyl9YCxcbiAgICAgICAgbWF2ZW5Hcm91cElkOiBgaW8uZ2l0aHViLiR7bmFtZXNwYWNlfWAsXG4gICAgICAgIG1hdmVuQXJ0aWZhY3RJZDogcGFja2FnZUJhc2VuYW1lLFxuICAgICAgICBtYXZlblNlcnZlcklkOiAnY2VudHJhbC1vc3NyaCcsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIC4uLnB1Ymxpc2hMYW5ndWFnZVdyYXBwZXIoSnNpaUxhbmd1YWdlLkRPVE5FVCwge1xuICAgICAgcHVibGlzaFRvTnVnZXQ6IHtcbiAgICAgICAgdHJ1c3RlZFB1Ymxpc2hpbmc6IDEsXG4gICAgICAgIGRvdE5ldE5hbWVzcGFjZTogYCR7bnVnZXRQcmVmaXh9JHt1cHBlckNhc2VOYW1lKHBhY2thZ2VCYXNlbmFtZSl9YCxcbiAgICAgICAgcGFja2FnZUlkOiBgJHtudWdldFByZWZpeH0ke3VwcGVyQ2FzZU5hbWUocGFja2FnZUJhc2VuYW1lKX1gLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICAuLi5wdWJsaXNoTGFuZ3VhZ2VXcmFwcGVyKEpzaWlMYW5ndWFnZS5HTywge1xuICAgICAgcHVibGlzaFRvR286IHtcbiAgICAgICAgbW9kdWxlTmFtZTogYGdpdGh1Yi5jb20vJHtuYW1lc3BhY2V9LyR7cGFja2FnZUJhc2VuYW1lfS1nb2AsXG4gICAgICB9LFxuICAgIH0pLFxuICB9O1xuXG4gIGZ1bmN0aW9uIHB1Ymxpc2hMYW5ndWFnZVdyYXBwZXIobGFuZzogSnNpaUxhbmd1YWdlLCBvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICByZXR1cm4gcHVibGlzaExhbmd1YWdlKGxhbmcpID8gb2JqIDoge307XG4gIH1cblxuICBmdW5jdGlvbiBwdWJsaXNoTGFuZ3VhZ2UobGFuZzogSnNpaUxhbmd1YWdlKTogYm9vbGVhbiB7XG4gICAgLy8gbGFuZ3Mgbm90IHNwZWNpZmllZCA9PT0gYWxsIGxhbmd1YWdlcyBwdWJsaXNoZWRcbiAgICBpZiAoIWxhbmdzKSB7IHJldHVybiB0cnVlOyB9XG4gICAgaWYgKGxhbmdzLmluY2x1ZGVzKGxhbmcpKSB7IHJldHVybiB0cnVlOyB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBwZXJDYXNlTmFtZShzdHI6IHN0cmluZykge1xuICAgIGxldCB3b3JkcyA9IHN0ci5zcGxpdCgnLScpO1xuICAgIHdvcmRzID0gd29yZHMubWFwKCh3KSA9PiB3WzBdLnRvVXBwZXJDYXNlKCkgKyB3LnN1YnN0cmluZygxKSk7XG4gICAgcmV0dXJuIHdvcmRzLmpvaW4oJycpO1xuICB9XG5cbiAgZnVuY3Rpb24gY2hhbmdlRGVsaW1pdGVyKHN0cjogc3RyaW5nLCBkZWxpbTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnLScpLmpvaW4oZGVsaW0pO1xuICB9XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVOcG1QdWJsaXNoaW5nRGVmYXVsdHMoKSB7XG4gIHJldHVybiB7XG4gICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmc6IHRydWUsXG4gICAgcmVsZWFzZUVudmlyb25tZW50OiAncmVsZWFzZScsXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrbGFic1B1Ymxpc2hpbmdQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTZXQgZGVmYXVsdCBwdWJsaXNoaW5nIHByb3BlcnRpZXMuIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSBndWFyYW50ZWVzXG4gICAqIHRoYXQgeW91ciBwcm9qZWN0IHdpbGwgaGF2ZSByZWFzb25hYmxlIHB1Ymxpc2hpbmcgbmFtZXMuIFlvdSBjYW4gY2hvb3NlXG4gICAqIHRvIG1vZGlmeSB0aGVtIGhvd2V2ZXIgeW91IHdpc2ggd2l0aCB0aGUgdHJhZGl0aW9uYWwgYHB1Ymxpc2hUb1B5cGlgLFxuICAgKiBgcHVibGlzaFRvTWF2ZW5gLCBgcHVibGlzaFRvTnVnZXRgLCBhbmQgYHB1Ymxpc2hUb0dvYCBwcm9wZXJ0aWVzLCBhbmRcbiAgICogeW91ciBjb25maWd1cmF0aW9uIHdpbGwgYmUgcmVzcGVjdGVkLlxuICAgKlxuICAgKiBUaGlzIHNob3VsZCBiZSBzZXQgdG8gZmFsc2Ugb25seSBpZiB5b3UgZG8gbm90IHBsYW4gb24gcmVsZWFzaW5nIHRoZSBwYWNrYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjZGtsYWJzUHVibGlzaGluZ0RlZmF1bHRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmeSBzcGVjaWZpYyBsYW5ndWFnZXMgdG8gcHVibGlzaCB0by4gVGhpcyBjYW4gYmUgdXNlZCB3aGVuIHRoZSBsaWJyYXJ5XG4gICAqIGlzIGV4cGVyaW1lbnRhbCBvbmx5LCBiZWNhdXNlIHN0YWJsZSBsaWJyYXJpZXMgbXVzdCBwdWJsaXNoIHRvIGFsbCBqc2lpIGxhbmd1YWdlcy5cbiAgICogVGhpcyBzaG91bGQgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBjZGtsYWJzUHVibGlzaGluZ0RlZmF1bHRzOiB0cnVlYDsgb3RoZXJ3aXNlXG4gICAqIGl0IGlzIGEgbm8tb3AuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYWxsIGpzaWkgdGFyZ2V0IGxhbmd1YWdlc1xuICAgKi9cbiAgcmVhZG9ubHkganNpaVRhcmdldExhbmd1YWdlcz86IEpzaWlMYW5ndWFnZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENka2xhYnNDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyBleHRlbmRzIENka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zLCBDZGtsYWJzUHVibGlzaGluZ1Byb2plY3RPcHRpb25zIHsgfVxuXG4vKipcbiAqIENyZWF0ZSBhIENka2xhYnMgQ29uc3RydWN0IExpYnJhcnkgUHJvamVjdFxuICpcbiAqIEBwamlkIGNka2xhYnMtY29uc3RydWN0LWxpYlxuICovXG5leHBvcnQgY2xhc3MgQ2RrbGFic0NvbnN0cnVjdExpYnJhcnkgZXh0ZW5kcyBDZGtDb25zdHJ1Y3RMaWJyYXJ5IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2RrbGFic0NvbnN0cnVjdExpYnJhcnlPcHRpb25zKSB7XG4gICAgY29uc3QgY2RrbGFic1B1Ymxpc2hpbmdEZWZhdWx0UHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSAob3B0aW9ucy5jZGtsYWJzUHVibGlzaGluZ0RlZmF1bHRzID8/IHRydWUpID9cbiAgICAgIGNyZWF0ZUNka2xhYnNQdWJsaXNoaW5nRGVmYXVsdHMob3B0aW9ucy5uYW1lLCBvcHRpb25zLmpzaWlUYXJnZXRMYW5ndWFnZXMpIDoge307XG5cbiAgICAvLyB0aGUgbGVmdG1vc3Qgb2JqZWN0IGlzIG11dGF0ZWQgYW5kIHJldHVybmVkIGJ5IGRlZXBNZXJnZVxuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBkZWVwTWVyZ2UoW1xuICAgICAge30sXG4gICAgICBjZGtsYWJzRGVmYXVsdFByb3BzLFxuICAgICAgY2RrbGFic1B1Ymxpc2hpbmdEZWZhdWx0UHJvcHMsXG4gICAgICBvcHRpb25zLFxuICAgICAgY2RrbGFic0ZvcmNlZFByb3BzLFxuICAgIF0pIGFzIENka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zO1xuXG4gICAgc3VwZXIobWVyZ2VkT3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDZGtsYWJzVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIGV4dGVuZHMgQ2RrVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIHsgfVxuXG4vKipcbiAqIENyZWF0ZSBhIENka2xhYnMgVHlwZVNjcmlwdCBQcm9qZWN0XG4gKlxuICogQHBqaWQgY2RrbGFicy10cy1wcm9qXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtsYWJzVHlwZVNjcmlwdFByb2plY3QgZXh0ZW5kcyBDZGtUeXBlU2NyaXB0UHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENka2xhYnNUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICAvLyB0aGUgbGVmdG1vc3Qgb2JqZWN0IGlzIG11dGF0ZWQgYW5kIHJldHVybmVkIGJ5IGRlZXBNZXJnZVxuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBkZWVwTWVyZ2UoW1xuICAgICAge30sXG4gICAgICBjZGtsYWJzRGVmYXVsdFByb3BzLFxuICAgICAgY3JlYXRlTnBtUHVibGlzaGluZ0RlZmF1bHRzKCksXG4gICAgICBvcHRpb25zLFxuICAgICAgY2RrbGFic0ZvcmNlZFByb3BzLFxuICAgIF0pIGFzIENka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zO1xuXG4gICAgc3VwZXIobWVyZ2VkT3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDZGtsYWJzSnNpaVByb2plY3RPcHRpb25zIGV4dGVuZHMgQ2RrSnNpaVByb2plY3RPcHRpb25zLCBDZGtsYWJzUHVibGlzaGluZ1Byb2plY3RPcHRpb25zIHsgfVxuXG4vKipcbiAqIENyZWF0ZSBhIENka2xhYnMgSnNpaSBQcm9qZWN0XG4gKlxuICogQHBqaWQgY2RrbGFicy1qc2lpLXByb2pcbiAqL1xuZXhwb3J0IGNsYXNzIENka2xhYnNKc2lpUHJvamVjdCBleHRlbmRzIENka0pzaWlQcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2RrbGFic0pzaWlQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IGNka2xhYnNQdWJsaXNoaW5nRGVmYXVsdFByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gKG9wdGlvbnMuY2RrbGFic1B1Ymxpc2hpbmdEZWZhdWx0cyA/PyB0cnVlKSA/XG4gICAgICBjcmVhdGVDZGtsYWJzUHVibGlzaGluZ0RlZmF1bHRzKG9wdGlvbnMubmFtZSwgb3B0aW9ucy5qc2lpVGFyZ2V0TGFuZ3VhZ2VzKSA6IHt9O1xuICAgIC8vIHRoZSBsZWZ0bW9zdCBvYmplY3QgaXMgbXV0YXRlZCBhbmQgcmV0dXJuZWQgYnkgZGVlcE1lcmdlXG4gICAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IGRlZXBNZXJnZShbXG4gICAgICB7fSxcbiAgICAgIGNka2xhYnNEZWZhdWx0UHJvcHMsXG4gICAgICBjZGtsYWJzUHVibGlzaGluZ0RlZmF1bHRQcm9wcyxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBjZGtsYWJzRm9yY2VkUHJvcHMsXG4gICAgXSkgYXMgQ2RrbGFic0pzaWlQcm9qZWN0T3B0aW9ucztcblxuICAgIHN1cGVyKG1lcmdlZE9wdGlvbnMpO1xuICB9XG59XG4iXX0=
package/lib/jsii.js CHANGED
@@ -28,5 +28,5 @@ class CdkJsiiProject extends projen_1.cdk.JsiiProject {
28
28
  }
29
29
  exports.CdkJsiiProject = CdkJsiiProject;
30
30
  _a = JSII_RTTI_SYMBOL_1;
31
- CdkJsiiProject[_a] = { fqn: "cdklabs-projen-project-types.CdkJsiiProject", version: "0.3.18" };
31
+ CdkJsiiProject[_a] = { fqn: "cdklabs-projen-project-types.CdkJsiiProject", version: "0.3.19" };
32
32
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc2lpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQTZCO0FBRTdCLHFEQUF3RjtBQUV4Rjs7OztHQUlHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsWUFBRyxDQUFDLFdBQVc7SUFHakQsWUFBWSxPQUE4QjtRQUN4QyxNQUFNLElBQUksR0FBRyxJQUFBLDBDQUF5QixFQUFDO1lBQ3JDLEdBQUcsT0FBTztZQUNWLGtEQUFrRDtZQUNsRCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsYUFBYTtTQUN4RCxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUM7WUFDSixHQUFHLElBQUk7WUFDUCxzREFBc0Q7WUFDdEQsYUFBYSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQy9CLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUU1QixJQUFBLDBDQUF5QixFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDOztBQWpCSCx3Q0FrQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjZGsgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQ2RrSnNpaVByb2plY3RPcHRpb25zIH0gZnJvbSAnLi9jZGstanNpaS1vcHRpb25zJztcbmltcG9ydCB7IGNvbmZpZ3VyZUNvbW1vbkNvbXBvbmVudHMsIHdpdGhDb21tb25PcHRpb25zRGVmYXVsdHMgfSBmcm9tICcuL2NvbW1vbi1vcHRpb25zJztcblxuLyoqXG4gKiBDcmVhdGUgYSBDZGsgSnNpaSBKc2lpIHByb2plY3RcbiAqXG4gKiBAcGppZCBjZGstanNpaS1wcm9qXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtKc2lpUHJvamVjdCBleHRlbmRzIGNkay5Kc2lpUHJvamVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwcml2YXRlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENka0pzaWlQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IG9wdHMgPSB3aXRoQ29tbW9uT3B0aW9uc0RlZmF1bHRzKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAvLyBhbHNvIGFjY2VwdCB0aGUgZGVwcmVjYXRlZCByZXBvc2l0b3J5VXJsIG9wdGlvblxuICAgICAgcmVwb3NpdG9yeTogb3B0aW9ucy5yZXBvc2l0b3J5ID8/IG9wdGlvbnMucmVwb3NpdG9yeVVybCxcbiAgICB9KTtcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRzLFxuICAgICAgLy8gdXBzdHJlYW0gSnNpaVByb2plY3QgdXNlcyBhIGRpZmZlcmVudCBuYW1lIGZvciB0aGlzXG4gICAgICByZXBvc2l0b3J5VXJsOiBvcHRzLnJlcG9zaXRvcnksXG4gICAgfSk7XG4gICAgdGhpcy5wcml2YXRlID0gb3B0cy5wcml2YXRlO1xuXG4gICAgY29uZmlndXJlQ29tbW9uQ29tcG9uZW50cyh0aGlzLCBvcHRzKTtcbiAgfVxufVxuIl19
package/lib/rosetta.js CHANGED
@@ -49,5 +49,5 @@ class Rosetta extends projen_1.Component {
49
49
  }
50
50
  exports.Rosetta = Rosetta;
51
51
  _a = JSII_RTTI_SYMBOL_1;
52
- Rosetta[_a] = { fqn: "cdklabs-projen-project-types.Rosetta", version: "0.3.18" };
52
+ Rosetta[_a] = { fqn: "cdklabs-projen-project-types.Rosetta", version: "0.3.19" };
53
53
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9zZXR0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yb3NldHRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW9EO0FBa0JwRDs7Ozs7R0FLRztBQUNILE1BQWEsT0FBUSxTQUFRLGtCQUFTO0lBQ3BDLFlBQVksT0FBd0IsRUFBRSxVQUEwQixFQUFFO1FBQ2hFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDO1FBRXRDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLG9HQUFvRztZQUNwRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1R0FBdUcsQ0FBQyxDQUFDO1FBQy9ILENBQUM7UUFFRCxhQUFhO1FBQ2IsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQ3hGLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFL0IsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUNyRCxXQUFXLEVBQUUsc0JBQXNCO1lBQ25DLElBQUksRUFBRSx3QkFBd0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRTtTQUNoRSxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDeEMsSUFBSSxtQkFBVSxDQUFDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRTtZQUNwRCxRQUFRLEVBQUU7Z0JBQ1IscURBQXFEO2dCQUNyRCx5Q0FBeUM7Z0JBQ3pDLFVBQVU7Z0JBQ1YsVUFBVTtnQkFDVix1QkFBdUI7Z0JBQ3ZCLEVBQUU7Z0JBQ0YsK0JBQStCO2dCQUMvQiwrQ0FBK0M7Z0JBQy9DLHVCQUF1QjtnQkFDdkIsRUFBRTtnQkFDRixjQUFjO2dCQUNkLEtBQUs7Z0JBQ0wsR0FBRzthQUNKLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNiLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxZQUFZLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN2RCxDQUFDOztBQXZDSCwwQkF3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFNhbXBsZUZpbGUsIGNkayB9IGZyb20gJ3Byb2plbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm9zZXR0YU9wdGlvbnMge1xuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgc3RyaWN0IG1vZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldCBhbiBleHBsaWNpdCB2ZXJzaW9uIG9mIHJvc2V0dGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdmVyc2lvbiBpcyBzZXQsIHVzZSBhdXRvbWF0aWMgZGV0ZWN0aW9uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBSb3NldHRhIGNvbXBvbmVudCBhZGRzIGJ1aWx0aW4gcm9zZXR0YSBzdXBwb3J0XG4gKiBmb3IgYSBjb25zdHJ1Y3QgbGlicmFyeS4gU2luY2UgQ29uc3RydWN0SHViIHdpbGwgcnVuXG4gKiByb3NldHRhIGZvciByZWFsLCB0aGlzIGp1c3QgYWRkcyBhIGNoZWNrIHRvIHRoZSBidWlsZCB0b1xuICogZW5zdXJlIHRoYXQgcm9zZXR0YSB3aWxsIHJ1biBzdWNjZXNzZnVsbHlcbiAqL1xuZXhwb3J0IGNsYXNzIFJvc2V0dGEgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBjZGsuSnNpaVByb2plY3QsIG9wdGlvbnM6IFJvc2V0dGFPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IHN0cmljdCA9IG9wdGlvbnMuc3RyaWN0ID8/IHRydWU7XG5cbiAgICBpZiAoIXN0cmljdCkge1xuICAgICAgLy8gYmVmb3JlIHJlbW92aW5nIHRoaXMsIGNvbnNpZGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9jZGtsYWJzL2Nka2xhYnMtcHJvamVuLXByb2plY3QtdHlwZXMvaXNzdWVzLzkwNFxuICAgICAgcHJvamVjdC5sb2dnZXIud2FybignUm9zZXR0YSBpcyBOT1Qgb3BlcmF0aW5nIGluIHN0cmljdCBtb2RlLiBXZSBhcmUgZ29pbmcgdG8gZW5mb3JjZSB0aGlzIHNvb24uXFxuUGxlYXNlIGZpeCBhbnkgZXhhbXBsZXMuJyk7XG4gICAgfVxuXG4gICAgLy8gQWRkIERldkRlcFxuICAgIGNvbnN0IHJvc2V0dGFEZXAgPSBvcHRpb25zLnZlcnNpb24gPyBganNpaS1yb3NldHRhQCR7b3B0aW9ucy52ZXJzaW9ufWAgOiAnanNpaS1yb3NldHRhJztcbiAgICBwcm9qZWN0LmFkZERldkRlcHMocm9zZXR0YURlcCk7XG5cbiAgICBjb25zdCByb3NldHRhVGFzayA9IHByb2plY3QuYWRkVGFzaygncm9zZXR0YTpleHRyYWN0Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdUZXN0IHJvc2V0dGEgZXh0cmFjdCcsXG4gICAgICBleGVjOiBganNpaS1yb3NldHRhIGV4dHJhY3QgJHtzdHJpY3QgPyAnLS1zdHJpY3QnIDogJyd9YC50cmltKCksXG4gICAgfSk7XG4gICAgcHJvamVjdC5wb3N0Q29tcGlsZVRhc2suc3Bhd24ocm9zZXR0YVRhc2spO1xuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuanNpaS50YWJsLmpzb24nKTtcbiAgICBuZXcgU2FtcGxlRmlsZShwcm9qZWN0LCAncm9zZXR0YS9kZWZhdWx0LnRzLWZpeHR1cmUnLCB7XG4gICAgICBjb250ZW50czogW1xuICAgICAgICAnLy8gRml4dHVyZSB3aXRoIHBhY2thZ2VzIGltcG9ydGVkLCBidXQgbm90aGluZyBlbHNlJyxcbiAgICAgICAgXCJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcIixcbiAgICAgICAgJ2ltcG9ydCB7JyxcbiAgICAgICAgJyAgU3RhY2ssJyxcbiAgICAgICAgXCJ9IGZyb20gJ2F3cy1jZGstbGliJztcIixcbiAgICAgICAgJycsXG4gICAgICAgICdjbGFzcyBGaXh0dXJlIGV4dGVuZHMgU3RhY2sgeycsXG4gICAgICAgICcgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHsnLFxuICAgICAgICAnICAgIHN1cGVyKHNjb3BlLCBpZCk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgLy8vIGhlcmUnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJ30nLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICB9KTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnIS9yb3NldHRhL2RlZmF1bHQudHMtZml4dHVyZScpO1xuICB9XG59XG4iXX0=
@@ -144,4 +144,10 @@ export interface MonorepoReleaseOptions {
144
144
  * Github Runner Group selection options.
145
145
  */
146
146
  readonly workflowRunsOnGroup?: GroupRunnerOptions;
147
+ /**
148
+ * Whether the monorepo uses Yarn Berry.
149
+ * When enabled, release tasks use Yarn Berry compatible commands.
150
+ * @default false
151
+ */
152
+ readonly yarnBerry?: boolean;
147
153
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcmVsZWFzZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3lhcm4vbW9ub3JlcG8tcmVsZWFzZS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJucHggcHJvamVuXCIuXG5pbXBvcnQgeyBnaXRodWIsIFJlbGVhc2FibGVDb21taXRzLCByZWxlYXNlLCBHcm91cFJ1bm5lck9wdGlvbnMgfSBmcm9tICdwcm9qZW4nO1xuXG4vKipcbiAqIE1vbm9yZXBvUmVsZWFzZU9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25vcmVwb1JlbGVhc2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIEJyYW5jaCBuYW1lIHRvIHJlbGVhc2UgZnJvbVxuICAgKiBAZGVmYXVsdCBcIm1haW5cIlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBtb25vcmVwbyB1c2luZyBOeCBkdXJpbmcgdGhlIHJlbGVhc2UuXG4gICAqIFdpbGwgYnVpbGQgcHJvamVjdHMgaW4gcGFyYWxsZWwgYW5kIGNhbiBpbXByb3ZlIGJ1aWxkIHBlcmZvcm1hbmNlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBidWlsZFdpdGhOeD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgYGNvbW1pdC1hbmQtdGFnLXZlcnNpb25gIGNvbXBhdGlibGUgcGFja2FnZSB1c2VkIHRvIGJ1bXAgdGhlIHBhY2thZ2UgdmVyc2lvbiwgYXMgYSBkZXBlbmRlbmN5IHN0cmluZy5cbiAgICogVGhpcyBjYW4gYmUgYW55IGNvbXBhdGlibGUgcGFja2FnZSB2ZXJzaW9uLCBpbmNsdWRpbmcgdGhlIGRlcHJlY2F0ZWQgYHN0YW5kYXJkLXZlcnNpb25AOWAuXG4gICAqIEBkZWZhdWx0IC0gQSByZWNlbnQgdmVyc2lvbiBvZiBcImNvbW1pdC1hbmQtdGFnLXZlcnNpb25cIlxuICAgKi9cbiAgcmVhZG9ubHkgYnVtcFBhY2thZ2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBWZXJzaW9uIHJlcXVpcmVtZW50IG9mIGBwdWJsaWJgIHdoaWNoIGlzIHVzZWQgdG8gcHVibGlzaCBtb2R1bGVzIHRvIG5wbS5cbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkganNpaVJlbGVhc2VWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogTWFqb3IgdmVyc2lvbiB0byByZWxlYXNlIGZyb20gdGhlIGRlZmF1bHQgYnJhbmNoLlxuICAgKiBJZiB0aGlzIGlzIHNwZWNpZmllZCwgd2UgYnVtcCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtYWpvciB2ZXJzaW9uIGxpbmUuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHdlIGJ1bXAgdGhlIGdsb2JhbCBsYXRlc3QgdmVyc2lvbi5cbiAgICogQGRlZmF1bHQgLSBNYWpvciB2ZXJzaW9uIGlzIG5vdCBlbmZvcmNlZC5cbiAgICovXG4gIHJlYWRvbmx5IG1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIE1pbmltYWwgTWFqb3IgdmVyc2lvbiB0byByZWxlYXNlLlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2V0IHRvIDEsIGFzIGJyZWFraW5nIGNoYW5nZXMgYmVmb3JlIHRoZSAxLnggbWFqb3JcbiAgICogcmVsZWFzZSBhcmUgbm90IGluY3JlbWVudGluZyB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIuXG4gICAqXG4gICAqIENhbiBub3QgYmUgc2V0IHRvZ2V0aGVyIHdpdGggYG1ham9yVmVyc2lvbmAuXG4gICAqIEBkZWZhdWx0IC0gTm8gbWluaW11bSB2ZXJzaW9uIGlzIGJlaW5nIGVuZm9yY2VkXG4gICAqL1xuICByZWFkb25seSBtaW5NYWpvclZlcnNpb24/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBIHNoZWxsIGNvbW1hbmQgdG8gY29udHJvbCB0aGUgbmV4dCB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqIElmIHByZXNlbnQsIHRoaXMgc2hlbGwgY29tbWFuZCB3aWxsIGJlIHJ1biBiZWZvcmUgdGhlIGJ1bXAgaXMgZXhlY3V0ZWQsIGFuZFxuICAgKiBpdCBkZXRlcm1pbmVzIHdoYXQgdmVyc2lvbiB0byByZWxlYXNlLiBJdCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBmb2xsb3dpbmdcbiAgICogZW52aXJvbm1lbnQ6XG4gICAqXG4gICAqIC0gV29ya2luZyBkaXJlY3Rvcnk6IHRoZSBwcm9qZWN0IGRpcmVjdG9yeS5cbiAgICogLSBgJFZFUlNJT05gOiB0aGUgY3VycmVudCB2ZXJzaW9uLiBMb29rcyBsaWtlIGAxLjIuM2AuXG4gICAqIC0gYCRMQVRFU1RfVEFHYDogdGhlIG1vc3QgcmVjZW50IHRhZy4gTG9va3MgbGlrZSBgcHJlZml4LXYxLjIuM2AsIG9yIG1heSBiZSB1bnNldC5cbiAgICogLSBgJFNVR0dFU1RFRF9CVU1QYDogdGhlIHN1Z2dlc3RlZCBidW1wIGFjdGlvbiBiYXNlZCBvbiBjb21taXRzLiBPbmUgb2YgYG1ham9yfG1pbm9yfHBhdGNofG5vbmVgLlxuICAgKlxuICAgKiBUaGUgY29tbWFuZCBzaG91bGQgcHJpbnQgb25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gYHN0ZG91dGA6XG4gICAqXG4gICAqIC0gTm90aGluZzogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIGNvbW1pdCBoaXN0b3J5LlxuICAgKiAtIGB4LnkuemA6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgYHgueS56YC5cbiAgICogLSBgbWFqb3J8bWlub3J8cGF0Y2hgOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIHRoZSBjdXJyZW50IHZlcnNpb24gbnVtYmVyXG4gICAqICAgd2l0aCB0aGUgaW5kaWNhdGVkIGNvbXBvbmVudCBidW1wZWQuXG4gICAqXG4gICAqIFRoaXMgc2V0dGluZyBjYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYG1pbk1ham9yVmVyc2lvbmA7IHRoZSBpbnZva2VkXG4gICAqIHNjcmlwdCBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBlZmZlY3RzIG9mIGBtaW5NYWpvclZlcnNpb25gLlxuICAgKiBAZGVmYXVsdCAtIFRoZSBuZXh0IHZlcnNpb24gd2lsbCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIHRoZSBjb21taXQgaGlzdG9yeSBhbmQgcHJvamVjdCBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IG5leHRWZXJzaW9uQ29tbWFuZD86IHN0cmluZztcbiAgLyoqXG4gICAqIE5vZGUgdmVyc2lvbiB0byB1c2UgaW4gdGhlIHJlbGVhc2Ugd29ya2Zsb3dcbiAgICogQGRlZmF1bHQgXCJsdHMvKlwiXG4gICAqL1xuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBucG1EaXN0VGFnIHRvIHVzZSB3aGVuIHB1Ymxpc2hpbmcgZnJvbSB0aGUgZGVmYXVsdCBicmFuY2guXG4gICAqIFRvIHNldCB0aGUgbnBtIGRpc3QtdGFnIGZvciByZWxlYXNlIGJyYW5jaGVzLCBzZXQgdGhlIGBucG1EaXN0VGFnYCBwcm9wZXJ0eVxuICAgKiBmb3IgZWFjaCBicmFuY2guXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IG5wbURpc3RUYWc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTdGVwcyB0byBleGVjdXRlIGFmdGVyIGJ1aWxkIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2Ugd29ya2Zsb3cuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBwb3N0QnVpbGRTdGVwcz86IEFycmF5PGdpdGh1Yi53b3JrZmxvd3MuSm9iU3RlcD47XG4gIC8qKlxuICAgKiBCdW1wIHZlcnNpb25zIGZyb20gdGhlIGRlZmF1bHQgYnJhbmNoIGFzIHByZS1yZWxlYXNlcyAoZS5nLiBcImJldGFcIiwgXCJhbHBoYVwiLCBcInByZVwiKS5cbiAgICogQGRlZmF1bHQgLSBub3JtYWwgc2VtYW50aWMgdmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IHByZXJlbGVhc2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbnN0ZWFkIG9mIGFjdHVhbGx5IHB1Ymxpc2hpbmcgdG8gcGFja2FnZSBtYW5hZ2VycywganVzdCBwcmludCB0aGUgcHVibGlzaGluZyBjb21tYW5kLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaERyeVJ1bj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQdWJsaXNoIHBhY2thZ2VzIHRvIG5wbVxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9OcG0/OiBib29sZWFuO1xuICAvKipcbiAgICogRmluZCBjb21taXRzIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgcmVsZWFzYWJsZSBVc2VkIHRvIGRlY2lkZSBpZiBhIHJlbGVhc2UgaXMgcmVxdWlyZWQuXG4gICAqIEBkZWZhdWx0IFJlbGVhc2FibGVDb21taXRzLmV2ZXJ5Q29tbWl0KClcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2FibGVDb21taXRzPzogUmVsZWFzYWJsZUNvbW1pdHM7XG4gIC8qKlxuICAgKiBUaGUgR2l0SHViIEFjdGlvbnMgZW52aXJvbm1lbnQgdXNlZCBmb3IgdGhlIHJlbGVhc2UuXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gYWRkIGFuIGV4cGxpY2l0IGFwcHJvdmFsIHN0ZXAgdG8gdGhlIHJlbGVhc2VcbiAgICogb3IgbGltaXQgd2hvIGNhbiBpbml0aWF0ZSBhIHJlbGVhc2UgdGhyb3VnaCBlbnZpcm9ubWVudCBwcm90ZWN0aW9uIHJ1bGVzLlxuICAgKlxuICAgKiBXaGVuIG11bHRpcGxlIGFydGlmYWN0cyBhcmUgcmVsZWFzZWQsIHRoZSBlbnZpcm9ubWVudCBjYW4gYmUgb3ZlcndyaXR0ZW5cbiAgICogb24gYSBwZXIgYXJ0aWZhY3QgYmFzaXMuXG4gICAqIEBkZWZhdWx0IC0gbm8gZW52aXJvbm1lbnQgdXNlZCwgdW5sZXNzIHNldCBhdCB0aGUgYXJ0aWZhY3QgbGV2ZWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VFbnZpcm9ubWVudD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZWxlYXNlIHRyaWdnZXIgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAtIENvbnRpbnVvdXMgcmVsZWFzZXMgKGBSZWxlYXNlVHJpZ2dlci5jb250aW51b3VzKClgKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVRyaWdnZXI/OiByZWxlYXNlLlJlbGVhc2VUcmlnZ2VyO1xuICAvKipcbiAgICogQnVpbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciByZWxlYXNlIHdvcmtmbG93cy5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VXb3JrZmxvd0Vudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGVmYXVsdCByZWxlYXNlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCBcInJlbGVhc2VcIlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVdvcmtmbG93TmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc2V0IG9mIHdvcmtmbG93IHN0ZXBzIHRvIGV4ZWN1dGUgaW4gb3JkZXIgdG8gc2V0dXAgdGhlIHdvcmtmbG93IGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VXb3JrZmxvd1NldHVwU3RlcHM/OiBBcnJheTxnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXA+O1xuICAvKipcbiAgICogQ29udGFpbmVyIGltYWdlIHRvIHVzZSBmb3IgR2l0SHViIHdvcmtmbG93cy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0NvbnRhaW5lckltYWdlPzogc3RyaW5nO1xuICAvKipcbiAgICogR2l0aHViIFJ1bm5lciBzZWxlY3Rpb24gbGFiZWxzLlxuICAgKiBAZGVmYXVsdCBbXCJ1YnVudHUtbGF0ZXN0XCJdXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1J1bnNPbj86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBHaXRodWIgUnVubmVyIEdyb3VwIHNlbGVjdGlvbiBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dSdW5zT25Hcm91cD86IEdyb3VwUnVubmVyT3B0aW9ucztcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcmVsZWFzZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3lhcm4vbW9ub3JlcG8tcmVsZWFzZS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJucHggcHJvamVuXCIuXG5pbXBvcnQgeyBnaXRodWIsIFJlbGVhc2FibGVDb21taXRzLCByZWxlYXNlLCBHcm91cFJ1bm5lck9wdGlvbnMgfSBmcm9tICdwcm9qZW4nO1xuXG4vKipcbiAqIE1vbm9yZXBvUmVsZWFzZU9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25vcmVwb1JlbGVhc2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIEJyYW5jaCBuYW1lIHRvIHJlbGVhc2UgZnJvbVxuICAgKiBAZGVmYXVsdCBcIm1haW5cIlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBtb25vcmVwbyB1c2luZyBOeCBkdXJpbmcgdGhlIHJlbGVhc2UuXG4gICAqIFdpbGwgYnVpbGQgcHJvamVjdHMgaW4gcGFyYWxsZWwgYW5kIGNhbiBpbXByb3ZlIGJ1aWxkIHBlcmZvcm1hbmNlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBidWlsZFdpdGhOeD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgYGNvbW1pdC1hbmQtdGFnLXZlcnNpb25gIGNvbXBhdGlibGUgcGFja2FnZSB1c2VkIHRvIGJ1bXAgdGhlIHBhY2thZ2UgdmVyc2lvbiwgYXMgYSBkZXBlbmRlbmN5IHN0cmluZy5cbiAgICogVGhpcyBjYW4gYmUgYW55IGNvbXBhdGlibGUgcGFja2FnZSB2ZXJzaW9uLCBpbmNsdWRpbmcgdGhlIGRlcHJlY2F0ZWQgYHN0YW5kYXJkLXZlcnNpb25AOWAuXG4gICAqIEBkZWZhdWx0IC0gQSByZWNlbnQgdmVyc2lvbiBvZiBcImNvbW1pdC1hbmQtdGFnLXZlcnNpb25cIlxuICAgKi9cbiAgcmVhZG9ubHkgYnVtcFBhY2thZ2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBWZXJzaW9uIHJlcXVpcmVtZW50IG9mIGBwdWJsaWJgIHdoaWNoIGlzIHVzZWQgdG8gcHVibGlzaCBtb2R1bGVzIHRvIG5wbS5cbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkganNpaVJlbGVhc2VWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogTWFqb3IgdmVyc2lvbiB0byByZWxlYXNlIGZyb20gdGhlIGRlZmF1bHQgYnJhbmNoLlxuICAgKiBJZiB0aGlzIGlzIHNwZWNpZmllZCwgd2UgYnVtcCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtYWpvciB2ZXJzaW9uIGxpbmUuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHdlIGJ1bXAgdGhlIGdsb2JhbCBsYXRlc3QgdmVyc2lvbi5cbiAgICogQGRlZmF1bHQgLSBNYWpvciB2ZXJzaW9uIGlzIG5vdCBlbmZvcmNlZC5cbiAgICovXG4gIHJlYWRvbmx5IG1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIE1pbmltYWwgTWFqb3IgdmVyc2lvbiB0byByZWxlYXNlLlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2V0IHRvIDEsIGFzIGJyZWFraW5nIGNoYW5nZXMgYmVmb3JlIHRoZSAxLnggbWFqb3JcbiAgICogcmVsZWFzZSBhcmUgbm90IGluY3JlbWVudGluZyB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIuXG4gICAqXG4gICAqIENhbiBub3QgYmUgc2V0IHRvZ2V0aGVyIHdpdGggYG1ham9yVmVyc2lvbmAuXG4gICAqIEBkZWZhdWx0IC0gTm8gbWluaW11bSB2ZXJzaW9uIGlzIGJlaW5nIGVuZm9yY2VkXG4gICAqL1xuICByZWFkb25seSBtaW5NYWpvclZlcnNpb24/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBIHNoZWxsIGNvbW1hbmQgdG8gY29udHJvbCB0aGUgbmV4dCB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqIElmIHByZXNlbnQsIHRoaXMgc2hlbGwgY29tbWFuZCB3aWxsIGJlIHJ1biBiZWZvcmUgdGhlIGJ1bXAgaXMgZXhlY3V0ZWQsIGFuZFxuICAgKiBpdCBkZXRlcm1pbmVzIHdoYXQgdmVyc2lvbiB0byByZWxlYXNlLiBJdCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBmb2xsb3dpbmdcbiAgICogZW52aXJvbm1lbnQ6XG4gICAqXG4gICAqIC0gV29ya2luZyBkaXJlY3Rvcnk6IHRoZSBwcm9qZWN0IGRpcmVjdG9yeS5cbiAgICogLSBgJFZFUlNJT05gOiB0aGUgY3VycmVudCB2ZXJzaW9uLiBMb29rcyBsaWtlIGAxLjIuM2AuXG4gICAqIC0gYCRMQVRFU1RfVEFHYDogdGhlIG1vc3QgcmVjZW50IHRhZy4gTG9va3MgbGlrZSBgcHJlZml4LXYxLjIuM2AsIG9yIG1heSBiZSB1bnNldC5cbiAgICogLSBgJFNVR0dFU1RFRF9CVU1QYDogdGhlIHN1Z2dlc3RlZCBidW1wIGFjdGlvbiBiYXNlZCBvbiBjb21taXRzLiBPbmUgb2YgYG1ham9yfG1pbm9yfHBhdGNofG5vbmVgLlxuICAgKlxuICAgKiBUaGUgY29tbWFuZCBzaG91bGQgcHJpbnQgb25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gYHN0ZG91dGA6XG4gICAqXG4gICAqIC0gTm90aGluZzogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIGNvbW1pdCBoaXN0b3J5LlxuICAgKiAtIGB4LnkuemA6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgYHgueS56YC5cbiAgICogLSBgbWFqb3J8bWlub3J8cGF0Y2hgOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIHRoZSBjdXJyZW50IHZlcnNpb24gbnVtYmVyXG4gICAqICAgd2l0aCB0aGUgaW5kaWNhdGVkIGNvbXBvbmVudCBidW1wZWQuXG4gICAqXG4gICAqIFRoaXMgc2V0dGluZyBjYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYG1pbk1ham9yVmVyc2lvbmA7IHRoZSBpbnZva2VkXG4gICAqIHNjcmlwdCBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBlZmZlY3RzIG9mIGBtaW5NYWpvclZlcnNpb25gLlxuICAgKiBAZGVmYXVsdCAtIFRoZSBuZXh0IHZlcnNpb24gd2lsbCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIHRoZSBjb21taXQgaGlzdG9yeSBhbmQgcHJvamVjdCBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IG5leHRWZXJzaW9uQ29tbWFuZD86IHN0cmluZztcbiAgLyoqXG4gICAqIE5vZGUgdmVyc2lvbiB0byB1c2UgaW4gdGhlIHJlbGVhc2Ugd29ya2Zsb3dcbiAgICogQGRlZmF1bHQgXCJsdHMvKlwiXG4gICAqL1xuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBucG1EaXN0VGFnIHRvIHVzZSB3aGVuIHB1Ymxpc2hpbmcgZnJvbSB0aGUgZGVmYXVsdCBicmFuY2guXG4gICAqIFRvIHNldCB0aGUgbnBtIGRpc3QtdGFnIGZvciByZWxlYXNlIGJyYW5jaGVzLCBzZXQgdGhlIGBucG1EaXN0VGFnYCBwcm9wZXJ0eVxuICAgKiBmb3IgZWFjaCBicmFuY2guXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IG5wbURpc3RUYWc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTdGVwcyB0byBleGVjdXRlIGFmdGVyIGJ1aWxkIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2Ugd29ya2Zsb3cuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBwb3N0QnVpbGRTdGVwcz86IEFycmF5PGdpdGh1Yi53b3JrZmxvd3MuSm9iU3RlcD47XG4gIC8qKlxuICAgKiBCdW1wIHZlcnNpb25zIGZyb20gdGhlIGRlZmF1bHQgYnJhbmNoIGFzIHByZS1yZWxlYXNlcyAoZS5nLiBcImJldGFcIiwgXCJhbHBoYVwiLCBcInByZVwiKS5cbiAgICogQGRlZmF1bHQgLSBub3JtYWwgc2VtYW50aWMgdmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IHByZXJlbGVhc2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbnN0ZWFkIG9mIGFjdHVhbGx5IHB1Ymxpc2hpbmcgdG8gcGFja2FnZSBtYW5hZ2VycywganVzdCBwcmludCB0aGUgcHVibGlzaGluZyBjb21tYW5kLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaERyeVJ1bj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQdWJsaXNoIHBhY2thZ2VzIHRvIG5wbVxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9OcG0/OiBib29sZWFuO1xuICAvKipcbiAgICogRmluZCBjb21taXRzIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgcmVsZWFzYWJsZSBVc2VkIHRvIGRlY2lkZSBpZiBhIHJlbGVhc2UgaXMgcmVxdWlyZWQuXG4gICAqIEBkZWZhdWx0IFJlbGVhc2FibGVDb21taXRzLmV2ZXJ5Q29tbWl0KClcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2FibGVDb21taXRzPzogUmVsZWFzYWJsZUNvbW1pdHM7XG4gIC8qKlxuICAgKiBUaGUgR2l0SHViIEFjdGlvbnMgZW52aXJvbm1lbnQgdXNlZCBmb3IgdGhlIHJlbGVhc2UuXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gYWRkIGFuIGV4cGxpY2l0IGFwcHJvdmFsIHN0ZXAgdG8gdGhlIHJlbGVhc2VcbiAgICogb3IgbGltaXQgd2hvIGNhbiBpbml0aWF0ZSBhIHJlbGVhc2UgdGhyb3VnaCBlbnZpcm9ubWVudCBwcm90ZWN0aW9uIHJ1bGVzLlxuICAgKlxuICAgKiBXaGVuIG11bHRpcGxlIGFydGlmYWN0cyBhcmUgcmVsZWFzZWQsIHRoZSBlbnZpcm9ubWVudCBjYW4gYmUgb3ZlcndyaXR0ZW5cbiAgICogb24gYSBwZXIgYXJ0aWZhY3QgYmFzaXMuXG4gICAqIEBkZWZhdWx0IC0gbm8gZW52aXJvbm1lbnQgdXNlZCwgdW5sZXNzIHNldCBhdCB0aGUgYXJ0aWZhY3QgbGV2ZWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VFbnZpcm9ubWVudD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZWxlYXNlIHRyaWdnZXIgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAtIENvbnRpbnVvdXMgcmVsZWFzZXMgKGBSZWxlYXNlVHJpZ2dlci5jb250aW51b3VzKClgKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVRyaWdnZXI/OiByZWxlYXNlLlJlbGVhc2VUcmlnZ2VyO1xuICAvKipcbiAgICogQnVpbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciByZWxlYXNlIHdvcmtmbG93cy5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VXb3JrZmxvd0Vudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGVmYXVsdCByZWxlYXNlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCBcInJlbGVhc2VcIlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVdvcmtmbG93TmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc2V0IG9mIHdvcmtmbG93IHN0ZXBzIHRvIGV4ZWN1dGUgaW4gb3JkZXIgdG8gc2V0dXAgdGhlIHdvcmtmbG93IGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VXb3JrZmxvd1NldHVwU3RlcHM/OiBBcnJheTxnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXA+O1xuICAvKipcbiAgICogQ29udGFpbmVyIGltYWdlIHRvIHVzZSBmb3IgR2l0SHViIHdvcmtmbG93cy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0NvbnRhaW5lckltYWdlPzogc3RyaW5nO1xuICAvKipcbiAgICogR2l0aHViIFJ1bm5lciBzZWxlY3Rpb24gbGFiZWxzLlxuICAgKiBAZGVmYXVsdCBbXCJ1YnVudHUtbGF0ZXN0XCJdXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1J1bnNPbj86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBHaXRodWIgUnVubmVyIEdyb3VwIHNlbGVjdGlvbiBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dSdW5zT25Hcm91cD86IEdyb3VwUnVubmVyT3B0aW9ucztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG1vbm9yZXBvIHVzZXMgWWFybiBCZXJyeS5cbiAgICogV2hlbiBlbmFibGVkLCByZWxlYXNlIHRhc2tzIHVzZSBZYXJuIEJlcnJ5IGNvbXBhdGlibGUgY29tbWFuZHMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB5YXJuQmVycnk/OiBib29sZWFuO1xufVxuIl19
@@ -13,6 +13,7 @@ export declare class MonorepoRelease extends Component {
13
13
  private readonly github;
14
14
  private readonly releaseTrigger;
15
15
  private readonly buildWithNx;
16
+ private readonly wsRun;
16
17
  private readonly packagesToRelease;
17
18
  private workflow?;
18
19
  private releaseTask?;
@@ -33,6 +33,7 @@ class MonorepoRelease extends projen_1.Component {
33
33
  this.github = gh;
34
34
  this.releaseTrigger = options.releaseTrigger ?? projen_1.release.ReleaseTrigger.continuous();
35
35
  this.buildWithNx = options.buildWithNx ?? false;
36
+ this.wsRun = options.yarnBerry ? 'yarn workspaces foreach --all run' : 'yarn workspaces run';
36
37
  }
37
38
  workspaceRelease(project) {
38
39
  const ret = this.workspaceReleases.get(project);
@@ -167,16 +168,16 @@ class MonorepoRelease extends projen_1.Component {
167
168
  });
168
169
  // Unroll out the 'release' task, and do all the phases for each individual package. We need to 'bump' at the same
169
170
  // time so that the dependency versions in all 'package.json's are correct.
170
- this.releaseTask.exec('yarn workspaces run shx rm -rf dist');
171
- this.releaseTask.exec('yarn workspaces run bump');
171
+ this.releaseTask.exec(`${this.wsRun} shx rm -rf dist`);
172
+ this.releaseTask.exec(`${this.wsRun} bump`);
172
173
  if (this.buildWithNx) {
173
174
  this.releaseTask.exec('nx run-many -t build');
174
175
  this.releaseTask.env('NX_SKIP_NX_CACHE', 'true');
175
176
  }
176
177
  else {
177
- this.releaseTask.exec('yarn workspaces run build');
178
+ this.releaseTask.exec(`${this.wsRun} build`);
178
179
  }
179
- this.releaseTask.exec('yarn workspaces run unbump');
180
+ this.releaseTask.exec(`${this.wsRun} unbump`);
180
181
  // anti-tamper check (fails if there were changes to committed files)
181
182
  // this will identify any non-committed files generated during build (e.g. test snapshots)
182
183
  this.releaseTask.exec(projen_1.release.Release.ANTI_TAMPER_CMD);
@@ -200,14 +201,15 @@ class MonorepoRelease extends projen_1.Component {
200
201
  const preBuildSteps = [
201
202
  {
202
203
  name: 'Setup Node.js',
203
- uses: 'actions/setup-node@v4',
204
+ uses: 'actions/setup-node@v6',
204
205
  with: {
205
206
  'node-version': this.project.nodeVersion ?? 'lts/*',
207
+ 'package-manager-cache': false,
206
208
  },
207
209
  },
208
210
  {
209
211
  name: 'Install dependencies',
210
- run: 'yarn install --check-files --frozen-lockfile',
212
+ run: this.options.yarnBerry ? 'yarn install --immutable' : 'yarn install --check-files --frozen-lockfile',
211
213
  },
212
214
  ...(this.options.releaseWorkflowSetupSteps ?? []),
213
215
  ];
@@ -283,7 +285,7 @@ class MonorepoRelease extends projen_1.Component {
283
285
  }
284
286
  exports.MonorepoRelease = MonorepoRelease;
285
287
  _a = JSII_RTTI_SYMBOL_1;
286
- MonorepoRelease[_a] = { fqn: "cdklabs-projen-project-types.yarn.MonorepoRelease", version: "0.3.18" };
288
+ MonorepoRelease[_a] = { fqn: "cdklabs-projen-project-types.yarn.MonorepoRelease", version: "0.3.19" };
287
289
  function slugify(x) {
288
290
  return x.replace(/[^a-zA-Z0-9_-]/g, '-').replace(/^[0-9-]+/, '');
289
291
  }
@@ -296,4 +298,4 @@ function publishProjectOutputId(project) {
296
298
  function shouldPublishProjectStepId(project) {
297
299
  return `check-${publishProjectOutputId(project)}`;
298
300
  }
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy95YXJuL21vbm9yZXBvLXJlbGVhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsbUNBQW9GO0FBQ3BGLDJEQUEwRjtBQUkxRixpRkFBMkY7QUFFM0YsZ0NBQWdDO0FBQ2hDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUNoQyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUN2QyxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztBQUU3QyxNQUFhLGVBQWdCLFNBQVEsa0JBQVM7SUFDNUM7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFnQjtRQUMvQixNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBWSxFQUF3QixFQUFFLENBQUMsQ0FBQyxZQUFZLGVBQWUsQ0FBQztRQUN2RyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQW1CRCxZQUFZLE9BQWdCLEVBQW1CLFVBQWtDLEVBQUU7UUFDakYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRDhCLFlBQU8sR0FBUCxPQUFPLENBQTZCO1FBYmxFLHNCQUFpQixHQUFHLElBQUksS0FBSyxFQU8xQyxDQUFDO1FBSVksc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQXlDLENBQUM7UUFLcEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQztRQUMvQyxNQUFNLEVBQUUsR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxJQUFJ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LFNBQVMsc0JBQXNCLENBQUMsT0FBZ0I7SUFDOUMsT0FBTyxXQUFXLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FBQyxPQUFnQjtJQUNsRCxPQUFPLFNBQVMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGdpdGh1YiwgcmVsZWFzZSBhcyBwcm9qZW5SZWxlYXNlLCBDb21wb25lbnQsIFByb2plY3QsIFRhc2sgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQlVJTERfQVJUSUZBQ1RfTkFNRSwgUEVSTUlTU0lPTl9CQUNLVVBfRklMRSB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUb29scyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBNb25vcmVwb1JlbGVhc2VPcHRpb25zIH0gZnJvbSAnLi9tb25vcmVwby1yZWxlYXNlLW9wdGlvbnMnO1xuaW1wb3J0IHsgVHlwZVNjcmlwdFdvcmtzcGFjZSB9IGZyb20gJy4vdHlwZXNjcmlwdC13b3Jrc3BhY2UnO1xuaW1wb3J0IHsgV29ya3NwYWNlUmVsZWFzZSwgV29ya3NwYWNlUmVsZWFzZU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzY3JpcHQtd29ya3NwYWNlLXJlbGVhc2UnO1xuXG4vLyBjb3BpZWQgZnJvbSBwcm9qZW4vcmVsZWFzZS50c1xuY29uc3QgUkVMRUFTRV9KT0JJRCA9ICdyZWxlYXNlJztcbmNvbnN0IEdJVF9SRU1PVEVfU1RFUElEID0gJ2dpdF9yZW1vdGUnO1xuY29uc3QgTEFURVNUX0NPTU1JVF9PVVRQVVQgPSAnbGF0ZXN0X2NvbW1pdCc7XG5cbmV4cG9ydCBjbGFzcyBNb25vcmVwb1JlbGVhc2UgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYE1vbm9yZXBvUmVsZWFzZVdvcmtmbG93YCBjb21wb25lbnQgb2YgYSBwcm9qZWN0IG9yIGB1bmRlZmluZWRgIGlmIHRoZSBwcm9qZWN0XG4gICAqIGRvZXMgbm90IGhhdmUgYSBNb25vcmVwb1JlbGVhc2VXb3JrZmxvdyBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBNb25vcmVwb1JlbGVhc2UgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzTW9ub3JlcG9SZWxlYXNlV29ya2Zsb3cgPSAoYzogQ29tcG9uZW50KTogYyBpcyBNb25vcmVwb1JlbGVhc2UgPT4gYyBpbnN0YW5jZW9mIE1vbm9yZXBvUmVsZWFzZTtcbiAgICByZXR1cm4gcHJvamVjdC5jb21wb25lbnRzLmZpbmQoaXNNb25vcmVwb1JlbGVhc2VXb3JrZmxvdyk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGJyYW5jaE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBnaXRodWI6IGdpdGh1Yi5HaXRIdWI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVsZWFzZVRyaWdnZXI6IHByb2plblJlbGVhc2UuUmVsZWFzZVRyaWdnZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRXaXRoTng6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZXNUb1JlbGVhc2UgPSBuZXcgQXJyYXk8e1xuICAgIHJlYWRvbmx5IHdvcmtzcGFjZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHJlbGVhc2U6IHtcbiAgICAgIHJlYWRvbmx5IHdvcmtzcGFjZTogVHlwZVNjcmlwdFdvcmtzcGFjZTtcbiAgICAgIHJlYWRvbmx5IHB1Ymxpc2hlcjogcHJvamVuUmVsZWFzZS5QdWJsaXNoZXI7XG4gICAgICByZWFkb25seSBvcHRpb25zOiBQYXJ0aWFsPHByb2plblJlbGVhc2UuQnJhbmNoT3B0aW9ucz47XG4gICAgfTtcbiAgfT4oKTtcblxuICBwcml2YXRlIHdvcmtmbG93PzogZ2l0aHViLlRhc2tXb3JrZmxvdztcbiAgcHJpdmF0ZSByZWxlYXNlVGFzaz86IFRhc2s7XG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya3NwYWNlUmVsZWFzZXMgPSBuZXcgTWFwPFR5cGVTY3JpcHRXb3Jrc3BhY2UsIFdvcmtzcGFjZVJlbGVhc2U+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBNb25vcmVwb1JlbGVhc2VPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuYnJhbmNoTmFtZSA9IG9wdGlvbnMuYnJhbmNoTmFtZSA/PyAnbWFpbic7XG4gICAgY29uc3QgZ2ggPSBnaXRodWIuR2l0SHViLm9mKHByb2plY3QpO1xuICAgIGlmICghZ2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvamVjdCBpcyBub3QgYSBHaXRIdWIgcHJvamVjdDogJHtwcm9qZWN0fWApO1xuICAgIH1cbiAgICB0aGlzLmdpdGh1YiA9IGdoO1xuICAgIHRoaXMucmVsZWFzZVRyaWdnZXIgPSBvcHRpb25zLnJlbGVhc2VUcmlnZ2VyID8/IHByb2plblJlbGVhc2UuUmVsZWFzZVRyaWdnZXIuY29udGludW91cygpO1xuICAgIHRoaXMuYnVpbGRXaXRoTnggPSBvcHRpb25zLmJ1aWxkV2l0aE54ID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHdvcmtzcGFjZVJlbGVhc2UocHJvamVjdDogVHlwZVNjcmlwdFdvcmtzcGFjZSkge1xuICAgIGNvbnN0IHJldCA9IHRoaXMud29ya3NwYWNlUmVsZWFzZXMuZ2V0KHByb2plY3QpO1xuICAgIGlmICghcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHJlbGVhc2UgZm9yIHByb2plY3QgJHtwcm9qZWN0Lm5hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgYWRkV29ya3NwYWNlKHByb2plY3Q6IFR5cGVTY3JpcHRXb3Jrc3BhY2UsIG9wdGlvbnM6IFdvcmtzcGFjZVJlbGVhc2VPcHRpb25zKSB7XG4gICAgY29uc3Qgd29ya3NwYWNlUmVsZWFzZSA9IG5ldyBXb3Jrc3BhY2VSZWxlYXNlKHByb2plY3QsIHtcbiAgICAgIHB1Ymxpc2hUb05wbTogdGhpcy5vcHRpb25zLnB1Ymxpc2hUb05wbSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICAvLyBNYWtlIHRoZXNlIHB1YmxpY2x5IGFjY2Vzc2libGVcbiAgICB0aGlzLndvcmtzcGFjZVJlbGVhc2VzLnNldChwcm9qZWN0LCB3b3Jrc3BhY2VSZWxlYXNlKTtcblxuICAgIGlmICghb3B0aW9ucy5wcml2YXRlICYmIHdvcmtzcGFjZVJlbGVhc2UucHVibGlzaGVyKSB7XG4gICAgICB0aGlzLm9idGFpblJlbGVhc2VUYXNrKCk7XG5cbiAgICAgIHRoaXMucGFja2FnZXNUb1JlbGVhc2UucHVzaCh7XG4gICAgICAgIHdvcmtzcGFjZURpcmVjdG9yeTogcHJvamVjdC53b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICAgIHJlbGVhc2U6IHtcbiAgICAgICAgICB3b3Jrc3BhY2U6IHdvcmtzcGFjZVJlbGVhc2Uud29ya3NwYWNlLFxuICAgICAgICAgIHB1Ymxpc2hlcjogd29ya3NwYWNlUmVsZWFzZS5wdWJsaXNoZXIsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgLy8gZW5mb3JjZWQgb3B0aW9uc1xuICAgICAgICAgICAgd29ya2Zsb3dOYW1lOiB0aGlzLm9wdGlvbnMucmVsZWFzZVdvcmtmbG93TmFtZSxcbiAgICAgICAgICAgIHRhZ1ByZWZpeDogYCR7cHJvamVjdC5uYW1lfUBgLFxuXG4gICAgICAgICAgICAvLyBvcHRpb25zIHRoYXQgbWF5IGJlIG92ZXJyaWRlIGxvY2FsbHlcbiAgICAgICAgICAgIG1ham9yVmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uQnJhbmNoT3B0aW9ucy5tYWpvclZlcnNpb24gPz8gdGhpcy5vcHRpb25zLm1ham9yVmVyc2lvbixcbiAgICAgICAgICAgIG1pbk1ham9yVmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uQnJhbmNoT3B0aW9ucy5taW5NYWpvclZlcnNpb24gPz8gdGhpcy5vcHRpb25zLm1pbk1ham9yVmVyc2lvbixcbiAgICAgICAgICAgIHByZXJlbGVhc2U6IG9wdGlvbnMudmVyc2lvbkJyYW5jaE9wdGlvbnMucHJlcmVsZWFzZSA/PyB0aGlzLm9wdGlvbnMucHJlcmVsZWFzZSxcbiAgICAgICAgICAgIG5wbURpc3RUYWc6IG9wdGlvbnMubnBtRGlzdFRhZyA/PyB0aGlzLm9wdGlvbnMubnBtRGlzdFRhZyxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBvcHRpb25zLmVudmlyb25tZW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMucmVsZWFzZVRhc2spIHtcbiAgICAgIC8vIFdlIGRpZG4ndCBlbmQgdXAgYWRkaW5nIGFueSBwYWNrYWdlc1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3JlYXRlUHVibGlzaGluZ01lY2hhbmlzbSgpO1xuICAgIHRoaXMucmVuZGVyUGFja2FnZVVwbG9hZHMoKTtcbiAgICB0aGlzLnJlbmRlclB1Ymxpc2hKb2JzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclBhY2thZ2VVcGxvYWRzKCkge1xuICAgIGNvbnN0IG5vTmV3Q29tbWl0cyA9IGBcXCR7eyBzdGVwcy4ke0dJVF9SRU1PVEVfU1RFUElEfS5vdXRwdXRzLiR7TEFURVNUX0NPTU1JVF9PVVRQVVR9ID09IGdpdGh1Yi5zaGEgfX1gO1xuXG4gICAgZm9yIChjb25zdCB7IHdvcmtzcGFjZURpcmVjdG9yeSwgcmVsZWFzZSB9IG9mIHRoaXMucGFja2FnZXNUb1JlbGVhc2UpIHtcbiAgICAgIGNvbnN0IGpvYiA9IHRoaXMud29ya2Zsb3c/LmdldEpvYihSRUxFQVNFX0pPQklEKSBhcyBnaXRodWIud29ya2Zsb3dzLkpvYiB8IHVuZGVmaW5lZDtcbiAgICAgIGpvYj8uc3RlcHMucHVzaChcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGAke3JlbGVhc2Uud29ya3NwYWNlLm5hbWV9OiBCYWNrdXAgYXJ0aWZhY3QgcGVybWlzc2lvbnNgLFxuICAgICAgICAgIGlmOiBub05ld0NvbW1pdHMsXG4gICAgICAgICAgY29udGludWVPbkVycm9yOiB0cnVlLFxuICAgICAgICAgIHJ1bjogYGNkICR7cmVsZWFzZS53b3Jrc3BhY2UuYXJ0aWZhY3RzRGlyZWN0b3J5fSAmJiBnZXRmYWNsIC1SIC4gPiAke1BFUk1JU1NJT05fQkFDS1VQX0ZJTEV9YCxcbiAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICAgIH0sXG4gICAgICAgIGdpdGh1Yi5Xb3JrZmxvd1N0ZXBzLnVwbG9hZEFydGlmYWN0KHtcbiAgICAgICAgICBuYW1lOiBgJHtyZWxlYXNlLndvcmtzcGFjZS5uYW1lfTogVXBsb2FkIGFydGlmYWN0YCxcbiAgICAgICAgICBpZjogbm9OZXdDb21taXRzLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgIC8vIEV2ZXJ5IGFydGlmYWN0IG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lXG4gICAgICAgICAgICBuYW1lOiBidWlsZEFydGlmYWN0TmFtZShyZWxlYXNlLndvcmtzcGFjZSksXG4gICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4od29ya3NwYWNlRGlyZWN0b3J5LCByZWxlYXNlLndvcmtzcGFjZS5hcnRpZmFjdHNEaXJlY3RvcnkpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclB1Ymxpc2hKb2JzKCkge1xuICAgIGZvciAoY29uc3QgeyByZWxlYXNlIH0gb2YgdGhpcy5wYWNrYWdlc1RvUmVsZWFzZSkge1xuICAgICAgY29uc3QgcGFja2FnZVB1Ymxpc2hKb2JzID0gcmVsZWFzZS5wdWJsaXNoZXIuX3JlbmRlckpvYnNGb3JCcmFuY2godGhpcy5icmFuY2hOYW1lLCByZWxlYXNlLm9wdGlvbnMpO1xuXG4gICAgICBmb3IgKGNvbnN0IGpvYiBvZiBPYmplY3QudmFsdWVzKHBhY2thZ2VQdWJsaXNoSm9icykpIHtcbiAgICAgICAgLy8gRmluZCB0aGUgJ2Rvd25sb2FkLWFydGlmYWN0JyBqb2IgYW5kIHJlcGxhY2UgdGhlIGJ1aWxkIGFydGlmYWN0IG5hbWUgd2l0aCB0aGUgdW5pcXVlIHBlci1wcm9qZWN0IG9uZVxuICAgICAgICBjb25zdCBkb3dubG9hZFN0ZXAgPSBqb2Iuc3RlcHMuZmluZCgoaikgPT4gai51c2VzPy5zdGFydHNXaXRoKCdhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0QCcpKTtcbiAgICAgICAgaWYgKCFkb3dubG9hZFN0ZXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGRvd25sb2FkU3RlcCBhbW9uZyBzdGVwczogJHtKU09OLnN0cmluZ2lmeShqb2Iuc3RlcHMsIHVuZGVmaW5lZCwgMil9YCk7XG4gICAgICAgIH1cbiAgICAgICAgKGRvd25sb2FkU3RlcC53aXRoID8/IHt9KS5uYW1lID0gYnVpbGRBcnRpZmFjdE5hbWUocmVsZWFzZS53b3Jrc3BhY2UpO1xuICAgICAgfVxuXG4gICAgICAvLyBNYWtlIHRoZSBqb2IgbmFtZXMgdW5pcXVlXG4gICAgICB0aGlzLndvcmtmbG93Py5hZGRKb2JzKFxuICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMocGFja2FnZVB1Ymxpc2hKb2JzKS5tYXAoKFtrZXksIGpvYl0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IHNsdWdpZnkoYCR7cmVsZWFzZS53b3Jrc3BhY2UubmFtZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IG5lZWRzID0gKGpvYi5uZWVkcyA/PyBbXSkubWFwKGRlcCA9PiB7XG4gICAgICAgICAgICAgIC8vIEFsbCBwdWJsaXNoIGpvYnMgZGVwZW5kIG9uIHRoZSBtYWluIHJlbGVhc2Ugam9iXG4gICAgICAgICAgICAgIGlmIChkZXAgPT09ICdyZWxlYXNlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyAuLi4gYW5kIHBvc3NpYmx5IG9uIGluZGl2aWR1YWwgcHVibGlzaCBqb2JzIHRoYXQgYXJlIHByZWZpeGVkXG4gICAgICAgICAgICAgIHJldHVybiBgJHtwcmVmaXh9XyR7ZGVwfWA7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gd2UgYnVpbGQgdGhlIHRvb2xzIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBtb2RpZnkgaXQgd2l0aCBvdXJcbiAgICAgICAgICAgIC8vIG93biBjdXN0b20gcHJvcGVydGllcy5cbiAgICAgICAgICAgIGNvbnN0IHRvb2xzUmVidWlsdDogVG9vbHMgPSB7XG4gICAgICAgICAgICAgIC4uLmpvYi50b29scyxcbiAgICAgICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgICAgIC4uLmpvYi50b29scz8ubm9kZSA/PyB7fSxcbiAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIG5vZGUgdmVyc2lvbiBzcGVjaWZpZWQgb24gdGhlIG1vbm8gcmVwby5cbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm9wdGlvbnMubm9kZVZlcnNpb24gPz8gam9iLnRvb2xzPy5ub2RlPy52ZXJzaW9uID8/ICdsdHMvKicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBgJHtwcmVmaXh9XyR7a2V5fWAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5qb2IsXG4gICAgICAgICAgICAgICAgdG9vbHM6IHRvb2xzUmVidWlsdCxcbiAgICAgICAgICAgICAgICBuZWVkcyxcbiAgICAgICAgICAgICAgICBpZjogYFxcJHt7IG5lZWRzLnJlbGVhc2Uub3V0cHV0cy5sYXRlc3RfY29tbWl0ID09IGdpdGh1Yi5zaGEgJiYgbmVlZHMucmVsZWFzZS5vdXRwdXRzLiR7cHVibGlzaFByb2plY3RPdXRwdXRJZChcbiAgICAgICAgICAgICAgICAgIHJlbGVhc2Uud29ya3NwYWNlLFxuICAgICAgICAgICAgICAgICl9ID09ICd0cnVlJyB9fWAsXG4gICAgICAgICAgICAgICAgbmFtZTogYCR7cmVsZWFzZS53b3Jrc3BhY2UubmFtZX06ICR7am9iLm5hbWV9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb2J0YWluUmVsZWFzZVRhc2soKTogVGFzayB7XG4gICAgaWYgKHRoaXMucmVsZWFzZVRhc2spIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbGVhc2VUYXNrO1xuICAgIH1cblxuICAgIGNvbnN0IGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFJFTEVBU0U6ICd0cnVlJyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYWpvclZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgZW52Lk1BSk9SID0gdGhpcy5vcHRpb25zLm1ham9yVmVyc2lvbi50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMubWluTWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaW5NYWpvclZlcnNpb24gYW5kIG1ham9yVmVyc2lvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4nKTtcbiAgICAgIH1cblxuICAgICAgZW52Lk1JTl9NQUpPUiA9IHRoaXMub3B0aW9ucy5taW5NYWpvclZlcnNpb24udG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbGVhc2VUYXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soJ3JlbGVhc2UnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ByZXBhcmUgYSByZWxlYXNlIGZyb20gYWxsIG1vbm9yZXBvIHBhY2thZ2VzJyxcbiAgICAgIGVudixcbiAgICB9KTtcbiAgICAvLyBVbnJvbGwgb3V0IHRoZSAncmVsZWFzZScgdGFzaywgYW5kIGRvIGFsbCB0aGUgcGhhc2VzIGZvciBlYWNoIGluZGl2aWR1YWwgcGFja2FnZS4gV2UgbmVlZCB0byAnYnVtcCcgYXQgdGhlIHNhbWVcbiAgICAvLyB0aW1lIHNvIHRoYXQgdGhlIGRlcGVuZGVuY3kgdmVyc2lvbnMgaW4gYWxsICdwYWNrYWdlLmpzb24ncyBhcmUgY29ycmVjdC5cbiAgICB0aGlzLnJlbGVhc2VUYXNrLmV4ZWMoJ3lhcm4gd29ya3NwYWNlcyBydW4gc2h4IHJtIC1yZiBkaXN0Jyk7XG4gICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKCd5YXJuIHdvcmtzcGFjZXMgcnVuIGJ1bXAnKTtcbiAgICBpZiAodGhpcy5idWlsZFdpdGhOeCkge1xuICAgICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKCdueCBydW4tbWFueSAtdCBidWlsZCcpO1xuICAgICAgdGhpcy5yZWxlYXNlVGFzay5lbnYoJ05YX1NLSVBfTlhfQ0FDSEUnLCAndHJ1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbGVhc2VUYXNrLmV4ZWMoJ3lhcm4gd29ya3NwYWNlcyBydW4gYnVpbGQnKTtcbiAgICB9XG4gICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKCd5YXJuIHdvcmtzcGFjZXMgcnVuIHVuYnVtcCcpO1xuICAgIC8vIGFudGktdGFtcGVyIGNoZWNrIChmYWlscyBpZiB0aGVyZSB3ZXJlIGNoYW5nZXMgdG8gY29tbWl0dGVkIGZpbGVzKVxuICAgIC8vIHRoaXMgd2lsbCBpZGVudGlmeSBhbnkgbm9uLWNvbW1pdHRlZCBmaWxlcyBnZW5lcmF0ZWQgZHVyaW5nIGJ1aWxkIChlLmcuIHRlc3Qgc25hcHNob3RzKVxuICAgIHRoaXMucmVsZWFzZVRhc2suZXhlYyhwcm9qZW5SZWxlYXNlLlJlbGVhc2UuQU5USV9UQU1QRVJfQ01EKTtcblxuICAgIHJldHVybiB0aGlzLnJlbGVhc2VUYXNrO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQdWJsaXNoaW5nTWVjaGFuaXNtKCkge1xuICAgIGlmICh0aGlzLnJlbGVhc2VUcmlnZ2VyLmlzTWFudWFsKSB7XG4gICAgICB0aGlzLmNyZWF0ZVB1Ymxpc2hUYXNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JlYXRlUHVibGlzaFdvcmtmbG93KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQdWJsaXNoVGFzaygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbnVhbCBwdWJsaXNoaW5nIGlzIG5vdCBzdXBwb3J0ZWQgcmlnaHQgbm93Jyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVB1Ymxpc2hXb3JrZmxvdygpIHtcbiAgICBjb25zdCB3b3JrZmxvd05hbWUgPVxuICAgICAgdGhpcy5vcHRpb25zLnJlbGVhc2VXb3JrZmxvd05hbWUgPz9cbiAgICAgIChbJ21hc3RlcicsICdtYWluJ10uaW5jbHVkZXModGhpcy5icmFuY2hOYW1lKSA/ICdyZWxlYXNlJyA6IGByZWxlYXNlLSR7dGhpcy5icmFuY2hOYW1lfWApO1xuXG4gICAgLy8gVGhlIGFycmF5cyBhcmUgYmVpbmcgY2xvbmVkIHRvIGF2b2lkIGFjY3VtdWxhdGluZyB2YWx1ZXMgZnJvbSBwcmV2aW91cyBicmFuY2hlc1xuICAgIGNvbnN0IHByZUJ1aWxkU3RlcHMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTZXR1cCBOb2RlLmpzJyxcbiAgICAgICAgdXNlczogJ2FjdGlvbnMvc2V0dXAtbm9kZUB2NCcsXG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAnbm9kZS12ZXJzaW9uJzogKHRoaXMucHJvamVjdCBhcyBhbnkpLm5vZGVWZXJzaW9uID8/ICdsdHMvKicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnSW5zdGFsbCBkZXBlbmRlbmNpZXMnLFxuICAgICAgICBydW46ICd5YXJuIGluc3RhbGwgLS1jaGVjay1maWxlcyAtLWZyb3plbi1sb2NrZmlsZScsXG4gICAgICB9LFxuICAgICAgLi4uKHRoaXMub3B0aW9ucy5yZWxlYXNlV29ya2Zsb3dTZXR1cFN0ZXBzID8/IFtdKSxcbiAgICBdO1xuICAgIGNvbnN0IHBvc3RCdWlsZFN0ZXBzID0gWy4uLih0aGlzLm9wdGlvbnMucG9zdEJ1aWxkU3RlcHMgPz8gW10pXTtcblxuICAgIC8vIEFkZCBhbiBvdXRwdXQgdG8gdGhlIGpvYiB0byBpbmRpY2F0ZSBpZiBhIGNlcnRhaW4gcGFja2FnZSBuZWVkcyBwdWJsaXNoaW5nXG4gICAgY29uc3Qgc2hvdWxkUHVibGlzaE91dHB1dHMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICB0aGlzLnBhY2thZ2VzVG9SZWxlYXNlLm1hcCgoeyByZWxlYXNlIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBwdWJsaXNoUHJvamVjdE91dHB1dElkKHJlbGVhc2Uud29ya3NwYWNlKSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGVwSWQ6IHNob3VsZFB1Ymxpc2hQcm9qZWN0U3RlcElkKHJlbGVhc2Uud29ya3NwYWNlKSxcbiAgICAgICAgICAgIG91dHB1dE5hbWU6ICdwdWJsaXNoJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBwcm9wb3NlZCByZWxlYXNlIHRhZyBhbHJlYWR5IGV4aXN0c1xuICAgIC8vIE9ubHkgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQgc2hvdWxkIHdlIHB1Ymxpc2hcbiAgICBmb3IgKGNvbnN0IHsgd29ya3NwYWNlRGlyZWN0b3J5LCByZWxlYXNlIH0gb2YgdGhpcy5wYWNrYWdlc1RvUmVsZWFzZSkge1xuICAgICAgcG9zdEJ1aWxkU3RlcHMucHVzaCh7XG4gICAgICAgIGlkOiBzaG91bGRQdWJsaXNoUHJvamVjdFN0ZXBJZChyZWxlYXNlLndvcmtzcGFjZSksXG4gICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtzcGFjZURpcmVjdG9yeSxcbiAgICAgICAgcnVuOiAnKGdpdCBscy1yZW1vdGUgLXEgLS1leGl0LWNvZGUgLS10YWdzIG9yaWdpbiAkKGNhdCBkaXN0L3JlbGVhc2V0YWcudHh0KSAmJiAoZWNobyBcInB1Ymxpc2g9ZmFsc2VcIiA+PiAkR0lUSFVCX09VVFBVVCkpIHx8IGVjaG8gXCJwdWJsaXNoPXRydWVcIiA+PiAkR0lUSFVCX09VVFBVVCcsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiBuZXcgY29tbWl0cyB3ZXJlIHB1c2hlZCB0byB0aGUgcmVwbyB3aGlsZSB3ZSB3ZXJlIGJ1aWxkaW5nLlxuICAgIC8vIGlmIG5ldyBjb21taXRzIGhhdmUgYmVlbiBwdXNoZWQsIHdlIHdpbGwgY2FuY2VsIHRoaXMgcmVsZWFzZVxuICAgIGlmICh0aGlzLm9wdGlvbnMucmVsZWFzZVRyaWdnZXI/LmlzQ29udGludW91cyA/PyB0cnVlKSB7XG4gICAgICBwb3N0QnVpbGRTdGVwcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ0NoZWNrIGZvciBuZXcgY29tbWl0cycsXG4gICAgICAgIGlkOiBHSVRfUkVNT1RFX1NURVBJRCxcbiAgICAgICAgcnVuOiBgZWNobyBcIiR7TEFURVNUX0NPTU1JVF9PVVRQVVR9PSQoZ2l0IGxzLXJlbW90ZSBvcmlnaW4gLWggXFwke3sgZ2l0aHViLnJlZiB9fSB8IGN1dCAtZjEpXCIgPj4gJEdJVEhVQl9PVVRQVVRgLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBub24tY29udGludW91cyBidWlsZHMgd2UnbGwganVzdCBwdXQgdGhlIHZhbHVlIHRoZXJlIHRoYXQgZG93bnN0cmVhbSBzdGVwcyBhcmUgZ29pbmcgdG8gY29tcGFyZSBhZ2FpbnN0XG4gICAgICBwb3N0QnVpbGRTdGVwcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ091dHB1dCB0aGUgc2hhIHZhbHVlIHRoYXQgZG93bnN0cmVhbSBjaGVja3MgZXhwZWN0JyxcbiAgICAgICAgaWQ6IEdJVF9SRU1PVEVfU1RFUElELFxuICAgICAgICBydW46IGBlY2hvIFwiJHtMQVRFU1RfQ09NTUlUX09VVFBVVH09XFwke3sgZ2l0aHViLnNoYSB9fVwiID4+ICRHSVRIVUJfT1VUUFVUYCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMud29ya2Zsb3cgPSBuZXcgZ2l0aHViLlRhc2tXb3JrZmxvdyh0aGlzLmdpdGh1Yiwge1xuICAgICAgbmFtZTogd29ya2Zsb3dOYW1lLFxuICAgICAgam9iSWQ6IFJFTEVBU0VfSk9CSUQsXG4gICAgICBvdXRwdXRzOiB7XG4gICAgICAgIGxhdGVzdF9jb21taXQ6IHtcbiAgICAgICAgICBzdGVwSWQ6IEdJVF9SRU1PVEVfU1RFUElELFxuICAgICAgICAgIG91dHB1dE5hbWU6IExBVEVTVF9DT01NSVRfT1VUUFVULFxuICAgICAgICB9LFxuICAgICAgICAuLi5zaG91bGRQdWJsaXNoT3V0cHV0cyxcbiAgICAgIH0sXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBzY2hlZHVsZTogdGhpcy5yZWxlYXNlVHJpZ2dlci5zY2hlZHVsZSA/IFt7IGNyb246IHRoaXMucmVsZWFzZVRyaWdnZXIuc2NoZWR1bGUgfV0gOiB1bmRlZmluZWQsXG4gICAgICAgIHB1c2g6IHRoaXMucmVsZWFzZVRyaWdnZXIuaXNDb250aW51b3VzID8geyBicmFuY2hlczogW3RoaXMuYnJhbmNoTmFtZV0gfSA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBjb250YWluZXI6IHRoaXMub3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlID8geyBpbWFnZTogdGhpcy5vcHRpb25zLndvcmtmbG93Q29udGFpbmVySW1hZ2UgfSA6IHVuZGVmaW5lZCxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgfSxcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGNvbnRlbnRzOiAnd3JpdGUnIGFzIGFueSxcbiAgICAgIH0sXG4gICAgICBjaGVja291dFdpdGg6IHtcbiAgICAgICAgLy8gd2UgbXVzdCB1c2UgJ2ZldGNoLWRlcHRoPTAnIGluIG9yZGVyIHRvIGZldGNoIGFsbCB0YWdzXG4gICAgICAgIC8vIG90aGVyd2lzZSB0YWdzIGFyZSBub3QgY2hlY2tlZCBvdXRcbiAgICAgICAgZmV0Y2hEZXB0aDogMCxcbiAgICAgIH0sXG4gICAgICBwcmVCdWlsZFN0ZXBzLFxuICAgICAgdGFzazogdGhpcy5yZWxlYXNlVGFzayEsXG4gICAgICBwb3N0QnVpbGRTdGVwcyxcbiAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLndvcmtmbG93UnVuc09uLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNsdWdpZnkoeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHgucmVwbGFjZSgvW15hLXpBLVowLTlfLV0vZywgJy0nKS5yZXBsYWNlKC9eWzAtOS1dKy8sICcnKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRBcnRpZmFjdE5hbWUocHJvamVjdDogUHJvamVjdCkge1xuICByZXR1cm4gc2x1Z2lmeShgJHtwcm9qZWN0Lm5hbWV9XyR7QlVJTERfQVJUSUZBQ1RfTkFNRX1gKTtcbn1cblxuZnVuY3Rpb24gcHVibGlzaFByb2plY3RPdXRwdXRJZChwcm9qZWN0OiBQcm9qZWN0KSB7XG4gIHJldHVybiBgcHVibGlzaC0ke3NsdWdpZnkocHJvamVjdC5uYW1lKX1gO1xufVxuXG5mdW5jdGlvbiBzaG91bGRQdWJsaXNoUHJvamVjdFN0ZXBJZChwcm9qZWN0OiBQcm9qZWN0KSB7XG4gIHJldHVybiBgY2hlY2stJHtwdWJsaXNoUHJvamVjdE91dHB1dElkKHByb2plY3QpfWA7XG59XG4iXX0=
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy95YXJuL21vbm9yZXBvLXJlbGVhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsbUNBQW9GO0FBQ3BGLDJEQUEwRjtBQUkxRixpRkFBMkY7QUFFM0YsZ0NBQWdDO0FBQ2hDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUNoQyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUN2QyxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztBQUU3QyxNQUFhLGVBQWdCLFNBQVEsa0JBQVM7SUFDNUM7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFnQjtRQUMvQixNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBWSxFQUF3QixFQUFFLENBQUMsQ0FBQyxZQUFZLGVBQWUsQ0FBQztRQUN2RyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQW9CRCxZQUFZLE9BQWdCLEVBQW1CLFVBQWtDLEVBQUU7UUFDakYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRDhCLFlBQU8sR0FBUCxPQUFPLENBQTZCO1FBYmxFLHNCQUFpQixHQUFHLElBQUksS0FBSyxFQU8xQyxDQUFDO1FBSVksc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQXlDLENBQUM7UUFLcEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQztRQUMvQyxNQUFNLEVBQUUsR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxJQUFJ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LDBDQXdVQzs7O0FBRUQsU0FBUyxPQUFPLENBQUMsQ0FBUztJQUN4QixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxPQUFnQjtJQUN6QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksK0JBQW1CLEVBQUUsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLE9BQWdCO0lBQzlDLE9BQU8sV0FBVyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDNUMsQ0FBQztBQUVELFNBQVMsMEJBQTBCLENBQUMsT0FBZ0I7SUFDbEQsT0FBTyxTQUFTLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBnaXRodWIsIHJlbGVhc2UgYXMgcHJvamVuUmVsZWFzZSwgQ29tcG9uZW50LCBQcm9qZWN0LCBUYXNrIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEJVSUxEX0FSVElGQUNUX05BTUUsIFBFUk1JU1NJT05fQkFDS1VQX0ZJTEUgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVG9vbHMgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgTW9ub3JlcG9SZWxlYXNlT3B0aW9ucyB9IGZyb20gJy4vbW9ub3JlcG8tcmVsZWFzZS1vcHRpb25zJztcbmltcG9ydCB7IFR5cGVTY3JpcHRXb3Jrc3BhY2UgfSBmcm9tICcuL3R5cGVzY3JpcHQtd29ya3NwYWNlJztcbmltcG9ydCB7IFdvcmtzcGFjZVJlbGVhc2UsIFdvcmtzcGFjZVJlbGVhc2VPcHRpb25zIH0gZnJvbSAnLi90eXBlc2NyaXB0LXdvcmtzcGFjZS1yZWxlYXNlJztcblxuLy8gY29waWVkIGZyb20gcHJvamVuL3JlbGVhc2UudHNcbmNvbnN0IFJFTEVBU0VfSk9CSUQgPSAncmVsZWFzZSc7XG5jb25zdCBHSVRfUkVNT1RFX1NURVBJRCA9ICdnaXRfcmVtb3RlJztcbmNvbnN0IExBVEVTVF9DT01NSVRfT1VUUFVUID0gJ2xhdGVzdF9jb21taXQnO1xuXG5leHBvcnQgY2xhc3MgTW9ub3JlcG9SZWxlYXNlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGBNb25vcmVwb1JlbGVhc2VXb3JrZmxvd2AgY29tcG9uZW50IG9mIGEgcHJvamVjdCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcHJvamVjdFxuICAgKiBkb2VzIG5vdCBoYXZlIGEgTW9ub3JlcG9SZWxlYXNlV29ya2Zsb3cgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihwcm9qZWN0OiBQcm9qZWN0KTogTW9ub3JlcG9SZWxlYXNlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc01vbm9yZXBvUmVsZWFzZVdvcmtmbG93ID0gKGM6IENvbXBvbmVudCk6IGMgaXMgTW9ub3JlcG9SZWxlYXNlID0+IGMgaW5zdGFuY2VvZiBNb25vcmVwb1JlbGVhc2U7XG4gICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzTW9ub3JlcG9SZWxlYXNlV29ya2Zsb3cpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBicmFuY2hOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2l0aHViOiBnaXRodWIuR2l0SHViO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbGVhc2VUcmlnZ2VyOiBwcm9qZW5SZWxlYXNlLlJlbGVhc2VUcmlnZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkV2l0aE54OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHdzUnVuOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZXNUb1JlbGVhc2UgPSBuZXcgQXJyYXk8e1xuICAgIHJlYWRvbmx5IHdvcmtzcGFjZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHJlbGVhc2U6IHtcbiAgICAgIHJlYWRvbmx5IHdvcmtzcGFjZTogVHlwZVNjcmlwdFdvcmtzcGFjZTtcbiAgICAgIHJlYWRvbmx5IHB1Ymxpc2hlcjogcHJvamVuUmVsZWFzZS5QdWJsaXNoZXI7XG4gICAgICByZWFkb25seSBvcHRpb25zOiBQYXJ0aWFsPHByb2plblJlbGVhc2UuQnJhbmNoT3B0aW9ucz47XG4gICAgfTtcbiAgfT4oKTtcblxuICBwcml2YXRlIHdvcmtmbG93PzogZ2l0aHViLlRhc2tXb3JrZmxvdztcbiAgcHJpdmF0ZSByZWxlYXNlVGFzaz86IFRhc2s7XG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya3NwYWNlUmVsZWFzZXMgPSBuZXcgTWFwPFR5cGVTY3JpcHRXb3Jrc3BhY2UsIFdvcmtzcGFjZVJlbGVhc2U+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBNb25vcmVwb1JlbGVhc2VPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuYnJhbmNoTmFtZSA9IG9wdGlvbnMuYnJhbmNoTmFtZSA/PyAnbWFpbic7XG4gICAgY29uc3QgZ2ggPSBnaXRodWIuR2l0SHViLm9mKHByb2plY3QpO1xuICAgIGlmICghZ2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvamVjdCBpcyBub3QgYSBHaXRIdWIgcHJvamVjdDogJHtwcm9qZWN0fWApO1xuICAgIH1cbiAgICB0aGlzLmdpdGh1YiA9IGdoO1xuICAgIHRoaXMucmVsZWFzZVRyaWdnZXIgPSBvcHRpb25zLnJlbGVhc2VUcmlnZ2VyID8/IHByb2plblJlbGVhc2UuUmVsZWFzZVRyaWdnZXIuY29udGludW91cygpO1xuICAgIHRoaXMuYnVpbGRXaXRoTnggPSBvcHRpb25zLmJ1aWxkV2l0aE54ID8/IGZhbHNlO1xuICAgIHRoaXMud3NSdW4gPSBvcHRpb25zLnlhcm5CZXJyeSA/ICd5YXJuIHdvcmtzcGFjZXMgZm9yZWFjaCAtLWFsbCBydW4nIDogJ3lhcm4gd29ya3NwYWNlcyBydW4nO1xuICB9XG5cbiAgcHVibGljIHdvcmtzcGFjZVJlbGVhc2UocHJvamVjdDogVHlwZVNjcmlwdFdvcmtzcGFjZSkge1xuICAgIGNvbnN0IHJldCA9IHRoaXMud29ya3NwYWNlUmVsZWFzZXMuZ2V0KHByb2plY3QpO1xuICAgIGlmICghcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHJlbGVhc2UgZm9yIHByb2plY3QgJHtwcm9qZWN0Lm5hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgYWRkV29ya3NwYWNlKHByb2plY3Q6IFR5cGVTY3JpcHRXb3Jrc3BhY2UsIG9wdGlvbnM6IFdvcmtzcGFjZVJlbGVhc2VPcHRpb25zKSB7XG4gICAgY29uc3Qgd29ya3NwYWNlUmVsZWFzZSA9IG5ldyBXb3Jrc3BhY2VSZWxlYXNlKHByb2plY3QsIHtcbiAgICAgIHB1Ymxpc2hUb05wbTogdGhpcy5vcHRpb25zLnB1Ymxpc2hUb05wbSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICAvLyBNYWtlIHRoZXNlIHB1YmxpY2x5IGFjY2Vzc2libGVcbiAgICB0aGlzLndvcmtzcGFjZVJlbGVhc2VzLnNldChwcm9qZWN0LCB3b3Jrc3BhY2VSZWxlYXNlKTtcblxuICAgIGlmICghb3B0aW9ucy5wcml2YXRlICYmIHdvcmtzcGFjZVJlbGVhc2UucHVibGlzaGVyKSB7XG4gICAgICB0aGlzLm9idGFpblJlbGVhc2VUYXNrKCk7XG5cbiAgICAgIHRoaXMucGFja2FnZXNUb1JlbGVhc2UucHVzaCh7XG4gICAgICAgIHdvcmtzcGFjZURpcmVjdG9yeTogcHJvamVjdC53b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICAgIHJlbGVhc2U6IHtcbiAgICAgICAgICB3b3Jrc3BhY2U6IHdvcmtzcGFjZVJlbGVhc2Uud29ya3NwYWNlLFxuICAgICAgICAgIHB1Ymxpc2hlcjogd29ya3NwYWNlUmVsZWFzZS5wdWJsaXNoZXIsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgLy8gZW5mb3JjZWQgb3B0aW9uc1xuICAgICAgICAgICAgd29ya2Zsb3dOYW1lOiB0aGlzLm9wdGlvbnMucmVsZWFzZVdvcmtmbG93TmFtZSxcbiAgICAgICAgICAgIHRhZ1ByZWZpeDogYCR7cHJvamVjdC5uYW1lfUBgLFxuXG4gICAgICAgICAgICAvLyBvcHRpb25zIHRoYXQgbWF5IGJlIG92ZXJyaWRlIGxvY2FsbHlcbiAgICAgICAgICAgIG1ham9yVmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uQnJhbmNoT3B0aW9ucy5tYWpvclZlcnNpb24gPz8gdGhpcy5vcHRpb25zLm1ham9yVmVyc2lvbixcbiAgICAgICAgICAgIG1pbk1ham9yVmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uQnJhbmNoT3B0aW9ucy5taW5NYWpvclZlcnNpb24gPz8gdGhpcy5vcHRpb25zLm1pbk1ham9yVmVyc2lvbixcbiAgICAgICAgICAgIHByZXJlbGVhc2U6IG9wdGlvbnMudmVyc2lvbkJyYW5jaE9wdGlvbnMucHJlcmVsZWFzZSA/PyB0aGlzLm9wdGlvbnMucHJlcmVsZWFzZSxcbiAgICAgICAgICAgIG5wbURpc3RUYWc6IG9wdGlvbnMubnBtRGlzdFRhZyA/PyB0aGlzLm9wdGlvbnMubnBtRGlzdFRhZyxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBvcHRpb25zLmVudmlyb25tZW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMucmVsZWFzZVRhc2spIHtcbiAgICAgIC8vIFdlIGRpZG4ndCBlbmQgdXAgYWRkaW5nIGFueSBwYWNrYWdlc1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3JlYXRlUHVibGlzaGluZ01lY2hhbmlzbSgpO1xuICAgIHRoaXMucmVuZGVyUGFja2FnZVVwbG9hZHMoKTtcbiAgICB0aGlzLnJlbmRlclB1Ymxpc2hKb2JzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclBhY2thZ2VVcGxvYWRzKCkge1xuICAgIGNvbnN0IG5vTmV3Q29tbWl0cyA9IGBcXCR7eyBzdGVwcy4ke0dJVF9SRU1PVEVfU1RFUElEfS5vdXRwdXRzLiR7TEFURVNUX0NPTU1JVF9PVVRQVVR9ID09IGdpdGh1Yi5zaGEgfX1gO1xuXG4gICAgZm9yIChjb25zdCB7IHdvcmtzcGFjZURpcmVjdG9yeSwgcmVsZWFzZSB9IG9mIHRoaXMucGFja2FnZXNUb1JlbGVhc2UpIHtcbiAgICAgIGNvbnN0IGpvYiA9IHRoaXMud29ya2Zsb3c/LmdldEpvYihSRUxFQVNFX0pPQklEKSBhcyBnaXRodWIud29ya2Zsb3dzLkpvYiB8IHVuZGVmaW5lZDtcbiAgICAgIGpvYj8uc3RlcHMucHVzaChcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGAke3JlbGVhc2Uud29ya3NwYWNlLm5hbWV9OiBCYWNrdXAgYXJ0aWZhY3QgcGVybWlzc2lvbnNgLFxuICAgICAgICAgIGlmOiBub05ld0NvbW1pdHMsXG4gICAgICAgICAgY29udGludWVPbkVycm9yOiB0cnVlLFxuICAgICAgICAgIHJ1bjogYGNkICR7cmVsZWFzZS53b3Jrc3BhY2UuYXJ0aWZhY3RzRGlyZWN0b3J5fSAmJiBnZXRmYWNsIC1SIC4gPiAke1BFUk1JU1NJT05fQkFDS1VQX0ZJTEV9YCxcbiAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICAgIH0sXG4gICAgICAgIGdpdGh1Yi5Xb3JrZmxvd1N0ZXBzLnVwbG9hZEFydGlmYWN0KHtcbiAgICAgICAgICBuYW1lOiBgJHtyZWxlYXNlLndvcmtzcGFjZS5uYW1lfTogVXBsb2FkIGFydGlmYWN0YCxcbiAgICAgICAgICBpZjogbm9OZXdDb21taXRzLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgIC8vIEV2ZXJ5IGFydGlmYWN0IG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lXG4gICAgICAgICAgICBuYW1lOiBidWlsZEFydGlmYWN0TmFtZShyZWxlYXNlLndvcmtzcGFjZSksXG4gICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4od29ya3NwYWNlRGlyZWN0b3J5LCByZWxlYXNlLndvcmtzcGFjZS5hcnRpZmFjdHNEaXJlY3RvcnkpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclB1Ymxpc2hKb2JzKCkge1xuICAgIGZvciAoY29uc3QgeyByZWxlYXNlIH0gb2YgdGhpcy5wYWNrYWdlc1RvUmVsZWFzZSkge1xuICAgICAgY29uc3QgcGFja2FnZVB1Ymxpc2hKb2JzID0gcmVsZWFzZS5wdWJsaXNoZXIuX3JlbmRlckpvYnNGb3JCcmFuY2godGhpcy5icmFuY2hOYW1lLCByZWxlYXNlLm9wdGlvbnMpO1xuXG4gICAgICBmb3IgKGNvbnN0IGpvYiBvZiBPYmplY3QudmFsdWVzKHBhY2thZ2VQdWJsaXNoSm9icykpIHtcbiAgICAgICAgLy8gRmluZCB0aGUgJ2Rvd25sb2FkLWFydGlmYWN0JyBqb2IgYW5kIHJlcGxhY2UgdGhlIGJ1aWxkIGFydGlmYWN0IG5hbWUgd2l0aCB0aGUgdW5pcXVlIHBlci1wcm9qZWN0IG9uZVxuICAgICAgICBjb25zdCBkb3dubG9hZFN0ZXAgPSBqb2Iuc3RlcHMuZmluZCgoaikgPT4gai51c2VzPy5zdGFydHNXaXRoKCdhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0QCcpKTtcbiAgICAgICAgaWYgKCFkb3dubG9hZFN0ZXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGRvd25sb2FkU3RlcCBhbW9uZyBzdGVwczogJHtKU09OLnN0cmluZ2lmeShqb2Iuc3RlcHMsIHVuZGVmaW5lZCwgMil9YCk7XG4gICAgICAgIH1cbiAgICAgICAgKGRvd25sb2FkU3RlcC53aXRoID8/IHt9KS5uYW1lID0gYnVpbGRBcnRpZmFjdE5hbWUocmVsZWFzZS53b3Jrc3BhY2UpO1xuICAgICAgfVxuXG4gICAgICAvLyBNYWtlIHRoZSBqb2IgbmFtZXMgdW5pcXVlXG4gICAgICB0aGlzLndvcmtmbG93Py5hZGRKb2JzKFxuICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMocGFja2FnZVB1Ymxpc2hKb2JzKS5tYXAoKFtrZXksIGpvYl0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IHNsdWdpZnkoYCR7cmVsZWFzZS53b3Jrc3BhY2UubmFtZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IG5lZWRzID0gKGpvYi5uZWVkcyA/PyBbXSkubWFwKGRlcCA9PiB7XG4gICAgICAgICAgICAgIC8vIEFsbCBwdWJsaXNoIGpvYnMgZGVwZW5kIG9uIHRoZSBtYWluIHJlbGVhc2Ugam9iXG4gICAgICAgICAgICAgIGlmIChkZXAgPT09ICdyZWxlYXNlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyAuLi4gYW5kIHBvc3NpYmx5IG9uIGluZGl2aWR1YWwgcHVibGlzaCBqb2JzIHRoYXQgYXJlIHByZWZpeGVkXG4gICAgICAgICAgICAgIHJldHVybiBgJHtwcmVmaXh9XyR7ZGVwfWA7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gd2UgYnVpbGQgdGhlIHRvb2xzIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBtb2RpZnkgaXQgd2l0aCBvdXJcbiAgICAgICAgICAgIC8vIG93biBjdXN0b20gcHJvcGVydGllcy5cbiAgICAgICAgICAgIGNvbnN0IHRvb2xzUmVidWlsdDogVG9vbHMgPSB7XG4gICAgICAgICAgICAgIC4uLmpvYi50b29scyxcbiAgICAgICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgICAgIC4uLmpvYi50b29scz8ubm9kZSA/PyB7fSxcbiAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIG5vZGUgdmVyc2lvbiBzcGVjaWZpZWQgb24gdGhlIG1vbm8gcmVwby5cbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm9wdGlvbnMubm9kZVZlcnNpb24gPz8gam9iLnRvb2xzPy5ub2RlPy52ZXJzaW9uID8/ICdsdHMvKicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBgJHtwcmVmaXh9XyR7a2V5fWAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5qb2IsXG4gICAgICAgICAgICAgICAgdG9vbHM6IHRvb2xzUmVidWlsdCxcbiAgICAgICAgICAgICAgICBuZWVkcyxcbiAgICAgICAgICAgICAgICBpZjogYFxcJHt7IG5lZWRzLnJlbGVhc2Uub3V0cHV0cy5sYXRlc3RfY29tbWl0ID09IGdpdGh1Yi5zaGEgJiYgbmVlZHMucmVsZWFzZS5vdXRwdXRzLiR7cHVibGlzaFByb2plY3RPdXRwdXRJZChcbiAgICAgICAgICAgICAgICAgIHJlbGVhc2Uud29ya3NwYWNlLFxuICAgICAgICAgICAgICAgICl9ID09ICd0cnVlJyB9fWAsXG4gICAgICAgICAgICAgICAgbmFtZTogYCR7cmVsZWFzZS53b3Jrc3BhY2UubmFtZX06ICR7am9iLm5hbWV9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb2J0YWluUmVsZWFzZVRhc2soKTogVGFzayB7XG4gICAgaWYgKHRoaXMucmVsZWFzZVRhc2spIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbGVhc2VUYXNrO1xuICAgIH1cblxuICAgIGNvbnN0IGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFJFTEVBU0U6ICd0cnVlJyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYWpvclZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgZW52Lk1BSk9SID0gdGhpcy5vcHRpb25zLm1ham9yVmVyc2lvbi50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMubWluTWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaW5NYWpvclZlcnNpb24gYW5kIG1ham9yVmVyc2lvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4nKTtcbiAgICAgIH1cblxuICAgICAgZW52Lk1JTl9NQUpPUiA9IHRoaXMub3B0aW9ucy5taW5NYWpvclZlcnNpb24udG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbGVhc2VUYXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soJ3JlbGVhc2UnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ByZXBhcmUgYSByZWxlYXNlIGZyb20gYWxsIG1vbm9yZXBvIHBhY2thZ2VzJyxcbiAgICAgIGVudixcbiAgICB9KTtcbiAgICAvLyBVbnJvbGwgb3V0IHRoZSAncmVsZWFzZScgdGFzaywgYW5kIGRvIGFsbCB0aGUgcGhhc2VzIGZvciBlYWNoIGluZGl2aWR1YWwgcGFja2FnZS4gV2UgbmVlZCB0byAnYnVtcCcgYXQgdGhlIHNhbWVcbiAgICAvLyB0aW1lIHNvIHRoYXQgdGhlIGRlcGVuZGVuY3kgdmVyc2lvbnMgaW4gYWxsICdwYWNrYWdlLmpzb24ncyBhcmUgY29ycmVjdC5cbiAgICB0aGlzLnJlbGVhc2VUYXNrLmV4ZWMoYCR7dGhpcy53c1J1bn0gc2h4IHJtIC1yZiBkaXN0YCk7XG4gICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKGAke3RoaXMud3NSdW59IGJ1bXBgKTtcbiAgICBpZiAodGhpcy5idWlsZFdpdGhOeCkge1xuICAgICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKCdueCBydW4tbWFueSAtdCBidWlsZCcpO1xuICAgICAgdGhpcy5yZWxlYXNlVGFzay5lbnYoJ05YX1NLSVBfTlhfQ0FDSEUnLCAndHJ1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbGVhc2VUYXNrLmV4ZWMoYCR7dGhpcy53c1J1bn0gYnVpbGRgKTtcbiAgICB9XG4gICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKGAke3RoaXMud3NSdW59IHVuYnVtcGApO1xuICAgIC8vIGFudGktdGFtcGVyIGNoZWNrIChmYWlscyBpZiB0aGVyZSB3ZXJlIGNoYW5nZXMgdG8gY29tbWl0dGVkIGZpbGVzKVxuICAgIC8vIHRoaXMgd2lsbCBpZGVudGlmeSBhbnkgbm9uLWNvbW1pdHRlZCBmaWxlcyBnZW5lcmF0ZWQgZHVyaW5nIGJ1aWxkIChlLmcuIHRlc3Qgc25hcHNob3RzKVxuICAgIHRoaXMucmVsZWFzZVRhc2suZXhlYyhwcm9qZW5SZWxlYXNlLlJlbGVhc2UuQU5USV9UQU1QRVJfQ01EKTtcblxuICAgIHJldHVybiB0aGlzLnJlbGVhc2VUYXNrO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQdWJsaXNoaW5nTWVjaGFuaXNtKCkge1xuICAgIGlmICh0aGlzLnJlbGVhc2VUcmlnZ2VyLmlzTWFudWFsKSB7XG4gICAgICB0aGlzLmNyZWF0ZVB1Ymxpc2hUYXNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JlYXRlUHVibGlzaFdvcmtmbG93KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQdWJsaXNoVGFzaygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbnVhbCBwdWJsaXNoaW5nIGlzIG5vdCBzdXBwb3J0ZWQgcmlnaHQgbm93Jyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVB1Ymxpc2hXb3JrZmxvdygpIHtcbiAgICBjb25zdCB3b3JrZmxvd05hbWUgPVxuICAgICAgdGhpcy5vcHRpb25zLnJlbGVhc2VXb3JrZmxvd05hbWUgPz9cbiAgICAgIChbJ21hc3RlcicsICdtYWluJ10uaW5jbHVkZXModGhpcy5icmFuY2hOYW1lKSA/ICdyZWxlYXNlJyA6IGByZWxlYXNlLSR7dGhpcy5icmFuY2hOYW1lfWApO1xuXG4gICAgLy8gVGhlIGFycmF5cyBhcmUgYmVpbmcgY2xvbmVkIHRvIGF2b2lkIGFjY3VtdWxhdGluZyB2YWx1ZXMgZnJvbSBwcmV2aW91cyBicmFuY2hlc1xuICAgIGNvbnN0IHByZUJ1aWxkU3RlcHMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTZXR1cCBOb2RlLmpzJyxcbiAgICAgICAgdXNlczogJ2FjdGlvbnMvc2V0dXAtbm9kZUB2NicsXG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAnbm9kZS12ZXJzaW9uJzogKHRoaXMucHJvamVjdCBhcyBhbnkpLm5vZGVWZXJzaW9uID8/ICdsdHMvKicsXG4gICAgICAgICAgJ3BhY2thZ2UtbWFuYWdlci1jYWNoZSc6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ0luc3RhbGwgZGVwZW5kZW5jaWVzJyxcbiAgICAgICAgcnVuOiB0aGlzLm9wdGlvbnMueWFybkJlcnJ5ID8gJ3lhcm4gaW5zdGFsbCAtLWltbXV0YWJsZScgOiAneWFybiBpbnN0YWxsIC0tY2hlY2stZmlsZXMgLS1mcm96ZW4tbG9ja2ZpbGUnLFxuICAgICAgfSxcbiAgICAgIC4uLih0aGlzLm9wdGlvbnMucmVsZWFzZVdvcmtmbG93U2V0dXBTdGVwcyA/PyBbXSksXG4gICAgXTtcbiAgICBjb25zdCBwb3N0QnVpbGRTdGVwcyA9IFsuLi4odGhpcy5vcHRpb25zLnBvc3RCdWlsZFN0ZXBzID8/IFtdKV07XG5cbiAgICAvLyBBZGQgYW4gb3V0cHV0IHRvIHRoZSBqb2IgdG8gaW5kaWNhdGUgaWYgYSBjZXJ0YWluIHBhY2thZ2UgbmVlZHMgcHVibGlzaGluZ1xuICAgIGNvbnN0IHNob3VsZFB1Ymxpc2hPdXRwdXRzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgdGhpcy5wYWNrYWdlc1RvUmVsZWFzZS5tYXAoKHsgcmVsZWFzZSB9KSA9PiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgcHVibGlzaFByb2plY3RPdXRwdXRJZChyZWxlYXNlLndvcmtzcGFjZSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RlcElkOiBzaG91bGRQdWJsaXNoUHJvamVjdFN0ZXBJZChyZWxlYXNlLndvcmtzcGFjZSksXG4gICAgICAgICAgICBvdXRwdXROYW1lOiAncHVibGlzaCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgcHJvcG9zZWQgcmVsZWFzZSB0YWcgYWxyZWFkeSBleGlzdHNcbiAgICAvLyBPbmx5IGlmIGl0IGRvZXNuJ3QgZXhpc3QgeWV0IHNob3VsZCB3ZSBwdWJsaXNoXG4gICAgZm9yIChjb25zdCB7IHdvcmtzcGFjZURpcmVjdG9yeSwgcmVsZWFzZSB9IG9mIHRoaXMucGFja2FnZXNUb1JlbGVhc2UpIHtcbiAgICAgIHBvc3RCdWlsZFN0ZXBzLnB1c2goe1xuICAgICAgICBpZDogc2hvdWxkUHVibGlzaFByb2plY3RTdGVwSWQocmVsZWFzZS53b3Jrc3BhY2UpLFxuICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICAgIHJ1bjogJyhnaXQgbHMtcmVtb3RlIC1xIC0tZXhpdC1jb2RlIC0tdGFncyBvcmlnaW4gJChjYXQgZGlzdC9yZWxlYXNldGFnLnR4dCkgJiYgKGVjaG8gXCJwdWJsaXNoPWZhbHNlXCIgPj4gJEdJVEhVQl9PVVRQVVQpKSB8fCBlY2hvIFwicHVibGlzaD10cnVlXCIgPj4gJEdJVEhVQl9PVVRQVVQnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgbmV3IGNvbW1pdHMgd2VyZSBwdXNoZWQgdG8gdGhlIHJlcG8gd2hpbGUgd2Ugd2VyZSBidWlsZGluZy5cbiAgICAvLyBpZiBuZXcgY29tbWl0cyBoYXZlIGJlZW4gcHVzaGVkLCB3ZSB3aWxsIGNhbmNlbCB0aGlzIHJlbGVhc2VcbiAgICBpZiAodGhpcy5vcHRpb25zLnJlbGVhc2VUcmlnZ2VyPy5pc0NvbnRpbnVvdXMgPz8gdHJ1ZSkge1xuICAgICAgcG9zdEJ1aWxkU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdDaGVjayBmb3IgbmV3IGNvbW1pdHMnLFxuICAgICAgICBpZDogR0lUX1JFTU9URV9TVEVQSUQsXG4gICAgICAgIHJ1bjogYGVjaG8gXCIke0xBVEVTVF9DT01NSVRfT1VUUFVUfT0kKGdpdCBscy1yZW1vdGUgb3JpZ2luIC1oIFxcJHt7IGdpdGh1Yi5yZWYgfX0gfCBjdXQgLWYxKVwiID4+ICRHSVRIVUJfT1VUUFVUYCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3Igbm9uLWNvbnRpbnVvdXMgYnVpbGRzIHdlJ2xsIGp1c3QgcHV0IHRoZSB2YWx1ZSB0aGVyZSB0aGF0IGRvd25zdHJlYW0gc3RlcHMgYXJlIGdvaW5nIHRvIGNvbXBhcmUgYWdhaW5zdFxuICAgICAgcG9zdEJ1aWxkU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdPdXRwdXQgdGhlIHNoYSB2YWx1ZSB0aGF0IGRvd25zdHJlYW0gY2hlY2tzIGV4cGVjdCcsXG4gICAgICAgIGlkOiBHSVRfUkVNT1RFX1NURVBJRCxcbiAgICAgICAgcnVuOiBgZWNobyBcIiR7TEFURVNUX0NPTU1JVF9PVVRQVVR9PVxcJHt7IGdpdGh1Yi5zaGEgfX1cIiA+PiAkR0lUSFVCX09VVFBVVGAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLndvcmtmbG93ID0gbmV3IGdpdGh1Yi5UYXNrV29ya2Zsb3codGhpcy5naXRodWIsIHtcbiAgICAgIG5hbWU6IHdvcmtmbG93TmFtZSxcbiAgICAgIGpvYklkOiBSRUxFQVNFX0pPQklELFxuICAgICAgb3V0cHV0czoge1xuICAgICAgICBsYXRlc3RfY29tbWl0OiB7XG4gICAgICAgICAgc3RlcElkOiBHSVRfUkVNT1RFX1NURVBJRCxcbiAgICAgICAgICBvdXRwdXROYW1lOiBMQVRFU1RfQ09NTUlUX09VVFBVVCxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uc2hvdWxkUHVibGlzaE91dHB1dHMsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgc2NoZWR1bGU6IHRoaXMucmVsZWFzZVRyaWdnZXIuc2NoZWR1bGUgPyBbeyBjcm9uOiB0aGlzLnJlbGVhc2VUcmlnZ2VyLnNjaGVkdWxlIH1dIDogdW5kZWZpbmVkLFxuICAgICAgICBwdXNoOiB0aGlzLnJlbGVhc2VUcmlnZ2VyLmlzQ29udGludW91cyA/IHsgYnJhbmNoZXM6IFt0aGlzLmJyYW5jaE5hbWVdIH0gOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgY29udGFpbmVyOiB0aGlzLm9wdGlvbnMud29ya2Zsb3dDb250YWluZXJJbWFnZSA/IHsgaW1hZ2U6IHRoaXMub3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlIH0gOiB1bmRlZmluZWQsXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgIH0sXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBjb250ZW50czogJ3dyaXRlJyBhcyBhbnksXG4gICAgICB9LFxuICAgICAgY2hlY2tvdXRXaXRoOiB7XG4gICAgICAgIC8vIHdlIG11c3QgdXNlICdmZXRjaC1kZXB0aD0wJyBpbiBvcmRlciB0byBmZXRjaCBhbGwgdGFnc1xuICAgICAgICAvLyBvdGhlcndpc2UgdGFncyBhcmUgbm90IGNoZWNrZWQgb3V0XG4gICAgICAgIGZldGNoRGVwdGg6IDAsXG4gICAgICB9LFxuICAgICAgcHJlQnVpbGRTdGVwcyxcbiAgICAgIHRhc2s6IHRoaXMucmVsZWFzZVRhc2shLFxuICAgICAgcG9zdEJ1aWxkU3RlcHMsXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy53b3JrZmxvd1J1bnNPbixcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzbHVnaWZ5KHg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB4LnJlcGxhY2UoL1teYS16QS1aMC05Xy1dL2csICctJykucmVwbGFjZSgvXlswLTktXSsvLCAnJyk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXJ0aWZhY3ROYW1lKHByb2plY3Q6IFByb2plY3QpIHtcbiAgcmV0dXJuIHNsdWdpZnkoYCR7cHJvamVjdC5uYW1lfV8ke0JVSUxEX0FSVElGQUNUX05BTUV9YCk7XG59XG5cbmZ1bmN0aW9uIHB1Ymxpc2hQcm9qZWN0T3V0cHV0SWQocHJvamVjdDogUHJvamVjdCkge1xuICByZXR1cm4gYHB1Ymxpc2gtJHtzbHVnaWZ5KHByb2plY3QubmFtZSl9YDtcbn1cblxuZnVuY3Rpb24gc2hvdWxkUHVibGlzaFByb2plY3RTdGVwSWQocHJvamVjdDogUHJvamVjdCkge1xuICByZXR1cm4gYGNoZWNrLSR7cHVibGlzaFByb2plY3RPdXRwdXRJZChwcm9qZWN0KX1gO1xufVxuIl19
@@ -115,19 +115,20 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
115
115
  if (fmtTask) {
116
116
  buildTask.spawn(fmtTask);
117
117
  }
118
+ const wsRun = options.yarnBerry ? 'yarn workspaces foreach --all run' : 'yarn workspaces run';
118
119
  if (buildWithNx) {
119
120
  buildTask.exec('nx run-many -t build');
120
121
  this.github?.tryFindWorkflow('build')?.file?.patch(projen_1.JsonPatch.add('/jobs/build/env/NX_SKIP_NX_CACHE', 'true'));
121
122
  }
122
123
  else {
123
- buildTask.exec('yarn workspaces run build');
124
+ buildTask.exec(`${wsRun} build`);
124
125
  }
125
126
  // Run in all workspaces tasks
126
- this.tasks.tryFind('compile')?.reset('yarn workspaces run compile');
127
- this.tasks.tryFind('package')?.reset('yarn workspaces run package');
128
- this.tasks.tryFind('test')?.reset('yarn workspaces run test');
127
+ this.tasks.tryFind('compile')?.reset(`${wsRun} compile`);
128
+ this.tasks.tryFind('package')?.reset(`${wsRun} package`);
129
+ this.tasks.tryFind('test')?.reset(`${wsRun} test`);
129
130
  this.addTask('run', {
130
- exec: 'yarn workspaces run',
131
+ exec: wsRun,
131
132
  receiveArgs: true,
132
133
  });
133
134
  // Upgrade all packages
@@ -136,12 +137,11 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
136
137
  env: { CI: '0' },
137
138
  description: 'Upgrade dependencies in all workspaces',
138
139
  steps: [
139
- // It is not safe anymore to have 'npm-check-updates' in a Yarn 1 dependency tree, so run it in a separate
140
- // tree by using npx.
141
- { exec: 'npx npm-check-updates@16 --dep=dev,optional,peer,prod,bundle --upgrade --target=minor' },
142
- { exec: 'yarn workspaces run check-for-updates' },
143
- { exec: 'yarn install --check-files' },
144
- { exec: 'yarn upgrade' },
140
+ // It is not safe anymore to have 'npm-check-updates' in a Yarn 1 dependency tree, so run it in a separate tree.
141
+ { exec: `${options.yarnBerry ? 'yarn dlx' : 'npx'} npm-check-updates@20 --dep=dev,optional,peer,prod,bundle --upgrade --target=minor` },
142
+ { exec: `${wsRun} check-for-updates` },
143
+ { exec: options.yarnBerry ? 'yarn install' : 'yarn install --check-files' },
144
+ { exec: options.yarnBerry ? 'yarn up' : 'yarn upgrade' },
145
145
  { spawn: 'default' },
146
146
  { spawn: 'post-upgrade' },
147
147
  ],
@@ -162,6 +162,7 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
162
162
  this.monorepoRelease = new monorepo_release_1.MonorepoRelease(this, {
163
163
  workflowRunsOn: options.workflowRunsOn,
164
164
  buildWithNx,
165
+ yarnBerry: options.yarnBerry,
165
166
  ...options.releaseOptions,
166
167
  });
167
168
  }
@@ -190,8 +191,16 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
190
191
  this.package.addField('private', true);
191
192
  this.package.addField('workspaces', {
192
193
  packages: this.projects.map((p) => p.workspaceDirectory),
193
- ...this.renderNoHoist(),
194
+ ...(!this.options.yarnBerry ? this.renderNoHoist() : undefined),
194
195
  });
196
+ // Auto-set hoistingLimits for workspaces with bundled deps when using Yarn Berry
197
+ if (this.options.yarnBerry) {
198
+ for (const p of this.projects) {
199
+ if (p.bundledDeps.length > 0) {
200
+ p.package.addField('installConfig', { hoistingLimits: 'workspaces' });
201
+ }
202
+ }
203
+ }
195
204
  this.tsconfig?.file.addOverride('include', []);
196
205
  this.tsconfigDev?.file.addOverride('include', ['.projenrc.ts', 'projenrc/**/*.ts']);
197
206
  for (const tsconfig of [this.tsconfig, this.tsconfigDev]) {
@@ -234,7 +243,7 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
234
243
  }
235
244
  exports.Monorepo = Monorepo;
236
245
  _a = JSII_RTTI_SYMBOL_1;
237
- Monorepo[_a] = { fqn: "cdklabs-projen-project-types.yarn.Monorepo", version: "0.3.18" };
246
+ Monorepo[_a] = { fqn: "cdklabs-projen-project-types.yarn.Monorepo", version: "0.3.19" };
238
247
  function getObjFromFile(project, file) {
239
248
  return project.tryFindObjectFile(file)?.obj;
240
249
  }
@@ -269,5 +278,5 @@ class CdkLabsMonorepo extends Monorepo {
269
278
  }
270
279
  exports.CdkLabsMonorepo = CdkLabsMonorepo;
271
280
  _b = JSII_RTTI_SYMBOL_1;
272
- CdkLabsMonorepo[_b] = { fqn: "cdklabs-projen-project-types.yarn.CdkLabsMonorepo", version: "0.3.18" };
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi9tb25vcmVwby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE2QztBQUM3QyxtQ0FBc0c7QUFFdEcseURBQXFEO0FBQ3JELDZCQUEwQjtBQUcxQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFFOUU7O0dBRUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQUNqRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQVU7UUFDakMsT0FBTyxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQWVELFlBQTRCLE9BQXdCO1FBQ2xELEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLGNBQWMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsbUJBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZO1lBQ3pILGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQzNCLGFBQWEsRUFBRTtvQkFDYixVQUFVLEVBQUUsbUJBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWTtvQkFDbEQsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsYUFBYTtpQkFDM0M7YUFDRixDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2IsVUFBVSxFQUFFLEtBQUs7WUFDakIsSUFBSSxFQUFFLEtBQUs7WUFDWCxNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBZnVCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBSDVD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LENBQUM7UUFFSCxJQUFJLGVBQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQzFCLGdCQUFnQixFQUFFO2dCQUNoQixpQkFBaUIsRUFBRSxlQUFNLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsQ0FBQzthQUN2RztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBekJILDBDQTBCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGhQb3NpeCBmcm9tICdub2RlOnBhdGgvcG9zaXgnO1xuaW1wb3J0IHsgSnNvbkZpbGUsIFByb2plY3QsIGphdmFzY3JpcHQsIHR5cGVzY3JpcHQsIGdpdGh1YiwgRGVwZW5kZW5jeVR5cGUsIEpzb25QYXRjaCB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBNb25vcmVwb09wdGlvbnMgfSBmcm9tICcuL21vbm9yZXBvLW9wdGlvbnMnO1xuaW1wb3J0IHsgTW9ub3JlcG9SZWxlYXNlIH0gZnJvbSAnLi9tb25vcmVwby1yZWxlYXNlJztcbmltcG9ydCB7IE54IH0gZnJvbSAnLi9ueCc7XG5pbXBvcnQgeyBUeXBlU2NyaXB0V29ya3NwYWNlIH0gZnJvbSAnLi90eXBlc2NyaXB0LXdvcmtzcGFjZSc7XG5cbmNvbnN0IE1PTk9SRVBPX1NZTSA9IFN5bWJvbC5mb3IoJ2Nka2xhYnMtcHJvamVuLXByb2plY3QtdHlwZXMueWFybi5Nb25vcmVwbycpO1xuXG4vKipcbiAqIEEgbW9ub3JlcG8gdXNpbmcgeWFybiB3b3Jrc3BhY2VzLlxuICovXG5leHBvcnQgY2xhc3MgTW9ub3JlcG8gZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgcHVibGljIHN0YXRpYyBpc01vbm9yZXBvKHg6IFByb2plY3QpOiB4IGlzIE1vbm9yZXBvIHtcbiAgICByZXR1cm4gQm9vbGVhbih4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBNT05PUkVQT19TWU0gaW4geCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIE1vbm9yZXBvIFJlbGVhc2UgY29tcG9uZW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbW9ub3JlcG9SZWxlYXNlPzogTW9ub3JlcG9SZWxlYXNlO1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIHdoZXJlIHRoZSBhY3R1YWwgY29kZSBmb3IgdGhlIHBhY2thZ2UgbGl2ZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVwb3NpdG9yeVVybD86IHN0cmluZztcblxuICBwcml2YXRlIHByb2plY3RzID0gbmV3IEFycmF5PFR5cGVTY3JpcHRXb3Jrc3BhY2U+KCk7XG4gIHByaXZhdGUgcG9zdEluc3RhbGxEZXBlbmRlbmNpZXMgPSBuZXcgQXJyYXk8KCkgPT4gYm9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogTW9ub3JlcG9PcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBvcHRpb25zLnlhcm5CZXJyeSA/IGphdmFzY3JpcHQuTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQkVSUlkgOiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0NMQVNTSUMsXG4gICAgICB5YXJuQmVycnlPcHRpb25zOiBvcHRpb25zLnlhcm5CZXJyeSA/IHtcbiAgICAgICAgLi4ub3B0aW9ucy55YXJuQmVycnlPcHRpb25zLFxuICAgICAgICB5YXJuUmNPcHRpb25zOiB7XG4gICAgICAgICAgbm9kZUxpbmtlcjogamF2YXNjcmlwdC5ZYXJuTm9kZUxpbmtlci5OT0RFX01PRFVMRVMsXG4gICAgICAgICAgLi4ub3B0aW9ucy55YXJuQmVycnlPcHRpb25zPy55YXJuUmNPcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgcmVsZWFzZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTU9OT1JFUE9fU1lNLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5yZXBvc2l0b3J5VXJsID0gb3B0aW9ucy5yZXBvc2l0b3J5O1xuICAgIGNvbnN0IGJ1aWxkV2l0aE54ID0gQm9vbGVhbihvcHRpb25zLm54ICYmIG9wdGlvbnMuYnVpbGRXaXRoTngpO1xuXG4gICAgLy8gWWFybiBCZXJyeSBkZXBlbmRlbmNpZXNNZXRhIGZvciBidWlsZGFibGUgcGFja2FnZXNcbiAgICBpZiAob3B0aW9ucy5idWlsZGFibGVQYWNrYWdlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ2RlcGVuZGVuY2llc01ldGEnLCBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIG9wdGlvbnMuYnVpbGRhYmxlUGFja2FnZXMubWFwKChwa2cpID0+IFtwa2csIHsgYnVpbHQ6IHRydWUgfV0pLFxuICAgICAgKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgZm9ybWF0dGluZ1xuICAgICAqL1xuICAgIGlmIChvcHRpb25zLnByZXR0aWVyKSB7XG4gICAgICB0aGlzLmFkZERldkRlcHMoJ2VzbGludC1jb25maWctcHJldHRpZXInLCAnZXNsaW50LXBsdWdpbi1wcmV0dGllcicpO1xuICAgICAgbmV3IEpzb25GaWxlKHRoaXMsICcuZXNsaW50cmMuanNvbicsIHtcbiAgICAgICAgYWxsb3dDb21tZW50czogdHJ1ZSxcbiAgICAgICAgb2JqOiB7XG4gICAgICAgICAgcGx1Z2luczogWydAdHlwZXNjcmlwdC1lc2xpbnQnLCAncHJldHRpZXInXSxcbiAgICAgICAgICBwYXJzZXI6ICdAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyJyxcbiAgICAgICAgICBwYXJzZXJPcHRpb25zOiB7XG4gICAgICAgICAgICBlY21hVmVyc2lvbjogMjAxOCxcbiAgICAgICAgICAgIHNvdXJjZVR5cGU6ICdtb2R1bGUnLFxuICAgICAgICAgICAgcHJvamVjdDogJy4vdHNjb25maWcuZGV2Lmpzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaWdub3JlUGF0dGVybnM6IFsnIS5wcm9qZW5yYy50cyddLFxuICAgICAgICAgIGV4dGVuZHM6IFsncGx1Z2luOnByZXR0aWVyL3JlY29tbWVuZGVkJ10sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGFza3MuYWRkVGFzaygnZm10JywgeyBleGVjOiAnZXNsaW50IC0tZXh0IC50cyAtLWZpeCAtLW5vLWVycm9yLW9uLXVubWF0Y2hlZC1wYXR0ZXJuIHByb2plbnJjIC5wcm9qZW5yYy50cycgfSk7XG5cbiAgICAgIHRoaXMudnNjb2RlPy5leHRlbnNpb25zLmFkZFJlY29tbWVuZGF0aW9ucygnZXNiZW5wLnByZXR0aWVyLXZzY29kZScsICdkYmFldW1lci52c2NvZGUtZXNsaW50Jyk7XG4gICAgICB0aGlzLnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZygnZWRpdG9yLmRlZmF1bHRGb3JtYXR0ZXInLCAnZXNiZW5wLnByZXR0aWVyLXZzY29kZScpO1xuICAgICAgdGhpcy52c2NvZGU/LnNldHRpbmdzLmFkZFNldHRpbmcoJ2VzbGludC5mb3JtYXQuZW5hYmxlJywgdHJ1ZSk7XG4gICAgICB0aGlzLnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZ3MoeyAnZWRpdG9yLmRlZmF1bHRGb3JtYXR0ZXInOiAnZGJhZXVtZXIudnNjb2RlLWVzbGludCcgfSwgW1xuICAgICAgICAnamF2YXNjcmlwdCcsXG4gICAgICAgICd0eXBlc2NyaXB0JyxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIFZTQ29kZSBXb3Jrc3BhY2VcbiAgICAgKi9cbiAgICBpZiAob3B0aW9ucy52c2NvZGVXb3Jrc3BhY2UpIHtcbiAgICAgIGNvbnN0IHdvcmtzcGFjZUZpbGUgPSBgJHt0aGlzLm5hbWV9LmNvZGUtd29ya3NwYWNlYDtcbiAgICAgIG5ldyBKc29uRmlsZSh0aGlzLCB3b3Jrc3BhY2VGaWxlLCB7XG4gICAgICAgIGFsbG93Q29tbWVudHM6IHRydWUsXG4gICAgICAgIG9iajogKCkgPT4gKHtcbiAgICAgICAgICBmb2xkZXJzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb2xkZXJzOiBBcnJheTx7XG4gICAgICAgICAgICAgIHBhdGg6IHN0cmluZztcbiAgICAgICAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgICAgIH0+ID0gdGhpcy5wcm9qZWN0c1xuICAgICAgICAgICAgICAuc29ydCgocDEsIHAyKSA9PiBwMS5uYW1lLmxvY2FsZUNvbXBhcmUocDIubmFtZSkpXG4gICAgICAgICAgICAgIC5tYXAoKHApID0+ICh7IHBhdGg6IHAud29ya3NwYWNlRGlyZWN0b3J5IH0pKTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMudnNjb2RlV29ya3NwYWNlT3B0aW9ucz8uaW5jbHVkZVJvb3RXb3Jrc3BhY2UpIHtcbiAgICAgICAgICAgICAgZm9sZGVycy51bnNoaWZ0KHsgcGF0aDogJy4nLCBuYW1lOiBvcHRpb25zLnZzY29kZVdvcmtzcGFjZU9wdGlvbnM/LnJvb3RXb3Jrc3BhY2VOYW1lID8/ICc8cm9vdD4nIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZm9sZGVycztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNldHRpbmdzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXR0aW5ncyA9IChnZXRPYmpGcm9tRmlsZSh0aGlzLCAnLnZzY29kZS9zZXR0aW5ncy5qc29uJykgPz8ge30pIGFzIGFueTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnZzY29kZVdvcmtzcGFjZU9wdGlvbnM/LmluY2x1ZGVSb290V29ya3NwYWNlICYmIHRoaXMucHJvamVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHNldHRpbmdzWydmaWxlcy5leGNsdWRlJ10gPSB0aGlzLnByb2plY3RzLnJlZHVjZSgoZXhjbHVkZXMsIHApID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgLi4uZXhjbHVkZXMsXG4gICAgICAgICAgICAgICAgICBbcC53b3Jrc3BhY2VEaXJlY3Rvcnkuc3BsaXQocGF0aFBvc2l4LnNlcClbMF1dOiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0sIHNldHRpbmdzWydmaWxlcy5leGNsdWRlJ10gPz8ge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldHRpbmdzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXh0ZW5zaW9uczogKCkgPT4gZ2V0T2JqRnJvbUZpbGUodGhpcywgJy52c2NvZGUvZXh0ZW5zaW9ucy5qc29uJyksXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFza3NcbiAgICAgKi9cbiAgICAvLyBidWlsZCB0YXNrXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdidWlsZCcpO1xuICAgIGNvbnN0IGZtdFRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ2ZtdCcpO1xuICAgIGNvbnN0IGJ1aWxkVGFzayA9IHRoaXMudGFza3MuYWRkVGFzaygnYnVpbGQnKTtcbiAgICBpZiAodGhpcy5kZWZhdWx0VGFzaykge1xuICAgICAgYnVpbGRUYXNrLnNwYXduKHRoaXMuZGVmYXVsdFRhc2spO1xuICAgIH1cbiAgICBpZiAoZm10VGFzaykge1xuICAgICAgYnVpbGRUYXNrLnNwYXduKGZtdFRhc2spO1xuICAgIH1cbiAgICBpZiAoYnVpbGRXaXRoTngpIHtcbiAgICAgIGJ1aWxkVGFzay5leGVjKCdueCBydW4tbWFueSAtdCBidWlsZCcpO1xuICAgICAgdGhpcy5naXRodWI/LnRyeUZpbmRXb3JrZmxvdygnYnVpbGQnKT8uZmlsZT8ucGF0Y2goXG4gICAgICAgIEpzb25QYXRjaC5hZGQoJy9qb2JzL2J1aWxkL2Vudi9OWF9TS0lQX05YX0NBQ0hFJywgJ3RydWUnKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1aWxkVGFzay5leGVjKCd5YXJuIHdvcmtzcGFjZXMgcnVuIGJ1aWxkJyk7XG4gICAgfVxuXG4gICAgLy8gUnVuIGluIGFsbCB3b3Jrc3BhY2VzIHRhc2tzXG4gICAgdGhpcy50YXNrcy50cnlGaW5kKCdjb21waWxlJyk/LnJlc2V0KCd5YXJuIHdvcmtzcGFjZXMgcnVuIGNvbXBpbGUnKTtcbiAgICB0aGlzLnRhc2tzLnRyeUZpbmQoJ3BhY2thZ2UnKT8ucmVzZXQoJ3lhcm4gd29ya3NwYWNlcyBydW4gcGFja2FnZScpO1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgndGVzdCcpPy5yZXNldCgneWFybiB3b3Jrc3BhY2VzIHJ1biB0ZXN0Jyk7XG4gICAgdGhpcy5hZGRUYXNrKCdydW4nLCB7XG4gICAgICBleGVjOiAneWFybiB3b3Jrc3BhY2VzIHJ1bicsXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIFVwZ3JhZGUgYWxsIHBhY2thZ2VzXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCd1cGdyYWRlJyk7XG4gICAgdGhpcy50YXNrcy5hZGRUYXNrKCd1cGdyYWRlJywge1xuICAgICAgZW52OiB7IENJOiAnMCcgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVXBncmFkZSBkZXBlbmRlbmNpZXMgaW4gYWxsIHdvcmtzcGFjZXMnLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgLy8gSXQgaXMgbm90IHNhZmUgYW55bW9yZSB0byBoYXZlICducG0tY2hlY2stdXBkYXRlcycgaW4gYSBZYXJuIDEgZGVwZW5kZW5jeSB0cmVlLCBzbyBydW4gaXQgaW4gYSBzZXBhcmF0ZVxuICAgICAgICAvLyB0cmVlIGJ5IHVzaW5nIG5weC5cbiAgICAgICAgeyBleGVjOiAnbnB4IG5wbS1jaGVjay11cGRhdGVzQDE2IC0tZGVwPWRldixvcHRpb25hbCxwZWVyLHByb2QsYnVuZGxlIC0tdXBncmFkZSAtLXRhcmdldD1taW5vcicgfSxcbiAgICAgICAgeyBleGVjOiAneWFybiB3b3Jrc3BhY2VzIHJ1biBjaGVjay1mb3ItdXBkYXRlcycgfSxcbiAgICAgICAgeyBleGVjOiAneWFybiBpbnN0YWxsIC0tY2hlY2stZmlsZXMnIH0sXG4gICAgICAgIHsgZXhlYzogJ3lhcm4gdXBncmFkZScgfSxcbiAgICAgICAgeyBzcGF3bjogJ2RlZmF1bHQnIH0sXG4gICAgICAgIHsgc3Bhd246ICdwb3N0LXVwZ3JhZGUnIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xlYW4gdXAgdGFza3Mgbm90IHJlcXVpcmVkIGF0IHRvcC1sZXZlbFxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygnZWplY3QnKTtcbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3dhdGNoJyk7XG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdwcmUtY29tcGlsZScpO1xuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygncG9zdC1jb21waWxlJyk7XG5cbiAgICAvLyBOeFxuICAgIGlmIChvcHRpb25zLm54KSB7XG4gICAgICBuZXcgTngodGhpcywge1xuICAgICAgICBkZWZhdWx0QmFzZTogb3B0aW9ucy5kZWZhdWx0UmVsZWFzZUJyYW5jaCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJlbGVhc2UgV29ya2Zsb3dcbiAgICBpZiAob3B0aW9ucy5yZWxlYXNlKSB7XG4gICAgICB0aGlzLm1vbm9yZXBvUmVsZWFzZSA9IG5ldyBNb25vcmVwb1JlbGVhc2UodGhpcywge1xuICAgICAgICB3b3JrZmxvd1J1bnNPbjogb3B0aW9ucy53b3JrZmxvd1J1bnNPbixcbiAgICAgICAgYnVpbGRXaXRoTngsXG4gICAgICAgIC4uLm9wdGlvbnMucmVsZWFzZU9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXIocHJvamVjdDogVHlwZVNjcmlwdFdvcmtzcGFjZSkge1xuICAgIHRoaXMucHJvamVjdHMucHVzaChwcm9qZWN0KTtcbiAgfVxuXG4gIHB1YmxpYyBzeW50aCgpIHtcbiAgICB0aGlzLmZpbmFsRXNjYXBlSGF0Y2hlcygpO1xuICAgIHN1cGVyLnN5bnRoKCk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3dzIGEgc3ViIHByb2plY3QgdG8gcmVxdWVzdCBpbnN0YWxsYXRpb24gb2YgZGVwZW5kZW5jeSBhdCB0aGUgTW9ub3JlcG8gcm9vdFxuICAgKiBUaGV5IG11c3QgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgaXMgZXhlY3V0ZWQgYWZ0ZXIgZGVwZW5kZW5jaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWRcbiAgICogSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUsIHRoZSBpbnN0YWxsIGNvbW1hbmQgaXMgcnVuIGZvciBhIHNlY29uZCB0aW1lIGFmdGVyIGFsbCBzdWIgcHJvamVjdCByZXF1ZXN0cyBoYXZlIHJ1bi5cbiAgICogVGhpcyBpcyB1c2VkIHRvIHJlc29sdmUgZGVwZW5kZW5jeSB2ZXJzaW9ucyBmcm9tIGAqYCB0byBhIGNvbmNyZXRlIHZlcnNpb24gY29uc3RyYWludC5cbiAgICovXG4gIHB1YmxpYyByZXF1ZXN0SW5zdGFsbERlcGVuZGVuY2llcyhyZXNvbHZlcjogSURlcGVuZGVuY3lSZXNvbHZlcikge1xuICAgIHRoaXMucG9zdEluc3RhbGxEZXBlbmRlbmNpZXMucHVzaChyZXNvbHZlci5yZXNvbHZlRGVwc0FuZFdyaXRlUGFja2FnZUpzb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvZGUgdGhhdCBuZWVkcyB0byBydW4ganVzdCBiZWZvcmUgc3ludGgsIGJ1dCBhZnRlciBhbGwgb3RoZXIgY29kZVxuICAgKi9cbiAgcHJpdmF0ZSBmaW5hbEVzY2FwZUhhdGNoZXMoKSB7XG4gICAgLy8gR2V0IHRoZSBPYmplY3RGaWxlXG4gICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKCdwcml2YXRlJywgdHJ1ZSk7XG4gICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKCd3b3Jrc3BhY2VzJywge1xuICAgICAgcGFja2FnZXM6IHRoaXMucHJvamVjdHMubWFwKChwKSA9PiBwLndvcmtzcGFjZURpcmVjdG9yeSksXG4gICAgICAuLi50aGlzLnJlbmRlck5vSG9pc3QoKSxcbiAgICB9KTtcblxuICAgIHRoaXMudHNjb25maWc/LmZpbGUuYWRkT3ZlcnJpZGUoJ2luY2x1ZGUnLCBbXSk7XG4gICAgdGhpcy50c2NvbmZpZ0Rldj8uZmlsZS5hZGRPdmVycmlkZSgnaW5jbHVkZScsIFsnLnByb2plbnJjLnRzJywgJ3Byb2plbnJjLyoqLyoudHMnXSk7XG4gICAgZm9yIChjb25zdCB0c2NvbmZpZyBvZiBbdGhpcy50c2NvbmZpZywgdGhpcy50c2NvbmZpZ0Rldl0pIHtcbiAgICAgIHRzY29uZmlnPy5maWxlLmFkZE92ZXJyaWRlKFxuICAgICAgICAncmVmZXJlbmNlcycsXG4gICAgICAgIHRoaXMucHJvamVjdHMubWFwKChwKSA9PiAoeyBwYXRoOiBwLndvcmtzcGFjZURpcmVjdG9yeSB9KSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZCgnamVzdCcsIHtcbiAgICAgIHByb2plY3RzOiB0aGlzLnByb2plY3RzLm1hcCgocCkgPT4gYDxyb290RGlyPi8ke3Aud29ya3NwYWNlRGlyZWN0b3J5fWApLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgJ25vaG9pc3QnIGRpcmVjdGl2ZVxuICAgKlxuICAgKiBCdW5kbGVkIGRlcGVuZGVuY2llcyBtdXN0IGJlIG5vaG9pc3QnZWQsIG90aGVyd2lzZSBOUE0gc2lsZW50bHkgd29uJ3QgYnVuZGxlIHRoZW0uXG4gICAqXG4gICAqIFJlbmRlcnMgYW4gb2JqZWN0IHRoYXQgc2hvdWxkIGJlIG1peGVkIGludG8gdGhlIGB3b3Jrc3BhY2VzYCBvYmplY3QuXG4gICAqL1xuICBwcml2YXRlIHJlbmRlck5vSG9pc3QoKTogYW55IHtcbiAgICBjb25zdCBub2hvaXN0ID0gdGhpcy5wcm9qZWN0cy5mbGF0TWFwKChwKSA9PlxuICAgICAgcC5kZXBzLmFsbFxuICAgICAgICAuZmlsdGVyKChkZXApID0+IGRlcC50eXBlID09PSBEZXBlbmRlbmN5VHlwZS5CVU5ETEVEKVxuICAgICAgICAuZmxhdE1hcCgoZGVwKSA9PiBbXG4gICAgICAgICAgYCR7cC5uYW1lfS8ke2RlcC5uYW1lfWAsXG4gICAgICAgICAgYCR7cC5uYW1lfS8ke2RlcC5uYW1lfS8qKmAsXG4gICAgICAgIF0pLFxuICAgICk7XG4gICAgcmV0dXJuIG5vaG9pc3QubGVuZ3RoID4gMCA/IHsgbm9ob2lzdCB9IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvb2tzIGludG8gdGhlIGluc3RhbGwgZGVwZW5kZW5jaWVzIGN5Y2xlXG4gICAqL1xuICBwdWJsaWMgcG9zdFN5bnRoZXNpemUoKSB7XG4gICAgaWYgKHRoaXMucG9zdEluc3RhbGxEZXBlbmRlbmNpZXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBub2RlUGtnOiBhbnkgPSB0aGlzLnBhY2thZ2U7XG4gICAgICBub2RlUGtnLmluc3RhbGxEZXBlbmRlbmNpZXMoKTtcblxuICAgICAgY29uc3QgY29tcGxldGVkUmVxdWVzdHMgPSB0aGlzLnBvc3RJbnN0YWxsRGVwZW5kZW5jaWVzLm1hcCgocmVxdWVzdCkgPT4gcmVxdWVzdCgpKTtcbiAgICAgIGlmIChjb21wbGV0ZWRSZXF1ZXN0cy5zb21lKEJvb2xlYW4pKSB7XG4gICAgICAgIG5vZGVQa2cuaW5zdGFsbERlcGVuZGVuY2llcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBvc3RJbnN0YWxsRGVwZW5kZW5jaWVzID0gW107XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURlcGVuZGVuY3lSZXNvbHZlciB7XG4gIHJlc29sdmVEZXBzQW5kV3JpdGVQYWNrYWdlSnNvbigpOiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBnZXRPYmpGcm9tRmlsZShwcm9qZWN0OiBQcm9qZWN0LCBmaWxlOiBzdHJpbmcpOiBvYmplY3Qge1xuICByZXR1cm4gKHByb2plY3QudHJ5RmluZE9iamVjdEZpbGUoZmlsZSkgYXMgYW55KT8ub2JqO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIENka0xhYnNNb25vcmVwb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0xhYnNNb25vcmVwb09wdGlvbnMgZXh0ZW5kcyBNb25vcmVwb09wdGlvbnMge31cblxuLyoqXG4gKiBPcGluaW9uYXRlZCBpbXBsZW1lbnRhdGlvbiBvZiB5YXJuLk1vbm9yZXBvXG4gKiBAcGppZCBjZGtsYWJzLXlhcm4tbW9ub3JlcG9cbiAqL1xuZXhwb3J0IGNsYXNzIENka0xhYnNNb25vcmVwbyBleHRlbmRzIE1vbm9yZXBvIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2RrTGFic01vbm9yZXBvT3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIHByb2plbnJjVHM6IHRydWUsXG5cbiAgICAgIGF1dG9BcHByb3ZlVXBncmFkZXM6IHRydWUsXG4gICAgICBhdXRvQXBwcm92ZU9wdGlvbnM6IHtcbiAgICAgICAgYWxsb3dlZFVzZXJuYW1lczogWydnaXRodWItYm90JywgJ2Nka2xhYnMtYXV0b21hdGlvbicsICdkZXBlbmRhYm90W2JvdF0nXSxcbiAgICAgICAgc2VjcmV0OiAnR0lUSFVCX1RPS0VOJyxcbiAgICAgIH0sXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICAuLi5vcHRpb25zLmdpdGh1Yk9wdGlvbnMsXG4gICAgICAgIG1lcmdpZnk6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIC8vIERldmlhdGlvbiBmcm9tIHVwc3RyZWFtIHByb2plbjogdXBzdHJlYW0gcHJvamVuIGRlZmF1bHRzIHRvIG1pbk5vZGVWZXJzaW9uLCBidXQgd2UgaGF2ZSB0b28gbWFueSB3b3JrZmxvd3NcbiAgICAgIC8vIHRoYXQgdXNlIHRvb2xzIHRoYXQgd2FudCBhIHJlY2VudCBOb2RlIHZlcnNpb24sIHNvIGRlZmF1bHQgdG8gYSByZWFzb25hYmxlIGZsb2F0aW5nIHZlcnNpb24uXG4gICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiBvcHRpb25zLndvcmtmbG93Tm9kZVZlcnNpb24gPz8gJ2x0cy8qJyxcbiAgICB9KTtcblxuICAgIG5ldyBnaXRodWIuTWVyZ2VRdWV1ZSh0aGlzLCB7XG4gICAgICBhdXRvUXVldWVPcHRpb25zOiB7XG4gICAgICAgIHByb2plbkNyZWRlbnRpYWxzOiBnaXRodWIuR2l0aHViQ3JlZGVudGlhbHMuZnJvbVBlcnNvbmFsQWNjZXNzVG9rZW4oeyBzZWNyZXQ6ICdQUk9KRU5fR0lUSFVCX1RPS0VOJyB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
281
+ CdkLabsMonorepo[_b] = { fqn: "cdklabs-projen-project-types.yarn.CdkLabsMonorepo", version: "0.3.19" };
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi9tb25vcmVwby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE2QztBQUM3QyxtQ0FBc0c7QUFFdEcseURBQXFEO0FBQ3JELDZCQUEwQjtBQUcxQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFFOUU7O0dBRUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQUNqRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQVU7UUFDakMsT0FBTyxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQWVELFlBQTRCLE9BQXdCO1FBQ2xELEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLGNBQWMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsbUJBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZO1lBQ3pILGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQzNCLGFBQWEsRUFBRTtvQkFDYixVQUFVLEVBQUUsbUJBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWTtvQkFDbEQsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsYUFBYTtpQkFDM0M7YUFDRixDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2IsVUFBVSxFQUFFLEtBQUs7WUFDakIsSUFBSSxFQUFFLEtBQUs7WUFDWCxNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBZnVCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBSDVD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b2RlOnBhdGgvcG9zaXgnO1xuaW1wb3J0IHsgSnNvbkZpbGUsIFByb2plY3QsIGphdmFzY3JpcHQsIHR5cGVzY3JpcHQsIGdpdGh1YiwgRGVwZW5kZW5jeVR5cGUsIEpzb25QYXRjaCB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBNb25vcmVwb09wdGlvbnMgfSBmcm9tICcuL21vbm9yZXBvLW9wdGlvbnMnO1xuaW1wb3J0IHsgTW9ub3JlcG9SZWxlYXNlIH0gZnJvbSAnLi9tb25vcmVwby1yZWxlYXNlJztcbmltcG9ydCB7IE54IH0gZnJvbSAnLi9ueCc7XG5pbXBvcnQgeyBUeXBlU2NyaXB0V29ya3NwYWNlIH0gZnJvbSAnLi90eXBlc2NyaXB0LXdvcmtzcGFjZSc7XG5cbmNvbnN0IE1PTk9SRVBPX1NZTSA9IFN5bWJvbC5mb3IoJ2Nka2xhYnMtcHJvamVuLXByb2plY3QtdHlwZXMueWFybi5Nb25vcmVwbycpO1xuXG4vKipcbiAqIEEgbW9ub3JlcG8gdXNpbmcgeWFybiB3b3Jrc3BhY2VzLlxuICovXG5leHBvcnQgY2xhc3MgTW9ub3JlcG8gZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgcHVibGljIHN0YXRpYyBpc01vbm9yZXBvKHg6IFByb2plY3QpOiB4IGlzIE1vbm9yZXBvIHtcbiAgICByZXR1cm4gQm9vbGVhbih4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBNT05PUkVQT19TWU0gaW4geCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIE1vbm9yZXBvIFJlbGVhc2UgY29tcG9uZW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbW9ub3JlcG9SZWxlYXNlPzogTW9ub3JlcG9SZWxlYXNlO1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIHdoZXJlIHRoZSBhY3R1YWwgY29kZSBmb3IgdGhlIHBhY2thZ2UgbGl2ZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVwb3NpdG9yeVVybD86IHN0cmluZztcblxuICBwcml2YXRlIHByb2plY3RzID0gbmV3IEFycmF5PFR5cGVTY3JpcHRXb3Jrc3BhY2U+KCk7XG4gIHByaXZhdGUgcG9zdEluc3RhbGxEZXBlbmRlbmNpZXMgPSBuZXcgQXJyYXk8KCkgPT4gYm9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogTW9ub3JlcG9PcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBvcHRpb25zLnlhcm5CZXJyeSA/IGphdmFzY3JpcHQuTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQkVSUlkgOiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0NMQVNTSUMsXG4gICAgICB5YXJuQmVycnlPcHRpb25zOiBvcHRpb25zLnlhcm5CZXJyeSA/IHtcbiAgICAgICAgLi4ub3B0aW9ucy55YXJuQmVycnlPcHRpb25zLFxuICAgICAgICB5YXJuUmNPcHRpb25zOiB7XG4gICAgICAgICAgbm9kZUxpbmtlcjogamF2YXNjcmlwdC5ZYXJuTm9kZUxpbmtlci5OT0RFX01PRFVMRVMsXG4gICAgICAgICAgLi4ub3B0aW9ucy55YXJuQmVycnlPcHRpb25zPy55YXJuUmNPcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgcmVsZWFzZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTU9OT1JFUE9fU1lNLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5yZXBvc2l0b3J5VXJsID0gb3B0aW9ucy5yZXBvc2l0b3J5O1xuICAgIGNvbnN0IGJ1aWxkV2l0aE54ID0gQm9vbGVhbihvcHRpb25zLm54ICYmIG9wdGlvbnMuYnVpbGRXaXRoTngpO1xuXG4gICAgLy8gWWFybiBCZXJyeSBkZXBlbmRlbmNpZXNNZXRhIGZvciBidWlsZGFibGUgcGFja2FnZXNcbiAgICBpZiAob3B0aW9ucy5idWlsZGFibGVQYWNrYWdlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ2RlcGVuZGVuY2llc01ldGEnLCBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIG9wdGlvbnMuYnVpbGRhYmxlUGFja2FnZXMubWFwKChwa2cpID0+IFtwa2csIHsgYnVpbHQ6IHRydWUgfV0pLFxuICAgICAgKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgZm9ybWF0dGluZ1xuICAgICAqL1xuICAgIGlmIChvcHRpb25zLnByZXR0aWVyKSB7XG4gICAgICB0aGlzLmFkZERldkRlcHMoJ2VzbGludC1jb25maWctcHJldHRpZXInLCAnZXNsaW50LXBsdWdpbi1wcmV0dGllcicpO1xuICAgICAgbmV3IEpzb25GaWxlKHRoaXMsICcuZXNsaW50cmMuanNvbicsIHtcbiAgICAgICAgYWxsb3dDb21tZW50czogdHJ1ZSxcbiAgICAgICAgb2JqOiB7XG4gICAgICAgICAgcGx1Z2luczogWydAdHlwZXNjcmlwdC1lc2xpbnQnLCAncHJldHRpZXInXSxcbiAgICAgICAgICBwYXJzZXI6ICdAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyJyxcbiAgICAgICAgICBwYXJzZXJPcHRpb25zOiB7XG4gICAgICAgICAgICBlY21hVmVyc2lvbjogMjAxOCxcbiAgICAgICAgICAgIHNvdXJjZVR5cGU6ICdtb2R1bGUnLFxuICAgICAgICAgICAgcHJvamVjdDogJy4vdHNjb25maWcuZGV2Lmpzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaWdub3JlUGF0dGVybnM6IFsnIS5wcm9qZW5yYy50cyddLFxuICAgICAgICAgIGV4dGVuZHM6IFsncGx1Z2luOnByZXR0aWVyL3JlY29tbWVuZGVkJ10sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGFza3MuYWRkVGFzaygnZm10JywgeyBleGVjOiAnZXNsaW50IC0tZXh0IC50cyAtLWZpeCAtLW5vLWVycm9yLW9uLXVubWF0Y2hlZC1wYXR0ZXJuIHByb2plbnJjIC5wcm9qZW5yYy50cycgfSk7XG5cbiAgICAgIHRoaXMudnNjb2RlPy5leHRlbnNpb25zLmFkZFJlY29tbWVuZGF0aW9ucygnZXNiZW5wLnByZXR0aWVyLXZzY29kZScsICdkYmFldW1lci52c2NvZGUtZXNsaW50Jyk7XG4gICAgICB0aGlzLnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZygnZWRpdG9yLmRlZmF1bHRGb3JtYXR0ZXInLCAnZXNiZW5wLnByZXR0aWVyLXZzY29kZScpO1xuICAgICAgdGhpcy52c2NvZGU/LnNldHRpbmdzLmFkZFNldHRpbmcoJ2VzbGludC5mb3JtYXQuZW5hYmxlJywgdHJ1ZSk7XG4gICAgICB0aGlzLnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZ3MoeyAnZWRpdG9yLmRlZmF1bHRGb3JtYXR0ZXInOiAnZGJhZXVtZXIudnNjb2RlLWVzbGludCcgfSwgW1xuICAgICAgICAnamF2YXNjcmlwdCcsXG4gICAgICAgICd0eXBlc2NyaXB0JyxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIFZTQ29kZSBXb3Jrc3BhY2VcbiAgICAgKi9cbiAgICBpZiAob3B0aW9ucy52c2NvZGVXb3Jrc3BhY2UpIHtcbiAgICAgIGNvbnN0IHdvcmtzcGFjZUZpbGUgPSBgJHt0aGlzLm5hbWV9LmNvZGUtd29ya3NwYWNlYDtcbiAgICAgIG5ldyBKc29uRmlsZSh0aGlzLCB3b3Jrc3BhY2VGaWxlLCB7XG4gICAgICAgIGFsbG93Q29tbWVudHM6IHRydWUsXG4gICAgICAgIG9iajogKCkgPT4gKHtcbiAgICAgICAgICBmb2xkZXJzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb2xkZXJzOiBBcnJheTx7XG4gICAgICAgICAgICAgIHBhdGg6IHN0cmluZztcbiAgICAgICAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgICAgIH0+ID0gdGhpcy5wcm9qZWN0c1xuICAgICAgICAgICAgICAuc29ydCgocDEsIHAyKSA9PiBwMS5uYW1lLmxvY2FsZUNvbXBhcmUocDIubmFtZSkpXG4gICAgICAgICAgICAgIC5tYXAoKHApID0+ICh7IHBhdGg6IHAud29ya3NwYWNlRGlyZWN0b3J5IH0pKTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMudnNjb2RlV29ya3NwYWNlT3B0aW9ucz8uaW5jbHVkZVJvb3RXb3Jrc3BhY2UpIHtcbiAgICAgICAgICAgICAgZm9sZGVycy51bnNoaWZ0KHsgcGF0aDogJy4nLCBuYW1lOiBvcHRpb25zLnZzY29kZVdvcmtzcGFjZU9wdGlvbnM/LnJvb3RXb3Jrc3BhY2VOYW1lID8/ICc8cm9vdD4nIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZm9sZGVycztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNldHRpbmdzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXR0aW5ncyA9IChnZXRPYmpGcm9tRmlsZSh0aGlzLCAnLnZzY29kZS9zZXR0aW5ncy5qc29uJykgPz8ge30pIGFzIGFueTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnZzY29kZVdvcmtzcGFjZU9wdGlvbnM/LmluY2x1ZGVSb290V29ya3NwYWNlICYmIHRoaXMucHJvamVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHNldHRpbmdzWydmaWxlcy5leGNsdWRlJ10gPSB0aGlzLnByb2plY3RzLnJlZHVjZSgoZXhjbHVkZXMsIHApID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgLi4uZXhjbHVkZXMsXG4gICAgICAgICAgICAgICAgICBbcC53b3Jrc3BhY2VEaXJlY3Rvcnkuc3BsaXQocGF0aFBvc2l4LnNlcClbMF1dOiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0sIHNldHRpbmdzWydmaWxlcy5leGNsdWRlJ10gPz8ge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldHRpbmdzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXh0ZW5zaW9uczogKCkgPT4gZ2V0T2JqRnJvbUZpbGUodGhpcywgJy52c2NvZGUvZXh0ZW5zaW9ucy5qc29uJyksXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFza3NcbiAgICAgKi9cbiAgICAvLyBidWlsZCB0YXNrXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdidWlsZCcpO1xuICAgIGNvbnN0IGZtdFRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ2ZtdCcpO1xuICAgIGNvbnN0IGJ1aWxkVGFzayA9IHRoaXMudGFza3MuYWRkVGFzaygnYnVpbGQnKTtcbiAgICBpZiAodGhpcy5kZWZhdWx0VGFzaykge1xuICAgICAgYnVpbGRUYXNrLnNwYXduKHRoaXMuZGVmYXVsdFRhc2spO1xuICAgIH1cbiAgICBpZiAoZm10VGFzaykge1xuICAgICAgYnVpbGRUYXNrLnNwYXduKGZtdFRhc2spO1xuICAgIH1cbiAgICBjb25zdCB3c1J1biA9IG9wdGlvbnMueWFybkJlcnJ5ID8gJ3lhcm4gd29ya3NwYWNlcyBmb3JlYWNoIC0tYWxsIHJ1bicgOiAneWFybiB3b3Jrc3BhY2VzIHJ1bic7XG5cbiAgICBpZiAoYnVpbGRXaXRoTngpIHtcbiAgICAgIGJ1aWxkVGFzay5leGVjKCdueCBydW4tbWFueSAtdCBidWlsZCcpO1xuICAgICAgdGhpcy5naXRodWI/LnRyeUZpbmRXb3JrZmxvdygnYnVpbGQnKT8uZmlsZT8ucGF0Y2goXG4gICAgICAgIEpzb25QYXRjaC5hZGQoJy9qb2JzL2J1aWxkL2Vudi9OWF9TS0lQX05YX0NBQ0hFJywgJ3RydWUnKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1aWxkVGFzay5leGVjKGAke3dzUnVufSBidWlsZGApO1xuICAgIH1cblxuICAgIC8vIFJ1biBpbiBhbGwgd29ya3NwYWNlcyB0YXNrc1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgnY29tcGlsZScpPy5yZXNldChgJHt3c1J1bn0gY29tcGlsZWApO1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgncGFja2FnZScpPy5yZXNldChgJHt3c1J1bn0gcGFja2FnZWApO1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgndGVzdCcpPy5yZXNldChgJHt3c1J1bn0gdGVzdGApO1xuICAgIHRoaXMuYWRkVGFzaygncnVuJywge1xuICAgICAgZXhlYzogd3NSdW4sXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIFVwZ3JhZGUgYWxsIHBhY2thZ2VzXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCd1cGdyYWRlJyk7XG4gICAgdGhpcy50YXNrcy5hZGRUYXNrKCd1cGdyYWRlJywge1xuICAgICAgZW52OiB7IENJOiAnMCcgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVXBncmFkZSBkZXBlbmRlbmNpZXMgaW4gYWxsIHdvcmtzcGFjZXMnLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgLy8gSXQgaXMgbm90IHNhZmUgYW55bW9yZSB0byBoYXZlICducG0tY2hlY2stdXBkYXRlcycgaW4gYSBZYXJuIDEgZGVwZW5kZW5jeSB0cmVlLCBzbyBydW4gaXQgaW4gYSBzZXBhcmF0ZSB0cmVlLlxuICAgICAgICB7IGV4ZWM6IGAke29wdGlvbnMueWFybkJlcnJ5ID8gJ3lhcm4gZGx4JyA6ICducHgnfSBucG0tY2hlY2stdXBkYXRlc0AyMCAtLWRlcD1kZXYsb3B0aW9uYWwscGVlcixwcm9kLGJ1bmRsZSAtLXVwZ3JhZGUgLS10YXJnZXQ9bWlub3JgIH0sXG4gICAgICAgIHsgZXhlYzogYCR7d3NSdW59IGNoZWNrLWZvci11cGRhdGVzYCB9LFxuICAgICAgICB7IGV4ZWM6IG9wdGlvbnMueWFybkJlcnJ5ID8gJ3lhcm4gaW5zdGFsbCcgOiAneWFybiBpbnN0YWxsIC0tY2hlY2stZmlsZXMnIH0sXG4gICAgICAgIHsgZXhlYzogb3B0aW9ucy55YXJuQmVycnkgPyAneWFybiB1cCcgOiAneWFybiB1cGdyYWRlJyB9LFxuICAgICAgICB7IHNwYXduOiAnZGVmYXVsdCcgfSxcbiAgICAgICAgeyBzcGF3bjogJ3Bvc3QtdXBncmFkZScgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBDbGVhbiB1cCB0YXNrcyBub3QgcmVxdWlyZWQgYXQgdG9wLWxldmVsXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdlamVjdCcpO1xuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygnd2F0Y2gnKTtcbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3ByZS1jb21waWxlJyk7XG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdwb3N0LWNvbXBpbGUnKTtcblxuICAgIC8vIE54XG4gICAgaWYgKG9wdGlvbnMubngpIHtcbiAgICAgIG5ldyBOeCh0aGlzLCB7XG4gICAgICAgIGRlZmF1bHRCYXNlOiBvcHRpb25zLmRlZmF1bHRSZWxlYXNlQnJhbmNoLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUmVsZWFzZSBXb3JrZmxvd1xuICAgIGlmIChvcHRpb25zLnJlbGVhc2UpIHtcbiAgICAgIHRoaXMubW9ub3JlcG9SZWxlYXNlID0gbmV3IE1vbm9yZXBvUmVsZWFzZSh0aGlzLCB7XG4gICAgICAgIHdvcmtmbG93UnVuc09uOiBvcHRpb25zLndvcmtmbG93UnVuc09uLFxuICAgICAgICBidWlsZFdpdGhOeCxcbiAgICAgICAgeWFybkJlcnJ5OiBvcHRpb25zLnlhcm5CZXJyeSxcbiAgICAgICAgLi4ub3B0aW9ucy5yZWxlYXNlT3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlcihwcm9qZWN0OiBUeXBlU2NyaXB0V29ya3NwYWNlKSB7XG4gICAgdGhpcy5wcm9qZWN0cy5wdXNoKHByb2plY3QpO1xuICB9XG5cbiAgcHVibGljIHN5bnRoKCkge1xuICAgIHRoaXMuZmluYWxFc2NhcGVIYXRjaGVzKCk7XG4gICAgc3VwZXIuc3ludGgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgYSBzdWIgcHJvamVjdCB0byByZXF1ZXN0IGluc3RhbGxhdGlvbiBvZiBkZXBlbmRlbmN5IGF0IHRoZSBNb25vcmVwbyByb290XG4gICAqIFRoZXkgbXVzdCBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdCBpcyBleGVjdXRlZCBhZnRlciBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZFxuICAgKiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlIGluc3RhbGwgY29tbWFuZCBpcyBydW4gZm9yIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgYWxsIHN1YiBwcm9qZWN0IHJlcXVlc3RzIGhhdmUgcnVuLlxuICAgKiBUaGlzIGlzIHVzZWQgdG8gcmVzb2x2ZSBkZXBlbmRlbmN5IHZlcnNpb25zIGZyb20gYCpgIHRvIGEgY29uY3JldGUgdmVyc2lvbiBjb25zdHJhaW50LlxuICAgKi9cbiAgcHVibGljIHJlcXVlc3RJbnN0YWxsRGVwZW5kZW5jaWVzKHJlc29sdmVyOiBJRGVwZW5kZW5jeVJlc29sdmVyKSB7XG4gICAgdGhpcy5wb3N0SW5zdGFsbERlcGVuZGVuY2llcy5wdXNoKHJlc29sdmVyLnJlc29sdmVEZXBzQW5kV3JpdGVQYWNrYWdlSnNvbik7XG4gIH1cblxuICAvKipcbiAgICogQ29kZSB0aGF0IG5lZWRzIHRvIHJ1biBqdXN0IGJlZm9yZSBzeW50aCwgYnV0IGFmdGVyIGFsbCBvdGhlciBjb2RlXG4gICAqL1xuICBwcml2YXRlIGZpbmFsRXNjYXBlSGF0Y2hlcygpIHtcbiAgICAvLyBHZXQgdGhlIE9iamVjdEZpbGVcbiAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ3ByaXZhdGUnLCB0cnVlKTtcbiAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ3dvcmtzcGFjZXMnLCB7XG4gICAgICBwYWNrYWdlczogdGhpcy5wcm9qZWN0cy5tYXAoKHApID0+IHAud29ya3NwYWNlRGlyZWN0b3J5KSxcbiAgICAgIC4uLighdGhpcy5vcHRpb25zLnlhcm5CZXJyeSA/IHRoaXMucmVuZGVyTm9Ib2lzdCgpIDogdW5kZWZpbmVkKSxcbiAgICB9KTtcblxuICAgIC8vIEF1dG8tc2V0IGhvaXN0aW5nTGltaXRzIGZvciB3b3Jrc3BhY2VzIHdpdGggYnVuZGxlZCBkZXBzIHdoZW4gdXNpbmcgWWFybiBCZXJyeVxuICAgIGlmICh0aGlzLm9wdGlvbnMueWFybkJlcnJ5KSB7XG4gICAgICBmb3IgKGNvbnN0IHAgb2YgdGhpcy5wcm9qZWN0cykge1xuICAgICAgICBpZiAocC5idW5kbGVkRGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcC5wYWNrYWdlLmFkZEZpZWxkKCdpbnN0YWxsQ29uZmlnJywgeyBob2lzdGluZ0xpbWl0czogJ3dvcmtzcGFjZXMnIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50c2NvbmZpZz8uZmlsZS5hZGRPdmVycmlkZSgnaW5jbHVkZScsIFtdKTtcbiAgICB0aGlzLnRzY29uZmlnRGV2Py5maWxlLmFkZE92ZXJyaWRlKCdpbmNsdWRlJywgWycucHJvamVucmMudHMnLCAncHJvamVucmMvKiovKi50cyddKTtcbiAgICBmb3IgKGNvbnN0IHRzY29uZmlnIG9mIFt0aGlzLnRzY29uZmlnLCB0aGlzLnRzY29uZmlnRGV2XSkge1xuICAgICAgdHNjb25maWc/LmZpbGUuYWRkT3ZlcnJpZGUoXG4gICAgICAgICdyZWZlcmVuY2VzJyxcbiAgICAgICAgdGhpcy5wcm9qZWN0cy5tYXAoKHApID0+ICh7IHBhdGg6IHAud29ya3NwYWNlRGlyZWN0b3J5IH0pKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKCdqZXN0Jywge1xuICAgICAgcHJvamVjdHM6IHRoaXMucHJvamVjdHMubWFwKChwKSA9PiBgPHJvb3REaXI+LyR7cC53b3Jrc3BhY2VEaXJlY3Rvcnl9YCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSAnbm9ob2lzdCcgZGlyZWN0aXZlXG4gICAqXG4gICAqIEJ1bmRsZWQgZGVwZW5kZW5jaWVzIG11c3QgYmUgbm9ob2lzdCdlZCwgb3RoZXJ3aXNlIE5QTSBzaWxlbnRseSB3b24ndCBidW5kbGUgdGhlbS5cbiAgICpcbiAgICogUmVuZGVycyBhbiBvYmplY3QgdGhhdCBzaG91bGQgYmUgbWl4ZWQgaW50byB0aGUgYHdvcmtzcGFjZXNgIG9iamVjdC5cbiAgICovXG4gIHByaXZhdGUgcmVuZGVyTm9Ib2lzdCgpOiBhbnkge1xuICAgIGNvbnN0IG5vaG9pc3QgPSB0aGlzLnByb2plY3RzLmZsYXRNYXAoKHApID0+XG4gICAgICBwLmRlcHMuYWxsXG4gICAgICAgIC5maWx0ZXIoKGRlcCkgPT4gZGVwLnR5cGUgPT09IERlcGVuZGVuY3lUeXBlLkJVTkRMRUQpXG4gICAgICAgIC5mbGF0TWFwKChkZXApID0+IFtcbiAgICAgICAgICBgJHtwLm5hbWV9LyR7ZGVwLm5hbWV9YCxcbiAgICAgICAgICBgJHtwLm5hbWV9LyR7ZGVwLm5hbWV9LyoqYCxcbiAgICAgICAgXSksXG4gICAgKTtcbiAgICByZXR1cm4gbm9ob2lzdC5sZW5ndGggPiAwID8geyBub2hvaXN0IH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogSG9va3MgaW50byB0aGUgaW5zdGFsbCBkZXBlbmRlbmNpZXMgY3ljbGVcbiAgICovXG4gIHB1YmxpYyBwb3N0U3ludGhlc2l6ZSgpIHtcbiAgICBpZiAodGhpcy5wb3N0SW5zdGFsbERlcGVuZGVuY2llcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5vZGVQa2c6IGFueSA9IHRoaXMucGFja2FnZTtcbiAgICAgIG5vZGVQa2cuaW5zdGFsbERlcGVuZGVuY2llcygpO1xuXG4gICAgICBjb25zdCBjb21wbGV0ZWRSZXF1ZXN0cyA9IHRoaXMucG9zdEluc3RhbGxEZXBlbmRlbmNpZXMubWFwKChyZXF1ZXN0KSA9PiByZXF1ZXN0KCkpO1xuICAgICAgaWYgKGNvbXBsZXRlZFJlcXVlc3RzLnNvbWUoQm9vbGVhbikpIHtcbiAgICAgICAgbm9kZVBrZy5pbnN0YWxsRGVwZW5kZW5jaWVzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucG9zdEluc3RhbGxEZXBlbmRlbmNpZXMgPSBbXTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGVwZW5kZW5jeVJlc29sdmVyIHtcbiAgcmVzb2x2ZURlcHNBbmRXcml0ZVBhY2thZ2VKc29uKCk6IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGdldE9iakZyb21GaWxlKHByb2plY3Q6IFByb2plY3QsIGZpbGU6IHN0cmluZyk6IG9iamVjdCB7XG4gIHJldHVybiAocHJvamVjdC50cnlGaW5kT2JqZWN0RmlsZShmaWxlKSBhcyBhbnkpPy5vYmo7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgQ2RrTGFic01vbm9yZXBvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrTGFic01vbm9yZXBvT3B0aW9ucyBleHRlbmRzIE1vbm9yZXBvT3B0aW9ucyB7fVxuXG4vKipcbiAqIE9waW5pb25hdGVkIGltcGxlbWVudGF0aW9uIG9mIHlhcm4uTW9ub3JlcG9cbiAqIEBwamlkIGNka2xhYnMteWFybi1tb25vcmVwb1xuICovXG5leHBvcnQgY2xhc3MgQ2RrTGFic01vbm9yZXBvIGV4dGVuZHMgTW9ub3JlcG8ge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDZGtMYWJzTW9ub3JlcG9PcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgcHJvamVucmNUczogdHJ1ZSxcblxuICAgICAgYXV0b0FwcHJvdmVVcGdyYWRlczogdHJ1ZSxcbiAgICAgIGF1dG9BcHByb3ZlT3B0aW9uczoge1xuICAgICAgICBhbGxvd2VkVXNlcm5hbWVzOiBbJ2dpdGh1Yi1ib3QnLCAnY2RrbGFicy1hdXRvbWF0aW9uJywgJ2RlcGVuZGFib3RbYm90XSddLFxuICAgICAgICBzZWNyZXQ6ICdHSVRIVUJfVE9LRU4nLFxuICAgICAgfSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBnaXRodWJPcHRpb25zOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZ2l0aHViT3B0aW9ucyxcbiAgICAgICAgbWVyZ2lmeTogZmFsc2UsXG4gICAgICB9LFxuICAgICAgLy8gRGV2aWF0aW9uIGZyb20gdXBzdHJlYW0gcHJvamVuOiB1cHN0cmVhbSBwcm9qZW4gZGVmYXVsdHMgdG8gbWluTm9kZVZlcnNpb24sIGJ1dCB3ZSBoYXZlIHRvbyBtYW55IHdvcmtmbG93c1xuICAgICAgLy8gdGhhdCB1c2UgdG9vbHMgdGhhdCB3YW50IGEgcmVjZW50IE5vZGUgdmVyc2lvbiwgc28gZGVmYXVsdCB0byBhIHJlYXNvbmFibGUgZmxvYXRpbmcgdmVyc2lvbi5cbiAgICAgIHdvcmtmbG93Tm9kZVZlcnNpb246IG9wdGlvbnMud29ya2Zsb3dOb2RlVmVyc2lvbiA/PyAnbHRzLyonLFxuICAgIH0pO1xuXG4gICAgbmV3IGdpdGh1Yi5NZXJnZVF1ZXVlKHRoaXMsIHtcbiAgICAgIGF1dG9RdWV1ZU9wdGlvbnM6IHtcbiAgICAgICAgcHJvamVuQ3JlZGVudGlhbHM6IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscy5mcm9tUGVyc29uYWxBY2Nlc3NUb2tlbih7IHNlY3JldDogJ1BST0pFTl9HSVRIVUJfVE9LRU4nIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -116,5 +116,5 @@ class WorkspaceRelease extends projen_1.Component {
116
116
  }
117
117
  exports.WorkspaceRelease = WorkspaceRelease;
118
118
  _a = JSII_RTTI_SYMBOL_1;
119
- WorkspaceRelease[_a] = { fqn: "cdklabs-projen-project-types.yarn.WorkspaceRelease", version: "0.3.18" };
119
+ WorkspaceRelease[_a] = { fqn: "cdklabs-projen-project-types.yarn.WorkspaceRelease", version: "0.3.19" };
120
120
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC13b3Jrc3BhY2UtcmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy95YXJuL3R5cGVzY3JpcHQtd29ya3NwYWNlLXJlbGVhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrQ0FBa0M7QUFDbEMsbUNBQW9HO0FBQ3BHLGlFQUErRTtBQXNCL0UsTUFBYSxnQkFBaUIsU0FBUSxrQkFBUztJQUs3QyxZQUFtQixPQUE0QixFQUFFLE9BQWdDO1FBQy9FLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBRXpCLCtEQUErRDtRQUMvRCxtRUFBbUU7UUFDbkUsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGdCQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDekMsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLDRDQUE0QztnQkFDOUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtnQkFDOUMsZ0JBQWdCLEVBQUU7b0JBQ2hCLElBQUksRUFBRSxHQUFHLEVBQUUsMEZBQTBGO2lCQUN0RztnQkFDRCxpREFBaUQ7Z0JBQ2pELG9EQUFvRDtnQkFDcEQsdURBQXVEO2dCQUN2RCxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxHQUFHO2dCQUU3QixrRUFBa0U7Z0JBQ2xFLHlFQUF5RTtnQkFDekUsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixJQUFJLDBCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7Z0JBRWxGLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7YUFDL0MsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGdCQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVB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QUFPLENBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQzdCLFdBQVcsRUFBRSxzQ0FBc0M7YUFDcEQsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssZ0JBQWdCO1FBQ3RCLE9BQU8sQ0FDTCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtnQkFDL0IsV0FBVyxFQUFFLGdEQUFnRDthQUM5RCxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7O0FBOUhILDRDQStIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IENvbXBvbmVudCwgUmVsZWFzYWJsZUNvbW1pdHMsIFRhc2ssIFZlcnNpb24sIFZlcnNpb25CcmFuY2hPcHRpb25zLCByZWxlYXNlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEdhdGhlclZlcnNpb25zLCBHYXRoZXJWZXJzaW9uc09wdGlvbnMgfSBmcm9tICcuL2dhdGhlci12ZXJzaW9ucy50YXNrJztcbmltcG9ydCB7IFR5cGVTY3JpcHRXb3Jrc3BhY2UgfSBmcm9tICcuL3R5cGVzY3JpcHQtd29ya3NwYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VSZWxlYXNlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHByaXZhdGU6IGJvb2xlYW47XG5cbiAgLyoqIEBkZWZhdWx0ICdsdHMvKicgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOb2RlVmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgcHVibGlzaFRvTnBtPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbnBtRGlzdFRhZz86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVsZWFzYWJsZUNvbW1pdHM/OiBSZWxlYXNhYmxlQ29tbWl0cztcbiAgcmVhZG9ubHkgbmV4dFZlcnNpb25Db21tYW5kPzogc3RyaW5nO1xuICByZWFkb25seSBucG1UcnVzdGVkUHVibGlzaGluZz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uQnJhbmNoT3B0aW9uczogVmVyc2lvbkJyYW5jaE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEZvciBydW50aW1lIGFuZCBwZWVyIGRlcGVuZGVuY2llcywgdGhlIHR5cGUgb2YgZGVwZW5kZW5jeSB3ZSB0YWtlIG9uIGVhY2ggcGFja2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb1J1bnRpbWVEZXBlbmRlbmNpZXM/OiBHYXRoZXJWZXJzaW9uc09wdGlvbnNbJ3JlcG9SdW50aW1lRGVwZW5kZW5jaWVzJ107XG59XG5cbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VSZWxlYXNlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IHB1Ymxpc2hlcj86IHJlbGVhc2UuUHVibGlzaGVyO1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbj86IFZlcnNpb247XG4gIHB1YmxpYyByZWFkb25seSB3b3Jrc3BhY2U6IFR5cGVTY3JpcHRXb3Jrc3BhY2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb2plY3Q6IFR5cGVTY3JpcHRXb3Jrc3BhY2UsIG9wdGlvbnM6IFdvcmtzcGFjZVJlbGVhc2VPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgdGhpcy53b3Jrc3BhY2UgPSBwcm9qZWN0O1xuXG4gICAgLy8gVGhlIHJvb3QgcGFja2FnZSBpcyByZWxlYXNlLWF3YXJlLiBFaXRoZXIgd2UgY3JlYXRlIGEgcHJvcGVyXG4gICAgLy8gJ3lhcm4gcmVsZWFzZScgdGFzayBoZXJlLCBvciB3ZSBjcmVhdGUgYSBmYWtlIG9uZSB0aGF0IGp1c3QgZG9lc1xuICAgIC8vIGEgJ2J1aWxkJyAod2lsbCBiZSBydW4gaW4gZGVwZW5kZW5jeSBvcmRlciBieSB0aGUgcGFyZW50IHJlbGVhc2UgdGFzaykuXG4gICAgaWYgKCFvcHRpb25zLnByaXZhdGUpIHtcbiAgICAgIHRoaXMudmVyc2lvbiA9IG5ldyBWZXJzaW9uKHRoaXMud29ya3NwYWNlLCB7XG4gICAgICAgIHZlcnNpb25JbnB1dEZpbGU6ICdwYWNrYWdlLmpzb24nLCAvLyB0aGlzIGlzIHdoZXJlIFwidmVyc2lvblwiIGlzIHNldCBhZnRlciBidW1wXG4gICAgICAgIGFydGlmYWN0c0RpcmVjdG9yeTogcHJvamVjdC5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICAgIHZlcnNpb25yY09wdGlvbnM6IHtcbiAgICAgICAgICBwYXRoOiAnLicsIC8vIEluIGEgbW9ub3JlcG8sIHdlIHdhbnQgc3RhbmRhcmQtdmVyc2lvbiB0byBvbmx5IGNvbnNpZGVyIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIHdvcmtzcGFjZVxuICAgICAgICB9LFxuICAgICAgICAvLyBUaGlzIG1peGVzIHRoZSBwYWNrYWdlIG5hbWUgaW50byB0aGUgdGFnIG5hbWUsXG4gICAgICAgIC8vIHNvIHRoYXQgd2UgY2FuIGdpdmUgcGFja2FnZXMgaW5kaXZpZHVhbCB2ZXJzaW9ucy5cbiAgICAgICAgLy8gVGFncyBlbmQgdXAgbG9va2luZyBsaWtlIHRoaXM6IEBzY29wZS9wYWNrYWdlQHYxLjIuM1xuICAgICAgICB0YWdQcmVmaXg6IGAke3Byb2plY3QubmFtZX1AYCxcblxuICAgICAgICAvLyBJbiBhIG1vbm9yZXBvLCBvbmx5IGNvbnNpZGVyIGNoYW5nZXMgcmVsZXZhbnQgdG8gdGhlIHN1YnByb2plY3RcbiAgICAgICAgLy8gUGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgc3VicHJvamVjdCBvdXRkaXIsIHNvICcuJyBpcyB3aGF0IHdlIHdhbnQgaGVyZVxuICAgICAgICByZWxlYXNhYmxlQ29tbWl0czogb3B0aW9ucy5yZWxlYXNhYmxlQ29tbWl0cyA/PyBSZWxlYXNhYmxlQ29tbWl0cy5ldmVyeUNvbW1pdCgnLicpLFxuXG4gICAgICAgIG5leHRWZXJzaW9uQ29tbWFuZDogb3B0aW9ucy5uZXh0VmVyc2lvbkNvbW1hbmQsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wdWJsaXNoZXIgPSBuZXcgcmVsZWFzZS5QdWJsaXNoZXIodGhpcy53b3Jrc3BhY2UsIHtcbiAgICAgICAgYXJ0aWZhY3ROYW1lOiBwcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgICAgY29uZGl0aW9uOiAnbmVlZHMucmVsZWFzZS5vdXRwdXRzLmxhdGVzdF9jb21taXQgPT0gZ2l0aHViLnNoYScsXG4gICAgICAgIGJ1aWxkSm9iSWQ6ICdyZWxlYXNlJyxcbiAgICAgICAgd29ya2Zsb3dOb2RlVmVyc2lvbjogb3B0aW9ucy53b3JrZmxvd05vZGVWZXJzaW9uID8/ICdsdHMvKicsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wdWJsaXNoZXIucHVibGlzaFRvR2l0SHViUmVsZWFzZXMoe1xuICAgICAgICBjaGFuZ2Vsb2dGaWxlOiBwYXRoLnBvc2l4LmpvaW4ocHJvamVjdC5hcnRpZmFjdHNEaXJlY3RvcnksIHRoaXMudmVyc2lvbi5jaGFuZ2Vsb2dGaWxlTmFtZSksXG4gICAgICAgIHZlcnNpb25GaWxlOiBwYXRoLnBvc2l4LmpvaW4ocHJvamVjdC5hcnRpZmFjdHNEaXJlY3RvcnksIHRoaXMudmVyc2lvbi52ZXJzaW9uRmlsZU5hbWUpLFxuICAgICAgICByZWxlYXNlVGFnRmlsZTogcGF0aC5wb3NpeC5qb2luKHByb2plY3QuYXJ0aWZhY3RzRGlyZWN0b3J5LCB0aGlzLnZlcnNpb24ucmVsZWFzZVRhZ0ZpbGVOYW1lKSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBHaXRIdWIgUmVsZWFzZXMgY29tZXMgZm9yIGZyZWUgd2l0aCBhIGBSZWxlYXNlYCBjb21wb25lbnQsIE5QTSBtdXN0IGJlIGFkZGVkIGV4cGxpY2l0bHlcbiAgICAgIGlmIChvcHRpb25zLnB1Ymxpc2hUb05wbSA/PyB0cnVlKSB7XG4gICAgICAgIHRoaXMucHVibGlzaGVyLnB1Ymxpc2hUb05wbSh7XG4gICAgICAgICAgcmVnaXN0cnk6IHByb2plY3QucGFja2FnZS5ucG1SZWdpc3RyeSxcbiAgICAgICAgICBucG1Ub2tlblNlY3JldDogb3B0aW9ucy5ucG1UcnVzdGVkUHVibGlzaGluZyA/IHVuZGVmaW5lZCA6IHByb2plY3QucGFja2FnZS5ucG1Ub2tlblNlY3JldCxcbiAgICAgICAgICBucG1Qcm92ZW5hbmNlOiBwcm9qZWN0LnBhY2thZ2UubnBtUHJvdmVuYW5jZSxcbiAgICAgICAgICB0cnVzdGVkUHVibGlzaGluZzogb3B0aW9ucy5ucG1UcnVzdGVkUHVibGlzaGluZyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyB0YXNrcyBzZXRzIGFsbCBsb2NhbCBkZXBlbmRlbmNpZXMgdG8gdGhlaXIgY3VycmVudCB2ZXJzaW9uXG4gICAgLy8gSW4gdGhlIG1vbm9yZXBvIHdlIGNhbGwgdGhpcyB0YXNrIGluIHRvcG9sb2dpY2FsIG9yZGVyLlxuICAgIC8vIFRoZXJlZm9yIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBhbnkgbG9jYWwgcGFja2FnZXMgYSBwYWNrYWdlIGRlcGVuZHMgb24sXG4gICAgLy8gYWxyZWFkeSBoYXZlIGJlZW4gYnVtcGVkLlxuICAgIGNvbnN0IGdhdGhlclZlcnNpb25zID0gcHJvamVjdC5hZGRUYXNrKCdnYXRoZXItdmVyc2lvbnMnLCB7XG4gICAgICBzdGVwczogW25ldyBHYXRoZXJWZXJzaW9ucyhwcm9qZWN0LCB7XG4gICAgICAgIHJlcG9SdW50aW1lRGVwZW5kZW5jaWVzOiBvcHRpb25zLnJlcG9SdW50aW1lRGVwZW5kZW5jaWVzID8/IHt9LFxuICAgICAgfSldLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYnVtcFRhc2sgPSB0aGlzLm9idGFpbkJ1bXBUYXNrKCk7XG4gICAgYnVtcFRhc2sucHJlcGVuZFNwYXduKGdhdGhlclZlcnNpb25zKTtcbiAgICAvLyBUaGUgYnVtcFRhc2sgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgd2l0aCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBjb250cm9sXG4gICAgLy8gdmVyc2lvbiBpbmZvcm1hdGlvbi4gVGhlc2UgYXJlIG5vdCBwYXJ0IG9mIHRoZSB1cHN0cmVhbSB0YXNrIGl0c2VsZiB5ZXQsXG4gICAgLy8gc2luY2UgdGhleSBhcmUgcGFydCBvZiB0aGUgaW52b2NhdGlvbiB0aGVyZS4gV2UgYWxzbyBuZWVkIHRvIG1ha2UgdGhlbSBwYXJ0XG4gICAgLy8gb2YgdGhlIGludm9jYXRpb24gaGVyZS5cbiAgICBpZiAodGhpcy52ZXJzaW9uKSB7XG4gICAgICBpZiAob3B0aW9ucy52ZXJzaW9uQnJhbmNoT3B0aW9ucz8udGFnUHJlZml4KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRG8gbm90IHNldCB2ZXJzaW9uQnJhbmNoT3B0aW9ucy50YWdQcmVmaXg7IGl0IGlzIGNvbmZpZ3VyZWQgYW5vdGhlciB3YXknKTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMudmVyc2lvbi5lbnZGb3JCcmFuY2goe1xuICAgICAgICAuLi5vcHRpb25zLnZlcnNpb25CcmFuY2hPcHRpb25zLFxuICAgICAgfSkpKSB7XG4gICAgICAgIGJ1bXBUYXNrLmVudihrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIEFmdGVyIHdlIGhhdmUgdW5idW1wZWQgcGFja2FnZSB2ZXJzaW9ucyBiYWNrIHRvIF4wLjAuMCxcbiAgICAvLyB3ZSBjYW4gcnVuIHRoZSBnYXRoZXItdmVyc2lvbnMgdGFzayBhZ2FpbiB3aGljaCB3aWxsIG5vdyByZXBsYWNlIHRoZSB0by1iZS1yZWxlYXNlIHZlcnNpb25zIHdpdGggXjAuMC4wXG4gICAgLy9cbiAgICAvLyBXZSBuZWVkIHRvIHNldCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBnZXQgYGdhdGhlclZlcnNpb25zYCB0byBiZWhhdmUgZGlmZmVyZW50bHkgaW4gdGhlIHVuYnVtcFxuICAgIC8vIGludm9jYXRpb24gKGluIHRoZSBidW1wIGludm9jYXRpb24sIGl0IG1heSBjaGFuZ2UgdGhlIHBhY2thZ2UuanNvbiBkZXBlbmRlbmN5IHJhbmdlIGZyb20gYF4wLjAuMGAgdG8gYDEuMi4zYDtcbiAgICAvLyB1c2luZyBhIGRpZmZlcmVudCByYW5nZSBzeW1ib2wpLCBidXQgd2hlbiB1bmJ1bXBpbmcgaXQgbXVzdCBhbHdheXMgcmVzZXQgYmFjayB0byB0aGUgYF4wLjAuMGAgdmVyc2lvbi5cbiAgICB0aGlzLm9idGFpblVuYnVtcFRhc2soKS5zcGF3bihnYXRoZXJWZXJzaW9ucywge1xuICAgICAgZW52OiB7XG4gICAgICAgIFJFU0VUX1ZFUlNJT05TOiAndHJ1ZScsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYnVtcCB2ZXJzaW9uIHRhc2tcbiAgICpcbiAgICogSWYgdGhpcyBpcyBhIHByaXZhdGUgcGFja2FnZSwgaXQgd29uJ3QgaGF2ZSBhIGJ1bXAgdGFzayB5ZXQuXG4gICAqIFNvIGluc3RlYWQgd2UgY3JlYXRlIGFuIGVtcHR5IG9uZSB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbW9ub3JlcG8gcm9vdFxuICAgKiBhbmQgc2VydmUgYXMgYSBjb250YWluZXIgZm9yIG90aGVyIHN0ZXBzIHRoYXQgbmVlZCB0byBvY2N1ciBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlXG4gICAqL1xuICBwcml2YXRlIG9idGFpbkJ1bXBUYXNrKCk6IFRhc2sge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLndvcmtzcGFjZS50YXNrcy50cnlGaW5kKCdidW1wJykgPz9cbiAgICAgIHRoaXMud29ya3NwYWNlLmFkZFRhc2soJ2J1bXAnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQnVtcHMgdmVyc2lvbnMgb2YgbG9jYWwgZGVwZW5kZW5jaWVzJyxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHVuYnVtcCB2ZXJzaW9uIHRhc2tcbiAgICouXG4gICAqIElmIHRoaXMgaXMgYSBwcml2YXRlIHBhY2thZ2UsIGl0IHdvbid0IGhhdmUgYSBidW1wIHRhc2sgeWV0XG4gICAqIFNvIGluc3RlYWQgd2UgY3JlYXRlIGFuIGVtcHR5IG9uZSB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbW9ub3JlcG8gcm9vdFxuICAgKiBhbmQgc2VydmUgYXMgYSBjb250YWluZXIgZm9yIG90aGVyIHN0ZXBzIHRoYXQgbmVlZCB0byBvY2N1ciBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlXG4gICAqL1xuICBwcml2YXRlIG9idGFpblVuYnVtcFRhc2soKTogVGFzayB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMud29ya3NwYWNlLnRhc2tzLnRyeUZpbmQoJ3VuYnVtcCcpID8/XG4gICAgICB0aGlzLndvcmtzcGFjZS5hZGRUYXNrKCd1bmJ1bXAnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUmVzZXRzIHZlcnNpb25zIG9mIGxvY2FsIGRlcGVuZGVuY2llcyB0byAwLjAuMCcsXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -25,6 +25,7 @@ class TypeScriptWorkspace extends projen_1.typescript.TypeScriptProject {
25
25
  repositoryDirectory: workspaceDirectory,
26
26
  outdir: workspaceDirectory,
27
27
  defaultReleaseBranch: 'REQUIRED-BUT-SHOULD-NOT-BE',
28
+ packageManager: options.parent.package.packageManager,
28
29
  release: false,
29
30
  package: !options.private,
30
31
  eslint: useEslint,
@@ -120,7 +121,7 @@ class TypeScriptWorkspace extends projen_1.typescript.TypeScriptProject {
120
121
  };
121
122
  }
122
123
  // Tasks
123
- this.tasks.tryFind('default')?.reset(`cd ${(0, path_1.relative)(this.outdir, options.parent.outdir)} && npx projen default`);
124
+ this.tasks.tryFind('default')?.reset('projen default', { cwd: (0, path_1.relative)(this.outdir, options.parent.outdir) });
124
125
  this.tasks.removeTask('clobber');
125
126
  this.tasks.removeTask('eject');
126
127
  const upgradeTaskName = 'upgrade';
@@ -133,7 +134,7 @@ class TypeScriptWorkspace extends projen_1.typescript.TypeScriptProject {
133
134
  steps: {
134
135
  toJSON: () => {
135
136
  const steps = upgrades.renderTaskSteps();
136
- return steps.filter((step) => step.exec && typeof step.exec === 'string' && step.exec?.startsWith('npx npm-check-updates'));
137
+ return steps.filter((step) => step.exec && typeof step.exec === 'string' && step.exec?.includes('npm-check-updates'));
137
138
  },
138
139
  },
139
140
  });
@@ -225,7 +226,7 @@ class TypeScriptWorkspace extends projen_1.typescript.TypeScriptProject {
225
226
  }
226
227
  exports.TypeScriptWorkspace = TypeScriptWorkspace;
227
228
  _a = JSII_RTTI_SYMBOL_1;
228
- TypeScriptWorkspace[_a] = { fqn: "cdklabs-projen-project-types.yarn.TypeScriptWorkspace", version: "0.3.18" };
229
+ TypeScriptWorkspace[_a] = { fqn: "cdklabs-projen-project-types.yarn.TypeScriptWorkspace", version: "0.3.19" };
229
230
  function packageNames(xs) {
230
231
  if (!xs) {
231
232
  return undefined;
@@ -242,4 +243,4 @@ function without(x, ...ks) {
242
243
  function isWorkspaceReference(x) {
243
244
  return typeof x === 'object' && !!x && ['isPrivatePackage', 'versionType', 'name', 'outdir'].every(k => x[k] !== undefined);
244
245
  }
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi90eXBlc2NyaXB0LXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLCtCQUFnQztBQUNoQyxtQ0FBMEc7QUFtRDFHOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQVFuRSxZQUFZLE9BQW1DO1FBQzdDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FDdkIsT0FBTyxFQUNQLFFBQVEsRUFDUixNQUFNLEVBQ04sYUFBYSxFQUNiLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUNULHdCQUF3QixFQUN4QixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLGtCQUFrQixDQUNuQixDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDM0MsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7UUFFL0MsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLGNBQWMsSUFBSSxVQUFVLENBQUM7UUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxtQkFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUUvRyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUVuRyxLQUFLLENBQUM7WUFDSixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsSUFBSSxFQUFFLE9BQU8s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LEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBc0MsQ0FBSSxFQUFFLEdBQUcsRUFBTztJQUNwRSxNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDckIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxDQUFVO0lBQ3RDLE9BQU8sT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBNkMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxDQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7QUFDcEwsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IENvbXBvbmVudCwgamF2YXNjcmlwdCwgdHlwZXNjcmlwdCwgVGFza1N0ZXAsIFNvdXJjZUNvZGUsIERlcGVuZGVuY3lUeXBlLCBQcm9qZWN0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IE1vbm9yZXBvIH0gZnJvbSAnLi9tb25vcmVwbyc7XG5pbXBvcnQgeyBUeXBlU2NyaXB0V29ya3NwYWNlT3B0aW9ucyB9IGZyb20gJy4vdHlwZXNjcmlwdC13b3Jrc3BhY2Utb3B0aW9ucyc7XG5cbi8qKlxuICogV2hhdCBraW5kIG9mIHNlbXZlciBkZXBlbmRlbmN5IHRvIHRha2VcbiAqXG4gKiAtICdhbnktbWlub3InIGNvcnJlc3BvbmRzIHRvICdeMSdcbiAqIC0gJ2Z1dHVyZS1taW5vcicgY29ycmVzcG9uZHMgdG8gJ14xLjIuMydcbiAqIC0gJ2FueS1wYXRjaCcgdG8gJ34xLjInXG4gKiAtICdmdXR1cmUtcGF0Y2gnIGNvcnJlc3BvbmRzIHRvICd+MS4yLjMnXG4gKiAtICdleGFjdCcgY29ycmVzcG9uZHMgdG8gJzEuMi4zJ1xuICogLSAnYW55LWZ1dHVyZScgY29ycmVzcG9uZHMgdG8gJz49MS4yLjMnXG4gKiAtICdhbnknIGNvcnJlc3BvbmRzIHRvICcqJ1xuICovXG5leHBvcnQgdHlwZSBWZXJzaW9uVHlwZSA9ICdhbnktbWlub3InIHwgJ2Z1dHVyZS1taW5vcicgfCAnYW55LXBhdGNoJyB8ICdmdXR1cmUtcGF0Y2gnIHwgJ2V4YWN0JyB8ICdhbnktZnV0dXJlJyB8ICdhbnknO1xuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGEgd29ya3NwYWNlIGluIHRoZSBzYW1lIG1vbm9yZXBvXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byByZWZlcmVuY2UgcGFja2FnZXMgaW4gdGhlIHNhbWUgbW9ub3JlcG8gd2hlbiBkZWNsYXJpbmdcbiAqIGBkZXBzYCBhbmQgYGRldkRlcHNgLlxuICpcbiAqIEJ5IGRlZmF1bHQsIGFsbCBgVHlwZVNjcmlwdFdvcmtzcGFjZWBzIGltcGxlbWVudCB0aGlzIGludGVyZmFjZSwgcmVwcmVzZW50aW5nIHRoZW1zZWx2ZXNcbiAqIHdpdGggYSBgXmAgZGVwZW5kZW5jeSBhbmQgYSByZXN0cmljdGlvbiB0aGF0IHB1YmxpYyBwYWNrYWdlcyBtdXN0IGhhdmUgcHVibGljIGRlcGVuZGVuY2llcy5cbiAqXG4gKiBUaGUgbWV0aG9kIGAuY3VzdG9taXplUmVmZXJlbmNlKHsgLi4uIH0pYCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSB3b3Jrc3BhY2UgcmVmZXJlbmNlIHdpdGhcbiAqIGRpZmZlcmVudCBiZWhhdmlvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJV29ya3NwYWNlUmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlZmVyZW5jZWQgd29ya3NwYWNlIHBhY2thZ2UgaXMgcHJpdmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaXNQcml2YXRlUGFja2FnZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGRlcGVuZGVuY3kgbmFtZSBvZiB0aGUgcGFja2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VtdmVyIHJhbmdlIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgcGFja2FnZSB3aGVuIGl0IGlzIHJlbGVhc2VkXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uVHlwZTogVmVyc2lvblR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgdGhhdCBob2xkcyB0aGlzIHBhY2thZ2UgaW4gdGhlIG1vbm9yZXBvXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIFR5cGVTY3JpcHQgd29ya3NwYWNlIGluIGEgYHlhcm4uTW9ub3JlcG9gXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0V29ya3NwYWNlIGV4dGVuZHMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdCBpbXBsZW1lbnRzIElXb3Jrc3BhY2VSZWZlcmVuY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgd29ya3NwYWNlRGlyZWN0b3J5OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBidW5kbGVkRGVwczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJpdmF0ZVBhY2thZ2U6IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uVHlwZSA9ICdmdXR1cmUtbWlub3InO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbW9ub3JlcG86IE1vbm9yZXBvO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFR5cGVTY3JpcHRXb3Jrc3BhY2VPcHRpb25zKSB7XG4gICAgY29uc3QgcmVtYWluZGVyID0gd2l0aG91dChcbiAgICAgIG9wdGlvbnMsXG4gICAgICAncGFyZW50JyxcbiAgICAgICduYW1lJyxcbiAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAnZGVwcycsXG4gICAgICAncGVlckRlcHMnLFxuICAgICAgJ2RldkRlcHMnLFxuICAgICAgJ2V4Y2x1ZGVEZXBzRnJvbVVwZ3JhZGUnLFxuICAgICAgJ3JlcG9zaXRvcnknLFxuICAgICAgJ3dvcmtmbG93Tm9kZVZlcnNpb24nLFxuICAgICAgJ2FsbG93UHJpdmF0ZURlcHMnLFxuICAgICk7XG5cbiAgICBjb25zdCB1c2VFc2xpbnQgPSByZW1haW5kZXIuZXNsaW50ID8/IHRydWU7XG4gICAgY29uc3QgdXNlUHJldHRpZXIgPSByZW1haW5kZXIucHJldHRpZXIgPz8gdHJ1ZTtcblxuICAgIGNvbnN0IHdzU2NvcGUgPSByZW1haW5kZXIud29ya3NwYWNlU2NvcGUgPz8gJ3BhY2thZ2VzJztcbiAgICBjb25zdCB3b3Jrc3BhY2VEaXJlY3RvcnkgPSBgJHt3c1Njb3BlfS8ke29wdGlvbnMubmFtZX1gO1xuXG4gICAgY29uc3QgbnBtQWNjZXNzID0gb3B0aW9ucy5wYXJlbnQubW9ub3JlcG9SZWxlYXNlICYmICFvcHRpb25zLnByaXZhdGUgPyBqYXZhc2NyaXB0Lk5wbUFjY2Vzcy5QVUJMSUMgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZWxlYXNlRW52aXJvbm1lbnQgPSBvcHRpb25zLnJlbGVhc2VFbnZpcm9ubWVudCA/PyBvcHRpb25zLnBhcmVudC5vcHRpb25zLnJlbGVhc2VFbnZpcm9ubWVudDtcblxuICAgIHN1cGVyKHtcbiAgICAgIHBhcmVudDogb3B0aW9ucy5wYXJlbnQsXG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgIHJlcG9zaXRvcnk6IG9wdGlvbnMucmVwb3NpdG9yeSA/PyBvcHRpb25zLnBhcmVudC5yZXBvc2l0b3J5VXJsLFxuICAgICAgcmVwb3NpdG9yeURpcmVjdG9yeTogd29ya3NwYWNlRGlyZWN0b3J5LFxuICAgICAgb3V0ZGlyOiB3b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogJ1JFUVVJUkVELUJVVC1TSE9VTEQtTk9ULUJFJyxcbiAgICAgIHJlbGVhc2U6IGZhbHNlLFxuICAgICAgcGFja2FnZTogIW9wdGlvbnMucHJpdmF0ZSxcbiAgICAgIGVzbGludDogdXNlRXNsaW50LFxuICAgICAgcHJldHRpZXI6IHVzZVByZXR0aWVyLFxuICAgICAgcHJldHRpZXJPcHRpb25zOiB1c2VQcmV0dGllclxuICAgICAgICA/IHtcbiAgICAgICAgICBvdmVycmlkZXM6IG9wdGlvbnMucGFyZW50LnByZXR0aWVyPy5vdmVycmlkZXMsXG4gICAgICAgICAgc2V0dGluZ3M6IG9wdGlvbnMucGFyZW50LnByZXR0aWVyPy5zZXR0aW5ncyxcbiAgICAgICAgICAuLi5yZW1haW5kZXIucHJldHRpZXJPcHRpb25zLFxuICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZXNsaW50T3B0aW9uczogdXNlRXNsaW50XG4gICAgICAgID8ge1xuICAgICAgICAgIGRpcnM6IFtyZW1haW5kZXIuc3JjZGlyID8/ICdzcmMnXSxcbiAgICAgICAgICBkZXZkaXJzOiBbcmVtYWluZGVyLnRlc3RkaXIgPz8gJ3Rlc3QnLCAnYnVpbGQtdG9vbHMnXSxcbiAgICAgICAgICAuLi5yZW1haW5kZXIuZXNsaW50T3B0aW9ucyxcbiAgICAgICAgICBwcmV0dGllcjogdXNlUHJldHRpZXIsXG4gICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcblxuICAgICAgZGVwczogcGFja2FnZU5hbWVzKG9wdGlvbnMuZGVwcyksXG4gICAgICBwZWVyRGVwczogcGFja2FnZU5hbWVzKG9wdGlvbnMucGVlckRlcHMpLFxuICAgICAgZGV2RGVwczogcGFja2FnZU5hbWVzKG9wdGlvbnMuZGV2RGVwcyksXG4gICAgICBwcm9qZW5EZXZEZXBlbmRlbmN5OiB0cnVlLFxuICAgICAgcmVsZWFzZUVudmlyb25tZW50LFxuXG4gICAgICBkZXBzVXBncmFkZTogb3B0aW9ucy5kZXBzVXBncmFkZSA/PyB0cnVlLFxuICAgICAgZGVwc1VwZ3JhZGVPcHRpb25zOiB7XG4gICAgICAgIHdvcmtmbG93OiBmYWxzZSxcbiAgICAgICAgZXhjbHVkZTogW1xuICAgICAgICAgIC4uLihvcHRpb25zLmV4Y2x1ZGVEZXBzRnJvbVVwZ3JhZGUgPz8gW10pLFxuICAgICAgICAgIC4uLihwYWNrYWdlTmFtZXMob3B0aW9ucy5kZXBzPy5maWx0ZXIoaXNXb3Jrc3BhY2VSZWZlcmVuY2UpKSA/PyBbXSksXG4gICAgICAgICAgLi4uKHBhY2thZ2VOYW1lcyhvcHRpb25zLnBlZXJEZXBzPy5maWx0ZXIoaXNXb3Jrc3BhY2VSZWZlcmVuY2UpKSA/PyBbXSksXG4gICAgICAgICAgLi4uKHBhY2thZ2VOYW1lcyhvcHRpb25zLmRldkRlcHM/LmZpbHRlcihpc1dvcmtzcGFjZVJlZmVyZW5jZSkpID8/IFtdKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG5cbiAgICAgIG5wbUFjY2VzcyxcblxuICAgICAgLy8gRGV2aWF0aW9uIGZyb20gdXBzdHJlYW0gcHJvamVuOiB1cHN0cmVhbSBwcm9qZW4gZGVmYXVsdHMgdG8gbWluTm9kZVZlcnNpb24sIGJ1dCB3ZSBoYXZlIHRvbyBtYW55IHdvcmtmbG93c1xuICAgICAgLy8gdGhhdCB1c2UgdG9vbHMgdGhhdCB3YW50IGEgcmVjZW50IE5vZGUgdmVyc2lvbiwgc28gZGVmYXVsdCB0byBhIHJlYXNvbmFibGUgZmxvYXRpbmcgdmVyc2lvbi5cbiAgICAgIHdvcmtmbG93Tm9kZVZlcnNpb246IG9wdGlvbnMud29ya2Zsb3dOb2RlVmVyc2lvbiA/PyAnbHRzLyonLFxuXG4gICAgICAuLi5yZW1haW5kZXIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vbm9yZXBvID0gb3B0aW9ucy5wYXJlbnQ7XG4gICAgdGhpcy5pc1ByaXZhdGVQYWNrYWdlID0gb3B0aW9ucy5wcml2YXRlID8/IGZhbHNlO1xuICAgIHRoaXMud29ya3NwYWNlRGlyZWN0b3J5ID0gd29ya3NwYWNlRGlyZWN0b3J5O1xuXG4gICAgLy8gSWYgdGhlIHBhY2thZ2UgaXMgcHVibGljLCBhbGwgbG9jYWwgZGVwcyBhbmQgcGVlciBkZXBzIG11c3QgYWxzbyBiZSBwdWJsaWMgYW5kIG90aGVyIFR5cGVTY3JpcHRXb3Jrc3BhY2VzXG4gICAgaWYgKCF0aGlzLmlzUHJpdmF0ZVBhY2thZ2UpIHtcbiAgICAgIGNvbnN0IGlsbGVnYWxEZXBzID0gW1xuICAgICAgICAvLyBPdmVycmlkYWJsZSBmb3IgZGVwcyBiZWNhdXNlIHRoaXMgbWlnaHQgbWFrZSBzZW5zZSBpZiB3ZSBidW5kbGUgdGhlIHBhY2thZ2UuXG4gICAgICAgIC4uLm9wdGlvbnMuZGVwcz8uZmlsdGVyKGlzV29ya3NwYWNlUmVmZXJlbmNlKS5maWx0ZXIodyA9PiB3LmlzUHJpdmF0ZVBhY2thZ2UgJiYgIW9wdGlvbnMuYWxsb3dQcml2YXRlRGVwcykgPz8gW10sXG4gICAgICAgIC8vIEJ1dCBub3QgZm9yIHBlZXJEZXBzLCB0aGV5IG11c3QgYWx3YXlzIGJlIGluc3RhbGxlZCBieSB0aGUgdXNlci5cbiAgICAgICAgLi4ub3B0aW9ucy5wZWVyRGVwcz8uZmlsdGVyKGlzV29ya3NwYWNlUmVmZXJlbmNlKS5maWx0ZXIodyA9PiB3LmlzUHJpdmF0ZVBhY2thZ2UpID8/IFtdLFxuICAgICAgICAvLyBkZXZEZXBzIGNhbiBiZSBwcml2YXRlLCB3ZSBkb24ndCBjYXJlLlxuICAgICAgXTtcblxuICAgICAgaWYgKGlsbGVnYWxEZXBzLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICAgICAgIGAke3RoaXMubmFtZX0gaXMgcHVibGljIGFuZCBjYW5ub3QgZGVwZW5kIG9uIGFueSBwcml2YXRlIHBhY2thZ2VzIGZyb20gdGhlIHdvcmtzcGFjZS5gLFxuICAgICAgICAgIGBQbGVhc2UgZml4IHRoZXNlIGRlcGVuZGVuY2llczpcXG4gICAgLSAke2lsbGVnYWxEZXBzLm1hcCgocCkgPT4gcC5uYW1lKS5qb2luKCdcXG4gICAgLSAnKX1gLFxuICAgICAgICBdLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZWdpc3RlciB3aXRoIHJlbGVhc2Ugd29ya2Zsb3dcbiAgICB0aGlzLm1vbm9yZXBvLm1vbm9yZXBvUmVsZWFzZT8uYWRkV29ya3NwYWNlKHRoaXMsIHtcbiAgICAgIHByaXZhdGU6IHRoaXMuaXNQcml2YXRlUGFja2FnZSxcbiAgICAgIHdvcmtmbG93Tm9kZVZlcnNpb246IHRoaXMubm9kZVZlcnNpb24sXG4gICAgICBucG1EaXN0VGFnOiBvcHRpb25zLm5wbURpc3RUYWcsXG4gICAgICAvLyBJbmhlcml0IHNldHRpbmcgZnJvbSBNb25vcmVwbyBpZiBjb25maWd1cmVkXG4gICAgICBucG1UcnVzdGVkUHVibGlzaGluZzogb3B0aW9ucy5ucG1UcnVzdGVkUHVibGlzaGluZyA/PyB0aGlzLm1vbm9yZXBvLm9wdGlvbnMubnBtVHJ1c3RlZFB1Ymxpc2hpbmcsXG4gICAgICBlbnZpcm9ubWVudDogcmVsZWFzZUVudmlyb25tZW50LFxuICAgICAgcmVsZWFzYWJsZUNvbW1pdHM6IG9wdGlvbnMucmVsZWFzYWJsZUNvbW1pdHMsXG4gICAgICBuZXh0VmVyc2lvbkNvbW1hbmQ6IG9wdGlvbnMubmV4dFZlcnNpb25Db21tYW5kLFxuICAgICAgdmVyc2lvbkJyYW5jaE9wdGlvbnM6IHtcbiAgICAgICAgbWFqb3JWZXJzaW9uOiBvcHRpb25zLm1ham9yVmVyc2lvbixcbiAgICAgICAgbWluTWFqb3JWZXJzaW9uOiBvcHRpb25zLm1pbk1ham9yVmVyc2lvbixcbiAgICAgICAgcHJlcmVsZWFzZTogb3B0aW9ucy5wcmVyZWxlYXNlLFxuICAgICAgfSxcbiAgICAgIHJlcG9SdW50aW1lRGVwZW5kZW5jaWVzOiBPYmplY3QuZnJvbUVudHJpZXMoW1xuICAgICAgICAuLi5vcHRpb25zLmRlcHMgPz8gW10sXG4gICAgICAgIC4uLm9wdGlvbnMucGVlckRlcHMgPz8gW10sXG4gICAgICBdLmZpbHRlcihpc1dvcmtzcGFjZVJlZmVyZW5jZSkubWFwKHcgPT4gW3cubmFtZSwgdy52ZXJzaW9uVHlwZV0pKSxcbiAgICB9KTtcblxuICAgIC8vIGplc3QgY29uZmlnXG4gICAgaWYgKHRoaXMuamVzdD8uY29uZmlnICYmIHRoaXMuamVzdC5jb25maWcucHJlc2V0ID09PSAndHMtamVzdCcpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmplc3QuY29uZmlnLmdsb2JhbHM/LlsndHMtamVzdCddO1xuICAgICAgdGhpcy5qZXN0LmNvbmZpZy50cmFuc2Zvcm0gPSB7XG4gICAgICAgICdeLitcXFxcLnRzeD8kJzogW1xuICAgICAgICAgICd0cy1qZXN0JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0c2NvbmZpZzogdGhpcy50c2NvbmZpZ0Rldi5maWxlTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBUYXNrc1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgnZGVmYXVsdCcpPy5yZXNldChgY2QgJHtyZWxhdGl2ZSh0aGlzLm91dGRpciwgb3B0aW9ucy5wYXJlbnQub3V0ZGlyKX0gJiYgbnB4IHByb2plbiBkZWZhdWx0YCk7XG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdjbG9iYmVyJyk7XG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdlamVjdCcpO1xuXG4gICAgY29uc3QgdXBncmFkZVRhc2tOYW1lID0gJ3VwZ3JhZGUnO1xuICAgIGNvbnN0IHVwZ3JhZGVzID0gdGhpcy5jb21wb25lbnRzLmZpbmQoXG4gICAgICAoYzogQ29tcG9uZW50KTogYyBpcyBqYXZhc2NyaXB0LlVwZ3JhZGVEZXBlbmRlbmNpZXMgPT4gKFxuICAgICAgICBjIGluc3RhbmNlb2YgamF2YXNjcmlwdC5VcGdyYWRlRGVwZW5kZW5jaWVzICYmIGMudXBncmFkZVRhc2submFtZSA9PT0gdXBncmFkZVRhc2tOYW1lXG4gICAgICApLFxuICAgICk7XG5cbiAgICBpZiAodXBncmFkZXMpIHtcbiAgICAgIHRoaXMudGFza3MucmVtb3ZlVGFzayh1cGdyYWRlcy51cGdyYWRlVGFzay5uYW1lKTtcbiAgICAgIHRoaXMudGFza3MucmVtb3ZlVGFzayh1cGdyYWRlcy5wb3N0VXBncmFkZVRhc2submFtZSk7XG4gICAgICB0aGlzLnRhc2tzLmFkZFRhc2soJ2NoZWNrLWZvci11cGRhdGVzJywge1xuICAgICAgICBlbnY6IHsgQ0k6ICcwJyB9LFxuICAgICAgICBzdGVwczoge1xuICAgICAgICAgIHRvSlNPTjogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RlcHMgPSAodXBncmFkZXMgYXMgYW55KS5yZW5kZXJUYXNrU3RlcHMoKSBhcyBUYXNrU3RlcFtdO1xuICAgICAgICAgICAgcmV0dXJuIHN0ZXBzLmZpbHRlcihcbiAgICAgICAgICAgICAgKHN0ZXApID0+IHN0ZXAuZXhlYyAmJiB0eXBlb2Ygc3RlcC5leGVjID09PSAnc3RyaW5nJyAmJiBzdGVwLmV4ZWM/LnN0YXJ0c1dpdGgoJ25weCBucG0tY2hlY2stdXBkYXRlcycpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9IGFzIGFueSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENvbXBvc2l0ZSBwcm9qZWN0IGFuZCByZWZlcmVuY2VzXG4gICAgY29uc3QgYWxsRGVwcyA9IFsuLi4ob3B0aW9ucy5kZXBzID8/IFtdKSwgLi4uKG9wdGlvbnMucGVlckRlcHMgPz8gW10pLCAuLi4ob3B0aW9ucy5kZXZEZXBzID8/IFtdKV07XG5cbiAgICBmb3IgKGNvbnN0IHRzY29uZmlnIG9mIFt0aGlzLnRzY29uZmlnLCB0aGlzLnRzY29uZmlnRGV2XSkge1xuICAgICAgdHNjb25maWc/LmZpbGUuYWRkT3ZlcnJpZGUoJ2NvbXBpbGVyT3B0aW9ucy5jb21wb3NpdGUnLCB0cnVlKTtcbiAgICAgIHRzY29uZmlnPy5maWxlLmFkZE92ZXJyaWRlKFxuICAgICAgICAncmVmZXJlbmNlcycsXG4gICAgICAgIGFsbERlcHMuZmlsdGVyKGlzV29ya3NwYWNlUmVmZXJlbmNlKS5tYXAoKHApID0+ICh7IHBhdGg6IHJlbGF0aXZlKHRoaXMub3V0ZGlyLCBwLm91dGRpcikgfSkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBBbGxvdyBwYXNzaW5nIGFkZGl0aW9uYWwgYXJncyBsaWtlIGAtLWZvcmNlYCB0byB0aGUgY29tcGlsZSB0YXNrXG4gICAgLy8gTmVlZGVkIGJlY2F1c2Ugd2UgdXNlIGNvbXBvc2l0ZSBwcm9qZWN0cyB0aGF0IG9mdGVuIG5lZWQgYSB0c2MgLS1idWlsZCAtLWZvcmNlXG4gICAgdGhpcy50YXNrcy50cnlGaW5kKCdjb21waWxlJyk/LnJlc2V0KCd0c2MgLS1idWlsZCcsIHtcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gSW5zdGFsbCBkZXBlbmRlbmNpZXMgdmlhIHRoZSBwYXJlbnQgcHJvamVjdFxuICAgIC8qIEB0cy1pZ25vcmUgYWNjZXNzIHByaXZhdGUgbWV0aG9kICovXG4gICAgY29uc3Qgb3JpZ2luYWxSZXNvbHZlID0gdGhpcy5wYWNrYWdlLnJlc29sdmVEZXBzQW5kV3JpdGVQYWNrYWdlSnNvbjtcbiAgICAvKiBAdHMtaWdub3JlIGFjY2VzcyBwcml2YXRlIG1ldGhvZCAqL1xuICAgIHRoaXMucGFja2FnZS5pbnN0YWxsRGVwZW5kZW5jaWVzID0gKCkgPT4ge1xuICAgICAgb3B0aW9ucy5wYXJlbnQucmVxdWVzdEluc3RhbGxEZXBlbmRlbmNpZXMoeyByZXNvbHZlRGVwc0FuZFdyaXRlUGFja2FnZUpzb246ICgpID0+IG9yaWdpbmFsUmVzb2x2ZS5hcHBseSh0aGlzLnBhY2thZ2UpIH0pO1xuICAgIH07XG4gICAgLyogQHRzLWlnbm9yZSBhY2Nlc3MgcHJpdmF0ZSBtZXRob2QgKi9cbiAgICB0aGlzLnBhY2thZ2UucmVzb2x2ZURlcHNBbmRXcml0ZVBhY2thZ2VKc29uID0gKCkgPT4geyB9O1xuXG4gICAgLy8gUHJpdmF0ZSBwYWNrYWdlXG4gICAgaWYgKG9wdGlvbnMucHJpdmF0ZSkge1xuICAgICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKCdwcml2YXRlJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gWWFybiBCZXJyeSBpbnN0YWxsQ29uZmlnXG4gICAgaWYgKG9wdGlvbnMuaG9pc3RpbmdMaW1pdHMpIHtcbiAgICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZCgnaW5zdGFsbENvbmZpZycsIHsgaG9pc3RpbmdMaW1pdHM6IG9wdGlvbnMuaG9pc3RpbmdMaW1pdHMgfSk7XG4gICAgfVxuXG4gICAgLy8gRml4ZXNcbiAgICB0aGlzLmFkZFRzY29uZmlnRGV2Rml4KCk7XG4gICAgdGhpcy5hZGRFc2xpbnRSY0ZpeCgpO1xuXG4gICAgdGhpcy5idW5kbGVkRGVwcy5wdXNoKC4uLm9wdGlvbnMuYnVuZGxlZERlcHMgPz8gW10pO1xuXG4gICAgLy8gSW5kaXZpZHVhbCB3b3Jrc3BhY2UgcGFja2FnZXMgc2hvdWxkbid0IGRlcGVuZCBvbiBcInByb2plblwiLCBpdCBnZXRzIGJyb3VnaHQgaW4gYXQgdGhlIG1vbm9yZXBvIHJvb3RcbiAgICB0aGlzLmRlcHMucmVtb3ZlRGVwZW5kZW5jeSgncHJvamVuJyk7XG5cbiAgICBvcHRpb25zLnBhcmVudC5yZWdpc3Rlcih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJIGRvbid0IGtub3cgd2h5IGB0c2NvbmZpZy5kZXYuanNvbmAgZG9lc24ndCBoYXZlIGFuIG91dGRpciwgb3Igd2hlcmUgaXQncyB1c2VkLFxuICAgKiBidXQgaXQncyBjYXVzaW5nIGluLXBsYWNlIGAuanNgIGZpbGVzIHRvIGFwcGVhci5cbiAgICovXG4gIHByb3RlY3RlZCBhZGRUc2NvbmZpZ0RldkZpeCgpIHtcbiAgICB0aGlzLnRzY29uZmlnRGV2LmZpbGUuYWRkT3ZlcnJpZGUoJ2NvbXBpbGVyT3B0aW9ucy5vdXREaXInLCAnbGliJyk7XG4gIH1cblxuICAvKipcbiAgICogTmVlZCB0byBoYWNrIEVTTGludCBjb25maWdcbiAgICpcbiAgICogLmVzbGludHJjLmpzIHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIEpTT04gZmlsZSwgaXQgd2lsbCBsb2FkIHRoZVxuICAgKiBKU09OIGZpbGUgYW5kIHBhdGNoIGl0IHdpdGggYSBkeW5hbWljIGRpcmVjdG9yeSBuYW1lIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluXG4gICAqIHBsYWluIEpTT04gKHNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi9pc3N1ZXMvMjQwNSkuXG4gICAqXG4gICAqIFNpbmNlIGVzbGludCBjb25maWcgaXMgbG9hZGVkIHdpdGggZGlmZmVyZW50IGN3ZCdzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0J3NcbiAgICogZnJvbSB0aGUgVlNDb2RlIHBsdWdpbiBvciBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHVzZSBhYnNvbHV0ZSBwYXRocyBldmVyeXdoZXJlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZEVzbGludFJjRml4KCkge1xuICAgIGNvbnN0IGVzbGludFJjID0gbmV3IFNvdXJjZUNvZGUodGhpcywgJy5lc2xpbnRyYy5qcycpO1xuICAgIGVzbGludFJjLmxpbmUoJ3ZhciBwYXRoID0gcmVxdWlyZShcXCdwYXRoXFwnKTsnKTtcbiAgICBlc2xpbnRSYy5saW5lKCd2YXIgZnMgPSByZXF1aXJlKFxcJ2ZzXFwnKTsnKTtcbiAgICBlc2xpbnRSYy5saW5lKCd2YXIgY29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMoYCR7X19kaXJuYW1lfS8uZXNsaW50cmMuanNvbmAsIHsgZW5jb2Rpbmc6IFxcJ3V0Zi04XFwnIH0pOycpO1xuICAgIGVzbGludFJjLmxpbmUoJy8vIFN0cmlwIGNvbW1lbnRzLCBKU09OLnBhcnNlKCkgZG9lc25cXCd0IGxpa2UgdGhvc2UnKTtcbiAgICBlc2xpbnRSYy5saW5lKCdjb250ZW50cyA9IGNvbnRlbnRzLnJlcGxhY2UoL15cXFxcL1xcXFwvLiokL20sIFxcJ1xcJyk7Jyk7XG4gICAgZXNsaW50UmMubGluZSgndmFyIGpzb24gPSBKU09OLnBhcnNlKGNvbnRlbnRzKTsnKTtcbiAgICBlc2xpbnRSYy5saW5lKCcvLyBQYXRjaCB0aGUgLmpzb24gY29uZmlnIHdpdGggc29tZXRoaW5nIHRoYXQgY2FuIG9ubHkgYmUgcmVwcmVzZW50ZWQgaW4gSlMnKTtcbiAgICBlc2xpbnRSYy5saW5lKCdqc29uLnBhcnNlck9wdGlvbnMudHNjb25maWdSb290RGlyID0gX19kaXJuYW1lOycpO1xuICAgIGVzbGludFJjLmxpbmUoJ21vZHVsZS5leHBvcnRzID0ganNvbjsnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIFByb2plY3RzIGluIHRoZSB3b3Jrc3BhY2UgdGhhdCBhcmUgYWxzbyBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGRlcGVuZGVuY3kgdHlwZS5cbiAgICovXG4gIHB1YmxpYyB3b3Jrc3BhY2VEZXBlbmRlbmNpZXModHlwZXM/OiBEZXBlbmRlbmN5VHlwZVtdKTogUHJvamVjdFtdIHtcbiAgICByZXR1cm4gdGhpcy5tb25vcmVwby5zdWJwcm9qZWN0cy5maWx0ZXIoKHNpYmxpbmcpID0+XG4gICAgICB0aGlzLmRlcHMuYWxsLnNvbWUoKGQpID0+IGQubmFtZSA9PT0gc2libGluZy5uYW1lICYmICghdHlwZXMgfHwgdHlwZXMuaW5jbHVkZXMoZC50eXBlKSkpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3BlY2lhbGl6ZWQgcmVmZXJlbmNlIHRvIHRoaXMgd29ya3NwYWNlXG4gICAqL1xuICBwdWJsaWMgY3VzdG9taXplUmVmZXJlbmNlKHJlZk9wdHM/OiBSZWZlcmVuY2VPcHRpb25zKTogSVdvcmtzcGFjZVJlZmVyZW5jZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIG91dGRpcjogdGhpcy5vdXRkaXIsXG4gICAgICBpc1ByaXZhdGVQYWNrYWdlOiB0aGlzLmlzUHJpdmF0ZVBhY2thZ2UsXG4gICAgICB2ZXJzaW9uVHlwZTogcmVmT3B0cz8udmVyc2lvblR5cGUgPz8gdGhpcy52ZXJzaW9uVHlwZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGB3b3Jrc3BhY2UuY3VzdG9taXplUmVmZXJlbmNlKClgIG1ldGhvZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hhdCB0eXBlIG9mIGRlcGVuZGVuY3kgdG8gdGFrZSBvbiB0aGlzIHBhY2thZ2VcbiAgICpcbiAgICogQnkgZGVmYXVsdCwgZGVwZW5kZW5jaWVzIHdpbGwgYmUgcmVmZXJlbmNlZCB3aXRoIGEgYF5gLCB3aGljaCBtZWFucyB0aGF0XG4gICAqIGNvbWUgaW5zdGFsbCB0aW1lIGEgbmV3ZXIgdmVyc2lvbiBtYXkgYmUgaW5zdGFsbGVkLlxuICAgKlxuICAgKiBDaG9vc2UgYSBkaWZmZXJlbnQgcmFuZ2UgdHlwZSB0byB0YWtlLCBmb3IgZXhhbXBsZSwgYW4gYGV4YWN0YCBkZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnZnV0dXJlLW1pbm9yJ1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvblR5cGU/OiBWZXJzaW9uVHlwZTtcbn1cblxuZnVuY3Rpb24gcGFja2FnZU5hbWVzKHhzPzogQXJyYXk8c3RyaW5nIHwgSVdvcmtzcGFjZVJlZmVyZW5jZT4pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gIGlmICgheHMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB4cy5tYXAoKHgpID0+ICh0eXBlb2YgeCA9PT0gJ3N0cmluZycgPyB4IDogeC5uYW1lKSk7XG59XG5cbmZ1bmN0aW9uIHdpdGhvdXQ8QSBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIGtleW9mIEE+KHg6IEEsIC4uLmtzOiBLW10pOiBPbWl0PEEsIEs+IHtcbiAgY29uc3QgcmV0ID0geyAuLi54IH07XG4gIGZvciAoY29uc3QgayBvZiBrcykge1xuICAgIGRlbGV0ZSByZXRba107XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gaXNXb3Jrc3BhY2VSZWZlcmVuY2UoeDogdW5rbm93bik6IHggaXMgSVdvcmtzcGFjZVJlZmVyZW5jZSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgISF4ICYmIChbJ2lzUHJpdmF0ZVBhY2thZ2UnLCAndmVyc2lvblR5cGUnLCAnbmFtZScsICdvdXRkaXInXSBzYXRpc2ZpZXMgQXJyYXk8a2V5b2YgSVdvcmtzcGFjZVJlZmVyZW5jZT4pLmV2ZXJ5KGsgPT4gKHggYXMgYW55KVtrXSAhPT0gdW5kZWZpbmVkKTtcbn1cbiJdfQ==
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi90eXBlc2NyaXB0LXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLCtCQUFnQztBQUNoQyxtQ0FBMEc7QUFtRDFHOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQVFuRSxZQUFZLE9BQW1DO1FBQzdDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FDdkIsT0FBTyxFQUNQLFFBQVEsRUFDUixNQUFNLEVBQ04sYUFBYSxFQUNiLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUNULHdCQUF3QixFQUN4QixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLGtCQUFrQixDQUNuQixDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDM0MsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7UUFFL0MsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLGNBQWMsSUFBSSxVQUFVLENBQUM7UUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxtQkFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUUvRyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUVuRyxLQUFLLENBQUM7WUFDSixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsSUFBSSxFQUFFLE9BQU8s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O1FBQ1IsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFzQyxDQUFJLEVBQUUsR0FBRyxFQUFPO0lBQ3BFLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNyQixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25CLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLENBQVU7SUFDdEMsT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFDLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUE2QyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLENBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQztBQUNwTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyByZWxhdGl2ZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBqYXZhc2NyaXB0LCB0eXBlc2NyaXB0LCBUYXNrU3RlcCwgU291cmNlQ29kZSwgRGVwZW5kZW5jeVR5cGUsIFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgTW9ub3JlcG8gfSBmcm9tICcuL21vbm9yZXBvJztcbmltcG9ydCB7IFR5cGVTY3JpcHRXb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSAnLi90eXBlc2NyaXB0LXdvcmtzcGFjZS1vcHRpb25zJztcblxuLyoqXG4gKiBXaGF0IGtpbmQgb2Ygc2VtdmVyIGRlcGVuZGVuY3kgdG8gdGFrZVxuICpcbiAqIC0gJ2FueS1taW5vcicgY29ycmVzcG9uZHMgdG8gJ14xJ1xuICogLSAnZnV0dXJlLW1pbm9yJyBjb3JyZXNwb25kcyB0byAnXjEuMi4zJ1xuICogLSAnYW55LXBhdGNoJyB0byAnfjEuMidcbiAqIC0gJ2Z1dHVyZS1wYXRjaCcgY29ycmVzcG9uZHMgdG8gJ34xLjIuMydcbiAqIC0gJ2V4YWN0JyBjb3JyZXNwb25kcyB0byAnMS4yLjMnXG4gKiAtICdhbnktZnV0dXJlJyBjb3JyZXNwb25kcyB0byAnPj0xLjIuMydcbiAqIC0gJ2FueScgY29ycmVzcG9uZHMgdG8gJyonXG4gKi9cbmV4cG9ydCB0eXBlIFZlcnNpb25UeXBlID0gJ2FueS1taW5vcicgfCAnZnV0dXJlLW1pbm9yJyB8ICdhbnktcGF0Y2gnIHwgJ2Z1dHVyZS1wYXRjaCcgfCAnZXhhY3QnIHwgJ2FueS1mdXR1cmUnIHwgJ2FueSc7XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYSB3b3Jrc3BhY2UgaW4gdGhlIHNhbWUgbW9ub3JlcG9cbiAqXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlZmVyZW5jZSBwYWNrYWdlcyBpbiB0aGUgc2FtZSBtb25vcmVwbyB3aGVuIGRlY2xhcmluZ1xuICogYGRlcHNgIGFuZCBgZGV2RGVwc2AuXG4gKlxuICogQnkgZGVmYXVsdCwgYWxsIGBUeXBlU2NyaXB0V29ya3NwYWNlYHMgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLCByZXByZXNlbnRpbmcgdGhlbXNlbHZlc1xuICogd2l0aCBhIGBeYCBkZXBlbmRlbmN5IGFuZCBhIHJlc3RyaWN0aW9uIHRoYXQgcHVibGljIHBhY2thZ2VzIG11c3QgaGF2ZSBwdWJsaWMgZGVwZW5kZW5jaWVzLlxuICpcbiAqIFRoZSBtZXRob2QgYC5jdXN0b21pemVSZWZlcmVuY2UoeyAuLi4gfSlgIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHdvcmtzcGFjZSByZWZlcmVuY2Ugd2l0aFxuICogZGlmZmVyZW50IGJlaGF2aW9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElXb3Jrc3BhY2VSZWZlcmVuY2Uge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVmZXJlbmNlZCB3b3Jrc3BhY2UgcGFja2FnZSBpcyBwcml2YXRlXG4gICAqL1xuICByZWFkb25seSBpc1ByaXZhdGVQYWNrYWdlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBuYW1lIG9mIHRoZSBwYWNrYWdlXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZW12ZXIgcmFuZ2UgdGhhdCBzaG91bGQgYmUgdXNlZCB0byByZWZlcmVuY2UgdGhpcyBwYWNrYWdlIHdoZW4gaXQgaXMgcmVsZWFzZWRcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25UeXBlOiBWZXJzaW9uVHlwZTtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSB0aGF0IGhvbGRzIHRoaXMgcGFja2FnZSBpbiB0aGUgbW9ub3JlcG9cbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgVHlwZVNjcmlwdCB3b3Jrc3BhY2UgaW4gYSBgeWFybi5Nb25vcmVwb2BcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRXb3Jrc3BhY2UgZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0IGltcGxlbWVudHMgSVdvcmtzcGFjZVJlZmVyZW5jZSB7XG4gIHB1YmxpYyByZWFkb25seSB3b3Jrc3BhY2VEaXJlY3Rvcnk6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGJ1bmRsZWREZXBzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNQcml2YXRlUGFja2FnZTogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IHZlcnNpb25UeXBlID0gJ2Z1dHVyZS1taW5vcic7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb25vcmVwbzogTW9ub3JlcG87XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogVHlwZVNjcmlwdFdvcmtzcGFjZU9wdGlvbnMpIHtcbiAgICBjb25zdCByZW1haW5kZXIgPSB3aXRob3V0KFxuICAgICAgb3B0aW9ucyxcbiAgICAgICdwYXJlbnQnLFxuICAgICAgJ25hbWUnLFxuICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICdkZXBzJyxcbiAgICAgICdwZWVyRGVwcycsXG4gICAgICAnZGV2RGVwcycsXG4gICAgICAnZXhjbHVkZURlcHNGcm9tVXBncmFkZScsXG4gICAgICAncmVwb3NpdG9yeScsXG4gICAgICAnd29ya2Zsb3dOb2RlVmVyc2lvbicsXG4gICAgICAnYWxsb3dQcml2YXRlRGVwcycsXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZUVzbGludCA9IHJlbWFpbmRlci5lc2xpbnQgPz8gdHJ1ZTtcbiAgICBjb25zdCB1c2VQcmV0dGllciA9IHJlbWFpbmRlci5wcmV0dGllciA/PyB0cnVlO1xuXG4gICAgY29uc3Qgd3NTY29wZSA9IHJlbWFpbmRlci53b3Jrc3BhY2VTY29wZSA/PyAncGFja2FnZXMnO1xuICAgIGNvbnN0IHdvcmtzcGFjZURpcmVjdG9yeSA9IGAke3dzU2NvcGV9LyR7b3B0aW9ucy5uYW1lfWA7XG5cbiAgICBjb25zdCBucG1BY2Nlc3MgPSBvcHRpb25zLnBhcmVudC5tb25vcmVwb1JlbGVhc2UgJiYgIW9wdGlvbnMucHJpdmF0ZSA/IGphdmFzY3JpcHQuTnBtQWNjZXNzLlBVQkxJQyA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHJlbGVhc2VFbnZpcm9ubWVudCA9IG9wdGlvbnMucmVsZWFzZUVudmlyb25tZW50ID8/IG9wdGlvbnMucGFyZW50Lm9wdGlvbnMucmVsZWFzZUVudmlyb25tZW50O1xuXG4gICAgc3VwZXIoe1xuICAgICAgcGFyZW50OiBvcHRpb25zLnBhcmVudCxcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgcmVwb3NpdG9yeTogb3B0aW9ucy5yZXBvc2l0b3J5ID8/IG9wdGlvbnMucGFyZW50LnJlcG9zaXRvcnlVcmwsXG4gICAgICByZXBvc2l0b3J5RGlyZWN0b3J5OiB3b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICBvdXRkaXI6IHdvcmtzcGFjZURpcmVjdG9yeSxcbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiAnUkVRVUlSRUQtQlVULVNIT1VMRC1OT1QtQkUnLFxuICAgICAgcGFja2FnZU1hbmFnZXI6IG9wdGlvbnMucGFyZW50LnBhY2thZ2UucGFja2FnZU1hbmFnZXIsXG4gICAgICByZWxlYXNlOiBmYWxzZSxcbiAgICAgIHBhY2thZ2U6ICFvcHRpb25zLnByaXZhdGUsXG4gICAgICBlc2xpbnQ6IHVzZUVzbGludCxcbiAgICAgIHByZXR0aWVyOiB1c2VQcmV0dGllcixcbiAgICAgIHByZXR0aWVyT3B0aW9uczogdXNlUHJldHRpZXJcbiAgICAgICAgPyB7XG4gICAgICAgICAgb3ZlcnJpZGVzOiBvcHRpb25zLnBhcmVudC5wcmV0dGllcj8ub3ZlcnJpZGVzLFxuICAgICAgICAgIHNldHRpbmdzOiBvcHRpb25zLnBhcmVudC5wcmV0dGllcj8uc2V0dGluZ3MsXG4gICAgICAgICAgLi4ucmVtYWluZGVyLnByZXR0aWVyT3B0aW9ucyxcbiAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGVzbGludE9wdGlvbnM6IHVzZUVzbGludFxuICAgICAgICA/IHtcbiAgICAgICAgICBkaXJzOiBbcmVtYWluZGVyLnNyY2RpciA/PyAnc3JjJ10sXG4gICAgICAgICAgZGV2ZGlyczogW3JlbWFpbmRlci50ZXN0ZGlyID8/ICd0ZXN0JywgJ2J1aWxkLXRvb2xzJ10sXG4gICAgICAgICAgLi4ucmVtYWluZGVyLmVzbGludE9wdGlvbnMsXG4gICAgICAgICAgcHJldHRpZXI6IHVzZVByZXR0aWVyLFxuICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgc2FtcGxlQ29kZTogZmFsc2UsXG5cbiAgICAgIGRlcHM6IHBhY2thZ2VOYW1lcyhvcHRpb25zLmRlcHMpLFxuICAgICAgcGVlckRlcHM6IHBhY2thZ2VOYW1lcyhvcHRpb25zLnBlZXJEZXBzKSxcbiAgICAgIGRldkRlcHM6IHBhY2thZ2VOYW1lcyhvcHRpb25zLmRldkRlcHMpLFxuICAgICAgcHJvamVuRGV2RGVwZW5kZW5jeTogdHJ1ZSxcbiAgICAgIHJlbGVhc2VFbnZpcm9ubWVudCxcblxuICAgICAgZGVwc1VwZ3JhZGU6IG9wdGlvbnMuZGVwc1VwZ3JhZGUgPz8gdHJ1ZSxcbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICB3b3JrZmxvdzogZmFsc2UsXG4gICAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgICAuLi4ob3B0aW9ucy5leGNsdWRlRGVwc0Zyb21VcGdyYWRlID8/IFtdKSxcbiAgICAgICAgICAuLi4ocGFja2FnZU5hbWVzKG9wdGlvbnMuZGVwcz8uZmlsdGVyKGlzV29ya3NwYWNlUmVmZXJlbmNlKSkgPz8gW10pLFxuICAgICAgICAgIC4uLihwYWNrYWdlTmFtZXMob3B0aW9ucy5wZWVyRGVwcz8uZmlsdGVyKGlzV29ya3NwYWNlUmVmZXJlbmNlKSkgPz8gW10pLFxuICAgICAgICAgIC4uLihwYWNrYWdlTmFtZXMob3B0aW9ucy5kZXZEZXBzPy5maWx0ZXIoaXNXb3Jrc3BhY2VSZWZlcmVuY2UpKSA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuXG4gICAgICBucG1BY2Nlc3MsXG5cbiAgICAgIC8vIERldmlhdGlvbiBmcm9tIHVwc3RyZWFtIHByb2plbjogdXBzdHJlYW0gcHJvamVuIGRlZmF1bHRzIHRvIG1pbk5vZGVWZXJzaW9uLCBidXQgd2UgaGF2ZSB0b28gbWFueSB3b3JrZmxvd3NcbiAgICAgIC8vIHRoYXQgdXNlIHRvb2xzIHRoYXQgd2FudCBhIHJlY2VudCBOb2RlIHZlcnNpb24sIHNvIGRlZmF1bHQgdG8gYSByZWFzb25hYmxlIGZsb2F0aW5nIHZlcnNpb24uXG4gICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiBvcHRpb25zLndvcmtmbG93Tm9kZVZlcnNpb24gPz8gJ2x0cy8qJyxcblxuICAgICAgLi4ucmVtYWluZGVyLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tb25vcmVwbyA9IG9wdGlvbnMucGFyZW50O1xuICAgIHRoaXMuaXNQcml2YXRlUGFja2FnZSA9IG9wdGlvbnMucHJpdmF0ZSA/PyBmYWxzZTtcbiAgICB0aGlzLndvcmtzcGFjZURpcmVjdG9yeSA9IHdvcmtzcGFjZURpcmVjdG9yeTtcblxuICAgIC8vIElmIHRoZSBwYWNrYWdlIGlzIHB1YmxpYywgYWxsIGxvY2FsIGRlcHMgYW5kIHBlZXIgZGVwcyBtdXN0IGFsc28gYmUgcHVibGljIGFuZCBvdGhlciBUeXBlU2NyaXB0V29ya3NwYWNlc1xuICAgIGlmICghdGhpcy5pc1ByaXZhdGVQYWNrYWdlKSB7XG4gICAgICBjb25zdCBpbGxlZ2FsRGVwcyA9IFtcbiAgICAgICAgLy8gT3ZlcnJpZGFibGUgZm9yIGRlcHMgYmVjYXVzZSB0aGlzIG1pZ2h0IG1ha2Ugc2Vuc2UgaWYgd2UgYnVuZGxlIHRoZSBwYWNrYWdlLlxuICAgICAgICAuLi5vcHRpb25zLmRlcHM/LmZpbHRlcihpc1dvcmtzcGFjZVJlZmVyZW5jZSkuZmlsdGVyKHcgPT4gdy5pc1ByaXZhdGVQYWNrYWdlICYmICFvcHRpb25zLmFsbG93UHJpdmF0ZURlcHMpID8/IFtdLFxuICAgICAgICAvLyBCdXQgbm90IGZvciBwZWVyRGVwcywgdGhleSBtdXN0IGFsd2F5cyBiZSBpbnN0YWxsZWQgYnkgdGhlIHVzZXIuXG4gICAgICAgIC4uLm9wdGlvbnMucGVlckRlcHM/LmZpbHRlcihpc1dvcmtzcGFjZVJlZmVyZW5jZSkuZmlsdGVyKHcgPT4gdy5pc1ByaXZhdGVQYWNrYWdlKSA/PyBbXSxcbiAgICAgICAgLy8gZGV2RGVwcyBjYW4gYmUgcHJpdmF0ZSwgd2UgZG9uJ3QgY2FyZS5cbiAgICAgIF07XG5cbiAgICAgIGlmIChpbGxlZ2FsRGVwcy5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFtcbiAgICAgICAgICBgJHt0aGlzLm5hbWV9IGlzIHB1YmxpYyBhbmQgY2Fubm90IGRlcGVuZCBvbiBhbnkgcHJpdmF0ZSBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2UuYCxcbiAgICAgICAgICBgUGxlYXNlIGZpeCB0aGVzZSBkZXBlbmRlbmNpZXM6XFxuICAgIC0gJHtpbGxlZ2FsRGVwcy5tYXAoKHApID0+IHAubmFtZSkuam9pbignXFxuICAgIC0gJyl9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVnaXN0ZXIgd2l0aCByZWxlYXNlIHdvcmtmbG93XG4gICAgdGhpcy5tb25vcmVwby5tb25vcmVwb1JlbGVhc2U/LmFkZFdvcmtzcGFjZSh0aGlzLCB7XG4gICAgICBwcml2YXRlOiB0aGlzLmlzUHJpdmF0ZVBhY2thZ2UsXG4gICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiB0aGlzLm5vZGVWZXJzaW9uLFxuICAgICAgbnBtRGlzdFRhZzogb3B0aW9ucy5ucG1EaXN0VGFnLFxuICAgICAgLy8gSW5oZXJpdCBzZXR0aW5nIGZyb20gTW9ub3JlcG8gaWYgY29uZmlndXJlZFxuICAgICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmc6IG9wdGlvbnMubnBtVHJ1c3RlZFB1Ymxpc2hpbmcgPz8gdGhpcy5tb25vcmVwby5vcHRpb25zLm5wbVRydXN0ZWRQdWJsaXNoaW5nLFxuICAgICAgZW52aXJvbm1lbnQ6IHJlbGVhc2VFbnZpcm9ubWVudCxcbiAgICAgIHJlbGVhc2FibGVDb21taXRzOiBvcHRpb25zLnJlbGVhc2FibGVDb21taXRzLFxuICAgICAgbmV4dFZlcnNpb25Db21tYW5kOiBvcHRpb25zLm5leHRWZXJzaW9uQ29tbWFuZCxcbiAgICAgIHZlcnNpb25CcmFuY2hPcHRpb25zOiB7XG4gICAgICAgIG1ham9yVmVyc2lvbjogb3B0aW9ucy5tYWpvclZlcnNpb24sXG4gICAgICAgIG1pbk1ham9yVmVyc2lvbjogb3B0aW9ucy5taW5NYWpvclZlcnNpb24sXG4gICAgICAgIHByZXJlbGVhc2U6IG9wdGlvbnMucHJlcmVsZWFzZSxcbiAgICAgIH0sXG4gICAgICByZXBvUnVudGltZURlcGVuZGVuY2llczogT2JqZWN0LmZyb21FbnRyaWVzKFtcbiAgICAgICAgLi4ub3B0aW9ucy5kZXBzID8/IFtdLFxuICAgICAgICAuLi5vcHRpb25zLnBlZXJEZXBzID8/IFtdLFxuICAgICAgXS5maWx0ZXIoaXNXb3Jrc3BhY2VSZWZlcmVuY2UpLm1hcCh3ID0+IFt3Lm5hbWUsIHcudmVyc2lvblR5cGVdKSksXG4gICAgfSk7XG5cbiAgICAvLyBqZXN0IGNvbmZpZ1xuICAgIGlmICh0aGlzLmplc3Q/LmNvbmZpZyAmJiB0aGlzLmplc3QuY29uZmlnLnByZXNldCA9PT0gJ3RzLWplc3QnKSB7XG4gICAgICBkZWxldGUgdGhpcy5qZXN0LmNvbmZpZy5nbG9iYWxzPy5bJ3RzLWplc3QnXTtcbiAgICAgIHRoaXMuamVzdC5jb25maWcudHJhbnNmb3JtID0ge1xuICAgICAgICAnXi4rXFxcXC50c3g/JCc6IFtcbiAgICAgICAgICAndHMtamVzdCcsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHNjb25maWc6IHRoaXMudHNjb25maWdEZXYuZmlsZU5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVGFza3NcbiAgICB0aGlzLnRhc2tzLnRyeUZpbmQoJ2RlZmF1bHQnKT8ucmVzZXQoJ3Byb2plbiBkZWZhdWx0JywgeyBjd2Q6IHJlbGF0aXZlKHRoaXMub3V0ZGlyLCBvcHRpb25zLnBhcmVudC5vdXRkaXIpIH0pO1xuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygnY2xvYmJlcicpO1xuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygnZWplY3QnKTtcblxuICAgIGNvbnN0IHVwZ3JhZGVUYXNrTmFtZSA9ICd1cGdyYWRlJztcbiAgICBjb25zdCB1cGdyYWRlcyA9IHRoaXMuY29tcG9uZW50cy5maW5kKFxuICAgICAgKGM6IENvbXBvbmVudCk6IGMgaXMgamF2YXNjcmlwdC5VcGdyYWRlRGVwZW5kZW5jaWVzID0+IChcbiAgICAgICAgYyBpbnN0YW5jZW9mIGphdmFzY3JpcHQuVXBncmFkZURlcGVuZGVuY2llcyAmJiBjLnVwZ3JhZGVUYXNrLm5hbWUgPT09IHVwZ3JhZGVUYXNrTmFtZVxuICAgICAgKSxcbiAgICApO1xuXG4gICAgaWYgKHVwZ3JhZGVzKSB7XG4gICAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2sodXBncmFkZXMudXBncmFkZVRhc2submFtZSk7XG4gICAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2sodXBncmFkZXMucG9zdFVwZ3JhZGVUYXNrLm5hbWUpO1xuICAgICAgdGhpcy50YXNrcy5hZGRUYXNrKCdjaGVjay1mb3ItdXBkYXRlcycsIHtcbiAgICAgICAgZW52OiB7IENJOiAnMCcgfSxcbiAgICAgICAgc3RlcHM6IHtcbiAgICAgICAgICB0b0pTT046ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXBzID0gKHVwZ3JhZGVzIGFzIGFueSkucmVuZGVyVGFza1N0ZXBzKCkgYXMgVGFza1N0ZXBbXTtcbiAgICAgICAgICAgIHJldHVybiBzdGVwcy5maWx0ZXIoXG4gICAgICAgICAgICAgIChzdGVwKSA9PiBzdGVwLmV4ZWMgJiYgdHlwZW9mIHN0ZXAuZXhlYyA9PT0gJ3N0cmluZycgJiYgc3RlcC5leGVjPy5pbmNsdWRlcygnbnBtLWNoZWNrLXVwZGF0ZXMnKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBhbnksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBDb21wb3NpdGUgcHJvamVjdCBhbmQgcmVmZXJlbmNlc1xuICAgIGNvbnN0IGFsbERlcHMgPSBbLi4uKG9wdGlvbnMuZGVwcyA/PyBbXSksIC4uLihvcHRpb25zLnBlZXJEZXBzID8/IFtdKSwgLi4uKG9wdGlvbnMuZGV2RGVwcyA/PyBbXSldO1xuXG4gICAgZm9yIChjb25zdCB0c2NvbmZpZyBvZiBbdGhpcy50c2NvbmZpZywgdGhpcy50c2NvbmZpZ0Rldl0pIHtcbiAgICAgIHRzY29uZmlnPy5maWxlLmFkZE92ZXJyaWRlKCdjb21waWxlck9wdGlvbnMuY29tcG9zaXRlJywgdHJ1ZSk7XG4gICAgICB0c2NvbmZpZz8uZmlsZS5hZGRPdmVycmlkZShcbiAgICAgICAgJ3JlZmVyZW5jZXMnLFxuICAgICAgICBhbGxEZXBzLmZpbHRlcihpc1dvcmtzcGFjZVJlZmVyZW5jZSkubWFwKChwKSA9PiAoeyBwYXRoOiByZWxhdGl2ZSh0aGlzLm91dGRpciwgcC5vdXRkaXIpIH0pKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQWxsb3cgcGFzc2luZyBhZGRpdGlvbmFsIGFyZ3MgbGlrZSBgLS1mb3JjZWAgdG8gdGhlIGNvbXBpbGUgdGFza1xuICAgIC8vIE5lZWRlZCBiZWNhdXNlIHdlIHVzZSBjb21wb3NpdGUgcHJvamVjdHMgdGhhdCBvZnRlbiBuZWVkIGEgdHNjIC0tYnVpbGQgLS1mb3JjZVxuICAgIHRoaXMudGFza3MudHJ5RmluZCgnY29tcGlsZScpPy5yZXNldCgndHNjIC0tYnVpbGQnLCB7XG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIEluc3RhbGwgZGVwZW5kZW5jaWVzIHZpYSB0aGUgcGFyZW50IHByb2plY3RcbiAgICAvKiBAdHMtaWdub3JlIGFjY2VzcyBwcml2YXRlIG1ldGhvZCAqL1xuICAgIGNvbnN0IG9yaWdpbmFsUmVzb2x2ZSA9IHRoaXMucGFja2FnZS5yZXNvbHZlRGVwc0FuZFdyaXRlUGFja2FnZUpzb247XG4gICAgLyogQHRzLWlnbm9yZSBhY2Nlc3MgcHJpdmF0ZSBtZXRob2QgKi9cbiAgICB0aGlzLnBhY2thZ2UuaW5zdGFsbERlcGVuZGVuY2llcyA9ICgpID0+IHtcbiAgICAgIG9wdGlvbnMucGFyZW50LnJlcXVlc3RJbnN0YWxsRGVwZW5kZW5jaWVzKHsgcmVzb2x2ZURlcHNBbmRXcml0ZVBhY2thZ2VKc29uOiAoKSA9PiBvcmlnaW5hbFJlc29sdmUuYXBwbHkodGhpcy5wYWNrYWdlKSB9KTtcbiAgICB9O1xuICAgIC8qIEB0cy1pZ25vcmUgYWNjZXNzIHByaXZhdGUgbWV0aG9kICovXG4gICAgdGhpcy5wYWNrYWdlLnJlc29sdmVEZXBzQW5kV3JpdGVQYWNrYWdlSnNvbiA9ICgpID0+IHsgfTtcblxuICAgIC8vIFByaXZhdGUgcGFja2FnZVxuICAgIGlmIChvcHRpb25zLnByaXZhdGUpIHtcbiAgICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZCgncHJpdmF0ZScsIHRydWUpO1xuICAgIH1cblxuICAgIC8vIFlhcm4gQmVycnkgaW5zdGFsbENvbmZpZ1xuICAgIGlmIChvcHRpb25zLmhvaXN0aW5nTGltaXRzKSB7XG4gICAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ2luc3RhbGxDb25maWcnLCB7IGhvaXN0aW5nTGltaXRzOiBvcHRpb25zLmhvaXN0aW5nTGltaXRzIH0pO1xuICAgIH1cblxuICAgIC8vIEZpeGVzXG4gICAgdGhpcy5hZGRUc2NvbmZpZ0RldkZpeCgpO1xuICAgIHRoaXMuYWRkRXNsaW50UmNGaXgoKTtcblxuICAgIHRoaXMuYnVuZGxlZERlcHMucHVzaCguLi5vcHRpb25zLmJ1bmRsZWREZXBzID8/IFtdKTtcblxuICAgIC8vIEluZGl2aWR1YWwgd29ya3NwYWNlIHBhY2thZ2VzIHNob3VsZG4ndCBkZXBlbmQgb24gXCJwcm9qZW5cIiwgaXQgZ2V0cyBicm91Z2h0IGluIGF0IHRoZSBtb25vcmVwbyByb290XG4gICAgdGhpcy5kZXBzLnJlbW92ZURlcGVuZGVuY3koJ3Byb2plbicpO1xuXG4gICAgb3B0aW9ucy5wYXJlbnQucmVnaXN0ZXIodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogSSBkb24ndCBrbm93IHdoeSBgdHNjb25maWcuZGV2Lmpzb25gIGRvZXNuJ3QgaGF2ZSBhbiBvdXRkaXIsIG9yIHdoZXJlIGl0J3MgdXNlZCxcbiAgICogYnV0IGl0J3MgY2F1c2luZyBpbi1wbGFjZSBgLmpzYCBmaWxlcyB0byBhcHBlYXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkVHNjb25maWdEZXZGaXgoKSB7XG4gICAgdGhpcy50c2NvbmZpZ0Rldi5maWxlLmFkZE92ZXJyaWRlKCdjb21waWxlck9wdGlvbnMub3V0RGlyJywgJ2xpYicpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5lZWQgdG8gaGFjayBFU0xpbnQgY29uZmlnXG4gICAqXG4gICAqIC5lc2xpbnRyYy5qcyB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBKU09OIGZpbGUsIGl0IHdpbGwgbG9hZCB0aGVcbiAgICogSlNPTiBmaWxlIGFuZCBwYXRjaCBpdCB3aXRoIGEgZHluYW1pYyBkaXJlY3RvcnkgbmFtZSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpblxuICAgKiBwbGFpbiBKU09OIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Byb2plbi9wcm9qZW4vaXNzdWVzLzI0MDUpLlxuICAgKlxuICAgKiBTaW5jZSBlc2xpbnQgY29uZmlnIGlzIGxvYWRlZCB3aXRoIGRpZmZlcmVudCBjd2QncyBkZXBlbmRpbmcgb24gd2hldGhlciBpdCdzXG4gICAqIGZyb20gdGhlIFZTQ29kZSBwbHVnaW4gb3IgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCB1c2UgYWJzb2x1dGUgcGF0aHMgZXZlcnl3aGVyZS5cbiAgICovXG4gIHByb3RlY3RlZCBhZGRFc2xpbnRSY0ZpeCgpIHtcbiAgICBjb25zdCBlc2xpbnRSYyA9IG5ldyBTb3VyY2VDb2RlKHRoaXMsICcuZXNsaW50cmMuanMnKTtcbiAgICBlc2xpbnRSYy5saW5lKCd2YXIgcGF0aCA9IHJlcXVpcmUoXFwncGF0aFxcJyk7Jyk7XG4gICAgZXNsaW50UmMubGluZSgndmFyIGZzID0gcmVxdWlyZShcXCdmc1xcJyk7Jyk7XG4gICAgZXNsaW50UmMubGluZSgndmFyIGNvbnRlbnRzID0gZnMucmVhZEZpbGVTeW5jKGAke19fZGlybmFtZX0vLmVzbGludHJjLmpzb25gLCB7IGVuY29kaW5nOiBcXCd1dGYtOFxcJyB9KTsnKTtcbiAgICBlc2xpbnRSYy5saW5lKCcvLyBTdHJpcCBjb21tZW50cywgSlNPTi5wYXJzZSgpIGRvZXNuXFwndCBsaWtlIHRob3NlJyk7XG4gICAgZXNsaW50UmMubGluZSgnY29udGVudHMgPSBjb250ZW50cy5yZXBsYWNlKC9eXFxcXC9cXFxcLy4qJC9tLCBcXCdcXCcpOycpO1xuICAgIGVzbGludFJjLmxpbmUoJ3ZhciBqc29uID0gSlNPTi5wYXJzZShjb250ZW50cyk7Jyk7XG4gICAgZXNsaW50UmMubGluZSgnLy8gUGF0Y2ggdGhlIC5qc29uIGNvbmZpZyB3aXRoIHNvbWV0aGluZyB0aGF0IGNhbiBvbmx5IGJlIHJlcHJlc2VudGVkIGluIEpTJyk7XG4gICAgZXNsaW50UmMubGluZSgnanNvbi5wYXJzZXJPcHRpb25zLnRzY29uZmlnUm9vdERpciA9IF9fZGlybmFtZTsnKTtcbiAgICBlc2xpbnRSYy5saW5lKCdtb2R1bGUuZXhwb3J0cyA9IGpzb247Jyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCBQcm9qZWN0cyBpbiB0aGUgd29ya3NwYWNlIHRoYXQgYXJlIGFsc28gZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBPcHRpb25hbGx5IGZpbHRlciBieSBkZXBlbmRlbmN5IHR5cGUuXG4gICAqL1xuICBwdWJsaWMgd29ya3NwYWNlRGVwZW5kZW5jaWVzKHR5cGVzPzogRGVwZW5kZW5jeVR5cGVbXSk6IFByb2plY3RbXSB7XG4gICAgcmV0dXJuIHRoaXMubW9ub3JlcG8uc3VicHJvamVjdHMuZmlsdGVyKChzaWJsaW5nKSA9PlxuICAgICAgdGhpcy5kZXBzLmFsbC5zb21lKChkKSA9PiBkLm5hbWUgPT09IHNpYmxpbmcubmFtZSAmJiAoIXR5cGVzIHx8IHR5cGVzLmluY2x1ZGVzKGQudHlwZSkpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNwZWNpYWxpemVkIHJlZmVyZW5jZSB0byB0aGlzIHdvcmtzcGFjZVxuICAgKi9cbiAgcHVibGljIGN1c3RvbWl6ZVJlZmVyZW5jZShyZWZPcHRzPzogUmVmZXJlbmNlT3B0aW9ucyk6IElXb3Jrc3BhY2VSZWZlcmVuY2Uge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBvdXRkaXI6IHRoaXMub3V0ZGlyLFxuICAgICAgaXNQcml2YXRlUGFja2FnZTogdGhpcy5pc1ByaXZhdGVQYWNrYWdlLFxuICAgICAgdmVyc2lvblR5cGU6IHJlZk9wdHM/LnZlcnNpb25UeXBlID8/IHRoaXMudmVyc2lvblR5cGUsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBgd29ya3NwYWNlLmN1c3RvbWl6ZVJlZmVyZW5jZSgpYCBtZXRob2RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoYXQgdHlwZSBvZiBkZXBlbmRlbmN5IHRvIHRha2Ugb24gdGhpcyBwYWNrYWdlXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGRlcGVuZGVuY2llcyB3aWxsIGJlIHJlZmVyZW5jZWQgd2l0aCBhIGBeYCwgd2hpY2ggbWVhbnMgdGhhdFxuICAgKiBjb21lIGluc3RhbGwgdGltZSBhIG5ld2VyIHZlcnNpb24gbWF5IGJlIGluc3RhbGxlZC5cbiAgICpcbiAgICogQ2hvb3NlIGEgZGlmZmVyZW50IHJhbmdlIHR5cGUgdG8gdGFrZSwgZm9yIGV4YW1wbGUsIGFuIGBleGFjdGAgZGVwZW5kZW5jeS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2Z1dHVyZS1taW5vcidcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25UeXBlPzogVmVyc2lvblR5cGU7XG59XG5cbmZ1bmN0aW9uIHBhY2thZ2VOYW1lcyh4cz86IEFycmF5PHN0cmluZyB8IElXb3Jrc3BhY2VSZWZlcmVuY2U+KTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBpZiAoIXhzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4geHMubWFwKCh4KSA9PiAodHlwZW9mIHggPT09ICdzdHJpbmcnID8geCA6IHgubmFtZSkpO1xufVxuXG5mdW5jdGlvbiB3aXRob3V0PEEgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyBrZXlvZiBBPih4OiBBLCAuLi5rczogS1tdKTogT21pdDxBLCBLPiB7XG4gIGNvbnN0IHJldCA9IHsgLi4ueCB9O1xuICBmb3IgKGNvbnN0IGsgb2Yga3MpIHtcbiAgICBkZWxldGUgcmV0W2tdO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGlzV29ya3NwYWNlUmVmZXJlbmNlKHg6IHVua25vd24pOiB4IGlzIElXb3Jrc3BhY2VSZWZlcmVuY2Uge1xuICByZXR1cm4gdHlwZW9mIHggPT09ICdvYmplY3QnICYmICEheCAmJiAoWydpc1ByaXZhdGVQYWNrYWdlJywgJ3ZlcnNpb25UeXBlJywgJ25hbWUnLCAnb3V0ZGlyJ10gc2F0aXNmaWVzIEFycmF5PGtleW9mIElXb3Jrc3BhY2VSZWZlcmVuY2U+KS5ldmVyeShrID0+ICh4IGFzIGFueSlba10gIT09IHVuZGVmaW5lZCk7XG59XG4iXX0=
package/package.json CHANGED
@@ -74,7 +74,7 @@
74
74
  "publishConfig": {
75
75
  "access": "public"
76
76
  },
77
- "version": "0.3.18",
77
+ "version": "0.3.19",
78
78
  "jest": {
79
79
  "coverageProvider": "v8",
80
80
  "testMatch": [