ummaya 0.2.10 → 0.2.11
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/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/pyproject.toml +2 -2
- package/tui/package.json +1 -1
- package/tui/src/commands/install-github-app/CheckExistingSecretStep.tsx +3 -3
- package/tui/src/commands/install-github-app/ExistingWorkflowStep.tsx +2 -2
- package/tui/src/commands/install-github-app/SuccessStep.tsx +2 -10
- package/tui/src/commands/install-github-app/install-github-app.tsx +19 -20
- package/tui/src/commands/install-github-app/setupGitHubActions.ts +19 -25
- package/tui/src/components/WorkflowMultiselectDialog.tsx +2 -2
- package/tui/src/constants/github-app.ts +9 -14
- package/tui/src/utils/http.ts +1 -2
- package/uv.lock +1 -1
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ummaya",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.11",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "ummaya",
|
|
9
|
-
"version": "0.2.
|
|
9
|
+
"version": "0.2.11",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@alcalzone/ansi-tokenize": "^0.3.0",
|
package/package.json
CHANGED
package/pyproject.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "ummaya"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.11"
|
|
4
4
|
description = "Conversational multi-agent platform for Korean public APIs"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -333,7 +333,7 @@ min_confidence = 80
|
|
|
333
333
|
|
|
334
334
|
[tool.commitizen]
|
|
335
335
|
name = "cz_conventional_commits"
|
|
336
|
-
version = "0.2.
|
|
336
|
+
version = "0.2.11"
|
|
337
337
|
tag_format = "v$version"
|
|
338
338
|
|
|
339
339
|
# PyTorch CPU-only wheel for Docker image size discipline (SC-1: ≤ 2 GB).
|
package/tui/package.json
CHANGED
|
@@ -101,7 +101,7 @@ export function CheckExistingSecretStep(t0) {
|
|
|
101
101
|
}
|
|
102
102
|
let t9;
|
|
103
103
|
if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
|
|
104
|
-
t9 = <Box marginBottom={1}><Text color="warning">
|
|
104
|
+
t9 = <Box marginBottom={1}><Text color="warning">UMMAYA_FRIENDLI_TOKEN already exists in repository secrets!</Text></Box>;
|
|
105
105
|
$[16] = t9;
|
|
106
106
|
} else {
|
|
107
107
|
t9 = $[16];
|
|
@@ -149,7 +149,7 @@ export function CheckExistingSecretStep(t0) {
|
|
|
149
149
|
}
|
|
150
150
|
let t15;
|
|
151
151
|
if ($[28] !== cursorOffset || $[29] !== onSecretNameChange || $[30] !== onSubmit || $[31] !== secretName || $[32] !== terminalSize || $[33] !== useExistingSecret) {
|
|
152
|
-
t15 = !useExistingSecret && <><Box marginBottom={1}><Text>Enter new secret name (alphanumeric with underscores):</Text></Box><TextInput value={secretName} onChange={onSecretNameChange} onSubmit={onSubmit} focus={true} placeholder="e.g.,
|
|
152
|
+
t15 = !useExistingSecret && <><Box marginBottom={1}><Text>Enter new secret name (alphanumeric with underscores):</Text></Box><TextInput value={secretName} onChange={onSecretNameChange} onSubmit={onSubmit} focus={true} placeholder="e.g., UMMAYA_FRIENDLI_TOKEN" columns={terminalSize.columns} cursorOffset={cursorOffset} onChangeCursorOffset={setCursorOffset} showCursor={true} /></>;
|
|
153
153
|
$[28] = cursorOffset;
|
|
154
154
|
$[29] = onSecretNameChange;
|
|
155
155
|
$[30] = onSubmit;
|
|
@@ -187,4 +187,4 @@ export function CheckExistingSecretStep(t0) {
|
|
|
187
187
|
}
|
|
188
188
|
return t18;
|
|
189
189
|
}
|
|
190
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlU3RhdGUiLCJUZXh0SW5wdXQiLCJ1c2VUZXJtaW5hbFNpemUiLCJCb3giLCJjb2xvciIsIlRleHQiLCJ1c2VUaGVtZSIsInVzZUtleWJpbmRpbmdzIiwiQ2hlY2tFeGlzdGluZ1NlY3JldFN0ZXBQcm9wcyIsInVzZUV4aXN0aW5nU2VjcmV0Iiwic2VjcmV0TmFtZSIsIm9uVG9nZ2xlVXNlRXhpc3RpbmdTZWNyZXQiLCJ1c2VFeGlzdGluZyIsIm9uU2VjcmV0TmFtZUNoYW5nZSIsInZhbHVlIiwib25TdWJtaXQiLCJDaGVja0V4aXN0aW5nU2VjcmV0U3RlcCIsInQwIiwiJCIsIl9jIiwiY3Vyc29yT2Zmc2V0Iiwic2V0Q3Vyc29yT2Zmc2V0IiwidGVybWluYWxTaXplIiwidGhlbWUiLCJ0MSIsImhhbmRsZVByZXZpb3VzIiwidDIiLCJoYW5kbGVOZXh0IiwidDMiLCJ0NCIsImNvbnRleHQiLCJpc0FjdGl2ZSIsInQ1IiwidDYiLCJ0NyIsInQ4IiwiU3ltYm9sIiwiZm9yIiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJ0MTUiLCJjb2x1bW5zIiwidDE2IiwidDE3IiwidDE4Il0sInNvdXJjZXMiOlsiQ2hlY2tFeGlzdGluZ1NlY3JldFN0ZXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBUZXh0SW5wdXQgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9UZXh0SW5wdXQuanMnXG5pbXBvcnQgeyB1c2VUZXJtaW5hbFNpemUgfSBmcm9tICcuLi8uLi9ob29rcy91c2VUZXJtaW5hbFNpemUuanMnXG5pbXBvcnQgeyBCb3gsIGNvbG9yLCBUZXh0LCB1c2VUaGVtZSB9IGZyb20gJy4uLy4uL2luay5qcydcbmltcG9ydCB7IHVzZUtleWJpbmRpbmdzIH0gZnJvbSAnLi4vLi4va2V5YmluZGluZ3MvdXNlS2V5YmluZGluZy5qcydcblxuaW50ZXJmYWNlIENoZWNrRXhpc3RpbmdTZWNyZXRTdGVwUHJvcHMge1xuICB1c2VFeGlzdGluZ1NlY3JldDogYm9vbGVhblxuICBzZWNyZXROYW1lOiBzdHJpbmdcbiAgb25Ub2dnbGVVc2VFeGlzdGluZ1NlY3JldDogKHVzZUV4aXN0aW5nOiBib29sZWFuKSA9PiB2b2lkXG4gIG9uU2VjcmV0TmFtZUNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWRcbiAgb25TdWJtaXQ6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrRXhpc3RpbmdTZWNyZXRTdGVwKHtcbiAgdXNlRXhpc3RpbmdTZWNyZXQsXG4gIHNlY3JldE5hbWUsXG4gIG9uVG9nZ2xlVXNlRXhpc3RpbmdTZWNyZXQsXG4gIG9uU2VjcmV0TmFtZUNoYW5nZSxcbiAgb25TdWJtaXQsXG59OiBDaGVja0V4aXN0aW5nU2VjcmV0U3RlcFByb3BzKSB7XG4gIGNvbnN0IFtjdXJzb3JPZmZzZXQsIHNldEN1cnNvck9mZnNldF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCB0ZXJtaW5hbFNpemUgPSB1c2VUZXJtaW5hbFNpemUoKVxuICBjb25zdCBbdGhlbWVdID0gdXNlVGhlbWUoKVxuXG4gIC8vIFdoZW4gdGhlIHRleHQgaW5wdXQgaXMgdmlzaWJsZSwgb21pdCBjb25maXJtOnllcyBzbyBiYXJlICd5JyBwYXNzZXNcbiAgLy8gdGhyb3VnaCB0byB0aGUgaW5wdXQgaW5zdGVhZCBvZiBzdWJtaXR0aW5nLiBUZXh0SW5wdXQncyBvblN1Ym1pdCBoYW5kbGVzXG4gIC8vIEVudGVyLiBLZWVwIHRoZSBDb25maXJtYXRpb24gY29udGV4dCAobm90IFNldHRpbmdzKSB0byBhdm9pZCBqL2sgYmluZGluZ3MuXG4gIGNvbnN0IGhhbmRsZVByZXZpb3VzID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gb25Ub2dnbGVVc2VFeGlzdGluZ1NlY3JldCh0cnVlKSxcbiAgICBbb25Ub2dnbGVVc2VFeGlzdGluZ1NlY3JldF0sXG4gIClcbiAgY29uc3QgaGFuZGxlTmV4dCA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IG9uVG9nZ2xlVXNlRXhpc3RpbmdTZWNyZXQoZmFsc2UpLFxuICAgIFtvblRvZ2dsZVVzZUV4aXN0aW5nU2VjcmV0XSxcbiAgKVxuICB1c2VLZXliaW5kaW5ncyhcbiAgICB7XG4gICAgICAnY29uZmlybTpwcmV2aW91cyc6IGhhbmRsZVByZXZpb3VzLFxuICAgICAgJ2NvbmZpcm06bmV4dCc6IGhhbmRsZU5leHQsXG4gICAgICAnY29uZmlybTp5ZXMnOiBvblN1Ym1pdCxcbiAgICB9LFxuICAgIHsgY29udGV4dDogJ0NvbmZpcm1hdGlvbicsIGlzQWN0aXZlOiB1c2VFeGlzdGluZ1NlY3JldCB9LFxuICApXG4gIHVzZUtleWJpbmRpbmdzKFxuICAgIHtcbiAgICAgICdjb25maXJtOnByZXZpb3VzJzogaGFuZGxlUHJldmlvdXMsXG4gICAgICAnY29uZmlybTpuZXh0JzogaGFuZGxlTmV4dCxcbiAgICB9LFxuICAgIHsgY29udGV4dDogJ0NvbmZpcm1hdGlvbicsIGlzQWN0aXZlOiAhdXNlRXhpc3RpbmdTZWNyZXQgfSxcbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGJvcmRlclN0eWxlPVwicm91bmRcIiBwYWRkaW5nWD17MX0+XG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQgYm9sZD5JbnN0YWxsIEdpdEh1YiBBcHA8L1RleHQ+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+U2V0dXAgQVBJIGtleSBzZWNyZXQ8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8Qm94IG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQgY29sb3I9XCJ3YXJuaW5nXCI+XG4gICAgICAgICAgICBBTlRIUk9QSUNfQVBJX0tFWSBhbHJlYWR5IGV4aXN0cyBpbiByZXBvc2l0b3J5IHNlY3JldHMhXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPEJveCBtYXJnaW5Cb3R0b209ezF9PlxuICAgICAgICAgIDxUZXh0PldvdWxkIHlvdSBsaWtlIHRvOjwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxCb3ggbWFyZ2luQm90dG9tPXsxfT5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt1c2VFeGlzdGluZ1NlY3JldCA/IGNvbG9yKCdzdWNjZXNzJywgdGhlbWUpKCc+ICcpIDogJyAgJ31cbiAgICAgICAgICAgIFVzZSB0aGUgZXhpc3RpbmcgQVBJIGtleVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxCb3ggbWFyZ2luQm90dG9tPXsxfT5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHshdXNlRXhpc3RpbmdTZWNyZXQgPyBjb2xvcignc3VjY2VzcycsIHRoZW1lKSgnPiAnKSA6ICcgICd9XG4gICAgICAgICAgICBDcmVhdGUgYSBuZXcgc2VjcmV0IHdpdGggYSBkaWZmZXJlbnQgbmFtZVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIHshdXNlRXhpc3RpbmdTZWNyZXQgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8Qm94IG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgICAgIEVudGVyIG5ldyBzZWNyZXQgbmFtZSAoYWxwaGFudW1lcmljIHdpdGggdW5kZXJzY29yZXMpOlxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxUZXh0SW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e3NlY3JldE5hbWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtvblNlY3JldE5hbWVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblN1Ym1pdH1cbiAgICAgICAgICAgICAgZm9jdXM9e3RydWV9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiwgQ0xBVURFX0FQSV9LRVlcIlxuICAgICAgICAgICAgICBjb2x1bW5zPXt0ZXJtaW5hbFNpemUuY29sdW1uc31cbiAgICAgICAgICAgICAgY3Vyc29yT2Zmc2V0PXtjdXJzb3JPZmZzZXR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlQ3Vyc29yT2Zmc2V0PXtzZXRDdXJzb3JPZmZzZXR9XG4gICAgICAgICAgICAgIHNob3dDdXJzb3I9e3RydWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IG1hcmdpbkxlZnQ9ezN9PlxuICAgICAgICA8VGV4dCBkaW1Db2xvcj7ihpEv4oaTIHRvIHNlbGVjdCDCtyBFbnRlciB0byBjb250aW51ZTwvVGV4dD5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxLQUFLLElBQUlDLFdBQVcsRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDcEQsT0FBT0MsU0FBUyxNQUFNLCtCQUErQjtBQUNyRCxTQUFTQyxlQUFlLFFBQVEsZ0NBQWdDO0FBQ2hFLFNBQVNDLEdBQUcsRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUVDLFFBQVEsUUFBUSxjQUFjO0FBQ3pELFNBQVNDLGNBQWMsUUFBUSxvQ0FBb0M7QUFFbkUsVUFBVUMsNEJBQTRCLENBQUM7RUFDckNDLGlCQUFpQixFQUFFLE9BQU87RUFDMUJDLFVBQVUsRUFBRSxNQUFNO0VBQ2xCQyx5QkFBeUIsRUFBRSxDQUFDQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSTtFQUN6REMsa0JBQWtCLEVBQUUsQ0FBQ0MsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUk7RUFDM0NDLFFBQVEsRUFBRSxHQUFHLEdBQUcsSUFBSTtBQUN0QjtBQUVBLE9BQU8sU0FBQUMsd0JBQUFDLEVBQUE7RUFBQSxNQUFBQyxDQUFBLEdBQUFDLEVBQUE7RUFBaUM7SUFBQVYsaUJBQUE7SUFBQUMsVUFBQTtJQUFBQyx5QkFBQTtJQUFBRSxrQkFBQTtJQUFBRTtFQUFBLElBQUFFLEVBTVQ7RUFDN0IsT0FBQUcsWUFBQSxFQUFBQyxlQUFBLElBQXdDckIsUUFBUSxDQUFDLENBQUMsQ0FBQztFQUNuRCxNQUFBc0IsWUFBQSxHQUFxQnBCLGVBQWUsQ0FBQyxDQUFDO0VBQ3RDLE9BQUFxQixLQUFBLElBQWdCakIsUUFBUSxDQUFDLENBQUM7RUFBQSxJQUFBa0IsRUFBQTtFQUFBLElBQUFOLENBQUEsUUFBQVAseUJBQUE7SUFNeEJhLEVBQUEsR0FBQUEsQ0FBQSxLQUFNYix5QkFBeUIsQ0FBQyxJQUFJLENBQUM7SUFBQU8sQ0FBQSxNQUFBUCx5QkFBQTtJQUFBTyxDQUFBLE1BQUFNLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFOLENBQUE7RUFBQTtFQUR2QyxNQUFBTyxjQUFBLEdBQXVCRCxFQUd0QjtFQUFBLElBQUFFLEVBQUE7RUFBQSxJQUFBUixDQUFBLFFBQUFQLHlCQUFBO0lBRUNlLEVBQUEsR0FBQUEsQ0FBQSxLQUFNZix5QkFBeUIsQ0FBQyxLQUFLLENBQUM7SUFBQU8sQ0FBQSxNQUFBUCx5QkFBQTtJQUFBTyxDQUFBLE1BQUFRLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFSLENBQUE7RUFBQTtFQUR4QyxNQUFBUyxVQUFBLEdBQW1CRCxFQUdsQjtFQUFBLElBQUFFLEVBQUE7RUFBQSxJQUFBVixDQUFBLFFBQUFTLFVBQUEsSUFBQVQsQ0FBQSxRQUFBTyxjQUFBLElBQUFQLENBQUEsUUFBQUgsUUFBQTtJQUVDYSxFQUFBO01BQUEsb0JBQ3NCSCxjQUFjO01BQUEsZ0JBQ2xCRSxVQUFVO01BQUEsZUFDWFo7SUFDakIsQ0FBQztJQUFBRyxDQUFBLE1BQUFTLFVBQUE7SUFBQVQsQ0FBQSxNQUFBTyxjQUFBO0lBQUFQLENBQUEsTUFBQUgsUUFBQTtJQUFBRyxDQUFBLE1BQUFVLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFWLENBQUE7RUFBQTtFQUFBLElBQUFXLEVBQUE7RUFBQSxJQUFBWCxDQUFBLFFBQUFULGlCQUFBO0lBQ0RvQixFQUFBO01BQUFDLE9BQUEsRUFBVyxjQUFjO01BQUFDLFFBQUEsRUFBWXRCO0lBQWtCLENBQUM7SUFBQVMsQ0FBQSxNQUFBVCxpQkFBQTtJQUFBUyxDQUFBLE1BQUFXLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFYLENBQUE7RUFBQTtFQU4xRFgsY0FBYyxDQUNacUIsRUFJQyxFQUNEQyxFQUNGLENBQUM7RUFBQSxJQUFBRyxFQUFBO0VBQUEsSUFBQWQsQ0FBQSxTQUFBUyxVQUFBLElBQUFULENBQUEsU0FBQU8sY0FBQTtJQUVDTyxFQUFBO01BQUEsb0JBQ3NCUCxjQUFjO01BQUEsZ0JBQ2xCRTtJQUNsQixDQUFDO0lBQUFULENBQUEsT0FBQVMsVUFBQTtJQUFBVCxDQUFBLE9BQUFPLGNBQUE7SUFBQVAsQ0FBQSxPQUFBYyxFQUFBO0VBQUE7SUFBQUEsRUFBQSxHQUFBZCxDQUFBO0VBQUE7RUFDb0MsTUFBQWUsRUFBQSxJQUFDeEIsaUJBQWlCO0VBQUEsSUFBQXlCLEVBQUE7RUFBQSxJQUFBaEIsQ0FBQSxTQUFBZSxFQUFBO0lBQXZEQyxFQUFBO01BQUFKLE9BQUEsRUFBVyxjQUFjO01BQUFDLFFBQUEsRUFBWUU7SUFBbUIsQ0FBQztJQUFBZixDQUFBLE9BQUFlLEVBQUE7SUFBQWYsQ0FBQSxPQUFBZ0IsRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQWhCLENBQUE7RUFBQTtFQUwzRFgsY0FBYyxDQUNaeUIsRUFHQyxFQUNERSxFQUNGLENBQUM7RUFBQSxJQUFBQyxFQUFBO0VBQUEsSUFBQWpCLENBQUEsU0FBQWtCLE1BQUEsQ0FBQUMsR0FBQTtJQUtLRixFQUFBLElBQUMsR0FBRyxDQUFlLGFBQVEsQ0FBUixRQUFRLENBQWUsWUFBQyxDQUFELEdBQUMsQ0FDekMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFKLEtBQUcsQ0FBQyxDQUFDLGtCQUFrQixFQUE1QixJQUFJLENBQ0wsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFSLEtBQU8sQ0FBQyxDQUFDLG9CQUFvQixFQUFsQyxJQUFJLENBQ1AsRUFIQyxHQUFHLENBR0U7SUFBQWpCLENBQUEsT0FBQWlCLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFqQixDQUFBO0VBQUE7RUFBQSxJQUFBb0IsRUFBQTtFQUFBLElBQUFwQixDQUFBLFNBQUFrQixNQUFBLENBQUFDLEdBQUE7SUFDTkMsRUFBQSxJQUFDLEdBQUcsQ0FBZSxZQUFDLENBQUQsR0FBQyxDQUNsQixDQUFDLElBQUksQ0FBTyxLQUFTLENBQVQsU0FBUyxDQUFDLHVEQUV0QixFQUZDLElBQUksQ0FHUCxFQUpDLEdBQUcsQ0FJRTtJQUFBcEIsQ0FBQSxPQUFBb0IsRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQXBCLENBQUE7RUFBQTtFQUFBLElBQUFxQixHQUFBO0VBQUEsSUFBQXJCLENBQUEsU0FBQWtCLE1BQUEsQ0FBQUMsR0FBQTtJQUNORSxHQUFBLElBQUMsR0FBRyxDQUFlLFlBQUMsQ0FBRCxHQUFDLENBQ2xCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUF2QixJQUFJLENBQ1AsRUFGQyxHQUFHLENBRUU7SUFBQXJCLENBQUEsT0FBQXFCLEdBQUE7RUFBQTtJQUFBQSxHQUFBLEdBQUFyQixDQUFBO0VBQUE7RUFBQSxJQUFBc0IsR0FBQTtFQUFBLElBQUF0QixDQUFBLFNBQUFLLEtBQUEsSUFBQUwsQ0FBQSxTQUFBVCxpQkFBQTtJQUdEK0IsR0FBQSxHQUFBL0IsaUJBQWlCLEdBQUdMLEtBQUssQ0FBQyxTQUFTLEVBQUVtQixLQUFLLENBQUMsQ0FBQyxJQUFXLENBQUMsR0FBeEQsSUFBd0Q7SUFBQUwsQ0FBQSxPQUFBSyxLQUFBO0lBQUFMLENBQUEsT0FBQVQsaUJBQUE7SUFBQVMsQ0FBQSxPQUFBc0IsR0FBQTtFQUFBO0lBQUFBLEdBQUEsR0FBQXRCLENBQUE7RUFBQTtFQUFBLElBQUF1QixHQUFBO0VBQUEsSUFBQXZCLENBQUEsU0FBQXNCLEdBQUE7SUFGN0RDLEdBQUEsSUFBQyxHQUFHLENBQWUsWUFBQyxDQUFELEdBQUMsQ0FDbEIsQ0FBQyxJQUFJLENBQ0YsQ0FBQUQsR0FBdUQsQ0FBRSx3QkFFNUQsRUFIQyxJQUFJLENBSVAsRUFMQyxHQUFHLENBS0U7SUFBQXRCLENBQUEsT0FBQXNCLEdBQUE7SUFBQXRCLENBQUEsT0FBQXVCLEdBQUE7RUFBQTtJQUFBQSxHQUFBLEdBQUF2QixDQUFBO0VBQUE7RUFBQSxJQUFBd0IsR0FBQTtFQUFBLElBQUF4QixDQUFBLFNBQUFLLEtBQUEsSUFBQUwsQ0FBQSxTQUFBVCxpQkFBQTtJQUdEaUMsR0FBQSxJQUFDakMsaUJBQXdELEdBQXBDTCxLQUFLLENBQUMsU0FBUyxFQUFFbUIsS0FBSyxDQUFDLENBQUMsSUFBVyxDQUFDLEdBQXpELElBQXlEO0lBQUFMLENBQUEsT0FBQUssS0FBQTtJQUFBTCxDQUFBLE9BQUFULGlCQUFBO0lBQUFTLENBQUEsT0FBQXdCLEdBQUE7RUFBQTtJQUFBQSxHQUFBLEdBQUF4QixDQUFBO0VBQUE7RUFBQSxJQUFBeUIsR0FBQTtFQUFBLElBQUF6QixDQUFBLFNBQUF3QixHQUFBO0lBRjlEQyxHQUFBLElBQUMsR0FBRyxDQUFlLFlBQUMsQ0FBRCxHQUFDLENBQ2xCLENBQUMsSUFBSSxDQUNGLENBQUFELEdBQXdELENBQUUseUNBRTdELEVBSEMsSUFBSSxDQUlQLEVBTEMsR0FBRyxDQUtFO0lBQUF4QixDQUFBLE9BQUF3QixHQUFBO0lBQUF4QixDQUFBLE9BQUF5QixHQUFBO0VBQUE7SUFBQUEsR0FBQSxHQUFBekIsQ0FBQTtFQUFBO0VBQUEsSUFBQTBCLEdBQUE7RUFBQSxJQUFBMUIsQ0FBQSxTQUFBRSxZQUFBLElBQUFGLENBQUEsU0FBQUwsa0JBQUEsSUFBQUssQ0FBQSxTQUFBSCxRQUFBLElBQUFHLENBQUEsU0FBQVIsVUFBQSxJQUFBUSxDQUFBLFNBQUFJLFlBQUEsSUFBQUosQ0FBQSxTQUFBVCxpQkFBQTtJQUNMbUMsR0FBQSxJQUFDbkMsaUJBbUJELElBbkJBLEVBRUcsQ0FBQyxHQUFHLENBQWUsWUFBQyxDQUFELEdBQUMsQ0FDbEIsQ0FBQyxJQUFJLENBQUMsc0RBRU4sRUFGQyxJQUFJLENBR1AsRUFKQyxHQUFHLENBS0osQ0FBQyxTQUFTLENBQ0RDLEtBQVUsQ0FBVkEsV0FBUyxDQUFDLENBQ1BHLFFBQWtCLENBQWxCQSxtQkFBaUIsQ0FBQyxDQUNsQkUsUUFBUSxDQUFSQSxTQUFPLENBQUMsQ0FDWCxLQUFJLENBQUosS0FBRyxDQUFDLENBQ0MsV0FBc0IsQ0FBdEIsc0JBQXNCLENBQ3pCLE9BQW9CLENBQXBCLENBQUFPLFlBQVksQ0FBQXVCLE9BQU8sQ0FBQyxDQUNmekIsWUFBWSxDQUFaQSxhQUFXLENBQUMsQ0FDSkMsb0JBQWUsQ0FBZkEsZ0JBQWMsQ0FBQyxDQUN6QixVQUFJLENBQUosS0FBRyxDQUFDLEdBQ2hCLEdBRUw7SUFBQUgsQ0FBQSxPQUFBRSxZQUFBO0lBQUFGLENBQUEsT0FBQUwsa0JBQUE7SUFBQUssQ0FBQSxPQUFBSCxRQUFBO0lBQUFHLENBQUEsT0FBQVIsVUFBQTtJQUFBUSxDQUFBLE9BQUFJLFlBQUE7SUFBQUosQ0FBQSxPQUFBVCxpQkFBQTtJQUFBUyxDQUFBLE9BQUEwQixHQUFBO0VBQUE7SUFBQUEsR0FBQSxHQUFBMUIsQ0FBQTtFQUFBO0VBQUEsSUFBQTRCLEdBQUE7RUFBQSxJQUFBNUIsQ0FBQSxTQUFBdUIsR0FBQSxJQUFBdkIsQ0FBQSxTQUFBeUIsR0FBQSxJQUFBekIsQ0FBQSxTQUFBMEIsR0FBQTtJQTVDSEUsR0FBQSxJQUFDLEdBQUcsQ0FBZSxhQUFRLENBQVIsUUFBUSxDQUFhLFdBQU8sQ0FBUCxPQUFPLENBQVcsUUFBQyxDQUFELEdBQUMsQ0FDekQsQ0FBQVgsRUFHSyxDQUNMLENBQUFHLEVBSUssQ0FDTCxDQUFBQyxHQUVLLENBQ0wsQ0FBQUUsR0FLSyxDQUNMLENBQUFFLEdBS0ssQ0FDSixDQUFBQyxHQW1CRCxDQUNGLEVBN0NDLEdBQUcsQ0E2Q0U7SUFBQTFCLENBQUEsT0FBQXVCLEdBQUE7SUFBQXZCLENBQUEsT0FBQXlCLEdBQUE7SUFBQXpCLENBQUEsT0FBQTBCLEdBQUE7SUFBQTFCLENBQUEsT0FBQTRCLEdBQUE7RUFBQTtJQUFBQSxHQUFBLEdBQUE1QixDQUFBO0VBQUE7RUFBQSxJQUFBNkIsR0FBQTtFQUFBLElBQUE3QixDQUFBLFNBQUFrQixNQUFBLENBQUFDLEdBQUE7SUFDTlUsR0FBQSxJQUFDLEdBQUcsQ0FBYSxVQUFDLENBQUQsR0FBQyxDQUNoQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQVIsS0FBTyxDQUFDLENBQUMsaUNBQWlDLEVBQS9DLElBQUksQ0FDUCxFQUZDLEdBQUcsQ0FFRTtJQUFBN0IsQ0FBQSxPQUFBNkIsR0FBQTtFQUFBO0lBQUFBLEdBQUEsR0FBQTdCLENBQUE7RUFBQTtFQUFBLElBQUE4QixHQUFBO0VBQUEsSUFBQTlCLENBQUEsU0FBQTRCLEdBQUE7SUFqRFJFLEdBQUEsS0FDRSxDQUFBRixHQTZDSyxDQUNMLENBQUFDLEdBRUssQ0FBQyxHQUNMO0lBQUE3QixDQUFBLE9BQUE0QixHQUFBO0lBQUE1QixDQUFBLE9BQUE4QixHQUFBO0VBQUE7SUFBQUEsR0FBQSxHQUFBOUIsQ0FBQTtFQUFBO0VBQUEsT0FsREg4QixHQWtERztBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
190
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlU3RhdGUiLCJUZXh0SW5wdXQiLCJ1c2VUZXJtaW5hbFNpemUiLCJCb3giLCJjb2xvciIsIlRleHQiLCJ1c2VUaGVtZSIsInVzZUtleWJpbmRpbmdzIiwiQ2hlY2tFeGlzdGluZ1NlY3JldFN0ZXBQcm9wcyIsInVzZUV4aXN0aW5nU2VjcmV0Iiwic2VjcmV0TmFtZSIsIm9uVG9nZ2xlVXNlRXhpc3RpbmdTZWNyZXQiLCJ1c2VFeGlzdGluZyIsIm9uU2VjcmV0TmFtZUNoYW5nZSIsInZhbHVlIiwib25TdWJtaXQiLCJDaGVja0V4aXN0aW5nU2VjcmV0U3RlcCIsInQwIiwiJCIsIl9jIiwiY3Vyc29yT2Zmc2V0Iiwic2V0Q3Vyc29yT2Zmc2V0IiwidGVybWluYWxTaXplIiwidGhlbWUiLCJ0MSIsImhhbmRsZVByZXZpb3VzIiwidDIiLCJoYW5kbGVOZXh0IiwidDMiLCJ0NCIsImNvbnRleHQiLCJpc0FjdGl2ZSIsInQ1IiwidDYiLCJ0NyIsInQ4IiwiU3ltYm9sIiwiZm9yIiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJ0MTUiLCJjb2x1bW5zIiwidDE2IiwidDE3IiwidDE4Il0sInNvdXJjZXMiOlsiQ2hlY2tFeGlzdGluZ1NlY3JldFN0ZXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBUZXh0SW5wdXQgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9UZXh0SW5wdXQuanMnXG5pbXBvcnQgeyB1c2VUZXJtaW5hbFNpemUgfSBmcm9tICcuLi8uLi9ob29rcy91c2VUZXJtaW5hbFNpemUuanMnXG5pbXBvcnQgeyBCb3gsIGNvbG9yLCBUZXh0LCB1c2VUaGVtZSB9IGZyb20gJy4uLy4uL2luay5qcydcbmltcG9ydCB7IHVzZUtleWJpbmRpbmdzIH0gZnJvbSAnLi4vLi4va2V5YmluZGluZ3MvdXNlS2V5YmluZGluZy5qcydcblxuaW50ZXJmYWNlIENoZWNrRXhpc3RpbmdTZWNyZXRTdGVwUHJvcHMge1xuICB1c2VFeGlzdGluZ1NlY3JldDogYm9vbGVhblxuICBzZWNyZXROYW1lOiBzdHJpbmdcbiAgb25Ub2dnbGVVc2VFeGlzdGluZ1NlY3JldDogKHVzZUV4aXN0aW5nOiBib29sZWFuKSA9PiB2b2lkXG4gIG9uU2VjcmV0TmFtZUNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWRcbiAgb25TdWJtaXQ6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrRXhpc3RpbmdTZWNyZXRTdGVwKHtcbiAgdXNlRXhpc3RpbmdTZWNyZXQsXG4gIHNlY3JldE5hbWUsXG4gIG9uVG9nZ2xlVXNlRXhpc3RpbmdTZWNyZXQsXG4gIG9uU2VjcmV0TmFtZUNoYW5nZSxcbiAgb25TdWJtaXQsXG59OiBDaGVja0V4aXN0aW5nU2VjcmV0U3RlcFByb3BzKSB7XG4gIGNvbnN0IFtjdXJzb3JPZmZzZXQsIHNldEN1cnNvck9mZnNldF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCB0ZXJtaW5hbFNpemUgPSB1c2VUZXJtaW5hbFNpemUoKVxuICBjb25zdCBbdGhlbWVdID0gdXNlVGhlbWUoKVxuXG4gIC8vIFdoZW4gdGhlIHRleHQgaW5wdXQgaXMgdmlzaWJsZSwgb21pdCBjb25maXJtOnllcyBzbyBiYXJlICd5JyBwYXNzZXNcbiAgLy8gdGhyb3VnaCB0byB0aGUgaW5wdXQgaW5zdGVhZCBvZiBzdWJtaXR0aW5nLiBUZXh0SW5wdXQncyBvblN1Ym1pdCBoYW5kbGVzXG4gIC8vIEVudGVyLiBLZWVwIHRoZSBDb25maXJtYXRpb24gY29udGV4dCAobm90IFNldHRpbmdzKSB0byBhdm9pZCBqL2sgYmluZGluZ3MuXG4gIGNvbnN0IGhhbmRsZVByZXZpb3VzID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gb25Ub2dnbGVVc2VFeGlzdGluZ1NlY3JldCh0cnVlKSxcbiAgICBbb25Ub2dnbGVVc2VFeGlzdGluZ1NlY3JldF0sXG4gIClcbiAgY29uc3QgaGFuZGxlTmV4dCA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IG9uVG9nZ2xlVXNlRXhpc3RpbmdTZWNyZXQoZmFsc2UpLFxuICAgIFtvblRvZ2dsZVVzZUV4aXN0aW5nU2VjcmV0XSxcbiAgKVxuICB1c2VLZXliaW5kaW5ncyhcbiAgICB7XG4gICAgICAnY29uZmlybTpwcmV2aW91cyc6IGhhbmRsZVByZXZpb3VzLFxuICAgICAgJ2NvbmZpcm06bmV4dCc6IGhhbmRsZU5leHQsXG4gICAgICAnY29uZmlybTp5ZXMnOiBvblN1Ym1pdCxcbiAgICB9LFxuICAgIHsgY29udGV4dDogJ0NvbmZpcm1hdGlvbicsIGlzQWN0aXZlOiB1c2VFeGlzdGluZ1NlY3JldCB9LFxuICApXG4gIHVzZUtleWJpbmRpbmdzKFxuICAgIHtcbiAgICAgICdjb25maXJtOnByZXZpb3VzJzogaGFuZGxlUHJldmlvdXMsXG4gICAgICAnY29uZmlybTpuZXh0JzogaGFuZGxlTmV4dCxcbiAgICB9LFxuICAgIHsgY29udGV4dDogJ0NvbmZpcm1hdGlvbicsIGlzQWN0aXZlOiAhdXNlRXhpc3RpbmdTZWNyZXQgfSxcbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGJvcmRlclN0eWxlPVwicm91bmRcIiBwYWRkaW5nWD17MX0+XG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQgYm9sZD5JbnN0YWxsIEdpdEh1YiBBcHA8L1RleHQ+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+U2V0dXAgQVBJIGtleSBzZWNyZXQ8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8Qm94IG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQgY29sb3I9XCJ3YXJuaW5nXCI+XG4gICAgICAgICAgICBVTU1BWUFfRlJJRU5ETElfVE9LRU4gYWxyZWFkeSBleGlzdHMgaW4gcmVwb3NpdG9yeSBzZWNyZXRzIVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxCb3ggbWFyZ2luQm90dG9tPXsxfT5cbiAgICAgICAgICA8VGV4dD5Xb3VsZCB5b3UgbGlrZSB0bzo8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8Qm94IG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICB7dXNlRXhpc3RpbmdTZWNyZXQgPyBjb2xvcignc3VjY2VzcycsIHRoZW1lKSgnPiAnKSA6ICcgICd9XG4gICAgICAgICAgICBVc2UgdGhlIGV4aXN0aW5nIEFQSSBrZXlcbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8Qm94IG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICB7IXVzZUV4aXN0aW5nU2VjcmV0ID8gY29sb3IoJ3N1Y2Nlc3MnLCB0aGVtZSkoJz4gJykgOiAnICAnfVxuICAgICAgICAgICAgQ3JlYXRlIGEgbmV3IHNlY3JldCB3aXRoIGEgZGlmZmVyZW50IG5hbWVcbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICB7IXVzZUV4aXN0aW5nU2VjcmV0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJveCBtYXJnaW5Cb3R0b209ezF9PlxuICAgICAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgICAgICBFbnRlciBuZXcgc2VjcmV0IG5hbWUgKGFscGhhbnVtZXJpYyB3aXRoIHVuZGVyc2NvcmVzKTpcbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8VGV4dElucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXtzZWNyZXROYW1lfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17b25TZWNyZXROYW1lQ2hhbmdlfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25TdWJtaXR9XG4gICAgICAgICAgICAgIGZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImUuZy4sIFVNTUFZQV9GUklFTkRMSV9UT0tFTlwiXG4gICAgICAgICAgICAgIGNvbHVtbnM9e3Rlcm1pbmFsU2l6ZS5jb2x1bW5zfVxuICAgICAgICAgICAgICBjdXJzb3JPZmZzZXQ9e2N1cnNvck9mZnNldH1cbiAgICAgICAgICAgICAgb25DaGFuZ2VDdXJzb3JPZmZzZXQ9e3NldEN1cnNvck9mZnNldH1cbiAgICAgICAgICAgICAgc2hvd0N1cnNvcj17dHJ1ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggbWFyZ2luTGVmdD17M30+XG4gICAgICAgIDxUZXh0IGRpbUNvbG9yPuKGkS/ihpMgdG8gc2VsZWN0IMK3IEVudGVyIHRvIGNvbnRpbnVlPC9UZXh0PlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLEtBQUssSUFBSUMsV0FBVyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNwRCxPQUFPQyxTQUFTLE1BQU0sK0JBQStCO0FBQ3JELFNBQVNDLGVBQWUsUUFBUSxnQ0FBZ0M7QUFDaEUsU0FBU0MsR0FBRyxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRUMsUUFBUSxRQUFRLGNBQWM7QUFDekQsU0FBU0MsY0FBYyxRQUFRLG9DQUFvQztBQUVuRSxVQUFVQyw0QkFBNEIsQ0FBQztFQUNyQ0MsaUJBQWlCLEVBQUUsT0FBTztFQUMxQkMsVUFBVSxFQUFFLE1BQU07RUFDbEJDLHlCQUF5QixFQUFFLENBQUNDLFdBQVcsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJO0VBQ3pEQyxrQkFBa0IsRUFBRSxDQUFDQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSTtFQUMzQ0MsUUFBUSxFQUFFLEdBQUcsR0FBRyxJ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
|
|
@@ -68,7 +68,7 @@ export function ExistingWorkflowStep(t0) {
|
|
|
68
68
|
}
|
|
69
69
|
let t6;
|
|
70
70
|
if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
|
|
71
|
-
t6 = <Box flexDirection="column" marginBottom={1}><Text>A UMMAYA workflow file already exists at{" "}<Text color="claude">.github/workflows/
|
|
71
|
+
t6 = <Box flexDirection="column" marginBottom={1}><Text>A UMMAYA workflow file already exists at{" "}<Text color="claude">.github/workflows/ummaya.yml</Text></Text><Text dimColor={true}>What would you like to do?</Text></Box>;
|
|
72
72
|
$[8] = t6;
|
|
73
73
|
} else {
|
|
74
74
|
t6 = $[8];
|
|
@@ -100,4 +100,4 @@ export function ExistingWorkflowStep(t0) {
|
|
|
100
100
|
}
|
|
101
101
|
return t9;
|
|
102
102
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlNlbGVjdCIsIkJveCIsIlRleHQiLCJFeGlzdGluZ1dvcmtmbG93U3RlcFByb3BzIiwicmVwb05hbWUiLCJvblNlbGVjdEFjdGlvbiIsImFjdGlvbiIsIkV4aXN0aW5nV29ya2Zsb3dTdGVwIiwidDAiLCIkIiwiX2MiLCJ0MSIsIlN5bWJvbCIsImZvciIsImxhYmVsIiwidmFsdWUiLCJvcHRpb25zIiwidDIiLCJoYW5kbGVTZWxlY3QiLCJ0MyIsImhhbmRsZUNhbmNlbCIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidDgiLCJ0OSJdLCJzb3VyY2VzIjpbIkV4aXN0aW5nV29ya2Zsb3dTdGVwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBTZWxlY3QgfSBmcm9tICdzcmMvY29tcG9uZW50cy9DdXN0b21TZWxlY3QvaW5kZXguanMnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5cbmludGVyZmFjZSBFeGlzdGluZ1dvcmtmbG93U3RlcFByb3BzIHtcbiAgcmVwb05hbWU6IHN0cmluZ1xuICBvblNlbGVjdEFjdGlvbjogKGFjdGlvbjogJ3VwZGF0ZScgfCAnc2tpcCcgfCAnZXhpdCcpID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV4aXN0aW5nV29ya2Zsb3dTdGVwKHtcbiAgcmVwb05hbWUsXG4gIG9uU2VsZWN0QWN0aW9uLFxufTogRXhpc3RpbmdXb3JrZmxvd1N0ZXBQcm9wcykge1xuICBjb25zdCBvcHRpb25zID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnVXBkYXRlIHdvcmtmbG93IGZpbGUgd2l0aCBsYXRlc3QgdmVyc2lvbicsXG4gICAgICB2YWx1ZTogJ3VwZGF0ZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ1NraXAgd29ya2Zsb3cgdXBkYXRlIChjb25maWd1cmUgc2VjcmV0cyBvbmx5KScsXG4gICAgICB2YWx1ZTogJ3NraXAnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdFeGl0IHdpdGhvdXQgbWFraW5nIGNoYW5nZXMnLFxuICAgICAgdmFsdWU6ICdleGl0JyxcbiAgICB9LFxuICBdXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBvblNlbGVjdEFjdGlvbih2YWx1ZSBhcyAndXBkYXRlJyB8ICdza2lwJyB8ICdleGl0JylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBvblNlbGVjdEFjdGlvbignZXhpdCcpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGJvcmRlclN0eWxlPVwicm91bmRcIiBib3JkZXJEaW1Db2xvciBwYWRkaW5nWD17MX0+XG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBtYXJnaW5Cb3R0b209ezF9PlxuICAgICAgICA8VGV4dCBib2xkPkV4aXN0aW5nIFdvcmtmbG93IEZvdW5kPC9UZXh0PlxuICAgICAgICA8VGV4dCBkaW1Db2xvcj5SZXBvc2l0b3J5OiB7cmVwb05hbWV9PC9UZXh0PlxuICAgICAgPC9Cb3g+XG5cbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgIDxUZXh0PlxuICAgICAgICAgIEEgQ2xhdWRlIHdvcmtmbG93IGZpbGUgYWxyZWFkeSBleGlzdHMgYXR7JyAnfVxuICAgICAgICAgIDxUZXh0IGNvbG9yPVwiY2xhdWRlXCI+
|
|
103
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlNlbGVjdCIsIkJveCIsIlRleHQiLCJFeGlzdGluZ1dvcmtmbG93U3RlcFByb3BzIiwicmVwb05hbWUiLCJvblNlbGVjdEFjdGlvbiIsImFjdGlvbiIsIkV4aXN0aW5nV29ya2Zsb3dTdGVwIiwidDAiLCIkIiwiX2MiLCJ0MSIsIlN5bWJvbCIsImZvciIsImxhYmVsIiwidmFsdWUiLCJvcHRpb25zIiwidDIiLCJoYW5kbGVTZWxlY3QiLCJ0MyIsImhhbmRsZUNhbmNlbCIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidDgiLCJ0OSJdLCJzb3VyY2VzIjpbIkV4aXN0aW5nV29ya2Zsb3dTdGVwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBTZWxlY3QgfSBmcm9tICdzcmMvY29tcG9uZW50cy9DdXN0b21TZWxlY3QvaW5kZXguanMnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5cbmludGVyZmFjZSBFeGlzdGluZ1dvcmtmbG93U3RlcFByb3BzIHtcbiAgcmVwb05hbWU6IHN0cmluZ1xuICBvblNlbGVjdEFjdGlvbjogKGFjdGlvbjogJ3VwZGF0ZScgfCAnc2tpcCcgfCAnZXhpdCcpID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV4aXN0aW5nV29ya2Zsb3dTdGVwKHtcbiAgcmVwb05hbWUsXG4gIG9uU2VsZWN0QWN0aW9uLFxufTogRXhpc3RpbmdXb3JrZmxvd1N0ZXBQcm9wcykge1xuICBjb25zdCBvcHRpb25zID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnVXBkYXRlIHdvcmtmbG93IGZpbGUgd2l0aCBsYXRlc3QgdmVyc2lvbicsXG4gICAgICB2YWx1ZTogJ3VwZGF0ZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ1NraXAgd29ya2Zsb3cgdXBkYXRlIChjb25maWd1cmUgc2VjcmV0cyBvbmx5KScsXG4gICAgICB2YWx1ZTogJ3NraXAnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdFeGl0IHdpdGhvdXQgbWFraW5nIGNoYW5nZXMnLFxuICAgICAgdmFsdWU6ICdleGl0JyxcbiAgICB9LFxuICBdXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBvblNlbGVjdEFjdGlvbih2YWx1ZSBhcyAndXBkYXRlJyB8ICdza2lwJyB8ICdleGl0JylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBvblNlbGVjdEFjdGlvbignZXhpdCcpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGJvcmRlclN0eWxlPVwicm91bmRcIiBib3JkZXJEaW1Db2xvciBwYWRkaW5nWD17MX0+XG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBtYXJnaW5Cb3R0b209ezF9PlxuICAgICAgICA8VGV4dCBib2xkPkV4aXN0aW5nIFdvcmtmbG93IEZvdW5kPC9UZXh0PlxuICAgICAgICA8VGV4dCBkaW1Db2xvcj5SZXBvc2l0b3J5OiB7cmVwb05hbWV9PC9UZXh0PlxuICAgICAgPC9Cb3g+XG5cbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgIDxUZXh0PlxuICAgICAgICAgIEEgQ2xhdWRlIHdvcmtmbG93IGZpbGUgYWxyZWFkeSBleGlzdHMgYXR7JyAnfVxuICAgICAgICAgIDxUZXh0IGNvbG9yPVwiY2xhdWRlXCI+LmdpdGh1Yi93b3JrZmxvd3MvdW1tYXlhLnltbDwvVGV4dD5cbiAgICAgICAgPC9UZXh0PlxuICAgICAgICA8VGV4dCBkaW1Db2xvcj5XaGF0IHdvdWxkIHlvdSBsaWtlIHRvIGRvPzwvVGV4dD5cbiAgICAgIDwvQm94PlxuXG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVNlbGVjdH1cbiAgICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG5cbiAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgVmlldyB0aGUgbGF0ZXN0IHdvcmtmbG93IHRlbXBsYXRlIGF0OnsnICd9XG4gICAgICAgICAgPFRleHQgY29sb3I9XCJjbGF1ZGVcIj5cbiAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnRocm9waWNzL2NsYXVkZS1jb2RlLWFjdGlvbi9ibG9iL21haW4vZXhhbXBsZXMvY2xhdWRlLnltbFxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLEtBQUssTUFBTSxPQUFPO0FBQ3pCLFNBQVNDLE1BQU0sUUFBUSxzQ0FBc0M7QUFDN0QsU0FBU0MsR0FBRyxFQUFFQyxJQUFJLFFBQVEsY0FBYztBQUV4QyxVQUFVQyx5QkFBeUIsQ0FBQztFQUNsQ0MsUUFBUSxFQUFFLE1BQU07RUFDaEJDLGNBQWMsRUFBRSxDQUFDQyxNQUFNLEVBQUUsUUFBUSxHQUFHLE1BQU0sR0FBRyxNQUFNLEVBQUUsR0FBRyxJQUFJO0FBQzlEO0FBRUEsT0FBTyxTQUFBQyxxQkFBQUMsRUFBQTtFQUFBLE1BQUFDLENBQUEsR0FBQUMsRUFBQTtFQUE4QjtJQUFBTixRQUFBO0lBQUFDO0VBQUEsSUFBQUcsRUFHVDtFQUFBLElBQUFHLEVBQUE7RUFBQSxJQUFBRixDQUFBLFFBQUFHLE1BQUEsQ0FBQUMsR0FBQTtJQUNWRixFQUFBLElBQ2Q7TUFBQUcsS0FBQSxFQUNTLDBDQUEwQztNQUFBQyxLQUFBLEVBQzFDO0lBQ1QsQ0FBQyxFQUNEO01BQUFELEtBQUEsRUFDUywrQ0FB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
|
|
@@ -31,15 +31,7 @@ export function SuccessStep(t0) {
|
|
|
31
31
|
} else {
|
|
32
32
|
t3 = $[2];
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
if ($[3] !== secretExists || $[4] !== useExistingSecret) {
|
|
36
|
-
t4 = secretExists && useExistingSecret && <Box marginTop={1}><Text color="success">✓ Using existing ANTHROPIC_API_KEY secret</Text></Box>;
|
|
37
|
-
$[3] = secretExists;
|
|
38
|
-
$[4] = useExistingSecret;
|
|
39
|
-
$[5] = t4;
|
|
40
|
-
} else {
|
|
41
|
-
t4 = $[5];
|
|
42
|
-
}
|
|
34
|
+
const t4 = secretExists && useExistingSecret && <Box marginTop={1}><Text color="success">✓ Using existing {secretName} secret</Text></Box>;
|
|
43
35
|
let t5;
|
|
44
36
|
if ($[6] !== secretExists || $[7] !== secretName || $[8] !== useExistingSecret) {
|
|
45
37
|
t5 = (!secretExists || !useExistingSecret) && <Box marginTop={1}><Text color="success">✓ API key saved as {secretName} secret</Text></Box>;
|
|
@@ -93,4 +85,4 @@ export function SuccessStep(t0) {
|
|
|
93
85
|
}
|
|
94
86
|
return t10;
|
|
95
87
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkJveCIsIlRleHQiLCJTdWNjZXNzU3RlcFByb3BzIiwic2VjcmV0RXhpc3RzIiwidXNlRXhpc3RpbmdTZWNyZXQiLCJzZWNyZXROYW1lIiwic2tpcFdvcmtmbG93IiwiU3VjY2Vzc1N0ZXAiLCJ0MCIsIiQiLCJfYyIsInQxIiwidW5kZWZpbmVkIiwidDIiLCJTeW1ib2wiLCJmb3IiLCJ0MyIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsInQxMCJdLCJzb3VyY2VzIjpbIlN1Y2Nlc3NTdGVwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5cbnR5cGUgU3VjY2Vzc1N0ZXBQcm9wcyA9IHtcbiAgc2VjcmV0RXhpc3RzOiBib29sZWFuXG4gIHVzZUV4aXN0aW5nU2VjcmV0OiBib29sZWFuXG4gIHNlY3JldE5hbWU6IHN0cmluZ1xuICBza2lwV29ya2Zsb3c/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdWNjZXNzU3RlcCh7XG4gIHNlY3JldEV4aXN0cyxcbiAgdXNlRXhpc3RpbmdTZWNyZXQsXG4gIHNlY3JldE5hbWUsXG4gIHNraXBXb3JrZmxvdyA9IGZhbHNlLFxufTogU3VjY2Vzc1N0ZXBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGJvcmRlclN0eWxlPVwicm91bmRcIiBwYWRkaW5nWD17MX0+XG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQgYm9sZD5JbnN0YWxsIEdpdEh1YiBBcHA8L1RleHQ+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+U3VjY2VzczwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIHshc2tpcFdvcmtmbG93ICYmIChcbiAgICAgICAgICA8VGV4dCBjb2xvcj1cInN1Y2Nlc3NcIj7inJMgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3cgY3JlYXRlZCE8L1RleHQ+
|
|
88
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkJveCIsIlRleHQiLCJTdWNjZXNzU3RlcFByb3BzIiwic2VjcmV0RXhpc3RzIiwidXNlRXhpc3RpbmdTZWNyZXQiLCJzZWNyZXROYW1lIiwic2tpcFdvcmtmbG93IiwiU3VjY2Vzc1N0ZXAiLCJ0MCIsIiQiLCJfYyIsInQxIiwidW5kZWZpbmVkIiwidDIiLCJTeW1ib2wiLCJmb3IiLCJ0MyIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsInQxMCJdLCJzb3VyY2VzIjpbIlN1Y2Nlc3NTdGVwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5cbnR5cGUgU3VjY2Vzc1N0ZXBQcm9wcyA9IHtcbiAgc2VjcmV0RXhpc3RzOiBib29sZWFuXG4gIHVzZUV4aXN0aW5nU2VjcmV0OiBib29sZWFuXG4gIHNlY3JldE5hbWU6IHN0cmluZ1xuICBza2lwV29ya2Zsb3c/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdWNjZXNzU3RlcCh7XG4gIHNlY3JldEV4aXN0cyxcbiAgdXNlRXhpc3RpbmdTZWNyZXQsXG4gIHNlY3JldE5hbWUsXG4gIHNraXBXb3JrZmxvdyA9IGZhbHNlLFxufTogU3VjY2Vzc1N0ZXBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGJvcmRlclN0eWxlPVwicm91bmRcIiBwYWRkaW5nWD17MX0+XG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQgYm9sZD5JbnN0YWxsIEdpdEh1YiBBcHA8L1RleHQ+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+U3VjY2VzczwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIHshc2tpcFdvcmtmbG93ICYmIChcbiAgICAgICAgICA8VGV4dCBjb2xvcj1cInN1Y2Nlc3NcIj7inJMgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3cgY3JlYXRlZCE8L1RleHQ+XG4gICAgICAgICl9XG4gICAgICAgIHtzZWNyZXRFeGlzdHMgJiYgdXNlRXhpc3RpbmdTZWNyZXQgJiYgKFxuICAgICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwic3VjY2Vzc1wiPlxuICAgICAgICAgICAgICDinJMgVXNpbmcgZXhpc3Rpbmcge3NlY3JldE5hbWV9IHNlY3JldFxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApfVxuICAgICAgICB7KCFzZWNyZXRFeGlzdHMgfHwgIXVzZUV4aXN0aW5nU2VjcmV0KSAmJiAoXG4gICAgICAgICAgPEJveCBtYXJnaW5Ub3A9ezF9PlxuICAgICAgICAgICAgPFRleHQgY29sb3I9XCJzdWNjZXNzXCI+4pyTIEFQSSBrZXkgc2F2ZWQgYXMge3NlY3JldE5hbWV9IHNlY3JldDwvVGV4dD5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgICAgPEJveCBtYXJnaW5Ub3A9ezF9PlxuICAgICAgICAgIDxUZXh0Pk5leHQgc3RlcHM6PC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAge3NraXBXb3JrZmxvdyA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgIDEuIEluc3RhbGwgdGhlIFVNTUFZQSBHaXRIdWIgQXBwIGlmIHlvdSBoYXZlbiZhcG9zO3QgYWxyZWFkeVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHQ+Mi4gWW91ciB3b3JrZmxvdyBmaWxlIHdhcyBrZXB0IHVuY2hhbmdlZDwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0PjMuIEFQSSBrZXkgaXMgY29uZmlndXJlZCBhbmQgcmVhZHkgdG8gdXNlPC9UZXh0PlxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8VGV4dD4xLiBBIHByZS1maWxsZWQgUFIgcGFnZSBoYXMgYmVlbiBjcmVhdGVkPC9UZXh0PlxuICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgIDIuIEluc3RhbGwgdGhlIFVNTUFZQSBHaXRIdWIgQXBwIGlmIHlvdSBoYXZlbiZhcG9zO3QgYWxyZWFkeVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHQ+My4gTWVyZ2UgdGhlIFBSIHRvIGVuYWJsZSB0aGUgVU1NQVlBIHJ1bnRpbWUgc21va2UgcGF0aDwvVGV4dD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBtYXJnaW5MZWZ0PXszfT5cbiAgICAgICAgPFRleHQgZGltQ29sb3I+UHJlc3MgYW55IGtleSB0byBleGl0PC9UZXh0PlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLEtBQUssTUFBTSxPQUFPO0FBQ3pCLFNBQVNDLEdBQUcsRUFBRUMsSUFBSSxRQUFRLGNBQWM7QUFFeEMsS0FBS0MsZ0JBQWdCLEdBQUc7RUFDdEJDLFlBQVksRUFBRSxPQUFPO0VBQ3JCQyxpQkFBaUIsRUFBRSxPQUFPO0VBQzFCQyxVQUFVLEVBQUUsTUFBTTtFQUNsQkMsWUFBWSxDQUFDLEVBQUUsT0FBTztBQUN4QixDQUFDO0FBRUQsT0FBTyxTQUFBQyxZQUFBQyxFQUFBO0VBQUEsTUFBQUMsQ0FBQSxHQUFBQyxFQUFBO0VBQXFCO0lBQUFQLFlBQUE7SUFBQUMsaUJBQUE7SUFBQUMsVUFBQTtJQUFBQyxZQUFBLEVBQUFLO0VBQUEsSUFBQUgsRUFLVDtFQURqQixNQUFBRixZQUFBLEdBQUFLLEVBQW9CLEtBQXBCQyxTQUFvQixHQUFwQixLQUFvQixHQUFwQkQsRUFBb0I7RUFBQSxJQUFBRSxFQUFBO0VBQUEsSUFBQUosQ0FBQSxRQUFBSyxNQUFBLENBQUFDLEdBQUE7SUFLZEYsRUFBQSxJQUFDLEdBQUcsQ0FBZSxhQUFRLENBQVIsUUFBUSxDQUFlLFlBQUMsQ0FBRCxHQUFDLENBQ3pDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBSixLQUFHLENBQUMsQ0FBQyxrQkFBa0IsRUFBNUIsSUFBSSxDQUNMLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBUixLQUFPLENBQUMsQ0FBQyxPQUFPLEVBQXJCLElBQUksQ0FDUCxFQUhDLEdBQUcsQ0FHRTtJQUFBSixDQUFBLE1BQUFJLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFKLENBQUE7RUFBQTtFQUFBLElBQUFPLEVBQUE7RUFBQSxJQUFBUCxDQUFBLFFBQUFILFlBQUE7SUFDTFUsRUFBQSxJQUFDVixZQUVELElBREMsQ0FBQyxJQUFJLENBQU8sS0FBUyxDQUFULFNBQVMsQ0FBQyxrQ0FBa0MsRUFBdkQsSUFBSSxDQUNOO0lBQUFHLENBQUEsTUFBQUgsWUFBQTtJQUFBRyxDQUFBLE1BQUFPLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFQLENBQUE7RUFBQTtFQUFBLElBQUFRLEVBQUE7RUFBQSxJQUFBUixDQUFBLFFBQUFOLFlBQUEsSUFBQU0sQ0FBQSxRQUFBTCxpQkFBQTtJQUNBYSxFQUFBLEdBQUFkLFlBQWlDLElBQWpDQyxpQkFNQSxJQUxDLENBQUMsR0FBRyxDQUFZLFNBQUMsQ0FBRCxHQUFDLENBQ2YsQ0FBQyxJQUFJLENBQU8sS0FBUyxDQUFULFNBQVMsQ0FBQyx5Q0FFdEIsRUFGQyxJQUFJLENBR1AsRUFKQyxHQUFHLENBS0w7SUFBQUssQ0FBQSxNQUFBTixZQUFBO0lBQUFNLENBQUEsTUFBQUwsaUJBQUE7SUFBQUssQ0FBQSxNQUFBUSxFQUFBO0VBQUE7SUFBQUEsRUFBQSxHQUFBUixDQUFBO0VBQUE7RUFBQSxJQUFBUyxFQUFBO0VBQUEsSUFBQVQsQ0FBQSxRQUFBTixZQUFBLElBQUFNLENBQUEsUUFBQUosVUFBQSxJQUFBSSxDQUFBLFFBQUFMLGlCQUFBO0lBQ0FjLEVBQUEsSUFBQyxDQUFDZixZQUFrQyxJQUFuQyxDQUFrQkMsaUJBSW5CLEtBSEMsQ0FBQyxHQUFHLENBQVksU0FBQyxDQUFELEdBQUMsQ0FDZixDQUFDLElBQUksQ0FBTyxLQUFTLENBQVQsU0FBUyxDQUFDLG1CQUFvQkMsV0FBUyxDQUFFLE9BQU8sRUFBM0QsSUFBSSxDQUNQLEVBRkMsR0FBRyxDQUdMO0lBQUFJLENBQUEsTUFBQU4sWUFBQTtJQUFBTSxDQUFBLE1BQUFKLFVBQUE7SUFBQUksQ0FBQSxNQUFBTCxpQkFBQTtJQUFBSyxDQUFBLE1BQUFTLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFULENBQUE7RUFBQTtFQUFBLElBQUFVLEVBQUE7RUFBQSxJQUFBVixDQUFBLFNBQUFLLE1BQUEsQ0FBQUMsR0FBQTtJQUNESSxFQUFBLElBQUMsR0FBRyxDQUFZLFNBQUMsQ0FBRCxHQUFDLENBQ2YsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFoQixJQUFJLENBQ1AsRUFGQyxHQUFHLENBRUU7SUFBQVYsQ0FBQSxPQUFBVSxFQUFBO0VBQUE7SUFBQUEsRUFBQSxHQUFBVixDQUFBO0VBQUE7RUFBQSxJQUFBVyxFQUFBO0VBQUEsSUFBQVgsQ0FBQSxTQUFBSCxZQUFBO0lBQ0xjLEVBQUEsR0FBQWQsWUFBWSxHQUFaLEVBRUcsQ0FBQyxJQUFJLENBQUMsdURBRU4sRUFGQyxJQUFJLENBR0wsQ0FBQyxJQUFJLENBQUMsd0NBQXdDLEVBQTdDLElBQUksQ0FDTCxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsRUFBOUMsSUFBSSxDQUFpRCxHQVV6RCxHQWhCQSxFQVVHLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxFQUE3QyxJQUFJLENBQ0wsQ0FBQyxJQUFJLENBQUMsdURBRU4sRUFGQyxJQUFJLENBR0wsQ0FBQyxJQUFJLENBQUMsOENBQThDLEVBQW5ELElBQUksQ0FBc0QsR0FFOUQ7SUFBQUcsQ0FBQSxPQUFBSCxZQUFBO0lBQUFHLENBQUEsT0FBQVcsRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQVgsQ0FBQTtFQUFBO0VBQUEsSUFBQVksRUFBQTtFQUFBLElBQUFaLENBQUEsU0FBQU8sRUFBQSxJQUFBUCxDQUFBLFNBQUFRLEVBQUEsSUFBQVIsQ0FBQSxTQUFBUyxFQUFBLElBQUFULENBQUEsU0FBQVcsRUFBQTtJQXZDSEMsRUFBQSxJQUFDLEdBQUcsQ0FBZSxhQUFRLENBQVIsUUFBUSxDQUFhLFdBQU8sQ0FBUCxPQUFPLENBQVcsUUFBQyxDQUFELEdBQUMsQ0FDekQsQ0FBQVIsRUFHSyxDQUNKLENBQUFHLEVBRUQsQ0FDQyxDQUFBQyxFQU1ELENBQ0MsQ0FBQUMsRUFJRCxDQUNBLENBQUFDLEVBRUssQ0FDSixDQUFBQyxFQWdCRCxDQUNGLEVBeENDLEdBQUcsQ0F3Q0U7SUFBQVgsQ0FBQSxPQUFBTyxFQUFBO0lBQUFQLENBQUEsT0FBQVEsRUFBQTtJQUFBUixDQUFBLE9BQUFTLEVBQUE7SUFBQVQsQ0FBQSxPQUFBVyxFQUFBO0lBQUFYLENBQUEsT0FBQVksRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQVosQ0FBQTtFQUFBO0VBQUEsSUFBQWEsRUFBQTtFQUFBLElBQUFiLENBQUEsU0FBQUssTUFBQSxDQUFBQyxHQUFBO0lBQ05PLEVBQUEsSUFBQyxHQUFHLENBQWEsVUFBQyxDQUFELEdBQUMsQ0FDaEIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFSLEtBQU8sQ0FBQyxDQUFDLHFCQUFxQixFQUFuQyxJQUFJLENBQ1AsRUFGQyxHQUFHLENBRUU7SUFBQWIsQ0FBQSxPQUFBYSxFQUFBO0VBQUE7SUFBQUEsRUFBQSxHQUFBYixDQUFBO0VBQUE7RUFBQSxJQUFBYyxHQUFBO0VBQUEsSUFBQWQsQ0FBQSxTQUFBWSxFQUFBO0lBNUNSRSxHQUFBLEtBQ0UsQ0FBQUYsRUF3Q0ssQ0FDTCxDQUFBQyxFQUVLLENBQUMsR0FDTDtJQUFBYixDQUFBLE9BQUFZLEVBQUE7SUFBQVosQ0FBQSxPQUFBYyxHQUFBO0VBQUE7SUFBQUEsR0FBQSxHQUFBZCxDQUFBO0VBQUE7RUFBQSxPQTdDSGMsR0E2Q0c7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -7,7 +7,7 @@ import { useExitOnCtrlCDWithKeybindings } from '../../hooks/useExitOnCtrlCDWithK
|
|
|
7
7
|
import type { KeyboardEvent } from '../../ink/events/keyboard-event.js';
|
|
8
8
|
import { Box } from '../../ink.js';
|
|
9
9
|
import type { LocalJSXCommandOnDone } from '../../types/command.js';
|
|
10
|
-
import { getAnthropicApiKey, isAnthropicAuthEnabled } from '../../utils/auth.js';
|
|
10
|
+
import { FRIENDLI_PRIMARY_ENV, getAnthropicApiKey, isAnthropicAuthEnabled } from '../../utils/auth.js';
|
|
11
11
|
import { openBrowser } from '../../utils/browser.js';
|
|
12
12
|
import { execFileNoThrow } from '../../utils/execFileNoThrow.js';
|
|
13
13
|
import { getGithubRepo } from '../../utils/git.js';
|
|
@@ -36,13 +36,17 @@ const INITIAL_STATE: State = {
|
|
|
36
36
|
currentWorkflowInstallStep: 0,
|
|
37
37
|
warnings: [],
|
|
38
38
|
secretExists: false,
|
|
39
|
-
secretName:
|
|
39
|
+
secretName: FRIENDLI_PRIMARY_ENV,
|
|
40
40
|
useExistingSecret: true,
|
|
41
41
|
workflowExists: false,
|
|
42
|
-
selectedWorkflows: ['
|
|
42
|
+
selectedWorkflows: ['ummaya', 'ummaya-review'] as Workflow[],
|
|
43
43
|
selectedApiKeyOption: 'new' as 'existing' | 'new' | 'oauth',
|
|
44
44
|
authType: 'api_key'
|
|
45
45
|
};
|
|
46
|
+
function secretListContains(lines: string[], secretName: string): boolean {
|
|
47
|
+
const escapedSecretName = secretName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
48
|
+
return lines.some((line: string) => new RegExp(`^${escapedSecretName}\\s+`).test(line));
|
|
49
|
+
}
|
|
46
50
|
function InstallGitHubApp(props: {
|
|
47
51
|
onDone: (message: string) => void;
|
|
48
52
|
}): React.ReactNode {
|
|
@@ -164,7 +168,7 @@ function InstallGitHubApp(props: {
|
|
|
164
168
|
step: 'error',
|
|
165
169
|
error: 'A UMMAYA workflow file already exists in this repository.',
|
|
166
170
|
errorReason: 'Workflow file conflict',
|
|
167
|
-
errorInstructions: ['The file .github/workflows/
|
|
171
|
+
errorInstructions: ['The file .github/workflows/ummaya.yml already exists', 'You can either:', ' 1. Delete the existing file and run this command again', ' 2. Update the existing file manually using the template from:', ` ${GITHUB_ACTION_SETUP_DOCS_URL}`]
|
|
168
172
|
}));
|
|
169
173
|
} else {
|
|
170
174
|
logEvent('tengu_install_github_app_error', {
|
|
@@ -212,17 +216,15 @@ function InstallGitHubApp(props: {
|
|
|
212
216
|
}
|
|
213
217
|
}
|
|
214
218
|
async function checkExistingWorkflowFile(repoName_0: string): Promise<boolean> {
|
|
215
|
-
const checkFileResult = await execFileNoThrow('gh', ['api', `repos/${repoName_0}/contents/.github/workflows/
|
|
219
|
+
const checkFileResult = await execFileNoThrow('gh', ['api', `repos/${repoName_0}/contents/.github/workflows/ummaya.yml`, '--jq', '.sha']);
|
|
216
220
|
return checkFileResult.code === 0;
|
|
217
221
|
}
|
|
218
222
|
async function checkExistingSecret() {
|
|
219
223
|
const checkSecretsResult = await execFileNoThrow('gh', ['secret', 'list', '--app', 'actions', '--repo', state.selectedRepoName]);
|
|
220
224
|
if (checkSecretsResult.code === 0) {
|
|
221
225
|
const lines = checkSecretsResult.stdout.split('\n');
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
});
|
|
225
|
-
if (hasAnthropicKey) {
|
|
226
|
+
const hasFriendliKey = secretListContains(lines, FRIENDLI_PRIMARY_ENV);
|
|
227
|
+
if (hasFriendliKey) {
|
|
226
228
|
setState(prev_6 => ({
|
|
227
229
|
...prev_6,
|
|
228
230
|
secretExists: true,
|
|
@@ -297,7 +299,7 @@ function InstallGitHubApp(props: {
|
|
|
297
299
|
repoWarnings.push({
|
|
298
300
|
title: 'Repository format warning',
|
|
299
301
|
message: 'Repository should be in format "owner/repo"',
|
|
300
|
-
instructions: ['Use format: owner/repo', 'Example:
|
|
302
|
+
instructions: ['Use format: owner/repo', 'Example: umyunsang/UMMAYA']
|
|
301
303
|
});
|
|
302
304
|
}
|
|
303
305
|
const permissionCheck = await checkRepositoryPermissions(repoName_1);
|
|
@@ -395,14 +397,11 @@ function InstallGitHubApp(props: {
|
|
|
395
397
|
useExistingKey: state.selectedApiKeyOption === 'existing'
|
|
396
398
|
}));
|
|
397
399
|
|
|
398
|
-
// Check if ANTHROPIC_API_KEY secret already exists
|
|
399
400
|
const checkSecretsResult_0 = await execFileNoThrow('gh', ['secret', 'list', '--app', 'actions', '--repo', state.selectedRepoName]);
|
|
400
401
|
if (checkSecretsResult_0.code === 0) {
|
|
401
402
|
const lines_0 = checkSecretsResult_0.stdout.split('\n');
|
|
402
|
-
const
|
|
403
|
-
|
|
404
|
-
});
|
|
405
|
-
if (hasAnthropicKey_0) {
|
|
403
|
+
const hasFriendliKey_0 = secretListContains(lines_0, FRIENDLI_PRIMARY_ENV);
|
|
404
|
+
if (hasFriendliKey_0) {
|
|
406
405
|
logEvent('tengu_install_github_app_step_completed', {
|
|
407
406
|
step: 'api-key' as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS
|
|
408
407
|
});
|
|
@@ -462,10 +461,10 @@ function InstallGitHubApp(props: {
|
|
|
462
461
|
...prev_23,
|
|
463
462
|
apiKeyOrOAuthToken: token,
|
|
464
463
|
useExistingKey: false,
|
|
465
|
-
secretName:
|
|
466
|
-
authType: '
|
|
464
|
+
secretName: FRIENDLI_PRIMARY_ENV,
|
|
465
|
+
authType: 'api_key'
|
|
467
466
|
}));
|
|
468
|
-
void runSetupGitHubActions(token,
|
|
467
|
+
void runSetupGitHubActions(token, FRIENDLI_PRIMARY_ENV);
|
|
469
468
|
}, [runSetupGitHubActions]);
|
|
470
469
|
const handleOAuthCancel = useCallback(() => {
|
|
471
470
|
setState(prev_24 => ({
|
|
@@ -497,7 +496,7 @@ function InstallGitHubApp(props: {
|
|
|
497
496
|
setState(prev_28 => ({
|
|
498
497
|
...prev_28,
|
|
499
498
|
useExistingSecret,
|
|
500
|
-
secretName: useExistingSecret ?
|
|
499
|
+
secretName: useExistingSecret ? FRIENDLI_PRIMARY_ENV : ''
|
|
501
500
|
}));
|
|
502
501
|
};
|
|
503
502
|
const handleWorkflowAction = async (action: 'update' | 'skip' | 'exit') => {
|
|
@@ -584,4 +583,4 @@ function InstallGitHubApp(props: {
|
|
|
584
583
|
export async function call(onDone: LocalJSXCommandOnDone): Promise<React.ReactNode> {
|
|
585
584
|
return <InstallGitHubApp onDone={onDone} />;
|
|
586
585
|
}
|
|
587
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGVjYSIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJ1c2VTdGF0ZSIsIkFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMiLCJsb2dFdmVudCIsIldvcmtmbG93TXVsdGlzZWxlY3REaWFsb2ciLCJHSVRIVUJfQUNUSU9OX1NFVFVQX0RPQ1NfVVJMIiwidXNlRXhpdE9uQ3RybENEV2l0aEtleWJpbmRpbmdzIiwiS2V5Ym9hcmRFdmVudCIsIkJveCIsIkxvY2FsSlNYQ29tbWFuZE9uRG9uZSIsImdldEFudGhyb3BpY0FwaUtleSIsImlzQW50aHJvcGljQXV0aEVuYWJsZWQiLCJvcGVuQnJvd3NlciIsImV4ZWNGaWxlTm9UaHJvdyIsImdldEdpdGh1YlJlcG8iLCJwbHVyYWwiLCJBcGlLZXlTdGVwIiwiQ2hlY2tFeGlzdGluZ1NlY3JldFN0ZXAiLCJDaGVja0dpdEh1YlN0ZXAiLCJDaG9vc2VSZXBvU3RlcCIsIkNyZWF0aW5nU3RlcCIsIkVycm9yU3RlcCIsIkV4aXN0aW5nV29ya2Zsb3dTdGVwIiwiSW5zdGFsbEFwcFN0ZXAiLCJPQXV0aEZsb3dTdGVwIiwiU3VjY2Vzc1N0ZXAiLCJzZXR1cEdpdEh1YkFjdGlvbnMiLCJTdGF0ZSIsIldhcm5pbmciLCJXb3JrZmxvdyIsIldhcm5pbmdzU3RlcCIsIklOSVRJQUxfU1RBVEUiLCJzdGVwIiwic2VsZWN0ZWRSZXBvTmFtZSIsImN1cnJlbnRSZXBvIiwidXNlQ3VycmVudFJlcG8iLCJhcGlLZXlPck9BdXRoVG9rZW4iLCJ1c2VFeGlzdGluZ0tleSIsImN1cnJlbnRXb3JrZmxvd0luc3RhbGxTdGVwIiwid2FybmluZ3MiLCJzZWNyZXRFeGlzdHMiLCJzZWNyZXROYW1lIiwidXNlRXhpc3RpbmdTZWNyZXQiLCJ3b3JrZmxvd0V4aXN0cyIsInNlbGVjdGVkV29ya2Zsb3dzIiwic2VsZWN0ZWRBcGlLZXlPcHRpb24iLCJhdXRoVHlwZSIsIkluc3RhbGxHaXRIdWJBcHAiLCJwcm9wcyIsIm9uRG9uZSIsIm1lc3NhZ2UiLCJSZWFjdE5vZGUiLCJleGlzdGluZ0FwaUtleSIsInN0YXRlIiwic2V0U3RhdGUiLCJ1c2VFZmZlY3QiLCJjaGVja0dpdEh1YkNMSSIsImdoVmVyc2lvblJlc3VsdCIsInNoZWxsIiwicmVqZWN0IiwiZXhpdENvZGUiLCJwdXNoIiwidGl0bGUiLCJpbnN0cnVjdGlvbnMiLCJhdXRoUmVzdWx0IiwidG9rZW5TY29wZXNNYXRjaCIsInN0ZG91dCIsIm1hdGNoIiwic2NvcGVzIiwibWlzc2luZ1Njb3BlcyIsImluY2x1ZGVzIiwibGVuZ3RoIiwicHJldiIsImVycm9yIiwiam9pbiIsImVycm9yUmVhc29uIiwiZXJyb3JJbnN0cnVjdGlvbnMiLCJydW5TZXR1cEdpdEh1YkFjdGlvbnMiLCJ3b3JrZmxvd0FjdGlvbiIsImVycm9yTWVzc2FnZSIsIkVycm9yIiwicmVhc29uIiwib3BlbkdpdEh1YkFwcEluc3RhbGxhdGlvbiIsImluc3RhbGxVcmwiLCJjaGVja1JlcG9zaXRvcnlQZXJtaXNzaW9ucyIsInJlcG9OYW1lIiwiUHJvbWlzZSIsImhhc0FjY2VzcyIsInJlc3VsdCIsImNvZGUiLCJoYXNBZG1pbiIsInRyaW0iLCJzdGRlcnIiLCJjaGVja0V4aXN0aW5nV29ya2Zsb3dGaWxlIiwiY2hlY2tGaWxlUmVzdWx0IiwiY2hlY2tFeGlzdGluZ1NlY3JldCIsImNoZWNrU2VjcmV0c1Jlc3VsdCIsImxpbmVzIiwic3BsaXQiLCJoYXNBbnRocm9waWNLZXkiLCJzb21lIiwibGluZSIsInRlc3QiLCJoYW5kbGVTdWJtaXQiLCJzZXRUaW1lb3V0IiwicmVwb1dhcm5pbmdzIiwicmVwbGFjZSIsInBlcm1pc3Npb25DaGVjayIsImFsbFdhcm5pbmdzIiwiYXBpS2V5VG9Vc2UiLCJoYW5kbGVSZXBvVXJsQ2hhbmdlIiwidmFsdWUiLCJoYW5kbGVBcGlLZXlDaGFuZ2UiLCJoYW5kbGVBcGlLZXlPcHRpb25DaGFuZ2UiLCJvcHRpb24iLCJoYW5kbGVDcmVhdGVPQXV0aFRva2VuIiwiaGFuZGxlT0F1dGhTdWNjZXNzIiwidG9rZW4iLCJoYW5kbGVPQXV0aENhbmNlbCIsImhhbmRsZVNlY3JldE5hbWVDaGFuZ2UiLCJoYW5kbGVUb2dnbGVVc2VDdXJyZW50UmVwbyIsImhhbmRsZVRvZ2dsZVVzZUV4aXN0aW5nS2V5IiwiaGFuZGxlVG9nZ2xlVXNlRXhpc3RpbmdTZWNyZXQiLCJoYW5kbGVXb3JrZmxvd0FjdGlvbiIsImFjdGlvbiIsImhhbmRsZURpc21pc3NLZXlEb3duIiwiZSIsInByZXZlbnREZWZhdWx0IiwidW5kZWZpbmVkIiwiY2FsbCJdLCJzb3VyY2VzIjpbImluc3RhbGwtZ2l0aHViLWFwcC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY2EgfSBmcm9tICdleGVjYSdcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIHR5cGUgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgbG9nRXZlbnQsXG59IGZyb20gJ3NyYy9zZXJ2aWNlcy9hbmFseXRpY3MvaW5kZXguanMnXG5pbXBvcnQgeyBXb3JrZmxvd011bHRpc2VsZWN0RGlhbG9nIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9Xb3JrZmxvd011bHRpc2VsZWN0RGlhbG9nLmpzJ1xuaW1wb3J0IHsgR0lUSFVCX0FDVElPTl9TRVRVUF9ET0NTX1VSTCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9naXRodWItYXBwLmpzJ1xuaW1wb3J0IHsgdXNlRXhpdE9uQ3RybENEV2l0aEtleWJpbmRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlRXhpdE9uQ3RybENEV2l0aEtleWJpbmRpbmdzLmpzJ1xuaW1wb3J0IHR5cGUgeyBLZXlib2FyZEV2ZW50IH0gZnJvbSAnLi4vLi4vaW5rL2V2ZW50cy9rZXlib2FyZC1ldmVudC5qcydcbmltcG9ydCB7IEJveCB9IGZyb20gJy4uLy4uL2luay5qcydcbmltcG9ydCB0eXBlIHsgTG9jYWxKU1hDb21tYW5kT25Eb25lIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29tbWFuZC5qcydcbmltcG9ydCB7IGdldEFudGhyb3BpY0FwaUtleSwgaXNBbnRocm9waWNBdXRoRW5hYmxlZCB9IGZyb20gJy4uLy4uL3V0aWxzL2F1dGguanMnXG5pbXBvcnQgeyBvcGVuQnJvd3NlciB9IGZyb20gJy4uLy4uL3V0aWxzL2Jyb3dzZXIuanMnXG5pbXBvcnQgeyBleGVjRmlsZU5vVGhyb3cgfSBmcm9tICcuLi8uLi91dGlscy9leGVjRmlsZU5vVGhyb3cuanMnXG5pbXBvcnQgeyBnZXRHaXRodWJSZXBvIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2l0LmpzJ1xuaW1wb3J0IHsgcGx1cmFsIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nVXRpbHMuanMnXG5pbXBvcnQgeyBBcGlLZXlTdGVwIH0gZnJvbSAnLi9BcGlLZXlTdGVwLmpzJ1xuaW1wb3J0IHsgQ2hlY2tFeGlzdGluZ1NlY3JldFN0ZXAgfSBmcm9tICcuL0NoZWNrRXhpc3RpbmdTZWNyZXRTdGVwLmpzJ1xuaW1wb3J0IHsgQ2hlY2tHaXRIdWJTdGVwIH0gZnJvbSAnLi9DaGVja0dpdEh1YlN0ZXAuanMnXG5pbXBvcnQgeyBDaG9vc2VSZXBvU3RlcCB9IGZyb20gJy4vQ2hvb3NlUmVwb1N0ZXAuanMnXG5pbXBvcnQgeyBDcmVhdGluZ1N0ZXAgfSBmcm9tICcuL0NyZWF0aW5nU3RlcC5qcydcbmltcG9ydCB7IEVycm9yU3RlcCB9IGZyb20gJy4vRXJyb3JTdGVwLmpzJ1xuaW1wb3J0IHsgRXhpc3RpbmdXb3JrZmxvd1N0ZXAgfSBmcm9tICcuL0V4aXN0aW5nV29ya2Zsb3dTdGVwLmpzJ1xuaW1wb3J0IHsgSW5zdGFsbEFwcFN0ZXAgfSBmcm9tICcuL0luc3RhbGxBcHBTdGVwLmpzJ1xuaW1wb3J0IHsgT0F1dGhGbG93U3RlcCB9IGZyb20gJy4vT0F1dGhGbG93U3RlcC5qcydcbmltcG9ydCB7IFN1Y2Nlc3NTdGVwIH0gZnJvbSAnLi9TdWNjZXNzU3RlcC5qcydcbmltcG9ydCB7IHNldHVwR2l0SHViQWN0aW9ucyB9IGZyb20gJy4vc2V0dXBHaXRIdWJBY3Rpb25zLmpzJ1xuaW1wb3J0IHR5cGUgeyBTdGF0ZSwgV2FybmluZywgV29ya2Zsb3cgfSBmcm9tICcuL3R5cGVzLmpzJ1xuaW1wb3J0IHsgV2FybmluZ3NTdGVwIH0gZnJvbSAnLi9XYXJuaW5nc1N0ZXAuanMnXG5cbmNvbnN0IElOSVRJQUxfU1RBVEU6IFN0YXRlID0ge1xuICBzdGVwOiAnY2hlY2stZ2gnLFxuICBzZWxlY3RlZFJlcG9OYW1lOiAnJyxcbiAgY3VycmVudFJlcG86ICcnLFxuICB1c2VDdXJyZW50UmVwbzogZmFsc2UsIC8vIERlZmF1bHQgdG8gZmFsc2UsIHdpbGwgYmUgc2V0IHRvIHRydWUgaWYgcmVwbyBkZXRlY3RlZFxuICBhcGlLZXlPck9BdXRoVG9rZW46ICcnLFxuICB1c2VFeGlzdGluZ0tleTogdHJ1ZSxcbiAgY3VycmVudFdvcmtmbG93SW5zdGFsbFN0ZXA6IDAsXG4gIHdhcm5pbmdzOiBbXSxcbiAgc2VjcmV0RXhpc3RzOiBmYWxzZSxcbiAgc2VjcmV0TmFtZTogJ0FOVEhST1BJQ19BUElfS0VZJyxcbiAgdXNlRXhpc3RpbmdTZWNyZXQ6IHRydWUsXG4gIHdvcmtmbG93RXhpc3RzOiBmYWxzZSxcbiAgc2VsZWN0ZWRXb3JrZmxvd3M6IFsnY2xhdWRlJywgJ2NsYXVkZS1yZXZpZXcnXSBhcyBXb3JrZmxvd1tdLFxuICBzZWxlY3RlZEFwaUtleU9wdGlvbjogJ25ldycgYXMgJ2V4aXN0aW5nJyB8ICduZXcnIHwgJ29hdXRoJyxcbiAgYXV0aFR5cGU6ICdhcGlfa2V5Jyxcbn1cblxuZnVuY3Rpb24gSW5zdGFsbEdpdEh1YkFwcChwcm9wczoge1xuICBvbkRvbmU6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWRcbn0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBbZXhpc3RpbmdBcGlLZXldID0gdXNlU3RhdGUoKCkgPT4gZ2V0QW50aHJvcGljQXBpS2V5KCkpXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGUoe1xuICAgIC4uLklOSVRJQUxfU1RBVEUsXG4gICAgdXNlRXhpc3RpbmdLZXk6ICEhZXhpc3RpbmdBcGlLZXksXG4gICAgc2VsZWN0ZWRBcGlLZXlPcHRpb246IChleGlzdGluZ0FwaUtleVxuICAgICAgPyAnZXhpc3RpbmcnXG4gICAgICA6IGlzQW50aHJvcGljQXV0aEVuYWJsZWQoKVxuICAgICAgICA/ICdvYXV0aCdcbiAgICAgICAgOiAnbmV3JykgYXMgJ2V4aXN0aW5nJyB8ICduZXcnIHwgJ29hdXRoJyxcbiAgfSlcbiAgdXNlRXhpdE9uQ3RybENEV2l0aEtleWJpbmRpbmdzKClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvZ0V2ZW50KCd0ZW5ndV9pbnN0YWxsX2dpdGh1Yl9hcHBfc3RhcnRlZCcsIHt9KVxuICB9LCBbXSlcblxuICBjb25zdCBjaGVja0dpdEh1YkNMSSA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB3YXJuaW5nczogV2FybmluZ1tdID0gW11cblxuICAgIC8vIENoZWNrIGlmIGdoIGlzIGluc3RhbGxlZFxuICAgIGNvbnN0IGdoVmVyc2lvblJlc3VsdCA9IGF3YWl0IGV4ZWNhKCdnaCAtLXZlcnNpb24nLCB7XG4gICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgIHJlamVjdDogZmFsc2UsXG4gICAgfSlcbiAgICBpZiAoZ2hWZXJzaW9uUmVzdWx0LmV4aXRDb2RlICE9PSAwKSB7XG4gICAgICB3YXJuaW5ncy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICdHaXRIdWIgQ0xJIG5vdCBmb3VuZCcsXG4gICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgJ0dpdEh1YiBDTEkgKGdoKSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW5zdGFsbGVkIG9yIGFjY2Vzc2libGUuJyxcbiAgICAgICAgaW5zdHJ1Y3Rpb25zOiBbXG4gICAgICAgICAgJ0luc3RhbGwgR2l0SHViIENMSSBmcm9tIGh0dHBzOi8vY2xpLmdpdGh1Yi5jb20vJyxcbiAgICAgICAgICAnbWFjT1M6IGJyZXcgaW5zdGFsbCBnaCcsXG4gICAgICAgICAgJ1dpbmRvd3M6IHdpbmdldCBpbnN0YWxsIC0taWQgR2l0SHViLmNsaScsXG4gICAgICAgICAgJ0xpbnV4OiBTZWUgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucyBhdCBodHRwczovL2dpdGh1Yi5jb20vY2xpL2NsaSNpbnN0YWxsYXRpb24nLFxuICAgICAgICBdLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBDaGVjayBhdXRoIHN0YXR1c1xuICAgIGNvbnN0IGF1dGhSZXN1bHQgPSBhd2FpdCBleGVjYSgnZ2ggYXV0aCBzdGF0dXMgLWEnLCB7XG4gICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgIHJlamVjdDogZmFsc2UsXG4gICAgfSlcbiAgICBpZiAoYXV0aFJlc3VsdC5leGl0Q29kZSAhPT0gMCkge1xuICAgICAgd2FybmluZ3MucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnR2l0SHViIENMSSBub3QgYXV0aGVudGljYXRlZCcsXG4gICAgICAgIG1lc3NhZ2U6ICdHaXRIdWIgQ0xJIGRvZXMgbm90IGFwcGVhciB0byBiZSBhdXRoZW50aWNhdGVkLicsXG4gICAgICAgIGluc3RydWN0aW9uczogW1xuICAgICAgICAgICdSdW46IGdoIGF1dGggbG9naW4nLFxuICAgICAgICAgICdGb2xsb3cgdGhlIHByb21wdHMgdG8gYXV0aGVudGljYXRlIHdpdGggR2l0SHViJyxcbiAgICAgICAgICAnT3Igc2V0IHVwIGF1dGhlbnRpY2F0aW9uIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciBvdGhlciBtZXRob2RzJyxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENoZWNrIGlmIHJlcXVpcmVkIHNjb3BlcyBhcmUgcHJlc2VudCBpbiB0aGUgVG9rZW4gc2NvcGVzIGxpbmVcbiAgICAgIGNvbnN0IHRva2VuU2NvcGVzTWF0Y2ggPSBhdXRoUmVzdWx0LnN0ZG91dC5tYXRjaCgvVG9rZW4gc2NvcGVzOi4qJC9tKVxuICAgICAgaWYgKHRva2VuU2NvcGVzTWF0Y2gpIHtcbiAgICAgICAgY29uc3Qgc2NvcGVzID0gdG9rZW5TY29wZXNNYXRjaFswXVxuICAgICAgICBjb25zdCBtaXNzaW5nU2NvcGVzOiBzdHJpbmdbXSA9IFtdXG5cbiAgICAgICAgaWYgKCFzY29wZXMuaW5jbHVkZXMoJ3JlcG8nKSkge1xuICAgICAgICAgIG1pc3NpbmdTY29wZXMucHVzaCgncmVwbycpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzY29wZXMuaW5jbHVkZXMoJ3dvcmtmbG93JykpIHtcbiAgICAgICAgICBtaXNzaW5nU2NvcGVzLnB1c2goJ3dvcmtmbG93JylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtaXNzaW5nU2NvcGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAvLyBNaXNzaW5nIHJlcXVpcmVkIHNjb3BlcyAtIGV4aXQgaW1tZWRpYXRlbHlcbiAgICAgICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgc3RlcDogJ2Vycm9yJyxcbiAgICAgICAgICAgIGVycm9yOiBgR2l0SHViIENMSSBpcyBtaXNzaW5nIHJlcXVpcmVkIHBlcm1pc3Npb25zOiAke21pc3NpbmdTY29wZXMuam9pbignLCAnKX0uYCxcbiAgICAgICAgICAgIGVycm9yUmVhc29uOiAnTWlzc2luZyByZXF1aXJlZCBzY29wZXMnLFxuICAgICAgICAgICAgZXJyb3JJbnN0cnVjdGlvbnM6IFtcbiAgICAgICAgICAgICAgYFlvdXIgR2l0SHViIENMSSBhdXRoZW50aWNhdGlvbiBpcyBtaXNzaW5nIHRoZSBcIiR7bWlzc2luZ1Njb3Blcy5qb2luKCdcIiBhbmQgXCInKX1cIiAke3BsdXJhbChtaXNzaW5nU2NvcGVzLmxlbmd0aCwgJ3Njb3BlJyl9IG5lZWRlZCB0byBtYW5hZ2UgR2l0SHViIEFjdGlvbnMgYW5kIHNlY3JldHMuYCxcbiAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICdUbyBmaXggdGhpcywgcnVuOicsXG4gICAgICAgICAgICAgICcgIGdoIGF1dGggcmVmcmVzaCAtaCBnaXRodWIuY29tIC1zIHJlcG8sd29ya2Zsb3cnLFxuICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgJ1RoaXMgd2lsbCBhZGQgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyB0byBtYW5hZ2Ugd29ya2Zsb3dzIGFuZCBzZWNyZXRzLicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgaW4gYSBnaXQgcmVwbyBhbmQgZ2V0IHJlbW90ZSBVUkxcbiAgICBjb25zdCBjdXJyZW50UmVwbyA9IChhd2FpdCBnZXRHaXRodWJSZXBvKCkpID8/ICcnXG5cbiAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0ZXBfY29tcGxldGVkJywge1xuICAgICAgc3RlcDogJ2NoZWNrLWdoJyBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgIH0pXG5cbiAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgd2FybmluZ3MsXG4gICAgICBjdXJyZW50UmVwbyxcbiAgICAgIHNlbGVjdGVkUmVwb05hbWU6IGN1cnJlbnRSZXBvLFxuICAgICAgdXNlQ3VycmVudFJlcG86ICEhY3VycmVudFJlcG8sIC8vIFNldCB0byBmYWxzZSBpZiBubyByZXBvIGRldGVjdGVkXG4gICAgICBzdGVwOiB3YXJuaW5ncy5sZW5ndGggPiAwID8gJ3dhcm5pbmdzJyA6ICdjaG9vc2UtcmVwbycsXG4gICAgfSkpXG4gIH0sIFtdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlLnN0ZXAgPT09ICdjaGVjay1naCcpIHtcbiAgICAgIHZvaWQgY2hlY2tHaXRIdWJDTEkoKVxuICAgIH1cbiAgfSwgW3N0YXRlLnN0ZXAsIGNoZWNrR2l0SHViQ0xJXSlcblxuICBjb25zdCBydW5TZXR1cEdpdEh1YkFjdGlvbnMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoYXBpS2V5T3JPQXV0aFRva2VuOiBzdHJpbmcgfCBudWxsLCBzZWNyZXROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgc3RlcDogJ2NyZWF0aW5nJyxcbiAgICAgICAgY3VycmVudFdvcmtmbG93SW5zdGFsbFN0ZXA6IDAsXG4gICAgICB9KSlcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2V0dXBHaXRIdWJBY3Rpb25zKFxuICAgICAgICAgIHN0YXRlLnNlbGVjdGVkUmVwb05hbWUsXG4gICAgICAgICAgYXBpS2V5T3JPQXV0aFRva2VuLFxuICAgICAgICAgIHNlY3JldE5hbWUsXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoe1xuICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICBjdXJyZW50V29ya2Zsb3dJbnN0YWxsU3RlcDogcHJldi5jdXJyZW50V29ya2Zsb3dJbnN0YWxsU3RlcCArIDEsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXRlLndvcmtmbG93QWN0aW9uID09PSAnc2tpcCcsXG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRXb3JrZmxvd3MsXG4gICAgICAgICAgc3RhdGUuYXV0aFR5cGUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdXNlQ3VycmVudFJlcG86IHN0YXRlLnVzZUN1cnJlbnRSZXBvLFxuICAgICAgICAgICAgd29ya2Zsb3dFeGlzdHM6IHN0YXRlLndvcmtmbG93RXhpc3RzLFxuICAgICAgICAgICAgc2VjcmV0RXhpc3RzOiBzdGF0ZS5zZWNyZXRFeGlzdHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0ZXBfY29tcGxldGVkJywge1xuICAgICAgICAgIHN0ZXA6ICdjcmVhdGluZycgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzdGVwOiAnc3VjY2VzcycgfSkpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPVxuICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgID8gZXJyb3IubWVzc2FnZVxuICAgICAgICAgICAgOiAnRmFpbGVkIHRvIHNldCB1cCBHaXRIdWIgQWN0aW9ucydcblxuICAgICAgICBpZiAoZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCd3b3JrZmxvdyBmaWxlIGFscmVhZHkgZXhpc3RzJykpIHtcbiAgICAgICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX2Vycm9yJywge1xuICAgICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgICAnd29ya2Zsb3dfZmlsZV9leGlzdHMnIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgc3RlcDogJ2Vycm9yJyxcbiAgICAgICAgICAgIGVycm9yOiAnQSBDbGF1ZGUgd29ya2Zsb3cgZmlsZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGlzIHJlcG9zaXRvcnkuJyxcbiAgICAgICAgICAgIGVycm9yUmVhc29uOiAnV29ya2Zsb3cgZmlsZSBjb25mbGljdCcsXG4gICAgICAgICAgICBlcnJvckluc3RydWN0aW9uczogW1xuICAgICAgICAgICAgICAnVGhlIGZpbGUgLmdpdGh1Yi93b3JrZmxvd3MvY2xhdWRlLnltbCBhbHJlYWR5IGV4aXN0cycsXG4gICAgICAgICAgICAgICdZb3UgY2FuIGVpdGhlcjonLFxuICAgICAgICAgICAgICAnICAxLiBEZWxldGUgdGhlIGV4aXN0aW5nIGZpbGUgYW5kIHJ1biB0aGlzIGNvbW1hbmQgYWdhaW4nLFxuICAgICAgICAgICAgICAnICAyLiBVcGRhdGUgdGhlIGV4aXN0aW5nIGZpbGUgbWFudWFsbHkgdXNpbmcgdGhlIHRlbXBsYXRlIGZyb206JyxcbiAgICAgICAgICAgICAgYCAgICAgJHtHSVRIVUJfQUNUSU9OX1NFVFVQX0RPQ1NfVVJMfWAsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9pbnN0YWxsX2dpdGh1Yl9hcHBfZXJyb3InLCB7XG4gICAgICAgICAgICByZWFzb246XG4gICAgICAgICAgICAgICdzZXR1cF9naXRodWJfYWN0aW9uc19mYWlsZWQnIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICBzdGVwOiAnZXJyb3InLFxuICAgICAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGVycm9yUmVhc29uOiAnR2l0SHViIEFjdGlvbnMgc2V0dXAgZmFpbGVkJyxcbiAgICAgICAgICAgIGVycm9ySW5zdHJ1Y3Rpb25zOiBbXSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgc3RhdGUuc2VsZWN0ZWRSZXBvTmFtZSxcbiAgICAgIHN0YXRlLndvcmtmbG93QWN0aW9uLFxuICAgICAgc3RhdGUuc2VsZWN0ZWRXb3JrZmxvd3MsXG4gICAgICBzdGF0ZS51c2VDdXJyZW50UmVwbyxcbiAgICAgIHN0YXRlLndvcmtmbG93RXhpc3RzLFxuICAgICAgc3RhdGUuc2VjcmV0RXhpc3RzLFxuICAgICAgc3RhdGUuYXV0aFR5cGUsXG4gICAgXSxcbiAgKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW5HaXRIdWJBcHBJbnN0YWxsYXRpb24oKSB7XG4gICAgY29uc3QgaW5zdGFsbFVybCA9ICdodHRwczovL2dpdGh1Yi5jb20vYXBwcy9jbGF1ZGUnXG4gICAgYXdhaXQgb3BlbkJyb3dzZXIoaW5zdGFsbFVybClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNoZWNrUmVwb3NpdG9yeVBlcm1pc3Npb25zKFxuICAgIHJlcG9OYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8eyBoYXNBY2Nlc3M6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nIH0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY0ZpbGVOb1Rocm93KCdnaCcsIFtcbiAgICAgICAgJ2FwaScsXG4gICAgICAgIGByZXBvcy8ke3JlcG9OYW1lfWAsXG4gICAgICAgICctLWpxJyxcbiAgICAgICAgJy5wZXJtaXNzaW9ucy5hZG1pbicsXG4gICAgICBdKVxuXG4gICAgICBpZiAocmVzdWx0LmNvZGUgPT09IDApIHtcbiAgICAgICAgY29uc3QgaGFzQWRtaW4gPSByZXN1bHQuc3Rkb3V0LnRyaW0oKSA9PT0gJ3RydWUnXG4gICAgICAgIHJldHVybiB7IGhhc0FjY2VzczogaGFzQWRtaW4gfVxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHJlc3VsdC5zdGRlcnIuaW5jbHVkZXMoJzQwNCcpIHx8XG4gICAgICAgIHJlc3VsdC5zdGRlcnIuaW5jbHVkZXMoJ05vdCBGb3VuZCcpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoYXNBY2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yOiAncmVwb3NpdG9yeV9ub3RfZm91bmQnLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGhhc0FjY2VzczogZmFsc2UgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHsgaGFzQWNjZXNzOiBmYWxzZSB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gY2hlY2tFeGlzdGluZ1dvcmtmbG93RmlsZShyZXBvTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY2hlY2tGaWxlUmVzdWx0ID0gYXdhaXQgZXhlY0ZpbGVOb1Rocm93KCdnaCcsIFtcbiAgICAgICdhcGknLFxuICAgICAgYHJlcG9zLyR7cmVwb05hbWV9L2NvbnRlbnRzLy5naXRodWIvd29ya2Zsb3dzL2NsYXVkZS55bWxgLFxuICAgICAgJy0tanEnLFxuICAgICAgJy5zaGEnLFxuICAgIF0pXG5cbiAgICByZXR1cm4gY2hlY2tGaWxlUmVzdWx0LmNvZGUgPT09IDBcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNoZWNrRXhpc3RpbmdTZWNyZXQoKSB7XG4gICAgY29uc3QgY2hlY2tTZWNyZXRzUmVzdWx0ID0gYXdhaXQgZXhlY0ZpbGVOb1Rocm93KCdnaCcsIFtcbiAgICAgICdzZWNyZXQnLFxuICAgICAgJ2xpc3QnLFxuICAgICAgJy0tYXBwJyxcbiAgICAgICdhY3Rpb25zJyxcbiAgICAgICctLXJlcG8nLFxuICAgICAgc3RhdGUuc2VsZWN0ZWRSZXBvTmFtZSxcbiAgICBdKVxuXG4gICAgaWYgKGNoZWNrU2VjcmV0c1Jlc3VsdC5jb2RlID09PSAwKSB7XG4gICAgICBjb25zdCBsaW5lcyA9IGNoZWNrU2VjcmV0c1Jlc3VsdC5zdGRvdXQuc3BsaXQoJ1xcbicpXG4gICAgICBjb25zdCBoYXNBbnRocm9waWNLZXkgPSBsaW5lcy5zb21lKChsaW5lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIC9eQU5USFJPUElDX0FQSV9LRVlcXHMrLy50ZXN0KGxpbmUpXG4gICAgICB9KVxuXG4gICAgICBpZiAoaGFzQW50aHJvcGljS2V5KSB7XG4gICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIHNlY3JldEV4aXN0czogdHJ1ZSxcbiAgICAgICAgICBzdGVwOiAnY2hlY2stZXhpc3Rpbmctc2VjcmV0JyxcbiAgICAgICAgfSkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBObyBleGlzdGluZyBzZWNyZXQgZm91bmRcbiAgICAgICAgaWYgKGV4aXN0aW5nQXBpS2V5KSB7XG4gICAgICAgICAgLy8gVXNlciBoYXMgbG9jYWwga2V5LCBza2lwIHRvIGNyZWF0aW5nIHdpdGggaXRcbiAgICAgICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgYXBpS2V5T3JPQXV0aFRva2VuOiBleGlzdGluZ0FwaUtleSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nS2V5OiB0cnVlLFxuICAgICAgICAgIH0pKVxuICAgICAgICAgIGF3YWl0IHJ1blNldHVwR2l0SHViQWN0aW9ucyhleGlzdGluZ0FwaUtleSwgc3RhdGUuc2VjcmV0TmFtZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBObyBsb2NhbCBrZXksIGdvIHRvIEFQSSBrZXkgc3RlcFxuICAgICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHsgLi4ucHJldiwgc3RlcDogJ2FwaS1rZXknIH0pKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEVycm9yIGNoZWNraW5nIHNlY3JldHNcbiAgICAgIGlmIChleGlzdGluZ0FwaUtleSkge1xuICAgICAgICAvLyBVc2VyIGhhcyBsb2NhbCBrZXksIHNraXAgdG8gY3JlYXRpbmcgd2l0aCBpdFxuICAgICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBhcGlLZXlPck9BdXRoVG9rZW46IGV4aXN0aW5nQXBpS2V5LFxuICAgICAgICAgIHVzZUV4aXN0aW5nS2V5OiB0cnVlLFxuICAgICAgICB9KSlcbiAgICAgICAgYXdhaXQgcnVuU2V0dXBHaXRIdWJBY3Rpb25zKGV4aXN0aW5nQXBpS2V5LCBzdGF0ZS5zZWNyZXROYW1lKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm8gbG9jYWwga2V5LCBnbyB0byBBUEkga2V5IHN0ZXBcbiAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzdGVwOiAnYXBpLWtleScgfSkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChzdGF0ZS5zdGVwID09PSAnd2FybmluZ3MnKSB7XG4gICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0ZXBfY29tcGxldGVkJywge1xuICAgICAgICBzdGVwOiAnd2FybmluZ3MnIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICB9KVxuICAgICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzdGVwOiAnaW5zdGFsbC1hcHAnIH0pKVxuICAgICAgc2V0VGltZW91dChvcGVuR2l0SHViQXBwSW5zdGFsbGF0aW9uLCAwKVxuICAgIH0gZWxzZSBpZiAoc3RhdGUuc3RlcCA9PT0gJ2Nob29zZS1yZXBvJykge1xuICAgICAgbGV0IHJlcG9OYW1lID0gc3RhdGUudXNlQ3VycmVudFJlcG9cbiAgICAgICAgPyBzdGF0ZS5jdXJyZW50UmVwb1xuICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVwb05hbWVcblxuICAgICAgaWYgKCFyZXBvTmFtZS50cmltKCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcG9XYXJuaW5nczogV2FybmluZ1tdID0gW11cblxuICAgICAgaWYgKHJlcG9OYW1lLmluY2x1ZGVzKCdnaXRodWIuY29tJykpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSByZXBvTmFtZS5tYXRjaCgvZ2l0aHViXFwuY29tWzovXShbXi9dK1xcL1teL10rKShcXC5naXQpPyQvKVxuICAgICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgICAgcmVwb1dhcm5pbmdzLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6ICdJbnZhbGlkIEdpdEh1YiBVUkwgZm9ybWF0JyxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdUaGUgcmVwb3NpdG9yeSBVUkwgZm9ybWF0IGFwcGVhcnMgdG8gYmUgaW52YWxpZC4nLFxuICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zOiBbXG4gICAgICAgICAgICAgICdVc2UgZm9ybWF0OiBvd25lci9yZXBvIG9yIGh0dHBzOi8vZ2l0aHViLmNvbS9vd25lci9yZXBvJyxcbiAgICAgICAgICAgICAgJ0V4YW1wbGU6IGFudGhyb3BpY3MvY2xhdWRlLWNsaScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVwb05hbWUgPSBtYXRjaFsxXT8ucmVwbGFjZSgvXFwuZ2l0JC8sICcnKSB8fCAnJ1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVwb05hbWUuaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICByZXBvV2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgdGl0bGU6ICdSZXBvc2l0b3J5IGZvcm1hdCB3YXJuaW5nJyxcbiAgICAgICAgICBtZXNzYWdlOiAnUmVwb3NpdG9yeSBzaG91bGQgYmUgaW4gZm9ybWF0IFwib3duZXIvcmVwb1wiJyxcbiAgICAgICAgICBpbnN0cnVjdGlvbnM6IFtcbiAgICAgICAgICAgICdVc2UgZm9ybWF0OiBvd25lci9yZXBvJyxcbiAgICAgICAgICAgICdFeGFtcGxlOiBhbnRocm9waWNzL2NsYXVkZS1jbGknLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBlcm1pc3Npb25DaGVjayA9IGF3YWl0IGNoZWNrUmVwb3NpdG9yeVBlcm1pc3Npb25zKHJlcG9OYW1lKVxuXG4gICAgICBpZiAocGVybWlzc2lvbkNoZWNrLmVycm9yID09PSAncmVwb3NpdG9yeV9ub3RfZm91bmQnKSB7XG4gICAgICAgIHJlcG9XYXJuaW5ncy5wdXNoKHtcbiAgICAgICAgICB0aXRsZTogJ1JlcG9zaXRvcnkgbm90IGZvdW5kJyxcbiAgICAgICAgICBtZXNzYWdlOiBgUmVwb3NpdG9yeSAke3JlcG9OYW1lfSB3YXMgbm90IGZvdW5kIG9yIHlvdSBkb24ndCBoYXZlIGFjY2Vzcy5gLFxuICAgICAgICAgIGluc3RydWN0aW9uczogW1xuICAgICAgICAgICAgYENoZWNrIHRoYXQgdGhlIHJlcG9zaXRvcnkgbmFtZSBpcyBjb3JyZWN0OiAke3JlcG9OYW1lfWAsXG4gICAgICAgICAgICAnRW5zdXJlIHlvdSBoYXZlIGFjY2VzcyB0byB0aGlzIHJlcG9zaXRvcnknLFxuICAgICAgICAgICAgJ0ZvciBwcml2YXRlIHJlcG9zaXRvcmllcywgbWFrZSBzdXJlIHlvdXIgR2l0SHViIHRva2VuIGhhcyB0aGUgXCJyZXBvXCIgc2NvcGUnLFxuICAgICAgICAgICAgJ1lvdSBjYW4gYWRkIHRoZSByZXBvIHNjb3BlIHdpdGg6IGdoIGF1dGggcmVmcmVzaCAtaCBnaXRodWIuY29tIC1zIHJlcG8sd29ya2Zsb3cnLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKCFwZXJtaXNzaW9uQ2hlY2suaGFzQWNjZXNzKSB7XG4gICAgICAgIHJlcG9XYXJuaW5ncy5wdXNoKHtcbiAgICAgICAgICB0aXRsZTogJ0FkbWluIHBlcm1pc3Npb25zIHJlcXVpcmVkJyxcbiAgICAgICAgICBtZXNzYWdlOiBgWW91IG1pZ2h0IG5lZWQgYWRtaW4gcGVybWlzc2lvbnMgb24gJHtyZXBvTmFtZX0gdG8gc2V0IHVwIEdpdEh1YiBBY3Rpb25zLmAsXG4gICAgICAgICAgaW5zdHJ1Y3Rpb25zOiBbXG4gICAgICAgICAgICAnUmVwb3NpdG9yeSBhZG1pbnMgY2FuIGluc3RhbGwgR2l0SHViIEFwcHMgYW5kIHNldCBzZWNyZXRzJyxcbiAgICAgICAgICAgICdBc2sgYSByZXBvc2l0b3J5IGFkbWluIHRvIHJ1biB0aGlzIGNvbW1hbmQgaWYgc2V0dXAgZmFpbHMnLFxuICAgICAgICAgICAgJ0FsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBtYW51YWwgc2V0dXAgaW5zdHJ1Y3Rpb25zJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB3b3JrZmxvd0V4aXN0cyA9IGF3YWl0IGNoZWNrRXhpc3RpbmdXb3JrZmxvd0ZpbGUocmVwb05hbWUpXG5cbiAgICAgIGlmIChyZXBvV2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBhbGxXYXJuaW5ncyA9IFsuLi5zdGF0ZS53YXJuaW5ncywgLi4ucmVwb1dhcm5pbmdzXVxuICAgICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBzZWxlY3RlZFJlcG9OYW1lOiByZXBvTmFtZSxcbiAgICAgICAgICB3b3JrZmxvd0V4aXN0cyxcbiAgICAgICAgICB3YXJuaW5nczogYWxsV2FybmluZ3MsXG4gICAgICAgICAgc3RlcDogJ3dhcm5pbmdzJyxcbiAgICAgICAgfSkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0ZXBfY29tcGxldGVkJywge1xuICAgICAgICAgIHN0ZXA6ICdjaG9vc2UtcmVwbycgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoe1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgc2VsZWN0ZWRSZXBvTmFtZTogcmVwb05hbWUsXG4gICAgICAgICAgd29ya2Zsb3dFeGlzdHMsXG4gICAgICAgICAgc3RlcDogJ2luc3RhbGwtYXBwJyxcbiAgICAgICAgfSkpXG4gICAgICAgIHNldFRpbWVvdXQob3BlbkdpdEh1YkFwcEluc3RhbGxhdGlvbiwgMClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN0YXRlLnN0ZXAgPT09ICdpbnN0YWxsLWFwcCcpIHtcbiAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9pbnN0YWxsX2dpdGh1Yl9hcHBfc3RlcF9jb21wbGV0ZWQnLCB7XG4gICAgICAgIHN0ZXA6ICdpbnN0YWxsLWFwcCcgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICAgIH0pXG4gICAgICBpZiAoc3RhdGUud29ya2Zsb3dFeGlzdHMpIHtcbiAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzdGVwOiAnY2hlY2stZXhpc3Rpbmctd29ya2Zsb3cnIH0pKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzdGVwOiAnc2VsZWN0LXdvcmtmbG93cycgfSkpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5zdGVwID09PSAnY2hlY2stZXhpc3Rpbmctd29ya2Zsb3cnKSB7XG4gICAgICByZXR1cm5cbiAgICB9IGVsc2UgaWYgKHN0YXRlLnN0ZXAgPT09ICdzZWxlY3Qtd29ya2Zsb3dzJykge1xuICAgICAgLy8gSGFuZGxlZCBieSB0aGUgV29ya2Zsb3dNdWx0aXNlbGVjdERpYWxvZyBjb21wb25lbnRcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAoc3RhdGUuc3RlcCA9PT0gJ2NoZWNrLWV4aXN0aW5nLXNlY3JldCcpIHtcbiAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9pbnN0YWxsX2dpdGh1Yl9hcHBfc3RlcF9jb21wbGV0ZWQnLCB7XG4gICAgICAgIHN0ZXA6ICdjaGVjay1leGlzdGluZy1zZWNyZXQnIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICB9KVxuICAgICAgaWYgKHN0YXRlLnVzZUV4aXN0aW5nU2VjcmV0KSB7XG4gICAgICAgIGF3YWl0IHJ1blNldHVwR2l0SHViQWN0aW9ucyhudWxsLCBzdGF0ZS5zZWNyZXROYW1lKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXNlciB3YW50cyB0byB1c2UgYSBuZXcgc2VjcmV0IG5hbWUgd2l0aCB0aGVpciBBUEkga2V5XG4gICAgICAgIGF3YWl0IHJ1blNldHVwR2l0SHViQWN0aW9ucyhzdGF0ZS5hcGlLZXlPck9BdXRoVG9rZW4sIHN0YXRlLnNlY3JldE5hbWUpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5zdGVwID09PSAnYXBpLWtleScpIHtcbiAgICAgIC8vIEluIHRoZSBuZXcgZmxvdywgYXBpLWtleSBzdGVwIG9ubHkgYXBwZWFycyB3aGVuIHVzZXIgaGFzIG5vIGV4aXN0aW5nIGtleVxuICAgICAgLy8gVGhleSBlaXRoZXIgZW50ZXJlZCBhIG5ldyBrZXkgb3Igd2lsbCBjcmVhdGUgT0F1dGggdG9rZW5cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZEFwaUtleU9wdGlvbiA9PT0gJ29hdXRoJykge1xuICAgICAgICAvLyBPQXV0aCBmbG93IGFscmVhZHkgaGFuZGxlZCBieSBoYW5kbGVDcmVhdGVPQXV0aFRva2VuXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBJZiB1c2VyIHNlbGVjdGVkICdleGlzdGluZycgb3B0aW9uLCB1c2UgdGhlIGV4aXN0aW5nIEFQSSBrZXlcbiAgICAgIGNvbnN0IGFwaUtleVRvVXNlID1cbiAgICAgICAgc3RhdGUuc2VsZWN0ZWRBcGlLZXlPcHRpb24gPT09ICdleGlzdGluZydcbiAgICAgICAgICA/IGV4aXN0aW5nQXBpS2V5XG4gICAgICAgICAgOiBzdGF0ZS5hcGlLZXlPck9BdXRoVG9rZW5cblxuICAgICAgaWYgKCFhcGlLZXlUb1VzZSkge1xuICAgICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX2Vycm9yJywge1xuICAgICAgICAgIHJlYXNvbjpcbiAgICAgICAgICAgICdhcGlfa2V5X21pc3NpbmcnIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgIH0pXG4gICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIHN0ZXA6ICdlcnJvcicsXG4gICAgICAgICAgZXJyb3I6ICdBUEkga2V5IGlzIHJlcXVpcmVkJyxcbiAgICAgICAgfSkpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBTdG9yZSB0aGUgQVBJIGtleSBiZWluZyB1c2VkIChlaXRoZXIgZXhpc3Rpbmcgb3IgbmV3bHkgZW50ZXJlZClcbiAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgYXBpS2V5T3JPQXV0aFRva2VuOiBhcGlLZXlUb1VzZSxcbiAgICAgICAgdXNlRXhpc3RpbmdLZXk6IHN0YXRlLnNlbGVjdGVkQXBpS2V5T3B0aW9uID09PSAnZXhpc3RpbmcnLFxuICAgICAgfSkpXG5cbiAgICAgIC8vIENoZWNrIGlmIEFOVEhST1BJQ19BUElfS0VZIHNlY3JldCBhbHJlYWR5IGV4aXN0c1xuICAgICAgY29uc3QgY2hlY2tTZWNyZXRzUmVzdWx0ID0gYXdhaXQgZXhlY0ZpbGVOb1Rocm93KCdnaCcsIFtcbiAgICAgICAgJ3NlY3JldCcsXG4gICAgICAgICdsaXN0JyxcbiAgICAgICAgJy0tYXBwJyxcbiAgICAgICAgJ2FjdGlvbnMnLFxuICAgICAgICAnLS1yZXBvJyxcbiAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXBvTmFtZSxcbiAgICAgIF0pXG5cbiAgICAgIGlmIChjaGVja1NlY3JldHNSZXN1bHQuY29kZSA9PT0gMCkge1xuICAgICAgICBjb25zdCBsaW5lcyA9IGNoZWNrU2VjcmV0c1Jlc3VsdC5zdGRvdXQuc3BsaXQoJ1xcbicpXG4gICAgICAgIGNvbnN0IGhhc0FudGhyb3BpY0tleSA9IGxpbmVzLnNvbWUoKGxpbmU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJldHVybiAvXkFOVEhST1BJQ19BUElfS0VZXFxzKy8udGVzdChsaW5lKVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChoYXNBbnRocm9waWNLZXkpIHtcbiAgICAgICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0ZXBfY29tcGxldGVkJywge1xuICAgICAgICAgICAgc3RlcDogJ2FwaS1rZXknIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgc2VjcmV0RXhpc3RzOiB0cnVlLFxuICAgICAgICAgICAgc3RlcDogJ2NoZWNrLWV4aXN0aW5nLXNlY3JldCcsXG4gICAgICAgICAgfSkpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nRXZlbnQoJ3Rlbmd1X2luc3RhbGxfZ2l0aHViX2FwcF9zdGVwX2NvbXBsZXRlZCcsIHtcbiAgICAgICAgICAgIHN0ZXA6ICdhcGkta2V5JyBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLy8gTm8gZXhpc3Rpbmcgc2VjcmV0LCBwcm9jZWVkIHRvIGNyZWF0aW5nXG4gICAgICAgICAgYXdhaXQgcnVuU2V0dXBHaXRIdWJBY3Rpb25zKGFwaUtleVRvVXNlLCBzdGF0ZS5zZWNyZXROYW1lKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0ZXBfY29tcGxldGVkJywge1xuICAgICAgICAgIHN0ZXA6ICdhcGkta2V5JyBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgICAgICB9KVxuICAgICAgICAvLyBFcnJvciBjaGVja2luZyBzZWNyZXRzLCBwcm9jZWVkIGFueXdheVxuICAgICAgICBhd2FpdCBydW5TZXR1cEdpdEh1YkFjdGlvbnMoYXBpS2V5VG9Vc2UsIHN0YXRlLnNlY3JldE5hbWUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUmVwb1VybENoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzZWxlY3RlZFJlcG9OYW1lOiB2YWx1ZSB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUFwaUtleUNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBhcGlLZXlPck9BdXRoVG9rZW46IHZhbHVlIH0pKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXBpS2V5T3B0aW9uQ2hhbmdlID0gKG9wdGlvbjogJ2V4aXN0aW5nJyB8ICduZXcnIHwgJ29hdXRoJykgPT4ge1xuICAgIHNldFN0YXRlKHByZXYgPT4gKHsgLi4ucHJldiwgc2VsZWN0ZWRBcGlLZXlPcHRpb246IG9wdGlvbiB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNyZWF0ZU9BdXRoVG9rZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgbG9nRXZlbnQoJ3Rlbmd1X2luc3RhbGxfZ2l0aHViX2FwcF9zdGVwX2NvbXBsZXRlZCcsIHtcbiAgICAgIHN0ZXA6ICdhcGkta2V5JyBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgIH0pXG4gICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzdGVwOiAnb2F1dGgtZmxvdycgfSkpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZU9BdXRoU3VjY2VzcyA9IHVzZUNhbGxiYWNrKFxuICAgICh0b2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0ZXBfY29tcGxldGVkJywge1xuICAgICAgICBzdGVwOiAnb2F1dGgtZmxvdycgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICAgIH0pXG4gICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGFwaUtleU9yT0F1dGhUb2tlbjogdG9rZW4sXG4gICAgICAgIHVzZUV4aXN0aW5nS2V5OiBmYWxzZSxcbiAgICAgICAgc2VjcmV0TmFtZTogJ0NMQVVERV9DT0RFX09BVVRIX1RPS0VOJyxcbiAgICAgICAgYXV0aFR5cGU6ICdvYXV0aF90b2tlbicsXG4gICAgICB9KSlcbiAgICAgIHZvaWQgcnVuU2V0dXBHaXRIdWJBY3Rpb25zKHRva2VuLCAnQ0xBVURFX0NPREVfT0FVVEhfVE9LRU4nKVxuICAgIH0sXG4gICAgW3J1blNldHVwR2l0SHViQWN0aW9uc10sXG4gIClcblxuICBjb25zdCBoYW5kbGVPQXV0aENhbmNlbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRTdGF0ZShwcmV2ID0+ICh7IC4uLnByZXYsIHN0ZXA6ICdhcGkta2V5JyB9KSlcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlU2VjcmV0TmFtZUNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKHZhbHVlICYmICEvXlthLXpBLVowLTlfXSskLy50ZXN0KHZhbHVlKSkgcmV0dXJuXG4gICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzZWNyZXROYW1lOiB2YWx1ZSB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZVVzZUN1cnJlbnRSZXBvID0gKHVzZUN1cnJlbnRSZXBvOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U3RhdGUocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIHVzZUN1cnJlbnRSZXBvLFxuICAgICAgc2VsZWN0ZWRSZXBvTmFtZTogdXNlQ3VycmVudFJlcG8gPyBwcmV2LmN1cnJlbnRSZXBvIDogJycsXG4gICAgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVUb2dnbGVVc2VFeGlzdGluZ0tleSA9ICh1c2VFeGlzdGluZ0tleTogYm9vbGVhbikgPT4ge1xuICAgIHNldFN0YXRlKHByZXYgPT4gKHsgLi4ucHJldiwgdXNlRXhpc3RpbmdLZXkgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVUb2dnbGVVc2VFeGlzdGluZ1NlY3JldCA9ICh1c2VFeGlzdGluZ1NlY3JldDogYm9vbGVhbikgPT4ge1xuICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICB1c2VFeGlzdGluZ1NlY3JldCxcbiAgICAgIHNlY3JldE5hbWU6IHVzZUV4aXN0aW5nU2VjcmV0ID8gJ0FOVEhST1BJQ19BUElfS0VZJyA6ICcnLFxuICAgIH0pKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlV29ya2Zsb3dBY3Rpb24gPSBhc3luYyAoYWN0aW9uOiAndXBkYXRlJyB8ICdza2lwJyB8ICdleGl0JykgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09ICdleGl0Jykge1xuICAgICAgcHJvcHMub25Eb25lKCdJbnN0YWxsYXRpb24gY2FuY2VsbGVkIGJ5IHVzZXInKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbG9nRXZlbnQoJ3Rlbmd1X2luc3RhbGxfZ2l0aHViX2FwcF9zdGVwX2NvbXBsZXRlZCcsIHtcbiAgICAgIHN0ZXA6ICdjaGVjay1leGlzdGluZy13b3JrZmxvdycgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICB9KVxuXG4gICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCB3b3JrZmxvd0FjdGlvbjogYWN0aW9uIH0pKVxuXG4gICAgaWYgKGFjdGlvbiA9PT0gJ3NraXAnIHx8IGFjdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIC8vIENoZWNrIGlmIHVzZXIgaGFzIGV4aXN0aW5nIGxvY2FsIEFQSSBrZXlcbiAgICAgIGlmIChleGlzdGluZ0FwaUtleSkge1xuICAgICAgICBhd2FpdCBjaGVja0V4aXN0aW5nU2VjcmV0KClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vIGxvY2FsIGtleSwgZ28gc3RyYWlnaHQgdG8gQVBJIGtleSBzdGVwXG4gICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHsgLi4ucHJldiwgc3RlcDogJ2FwaS1rZXknIH0pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZURpc21pc3NLZXlEb3duKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBpZiAoc3RhdGUuc3RlcCA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX2NvbXBsZXRlZCcsIHt9KVxuICAgIH1cbiAgICBwcm9wcy5vbkRvbmUoXG4gICAgICBzdGF0ZS5zdGVwID09PSAnc3VjY2VzcydcbiAgICAgICAgPyAnR2l0SHViIEFjdGlvbnMgc2V0dXAgY29tcGxldGUhJ1xuICAgICAgICA6IHN0YXRlLmVycm9yXG4gICAgICAgICAgPyBgQ291bGRuJ3QgaW5zdGFsbCBHaXRIdWIgQXBwOiAke3N0YXRlLmVycm9yfVxcbkZvciBtYW51YWwgc2V0dXAgaW5zdHJ1Y3Rpb25zLCBzZWU6ICR7R0lUSFVCX0FDVElPTl9TRVRVUF9ET0NTX1VSTH1gXG4gICAgICAgICAgOiBgR2l0SHViIEFwcCBpbnN0YWxsYXRpb24gZmFpbGVkXFxuRm9yIG1hbnVhbCBzZXR1cCBpbnN0cnVjdGlvbnMsIHNlZTogJHtHSVRIVUJfQUNUSU9OX1NFVFVQX0RPQ1NfVVJMfWAsXG4gICAgKVxuICB9XG5cbiAgc3dpdGNoIChzdGF0ZS5zdGVwKSB7XG4gICAgY2FzZSAnY2hlY2stZ2gnOlxuICAgICAgcmV0dXJuIDxDaGVja0dpdEh1YlN0ZXAgLz5cbiAgICBjYXNlICd3YXJuaW5ncyc6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8V2FybmluZ3NTdGVwIHdhcm5pbmdzPXtzdGF0ZS53YXJuaW5nc30gb25Db250aW51ZT17aGFuZGxlU3VibWl0fSAvPlxuICAgICAgKVxuICAgIGNhc2UgJ2Nob29zZS1yZXBvJzpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDaG9vc2VSZXBvU3RlcFxuICAgICAgICAgIGN1cnJlbnRSZXBvPXtzdGF0ZS5jdXJyZW50UmVwb31cbiAgICAgICAgICB1c2VDdXJyZW50UmVwbz17c3RhdGUudXNlQ3VycmVudFJlcG99XG4gICAgICAgICAgcmVwb1VybD17c3RhdGUuc2VsZWN0ZWRSZXBvTmFtZX1cbiAgICAgICAgICBvblJlcG9VcmxDaGFuZ2U9e2hhbmRsZVJlcG9VcmxDaGFuZ2V9XG4gICAgICAgICAgb25Ub2dnbGVVc2VDdXJyZW50UmVwbz17aGFuZGxlVG9nZ2xlVXNlQ3VycmVudFJlcG99XG4gICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICBjYXNlICdpbnN0YWxsLWFwcCc6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8SW5zdGFsbEFwcFN0ZXBcbiAgICAgICAgICByZXBvVXJsPXtzdGF0ZS5zZWxlY3RlZFJlcG9OYW1lfVxuICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgY2FzZSAnY2hlY2stZXhpc3Rpbmctd29ya2Zsb3cnOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEV4aXN0aW5nV29ya2Zsb3dTdGVwXG4gICAgICAgICAgcmVwb05hbWU9e3N0YXRlLnNlbGVjdGVkUmVwb05hbWV9XG4gICAgICAgICAgb25TZWxlY3RBY3Rpb249e2hhbmRsZVdvcmtmbG93QWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIGNhc2UgJ2NoZWNrLWV4aXN0aW5nLXNlY3JldCc6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q2hlY2tFeGlzdGluZ1NlY3JldFN0ZXBcbiAgICAgICAgICB1c2VFeGlzdGluZ1NlY3JldD17c3RhdGUudXNlRXhpc3RpbmdTZWNyZXR9XG4gICAgICAgICAgc2VjcmV0TmFtZT17c3RhdGUuc2VjcmV0TmFtZX1cbiAgICAgICAgICBvblRvZ2dsZVVzZUV4aXN0aW5nU2VjcmV0PXtoYW5kbGVUb2dnbGVVc2VFeGlzdGluZ1NlY3JldH1cbiAgICAgICAgICBvblNlY3JldE5hbWVDaGFuZ2U9e2hhbmRsZVNlY3JldE5hbWVDaGFuZ2V9XG4gICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICBjYXNlICdhcGkta2V5JzpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxBcGlLZXlTdGVwXG4gICAgICAgICAgZXhpc3RpbmdBcGlLZXk9e2V4aXN0aW5nQXBpS2V5fVxuICAgICAgICAgIHVzZUV4aXN0aW5nS2V5PXtzdGF0ZS51c2VFeGlzdGluZ0tleX1cbiAgICAgICAgICBhcGlLZXlPck9BdXRoVG9rZW49e3N0YXRlLmFwaUtleU9yT0F1dGhUb2tlbn1cbiAgICAgICAgICBvbkFwaUtleUNoYW5nZT17aGFuZGxlQXBpS2V5Q2hhbmdlfVxuICAgICAgICAgIG9uVG9nZ2xlVXNlRXhpc3RpbmdLZXk9e2hhbmRsZVRvZ2dsZVVzZUV4aXN0aW5nS2V5fVxuICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgb25DcmVhdGVPQXV0aFRva2VuPXtcbiAgICAgICAgICAgIGlzQW50aHJvcGljQXV0aEVuYWJsZWQoKSA/IGhhbmRsZUNyZWF0ZU9BdXRoVG9rZW4gOiB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgc2VsZWN0ZWRPcHRpb249e3N0YXRlLnNlbGVjdGVkQXBpS2V5T3B0aW9ufVxuICAgICAgICAgIG9uU2VsZWN0T3B0aW9uPXtoYW5kbGVBcGlLZXlPcHRpb25DaGFuZ2V9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgY2FzZSAnY3JlYXRpbmcnOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENyZWF0aW5nU3RlcFxuICAgICAgICAgIGN1cnJlbnRXb3JrZmxvd0luc3RhbGxTdGVwPXtzdGF0ZS5jdXJyZW50V29ya2Zsb3dJbnN0YWxsU3RlcH1cbiAgICAgICAgICBzZWNyZXRFeGlzdHM9e3N0YXRlLnNlY3JldEV4aXN0c31cbiAgICAgICAgICB1c2VFeGlzdGluZ1NlY3JldD17c3RhdGUudXNlRXhpc3RpbmdTZWNyZXR9XG4gICAgICAgICAgc2VjcmV0TmFtZT17c3RhdGUuc2VjcmV0TmFtZX1cbiAgICAgICAgICBza2lwV29ya2Zsb3c9e3N0YXRlLndvcmtmbG93QWN0aW9uID09PSAnc2tpcCd9XG4gICAgICAgICAgc2VsZWN0ZWRXb3JrZmxvd3M9e3N0YXRlLnNlbGVjdGVkV29ya2Zsb3dzfVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJveCB0YWJJbmRleD17MH0gYXV0b0ZvY3VzIG9uS2V5RG93bj17aGFuZGxlRGlzbWlzc0tleURvd259PlxuICAgICAgICAgIDxTdWNjZXNzU3RlcFxuICAgICAgICAgICAgc2VjcmV0RXhpc3RzPXtzdGF0ZS5zZWNyZXRFeGlzdHN9XG4gICAgICAgICAgICB1c2VFeGlzdGluZ1NlY3JldD17c3RhdGUudXNlRXhpc3RpbmdTZWNyZXR9XG4gICAgICAgICAgICBzZWNyZXROYW1lPXtzdGF0ZS5zZWNyZXROYW1lfVxuICAgICAgICAgICAgc2tpcFdvcmtmbG93PXtzdGF0ZS53b3JrZmxvd0FjdGlvbiA9PT0gJ3NraXAnfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKVxuICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCb3ggdGFiSW5kZXg9ezB9IGF1dG9Gb2N1cyBvbktleURvd249e2hhbmRsZURpc21pc3NLZXlEb3dufT5cbiAgICAgICAgICA8RXJyb3JTdGVwXG4gICAgICAgICAgICBlcnJvcj17c3RhdGUuZXJyb3J9XG4gICAgICAgICAgICBlcnJvclJlYXNvbj17c3RhdGUuZXJyb3JSZWFzb259XG4gICAgICAgICAgICBlcnJvckluc3RydWN0aW9ucz17c3RhdGUuZXJyb3JJbnN0cnVjdGlvbnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApXG4gICAgY2FzZSAnc2VsZWN0LXdvcmtmbG93cyc6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8V29ya2Zsb3dNdWx0aXNlbGVjdERpYWxvZ1xuICAgICAgICAgIGRlZmF1bHRTZWxlY3Rpb25zPXtzdGF0ZS5zZWxlY3RlZFdvcmtmbG93c31cbiAgICAgICAgICBvblN1Ym1pdD17c2VsZWN0ZWRXb3JrZmxvd3MgPT4ge1xuICAgICAgICAgICAgbG9nRXZlbnQoJ3Rlbmd1X2luc3RhbGxfZ2l0aHViX2FwcF9zdGVwX2NvbXBsZXRlZCcsIHtcbiAgICAgICAgICAgICAgc3RlcDogJ3NlbGVjdC13b3JrZmxvd3MnIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoe1xuICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICBzZWxlY3RlZFdvcmtmbG93cyxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgZXhpc3RpbmcgbG9jYWwgQVBJIGtleVxuICAgICAgICAgICAgaWYgKGV4aXN0aW5nQXBpS2V5KSB7XG4gICAgICAgICAgICAgIHZvaWQgY2hlY2tFeGlzdGluZ1NlY3JldCgpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBObyBsb2NhbCBrZXksIGdvIHN0cmFpZ2h0IHRvIEFQSSBrZXkgc3RlcFxuICAgICAgICAgICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7IC4uLnByZXYsIHN0ZXA6ICdhcGkta2V5JyB9KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIGNhc2UgJ29hdXRoLWZsb3cnOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPE9BdXRoRmxvd1N0ZXBcbiAgICAgICAgICBvblN1Y2Nlc3M9e2hhbmRsZU9BdXRoU3VjY2Vzc31cbiAgICAgICAgICBvbkNhbmNlbD17aGFuZGxlT0F1dGhDYW5jZWx9XG4gICAgICAgIC8+XG4gICAgICApXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNhbGwoXG4gIG9uRG9uZTogTG9jYWxKU1hDb21tYW5kT25Eb25lLFxuKTogUHJvbWlzZTxSZWFjdC5SZWFjdE5vZGU+IHtcbiAgcmV0dXJuIDxJbnN0YWxsR2l0SHViQXBwIG9uRG9uZT17b25Eb25lfSAvPlxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxLQUFLLFFBQVEsT0FBTztBQUM3QixPQUFPQyxLQUFLLElBQUlDLFdBQVcsRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDcEQsU0FDRSxLQUFLQywwREFBMEQsRUFDL0RDLFFBQVEsUUFDSCxpQ0FBaUM7QUFDeEMsU0FBU0MseUJBQXlCLFFBQVEsK0NBQStDO0FBQ3pGLFNBQVNDLDRCQUE0QixRQUFRLCtCQUErQjtBQUM1RSxTQUFTQyw4QkFBOEIsUUFBUSwrQ0FBK0M7QUFDOUYsY0FBY0MsYUFBYSxRQUFRLG9DQUFvQztBQUN2RSxTQUFTQyxHQUFHLFFBQVEsY0FBYztBQUNsQyxjQUFjQyxxQkFBcUIsUUFBUSx3QkFBd0I7QUFDbkUsU0FBU0Msa0JBQWtCLEVBQUVDLHNCQUFzQixRQUFRLHFCQUFxQjtBQUNoRixTQUFTQyxXQUFXLFFBQVEsd0JBQXdCO0FBQ3BELFNBQVNDLGVBQWUsUUFBUSxnQ0FBZ0M7QUFDaEUsU0FBU0MsYUFBYSxRQUFRLG9CQUFvQjtBQUNsRCxTQUFTQyxNQUFNLFFBQVEsNEJBQTRCO0FBQ25ELFNBQVNDLFVBQVUsUUFBUSxpQkFBaUI7QUFDNUMsU0FBU0MsdUJBQXVCLFFBQVEsOEJBQThCO0FBQ3RFLFNBQVNDLGVBQWUsUUFBUSxzQkFBc0I7QUFDdEQsU0FBU0MsY0FBYyxRQUFRLHFCQUFxQjtBQUNwRCxTQUFTQyxZQUFZLFFBQVEsbUJBQW1CO0FBQ2hELFNBQVNDLFNBQVMsUUFBUSxnQkFBZ0I7QUFDMUMsU0FBU0Msb0JBQW9CLFFBQVEsMkJBQTJCO0FBQ2hFLFNBQVNDLGNBQWMsUUFBUSxxQkFBcUI7QUFDcEQsU0FBU0MsYUFBYSxRQUFRLG9CQUFvQjtBQUNsRCxTQUFTQyxXQUFXLFFBQVEsa0JBQWtCO0FBQzlDLFNBQVNDLGtCQUFrQixRQUFRLHlCQUF5QjtBQUM1RCxjQUFjQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxRQUFRLFlBQVk7QUFDMUQsU0FBU0MsWUFBWSxRQUFRLG1CQUFtQjtBQUVoRCxNQUFNQyxhQUFhLEVBQUVKLEtBQUssR0FBRztFQUMzQkssSUFBSSxFQUFFLFVBQVU7RUFDaEJDLGdCQUFnQixFQUFFLEVBQUU7RUFDcEJDLFdBQVcsRUFBRSxFQUFFO0VBQ2ZDLGNBQWMsRUFBRSxLQUFLO0VBQUU7RUFDdkJDLGtCQUFrQixFQUFFLEVBQUU7RUFDdEJDLGNBQWMsRUFBRSxJQUFJO0VBQ3BCQywwQkFBMEIsRUFBRSxDQUFDO0VBQzdCQyxRQUFRLEVBQUUsRUFBRTtFQUNaQyxZQUFZLEVBQUUsS0FBSztFQUNuQkMsVUFBVSxFQUFFLG1CQUFtQjtFQUMvQkMsaUJBQWlCLEVBQUUsSUFBSTtFQUN2QkMsY0FBYyxFQUFFLEtBQUs7RUFDckJDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxJQUFJZixRQUFRLEVBQUU7RUFDNURnQixvQkFBb0IsRUFBRSxLQUFLLElBQUksVUFBVSxHQUFHLEtBQUssR0FBRyxPQUFPO0VBQzNEQyxRQUFRLEVBQUU7QUFDWixDQUFDO0FBRUQsU0FBU0MsZ0JBQWdCQSxDQUFDQyxLQUFLLEVBQUU7RUFDL0JDLE1BQU0sRUFBRSxDQUFDQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSTtBQUNuQyxDQUFDLENBQUMsRUFBRW5ELEtBQUssQ0FBQ29ELFNBQVMsQ0FBQztFQUNsQixNQUFNLENBQUNDLGNBQWMsQ0FBQyxHQUFHbkQsUUFBUSxDQUFDLE1BQU1TLGtCQUFrQixDQUFDLENBQUMsQ0FBQztFQUM3RCxNQUFNLENBQUMyQyxLQUFLLEVBQUVDLFFBQVEsQ0FBQyxHQUFHckQsUUFBUSxDQUFDO0lBQ2pDLEdBQUc4QixhQUFhO0lBQ2hCTSxjQUFjLEVBQUUsQ0FBQyxDQUFDZSxjQUFjO0lBQ2hDUCxvQkFBb0IsRUFBRSxDQUFDTyxjQUFjLEdBQ2pDLFVBQVUsR0FDVnpDLHNCQUFzQixDQUFDLENBQUMsR0FDdEIsT0FBTyxHQUNQLEtBQUssS0FBSyxVQUFVLEdBQUcsS0FBSyxHQUFHO0VBQ3ZDLENBQUMsQ0FBQztFQUNGTCw4QkFBOEIsQ0FBQyxDQUFDO0VBRWhDUCxLQUFLLENBQUN3RCxTQUFTLENBQUMsTUFBTTtJQUNwQnBELFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUNsRCxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sTUFBTXFELGNBQWMsR0FBR3hELFdBQVcsQ0FBQyxZQUFZO0lBQzdDLE1BQU11QyxRQUFRLEVBQUVYLE9BQU8sRUFBRSxHQUFHLEVBQUU7O0lBRTlCO0lBQ0EsTUFBTTZCLGVBQWUsR0FBRyxNQUFNM0QsS0FBSyxDQUFDLGNBQWMsRUFBRTtNQUNsRDRELEtBQUssRUFBRSxJQUFJO01BQ1hDLE1BQU0sRUFBRTtJQUNWLENBQUMsQ0FBQztJQUNGLElBQUlGLGVBQWUsQ0FBQ0csUUFBUSxLQUFLLENBQUMsRUFBRTtNQUNsQ3JCLFFBQVEsQ0FBQ3NCLElBQUksQ0FBQztRQUNaQyxLQUFLLEVBQUUsc0JBQXNCO1FBQzdCWixPQUFPLEVBQ0wsZ0VBQWdFO1FBQ2xFYSxZQUFZLEVBQUUsQ0FDWixpREFBaUQsRUFDakQsd0JBQXdCLEVBQ3hCLHlDQUF5QyxFQUN6QyxpRkFBaUY7TUFFckYsQ0FBQyxDQUFDO0lBQ0o7O0lBRUE7SUFDQSxNQUFNQyxVQUFVLEdBQUcsTUFBTWxFLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtNQUNsRDRELEtBQUssRUFBRSxJQUFJO01BQ1hDLE1BQU0sRUFBRTtJQUNWLENBQUMsQ0FBQztJQUNGLElBQUlLLFVBQVUsQ0FBQ0osUUFBUSxLQUFLLENBQUMsRUFBRTtNQUM3QnJCLFFBQVEsQ0FBQ3NCLElBQUksQ0FBQztRQUNaQyxLQUFLLEVBQUUsOEJBQThCO1FBQ3JDWixPQUFPLEVBQUUsaURBQWlEO1FBQzFEYSxZQUFZLEVBQUUsQ0FDWixvQkFBb0IsRUFDcEIsZ0RBQWdELEVBQ2hELHVFQUF1RTtNQUUzRSxDQUFDLENBQUM7SUFDSixDQUFDLE1BQU07TUFDTDtNQUNBLE1BQU1FLGdCQUFnQixHQUFHRCxVQUFVLENBQUNFLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDLG1CQUFtQixDQUFDO01BQ3JFLElBQUlGLGdCQUFnQixFQUFFO1FBQ3BCLE1BQU1HLE1BQU0sR0FBR0gsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU1JLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBRWxDLElBQUksQ0FBQ0QsTUFBTSxDQUFDRSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7VUFDNUJELGFBQWEsQ0FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUM1QjtRQUNBLElBQUksQ0FBQ08sTUFBTSxDQUFDRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7VUFDaENELGFBQWEsQ0FBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNoQztRQUVBLElBQUlRLGFBQWEsQ0FBQ0UsTUFBTSxHQUFHLENBQUMsRUFBRTtVQUM1QjtVQUNBakIsUUFBUSxDQUFDa0IsSUFBSSxLQUFLO1lBQ2hCLEdBQUdBLElBQUk7WUFDUHhDLElBQUksRUFBRSxPQUFPO1lBQ2J5QyxLQUFLLEVBQUUsK0NBQStDSixhQUFhLENBQUNLLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRztZQUNqRkMsV0FBVyxFQUFFLHlCQUF5QjtZQUN0Q0MsaUJBQWlCLEVBQUUsQ0FDakIsa0RBQWtEUCxhQUFhLENBQUNLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSzNELE1BQU0sQ0FBQ3NELGFBQWEsQ0FBQ0UsTUFBTSxFQUFFLE9BQU8sQ0FBQywrQ0FBK0MsRUFDeEssRUFBRSxFQUNGLG1CQUFtQixFQUNuQixrREFBa0QsRUFDbEQsRUFBRSxFQUNGLDBFQUEwRTtVQUU5RSxDQUFDLENBQUMsQ0FBQztVQUNIO1FBQ0Y7TUFDRjtJQUNGOztJQUVBO0lBQ0EsTUFBTXJDLFdBQVcsR0FBRyxDQUFDLE1BQU1wQixhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUU7SUFFakRYLFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRTtNQUNsRDZCLElBQUksRUFBRSxVQUFVLElBQUk5QjtJQUN0QixDQUFDLENBQUM7SUFFRm9ELFFBQVEsQ0FBQ2tCLE1BQUksS0FBSztNQUNoQixHQUFHQSxNQUFJO01BQ1BqQyxRQUFRO01BQ1JMLFdBQVc7TUFDWEQsZ0JBQWdCLEVBQUVDLFdBQVc7TUFDN0JDLGNBQWMsRUFBRSxDQUFDLENBQUNELFdBQVc7TUFBRTtNQUMvQkYsSUFBSSxFQUFFTyxRQUFRLENBQUNnQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLFVBQVUsR0FBRztJQUMzQyxDQUFDLENBQUMsQ0FBQztFQUNMLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTnhFLEtBQUssQ0FBQ3dELFNBQVMsQ0FBQyxNQUFNO0lBQ3BCLElBQUlGLEtBQUssQ0FBQ3JCLElBQUksS0FBSyxVQUFVLEVBQUU7TUFDN0IsS0FBS3dCLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZCO0VBQ0YsQ0FBQyxFQUFFLENBQUNILEtBQUssQ0FBQ3JCLElBQUksRUFBRXdCLGNBQWMsQ0FBQyxDQUFDO0VBRWhDLE1BQU1xQixxQkFBcUIsR0FBRzdFLFdBQVcsQ0FDdkMsT0FBT29DLGtCQUFrQixFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUVLLFVBQVUsRUFBRSxNQUFNLEtBQUs7SUFDL0RhLFFBQVEsQ0FBQ2tCLE1BQUksS0FBSztNQUNoQixHQUFHQSxNQUFJO01BQ1B4QyxJQUFJLEVBQUUsVUFBVTtNQUNoQk0sMEJBQTBCLEVBQUU7SUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJO01BQ0YsTUFBTVosa0JBQWtCLENBQ3RCMkIsS0FBSyxDQUFDcEIsZ0JBQWdCLEVBQ3RCRyxrQkFBa0IsRUFDbEJLLFVBQVUsRUFDVixNQUFNO1FBQ0phLFFBQVEsQ0FBQ2tCLE1BQUksS0FBSztVQUNoQixHQUFHQSxNQUFJO1VBQ1BsQywwQkFBMEIsRUFBRWtDLE1BQUksQ0FBQ2xDLDBCQUEwQixHQUFHO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO01BQ0wsQ0FBQyxFQUNEZSxLQUFLLENBQUN5QixjQUFjLEtBQUssTUFBTSxFQUMvQnpCLEtBQUssQ0FBQ1QsaUJBQWlCLEVBQ3ZCUyxLQUFLLENBQUNQLFFBQVEsRUFDZDtRQUNFWCxjQUFjLEVBQUVrQixLQUFLLENBQUNsQixjQUFjO1FBQ3BDUSxjQUFjLEVBQUVVLEtBQUssQ0FBQ1YsY0FBYztRQUNwQ0gsWUFBWSxFQUFFYSxLQUFLLENBQUNiO01BQ3RCLENBQ0YsQ0FBQztNQUNEckMsUUFBUSxDQUFDLHlDQUF5QyxFQUFFO1FBQ2xENkIsSUFBSSxFQUFFLFVBQVUsSUFBSTlCO01BQ3RCLENBQUMsQ0FBQztNQUNGb0QsUUFBUSxDQUFDa0IsTUFBSSxLQUFLO1FBQUUsR0FBR0EsTUFBSTtRQUFFeEMsSUFBSSxFQUFFO01BQVUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLE9BQU95QyxLQUFLLEVBQUU7TUFDZCxNQUFNTSxZQUFZLEdBQ2hCTixLQUFLLFlBQVlPLEtBQUssR0FDbEJQLEtBQUssQ0FBQ3ZCLE9BQU8sR0FDYixpQ0FBaUM7TUFFdkMsSUFBSTZCLFlBQVksQ0FBQ1QsUUFBUSxDQUFDLDhCQUE4QixDQUFDLEVBQUU7UUFDekRuRSxRQUFRLENBQUMsZ0NBQWdDLEVBQUU7VUFDekM4RSxNQUFNLEVBQ0osc0JBQXNCLElBQUkvRTtRQUM5QixDQUFDLENBQUM7UUFDRm9ELFFBQVEsQ0FBQ2tCLE1BQUksS0FBSztVQUNoQixHQUFHQSxNQUFJO1VBQ1B4QyxJQUFJLEVBQUUsT0FBTztVQUNieUMsS0FBSyxFQUFFLDJEQUEyRDtVQUNsRUUsV0FBVyxFQUFFLHdCQUF3QjtVQUNyQ0MsaUJBQWlCLEVBQUUsQ0FDakIsc0RBQXNELEVBQ3RELGlCQUFpQixFQUNqQiwwREFBMEQsRUFDMUQsaUVBQWlFLEVBQ2pFLFFBQVF2RSw0QkFBNEIsRUFBRTtRQUUxQyxDQUFDLENBQUMsQ0FBQztNQUNMLENBQUMsTUFBTTtRQUNMRixRQUFRLENBQUMsZ0NBQWdDLEVBQUU7VUFDekM4RSxNQUFNLEVBQ0osNkJBQTZCLElBQUkvRTtRQUNyQyxDQUFDLENBQUM7UUFFRm9ELFFBQVEsQ0FBQ2tCLE1BQUksS0FBSztVQUNoQixHQUFHQSxNQUFJO1VBQ1B4QyxJQUFJLEVBQUUsT0FBTztVQUNieUMsS0FBSyxFQUFFTSxZQUFZO1VBQ25CSixXQUFXLEVBQUUsNkJBQTZCO1VBQzFDQyxpQkFBaUIsRUFBRTtRQUNyQixDQUFDLENBQUMsQ0FBQztNQUNMO0lBQ0Y7RUFDRixDQUFDLEVBQ0QsQ0FDRXZCLEtBQUssQ0FBQ3BCLGdCQUFnQixFQUN0Qm9CLEtBQUssQ0FBQ3lCLGNBQWMsRUFDcEJ6QixLQUFLLENBQUNULGlCQUFpQixFQUN2QlMsS0FBSyxDQUFDbEIsY0FBYyxFQUNwQmtCLEtBQUssQ0FBQ1YsY0FBYyxFQUNwQlUsS0FBSyxDQUFDYixZQUFZLEVBQ2xCYSxLQUFLLENBQUNQLFFBQVEsQ0FFbEIsQ0FBQztFQUVELGVBQWVvQyx5QkFBeUJBLENBQUEsRUFBRztJQUN6QyxNQUFNQyxVQUFVLEdBQUcsZ0NBQWdDO0lBQ25ELE1BQU12RSxXQUFXLENBQUN1RSxVQUFVLENBQUM7RUFDL0I7RUFFQSxlQUFlQywwQkFBMEJBLENBQ3ZDQyxRQUFRLEVBQUUsTUFBTSxDQUNqQixFQUFFQyxPQUFPLENBQUM7SUFBRUMsU0FBUyxFQUFFLE9BQU87SUFBRWQsS0FBSyxDQUFDLEVBQUUsTUFBTTtFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUk7TUFDRixNQUFNZSxNQUFNLEdBQUcsTUFBTTNFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FDekMsS0FBSyxFQUNMLFNBQVN3RSxRQUFRLEVBQUUsRUFDbkIsTUFBTSxFQUNOLG9CQUFvQixDQUNyQixDQUFDO01BRUYsSUFBSUcsTUFBTSxDQUFDQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLE1BQU1DLFFBQVEsR0FBR0YsTUFBTSxDQUFDdEIsTUFBTSxDQUFDeUIsSUFBSSxDQUFDLENBQUMsS0FBSyxNQUFNO1FBQ2hELE9BQU87VUFBRUosU0FBUyxFQUFFRztRQUFTLENBQUM7TUFDaEM7TUFFQSxJQUNFRixNQUFNLENBQUNJLE1BQU0sQ0FBQ3RCLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFDN0JrQixNQUFNLENBQUNJLE1BQU0sQ0FBQ3RCLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFDbkM7UUFDQSxPQUFPO1VBQ0xpQixTQUFTLEVBQUUsS0FBSztVQUNoQmQsS0FBSyxFQUFFO1FBQ1QsQ0FBQztNQUNIO01BRUEsT0FBTztRQUFFYyxTQUFTLEVBQUU7TUFBTSxDQUFDO0lBQzdCLENBQUMsQ0FBQyxNQUFNO01BQ04sT0FBTztRQUFFQSxTQUFTLEVBQUU7TUFBTSxDQUFDO0lBQzdCO0VBQ0Y7RUFFQSxlQUFlTSx5QkFBeUJBLENBQUNSLFVBQVEsRUFBRSxNQUFNLENBQUMsRUFBRUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNFLE1BQU1RLGVBQWUsR0FBRyxNQUFNakYsZUFBZSxDQUFDLElBQUksRUFBRSxDQUNsRCxLQUFLLEVBQ0wsU0FBU3dFLFVBQVEsd0NBQXdDLEVBQ3pELE1BQU0sRUFDTixNQUFNLENBQ1AsQ0FBQztJQUVGLE9BQU9TLGVBQWUsQ0FBQ0wsSUFBSSxLQUFLLENBQUM7RUFDbkM7RUFFQSxlQUFlTSxtQkFBbUJBLENBQUEsRUFBRztJQUNuQyxNQUFNQyxrQkFBa0IsR0FBRyxNQUFNbkYsZUFBZSxDQUFDLElBQUksRUFBRSxDQUNyRCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE9BQU8sRUFDUCxTQUFTLEVBQ1QsUUFBUSxFQUNSd0MsS0FBSyxDQUFDcEIsZ0JBQWdCLENBQ3ZCLENBQUM7SUFFRixJQUFJK0Qsa0JBQWtCLENBQUNQLElBQUksS0FBSyxDQUFDLEVBQUU7TUFDakMsTUFBTVEsS0FBSyxHQUFHRCxrQkFBa0IsQ0FBQzlCLE1BQU0sQ0FBQ2dDLEtBQUssQ0FBQyxJQUFJLENBQUM7TUFDbkQsTUFBTUMsZUFBZSxHQUFHRixLQUFLLENBQUNHLElBQUksQ0FBQyxDQUFDQyxJQUFJLEVBQUUsTUFBTSxLQUFLO1FBQ25ELE9BQU8sdUJBQXVCLENBQUNDLElBQUksQ0FBQ0QsSUFBSSxDQUFDO01BQzNDLENBQUMsQ0FBQztNQUVGLElBQUlGLGVBQWUsRUFBRTtRQUNuQjdDLFFBQVEsQ0FBQ2tCLE1BQUksS0FBSztVQUNoQixHQUFHQSxNQUFJO1VBQ1BoQyxZQUFZLEVBQUUsSUFBSTtVQUNsQlIsSUFBSSxFQUFFO1FBQ1IsQ0FBQyxDQUFDLENBQUM7TUFDTCxDQUFDLE1BQU07UUFDTDtRQUNBLElBQUlvQixjQUFjLEVBQUU7VUFDbEI7VUFDQUUsUUFBUSxDQUFDa0IsTUFBSSxLQUFLO1lBQ2hCLEdBQUdBLE1BQUk7WUFDUHBDLGtCQUFrQixFQUFFZ0IsY0FBYztZQUNsQ2YsY0FBYyxFQUFFO1VBQ2xCLENBQUMsQ0FBQyxDQUFDO1VBQ0gsTUFBTXdDLHFCQUFxQixDQUFDekIsY0FBYyxFQUFFQyxLQUFLLENBQUNaLFVBQVUsQ0FBQztRQUMvRCxDQUFDLE1BQU07VUFDTDtVQUNBYSxRQUFRLENBQUNrQixNQUFJLEtBQUs7WUFBRSxHQUFHQSxNQUFJO1lBQUV4QyxJQUFJLEVBQUU7VUFBVSxDQUFDLENBQUMsQ0FBQztRQUNsRDtNQUNGO0lBQ0YsQ0FBQyxNQUFNO01BQ0w7TUFDQSxJQUFJb0IsY0FBYyxFQUFFO1FBQ2xCO1FBQ0FFLFFBQVEsQ0FBQ2tCLE1BQUksS0FBSztVQUNoQixHQUFHQSxNQUFJO1VBQ1BwQyxrQkFBa0IsRUFBRWdCLGNBQWM7VUFDbENmLGNBQWMsRUFBRTtRQUNsQixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU13QyxxQkFBcUIsQ0FBQ3pCLGNBQWMsRUFBRUMsS0FBSyxDQUFDWixVQUFVLENBQUM7TUFDL0QsQ0FBQyxNQUFNO1FBQ0w7UUFDQWEsUUFBUSxDQUFDa0IsT0FBSSxLQUFLO1VBQUUsR0FBR0EsT0FBSTtVQUFFeEMsSUFBSSxFQUFFO1FBQVUsQ0FBQyxDQUFDLENBQUM7TUFDbEQ7SUFDRjtFQUNGO0VBRUEsTUFBTXVFLFlBQVksR0FBRyxNQUFBQSxDQUFBLEtBQVk7SUFDL0IsSUFBSWxELEtBQUssQ0FBQ3JCLElBQUksS0FBSyxVQUFVLEVBQUU7TUFDN0I3QixRQUFRLENBQUMseUNBQXlDLEVBQUU7UUFDbEQ2QixJQUFJLEVBQUUsVUFBVSxJQUFJOUI7TUFDdEIsQ0FBQyxDQUFDO01BQ0ZvRCxRQUFRLENBQUNrQixPQUFJLEtBQUs7UUFBRSxHQUFHQSxPQUFJO1FBQUV4QyxJQUFJLEVBQUU7TUFBYyxDQUFDLENBQUMsQ0FBQztNQUNwRHdFLFVBQVUsQ0FBQ3RCLHlCQUF5QixFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDLE1BQU0sSUFBSTdCLEtBQUssQ0FBQ3JCLElBQUksS0FBSyxhQUFhLEVBQUU7TUFDdkMsSUFBSXFELFVBQVEsR0FBR2hDLEtBQUssQ0FBQ2xCLGNBQWMsR0FDL0JrQixLQUFLLENBQUNuQixXQUFXLEdBQ2pCbUIsS0FBSyxDQUFDcEIsZ0JBQWdCO01BRTFCLElBQUksQ0FBQ29ELFVBQVEsQ0FBQ00sSUFBSSxDQUFDLENBQUMsRUFBRTtRQUNwQjtNQUNGO01BRUEsTUFBTWMsWUFBWSxFQUFFN0UsT0FBTyxFQUFFLEdBQUcsRUFBRTtNQUVsQyxJQUFJeUQsVUFBUSxDQUFDZixRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7UUFDbkMsTUFBTUgsS0FBSyxHQUFHa0IsVUFBUSxDQUFDbEIsS0FBSyxDQUFDLHdDQUF3QyxDQUFDO1FBQ3RFLElBQUksQ0FBQ0EsS0FBSyxFQUFFO1VBQ1ZzQyxZQUFZLENBQUM1QyxJQUFJLENBQUM7WUFDaEJDLEtBQUssRUFBRSwyQkFBMkI7WUFDbENaLE9BQU8sRUFBRSxrREFBa0Q7WUFDM0RhLFlBQVksRUFBRSxDQUNaLHlEQUF5RCxFQUN6RCxnQ0FBZ0M7VUFFcEMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxNQUFNO1VBQ0xzQixVQUFRLEdBQUdsQixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUV1QyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUU7UUFDbEQ7TUFDRjtNQUVBLElBQUksQ0FBQ3JCLFVBQVEsQ0FBQ2YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzNCbUMsWUFBWSxDQUFDNUMsSUFBSSxDQUFDO1VBQ2hCQyxLQUFLLEVBQUUsMkJBQTJCO1VBQ2xDWixPQUFPLEVBQUUsNkNBQTZDO1VBQ3REYSxZQUFZLEVBQUUsQ0FDWix3QkFBd0IsRUFDeEIsZ0NBQWdDO1FBRXBDLENBQUMsQ0FBQztNQUNKO01BRUEsTUFBTTRDLGVBQWUsR0FBRyxNQUFNdkIsMEJBQTBCLENBQUNDLFVBQVEsQ0FBQztNQUVsRSxJQUFJc0IsZUFBZSxDQUFDbEMsS0FBSyxLQUFLLHNCQUFzQixFQUFFO1FBQ3BEZ0MsWUFBWSxDQUFDNUMsSUFBSSxDQUFDO1VBQ2hCQyxLQUFLLEVBQUUsc0JBQXNCO1VBQzdCWixPQUFPLEVBQUUsY0FBY21DLFVBQVEsMENBQTBDO1VBQ3pFdEIsWUFBWSxFQUFFLENBQ1osOENBQThDc0IsVUFBUSxFQUFFLEVBQ3hELDJDQUEyQyxFQUMzQyw0RUFBNEUsRUFDNUUsaUZBQWlGO1FBRXJGLENBQUMsQ0FBQztNQUNKLENBQUMsTUFBTSxJQUFJLENBQUNzQixlQUFlLENBQUNwQixTQUFTLEVBQUU7UUFDckNrQixZQUFZLENBQUM1QyxJQUFJLENBQUM7VUFDaEJDLEtBQUssRUFBRSw0QkFBNEI7VUFDbkNaLE9BQU8sRUFBRSx1Q0FBdUNtQyxVQUFRLDRCQUE0QjtVQUNwRnRCLFlBQVksRUFBRSxDQUNaLDJEQUEyRCxFQUMzRCwyREFBMkQsRUFDM0QsMERBQTBEO1FBRTlELENBQUMsQ0FBQztNQUNKO01BRUEsTUFBTXBCLGNBQWMsR0FBRyxNQUFNa0QseUJBQXlCLENBQUNSLFVBQVEsQ0FBQztNQUVoRSxJQUFJb0IsWUFBWSxDQUFDbEMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUMzQixNQUFNcUMsV0FBVyxHQUFHLENBQUMsR0FBR3ZELEtBQUssQ0FBQ2QsUUFBUSxFQUFFLEdBQUdrRSxZQUFZLENBQUM7UUFDeERuRCxRQUFRLENBQUNrQixPQUFJLEtBQUs7VUFDaEIsR0FBR0EsT0FBSTtVQUNQdkMsZ0JBQWdCLEVBQUVvRCxVQUFRO1VBQzFCMUMsY0FBYztVQUNkSixRQUFRLEVBQUVxRSxXQUFXO1VBQ3JCNUUsSUFBSSxFQUFFO1FBQ1IsQ0FBQyxDQUFDLENBQUM7TUFDTCxDQUFDLE1BQU07UUFDTDdCLFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRTtVQUNsRDZCLElBQUksRUFBRSxhQUFhLElBQUk5QjtRQUN6QixDQUFDLENBQUM7UUFDRm9ELFFBQVEsQ0FBQ2tCLE9BQUksS0FBSztVQUNoQixHQUFHQSxPQUFJO1VBQ1B2QyxnQkFBZ0IsRUFBRW9ELFVBQVE7VUFDMUIxQyxjQUFjO1VBQ2RYLElBQUksRUFBRTtRQUNSLENBQUMsQ0FBQyxDQUFDO1FBQ0h3RSxVQUFVLENBQUN0Qix5QkFBeUIsRUFBRSxDQUFDLENBQUM7TUFDMUM7SUFDRixDQUFDLE1BQU0sSUFBSTdCLEtBQUssQ0FBQ3JCLElBQUksS0FBSyxhQUFhLEVBQUU7TUFDdkM3QixRQUFRLENBQUMseUNBQXlDLEVBQUU7UUFDbEQ2QixJQUFJLEVBQUUsYUFBYSxJQUFJOUI7TUFDekIsQ0FBQyxDQUFDO01BQ0YsSUFBSW1ELEtBQUssQ0FBQ1YsY0FBYyxFQUFFO1FBQ3hCVyxRQUFRLENBQUNrQixPQUFJLEtBQUs7VUFBRSxHQUFHQSxPQUFJO1VBQUV4QyxJQUFJLEVBQUU7UUFBMEIsQ0FBQyxDQUFDLENBQUM7TUFDbEUsQ0FBQyxNQUFNO1FBQ0xzQixRQUFRLENBQUNrQixPQUFJLEtBQUs7VUFBRSxHQUFHQSxPQUFJO1VBQUV4QyxJQUFJLEVBQUU7UUFBbUIsQ0FBQyxDQUFDLENBQUM7TUFDM0Q7SUFDRixDQUFDLE1BQU0sSUFBSXFCLEtBQUssQ0FBQ3JCLElBQUksS0FBSyx5QkFBeUIsRUFBRTtNQUNuRDtJQUNGLENBQUMsTUFBTSxJQUFJcUIsS0FBSyxDQUFDckIsSUFBSSxLQUFLLGtCQUFrQixFQUFFO01BQzVDO01BQ0E7SUFDRixDQUFDLE1BQU0sSUFBSXFCLEtBQUssQ0FBQ3JCLElBQUksS0FBSyx1QkFBdUIsRUFBRTtNQUNqRDdCLFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRTtRQUNsRDZCLElBQUksRUFBRSx1QkFBdUIsSUFBSTlCO01BQ25DLENBQUMsQ0FBQztNQUNGLElBQUltRCxLQUFLLENBQUNYLGlCQUFpQixFQUFFO1FBQzNCLE1BQU1tQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUV4QixLQUFLLENBQUNaLFVBQVUsQ0FBQztNQUNyRCxDQUFDLE1BQU07UUFDTDtRQUNBLE1BQU1vQyxxQkFBcUIsQ0FBQ3hCLEtBQUssQ0FBQ2pCLGtCQUFrQixFQUFFaUIsS0FBSyxDQUFDWixVQUFVLENBQUM7TUFDekU7SUFDRixDQUFDLE1BQU0sSUFBSVksS0FBSyxDQUFDckIsSUFBSSxLQUFLLFNBQVMsRUFBRTtNQUNuQztNQUNBO01BQ0EsSUFBSXFCLEtBQUssQ0FBQ1Isb0JBQW9CLEtBQUssT0FBTyxFQUFFO1FBQzFDO1FBQ0E7TUFDRjs7TUFFQTtNQUNBLE1BQU1nRSxXQUFXLEdBQ2Z4RCxLQUFLLENBQUNSLG9CQUFvQixLQUFLLFVBQVUsR0FDckNPLGNBQWMsR0FDZEMsS0FBSyxDQUFDakIsa0JBQWtCO01BRTlCLElBQUksQ0FBQ3lFLFdBQVcsRUFBRTtRQUNoQjFHLFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRTtVQUN6QzhFLE1BQU0sRUFDSixpQkFBaUIsSUFBSS9FO1FBQ3pCLENBQUMsQ0FBQztRQUNGb0QsUUFBUSxDQUFDa0IsT0FBSSxLQUFLO1VBQ2hCLEdBQUdBLE9BQUk7VUFDUHhDLElBQUksRUFBRSxPQUFPO1VBQ2J5QyxLQUFLLEVBQUU7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNIO01BQ0Y7O01BRUE7TUFDQW5CLFFBQVEsQ0FBQ2tCLE9BQUksS0FBSztRQUNoQixHQUFHQSxPQUFJO1FBQ1BwQyxrQkFBa0IsRUFBRXlFLFdBQVc7UUFDL0J4RSxjQUFjLEVBQUVnQixLQUFLLENBQUNSLG9CQUFvQixLQUFLO01BQ2pELENBQUMsQ0FBQyxDQUFDOztNQUVIO01BQ0EsTUFBTW1ELG9CQUFrQixHQUFHLE1BQU1uRixlQUFlLENBQUMsSUFBSSxFQUFFLENBQ3JELFFBQVEsRUFDUixNQUFNLEVBQ04sT0FBTyxFQUNQLFNBQVMsRUFDVCxRQUFRLEVBQ1J3QyxLQUFLLENBQUNwQixnQkFBZ0IsQ0FDdkIsQ0FBQztNQUVGLElBQUkrRCxvQkFBa0IsQ0FBQ1AsSUFBSSxLQUFLLENBQUMsRUFBRTtRQUNqQyxNQUFNUSxPQUFLLEdBQUdELG9CQUFrQixDQUFDOUIsTUFBTSxDQUFDZ0MsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNuRCxNQUFNQyxpQkFBZSxHQUFHRixPQUFLLENBQUNHLElBQUksQ0FBQyxDQUFDQyxNQUFJLEVBQUUsTUFBTSxLQUFLO1VBQ25ELE9BQU8sdUJBQXVCLENBQUNDLElBQUksQ0FBQ0QsTUFBSSxDQUFDO1FBQzNDLENBQUMsQ0FBQztRQUVGLElBQUlGLGlCQUFlLEVBQUU7VUFDbkJoRyxRQUFRLENBQUMseUNBQXlDLEVBQUU7WUFDbEQ2QixJQUFJLEVBQUUsU0FBUyxJQUFJOUI7VUFDckIsQ0FBQyxDQUFDO1VBQ0ZvRCxRQUFRLENBQUNrQixPQUFJLEtBQUs7WUFDaEIsR0FBR0EsT0FBSTtZQUNQaEMsWUFBWSxFQUFFLElBQUk7WUFDbEJSLElBQUksRUFBRTtVQUNSLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxNQUFNO1VBQ0w3QixRQUFRLENBQUMseUNBQXlDLEVBQUU7WUFDbEQ2QixJQUFJLEVBQUUsU0FBUyxJQUFJOUI7VUFDckIsQ0FBQyxDQUFDO1VBQ0Y7VUFDQSxNQUFNMkUscUJBQXFCLENBQUNnQyxXQUFXLEVBQUV4RCxLQUFLLENBQUNaLFVBQVUsQ0FBQztRQUM1RDtNQUNGLENBQUMsTUFBTTtRQUNMdEMsUUFBUSxDQUFDLHlDQUF5QyxFQUFFO1VBQ2xENkIsSUFBSSxFQUFFLFNBQVMsSUFBSTlCO1FBQ3JCLENBQUMsQ0FBQztRQUNGO1FBQ0EsTUFBTTJFLHFCQUFxQixDQUFDZ0MsV0FBVyxFQUFFeEQsS0FBSyxDQUFDWixVQUFVLENBQUM7TUFDNUQ7SUFDRjtFQUNGLENBQUM7RUFFRCxNQUFNcUUsbUJBQW1CLEdBQUdBLENBQUNDLEtBQUssRUFBRSxNQUFNLEtBQUs7SUFDN0N6RCxRQUFRLENBQUNrQixPQUFJLEtBQUs7TUFBRSxHQUFHQSxPQUFJO01BQUV2QyxnQkFBZ0IsRUFBRThFO0lBQU0sQ0FBQyxDQUFDLENBQUM7RUFDMUQsQ0FBQztFQUVELE1BQU1DLGtCQUFrQixHQUFHQSxDQUFDRCxPQUFLLEVBQUUsTUFBTSxLQUFLO0lBQzVDekQsUUFBUSxDQUFDa0IsT0FBSSxLQUFLO01BQUUsR0FBR0EsT0FBSTtNQUFFcEMsa0JBQWtCLEVBQUUyRTtJQUFNLENBQUMsQ0FBQyxDQUFDO0VBQzVELENBQUM7RUFFRCxNQUFNRSx3QkFBd0IsR0FBR0EsQ0FBQ0MsTUFBTSxFQUFFLFVBQVUsR0FBRyxLQUFLLEdBQUcsT0FBTyxLQUFLO0lBQ3pFNUQsUUFBUSxDQUFDa0IsT0FBSSxLQUFLO01BQUUsR0FBR0EsT0FBSTtNQUFFM0Isb0JBQW9CLEVBQUVxRTtJQUFPLENBQUMsQ0FBQyxDQUFDO0VBQy9ELENBQUM7RUFFRCxNQUFNQyxzQkFBc0IsR0FBR25ILFdBQVcsQ0FBQyxNQUFNO0lBQy9DRyxRQUFRLENBQUMseUNBQXlDLEVBQUU7TUFDbEQ2QixJQUFJLEVBQUUsU0FBUyxJQUFJOUI7SUFDckIsQ0FBQyxDQUFDO0lBQ0ZvRCxRQUFRLENBQUNrQixPQUFJLEtBQUs7TUFBRSxHQUFHQSxPQUFJO01BQUV4QyxJQUFJLEVBQUU7SUFBYSxDQUFDLENBQUMsQ0FBQztFQUNyRCxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sTUFBTW9GLGtCQUFrQixHQUFHcEgsV0FBVyxDQUNwQyxDQUFDcUgsS0FBSyxFQUFFLE1BQU0sS0FBSztJQUNqQmxILFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRTtNQUNsRDZCLElBQUksRUFBRSxZQUFZLElBQUk5QjtJQUN4QixDQUFDLENBQUM7SUFDRm9ELFFBQVEsQ0FBQ2tCLE9BQUksS0FBSztNQUNoQixHQUFHQSxPQUFJO01BQ1BwQyxrQkFBa0IsRUFBRWlGLEtBQUs7TUFDekJoRixjQUFjLEVBQUUsS0FBSztNQUNyQkksVUFBVSxFQUFFLHlCQUF5QjtNQUNyQ0ssUUFBUSxFQUFFO0lBQ1osQ0FBQyxDQUFDLENBQUM7SUFDSCxLQUFLK0IscUJBQXFCLENBQUN3QyxLQUFLLEVBQUUseUJBQXlCLENBQUM7RUFDOUQsQ0FBQyxFQUNELENBQUN4QyxxQkFBcUIsQ0FDeEIsQ0FBQztFQUVELE1BQU15QyxpQkFBaUIsR0FBR3RILFdBQVcsQ0FBQyxNQUFNO0lBQzFDc0QsUUFBUSxDQUFDa0IsT0FBSSxLQUFLO01BQUUsR0FBR0EsT0FBSTtNQUFFeEMsSUFBSSxFQUFFO0lBQVUsQ0FBQyxDQUFDLENBQUM7RUFDbEQsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLE1BQU11RixzQkFBc0IsR0FBR0EsQ0FBQ1IsT0FBSyxFQUFFLE1BQU0sS0FBSztJQUNoRCxJQUFJQSxPQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FBQ1QsSUFBSSxDQUFDUyxPQUFLLENBQUMsRUFBRTtJQUM3Q3pELFFBQVEsQ0FBQ2tCLE9BQUksS0FBSztNQUFFLEdBQUdBLE9BQUk7TUFBRS9CLFVBQVUsRUFBRXNFO0lBQU0sQ0FBQyxDQUFDLENBQUM7RUFDcEQsQ0FBQztFQUVELE1BQU1TLDBCQUEwQixHQUFHQSxDQUFDckYsY0FBYyxFQUFFLE9BQU8sS0FBSztJQUM5RG1CLFFBQVEsQ0FBQ2tCLE9BQUksS0FBSztNQUNoQixHQUFHQSxPQUFJO01BQ1ByQyxjQUFjO01BQ2RGLGdCQUFnQixFQUFFRSxjQUFjLEdBQUdxQyxPQUFJLENBQUN0QyxXQUFXLEdBQUc7SUFDeEQsQ0FBQyxDQUFDLENBQUM7RUFDTCxDQUFDO0VBRUQsTUFBTXVGLDBCQUEwQixHQUFHQSxDQUFDcEYsY0FBYyxFQUFFLE9BQU8sS0FBSztJQUM5RGlCLFFBQVEsQ0FBQ2tCLE9BQUksS0FBSztNQUFFLEdBQUdBLE9BQUk7TUFBRW5DO0lBQWUsQ0FBQyxDQUFDLENBQUM7RUFDakQsQ0FBQztFQUVELE1BQU1xRiw2QkFBNkIsR0FBR0EsQ0FBQ2hGLGlCQUFpQixFQUFFLE9BQU8sS0FBSztJQUNwRVksUUFBUSxDQUFDa0IsT0FBSSxLQUFLO01BQ2hCLEdBQUdBLE9BQUk7TUFDUDlCLGlCQUFpQjtNQUNqQkQsVUFBVSxFQUFFQyxpQkFBaUIsR0FBRyxtQkFBbUIsR0FBRztJQUN4RCxDQUFDLENBQUMsQ0FBQztFQUNMLENBQUM7RUFFRCxNQUFNaUYsb0JBQW9CLEdBQUcsTUFBQUEsQ0FBT0MsTUFBTSxFQUFFLFFBQVEsR0FBRyxNQUFNLEdBQUcsTUFBTSxLQUFLO0lBQ3pFLElBQUlBLE1BQU0sS0FBSyxNQUFNLEVBQUU7TUFDckI1RSxLQUFLLENBQUNDLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQztNQUM5QztJQUNGO0lBRUE5QyxRQUFRLENBQUMseUNBQXlDLEVBQUU7TUFDbEQ2QixJQUFJLEVBQUUseUJBQXlCLElBQUk5QjtJQUNyQyxDQUFDLENBQUM7SUFFRm9ELFFBQVEsQ0FBQ2tCLE9BQUksS0FBSztNQUFFLEdBQUdBLE9BQUk7TUFBRU0sY0FBYyxFQUFFOEM7SUFBTyxDQUFDLENBQUMsQ0FBQztJQUV2RCxJQUFJQSxNQUFNLEtBQUssTUFBTSxJQUFJQSxNQUFNLEtBQUssUUFBUSxFQUFFO01BQzVDO01BQ0EsSUFBSXhFLGNBQWMsRUFBRTtRQUNsQixNQUFNMkMsbUJBQW1CLENBQUMsQ0FBQztNQUM3QixDQUFDLE1BQU07UUFDTDtRQUNBekMsUUFBUSxDQUFDa0IsT0FBSSxLQUFLO1VBQUUsR0FBR0EsT0FBSTtVQUFFeEMsSUFBSSxFQUFFO1FBQVUsQ0FBQyxDQUFDLENBQUM7TUFDbEQ7SUFDRjtFQUNGLENBQUM7RUFFRCxTQUFTNkYsb0JBQW9CQSxDQUFDQyxDQUFDLEVBQUV2SCxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUM7SUFDcER1SCxDQUFDLENBQUNDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xCLElBQUkxRSxLQUFLLENBQUNyQixJQUFJLEtBQUssU0FBUyxFQUFFO01BQzVCN0IsUUFBUSxDQUFDLG9DQUFvQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BEO0lBQ0E2QyxLQUFLLENBQUNDLE1BQU0sQ0FDVkksS0FBSyxDQUFDckIsSUFBSSxLQUFLLFNBQVMsR0FDcEIsZ0NBQWdDLEdBQ2hDcUIsS0FBSyxDQUFDb0IsS0FBSyxHQUNULGdDQUFnQ3BCLEtBQUssQ0FBQ29CLEtBQUsseUNBQXlDcEUsNEJBQTRCLEVBQUUsR0FDbEgsdUVBQXVFQSw0QkFBNEIsRUFDM0csQ0FBQztFQUNIO0VBRUEsUUFBUWdELEtBQUssQ0FBQ3JCLElBQUk7SUFDaEIsS0FBSyxVQUFVO01BQ2IsT0FBTyxDQUFDLGVBQWUsR0FBRztJQUM1QixLQUFLLFVBQVU7TUFDYixPQUNFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDcUIsS0FBSyxDQUFDZCxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQ2dFLFlBQVksQ0FBQyxHQUFHO0lBRXhFLEtBQUssYUFBYTtNQUNoQixPQUNFLENBQUMsY0FBYyxDQUNiLFdBQVcsQ0FBQyxDQUFDbEQsS0FBSyxDQUFDbkIsV0FBVyxDQUFDLENBQy9CLGNBQWMsQ0FBQyxDQUFDbUIsS0FBSyxDQUFDbEIsY0FBYyxDQUFDLENBQ3JDLE9BQU8sQ0FBQyxDQUFDa0IsS0FBSyxDQUFDcEIsZ0JBQWdCLENBQUMsQ0FDaEMsZUFBZSxDQUFDLENBQUM2RSxtQkFBbUIsQ0FBQyxDQUNyQyxzQkFBc0IsQ0FBQyxDQUFDVSwwQkFBMEIsQ0FBQyxDQUNuRCxRQUFRLENBQUMsQ0FBQ2pCLFlBQVksQ0FBQyxHQUN2QjtJQUVOLEtBQUssYUFBYTtNQUNoQixPQUNFLENBQUMsY0FBYyxDQUNiLE9BQU8sQ0FBQyxDQUFDbEQsS0FBSyxDQUFDcEIsZ0JBQWdCLENBQUMsQ0FDaEMsUUFBUSxDQUFDLENBQUNzRSxZQUFZLENBQUMsR0FDdkI7SUFFTixLQUFLLHlCQUF5QjtNQUM1QixPQUNFLENBQUMsb0JBQW9CLENBQ25CLFFBQVEsQ0FBQyxDQUFDbEQsS0FBSyxDQUFDcEIsZ0JBQWdCLENBQUMsQ0FDakMsY0FBYyxDQUFDLENBQUMwRixvQkFBb0IsQ0FBQyxHQUNyQztJQUVOLEtBQUssdUJBQXVCO01BQzFCLE9BQ0UsQ0FBQyx1QkFBdUIsQ0FDdEIsaUJBQWlCLENBQUMsQ0FBQ3RFLEtBQUssQ0FBQ1gsaUJBQWlCLENBQUMsQ0FDM0MsVUFBVSxDQUFDLENBQUNXLEtBQUssQ0FBQ1osVUFBVSxDQUFDLENBQzdCLHlCQUF5QixDQUFDLENBQUNpRiw2QkFBNkIsQ0FBQyxDQUN6RCxrQkFBa0IsQ0FBQyxDQUFDSCxzQkFBc0IsQ0FBQyxDQUMzQyxRQUFRLENBQUMsQ0FBQ2hCLFlBQVksQ0FBQyxHQUN2QjtJQUVOLEtBQUssU0FBUztNQUNaLE9BQ0UsQ0FBQyxVQUFVLENBQ1QsY0FBYyxDQUFDLENBQUNuRCxjQUFjLENBQUMsQ0FDL0IsY0FBYyxDQUFDLENBQUNDLEtBQUssQ0FBQ2hCLGNBQWMsQ0FBQyxDQUNyQyxrQkFBa0IsQ0FBQyxDQUFDZ0IsS0FBSyxDQUFDakIsa0JBQWtCLENBQUMsQ0FDN0MsY0FBYyxDQUFDLENBQUM0RSxrQkFBa0IsQ0FBQyxDQUNuQyxzQkFBc0IsQ0FBQyxDQUFDUywwQkFBMEIsQ0FBQyxDQUNuRCxRQUFRLENBQUMsQ0FBQ2xCLFlBQVksQ0FBQyxDQUN2QixrQkFBa0IsQ0FBQyxDQUNqQjVGLHNCQUFzQixDQUFDLENBQUMsR0FBR3dHLHNCQUFzQixHQUFHYSxTQUN0RCxDQUFDLENBQ0QsY0FBYyxDQUFDLENBQUMzRSxLQUFLLENBQUNSLG9CQUFvQixDQUFDLENBQzNDLGNBQWMsQ0FBQyxDQUFDb0Usd0JBQXdCLENBQUMsR0FDekM7SUFFTixLQUFLLFVBQVU7TUFDYixPQUNFLENBQUMsWUFBWSxDQUNYLDBCQUEwQixDQUFDLENBQUM1RCxLQUFLLENBQUNmLDBCQUEwQixDQUFDLENBQzdELFlBQVksQ0FBQyxDQUFDZSxLQUFLLENBQUNiLFlBQVksQ0FBQyxDQUNqQyxpQkFBaUIsQ0FBQyxDQUFDYSxLQUFLLENBQUNYLGlCQUFpQixDQUFDLENBQzNDLFVBQVUsQ0FBQyxDQUFDVyxLQUFLLENBQUNaLFVBQVUsQ0FBQyxDQUM3QixZQUFZLENBQUMsQ0FBQ1ksS0FBSyxDQUFDeUIsY0FBYyxLQUFLLE1BQU0sQ0FBQyxDQUM5QyxpQkFBaUIsQ0FBQyxDQUFDekIsS0FBSyxDQUFDVCxpQkFBaUIsQ0FBQyxHQUMzQztJQUVOLEtBQUssU0FBUztNQUNaLE9BQ0UsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDaUYsb0JBQW9CLENBQUM7QUFDcEUsVUFBVSxDQUFDLFdBQVcsQ0FDVixZQUFZLENBQUMsQ0FBQ3hFLEtBQUssQ0FBQ2IsWUFBWSxDQUFDLENBQ2pDLGlCQUFpQixDQUFDLENBQUNhLEtBQUssQ0FBQ1gsaUJBQWlCLENBQUMsQ0FDM0MsVUFBVSxDQUFDLENBQUNXLEtBQUssQ0FBQ1osVUFBVSxDQUFDLENBQzdCLFlBQVksQ0FBQyxDQUFDWSxLQUFLLENBQUN5QixjQUFjLEtBQUssTUFBTSxDQUFDO0FBRTFELFFBQVEsRUFBRSxHQUFHLENBQUM7SUFFVixLQUFLLE9BQU87TUFDVixPQUNFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQytDLG9CQUFvQixDQUFDO0FBQ3BFLFVBQVUsQ0FBQyxTQUFTLENBQ1IsS0FBSyxDQUFDLENBQUN4RSxLQUFLLENBQUNvQixLQUFLLENBQUMsQ0FDbkIsV0FBVyxDQUFDLENBQUNwQixLQUFLLENBQUNzQixXQUFXLENBQUMsQ0FDL0IsaUJBQWlCLENBQUMsQ0FBQ3RCLEtBQUssQ0FBQ3VCLGlCQUFpQixDQUFDO0FBRXZELFFBQVEsRUFBRSxHQUFHLENBQUM7SUFFVixLQUFLLGtCQUFrQjtNQUNyQixPQUNFLENBQUMseUJBQXlCLENBQ3hCLGlCQUFpQixDQUFDLENBQUN2QixLQUFLLENBQUNULGlCQUFpQixDQUFDLENBQzNDLFFBQVEsQ0FBQyxDQUFDQSxpQkFBaUIsSUFBSTtRQUM3QnpDLFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRTtVQUNsRDZCLElBQUksRUFBRSxrQkFBa0IsSUFBSTlCO1FBQzlCLENBQUMsQ0FBQztRQUNGb0QsUUFBUSxDQUFDa0IsT0FBSSxLQUFLO1VBQ2hCLEdBQUdBLE9BQUk7VUFDUDVCO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSDtRQUNBLElBQUlRLGNBQWMsRUFBRTtVQUNsQixLQUFLMkMsbUJBQW1CLENBQUMsQ0FBQztRQUM1QixDQUFDLE1BQU07VUFDTDtVQUNBekMsUUFBUSxDQUFDa0IsT0FBSSxLQUFLO1lBQUUsR0FBR0EsT0FBSTtZQUFFeEMsSUFBSSxFQUFFO1VBQVUsQ0FBQyxDQUFDLENBQUM7UUFDbEQ7TUFDRixDQUFDLENBQUMsR0FDRjtJQUVOLEtBQUssWUFBWTtNQUNmLE9BQ0UsQ0FBQyxhQUFhLENBQ1osU0FBUyxDQUFDLENBQUNvRixrQkFBa0IsQ0FBQyxDQUM5QixRQUFRLENBQUMsQ0FBQ0UsaUJBQWlCLENBQUMsR0FDNUI7RUFFUjtBQUNGO0FBRUEsT0FBTyxlQUFlVyxJQUFJQSxDQUN4QmhGLE1BQU0sRUFBRXhDLHFCQUFxQixDQUM5QixFQUFFNkUsT0FBTyxDQUFDdkYsS0FBSyxDQUFDb0QsU0FBUyxDQUFDLENBQUM7RUFDMUIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDRixNQUFNLENBQUMsR0FBRztBQUM3QyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
586
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGVjYSIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJ1c2VTdGF0ZSIsIkFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMiLCJsb2dFdmVudCIsIldvcmtmbG93TXVsdGlzZWxlY3REaWFsb2ciLCJHSVRIVUJfQUNUSU9OX1NFVFVQX0RPQ1NfVVJMIiwidXNlRXhpdE9uQ3RybENEV2l0aEtleWJpbmRpbmdzIiwiS2V5Ym9hcmRFdmVudCIsIkJveCIsIkxvY2FsSlNYQ29tbWFuZE9uRG9uZSIsImdldEFudGhyb3BpY0FwaUtleSIsImlzQW50aHJvcGljQXV0aEVuYWJsZWQiLCJvcGVuQnJvd3NlciIsImV4ZWNGaWxlTm9UaHJvdyIsImdldEdpdGh1YlJlcG8iLCJwbHVyYWwiLCJBcGlLZXlTdGVwIiwiQ2hlY2tFeGlzdGluZ1NlY3JldFN0ZXAiLCJDaGVja0dpdEh1YlN0ZXAiLCJDaG9vc2VSZXBvU3RlcCIsIkNyZWF0aW5nU3RlcCIsIkVycm9yU3RlcCIsIkV4aXN0aW5nV29ya2Zsb3dTdGVwIiwiSW5zdGFsbEFwcFN0ZXAiLCJPQXV0aEZsb3dTdGVwIiwiU3VjY2Vzc1N0ZXAiLCJzZXR1cEdpdEh1YkFjdGlvbnMiLCJTdGF0ZSIsIldhcm5pbmciLCJXb3JrZmxvdyIsIldhcm5pbmdzU3RlcCIsIklOSVRJQUxfU1RBVEUiLCJzdGVwIiwic2VsZWN0ZWRSZXBvTmFtZSIsImN1cnJlbnRSZXBvIiwidXNlQ3VycmVudFJlcG8iLCJhcGlLZXlPck9BdXRoVG9rZW4iLCJ1c2VFeGlzdGluZ0tleSIsImN1cnJlbnRXb3JrZmxvd0luc3RhbGxTdGVwIiwid2FybmluZ3MiLCJzZWNyZXRFeGlzdHMiLCJzZWNyZXROYW1lIiwidXNlRXhpc3RpbmdTZWNyZXQiLCJ3b3JrZmxvd0V4aXN0cyIsInNlbGVjdGVkV29ya2Zsb3dzIiwic2VsZWN0ZWRBcGlLZXlPcHRpb24iLCJhdXRoVHlwZSIsIkluc3RhbGxHaXRIdWJBcHAiLCJwcm9wcyIsIm9uRG9uZSIsIm1lc3NhZ2UiLCJSZWFjdE5vZGUiLCJleGlzdGluZ0FwaUtleSIsInN0YXRlIiwic2V0U3RhdGUiLCJ1c2VFZmZlY3QiLCJjaGVja0dpdEh1YkNMSSIsImdoVmVyc2lvblJlc3VsdCIsInNoZWxsIiwicmVqZWN0IiwiZXhpdENvZGUiLCJwdXNoIiwidGl0bGUiLCJpbnN0cnVjdGlvbnMiLCJhdXRoUmVzdWx0IiwidG9rZW5TY29wZXNNYXRjaCIsInN0ZG91dCIsIm1hdGNoIiwic2NvcGVzIiwibWlzc2luZ1Njb3BlcyIsImluY2x1ZGVzIiwibGVuZ3RoIiwicHJldiIsImVycm9yIiwiam9pbiIsImVycm9yUmVhc29uIiwiZXJyb3JJbnN0cnVjdGlvbnMiLCJydW5TZXR1cEdpdEh1YkFjdGlvbnMiLCJ3b3JrZmxvd0FjdGlvbiIsImVycm9yTWVzc2FnZSIsIkVycm9yIiwicmVhc29uIiwib3BlbkdpdEh1YkFwcEluc3RhbGxhdGlvbiIsImluc3RhbGxVcmwiLCJjaGVja1JlcG9zaXRvcnlQZXJtaXNzaW9ucyIsInJlcG9OYW1lIiwiUHJvbWlzZSIsImhhc0FjY2VzcyIsInJlc3VsdCIsImNvZGUiLCJoYXNBZG1pbiIsInRyaW0iLCJzdGRlcnIiLCJjaGVja0V4aXN0aW5nV29ya2Zsb3dGaWxlIiwiY2hlY2tGaWxlUmVzdWx0IiwiY2hlY2tFeGlzdGluZ1NlY3JldCIsImNoZWNrU2VjcmV0c1Jlc3VsdCIsImxpbmVzIiwic3BsaXQiLCJoYXNBbnRocm9waWNLZXkiLCJzb21lIiwibGluZSIsInRlc3QiLCJoYW5kbGVTdWJtaXQiLCJzZXRUaW1lb3V0IiwicmVwb1dhcm5pbmdzIiwicmVwbGFjZSIsInBlcm1pc3Npb25DaGVjayIsImFsbFdhcm5pbmdzIiwiYXBpS2V5VG9Vc2UiLCJoYW5kbGVSZXBvVXJsQ2hhbmdlIiwidmFsdWUiLCJoYW5kbGVBcGlLZXlDaGFuZ2UiLCJoYW5kbGVBcGlLZXlPcHRpb25DaGFuZ2UiLCJvcHRpb24iLCJoYW5kbGVDcmVhdGVPQXV0aFRva2VuIiwiaGFuZGxlT0F1dGhTdWNjZXNzIiwidG9rZW4iLCJoYW5kbGVPQXV0aENhbmNlbCIsImhhbmRsZVNlY3JldE5hbWVDaGFuZ2UiLCJoYW5kbGVUb2dnbGVVc2VDdXJyZW50UmVwbyIsImhhbmRsZVRvZ2dsZVVzZUV4aXN0aW5nS2V5IiwiaGFuZGxlVG9nZ2xlVXNlRXhpc3RpbmdTZWNyZXQiLCJoYW5kbGVXb3JrZmxvd0FjdGlvbiIsImFjdGlvbiIsImhhbmRsZURpc21pc3NLZXlEb3duIiwiZSIsInByZXZlbnREZWZhdWx0IiwidW5kZWZpbmVkIiwiY2FsbCJdLCJzb3VyY2VzIjpbImluc3RhbGwtZ2l0aHViLWFwcC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY2EgfSBmcm9tICdleGVjYSdcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIHR5cGUgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgbG9nRXZlbnQsXG59IGZyb20gJ3NyYy9zZXJ2aWNlcy9hbmFseXRpY3MvaW5kZXguanMnXG5pbXBvcnQgeyBXb3JrZmxvd011bHRpc2VsZWN0RGlhbG9nIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9Xb3JrZmxvd011bHRpc2VsZWN0RGlhbG9nLmpzJ1xuaW1wb3J0IHsgR0lUSFVCX0FDVElPTl9TRVRVUF9ET0NTX1VSTCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9naXRodWItYXBwLmpzJ1xuaW1wb3J0IHsgdXNlRXhpdE9uQ3RybENEV2l0aEtleWJpbmRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlRXhpdE9uQ3RybENEV2l0aEtleWJpbmRpbmdzLmpzJ1xuaW1wb3J0IHR5cGUgeyBLZXlib2FyZEV2ZW50IH0gZnJvbSAnLi4vLi4vaW5rL2V2ZW50cy9rZXlib2FyZC1ldmVudC5qcydcbmltcG9ydCB7IEJveCB9IGZyb20gJy4uLy4uL2luay5qcydcbmltcG9ydCB0eXBlIHsgTG9jYWxKU1hDb21tYW5kT25Eb25lIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29tbWFuZC5qcydcbmltcG9ydCB7IGdldEFudGhyb3BpY0FwaUtleSwgaXNBbnRocm9waWNBdXRoRW5hYmxlZCB9IGZyb20gJy4uLy4uL3V0aWxzL2F1dGguanMnXG5pbXBvcnQgeyBvcGVuQnJvd3NlciB9IGZyb20gJy4uLy4uL3V0aWxzL2Jyb3dzZXIuanMnXG5pbXBvcnQgeyBleGVjRmlsZU5vVGhyb3cgfSBmcm9tICcuLi8uLi91dGlscy9leGVjRmlsZU5vVGhyb3cuanMnXG5pbXBvcnQgeyBnZXRHaXRodWJSZXBvIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2l0LmpzJ1xuaW1wb3J0IHsgcGx1cmFsIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nVXRpbHMuanMnXG5pbXBvcnQgeyBBcGlLZXlTdGVwIH0gZnJvbSAnLi9BcGlLZXlTdGVwLmpzJ1xuaW1wb3J0IHsgQ2hlY2tFeGlzdGluZ1NlY3JldFN0ZXAgfSBmcm9tICcuL0NoZWNrRXhpc3RpbmdTZWNyZXRTdGVwLmpzJ1xuaW1wb3J0IHsgQ2hlY2tHaXRIdWJTdGVwIH0gZnJvbSAnLi9DaGVja0dpdEh1YlN0ZXAuanMnXG5pbXBvcnQgeyBDaG9vc2VSZXBvU3RlcCB9IGZyb20gJy4vQ2hvb3NlUmVwb1N0ZXAuanMnXG5pbXBvcnQgeyBDcmVhdGluZ1N0ZXAgfSBmcm9tICcuL0NyZWF0aW5nU3RlcC5qcydcbmltcG9ydCB7IEVycm9yU3RlcCB9IGZyb20gJy4vRXJyb3JTdGVwLmpzJ1xuaW1wb3J0IHsgRXhpc3RpbmdXb3JrZmxvd1N0ZXAgfSBmcm9tICcuL0V4aXN0aW5nV29ya2Zsb3dTdGVwLmpzJ1xuaW1wb3J0IHsgSW5zdGFsbEFwcFN0ZXAgfSBmcm9tICcuL0luc3RhbGxBcHBTdGVwLmpzJ1xuaW1wb3J0IHsgT0F1dGhGbG93U3RlcCB9IGZyb20gJy4vT0F1dGhGbG93U3RlcC5qcydcbmltcG9ydCB7IFN1Y2Nlc3NTdGVwIH0gZnJvbSAnLi9TdWNjZXNzU3RlcC5qcydcbmltcG9ydCB7IHNldHVwR2l0SHViQWN0aW9ucyB9IGZyb20gJy4vc2V0dXBHaXRIdWJBY3Rpb25zLmpzJ1xuaW1wb3J0IHR5cGUgeyBTdGF0ZSwgV2FybmluZywgV29ya2Zsb3cgfSBmcm9tICcuL3R5cGVzLmpzJ1xuaW1wb3J0IHsgV2FybmluZ3NTdGVwIH0gZnJvbSAnLi9XYXJuaW5nc1N0ZXAuanMnXG5cbmNvbnN0IElOSVRJQUxfU1RBVEU6IFN0YXRlID0ge1xuICBzdGVwOiAnY2hlY2stZ2gnLFxuICBzZWxlY3RlZFJlcG9OYW1lOiAnJyxcbiAgY3VycmVudFJlcG86ICcnLFxuICB1c2VDdXJyZW50UmVwbzogZmFsc2UsIC8vIERlZmF1bHQgdG8gZmFsc2UsIHdpbGwgYmUgc2V0IHRvIHRydWUgaWYgcmVwbyBkZXRlY3RlZFxuICBhcGlLZXlPck9BdXRoVG9rZW46ICcnLFxuICB1c2VFeGlzdGluZ0tleTogdHJ1ZSxcbiAgY3VycmVudFdvcmtmbG93SW5zdGFsbFN0ZXA6IDAsXG4gIHdhcm5pbmdzOiBbXSxcbiAgc2VjcmV0RXhpc3RzOiBmYWxzZSxcbiAgc2VjcmV0TmFtZTogRlJJRU5ETElfUFJJTUFSWV9FTlYsXG4gIHVzZUV4aXN0aW5nU2VjcmV0OiB0cnVlLFxuICB3b3JrZmxvd0V4aXN0czogZmFsc2UsXG4gIHNlbGVjdGVkV29ya2Zsb3dzOiBbJ3VtbWF5YScsICd1bW1heWEtcmV2aWV3J10gYXMgV29ya2Zsb3dbXSxcbiAgc2VsZWN0ZWRBcGlLZXlPcHRpb246ICduZXcnIGFzICdleGlzdGluZycgfCAnbmV3JyB8ICdvYXV0aCcsXG4gIGF1dGhUeXBlOiAnYXBpX2tleScsXG59XG5cbmZ1bmN0aW9uIEluc3RhbGxHaXRIdWJBcHAocHJvcHM6IHtcbiAgb25Eb25lOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkXG59KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgW2V4aXN0aW5nQXBpS2V5XSA9IHVzZVN0YXRlKCgpID0+IGdldEFudGhyb3BpY0FwaUtleSgpKVxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKHtcbiAgICAuLi5JTklUSUFMX1NUQVRFLFxuICAgIHVzZUV4aXN0aW5nS2V5OiAhIWV4aXN0aW5nQXBpS2V5LFxuICAgIHNlbGVjdGVkQXBpS2V5T3B0aW9uOiAoZXhpc3RpbmdBcGlLZXlcbiAgICAgID8gJ2V4aXN0aW5nJ1xuICAgICAgOiBpc0FudGhyb3BpY0F1dGhFbmFibGVkKClcbiAgICAgICAgPyAnb2F1dGgnXG4gICAgICAgIDogJ25ldycpIGFzICdleGlzdGluZycgfCAnbmV3JyB8ICdvYXV0aCcsXG4gIH0pXG4gIHVzZUV4aXRPbkN0cmxDRFdpdGhLZXliaW5kaW5ncygpXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0YXJ0ZWQnLCB7fSlcbiAgfSwgW10pXG5cbiAgY29uc3QgY2hlY2tHaXRIdWJDTEkgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgd2FybmluZ3M6IFdhcm5pbmdbXSA9IFtdXG5cbiAgICAvLyBDaGVjayBpZiBnaCBpcyBpbnN0YWxsZWRcbiAgICBjb25zdCBnaFZlcnNpb25SZXN1bHQgPSBhd2FpdCBleGVjYSgnZ2ggLS12ZXJzaW9uJywge1xuICAgICAgc2hlbGw6IHRydWUsXG4gICAgICByZWplY3Q6IGZhbHNlLFxuICAgIH0pXG4gICAgaWYgKGdoVmVyc2lvblJlc3VsdC5leGl0Q29kZSAhPT0gMCkge1xuICAgICAgd2FybmluZ3MucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnR2l0SHViIENMSSBub3QgZm91bmQnLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICdHaXRIdWIgQ0xJIChnaCkgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGluc3RhbGxlZCBvciBhY2Nlc3NpYmxlLicsXG4gICAgICAgIGluc3RydWN0aW9uczogW1xuICAgICAgICAgICdJbnN0YWxsIEdpdEh1YiBDTEkgZnJvbSBodHRwczovL2NsaS5naXRodWIuY29tLycsXG4gICAgICAgICAgJ21hY09TOiBicmV3IGluc3RhbGwgZ2gnLFxuICAgICAgICAgICdXaW5kb3dzOiB3aW5nZXQgaW5zdGFsbCAtLWlkIEdpdEh1Yi5jbGknLFxuICAgICAgICAgICdMaW51eDogU2VlIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgYXQgaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkjaW5zdGFsbGF0aW9uJyxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgYXV0aCBzdGF0dXNcbiAgICBjb25zdCBhdXRoUmVzdWx0ID0gYXdhaXQgZXhlY2EoJ2doIGF1dGggc3RhdHVzIC1hJywge1xuICAgICAgc2hlbGw6IHRydWUsXG4gICAgICByZWplY3Q6IGZhbHNlLFxuICAgIH0pXG4gICAgaWYgKGF1dGhSZXN1bHQuZXhpdENvZGUgIT09IDApIHtcbiAgICAgIHdhcm5pbmdzLnB1c2goe1xuICAgICAgICB0aXRsZTogJ0dpdEh1YiBDTEkgbm90IGF1dGhlbnRpY2F0ZWQnLFxuICAgICAgICBtZXNzYWdlOiAnR2l0SHViIENMSSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYXV0aGVudGljYXRlZC4nLFxuICAgICAgICBpbnN0cnVjdGlvbnM6IFtcbiAgICAgICAgICAnUnVuOiBnaCBhdXRoIGxvZ2luJyxcbiAgICAgICAgICAnRm9sbG93IHRoZSBwcm9tcHRzIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIEdpdEh1YicsXG4gICAgICAgICAgJ09yIHNldCB1cCBhdXRoZW50aWNhdGlvbiB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3Igb3RoZXIgbWV0aG9kcycsXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDaGVjayBpZiByZXF1aXJlZCBzY29wZXMgYXJlIHByZXNlbnQgaW4gdGhlIFRva2VuIHNjb3BlcyBsaW5lXG4gICAgICBjb25zdCB0b2tlblNjb3Blc01hdGNoID0gYXV0aFJlc3VsdC5zdGRvdXQubWF0Y2goL1Rva2VuIHNjb3BlczouKiQvbSlcbiAgICAgIGlmICh0b2tlblNjb3Blc01hdGNoKSB7XG4gICAgICAgIGNvbnN0IHNjb3BlcyA9IHRva2VuU2NvcGVzTWF0Y2hbMF1cbiAgICAgICAgY29uc3QgbWlzc2luZ1Njb3Blczogc3RyaW5nW10gPSBbXVxuXG4gICAgICAgIGlmICghc2NvcGVzLmluY2x1ZGVzKCdyZXBvJykpIHtcbiAgICAgICAgICBtaXNzaW5nU2NvcGVzLnB1c2goJ3JlcG8nKVxuICAgICAgICB9XG4gICAgICAgIGlmICghc2NvcGVzLmluY2x1ZGVzKCd3b3JrZmxvdycpKSB7XG4gICAgICAgICAgbWlzc2luZ1Njb3Blcy5wdXNoKCd3b3JrZmxvdycpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWlzc2luZ1Njb3Blcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gTWlzc2luZyByZXF1aXJlZCBzY29wZXMgLSBleGl0IGltbWVkaWF0ZWx5XG4gICAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoe1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIHN0ZXA6ICdlcnJvcicsXG4gICAgICAgICAgICBlcnJvcjogYEdpdEh1YiBDTEkgaXMgbWlzc2luZyByZXF1aXJlZCBwZXJtaXNzaW9uczogJHttaXNzaW5nU2NvcGVzLmpvaW4oJywgJyl9LmAsXG4gICAgICAgICAgICBlcnJvclJlYXNvbjogJ01pc3NpbmcgcmVxdWlyZWQgc2NvcGVzJyxcbiAgICAgICAgICAgIGVycm9ySW5zdHJ1Y3Rpb25zOiBbXG4gICAgICAgICAgICAgIGBZb3VyIEdpdEh1YiBDTEkgYXV0aGVudGljYXRpb24gaXMgbWlzc2luZyB0aGUgXCIke21pc3NpbmdTY29wZXMuam9pbignXCIgYW5kIFwiJyl9XCIgJHtwbHVyYWwobWlzc2luZ1Njb3Blcy5sZW5ndGgsICdzY29wZScpfSBuZWVkZWQgdG8gbWFuYWdlIEdpdEh1YiBBY3Rpb25zIGFuZCBzZWNyZXRzLmAsXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAnVG8gZml4IHRoaXMsIHJ1bjonLFxuICAgICAgICAgICAgICAnICBnaCBhdXRoIHJlZnJlc2ggLWggZ2l0aHViLmNvbSAtcyByZXBvLHdvcmtmbG93JyxcbiAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICdUaGlzIHdpbGwgYWRkIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnMgdG8gbWFuYWdlIHdvcmtmbG93cyBhbmQgc2VjcmV0cy4nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGluIGEgZ2l0IHJlcG8gYW5kIGdldCByZW1vdGUgVVJMXG4gICAgY29uc3QgY3VycmVudFJlcG8gPSAoYXdhaXQgZ2V0R2l0aHViUmVwbygpKSA/PyAnJ1xuXG4gICAgbG9nRXZlbnQoJ3Rlbmd1X2luc3RhbGxfZ2l0aHViX2FwcF9zdGVwX2NvbXBsZXRlZCcsIHtcbiAgICAgIHN0ZXA6ICdjaGVjay1naCcgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICB9KVxuXG4gICAgc2V0U3RhdGUocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIHdhcm5pbmdzLFxuICAgICAgY3VycmVudFJlcG8sXG4gICAgICBzZWxlY3RlZFJlcG9OYW1lOiBjdXJyZW50UmVwbyxcbiAgICAgIHVzZUN1cnJlbnRSZXBvOiAhIWN1cnJlbnRSZXBvLCAvLyBTZXQgdG8gZmFsc2UgaWYgbm8gcmVwbyBkZXRlY3RlZFxuICAgICAgc3RlcDogd2FybmluZ3MubGVuZ3RoID4gMCA/ICd3YXJuaW5ncycgOiAnY2hvb3NlLXJlcG8nLFxuICAgIH0pKVxuICB9LCBbXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdGF0ZS5zdGVwID09PSAnY2hlY2stZ2gnKSB7XG4gICAgICB2b2lkIGNoZWNrR2l0SHViQ0xJKClcbiAgICB9XG4gIH0sIFtzdGF0ZS5zdGVwLCBjaGVja0dpdEh1YkNMSV0pXG5cbiAgY29uc3QgcnVuU2V0dXBHaXRIdWJBY3Rpb25zID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGFwaUtleU9yT0F1dGhUb2tlbjogc3RyaW5nIHwgbnVsbCwgc2VjcmV0TmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIHN0ZXA6ICdjcmVhdGluZycsXG4gICAgICAgIGN1cnJlbnRXb3JrZmxvd0luc3RhbGxTdGVwOiAwLFxuICAgICAgfSkpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNldHVwR2l0SHViQWN0aW9ucyhcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlcG9OYW1lLFxuICAgICAgICAgIGFwaUtleU9yT0F1dGhUb2tlbixcbiAgICAgICAgICBzZWNyZXROYW1lLFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgY3VycmVudFdvcmtmbG93SW5zdGFsbFN0ZXA6IHByZXYuY3VycmVudFdvcmtmbG93SW5zdGFsbFN0ZXAgKyAxLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGF0ZS53b3JrZmxvd0FjdGlvbiA9PT0gJ3NraXAnLFxuICAgICAgICAgIHN0YXRlLnNlbGVjdGVkV29ya2Zsb3dzLFxuICAgICAgICAgIHN0YXRlLmF1dGhUeXBlLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVzZUN1cnJlbnRSZXBvOiBzdGF0ZS51c2VDdXJyZW50UmVwbyxcbiAgICAgICAgICAgIHdvcmtmbG93RXhpc3RzOiBzdGF0ZS53b3JrZmxvd0V4aXN0cyxcbiAgICAgICAgICAgIHNlY3JldEV4aXN0czogc3RhdGUuc2VjcmV0RXhpc3RzLFxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgbG9nRXZlbnQoJ3Rlbmd1X2luc3RhbGxfZ2l0aHViX2FwcF9zdGVwX2NvbXBsZXRlZCcsIHtcbiAgICAgICAgICBzdGVwOiAnY3JlYXRpbmcnIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgIH0pXG4gICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHsgLi4ucHJldiwgc3RlcDogJ3N1Y2Nlc3MnIH0pKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICA/IGVycm9yLm1lc3NhZ2VcbiAgICAgICAgICAgIDogJ0ZhaWxlZCB0byBzZXQgdXAgR2l0SHViIEFjdGlvbnMnXG5cbiAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5pbmNsdWRlcygnd29ya2Zsb3cgZmlsZSBhbHJlYWR5IGV4aXN0cycpKSB7XG4gICAgICAgICAgbG9nRXZlbnQoJ3Rlbmd1X2luc3RhbGxfZ2l0aHViX2FwcF9lcnJvcicsIHtcbiAgICAgICAgICAgIHJlYXNvbjpcbiAgICAgICAgICAgICAgJ3dvcmtmbG93X2ZpbGVfZXhpc3RzJyBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoe1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIHN0ZXA6ICdlcnJvcicsXG4gICAgICAgICAgICBlcnJvcjogJ0EgQ2xhdWRlIHdvcmtmbG93IGZpbGUgYWxyZWFkeSBleGlzdHMgaW4gdGhpcyByZXBvc2l0b3J5LicsXG4gICAgICAgICAgICBlcnJvclJlYXNvbjogJ1dvcmtmbG93IGZpbGUgY29uZmxpY3QnLFxuICAgICAgICAgICAgZXJyb3JJbnN0cnVjdGlvbnM6IFtcbiAgICAgICAgICAgICAgJ1RoZSBmaWxlIC5naXRodWIvd29ya2Zsb3dzL3VtbWF5YS55bWwgYWxyZWFkeSBleGlzdHMnLFxuICAgICAgICAgICAgICAnWW91IGNhbiBlaXRoZXI6JyxcbiAgICAgICAgICAgICAgJyAgMS4gRGVsZXRlIHRoZSBleGlzdGluZyBmaWxlIGFuZCBydW4gdGhpcyBjb21tYW5kIGFnYWluJyxcbiAgICAgICAgICAgICAgJyAgMi4gVXBkYXRlIHRoZSBleGlzdGluZyBmaWxlIG1hbnVhbGx5IHVzaW5nIHRoZSB0ZW1wbGF0ZSBmcm9tOicsXG4gICAgICAgICAgICAgIGAgICAgICR7R0lUSFVCX0FDVElPTl9TRVRVUF9ET0NTX1VSTH1gLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX2Vycm9yJywge1xuICAgICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgICAnc2V0dXBfZ2l0aHViX2FjdGlvbnNfZmFpbGVkJyBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgc3RlcDogJ2Vycm9yJyxcbiAgICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvclJlYXNvbjogJ0dpdEh1YiBBY3Rpb25zIHNldHVwIGZhaWxlZCcsXG4gICAgICAgICAgICBlcnJvckluc3RydWN0aW9uczogW10sXG4gICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHN0YXRlLnNlbGVjdGVkUmVwb05hbWUsXG4gICAgICBzdGF0ZS53b3JrZmxvd0FjdGlvbixcbiAgICAgIHN0YXRlLnNlbGVjdGVkV29ya2Zsb3dzLFxuICAgICAgc3RhdGUudXNlQ3VycmVudFJlcG8sXG4gICAgICBzdGF0ZS53b3JrZmxvd0V4aXN0cyxcbiAgICAgIHN0YXRlLnNlY3JldEV4aXN0cyxcbiAgICAgIHN0YXRlLmF1dGhUeXBlLFxuICAgIF0sXG4gIClcblxuICBhc3luYyBmdW5jdGlvbiBvcGVuR2l0SHViQXBwSW5zdGFsbGF0aW9uKCkge1xuICAgIGNvbnN0IGluc3RhbGxVcmwgPSAnaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvY2xhdWRlJ1xuICAgIGF3YWl0IG9wZW5Ccm93c2VyKGluc3RhbGxVcmwpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBjaGVja1JlcG9zaXRvcnlQZXJtaXNzaW9ucyhcbiAgICByZXBvTmFtZTogc3RyaW5nLFxuICApOiBQcm9taXNlPHsgaGFzQWNjZXNzOiBib29sZWFuOyBlcnJvcj86IHN0cmluZyB9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4ZWNGaWxlTm9UaHJvdygnZ2gnLCBbXG4gICAgICAgICdhcGknLFxuICAgICAgICBgcmVwb3MvJHtyZXBvTmFtZX1gLFxuICAgICAgICAnLS1qcScsXG4gICAgICAgICcucGVybWlzc2lvbnMuYWRtaW4nLFxuICAgICAgXSlcblxuICAgICAgaWYgKHJlc3VsdC5jb2RlID09PSAwKSB7XG4gICAgICAgIGNvbnN0IGhhc0FkbWluID0gcmVzdWx0LnN0ZG91dC50cmltKCkgPT09ICd0cnVlJ1xuICAgICAgICByZXR1cm4geyBoYXNBY2Nlc3M6IGhhc0FkbWluIH1cbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICByZXN1bHQuc3RkZXJyLmluY2x1ZGVzKCc0MDQnKSB8fFxuICAgICAgICByZXN1bHQuc3RkZXJyLmluY2x1ZGVzKCdOb3QgRm91bmQnKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGFzQWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBlcnJvcjogJ3JlcG9zaXRvcnlfbm90X2ZvdW5kJyxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBoYXNBY2Nlc3M6IGZhbHNlIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB7IGhhc0FjY2VzczogZmFsc2UgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNoZWNrRXhpc3RpbmdXb3JrZmxvd0ZpbGUocmVwb05hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNoZWNrRmlsZVJlc3VsdCA9IGF3YWl0IGV4ZWNGaWxlTm9UaHJvdygnZ2gnLCBbXG4gICAgICAnYXBpJyxcbiAgICAgIGByZXBvcy8ke3JlcG9OYW1lfS9jb250ZW50cy8uZ2l0aHViL3dvcmtmbG93cy91bW1heWEueW1sYCxcbiAgICAgICctLWpxJyxcbiAgICAgICcuc2hhJyxcbiAgICBdKVxuXG4gICAgcmV0dXJuIGNoZWNrRmlsZVJlc3VsdC5jb2RlID09PSAwXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBjaGVja0V4aXN0aW5nU2VjcmV0KCkge1xuICAgIGNvbnN0IGNoZWNrU2VjcmV0c1Jlc3VsdCA9IGF3YWl0IGV4ZWNGaWxlTm9UaHJvdygnZ2gnLCBbXG4gICAgICAnc2VjcmV0JyxcbiAgICAgICdsaXN0JyxcbiAgICAgICctLWFwcCcsXG4gICAgICAnYWN0aW9ucycsXG4gICAgICAnLS1yZXBvJyxcbiAgICAgIHN0YXRlLnNlbGVjdGVkUmVwb05hbWUsXG4gICAgXSlcblxuICAgIGlmIChjaGVja1NlY3JldHNSZXN1bHQuY29kZSA9PT0gMCkge1xuICAgICAgY29uc3QgbGluZXMgPSBjaGVja1NlY3JldHNSZXN1bHQuc3Rkb3V0LnNwbGl0KCdcXG4nKVxuICAgICAgY29uc3QgaGFzRnJpZW5kbGlLZXkgPSBzZWNyZXRMaXN0Q29udGFpbnMobGluZXMsIEZSSUVORExJX1BSSU1BUllfRU5WKVxuXG4gICAgICBpZiAoaGFzRnJpZW5kbGlLZXkpIHtcbiAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoe1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgc2VjcmV0RXhpc3RzOiB0cnVlLFxuICAgICAgICAgIHN0ZXA6ICdjaGVjay1leGlzdGluZy1zZWNyZXQnLFxuICAgICAgICB9KSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vIGV4aXN0aW5nIHNlY3JldCBmb3VuZFxuICAgICAgICBpZiAoZXhpc3RpbmdBcGlLZXkpIHtcbiAgICAgICAgICAvLyBVc2VyIGhhcyBsb2NhbCBrZXksIHNraXAgdG8gY3JlYXRpbmcgd2l0aCBpdFxuICAgICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICBhcGlLZXlPck9BdXRoVG9rZW46IGV4aXN0aW5nQXBpS2V5LFxuICAgICAgICAgICAgdXNlRXhpc3RpbmdLZXk6IHRydWUsXG4gICAgICAgICAgfSkpXG4gICAgICAgICAgYXdhaXQgcnVuU2V0dXBHaXRIdWJBY3Rpb25zKGV4aXN0aW5nQXBpS2V5LCBzdGF0ZS5zZWNyZXROYW1lKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE5vIGxvY2FsIGtleSwgZ28gdG8gQVBJIGtleSBzdGVwXG4gICAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzdGVwOiAnYXBpLWtleScgfSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRXJyb3IgY2hlY2tpbmcgc2VjcmV0c1xuICAgICAgaWYgKGV4aXN0aW5nQXBpS2V5KSB7XG4gICAgICAgIC8vIFVzZXIgaGFzIGxvY2FsIGtleSwgc2tpcCB0byBjcmVhdGluZyB3aXRoIGl0XG4gICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGFwaUtleU9yT0F1dGhUb2tlbjogZXhpc3RpbmdBcGlLZXksXG4gICAgICAgICAgdXNlRXhpc3RpbmdLZXk6IHRydWUsXG4gICAgICAgIH0pKVxuICAgICAgICBhd2FpdCBydW5TZXR1cEdpdEh1YkFjdGlvbnMoZXhpc3RpbmdBcGlLZXksIHN0YXRlLnNlY3JldE5hbWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBObyBsb2NhbCBrZXksIGdvIHRvIEFQSSBrZXkgc3RlcFxuICAgICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7IC4uLnByZXYsIHN0ZXA6ICdhcGkta2V5JyB9KSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHN0YXRlLnN0ZXAgPT09ICd3YXJuaW5ncycpIHtcbiAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9pbnN0YWxsX2dpdGh1Yl9hcHBfc3RlcF9jb21wbGV0ZWQnLCB7XG4gICAgICAgIHN0ZXA6ICd3YXJuaW5ncycgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICAgIH0pXG4gICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7IC4uLnByZXYsIHN0ZXA6ICdpbnN0YWxsLWFwcCcgfSkpXG4gICAgICBzZXRUaW1lb3V0KG9wZW5HaXRIdWJBcHBJbnN0YWxsYXRpb24sIDApXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5zdGVwID09PSAnY2hvb3NlLXJlcG8nKSB7XG4gICAgICBsZXQgcmVwb05hbWUgPSBzdGF0ZS51c2VDdXJyZW50UmVwb1xuICAgICAgICA/IHN0YXRlLmN1cnJlbnRSZXBvXG4gICAgICAgIDogc3RhdGUuc2VsZWN0ZWRSZXBvTmFtZVxuXG4gICAgICBpZiAoIXJlcG9OYW1lLnRyaW0oKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVwb1dhcm5pbmdzOiBXYXJuaW5nW10gPSBbXVxuXG4gICAgICBpZiAocmVwb05hbWUuaW5jbHVkZXMoJ2dpdGh1Yi5jb20nKSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHJlcG9OYW1lLm1hdGNoKC9naXRodWJcXC5jb21bOi9dKFteL10rXFwvW14vXSspKFxcLmdpdCk/JC8pXG4gICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICByZXBvV2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgICB0aXRsZTogJ0ludmFsaWQgR2l0SHViIFVSTCBmb3JtYXQnLFxuICAgICAgICAgICAgbWVzc2FnZTogJ1RoZSByZXBvc2l0b3J5IFVSTCBmb3JtYXQgYXBwZWFycyB0byBiZSBpbnZhbGlkLicsXG4gICAgICAgICAgICBpbnN0cnVjdGlvbnM6IFtcbiAgICAgICAgICAgICAgJ1VzZSBmb3JtYXQ6IG93bmVyL3JlcG8gb3IgaHR0cHM6Ly9naXRodWIuY29tL293bmVyL3JlcG8nLFxuICAgICAgICAgICAgICAnRXhhbXBsZTogdW15dW5zYW5nL1VNTUFZQScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVwb05hbWUgPSBtYXRjaFsxXT8ucmVwbGFjZSgvXFwuZ2l0JC8sICcnKSB8fCAnJ1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVwb05hbWUuaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICByZXBvV2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgdGl0bGU6ICdSZXBvc2l0b3J5IGZvcm1hdCB3YXJuaW5nJyxcbiAgICAgICAgICBtZXNzYWdlOiAnUmVwb3NpdG9yeSBzaG91bGQgYmUgaW4gZm9ybWF0IFwib3duZXIvcmVwb1wiJyxcbiAgICAgICAgICBpbnN0cnVjdGlvbnM6IFtcbiAgICAgICAgICAgICdVc2UgZm9ybWF0OiBvd25lci9yZXBvJyxcbiAgICAgICAgICAgICdFeGFtcGxlOiB1bXl1bnNhbmcvVU1NQVlBJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwZXJtaXNzaW9uQ2hlY2sgPSBhd2FpdCBjaGVja1JlcG9zaXRvcnlQZXJtaXNzaW9ucyhyZXBvTmFtZSlcblxuICAgICAgaWYgKHBlcm1pc3Npb25DaGVjay5lcnJvciA9PT0gJ3JlcG9zaXRvcnlfbm90X2ZvdW5kJykge1xuICAgICAgICByZXBvV2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgdGl0bGU6ICdSZXBvc2l0b3J5IG5vdCBmb3VuZCcsXG4gICAgICAgICAgbWVzc2FnZTogYFJlcG9zaXRvcnkgJHtyZXBvTmFtZX0gd2FzIG5vdCBmb3VuZCBvciB5b3UgZG9uJ3QgaGF2ZSBhY2Nlc3MuYCxcbiAgICAgICAgICBpbnN0cnVjdGlvbnM6IFtcbiAgICAgICAgICAgIGBDaGVjayB0aGF0IHRoZSByZXBvc2l0b3J5IG5hbWUgaXMgY29ycmVjdDogJHtyZXBvTmFtZX1gLFxuICAgICAgICAgICAgJ0Vuc3VyZSB5b3UgaGF2ZSBhY2Nlc3MgdG8gdGhpcyByZXBvc2l0b3J5JyxcbiAgICAgICAgICAgICdGb3IgcHJpdmF0ZSByZXBvc2l0b3JpZXMsIG1ha2Ugc3VyZSB5b3VyIEdpdEh1YiB0b2tlbiBoYXMgdGhlIFwicmVwb1wiIHNjb3BlJyxcbiAgICAgICAgICAgICdZb3UgY2FuIGFkZCB0aGUgcmVwbyBzY29wZSB3aXRoOiBnaCBhdXRoIHJlZnJlc2ggLWggZ2l0aHViLmNvbSAtcyByZXBvLHdvcmtmbG93JyxcbiAgICAgICAgICBdLFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICghcGVybWlzc2lvbkNoZWNrLmhhc0FjY2Vzcykge1xuICAgICAgICByZXBvV2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgdGl0bGU6ICdBZG1pbiBwZXJtaXNzaW9ucyByZXF1aXJlZCcsXG4gICAgICAgICAgbWVzc2FnZTogYFlvdSBtaWdodCBuZWVkIGFkbWluIHBlcm1pc3Npb25zIG9uICR7cmVwb05hbWV9IHRvIHNldCB1cCBHaXRIdWIgQWN0aW9ucy5gLFxuICAgICAgICAgIGluc3RydWN0aW9uczogW1xuICAgICAgICAgICAgJ1JlcG9zaXRvcnkgYWRtaW5zIGNhbiBpbnN0YWxsIEdpdEh1YiBBcHBzIGFuZCBzZXQgc2VjcmV0cycsXG4gICAgICAgICAgICAnQXNrIGEgcmVwb3NpdG9yeSBhZG1pbiB0byBydW4gdGhpcyBjb21tYW5kIGlmIHNldHVwIGZhaWxzJyxcbiAgICAgICAgICAgICdBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUgbWFudWFsIHNldHVwIGluc3RydWN0aW9ucycsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd29ya2Zsb3dFeGlzdHMgPSBhd2FpdCBjaGVja0V4aXN0aW5nV29ya2Zsb3dGaWxlKHJlcG9OYW1lKVxuXG4gICAgICBpZiAocmVwb1dhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgYWxsV2FybmluZ3MgPSBbLi4uc3RhdGUud2FybmluZ3MsIC4uLnJlcG9XYXJuaW5nc11cbiAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoe1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgc2VsZWN0ZWRSZXBvTmFtZTogcmVwb05hbWUsXG4gICAgICAgICAgd29ya2Zsb3dFeGlzdHMsXG4gICAgICAgICAgd2FybmluZ3M6IGFsbFdhcm5pbmdzLFxuICAgICAgICAgIHN0ZXA6ICd3YXJuaW5ncycsXG4gICAgICAgIH0pKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nRXZlbnQoJ3Rlbmd1X2luc3RhbGxfZ2l0aHViX2FwcF9zdGVwX2NvbXBsZXRlZCcsIHtcbiAgICAgICAgICBzdGVwOiAnY2hvb3NlLXJlcG8nIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgIH0pXG4gICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIHNlbGVjdGVkUmVwb05hbWU6IHJlcG9OYW1lLFxuICAgICAgICAgIHdvcmtmbG93RXhpc3RzLFxuICAgICAgICAgIHN0ZXA6ICdpbnN0YWxsLWFwcCcsXG4gICAgICAgIH0pKVxuICAgICAgICBzZXRUaW1lb3V0KG9wZW5HaXRIdWJBcHBJbnN0YWxsYXRpb24sIDApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5zdGVwID09PSAnaW5zdGFsbC1hcHAnKSB7XG4gICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0ZXBfY29tcGxldGVkJywge1xuICAgICAgICBzdGVwOiAnaW5zdGFsbC1hcHAnIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICB9KVxuICAgICAgaWYgKHN0YXRlLndvcmtmbG93RXhpc3RzKSB7XG4gICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHsgLi4ucHJldiwgc3RlcDogJ2NoZWNrLWV4aXN0aW5nLXdvcmtmbG93JyB9KSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHsgLi4ucHJldiwgc3RlcDogJ3NlbGVjdC13b3JrZmxvd3MnIH0pKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3RhdGUuc3RlcCA9PT0gJ2NoZWNrLWV4aXN0aW5nLXdvcmtmbG93Jykge1xuICAgICAgcmV0dXJuXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5zdGVwID09PSAnc2VsZWN0LXdvcmtmbG93cycpIHtcbiAgICAgIC8vIEhhbmRsZWQgYnkgdGhlIFdvcmtmbG93TXVsdGlzZWxlY3REaWFsb2cgY29tcG9uZW50XG4gICAgICByZXR1cm5cbiAgICB9IGVsc2UgaWYgKHN0YXRlLnN0ZXAgPT09ICdjaGVjay1leGlzdGluZy1zZWNyZXQnKSB7XG4gICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0ZXBfY29tcGxldGVkJywge1xuICAgICAgICBzdGVwOiAnY2hlY2stZXhpc3Rpbmctc2VjcmV0JyBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgICAgfSlcbiAgICAgIGlmIChzdGF0ZS51c2VFeGlzdGluZ1NlY3JldCkge1xuICAgICAgICBhd2FpdCBydW5TZXR1cEdpdEh1YkFjdGlvbnMobnVsbCwgc3RhdGUuc2VjcmV0TmFtZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVzZXIgd2FudHMgdG8gdXNlIGEgbmV3IHNlY3JldCBuYW1lIHdpdGggdGhlaXIgQVBJIGtleVxuICAgICAgICBhd2FpdCBydW5TZXR1cEdpdEh1YkFjdGlvbnMoc3RhdGUuYXBpS2V5T3JPQXV0aFRva2VuLCBzdGF0ZS5zZWNyZXROYW1lKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3RhdGUuc3RlcCA9PT0gJ2FwaS1rZXknKSB7XG4gICAgICAvLyBJbiB0aGUgbmV3IGZsb3csIGFwaS1rZXkgc3RlcCBvbmx5IGFwcGVhcnMgd2hlbiB1c2VyIGhhcyBubyBleGlzdGluZyBrZXlcbiAgICAgIC8vIFRoZXkgZWl0aGVyIGVudGVyZWQgYSBuZXcga2V5IG9yIHdpbGwgY3JlYXRlIE9BdXRoIHRva2VuXG4gICAgICBpZiAoc3RhdGUuc2VsZWN0ZWRBcGlLZXlPcHRpb24gPT09ICdvYXV0aCcpIHtcbiAgICAgICAgLy8gT0F1dGggZmxvdyBhbHJlYWR5IGhhbmRsZWQgYnkgaGFuZGxlQ3JlYXRlT0F1dGhUb2tlblxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSWYgdXNlciBzZWxlY3RlZCAnZXhpc3RpbmcnIG9wdGlvbiwgdXNlIHRoZSBleGlzdGluZyBBUEkga2V5XG4gICAgICBjb25zdCBhcGlLZXlUb1VzZSA9XG4gICAgICAgIHN0YXRlLnNlbGVjdGVkQXBpS2V5T3B0aW9uID09PSAnZXhpc3RpbmcnXG4gICAgICAgICAgPyBleGlzdGluZ0FwaUtleVxuICAgICAgICAgIDogc3RhdGUuYXBpS2V5T3JPQXV0aFRva2VuXG5cbiAgICAgIGlmICghYXBpS2V5VG9Vc2UpIHtcbiAgICAgICAgbG9nRXZlbnQoJ3Rlbmd1X2luc3RhbGxfZ2l0aHViX2FwcF9lcnJvcicsIHtcbiAgICAgICAgICByZWFzb246XG4gICAgICAgICAgICAnYXBpX2tleV9taXNzaW5nJyBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgICAgICB9KVxuICAgICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBzdGVwOiAnZXJyb3InLFxuICAgICAgICAgIGVycm9yOiAnQVBJIGtleSBpcyByZXF1aXJlZCcsXG4gICAgICAgIH0pKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gU3RvcmUgdGhlIEFQSSBrZXkgYmVpbmcgdXNlZCAoZWl0aGVyIGV4aXN0aW5nIG9yIG5ld2x5IGVudGVyZWQpXG4gICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGFwaUtleU9yT0F1dGhUb2tlbjogYXBpS2V5VG9Vc2UsXG4gICAgICAgIHVzZUV4aXN0aW5nS2V5OiBzdGF0ZS5zZWxlY3RlZEFwaUtleU9wdGlvbiA9PT0gJ2V4aXN0aW5nJyxcbiAgICAgIH0pKVxuXG4gICAgICBjb25zdCBjaGVja1NlY3JldHNSZXN1bHQgPSBhd2FpdCBleGVjRmlsZU5vVGhyb3coJ2doJywgW1xuICAgICAgICAnc2VjcmV0JyxcbiAgICAgICAgJ2xpc3QnLFxuICAgICAgICAnLS1hcHAnLFxuICAgICAgICAnYWN0aW9ucycsXG4gICAgICAgICctLXJlcG8nLFxuICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlcG9OYW1lLFxuICAgICAgXSlcblxuICAgICAgaWYgKGNoZWNrU2VjcmV0c1Jlc3VsdC5jb2RlID09PSAwKSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gY2hlY2tTZWNyZXRzUmVzdWx0LnN0ZG91dC5zcGxpdCgnXFxuJylcbiAgICAgICAgY29uc3QgaGFzRnJpZW5kbGlLZXkgPSBzZWNyZXRMaXN0Q29udGFpbnMobGluZXMsIEZSSUVORExJX1BSSU1BUllfRU5WKVxuXG4gICAgICAgIGlmIChoYXNGcmllbmRsaUtleSkge1xuICAgICAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9pbnN0YWxsX2dpdGh1Yl9hcHBfc3RlcF9jb21wbGV0ZWQnLCB7XG4gICAgICAgICAgICBzdGVwOiAnYXBpLWtleScgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICBzZWNyZXRFeGlzdHM6IHRydWUsXG4gICAgICAgICAgICBzdGVwOiAnY2hlY2stZXhpc3Rpbmctc2VjcmV0JyxcbiAgICAgICAgICB9KSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0ZXBfY29tcGxldGVkJywge1xuICAgICAgICAgICAgc3RlcDogJ2FwaS1rZXknIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAvLyBObyBleGlzdGluZyBzZWNyZXQsIHByb2NlZWQgdG8gY3JlYXRpbmdcbiAgICAgICAgICBhd2FpdCBydW5TZXR1cEdpdEh1YkFjdGlvbnMoYXBpS2V5VG9Vc2UsIHN0YXRlLnNlY3JldE5hbWUpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9pbnN0YWxsX2dpdGh1Yl9hcHBfc3RlcF9jb21wbGV0ZWQnLCB7XG4gICAgICAgICAgc3RlcDogJ2FwaS1rZXknIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgIH0pXG4gICAgICAgIC8vIEVycm9yIGNoZWNraW5nIHNlY3JldHMsIHByb2NlZWQgYW55d2F5XG4gICAgICAgIGF3YWl0IHJ1blNldHVwR2l0SHViQWN0aW9ucyhhcGlLZXlUb1VzZSwgc3RhdGUuc2VjcmV0TmFtZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVSZXBvVXJsQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXRTdGF0ZShwcmV2ID0+ICh7IC4uLnByZXYsIHNlbGVjdGVkUmVwb05hbWU6IHZhbHVlIH0pKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXBpS2V5Q2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXRTdGF0ZShwcmV2ID0+ICh7IC4uLnByZXYsIGFwaUtleU9yT0F1dGhUb2tlbjogdmFsdWUgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVBcGlLZXlPcHRpb25DaGFuZ2UgPSAob3B0aW9uOiAnZXhpc3RpbmcnIHwgJ25ldycgfCAnb2F1dGgnKSA9PiB7XG4gICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzZWxlY3RlZEFwaUtleU9wdGlvbjogb3B0aW9uIH0pKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlT0F1dGhUb2tlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBsb2dFdmVudCgndGVuZ3VfaW5zdGFsbF9naXRodWJfYXBwX3N0ZXBfY29tcGxldGVkJywge1xuICAgICAgc3RlcDogJ2FwaS1rZXknIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgfSlcbiAgICBzZXRTdGF0ZShwcmV2ID0+ICh7IC4uLnByZXYsIHN0ZXA6ICdvYXV0aC1mbG93JyB9KSlcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlT0F1dGhTdWNjZXNzID0gdXNlQ2FsbGJhY2soXG4gICAgKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9pbnN0YWxsX2dpdGh1Yl9hcHBfc3RlcF9jb21wbGV0ZWQnLCB7XG4gICAgICAgIHN0ZXA6ICdvYXV0aC1mbG93JyBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgICAgfSlcbiAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgYXBpS2V5T3JPQXV0aFRva2VuOiB0b2tlbixcbiAgICAgICAgdXNlRXhpc3RpbmdLZXk6IGZhbHNlLFxuICAgICAgICBzZWNyZXROYW1lOiBGUklFTkRMSV9QUklNQVJZX0VOVixcbiAgICAgICAgYXV0aFR5cGU6ICdhcGlfa2V5JyxcbiAgICAgIH0pKVxuICAgICAgdm9pZCBydW5TZXR1cEdpdEh1YkFjdGlvbnModG9rZW4sIEZSSUVORExJX1BSSU1BUllfRU5WKVxuICAgIH0sXG4gICAgW3J1blNldHVwR2l0SHViQWN0aW9uc10sXG4gIClcblxuICBjb25zdCBoYW5kbGVPQXV0aENhbmNlbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRTdGF0ZShwcmV2ID0+ICh7IC4uLnByZXYsIHN0ZXA6ICdhcGkta2V5JyB9KSlcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlU2VjcmV0TmFtZUNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKHZhbHVlICYmICEvXlthLXpBLVowLTlfXSskLy50ZXN0KHZhbHVlKSkgcmV0dXJuXG4gICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzZWNyZXROYW1lOiB2YWx1ZSB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZVVzZUN1cnJlbnRSZXBvID0gKHVzZUN1cnJlbnRSZXBvOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U3RhdGUocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIHVzZUN1cnJlbnRSZXBvLFxuICAgICAgc2VsZWN0ZWRSZXBvTmFtZTogdXNlQ3VycmVudFJlcG8gPyBwcmV2LmN1cnJlbnRSZXBvIDogJycsXG4gICAgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVUb2dnbGVVc2VFeGlzdGluZ0tleSA9ICh1c2VFeGlzdGluZ0tleTogYm9vbGVhbikgPT4ge1xuICAgIHNldFN0YXRlKHByZXYgPT4gKHsgLi4ucHJldiwgdXNlRXhpc3RpbmdLZXkgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVUb2dnbGVVc2VFeGlzdGluZ1NlY3JldCA9ICh1c2VFeGlzdGluZ1NlY3JldDogYm9vbGVhbikgPT4ge1xuICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICB1c2VFeGlzdGluZ1NlY3JldCxcbiAgICAgIHNlY3JldE5hbWU6IHVzZUV4aXN0aW5nU2VjcmV0ID8gRlJJRU5ETElfUFJJTUFSWV9FTlYgOiAnJyxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVdvcmtmbG93QWN0aW9uID0gYXN5bmMgKGFjdGlvbjogJ3VwZGF0ZScgfCAnc2tpcCcgfCAnZXhpdCcpID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSAnZXhpdCcpIHtcbiAgICAgIHByb3BzLm9uRG9uZSgnSW5zdGFsbGF0aW9uIGNhbmNlbGxlZCBieSB1c2VyJylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGxvZ0V2ZW50KCd0ZW5ndV9pbnN0YWxsX2dpdGh1Yl9hcHBfc3RlcF9jb21wbGV0ZWQnLCB7XG4gICAgICBzdGVwOiAnY2hlY2stZXhpc3Rpbmctd29ya2Zsb3cnIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgfSlcblxuICAgIHNldFN0YXRlKHByZXYgPT4gKHsgLi4ucHJldiwgd29ya2Zsb3dBY3Rpb246IGFjdGlvbiB9KSlcblxuICAgIGlmIChhY3Rpb24gPT09ICdza2lwJyB8fCBhY3Rpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICAvLyBDaGVjayBpZiB1c2VyIGhhcyBleGlzdGluZyBsb2NhbCBBUEkga2V5XG4gICAgICBpZiAoZXhpc3RpbmdBcGlLZXkpIHtcbiAgICAgICAgYXdhaXQgY2hlY2tFeGlzdGluZ1NlY3JldCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBObyBsb2NhbCBrZXksIGdvIHN0cmFpZ2h0IHRvIEFQSSBrZXkgc3RlcFxuICAgICAgICBzZXRTdGF0ZShwcmV2ID0+ICh7IC4uLnByZXYsIHN0ZXA6ICdhcGkta2V5JyB9KSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVEaXNtaXNzS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgaWYgKHN0YXRlLnN0ZXAgPT09ICdzdWNjZXNzJykge1xuICAgICAgbG9nRXZlbnQoJ3Rlbmd1X2luc3RhbGxfZ2l0aHViX2FwcF9jb21wbGV0ZWQnLCB7fSlcbiAgICB9XG4gICAgcHJvcHMub25Eb25lKFxuICAgICAgc3RhdGUuc3RlcCA9PT0gJ3N1Y2Nlc3MnXG4gICAgICAgID8gJ0dpdEh1YiBBY3Rpb25zIHNldHVwIGNvbXBsZXRlISdcbiAgICAgICAgOiBzdGF0ZS5lcnJvclxuICAgICAgICAgID8gYENvdWxkbid0IGluc3RhbGwgR2l0SHViIEFwcDogJHtzdGF0ZS5lcnJvcn1cXG5Gb3IgbWFudWFsIHNldHVwIGluc3RydWN0aW9ucywgc2VlOiAke0dJVEhVQl9BQ1RJT05fU0VUVVBfRE9DU19VUkx9YFxuICAgICAgICAgIDogYEdpdEh1YiBBcHAgaW5zdGFsbGF0aW9uIGZhaWxlZFxcbkZvciBtYW51YWwgc2V0dXAgaW5zdHJ1Y3Rpb25zLCBzZWU6ICR7R0lUSFVCX0FDVElPTl9TRVRVUF9ET0NTX1VSTH1gLFxuICAgIClcbiAgfVxuXG4gIHN3aXRjaCAoc3RhdGUuc3RlcCkge1xuICAgIGNhc2UgJ2NoZWNrLWdoJzpcbiAgICAgIHJldHVybiA8Q2hlY2tHaXRIdWJTdGVwIC8+XG4gICAgY2FzZSAnd2FybmluZ3MnOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFdhcm5pbmdzU3RlcCB3YXJuaW5ncz17c3RhdGUud2FybmluZ3N9IG9uQ29udGludWU9e2hhbmRsZVN1Ym1pdH0gLz5cbiAgICAgIClcbiAgICBjYXNlICdjaG9vc2UtcmVwbyc6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q2hvb3NlUmVwb1N0ZXBcbiAgICAgICAgICBjdXJyZW50UmVwbz17c3RhdGUuY3VycmVudFJlcG99XG4gICAgICAgICAgdXNlQ3VycmVudFJlcG89e3N0YXRlLnVzZUN1cnJlbnRSZXBvfVxuICAgICAgICAgIHJlcG9Vcmw9e3N0YXRlLnNlbGVjdGVkUmVwb05hbWV9XG4gICAgICAgICAgb25SZXBvVXJsQ2hhbmdlPXtoYW5kbGVSZXBvVXJsQ2hhbmdlfVxuICAgICAgICAgIG9uVG9nZ2xlVXNlQ3VycmVudFJlcG89e2hhbmRsZVRvZ2dsZVVzZUN1cnJlbnRSZXBvfVxuICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgY2FzZSAnaW5zdGFsbC1hcHAnOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEluc3RhbGxBcHBTdGVwXG4gICAgICAgICAgcmVwb1VybD17c3RhdGUuc2VsZWN0ZWRSZXBvTmFtZX1cbiAgICAgICAgICBvblN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIGNhc2UgJ2NoZWNrLWV4aXN0aW5nLXdvcmtmbG93JzpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxFeGlzdGluZ1dvcmtmbG93U3RlcFxuICAgICAgICAgIHJlcG9OYW1lPXtzdGF0ZS5zZWxlY3RlZFJlcG9OYW1lfVxuICAgICAgICAgIG9uU2VsZWN0QWN0aW9uPXtoYW5kbGVXb3JrZmxvd0FjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICBjYXNlICdjaGVjay1leGlzdGluZy1zZWNyZXQnOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENoZWNrRXhpc3RpbmdTZWNyZXRTdGVwXG4gICAgICAgICAgdXNlRXhpc3RpbmdTZWNyZXQ9e3N0YXRlLnVzZUV4aXN0aW5nU2VjcmV0fVxuICAgICAgICAgIHNlY3JldE5hbWU9e3N0YXRlLnNlY3JldE5hbWV9XG4gICAgICAgICAgb25Ub2dnbGVVc2VFeGlzdGluZ1NlY3JldD17aGFuZGxlVG9nZ2xlVXNlRXhpc3RpbmdTZWNyZXR9XG4gICAgICAgICAgb25TZWNyZXROYW1lQ2hhbmdlPXtoYW5kbGVTZWNyZXROYW1lQ2hhbmdlfVxuICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgY2FzZSAnYXBpLWtleSc6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8QXBpS2V5U3RlcFxuICAgICAgICAgIGV4aXN0aW5nQXBpS2V5PXtleGlzdGluZ0FwaUtleX1cbiAgICAgICAgICB1c2VFeGlzdGluZ0tleT17c3RhdGUudXNlRXhpc3RpbmdLZXl9XG4gICAgICAgICAgYXBpS2V5T3JPQXV0aFRva2VuPXtzdGF0ZS5hcGlLZXlPck9BdXRoVG9rZW59XG4gICAgICAgICAgb25BcGlLZXlDaGFuZ2U9e2hhbmRsZUFwaUtleUNoYW5nZX1cbiAgICAgICAgICBvblRvZ2dsZVVzZUV4aXN0aW5nS2V5PXtoYW5kbGVUb2dnbGVVc2VFeGlzdGluZ0tleX1cbiAgICAgICAgICBvblN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAgIG9uQ3JlYXRlT0F1dGhUb2tlbj17XG4gICAgICAgICAgICBpc0FudGhyb3BpY0F1dGhFbmFibGVkKCkgPyBoYW5kbGVDcmVhdGVPQXV0aFRva2VuIDogdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIHNlbGVjdGVkT3B0aW9uPXtzdGF0ZS5zZWxlY3RlZEFwaUtleU9wdGlvbn1cbiAgICAgICAgICBvblNlbGVjdE9wdGlvbj17aGFuZGxlQXBpS2V5T3B0aW9uQ2hhbmdlfVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIGNhc2UgJ2NyZWF0aW5nJzpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDcmVhdGluZ1N0ZXBcbiAgICAgICAgICBjdXJyZW50V29ya2Zsb3dJbnN0YWxsU3RlcD17c3RhdGUuY3VycmVudFdvcmtmbG93SW5zdGFsbFN0ZXB9XG4gICAgICAgICAgc2VjcmV0RXhpc3RzPXtzdGF0ZS5zZWNyZXRFeGlzdHN9XG4gICAgICAgICAgdXNlRXhpc3RpbmdTZWNyZXQ9e3N0YXRlLnVzZUV4aXN0aW5nU2VjcmV0fVxuICAgICAgICAgIHNlY3JldE5hbWU9e3N0YXRlLnNlY3JldE5hbWV9XG4gICAgICAgICAgc2tpcFdvcmtmbG93PXtzdGF0ZS53b3JrZmxvd0FjdGlvbiA9PT0gJ3NraXAnfVxuICAgICAgICAgIHNlbGVjdGVkV29ya2Zsb3dzPXtzdGF0ZS5zZWxlY3RlZFdvcmtmbG93c31cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCb3ggdGFiSW5kZXg9ezB9IGF1dG9Gb2N1cyBvbktleURvd249e2hhbmRsZURpc21pc3NLZXlEb3dufT5cbiAgICAgICAgICA8U3VjY2Vzc1N0ZXBcbiAgICAgICAgICAgIHNlY3JldEV4aXN0cz17c3RhdGUuc2VjcmV0RXhpc3RzfVxuICAgICAgICAgICAgdXNlRXhpc3RpbmdTZWNyZXQ9e3N0YXRlLnVzZUV4aXN0aW5nU2VjcmV0fVxuICAgICAgICAgICAgc2VjcmV0TmFtZT17c3RhdGUuc2VjcmV0TmFtZX1cbiAgICAgICAgICAgIHNraXBXb3JrZmxvdz17c3RhdGUud29ya2Zsb3dBY3Rpb24gPT09ICdza2lwJ31cbiAgICAgICAgICAvPlxuICAgICAgICA8L0JveD5cbiAgICAgIClcbiAgICBjYXNlICdlcnJvcic6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Qm94IHRhYkluZGV4PXswfSBhdXRvRm9jdXMgb25LZXlEb3duPXtoYW5kbGVEaXNtaXNzS2V5RG93bn0+XG4gICAgICAgICAgPEVycm9yU3RlcFxuICAgICAgICAgICAgZXJyb3I9e3N0YXRlLmVycm9yfVxuICAgICAgICAgICAgZXJyb3JSZWFzb249e3N0YXRlLmVycm9yUmVhc29ufVxuICAgICAgICAgICAgZXJyb3JJbnN0cnVjdGlvbnM9e3N0YXRlLmVycm9ySW5zdHJ1Y3Rpb25zfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKVxuICAgIGNhc2UgJ3NlbGVjdC13b3JrZmxvd3MnOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFdvcmtmbG93TXVsdGlzZWxlY3REaWFsb2dcbiAgICAgICAgICBkZWZhdWx0U2VsZWN0aW9ucz17c3RhdGUuc2VsZWN0ZWRXb3JrZmxvd3N9XG4gICAgICAgICAgb25TdWJtaXQ9e3NlbGVjdGVkV29ya2Zsb3dzID0+IHtcbiAgICAgICAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9pbnN0YWxsX2dpdGh1Yl9hcHBfc3RlcF9jb21wbGV0ZWQnLCB7XG4gICAgICAgICAgICAgIHN0ZXA6ICdzZWxlY3Qtd29ya2Zsb3dzJyBhcyBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHNldFN0YXRlKHByZXYgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgc2VsZWN0ZWRXb3JrZmxvd3MsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHVzZXIgaGFzIGV4aXN0aW5nIGxvY2FsIEFQSSBrZXlcbiAgICAgICAgICAgIGlmIChleGlzdGluZ0FwaUtleSkge1xuICAgICAgICAgICAgICB2b2lkIGNoZWNrRXhpc3RpbmdTZWNyZXQoKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gTm8gbG9jYWwga2V5LCBnbyBzdHJhaWdodCB0byBBUEkga2V5IHN0ZXBcbiAgICAgICAgICAgICAgc2V0U3RhdGUocHJldiA9PiAoeyAuLi5wcmV2LCBzdGVwOiAnYXBpLWtleScgfSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICBjYXNlICdvYXV0aC1mbG93JzpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxPQXV0aEZsb3dTdGVwXG4gICAgICAgICAgb25TdWNjZXNzPXtoYW5kbGVPQXV0aFN1Y2Nlc3N9XG4gICAgICAgICAgb25DYW5jZWw9e2hhbmRsZU9BdXRoQ2FuY2VsfVxuICAgICAgICAvPlxuICAgICAgKVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjYWxsKFxuICBvbkRvbmU6IExvY2FsSlNYQ29tbWFuZE9uRG9uZSxcbik6IFByb21pc2U8UmVhY3QuUmVhY3ROb2RlPiB7XG4gIHJldHVybiA8SW5zdGFsbEdpdEh1YkFwcCBvbkRvbmU9e29uRG9uZX0gLz5cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsS0FBSyxRQUFRLE9BQU87QUFDN0IsT0FBT0MsS0FBSyxJQUFJQyxXQUFXLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3BELFNBQ0UsS0FBS0MsMERBQTBELEVBQy9EQyxRQUFRLFFBQ0gsaUNBQWlDO0FBQ3hDLFNBQVNDLHlCQUF5QixRQUFRLCtDQUErQztBQUN6RixTQUFTQyw0QkFBNEIsUUFBUSwrQkFBK0I7QUFDNUUsU0FBU0MsOEJBQThCLFFBQVEsK0NBQStDO0FBQzlGLGNBQWNDLGFBQWEsUUFBUSxvQ0FBb0M7QUFDdkUsU0FBU0MsR0FBRyxRQUFRLGNBQWM7QUFDbEMsY0FBY0MscUJBQXFCLFFBQVEsd0JBQXdCO0FBQ25FLFNBQVNDLGtCQUFrQixFQUFFQyxzQkFBc0IsUUFBUSxxQkFBcUI7QUFDaEYsU0FBU0MsV0FBVyxRQUFRLHdC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
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
PR_TITLE,
|
|
10
10
|
WORKFLOW_CONTENT,
|
|
11
11
|
} from '../../constants/github-app.js'
|
|
12
|
+
import { FRIENDLI_PRIMARY_ENV } from '../../utils/auth.js'
|
|
12
13
|
import { openBrowser } from '../../utils/browser.js'
|
|
13
14
|
import { execFileNoThrow } from '../../utils/execFileNoThrow.js'
|
|
14
15
|
import { logError } from '../../utils/log.js'
|
|
@@ -41,17 +42,10 @@ async function createWorkflowFile(
|
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
let content = workflowContent
|
|
44
|
-
if (secretName
|
|
45
|
-
// For OAuth tokens, use the claude_code_oauth_token parameter
|
|
45
|
+
if (secretName !== FRIENDLI_PRIMARY_ENV) {
|
|
46
46
|
content = workflowContent.replace(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
)
|
|
50
|
-
} else if (secretName !== 'ANTHROPIC_API_KEY') {
|
|
51
|
-
// For other custom secret names, keep using anthropic_api_key parameter
|
|
52
|
-
content = workflowContent.replace(
|
|
53
|
-
/anthropic_api_key: \$\{\{ secrets\.ANTHROPIC_API_KEY \}\}/g,
|
|
54
|
-
`anthropic_api_key: \${{ secrets.${secretName} }}`,
|
|
47
|
+
/\$\{\{ secrets\.UMMAYA_FRIENDLI_TOKEN \}\}/g,
|
|
48
|
+
`\${{ secrets.${secretName} }}`,
|
|
55
49
|
)
|
|
56
50
|
}
|
|
57
51
|
const base64Content = Buffer.from(content).toString('base64')
|
|
@@ -127,10 +121,10 @@ export async function setupGitHubActions(
|
|
|
127
121
|
logEvent('tengu_setup_github_actions_started', {
|
|
128
122
|
skip_workflow: skipWorkflow,
|
|
129
123
|
has_api_key: !!apiKeyOrOAuthToken,
|
|
130
|
-
using_default_secret_name: secretName ===
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
selectedWorkflows.includes('
|
|
124
|
+
using_default_secret_name: secretName === FRIENDLI_PRIMARY_ENV,
|
|
125
|
+
selected_ummaya_workflow: selectedWorkflows.includes('ummaya'),
|
|
126
|
+
selected_ummaya_review_workflow:
|
|
127
|
+
selectedWorkflows.includes('ummaya-review'),
|
|
134
128
|
...context,
|
|
135
129
|
})
|
|
136
130
|
|
|
@@ -196,7 +190,7 @@ export async function setupGitHubActions(
|
|
|
196
190
|
if (!skipWorkflow) {
|
|
197
191
|
updateProgress()
|
|
198
192
|
// Create new branch
|
|
199
|
-
branchName = `add-
|
|
193
|
+
branchName = `add-ummaya-github-actions-${Date.now()}`
|
|
200
194
|
const createBranchResult = await execFileNoThrow('gh', [
|
|
201
195
|
'api',
|
|
202
196
|
'--method',
|
|
@@ -221,19 +215,19 @@ export async function setupGitHubActions(
|
|
|
221
215
|
// Create selected workflow files
|
|
222
216
|
const workflows = []
|
|
223
217
|
|
|
224
|
-
if (selectedWorkflows.includes('
|
|
218
|
+
if (selectedWorkflows.includes('ummaya')) {
|
|
225
219
|
workflows.push({
|
|
226
|
-
path: '.github/workflows/
|
|
220
|
+
path: '.github/workflows/ummaya.yml',
|
|
227
221
|
content: WORKFLOW_CONTENT,
|
|
228
|
-
message: 'UMMAYA
|
|
222
|
+
message: 'UMMAYA runtime smoke workflow',
|
|
229
223
|
})
|
|
230
224
|
}
|
|
231
225
|
|
|
232
|
-
if (selectedWorkflows.includes('
|
|
226
|
+
if (selectedWorkflows.includes('ummaya-review')) {
|
|
233
227
|
workflows.push({
|
|
234
|
-
path: '.github/workflows/
|
|
228
|
+
path: '.github/workflows/ummaya-review.yml',
|
|
235
229
|
content: CODE_REVIEW_PLUGIN_WORKFLOW_CONTENT,
|
|
236
|
-
message: 'UMMAYA
|
|
230
|
+
message: 'UMMAYA review smoke workflow',
|
|
237
231
|
})
|
|
238
232
|
}
|
|
239
233
|
|
|
@@ -295,10 +289,10 @@ export async function setupGitHubActions(
|
|
|
295
289
|
has_api_key: !!apiKeyOrOAuthToken,
|
|
296
290
|
auth_type:
|
|
297
291
|
authType as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
298
|
-
using_default_secret_name: secretName ===
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
selectedWorkflows.includes('
|
|
292
|
+
using_default_secret_name: secretName === FRIENDLI_PRIMARY_ENV,
|
|
293
|
+
selected_ummaya_workflow: selectedWorkflows.includes('ummaya'),
|
|
294
|
+
selected_ummaya_review_workflow:
|
|
295
|
+
selectedWorkflows.includes('ummaya-review'),
|
|
302
296
|
...context,
|
|
303
297
|
})
|
|
304
298
|
saveGlobalConfig(current => ({
|
|
@@ -17,10 +17,10 @@ type Props = {
|
|
|
17
17
|
defaultSelections: Workflow[];
|
|
18
18
|
};
|
|
19
19
|
const WORKFLOWS: WorkflowOption[] = [{
|
|
20
|
-
value: '
|
|
20
|
+
value: 'ummaya' as const,
|
|
21
21
|
label: '@UMMAYA - Tag @ummaya in issues and PR comments'
|
|
22
22
|
}, {
|
|
23
|
-
value: '
|
|
23
|
+
value: 'ummaya-review' as const,
|
|
24
24
|
label: 'UMMAYA Review - Automated code review on new PRs'
|
|
25
25
|
}];
|
|
26
26
|
function renderInputGuide(exitState: ExitState): React.ReactNode {
|
|
@@ -16,7 +16,7 @@ on:
|
|
|
16
16
|
types: [submitted]
|
|
17
17
|
|
|
18
18
|
jobs:
|
|
19
|
-
|
|
19
|
+
ummaya:
|
|
20
20
|
if: |
|
|
21
21
|
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@ummaya')) ||
|
|
22
22
|
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@ummaya')) ||
|
|
@@ -41,7 +41,7 @@ jobs:
|
|
|
41
41
|
- name: Verify UMMAYA
|
|
42
42
|
id: ummaya
|
|
43
43
|
env:
|
|
44
|
-
|
|
44
|
+
UMMAYA_FRIENDLI_TOKEN: \${{ secrets.UMMAYA_FRIENDLI_TOKEN }}
|
|
45
45
|
run: ummaya --version
|
|
46
46
|
|
|
47
47
|
# See https://ummaya-docs.pages.dev/en/ for available options
|
|
@@ -64,31 +64,26 @@ This PR adds a GitHub Actions workflow that enables UMMAYA integration in our re
|
|
|
64
64
|
|
|
65
65
|
### How it works
|
|
66
66
|
|
|
67
|
-
Once this PR is merged,
|
|
68
|
-
|
|
67
|
+
Once this PR is merged, @ummaya mentions in pull requests and issues will trigger a GitHub Actions smoke check for the repository's UMMAYA runtime.
|
|
68
|
+
The generated workflow verifies that the packaged UMMAYA CLI can install and start with the configured FriendliAI credential. Extend it from the UMMAYA documentation before enabling repository-specific automation.
|
|
69
69
|
|
|
70
70
|
### Important Notes
|
|
71
71
|
|
|
72
72
|
- **This workflow won't take effect until this PR is merged**
|
|
73
73
|
- **@ummaya mentions won't work until after the merge is complete**
|
|
74
74
|
- The workflow runs automatically whenever UMMAYA is mentioned in PR or issue comments
|
|
75
|
-
-
|
|
75
|
+
- The generated workflow is a runtime smoke check until repository-specific automation is added
|
|
76
76
|
|
|
77
77
|
### Security
|
|
78
78
|
|
|
79
79
|
- Our FriendliAI API key is securely stored as a GitHub Actions secret
|
|
80
80
|
- Only users with write access to the repository can trigger the workflow
|
|
81
81
|
- All UMMAYA runs are stored in the GitHub Actions run history
|
|
82
|
-
-
|
|
83
|
-
- We can add more allowed tools by adding them to the workflow file like:
|
|
84
|
-
|
|
85
|
-
\`\`\`
|
|
86
|
-
allowed_tools: Bash(npm install),Bash(npm run build),Bash(npm run lint),Bash(npm run test)
|
|
87
|
-
\`\`\`
|
|
82
|
+
- Review the workflow file before adding write scopes, repository mutations, or project-specific commands.
|
|
88
83
|
|
|
89
84
|
There's more information in the [UMMAYA documentation](https://ummaya-docs.pages.dev/en/).
|
|
90
85
|
|
|
91
|
-
After merging this PR,
|
|
86
|
+
After merging this PR, mention @ummaya in a comment on any PR to verify the runtime smoke path.`
|
|
92
87
|
|
|
93
88
|
export const CODE_REVIEW_PLUGIN_WORKFLOW_CONTENT = `name: UMMAYA Review
|
|
94
89
|
|
|
@@ -103,7 +98,7 @@ on:
|
|
|
103
98
|
# - "src/**/*.jsx"
|
|
104
99
|
|
|
105
100
|
jobs:
|
|
106
|
-
|
|
101
|
+
ummaya-review:
|
|
107
102
|
# Optional: Filter by PR author
|
|
108
103
|
# if: |
|
|
109
104
|
# github.event.pull_request.user.login == 'external-contributor' ||
|
|
@@ -129,7 +124,7 @@ jobs:
|
|
|
129
124
|
- name: Verify UMMAYA Review Runtime
|
|
130
125
|
id: ummaya-review
|
|
131
126
|
env:
|
|
132
|
-
|
|
127
|
+
UMMAYA_FRIENDLI_TOKEN: \${{ secrets.UMMAYA_FRIENDLI_TOKEN }}
|
|
133
128
|
run: ummaya --version
|
|
134
129
|
|
|
135
130
|
# See https://ummaya-docs.pages.dev/en/ for available options
|
package/tui/src/utils/http.ts
CHANGED
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
handleOAuth401Error,
|
|
11
11
|
isClaudeAISubscriber,
|
|
12
12
|
} from './auth.js'
|
|
13
|
-
import { getClaudeCodeUserAgent } from './userAgent.js'
|
|
14
13
|
import { getWorkload } from './workloadContext.js'
|
|
15
14
|
|
|
16
15
|
// WARNING: We rely on `claude-cli` in the user agent for log filtering.
|
|
@@ -50,7 +49,7 @@ export function getMCPUserAgent(): string {
|
|
|
50
49
|
}
|
|
51
50
|
|
|
52
51
|
export function getWebFetchUserAgent(): string {
|
|
53
|
-
return `UMMAYA-User (
|
|
52
|
+
return `UMMAYA-User (ummaya/${MACRO.VERSION}; +https://ummaya-docs.pages.dev/)`
|
|
54
53
|
}
|
|
55
54
|
|
|
56
55
|
export type AuthHeaders = {
|