oci-cdk-test 0.0.12 → 0.0.13

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.
@@ -360,12 +360,8 @@ tail-function-logs.sh
360
360
  command: 'if [ -n "$OCDK_PROJECT_DIR" ]; then ' +
361
361
  'LOG_GROUP_ID="$(terraform output -raw log_group_id 2>/dev/null || echo "")"; ' +
362
362
  'EXEC_LOG_ID="$(terraform output -raw execution_log_id 2>/dev/null || echo "")"; ' +
363
- 'SCRIPT="$OCDK_PROJECT_DIR/tail-function-logs.js"; ' +
364
- 'if [ -f "$SCRIPT" ] && [ -n "$LOG_GROUP_ID" ]; then ' +
365
- "perl -0pi -e 's/const DEFAULT_LOG_GROUP_ID = \\'[^\\']*\\';/const DEFAULT_LOG_GROUP_ID = \\'$LOG_GROUP_ID\\';/' \"$SCRIPT\"; " +
366
- 'fi; ' +
367
- 'if [ -f "$SCRIPT" ] && [ -n "$EXEC_LOG_ID" ]; then ' +
368
- "perl -0pi -e 's/const DEFAULT_EXECUTION_LOG_ID = \\'[^\\']*\\';/const DEFAULT_EXECUTION_LOG_ID = \\'$EXEC_LOG_ID\\';/' \"$SCRIPT\"; " +
363
+ 'if [ -n "$LOG_GROUP_ID" ] && [ -n "$EXEC_LOG_ID" ]; then ' +
364
+ 'printf \'{\"log_group_id\":\"%s\",\"execution_log_id\":\"%s\"}\\n\' \"$LOG_GROUP_ID\" \"$EXEC_LOG_ID\" > \"$OCDK_PROJECT_DIR/.ocdk-logs.json\"; ' +
369
365
  'fi; ' +
370
366
  'fi',
371
367
  },
@@ -386,4 +382,4 @@ tail-function-logs.sh
386
382
  }
387
383
  }
388
384
  exports.OciStack = OciStack;
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2NpLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vb2NpLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGlDQUF3RDtBQUN4RCw2REFBNkQ7QUFDN0QseUdBQW9HO0FBQ3BHLDZEQUF5RDtBQUN6RCxtRUFBK0Q7QUFDL0QsaUZBQTRFO0FBQzVFLHFGQUFnRjtBQUNoRix5RkFBbUY7QUFDbkYsNkVBQXdFO0FBQ3hFLHVGQUFrRjtBQUNsRixpRkFBNkU7QUFDN0UsdUZBQW1GO0FBQ25GLHVGQUFtRjtBQUNuRixpRkFBNkU7QUFDN0UsK0VBQTBFO0FBQzFFLG1FQUErRDtBQUMvRCxxREFBcUY7QUFDckYsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQXdDN0IsTUFBYSxRQUFTLFNBQVEsc0JBQWM7SUFDMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxNQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLDZDQUE2QztRQUM3QyxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdEQsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDbEMscUJBQXFCO2dCQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFO29CQUNwQyxHQUFHLEVBQUU7d0JBQ0gsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTTt3QkFDN0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO3dCQUMzQixHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLG9CQUFvQjt3QkFDcEQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO3FCQUN0QjtpQkFDRixDQUFDLENBQUM7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QUM7WUFDdEcsSUFBSSx1QkFBZSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsd0NBQXdDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pILElBQUksdUJBQWUsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQyxDQUFDO1FBQzdILENBQUM7UUFFRCx5SEFBeUg7UUFDekgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQ0FBa0MsRUFBRTtZQUNuRCxNQUFNLEVBQUUsWUFBWTtZQUNwQixPQUFPLEVBQUUsbUJBQW1CO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNWRCw0QkEyVkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFRlcnJhZm9ybVN0YWNrLCBUZXJyYWZvcm1PdXRwdXQgfSBmcm9tICdjZGt0Zic7XG5pbXBvcnQgeyBPY2lQcm92aWRlciB9IGZyb20gJy4uLy5nZW4vcHJvdmlkZXJzL29jaS9wcm92aWRlcic7XG5pbXBvcnQgeyBBcnRpZmFjdHNDb250YWluZXJSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvb2NpL2FydGlmYWN0cy1jb250YWluZXItcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBDb3JlVmNuIH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvb2NpL2NvcmUtdmNuJztcbmltcG9ydCB7IENvcmVTdWJuZXQgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9vY2kvY29yZS1zdWJuZXQnO1xuaW1wb3J0IHsgQ29yZVNlY3VyaXR5TGlzdCB9IGZyb20gJy4uLy5nZW4vcHJvdmlkZXJzL29jaS9jb3JlLXNlY3VyaXR5LWxpc3QnO1xuaW1wb3J0IHsgQ29yZVNlcnZpY2VHYXRld2F5IH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvb2NpL2NvcmUtc2VydmljZS1nYXRld2F5JztcbmltcG9ydCB7IERhdGFPY2lDb3JlU2VydmljZXMgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9vY2kvZGF0YS1vY2ktY29yZS1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb3JlUm91dGVUYWJsZSB9IGZyb20gJy4uLy5nZW4vcHJvdmlkZXJzL29jaS9jb3JlLXJvdXRlLXRhYmxlJztcbmltcG9ydCB7IENvcmVJbnRlcm5ldEdhdGV3YXkgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9vY2kvY29yZS1pbnRlcm5ldC1nYXRld2F5JztcbmltcG9ydCB7IEFwaWdhdGV3YXlHYXRld2F5IH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvb2NpL2FwaWdhdGV3YXktZ2F0ZXdheSc7XG5pbXBvcnQgeyBBcGlnYXRld2F5RGVwbG95bWVudCB9IGZyb20gJy4uLy5nZW4vcHJvdmlkZXJzL29jaS9hcGlnYXRld2F5LWRlcGxveW1lbnQnO1xuaW1wb3J0IHsgRnVuY3Rpb25zQXBwbGljYXRpb24gfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9vY2kvZnVuY3Rpb25zLWFwcGxpY2F0aW9uJztcbmltcG9ydCB7IEZ1bmN0aW9uc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvb2NpL2Z1bmN0aW9ucy1mdW5jdGlvbic7XG5pbXBvcnQgeyBMb2dnaW5nTG9nR3JvdXAgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9vY2kvbG9nZ2luZy1sb2ctZ3JvdXAnO1xuaW1wb3J0IHsgTG9nZ2luZ0xvZyB9IGZyb20gJy4uLy5nZW4vcHJvdmlkZXJzL29jaS9sb2dnaW5nLWxvZyc7XG5pbXBvcnQgeyBPY2lCYWNrZW5kQ29uZmlnLCBvY2lySG9zdEtleSwgZ2V0T2NpSW1hZ2VVcmwgfSBmcm9tICcuLi9jb25maWcvb2NpLWNvbmZpZyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9jaVN0YWNrQ29uZmlnIHtcbiAgY29tcGFydG1lbnRJZDogc3RyaW5nO1xuICBvY2lyQ29tcGFydG1lbnRJZD86IHN0cmluZztcbiAgdGVuYW5jeUlkOiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgLyoqIE9DSSBGdW5jdGlvbnMgYXBwbGljYXRpb24gbmFtZSAoZS5nLiBteS1hcHApLiBTZXQgdmlhIE9DSV9GVU5DVElPTl9BUFBfTkFNRSBvciBwYXNzIGluIGNvbmZpZy4gKi9cbiAgZnVuY3Rpb25BcHBOYW1lOiBzdHJpbmc7XG4gIC8qKiBPQ0kgRnVuY3Rpb24gbmFtZSAoZS5nLiBteS1mdW5jdGlvbikuIFNldCB2aWEgT0NJX0ZVTkNUSU9OX05BTUUgb3IgcGFzcyBpbiBjb25maWcuICovXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgcGF0aCB0byBKQVIgKG9yIERvY2tlcmZpbGUgY29udGV4dCkgdG8gYnVpbGQgYW5kIGRlcGxveSBhcyB0aGUgZnVuY3Rpb24gaW1hZ2UuIFNldCB2aWEgT0NJX0ZVTkNUSU9OX0pBUl9QQVRILiBFbXB0eSA9IG5vIGZ1bmN0aW9uL2ltYWdlIGJ1aWxkLiAqL1xuICBmdW5jdGlvbkphclBhdGg/OiBzdHJpbmc7XG4gIC8qKiBEaXJlY3RvcnkgY29udGFpbmluZyB0YXJnZXQvIChEb2NrZXJmaWxlIGlzIGdlbmVyYXRlZCBpbiBsb2NhbC1leGVjKS4gV2hlbiBzZXQgd2l0aCBmdW5jdGlvbk5hbWUsIGNyZWF0ZXMgVkNOLCBGdW5jdGlvbiwgQVBJIEdhdGV3YXkuICovXG4gIGRvY2tlckNvbnRleHRQYXRoPzogc3RyaW5nO1xuICAvKiogSW1hZ2UgdGFnIGZvciBPQ0lSIChmcm9tIGZ1bmMueWFtbCB2ZXJzaW9uIG9yIE9DSV9JTUFHRV9UQUc7IGRlZmF1bHQgJ2xhdGVzdCcpLiAqL1xuICBpbWFnZVRhZz86IHN0cmluZztcbiAgLyoqIEphdmEgRkRLIENNRCBoYW5kbGVyIChmcm9tIGZ1bmMueWFtbCBvciBPQ0lfRlVOQ1RJT05fSEFORExFUikuICovXG4gIGhhbmRsZXI/OiBzdHJpbmc7XG4gIC8qKiBXaGVuIHRydWUsIGRlcGxveSB1c2VzIHRoaW4gRG9ja2VyZmlsZSAobm8gTWF2ZW4gaW4gaW1hZ2UpOyBmdWxsIGJ1aWxkIG9ubHkgaW4gcmVkZXBsb3k6ZnVuY3Rpb24uICovXG4gIHVzZVRoaW5Eb2NrZXJmaWxlPzogYm9vbGVhbjtcbiAgb2NpclJlcG9zaXRvcnlOYW1lPzogc3RyaW5nO1xuICAvKiogQVBJIEdhdGV3YXkgZGVwbG95bWVudCBwYXRoIHByZWZpeC4gRGVmYXVsdCAnLycuICovXG4gIGFwaUd3UGF0aFByZWZpeD86IHN0cmluZztcbiAgLyoqIEFQSSBHYXRld2F5IHJvdXRlIHBhdGguIERlZmF1bHQgJy97cGF0aCp9Jy4gKi9cbiAgYXBpR3dSb3V0ZVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBBUEkgR2F0ZXdheSByb3V0ZSBtZXRob2RzLiBEZWZhdWx0IFsnR0VUJywgJ1BPU1QnLCAnT1BUSU9OUyddLiAqL1xuICBhcGlHd01ldGhvZHM/OiBzdHJpbmdbXTtcbiAgLyoqIEZ1bmN0aW9uIG1lbW9yeSBpbiBNQiAoZS5nLiAnMjU2JykuIEZyb20gZnVuYy55YW1sIG9yIE9DSV9GVU5DVElPTl9NRU1PUllfTUIuICovXG4gIGZ1bmN0aW9uTWVtb3J5TWI/OiBzdHJpbmc7XG4gIC8qKiBGdW5jdGlvbiB0aW1lb3V0IGluIHNlY29uZHMuIEZyb20gZnVuYy55YW1sIG9yIE9DSV9GVU5DVElPTl9USU1FT1VUX1NFQ09ORFMuICovXG4gIGZ1bmN0aW9uVGltZW91dFNlY29uZHM/OiBudW1iZXI7XG4gIC8qKiBGdW5jdGlvbiBjb25maWcvZW52IGtleS12YWx1ZS4gRnJvbSBmdW5jLnlhbWwgY29uZmlnIG9yIE9DSV9GVU5DVElPTl9DT05GSUcuICovXG4gIGZ1bmN0aW9uQ29uZmlnPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIFBhdGggdG8gQVBJIEdhdGV3YXkgZGVwbG95bWVudCBzcGVjIEpTT04gKHJvdXRlcykuIERlZmF1bHQgb2NpX2FwaWdhdGV3YXlfZGVwbG95bWVudC5qc29uIGluIHByb2plY3Qgcm9vdC4gKi9cbiAgYXBpR3dEZXBsb3ltZW50SnNvblBhdGg/OiBzdHJpbmc7XG4gIGJhY2tlbmQ/OiBPY2lCYWNrZW5kQ29uZmlnO1xufVxuXG5leHBvcnQgY2xhc3MgT2NpU3RhY2sgZXh0ZW5kcyBUZXJyYWZvcm1TdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZzogT2NpU3RhY2tDb25maWcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gQ29uZmlndXJlIFRlcnJhZm9ybSBiYWNrZW5kIChpZiBub3QgbG9jYWwpXG4gICAgaWYgKGNvbmZpZy5iYWNrZW5kICYmIGNvbmZpZy5iYWNrZW5kLnR5cGUgIT09ICdsb2NhbCcpIHtcbiAgICAgIGlmIChjb25maWcuYmFja2VuZC50eXBlID09PSAnb2NpJykge1xuICAgICAgICAvLyBPQ0kgbmF0aXZlIGJhY2tlbmRcbiAgICAgICAgdGhpcy5hZGRPdmVycmlkZSgndGVycmFmb3JtLmJhY2tlbmQnLCB7XG4gICAgICAgICAgb2NpOiB7XG4gICAgICAgICAgICBidWNrZXQ6IGNvbmZpZy5iYWNrZW5kLmJ1Y2tldCxcbiAgICAgICAgICAgIG5hbWVzcGFjZTogY29uZmlnLm5hbWVzcGFjZSxcbiAgICAgICAgICAgIGtleTogY29uZmlnLmJhY2tlbmQua2V5IHx8IGAke2lkfS90ZXJyYWZvcm0udGZzdGF0ZWAsXG4gICAgICAgICAgICByZWdpb246IGNvbmZpZy5yZWdpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNvbmZpZy5iYWNrZW5kLnR5cGUgPT09ICdodHRwJykge1xuICAgICAgICAvLyBIVFRQIGJhY2tlbmQgKGZvciBPQ0kgT2JqZWN0IFN0b3JhZ2UgdmlhIFJFU1QgQVBJKVxuICAgICAgICBjb25zdCBodHRwQmFja2VuZDogYW55ID0ge1xuICAgICAgICAgIGFkZHJlc3M6IGNvbmZpZy5iYWNrZW5kLmFkZHJlc3MsXG4gICAgICAgICAgdXBkYXRlX21ldGhvZDogY29uZmlnLmJhY2tlbmQudXBkYXRlTWV0aG9kIHx8ICdQVVQnLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoY29uZmlnLmJhY2tlbmQubG9ja0FkZHJlc3MpIHtcbiAgICAgICAgICBodHRwQmFja2VuZC5sb2NrX2FkZHJlc3MgPSBjb25maWcuYmFja2VuZC5sb2NrQWRkcmVzcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLmJhY2tlbmQudW5sb2NrQWRkcmVzcykge1xuICAgICAgICAgIGh0dHBCYWNrZW5kLnVubG9ja19hZGRyZXNzID0gY29uZmlnLmJhY2tlbmQudW5sb2NrQWRkcmVzcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZE92ZXJyaWRlKCd0ZXJyYWZvcm0uYmFja2VuZCcsIHtcbiAgICAgICAgICBodHRwOiBodHRwQmFja2VuZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT0NJIFByb3ZpZGVyXG4gICAgbmV3IE9jaVByb3ZpZGVyKHRoaXMsICdvY2knLCB7XG4gICAgICByZWdpb246IGNvbmZpZy5yZWdpb24sXG4gICAgICB0ZW5hbmN5T2NpZDogY29uZmlnLnRlbmFuY3lJZCxcbiAgICB9KTtcblxuICAgIC8vIE9DSVIgQ29udGFpbmVyIFJlcG9zaXRvcnkgKHJvb3QgY29tcGFydG1lbnQgYWxsb3dlZCBpZiBleHBsaWNpdGx5IHNldClcbiAgICBjb25zdCBvY2lyQ29tcGFydG1lbnRJZCA9IGNvbmZpZy5vY2lyQ29tcGFydG1lbnRJZCB8fCBjb25maWcuY29tcGFydG1lbnRJZDtcbiAgICBjb25zdCBvY2lyUmVwb05hbWUgPSBjb25maWcub2NpclJlcG9zaXRvcnlOYW1lIHx8IGNvbmZpZy5mdW5jdGlvbk5hbWUgfHwgJ29jaS1mdW5jdGlvbic7XG5cbiAgICBjb25zdCBvY2lyUmVwb3NpdG9yeSA9IG5ldyBBcnRpZmFjdHNDb250YWluZXJSZXBvc2l0b3J5KHRoaXMsICdPY2lyUmVwb3NpdG9yeScsIHtcbiAgICAgIGNvbXBhcnRtZW50SWQ6IG9jaXJDb21wYXJ0bWVudElkLFxuICAgICAgZGlzcGxheU5hbWU6IG9jaXJSZXBvTmFtZSxcbiAgICAgIGlzUHVibGljOiBmYWxzZSwgLy8gUHJpdmF0ZSByZXBvc2l0b3J5IGJ5IGRlZmF1bHRcbiAgICAgIGlzSW1tdXRhYmxlOiBmYWxzZSwgLy8gQWxsb3cgaW1hZ2UgdXBkYXRlc1xuICAgIH0pO1xuXG4gICAgY29uc3QgZG9ja2VyQ29udGV4dFBhdGggPSAoY29uZmlnLmRvY2tlckNvbnRleHRQYXRoIHx8IGNvbmZpZy5mdW5jdGlvbkphclBhdGgpPy50cmltKCk7XG4gICAgY29uc3QgY3JlYXRlRnVsbFN0YWNrID0gY29uZmlnLmZ1bmN0aW9uTmFtZSAmJiBkb2NrZXJDb250ZXh0UGF0aDtcblxuICAgIGlmIChjcmVhdGVGdWxsU3RhY2spIHtcbiAgICAgIGlmIChvY2lyQ29tcGFydG1lbnRJZC5pbmNsdWRlcygncm9vdCcpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnRnVsbCBzdGFjayAoRnVuY3Rpb24gKyBBUEkgR2F0ZXdheSkgcmVxdWlyZXMgYSBub24tcm9vdCBjb21wYXJ0bWVudCBmb3IgT0NJUi4gU2V0IE9DSV9PQ0lSX0NPTVBBUlRNRU5UX0lEIHRvIHlvdXIgaG9tZSBjb21wYXJ0bWVudCBPQ0lELidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZ1bmN0aW9uQ29kZVBhdGggPSBwYXRoLnJlc29sdmUoZG9ja2VyQ29udGV4dFBhdGghKTtcbiAgICAgIGNvbnN0IGltYWdlVGFnID0gY29uZmlnLmltYWdlVGFnIHx8ICdsYXRlc3QnO1xuICAgICAgY29uc3Qgb2NpclJlZ2lzdHJ5ID0gYCR7b2Npckhvc3RLZXkoY29uZmlnLnJlZ2lvbil9Lm9jaXIuaW9gO1xuICAgICAgY29uc3QgaW1hZ2VVcmwgPSBnZXRPY2lJbWFnZVVybChjb25maWcpO1xuICAgICAgY29uc3QgYXBwTmFtZSA9IGNvbmZpZy5mdW5jdGlvbkFwcE5hbWUgfHwgY29uZmlnLmZ1bmN0aW9uTmFtZSE7XG4gICAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBhcHBOYW1lO1xuXG4gICAgICB0aGlzLmFkZE92ZXJyaWRlKCd0ZXJyYWZvcm0ucmVxdWlyZWRfcHJvdmlkZXJzLm51bGwnLCB7XG4gICAgICAgIHNvdXJjZTogJ2hhc2hpY29ycC9udWxsJyxcbiAgICAgICAgdmVyc2lvbjogJ34+IDMuMCcsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGJ1aWxkQW5kUHVzaEltYWdlSWQgPSAnQnVpbGRBbmRQdXNoSW1hZ2UnO1xuICAgICAgdGhpcy5hZGRPdmVycmlkZShgcmVzb3VyY2UubnVsbF9yZXNvdXJjZS4ke2J1aWxkQW5kUHVzaEltYWdlSWR9LmRlcGVuZHNfb25gLCBbXG4gICAgICAgICdvY2lfYXJ0aWZhY3RzX2NvbnRhaW5lcl9yZXBvc2l0b3J5Lk9jaXJSZXBvc2l0b3J5JyxcbiAgICAgIF0pO1xuICAgICAgdGhpcy5hZGRPdmVycmlkZShgcmVzb3VyY2UubnVsbF9yZXNvdXJjZS4ke2J1aWxkQW5kUHVzaEltYWdlSWR9LnRyaWdnZXJzYCwge1xuICAgICAgICByZXBvX25hbWU6IG9jaXJSZXBvTmFtZSxcbiAgICAgICAgaW1hZ2VfdXJsOiBpbWFnZVVybCxcbiAgICAgICAgaW1hZ2VfdGFnOiBpbWFnZVRhZyxcbiAgICAgICAgaGFuZGxlcjogY29uZmlnLmhhbmRsZXIgfHwgJycsXG4gICAgICAgIHVzZV90aGluX2RvY2tlcmZpbGU6IGNvbmZpZy51c2VUaGluRG9ja2VyZmlsZSA9PT0gdHJ1ZSA/ICcxJyA6ICcwJyxcbiAgICAgICAgbmFtZXNwYWNlOiBjb25maWcubmFtZXNwYWNlLFxuICAgICAgICByZWdpb246IGNvbmZpZy5yZWdpb24sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlZ2lvblAgPSBjb25maWcucmVnaW9uO1xuICAgICAgY29uc3QgbmFtZXNwYWNlUCA9IGNvbmZpZy5uYW1lc3BhY2U7XG4gICAgICBjb25zdCBvY2lyVXNlciA9IHByb2Nlc3MuZW52Lk9DSV9PQ0lSX1VTRVJOQU1FIHx8ICdBVVRPX0RFVEVDVCc7XG4gICAgICBjb25zdCBsb2dpblNjcmlwdCA9IHByb2Nlc3MuZW52Lk9DSV9BVVRIX1RPS0VOXG4gICAgICAgID8gYGV4cG9ydCBPQ0lSX0FVVEhfVE9LRU49XCIke3Byb2Nlc3MuZW52Lk9DSV9BVVRIX1RPS0VOfVwiOyBPQ0lSX1VTRVI9XCIke29jaXJVc2VyfVwiOyBbIFwiJE9DSVJfVVNFUlwiID0gXCJBVVRPX0RFVEVDVFwiIF0gJiYgT0NJUl9VU0VSPVwiJHtuYW1lc3BhY2VQfS91c2VyXCI7IGVjaG8gXCIkT0NJUl9BVVRIX1RPS0VOXCIgfCBkb2NrZXIgbG9naW4gJHtvY2lyUmVnaXN0cnl9IC11IFwiJE9DSVJfVVNFUlwiIC0tcGFzc3dvcmQtc3RkaW4gfHwgZXhpdCAxYFxuICAgICAgICA6IGBvY2kgcmF3LXJlcXVlc3QgLS1yZWdpb24gJHtyZWdpb25QfSAtLWh0dHAtbWV0aG9kIEdFVCAtLXRhcmdldC11cmkgXCJodHRwczovLyR7b2NpclJlZ2lzdHJ5fS8yMDE4MDQxOS9kb2NrZXIvdG9rZW5cIiAyPi9kZXYvbnVsbCB8IChjb21tYW5kIC12IGpxID4vZGV2L251bGwgJiYganEgLXIgLmRhdGEudG9rZW4gfHwgZ3JlcCAtbyAnXCJ0b2tlblwiOlwiW15cIl0qXCInIHwgY3V0IC1kJ1wiJyAtZjQpIHwgZG9ja2VyIGxvZ2luIC11IEJFQVJFUl9UT0tFTiAtLXBhc3N3b3JkLXN0ZGluICR7b2NpclJlZ2lzdHJ5fSB8fCAoZWNobyBcIlNldCBPQ0lfQVVUSF9UT0tFTiBvciBjb25maWd1cmUgT0NJIENMSVwiID4mMjsgZXhpdCAxKWA7XG4gICAgICBjb25zdCBoYW5kbGVyID0gY29uZmlnLmhhbmRsZXIgfHwgJ2NvbS5leGFtcGxlLmZuLkhlbGxvRnVuY3Rpb246OmhhbmRsZVJlcXVlc3QnO1xuICAgICAgY29uc3QgdXNlVGhpbiA9IGNvbmZpZy51c2VUaGluRG9ja2VyZmlsZSA9PT0gdHJ1ZTtcbiAgICAgIGNvbnN0IGRvY2tlcmZpbGVDb250ZW50VGhpbiA9IGBGUk9NIGZucHJvamVjdC9mbi1qYXZhLWZkazpqcmUxNy0xLjEuNVxuV09SS0RJUiAvZnVuY3Rpb25cbkNPUFkgdGFyZ2V0LyouamFyIC9mdW5jdGlvbi9hcHAvXG5DTUQgW1wiJHtoYW5kbGVyLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKX1cIl1cbmA7XG4gICAgICBjb25zdCBkb2NrZXJmaWxlQ29udGVudEZ1bGwgPSBgRlJPTSBmbnByb2plY3QvZm4tamF2YS1mZGstYnVpbGQ6amRrMTctMS4xLjUgYXMgYnVpbGQtc3RhZ2VcbldPUktESVIgL2Z1bmN0aW9uXG5FTlYgTUFWRU5fT1BUUyAtRGh0dHAucHJveHlIb3N0PSAtRGh0dHAucHJveHlQb3J0PSAtRGh0dHBzLnByb3h5SG9zdD0gLURodHRwcy5wcm94eVBvcnQ9IC1EaHR0cC5ub25Qcm94eUhvc3RzPSAtRG1hdmVuLnJlcG8ubG9jYWw9L3Vzci9zaGFyZS9tYXZlbi9yZWYvcmVwb3NpdG9yeVxuQUREIHBvbS54bWwgL2Z1bmN0aW9uL3BvbS54bWxcblJVTiBbXCJtdm5cIiwgXCJwYWNrYWdlXCIsIFwiZGVwZW5kZW5jeTpjb3B5LWRlcGVuZGVuY2llc1wiLCBcIi1EaW5jbHVkZVNjb3BlPXJ1bnRpbWVcIiwgXCItRHNraXBUZXN0cz10cnVlXCIsIFwiLURtZGVwLnByZXBlbmRHcm91cElkPXRydWVcIiwgXCItRG91dHB1dERpcmVjdG9yeT10YXJnZXRcIiwgXCItLWZhaWwtbmV2ZXJcIl1cbkFERCBzcmMgL2Z1bmN0aW9uL3NyY1xuUlVOIFtcIm12blwiLCBcInBhY2thZ2VcIl1cbkZST00gZm5wcm9qZWN0L2ZuLWphdmEtZmRrOmpyZTE3LTEuMS41XG5XT1JLRElSIC9mdW5jdGlvblxuQ09QWSAtLWZyb209YnVpbGQtc3RhZ2UgL2Z1bmN0aW9uL3RhcmdldC8qLmphciAvZnVuY3Rpb24vYXBwL1xuQ01EIFtcIiR7aGFuZGxlci5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJyl9XCJdXG5gO1xuICAgICAgY29uc3QgZG9ja2VyZmlsZUNvbnRlbnQgPSB1c2VUaGluID8gZG9ja2VyZmlsZUNvbnRlbnRUaGluIDogZG9ja2VyZmlsZUNvbnRlbnRGdWxsO1xuICAgICAgY29uc3QgZG9ja2VyaWdub3JlQ29udGVudCA9IGBub2RlX21vZHVsZXNcbi5naXRcbioubWRcbi5lbnZcbi5pZGVhXG4udnNjb2RlXG4qLmxvZ1xub2NpX2FwaWdhdGV3YXlfZGVwbG95bWVudC5qc29uXG4ub2Nkay1vdXRwdXRzLmpzb25cbnRhaWwtZnVuY3Rpb24tbG9ncy5qc1xudGFpbC1mdW5jdGlvbi1sb2dzLnNoXG5gO1xuICAgICAgY29uc3QgZG9ja2VyZmlsZUI2NCA9IEJ1ZmZlci5mcm9tKGRvY2tlcmZpbGVDb250ZW50LCAndXRmOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIGNvbnN0IGRvY2tlcmlnbm9yZUI2NCA9IEJ1ZmZlci5mcm9tKGRvY2tlcmlnbm9yZUNvbnRlbnQsICd1dGY4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgLy8gR2VuZXJhdGUgRG9ja2VyZmlsZSBhbmQgLmRvY2tlcmlnbm9yZSBpbiBsb2NhbC1leGVjIG9ubHkgaWYgbWlzc2luZzsgaWYgdGhleSBleGlzdCB1c2UgYXMtaXMuIFRoZW4gbG9naW4sIGJ1aWxkLCBwdXNoLlxuICAgICAgdGhpcy5hZGRPdmVycmlkZShgcmVzb3VyY2UubnVsbF9yZXNvdXJjZS4ke2J1aWxkQW5kUHVzaEltYWdlSWR9LnByb3Zpc2lvbmVyYCwgW1xuICAgICAgICB7XG4gICAgICAgICAgJ2xvY2FsLWV4ZWMnOiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnY2QgXCIkRlVOQ1RJT05fQ09ERV9QQVRIXCIgJiYgKFsgLWYgRG9ja2VyZmlsZSBdIHx8IChlY2hvIFwiJERPQ0tFUkZJTEVfQjY0XCIgfCBiYXNlNjQgLWQgPiBEb2NrZXJmaWxlKSkgJiYgKFsgLWYgLmRvY2tlcmlnbm9yZSBdIHx8IChlY2hvIFwiJERPQ0tFUklHTk9SRV9CNjRcIiB8IGJhc2U2NCAtZCA+IC5kb2NrZXJpZ25vcmUpKScsXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICBGVU5DVElPTl9DT0RFX1BBVEg6IGZ1bmN0aW9uQ29kZVBhdGgsXG4gICAgICAgICAgICAgIERPQ0tFUkZJTEVfQjY0OiBkb2NrZXJmaWxlQjY0LFxuICAgICAgICAgICAgICBET0NLRVJJR05PUkVfQjY0OiBkb2NrZXJpZ25vcmVCNjQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgJ2xvY2FsLWV4ZWMnOiB7IGNvbW1hbmQ6IGxvZ2luU2NyaXB0LCBvbl9mYWlsdXJlOiAnY29udGludWUnIH0gfSxcbiAgICAgICAgeyAnbG9jYWwtZXhlYyc6IHsgY29tbWFuZDogYGNkIFwiJHtmdW5jdGlvbkNvZGVQYXRoLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKX1cIiAmJiBkb2NrZXIgYnVpbGQgLS1wbGF0Zm9ybSBsaW51eC9hbWQ2NCAtdCAke2ltYWdlVXJsfSAuYCB9IH0sXG4gICAgICAgIHsgJ2xvY2FsLWV4ZWMnOiB7IGNvbW1hbmQ6IGBkb2NrZXIgcHVzaCAke2ltYWdlVXJsfWAgfSB9LFxuICAgICAgXSk7XG5cbiAgICAgIGNvbnN0IHZjbiA9IG5ldyBDb3JlVmNuKHRoaXMsICdWY24nLCB7XG4gICAgICAgIGNvbXBhcnRtZW50SWQ6IGNvbmZpZy5jb21wYXJ0bWVudElkLFxuICAgICAgICBkaXNwbGF5TmFtZTogYCR7cmVzb3VyY2VOYW1lfS12Y25gLFxuICAgICAgICBjaWRyQmxvY2tzOiBbJzEwLjAuMC4wLzE2J10sXG4gICAgICAgIGRuc0xhYmVsOiAnYXBwZm4nLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBwdWJsaWNTdWJuZXQgPSBuZXcgQ29yZVN1Ym5ldCh0aGlzLCAnUHVibGljU3VibmV0Jywge1xuICAgICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgICAgdmNuSWQ6IHZjbi5pZCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke3Jlc291cmNlTmFtZX0tcHVibGljYCxcbiAgICAgICAgY2lkckJsb2NrOiAnMTAuMC4xLjAvMjQnLFxuICAgICAgICBkbnNMYWJlbDogJ3B1YmxpYycsXG4gICAgICAgIHByb2hpYml0UHVibGljSXBPblZuaWM6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBwcml2YXRlU3VibmV0ID0gbmV3IENvcmVTdWJuZXQodGhpcywgJ1ByaXZhdGVTdWJuZXQnLCB7XG4gICAgICAgIGNvbXBhcnRtZW50SWQ6IGNvbmZpZy5jb21wYXJ0bWVudElkLFxuICAgICAgICB2Y25JZDogdmNuLmlkLFxuICAgICAgICBkaXNwbGF5TmFtZTogYCR7cmVzb3VyY2VOYW1lfS1wcml2YXRlYCxcbiAgICAgICAgY2lkckJsb2NrOiAnMTAuMC4yLjAvMjQnLFxuICAgICAgICBkbnNMYWJlbDogJ3ByaXZhdGUnLFxuICAgICAgICBwcm9oaWJpdFB1YmxpY0lwT25WbmljOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHB1YmxpY1NsID0gbmV3IENvcmVTZWN1cml0eUxpc3QodGhpcywgJ1B1YmxpY1NlY3VyaXR5TGlzdCcsIHtcbiAgICAgICAgY29tcGFydG1lbnRJZDogY29uZmlnLmNvbXBhcnRtZW50SWQsXG4gICAgICAgIHZjbklkOiB2Y24uaWQsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBgJHtyZXNvdXJjZU5hbWV9LXB1YmxpYy1zbGAsXG4gICAgICAgIGluZ3Jlc3NTZWN1cml0eVJ1bGVzOiBbXG4gICAgICAgICAgeyBwcm90b2NvbDogJzYnLCBzb3VyY2U6ICcwLjAuMC4wLzAnLCBkZXNjcmlwdGlvbjogJ0hUVFAnLCB0Y3BPcHRpb25zOiB7IG1pbjogODAsIG1heDogODAgfSB9LFxuICAgICAgICAgIHsgcHJvdG9jb2w6ICc2Jywgc291cmNlOiAnMC4wLjAuMC8wJywgZGVzY3JpcHRpb246ICdIVFRQUycsIHRjcE9wdGlvbnM6IHsgbWluOiA0NDMsIG1heDogNDQzIH0gfSxcbiAgICAgICAgXSxcbiAgICAgICAgZWdyZXNzU2VjdXJpdHlSdWxlczogW3sgcHJvdG9jb2w6ICdhbGwnLCBkZXN0aW5hdGlvbjogJzAuMC4wLjAvMCcsIGRlc2NyaXB0aW9uOiAnQWxsJyB9XSxcbiAgICAgIH0pO1xuICAgICAgcHVibGljU3VibmV0LmFkZE92ZXJyaWRlKCdzZWN1cml0eV9saXN0X2lkcycsIFtwdWJsaWNTbC5pZF0pO1xuICAgICAgY29uc3QgcHJpdmF0ZVNsID0gbmV3IENvcmVTZWN1cml0eUxpc3QodGhpcywgJ1ByaXZhdGVTZWN1cml0eUxpc3QnLCB7XG4gICAgICAgIGNvbXBhcnRtZW50SWQ6IGNvbmZpZy5jb21wYXJ0bWVudElkLFxuICAgICAgICB2Y25JZDogdmNuLmlkLFxuICAgICAgICBkaXNwbGF5TmFtZTogYCR7cmVzb3VyY2VOYW1lfS1wcml2YXRlLXNsYCxcbiAgICAgICAgaW5ncmVzc1NlY3VyaXR5UnVsZXM6IFtcbiAgICAgICAgICB7IHByb3RvY29sOiAnNicsIHNvdXJjZTogJzEwLjAuMi4wLzI0JywgZGVzY3JpcHRpb246ICdQRycsIHRjcE9wdGlvbnM6IHsgbWluOiA1NDMyLCBtYXg6IDU0MzIgfSB9LFxuICAgICAgICBdLFxuICAgICAgICBlZ3Jlc3NTZWN1cml0eVJ1bGVzOiBbeyBwcm90b2NvbDogJ2FsbCcsIGRlc3RpbmF0aW9uOiAnMC4wLjAuMC8wJywgZGVzY3JpcHRpb246ICdBbGwnIH1dLFxuICAgICAgfSk7XG4gICAgICBwcml2YXRlU3VibmV0LmFkZE92ZXJyaWRlKCdzZWN1cml0eV9saXN0X2lkcycsIFtwcml2YXRlU2wuaWRdKTtcblxuICAgICAgY29uc3QgYWxsU2VydmljZXMgPSBuZXcgRGF0YU9jaUNvcmVTZXJ2aWNlcyh0aGlzLCAnQWxsU2VydmljZXMnLCB7fSk7XG4gICAgICBjb25zdCBzdmNHdyA9IG5ldyBDb3JlU2VydmljZUdhdGV3YXkodGhpcywgJ1NlcnZpY2VHYXRld2F5Jywge1xuICAgICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgICAgdmNuSWQ6IHZjbi5pZCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke3Jlc291cmNlTmFtZX0tc2d3YCxcbiAgICAgICAgc2VydmljZXM6IFt7IHNlcnZpY2VJZDogYWxsU2VydmljZXMuc2VydmljZXMuZ2V0KDApLmlkIH1dLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBwcml2UnQgPSBuZXcgQ29yZVJvdXRlVGFibGUodGhpcywgJ1ByaXZhdGVSb3V0ZVRhYmxlJywge1xuICAgICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgICAgdmNuSWQ6IHZjbi5pZCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke3Jlc291cmNlTmFtZX0tcHJpdmF0ZS1ydGAsXG4gICAgICAgIHJvdXRlUnVsZXM6IFtcbiAgICAgICAgICB7IG5ldHdvcmtFbnRpdHlJZDogc3ZjR3cuaWQsIGRlc3RpbmF0aW9uOiBhbGxTZXJ2aWNlcy5zZXJ2aWNlcy5nZXQoMCkuY2lkckJsb2NrLCBkZXN0aW5hdGlvblR5cGU6ICdTRVJWSUNFX0NJRFJfQkxPQ0snLCBkZXNjcmlwdGlvbjogJ09DSVInIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIHByaXZhdGVTdWJuZXQuYWRkT3ZlcnJpZGUoJ3JvdXRlX3RhYmxlX2lkJywgcHJpdlJ0LmlkKTtcbiAgICAgIGNvbnN0IGlndyA9IG5ldyBDb3JlSW50ZXJuZXRHYXRld2F5KHRoaXMsICdJbnRlcm5ldEdhdGV3YXknLCB7XG4gICAgICAgIGNvbXBhcnRtZW50SWQ6IGNvbmZpZy5jb21wYXJ0bWVudElkLFxuICAgICAgICB2Y25JZDogdmNuLmlkLFxuICAgICAgICBkaXNwbGF5TmFtZTogYCR7cmVzb3VyY2VOYW1lfS1pZ3dgLFxuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBwdWJSdCA9IG5ldyBDb3JlUm91dGVUYWJsZSh0aGlzLCAnUHVibGljUm91dGVUYWJsZScsIHtcbiAgICAgICAgY29tcGFydG1lbnRJZDogY29uZmlnLmNvbXBhcnRtZW50SWQsXG4gICAgICAgIHZjbklkOiB2Y24uaWQsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBgJHtyZXNvdXJjZU5hbWV9LXB1YmxpYy1ydGAsXG4gICAgICAgIHJvdXRlUnVsZXM6IFtcbiAgICAgICAgICB7IG5ldHdvcmtFbnRpdHlJZDogaWd3LmlkLCBkZXN0aW5hdGlvbjogJzAuMC4wLjAvMCcsIGRlc3RpbmF0aW9uVHlwZTogJ0NJRFJfQkxPQ0snLCBkZXNjcmlwdGlvbjogJ0ludGVybmV0JyB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgICBwdWJsaWNTdWJuZXQuYWRkT3ZlcnJpZGUoJ3JvdXRlX3RhYmxlX2lkJywgcHViUnQuaWQpO1xuXG4gICAgICBjb25zdCBhcGlHYXRld2F5ID0gbmV3IEFwaWdhdGV3YXlHYXRld2F5KHRoaXMsICdBcGlHYXRld2F5Jywge1xuICAgICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgICAgc3VibmV0SWQ6IHB1YmxpY1N1Ym5ldC5pZCxcbiAgICAgICAgZW5kcG9pbnRUeXBlOiAnUFVCTElDJyxcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke3Jlc291cmNlTmFtZX0tYXBpLWdhdGV3YXlgLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBsb2dHcm91cCA9IG5ldyBMb2dnaW5nTG9nR3JvdXAodGhpcywgJ0xvZ0dyb3VwJywge1xuICAgICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGFwcE5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgTG9nIGdyb3VwIGZvciAke2FwcE5hbWV9YCxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZnVuY3Rpb25BcHAgPSBuZXcgRnVuY3Rpb25zQXBwbGljYXRpb24odGhpcywgJ0Z1bmN0aW9uQXBwJywge1xuICAgICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGFwcE5hbWUsXG4gICAgICAgIHN1Ym5ldElkczogW3ByaXZhdGVTdWJuZXQuaWRdLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBvY2lGdW5jdGlvbiA9IG5ldyBGdW5jdGlvbnNGdW5jdGlvbih0aGlzLCAnRnVuY3Rpb24nLCB7XG4gICAgICAgIGFwcGxpY2F0aW9uSWQ6IGZ1bmN0aW9uQXBwLmlkLFxuICAgICAgICBkaXNwbGF5TmFtZTogY29uZmlnLmZ1bmN0aW9uTmFtZSEsXG4gICAgICAgIGltYWdlOiBpbWFnZVVybCxcbiAgICAgICAgbWVtb3J5SW5NYnM6IGNvbmZpZy5mdW5jdGlvbk1lbW9yeU1iID8/ICcyNTYnLFxuICAgICAgICB0aW1lb3V0SW5TZWNvbmRzOiBjb25maWcuZnVuY3Rpb25UaW1lb3V0U2Vjb25kcyA/PyAzMCxcbiAgICAgICAgLi4uKGNvbmZpZy5mdW5jdGlvbkNvbmZpZyAmJiBPYmplY3Qua2V5cyhjb25maWcuZnVuY3Rpb25Db25maWcpLmxlbmd0aCA+IDAgPyB7IGNvbmZpZzogY29uZmlnLmZ1bmN0aW9uQ29uZmlnIH0gOiB7fSksXG4gICAgICB9KTtcbiAgICAgIG9jaUZ1bmN0aW9uLmFkZE92ZXJyaWRlKCdkZXBlbmRzX29uJywgW2BudWxsX3Jlc291cmNlLiR7YnVpbGRBbmRQdXNoSW1hZ2VJZH1gXSk7XG4gICAgICBjb25zdCBwYXRoUHJlZml4ID0gY29uZmlnLmFwaUd3UGF0aFByZWZpeCA/PyAnLyc7XG4gICAgICBsZXQgcm91dGVzOiBBcnJheTx7IHBhdGg6IHN0cmluZzsgbWV0aG9kczogc3RyaW5nW107IGJhY2tlbmQ6IHsgdHlwZTogc3RyaW5nOyBmdW5jdGlvbklkOiB0eXBlb2Ygb2NpRnVuY3Rpb24uaWQ7IHJlYWRUaW1lb3V0SW5TZWNvbmRzPzogbnVtYmVyIH0gfT47XG4gICAgICBpZiAoY29uZmlnLmFwaUd3RGVwbG95bWVudEpzb25QYXRoICYmIGZzLmV4aXN0c1N5bmMoY29uZmlnLmFwaUd3RGVwbG95bWVudEpzb25QYXRoKSkge1xuICAgICAgICBjb25zdCByYXcgPSBmcy5yZWFkRmlsZVN5bmMoY29uZmlnLmFwaUd3RGVwbG95bWVudEpzb25QYXRoLCAndXRmOCcpO1xuICAgICAgICBjb25zdCBzcGVjID0gSlNPTi5wYXJzZShyYXcpIGFzIHsgcm91dGVzPzogQXJyYXk8eyBwYXRoPzogc3RyaW5nOyBtZXRob2RzPzogc3RyaW5nW107IGJhY2tlbmQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PiB9O1xuICAgICAgICBjb25zdCByb3V0ZUxpc3QgPSBzcGVjPy5yb3V0ZXMgPz8gW107XG4gICAgICAgIHJvdXRlcyA9IHJvdXRlTGlzdC5tYXAoKHIpID0+IHtcbiAgICAgICAgICBjb25zdCBiID0gci5iYWNrZW5kID8/IHt9O1xuICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uSWRSYXcgPSAoYi5mdW5jdGlvbklkID8/IGIuZnVuY3Rpb25faWQpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBjb25zdCBmdW5jdGlvbklkID0gdHlwZW9mIGZ1bmN0aW9uSWRSYXcgPT09ICdzdHJpbmcnICYmIGZ1bmN0aW9uSWRSYXcuaW5jbHVkZXMoJyR7ZnVuY3Rpb25faWR9JylcbiAgICAgICAgICAgID8gb2NpRnVuY3Rpb24uaWRcbiAgICAgICAgICAgIDogKGZ1bmN0aW9uSWRSYXcgPz8gb2NpRnVuY3Rpb24uaWQpO1xuICAgICAgICAgIGNvbnN0IHJlYWRUaW1lb3V0ID0gKGIucmVhZFRpbWVvdXRJblNlY29uZHMgPz8gYi5yZWFkX3RpbWVvdXRfaW5fc2Vjb25kcykgYXMgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYXRoOiByLnBhdGggPz8gJy97cGF0aCp9JyxcbiAgICAgICAgICAgIG1ldGhvZHM6IEFycmF5LmlzQXJyYXkoci5tZXRob2RzKSA/IHIubWV0aG9kcyA6IFsnR0VUJywgJ1BPU1QnLCAnT1BUSU9OUyddLFxuICAgICAgICAgICAgYmFja2VuZDoge1xuICAgICAgICAgICAgICB0eXBlOiAoYi50eXBlIGFzIHN0cmluZykgPz8gJ09SQUNMRV9GVU5DVElPTlNfQkFDS0VORCcsXG4gICAgICAgICAgICAgIGZ1bmN0aW9uSWQsXG4gICAgICAgICAgICAgIC4uLihyZWFkVGltZW91dCAhPSBudWxsID8geyByZWFkVGltZW91dEluU2Vjb25kczogcmVhZFRpbWVvdXQgfSA6IHt9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByb3V0ZVBhdGggPSBjb25maWcuYXBpR3dSb3V0ZVBhdGggPz8gJy97cGF0aCp9JztcbiAgICAgICAgY29uc3QgbWV0aG9kcyA9IGNvbmZpZy5hcGlHd01ldGhvZHM/Lmxlbmd0aCA/IGNvbmZpZy5hcGlHd01ldGhvZHMgOiBbJ0dFVCcsICdQT1NUJywgJ09QVElPTlMnXTtcbiAgICAgICAgcm91dGVzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhdGg6IHJvdXRlUGF0aCxcbiAgICAgICAgICAgIG1ldGhvZHMsXG4gICAgICAgICAgICBiYWNrZW5kOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdPUkFDTEVfRlVOQ1RJT05TX0JBQ0tFTkQnLFxuICAgICAgICAgICAgICBmdW5jdGlvbklkOiBvY2lGdW5jdGlvbi5pZCxcbiAgICAgICAgICAgICAgcmVhZFRpbWVvdXRJblNlY29uZHM6IGNvbmZpZy5mdW5jdGlvblRpbWVvdXRTZWNvbmRzID8/IDMwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfVxuICAgICAgY29uc3QgYXBpRGVwbG95bWVudCA9IG5ldyBBcGlnYXRld2F5RGVwbG95bWVudCh0aGlzLCAnQXBpRGVwbG95bWVudCcsIHtcbiAgICAgICAgY29tcGFydG1lbnRJZDogY29uZmlnLmNvbXBhcnRtZW50SWQsXG4gICAgICAgIGdhdGV3YXlJZDogYXBpR2F0ZXdheS5pZCxcbiAgICAgICAgcGF0aFByZWZpeCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke3Jlc291cmNlTmFtZX0tZGVwbG95bWVudGAsXG4gICAgICAgIHNwZWNpZmljYXRpb246IHtcbiAgICAgICAgICByb3V0ZXMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGFwaURlcGxveW1lbnQubm9kZS5hZGREZXBlbmRlbmN5KG9jaUZ1bmN0aW9uKTtcblxuICAgICAgLy8gRnVuY3Rpb25zIGV4ZWN1dGlvbiBsb2c6IFNFUlZJQ0UgbG9nIGZvciB0aGUgRnVuY3Rpb25zIGFwcGxpY2F0aW9uIChjYXRlZ29yeSBpbnZva2UpXG4gICAgICBjb25zdCBleGVjdXRpb25Mb2cgPSBuZXcgTG9nZ2luZ0xvZyh0aGlzLCAnRXhlY3V0aW9uTG9nJywge1xuICAgICAgICBkaXNwbGF5TmFtZTogYCR7YXBwTmFtZX0taW52b2tlYCxcbiAgICAgICAgbG9nR3JvdXBJZDogbG9nR3JvdXAuaWQsXG4gICAgICAgIGxvZ1R5cGU6ICdTRVJWSUNFJyxcbiAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgIGNvbXBhcnRtZW50SWQ6IGNvbmZpZy5jb21wYXJ0bWVudElkLFxuICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgY2F0ZWdvcnk6ICdpbnZva2UnLFxuICAgICAgICAgICAgLy8gQXNzb2NpYXRlIHRoaXMgc2VydmljZSBsb2cgd2l0aCB0aGUgRnVuY3Rpb25zIGFwcGxpY2F0aW9uXG4gICAgICAgICAgICByZXNvdXJjZTogZnVuY3Rpb25BcHAuaWQsXG4gICAgICAgICAgICBzZXJ2aWNlOiAnZnVuY3Rpb25zJyxcbiAgICAgICAgICAgIHNvdXJjZVR5cGU6ICdPQ0lTRVJWSUNFJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleGVjdXRpb25Mb2cubm9kZS5hZGREZXBlbmRlbmN5KGZ1bmN0aW9uQXBwKTtcblxuICAgICAgLy8gQmFrZSB0aGUgZGVmYXVsdCBsb2cgSURzIGludG8gdGhlIGdlbmVyYXRlZCB0YWlsLWZ1bmN0aW9uLWxvZ3MuanMgc2NyaXB0IGZvciBjb252ZW5pZW5jZS5cbiAgICAgIGNvbnN0IHdyaXRlT3V0cHV0c0lkID0gJ1dyaXRlT3V0cHV0c1RvUHJvamVjdCc7XG4gICAgICB0aGlzLmFkZE92ZXJyaWRlKGByZXNvdXJjZS5udWxsX3Jlc291cmNlLiR7d3JpdGVPdXRwdXRzSWR9LnRyaWdnZXJzYCwgeyBleGVjdXRpb25fbG9nX2lkOiBleGVjdXRpb25Mb2cuaWQgfSk7XG4gICAgICB0aGlzLmFkZE92ZXJyaWRlKGByZXNvdXJjZS5udWxsX3Jlc291cmNlLiR7d3JpdGVPdXRwdXRzSWR9LmRlcGVuZHNfb25gLCBbJ29jaV9sb2dnaW5nX2xvZy5FeGVjdXRpb25Mb2cnXSk7XG4gICAgICB0aGlzLmFkZE92ZXJyaWRlKGByZXNvdXJjZS5udWxsX3Jlc291cmNlLiR7d3JpdGVPdXRwdXRzSWR9LnByb3Zpc2lvbmVyYCwgW1xuICAgICAgICB7XG4gICAgICAgICAgJ2xvY2FsLWV4ZWMnOiB7XG4gICAgICAgICAgICBjb21tYW5kOlxuICAgICAgICAgICAgICAnaWYgWyAtbiBcIiRPQ0RLX1BST0pFQ1RfRElSXCIgXTsgdGhlbiAnICtcbiAgICAgICAgICAgICAgJ0xPR19HUk9VUF9JRD1cIiQodGVycmFmb3JtIG91dHB1dCAtcmF3IGxvZ19ncm91cF9pZCAyPi9kZXYvbnVsbCB8fCBlY2hvIFwiXCIpXCI7ICcgK1xuICAgICAgICAgICAgICAnRVhFQ19MT0dfSUQ9XCIkKHRlcnJhZm9ybSBvdXRwdXQgLXJhdyBleGVjdXRpb25fbG9nX2lkIDI+L2Rldi9udWxsIHx8IGVjaG8gXCJcIilcIjsgJyArXG4gICAgICAgICAgICAgICdTQ1JJUFQ9XCIkT0NES19QUk9KRUNUX0RJUi90YWlsLWZ1bmN0aW9uLWxvZ3MuanNcIjsgJyArXG4gICAgICAgICAgICAgICdpZiBbIC1mIFwiJFNDUklQVFwiIF0gJiYgWyAtbiBcIiRMT0dfR1JPVVBfSURcIiBdOyB0aGVuICcgK1xuICAgICAgICAgICAgICBcInBlcmwgLTBwaSAtZSAncy9jb25zdCBERUZBVUxUX0xPR19HUk9VUF9JRCA9IFxcXFwnW15cXFxcJ10qXFxcXCc7L2NvbnN0IERFRkFVTFRfTE9HX0dST1VQX0lEID0gXFxcXCckTE9HX0dST1VQX0lEXFxcXCc7LycgXFxcIiRTQ1JJUFRcXFwiOyBcIiArXG4gICAgICAgICAgICAgICdmaTsgJyArXG4gICAgICAgICAgICAgICdpZiBbIC1mIFwiJFNDUklQVFwiIF0gJiYgWyAtbiBcIiRFWEVDX0xPR19JRFwiIF07IHRoZW4gJyArXG4gICAgICAgICAgICAgIFwicGVybCAtMHBpIC1lICdzL2NvbnN0IERFRkFVTFRfRVhFQ1VUSU9OX0xPR19JRCA9IFxcXFwnW15cXFxcJ10qXFxcXCc7L2NvbnN0IERFRkFVTFRfRVhFQ1VUSU9OX0xPR19JRCA9IFxcXFwnJEVYRUNfTE9HX0lEXFxcXCc7LycgXFxcIiRTQ1JJUFRcXFwiOyBcIiArXG4gICAgICAgICAgICAgICdmaTsgJyArXG4gICAgICAgICAgICAgICdmaScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuXG4gICAgICBuZXcgVGVycmFmb3JtT3V0cHV0KHRoaXMsICdvY2lyX3JlcG9zaXRvcnlfbmFtZScsIHsgdmFsdWU6IG9jaXJSZXBvc2l0b3J5LmRpc3BsYXlOYW1lLCBkZXNjcmlwdGlvbjogJ09DSVIgcmVwb3NpdG9yeSBuYW1lJyB9KTtcbiAgICAgIG5ldyBUZXJyYWZvcm1PdXRwdXQodGhpcywgJ2FwaV9nYXRld2F5X2hvc3QnLCB7IHZhbHVlOiBhcGlHYXRld2F5Lmhvc3RuYW1lLCBkZXNjcmlwdGlvbjogJ0FQSSBHYXRld2F5IGhvc3RuYW1lJyB9KTtcbiAgICAgIG5ldyBUZXJyYWZvcm1PdXRwdXQodGhpcywgJ2Z1bmN0aW9uX2ludm9rZV91cmwnLCB7IHZhbHVlOiBgaHR0cHM6Ly8ke2FwaUdhdGV3YXkuaG9zdG5hbWV9YCwgZGVzY3JpcHRpb246ICdCYXNlIFVSTCB0byBpbnZva2UgdGhlIGZ1bmN0aW9uJyB9KTtcbiAgICAgIG5ldyBUZXJyYWZvcm1PdXRwdXQodGhpcywgJ2Z1bmN0aW9uX2lkJywgeyB2YWx1ZTogb2NpRnVuY3Rpb24uaWQsIGRlc2NyaXB0aW9uOiAnT0NJIEZ1bmN0aW9uIE9DSUQnIH0pO1xuICAgICAgbmV3IFRlcnJhZm9ybU91dHB1dCh0aGlzLCAnbG9nX2dyb3VwX2lkJywgeyB2YWx1ZTogbG9nR3JvdXAuaWQsIGRlc2NyaXB0aW9uOiAnT0NJIExvZyBHcm91cCBPQ0lEIGZvciB0aGUgYXBwbGljYXRpb24nIH0pO1xuICAgICAgbmV3IFRlcnJhZm9ybU91dHB1dCh0aGlzLCAnZXhlY3V0aW9uX2xvZ19pZCcsIHsgdmFsdWU6IGV4ZWN1dGlvbkxvZy5pZCwgZGVzY3JpcHRpb246ICdPQ0kgRnVuY3Rpb25zIGV4ZWN1dGlvbiBsb2cgT0NJRCcgfSk7XG4gICAgfVxuXG4gICAgLy8gRm9yY2Ugb3JhY2xlL29jaSAoVGVycmFmb3JtIFJlZ2lzdHJ5KSBzbyB0ZXJyYWZvcm0gaW5pdCB1c2VzIGl0IG9uIE9MOCBhbmQgZWxzZXdoZXJlOyBtdXN0IHJ1biBhZnRlciBwcm92aWRlciBpcyBhZGRlZFxuICAgIHRoaXMuYWRkT3ZlcnJpZGUoJ3RlcnJhZm9ybS5yZXF1aXJlZF9wcm92aWRlcnMub2NpJywge1xuICAgICAgc291cmNlOiAnb3JhY2xlL29jaScsXG4gICAgICB2ZXJzaW9uOiAnPj0gNS4wLjAsIDwgNi4wLjAnLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
385
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2NpLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vb2NpLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGlDQUF3RDtBQUN4RCw2REFBNkQ7QUFDN0QseUdBQW9HO0FBQ3BHLDZEQUF5RDtBQUN6RCxtRUFBK0Q7QUFDL0QsaUZBQTRFO0FBQzVFLHFGQUFnRjtBQUNoRix5RkFBbUY7QUFDbkYsNkVBQXdFO0FBQ3hFLHVGQUFrRjtBQUNsRixpRkFBNkU7QUFDN0UsdUZBQW1GO0FBQ25GLHVGQUFtRjtBQUNuRixpRkFBNkU7QUFDN0UsK0VBQTBFO0FBQzFFLG1FQUErRDtBQUMvRCxxREFBcUY7QUFDckYsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQXdDN0IsTUFBYSxRQUFTLFNBQVEsc0JBQWM7SUFDMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxNQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLDZDQUE2QztRQUM3QyxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdEQsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDbEMscUJBQXFCO2dCQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFO29CQUNwQyxHQUFHLEVBQUU7d0JBQ0gsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTTt3QkFDN0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO3dCQUMzQixHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLG9CQUFvQjt3QkFDcEQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO3FCQUN0QjtpQkFDRixDQUFDLENBQUM7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SyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLHdDQUF3QyxFQUFFLENBQUMsQ0FBQztZQUN6SCxJQUFJLHVCQUFlLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLGtDQUFrQyxFQUFFLENBQUMsQ0FBQztRQUM3SCxDQUFDO1FBRUQseUhBQXlIO1FBQ3pILElBQUksQ0FBQyxXQUFXLENBQUMsa0NBQWtDLEVBQUU7WUFDbkQsTUFBTSxFQUFFLFlBQVk7WUFDcEIsT0FBTyxFQUFFLG1CQUFtQjtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF2VkQsNEJBdVZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjaywgVGVycmFmb3JtT3V0cHV0IH0gZnJvbSAnY2RrdGYnO1xuaW1wb3J0IHsgT2NpUHJvdmlkZXIgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9vY2kvcHJvdmlkZXInO1xuaW1wb3J0IHsgQXJ0aWZhY3RzQ29udGFpbmVyUmVwb3NpdG9yeSB9IGZyb20gJy4uLy5nZW4vcHJvdmlkZXJzL29jaS9hcnRpZmFjdHMtY29udGFpbmVyLXJlcG9zaXRvcnknO1xuaW1wb3J0IHsgQ29yZVZjbiB9IGZyb20gJy4uLy5nZW4vcHJvdmlkZXJzL29jaS9jb3JlLXZjbic7XG5pbXBvcnQgeyBDb3JlU3VibmV0IH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvb2NpL2NvcmUtc3VibmV0JztcbmltcG9ydCB7IENvcmVTZWN1cml0eUxpc3QgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9vY2kvY29yZS1zZWN1cml0eS1saXN0JztcbmltcG9ydCB7IENvcmVTZXJ2aWNlR2F0ZXdheSB9IGZyb20gJy4uLy5nZW4vcHJvdmlkZXJzL29jaS9jb3JlLXNlcnZpY2UtZ2F0ZXdheSc7XG5pbXBvcnQgeyBEYXRhT2NpQ29yZVNlcnZpY2VzIH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvb2NpL2RhdGEtb2NpLWNvcmUtc2VydmljZXMnO1xuaW1wb3J0IHsgQ29yZVJvdXRlVGFibGUgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9vY2kvY29yZS1yb3V0ZS10YWJsZSc7XG5pbXBvcnQgeyBDb3JlSW50ZXJuZXRHYXRld2F5IH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvb2NpL2NvcmUtaW50ZXJuZXQtZ2F0ZXdheSc7XG5pbXBvcnQgeyBBcGlnYXRld2F5R2F0ZXdheSB9IGZyb20gJy4uLy5nZW4vcHJvdmlkZXJzL29jaS9hcGlnYXRld2F5LWdhdGV3YXknO1xuaW1wb3J0IHsgQXBpZ2F0ZXdheURlcGxveW1lbnQgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9vY2kvYXBpZ2F0ZXdheS1kZXBsb3ltZW50JztcbmltcG9ydCB7IEZ1bmN0aW9uc0FwcGxpY2F0aW9uIH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvb2NpL2Z1bmN0aW9ucy1hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBGdW5jdGlvbnNGdW5jdGlvbiB9IGZyb20gJy4uLy5nZW4vcHJvdmlkZXJzL29jaS9mdW5jdGlvbnMtZnVuY3Rpb24nO1xuaW1wb3J0IHsgTG9nZ2luZ0xvZ0dyb3VwIH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvb2NpL2xvZ2dpbmctbG9nLWdyb3VwJztcbmltcG9ydCB7IExvZ2dpbmdMb2cgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9vY2kvbG9nZ2luZy1sb2cnO1xuaW1wb3J0IHsgT2NpQmFja2VuZENvbmZpZywgb2Npckhvc3RLZXksIGdldE9jaUltYWdlVXJsIH0gZnJvbSAnLi4vY29uZmlnL29jaS1jb25maWcnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuZXhwb3J0IGludGVyZmFjZSBPY2lTdGFja0NvbmZpZyB7XG4gIGNvbXBhcnRtZW50SWQ6IHN0cmluZztcbiAgb2NpckNvbXBhcnRtZW50SWQ/OiBzdHJpbmc7XG4gIHRlbmFuY3lJZDogc3RyaW5nO1xuICByZWdpb246IHN0cmluZztcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIC8qKiBPQ0kgRnVuY3Rpb25zIGFwcGxpY2F0aW9uIG5hbWUgKGUuZy4gbXktYXBwKS4gU2V0IHZpYSBPQ0lfRlVOQ1RJT05fQVBQX05BTUUgb3IgcGFzcyBpbiBjb25maWcuICovXG4gIGZ1bmN0aW9uQXBwTmFtZTogc3RyaW5nO1xuICAvKiogT0NJIEZ1bmN0aW9uIG5hbWUgKGUuZy4gbXktZnVuY3Rpb24pLiBTZXQgdmlhIE9DSV9GVU5DVElPTl9OQU1FIG9yIHBhc3MgaW4gY29uZmlnLiAqL1xuICBmdW5jdGlvbk5hbWU6IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIHBhdGggdG8gSkFSIChvciBEb2NrZXJmaWxlIGNvbnRleHQpIHRvIGJ1aWxkIGFuZCBkZXBsb3kgYXMgdGhlIGZ1bmN0aW9uIGltYWdlLiBTZXQgdmlhIE9DSV9GVU5DVElPTl9KQVJfUEFUSC4gRW1wdHkgPSBubyBmdW5jdGlvbi9pbWFnZSBidWlsZC4gKi9cbiAgZnVuY3Rpb25KYXJQYXRoPzogc3RyaW5nO1xuICAvKiogRGlyZWN0b3J5IGNvbnRhaW5pbmcgdGFyZ2V0LyAoRG9ja2VyZmlsZSBpcyBnZW5lcmF0ZWQgaW4gbG9jYWwtZXhlYykuIFdoZW4gc2V0IHdpdGggZnVuY3Rpb25OYW1lLCBjcmVhdGVzIFZDTiwgRnVuY3Rpb24sIEFQSSBHYXRld2F5LiAqL1xuICBkb2NrZXJDb250ZXh0UGF0aD86IHN0cmluZztcbiAgLyoqIEltYWdlIHRhZyBmb3IgT0NJUiAoZnJvbSBmdW5jLnlhbWwgdmVyc2lvbiBvciBPQ0lfSU1BR0VfVEFHOyBkZWZhdWx0ICdsYXRlc3QnKS4gKi9cbiAgaW1hZ2VUYWc/OiBzdHJpbmc7XG4gIC8qKiBKYXZhIEZESyBDTUQgaGFuZGxlciAoZnJvbSBmdW5jLnlhbWwgb3IgT0NJX0ZVTkNUSU9OX0hBTkRMRVIpLiAqL1xuICBoYW5kbGVyPzogc3RyaW5nO1xuICAvKiogV2hlbiB0cnVlLCBkZXBsb3kgdXNlcyB0aGluIERvY2tlcmZpbGUgKG5vIE1hdmVuIGluIGltYWdlKTsgZnVsbCBidWlsZCBvbmx5IGluIHJlZGVwbG95OmZ1bmN0aW9uLiAqL1xuICB1c2VUaGluRG9ja2VyZmlsZT86IGJvb2xlYW47XG4gIG9jaXJSZXBvc2l0b3J5TmFtZT86IHN0cmluZztcbiAgLyoqIEFQSSBHYXRld2F5IGRlcGxveW1lbnQgcGF0aCBwcmVmaXguIERlZmF1bHQgJy8nLiAqL1xuICBhcGlHd1BhdGhQcmVmaXg/OiBzdHJpbmc7XG4gIC8qKiBBUEkgR2F0ZXdheSByb3V0ZSBwYXRoLiBEZWZhdWx0ICcve3BhdGgqfScuICovXG4gIGFwaUd3Um91dGVQYXRoPzogc3RyaW5nO1xuICAvKiogQVBJIEdhdGV3YXkgcm91dGUgbWV0aG9kcy4gRGVmYXVsdCBbJ0dFVCcsICdQT1NUJywgJ09QVElPTlMnXS4gKi9cbiAgYXBpR3dNZXRob2RzPzogc3RyaW5nW107XG4gIC8qKiBGdW5jdGlvbiBtZW1vcnkgaW4gTUIgKGUuZy4gJzI1NicpLiBGcm9tIGZ1bmMueWFtbCBvciBPQ0lfRlVOQ1RJT05fTUVNT1JZX01CLiAqL1xuICBmdW5jdGlvbk1lbW9yeU1iPzogc3RyaW5nO1xuICAvKiogRnVuY3Rpb24gdGltZW91dCBpbiBzZWNvbmRzLiBGcm9tIGZ1bmMueWFtbCBvciBPQ0lfRlVOQ1RJT05fVElNRU9VVF9TRUNPTkRTLiAqL1xuICBmdW5jdGlvblRpbWVvdXRTZWNvbmRzPzogbnVtYmVyO1xuICAvKiogRnVuY3Rpb24gY29uZmlnL2VudiBrZXktdmFsdWUuIEZyb20gZnVuYy55YW1sIGNvbmZpZyBvciBPQ0lfRlVOQ1RJT05fQ09ORklHLiAqL1xuICBmdW5jdGlvbkNvbmZpZz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBQYXRoIHRvIEFQSSBHYXRld2F5IGRlcGxveW1lbnQgc3BlYyBKU09OIChyb3V0ZXMpLiBEZWZhdWx0IG9jaV9hcGlnYXRld2F5X2RlcGxveW1lbnQuanNvbiBpbiBwcm9qZWN0IHJvb3QuICovXG4gIGFwaUd3RGVwbG95bWVudEpzb25QYXRoPzogc3RyaW5nO1xuICBiYWNrZW5kPzogT2NpQmFja2VuZENvbmZpZztcbn1cblxuZXhwb3J0IGNsYXNzIE9jaVN0YWNrIGV4dGVuZHMgVGVycmFmb3JtU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb25maWc6IE9jaVN0YWNrQ29uZmlnKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIENvbmZpZ3VyZSBUZXJyYWZvcm0gYmFja2VuZCAoaWYgbm90IGxvY2FsKVxuICAgIGlmIChjb25maWcuYmFja2VuZCAmJiBjb25maWcuYmFja2VuZC50eXBlICE9PSAnbG9jYWwnKSB7XG4gICAgICBpZiAoY29uZmlnLmJhY2tlbmQudHlwZSA9PT0gJ29jaScpIHtcbiAgICAgICAgLy8gT0NJIG5hdGl2ZSBiYWNrZW5kXG4gICAgICAgIHRoaXMuYWRkT3ZlcnJpZGUoJ3RlcnJhZm9ybS5iYWNrZW5kJywge1xuICAgICAgICAgIG9jaToge1xuICAgICAgICAgICAgYnVja2V0OiBjb25maWcuYmFja2VuZC5idWNrZXQsXG4gICAgICAgICAgICBuYW1lc3BhY2U6IGNvbmZpZy5uYW1lc3BhY2UsXG4gICAgICAgICAgICBrZXk6IGNvbmZpZy5iYWNrZW5kLmtleSB8fCBgJHtpZH0vdGVycmFmb3JtLnRmc3RhdGVgLFxuICAgICAgICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcuYmFja2VuZC50eXBlID09PSAnaHR0cCcpIHtcbiAgICAgICAgLy8gSFRUUCBiYWNrZW5kIChmb3IgT0NJIE9iamVjdCBTdG9yYWdlIHZpYSBSRVNUIEFQSSlcbiAgICAgICAgY29uc3QgaHR0cEJhY2tlbmQ6IGFueSA9IHtcbiAgICAgICAgICBhZGRyZXNzOiBjb25maWcuYmFja2VuZC5hZGRyZXNzLFxuICAgICAgICAgIHVwZGF0ZV9tZXRob2Q6IGNvbmZpZy5iYWNrZW5kLnVwZGF0ZU1ldGhvZCB8fCAnUFVUJyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGNvbmZpZy5iYWNrZW5kLmxvY2tBZGRyZXNzKSB7XG4gICAgICAgICAgaHR0cEJhY2tlbmQubG9ja19hZGRyZXNzID0gY29uZmlnLmJhY2tlbmQubG9ja0FkZHJlc3M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZy5iYWNrZW5kLnVubG9ja0FkZHJlc3MpIHtcbiAgICAgICAgICBodHRwQmFja2VuZC51bmxvY2tfYWRkcmVzcyA9IGNvbmZpZy5iYWNrZW5kLnVubG9ja0FkZHJlc3M7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRPdmVycmlkZSgndGVycmFmb3JtLmJhY2tlbmQnLCB7XG4gICAgICAgICAgaHR0cDogaHR0cEJhY2tlbmQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE9DSSBQcm92aWRlclxuICAgIG5ldyBPY2lQcm92aWRlcih0aGlzLCAnb2NpJywge1xuICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uLFxuICAgICAgdGVuYW5jeU9jaWQ6IGNvbmZpZy50ZW5hbmN5SWQsXG4gICAgfSk7XG5cbiAgICAvLyBPQ0lSIENvbnRhaW5lciBSZXBvc2l0b3J5IChyb290IGNvbXBhcnRtZW50IGFsbG93ZWQgaWYgZXhwbGljaXRseSBzZXQpXG4gICAgY29uc3Qgb2NpckNvbXBhcnRtZW50SWQgPSBjb25maWcub2NpckNvbXBhcnRtZW50SWQgfHwgY29uZmlnLmNvbXBhcnRtZW50SWQ7XG4gICAgY29uc3Qgb2NpclJlcG9OYW1lID0gY29uZmlnLm9jaXJSZXBvc2l0b3J5TmFtZSB8fCBjb25maWcuZnVuY3Rpb25OYW1lIHx8ICdvY2ktZnVuY3Rpb24nO1xuXG4gICAgY29uc3Qgb2NpclJlcG9zaXRvcnkgPSBuZXcgQXJ0aWZhY3RzQ29udGFpbmVyUmVwb3NpdG9yeSh0aGlzLCAnT2NpclJlcG9zaXRvcnknLCB7XG4gICAgICBjb21wYXJ0bWVudElkOiBvY2lyQ29tcGFydG1lbnRJZCxcbiAgICAgIGRpc3BsYXlOYW1lOiBvY2lyUmVwb05hbWUsXG4gICAgICBpc1B1YmxpYzogZmFsc2UsIC8vIFByaXZhdGUgcmVwb3NpdG9yeSBieSBkZWZhdWx0XG4gICAgICBpc0ltbXV0YWJsZTogZmFsc2UsIC8vIEFsbG93IGltYWdlIHVwZGF0ZXNcbiAgICB9KTtcblxuICAgIGNvbnN0IGRvY2tlckNvbnRleHRQYXRoID0gKGNvbmZpZy5kb2NrZXJDb250ZXh0UGF0aCB8fCBjb25maWcuZnVuY3Rpb25KYXJQYXRoKT8udHJpbSgpO1xuICAgIGNvbnN0IGNyZWF0ZUZ1bGxTdGFjayA9IGNvbmZpZy5mdW5jdGlvbk5hbWUgJiYgZG9ja2VyQ29udGV4dFBhdGg7XG5cbiAgICBpZiAoY3JlYXRlRnVsbFN0YWNrKSB7XG4gICAgICBpZiAob2NpckNvbXBhcnRtZW50SWQuaW5jbHVkZXMoJ3Jvb3QnKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ0Z1bGwgc3RhY2sgKEZ1bmN0aW9uICsgQVBJIEdhdGV3YXkpIHJlcXVpcmVzIGEgbm9uLXJvb3QgY29tcGFydG1lbnQgZm9yIE9DSVIuIFNldCBPQ0lfT0NJUl9DT01QQVJUTUVOVF9JRCB0byB5b3VyIGhvbWUgY29tcGFydG1lbnQgT0NJRC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBmdW5jdGlvbkNvZGVQYXRoID0gcGF0aC5yZXNvbHZlKGRvY2tlckNvbnRleHRQYXRoISk7XG4gICAgICBjb25zdCBpbWFnZVRhZyA9IGNvbmZpZy5pbWFnZVRhZyB8fCAnbGF0ZXN0JztcbiAgICAgIGNvbnN0IG9jaXJSZWdpc3RyeSA9IGAke29jaXJIb3N0S2V5KGNvbmZpZy5yZWdpb24pfS5vY2lyLmlvYDtcbiAgICAgIGNvbnN0IGltYWdlVXJsID0gZ2V0T2NpSW1hZ2VVcmwoY29uZmlnKTtcbiAgICAgIGNvbnN0IGFwcE5hbWUgPSBjb25maWcuZnVuY3Rpb25BcHBOYW1lIHx8IGNvbmZpZy5mdW5jdGlvbk5hbWUhO1xuICAgICAgY29uc3QgcmVzb3VyY2VOYW1lID0gYXBwTmFtZTtcblxuICAgICAgdGhpcy5hZGRPdmVycmlkZSgndGVycmFmb3JtLnJlcXVpcmVkX3Byb3ZpZGVycy5udWxsJywge1xuICAgICAgICBzb3VyY2U6ICdoYXNoaWNvcnAvbnVsbCcsXG4gICAgICAgIHZlcnNpb246ICd+PiAzLjAnLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBidWlsZEFuZFB1c2hJbWFnZUlkID0gJ0J1aWxkQW5kUHVzaEltYWdlJztcbiAgICAgIHRoaXMuYWRkT3ZlcnJpZGUoYHJlc291cmNlLm51bGxfcmVzb3VyY2UuJHtidWlsZEFuZFB1c2hJbWFnZUlkfS5kZXBlbmRzX29uYCwgW1xuICAgICAgICAnb2NpX2FydGlmYWN0c19jb250YWluZXJfcmVwb3NpdG9yeS5PY2lyUmVwb3NpdG9yeScsXG4gICAgICBdKTtcbiAgICAgIHRoaXMuYWRkT3ZlcnJpZGUoYHJlc291cmNlLm51bGxfcmVzb3VyY2UuJHtidWlsZEFuZFB1c2hJbWFnZUlkfS50cmlnZ2Vyc2AsIHtcbiAgICAgICAgcmVwb19uYW1lOiBvY2lyUmVwb05hbWUsXG4gICAgICAgIGltYWdlX3VybDogaW1hZ2VVcmwsXG4gICAgICAgIGltYWdlX3RhZzogaW1hZ2VUYWcsXG4gICAgICAgIGhhbmRsZXI6IGNvbmZpZy5oYW5kbGVyIHx8ICcnLFxuICAgICAgICB1c2VfdGhpbl9kb2NrZXJmaWxlOiBjb25maWcudXNlVGhpbkRvY2tlcmZpbGUgPT09IHRydWUgPyAnMScgOiAnMCcsXG4gICAgICAgIG5hbWVzcGFjZTogY29uZmlnLm5hbWVzcGFjZSxcbiAgICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uLFxuICAgICAgfSk7XG4gICAgICBjb25zdCByZWdpb25QID0gY29uZmlnLnJlZ2lvbjtcbiAgICAgIGNvbnN0IG5hbWVzcGFjZVAgPSBjb25maWcubmFtZXNwYWNlO1xuICAgICAgY29uc3Qgb2NpclVzZXIgPSBwcm9jZXNzLmVudi5PQ0lfT0NJUl9VU0VSTkFNRSB8fCAnQVVUT19ERVRFQ1QnO1xuICAgICAgY29uc3QgbG9naW5TY3JpcHQgPSBwcm9jZXNzLmVudi5PQ0lfQVVUSF9UT0tFTlxuICAgICAgICA/IGBleHBvcnQgT0NJUl9BVVRIX1RPS0VOPVwiJHtwcm9jZXNzLmVudi5PQ0lfQVVUSF9UT0tFTn1cIjsgT0NJUl9VU0VSPVwiJHtvY2lyVXNlcn1cIjsgWyBcIiRPQ0lSX1VTRVJcIiA9IFwiQVVUT19ERVRFQ1RcIiBdICYmIE9DSVJfVVNFUj1cIiR7bmFtZXNwYWNlUH0vdXNlclwiOyBlY2hvIFwiJE9DSVJfQVVUSF9UT0tFTlwiIHwgZG9ja2VyIGxvZ2luICR7b2NpclJlZ2lzdHJ5fSAtdSBcIiRPQ0lSX1VTRVJcIiAtLXBhc3N3b3JkLXN0ZGluIHx8IGV4aXQgMWBcbiAgICAgICAgOiBgb2NpIHJhdy1yZXF1ZXN0IC0tcmVnaW9uICR7cmVnaW9uUH0gLS1odHRwLW1ldGhvZCBHRVQgLS10YXJnZXQtdXJpIFwiaHR0cHM6Ly8ke29jaXJSZWdpc3RyeX0vMjAxODA0MTkvZG9ja2VyL3Rva2VuXCIgMj4vZGV2L251bGwgfCAoY29tbWFuZCAtdiBqcSA+L2Rldi9udWxsICYmIGpxIC1yIC5kYXRhLnRva2VuIHx8IGdyZXAgLW8gJ1widG9rZW5cIjpcIlteXCJdKlwiJyB8IGN1dCAtZCdcIicgLWY0KSB8IGRvY2tlciBsb2dpbiAtdSBCRUFSRVJfVE9LRU4gLS1wYXNzd29yZC1zdGRpbiAke29jaXJSZWdpc3RyeX0gfHwgKGVjaG8gXCJTZXQgT0NJX0FVVEhfVE9LRU4gb3IgY29uZmlndXJlIE9DSSBDTElcIiA+JjI7IGV4aXQgMSlgO1xuICAgICAgY29uc3QgaGFuZGxlciA9IGNvbmZpZy5oYW5kbGVyIHx8ICdjb20uZXhhbXBsZS5mbi5IZWxsb0Z1bmN0aW9uOjpoYW5kbGVSZXF1ZXN0JztcbiAgICAgIGNvbnN0IHVzZVRoaW4gPSBjb25maWcudXNlVGhpbkRvY2tlcmZpbGUgPT09IHRydWU7XG4gICAgICBjb25zdCBkb2NrZXJmaWxlQ29udGVudFRoaW4gPSBgRlJPTSBmbnByb2plY3QvZm4tamF2YS1mZGs6anJlMTctMS4xLjVcbldPUktESVIgL2Z1bmN0aW9uXG5DT1BZIHRhcmdldC8qLmphciAvZnVuY3Rpb24vYXBwL1xuQ01EIFtcIiR7aGFuZGxlci5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJyl9XCJdXG5gO1xuICAgICAgY29uc3QgZG9ja2VyZmlsZUNvbnRlbnRGdWxsID0gYEZST00gZm5wcm9qZWN0L2ZuLWphdmEtZmRrLWJ1aWxkOmpkazE3LTEuMS41IGFzIGJ1aWxkLXN0YWdlXG5XT1JLRElSIC9mdW5jdGlvblxuRU5WIE1BVkVOX09QVFMgLURodHRwLnByb3h5SG9zdD0gLURodHRwLnByb3h5UG9ydD0gLURodHRwcy5wcm94eUhvc3Q9IC1EaHR0cHMucHJveHlQb3J0PSAtRGh0dHAubm9uUHJveHlIb3N0cz0gLURtYXZlbi5yZXBvLmxvY2FsPS91c3Ivc2hhcmUvbWF2ZW4vcmVmL3JlcG9zaXRvcnlcbkFERCBwb20ueG1sIC9mdW5jdGlvbi9wb20ueG1sXG5SVU4gW1wibXZuXCIsIFwicGFja2FnZVwiLCBcImRlcGVuZGVuY3k6Y29weS1kZXBlbmRlbmNpZXNcIiwgXCItRGluY2x1ZGVTY29wZT1ydW50aW1lXCIsIFwiLURza2lwVGVzdHM9dHJ1ZVwiLCBcIi1EbWRlcC5wcmVwZW5kR3JvdXBJZD10cnVlXCIsIFwiLURvdXRwdXREaXJlY3Rvcnk9dGFyZ2V0XCIsIFwiLS1mYWlsLW5ldmVyXCJdXG5BREQgc3JjIC9mdW5jdGlvbi9zcmNcblJVTiBbXCJtdm5cIiwgXCJwYWNrYWdlXCJdXG5GUk9NIGZucHJvamVjdC9mbi1qYXZhLWZkazpqcmUxNy0xLjEuNVxuV09SS0RJUiAvZnVuY3Rpb25cbkNPUFkgLS1mcm9tPWJ1aWxkLXN0YWdlIC9mdW5jdGlvbi90YXJnZXQvKi5qYXIgL2Z1bmN0aW9uL2FwcC9cbkNNRCBbXCIke2hhbmRsZXIucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpfVwiXVxuYDtcbiAgICAgIGNvbnN0IGRvY2tlcmZpbGVDb250ZW50ID0gdXNlVGhpbiA/IGRvY2tlcmZpbGVDb250ZW50VGhpbiA6IGRvY2tlcmZpbGVDb250ZW50RnVsbDtcbiAgICAgIGNvbnN0IGRvY2tlcmlnbm9yZUNvbnRlbnQgPSBgbm9kZV9tb2R1bGVzXG4uZ2l0XG4qLm1kXG4uZW52XG4uaWRlYVxuLnZzY29kZVxuKi5sb2dcbm9jaV9hcGlnYXRld2F5X2RlcGxveW1lbnQuanNvblxuLm9jZGstb3V0cHV0cy5qc29uXG50YWlsLWZ1bmN0aW9uLWxvZ3MuanNcbnRhaWwtZnVuY3Rpb24tbG9ncy5zaFxuYDtcbiAgICAgIGNvbnN0IGRvY2tlcmZpbGVCNjQgPSBCdWZmZXIuZnJvbShkb2NrZXJmaWxlQ29udGVudCwgJ3V0ZjgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICBjb25zdCBkb2NrZXJpZ25vcmVCNjQgPSBCdWZmZXIuZnJvbShkb2NrZXJpZ25vcmVDb250ZW50LCAndXRmOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIC8vIEdlbmVyYXRlIERvY2tlcmZpbGUgYW5kIC5kb2NrZXJpZ25vcmUgaW4gbG9jYWwtZXhlYyBvbmx5IGlmIG1pc3Npbmc7IGlmIHRoZXkgZXhpc3QgdXNlIGFzLWlzLiBUaGVuIGxvZ2luLCBidWlsZCwgcHVzaC5cbiAgICAgIHRoaXMuYWRkT3ZlcnJpZGUoYHJlc291cmNlLm51bGxfcmVzb3VyY2UuJHtidWlsZEFuZFB1c2hJbWFnZUlkfS5wcm92aXNpb25lcmAsIFtcbiAgICAgICAge1xuICAgICAgICAgICdsb2NhbC1leGVjJzoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2NkIFwiJEZVTkNUSU9OX0NPREVfUEFUSFwiICYmIChbIC1mIERvY2tlcmZpbGUgXSB8fCAoZWNobyBcIiRET0NLRVJGSUxFX0I2NFwiIHwgYmFzZTY0IC1kID4gRG9ja2VyZmlsZSkpICYmIChbIC1mIC5kb2NrZXJpZ25vcmUgXSB8fCAoZWNobyBcIiRET0NLRVJJR05PUkVfQjY0XCIgfCBiYXNlNjQgLWQgPiAuZG9ja2VyaWdub3JlKSknLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgICAgRlVOQ1RJT05fQ09ERV9QQVRIOiBmdW5jdGlvbkNvZGVQYXRoLFxuICAgICAgICAgICAgICBET0NLRVJGSUxFX0I2NDogZG9ja2VyZmlsZUI2NCxcbiAgICAgICAgICAgICAgRE9DS0VSSUdOT1JFX0I2NDogZG9ja2VyaWdub3JlQjY0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7ICdsb2NhbC1leGVjJzogeyBjb21tYW5kOiBsb2dpblNjcmlwdCwgb25fZmFpbHVyZTogJ2NvbnRpbnVlJyB9IH0sXG4gICAgICAgIHsgJ2xvY2FsLWV4ZWMnOiB7IGNvbW1hbmQ6IGBjZCBcIiR7ZnVuY3Rpb25Db2RlUGF0aC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJyl9XCIgJiYgZG9ja2VyIGJ1aWxkIC0tcGxhdGZvcm0gbGludXgvYW1kNjQgLXQgJHtpbWFnZVVybH0gLmAgfSB9LFxuICAgICAgICB7ICdsb2NhbC1leGVjJzogeyBjb21tYW5kOiBgZG9ja2VyIHB1c2ggJHtpbWFnZVVybH1gIH0gfSxcbiAgICAgIF0pO1xuXG4gICAgICBjb25zdCB2Y24gPSBuZXcgQ29yZVZjbih0aGlzLCAnVmNuJywge1xuICAgICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke3Jlc291cmNlTmFtZX0tdmNuYCxcbiAgICAgICAgY2lkckJsb2NrczogWycxMC4wLjAuMC8xNiddLFxuICAgICAgICBkbnNMYWJlbDogJ2FwcGZuJyxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcHVibGljU3VibmV0ID0gbmV3IENvcmVTdWJuZXQodGhpcywgJ1B1YmxpY1N1Ym5ldCcsIHtcbiAgICAgICAgY29tcGFydG1lbnRJZDogY29uZmlnLmNvbXBhcnRtZW50SWQsXG4gICAgICAgIHZjbklkOiB2Y24uaWQsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBgJHtyZXNvdXJjZU5hbWV9LXB1YmxpY2AsXG4gICAgICAgIGNpZHJCbG9jazogJzEwLjAuMS4wLzI0JyxcbiAgICAgICAgZG5zTGFiZWw6ICdwdWJsaWMnLFxuICAgICAgICBwcm9oaWJpdFB1YmxpY0lwT25WbmljOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcHJpdmF0ZVN1Ym5ldCA9IG5ldyBDb3JlU3VibmV0KHRoaXMsICdQcml2YXRlU3VibmV0Jywge1xuICAgICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgICAgdmNuSWQ6IHZjbi5pZCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke3Jlc291cmNlTmFtZX0tcHJpdmF0ZWAsXG4gICAgICAgIGNpZHJCbG9jazogJzEwLjAuMi4wLzI0JyxcbiAgICAgICAgZG5zTGFiZWw6ICdwcml2YXRlJyxcbiAgICAgICAgcHJvaGliaXRQdWJsaWNJcE9uVm5pYzogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBwdWJsaWNTbCA9IG5ldyBDb3JlU2VjdXJpdHlMaXN0KHRoaXMsICdQdWJsaWNTZWN1cml0eUxpc3QnLCB7XG4gICAgICAgIGNvbXBhcnRtZW50SWQ6IGNvbmZpZy5jb21wYXJ0bWVudElkLFxuICAgICAgICB2Y25JZDogdmNuLmlkLFxuICAgICAgICBkaXNwbGF5TmFtZTogYCR7cmVzb3VyY2VOYW1lfS1wdWJsaWMtc2xgLFxuICAgICAgICBpbmdyZXNzU2VjdXJpdHlSdWxlczogW1xuICAgICAgICAgIHsgcHJvdG9jb2w6ICc2Jywgc291cmNlOiAnMC4wLjAuMC8wJywgZGVzY3JpcHRpb246ICdIVFRQJywgdGNwT3B0aW9uczogeyBtaW46IDgwLCBtYXg6IDgwIH0gfSxcbiAgICAgICAgICB7IHByb3RvY29sOiAnNicsIHNvdXJjZTogJzAuMC4wLjAvMCcsIGRlc2NyaXB0aW9uOiAnSFRUUFMnLCB0Y3BPcHRpb25zOiB7IG1pbjogNDQzLCBtYXg6IDQ0MyB9IH0sXG4gICAgICAgIF0sXG4gICAgICAgIGVncmVzc1NlY3VyaXR5UnVsZXM6IFt7IHByb3RvY29sOiAnYWxsJywgZGVzdGluYXRpb246ICcwLjAuMC4wLzAnLCBkZXNjcmlwdGlvbjogJ0FsbCcgfV0sXG4gICAgICB9KTtcbiAgICAgIHB1YmxpY1N1Ym5ldC5hZGRPdmVycmlkZSgnc2VjdXJpdHlfbGlzdF9pZHMnLCBbcHVibGljU2wuaWRdKTtcbiAgICAgIGNvbnN0IHByaXZhdGVTbCA9IG5ldyBDb3JlU2VjdXJpdHlMaXN0KHRoaXMsICdQcml2YXRlU2VjdXJpdHlMaXN0Jywge1xuICAgICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgICAgdmNuSWQ6IHZjbi5pZCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke3Jlc291cmNlTmFtZX0tcHJpdmF0ZS1zbGAsXG4gICAgICAgIGluZ3Jlc3NTZWN1cml0eVJ1bGVzOiBbXG4gICAgICAgICAgeyBwcm90b2NvbDogJzYnLCBzb3VyY2U6ICcxMC4wLjIuMC8yNCcsIGRlc2NyaXB0aW9uOiAnUEcnLCB0Y3BPcHRpb25zOiB7IG1pbjogNTQzMiwgbWF4OiA1NDMyIH0gfSxcbiAgICAgICAgXSxcbiAgICAgICAgZWdyZXNzU2VjdXJpdHlSdWxlczogW3sgcHJvdG9jb2w6ICdhbGwnLCBkZXN0aW5hdGlvbjogJzAuMC4wLjAvMCcsIGRlc2NyaXB0aW9uOiAnQWxsJyB9XSxcbiAgICAgIH0pO1xuICAgICAgcHJpdmF0ZVN1Ym5ldC5hZGRPdmVycmlkZSgnc2VjdXJpdHlfbGlzdF9pZHMnLCBbcHJpdmF0ZVNsLmlkXSk7XG5cbiAgICAgIGNvbnN0IGFsbFNlcnZpY2VzID0gbmV3IERhdGFPY2lDb3JlU2VydmljZXModGhpcywgJ0FsbFNlcnZpY2VzJywge30pO1xuICAgICAgY29uc3Qgc3ZjR3cgPSBuZXcgQ29yZVNlcnZpY2VHYXRld2F5KHRoaXMsICdTZXJ2aWNlR2F0ZXdheScsIHtcbiAgICAgICAgY29tcGFydG1lbnRJZDogY29uZmlnLmNvbXBhcnRtZW50SWQsXG4gICAgICAgIHZjbklkOiB2Y24uaWQsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBgJHtyZXNvdXJjZU5hbWV9LXNnd2AsXG4gICAgICAgIHNlcnZpY2VzOiBbeyBzZXJ2aWNlSWQ6IGFsbFNlcnZpY2VzLnNlcnZpY2VzLmdldCgwKS5pZCB9XSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcHJpdlJ0ID0gbmV3IENvcmVSb3V0ZVRhYmxlKHRoaXMsICdQcml2YXRlUm91dGVUYWJsZScsIHtcbiAgICAgICAgY29tcGFydG1lbnRJZDogY29uZmlnLmNvbXBhcnRtZW50SWQsXG4gICAgICAgIHZjbklkOiB2Y24uaWQsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBgJHtyZXNvdXJjZU5hbWV9LXByaXZhdGUtcnRgLFxuICAgICAgICByb3V0ZVJ1bGVzOiBbXG4gICAgICAgICAgeyBuZXR3b3JrRW50aXR5SWQ6IHN2Y0d3LmlkLCBkZXN0aW5hdGlvbjogYWxsU2VydmljZXMuc2VydmljZXMuZ2V0KDApLmNpZHJCbG9jaywgZGVzdGluYXRpb25UeXBlOiAnU0VSVklDRV9DSURSX0JMT0NLJywgZGVzY3JpcHRpb246ICdPQ0lSJyB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgICBwcml2YXRlU3VibmV0LmFkZE92ZXJyaWRlKCdyb3V0ZV90YWJsZV9pZCcsIHByaXZSdC5pZCk7XG4gICAgICBjb25zdCBpZ3cgPSBuZXcgQ29yZUludGVybmV0R2F0ZXdheSh0aGlzLCAnSW50ZXJuZXRHYXRld2F5Jywge1xuICAgICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgICAgdmNuSWQ6IHZjbi5pZCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke3Jlc291cmNlTmFtZX0taWd3YCxcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcHViUnQgPSBuZXcgQ29yZVJvdXRlVGFibGUodGhpcywgJ1B1YmxpY1JvdXRlVGFibGUnLCB7XG4gICAgICAgIGNvbXBhcnRtZW50SWQ6IGNvbmZpZy5jb21wYXJ0bWVudElkLFxuICAgICAgICB2Y25JZDogdmNuLmlkLFxuICAgICAgICBkaXNwbGF5TmFtZTogYCR7cmVzb3VyY2VOYW1lfS1wdWJsaWMtcnRgLFxuICAgICAgICByb3V0ZVJ1bGVzOiBbXG4gICAgICAgICAgeyBuZXR3b3JrRW50aXR5SWQ6IGlndy5pZCwgZGVzdGluYXRpb246ICcwLjAuMC4wLzAnLCBkZXN0aW5hdGlvblR5cGU6ICdDSURSX0JMT0NLJywgZGVzY3JpcHRpb246ICdJbnRlcm5ldCcgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgICAgcHVibGljU3VibmV0LmFkZE92ZXJyaWRlKCdyb3V0ZV90YWJsZV9pZCcsIHB1YlJ0LmlkKTtcblxuICAgICAgY29uc3QgYXBpR2F0ZXdheSA9IG5ldyBBcGlnYXRld2F5R2F0ZXdheSh0aGlzLCAnQXBpR2F0ZXdheScsIHtcbiAgICAgICAgY29tcGFydG1lbnRJZDogY29uZmlnLmNvbXBhcnRtZW50SWQsXG4gICAgICAgIHN1Ym5ldElkOiBwdWJsaWNTdWJuZXQuaWQsXG4gICAgICAgIGVuZHBvaW50VHlwZTogJ1BVQkxJQycsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBgJHtyZXNvdXJjZU5hbWV9LWFwaS1nYXRld2F5YCxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbG9nR3JvdXAgPSBuZXcgTG9nZ2luZ0xvZ0dyb3VwKHRoaXMsICdMb2dHcm91cCcsIHtcbiAgICAgICAgY29tcGFydG1lbnRJZDogY29uZmlnLmNvbXBhcnRtZW50SWQsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBhcHBOYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogYExvZyBncm91cCBmb3IgJHthcHBOYW1lfWAsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGZ1bmN0aW9uQXBwID0gbmV3IEZ1bmN0aW9uc0FwcGxpY2F0aW9uKHRoaXMsICdGdW5jdGlvbkFwcCcsIHtcbiAgICAgICAgY29tcGFydG1lbnRJZDogY29uZmlnLmNvbXBhcnRtZW50SWQsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBhcHBOYW1lLFxuICAgICAgICBzdWJuZXRJZHM6IFtwcml2YXRlU3VibmV0LmlkXSxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgb2NpRnVuY3Rpb24gPSBuZXcgRnVuY3Rpb25zRnVuY3Rpb24odGhpcywgJ0Z1bmN0aW9uJywge1xuICAgICAgICBhcHBsaWNhdGlvbklkOiBmdW5jdGlvbkFwcC5pZCxcbiAgICAgICAgZGlzcGxheU5hbWU6IGNvbmZpZy5mdW5jdGlvbk5hbWUhLFxuICAgICAgICBpbWFnZTogaW1hZ2VVcmwsXG4gICAgICAgIG1lbW9yeUluTWJzOiBjb25maWcuZnVuY3Rpb25NZW1vcnlNYiA/PyAnMjU2JyxcbiAgICAgICAgdGltZW91dEluU2Vjb25kczogY29uZmlnLmZ1bmN0aW9uVGltZW91dFNlY29uZHMgPz8gMzAsXG4gICAgICAgIC4uLihjb25maWcuZnVuY3Rpb25Db25maWcgJiYgT2JqZWN0LmtleXMoY29uZmlnLmZ1bmN0aW9uQ29uZmlnKS5sZW5ndGggPiAwID8geyBjb25maWc6IGNvbmZpZy5mdW5jdGlvbkNvbmZpZyB9IDoge30pLFxuICAgICAgfSk7XG4gICAgICBvY2lGdW5jdGlvbi5hZGRPdmVycmlkZSgnZGVwZW5kc19vbicsIFtgbnVsbF9yZXNvdXJjZS4ke2J1aWxkQW5kUHVzaEltYWdlSWR9YF0pO1xuICAgICAgY29uc3QgcGF0aFByZWZpeCA9IGNvbmZpZy5hcGlHd1BhdGhQcmVmaXggPz8gJy8nO1xuICAgICAgbGV0IHJvdXRlczogQXJyYXk8eyBwYXRoOiBzdHJpbmc7IG1ldGhvZHM6IHN0cmluZ1tdOyBiYWNrZW5kOiB7IHR5cGU6IHN0cmluZzsgZnVuY3Rpb25JZDogdHlwZW9mIG9jaUZ1bmN0aW9uLmlkOyByZWFkVGltZW91dEluU2Vjb25kcz86IG51bWJlciB9IH0+O1xuICAgICAgaWYgKGNvbmZpZy5hcGlHd0RlcGxveW1lbnRKc29uUGF0aCAmJiBmcy5leGlzdHNTeW5jKGNvbmZpZy5hcGlHd0RlcGxveW1lbnRKc29uUGF0aCkpIHtcbiAgICAgICAgY29uc3QgcmF3ID0gZnMucmVhZEZpbGVTeW5jKGNvbmZpZy5hcGlHd0RlcGxveW1lbnRKc29uUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgY29uc3Qgc3BlYyA9IEpTT04ucGFyc2UocmF3KSBhcyB7IHJvdXRlcz86IEFycmF5PHsgcGF0aD86IHN0cmluZzsgbWV0aG9kcz86IHN0cmluZ1tdOyBiYWNrZW5kPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT4gfTtcbiAgICAgICAgY29uc3Qgcm91dGVMaXN0ID0gc3BlYz8ucm91dGVzID8/IFtdO1xuICAgICAgICByb3V0ZXMgPSByb3V0ZUxpc3QubWFwKChyKSA9PiB7XG4gICAgICAgICAgY29uc3QgYiA9IHIuYmFja2VuZCA/PyB7fTtcbiAgICAgICAgICBjb25zdCBmdW5jdGlvbklkUmF3ID0gKGIuZnVuY3Rpb25JZCA/PyBiLmZ1bmN0aW9uX2lkKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3QgZnVuY3Rpb25JZCA9IHR5cGVvZiBmdW5jdGlvbklkUmF3ID09PSAnc3RyaW5nJyAmJiBmdW5jdGlvbklkUmF3LmluY2x1ZGVzKCcke2Z1bmN0aW9uX2lkfScpXG4gICAgICAgICAgICA/IG9jaUZ1bmN0aW9uLmlkXG4gICAgICAgICAgICA6IChmdW5jdGlvbklkUmF3ID8/IG9jaUZ1bmN0aW9uLmlkKTtcbiAgICAgICAgICBjb25zdCByZWFkVGltZW91dCA9IChiLnJlYWRUaW1lb3V0SW5TZWNvbmRzID8/IGIucmVhZF90aW1lb3V0X2luX3NlY29uZHMpIGFzIG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGF0aDogci5wYXRoID8/ICcve3BhdGgqfScsXG4gICAgICAgICAgICBtZXRob2RzOiBBcnJheS5pc0FycmF5KHIubWV0aG9kcykgPyByLm1ldGhvZHMgOiBbJ0dFVCcsICdQT1NUJywgJ09QVElPTlMnXSxcbiAgICAgICAgICAgIGJhY2tlbmQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogKGIudHlwZSBhcyBzdHJpbmcpID8/ICdPUkFDTEVfRlVOQ1RJT05TX0JBQ0tFTkQnLFxuICAgICAgICAgICAgICBmdW5jdGlvbklkLFxuICAgICAgICAgICAgICAuLi4ocmVhZFRpbWVvdXQgIT0gbnVsbCA/IHsgcmVhZFRpbWVvdXRJblNlY29uZHM6IHJlYWRUaW1lb3V0IH0gOiB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgcm91dGVQYXRoID0gY29uZmlnLmFwaUd3Um91dGVQYXRoID8/ICcve3BhdGgqfSc7XG4gICAgICAgIGNvbnN0IG1ldGhvZHMgPSBjb25maWcuYXBpR3dNZXRob2RzPy5sZW5ndGggPyBjb25maWcuYXBpR3dNZXRob2RzIDogWydHRVQnLCAnUE9TVCcsICdPUFRJT05TJ107XG4gICAgICAgIHJvdXRlcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwYXRoOiByb3V0ZVBhdGgsXG4gICAgICAgICAgICBtZXRob2RzLFxuICAgICAgICAgICAgYmFja2VuZDoge1xuICAgICAgICAgICAgICB0eXBlOiAnT1JBQ0xFX0ZVTkNUSU9OU19CQUNLRU5EJyxcbiAgICAgICAgICAgICAgZnVuY3Rpb25JZDogb2NpRnVuY3Rpb24uaWQsXG4gICAgICAgICAgICAgIHJlYWRUaW1lb3V0SW5TZWNvbmRzOiBjb25maWcuZnVuY3Rpb25UaW1lb3V0U2Vjb25kcyA/PyAzMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFwaURlcGxveW1lbnQgPSBuZXcgQXBpZ2F0ZXdheURlcGxveW1lbnQodGhpcywgJ0FwaURlcGxveW1lbnQnLCB7XG4gICAgICAgIGNvbXBhcnRtZW50SWQ6IGNvbmZpZy5jb21wYXJ0bWVudElkLFxuICAgICAgICBnYXRld2F5SWQ6IGFwaUdhdGV3YXkuaWQsXG4gICAgICAgIHBhdGhQcmVmaXgsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBgJHtyZXNvdXJjZU5hbWV9LWRlcGxveW1lbnRgLFxuICAgICAgICBzcGVjaWZpY2F0aW9uOiB7XG4gICAgICAgICAgcm91dGVzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBhcGlEZXBsb3ltZW50Lm5vZGUuYWRkRGVwZW5kZW5jeShvY2lGdW5jdGlvbik7XG5cbiAgICAgIC8vIEZ1bmN0aW9ucyBleGVjdXRpb24gbG9nOiBTRVJWSUNFIGxvZyBmb3IgdGhlIEZ1bmN0aW9ucyBhcHBsaWNhdGlvbiAoY2F0ZWdvcnkgaW52b2tlKVxuICAgICAgY29uc3QgZXhlY3V0aW9uTG9nID0gbmV3IExvZ2dpbmdMb2codGhpcywgJ0V4ZWN1dGlvbkxvZycsIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke2FwcE5hbWV9LWludm9rZWAsXG4gICAgICAgIGxvZ0dyb3VwSWQ6IGxvZ0dyb3VwLmlkLFxuICAgICAgICBsb2dUeXBlOiAnU0VSVklDRScsXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICBjb21wYXJ0bWVudElkOiBjb25maWcuY29tcGFydG1lbnRJZCxcbiAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgIGNhdGVnb3J5OiAnaW52b2tlJyxcbiAgICAgICAgICAgIC8vIEFzc29jaWF0ZSB0aGlzIHNlcnZpY2UgbG9nIHdpdGggdGhlIEZ1bmN0aW9ucyBhcHBsaWNhdGlvblxuICAgICAgICAgICAgcmVzb3VyY2U6IGZ1bmN0aW9uQXBwLmlkLFxuICAgICAgICAgICAgc2VydmljZTogJ2Z1bmN0aW9ucycsXG4gICAgICAgICAgICBzb3VyY2VUeXBlOiAnT0NJU0VSVklDRScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhlY3V0aW9uTG9nLm5vZGUuYWRkRGVwZW5kZW5jeShmdW5jdGlvbkFwcCk7XG5cbiAgICAgIC8vIEJha2UgdGhlIGRlZmF1bHQgbG9nIElEcyBpbnRvIHRoZSBnZW5lcmF0ZWQgdGFpbC1mdW5jdGlvbi1sb2dzLmpzIHNjcmlwdCBmb3IgY29udmVuaWVuY2UuXG4gICAgICBjb25zdCB3cml0ZU91dHB1dHNJZCA9ICdXcml0ZU91dHB1dHNUb1Byb2plY3QnO1xuICAgICAgdGhpcy5hZGRPdmVycmlkZShgcmVzb3VyY2UubnVsbF9yZXNvdXJjZS4ke3dyaXRlT3V0cHV0c0lkfS50cmlnZ2Vyc2AsIHsgZXhlY3V0aW9uX2xvZ19pZDogZXhlY3V0aW9uTG9nLmlkIH0pO1xuICAgICAgdGhpcy5hZGRPdmVycmlkZShgcmVzb3VyY2UubnVsbF9yZXNvdXJjZS4ke3dyaXRlT3V0cHV0c0lkfS5kZXBlbmRzX29uYCwgWydvY2lfbG9nZ2luZ19sb2cuRXhlY3V0aW9uTG9nJ10pO1xuICAgICAgdGhpcy5hZGRPdmVycmlkZShgcmVzb3VyY2UubnVsbF9yZXNvdXJjZS4ke3dyaXRlT3V0cHV0c0lkfS5wcm92aXNpb25lcmAsIFtcbiAgICAgICAge1xuICAgICAgICAgICdsb2NhbC1leGVjJzoge1xuICAgICAgICAgICAgY29tbWFuZDpcbiAgICAgICAgICAgICAgJ2lmIFsgLW4gXCIkT0NES19QUk9KRUNUX0RJUlwiIF07IHRoZW4gJyArXG4gICAgICAgICAgICAgICdMT0dfR1JPVVBfSUQ9XCIkKHRlcnJhZm9ybSBvdXRwdXQgLXJhdyBsb2dfZ3JvdXBfaWQgMj4vZGV2L251bGwgfHwgZWNobyBcIlwiKVwiOyAnICtcbiAgICAgICAgICAgICAgJ0VYRUNfTE9HX0lEPVwiJCh0ZXJyYWZvcm0gb3V0cHV0IC1yYXcgZXhlY3V0aW9uX2xvZ19pZCAyPi9kZXYvbnVsbCB8fCBlY2hvIFwiXCIpXCI7ICcgK1xuICAgICAgICAgICAgICAnaWYgWyAtbiBcIiRMT0dfR1JPVVBfSURcIiBdICYmIFsgLW4gXCIkRVhFQ19MT0dfSURcIiBdOyB0aGVuICcgK1xuICAgICAgICAgICAgICAncHJpbnRmIFxcJ3tcXFwibG9nX2dyb3VwX2lkXFxcIjpcXFwiJXNcXFwiLFxcXCJleGVjdXRpb25fbG9nX2lkXFxcIjpcXFwiJXNcXFwifVxcXFxuXFwnIFxcXCIkTE9HX0dST1VQX0lEXFxcIiBcXFwiJEVYRUNfTE9HX0lEXFxcIiA+IFxcXCIkT0NES19QUk9KRUNUX0RJUi8ub2Nkay1sb2dzLmpzb25cXFwiOyAnICtcbiAgICAgICAgICAgICAgJ2ZpOyAnICtcbiAgICAgICAgICAgICAgJ2ZpJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSk7XG5cbiAgICAgIG5ldyBUZXJyYWZvcm1PdXRwdXQodGhpcywgJ29jaXJfcmVwb3NpdG9yeV9uYW1lJywgeyB2YWx1ZTogb2NpclJlcG9zaXRvcnkuZGlzcGxheU5hbWUsIGRlc2NyaXB0aW9uOiAnT0NJUiByZXBvc2l0b3J5IG5hbWUnIH0pO1xuICAgICAgbmV3IFRlcnJhZm9ybU91dHB1dCh0aGlzLCAnYXBpX2dhdGV3YXlfaG9zdCcsIHsgdmFsdWU6IGFwaUdhdGV3YXkuaG9zdG5hbWUsIGRlc2NyaXB0aW9uOiAnQVBJIEdhdGV3YXkgaG9zdG5hbWUnIH0pO1xuICAgICAgbmV3IFRlcnJhZm9ybU91dHB1dCh0aGlzLCAnZnVuY3Rpb25faW52b2tlX3VybCcsIHsgdmFsdWU6IGBodHRwczovLyR7YXBpR2F0ZXdheS5ob3N0bmFtZX1gLCBkZXNjcmlwdGlvbjogJ0Jhc2UgVVJMIHRvIGludm9rZSB0aGUgZnVuY3Rpb24nIH0pO1xuICAgICAgbmV3IFRlcnJhZm9ybU91dHB1dCh0aGlzLCAnZnVuY3Rpb25faWQnLCB7IHZhbHVlOiBvY2lGdW5jdGlvbi5pZCwgZGVzY3JpcHRpb246ICdPQ0kgRnVuY3Rpb24gT0NJRCcgfSk7XG4gICAgICBuZXcgVGVycmFmb3JtT3V0cHV0KHRoaXMsICdsb2dfZ3JvdXBfaWQnLCB7IHZhbHVlOiBsb2dHcm91cC5pZCwgZGVzY3JpcHRpb246ICdPQ0kgTG9nIEdyb3VwIE9DSUQgZm9yIHRoZSBhcHBsaWNhdGlvbicgfSk7XG4gICAgICBuZXcgVGVycmFmb3JtT3V0cHV0KHRoaXMsICdleGVjdXRpb25fbG9nX2lkJywgeyB2YWx1ZTogZXhlY3V0aW9uTG9nLmlkLCBkZXNjcmlwdGlvbjogJ09DSSBGdW5jdGlvbnMgZXhlY3V0aW9uIGxvZyBPQ0lEJyB9KTtcbiAgICB9XG5cbiAgICAvLyBGb3JjZSBvcmFjbGUvb2NpIChUZXJyYWZvcm0gUmVnaXN0cnkpIHNvIHRlcnJhZm9ybSBpbml0IHVzZXMgaXQgb24gT0w4IGFuZCBlbHNld2hlcmU7IG11c3QgcnVuIGFmdGVyIHByb3ZpZGVyIGlzIGFkZGVkXG4gICAgdGhpcy5hZGRPdmVycmlkZSgndGVycmFmb3JtLnJlcXVpcmVkX3Byb3ZpZGVycy5vY2knLCB7XG4gICAgICBzb3VyY2U6ICdvcmFjbGUvb2NpJyxcbiAgICAgIHZlcnNpb246ICc+PSA1LjAuMCwgPCA2LjAuMCcsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
package/lib/oci-stack.ts CHANGED
@@ -378,12 +378,8 @@ tail-function-logs.sh
378
378
  'if [ -n "$OCDK_PROJECT_DIR" ]; then ' +
379
379
  'LOG_GROUP_ID="$(terraform output -raw log_group_id 2>/dev/null || echo "")"; ' +
380
380
  'EXEC_LOG_ID="$(terraform output -raw execution_log_id 2>/dev/null || echo "")"; ' +
381
- 'SCRIPT="$OCDK_PROJECT_DIR/tail-function-logs.js"; ' +
382
- 'if [ -f "$SCRIPT" ] && [ -n "$LOG_GROUP_ID" ]; then ' +
383
- "perl -0pi -e 's/const DEFAULT_LOG_GROUP_ID = \\'[^\\']*\\';/const DEFAULT_LOG_GROUP_ID = \\'$LOG_GROUP_ID\\';/' \"$SCRIPT\"; " +
384
- 'fi; ' +
385
- 'if [ -f "$SCRIPT" ] && [ -n "$EXEC_LOG_ID" ]; then ' +
386
- "perl -0pi -e 's/const DEFAULT_EXECUTION_LOG_ID = \\'[^\\']*\\';/const DEFAULT_EXECUTION_LOG_ID = \\'$EXEC_LOG_ID\\';/' \"$SCRIPT\"; " +
381
+ 'if [ -n "$LOG_GROUP_ID" ] && [ -n "$EXEC_LOG_ID" ]; then ' +
382
+ 'printf \'{\"log_group_id\":\"%s\",\"execution_log_id\":\"%s\"}\\n\' \"$LOG_GROUP_ID\" \"$EXEC_LOG_ID\" > \"$OCDK_PROJECT_DIR/.ocdk-logs.json\"; ' +
387
383
  'fi; ' +
388
384
  'fi',
389
385
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oci-cdk-test",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "description": "OCI CDK stack for OCI Functions, API Gateway, and related infrastructure",
5
5
  "main": "lib/index.js",
6
6
  "bin": {
@@ -1,14 +1,33 @@
1
1
  // Tail OCI logs using OCI_EXECUTION_LOG_ID and OCI_LOG_GROUP_ID env vars.
2
2
  // Prints only the log lines (no metadata), similar to `tail -f`.
3
3
 
4
+ const fs = require('fs');
5
+ const path = require('path');
4
6
  const logging = require('oci-logging');
5
7
  const loggingsearch = require('oci-loggingsearch');
6
8
  const common = require('oci-common');
7
9
 
8
- // These may be replaced by OCDK at deploy time for a given project.
9
- // In the published package they are empty; env vars are then required.
10
- const DEFAULT_EXECUTION_LOG_ID = '';
11
- const DEFAULT_LOG_GROUP_ID = '';
10
+ // Defaults: first from a small JSON file written at deploy time, then empty.
11
+ let DEFAULT_EXECUTION_LOG_ID = '';
12
+ let DEFAULT_LOG_GROUP_ID = '';
13
+
14
+ try {
15
+ const defaultsPath = path.join(process.cwd(), '.ocdk-logs.json');
16
+ if (fs.existsSync(defaultsPath)) {
17
+ const raw = fs.readFileSync(defaultsPath, 'utf8');
18
+ const parsed = JSON.parse(raw);
19
+ if (parsed && typeof parsed === 'object') {
20
+ if (typeof parsed.execution_log_id === 'string') {
21
+ DEFAULT_EXECUTION_LOG_ID = parsed.execution_log_id;
22
+ }
23
+ if (typeof parsed.log_group_id === 'string') {
24
+ DEFAULT_LOG_GROUP_ID = parsed.log_group_id;
25
+ }
26
+ }
27
+ }
28
+ } catch (e) {
29
+ // ignore defaults file errors; env vars can still be used
30
+ }
12
31
 
13
32
  /**
14
33
  * Pull log entries for a given log OCID, optionally scoped by log group ID.