@fjall/components-infrastructure 0.83.5 → 0.84.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/lib/app.js +1 -24
  2. package/package.json +3 -3
package/dist/lib/app.js CHANGED
@@ -101,29 +101,6 @@ class App extends aws_cdk_lib_1.App {
101
101
  if (!App.instance) {
102
102
  App.instance = new App(name, options);
103
103
  }
104
- else {
105
- // If singleton exists but name differs, update it (before any infra is defined)
106
- if (name && App.instance.name !== name) {
107
- // Warn if network already initialized - changing name after network exists creates a mismatch
108
- if (App.instance.vpc) {
109
- console.warn(`Warning: App name changed from "${App.instance.name}" to "${name}" after network was initialized. ` +
110
- `VPC will have name "${App.instance.name}Vpc" but app name is "${name}". ` +
111
- `Ensure App.getApp() is called with the final name before initializing network.`);
112
- }
113
- App.instance.name = name;
114
- // Reinitialize standard tags with the new name
115
- App.instance.initialiseStandardTags();
116
- }
117
- // If options provided but network not yet initialized, initialize it now
118
- if (options?.network === false) {
119
- App.instance.networkDisabled = true;
120
- }
121
- else if (options?.network &&
122
- !App.instance.vpc &&
123
- !App.instance.networkDisabled) {
124
- App.instance.initialiseNetwork(options.network);
125
- }
126
- }
127
104
  return App.instance;
128
105
  }
129
106
  /**
@@ -462,4 +439,4 @@ class App extends aws_cdk_lib_1.App {
462
439
  exports.App = App;
463
440
  App.instance = null;
464
441
  exports.default = App;
465
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FLcUI7QUFHckIsd0RBQXFEO0FBR3JELDJDQUF1QztBQUN2QyxxREFBbUU7QUFFbkUsb0RBSWdDO0FBQ2hDLG1FQUFnRTtBQUtoRSxpREFBOEM7QUFDOUMsOEVBQThFO0FBQzlFLG9EQUE4RDtBQUM5RCwrREFBK0Q7QUFDL0QsMENBQW9EO0FBK0JwRDs7OztHQUlHO0FBQ0gsTUFBYSxHQUFJLFNBQVEsaUJBQU07SUFpQjdCLFlBQW9CLElBQWEsRUFBRSxPQUFxQjtRQUN0RCxLQUFLLEVBQUUsQ0FBQztRQWRGLFdBQU0sR0FBZ0MsRUFBRSxDQUFDO1FBR3pDLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUM7UUFLekMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsZUFBVSxHQUE4QixFQUFFLENBQUM7UUFDM0Msa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFNNUIsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFcEIsSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7O1lBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1FBRTVCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBRTlCLCtDQUErQztRQUMvQyxJQUFJLE9BQU8sRUFBRSxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQzthQUFNLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGlCQUFpQixDQUN2QixNQUErQztRQUUvQyxNQUFNLFlB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QyxDQUFDO1FBRXRDLHVEQUF1RDtRQUN2RCxJQUFJLENBQUM7WUFDSCw0QkFBNEI7WUFDNUIsZ0NBQWdDO1lBQ2hDLG9EQUFvRDtZQUNwRCxtQ0FBbUM7WUFDbkMsd0JBQXdCO1lBQ3hCLDhCQUE4QjtZQUM5QixLQUFLO1lBQ0wsdUVBQXVFO1FBQ3pFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsNkNBQTZDO1lBQzdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7O0FBcmhCSCxrQkFzaEJDO0FBcmhCZ0IsWUFBUSxHQUFlLElBQUksQUFBbkIsQ0FBb0I7QUF1aEI3QyxrQkFBZSxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHAgYXMgQ2RrQXBwLFxuICBBc3BlY3RzLFxuICBUYWdzLFxuICB0eXBlIFN0YWdlU3ludGhlc2lzT3B0aW9uc1xufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHR5cGUgQ2xvdWRBc3NlbWJseSB9IGZyb20gXCJhd3MtY2RrLWxpYi9jeC1hcGlcIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFZwYyB9IGZyb20gXCIuL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy92cGNcIjtcbmltcG9ydCB7IHR5cGUgSVZwYyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyB0eXBlIFJvbGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi9yZXNvdXJjZXNcIjtcbmltcG9ydCB7IHR5cGUgRWNyLCBFY3JGYWN0b3J5IH0gZnJvbSBcIi4vcmVzb3VyY2VzL2F3cy9zdG9yYWdlL2VjclwiO1xuaW1wb3J0IHsgdHlwZSBEYXRhYmFzZSB9IGZyb20gXCIuL3BhdHRlcm5zL2F3cy9kYXRhYmFzZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBJTmV0d29ya1Byb3BzLFxuICBOZXR3b3JrRmFjdG9yeSxcbiAgdHlwZSBOZXR3b3JrXG59IGZyb20gXCIuL3BhdHRlcm5zL2F3cy9uZXR3b3JrXCI7XG5pbXBvcnQgeyBTdGFuZGFyZFRhZ3NBc3BlY3QgfSBmcm9tIFwiLi91dGlscy9zdGFuZGFyZFRhZ3NBc3BlY3RcIjtcbmltcG9ydCB7XG4gIHR5cGUgUmVzb3VyY2VJbnZlbnRvcnlBc3BlY3QsXG4gIHR5cGUgUmVzb3VyY2VJbnZlbnRvcnlcbn0gZnJvbSBcIi4vYXNwZWN0cy9yZXNvdXJjZUludmVudG9yeVwiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnIH0gZnJvbSBcIi4vdXRpbHMvZ2V0Q29uZmlnXCI7XG5pbXBvcnQgTW9uaXRvcmluZ1JvbGVGYWN0b3J5IGZyb20gXCIuL3Jlc291cmNlcy9hd3MvbW9uaXRvcmluZy9tb25pdG9yaW5nUm9sZVwiO1xuaW1wb3J0IHsgRkpBTExfTU9OSVRPUklOR19DT05GSUcgfSBmcm9tIFwiLi9jb25maWcvbW9uaXRvcmluZ1wiO1xuaW1wb3J0IEF1ZGl0Um9sZUZhY3RvcnkgZnJvbSBcIi4vcmVzb3VyY2VzL2F3cy9hdWRpdC9hdWRpdFJvbGVcIjtcbmltcG9ydCB7IEZKQUxMX0FVRElUX0NPTkZJRyB9IGZyb20gXCIuL2NvbmZpZy9hdWRpdFwiO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgQXBwLmdldEFwcCgpLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDcmVhdGUgYXBwIHdpdGggbmV3IFZQQ1xuICogY29uc3QgYXBwID0gQXBwLmdldEFwcChhcHBOYW1lLCB7XG4gKiAgIG5ldHdvcms6IHsgbWF4QXpzOiAyLCBuYXRHYXRld2F5czogZmFsc2UgfVxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENyZWF0ZSBhcHAgdXNpbmcgZXhpc3RpbmcgVlBDXG4gKiBjb25zdCBhcHAgPSBBcHAuZ2V0QXBwKGFwcE5hbWUsIHtcbiAqICAgbmV0d29yazogeyB1c2VFeGlzdGluZzogXCJ2cGMtMTIzNDU2NzhcIiB9XG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3JlYXRlIGFwcCB3aXRob3V0IG5ldHdvcmsgKFMzLW9ubHkgYXBwcylcbiAqIGNvbnN0IGFwcCA9IEFwcC5nZXRBcHAoYXBwTmFtZSwgeyBuZXR3b3JrOiBmYWxzZSB9KTtcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQXBwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gICAqIC0gT2JqZWN0IHdpdGggSU5ldHdvcmtQcm9wczogQ3JlYXRlIG5ldyBWUEMgd2l0aCBjb25maWdcbiAgICogLSBmYWxzZTogTm8gbmV0d29yayAoZm9yIFMzLW9ubHkgYXBwcylcbiAgICogLSB7IHVzZUV4aXN0aW5nOiBzdHJpbmcgfTogVXNlIGV4aXN0aW5nIFZQQyBieSBJRFxuICAgKi9cbiAgbmV0d29yaz86IElOZXR3b3JrUHJvcHMgfCBmYWxzZSB8IHsgdXNlRXhpc3Rpbmc6IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFRoZSBiYXNpYyBjb3JuZXItc3RvbmUgb2YgYWxsIEZqYWxsLWhvc3RlZCBhcHBsaWNhdGlvbnMuXG4gKiAgVGhpcyBjbGFzcyBpcyBhIHNpbmdsZXRvbiBhbmQgc2hvdWxkIGJlIHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2VcbiAqICAgYWxsIHJlc291cmNlcyBpbiBhIEZqYWxsIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQXBwIGV4dGVuZHMgQ2RrQXBwIHtcbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2U6IEFwcCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHN0YWNrczogeyBba2V5OiBzdHJpbmddOiBBd3NTdGFjayB9ID0ge307XG5cbiAgcHJpdmF0ZSB2cGM/OiBJVnBjO1xuICBwcml2YXRlIGFkZGl0aW9uYWxWcGNzID0gbmV3IE1hcDxzdHJpbmcsIElWcGM+KCk7XG4gIHByaXZhdGUgZGVmYXVsdEVjcjogRWNyO1xuICBwcml2YXRlIGRlZmF1bHRNb25pdG9yaW5nUm9sZTogUm9sZTtcbiAgcHJpdmF0ZSBkZWZhdWx0QXVkaXRSb2xlOiBSb2xlO1xuICBwcml2YXRlIGF1ZGl0Um9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgbmV0d29ya0Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgZ2xvYmFsVGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICBwcml2YXRlIGFzcGVjdEFwcGxpZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZXNvdXJjZUludmVudG9yeTogUmVzb3VyY2VJbnZlbnRvcnlBc3BlY3Q7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihuYW1lPzogc3RyaW5nLCBvcHRpb25zPzogSUFwcE9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgQXBwLmluc3RhbmNlID0gdGhpcztcblxuICAgIGlmIChuYW1lKSB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIGVsc2UgdGhpcy5uYW1lID0gXCJGamFsbEFwcFwiO1xuXG4gICAgdGhpcy5pbml0aWFsaXNlU3RhbmRhcmRUYWdzKCk7XG5cbiAgICAvLyBJbml0aWFsaXNlIG5ldHdvcmsgaW1tZWRpYXRlbHkgaWYgY29uZmlndXJlZFxuICAgIGlmIChvcHRpb25zPy5uZXR3b3JrID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5uZXR3b3JrRGlzYWJsZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucz8ubmV0d29yaykge1xuICAgICAgdGhpcy5pbml0aWFsaXNlTmV0d29yayhvcHRpb25zLm5ldHdvcmspO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXNlIHRoZSBuZXR3b3JrIChWUEMpIGZvciB0aGlzIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXNlTmV0d29yayhcbiAgICBjb25maWc6IElOZXR3b3JrUHJvcHMgfCB7IHVzZUV4aXN0aW5nOiBzdHJpbmcgfVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBuZXR3b3JrU3RhY2sgPSB0aGlzLmdldERlZmF1bHROZXR3b3JrU3RhY2soKTtcblxuICAgIGlmIChcInVzZUV4aXN0aW5nXCIgaW4gY29uZmlnKSB7XG4gICAgICB0aGlzLnZwYyA9IFZwYy5mcm9tTG9va3VwKFxuICAgICAgICBuZXR3b3JrU3RhY2suZ2V0U3RhY2soKSxcbiAgICAgICAgYCR7dGhpcy5uYW1lfUltcG9ydGVkVnBjYCxcbiAgICAgICAge1xuICAgICAgICAgIHZwY0lkOiBjb25maWcudXNlRXhpc3RpbmdcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV0d29yayA9IE5ldHdvcmtGYWN0b3J5LmJ1aWxkKGAke3RoaXMubmFtZX1WcGNgLCBjb25maWcpKFxuICAgICAgICB0aGlzLFxuICAgICAgICBuZXR3b3JrU3RhY2suZ2V0U3RhY2soKVxuICAgICAgKTtcbiAgICAgIHRoaXMudnBjID0gbmV0d29yay5nZXRWcGMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgYXBwbGljYXRpb24gbmFtZVxuICAgKi9cbiAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldC9DcmVhdGUgYSBiYXNpYyBGamFsbCBBcHBsaWNhdGlvbiB3aXRoIHN0YW5kYXJkIHRhZ3MgYXBwbGllZC5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgQXBwbGljYXRpb24gbmFtZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgaW5jbHVkaW5nIG5ldHdvcmsgc2V0dGluZ3NcbiAgICogQHJldHVybnMge0FwcH1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gQ3JlYXRlIGFwcCB3aXRoIG5ldyBWUENcbiAgICogY29uc3QgYXBwID0gQXBwLmdldEFwcChhcHBOYW1lLCB7XG4gICAqICAgbmV0d29yazogeyBtYXhBenM6IDIsIG5hdEdhdGV3YXlzOiBmYWxzZSB9XG4gICAqIH0pO1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBDcmVhdGUgYXBwIHVzaW5nIGV4aXN0aW5nIFZQQ1xuICAgKiBjb25zdCBhcHAgPSBBcHAuZ2V0QXBwKGFwcE5hbWUsIHtcbiAgICogICBuZXR3b3JrOiB7IHVzZUV4aXN0aW5nOiBcInZwYy0xMjM0NTY3OFwiIH1cbiAgICogfSk7XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIENyZWF0ZSBhcHAgd2l0aG91dCBuZXR3b3JrIChTMy1vbmx5IGFwcHMpXG4gICAqIGNvbnN0IGFwcCA9IEFwcC5nZXRBcHAoYXBwTmFtZSwgeyBuZXR3b3JrOiBmYWxzZSB9KTtcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0QXBwKG5hbWU/OiBzdHJpbmcsIG9wdGlvbnM/OiBJQXBwT3B0aW9ucyk6IEFwcCB7XG4gICAgY29uc3QgYXBwID0gQXBwLmdldEluc3RhbmNlKG5hbWUsIG9wdGlvbnMpO1xuICAgIGFwcC5pbml0aWFsaXNlU3RhbmRhcmRUYWdzKCk7XG4gICAgcmV0dXJuIGFwcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQvQ3JlYXRlIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIEFwcFxuICAgKiBAcGFyYW0gbmFtZSBBcHBsaWNhdGlvbiBuYW1lXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbmNsdWRpbmcgbmV0d29yayBzZXR0aW5nc1xuICAgKiBAcmV0dXJucyB7QXBwfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZShuYW1lPzogc3RyaW5nLCBvcHRpb25zPzogSUFwcE9wdGlvbnMpOiBBcHAge1xuICAgIC8vIERlc3BpdGUgc3VwcG9ydGluZyBtdWx0aXBsZSBzdGFja3MgeW91IGNhbiBzdGlsbCBvbmx5IGV2ZXJcbiAgICAvLyBoYXZlIGEgc2luZ2xlIEFwcGxpY2F0aW9uIHBlciBDREsgZGVwbG95bWVudFxuICAgIGlmICghQXBwLmluc3RhbmNlKSB7XG4gICAgICBBcHAuaW5zdGFuY2UgPSBuZXcgQXBwKG5hbWUsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBzaW5nbGV0b24gZXhpc3RzIGJ1dCBuYW1lIGRpZmZlcnMsIHVwZGF0ZSBpdCAoYmVmb3JlIGFueSBpbmZyYSBpcyBkZWZpbmVkKVxuICAgICAgaWYgKG5hbWUgJiYgQXBwLmluc3RhbmNlLm5hbWUgIT09IG5hbWUpIHtcbiAgICAgICAgLy8gV2FybiBpZiBuZXR3b3JrIGFscmVhZHkgaW5pdGlhbGl6ZWQgLSBjaGFuZ2luZyBuYW1lIGFmdGVyIG5ldHdvcmsgZXhpc3RzIGNyZWF0ZXMgYSBtaXNtYXRjaFxuICAgICAgICBpZiAoQXBwLmluc3RhbmNlLnZwYykge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBXYXJuaW5nOiBBcHAgbmFtZSBjaGFuZ2VkIGZyb20gXCIke0FwcC5pbnN0YW5jZS5uYW1lfVwiIHRvIFwiJHtuYW1lfVwiIGFmdGVyIG5ldHdvcmsgd2FzIGluaXRpYWxpemVkLiBgICtcbiAgICAgICAgICAgICAgYFZQQyB3aWxsIGhhdmUgbmFtZSBcIiR7QXBwLmluc3RhbmNlLm5hbWV9VnBjXCIgYnV0IGFwcCBuYW1lIGlzIFwiJHtuYW1lfVwiLiBgICtcbiAgICAgICAgICAgICAgYEVuc3VyZSBBcHAuZ2V0QXBwKCkgaXMgY2FsbGVkIHdpdGggdGhlIGZpbmFsIG5hbWUgYmVmb3JlIGluaXRpYWxpemluZyBuZXR3b3JrLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIEFwcC5pbnN0YW5jZS5uYW1lID0gbmFtZTtcbiAgICAgICAgLy8gUmVpbml0aWFsaXplIHN0YW5kYXJkIHRhZ3Mgd2l0aCB0aGUgbmV3IG5hbWVcbiAgICAgICAgQXBwLmluc3RhbmNlLmluaXRpYWxpc2VTdGFuZGFyZFRhZ3MoKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgb3B0aW9ucyBwcm92aWRlZCBidXQgbmV0d29yayBub3QgeWV0IGluaXRpYWxpemVkLCBpbml0aWFsaXplIGl0IG5vd1xuICAgICAgaWYgKG9wdGlvbnM/Lm5ldHdvcmsgPT09IGZhbHNlKSB7XG4gICAgICAgIEFwcC5pbnN0YW5jZS5uZXR3b3JrRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgb3B0aW9ucz8ubmV0d29yayAmJlxuICAgICAgICAhQXBwLmluc3RhbmNlLnZwYyAmJlxuICAgICAgICAhQXBwLmluc3RhbmNlLm5ldHdvcmtEaXNhYmxlZFxuICAgICAgKSB7XG4gICAgICAgIEFwcC5pbnN0YW5jZS5pbml0aWFsaXNlTmV0d29yayhvcHRpb25zLm5ldHdvcmspO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBBcHAuaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYSBzdGFjayBieSBrZXkuIElmIHRoZSBzdGFjayBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkLlxuICAgKiAgRGVwZW5kZW5jaWVzIGFyZSBvbmx5IGFwcGxpZWQgdGhlIGZpcnN0IHRpbWUgYSBzdGFjayBpcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBvZiB0aGUgc3RhY2tcbiAgICogQHBhcmFtIGRlcGVuZGVuY2llcyAtIFRoZSBzdGFjayhzKSB0aGF0IHRoaXMgc3RhY2sgZGVwZW5kcyBvblxuICAgKiBAcmV0dXJucyB7QXdzU3RhY2t9XG4gICAqL1xuICBwdWJsaWMgZ2V0U3RhY2soa2V5OiBzdHJpbmcsIGRlcGVuZGVuY2llcz86IEF3c1N0YWNrIHwgQXdzU3RhY2tbXSk6IEF3c1N0YWNrIHtcbiAgICAvLyBBcHBseSB0aGUgYXNwZWN0IG9uY2UgYmVmb3JlIGNyZWF0aW5nIHRoZSBmaXJzdCBzdGFja1xuICAgIGlmIChcbiAgICAgICF0aGlzLmFzcGVjdEFwcGxpZWQgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuc3RhY2tzKS5sZW5ndGggPT09IDAgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZ2xvYmFsVGFncykubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5hcHBseVRhZ3NBc3BlY3QoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc3RhY2tzW2tleV0pIHtcbiAgICAgIHRoaXMuc3RhY2tzW2tleV0gPSBuZXcgQXdzU3RhY2soa2V5LCBkZXBlbmRlbmNpZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YWNrc1trZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGRlZmF1bHQgY29tcHV0ZSBzdGFjayAtIG5hbWVkIGFzIGAke3RoaXMubmFtZX1Db21wdXRlYFxuICAgKlxuICAgKiBPbmx5IGRlcGVuZHMgb24gTmV0d29yay4gRGF0YWJhc2UgZGVwZW5kZW5jeSBpcyBhZGRlZCBhdXRvbWF0aWNhbGx5XG4gICAqIGJ5IENESyB3aGVuIGNvbXB1dGUgcmVzb3VyY2VzIHJlZmVyZW5jZSBkYXRhYmFzZSByZXNvdXJjZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtBd3NTdGFja31cbiAgICovXG4gIHB1YmxpYyBnZXREZWZhdWx0Q29tcHV0ZVN0YWNrKCk6IEF3c1N0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdGFjayhgJHt0aGlzLm5hbWV9Q29tcHV0ZWAsIHRoaXMuZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBkZWZhdWx0IG5ldHdvcmsgc3RhY2sgLSBuYW1lZCBhcyBgJHt0aGlzLm5hbWV9TmV0d29ya2BcbiAgICogQHJldHVybnMge0F3c1N0YWNrfVxuICAgKi9cbiAgcHVibGljIGdldERlZmF1bHROZXR3b3JrU3RhY2soKTogQXdzU3RhY2sge1xuICAgIHJldHVybiB0aGlzLmdldFN0YWNrKGAke3RoaXMubmFtZX1OZXR3b3JrYCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgZGVmYXVsdCBkYXRhYmFzZSBzdGFjayAtIG5hbWVkIGFzIGAke3RoaXMubmFtZX1EYXRhYmFzZWBcbiAgICogQHJldHVybnMge0F3c1N0YWNrfVxuICAgKi9cbiAgcHVibGljIGdldERlZmF1bHREYXRhYmFzZVN0YWNrKCk6IEF3c1N0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdGFjayhgJHt0aGlzLm5hbWV9RGF0YWJhc2VgLCB0aGlzLmdldERlZmF1bHROZXR3b3JrU3RhY2soKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgZGVmYXVsdCBzdG9yYWdlIHN0YWNrIC0gbmFtZWQgYXMgYCR7dGhpcy5uYW1lfVN0b3JhZ2VgXG4gICAqIEByZXR1cm5zIHtBd3NTdGFja31cbiAgICovXG4gIHB1YmxpYyBnZXREZWZhdWx0U3RvcmFnZVN0YWNrKCk6IEF3c1N0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdGFjayhgJHt0aGlzLm5hbWV9U3RvcmFnZWAsIHRoaXMuZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBWUEMgYnkgbmFtZS4gSWYgbm8gbmFtZSBpcyBwcm92aWRlZCwgcmV0dXJucyB0aGUgZGVmYXVsdCBWUEMuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwdXJlIGdldHRlciAtIGl0IG5ldmVyIGNyZWF0ZXMgaW5mcmFzdHJ1Y3R1cmUuXG4gICAqIE5ldHdvcmsgbXVzdCBiZSBjb25maWd1cmVkIHZpYSBBcHAuZ2V0QXBwKCkgb3B0aW9ucyBvciBhcHAuYWRkTmV0d29yaygpLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIE9wdGlvbmFsIG5hbWUgb2YgdGhlIFZQQyB0byByZXRyaWV2ZS4gSWYgbm90IHByb3ZpZGVkLCByZXR1cm5zIHRoZSBkZWZhdWx0IFZQQy5cbiAgICogQHJldHVybnMge0lWcGN9IFRoZSBjb25maWd1cmVkIFZQQ1xuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgbmV0d29yayBpcyBkaXNhYmxlZCwgbm90IGNvbmZpZ3VyZWQsIG9yIG5hbWVkIFZQQyBub3QgZm91bmRcbiAgICovXG4gIHB1YmxpYyBnZXRWcGMobmFtZT86IHN0cmluZyk6IElWcGMge1xuICAgIGlmICh0aGlzLm5ldHdvcmtEaXNhYmxlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk5ldHdvcmsgaXMgZGlzYWJsZWQgZm9yIHRoaXMgYXBwLiBDYW5ub3QgZ2V0IFZQQy4gXCIgK1xuICAgICAgICAgIFwiUGFzcyBuZXR3b3JrIGNvbmZpZyB0byBBcHAuZ2V0QXBwKCkgdG8gZW5hYmxlIG5ldHdvcmtpbmcuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSWYgbmFtZSBpcyBwcm92aWRlZCwgbG9vayBpbiBhZGRpdGlvbmFsIFZQQ3MgZmlyc3RcbiAgICBpZiAobmFtZSkge1xuICAgICAgY29uc3QgYWRkaXRpb25hbFZwYyA9IHRoaXMuYWRkaXRpb25hbFZwY3MuZ2V0KG5hbWUpO1xuICAgICAgaWYgKGFkZGl0aW9uYWxWcGMpIHtcbiAgICAgICAgcmV0dXJuIGFkZGl0aW9uYWxWcGM7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBWUEMgJyR7bmFtZX0nIG5vdCBmb3VuZC4gQXZhaWxhYmxlIFZQQ3M6ICR7dGhpcy5nZXRWcGNOYW1lcygpLmpvaW4oXCIsIFwiKX0uIGAgK1xuICAgICAgICAgIFwiQ3JlYXRlIGFkZGl0aW9uYWwgVlBDcyB1c2luZyBhcHAuYWRkTmV0d29yayhOZXR3b3JrRmFjdG9yeS5idWlsZCguLi4pKS5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gZGVmYXVsdCBWUENcbiAgICBpZiAoIXRoaXMudnBjKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiTmV0d29yayBub3QgY29uZmlndXJlZC4gUGFzcyBuZXR3b3JrIGNvbmZpZyB0byBBcHAuZ2V0QXBwKCkuIFwiICtcbiAgICAgICAgICBcIkV4YW1wbGU6IEFwcC5nZXRBcHAoYXBwTmFtZSwgeyBuZXR3b3JrOiB7IG1heEF6czogMiB9IH0pXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZwYztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5hbWVzIG9mIGFsbCBhdmFpbGFibGUgVlBDcy5cbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ1tdfSBBcnJheSBvZiBWUEMgbmFtZXMuIEluY2x1ZGVzIFwiZGVmYXVsdFwiIGlmIHRoZSBkZWZhdWx0IFZQQyBpcyBjb25maWd1cmVkLlxuICAgKi9cbiAgcHVibGljIGdldFZwY05hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBuYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy52cGMpIHtcbiAgICAgIG5hbWVzLnB1c2goXCJkZWZhdWx0XCIpO1xuICAgIH1cbiAgICBuYW1lcy5wdXNoKC4uLnRoaXMuYWRkaXRpb25hbFZwY3Mua2V5cygpKTtcbiAgICByZXR1cm4gbmFtZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmVpdmUgdGhlIGRlZmF1bHQgYXBwbGljYXRpb24gY29udGFpbmVyIHJlZ2lzdHJ5LiBJZiB0aGUgcmVnaXN0cnkgZG9lcyBub3QgZXhpc3RcbiAgICogIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXREZWZhdWx0Q29udGFpbmVyUmVnaXN0cnkoKTogRWNyIHtcbiAgICBpZiAoIXRoaXMuZGVmYXVsdEVjcikge1xuICAgICAgY29uc3QgbmV0d29ya1N0YWNrID0gdGhpcy5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCk7XG5cbiAgICAgIHRoaXMuZGVmYXVsdEVjciA9IEVjckZhY3RvcnkuYnVpbGQoYCR7dGhpcy5uYW1lfUVjcmApKFxuICAgICAgICB0aGlzLFxuICAgICAgICBuZXR3b3JrU3RhY2suZ2V0U3RhY2soKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWNyO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGNyb3NzLWFjY291bnQgbW9uaXRvcmluZyByb2xlIGluIHRoZSBOZXR3b3JrIHN0YWNrIHRoYXQgYWxsb3dzXG4gICAqIHRoZSBGamFsbCB3ZWJhcHAgdG8gcXVlcnkgQ2xvdWRXYXRjaCBtZXRyaWNzIGFuZCBFQ1Mgc3RhdHVzLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViYXBwQWNjb3VudElkIC0gT3B0aW9uYWwgQVdTIGFjY291bnQgSUQgb2YgdGhlIEZqYWxsIHdlYmFwcC4gRGVmYXVsdHMgdG8gY29uZmlndXJlZCBwbGF0Zm9ybSBhY2NvdW50LlxuICAgKiBAcmV0dXJucyB7Um9sZX0gVGhlIGNyZWF0ZWQgbW9uaXRvcmluZyByb2xlXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlTW9uaXRvcmluZ1JvbGUod2ViYXBwQWNjb3VudElkPzogc3RyaW5nKTogUm9sZSB7XG4gICAgaWYgKCF0aGlzLmRlZmF1bHRNb25pdG9yaW5nUm9sZSkge1xuICAgICAgY29uc3QgbmV0d29ya1N0YWNrID0gdGhpcy5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCk7XG4gICAgICBjb25zdCBhY2NvdW50SWQgPVxuICAgICAgICB3ZWJhcHBBY2NvdW50SWQgfHwgRkpBTExfTU9OSVRPUklOR19DT05GSUcud2ViYXBwQXdzQWNjb3VudElkO1xuXG4gICAgICB0aGlzLmRlZmF1bHRNb25pdG9yaW5nUm9sZSA9IE1vbml0b3JpbmdSb2xlRmFjdG9yeS5idWlsZChcbiAgICAgICAgYCR7dGhpcy5uYW1lfU1vbml0b3JpbmdSb2xlYCxcbiAgICAgICAge1xuICAgICAgICAgIHdlYmFwcEFjY291bnRJZDogYWNjb3VudElkLFxuICAgICAgICAgIGFwcE5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICByb2xlTmFtZVByZWZpeDogRkpBTExfTU9OSVRPUklOR19DT05GSUcucm9sZU5hbWVQcmVmaXgsXG4gICAgICAgICAgcm9sZVBhdGg6IEZKQUxMX01PTklUT1JJTkdfQ09ORklHLnJvbGVQYXRoXG4gICAgICAgIH1cbiAgICAgICkodGhpcywgbmV0d29ya1N0YWNrLmdldFN0YWNrKCkpO1xuXG4gICAgICAvLyBSZWdpc3RlciB0aGUgcm9sZSB3aXRoIHRoZSBuZXR3b3JrIHN0YWNrXG4gICAgICBuZXR3b3JrU3RhY2suYWRkQ29uc3RydWN0KHRoaXMuZGVmYXVsdE1vbml0b3JpbmdSb2xlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0TW9uaXRvcmluZ1JvbGU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY3Jvc3MtYWNjb3VudCBhdWRpdCByb2xlIGluIHRoZSBOZXR3b3JrIHN0YWNrIHRoYXQgYWxsb3dzXG4gICAqIHRoZSBGamFsbCBwbGF0Zm9ybSB0byB1c2UgQ2xvdWRRdWVyeSBmb3IgY29tcHJlaGVuc2l2ZSBBV1MgcmVzb3VyY2UgYXVkaXRpbmcuXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gZXhwbGljaXQgb3B0LWluIGZlYXR1cmUuIENhbGwgdGhpcyBtZXRob2QgdG8gZW5hYmxlIENsb3VkUXVlcnlcbiAgICogYXVkaXQgY2FwYWJpbGl0aWVzIGZvciB5b3VyIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViYXBwQWNjb3VudElkIC0gT3B0aW9uYWwgQVdTIGFjY291bnQgSUQgb2YgdGhlIEZqYWxsIHdlYmFwcC4gRGVmYXVsdHMgdG8gY29uZmlndXJlZCBwbGF0Zm9ybSBhY2NvdW50LlxuICAgKiBAcGFyYW0gZXh0ZXJuYWxJZCAtIE9wdGlvbmFsIGV4dGVybmFsIElEIGZvciBhZGRpdGlvbmFsIHNlY3VyaXR5LiBJZiBub3QgcHJvdmlkZWQsIGEgdW5pcXVlIElEIHdpbGwgYmUgZ2VuZXJhdGVkLlxuICAgKiBAcmV0dXJucyB7Um9sZX0gVGhlIGNyZWF0ZWQgYXVkaXQgcm9sZVxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUF1ZGl0Um9sZSh3ZWJhcHBBY2NvdW50SWQ/OiBzdHJpbmcsIGV4dGVybmFsSWQ/OiBzdHJpbmcpOiBSb2xlIHtcbiAgICBpZiAoIXRoaXMuZGVmYXVsdEF1ZGl0Um9sZSkge1xuICAgICAgY29uc3QgbmV0d29ya1N0YWNrID0gdGhpcy5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCk7XG4gICAgICBjb25zdCBhY2NvdW50SWQgPVxuICAgICAgICB3ZWJhcHBBY2NvdW50SWQgfHwgRkpBTExfQVVESVRfQ09ORklHLndlYmFwcEF3c0FjY291bnRJZDtcblxuICAgICAgLy8gR2VuZXJhdGUgb3IgdXNlIHByb3ZpZGVkIGV4dGVybmFsIElEXG4gICAgICB0aGlzLmF1ZGl0Um9sZUV4dGVybmFsSWQgPSBleHRlcm5hbElkIHx8IHRoaXMuZ2VuZXJhdGVBdWRpdEV4dGVybmFsSWQoKTtcblxuICAgICAgdGhpcy5kZWZhdWx0QXVkaXRSb2xlID0gQXVkaXRSb2xlRmFjdG9yeS5idWlsZChgJHt0aGlzLm5hbWV9QXVkaXRSb2xlYCwge1xuICAgICAgICB3ZWJhcHBBY2NvdW50SWQ6IGFjY291bnRJZCxcbiAgICAgICAgYXBwTmFtZTogdGhpcy5uYW1lLFxuICAgICAgICBleHRlcm5hbElkOiB0aGlzLmF1ZGl0Um9sZUV4dGVybmFsSWQsXG4gICAgICAgIHJvbGVOYW1lUHJlZml4OiBGSkFMTF9BVURJVF9DT05GSUcucm9sZU5hbWVQcmVmaXgsXG4gICAgICAgIHJvbGVQYXRoOiBGSkFMTF9BVURJVF9DT05GSUcucm9sZVBhdGhcbiAgICAgIH0pKHRoaXMsIG5ldHdvcmtTdGFjay5nZXRTdGFjaygpKTtcblxuICAgICAgLy8gUmVnaXN0ZXIgdGhlIHJvbGUgd2l0aCB0aGUgbmV0d29yayBzdGFja1xuICAgICAgbmV0d29ya1N0YWNrLmFkZENvbnN0cnVjdCh0aGlzLmRlZmF1bHRBdWRpdFJvbGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlZmF1bHRBdWRpdFJvbGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBleHRlcm5hbCBJRCB1c2VkIGZvciB0aGUgYXVkaXQgcm9sZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgZXh0ZXJuYWwgSUQgaWYgYXVkaXQgcm9sZSBoYXMgYmVlbiBjcmVhdGVkXG4gICAqL1xuICBwdWJsaWMgZ2V0QXVkaXRSb2xlRXh0ZXJuYWxJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmF1ZGl0Um9sZUV4dGVybmFsSWQ7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYSB1bmlxdWUgZXh0ZXJuYWwgSUQgZm9yIGF1ZGl0IHJvbGVcbiAgICogRm9ybWF0OiBmamFsbC1hdWRpdC17YXBwTmFtZX0te3RpbWVzdGFtcH1cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVBdWRpdEV4dGVybmFsSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIHJldHVybiBgZmphbGwtYXVkaXQtJHt0aGlzLm5hbWUudG9Mb3dlckNhc2UoKX0tJHt0aW1lc3RhbXB9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBjb21wdXRlIHJlc291cmNlIHRvIHRoZSBkZWZhdWx0IGNvbXB1dGUgc3RhY2sgdXNpbmcgdGhlIGZhY3RvcnkgcGF0dGVybi5cbiAgICogQXV0b21hdGljYWxseSBjcmVhdGVzIG1vbml0b3Jpbmcgcm9sZSBpZiBub3QgYWxyZWFkeSBjcmVhdGVkLlxuICAgKlxuICAgKiBTdXBwb3J0cyBDb21wdXRlRmFjdG9yeSAoRUNTLCBFQzIsIExhbWJkYSkuXG4gICAqL1xuICBwdWJsaWMgYWRkQ29tcHV0ZTxUIGV4dGVuZHMgQ29uc3RydWN0PihcbiAgICBmbjogKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiBUXG4gICk6IFQge1xuICAgIC8vIEF1dG8tY3JlYXRlIG1vbml0b3Jpbmcgcm9sZSB3aGVuIGNvbXB1dGUgaXMgYWRkZWRcbiAgICBpZiAoIXRoaXMuZGVmYXVsdE1vbml0b3JpbmdSb2xlKSB7XG4gICAgICB0aGlzLmNyZWF0ZU1vbml0b3JpbmdSb2xlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZVN0YWNrID0gdGhpcy5nZXREZWZhdWx0Q29tcHV0ZVN0YWNrKCk7XG4gICAgY29uc3QgY29uc3RydWN0ID0gZm4odGhpcywgY29tcHV0ZVN0YWNrLmdldFN0YWNrKCkpO1xuICAgIGNvbXB1dGVTdGFjay5hZGRDb25zdHJ1Y3QoY29uc3RydWN0KTtcbiAgICByZXR1cm4gY29uc3RydWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IGFkZCBhIHJlc291cmNlIHRvIHRoZSBkZWZhdWx0IGNvbXB1dGUgc3RhY2suXG4gICAqL1xuICBwdWJsaWMgYWRkQ29tcHV0ZVJlc291cmNlKHJlc291cmNlOiBDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wdXRlU3RhY2sgPSB0aGlzLmdldERlZmF1bHRDb21wdXRlU3RhY2soKTtcbiAgICBjb21wdXRlU3RhY2suYWRkQ29uc3RydWN0KHJlc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBkYXRhYmFzZSByZXNvdXJjZSB0byB0aGUgZGVmYXVsdCBkYXRhYmFzZSBzdGFjayB1c2luZyB0aGUgZmFjdG9yeSBwYXR0ZXJuLlxuICAgKi9cbiAgcHVibGljIGFkZERhdGFiYXNlKGZuOiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IENvbnN0cnVjdCk6IERhdGFiYXNlIHtcbiAgICBjb25zdCBkYXRhYmFzZVN0YWNrID0gdGhpcy5nZXREZWZhdWx0RGF0YWJhc2VTdGFjaygpO1xuICAgIGNvbnN0IGRhdGFiYXNlQ29uc3RydWN0ID0gZm4odGhpcywgZGF0YWJhc2VTdGFjay5nZXRTdGFjaygpKTtcbiAgICBkYXRhYmFzZVN0YWNrLmFkZENvbnN0cnVjdChkYXRhYmFzZUNvbnN0cnVjdCk7XG5cbiAgICByZXR1cm4gZGF0YWJhc2VDb25zdHJ1Y3QgYXMgdW5rbm93biBhcyBEYXRhYmFzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzdG9yYWdlIHJlc291cmNlIChTMykgdG8gdGhlIGRlZmF1bHQgc3RvcmFnZSBzdGFjayB1c2luZyB0aGUgZmFjdG9yeSBwYXR0ZXJuLlxuICAgKi9cbiAgcHVibGljIGFkZFN0b3JhZ2UoZm46IChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4gQ29uc3RydWN0KTogQ29uc3RydWN0IHtcbiAgICBjb25zdCBzdG9yYWdlU3RhY2sgPSB0aGlzLmdldERlZmF1bHRTdG9yYWdlU3RhY2soKTtcbiAgICBjb25zdCBzdG9yYWdlQ29uc3RydWN0ID0gZm4odGhpcywgc3RvcmFnZVN0YWNrLmdldFN0YWNrKCkpO1xuICAgIHN0b3JhZ2VTdGFjay5hZGRDb25zdHJ1Y3Qoc3RvcmFnZUNvbnN0cnVjdCk7XG5cbiAgICByZXR1cm4gc3RvcmFnZUNvbnN0cnVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gYWRkaXRpb25hbCBuZXR3b3JrIChWUEMpIHRvIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogVXNlIHRoaXMgdG8gY3JlYXRlIGFkZGl0aW9uYWwgVlBDcyBiZXlvbmQgdGhlIGRlZmF1bHQgVlBDIGNvbmZpZ3VyZWQgdmlhIEFwcC5nZXRBcHAoKS5cbiAgICogQWRkaXRpb25hbCBWUENzIGNhbiBiZSByZXRyaWV2ZWQgYnkgbmFtZSB1c2luZyBhcHAuZ2V0VnBjKG5hbWUpLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gLSBGYWN0b3J5IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0aGUgTmV0d29yayBjb25zdHJ1Y3RcbiAgICogQHJldHVybnMge05ldHdvcmt9IFRoZSBjcmVhdGVkIE5ldHdvcmsgY29uc3RydWN0XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGlzb2xhdGVkVnBjID0gYXBwLmFkZE5ldHdvcmsoXG4gICAqICAgTmV0d29ya0ZhY3RvcnkuYnVpbGQoXCJJc29sYXRlZFZwY1wiLCB7IG1heEF6czogMiwgbmF0R2F0ZXdheXM6IGZhbHNlIH0pXG4gICAqICk7XG4gICAqL1xuICBwdWJsaWMgYWRkTmV0d29yayhmbjogKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiBOZXR3b3JrKTogTmV0d29yayB7XG4gICAgY29uc3QgbmV0d29ya1N0YWNrID0gdGhpcy5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCk7XG4gICAgY29uc3QgbmV0d29yayA9IGZuKHRoaXMsIG5ldHdvcmtTdGFjay5nZXRTdGFjaygpKTtcbiAgICBjb25zdCB2cGNOYW1lID0gbmV0d29yay5ub2RlLmlkO1xuXG4gICAgLy8gU3RvcmUgaW4gYWRkaXRpb25hbCBWUENzIG1hcCBmb3IgcmV0cmlldmFsIHZpYSBnZXRWcGMobmFtZSlcbiAgICB0aGlzLmFkZGl0aW9uYWxWcGNzLnNldCh2cGNOYW1lLCBuZXR3b3JrLmdldFZwYygpKTtcbiAgICBuZXR3b3JrU3RhY2suYWRkQ29uc3RydWN0KG5ldHdvcmspO1xuXG4gICAgcmV0dXJuIG5ldHdvcms7XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgYWRkIGEgcmVzb3VyY2UgdG8gdGhlIGRlZmF1bHQgZGF0YWJhc2Ugc3RhY2suXG4gICAqL1xuICBwdWJsaWMgYWRkRGF0YWJhc2VSZXNvdXJjZShyZXNvdXJjZTogQ29uc3RydWN0KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YWJhc2VTdGFjayA9IHRoaXMuZ2V0RGVmYXVsdERhdGFiYXNlU3RhY2soKTtcbiAgICBkYXRhYmFzZVN0YWNrLmFkZENvbnN0cnVjdChyZXNvdXJjZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgYWRkIGEgcmVzb3VyY2UgdG8gdGhlIGRlZmF1bHQgc3RvcmFnZSBzdGFjay5cbiAgICovXG4gIHB1YmxpYyBhZGRTdG9yYWdlUmVzb3VyY2UocmVzb3VyY2U6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2VTdGFjayA9IHRoaXMuZ2V0RGVmYXVsdFN0b3JhZ2VTdGFjaygpO1xuICAgIHN0b3JhZ2VTdGFjay5hZGRDb25zdHJ1Y3QocmVzb3VyY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgc3RhbmRhcmQgdGFnc1xuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXNlU3RhbmRhcmRUYWdzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuICAgIHRoaXMuZ2xvYmFsVGFncyA9IHtcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIjogY29uZmlnLmVudmlyb25tZW50LFxuICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpzZXJ2aWNlXCI6IHRoaXMubmFtZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgYWxsIHRhZ3MgdXNpbmcgQ0RLJ3MgbmF0aXZlIFRhZ3Mub2YoKS5hZGQoKSBBUElcbiAgICovXG4gIHByaXZhdGUgYXBwbHlUYWdzQXNwZWN0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hc3BlY3RBcHBsaWVkICYmIE9iamVjdC5rZXlzKHRoaXMuZ2xvYmFsVGFncykubGVuZ3RoID4gMCkge1xuICAgICAgLy8gQXBwbHkgc3RhbmRhcmQgdGFncyB1c2luZyBUYWdzLm9mKHRoaXMpLmFkZCgpXG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLmdsb2JhbFRhZ3MpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBUYWdzLm9mKHRoaXMpLmFkZChrZXksIHZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBcHBseSBhc3BlY3QgZm9yIHJlc291cmNlLXNwZWNpZmljIHRhZ3MgKElQQU0gcG9vbCwgYmFja3VwIHRpZXIpXG4gICAgICBBc3BlY3RzLm9mKHRoaXMpLmFkZChuZXcgU3RhbmRhcmRUYWdzQXNwZWN0KCkpO1xuXG4gICAgICB0aGlzLmFzcGVjdEFwcGxpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgY3VzdG9tIHRhZ3MgdG8gYWxsIHJlc291cmNlcyBpbiB0aGUgYXBwLlxuICAgKlxuICAgKiBAcGFyYW0gdGFncyBDdXN0b20gdGFncyB0byBhcHBseSB0byBhbGwgcmVzb3VyY2VzXG4gICAqIEBleGFtcGxlXG4gICAqIGFwcC5hZGRUYWdzKHtcbiAgICogICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOm93bmVyXCI6IFwicGxhdGZvcm0tdGVhbVwiLFxuICAgKiAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246Y29zdC1jZW50ZXJcIjogXCJDQy0xMjNcIixcbiAgICogICBcInRlYW06c2xhY2stY2hhbm5lbFwiOiBcIiNwbGF0Zm9ybS1hbGVydHNcIlxuICAgKiB9KTtcbiAgICovXG4gIHB1YmxpYyBhZGRUYWdzKHRhZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pOiBBcHAge1xuICAgIC8vIE1lcmdlIHRhZ3MgaW50byBnbG9iYWxUYWdzIGZvciB0cmFja2luZ1xuICAgIHRoaXMuZ2xvYmFsVGFncyA9IHtcbiAgICAgIC4uLnRoaXMuZ2xvYmFsVGFncyxcbiAgICAgIC4uLnRhZ3NcbiAgICB9O1xuICAgIE9iamVjdC5lbnRyaWVzKHRhZ3MpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoa2V5LCB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvcnQgcmVzb3VyY2UgaW52ZW50b3J5IGNvbGxlY3RlZCBkdXJpbmcgc3ludGhlc2lzXG4gICAqIENhbGwgdGhpcyBhZnRlciBhcHAuc3ludGgoKSB0byBnZXQgY29tcGxldGUgcmVzb3VyY2UgaW52ZW50b3J5XG4gICAqIEByZXR1cm5zIHtSZXNvdXJjZUludmVudG9yeX0gQ29tcGxldGUgaW52ZW50b3J5IG9mIGFsbCByZXNvdXJjZXMgaW4gdGhlIGFwcFxuICAgKi9cbiAgcHVibGljIGV4cG9ydFJlc291cmNlSW52ZW50b3J5KCk6IFJlc291cmNlSW52ZW50b3J5IHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb3VyY2VzOiB0aGlzLnJlc291cmNlSW52ZW50b3J5LmdldEludmVudG9yeSgpLFxuICAgICAgZ2VuZXJhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBhcHBfbmFtZTogdGhpcy5uYW1lXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBzeW50aCB0byBhdXRvbWF0aWNhbGx5IGV4cG9ydCByZXNvdXJjZSBpbnZlbnRvcnlcbiAgICovXG4gIHB1YmxpYyBzeW50aChvcHRpb25zPzogU3RhZ2VTeW50aGVzaXNPcHRpb25zKTogQ2xvdWRBc3NlbWJseSB7XG4gICAgLy8gQ2FsbCBwYXJlbnQgc3ludGggZmlyc3RcbiAgICBjb25zdCBhc3NlbWJseSA9IHN1cGVyLnN5bnRoKG9wdGlvbnMpO1xuXG4gICAgLy8gQWZ0ZXIgc3ludGhlc2lzLCB3cml0ZSByZXNvdXJjZSBpbnZlbnRvcnkgdG8gY2RrLm91dFxuICAgIHRyeSB7XG4gICAgICAvLyBjb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgIC8vIGNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbiAgICAgIC8vIGNvbnN0IGludmVudG9yeSA9IHRoaXMuZXhwb3J0UmVzb3VyY2VJbnZlbnRvcnkoKTtcbiAgICAgIC8vIGNvbnN0IGludmVudG9yeVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAvLyAgIGFzc2VtYmx5LmRpcmVjdG9yeSxcbiAgICAgIC8vICAgXCJyZXNvdXJjZS1pbnZlbnRvcnkuanNvblwiXG4gICAgICAvLyApO1xuICAgICAgLy8gZnMud3JpdGVGaWxlU3luYyhpbnZlbnRvcnlQYXRoLCBKU09OLnN0cmluZ2lmeShpbnZlbnRvcnksIG51bGwsIDIpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gRG9uJ3QgZmFpbCBzeW50aCBpZiBpbnZlbnRvcnkgZXhwb3J0IGZhaWxzXG4gICAgICBjb25zb2xlLndhcm4oXCJGYWlsZWQgdG8gZXhwb3J0IHJlc291cmNlIGludmVudG9yeTpcIiwgZXJyb3IpO1xuICAgIH1cblxuICAgIHJldHVybiBhc3NlbWJseTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBcHA7XG4iXX0=
442
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FLcUI7QUFHckIsd0RBQXFEO0FBR3JELDJDQUF1QztBQUN2QyxxREFBbUU7QUFFbkUsb0RBSWdDO0FBQ2hDLG1FQUFnRTtBQUtoRSxpREFBOEM7QUFDOUMsOEVBQThFO0FBQzlFLG9EQUE4RDtBQUM5RCwrREFBK0Q7QUFDL0QsMENBQW9EO0FBK0JwRDs7OztHQUlHO0FBQ0gsTUFBYSxHQUFJLFNBQVEsaUJBQU07SUFpQjdCLFlBQW9CLElBQWEsRUFBRSxPQUFxQjtRQUN0RCxLQUFLLEVBQUUsQ0FBQztRQWRGLFdBQU0sR0FBZ0MsRUFBRSxDQUFDO1FBR3pDLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUM7UUFLekMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsZUFBVSxHQUE4QixFQUFFLENBQUM7UUFDM0Msa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFNNUIsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFcEIsSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7O1lBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1FBRTVCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBRTlCLCtDQUErQztRQUMvQyxJQUFJLE9BQU8sRUFBRSxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQzthQUFNLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGlCQUFpQixDQUN2QixNQUErQztRQUUvQyxNQUFNLFlB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LFdBQVcsRUFBRTtZQUN0QyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUErQjtRQUMxQywwQkFBMEI7UUFDMUIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0Qyx1REFBdUQ7UUFDdkQsSUFBSSxDQUFDO1lBQ0gsNEJBQTRCO1lBQzVCLGdDQUFnQztZQUNoQyxvREFBb0Q7WUFDcEQsbUNBQW1DO1lBQ25DLHdCQUF3QjtZQUN4Qiw4QkFBOEI7WUFDOUIsS0FBSztZQUNMLHVFQUF1RTtRQUN6RSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLDZDQUE2QztZQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOztBQTNmSCxrQkE0ZkM7QUEzZmdCLFlBQVEsR0FBZSxJQUFJLEFBQW5CLENBQW9CO0FBNmY3QyxrQkFBZSxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHAgYXMgQ2RrQXBwLFxuICBBc3BlY3RzLFxuICBUYWdzLFxuICB0eXBlIFN0YWdlU3ludGhlc2lzT3B0aW9uc1xufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHR5cGUgQ2xvdWRBc3NlbWJseSB9IGZyb20gXCJhd3MtY2RrLWxpYi9jeC1hcGlcIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFZwYyB9IGZyb20gXCIuL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy92cGNcIjtcbmltcG9ydCB7IHR5cGUgSVZwYyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyB0eXBlIFJvbGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi9yZXNvdXJjZXNcIjtcbmltcG9ydCB7IHR5cGUgRWNyLCBFY3JGYWN0b3J5IH0gZnJvbSBcIi4vcmVzb3VyY2VzL2F3cy9zdG9yYWdlL2VjclwiO1xuaW1wb3J0IHsgdHlwZSBEYXRhYmFzZSB9IGZyb20gXCIuL3BhdHRlcm5zL2F3cy9kYXRhYmFzZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBJTmV0d29ya1Byb3BzLFxuICBOZXR3b3JrRmFjdG9yeSxcbiAgdHlwZSBOZXR3b3JrXG59IGZyb20gXCIuL3BhdHRlcm5zL2F3cy9uZXR3b3JrXCI7XG5pbXBvcnQgeyBTdGFuZGFyZFRhZ3NBc3BlY3QgfSBmcm9tIFwiLi91dGlscy9zdGFuZGFyZFRhZ3NBc3BlY3RcIjtcbmltcG9ydCB7XG4gIHR5cGUgUmVzb3VyY2VJbnZlbnRvcnlBc3BlY3QsXG4gIHR5cGUgUmVzb3VyY2VJbnZlbnRvcnlcbn0gZnJvbSBcIi4vYXNwZWN0cy9yZXNvdXJjZUludmVudG9yeVwiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnIH0gZnJvbSBcIi4vdXRpbHMvZ2V0Q29uZmlnXCI7XG5pbXBvcnQgTW9uaXRvcmluZ1JvbGVGYWN0b3J5IGZyb20gXCIuL3Jlc291cmNlcy9hd3MvbW9uaXRvcmluZy9tb25pdG9yaW5nUm9sZVwiO1xuaW1wb3J0IHsgRkpBTExfTU9OSVRPUklOR19DT05GSUcgfSBmcm9tIFwiLi9jb25maWcvbW9uaXRvcmluZ1wiO1xuaW1wb3J0IEF1ZGl0Um9sZUZhY3RvcnkgZnJvbSBcIi4vcmVzb3VyY2VzL2F3cy9hdWRpdC9hdWRpdFJvbGVcIjtcbmltcG9ydCB7IEZKQUxMX0FVRElUX0NPTkZJRyB9IGZyb20gXCIuL2NvbmZpZy9hdWRpdFwiO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgQXBwLmdldEFwcCgpLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDcmVhdGUgYXBwIHdpdGggbmV3IFZQQ1xuICogY29uc3QgYXBwID0gQXBwLmdldEFwcChhcHBOYW1lLCB7XG4gKiAgIG5ldHdvcms6IHsgbWF4QXpzOiAyLCBuYXRHYXRld2F5czogZmFsc2UgfVxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENyZWF0ZSBhcHAgdXNpbmcgZXhpc3RpbmcgVlBDXG4gKiBjb25zdCBhcHAgPSBBcHAuZ2V0QXBwKGFwcE5hbWUsIHtcbiAqICAgbmV0d29yazogeyB1c2VFeGlzdGluZzogXCJ2cGMtMTIzNDU2NzhcIiB9XG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3JlYXRlIGFwcCB3aXRob3V0IG5ldHdvcmsgKFMzLW9ubHkgYXBwcylcbiAqIGNvbnN0IGFwcCA9IEFwcC5nZXRBcHAoYXBwTmFtZSwgeyBuZXR3b3JrOiBmYWxzZSB9KTtcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQXBwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gICAqIC0gT2JqZWN0IHdpdGggSU5ldHdvcmtQcm9wczogQ3JlYXRlIG5ldyBWUEMgd2l0aCBjb25maWdcbiAgICogLSBmYWxzZTogTm8gbmV0d29yayAoZm9yIFMzLW9ubHkgYXBwcylcbiAgICogLSB7IHVzZUV4aXN0aW5nOiBzdHJpbmcgfTogVXNlIGV4aXN0aW5nIFZQQyBieSBJRFxuICAgKi9cbiAgbmV0d29yaz86IElOZXR3b3JrUHJvcHMgfCBmYWxzZSB8IHsgdXNlRXhpc3Rpbmc6IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFRoZSBiYXNpYyBjb3JuZXItc3RvbmUgb2YgYWxsIEZqYWxsLWhvc3RlZCBhcHBsaWNhdGlvbnMuXG4gKiAgVGhpcyBjbGFzcyBpcyBhIHNpbmdsZXRvbiBhbmQgc2hvdWxkIGJlIHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2VcbiAqICAgYWxsIHJlc291cmNlcyBpbiBhIEZqYWxsIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQXBwIGV4dGVuZHMgQ2RrQXBwIHtcbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2U6IEFwcCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHN0YWNrczogeyBba2V5OiBzdHJpbmddOiBBd3NTdGFjayB9ID0ge307XG5cbiAgcHJpdmF0ZSB2cGM/OiBJVnBjO1xuICBwcml2YXRlIGFkZGl0aW9uYWxWcGNzID0gbmV3IE1hcDxzdHJpbmcsIElWcGM+KCk7XG4gIHByaXZhdGUgZGVmYXVsdEVjcjogRWNyO1xuICBwcml2YXRlIGRlZmF1bHRNb25pdG9yaW5nUm9sZTogUm9sZTtcbiAgcHJpdmF0ZSBkZWZhdWx0QXVkaXRSb2xlOiBSb2xlO1xuICBwcml2YXRlIGF1ZGl0Um9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgbmV0d29ya0Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgZ2xvYmFsVGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICBwcml2YXRlIGFzcGVjdEFwcGxpZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZXNvdXJjZUludmVudG9yeTogUmVzb3VyY2VJbnZlbnRvcnlBc3BlY3Q7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihuYW1lPzogc3RyaW5nLCBvcHRpb25zPzogSUFwcE9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgQXBwLmluc3RhbmNlID0gdGhpcztcblxuICAgIGlmIChuYW1lKSB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIGVsc2UgdGhpcy5uYW1lID0gXCJGamFsbEFwcFwiO1xuXG4gICAgdGhpcy5pbml0aWFsaXNlU3RhbmRhcmRUYWdzKCk7XG5cbiAgICAvLyBJbml0aWFsaXNlIG5ldHdvcmsgaW1tZWRpYXRlbHkgaWYgY29uZmlndXJlZFxuICAgIGlmIChvcHRpb25zPy5uZXR3b3JrID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5uZXR3b3JrRGlzYWJsZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucz8ubmV0d29yaykge1xuICAgICAgdGhpcy5pbml0aWFsaXNlTmV0d29yayhvcHRpb25zLm5ldHdvcmspO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXNlIHRoZSBuZXR3b3JrIChWUEMpIGZvciB0aGlzIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXNlTmV0d29yayhcbiAgICBjb25maWc6IElOZXR3b3JrUHJvcHMgfCB7IHVzZUV4aXN0aW5nOiBzdHJpbmcgfVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBuZXR3b3JrU3RhY2sgPSB0aGlzLmdldERlZmF1bHROZXR3b3JrU3RhY2soKTtcblxuICAgIGlmIChcInVzZUV4aXN0aW5nXCIgaW4gY29uZmlnKSB7XG4gICAgICB0aGlzLnZwYyA9IFZwYy5mcm9tTG9va3VwKFxuICAgICAgICBuZXR3b3JrU3RhY2suZ2V0U3RhY2soKSxcbiAgICAgICAgYCR7dGhpcy5uYW1lfUltcG9ydGVkVnBjYCxcbiAgICAgICAge1xuICAgICAgICAgIHZwY0lkOiBjb25maWcudXNlRXhpc3RpbmdcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV0d29yayA9IE5ldHdvcmtGYWN0b3J5LmJ1aWxkKGAke3RoaXMubmFtZX1WcGNgLCBjb25maWcpKFxuICAgICAgICB0aGlzLFxuICAgICAgICBuZXR3b3JrU3RhY2suZ2V0U3RhY2soKVxuICAgICAgKTtcbiAgICAgIHRoaXMudnBjID0gbmV0d29yay5nZXRWcGMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgYXBwbGljYXRpb24gbmFtZVxuICAgKi9cbiAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldC9DcmVhdGUgYSBiYXNpYyBGamFsbCBBcHBsaWNhdGlvbiB3aXRoIHN0YW5kYXJkIHRhZ3MgYXBwbGllZC5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgQXBwbGljYXRpb24gbmFtZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgaW5jbHVkaW5nIG5ldHdvcmsgc2V0dGluZ3NcbiAgICogQHJldHVybnMge0FwcH1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gQ3JlYXRlIGFwcCB3aXRoIG5ldyBWUENcbiAgICogY29uc3QgYXBwID0gQXBwLmdldEFwcChhcHBOYW1lLCB7XG4gICAqICAgbmV0d29yazogeyBtYXhBenM6IDIsIG5hdEdhdGV3YXlzOiBmYWxzZSB9XG4gICAqIH0pO1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBDcmVhdGUgYXBwIHVzaW5nIGV4aXN0aW5nIFZQQ1xuICAgKiBjb25zdCBhcHAgPSBBcHAuZ2V0QXBwKGFwcE5hbWUsIHtcbiAgICogICBuZXR3b3JrOiB7IHVzZUV4aXN0aW5nOiBcInZwYy0xMjM0NTY3OFwiIH1cbiAgICogfSk7XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIENyZWF0ZSBhcHAgd2l0aG91dCBuZXR3b3JrIChTMy1vbmx5IGFwcHMpXG4gICAqIGNvbnN0IGFwcCA9IEFwcC5nZXRBcHAoYXBwTmFtZSwgeyBuZXR3b3JrOiBmYWxzZSB9KTtcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0QXBwKG5hbWU/OiBzdHJpbmcsIG9wdGlvbnM/OiBJQXBwT3B0aW9ucyk6IEFwcCB7XG4gICAgY29uc3QgYXBwID0gQXBwLmdldEluc3RhbmNlKG5hbWUsIG9wdGlvbnMpO1xuICAgIGFwcC5pbml0aWFsaXNlU3RhbmRhcmRUYWdzKCk7XG4gICAgcmV0dXJuIGFwcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQvQ3JlYXRlIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIEFwcFxuICAgKiBAcGFyYW0gbmFtZSBBcHBsaWNhdGlvbiBuYW1lXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbmNsdWRpbmcgbmV0d29yayBzZXR0aW5nc1xuICAgKiBAcmV0dXJucyB7QXBwfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZShuYW1lPzogc3RyaW5nLCBvcHRpb25zPzogSUFwcE9wdGlvbnMpOiBBcHAge1xuICAgIC8vIERlc3BpdGUgc3VwcG9ydGluZyBtdWx0aXBsZSBzdGFja3MgeW91IGNhbiBzdGlsbCBvbmx5IGV2ZXJcbiAgICAvLyBoYXZlIGEgc2luZ2xlIEFwcGxpY2F0aW9uIHBlciBDREsgZGVwbG95bWVudFxuICAgIGlmICghQXBwLmluc3RhbmNlKSB7XG4gICAgICBBcHAuaW5zdGFuY2UgPSBuZXcgQXBwKG5hbWUsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBBcHAuaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYSBzdGFjayBieSBrZXkuIElmIHRoZSBzdGFjayBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkLlxuICAgKiAgRGVwZW5kZW5jaWVzIGFyZSBvbmx5IGFwcGxpZWQgdGhlIGZpcnN0IHRpbWUgYSBzdGFjayBpcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBvZiB0aGUgc3RhY2tcbiAgICogQHBhcmFtIGRlcGVuZGVuY2llcyAtIFRoZSBzdGFjayhzKSB0aGF0IHRoaXMgc3RhY2sgZGVwZW5kcyBvblxuICAgKiBAcmV0dXJucyB7QXdzU3RhY2t9XG4gICAqL1xuICBwdWJsaWMgZ2V0U3RhY2soa2V5OiBzdHJpbmcsIGRlcGVuZGVuY2llcz86IEF3c1N0YWNrIHwgQXdzU3RhY2tbXSk6IEF3c1N0YWNrIHtcbiAgICAvLyBBcHBseSB0aGUgYXNwZWN0IG9uY2UgYmVmb3JlIGNyZWF0aW5nIHRoZSBmaXJzdCBzdGFja1xuICAgIGlmIChcbiAgICAgICF0aGlzLmFzcGVjdEFwcGxpZWQgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuc3RhY2tzKS5sZW5ndGggPT09IDAgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZ2xvYmFsVGFncykubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5hcHBseVRhZ3NBc3BlY3QoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc3RhY2tzW2tleV0pIHtcbiAgICAgIHRoaXMuc3RhY2tzW2tleV0gPSBuZXcgQXdzU3RhY2soa2V5LCBkZXBlbmRlbmNpZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YWNrc1trZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGRlZmF1bHQgY29tcHV0ZSBzdGFjayAtIG5hbWVkIGFzIGAke3RoaXMubmFtZX1Db21wdXRlYFxuICAgKlxuICAgKiBPbmx5IGRlcGVuZHMgb24gTmV0d29yay4gRGF0YWJhc2UgZGVwZW5kZW5jeSBpcyBhZGRlZCBhdXRvbWF0aWNhbGx5XG4gICAqIGJ5IENESyB3aGVuIGNvbXB1dGUgcmVzb3VyY2VzIHJlZmVyZW5jZSBkYXRhYmFzZSByZXNvdXJjZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtBd3NTdGFja31cbiAgICovXG4gIHB1YmxpYyBnZXREZWZhdWx0Q29tcHV0ZVN0YWNrKCk6IEF3c1N0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdGFjayhgJHt0aGlzLm5hbWV9Q29tcHV0ZWAsIHRoaXMuZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBkZWZhdWx0IG5ldHdvcmsgc3RhY2sgLSBuYW1lZCBhcyBgJHt0aGlzLm5hbWV9TmV0d29ya2BcbiAgICogQHJldHVybnMge0F3c1N0YWNrfVxuICAgKi9cbiAgcHVibGljIGdldERlZmF1bHROZXR3b3JrU3RhY2soKTogQXdzU3RhY2sge1xuICAgIHJldHVybiB0aGlzLmdldFN0YWNrKGAke3RoaXMubmFtZX1OZXR3b3JrYCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgZGVmYXVsdCBkYXRhYmFzZSBzdGFjayAtIG5hbWVkIGFzIGAke3RoaXMubmFtZX1EYXRhYmFzZWBcbiAgICogQHJldHVybnMge0F3c1N0YWNrfVxuICAgKi9cbiAgcHVibGljIGdldERlZmF1bHREYXRhYmFzZVN0YWNrKCk6IEF3c1N0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdGFjayhgJHt0aGlzLm5hbWV9RGF0YWJhc2VgLCB0aGlzLmdldERlZmF1bHROZXR3b3JrU3RhY2soKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgZGVmYXVsdCBzdG9yYWdlIHN0YWNrIC0gbmFtZWQgYXMgYCR7dGhpcy5uYW1lfVN0b3JhZ2VgXG4gICAqIEByZXR1cm5zIHtBd3NTdGFja31cbiAgICovXG4gIHB1YmxpYyBnZXREZWZhdWx0U3RvcmFnZVN0YWNrKCk6IEF3c1N0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdGFjayhgJHt0aGlzLm5hbWV9U3RvcmFnZWAsIHRoaXMuZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBWUEMgYnkgbmFtZS4gSWYgbm8gbmFtZSBpcyBwcm92aWRlZCwgcmV0dXJucyB0aGUgZGVmYXVsdCBWUEMuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwdXJlIGdldHRlciAtIGl0IG5ldmVyIGNyZWF0ZXMgaW5mcmFzdHJ1Y3R1cmUuXG4gICAqIE5ldHdvcmsgbXVzdCBiZSBjb25maWd1cmVkIHZpYSBBcHAuZ2V0QXBwKCkgb3B0aW9ucyBvciBhcHAuYWRkTmV0d29yaygpLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIE9wdGlvbmFsIG5hbWUgb2YgdGhlIFZQQyB0byByZXRyaWV2ZS4gSWYgbm90IHByb3ZpZGVkLCByZXR1cm5zIHRoZSBkZWZhdWx0IFZQQy5cbiAgICogQHJldHVybnMge0lWcGN9IFRoZSBjb25maWd1cmVkIFZQQ1xuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgbmV0d29yayBpcyBkaXNhYmxlZCwgbm90IGNvbmZpZ3VyZWQsIG9yIG5hbWVkIFZQQyBub3QgZm91bmRcbiAgICovXG4gIHB1YmxpYyBnZXRWcGMobmFtZT86IHN0cmluZyk6IElWcGMge1xuICAgIGlmICh0aGlzLm5ldHdvcmtEaXNhYmxlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk5ldHdvcmsgaXMgZGlzYWJsZWQgZm9yIHRoaXMgYXBwLiBDYW5ub3QgZ2V0IFZQQy4gXCIgK1xuICAgICAgICAgIFwiUGFzcyBuZXR3b3JrIGNvbmZpZyB0byBBcHAuZ2V0QXBwKCkgdG8gZW5hYmxlIG5ldHdvcmtpbmcuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSWYgbmFtZSBpcyBwcm92aWRlZCwgbG9vayBpbiBhZGRpdGlvbmFsIFZQQ3MgZmlyc3RcbiAgICBpZiAobmFtZSkge1xuICAgICAgY29uc3QgYWRkaXRpb25hbFZwYyA9IHRoaXMuYWRkaXRpb25hbFZwY3MuZ2V0KG5hbWUpO1xuICAgICAgaWYgKGFkZGl0aW9uYWxWcGMpIHtcbiAgICAgICAgcmV0dXJuIGFkZGl0aW9uYWxWcGM7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBWUEMgJyR7bmFtZX0nIG5vdCBmb3VuZC4gQXZhaWxhYmxlIFZQQ3M6ICR7dGhpcy5nZXRWcGNOYW1lcygpLmpvaW4oXCIsIFwiKX0uIGAgK1xuICAgICAgICAgIFwiQ3JlYXRlIGFkZGl0aW9uYWwgVlBDcyB1c2luZyBhcHAuYWRkTmV0d29yayhOZXR3b3JrRmFjdG9yeS5idWlsZCguLi4pKS5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gZGVmYXVsdCBWUENcbiAgICBpZiAoIXRoaXMudnBjKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiTmV0d29yayBub3QgY29uZmlndXJlZC4gUGFzcyBuZXR3b3JrIGNvbmZpZyB0byBBcHAuZ2V0QXBwKCkuIFwiICtcbiAgICAgICAgICBcIkV4YW1wbGU6IEFwcC5nZXRBcHAoYXBwTmFtZSwgeyBuZXR3b3JrOiB7IG1heEF6czogMiB9IH0pXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZwYztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5hbWVzIG9mIGFsbCBhdmFpbGFibGUgVlBDcy5cbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ1tdfSBBcnJheSBvZiBWUEMgbmFtZXMuIEluY2x1ZGVzIFwiZGVmYXVsdFwiIGlmIHRoZSBkZWZhdWx0IFZQQyBpcyBjb25maWd1cmVkLlxuICAgKi9cbiAgcHVibGljIGdldFZwY05hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBuYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy52cGMpIHtcbiAgICAgIG5hbWVzLnB1c2goXCJkZWZhdWx0XCIpO1xuICAgIH1cbiAgICBuYW1lcy5wdXNoKC4uLnRoaXMuYWRkaXRpb25hbFZwY3Mua2V5cygpKTtcbiAgICByZXR1cm4gbmFtZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmVpdmUgdGhlIGRlZmF1bHQgYXBwbGljYXRpb24gY29udGFpbmVyIHJlZ2lzdHJ5LiBJZiB0aGUgcmVnaXN0cnkgZG9lcyBub3QgZXhpc3RcbiAgICogIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXREZWZhdWx0Q29udGFpbmVyUmVnaXN0cnkoKTogRWNyIHtcbiAgICBpZiAoIXRoaXMuZGVmYXVsdEVjcikge1xuICAgICAgY29uc3QgbmV0d29ya1N0YWNrID0gdGhpcy5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCk7XG5cbiAgICAgIHRoaXMuZGVmYXVsdEVjciA9IEVjckZhY3RvcnkuYnVpbGQoYCR7dGhpcy5uYW1lfUVjcmApKFxuICAgICAgICB0aGlzLFxuICAgICAgICBuZXR3b3JrU3RhY2suZ2V0U3RhY2soKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWNyO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGNyb3NzLWFjY291bnQgbW9uaXRvcmluZyByb2xlIGluIHRoZSBOZXR3b3JrIHN0YWNrIHRoYXQgYWxsb3dzXG4gICAqIHRoZSBGamFsbCB3ZWJhcHAgdG8gcXVlcnkgQ2xvdWRXYXRjaCBtZXRyaWNzIGFuZCBFQ1Mgc3RhdHVzLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViYXBwQWNjb3VudElkIC0gT3B0aW9uYWwgQVdTIGFjY291bnQgSUQgb2YgdGhlIEZqYWxsIHdlYmFwcC4gRGVmYXVsdHMgdG8gY29uZmlndXJlZCBwbGF0Zm9ybSBhY2NvdW50LlxuICAgKiBAcmV0dXJucyB7Um9sZX0gVGhlIGNyZWF0ZWQgbW9uaXRvcmluZyByb2xlXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlTW9uaXRvcmluZ1JvbGUod2ViYXBwQWNjb3VudElkPzogc3RyaW5nKTogUm9sZSB7XG4gICAgaWYgKCF0aGlzLmRlZmF1bHRNb25pdG9yaW5nUm9sZSkge1xuICAgICAgY29uc3QgbmV0d29ya1N0YWNrID0gdGhpcy5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCk7XG4gICAgICBjb25zdCBhY2NvdW50SWQgPVxuICAgICAgICB3ZWJhcHBBY2NvdW50SWQgfHwgRkpBTExfTU9OSVRPUklOR19DT05GSUcud2ViYXBwQXdzQWNjb3VudElkO1xuXG4gICAgICB0aGlzLmRlZmF1bHRNb25pdG9yaW5nUm9sZSA9IE1vbml0b3JpbmdSb2xlRmFjdG9yeS5idWlsZChcbiAgICAgICAgYCR7dGhpcy5uYW1lfU1vbml0b3JpbmdSb2xlYCxcbiAgICAgICAge1xuICAgICAgICAgIHdlYmFwcEFjY291bnRJZDogYWNjb3VudElkLFxuICAgICAgICAgIGFwcE5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICByb2xlTmFtZVByZWZpeDogRkpBTExfTU9OSVRPUklOR19DT05GSUcucm9sZU5hbWVQcmVmaXgsXG4gICAgICAgICAgcm9sZVBhdGg6IEZKQUxMX01PTklUT1JJTkdfQ09ORklHLnJvbGVQYXRoXG4gICAgICAgIH1cbiAgICAgICkodGhpcywgbmV0d29ya1N0YWNrLmdldFN0YWNrKCkpO1xuXG4gICAgICAvLyBSZWdpc3RlciB0aGUgcm9sZSB3aXRoIHRoZSBuZXR3b3JrIHN0YWNrXG4gICAgICBuZXR3b3JrU3RhY2suYWRkQ29uc3RydWN0KHRoaXMuZGVmYXVsdE1vbml0b3JpbmdSb2xlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0TW9uaXRvcmluZ1JvbGU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY3Jvc3MtYWNjb3VudCBhdWRpdCByb2xlIGluIHRoZSBOZXR3b3JrIHN0YWNrIHRoYXQgYWxsb3dzXG4gICAqIHRoZSBGamFsbCBwbGF0Zm9ybSB0byB1c2UgQ2xvdWRRdWVyeSBmb3IgY29tcHJlaGVuc2l2ZSBBV1MgcmVzb3VyY2UgYXVkaXRpbmcuXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gZXhwbGljaXQgb3B0LWluIGZlYXR1cmUuIENhbGwgdGhpcyBtZXRob2QgdG8gZW5hYmxlIENsb3VkUXVlcnlcbiAgICogYXVkaXQgY2FwYWJpbGl0aWVzIGZvciB5b3VyIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViYXBwQWNjb3VudElkIC0gT3B0aW9uYWwgQVdTIGFjY291bnQgSUQgb2YgdGhlIEZqYWxsIHdlYmFwcC4gRGVmYXVsdHMgdG8gY29uZmlndXJlZCBwbGF0Zm9ybSBhY2NvdW50LlxuICAgKiBAcGFyYW0gZXh0ZXJuYWxJZCAtIE9wdGlvbmFsIGV4dGVybmFsIElEIGZvciBhZGRpdGlvbmFsIHNlY3VyaXR5LiBJZiBub3QgcHJvdmlkZWQsIGEgdW5pcXVlIElEIHdpbGwgYmUgZ2VuZXJhdGVkLlxuICAgKiBAcmV0dXJucyB7Um9sZX0gVGhlIGNyZWF0ZWQgYXVkaXQgcm9sZVxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUF1ZGl0Um9sZSh3ZWJhcHBBY2NvdW50SWQ/OiBzdHJpbmcsIGV4dGVybmFsSWQ/OiBzdHJpbmcpOiBSb2xlIHtcbiAgICBpZiAoIXRoaXMuZGVmYXVsdEF1ZGl0Um9sZSkge1xuICAgICAgY29uc3QgbmV0d29ya1N0YWNrID0gdGhpcy5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCk7XG4gICAgICBjb25zdCBhY2NvdW50SWQgPVxuICAgICAgICB3ZWJhcHBBY2NvdW50SWQgfHwgRkpBTExfQVVESVRfQ09ORklHLndlYmFwcEF3c0FjY291bnRJZDtcblxuICAgICAgLy8gR2VuZXJhdGUgb3IgdXNlIHByb3ZpZGVkIGV4dGVybmFsIElEXG4gICAgICB0aGlzLmF1ZGl0Um9sZUV4dGVybmFsSWQgPSBleHRlcm5hbElkIHx8IHRoaXMuZ2VuZXJhdGVBdWRpdEV4dGVybmFsSWQoKTtcblxuICAgICAgdGhpcy5kZWZhdWx0QXVkaXRSb2xlID0gQXVkaXRSb2xlRmFjdG9yeS5idWlsZChgJHt0aGlzLm5hbWV9QXVkaXRSb2xlYCwge1xuICAgICAgICB3ZWJhcHBBY2NvdW50SWQ6IGFjY291bnRJZCxcbiAgICAgICAgYXBwTmFtZTogdGhpcy5uYW1lLFxuICAgICAgICBleHRlcm5hbElkOiB0aGlzLmF1ZGl0Um9sZUV4dGVybmFsSWQsXG4gICAgICAgIHJvbGVOYW1lUHJlZml4OiBGSkFMTF9BVURJVF9DT05GSUcucm9sZU5hbWVQcmVmaXgsXG4gICAgICAgIHJvbGVQYXRoOiBGSkFMTF9BVURJVF9DT05GSUcucm9sZVBhdGhcbiAgICAgIH0pKHRoaXMsIG5ldHdvcmtTdGFjay5nZXRTdGFjaygpKTtcblxuICAgICAgLy8gUmVnaXN0ZXIgdGhlIHJvbGUgd2l0aCB0aGUgbmV0d29yayBzdGFja1xuICAgICAgbmV0d29ya1N0YWNrLmFkZENvbnN0cnVjdCh0aGlzLmRlZmF1bHRBdWRpdFJvbGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlZmF1bHRBdWRpdFJvbGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBleHRlcm5hbCBJRCB1c2VkIGZvciB0aGUgYXVkaXQgcm9sZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgZXh0ZXJuYWwgSUQgaWYgYXVkaXQgcm9sZSBoYXMgYmVlbiBjcmVhdGVkXG4gICAqL1xuICBwdWJsaWMgZ2V0QXVkaXRSb2xlRXh0ZXJuYWxJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmF1ZGl0Um9sZUV4dGVybmFsSWQ7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYSB1bmlxdWUgZXh0ZXJuYWwgSUQgZm9yIGF1ZGl0IHJvbGVcbiAgICogRm9ybWF0OiBmamFsbC1hdWRpdC17YXBwTmFtZX0te3RpbWVzdGFtcH1cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVBdWRpdEV4dGVybmFsSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIHJldHVybiBgZmphbGwtYXVkaXQtJHt0aGlzLm5hbWUudG9Mb3dlckNhc2UoKX0tJHt0aW1lc3RhbXB9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBjb21wdXRlIHJlc291cmNlIHRvIHRoZSBkZWZhdWx0IGNvbXB1dGUgc3RhY2sgdXNpbmcgdGhlIGZhY3RvcnkgcGF0dGVybi5cbiAgICogQXV0b21hdGljYWxseSBjcmVhdGVzIG1vbml0b3Jpbmcgcm9sZSBpZiBub3QgYWxyZWFkeSBjcmVhdGVkLlxuICAgKlxuICAgKiBTdXBwb3J0cyBDb21wdXRlRmFjdG9yeSAoRUNTLCBFQzIsIExhbWJkYSkuXG4gICAqL1xuICBwdWJsaWMgYWRkQ29tcHV0ZTxUIGV4dGVuZHMgQ29uc3RydWN0PihcbiAgICBmbjogKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiBUXG4gICk6IFQge1xuICAgIC8vIEF1dG8tY3JlYXRlIG1vbml0b3Jpbmcgcm9sZSB3aGVuIGNvbXB1dGUgaXMgYWRkZWRcbiAgICBpZiAoIXRoaXMuZGVmYXVsdE1vbml0b3JpbmdSb2xlKSB7XG4gICAgICB0aGlzLmNyZWF0ZU1vbml0b3JpbmdSb2xlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZVN0YWNrID0gdGhpcy5nZXREZWZhdWx0Q29tcHV0ZVN0YWNrKCk7XG4gICAgY29uc3QgY29uc3RydWN0ID0gZm4odGhpcywgY29tcHV0ZVN0YWNrLmdldFN0YWNrKCkpO1xuICAgIGNvbXB1dGVTdGFjay5hZGRDb25zdHJ1Y3QoY29uc3RydWN0KTtcbiAgICByZXR1cm4gY29uc3RydWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IGFkZCBhIHJlc291cmNlIHRvIHRoZSBkZWZhdWx0IGNvbXB1dGUgc3RhY2suXG4gICAqL1xuICBwdWJsaWMgYWRkQ29tcHV0ZVJlc291cmNlKHJlc291cmNlOiBDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wdXRlU3RhY2sgPSB0aGlzLmdldERlZmF1bHRDb21wdXRlU3RhY2soKTtcbiAgICBjb21wdXRlU3RhY2suYWRkQ29uc3RydWN0KHJlc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBkYXRhYmFzZSByZXNvdXJjZSB0byB0aGUgZGVmYXVsdCBkYXRhYmFzZSBzdGFjayB1c2luZyB0aGUgZmFjdG9yeSBwYXR0ZXJuLlxuICAgKi9cbiAgcHVibGljIGFkZERhdGFiYXNlKGZuOiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IENvbnN0cnVjdCk6IERhdGFiYXNlIHtcbiAgICBjb25zdCBkYXRhYmFzZVN0YWNrID0gdGhpcy5nZXREZWZhdWx0RGF0YWJhc2VTdGFjaygpO1xuICAgIGNvbnN0IGRhdGFiYXNlQ29uc3RydWN0ID0gZm4odGhpcywgZGF0YWJhc2VTdGFjay5nZXRTdGFjaygpKTtcbiAgICBkYXRhYmFzZVN0YWNrLmFkZENvbnN0cnVjdChkYXRhYmFzZUNvbnN0cnVjdCk7XG5cbiAgICByZXR1cm4gZGF0YWJhc2VDb25zdHJ1Y3QgYXMgdW5rbm93biBhcyBEYXRhYmFzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzdG9yYWdlIHJlc291cmNlIChTMykgdG8gdGhlIGRlZmF1bHQgc3RvcmFnZSBzdGFjayB1c2luZyB0aGUgZmFjdG9yeSBwYXR0ZXJuLlxuICAgKi9cbiAgcHVibGljIGFkZFN0b3JhZ2UoZm46IChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4gQ29uc3RydWN0KTogQ29uc3RydWN0IHtcbiAgICBjb25zdCBzdG9yYWdlU3RhY2sgPSB0aGlzLmdldERlZmF1bHRTdG9yYWdlU3RhY2soKTtcbiAgICBjb25zdCBzdG9yYWdlQ29uc3RydWN0ID0gZm4odGhpcywgc3RvcmFnZVN0YWNrLmdldFN0YWNrKCkpO1xuICAgIHN0b3JhZ2VTdGFjay5hZGRDb25zdHJ1Y3Qoc3RvcmFnZUNvbnN0cnVjdCk7XG5cbiAgICByZXR1cm4gc3RvcmFnZUNvbnN0cnVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gYWRkaXRpb25hbCBuZXR3b3JrIChWUEMpIHRvIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogVXNlIHRoaXMgdG8gY3JlYXRlIGFkZGl0aW9uYWwgVlBDcyBiZXlvbmQgdGhlIGRlZmF1bHQgVlBDIGNvbmZpZ3VyZWQgdmlhIEFwcC5nZXRBcHAoKS5cbiAgICogQWRkaXRpb25hbCBWUENzIGNhbiBiZSByZXRyaWV2ZWQgYnkgbmFtZSB1c2luZyBhcHAuZ2V0VnBjKG5hbWUpLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gLSBGYWN0b3J5IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0aGUgTmV0d29yayBjb25zdHJ1Y3RcbiAgICogQHJldHVybnMge05ldHdvcmt9IFRoZSBjcmVhdGVkIE5ldHdvcmsgY29uc3RydWN0XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGlzb2xhdGVkVnBjID0gYXBwLmFkZE5ldHdvcmsoXG4gICAqICAgTmV0d29ya0ZhY3RvcnkuYnVpbGQoXCJJc29sYXRlZFZwY1wiLCB7IG1heEF6czogMiwgbmF0R2F0ZXdheXM6IGZhbHNlIH0pXG4gICAqICk7XG4gICAqL1xuICBwdWJsaWMgYWRkTmV0d29yayhmbjogKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiBOZXR3b3JrKTogTmV0d29yayB7XG4gICAgY29uc3QgbmV0d29ya1N0YWNrID0gdGhpcy5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCk7XG4gICAgY29uc3QgbmV0d29yayA9IGZuKHRoaXMsIG5ldHdvcmtTdGFjay5nZXRTdGFjaygpKTtcbiAgICBjb25zdCB2cGNOYW1lID0gbmV0d29yay5ub2RlLmlkO1xuXG4gICAgLy8gU3RvcmUgaW4gYWRkaXRpb25hbCBWUENzIG1hcCBmb3IgcmV0cmlldmFsIHZpYSBnZXRWcGMobmFtZSlcbiAgICB0aGlzLmFkZGl0aW9uYWxWcGNzLnNldCh2cGNOYW1lLCBuZXR3b3JrLmdldFZwYygpKTtcbiAgICBuZXR3b3JrU3RhY2suYWRkQ29uc3RydWN0KG5ldHdvcmspO1xuXG4gICAgcmV0dXJuIG5ldHdvcms7XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgYWRkIGEgcmVzb3VyY2UgdG8gdGhlIGRlZmF1bHQgZGF0YWJhc2Ugc3RhY2suXG4gICAqL1xuICBwdWJsaWMgYWRkRGF0YWJhc2VSZXNvdXJjZShyZXNvdXJjZTogQ29uc3RydWN0KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YWJhc2VTdGFjayA9IHRoaXMuZ2V0RGVmYXVsdERhdGFiYXNlU3RhY2soKTtcbiAgICBkYXRhYmFzZVN0YWNrLmFkZENvbnN0cnVjdChyZXNvdXJjZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgYWRkIGEgcmVzb3VyY2UgdG8gdGhlIGRlZmF1bHQgc3RvcmFnZSBzdGFjay5cbiAgICovXG4gIHB1YmxpYyBhZGRTdG9yYWdlUmVzb3VyY2UocmVzb3VyY2U6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2VTdGFjayA9IHRoaXMuZ2V0RGVmYXVsdFN0b3JhZ2VTdGFjaygpO1xuICAgIHN0b3JhZ2VTdGFjay5hZGRDb25zdHJ1Y3QocmVzb3VyY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgc3RhbmRhcmQgdGFnc1xuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXNlU3RhbmRhcmRUYWdzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuICAgIHRoaXMuZ2xvYmFsVGFncyA9IHtcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIjogY29uZmlnLmVudmlyb25tZW50LFxuICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpzZXJ2aWNlXCI6IHRoaXMubmFtZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgYWxsIHRhZ3MgdXNpbmcgQ0RLJ3MgbmF0aXZlIFRhZ3Mub2YoKS5hZGQoKSBBUElcbiAgICovXG4gIHByaXZhdGUgYXBwbHlUYWdzQXNwZWN0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hc3BlY3RBcHBsaWVkICYmIE9iamVjdC5rZXlzKHRoaXMuZ2xvYmFsVGFncykubGVuZ3RoID4gMCkge1xuICAgICAgLy8gQXBwbHkgc3RhbmRhcmQgdGFncyB1c2luZyBUYWdzLm9mKHRoaXMpLmFkZCgpXG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLmdsb2JhbFRhZ3MpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBUYWdzLm9mKHRoaXMpLmFkZChrZXksIHZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBcHBseSBhc3BlY3QgZm9yIHJlc291cmNlLXNwZWNpZmljIHRhZ3MgKElQQU0gcG9vbCwgYmFja3VwIHRpZXIpXG4gICAgICBBc3BlY3RzLm9mKHRoaXMpLmFkZChuZXcgU3RhbmRhcmRUYWdzQXNwZWN0KCkpO1xuXG4gICAgICB0aGlzLmFzcGVjdEFwcGxpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgY3VzdG9tIHRhZ3MgdG8gYWxsIHJlc291cmNlcyBpbiB0aGUgYXBwLlxuICAgKlxuICAgKiBAcGFyYW0gdGFncyBDdXN0b20gdGFncyB0byBhcHBseSB0byBhbGwgcmVzb3VyY2VzXG4gICAqIEBleGFtcGxlXG4gICAqIGFwcC5hZGRUYWdzKHtcbiAgICogICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOm93bmVyXCI6IFwicGxhdGZvcm0tdGVhbVwiLFxuICAgKiAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246Y29zdC1jZW50ZXJcIjogXCJDQy0xMjNcIixcbiAgICogICBcInRlYW06c2xhY2stY2hhbm5lbFwiOiBcIiNwbGF0Zm9ybS1hbGVydHNcIlxuICAgKiB9KTtcbiAgICovXG4gIHB1YmxpYyBhZGRUYWdzKHRhZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pOiBBcHAge1xuICAgIC8vIE1lcmdlIHRhZ3MgaW50byBnbG9iYWxUYWdzIGZvciB0cmFja2luZ1xuICAgIHRoaXMuZ2xvYmFsVGFncyA9IHtcbiAgICAgIC4uLnRoaXMuZ2xvYmFsVGFncyxcbiAgICAgIC4uLnRhZ3NcbiAgICB9O1xuICAgIE9iamVjdC5lbnRyaWVzKHRhZ3MpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoa2V5LCB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvcnQgcmVzb3VyY2UgaW52ZW50b3J5IGNvbGxlY3RlZCBkdXJpbmcgc3ludGhlc2lzXG4gICAqIENhbGwgdGhpcyBhZnRlciBhcHAuc3ludGgoKSB0byBnZXQgY29tcGxldGUgcmVzb3VyY2UgaW52ZW50b3J5XG4gICAqIEByZXR1cm5zIHtSZXNvdXJjZUludmVudG9yeX0gQ29tcGxldGUgaW52ZW50b3J5IG9mIGFsbCByZXNvdXJjZXMgaW4gdGhlIGFwcFxuICAgKi9cbiAgcHVibGljIGV4cG9ydFJlc291cmNlSW52ZW50b3J5KCk6IFJlc291cmNlSW52ZW50b3J5IHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb3VyY2VzOiB0aGlzLnJlc291cmNlSW52ZW50b3J5LmdldEludmVudG9yeSgpLFxuICAgICAgZ2VuZXJhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBhcHBfbmFtZTogdGhpcy5uYW1lXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBzeW50aCB0byBhdXRvbWF0aWNhbGx5IGV4cG9ydCByZXNvdXJjZSBpbnZlbnRvcnlcbiAgICovXG4gIHB1YmxpYyBzeW50aChvcHRpb25zPzogU3RhZ2VTeW50aGVzaXNPcHRpb25zKTogQ2xvdWRBc3NlbWJseSB7XG4gICAgLy8gQ2FsbCBwYXJlbnQgc3ludGggZmlyc3RcbiAgICBjb25zdCBhc3NlbWJseSA9IHN1cGVyLnN5bnRoKG9wdGlvbnMpO1xuXG4gICAgLy8gQWZ0ZXIgc3ludGhlc2lzLCB3cml0ZSByZXNvdXJjZSBpbnZlbnRvcnkgdG8gY2RrLm91dFxuICAgIHRyeSB7XG4gICAgICAvLyBjb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgIC8vIGNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbiAgICAgIC8vIGNvbnN0IGludmVudG9yeSA9IHRoaXMuZXhwb3J0UmVzb3VyY2VJbnZlbnRvcnkoKTtcbiAgICAgIC8vIGNvbnN0IGludmVudG9yeVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAvLyAgIGFzc2VtYmx5LmRpcmVjdG9yeSxcbiAgICAgIC8vICAgXCJyZXNvdXJjZS1pbnZlbnRvcnkuanNvblwiXG4gICAgICAvLyApO1xuICAgICAgLy8gZnMud3JpdGVGaWxlU3luYyhpbnZlbnRvcnlQYXRoLCBKU09OLnN0cmluZ2lmeShpbnZlbnRvcnksIG51bGwsIDIpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gRG9uJ3QgZmFpbCBzeW50aCBpZiBpbnZlbnRvcnkgZXhwb3J0IGZhaWxzXG4gICAgICBjb25zb2xlLndhcm4oXCJGYWlsZWQgdG8gZXhwb3J0IHJlc291cmNlIGludmVudG9yeTpcIiwgZXJyb3IpO1xuICAgIH1cblxuICAgIHJldHVybiBhc3NlbWJseTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBcHA7XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/components-infrastructure",
3
- "version": "0.83.5",
3
+ "version": "0.84.0",
4
4
  "bin": {
5
5
  "infrastructure": "bin/infrastructure.js"
6
6
  },
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@aws-sdk/client-organizations": "^3.716.0",
39
- "@fjall/util": "^0.83.5",
39
+ "@fjall/util": "^0.84.0",
40
40
  "@pepperize/cdk-organizations": "^0.7.135",
41
41
  "cdk-time-sleep": "^1.0.0",
42
42
  "constructs": "^10.0.0",
@@ -45,7 +45,7 @@
45
45
  "overrides": {
46
46
  "@smithy/core": "2.5.5"
47
47
  },
48
- "gitHead": "b910a242ca523acd71bb7361191a666ee3d9eee1",
48
+ "gitHead": "642184861e8aa9eb72375a837e6ab43026f5780c",
49
49
  "peerDependencies": {
50
50
  "aws-cdk": "^2.206.0",
51
51
  "aws-cdk-lib": "^2.206.0",