@pipeline-builder/pipeline-manager 3.3.32 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -82,7 +82,6 @@ Run `pipeline-manager <command> --help` for the full flag reference on any comma
82
82
  | `PLATFORM_TOKEN` | Yes (for API ops) | Auth token for the Pipeline Builder platform |
83
83
  | `PLATFORM_URL` | Yes (for API ops) | Base URL of your platform deployment |
84
84
  | `AWS_REGION` | Yes (for deploy) | Target AWS region for `synth` / `deploy` |
85
- | `RESOLVED_SYNTH_PLUGIN` | No | `true` inside CodePipeline so the synth step resolves plugins via the platform; defaults to `false` for local CLI runs |
86
85
 
87
86
  Full reference: [Environment Variables](https://mwashburn160.github.io/pipeline-builder/docs/environment-variables).
88
87
 
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgQ7C"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2Q7C"}
@@ -13,6 +13,7 @@ const cdk_utils_1 = require("../utils/cdk-utils");
13
13
  const command_utils_1 = require("../utils/command-utils");
14
14
  const error_handler_1 = require("../utils/error-handler");
15
15
  const output_utils_1 = require("../utils/output-utils");
16
+ const plugin_resolver_1 = require("../utils/plugin-resolver");
16
17
  const registry_1 = require("../utils/registry");
17
18
  const { bold, cyan, dim } = picocolors_1.default;
18
19
  /**
@@ -140,6 +141,16 @@ function deploy(program) {
140
141
  ...(pipeline.orgId && { orgId: pipeline.orgId }),
141
142
  pipelineId: pipeline.id,
142
143
  };
144
+ // Pre-resolve plugins from the platform API so the synthesized
145
+ // template ships with real CodeBuild image URIs baked in. Without
146
+ // this, CDK falls back to standard:7.0 (the deploy-time custom
147
+ // resource attribute is unresolvable at synth time). Skipped in
148
+ // --local-spec mode where there's no platform client.
149
+ const resolvedPlugins = await (0, plugin_resolver_1.resolvePluginsForProps)(platformClient, propsWithIds);
150
+ if (Object.keys(resolvedPlugins).length > 0) {
151
+ propsWithIds.resolvedPlugins = resolvedPlugins;
152
+ (0, output_utils_1.printInfo)('Pre-resolved plugins', { count: Object.keys(resolvedPlugins).length });
153
+ }
143
154
  }
144
155
  // --show-resolved: print resolved config and exit (no CDK deploy)
145
156
  if (options.showResolved) {
@@ -260,4 +271,4 @@ function deploy(program) {
260
271
  }
261
272
  });
262
273
  }
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7Ozs7QUEyQnRDLHdCQWdRQztBQXhSRCw0REFBOEI7QUFDOUIsMkRBQTBEO0FBRTFELGtEQUE4QztBQUM5QyxrREFBd0c7QUFDeEcsMERBQTZHO0FBQzdHLDBEQUFrRTtBQUNsRSx3REFBcUs7QUFDckssZ0RBQTZFO0FBRTdFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLG9CQUFJLENBQUM7QUFFakM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixNQUFNLENBQUMsT0FBZ0I7SUFDckMsT0FBTztTQUNKLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDakIsV0FBVyxDQUFDLDJHQUEyRyxDQUFDO1NBQ3hILE1BQU0sQ0FBQyxlQUFlLEVBQUUsZ0RBQWdELENBQUM7U0FDekUsTUFBTSxDQUFDLHFCQUFxQixFQUFFLG9IQUFvSCxDQUFDO1NBQ25KLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDO1NBQ3ZELE1BQU0sQ0FBQywrQkFBK0IsRUFBRSw2Q0FBNkMsRUFBRSxPQUFPLENBQUM7U0FDL0YsTUFBTSxDQUFDLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLFNBQVMsQ0FBQztTQUMzRCxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsMkZBQTJGLEVBQUUsS0FBSyxDQUFDO1NBQzVILE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxpQ0FBaUMsQ0FBQztTQUM5RCxNQUFNLENBQUMsY0FBYyxFQUFFLHFDQUFxQyxDQUFDO1NBQzdELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxzQ0FBc0MsQ0FBQztTQUNqRSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsbUdBQW1HLEVBQUUsS0FBSyxDQUFDO1NBQ3JJLE1BQU0sQ0FBQyxLQUFL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QztvQkFDTCxDQUFDO29CQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7d0JBQ2xCLElBQUEsMkJBQVksRUFBQywyREFBMkQsRUFBRTs0QkFDeEUsS0FBSyxFQUFFLFFBQVEsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7NEJBQ3RFLFVBQVUsRUFBRSxRQUFRLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO3lCQUM1RSxDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUVILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBQSwyQkFBVyxFQUFDLEtBQUssRUFBRSwyQkFBVyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLFFBQVE7b0JBQ2pCLFdBQVc7b0JBQ1gsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFO29CQUN0QixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7aUJBQzdCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgYXNzZXJ0U2hlbGxTYWZlIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMnO1xuaW1wb3J0IHsgUGlwZWxpbmUsIFBpcGVsaW5lUmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhdWRpdExvZyB9IGZyb20gJy4uL3V0aWxzL2F1ZGl0LWxvZyc7XG5pbXBvcnQgeyBlbnN1cmVDZGtBdmFpbGFibGUsIGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQsIHJlc29sdmVCb2lsZXJwbGF0ZVBhdGggfSBmcm9tICcuLi91dGlscy9jZGstdXRpbHMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcsIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQgeyBlbnN1cmVPdXRwdXREaXJlY3RvcnksIGV4dHJhY3RTaW5nbGVSZXNwb25zZSwgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzJztcbmltcG9ydCB7IGJ1aWxkUmVnaXN0cnlQYXlsb2FkLCB3cml0ZVBlbmRpbmdJbnRlbnQgfSBmcm9tICcuLi91dGlscy9yZWdpc3RyeSc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZGltIH0gPSBwaWNvO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGRlcGxveWAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBGZXRjaGVzIHBpcGVsaW5lIHByb3BlcnRpZXMgYnkgSUQgZnJvbSB0aGUgcGxhdGZvcm0gQVBJLCB0aGVuXG4gKiBydW5zIGBjZGsgZGVwbG95YCB0byBwcm92aXNpb24gdGhlIHBpcGVsaW5lIGluZnJhc3RydWN0dXJlIGluIEFXUy5cbiAqIEZvciBzeW50aGVzaXMgb25seSwgdXNlIGBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoYC5cbiAqXG4gKiBSZXF1aXJlcyBzZXJ2aWNlIGNyZWRlbnRpYWxzIHRvIGJlIHByZS1zdG9yZWQgaW4gQVdTIFNlY3JldHMgTWFuYWdlci5cbiAqIENyZWF0ZSB0aGVtIGZpcnN0IHdpdGg6IGBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuYFxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVwbG95KHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdkZXBsb3knKVxuICAgIC5kZXNjcmlwdGlvbignRGVwbG95IHBpcGVsaW5lIGJ5IElEIHVzaW5nIEFXUyBDREssIG9yIC0tbG9jYWwtc3BlYyB0byBkZXBsb3kgYSBsb2NhbCBwaXBlbGluZS5qc29uIHdpdGhvdXQgdGhlIHBsYXRmb3JtJylcbiAgICAub3B0aW9uKCctaSwgLS1pZCA8aWQ+JywgJ1BpcGVsaW5lIElEIChmZXRjaGVzIGNvbmZpZyBmcm9tIHRoZSBwbGF0Zm9ybSknKVxuICAgIC5vcHRpb24oJy0tbG9jYWwtc3BlYyA8cGF0aD4nLCAnUGF0aCB0byBhIGxvY2FsIHBpcGVsaW5lLmpzb24g4oCUIGRlcGxveXMgd2l0aG91dCBjb250YWN0aW5nIHRoZSBwbGF0Zm9ybSAobm8gYXV0aCwgbm8gY29tcGxpYW5jZSwgbm8gcGx1Z2luIGxvb2t1cCknKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIHByb2ZpbGUnLCAnZGVmYXVsdCcpXG4gICAgLm9wdGlvbignLS1yZXF1aXJlLWFwcHJvdmFsIDxhcHByb3ZhbD4nLCAnQXBwcm92YWwgbGV2ZWw6IG5ldmVyfGFueS1jaGFuZ2V8YnJvYWRlbmluZycsICduZXZlcicpXG4gICAgLm9wdGlvbignLS1vdXRwdXQgPGRpcj4nLCAnQ0RLIG91dHB1dCBkaXJlY3RvcnknLCAnY2RrLm91dCcpXG4gICAgLm9wdGlvbignLS1zdG9yZS10b2tlbnMnLCAnQXV0aGVudGljYXRlIHVzaW5nIHRva2VuIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlciAocmVxdWlyZXMgUExBVEZPUk1fU0VDUkVUX05BTUUgZW52IHZhciknLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChmb3IgLS1zdG9yZS10b2tlbnMpJylcbiAgICAub3B0aW9uKCctLXZlcmlmeS1zc2wnLCAnRW5hYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tbm8tdmVyaWZ5LXNzbCcsICdEaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tc2hvdy1yZXNvbHZlZCcsICdQcmludCB0aGUgcmVzb2x2ZWQgcGlwZWxpbmUgY29uZmlnICh3aXRoIHt7IC4uLiB9fSB0ZW1wbGF0ZXMgZXhwYW5kZWQpIGFuZCBleGl0IHdpdGhvdXQgZGVwbG95aW5nJywgZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgLy8gTXV0dWFsbHkgZXhjbHVzaXZlIGlucHV0IHNvdXJjZXNcbiAgICAgIGlmICghb3B0aW9ucy5pZCAmJiAhb3B0aW9ucy5sb2NhbFNwZWMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgLS1pZCA8cGlwZWxpbmUtaWQ+IG9yIC0tbG9jYWwtc3BlYyA8cGF0aD4gaXMgcmVxdWlyZWQnKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmlkICYmIG9wdGlvbnMubG9jYWxTcGVjKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignLS1pZCBhbmQgLS1sb2NhbC1zcGVjIGFyZSBtdXR1YWxseSBleGNsdXNpdmUnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ1BpcGVsaW5lIERlcGxveScpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhdWRpdExvZygnZGVwbG95JywgeyBleGVjdXRpb25JZCwgcGlwZWxpbmVJZDogb3B0aW9ucy5pZCwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuXG4gICAgICAgIHByaW50SW5mbygnRGVwbG95bWVudCBwYXJhbWV0ZXJzJywge1xuICAgICAgICAgIGlkOiBvcHRpb25zLmlkLFxuICAgICAgICAgIGF3c1Byb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICBvdXRwdXREaXI6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICAgIHJlcXVpcmVBcHByb3ZhbDogb3B0aW9ucy5yZXF1aXJlQXBwcm92YWwsXG4gICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2VjdXJpdHkgd2FybmluZyBmb3IgU1NMIHZlcmlmaWNhdGlvbiBkaXNhYmxlZFxuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIFByb3BhZ2F0ZSB0byBwcm9jZXNzLmVudiBzbyBDREsgY29uc3RydWN0cyAoTGFtYmRhLCBDb2RlQnVpbGQpIGluaGVyaXQgaXRcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyaWZ5U3NsID09PSBmYWxzZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgPSAnMCc7XG4gICAgICAgIH1cblxuICAgICAgICBlbnN1cmVDZGtBdmFpbGFibGUoKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdBV1MgQ0RLIGlzIGF2YWlsYWJsZScpO1xuXG4gICAgICAgIGxldCBwaXBlbGluZTogUGlwZWxpbmU7XG4gICAgICAgIGxldCBwcm9wc1dpdGhJZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICAvLyBSZW1vdGUtbW9kZSByZWdpc3RyeS1wb3N0IGhhbmRsZXMg4oCUIG51bGwgaW4gLS1sb2NhbC1zcGVjIG1vZGUuXG4gICAgICAgIGxldCBwbGF0Zm9ybUNsaWVudDogQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmM+PiB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IHBsYXRmb3JtQ29uZmlnOiB7IGFwaTogeyBwaXBlbGluZVVybDogc3RyaW5nIH0gfSB8IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAob3B0aW9ucy5sb2NhbFNwZWMpIHtcbiAgICAgICAgICAvLyAtLWxvY2FsLXNwZWM6IHJlYWQgcGlwZWxpbmUuanNvbiBmcm9tIGRpc2s7IG5vIHBsYXRmb3JtIGNvbnRhY3QuXG4gICAgICAgICAgLy8gQ29tcGxpYW5jZSAvIHF1b3RhIC8gcGx1Z2luLWxvb2t1cCBmZWF0dXJlcyBhbGwgcmVxdWlyZSB0aGUgcGxhdGZvcm0g4oCUXG4gICAgICAgICAgLy8gdGhpcyBtb2RlIGlzIGZvciBhaXItZ2FwcGVkIG9yIHNpbXBsZSBzdGFuZGFsb25lIENESyBkZXBsb3ltZW50cy5cbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgICAgIGNvbnN0IGZzTW9kID0gcmVxdWlyZSgnZnMnKTtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgICAgIGNvbnN0IHBhdGhNb2QgPSByZXF1aXJlKCdwYXRoJyk7XG4gICAgICAgICAgY29uc3QgYWJzUGF0aCA9IHBhdGhNb2QucmVzb2x2ZShvcHRpb25zLmxvY2FsU3BlYyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdMb2FkaW5nIGxvY2FsIHBpcGVsaW5lIHNwZWMnLCB7IHBhdGg6IGFic1BhdGggfSk7XG4gICAgICAgICAgaWYgKCFmc01vZC5leGlzdHNTeW5jKGFic1BhdGgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIHNwZWMgZmlsZSBub3QgZm91bmQ6ICR7YWJzUGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmF3ID0gZnNNb2QucmVhZEZpbGVTeW5jKGFic1BhdGgsICd1dGYtOCcpO1xuICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KSBhcyBQYXJ0aWFsPFBpcGVsaW5lPiAmIHsgcHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9O1xuICAgICAgICAgIGlmICghcGFyc2VkLnByb3BzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIHNwZWMgZmlsZSBpcyBtaXNzaW5nIHJlcXVpcmVkICdwcm9wcycgZmllbGQ6ICR7YWJzUGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGlwZWxpbmUgPSB7XG4gICAgICAgICAgICBpZDogcGFyc2VkLmlkID8/ICdsb2NhbCcsXG4gICAgICAgICAgICBwcm9qZWN0OiBwYXJzZWQucHJvamVjdCA/PyAnbG9jYWwtcHJvamVjdCcsXG4gICAgICAgICAgICBvcmdhbml6YXRpb246IHBhcnNlZC5vcmdhbml6YXRpb24gPz8gJ2xvY2FsLW9yZycsXG4gICAgICAgICAgICBvcmdJZDogcGFyc2VkLm9yZ0lkLFxuICAgICAgICAgICAgaXNEZWZhdWx0OiBwYXJzZWQuaXNEZWZhdWx0ID8/IGZhbHNlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHBhcnNlZC5pc0FjdGl2ZSA/PyB0cnVlLFxuICAgICAgICAgICAgcHJvcHM6IHBhcnNlZC5wcm9wcyxcbiAgICAgICAgICB9IGFzIFBpcGVsaW5lO1xuICAgICAgICAgIHByaW50U3VjY2VzcygnTG9jYWwgc3BlYyBsb2FkZWQnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgIFNvdXJjZTogYWJzUGF0aCxcbiAgICAgICAgICAgIFByb2plY3Q6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgICBPcmdhbml6YXRpb246IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9wc1dpdGhJZHMgPSB7XG4gICAgICAgICAgICAuLi5waXBlbGluZS5wcm9wcyxcbiAgICAgICAgICAgIC4uLihwaXBlbGluZS5vcmdJZCAmJiB7IG9yZ0lkOiBwaXBlbGluZS5vcmdJZCB9KSxcbiAgICAgICAgICAgIHBpcGVsaW5lSWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVtb3RlIHBhdGg6IGZldGNoIGNvbmZpZyBmcm9tIHBsYXRmb3JtIEFQSVxuICAgICAgICAgIHBsYXRmb3JtQ2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuICAgICAgICAgIHBsYXRmb3JtQ29uZmlnID0gcGxhdGZvcm1DbGllbnQuZ2V0Q29uZmlnKCkgYXMgeyBhcGk6IHsgcGlwZWxpbmVVcmw6IHN0cmluZyB9IH07XG5cbiAgICAgICAgICBwcmludEluZm8oJ0ZldGNoaW5nIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24nLCB7IGlkOiBvcHRpb25zLmlkIH0pO1xuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcGxhdGZvcm1DbGllbnQuZ2V0PFBpcGVsaW5lUmVzcG9uc2U+KFxuICAgICAgICAgICAgYCR7cGxhdGZvcm1Db25maWcuYXBpLnBpcGVsaW5lVXJsfS8ke29wdGlvbnMuaWR9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgZmV0Y2hlZCA9IGV4dHJhY3RTaW5nbGVSZXNwb25zZTxQaXBlbGluZT4ocmVzcG9uc2UsICdwaXBlbGluZScsICdwcm9wcycpO1xuXG4gICAgICAgICAgaWYgKCFmZXRjaGVkPy5wcm9wcykge1xuICAgICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwaXBlbGluZSByZXNwb25zZScsIHtcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbnMuaWQsXG4gICAgICAgICAgICAgIGhhc1Byb3BzOiAhIWZldGNoZWQ/LnByb3BzLFxuICAgICAgICAgICAgICByZXNwb25zZUtleXM6IHJlc3BvbnNlID8gT2JqZWN0LmtleXMocmVzcG9uc2UpIDogJyhudWxsKScsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIHZhbGlkIHBpcGVsaW5lIHByb3BlcnRpZXMgZm9yIElEOiAke29wdGlvbnMuaWR9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBpcGVsaW5lID0gZmV0Y2hlZDtcblxuICAgICAgICAgIHByaW50U3VjY2VzcygnUGlwZWxpbmUgY29uZmlndXJhdGlvbiByZXRyaWV2ZWQnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICdJRCc6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgICAgJ1Byb2plY3QnOiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICAgJ09yZ2FuaXphdGlvbic6IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgICdJcyBEZWZhdWx0JzogcGlwZWxpbmUuaXNEZWZhdWx0LFxuICAgICAgICAgICAgJ0lzIEFjdGl2ZSc6IHBpcGVsaW5lLmlzQWN0aXZlLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcHJvcHNXaXRoSWRzID0ge1xuICAgICAgICAgICAgLi4ucGlwZWxpbmUucHJvcHMsXG4gICAgICAgICAgICAuLi4ocGlwZWxpbmUub3JnSWQgJiYgeyBvcmdJZDogcGlwZWxpbmUub3JnSWQgfSksXG4gICAgICAgICAgICBwaXBlbGluZUlkOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gLS1zaG93LXJlc29sdmVkOiBwcmludCByZXNvbHZlZCBjb25maWcgYW5kIGV4aXQgKG5vIENESyBkZXBsb3kpXG4gICAgICAgIGlmICgob3B0aW9ucyBhcyB7IHNob3dSZXNvbHZlZD86IGJvb2xlYW4gfSkuc2hvd1Jlc29sdmVkKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgICAgICBjb25zdCB7IHJlc29sdmVTZWxmUmVmZXJlbmNpbmcgfSA9IHJlcXVpcmUoJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnKTtcbiAgICAgICAgICBjb25zdCBwcm9wc0FueSA9IHByb3BzV2l0aElkcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgICBjb25zdCBzY29wZSA9IHsgbWV0YWRhdGE6IHByb3BzQW55Lm1ldGFkYXRhID8/IHt9LCB2YXJzOiBwcm9wc0FueS52YXJzID8/IHt9IH07XG4gICAgICAgICAgY29uc3QgaXNUcGwgPSAoZjogc3RyaW5nKSA9PiBmID09PSAncHJvamVjdE5hbWUnIHx8IGYuc3RhcnRzV2l0aCgnbWV0YWRhdGEuJykgfHwgZi5zdGFydHNXaXRoKCd2YXJzLicpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVTZWxmUmVmZXJlbmNpbmcocHJvcHNBbnksIHNjb3BlLCBpc1RwbCwgKGY6IHN0cmluZykgPT4gaXNUcGwoZikgPyBmIDogbnVsbCwgJ3BpcGVsaW5lJyk7XG4gICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdSZXNvbHV0aW9uIGVycm9yczonKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiByZXN1bHQuZXJyb3JzKSBjb25zb2xlLmVycm9yKGAgIFske2UuZmllbGQgPz8gJz8nfV0gJHtlLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHByb3BzV2l0aElkcywgbnVsbCwgMikpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVuY29kZWQgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShwcm9wc1dpdGhJZHMpLCAndXRmLTgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBvcHRpb25zLm91dHB1dDtcblxuICAgICAgICAvLyBFbnN1cmUgb3V0cHV0IGRpcmVjdG9yeSBleGlzdHNcbiAgICAgICAgcHJpbnRJbmZvKCdQcmVwYXJpbmcgb3V0cHV0IGRpcmVjdG9yeScsIHsgcGF0aDogb3V0cHV0UGF0aCB9KTtcbiAgICAgICAgZW5zdXJlT3V0cHV0RGlyZWN0b3J5KG91dHB1dFBhdGgpO1xuXG4gICAgICAgIC8vIEJ1aWxkIENESyBjb21tYW5kICh2YWxpZGF0ZSBpbnB1dHMgdGhhdCBmbG93IGludG8gc2hlbGwpXG4gICAgICAgIGlmIChvcHRpb25zLnByb2ZpbGUpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnByb2ZpbGUsICdwcm9maWxlJyk7XG4gICAgICAgIGFzc2VydFNoZWxsU2FmZShvdXRwdXRQYXRoLCAnb3V0cHV0Jyk7XG5cbiAgICAgICAgY29uc3Qgc2NyaXB0UGF0aCA9IHJlc29sdmVCb2lsZXJwbGF0ZVBhdGgoX19kaXJuYW1lKTtcbiAgICAgICAgY29uc3QgcHJvZmlsZUFyZyA9IG9wdGlvbnMucHJvZmlsZSA/IGAtLXByb2ZpbGU9JHtvcHRpb25zLnByb2ZpbGV9YCA6ICcnO1xuICAgICAgICBjb25zdCBvdXRwdXRBcmcgPSBgLS1vdXRwdXQ9JHtvdXRwdXRQYXRofWA7XG4gICAgICAgIGNvbnN0IGFwcEFyZyA9IGAtLWFwcD1cIm5vZGUgJHtzY3JpcHRQYXRofVwiYDtcblxuICAgICAgICBjb25zdCBjb21tYW5kID0gYGNkayBkZXBsb3kgJHtwcm9maWxlQXJnfSAtLXJlcXVpcmUtYXBwcm92YWw9JHtvcHRpb25zLnJlcXVpcmVBcHByb3ZhbH0gJHtvdXRwdXRBcmd9IC0tbm90aWNlcz1mYWxzZSAke2FwcEFyZ31gO1xuXG4gICAgICAgIHByaW50U2VjdGlvbignQ0RLIEV4ZWN1dGlvbicpO1xuICAgICAgICBjb25zb2xlLmxvZyhjeWFuKGJvbGQoJ0NvbW1hbmQ6JykpLCBkaW0oY29tbWFuZC5zcGxpdCgnIC0tJylbMF0gKyAnIC4uLicpKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG5cbiAgICAgICAgLy8gRXhlY3V0ZSBDREsgY29tbWFuZFxuICAgICAgICBjb25zdCByZXN1bHQgPSBleGVjdXRlQ2RrU2hlbGxDb21tYW5kKGNvbW1hbmQsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgc2hvd091dHB1dDogdHJ1ZSxcbiAgICAgICAgICBlbnY6IHsgUElQRUxJTkVfUFJPUFM6IGVuY29kZWQgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByaW50U2VjdGlvbignRGVwbG95bWVudCBDb21wbGV0ZScpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAgICAgICAgICdPdXRwdXQgRGlyZWN0b3J5Jzogb3V0cHV0UGF0aCxcbiAgICAgICAgICAgICdTdGF0dXMnOiAn4pyTIFN1Y2Nlc3MnLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gUmVnaXN0ZXIgcGlwZWxpbmUgQVJOIGZvciBldmVudCByZXBvcnRpbmcgKG5vbi1ibG9ja2luZykuXG4gICAgICAgICAgLy8gU2tpcHBlZCBpbiAtLWxvY2FsLXNwZWMgbW9kZSBzaW5jZSB0aGVyZSdzIG5vIHBsYXRmb3JtIHRvIHJlZ2lzdGVyIHdpdGguXG4gICAgICAgICAgaWYgKCFwbGF0Zm9ybUNsaWVudCB8fCAhcGxhdGZvcm1Db25maWcpIHtcbiAgICAgICAgICAgIHByaW50SW5mbygnU2tpcHBpbmcgcGlwZWxpbmUgcmVnaXN0cnkgKGxvY2FsLXNwZWMgbW9kZSknKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQnVpbGQgdGhlIHBheWxvYWQgdXAtZnJvbnQgc28gYSByZWdpc3RyYXRpb24gUE9TVCBmYWlsdXJlIGNhbiB3cml0ZVxuICAgICAgICAgIC8vIHRoZSBzYW1lIHBheWxvYWQgdG8gYSBwZW5kaW5nLWludGVudCBmaWxlIGZvciBgcGlwZWxpbmUtbWFuYWdlclxuICAgICAgICAgIC8vIHJlZ2lzdGVyYCB0byBkcmFpbiBsYXRlci4gV2UgbmV2ZXIgd2FudCB0byByZXRyeSBTVFMgbG9va3VwcyDigJRcbiAgICAgICAgICAvLyB0aGV5IGNhbiBmYWlsIHRvbyAoZS5nLiBjcmVkZW50aWFsIHJvdGF0aW9uKSBhbmQgd291bGQgY29tcG91bmRcbiAgICAgICAgICAvLyB0aGUgaXNzdWUuXG4gICAgICAgICAgaWYgKCFwaXBlbGluZS5vcmdJZCkge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSBoYXMgbm8gb3JnSWQg4oCUIHNraXBwaW5nIHJlZ2lzdHJhdGlvbicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgcGF5bG9hZDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcGF5bG9hZCA9IGF3YWl0IGJ1aWxkUmVnaXN0cnlQYXlsb2FkKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgICAgICAgIG9yZ0lkOiBwaXBlbGluZS5vcmdJZCxcbiAgICAgICAgICAgICAgICBwaXBlbGluZU5hbWU6IHBpcGVsaW5lLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgICAgICAgICBwcm9qZWN0OiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBjYXRjaCAoYnVpbGRFcnJvcikge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdDb3VsZCBub3QgYnVpbGQgcmVnaXN0cnkgcGF5bG9hZCDigJQgc2tpcHBpbmcgcmVnaXN0cmF0aW9uJywge1xuICAgICAgICAgICAgICBlcnJvcjogYnVpbGRFcnJvciBpbnN0YW5jZW9mIEVycm9yID8gYnVpbGRFcnJvci5tZXNzYWdlIDogU3RyaW5nKGJ1aWxkRXJyb3IpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHBsYXRmb3JtQ2xpZW50LnBvc3QoYCR7cGxhdGZvcm1Db25maWcuYXBpLnBpcGVsaW5lVXJsfS9yZWdpc3RyeWAsIHBheWxvYWQpO1xuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSByZWdpc3RlcmVkIGZvciBldmVudCByZXBvcnRpbmcnLCB7IGFybjogcGF5bG9hZC5waXBlbGluZUFybiB9KTtcbiAgICAgICAgICB9IGNhdGNoIChyZWdFcnJvcikge1xuICAgICAgICAgICAgLy8gUGVyc2lzdCBmb3IgcmV0cnkuIFRoZSB1c2VyIGNhbiBkcmFpbiB3aXRoIGBwaXBlbGluZS1tYW5hZ2VyXG4gICAgICAgICAgICAvLyByZWdpc3RlcmAgKG9yIGp1c3QgcmUtcnVuIHRoYXQgY29tbWFuZCBhdCBhbnkgdGltZSDigJQgaXQnc1xuICAgICAgICAgICAgLy8gaWRlbXBvdGVudCkuIFRoZSBkZXBsb3kgaXRzZWxmIGRvZXMgTk9UIGZhaWwuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBpbnRlbnRQYXRoID0gYXdhaXQgd3JpdGVQZW5kaW5nSW50ZW50KHBheWxvYWQpO1xuICAgICAgICAgICAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIHJlZ2lzdHJ5IHVwZGF0ZSBmYWlsZWQ7IHF1ZXVlZCBmb3IgcmV0cnknLCB7XG4gICAgICAgICAgICAgICAgZXJyb3I6IHJlZ0Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyByZWdFcnJvci5tZXNzYWdlIDogU3RyaW5nKHJlZ0Vycm9yKSxcbiAgICAgICAgICAgICAgICByZXRyeTogJ3BpcGVsaW5lLW1hbmFnZXIgcmVnaXN0ZXInLFxuICAgICAgICAgICAgICAgIGludGVudDogaW50ZW50UGF0aCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGNhdGNoICh3cml0ZUVycikge1xuICAgICAgICAgICAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIHJlZ2lzdHJ5IHVwZGF0ZSBmYWlsZWQgKHJldHJ5IHF1ZXVlIGFsc28gZmFpbGVkKScsIHtcbiAgICAgICAgICAgICAgICBlcnJvcjogcmVnRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IHJlZ0Vycm9yLm1lc3NhZ2UgOiBTdHJpbmcocmVnRXJyb3IpLFxuICAgICAgICAgICAgICAgIHF1ZXVlRXJyb3I6IHdyaXRlRXJyIGluc3RhbmNlb2YgRXJyb3IgPyB3cml0ZUVyci5tZXNzYWdlIDogU3RyaW5nKHdyaXRlRXJyKSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdkZXBsb3knLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICBwaXBlbGluZUlkOiBvcHRpb25zLmlkLFxuICAgICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7Ozs7QUE0QnRDLHdCQTJRQztBQXBTRCw0REFBOEI7QUFDOUIsMkRBQTBEO0FBRTFELGtEQUE4QztBQUM5QyxrREFBd0c7QUFDeEcsMERBQTZHO0FBQzdHLDBEQUFrRTtBQUNsRSx3REFBcUs7QUFDckssOERBQWtFO0FBQ2xFLGdEQUE2RTtBQUU3RSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxvQkFBSSxDQUFDO0FBRWpDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLE9BQWdCO0lBQ3JDLE9BQU87U0FDSixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLFdBQVcsQ0FBQywyR0FBMkcsQ0FBQztTQUN4SCxNQUFNLENBQUMsZUFBZSxFQUFFLGdEQUFnRCxDQUFDO1NBQ3pFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxvSEFBb0gsQ0FBQztTQUNuSixNQUFNLENBQUMscUJBQXFCLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQztTQUN2RCxNQUFNLENBQUMsK0JBQStCLEVBQUUsNkNBQTZDLEVBQUUsT0FBTyxDQUFDO1NBQy9GLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxTQUFTLENBQUM7U0FDM0QsTUFBTSxDQUFDLGdCQUFnQixFQUFFLDJGQUEyRixFQUFFLEtBQUssQ0FBQztTQUM1SCxNQUFNLENBQUMsbUJBQW1CLEVBQUUsaUNBQWlDLENBQUM7U0FDOUQsTUFBTSxDQUFDLGNBQWMsRUFBRSxxQ0FBcUMsQ0FBQztTQUM3RCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQUM7U0FDakUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLG1HQUFtRyxFQUFFLEtBQUssQ0FBQztTQUNySSxN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QkFDWCxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQ3RCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztpQkFDN0I7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBhc3NlcnRTaGVsbFNhZmUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBQaXBlbGluZSwgUGlwZWxpbmVSZXNwb25zZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGF1ZGl0TG9nIH0gZnJvbSAnLi4vdXRpbHMvYXVkaXQtbG9nJztcbmltcG9ydCB7IGVuc3VyZUNka0F2YWlsYWJsZSwgZXhlY3V0ZUNka1NoZWxsQ29tbWFuZCwgcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aCB9IGZyb20gJy4uL3V0aWxzL2Nkay11dGlscyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZywgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyJztcbmltcG9ydCB7IGVuc3VyZU91dHB1dERpcmVjdG9yeSwgZXh0cmFjdFNpbmdsZVJlc3BvbnNlLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBsdWdpbnNGb3JQcm9wcyB9IGZyb20gJy4uL3V0aWxzL3BsdWdpbi1yZXNvbHZlcic7XG5pbXBvcnQgeyBidWlsZFJlZ2lzdHJ5UGF5bG9hZCwgd3JpdGVQZW5kaW5nSW50ZW50IH0gZnJvbSAnLi4vdXRpbHMvcmVnaXN0cnknO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSB9ID0gcGljbztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBkZXBsb3lgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogRmV0Y2hlcyBwaXBlbGluZSBwcm9wZXJ0aWVzIGJ5IElEIGZyb20gdGhlIHBsYXRmb3JtIEFQSSwgdGhlblxuICogcnVucyBgY2RrIGRlcGxveWAgdG8gcHJvdmlzaW9uIHRoZSBwaXBlbGluZSBpbmZyYXN0cnVjdHVyZSBpbiBBV1MuXG4gKiBGb3Igc3ludGhlc2lzIG9ubHksIHVzZSBgcGlwZWxpbmUtbWFuYWdlciBzeW50aGAuXG4gKlxuICogUmVxdWlyZXMgc2VydmljZSBjcmVkZW50aWFscyB0byBiZSBwcmUtc3RvcmVkIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIuXG4gKiBDcmVhdGUgdGhlbSBmaXJzdCB3aXRoOiBgcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbmBcbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcGxveShwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnZGVwbG95JylcbiAgICAuZGVzY3JpcHRpb24oJ0RlcGxveSBwaXBlbGluZSBieSBJRCB1c2luZyBBV1MgQ0RLLCBvciAtLWxvY2FsLXNwZWMgdG8gZGVwbG95IGEgbG9jYWwgcGlwZWxpbmUuanNvbiB3aXRob3V0IHRoZSBwbGF0Zm9ybScpXG4gICAgLm9wdGlvbignLWksIC0taWQgPGlkPicsICdQaXBlbGluZSBJRCAoZmV0Y2hlcyBjb25maWcgZnJvbSB0aGUgcGxhdGZvcm0pJylcbiAgICAub3B0aW9uKCctLWxvY2FsLXNwZWMgPHBhdGg+JywgJ1BhdGggdG8gYSBsb2NhbCBwaXBlbGluZS5qc29uIOKAlCBkZXBsb3lzIHdpdGhvdXQgY29udGFjdGluZyB0aGUgcGxhdGZvcm0gKG5vIGF1dGgsIG5vIGNvbXBsaWFuY2UsIG5vIHBsdWdpbiBsb29rdXApJylcbiAgICAub3B0aW9uKCctLXByb2ZpbGUgPHByb2ZpbGU+JywgJ0FXUyBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5vcHRpb24oJy0tcmVxdWlyZS1hcHByb3ZhbCA8YXBwcm92YWw+JywgJ0FwcHJvdmFsIGxldmVsOiBuZXZlcnxhbnktY2hhbmdlfGJyb2FkZW5pbmcnLCAnbmV2ZXInKVxuICAgIC5vcHRpb24oJy0tb3V0cHV0IDxkaXI+JywgJ0NESyBvdXRwdXQgZGlyZWN0b3J5JywgJ2Nkay5vdXQnKVxuICAgIC5vcHRpb24oJy0tc3RvcmUtdG9rZW5zJywgJ0F1dGhlbnRpY2F0ZSB1c2luZyB0b2tlbiBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIgKHJlcXVpcmVzIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXIpJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1yZWdpb24gPHJlZ2lvbj4nLCAnQVdTIHJlZ2lvbiAoZm9yIC0tc3RvcmUtdG9rZW5zKScpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLXNob3ctcmVzb2x2ZWQnLCAnUHJpbnQgdGhlIHJlc29sdmVkIHBpcGVsaW5lIGNvbmZpZyAod2l0aCB7eyAuLi4gfX0gdGVtcGxhdGVzIGV4cGFuZGVkKSBhbmQgZXhpdCB3aXRob3V0IGRlcGxveWluZycsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIC8vIE11dHVhbGx5IGV4Y2x1c2l2ZSBpbnB1dCBzb3VyY2VzXG4gICAgICBpZiAoIW9wdGlvbnMuaWQgJiYgIW9wdGlvbnMubG9jYWxTcGVjKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIC0taWQgPHBpcGVsaW5lLWlkPiBvciAtLWxvY2FsLXNwZWMgPHBhdGg+IGlzIHJlcXVpcmVkJyk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5pZCAmJiBvcHRpb25zLmxvY2FsU3BlYykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJy0taWQgYW5kIC0tbG9jYWwtc3BlYyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdQaXBlbGluZSBEZXBsb3knKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXVkaXRMb2coJ2RlcGxveScsIHsgZXhlY3V0aW9uSWQsIHBpcGVsaW5lSWQ6IG9wdGlvbnMuaWQsIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcblxuICAgICAgICBwcmludEluZm8oJ0RlcGxveW1lbnQgcGFyYW1ldGVycycsIHtcbiAgICAgICAgICBpZDogb3B0aW9ucy5pZCxcbiAgICAgICAgICBhd3NQcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICAgICAgb3V0cHV0RGlyOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICByZXF1aXJlQXBwcm92YWw6IG9wdGlvbnMucmVxdWlyZUFwcHJvdmFsLFxuICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNlY3VyaXR5IHdhcm5pbmcgZm9yIFNTTCB2ZXJpZmljYXRpb24gZGlzYWJsZWRcbiAgICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICAvLyBQcm9wYWdhdGUgdG8gcHJvY2Vzcy5lbnYgc28gQ0RLIGNvbnN0cnVjdHMgKExhbWJkYSwgQ29kZUJ1aWxkKSBpbmhlcml0IGl0XG4gICAgICAgIGlmIChvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX1RMU19SRUpFQ1RfVU5BVVRIT1JJWkVEID0gJzAnO1xuICAgICAgICB9XG5cbiAgICAgICAgZW5zdXJlQ2RrQXZhaWxhYmxlKCk7XG4gICAgICAgIHByaW50U3VjY2VzcygnQVdTIENESyBpcyBhdmFpbGFibGUnKTtcblxuICAgICAgICBsZXQgcGlwZWxpbmU6IFBpcGVsaW5lO1xuICAgICAgICBsZXQgcHJvcHNXaXRoSWRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgLy8gUmVtb3RlLW1vZGUgcmVnaXN0cnktcG9zdCBoYW5kbGVzIOKAlCBudWxsIGluIC0tbG9jYWwtc3BlYyBtb2RlLlxuICAgICAgICBsZXQgcGxhdGZvcm1DbGllbnQ6IEF3YWl0ZWQ8UmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jPj4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBwbGF0Zm9ybUNvbmZpZzogeyBhcGk6IHsgcGlwZWxpbmVVcmw6IHN0cmluZyB9IH0gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubG9jYWxTcGVjKSB7XG4gICAgICAgICAgLy8gLS1sb2NhbC1zcGVjOiByZWFkIHBpcGVsaW5lLmpzb24gZnJvbSBkaXNrOyBubyBwbGF0Zm9ybSBjb250YWN0LlxuICAgICAgICAgIC8vIENvbXBsaWFuY2UgLyBxdW90YSAvIHBsdWdpbi1sb29rdXAgZmVhdHVyZXMgYWxsIHJlcXVpcmUgdGhlIHBsYXRmb3JtIOKAlFxuICAgICAgICAgIC8vIHRoaXMgbW9kZSBpcyBmb3IgYWlyLWdhcHBlZCBvciBzaW1wbGUgc3RhbmRhbG9uZSBDREsgZGVwbG95bWVudHMuXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgICAgICBjb25zdCBmc01vZCA9IHJlcXVpcmUoJ2ZzJyk7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgICAgICBjb25zdCBwYXRoTW9kID0gcmVxdWlyZSgncGF0aCcpO1xuICAgICAgICAgIGNvbnN0IGFic1BhdGggPSBwYXRoTW9kLnJlc29sdmUob3B0aW9ucy5sb2NhbFNwZWMpO1xuICAgICAgICAgIHByaW50SW5mbygnTG9hZGluZyBsb2NhbCBwaXBlbGluZSBzcGVjJywgeyBwYXRoOiBhYnNQYXRoIH0pO1xuICAgICAgICAgIGlmICghZnNNb2QuZXhpc3RzU3luYyhhYnNQYXRoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBzcGVjIGZpbGUgbm90IGZvdW5kOiAke2Fic1BhdGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJhdyA9IGZzTW9kLnJlYWRGaWxlU3luYyhhYnNQYXRoLCAndXRmLTgnKTtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdykgYXMgUGFydGlhbDxQaXBlbGluZT4gJiB7IHByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfTtcbiAgICAgICAgICBpZiAoIXBhcnNlZC5wcm9wcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBzcGVjIGZpbGUgaXMgbWlzc2luZyByZXF1aXJlZCAncHJvcHMnIGZpZWxkOiAke2Fic1BhdGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBpcGVsaW5lID0ge1xuICAgICAgICAgICAgaWQ6IHBhcnNlZC5pZCA/PyAnbG9jYWwnLFxuICAgICAgICAgICAgcHJvamVjdDogcGFyc2VkLnByb2plY3QgPz8gJ2xvY2FsLXByb2plY3QnLFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uOiBwYXJzZWQub3JnYW5pemF0aW9uID8/ICdsb2NhbC1vcmcnLFxuICAgICAgICAgICAgb3JnSWQ6IHBhcnNlZC5vcmdJZCxcbiAgICAgICAgICAgIGlzRGVmYXVsdDogcGFyc2VkLmlzRGVmYXVsdCA/PyBmYWxzZSxcbiAgICAgICAgICAgIGlzQWN0aXZlOiBwYXJzZWQuaXNBY3RpdmUgPz8gdHJ1ZSxcbiAgICAgICAgICAgIHByb3BzOiBwYXJzZWQucHJvcHMsXG4gICAgICAgICAgfSBhcyBQaXBlbGluZTtcbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ0xvY2FsIHNwZWMgbG9hZGVkJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICBTb3VyY2U6IGFic1BhdGgsXG4gICAgICAgICAgICBQcm9qZWN0OiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICAgT3JnYW5pemF0aW9uOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJvcHNXaXRoSWRzID0ge1xuICAgICAgICAgICAgLi4ucGlwZWxpbmUucHJvcHMsXG4gICAgICAgICAgICAuLi4ocGlwZWxpbmUub3JnSWQgJiYgeyBvcmdJZDogcGlwZWxpbmUub3JnSWQgfSksXG4gICAgICAgICAgICBwaXBlbGluZUlkOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlbW90ZSBwYXRoOiBmZXRjaCBjb25maWcgZnJvbSBwbGF0Zm9ybSBBUElcbiAgICAgICAgICBwbGF0Zm9ybUNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcbiAgICAgICAgICBwbGF0Zm9ybUNvbmZpZyA9IHBsYXRmb3JtQ2xpZW50LmdldENvbmZpZygpIGFzIHsgYXBpOiB7IHBpcGVsaW5lVXJsOiBzdHJpbmcgfSB9O1xuXG4gICAgICAgICAgcHJpbnRJbmZvKCdGZXRjaGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uJywgeyBpZDogb3B0aW9ucy5pZCB9KTtcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBsYXRmb3JtQ2xpZW50LmdldDxQaXBlbGluZVJlc3BvbnNlPihcbiAgICAgICAgICAgIGAke3BsYXRmb3JtQ29uZmlnLmFwaS5waXBlbGluZVVybH0vJHtvcHRpb25zLmlkfWAsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGZldGNoZWQgPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8UGlwZWxpbmU+KHJlc3BvbnNlLCAncGlwZWxpbmUnLCAncHJvcHMnKTtcblxuICAgICAgICAgIGlmICghZmV0Y2hlZD8ucHJvcHMpIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IoJ0ludmFsaWQgcGlwZWxpbmUgcmVzcG9uc2UnLCB7XG4gICAgICAgICAgICAgIGlkOiBvcHRpb25zLmlkLFxuICAgICAgICAgICAgICBoYXNQcm9wczogISFmZXRjaGVkPy5wcm9wcyxcbiAgICAgICAgICAgICAgcmVzcG9uc2VLZXlzOiByZXNwb25zZSA/IE9iamVjdC5rZXlzKHJlc3BvbnNlKSA6ICcobnVsbCknLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSB2YWxpZCBwaXBlbGluZSBwcm9wZXJ0aWVzIGZvciBJRDogJHtvcHRpb25zLmlkfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwaXBlbGluZSA9IGZldGNoZWQ7XG5cbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGNvbmZpZ3VyYXRpb24gcmV0cmlldmVkJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnSUQnOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICAgICdQcm9qZWN0JzogcGlwZWxpbmUucHJvamVjdCxcbiAgICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICAnSXMgRGVmYXVsdCc6IHBpcGVsaW5lLmlzRGVmYXVsdCxcbiAgICAgICAgICAgICdJcyBBY3RpdmUnOiBwaXBlbGluZS5pc0FjdGl2ZSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHByb3BzV2l0aElkcyA9IHtcbiAgICAgICAgICAgIC4uLnBpcGVsaW5lLnByb3BzLFxuICAgICAgICAgICAgLi4uKHBpcGVsaW5lLm9yZ0lkICYmIHsgb3JnSWQ6IHBpcGVsaW5lLm9yZ0lkIH0pLFxuICAgICAgICAgICAgcGlwZWxpbmVJZDogcGlwZWxpbmUuaWQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIFByZS1yZXNvbHZlIHBsdWdpbnMgZnJvbSB0aGUgcGxhdGZvcm0gQVBJIHNvIHRoZSBzeW50aGVzaXplZFxuICAgICAgICAgIC8vIHRlbXBsYXRlIHNoaXBzIHdpdGggcmVhbCBDb2RlQnVpbGQgaW1hZ2UgVVJJcyBiYWtlZCBpbi4gV2l0aG91dFxuICAgICAgICAgIC8vIHRoaXMsIENESyBmYWxscyBiYWNrIHRvIHN0YW5kYXJkOjcuMCAodGhlIGRlcGxveS10aW1lIGN1c3RvbVxuICAgICAgICAgIC8vIHJlc291cmNlIGF0dHJpYnV0ZSBpcyB1bnJlc29sdmFibGUgYXQgc3ludGggdGltZSkuIFNraXBwZWQgaW5cbiAgICAgICAgICAvLyAtLWxvY2FsLXNwZWMgbW9kZSB3aGVyZSB0aGVyZSdzIG5vIHBsYXRmb3JtIGNsaWVudC5cbiAgICAgICAgICBjb25zdCByZXNvbHZlZFBsdWdpbnMgPSBhd2FpdCByZXNvbHZlUGx1Z2luc0ZvclByb3BzKHBsYXRmb3JtQ2xpZW50LCBwcm9wc1dpdGhJZHMpO1xuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhyZXNvbHZlZFBsdWdpbnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHByb3BzV2l0aElkcy5yZXNvbHZlZFBsdWdpbnMgPSByZXNvbHZlZFBsdWdpbnM7XG4gICAgICAgICAgICBwcmludEluZm8oJ1ByZS1yZXNvbHZlZCBwbHVnaW5zJywgeyBjb3VudDogT2JqZWN0LmtleXMocmVzb2x2ZWRQbHVnaW5zKS5sZW5ndGggfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gLS1zaG93LXJlc29sdmVkOiBwcmludCByZXNvbHZlZCBjb25maWcgYW5kIGV4aXQgKG5vIENESyBkZXBsb3kpXG4gICAgICAgIGlmICgob3B0aW9ucyBhcyB7IHNob3dSZXNvbHZlZD86IGJvb2xlYW4gfSkuc2hvd1Jlc29sdmVkKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgICAgICBjb25zdCB7IHJlc29sdmVTZWxmUmVmZXJlbmNpbmcgfSA9IHJlcXVpcmUoJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnKTtcbiAgICAgICAgICBjb25zdCBwcm9wc0FueSA9IHByb3BzV2l0aElkcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgICBjb25zdCBzY29wZSA9IHsgbWV0YWRhdGE6IHByb3BzQW55Lm1ldGFkYXRhID8/IHt9LCB2YXJzOiBwcm9wc0FueS52YXJzID8/IHt9IH07XG4gICAgICAgICAgY29uc3QgaXNUcGwgPSAoZjogc3RyaW5nKSA9PiBmID09PSAncHJvamVjdE5hbWUnIHx8IGYuc3RhcnRzV2l0aCgnbWV0YWRhdGEuJykgfHwgZi5zdGFydHNXaXRoKCd2YXJzLicpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVTZWxmUmVmZXJlbmNpbmcocHJvcHNBbnksIHNjb3BlLCBpc1RwbCwgKGY6IHN0cmluZykgPT4gaXNUcGwoZikgPyBmIDogbnVsbCwgJ3BpcGVsaW5lJyk7XG4gICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdSZXNvbHV0aW9uIGVycm9yczonKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiByZXN1bHQuZXJyb3JzKSBjb25zb2xlLmVycm9yKGAgIFske2UuZmllbGQgPz8gJz8nfV0gJHtlLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHByb3BzV2l0aElkcywgbnVsbCwgMikpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVuY29kZWQgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShwcm9wc1dpdGhJZHMpLCAndXRmLTgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBvcHRpb25zLm91dHB1dDtcblxuICAgICAgICAvLyBFbnN1cmUgb3V0cHV0IGRpcmVjdG9yeSBleGlzdHNcbiAgICAgICAgcHJpbnRJbmZvKCdQcmVwYXJpbmcgb3V0cHV0IGRpcmVjdG9yeScsIHsgcGF0aDogb3V0cHV0UGF0aCB9KTtcbiAgICAgICAgZW5zdXJlT3V0cHV0RGlyZWN0b3J5KG91dHB1dFBhdGgpO1xuXG4gICAgICAgIC8vIEJ1aWxkIENESyBjb21tYW5kICh2YWxpZGF0ZSBpbnB1dHMgdGhhdCBmbG93IGludG8gc2hlbGwpXG4gICAgICAgIGlmIChvcHRpb25zLnByb2ZpbGUpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnByb2ZpbGUsICdwcm9maWxlJyk7XG4gICAgICAgIGFzc2VydFNoZWxsU2FmZShvdXRwdXRQYXRoLCAnb3V0cHV0Jyk7XG5cbiAgICAgICAgY29uc3Qgc2NyaXB0UGF0aCA9IHJlc29sdmVCb2lsZXJwbGF0ZVBhdGgoX19kaXJuYW1lKTtcbiAgICAgICAgY29uc3QgcHJvZmlsZUFyZyA9IG9wdGlvbnMucHJvZmlsZSA/IGAtLXByb2ZpbGU9JHtvcHRpb25zLnByb2ZpbGV9YCA6ICcnO1xuICAgICAgICBjb25zdCBvdXRwdXRBcmcgPSBgLS1vdXRwdXQ9JHtvdXRwdXRQYXRofWA7XG4gICAgICAgIGNvbnN0IGFwcEFyZyA9IGAtLWFwcD1cIm5vZGUgJHtzY3JpcHRQYXRofVwiYDtcblxuICAgICAgICBjb25zdCBjb21tYW5kID0gYGNkayBkZXBsb3kgJHtwcm9maWxlQXJnfSAtLXJlcXVpcmUtYXBwcm92YWw9JHtvcHRpb25zLnJlcXVpcmVBcHByb3ZhbH0gJHtvdXRwdXRBcmd9IC0tbm90aWNlcz1mYWxzZSAke2FwcEFyZ31gO1xuXG4gICAgICAgIHByaW50U2VjdGlvbignQ0RLIEV4ZWN1dGlvbicpO1xuICAgICAgICBjb25zb2xlLmxvZyhjeWFuKGJvbGQoJ0NvbW1hbmQ6JykpLCBkaW0oY29tbWFuZC5zcGxpdCgnIC0tJylbMF0gKyAnIC4uLicpKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG5cbiAgICAgICAgLy8gRXhlY3V0ZSBDREsgY29tbWFuZFxuICAgICAgICBjb25zdCByZXN1bHQgPSBleGVjdXRlQ2RrU2hlbGxDb21tYW5kKGNvbW1hbmQsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgc2hvd091dHB1dDogdHJ1ZSxcbiAgICAgICAgICBlbnY6IHsgUElQRUxJTkVfUFJPUFM6IGVuY29kZWQgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByaW50U2VjdGlvbignRGVwbG95bWVudCBDb21wbGV0ZScpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAgICAgICAgICdPdXRwdXQgRGlyZWN0b3J5Jzogb3V0cHV0UGF0aCxcbiAgICAgICAgICAgICdTdGF0dXMnOiAn4pyTIFN1Y2Nlc3MnLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gUmVnaXN0ZXIgcGlwZWxpbmUgQVJOIGZvciBldmVudCByZXBvcnRpbmcgKG5vbi1ibG9ja2luZykuXG4gICAgICAgICAgLy8gU2tpcHBlZCBpbiAtLWxvY2FsLXNwZWMgbW9kZSBzaW5jZSB0aGVyZSdzIG5vIHBsYXRmb3JtIHRvIHJlZ2lzdGVyIHdpdGguXG4gICAgICAgICAgaWYgKCFwbGF0Zm9ybUNsaWVudCB8fCAhcGxhdGZvcm1Db25maWcpIHtcbiAgICAgICAgICAgIHByaW50SW5mbygnU2tpcHBpbmcgcGlwZWxpbmUgcmVnaXN0cnkgKGxvY2FsLXNwZWMgbW9kZSknKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQnVpbGQgdGhlIHBheWxvYWQgdXAtZnJvbnQgc28gYSByZWdpc3RyYXRpb24gUE9TVCBmYWlsdXJlIGNhbiB3cml0ZVxuICAgICAgICAgIC8vIHRoZSBzYW1lIHBheWxvYWQgdG8gYSBwZW5kaW5nLWludGVudCBmaWxlIGZvciBgcGlwZWxpbmUtbWFuYWdlclxuICAgICAgICAgIC8vIHJlZ2lzdGVyYCB0byBkcmFpbiBsYXRlci4gV2UgbmV2ZXIgd2FudCB0byByZXRyeSBTVFMgbG9va3VwcyDigJRcbiAgICAgICAgICAvLyB0aGV5IGNhbiBmYWlsIHRvbyAoZS5nLiBjcmVkZW50aWFsIHJvdGF0aW9uKSBhbmQgd291bGQgY29tcG91bmRcbiAgICAgICAgICAvLyB0aGUgaXNzdWUuXG4gICAgICAgICAgaWYgKCFwaXBlbGluZS5vcmdJZCkge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSBoYXMgbm8gb3JnSWQg4oCUIHNraXBwaW5nIHJlZ2lzdHJhdGlvbicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgcGF5bG9hZDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcGF5bG9hZCA9IGF3YWl0IGJ1aWxkUmVnaXN0cnlQYXlsb2FkKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgICAgICAgIG9yZ0lkOiBwaXBlbGluZS5vcmdJZCxcbiAgICAgICAgICAgICAgICBwaXBlbGluZU5hbWU6IHBpcGVsaW5lLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgICAgICAgICBwcm9qZWN0OiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBjYXRjaCAoYnVpbGRFcnJvcikge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdDb3VsZCBub3QgYnVpbGQgcmVnaXN0cnkgcGF5bG9hZCDigJQgc2tpcHBpbmcgcmVnaXN0cmF0aW9uJywge1xuICAgICAgICAgICAgICBlcnJvcjogYnVpbGRFcnJvciBpbnN0YW5jZW9mIEVycm9yID8gYnVpbGRFcnJvci5tZXNzYWdlIDogU3RyaW5nKGJ1aWxkRXJyb3IpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHBsYXRmb3JtQ2xpZW50LnBvc3QoYCR7cGxhdGZvcm1Db25maWcuYXBpLnBpcGVsaW5lVXJsfS9yZWdpc3RyeWAsIHBheWxvYWQpO1xuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSByZWdpc3RlcmVkIGZvciBldmVudCByZXBvcnRpbmcnLCB7IGFybjogcGF5bG9hZC5waXBlbGluZUFybiB9KTtcbiAgICAgICAgICB9IGNhdGNoIChyZWdFcnJvcikge1xuICAgICAgICAgICAgLy8gUGVyc2lzdCBmb3IgcmV0cnkuIFRoZSB1c2VyIGNhbiBkcmFpbiB3aXRoIGBwaXBlbGluZS1tYW5hZ2VyXG4gICAgICAgICAgICAvLyByZWdpc3RlcmAgKG9yIGp1c3QgcmUtcnVuIHRoYXQgY29tbWFuZCBhdCBhbnkgdGltZSDigJQgaXQnc1xuICAgICAgICAgICAgLy8gaWRlbXBvdGVudCkuIFRoZSBkZXBsb3kgaXRzZWxmIGRvZXMgTk9UIGZhaWwuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBpbnRlbnRQYXRoID0gYXdhaXQgd3JpdGVQZW5kaW5nSW50ZW50KHBheWxvYWQpO1xuICAgICAgICAgICAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIHJlZ2lzdHJ5IHVwZGF0ZSBmYWlsZWQ7IHF1ZXVlZCBmb3IgcmV0cnknLCB7XG4gICAgICAgICAgICAgICAgZXJyb3I6IHJlZ0Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyByZWdFcnJvci5tZXNzYWdlIDogU3RyaW5nKHJlZ0Vycm9yKSxcbiAgICAgICAgICAgICAgICByZXRyeTogJ3BpcGVsaW5lLW1hbmFnZXIgcmVnaXN0ZXInLFxuICAgICAgICAgICAgICAgIGludGVudDogaW50ZW50UGF0aCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGNhdGNoICh3cml0ZUVycikge1xuICAgICAgICAgICAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIHJlZ2lzdHJ5IHVwZGF0ZSBmYWlsZWQgKHJldHJ5IHF1ZXVlIGFsc28gZmFpbGVkKScsIHtcbiAgICAgICAgICAgICAgICBlcnJvcjogcmVnRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IHJlZ0Vycm9yLm1lc3NhZ2UgOiBTdHJpbmcocmVnRXJyb3IpLFxuICAgICAgICAgICAgICAgIHF1ZXVlRXJyb3I6IHdyaXRlRXJyIGluc3RhbmNlb2YgRXJyb3IgPyB3cml0ZUVyci5tZXNzYWdlIDogU3RyaW5nKHdyaXRlRXJyKSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdkZXBsb3knLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICBwaXBlbGluZUlkOiBvcHRpb25zLmlkLFxuICAgICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"store-token.d.ts","sourceRoot":"","sources":["../../src/commands/store-token.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmLjD"}
1
+ {"version":3,"file":"store-token.d.ts","sourceRoot":"","sources":["../../src/commands/store-token.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+LjD"}
@@ -146,8 +146,19 @@ function storeToken(program) {
146
146
  }
147
147
  (0, output_utils_1.printSuccess)(`Token generated (expires in ${actualExpiresIn}s)`);
148
148
  const expiresAt = new Date(Date.now() + actualExpiresIn * 1000).toISOString();
149
+ // Schema: { username: orgId, password: JWT, ...metadata }
150
+ // - username/password fields satisfy CodeBuild's `secretsManagerCredentials`
151
+ // (HTTP Basic, sent to pipeline-image-registry's /token endpoint)
152
+ // - The same JWT is consumed by the plugin-lookup Lambda by reading
153
+ // the `password` field
154
+ // - One Secret per customer account replaces the previous two-secret model
155
+ // Decode JWT for orgId — it's a stable identifier for the username field;
156
+ // the actual auth uses the password (JWT) which the token service verifies.
157
+ const payload = (0, auth_guard_1.decodeTokenPayload)(accessToken);
158
+ const orgId = payload?.organizationId ?? 'unknown-org';
149
159
  const secretValue = JSON.stringify({
150
- accessToken,
160
+ username: orgId,
161
+ password: accessToken,
151
162
  ...(refreshToken && { refreshToken }),
152
163
  platformUrl: client.getBaseUrl(),
153
164
  expiresIn: actualExpiresIn,
@@ -230,4 +241,4 @@ function storeToken(program) {
230
241
  }
231
242
  });
232
243
  }
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3RvcmUtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkN0QyxnQ0FtTEM7QUE5TkQsbUVBQWdFO0FBQ2hFLGtEQUEwQjtBQUUxQiwyREFBeUQ7QUFDekQsa0RBQThDO0FBQzlDLG9EQUF5RDtBQUN6RCxzREFBa0U7QUFDbEUsMERBQTZHO0FBQzdHLDBEQUE4RDtBQUM5RCwwREFBa0U7QUFDbEUsd0RBQTZGO0FBRTdGOzs7O0dBSUc7QUFDSCxTQUFTLGlCQUFpQixDQUFDLEtBQWE7SUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBQSwrQkFBa0IsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsY0FBYyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsNkdBQTZHLENBQUMsQ0FBQztJQUNqSSxDQUFDO0lBQ0QsT0FBTyxHQUFHLDZCQUFhLENBQUMsbUJBQW1CLElBQUksS0FBSyxXQUFXLENBQUM7QUFDbEUsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE9BQWdCO0lBQ3pDLE9BQU87U0FDSixPQUFPLENBQUMsYUFBYSxDQUFDO1NBQ3RCLFdBQVcsQ0FBQyx5RUFBeUUsQ0FBQztTQUN0RixNQUFNLENBQUMscUJBQXFCLEVBQUUsZ0RBQWdELENBQUM7U0FDL0UsTUFBTSxDQUFDLDJCQUEyQixFQUFFLG9DQUFvQyxDQUFDO1NBQ3pFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDO1NBQ3ZELE1BQU0sQ0FBQyxXQUFXLEVBQUUsOERBQThELEVBQUUsS0FB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RUFBRSxVQUFVO2lCQUNyQixDQUFDLENBQUM7Z0JBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEIsSUFBQSwyQkFBWSxFQUFDLHlDQUF5QyxDQUFDLENBQUM7Z0JBQ3hELElBQUEsd0JBQVMsRUFBQyxpQ0FBaUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDekQsSUFBQSx3QkFBUyxFQUFDLDREQUE0RCxDQUFDLENBQUM7Z0JBQ3hFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hCLElBQUEsd0JBQVMsRUFBQyxnQkFBZ0IsU0FBUyw4Q0FBOEMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMzRixDQUFDO1FBRUgsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFBLDJCQUFXLEVBQUMsS0FBSyxFQUFFLDJCQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsYUFBYTtvQkFDdEIsV0FBVztvQkFDWCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxzQkFBc0I7aUJBQ3pEO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZSc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyB2YWxpZGF0ZU51bWJlciB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzJztcbmltcG9ydCB7IGF1ZGl0TG9nIH0gZnJvbSAnLi4vdXRpbHMvYXVkaXQtbG9nJztcbmltcG9ydCB7IGRlY29kZVRva2VuUGF5bG9hZCB9IGZyb20gJy4uL3V0aWxzL2F1dGgtZ3VhcmQnO1xuaW1wb3J0IHsgdXBzZXJ0U2VjcmV0LCBnZXRTZWNyZXRBcm4gfSBmcm9tICcuLi91dGlscy9hd3Mtc2VjcmV0cyc7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscyc7XG5pbXBvcnQgeyBnZXRDb25maWdXaXRoT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZy1sb2FkZXInO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQgeyBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzJztcblxuLyoqXG4gKiBCdWlsZCB0aGUgc2VjcmV0IG5hbWUgZnJvbSB0aGUgSldUIHRva2VuJ3Mgb3JnYW5pemF0aW9uSWQuXG4gKiBQYXR0ZXJuOiB7U0VDUkVUU19QQVRIX1BSRUZJWH0ve29yZ0lkfS9wbGF0Zm9ybVxuICogQHRocm93cyBFcnJvciBpZiBvcmdhbml6YXRpb25JZCBpcyBub3QgcHJlc2VudCBpbiB0aGUgdG9rZW5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNlY3JldE5hbWUodG9rZW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBheWxvYWQgPSBkZWNvZGVUb2tlblBheWxvYWQodG9rZW4pO1xuICBjb25zdCBvcmdJZCA9IHBheWxvYWQ/Lm9yZ2FuaXphdGlvbklkO1xuICBpZiAoIW9yZ0lkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBkb2VzIG5vdCBjb250YWluIG9yZ2FuaXphdGlvbklkIOKAlCBjYW5ub3QgZGVyaXZlIHNlY3JldCBuYW1lLiBVc2UgLS1zZWNyZXQtbmFtZSB0byBzcGVjaWZ5IGV4cGxpY2l0bHkuJyk7XG4gIH1cbiAgcmV0dXJuIGAke0NvcmVDb25zdGFudHMuU0VDUkVUU19QQVRIX1BSRUZJWH0vJHtvcmdJZH0vcGxhdGZvcm1gO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYHN0b3JlLXRva2VuYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIEdlbmVyYXRlcyBhIGxvbmctbGl2ZWQgSldUIHRva2VuIHZpYSB0aGUgcGxhdGZvcm0gQVBJIGFuZCBzdG9yZXMgaXRcbiAqIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgZm9yIHVzZSBieSB0aGUgc3ludGgvZGVwbG95IC0tc3RvcmUtdG9rZW5zIGZsYWcuXG4gKlxuICogUmVxdWlyZXMgUExBVEZPUk1fVE9LRU4gdG8gYmUgc2V0LCBvciB1c2UgLS1lbWFpbC8tLXBhc3N3b3JkIHRvIGxvZ2luIGlubGluZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1kYXlzIDkwIC0tcmVnaW9uIHVzLWVhc3QtMVxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLWRheXMgNyAtLXNlY3JldC1uYW1lIG15LWN1c3RvbS1zZWNyZXQgLS1uby12ZXJpZnktc3NsXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuIC0tZHJ5LXJ1blxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtZSBhZG1pbiAtcCAnKioqJyAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcmVUb2tlbihwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnc3RvcmUtdG9rZW4nKVxuICAgIC5kZXNjcmlwdGlvbignR2VuZXJhdGUgSldUIHRva2VuIGFuZCBzdG9yZSBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyIGZvciBDREsgZGVwbG95bWVudHMnKVxuICAgIC5vcHRpb24oJy1lLCAtLWVtYWlsIDxlbWFpbD4nLCAnTG9naW4gZW1haWwgKHNraXBzIFBMQVRGT1JNX1RPS0VOIHJlcXVpcmVtZW50KScpXG4gICAgLm9wdGlvbignLXAsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdMb2dpbiBwYXNzd29yZCAodXNlZCB3aXRoIC0tZW1haWwpJylcbiAgICAub3B0aW9uKCctLWRheXMgPGRheXM+JywgJ1Rva2VuIGxpZmV0aW1lIGluIGRheXMnLCAnMzAnKVxuICAgIC5vcHRpb24oJy0tZHJ5LXJ1bicsICdTaG93IHdoYXQgd291bGQgYmUgc3RvcmVkIHdpdGhvdXQgd3JpdGluZyB0byBTZWNyZXRzIE1hbmFnZXInLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXNlY3JldC1uYW1lIDxuYW1lPicsICdTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IG5hbWUgKGRlZmF1bHQ6IGRlcml2ZWQgZnJvbSB0b2tlbiBvcmcpJylcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChkZWZhdWx0cyB0byBBV1NfUkVHSU9OIGVudiknKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIENMSSBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5vcHRpb24oJy0tanNvbicsICdPdXRwdXQgcmVzdWx0IGFzIEpTT04nLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXZlcmlmeS1zc2wnLCAnRW5hYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tbm8tdmVyaWZ5LXNzbCcsICdEaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdTdG9yZSBUb2tlbicpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIGNvbnN0IHJlZ2lvbiA9IG9wdGlvbnMucmVnaW9uIHx8IHByb2Nlc3MuZW52LkFXU19SRUdJT04gfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OIHx8ICd1cy1lYXN0LTEnO1xuXG4gICAgICAgIGNvbnN0IGRheXMgPSB2YWxpZGF0ZU51bWJlcihvcHRpb25zLmRheXMsICdkYXlzJywgMSwgMzY1KTtcbiAgICAgICAgY29uc3QgZXhwaXJlc0luU2Vjb25kcyA9IGRheXMgKiAyNCAqIDYwICogNjA7XG5cbiAgICAgICAgLy8gU3RlcCAwOiBJZiAtLWVtYWlsLy0tcGFzc3dvcmQgcHJvdmlkZWQgYW5kIG5vIFBMQVRGT1JNX1RPS0VOLCBsb2dpbiBmaXJzdFxuICAgICAgICBpZiAob3B0aW9ucy5lbWFpbCAmJiBvcHRpb25zLnBhc3N3b3JkICYmICFwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTikge1xuICAgICAgICAgIHByaW50U2VjdGlvbignTG9naW4nKTtcbiAgICAgICAgICBwcmludEluZm8oJ0F1dGhlbnRpY2F0aW5nIHdpdGggZW1haWwvcGFzc3dvcmQuLi4nKTtcblxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ1dpdGhPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICAgIGNvbnN0IGxvZ2luVXJsID0gYCR7Y29uZmlnLmFwaS5iYXNlVXJsfS9hcGkvYXV0aC9sb2dpbmA7XG5cbiAgICAgICAgICBjb25zdCBsb2dpblJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdChsb2dpblVybCwge1xuICAgICAgICAgICAgZW1haWw6IG9wdGlvbnMuZW1haWwsXG4gICAgICAgICAgICBwYXNzd29yZDogb3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICBodHRwc0FnZW50OiBjb25maWcuYXBpLnJlamVjdFVuYXV0aG9yaXplZCA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgPyBuZXcgKGF3YWl0IGltcG9ydCgnaHR0cHMnKSkuQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgbG9naW5EYXRhID0gbG9naW5SZXNwb25zZS5kYXRhPy5kYXRhID8/IGxvZ2luUmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICBjb25zdCBsb2dpblRva2VuID0gbG9naW5EYXRhPy5hY2Nlc3NUb2tlbjtcblxuICAgICAgICAgIGlmICghbG9naW5Ub2tlbiB8fCB0eXBlb2YgbG9naW5Ub2tlbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTG9naW4gZmFpbGVkIOKAlCBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTiA9IGxvZ2luVG9rZW47XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKCdMb2dpbiBzdWNjZXNzZnVsJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGVwIDE6IEF1dGhlbnRpY2F0ZSBhbmQgZ2VuZXJhdGUgbG9uZy1saXZlZCB0b2tlblxuICAgICAgICBwcmludFNlY3Rpb24oJ0dlbmVyYXRlIFRva2VuJyk7XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuXG4gICAgICAgIC8vIFJlc29sdmUgc2VjcmV0IG5hbWUgZnJvbSB0b2tlbidzIG9yZ2FuaXphdGlvbklkICh1bmxlc3MgLS1zZWNyZXQtbmFtZSB3YXMgZXhwbGljaXRseSBzZXQpXG4gICAgICAgIGNvbnN0IHNlY3JldE5hbWUgPSBvcHRpb25zLnNlY3JldE5hbWUgfHwgcmVzb2x2ZVNlY3JldE5hbWUocHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4hKTtcblxuICAgICAgICBhdWRpdExvZygnc3RvcmUtdG9rZW4nLCB7IGV4ZWN1dGlvbklkLCBzZWNyZXROYW1lLCBkYXlzOiBvcHRpb25zLmRheXMsIGRyeVJ1bjogb3B0aW9ucy5kcnlSdW4gfSk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdQYXJhbWV0ZXJzJywge1xuICAgICAgICAgIHNlY3JldE5hbWUsXG4gICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgIGRheXMsXG4gICAgICAgICAgZXhwaXJlc0luOiBgJHtleHBpcmVzSW5TZWNvbmRzfXNgLFxuICAgICAgICAgIGRyeVJ1bjogb3B0aW9ucy5kcnlSdW4sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByaW50SW5mbygnUmVxdWVzdGluZyB0b2tlbicsIHsgZXhwaXJlc0luOiBgJHtleHBpcmVzSW5TZWNvbmRzfXMgKCR7ZGF5c30gZGF5cylgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRva2VuUmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgICAgJy9hcGkvdXNlci9nZW5lcmF0ZS10b2tlbicsXG4gICAgICAgICAgeyBleHBpcmVzSW46IGV4cGlyZXNJblNlY29uZHMgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB0b2tlbkRhdGEgPSAodG9rZW5SZXNwb25zZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LmRhdGEgPz8gdG9rZW5SZXNwb25zZTtcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSAodG9rZW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8uYWNjZXNzVG9rZW4gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSAodG9rZW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8ucmVmcmVzaFRva2VuIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0dWFsRXhwaXJlc0luID0gKCh0b2tlbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5leHBpcmVzSW4gYXMgbnVtYmVyKSA/PyBleHBpcmVzSW5TZWNvbmRzO1xuXG4gICAgICAgIGlmICghYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIGdlbmVyYXRpb24gZmFpbGVkIOKAlCBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50U3VjY2VzcyhgVG9rZW4gZ2VuZXJhdGVkIChleHBpcmVzIGluICR7YWN0dWFsRXhwaXJlc0lufXMpYCk7XG5cbiAgICAgICAgY29uc3QgZXhwaXJlc0F0ID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIGFjdHVhbEV4cGlyZXNJbiAqIDEwMDApLnRvSVNPU3RyaW5nKCk7XG5cbiAgICAgICAgY29uc3Qgc2VjcmV0VmFsdWUgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgLi4uKHJlZnJlc2hUb2tlbiAmJiB7IHJlZnJlc2hUb2tlbiB9KSxcbiAgICAgICAgICBwbGF0Zm9ybVVybDogY2xpZW50LmdldEJhc2VVcmwoKSxcbiAgICAgICAgICBleHBpcmVzSW46IGFjdHVhbEV4cGlyZXNJbixcbiAgICAgICAgICBleHBpcmVzQXQsXG4gICAgICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIERyeS1ydW46IHNob3cgd2hhdCB3b3VsZCBiZSBzdG9yZWRcbiAgICAgICAgaWYgKG9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICBkcnlSdW46IHRydWUsXG4gICAgICAgICAgICAgIHNlY3JldE5hbWUsXG4gICAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgICAgZXhwaXJlc0luRGF5czogZGF5cyxcbiAgICAgICAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgICAgICAgICB0b2tlbkxlbmd0aDogYWNjZXNzVG9rZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICBoYXNSZWZyZXNoVG9rZW46ICEhcmVmcmVzaFRva2VuLFxuICAgICAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgICBwcmludFNlY3Rpb24oJ0RyeSBSdW4g4oCUIE5vIENoYW5nZXMgTWFkZScpO1xuICAgICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAgICdTZWNyZXQgTmFtZSc6IHNlY3JldE5hbWUsXG4gICAgICAgICAgICAgICdSZWdpb24nOiByZWdpb24sXG4gICAgICAgICAgICAgICdFeHBpcmVzIEluJzogYCR7ZGF5c30gZGF5c2AsXG4gICAgICAgICAgICAgICdSZW5ldyBCeSc6IGV4cGlyZXNBdCxcbiAgICAgICAgICAgICAgJ1Rva2VuIExlbmd0aCc6IGAke2FjY2Vzc1Rva2VuLmxlbmd0aH0gY2hhcnNgLFxuICAgICAgICAgICAgICAnSGFzIFJlZnJlc2ggVG9rZW4nOiByZWZyZXNoVG9rZW4gPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHByaW50U3VjY2VzcygnRHJ5IHJ1biBjb21wbGV0ZSDigJQgbm8gc2VjcmV0IHdhcyBjcmVhdGVkIG9yIHVwZGF0ZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RlcCAyOiBTdG9yZSB0b2tlbiBpbiBTZWNyZXRzIE1hbmFnZXJcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdTdG9yZSBUb2tlbicpO1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYFBsYXRmb3JtIEpXVCB0b2tlbiAocmVuZXcgYnkgJHtleHBpcmVzQXR9KWA7XG4gICAgICAgIGF3YWl0IHVwc2VydFNlY3JldChzZWNyZXROYW1lLCBzZWNyZXRWYWx1ZSwgZGVzY3JpcHRpb24sIHsgcmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG5cbiAgICAgICAgY29uc3QgYXJuID0gYXdhaXQgZ2V0U2VjcmV0QXJuKHNlY3JldE5hbWUsIHsgcmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICBzZWNyZXROYW1lLFxuICAgICAgICAgICAgc2VjcmV0QXJuOiBhcm4sXG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICBleHBpcmVzSW5EYXlzOiBkYXlzLFxuICAgICAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgICAgIH0sIG51bGwsIDIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdUb2tlbiBTdG9yZWQnKTtcblxuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ1NlY3JldCBOYW1lJzogc2VjcmV0TmFtZSxcbiAgICAgICAgICAgICdTZWNyZXQgQVJOJzogYXJuLFxuICAgICAgICAgICAgJ1JlZ2lvbic6IHJlZ2lvbixcbiAgICAgICAgICAgICdFeHBpcmVzIEluJzogYCR7ZGF5c30gZGF5c2AsXG4gICAgICAgICAgICAnUmVuZXcgQnknOiBleHBpcmVzQXQsXG4gICAgICAgICAgICAnU3RhdHVzJzogJ+KckyBTdG9yZWQnLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U3VjY2VzcygnVG9rZW4gc3RvcmVkLiBUbyB1c2Ugd2l0aCBzeW50aC9kZXBsb3k6Jyk7XG4gICAgICAgICAgcHJpbnRJbmZvKGAgIGV4cG9ydCBQTEFURk9STV9TRUNSRVRfTkFNRT0ke3NlY3JldE5hbWV9YCk7XG4gICAgICAgICAgcHJpbnRJbmZvKCcgIHBpcGVsaW5lLW1hbmFnZXIgc3ludGggLS1pZCA8cGlwZWxpbmUtaWQ+IC0tc3RvcmUtdG9rZW5zJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50SW5mbyhgUmVuZXcgYmVmb3JlICR7ZXhwaXJlc0F0fSB3aXRoOiBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuIC0tZGF5cyAke2RheXN9YCk7XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ3N0b3JlLXRva2VuJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgc2VjcmV0TmFtZTogb3B0aW9ucy5zZWNyZXROYW1lIHx8ICcoZGVyaXZlZCBmcm9tIHRva2VuKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3RvcmUtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkN0QyxnQ0ErTEM7QUExT0QsbUVBQWdFO0FBQ2hFLGtEQUEwQjtBQUUxQiwyREFBeUQ7QUFDekQsa0RBQThDO0FBQzlDLG9EQUF5RDtBQUN6RCxzREFBa0U7QUFDbEUsMERBQTZHO0FBQzdHLDBEQUE4RDtBQUM5RCwwREFBa0U7QUFDbEUsd0RBQTZGO0FBRTdGOzs7O0dBSUc7QUFDSCxTQUFTLGlCQUFpQixDQUFDLEtBQWE7SUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBQSwrQkFBa0IsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsY0FBYyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsNkdBQTZHLENBQUMsQ0FBQztJQUNqSSxDQUFDO0lBQ0QsT0FBTyxHQUFHLDZCQUFhLENBQUMsbUJBQW1CLElBQUksS0FBSyxXQUFXLENBQUM7QUFDbEUsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE9BQWdCO0lBQ3pDLE9BQU87U0FDSixPQUFPLENBQUMsYUFBYSxDQUFDO1NBQ3RCLFdBQVcsQ0FBQyx5RUFBeUUsQ0FBQztTQUN0RixNQUFNLENBQUMscUJBQXFCLEVBQUUsZ0RBQWdELENBQUM7U0FDL0UsTUFBTSxDQUFDLDJCQUEyQixFQUFFLG9DQUFvQyxDQUFDO1NBQ3pFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDO1NBQ3ZELE1BQU0sQ0FBQyxXQUFXLEVBQUUsOERBQThELEVBQUUsS0FB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IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZSc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyB2YWxpZGF0ZU51bWJlciB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzJztcbmltcG9ydCB7IGF1ZGl0TG9nIH0gZnJvbSAnLi4vdXRpbHMvYXVkaXQtbG9nJztcbmltcG9ydCB7IGRlY29kZVRva2VuUGF5bG9hZCB9IGZyb20gJy4uL3V0aWxzL2F1dGgtZ3VhcmQnO1xuaW1wb3J0IHsgdXBzZXJ0U2VjcmV0LCBnZXRTZWNyZXRBcm4gfSBmcm9tICcuLi91dGlscy9hd3Mtc2VjcmV0cyc7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscyc7XG5pbXBvcnQgeyBnZXRDb25maWdXaXRoT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZy1sb2FkZXInO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQgeyBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzJztcblxuLyoqXG4gKiBCdWlsZCB0aGUgc2VjcmV0IG5hbWUgZnJvbSB0aGUgSldUIHRva2VuJ3Mgb3JnYW5pemF0aW9uSWQuXG4gKiBQYXR0ZXJuOiB7U0VDUkVUU19QQVRIX1BSRUZJWH0ve29yZ0lkfS9wbGF0Zm9ybVxuICogQHRocm93cyBFcnJvciBpZiBvcmdhbml6YXRpb25JZCBpcyBub3QgcHJlc2VudCBpbiB0aGUgdG9rZW5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNlY3JldE5hbWUodG9rZW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBheWxvYWQgPSBkZWNvZGVUb2tlblBheWxvYWQodG9rZW4pO1xuICBjb25zdCBvcmdJZCA9IHBheWxvYWQ/Lm9yZ2FuaXphdGlvbklkO1xuICBpZiAoIW9yZ0lkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBkb2VzIG5vdCBjb250YWluIG9yZ2FuaXphdGlvbklkIOKAlCBjYW5ub3QgZGVyaXZlIHNlY3JldCBuYW1lLiBVc2UgLS1zZWNyZXQtbmFtZSB0byBzcGVjaWZ5IGV4cGxpY2l0bHkuJyk7XG4gIH1cbiAgcmV0dXJuIGAke0NvcmVDb25zdGFudHMuU0VDUkVUU19QQVRIX1BSRUZJWH0vJHtvcmdJZH0vcGxhdGZvcm1gO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYHN0b3JlLXRva2VuYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIEdlbmVyYXRlcyBhIGxvbmctbGl2ZWQgSldUIHRva2VuIHZpYSB0aGUgcGxhdGZvcm0gQVBJIGFuZCBzdG9yZXMgaXRcbiAqIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgZm9yIHVzZSBieSB0aGUgc3ludGgvZGVwbG95IC0tc3RvcmUtdG9rZW5zIGZsYWcuXG4gKlxuICogUmVxdWlyZXMgUExBVEZPUk1fVE9LRU4gdG8gYmUgc2V0LCBvciB1c2UgLS1lbWFpbC8tLXBhc3N3b3JkIHRvIGxvZ2luIGlubGluZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1kYXlzIDkwIC0tcmVnaW9uIHVzLWVhc3QtMVxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLWRheXMgNyAtLXNlY3JldC1uYW1lIG15LWN1c3RvbS1zZWNyZXQgLS1uby12ZXJpZnktc3NsXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuIC0tZHJ5LXJ1blxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtZSBhZG1pbiAtcCAnKioqJyAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcmVUb2tlbihwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnc3RvcmUtdG9rZW4nKVxuICAgIC5kZXNjcmlwdGlvbignR2VuZXJhdGUgSldUIHRva2VuIGFuZCBzdG9yZSBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyIGZvciBDREsgZGVwbG95bWVudHMnKVxuICAgIC5vcHRpb24oJy1lLCAtLWVtYWlsIDxlbWFpbD4nLCAnTG9naW4gZW1haWwgKHNraXBzIFBMQVRGT1JNX1RPS0VOIHJlcXVpcmVtZW50KScpXG4gICAgLm9wdGlvbignLXAsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdMb2dpbiBwYXNzd29yZCAodXNlZCB3aXRoIC0tZW1haWwpJylcbiAgICAub3B0aW9uKCctLWRheXMgPGRheXM+JywgJ1Rva2VuIGxpZmV0aW1lIGluIGRheXMnLCAnMzAnKVxuICAgIC5vcHRpb24oJy0tZHJ5LXJ1bicsICdTaG93IHdoYXQgd291bGQgYmUgc3RvcmVkIHdpdGhvdXQgd3JpdGluZyB0byBTZWNyZXRzIE1hbmFnZXInLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXNlY3JldC1uYW1lIDxuYW1lPicsICdTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IG5hbWUgKGRlZmF1bHQ6IGRlcml2ZWQgZnJvbSB0b2tlbiBvcmcpJylcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChkZWZhdWx0cyB0byBBV1NfUkVHSU9OIGVudiknKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIENMSSBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5vcHRpb24oJy0tanNvbicsICdPdXRwdXQgcmVzdWx0IGFzIEpTT04nLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXZlcmlmeS1zc2wnLCAnRW5hYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tbm8tdmVyaWZ5LXNzbCcsICdEaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdTdG9yZSBUb2tlbicpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIGNvbnN0IHJlZ2lvbiA9IG9wdGlvbnMucmVnaW9uIHx8IHByb2Nlc3MuZW52LkFXU19SRUdJT04gfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OIHx8ICd1cy1lYXN0LTEnO1xuXG4gICAgICAgIGNvbnN0IGRheXMgPSB2YWxpZGF0ZU51bWJlcihvcHRpb25zLmRheXMsICdkYXlzJywgMSwgMzY1KTtcbiAgICAgICAgY29uc3QgZXhwaXJlc0luU2Vjb25kcyA9IGRheXMgKiAyNCAqIDYwICogNjA7XG5cbiAgICAgICAgLy8gU3RlcCAwOiBJZiAtLWVtYWlsLy0tcGFzc3dvcmQgcHJvdmlkZWQgYW5kIG5vIFBMQVRGT1JNX1RPS0VOLCBsb2dpbiBmaXJzdFxuICAgICAgICBpZiAob3B0aW9ucy5lbWFpbCAmJiBvcHRpb25zLnBhc3N3b3JkICYmICFwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTikge1xuICAgICAgICAgIHByaW50U2VjdGlvbignTG9naW4nKTtcbiAgICAgICAgICBwcmludEluZm8oJ0F1dGhlbnRpY2F0aW5nIHdpdGggZW1haWwvcGFzc3dvcmQuLi4nKTtcblxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ1dpdGhPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICAgIGNvbnN0IGxvZ2luVXJsID0gYCR7Y29uZmlnLmFwaS5iYXNlVXJsfS9hcGkvYXV0aC9sb2dpbmA7XG5cbiAgICAgICAgICBjb25zdCBsb2dpblJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdChsb2dpblVybCwge1xuICAgICAgICAgICAgZW1haWw6IG9wdGlvbnMuZW1haWwsXG4gICAgICAgICAgICBwYXNzd29yZDogb3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICBodHRwc0FnZW50OiBjb25maWcuYXBpLnJlamVjdFVuYXV0aG9yaXplZCA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgPyBuZXcgKGF3YWl0IGltcG9ydCgnaHR0cHMnKSkuQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgbG9naW5EYXRhID0gbG9naW5SZXNwb25zZS5kYXRhPy5kYXRhID8/IGxvZ2luUmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICBjb25zdCBsb2dpblRva2VuID0gbG9naW5EYXRhPy5hY2Nlc3NUb2tlbjtcblxuICAgICAgICAgIGlmICghbG9naW5Ub2tlbiB8fCB0eXBlb2YgbG9naW5Ub2tlbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTG9naW4gZmFpbGVkIOKAlCBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTiA9IGxvZ2luVG9rZW47XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKCdMb2dpbiBzdWNjZXNzZnVsJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGVwIDE6IEF1dGhlbnRpY2F0ZSBhbmQgZ2VuZXJhdGUgbG9uZy1saXZlZCB0b2tlblxuICAgICAgICBwcmludFNlY3Rpb24oJ0dlbmVyYXRlIFRva2VuJyk7XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuXG4gICAgICAgIC8vIFJlc29sdmUgc2VjcmV0IG5hbWUgZnJvbSB0b2tlbidzIG9yZ2FuaXphdGlvbklkICh1bmxlc3MgLS1zZWNyZXQtbmFtZSB3YXMgZXhwbGljaXRseSBzZXQpXG4gICAgICAgIGNvbnN0IHNlY3JldE5hbWUgPSBvcHRpb25zLnNlY3JldE5hbWUgfHwgcmVzb2x2ZVNlY3JldE5hbWUocHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4hKTtcblxuICAgICAgICBhdWRpdExvZygnc3RvcmUtdG9rZW4nLCB7IGV4ZWN1dGlvbklkLCBzZWNyZXROYW1lLCBkYXlzOiBvcHRpb25zLmRheXMsIGRyeVJ1bjogb3B0aW9ucy5kcnlSdW4gfSk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdQYXJhbWV0ZXJzJywge1xuICAgICAgICAgIHNlY3JldE5hbWUsXG4gICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgIGRheXMsXG4gICAgICAgICAgZXhwaXJlc0luOiBgJHtleHBpcmVzSW5TZWNvbmRzfXNgLFxuICAgICAgICAgIGRyeVJ1bjogb3B0aW9ucy5kcnlSdW4sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByaW50SW5mbygnUmVxdWVzdGluZyB0b2tlbicsIHsgZXhwaXJlc0luOiBgJHtleHBpcmVzSW5TZWNvbmRzfXMgKCR7ZGF5c30gZGF5cylgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRva2VuUmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgICAgJy9hcGkvdXNlci9nZW5lcmF0ZS10b2tlbicsXG4gICAgICAgICAgeyBleHBpcmVzSW46IGV4cGlyZXNJblNlY29uZHMgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB0b2tlbkRhdGEgPSAodG9rZW5SZXNwb25zZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LmRhdGEgPz8gdG9rZW5SZXNwb25zZTtcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSAodG9rZW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8uYWNjZXNzVG9rZW4gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSAodG9rZW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8ucmVmcmVzaFRva2VuIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0dWFsRXhwaXJlc0luID0gKCh0b2tlbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5leHBpcmVzSW4gYXMgbnVtYmVyKSA/PyBleHBpcmVzSW5TZWNvbmRzO1xuXG4gICAgICAgIGlmICghYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIGdlbmVyYXRpb24gZmFpbGVkIOKAlCBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50U3VjY2VzcyhgVG9rZW4gZ2VuZXJhdGVkIChleHBpcmVzIGluICR7YWN0dWFsRXhwaXJlc0lufXMpYCk7XG5cbiAgICAgICAgY29uc3QgZXhwaXJlc0F0ID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIGFjdHVhbEV4cGlyZXNJbiAqIDEwMDApLnRvSVNPU3RyaW5nKCk7XG5cbiAgICAgICAgLy8gU2NoZW1hOiB7IHVzZXJuYW1lOiBvcmdJZCwgcGFzc3dvcmQ6IEpXVCwgLi4ubWV0YWRhdGEgfVxuICAgICAgICAvLyAtIHVzZXJuYW1lL3Bhc3N3b3JkIGZpZWxkcyBzYXRpc2Z5IENvZGVCdWlsZCdzIGBzZWNyZXRzTWFuYWdlckNyZWRlbnRpYWxzYFxuICAgICAgICAvLyAgIChIVFRQIEJhc2ljLCBzZW50IHRvIHBpcGVsaW5lLWltYWdlLXJlZ2lzdHJ5J3MgL3Rva2VuIGVuZHBvaW50KVxuICAgICAgICAvLyAtIFRoZSBzYW1lIEpXVCBpcyBjb25zdW1lZCBieSB0aGUgcGx1Z2luLWxvb2t1cCBMYW1iZGEgYnkgcmVhZGluZ1xuICAgICAgICAvLyAgIHRoZSBgcGFzc3dvcmRgIGZpZWxkXG4gICAgICAgIC8vIC0gT25lIFNlY3JldCBwZXIgY3VzdG9tZXIgYWNjb3VudCByZXBsYWNlcyB0aGUgcHJldmlvdXMgdHdvLXNlY3JldCBtb2RlbFxuICAgICAgICAvLyBEZWNvZGUgSldUIGZvciBvcmdJZCDigJQgaXQncyBhIHN0YWJsZSBpZGVudGlmaWVyIGZvciB0aGUgdXNlcm5hbWUgZmllbGQ7XG4gICAgICAgIC8vIHRoZSBhY3R1YWwgYXV0aCB1c2VzIHRoZSBwYXNzd29yZCAoSldUKSB3aGljaCB0aGUgdG9rZW4gc2VydmljZSB2ZXJpZmllcy5cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGRlY29kZVRva2VuUGF5bG9hZChhY2Nlc3NUb2tlbik7XG4gICAgICAgIGNvbnN0IG9yZ0lkID0gcGF5bG9hZD8ub3JnYW5pemF0aW9uSWQgPz8gJ3Vua25vd24tb3JnJztcblxuICAgICAgICBjb25zdCBzZWNyZXRWYWx1ZSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICB1c2VybmFtZTogb3JnSWQsXG4gICAgICAgICAgcGFzc3dvcmQ6IGFjY2Vzc1Rva2VuLFxuICAgICAgICAgIC4uLihyZWZyZXNoVG9rZW4gJiYgeyByZWZyZXNoVG9rZW4gfSksXG4gICAgICAgICAgcGxhdGZvcm1Vcmw6IGNsaWVudC5nZXRCYXNlVXJsKCksXG4gICAgICAgICAgZXhwaXJlc0luOiBhY3R1YWxFeHBpcmVzSW4sXG4gICAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBEcnktcnVuOiBzaG93IHdoYXQgd291bGQgYmUgc3RvcmVkXG4gICAgICAgIGlmIChvcHRpb25zLmRyeVJ1bikge1xuICAgICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgICAgZHJ5UnVuOiB0cnVlLFxuICAgICAgICAgICAgICBzZWNyZXROYW1lLFxuICAgICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICAgIGV4cGlyZXNJbkRheXM6IGRheXMsXG4gICAgICAgICAgICAgIGV4cGlyZXNBdCxcbiAgICAgICAgICAgICAgdG9rZW5MZW5ndGg6IGFjY2Vzc1Rva2VuLmxlbmd0aCxcbiAgICAgICAgICAgICAgaGFzUmVmcmVzaFRva2VuOiAhIXJlZnJlc2hUb2tlbixcbiAgICAgICAgICAgIH0sIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgICAgcHJpbnRTZWN0aW9uKCdEcnkgUnVuIOKAlCBObyBDaGFuZ2VzIE1hZGUnKTtcbiAgICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgICAnU2VjcmV0IE5hbWUnOiBzZWNyZXROYW1lLFxuICAgICAgICAgICAgICAnUmVnaW9uJzogcmVnaW9uLFxuICAgICAgICAgICAgICAnRXhwaXJlcyBJbic6IGAke2RheXN9IGRheXNgLFxuICAgICAgICAgICAgICAnUmVuZXcgQnknOiBleHBpcmVzQXQsXG4gICAgICAgICAgICAgICdUb2tlbiBMZW5ndGgnOiBgJHthY2Nlc3NUb2tlbi5sZW5ndGh9IGNoYXJzYCxcbiAgICAgICAgICAgICAgJ0hhcyBSZWZyZXNoIFRva2VuJzogcmVmcmVzaFRva2VuID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoJ0RyeSBydW4gY29tcGxldGUg4oCUIG5vIHNlY3JldCB3YXMgY3JlYXRlZCBvciB1cGRhdGVkJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0ZXAgMjogU3RvcmUgdG9rZW4gaW4gU2VjcmV0cyBNYW5hZ2VyXG4gICAgICAgIHByaW50U2VjdGlvbignU3RvcmUgVG9rZW4nKTtcblxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGBQbGF0Zm9ybSBKV1QgdG9rZW4gKHJlbmV3IGJ5ICR7ZXhwaXJlc0F0fSlgO1xuICAgICAgICBhd2FpdCB1cHNlcnRTZWNyZXQoc2VjcmV0TmFtZSwgc2VjcmV0VmFsdWUsIGRlc2NyaXB0aW9uLCB7IHJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuXG4gICAgICAgIGNvbnN0IGFybiA9IGF3YWl0IGdldFNlY3JldEFybihzZWNyZXROYW1lLCB7IHJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgc2VjcmV0TmFtZSxcbiAgICAgICAgICAgIHNlY3JldEFybjogYXJuLFxuICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgZXhwaXJlc0luRGF5czogZGF5cyxcbiAgICAgICAgICAgIGV4cGlyZXNBdCxcbiAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U2VjdGlvbignVG9rZW4gU3RvcmVkJyk7XG5cbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICdTZWNyZXQgTmFtZSc6IHNlY3JldE5hbWUsXG4gICAgICAgICAgICAnU2VjcmV0IEFSTic6IGFybixcbiAgICAgICAgICAgICdSZWdpb24nOiByZWdpb24sXG4gICAgICAgICAgICAnRXhwaXJlcyBJbic6IGAke2RheXN9IGRheXNgLFxuICAgICAgICAgICAgJ1JlbmV3IEJ5JzogZXhwaXJlc0F0LFxuICAgICAgICAgICAgJ1N0YXR1cyc6ICfinJMgU3RvcmVkJyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1Rva2VuIHN0b3JlZC4gVG8gdXNlIHdpdGggc3ludGgvZGVwbG95OicpO1xuICAgICAgICAgIHByaW50SW5mbyhgICBleHBvcnQgUExBVEZPUk1fU0VDUkVUX05BTUU9JHtzZWNyZXROYW1lfWApO1xuICAgICAgICAgIHByaW50SW5mbygnICBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoIC0taWQgPHBpcGVsaW5lLWlkPiAtLXN0b3JlLXRva2VucycpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludEluZm8oYFJlbmV3IGJlZm9yZSAke2V4cGlyZXNBdH0gd2l0aDogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLWRheXMgJHtkYXlzfWApO1xuICAgICAgICB9XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdzdG9yZS10b2tlbicsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIHNlY3JldE5hbWU6IG9wdGlvbnMuc2VjcmV0TmFtZSB8fCAnKGRlcml2ZWQgZnJvbSB0b2tlbiknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsG5C"}
1
+ {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoDpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsG5C"}
@@ -9,6 +9,7 @@ const cdk_utils_1 = require("../utils/cdk-utils");
9
9
  const command_utils_1 = require("../utils/command-utils");
10
10
  const error_handler_1 = require("../utils/error-handler");
11
11
  const output_utils_1 = require("../utils/output-utils");
12
+ const plugin_resolver_1 = require("../utils/plugin-resolver");
12
13
  /**
13
14
  * Fetch pipeline config and set PIPELINE_PROPS env var for the boilerplate app.
14
15
  * Uses createAuthenticatedClientAsync which supports all three auth methods.
@@ -28,6 +29,15 @@ async function fetchPipelineConfig(pipelineId, options) {
28
29
  };
29
30
  if (pipeline.orgId)
30
31
  propsWithIds.orgId = pipeline.orgId;
32
+ // Pre-resolve plugins from the platform API so the synthesized template
33
+ // ships with real CodeBuild image URIs baked in. Without this, CDK falls
34
+ // back to standard:7.0 because the deploy-time custom resource attribute
35
+ // is unresolvable at synth time.
36
+ const resolvedPlugins = await (0, plugin_resolver_1.resolvePluginsForProps)(client, propsWithIds);
37
+ if (Object.keys(resolvedPlugins).length > 0) {
38
+ propsWithIds.resolvedPlugins = resolvedPlugins;
39
+ (0, output_utils_1.printInfo)('Pre-resolved plugins', { count: Object.keys(resolvedPlugins).length });
40
+ }
31
41
  process.env.PIPELINE_PROPS = Buffer.from(JSON.stringify(propsWithIds)).toString('base64');
32
42
  (0, output_utils_1.printSuccess)('Pipeline configuration loaded');
33
43
  }
@@ -177,4 +187,4 @@ async function showResolvedPipeline(pipelineId, options) {
177
187
  }
178
188
  console.log(JSON.stringify(decoded, null, 2));
179
189
  }
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3ludGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBNkR0QyxzQkFzR0M7QUFoS0QsMkRBQTBEO0FBRTFELGtEQUE4QztBQUM5QyxrREFBd0c7QUFDeEcsMERBQTZHO0FBQzdHLDBEQUFrRTtBQUNsRSx3REFBOEk7QUFFOUk7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxVQUFrQixFQUNsQixPQUEwRjtJQUUxRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsOENBQThCLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBRWxDLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxVQUFVLEVBQUUsQ0FDMUMsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLElBQUEsb0NBQXFCLEVBQVcsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVoRixJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUEseUJBQVUsRUFBQyx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUE0QjtRQUM1QyxHQUFHLFFBQVEsQ0FBQyxLQUFnQztRQUM1QyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxVQUFVO0tBQ3RDLENBQUM7SUFDRixJQUFJLFFBQVEsQ0FBQyxLQUFLO1FBQUUsWUFBWSxDQUFDLEtBQUssR0FBRyxRQUFRLENB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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDaEUsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRS9GLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDcEMsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBhc3NlcnRTaGVsbFNhZmUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFBpcGVsaW5lIH0gZnJvbSAnLi4vdHlwZXMvcGlwZWxpbmUnO1xuaW1wb3J0IHsgYXVkaXRMb2cgfSBmcm9tICcuLi91dGlscy9hdWRpdC1sb2cnO1xuaW1wb3J0IHsgZW5zdXJlQ2RrQXZhaWxhYmxlLCBleGVjdXRlQ2RrU2hlbGxDb21tYW5kLCByZXNvbHZlQm9pbGVycGxhdGVQYXRoIH0gZnJvbSAnLi4vdXRpbHMvY2RrLXV0aWxzJztcbmltcG9ydCB7IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYywgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXInO1xuaW1wb3J0IHsgZXh0cmFjdFNpbmdsZVJlc3BvbnNlLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMnO1xuXG4vKipcbiAqIEZldGNoIHBpcGVsaW5lIGNvbmZpZyBhbmQgc2V0IFBJUEVMSU5FX1BST1BTIGVudiB2YXIgZm9yIHRoZSBib2lsZXJwbGF0ZSBhcHAuXG4gKiBVc2VzIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyB3aGljaCBzdXBwb3J0cyBhbGwgdGhyZWUgYXV0aCBtZXRob2RzLlxuICovXG5hc3luYyBmdW5jdGlvbiBmZXRjaFBpcGVsaW5lQ29uZmlnKFxuICBwaXBlbGluZUlkOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHsgc3RvcmVUb2tlbnM/OiBib29sZWFuOyB2ZXJpZnlTc2w/OiBib29sZWFuOyByZWdpb24/OiBzdHJpbmc7IHByb2ZpbGU/OiBzdHJpbmcgfSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG4gIGNvbnN0IGNvbmZpZyA9IGNsaWVudC5nZXRDb25maWcoKTtcblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgIGAke2NvbmZpZy5hcGkucGlwZWxpbmVVcmx9LyR7cGlwZWxpbmVJZH1gLFxuICApO1xuXG4gIGNvbnN0IHBpcGVsaW5lID0gZXh0cmFjdFNpbmdsZVJlc3BvbnNlPFBpcGVsaW5lPihyZXNwb25zZSwgJ3BpcGVsaW5lJywgJ3Byb3BzJyk7XG5cbiAgaWYgKCFwaXBlbGluZT8ucHJvcHMpIHtcbiAgICBwcmludEVycm9yKCdQaXBlbGluZSBoYXMgbm8gcHJvcHMnLCB7IGlkOiBwaXBlbGluZUlkIH0pO1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIHBpcGVsaW5lIHByb3BzIGZvciBJRDogJHtwaXBlbGluZUlkfWApO1xuICB9XG5cbiAgY29uc3QgcHJvcHNXaXRoSWRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAuLi5waXBlbGluZS5wcm9wcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBwaXBlbGluZUlkOiBwaXBlbGluZS5pZCB8fCBwaXBlbGluZUlkLFxuICB9O1xuICBpZiAocGlwZWxpbmUub3JnSWQpIHByb3BzV2l0aElkcy5vcmdJZCA9IHBpcGVsaW5lLm9yZ0lkO1xuXG4gIHByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkocHJvcHNXaXRoSWRzKSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGNvbmZpZ3VyYXRpb24gbG9hZGVkJyk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgc3ludGhgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogUnVucyBDREsgc3ludGhlc2lzIHVzaW5nIHRoZSBib2lsZXJwbGF0ZSBhcHAuIFBpcGVsaW5lIGNvbmZpZyBpcyByZXNvbHZlZCBmcm9tOlxuICogMS4gLS1pZCBmbGFnIG9yIFBJUEVMSU5FX0lEIGVudiB2YXIg4oaSIGZldGNoZXMgY29uZmlnIGZyb20gcGxhdGZvcm0gQVBJXG4gKiAyLiBQSVBFTElORV9QUk9QUyBlbnYgdmFyIChwcmUtZW5jb2RlZCwgZnJvbSBkZXBsb3kgY29tbWFuZClcbiAqXG4gKiBBdXRoZW50aWNhdGlvbiBtZXRob2RzIChpbiBwcmlvcml0eSBvcmRlcik6XG4gKiAtIFBMQVRGT1JNX1RPS0VOIGVudiB2YXJcbiAqIC0gLS1zdG9yZS10b2tlbnMg4oaSIGZldGNoIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoIC0taWQgPHBpcGVsaW5lLWlkPiAtLW5vLXZlcmlmeS1zc2xcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3ludGggLS1pZCA8cGlwZWxpbmUtaWQ+IC0tc3RvcmUtdG9rZW5zXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoIC0tcXVpZXQgLS1uby1ub3RpY2VzICAgICAgICAgICMgQ29kZVBpcGVsaW5lICh1c2VzIGVudiB2YXJzKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzeW50aChwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnc3ludGgnKVxuICAgIC5kZXNjcmlwdGlvbignUnVuIENESyBzeW50aGVzaXMgdXNpbmcgcGlwZWxpbmUgY29uZmlndXJhdGlvbicpXG4gICAgLm9wdGlvbignLWksIC0taWQgPGlkPicsICdQaXBlbGluZSBJRCAob3Igc2V0IFBJUEVMSU5FX0lEIGVudiB2YXIpJylcbiAgICAub3B0aW9uKCctLXN0b3JlLXRva2VucycsICdBdXRoZW50aWNhdGUgdXNpbmcgdG9rZW4gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyIChyZXF1aXJlcyBQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyKScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tb3V0cHV0IDxkaXI+JywgJ0NESyBvdXRwdXQgZGlyZWN0b3J5JywgJ2Nkay5vdXQnKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIHByb2ZpbGUnKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGZvciAtLXN0b3JlLXRva2VucyknKVxuICAgIC5vcHRpb24oJy0tcXVpZXQnLCAnU3VwcHJlc3MgQ0RLIG91dHB1dCcsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tbm8tbm90aWNlcycsICdTdXBwcmVzcyBDREsgbm90aWNlcycpXG4gICAgLm9wdGlvbignLS12ZXJib3NlJywgJ1Nob3cgdmVyYm9zZSBDREsgb3V0cHV0JywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHQgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1zaG93LXJlc29sdmVkJywgJ1ByaW50IHRoZSByZXNvbHZlZCBwaXBlbGluZSBjb25maWcgKHdpdGgge3sgLi4uIH19IHRlbXBsYXRlcyBleHBhbmRlZCkgYW5kIGV4aXQgd2l0aG91dCBydW5uaW5nIENESycsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdDREsgU3ludGhlc2lzJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWQgPSBvcHRpb25zLmlkIHx8IHByb2Nlc3MuZW52LlBJUEVMSU5FX0lEO1xuXG4gICAgICAgIC8vIC0tc2hvdy1yZXNvbHZlZDogcHJldmlldyB0ZW1wbGF0ZXMgYW5kIGV4aXRcbiAgICAgICAgaWYgKG9wdGlvbnMuc2hvd1Jlc29sdmVkKSB7XG4gICAgICAgICAgYXdhaXQgc2hvd1Jlc29sdmVkUGlwZWxpbmUocGlwZWxpbmVJZCwgb3B0aW9ucyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYXVkaXRMb2coJ3N5bnRoJywgeyBleGVjdXRpb25JZCwgcGlwZWxpbmVJZCwgb3V0cHV0OiBvcHRpb25zLm91dHB1dCwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIFByb3BhZ2F0ZSB0byBwcm9jZXNzLmVudiBzbyBDREsgY29uc3RydWN0cyAoTGFtYmRhLCBDb2RlQnVpbGQpIGluaGVyaXQgaXRcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyaWZ5U3NsID09PSBmYWxzZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgPSAnMCc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGZXRjaCBwaXBlbGluZSBjb25maWcgaWYgSUQgaXMgYXZhaWxhYmxlIGFuZCBQSVBFTElORV9QUk9QUyBub3QgYWxyZWFkeSBzZXRcbiAgICAgICAgaWYgKHBpcGVsaW5lSWQgJiYgIXByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTKSB7XG4gICAgICAgICAgcHJpbnRJbmZvKCdGZXRjaGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uJywgeyBpZDogcGlwZWxpbmVJZCB9KTtcbiAgICAgICAgICBhd2FpdCBmZXRjaFBpcGVsaW5lQ29uZmlnKHBpcGVsaW5lSWQsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFwaXBlbGluZUlkICYmICFwcm9jZXNzLmVudi5QSVBFTElORV9QUk9QUykge1xuICAgICAgICAgIHByaW50V2FybmluZygnTm8gcGlwZWxpbmUgSUQgb3IgUElQRUxJTkVfUFJPUFMgc2V0Jyk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQaXBlbGluZSBJRCBpcyByZXF1aXJlZC4gVXNlIC0taWQgPGlkPiBvciBzZXQgUElQRUxJTkVfSUQgZW52IHZhci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVuc3VyZUNka0F2YWlsYWJsZSgpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ0FXUyBDREsgaXMgYXZhaWxhYmxlJyk7XG5cbiAgICAgICAgLy8gQnVpbGQgY2RrIHN5bnRoIGNvbW1hbmRcbiAgICAgICAgaWYgKG9wdGlvbnMub3V0cHV0KSBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5vdXRwdXQsICdvdXRwdXQnKTtcbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSkgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucHJvZmlsZSwgJ3Byb2ZpbGUnKTtcblxuICAgICAgICBjb25zdCBib2lsZXJwbGF0ZVBhdGggPSByZXNvbHZlQm9pbGVycGxhdGVQYXRoKF9fZGlybmFtZSk7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gW1xuICAgICAgICAgICdjZGsgc3ludGgnLFxuICAgICAgICAgIGAtLWFwcD1cIm5vZGUgJHtib2lsZXJwbGF0ZVBhdGh9XCJgLFxuICAgICAgICAgIGAtLW91dHB1dD0ke29wdGlvbnMub3V0cHV0fWAsXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSkgcGFydHMucHVzaChgLS1wcm9maWxlPSR7b3B0aW9ucy5wcm9maWxlfWApO1xuICAgICAgICBpZiAob3B0aW9ucy5xdWlldCkgcGFydHMucHVzaCgnLS1xdWlldCcpO1xuICAgICAgICBpZiAob3B0aW9ucy5ub3RpY2VzID09PSBmYWxzZSkgcGFydHMucHVzaCgnLS1uby1ub3RpY2VzJyk7XG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHBhcnRzLnB1c2goJy0tdmVyYm9zZScpO1xuXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBwYXJ0cy5qb2luKCcgJyk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdFeGVjdXRpbmcnLCB7IGNvbW1hbmQ6IChjb21tYW5kLnNwbGl0KCctLWFwcCcpWzBdID8/ICcnKS50cmltKCkgKyAnIC4uLicgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBleGVjdXRlQ2RrU2hlbGxDb21tYW5kKGNvbW1hbmQsIHtcbiAgICAgICAgICBzaG93T3V0cHV0OiAhb3B0aW9ucy5xdWlldCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ1N5bnRoZXNpcyBDb21wbGV0ZScpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiByZXN1bHQuZHVyYXRpb24sXG4gICAgICAgICAgICAgIG91dHB1dDogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAgICdEdXJhdGlvbic6IGAke3Jlc3VsdC5kdXJhdGlvbn1tc2AsXG4gICAgICAgICAgICAgICdPdXRwdXQnOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICAgICAgJ1N0YXR1cyc6ICfinJMgU3VjY2VzcycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnc3ludGgnLCBleGVjdXRpb25JZCwgcGlwZWxpbmVJZDogb3B0aW9ucy5pZCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBGZXRjaCB0aGUgcGlwZWxpbmUgYnkgSUQsIGFwcGx5IHBhc3MtMSBzZWxmLXJlZmVyZW5jaW5nIHRlbXBsYXRlXG4gKiByZXNvbHV0aW9uLCBhbmQgcHJpbnQgaXQgdG8gc3Rkb3V0LiBVc2VkIGJ5IGBzeW50aCAtLXNob3ctcmVzb2x2ZWRgXG4gKiBhbmQgYGRlcGxveSAtLXNob3ctcmVzb2x2ZWRgIHRvIHByZXZpZXcgc3Vic3RpdHV0aW9uIGJlZm9yZSBydW5uaW5nIENESy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2hvd1Jlc29sdmVkUGlwZWxpbmUoXG4gIHBpcGVsaW5lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogeyBwcm9maWxlPzogc3RyaW5nOyByZWdpb24/OiBzdHJpbmc7IHN0b3JlVG9rZW5zPzogYm9vbGVhbjsgdmVyaWZ5U3NsPzogYm9vbGVhbiB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghcGlwZWxpbmVJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignLS1zaG93LXJlc29sdmVkIHJlcXVpcmVzIC0taWQgb3IgUElQRUxJTkVfSUQgZW52IHZhcicpO1xuICB9XG4gIGF3YWl0IGZldGNoUGlwZWxpbmVDb25maWcocGlwZWxpbmVJZCwgb3B0aW9ucyk7XG4gIC8vIGZldGNoUGlwZWxpbmVDb25maWcgd3JpdGVzIFBJUEVMSU5FX1BST1BTIGJhc2U2NC1lbmNvZGVkIG9uIHN1Y2Nlc3NcbiAgY29uc3QgZW5jb2RlZCA9IHByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTO1xuICBpZiAoIWVuY29kZWQpIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGZldGNoIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24nKTtcbiAgY29uc3QgZGVjb2RlZCA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20oZW5jb2RlZCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGYtOCcpKTtcblxuICAvLyBMYXp5IGltcG9ydCB0byBhdm9pZCBwdWxsaW5nIHBpcGVsaW5lLWNvcmUgaW50byBldmVyeSBDTEkgaW52b2NhdGlvblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCB7IHJlc29sdmVTZWxmUmVmZXJlbmNpbmcgfSA9IHJlcXVpcmUoJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnKTtcbiAgY29uc3Qgc2NvcGUgPSB7IG1ldGFkYXRhOiBkZWNvZGVkLm1ldGFkYXRhID8/IHt9LCB2YXJzOiBkZWNvZGVkLnZhcnMgPz8ge30gfTtcbiAgY29uc3QgaXNUZW1wbGF0YWJsZSA9IChmOiBzdHJpbmcpID0+XG4gICAgZiA9PT0gJ3Byb2plY3ROYW1lJyB8fCBmLnN0YXJ0c1dpdGgoJ21ldGFkYXRhLicpIHx8IGYuc3RhcnRzV2l0aCgndmFycy4nKTtcbiAgY29uc3QgZmllbGRUb1Njb3BlID0gKGY6IHN0cmluZykgPT4gaXNUZW1wbGF0YWJsZShmKSA/IGYgOiBudWxsO1xuICBjb25zdCByZXN1bHQgPSByZXNvbHZlU2VsZlJlZmVyZW5jaW5nKGRlY29kZWQsIHNjb3BlLCBpc1RlbXBsYXRhYmxlLCBmaWVsZFRvU2NvcGUsICdwaXBlbGluZScpO1xuXG4gIGlmIChyZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1Jlc29sdXRpb24gZXJyb3JzOicpO1xuICAgIGZvciAoY29uc3QgZSBvZiByZXN1bHQuZXJyb3JzKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAgIFske2UuZmllbGQgPz8gJz8nfV0gJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkZWNvZGVkLCBudWxsLCAyKSk7XG59XG4iXX0=
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3ludGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBd0V0QyxzQkFzR0M7QUEzS0QsMkRBQTBEO0FBRTFELGtEQUE4QztBQUM5QyxrREFBd0c7QUFDeEcsMERBQTZHO0FBQzdHLDBEQUFrRTtBQUNsRSx3REFBOEk7QUFDOUksOERBQWtFO0FBRWxFOzs7R0FHRztBQUNILEtBQUssVUFBVSxtQkFBbUIsQ0FDaEMsVUFBa0IsRUFDbEIsT0FBMEY7SUFFMUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDhDQUE4QixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUVsQyxNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQy9CLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksVUFBVSxFQUFFLENBQzFDLENBQUM7SUFFRixNQUFNLFFBQVEsR0FBRyxJQUFBLG9DQUFxQixFQUFXLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFaEYsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQixJQUFBLHlCQUFVLEVBQUMsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBNEI7UUFDNUMsR0FBRyxRQUFRLENBQUMsS0FBZ0M7UUFDNUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksVUFBVTtLQUN0QyxDQUFDO0lBQ0YsSUFBSSxRQUFRLENBQUMsS0FBSztRQUFFLFlBQVksQ0FBQyxLQUFL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NiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBhc3NlcnRTaGVsbFNhZmUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFBpcGVsaW5lIH0gZnJvbSAnLi4vdHlwZXMvcGlwZWxpbmUnO1xuaW1wb3J0IHsgYXVkaXRMb2cgfSBmcm9tICcuLi91dGlscy9hdWRpdC1sb2cnO1xuaW1wb3J0IHsgZW5zdXJlQ2RrQXZhaWxhYmxlLCBleGVjdXRlQ2RrU2hlbGxDb21tYW5kLCByZXNvbHZlQm9pbGVycGxhdGVQYXRoIH0gZnJvbSAnLi4vdXRpbHMvY2RrLXV0aWxzJztcbmltcG9ydCB7IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYywgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXInO1xuaW1wb3J0IHsgZXh0cmFjdFNpbmdsZVJlc3BvbnNlLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBsdWdpbnNGb3JQcm9wcyB9IGZyb20gJy4uL3V0aWxzL3BsdWdpbi1yZXNvbHZlcic7XG5cbi8qKlxuICogRmV0Y2ggcGlwZWxpbmUgY29uZmlnIGFuZCBzZXQgUElQRUxJTkVfUFJPUFMgZW52IHZhciBmb3IgdGhlIGJvaWxlcnBsYXRlIGFwcC5cbiAqIFVzZXMgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jIHdoaWNoIHN1cHBvcnRzIGFsbCB0aHJlZSBhdXRoIG1ldGhvZHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZldGNoUGlwZWxpbmVDb25maWcoXG4gIHBpcGVsaW5lSWQ6IHN0cmluZyxcbiAgb3B0aW9uczogeyBzdG9yZVRva2Vucz86IGJvb2xlYW47IHZlcmlmeVNzbD86IGJvb2xlYW47IHJlZ2lvbj86IHN0cmluZzsgcHJvZmlsZT86IHN0cmluZyB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcbiAgY29uc3QgY29uZmlnID0gY2xpZW50LmdldENvbmZpZygpO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgYCR7Y29uZmlnLmFwaS5waXBlbGluZVVybH0vJHtwaXBlbGluZUlkfWAsXG4gICk7XG5cbiAgY29uc3QgcGlwZWxpbmUgPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8UGlwZWxpbmU+KHJlc3BvbnNlLCAncGlwZWxpbmUnLCAncHJvcHMnKTtcblxuICBpZiAoIXBpcGVsaW5lPy5wcm9wcykge1xuICAgIHByaW50RXJyb3IoJ1BpcGVsaW5lIGhhcyBubyBwcm9wcycsIHsgaWQ6IHBpcGVsaW5lSWQgfSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcmV0cmlldmUgcGlwZWxpbmUgcHJvcHMgZm9yIElEOiAke3BpcGVsaW5lSWR9YCk7XG4gIH1cblxuICBjb25zdCBwcm9wc1dpdGhJZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIC4uLnBpcGVsaW5lLnByb3BzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHBpcGVsaW5lSWQ6IHBpcGVsaW5lLmlkIHx8IHBpcGVsaW5lSWQsXG4gIH07XG4gIGlmIChwaXBlbGluZS5vcmdJZCkgcHJvcHNXaXRoSWRzLm9yZ0lkID0gcGlwZWxpbmUub3JnSWQ7XG5cbiAgLy8gUHJlLXJlc29sdmUgcGx1Z2lucyBmcm9tIHRoZSBwbGF0Zm9ybSBBUEkgc28gdGhlIHN5bnRoZXNpemVkIHRlbXBsYXRlXG4gIC8vIHNoaXBzIHdpdGggcmVhbCBDb2RlQnVpbGQgaW1hZ2UgVVJJcyBiYWtlZCBpbi4gV2l0aG91dCB0aGlzLCBDREsgZmFsbHNcbiAgLy8gYmFjayB0byBzdGFuZGFyZDo3LjAgYmVjYXVzZSB0aGUgZGVwbG95LXRpbWUgY3VzdG9tIHJlc291cmNlIGF0dHJpYnV0ZVxuICAvLyBpcyB1bnJlc29sdmFibGUgYXQgc3ludGggdGltZS5cbiAgY29uc3QgcmVzb2x2ZWRQbHVnaW5zID0gYXdhaXQgcmVzb2x2ZVBsdWdpbnNGb3JQcm9wcyhjbGllbnQsIHByb3BzV2l0aElkcyk7XG4gIGlmIChPYmplY3Qua2V5cyhyZXNvbHZlZFBsdWdpbnMpLmxlbmd0aCA+IDApIHtcbiAgICBwcm9wc1dpdGhJZHMucmVzb2x2ZWRQbHVnaW5zID0gcmVzb2x2ZWRQbHVnaW5zO1xuICAgIHByaW50SW5mbygnUHJlLXJlc29sdmVkIHBsdWdpbnMnLCB7IGNvdW50OiBPYmplY3Qua2V5cyhyZXNvbHZlZFBsdWdpbnMpLmxlbmd0aCB9KTtcbiAgfVxuXG4gIHByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkocHJvcHNXaXRoSWRzKSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGNvbmZpZ3VyYXRpb24gbG9hZGVkJyk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgc3ludGhgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogUnVucyBDREsgc3ludGhlc2lzIHVzaW5nIHRoZSBib2lsZXJwbGF0ZSBhcHAuIFBpcGVsaW5lIGNvbmZpZyBpcyByZXNvbHZlZCBmcm9tOlxuICogMS4gLS1pZCBmbGFnIG9yIFBJUEVMSU5FX0lEIGVudiB2YXIg4oaSIGZldGNoZXMgY29uZmlnIGZyb20gcGxhdGZvcm0gQVBJXG4gKiAyLiBQSVBFTElORV9QUk9QUyBlbnYgdmFyIChwcmUtZW5jb2RlZCwgZnJvbSBkZXBsb3kgY29tbWFuZClcbiAqXG4gKiBBdXRoZW50aWNhdGlvbiBtZXRob2RzIChpbiBwcmlvcml0eSBvcmRlcik6XG4gKiAtIFBMQVRGT1JNX1RPS0VOIGVudiB2YXJcbiAqIC0gLS1zdG9yZS10b2tlbnMg4oaSIGZldGNoIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoIC0taWQgPHBpcGVsaW5lLWlkPiAtLW5vLXZlcmlmeS1zc2xcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3ludGggLS1pZCA8cGlwZWxpbmUtaWQ+IC0tc3RvcmUtdG9rZW5zXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoIC0tcXVpZXQgLS1uby1ub3RpY2VzICAgICAgICAgICMgQ29kZVBpcGVsaW5lICh1c2VzIGVudiB2YXJzKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzeW50aChwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnc3ludGgnKVxuICAgIC5kZXNjcmlwdGlvbignUnVuIENESyBzeW50aGVzaXMgdXNpbmcgcGlwZWxpbmUgY29uZmlndXJhdGlvbicpXG4gICAgLm9wdGlvbignLWksIC0taWQgPGlkPicsICdQaXBlbGluZSBJRCAob3Igc2V0IFBJUEVMSU5FX0lEIGVudiB2YXIpJylcbiAgICAub3B0aW9uKCctLXN0b3JlLXRva2VucycsICdBdXRoZW50aWNhdGUgdXNpbmcgdG9rZW4gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyIChyZXF1aXJlcyBQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyKScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tb3V0cHV0IDxkaXI+JywgJ0NESyBvdXRwdXQgZGlyZWN0b3J5JywgJ2Nkay5vdXQnKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIHByb2ZpbGUnKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGZvciAtLXN0b3JlLXRva2VucyknKVxuICAgIC5vcHRpb24oJy0tcXVpZXQnLCAnU3VwcHJlc3MgQ0RLIG91dHB1dCcsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tbm8tbm90aWNlcycsICdTdXBwcmVzcyBDREsgbm90aWNlcycpXG4gICAgLm9wdGlvbignLS12ZXJib3NlJywgJ1Nob3cgdmVyYm9zZSBDREsgb3V0cHV0JywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHQgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1zaG93LXJlc29sdmVkJywgJ1ByaW50IHRoZSByZXNvbHZlZCBwaXBlbGluZSBjb25maWcgKHdpdGgge3sgLi4uIH19IHRlbXBsYXRlcyBleHBhbmRlZCkgYW5kIGV4aXQgd2l0aG91dCBydW5uaW5nIENESycsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdDREsgU3ludGhlc2lzJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWQgPSBvcHRpb25zLmlkIHx8IHByb2Nlc3MuZW52LlBJUEVMSU5FX0lEO1xuXG4gICAgICAgIC8vIC0tc2hvdy1yZXNvbHZlZDogcHJldmlldyB0ZW1wbGF0ZXMgYW5kIGV4aXRcbiAgICAgICAgaWYgKG9wdGlvbnMuc2hvd1Jlc29sdmVkKSB7XG4gICAgICAgICAgYXdhaXQgc2hvd1Jlc29sdmVkUGlwZWxpbmUocGlwZWxpbmVJZCwgb3B0aW9ucyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYXVkaXRMb2coJ3N5bnRoJywgeyBleGVjdXRpb25JZCwgcGlwZWxpbmVJZCwgb3V0cHV0OiBvcHRpb25zLm91dHB1dCwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIFByb3BhZ2F0ZSB0byBwcm9jZXNzLmVudiBzbyBDREsgY29uc3RydWN0cyAoTGFtYmRhLCBDb2RlQnVpbGQpIGluaGVyaXQgaXRcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyaWZ5U3NsID09PSBmYWxzZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgPSAnMCc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGZXRjaCBwaXBlbGluZSBjb25maWcgaWYgSUQgaXMgYXZhaWxhYmxlIGFuZCBQSVBFTElORV9QUk9QUyBub3QgYWxyZWFkeSBzZXRcbiAgICAgICAgaWYgKHBpcGVsaW5lSWQgJiYgIXByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTKSB7XG4gICAgICAgICAgcHJpbnRJbmZvKCdGZXRjaGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uJywgeyBpZDogcGlwZWxpbmVJZCB9KTtcbiAgICAgICAgICBhd2FpdCBmZXRjaFBpcGVsaW5lQ29uZmlnKHBpcGVsaW5lSWQsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFwaXBlbGluZUlkICYmICFwcm9jZXNzLmVudi5QSVBFTElORV9QUk9QUykge1xuICAgICAgICAgIHByaW50V2FybmluZygnTm8gcGlwZWxpbmUgSUQgb3IgUElQRUxJTkVfUFJPUFMgc2V0Jyk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQaXBlbGluZSBJRCBpcyByZXF1aXJlZC4gVXNlIC0taWQgPGlkPiBvciBzZXQgUElQRUxJTkVfSUQgZW52IHZhci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVuc3VyZUNka0F2YWlsYWJsZSgpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ0FXUyBDREsgaXMgYXZhaWxhYmxlJyk7XG5cbiAgICAgICAgLy8gQnVpbGQgY2RrIHN5bnRoIGNvbW1hbmRcbiAgICAgICAgaWYgKG9wdGlvbnMub3V0cHV0KSBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5vdXRwdXQsICdvdXRwdXQnKTtcbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSkgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucHJvZmlsZSwgJ3Byb2ZpbGUnKTtcblxuICAgICAgICBjb25zdCBib2lsZXJwbGF0ZVBhdGggPSByZXNvbHZlQm9pbGVycGxhdGVQYXRoKF9fZGlybmFtZSk7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gW1xuICAgICAgICAgICdjZGsgc3ludGgnLFxuICAgICAgICAgIGAtLWFwcD1cIm5vZGUgJHtib2lsZXJwbGF0ZVBhdGh9XCJgLFxuICAgICAgICAgIGAtLW91dHB1dD0ke29wdGlvbnMub3V0cHV0fWAsXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSkgcGFydHMucHVzaChgLS1wcm9maWxlPSR7b3B0aW9ucy5wcm9maWxlfWApO1xuICAgICAgICBpZiAob3B0aW9ucy5xdWlldCkgcGFydHMucHVzaCgnLS1xdWlldCcpO1xuICAgICAgICBpZiAob3B0aW9ucy5ub3RpY2VzID09PSBmYWxzZSkgcGFydHMucHVzaCgnLS1uby1ub3RpY2VzJyk7XG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHBhcnRzLnB1c2goJy0tdmVyYm9zZScpO1xuXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBwYXJ0cy5qb2luKCcgJyk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdFeGVjdXRpbmcnLCB7IGNvbW1hbmQ6IChjb21tYW5kLnNwbGl0KCctLWFwcCcpWzBdID8/ICcnKS50cmltKCkgKyAnIC4uLicgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBleGVjdXRlQ2RrU2hlbGxDb21tYW5kKGNvbW1hbmQsIHtcbiAgICAgICAgICBzaG93T3V0cHV0OiAhb3B0aW9ucy5xdWlldCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ1N5bnRoZXNpcyBDb21wbGV0ZScpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiByZXN1bHQuZHVyYXRpb24sXG4gICAgICAgICAgICAgIG91dHB1dDogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAgICdEdXJhdGlvbic6IGAke3Jlc3VsdC5kdXJhdGlvbn1tc2AsXG4gICAgICAgICAgICAgICdPdXRwdXQnOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICAgICAgJ1N0YXR1cyc6ICfinJMgU3VjY2VzcycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnc3ludGgnLCBleGVjdXRpb25JZCwgcGlwZWxpbmVJZDogb3B0aW9ucy5pZCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBGZXRjaCB0aGUgcGlwZWxpbmUgYnkgSUQsIGFwcGx5IHBhc3MtMSBzZWxmLXJlZmVyZW5jaW5nIHRlbXBsYXRlXG4gKiByZXNvbHV0aW9uLCBhbmQgcHJpbnQgaXQgdG8gc3Rkb3V0LiBVc2VkIGJ5IGBzeW50aCAtLXNob3ctcmVzb2x2ZWRgXG4gKiBhbmQgYGRlcGxveSAtLXNob3ctcmVzb2x2ZWRgIHRvIHByZXZpZXcgc3Vic3RpdHV0aW9uIGJlZm9yZSBydW5uaW5nIENESy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2hvd1Jlc29sdmVkUGlwZWxpbmUoXG4gIHBpcGVsaW5lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogeyBwcm9maWxlPzogc3RyaW5nOyByZWdpb24/OiBzdHJpbmc7IHN0b3JlVG9rZW5zPzogYm9vbGVhbjsgdmVyaWZ5U3NsPzogYm9vbGVhbiB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghcGlwZWxpbmVJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignLS1zaG93LXJlc29sdmVkIHJlcXVpcmVzIC0taWQgb3IgUElQRUxJTkVfSUQgZW52IHZhcicpO1xuICB9XG4gIGF3YWl0IGZldGNoUGlwZWxpbmVDb25maWcocGlwZWxpbmVJZCwgb3B0aW9ucyk7XG4gIC8vIGZldGNoUGlwZWxpbmVDb25maWcgd3JpdGVzIFBJUEVMSU5FX1BST1BTIGJhc2U2NC1lbmNvZGVkIG9uIHN1Y2Nlc3NcbiAgY29uc3QgZW5jb2RlZCA9IHByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTO1xuICBpZiAoIWVuY29kZWQpIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGZldGNoIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24nKTtcbiAgY29uc3QgZGVjb2RlZCA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20oZW5jb2RlZCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGYtOCcpKTtcblxuICAvLyBMYXp5IGltcG9ydCB0byBhdm9pZCBwdWxsaW5nIHBpcGVsaW5lLWNvcmUgaW50byBldmVyeSBDTEkgaW52b2NhdGlvblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCB7IHJlc29sdmVTZWxmUmVmZXJlbmNpbmcgfSA9IHJlcXVpcmUoJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnKTtcbiAgY29uc3Qgc2NvcGUgPSB7IG1ldGFkYXRhOiBkZWNvZGVkLm1ldGFkYXRhID8/IHt9LCB2YXJzOiBkZWNvZGVkLnZhcnMgPz8ge30gfTtcbiAgY29uc3QgaXNUZW1wbGF0YWJsZSA9IChmOiBzdHJpbmcpID0+XG4gICAgZiA9PT0gJ3Byb2plY3ROYW1lJyB8fCBmLnN0YXJ0c1dpdGgoJ21ldGFkYXRhLicpIHx8IGYuc3RhcnRzV2l0aCgndmFycy4nKTtcbiAgY29uc3QgZmllbGRUb1Njb3BlID0gKGY6IHN0cmluZykgPT4gaXNUZW1wbGF0YWJsZShmKSA/IGYgOiBudWxsO1xuICBjb25zdCByZXN1bHQgPSByZXNvbHZlU2VsZlJlZmVyZW5jaW5nKGRlY29kZWQsIHNjb3BlLCBpc1RlbXBsYXRhYmxlLCBmaWVsZFRvU2NvcGUsICdwaXBlbGluZScpO1xuXG4gIGlmIChyZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1Jlc29sdXRpb24gZXJyb3JzOicpO1xuICAgIGZvciAoY29uc3QgZSBvZiByZXN1bHQuZXJyb3JzKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAgIFske2UuZmllbGQgPz8gJz8nfV0gJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkZWNvZGVkLCBudWxsLCAyKSk7XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { ApiClient } from './api-client';
2
+ /**
3
+ * Pre-resolve plugins by calling the same `POST /api/plugins/lookup` endpoint
4
+ * the deploy-time custom resource Lambda uses. Returning the full Plugin
5
+ * record at synth time is what allows the resulting CFN template to ship
6
+ * with real CodeBuild image URIs (`<host>/<imageTag>:latest`) rather than
7
+ * the `aws/codebuild/standard:7.0` fallback that the synth-time token path
8
+ * forces.
9
+ *
10
+ * Failures are non-fatal: a missing plugin or unreachable API logs a warning
11
+ * and falls through to the deploy-time custom resource path so partial
12
+ * platform outages don't block synth/deploy.
13
+ *
14
+ * Keyed by `alias || name` to match `PluginLookup.plugin()`.
15
+ */
16
+ export declare function resolvePluginsForProps(client: ApiClient, props: Record<string, unknown>): Promise<Record<string, unknown>>;
17
+ //# sourceMappingURL=plugin-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/plugin-resolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAoDzC;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8BlC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ // Copyright 2026 Pipeline Builder Contributors
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.resolvePluginsForProps = resolvePluginsForProps;
6
+ const output_utils_1 = require("./output-utils");
7
+ /**
8
+ * Cache key matching `PluginLookup.normalize()`: explicit alias when set,
9
+ * otherwise `${name}-alias`. Must stay in sync with the consumers in
10
+ * pipeline-core/plugin-lookup.ts and pipeline-builder.ts that read this map.
11
+ */
12
+ function cacheKey(ref) {
13
+ return ref.alias || `${ref.name}-alias`;
14
+ }
15
+ /**
16
+ * Walk the pipeline props tree to collect every plugin reference. Plugins
17
+ * appear at `synth.plugin` and at `stages[].steps[].plugin`. Entries are
18
+ * de-duplicated by `cacheKey()` — the same key `PluginLookup.plugin()` uses,
19
+ * so the resolved-plugins map lookups match downstream.
20
+ */
21
+ function collectPluginRefs(props) {
22
+ const refs = [];
23
+ const seen = new Set();
24
+ const push = (raw) => {
25
+ if (!raw || typeof raw !== 'object')
26
+ return;
27
+ const r = raw;
28
+ if (!r.name)
29
+ return;
30
+ const key = cacheKey(r);
31
+ if (seen.has(key))
32
+ return;
33
+ seen.add(key);
34
+ refs.push(r);
35
+ };
36
+ const synth = props.synth;
37
+ push(synth?.plugin);
38
+ const stages = props.stages;
39
+ for (const stage of stages ?? []) {
40
+ for (const step of stage.steps ?? []) {
41
+ push(step.plugin);
42
+ }
43
+ }
44
+ return refs;
45
+ }
46
+ /**
47
+ * Pre-resolve plugins by calling the same `POST /api/plugins/lookup` endpoint
48
+ * the deploy-time custom resource Lambda uses. Returning the full Plugin
49
+ * record at synth time is what allows the resulting CFN template to ship
50
+ * with real CodeBuild image URIs (`<host>/<imageTag>:latest`) rather than
51
+ * the `aws/codebuild/standard:7.0` fallback that the synth-time token path
52
+ * forces.
53
+ *
54
+ * Failures are non-fatal: a missing plugin or unreachable API logs a warning
55
+ * and falls through to the deploy-time custom resource path so partial
56
+ * platform outages don't block synth/deploy.
57
+ *
58
+ * Keyed by `alias || name` to match `PluginLookup.plugin()`.
59
+ */
60
+ async function resolvePluginsForProps(client, props) {
61
+ const refs = collectPluginRefs(props);
62
+ if (refs.length === 0)
63
+ return {};
64
+ const defaultFilter = (name) => ({ name, isActive: true, isDefault: true });
65
+ const resolved = {};
66
+ await Promise.all(refs.map(async (ref) => {
67
+ const key = cacheKey(ref);
68
+ const filter = ref.filter ?? defaultFilter(ref.name);
69
+ try {
70
+ const res = await client.post('/api/plugins/lookup', { filter });
71
+ // Lambda's handler calls `api.post<Plugin>(...)` and consumes the body
72
+ // directly; the platform may wrap it as `{ data: Plugin }` or
73
+ // `{ plugin: Plugin }` depending on the response middleware.
74
+ const plugin = res.plugin
75
+ ?? res.data
76
+ ?? res;
77
+ if (plugin && typeof plugin === 'object' && plugin.name) {
78
+ resolved[key] = plugin;
79
+ }
80
+ else {
81
+ (0, output_utils_1.printWarning)(`Plugin "${ref.name}" lookup returned no record — falling back to deploy-time resolution`);
82
+ }
83
+ }
84
+ catch (err) {
85
+ const msg = err instanceof Error ? err.message : String(err);
86
+ (0, output_utils_1.printWarning)(`Plugin "${ref.name}" pre-resolution failed (${msg}) — falling back to deploy-time resolution`);
87
+ }
88
+ }));
89
+ return resolved;
90
+ }
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BsdWdpbi1yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUFvRXRDLHdEQWlDQztBQWxHRCxpREFBOEM7QUFTOUM7Ozs7R0FJRztBQUNILFNBQVMsUUFBUSxDQUFDLEdBQWM7SUFDOUIsT0FBTyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDO0FBQzFDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsaUJBQWlCLENBQUMsS0FBOEI7SUFDdkQsTUFBTSxJQUFJLEdBQWdCLEVBQUUsQ0FBQztJQUM3QixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRS9CLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBWSxFQUFRLEVBQUU7UUFDbEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQUUsT0FBTztRQUM1QyxNQUFNLENBQUMsR0FBRyxHQUFnQixDQUFDO1FBQzNCLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDcEIsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQXlDLENBQUM7SUFDOUQsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVwQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBb0UsQ0FBQztJQUMxRixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNqQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLE1BQWlCLEVBQ2pCLEtBQThCO0lBRTlCLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFakMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRixNQUFNLFFBQVEsR0FBNEIsRUFBRSxDQUFDO0lBRTdDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUN2QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBVSxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDMUUsdUVBQXVFO1lBQ3ZFLDhEQUE4RDtZQUM5RCw2REFBNkQ7WUFDN0QsTUFBTSxNQUFNLEdBQUksR0FBNEIsQ0FBQyxNQUFNO21CQUM3QyxHQUEwQixDQUFDLElBQUk7bUJBQ2hDLEdBQUcsQ0FBQztZQUNULElBQUksTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSyxNQUE0QixDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMvRSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFBLDJCQUFZLEVBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxzRUFBc0UsQ0FBQyxDQUFDO1lBQzFHLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE1BQU0sR0FBRyxHQUFHLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3RCxJQUFBLDJCQUFZLEVBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSw0QkFBNEIsR0FBRyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQy9HLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRUosT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBBcGlDbGllbnQgfSBmcm9tICcuL2FwaS1jbGllbnQnO1xuaW1wb3J0IHsgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMnO1xuXG4vKiogTWluaW1hbCBwbHVnaW4gcmVmZXJlbmNlIHNoYXBlIOKAlCBtYXRjaGVzIFBsdWdpbk9wdGlvbnMgZnJvbSBwaXBlbGluZS1jb3JlLiAqL1xuaW50ZXJmYWNlIFBsdWdpblJlZiB7XG4gIG5hbWU6IHN0cmluZztcbiAgYWxpYXM/OiBzdHJpbmc7XG4gIGZpbHRlcj86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIENhY2hlIGtleSBtYXRjaGluZyBgUGx1Z2luTG9va3VwLm5vcm1hbGl6ZSgpYDogZXhwbGljaXQgYWxpYXMgd2hlbiBzZXQsXG4gKiBvdGhlcndpc2UgYCR7bmFtZX0tYWxpYXNgLiBNdXN0IHN0YXkgaW4gc3luYyB3aXRoIHRoZSBjb25zdW1lcnMgaW5cbiAqIHBpcGVsaW5lLWNvcmUvcGx1Z2luLWxvb2t1cC50cyBhbmQgcGlwZWxpbmUtYnVpbGRlci50cyB0aGF0IHJlYWQgdGhpcyBtYXAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlS2V5KHJlZjogUGx1Z2luUmVmKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlZi5hbGlhcyB8fCBgJHtyZWYubmFtZX0tYWxpYXNgO1xufVxuXG4vKipcbiAqIFdhbGsgdGhlIHBpcGVsaW5lIHByb3BzIHRyZWUgdG8gY29sbGVjdCBldmVyeSBwbHVnaW4gcmVmZXJlbmNlLiBQbHVnaW5zXG4gKiBhcHBlYXIgYXQgYHN5bnRoLnBsdWdpbmAgYW5kIGF0IGBzdGFnZXNbXS5zdGVwc1tdLnBsdWdpbmAuIEVudHJpZXMgYXJlXG4gKiBkZS1kdXBsaWNhdGVkIGJ5IGBjYWNoZUtleSgpYCDigJQgdGhlIHNhbWUga2V5IGBQbHVnaW5Mb29rdXAucGx1Z2luKClgIHVzZXMsXG4gKiBzbyB0aGUgcmVzb2x2ZWQtcGx1Z2lucyBtYXAgbG9va3VwcyBtYXRjaCBkb3duc3RyZWFtLlxuICovXG5mdW5jdGlvbiBjb2xsZWN0UGx1Z2luUmVmcyhwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQbHVnaW5SZWZbXSB7XG4gIGNvbnN0IHJlZnM6IFBsdWdpblJlZltdID0gW107XG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBjb25zdCBwdXNoID0gKHJhdzogdW5rbm93bik6IHZvaWQgPT4ge1xuICAgIGlmICghcmF3IHx8IHR5cGVvZiByYXcgIT09ICdvYmplY3QnKSByZXR1cm47XG4gICAgY29uc3QgciA9IHJhdyBhcyBQbHVnaW5SZWY7XG4gICAgaWYgKCFyLm5hbWUpIHJldHVybjtcbiAgICBjb25zdCBrZXkgPSBjYWNoZUtleShyKTtcbiAgICBpZiAoc2Vlbi5oYXMoa2V5KSkgcmV0dXJuO1xuICAgIHNlZW4uYWRkKGtleSk7XG4gICAgcmVmcy5wdXNoKHIpO1xuICB9O1xuXG4gIGNvbnN0IHN5bnRoID0gcHJvcHMuc3ludGggYXMgeyBwbHVnaW4/OiB1bmtub3duIH0gfCB1bmRlZmluZWQ7XG4gIHB1c2goc3ludGg/LnBsdWdpbik7XG5cbiAgY29uc3Qgc3RhZ2VzID0gcHJvcHMuc3RhZ2VzIGFzIEFycmF5PHsgc3RlcHM/OiBBcnJheTx7IHBsdWdpbj86IHVua25vd24gfT4gfT4gfCB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygc3RhZ2VzID8/IFtdKSB7XG4gICAgZm9yIChjb25zdCBzdGVwIG9mIHN0YWdlLnN0ZXBzID8/IFtdKSB7XG4gICAgICBwdXNoKHN0ZXAucGx1Z2luKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVmcztcbn1cblxuLyoqXG4gKiBQcmUtcmVzb2x2ZSBwbHVnaW5zIGJ5IGNhbGxpbmcgdGhlIHNhbWUgYFBPU1QgL2FwaS9wbHVnaW5zL2xvb2t1cGAgZW5kcG9pbnRcbiAqIHRoZSBkZXBsb3ktdGltZSBjdXN0b20gcmVzb3VyY2UgTGFtYmRhIHVzZXMuIFJldHVybmluZyB0aGUgZnVsbCBQbHVnaW5cbiAqIHJlY29yZCBhdCBzeW50aCB0aW1lIGlzIHdoYXQgYWxsb3dzIHRoZSByZXN1bHRpbmcgQ0ZOIHRlbXBsYXRlIHRvIHNoaXBcbiAqIHdpdGggcmVhbCBDb2RlQnVpbGQgaW1hZ2UgVVJJcyAoYDxob3N0Pi88aW1hZ2VUYWc+OmxhdGVzdGApIHJhdGhlciB0aGFuXG4gKiB0aGUgYGF3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6Ny4wYCBmYWxsYmFjayB0aGF0IHRoZSBzeW50aC10aW1lIHRva2VuIHBhdGhcbiAqIGZvcmNlcy5cbiAqXG4gKiBGYWlsdXJlcyBhcmUgbm9uLWZhdGFsOiBhIG1pc3NpbmcgcGx1Z2luIG9yIHVucmVhY2hhYmxlIEFQSSBsb2dzIGEgd2FybmluZ1xuICogYW5kIGZhbGxzIHRocm91Z2ggdG8gdGhlIGRlcGxveS10aW1lIGN1c3RvbSByZXNvdXJjZSBwYXRoIHNvIHBhcnRpYWxcbiAqIHBsYXRmb3JtIG91dGFnZXMgZG9uJ3QgYmxvY2sgc3ludGgvZGVwbG95LlxuICpcbiAqIEtleWVkIGJ5IGBhbGlhcyB8fCBuYW1lYCB0byBtYXRjaCBgUGx1Z2luTG9va3VwLnBsdWdpbigpYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVQbHVnaW5zRm9yUHJvcHMoXG4gIGNsaWVudDogQXBpQ2xpZW50LFxuICBwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGNvbnN0IHJlZnMgPSBjb2xsZWN0UGx1Z2luUmVmcyhwcm9wcyk7XG4gIGlmIChyZWZzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGRlZmF1bHRGaWx0ZXIgPSAobmFtZTogc3RyaW5nKSA9PiAoeyBuYW1lLCBpc0FjdGl2ZTogdHJ1ZSwgaXNEZWZhdWx0OiB0cnVlIH0pO1xuICBjb25zdCByZXNvbHZlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChyZWZzLm1hcChhc3luYyAocmVmKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gY2FjaGVLZXkocmVmKTtcbiAgICBjb25zdCBmaWx0ZXIgPSByZWYuZmlsdGVyID8/IGRlZmF1bHRGaWx0ZXIocmVmLm5hbWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBjbGllbnQucG9zdDx1bmtub3duPignL2FwaS9wbHVnaW5zL2xvb2t1cCcsIHsgZmlsdGVyIH0pO1xuICAgICAgLy8gTGFtYmRhJ3MgaGFuZGxlciBjYWxscyBgYXBpLnBvc3Q8UGx1Z2luPiguLi4pYCBhbmQgY29uc3VtZXMgdGhlIGJvZHlcbiAgICAgIC8vIGRpcmVjdGx5OyB0aGUgcGxhdGZvcm0gbWF5IHdyYXAgaXQgYXMgYHsgZGF0YTogUGx1Z2luIH1gIG9yXG4gICAgICAvLyBgeyBwbHVnaW46IFBsdWdpbiB9YCBkZXBlbmRpbmcgb24gdGhlIHJlc3BvbnNlIG1pZGRsZXdhcmUuXG4gICAgICBjb25zdCBwbHVnaW4gPSAocmVzIGFzIHsgcGx1Z2luPzogdW5rbm93biB9KS5wbHVnaW5cbiAgICAgICAgPz8gKHJlcyBhcyB7IGRhdGE/OiB1bmtub3duIH0pLmRhdGFcbiAgICAgICAgPz8gcmVzO1xuICAgICAgaWYgKHBsdWdpbiAmJiB0eXBlb2YgcGx1Z2luID09PSAnb2JqZWN0JyAmJiAocGx1Z2luIGFzIHsgbmFtZT86IHN0cmluZyB9KS5uYW1lKSB7XG4gICAgICAgIHJlc29sdmVkW2tleV0gPSBwbHVnaW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmludFdhcm5pbmcoYFBsdWdpbiBcIiR7cmVmLm5hbWV9XCIgbG9va3VwIHJldHVybmVkIG5vIHJlY29yZCDigJQgZmFsbGluZyBiYWNrIHRvIGRlcGxveS10aW1lIHJlc29sdXRpb25gKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IG1zZyA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcbiAgICAgIHByaW50V2FybmluZyhgUGx1Z2luIFwiJHtyZWYubmFtZX1cIiBwcmUtcmVzb2x1dGlvbiBmYWlsZWQgKCR7bXNnfSkg4oCUIGZhbGxpbmcgYmFjayB0byBkZXBsb3ktdGltZSByZXNvbHV0aW9uYCk7XG4gICAgfVxuICB9KSk7XG5cbiAgcmV0dXJuIHJlc29sdmVkO1xufVxuIl19
@@ -41,8 +41,6 @@ export interface PipelineForRegistry {
41
41
  project: string;
42
42
  organization: string;
43
43
  }
44
- /** Where pending registration intents are persisted between CLI invocations. */
45
- export declare const PENDING_INTENTS_DIR: string;
46
44
  /**
47
45
  * Build a RegistryPayload from the platform's pipeline metadata. Reaches out
48
46
  * to STS to discover the AWS account, hashes it, and constructs the ARN.
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,QAAgE,CAAC;AAEjG;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,mBAAmB,EAC7B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC,CA8B1B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAKlF;AAED,wDAAwD;AACxD,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ1E;AAED,oFAAoF;AACpF,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAqBrE"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,mBAAmB,EAC7B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC,CA8B1B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAKlF;AAED,wDAAwD;AACxD,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ1E;AAED,oFAAoF;AACpF,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAqBrE"}
@@ -2,7 +2,6 @@
2
2
  // Copyright 2026 Pipeline Builder Contributors
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.PENDING_INTENTS_DIR = void 0;
6
5
  exports.buildRegistryPayload = buildRegistryPayload;
7
6
  exports.writePendingIntent = writePendingIntent;
8
7
  exports.clearPendingIntent = clearPendingIntent;
@@ -13,7 +12,7 @@ const os_1 = require("os");
13
12
  const path_1 = require("path");
14
13
  const client_sts_1 = require("@aws-sdk/client-sts");
15
14
  /** Where pending registration intents are persisted between CLI invocations. */
16
- exports.PENDING_INTENTS_DIR = (0, path_1.join)((0, os_1.homedir)(), '.pipeline-manager', 'pending-registrations');
15
+ const PENDING_INTENTS_DIR = (0, path_1.join)((0, os_1.homedir)(), '.pipeline-manager', 'pending-registrations');
17
16
  /**
18
17
  * Build a RegistryPayload from the platform's pipeline metadata. Reaches out
19
18
  * to STS to discover the AWS account, hashes it, and constructs the ARN.
@@ -58,14 +57,14 @@ async function buildRegistryPayload(pipeline, regionOverride) {
58
57
  * safe to leave around indefinitely.
59
58
  */
60
59
  async function writePendingIntent(payload) {
61
- await fs_1.promises.mkdir(exports.PENDING_INTENTS_DIR, { recursive: true });
62
- const path = (0, path_1.join)(exports.PENDING_INTENTS_DIR, `${payload.pipelineId}.json`);
60
+ await fs_1.promises.mkdir(PENDING_INTENTS_DIR, { recursive: true });
61
+ const path = (0, path_1.join)(PENDING_INTENTS_DIR, `${payload.pipelineId}.json`);
63
62
  await fs_1.promises.writeFile(path, JSON.stringify(payload, null, 2), 'utf8');
64
63
  return path;
65
64
  }
66
65
  /** Remove a pending intent after a successful drain. */
67
66
  async function clearPendingIntent(pipelineId) {
68
- const path = (0, path_1.join)(exports.PENDING_INTENTS_DIR, `${pipelineId}.json`);
67
+ const path = (0, path_1.join)(PENDING_INTENTS_DIR, `${pipelineId}.json`);
69
68
  try {
70
69
  await fs_1.promises.unlink(path);
71
70
  }
@@ -79,7 +78,7 @@ async function clearPendingIntent(pipelineId) {
79
78
  async function readPendingIntents() {
80
79
  let entries;
81
80
  try {
82
- entries = await fs_1.promises.readdir(exports.PENDING_INTENTS_DIR);
81
+ entries = await fs_1.promises.readdir(PENDING_INTENTS_DIR);
83
82
  }
84
83
  catch (err) {
85
84
  if (err.code === 'ENOENT')
@@ -91,7 +90,7 @@ async function readPendingIntents() {
91
90
  if (!file.endsWith('.json'))
92
91
  continue;
93
92
  try {
94
- const text = await fs_1.promises.readFile((0, path_1.join)(exports.PENDING_INTENTS_DIR, file), 'utf8');
93
+ const text = await fs_1.promises.readFile((0, path_1.join)(PENDING_INTENTS_DIR, file), 'utf8');
95
94
  intents.push(JSON.parse(text));
96
95
  }
97
96
  catch {
@@ -101,4 +100,4 @@ async function readPendingIntents() {
101
100
  }
102
101
  return intents;
103
102
  }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7OztBQWdFdEMsb0RBaUNDO0FBVUQsZ0RBS0M7QUFHRCxnREFRQztBQUdELGdEQXFCQztBQWpKRCxtQ0FBb0M7QUFDcEMsMkJBQW9DO0FBQ3BDLDJCQUE2QjtBQUM3QiwrQkFBNEI7QUFDNUIsb0RBQTBFO0FBZ0QxRSxnRkFBZ0Y7QUFDbkUsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLFdBQUksRUFBQyxJQUFBLFlBQU8sR0FBRSxFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFFakc7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLG9CQUFvQixDQUN4QyxRQUE2QixFQUM3QixjQUF1QjtJQUV2QixNQUFNLE1BQU0sR0FBRyxjQUFjO1dBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVTtXQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtXQUM5QixXQUFXLENBQUM7SUFFakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxzQkFBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxxQ0FBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsSUFBQSxtQkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFD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QUNILENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnb3MnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgU1RTQ2xpZW50LCBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3RzJztcblxuLyoqXG4gKiBIZWxwZXJzIGZvciByZWdpc3RlcmluZyBhIGRlcGxveWVkIHBpcGVsaW5lIEFSTiB3aXRoIHRoZSBwbGF0Zm9ybS5cbiAqXG4gKiBUaGUgcmVnaXN0cnkgdGFibGUgbWFwcyBkZXBsb3llZCBDb2RlUGlwZWxpbmUgQVJOcyBiYWNrIHRvIHBpcGVsaW5lIHJlY29yZHNcbiAqIGFuZCBvcmdzLiBJdCdzIGhvdyB0aGUgZGFzaGJvYXJkJ3MgXCJEZXBsb3llZCBwaXBlbGluZXNcIiBwYW5lbCBhbmQgdGhlIGV2ZW50XG4gKiByZXBvcnRpbmcgTGFtYmRhIHJlc29sdmUgaW5jb21pbmcgZXZlbnRzIHRvIGEgcGlwZWxpbmUgZGVmaW5pdGlvbi5cbiAqXG4gKiBUd28gZmFpbHVyZSBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlOlxuICpcbiAqICAgMS4gUGxhdGZvcm0gdW5yZWFjaGFibGUgYXQgZGVwbG95IHRpbWUuIFRoZSBDREsgc3RhY2sgbGFuZHMgaW4gQVdTIGJ1dCB0aGVcbiAqICAgICAgcmVnaXN0cnkgUE9TVCBmYWlscy4gV2l0aG91dCByZXRyeSB0aGUgZGVwbG95IGNvbW1hbmQgd291bGQgaGF2ZSB0b1xuICogICAgICByZS1ydW4gY2RrLWRlcGxveSAoc2xvdywgc29tZXRpbWVzIGJsb2NrZWQgYnkgc3RhY2sgc3RhdGUpIGp1c3QgdG9cbiAqICAgICAgcmVjb3JkIHRoZSBBUk4uIEluc3RlYWQsIHdlIHdyaXRlIGEgcGVuZGluZyBpbnRlbnQgdG8gYSBsb2NhbCBmaWxlO1xuICogICAgICBgcGlwZWxpbmUtbWFuYWdlciByZWdpc3RlcmAgZHJhaW5zIHRoZW0uXG4gKlxuICogICAyLiBVc2VyIGV4cGxpY2l0bHkgaW52b2tlcyBgcGlwZWxpbmUtbWFuYWdlciByZWdpc3RlciAtLWlkIDxwaXBlbGluZUlkPmBcbiAqICAgICAgYWZ0ZXIgYSBzdWNjZXNzZnVsIGRlcGxveSB0aGF0IGRpZG4ndCByZWdpc3Rlci4gU2FtZSBwYXRoOiByZWJ1aWxkc1xuICogICAgICB0aGUgQVJOIGZyb20gU1RTLCBQT1NUcyB0byB0aGUgcGxhdGZvcm0uXG4gKlxuICogUGVuZGluZyBpbnRlbnRzIHN0b3JlIE9OTFkgdGhlIHJlZ2lzdHJhdGlvbiBwYXlsb2FkIOKAlCBuZXZlciB0b2tlbnMgb3IgVVJMcy5cbiAqIEF1dGggaXMgc3VwcGxpZWQgYnkgd2hpY2hldmVyIGNvbW1hbmQgZHJhaW5zIHRoZSBpbnRlbnQgKGRlcGxveSBvciByZWdpc3RlciksXG4gKiBzbyBhIHN0YWxlIGludGVudCBmaWxlIGlzIG5ldmVyIGFuIGF1dGhlbnRpY2F0aW9uIHJpc2suXG4gKi9cblxuLyoqIFNoYXBlIG9mIHRoZSBib2R5IFBPU1RlZCB0byAvYXBpL3BpcGVsaW5lcy9yZWdpc3RyeS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0cnlQYXlsb2FkIHtcbiAgcGlwZWxpbmVJZDogc3RyaW5nO1xuICBvcmdJZDogc3RyaW5nO1xuICBwaXBlbGluZUFybjogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU6IHN0cmluZztcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICBwcm9qZWN0OiBzdHJpbmc7XG4gIG9yZ2FuaXphdGlvbjogc3RyaW5nO1xuICBzdGFja05hbWU6IHN0cmluZztcbn1cblxuLyoqIFBpcGVsaW5lIGZpZWxkcyBuZWVkZWQgdG8gY29uc3RydWN0IGEgUmVnaXN0cnlQYXlsb2FkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUZvclJlZ2lzdHJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgb3JnSWQ6IHN0cmluZztcbiAgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuICBwcm9qZWN0OiBzdHJpbmc7XG4gIG9yZ2FuaXphdGlvbjogc3RyaW5nO1xufVxuXG4vKiogV2hlcmUgcGVuZGluZyByZWdpc3RyYXRpb24gaW50ZW50cyBhcmUgcGVyc2lzdGVkIGJldHdlZW4gQ0xJIGludm9jYXRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IFBFTkRJTkdfSU5URU5UU19ESVIgPSBqb2luKGhvbWVkaXIoKSwgJy5waXBlbGluZS1tYW5hZ2VyJywgJ3BlbmRpbmctcmVnaXN0cmF0aW9ucycpO1xuXG4vKipcbiAqIEJ1aWxkIGEgUmVnaXN0cnlQYXlsb2FkIGZyb20gdGhlIHBsYXRmb3JtJ3MgcGlwZWxpbmUgbWV0YWRhdGEuIFJlYWNoZXMgb3V0XG4gKiB0byBTVFMgdG8gZGlzY292ZXIgdGhlIEFXUyBhY2NvdW50LCBoYXNoZXMgaXQsIGFuZCBjb25zdHJ1Y3RzIHRoZSBBUk4uXG4gKlxuICogVGhlIGhhc2ggaXMgdGhlIHNhbWUgb25lIGFwcGxpZWQgc2VydmVyLXNpZGUgYXMgZGVmZW5zZSBpbiBkZXB0aCDigJQgcmF3IEFXU1xuICogYWNjb3VudCBudW1iZXJzIG11c3QgbmV2ZXIgcmVhY2ggdGhlIHBsYXRmb3JtIERCLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRSZWdpc3RyeVBheWxvYWQoXG4gIHBpcGVsaW5lOiBQaXBlbGluZUZvclJlZ2lzdHJ5LFxuICByZWdpb25PdmVycmlkZT86IHN0cmluZyxcbik6IFByb21pc2U8UmVnaXN0cnlQYXlsb2FkPiB7XG4gIGNvbnN0IHJlZ2lvbiA9IHJlZ2lvbk92ZXJyaWRlXG4gICAgfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTlxuICAgIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTlxuICAgIHx8ICd1cy1lYXN0LTEnO1xuXG4gIGNvbnN0IHN0c0NsaWVudCA9IG5ldyBTVFNDbGllbnQoeyByZWdpb24gfSk7XG4gIGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgc3RzQ2xpZW50LnNlbmQobmV3IEdldENhbGxlcklkZW50aXR5Q29tbWFuZCh7fSkpO1xuICBjb25zdCBhY2NvdW50ID0gaWRlbnRpdHkuQWNjb3VudCA/PyAnJztcbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZGV0ZXJtaW5lIEFXUyBhY2NvdW50IGZyb20gU1RTIOKAlCBjaGVjayBBV1MgY3JlZGVudGlhbHMnKTtcbiAgfVxuXG4gIGNvbnN0IGhhc2hlZEFjY291bnQgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYWNjb3VudCkuZGlnZXN0KCdoZXgnKS5zbGljZSgwLCAxMik7XG4gIGNvbnN0IHBpcGVsaW5lTmFtZSA9IHBpcGVsaW5lLnBpcGVsaW5lTmFtZVxuICAgIHx8IGAke3BpcGVsaW5lLm9yZ2FuaXphdGlvbn0tJHtwaXBlbGluZS5wcm9qZWN0fS1waXBlbGluZWAudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgcGlwZWxpbmVBcm4gPSBgYXJuOmF3czpjb2RlcGlwZWxpbmU6JHtyZWdpb259OiR7aGFzaGVkQWNjb3VudH06JHtwaXBlbGluZU5hbWV9YDtcbiAgY29uc3Qgc3RhY2tOYW1lID0gYCR7cGlwZWxpbmUucHJvamVjdH0tJHtwaXBlbGluZS5vcmdhbml6YXRpb259YC50b0xvd2VyQ2FzZSgpO1xuXG4gIHJldHVybiB7XG4gICAgcGlwZWxpbmVJZDogcGlwZWxpbmUuaWQsXG4gICAgb3JnSWQ6IHBpcGVsaW5lLm9yZ0lkLFxuICAgIHBpcGVsaW5lQXJuLFxuICAgIHBpcGVsaW5lTmFtZSxcbiAgICBhY2NvdW50SWQ6IGhhc2hlZEFjY291bnQsXG4gICAgcmVnaW9uLFxuICAgIHByb2plY3Q6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgb3JnYW5pemF0aW9uOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgc3RhY2tOYW1lLFxuICB9O1xufVxuXG4vKipcbiAqIFBlcnNpc3QgYSByZWdpc3RyYXRpb24gaW50ZW50IGZvciBsYXRlciByZXRyeS5cbiAqXG4gKiBJbnRlbnQgZmlsZXMgYXJlIGtleWVkIGJ5IHBpcGVsaW5lSWQgc28gcmUtcnVubmluZyBkZXBsb3kgb24gdGhlIHNhbWVcbiAqIHBpcGVsaW5lIG92ZXJ3cml0ZXMgcmF0aGVyIHRoYW4gYWNjdW11bGF0ZXMuIFdlIGRlbGliZXJhdGVseSBzdG9yZSB0aGVcbiAqIHBheWxvYWQgcGxhaW4gKG5vdCB0aGUgZnVsbCBwaXBlbGluZSBkb2MsIG5vdCBhdXRoKSBzbyBhIHN0YWxlIGZpbGUgaXNcbiAqIHNhZmUgdG8gbGVhdmUgYXJvdW5kIGluZGVmaW5pdGVseS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlUGVuZGluZ0ludGVudChwYXlsb2FkOiBSZWdpc3RyeVBheWxvYWQpOiBQcm9taXNlPHN0cmluZz4ge1xuICBhd2FpdCBmcy5ta2RpcihQRU5ESU5HX0lOVEVOVFNfRElSLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgY29uc3QgcGF0aCA9IGpvaW4oUEVORElOR19JTlRFTlRTX0RJUiwgYCR7cGF5bG9hZC5waXBlbGluZUlkfS5qc29uYCk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLCBKU09OLnN0cmluZ2lmeShwYXlsb2FkLCBudWxsLCAyKSwgJ3V0ZjgnKTtcbiAgcmV0dXJuIHBhdGg7XG59XG5cbi8qKiBSZW1vdmUgYSBwZW5kaW5nIGludGVudCBhZnRlciBhIHN1Y2Nlc3NmdWwgZHJhaW4uICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xlYXJQZW5kaW5nSW50ZW50KHBpcGVsaW5lSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwYXRoID0gam9pbihQRU5ESU5HX0lOVEVOVFNfRElSLCBgJHtwaXBlbGluZUlkfS5qc29uYCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMudW5saW5rKHBhdGgpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBFTk9FTlQgaXMgZmluZSDigJQgYWxyZWFkeSBjbGVhcmVkLiBBbnl0aGluZyBlbHNlIGlzIGEgcmVhbCBwcm9ibGVtLlxuICAgIGlmICgoZXJyIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSAhPT0gJ0VOT0VOVCcpIHRocm93IGVycjtcbiAgfVxufVxuXG4vKiogUmVhZCBhbGwgcGVuZGluZyBpbnRlbnRzIGN1cnJlbnRseSBvbiBkaXNrLiBFbXB0eSBhcnJheSBpZiBkaXIgZG9lc24ndCBleGlzdC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUGVuZGluZ0ludGVudHMoKTogUHJvbWlzZTxSZWdpc3RyeVBheWxvYWRbXT4ge1xuICBsZXQgZW50cmllczogc3RyaW5nW107XG4gIHRyeSB7XG4gICAgZW50cmllcyA9IGF3YWl0IGZzLnJlYWRkaXIoUEVORElOR19JTlRFTlRTX0RJUik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICgoZXJyIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSA9PT0gJ0VOT0VOVCcpIHJldHVybiBbXTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICBjb25zdCBpbnRlbnRzOiBSZWdpc3RyeVBheWxvYWRbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGZpbGUgb2YgZW50cmllcykge1xuICAgIGlmICghZmlsZS5lbmRzV2l0aCgnLmpzb24nKSkgY29udGludWU7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBmcy5yZWFkRmlsZShqb2luKFBFTkRJTkdfSU5URU5UU19ESVIsIGZpbGUpLCAndXRmOCcpO1xuICAgICAgaW50ZW50cy5wdXNoKEpTT04ucGFyc2UodGV4dCkgYXMgUmVnaXN0cnlQYXlsb2FkKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFNraXAgdW5yZWFkYWJsZSAvIG1hbGZvcm1lZCBmaWxlcyDigJQgdGhleSdsbCBuZWVkIG1hbnVhbCBjbGVhbnVwIGJ1dFxuICAgICAgLy8gc2hvdWxkbid0IGJsb2NrIHZhbGlkIGludGVudHMgZnJvbSBkcmFpbmluZy5cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGludGVudHM7XG59XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBZ0V0QyxvREFpQ0M7QUFVRCxnREFLQztBQUdELGdEQVFDO0FBR0QsZ0RBcUJDO0FBakpELG1DQUFvQztBQUNwQywyQkFBb0M7QUFDcEMsMkJBQTZCO0FBQzdCLCtCQUE0QjtBQUM1QixvREFBMEU7QUFnRDFFLGdGQUFnRjtBQUNoRixNQUFNLG1CQUFtQixHQUFHLElBQUEsV0FBSSxFQUFDLElBQUEsWUFBTyxHQUFFLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztBQUUxRjs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLFFBQTZCLEVBQzdCLGNBQXVCO0lBRXZCLE1BQU0sTUFBTSxHQUFHLGNBQWM7V0FDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVO1dBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCO1dBQzlCLFdBQVcsQ0FBQztJQUVqQixNQUFNLFNBQVMsR0FBRyxJQUFJLHNCQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLHFDQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDdkMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFBLG1CQUFVLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMs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Q0gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBTVFNDbGllbnQsIEdldENhbGxlcklkZW50aXR5Q29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zdHMnO1xuXG4vKipcbiAqIEhlbHBlcnMgZm9yIHJlZ2lzdGVyaW5nIGEgZGVwbG95ZWQgcGlwZWxpbmUgQVJOIHdpdGggdGhlIHBsYXRmb3JtLlxuICpcbiAqIFRoZSByZWdpc3RyeSB0YWJsZSBtYXBzIGRlcGxveWVkIENvZGVQaXBlbGluZSBBUk5zIGJhY2sgdG8gcGlwZWxpbmUgcmVjb3Jkc1xuICogYW5kIG9yZ3MuIEl0J3MgaG93IHRoZSBkYXNoYm9hcmQncyBcIkRlcGxveWVkIHBpcGVsaW5lc1wiIHBhbmVsIGFuZCB0aGUgZXZlbnRcbiAqIHJlcG9ydGluZyBMYW1iZGEgcmVzb2x2ZSBpbmNvbWluZyBldmVudHMgdG8gYSBwaXBlbGluZSBkZWZpbml0aW9uLlxuICpcbiAqIFR3byBmYWlsdXJlIG1vZGVzIGFyZSBoYW5kbGVkIGhlcmU6XG4gKlxuICogICAxLiBQbGF0Zm9ybSB1bnJlYWNoYWJsZSBhdCBkZXBsb3kgdGltZS4gVGhlIENESyBzdGFjayBsYW5kcyBpbiBBV1MgYnV0IHRoZVxuICogICAgICByZWdpc3RyeSBQT1NUIGZhaWxzLiBXaXRob3V0IHJldHJ5IHRoZSBkZXBsb3kgY29tbWFuZCB3b3VsZCBoYXZlIHRvXG4gKiAgICAgIHJlLXJ1biBjZGstZGVwbG95IChzbG93LCBzb21ldGltZXMgYmxvY2tlZCBieSBzdGFjayBzdGF0ZSkganVzdCB0b1xuICogICAgICByZWNvcmQgdGhlIEFSTi4gSW5zdGVhZCwgd2Ugd3JpdGUgYSBwZW5kaW5nIGludGVudCB0byBhIGxvY2FsIGZpbGU7XG4gKiAgICAgIGBwaXBlbGluZS1tYW5hZ2VyIHJlZ2lzdGVyYCBkcmFpbnMgdGhlbS5cbiAqXG4gKiAgIDIuIFVzZXIgZXhwbGljaXRseSBpbnZva2VzIGBwaXBlbGluZS1tYW5hZ2VyIHJlZ2lzdGVyIC0taWQgPHBpcGVsaW5lSWQ+YFxuICogICAgICBhZnRlciBhIHN1Y2Nlc3NmdWwgZGVwbG95IHRoYXQgZGlkbid0IHJlZ2lzdGVyLiBTYW1lIHBhdGg6IHJlYnVpbGRzXG4gKiAgICAgIHRoZSBBUk4gZnJvbSBTVFMsIFBPU1RzIHRvIHRoZSBwbGF0Zm9ybS5cbiAqXG4gKiBQZW5kaW5nIGludGVudHMgc3RvcmUgT05MWSB0aGUgcmVnaXN0cmF0aW9uIHBheWxvYWQg4oCUIG5ldmVyIHRva2VucyBvciBVUkxzLlxuICogQXV0aCBpcyBzdXBwbGllZCBieSB3aGljaGV2ZXIgY29tbWFuZCBkcmFpbnMgdGhlIGludGVudCAoZGVwbG95IG9yIHJlZ2lzdGVyKSxcbiAqIHNvIGEgc3RhbGUgaW50ZW50IGZpbGUgaXMgbmV2ZXIgYW4gYXV0aGVudGljYXRpb24gcmlzay5cbiAqL1xuXG4vKiogU2hhcGUgb2YgdGhlIGJvZHkgUE9TVGVkIHRvIC9hcGkvcGlwZWxpbmVzL3JlZ2lzdHJ5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeVBheWxvYWQge1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIHBpcGVsaW5lQXJuOiBzdHJpbmc7XG4gIHBpcGVsaW5lTmFtZTogc3RyaW5nO1xuICBhY2NvdW50SWQ6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHByb2plY3Q6IHN0cmluZztcbiAgb3JnYW5pemF0aW9uOiBzdHJpbmc7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xufVxuXG4vKiogUGlwZWxpbmUgZmllbGRzIG5lZWRlZCB0byBjb25zdHJ1Y3QgYSBSZWdpc3RyeVBheWxvYWQuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lRm9yUmVnaXN0cnkge1xuICBpZDogc3RyaW5nO1xuICBvcmdJZDogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU/OiBzdHJpbmc7XG4gIHByb2plY3Q6IHN0cmluZztcbiAgb3JnYW5pemF0aW9uOiBzdHJpbmc7XG59XG5cbi8qKiBXaGVyZSBwZW5kaW5nIHJlZ2lzdHJhdGlvbiBpbnRlbnRzIGFyZSBwZXJzaXN0ZWQgYmV0d2VlbiBDTEkgaW52b2NhdGlvbnMuICovXG5jb25zdCBQRU5ESU5HX0lOVEVOVFNfRElSID0gam9pbihob21lZGlyKCksICcucGlwZWxpbmUtbWFuYWdlcicsICdwZW5kaW5nLXJlZ2lzdHJhdGlvbnMnKTtcblxuLyoqXG4gKiBCdWlsZCBhIFJlZ2lzdHJ5UGF5bG9hZCBmcm9tIHRoZSBwbGF0Zm9ybSdzIHBpcGVsaW5lIG1ldGFkYXRhLiBSZWFjaGVzIG91dFxuICogdG8gU1RTIHRvIGRpc2NvdmVyIHRoZSBBV1MgYWNjb3VudCwgaGFzaGVzIGl0LCBhbmQgY29uc3RydWN0cyB0aGUgQVJOLlxuICpcbiAqIFRoZSBoYXNoIGlzIHRoZSBzYW1lIG9uZSBhcHBsaWVkIHNlcnZlci1zaWRlIGFzIGRlZmVuc2UgaW4gZGVwdGgg4oCUIHJhdyBBV1NcbiAqIGFjY291bnQgbnVtYmVycyBtdXN0IG5ldmVyIHJlYWNoIHRoZSBwbGF0Zm9ybSBEQi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkUmVnaXN0cnlQYXlsb2FkKFxuICBwaXBlbGluZTogUGlwZWxpbmVGb3JSZWdpc3RyeSxcbiAgcmVnaW9uT3ZlcnJpZGU/OiBzdHJpbmcsXG4pOiBQcm9taXNlPFJlZ2lzdHJ5UGF5bG9hZD4ge1xuICBjb25zdCByZWdpb24gPSByZWdpb25PdmVycmlkZVxuICAgIHx8IHByb2Nlc3MuZW52LkFXU19SRUdJT05cbiAgICB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT05cbiAgICB8fCAndXMtZWFzdC0xJztcblxuICBjb25zdCBzdHNDbGllbnQgPSBuZXcgU1RTQ2xpZW50KHsgcmVnaW9uIH0pO1xuICBjb25zdCBpZGVudGl0eSA9IGF3YWl0IHN0c0NsaWVudC5zZW5kKG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoe30pKTtcbiAgY29uc3QgYWNjb3VudCA9IGlkZW50aXR5LkFjY291bnQgPz8gJyc7XG4gIGlmICghYWNjb3VudCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGRldGVybWluZSBBV1MgYWNjb3VudCBmcm9tIFNUUyDigJQgY2hlY2sgQVdTIGNyZWRlbnRpYWxzJyk7XG4gIH1cblxuICBjb25zdCBoYXNoZWRBY2NvdW50ID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGFjY291bnQpLmRpZ2VzdCgnaGV4Jykuc2xpY2UoMCwgMTIpO1xuICBjb25zdCBwaXBlbGluZU5hbWUgPSBwaXBlbGluZS5waXBlbGluZU5hbWVcbiAgICB8fCBgJHtwaXBlbGluZS5vcmdhbml6YXRpb259LSR7cGlwZWxpbmUucHJvamVjdH0tcGlwZWxpbmVgLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IHBpcGVsaW5lQXJuID0gYGFybjphd3M6Y29kZXBpcGVsaW5lOiR7cmVnaW9ufToke2hhc2hlZEFjY291bnR9OiR7cGlwZWxpbmVOYW1lfWA7XG4gIGNvbnN0IHN0YWNrTmFtZSA9IGAke3BpcGVsaW5lLnByb2plY3R9LSR7cGlwZWxpbmUub3JnYW5pemF0aW9ufWAudG9Mb3dlckNhc2UoKTtcblxuICByZXR1cm4ge1xuICAgIHBpcGVsaW5lSWQ6IHBpcGVsaW5lLmlkLFxuICAgIG9yZ0lkOiBwaXBlbGluZS5vcmdJZCxcbiAgICBwaXBlbGluZUFybixcbiAgICBwaXBlbGluZU5hbWUsXG4gICAgYWNjb3VudElkOiBoYXNoZWRBY2NvdW50LFxuICAgIHJlZ2lvbixcbiAgICBwcm9qZWN0OiBwaXBlbGluZS5wcm9qZWN0LFxuICAgIG9yZ2FuaXphdGlvbjogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgIHN0YWNrTmFtZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBQZXJzaXN0IGEgcmVnaXN0cmF0aW9uIGludGVudCBmb3IgbGF0ZXIgcmV0cnkuXG4gKlxuICogSW50ZW50IGZpbGVzIGFyZSBrZXllZCBieSBwaXBlbGluZUlkIHNvIHJlLXJ1bm5pbmcgZGVwbG95IG9uIHRoZSBzYW1lXG4gKiBwaXBlbGluZSBvdmVyd3JpdGVzIHJhdGhlciB0aGFuIGFjY3VtdWxhdGVzLiBXZSBkZWxpYmVyYXRlbHkgc3RvcmUgdGhlXG4gKiBwYXlsb2FkIHBsYWluIChub3QgdGhlIGZ1bGwgcGlwZWxpbmUgZG9jLCBub3QgYXV0aCkgc28gYSBzdGFsZSBmaWxlIGlzXG4gKiBzYWZlIHRvIGxlYXZlIGFyb3VuZCBpbmRlZmluaXRlbHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVBlbmRpbmdJbnRlbnQocGF5bG9hZDogUmVnaXN0cnlQYXlsb2FkKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgYXdhaXQgZnMubWtkaXIoUEVORElOR19JTlRFTlRTX0RJUiwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGNvbnN0IHBhdGggPSBqb2luKFBFTkRJTkdfSU5URU5UU19ESVIsIGAke3BheWxvYWQucGlwZWxpbmVJZH0uanNvbmApO1xuICBhd2FpdCBmcy53cml0ZUZpbGUocGF0aCwgSlNPTi5zdHJpbmdpZnkocGF5bG9hZCwgbnVsbCwgMiksICd1dGY4Jyk7XG4gIHJldHVybiBwYXRoO1xufVxuXG4vKiogUmVtb3ZlIGEgcGVuZGluZyBpbnRlbnQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGRyYWluLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsZWFyUGVuZGluZ0ludGVudChwaXBlbGluZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGF0aCA9IGpvaW4oUEVORElOR19JTlRFTlRTX0RJUiwgYCR7cGlwZWxpbmVJZH0uanNvbmApO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLnVubGluayhwYXRoKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gRU5PRU5UIGlzIGZpbmUg4oCUIGFscmVhZHkgY2xlYXJlZC4gQW55dGhpbmcgZWxzZSBpcyBhIHJlYWwgcHJvYmxlbS5cbiAgICBpZiAoKGVyciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgIT09ICdFTk9FTlQnKSB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqIFJlYWQgYWxsIHBlbmRpbmcgaW50ZW50cyBjdXJyZW50bHkgb24gZGlzay4gRW1wdHkgYXJyYXkgaWYgZGlyIGRvZXNuJ3QgZXhpc3QuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFBlbmRpbmdJbnRlbnRzKCk6IFByb21pc2U8UmVnaXN0cnlQYXlsb2FkW10+IHtcbiAgbGV0IGVudHJpZXM6IHN0cmluZ1tdO1xuICB0cnkge1xuICAgIGVudHJpZXMgPSBhd2FpdCBmcy5yZWFkZGlyKFBFTkRJTkdfSU5URU5UU19ESVIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoKGVyciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgPT09ICdFTk9FTlQnKSByZXR1cm4gW107XG4gICAgdGhyb3cgZXJyO1xuICB9XG5cbiAgY29uc3QgaW50ZW50czogUmVnaXN0cnlQYXlsb2FkW10gPSBbXTtcbiAgZm9yIChjb25zdCBmaWxlIG9mIGVudHJpZXMpIHtcbiAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJy5qc29uJykpIGNvbnRpbnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgZnMucmVhZEZpbGUoam9pbihQRU5ESU5HX0lOVEVOVFNfRElSLCBmaWxlKSwgJ3V0ZjgnKTtcbiAgICAgIGludGVudHMucHVzaChKU09OLnBhcnNlKHRleHQpIGFzIFJlZ2lzdHJ5UGF5bG9hZCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBTa2lwIHVucmVhZGFibGUgLyBtYWxmb3JtZWQgZmlsZXMg4oCUIHRoZXknbGwgbmVlZCBtYW51YWwgY2xlYW51cCBidXRcbiAgICAgIC8vIHNob3VsZG4ndCBibG9jayB2YWxpZCBpbnRlbnRzIGZyb20gZHJhaW5pbmcuXG4gICAgfVxuICB9XG4gIHJldHVybiBpbnRlbnRzO1xufVxuIl19
package/package.json CHANGED
@@ -30,7 +30,6 @@
30
30
  "@aws-sdk/client-lambda": "3.821.0",
31
31
  "@aws-sdk/client-secrets-manager": "3.821.0",
32
32
  "@aws-sdk/client-sts": "3.821.0",
33
- "@pipeline-builder/pipeline-core": "3.3.33",
34
33
  "aws-cdk-lib": "2.251.0",
35
34
  "axios": "1.13.5",
36
35
  "commander": "14.0.3",
@@ -40,7 +39,8 @@
40
39
  "picocolors": "1.1.1",
41
40
  "progress": "2.0.3",
42
41
  "typescript": "5.9.3",
43
- "yaml": "2.8.2"
42
+ "yaml": "2.8.2",
43
+ "@pipeline-builder/pipeline-core": "3.4.0"
44
44
  },
45
45
  "keywords": [
46
46
  "aws",
@@ -83,7 +83,7 @@
83
83
  "access": "public",
84
84
  "registry": "https://registry.npmjs.org/"
85
85
  },
86
- "version": "3.3.32",
86
+ "version": "3.4.0",
87
87
  "bugs": {
88
88
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
89
89
  },