@dyanet/nestjs-config-aws 1.2.0-beta.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/cjs/config-aws/src/loaders/secrets-manager.loader.js +11 -4
- package/dist/cjs/nestjs-config-aws/src/integration/services/async-config-helper.service.js +14 -6
- package/dist/cjs/nestjs-config-aws/src/integration/services/validation-integration.service.js +9 -6
- package/dist/esm/config-aws/src/loaders/secrets-manager.loader.js +11 -4
- package/dist/esm/nestjs-config-aws/src/integration/services/async-config-helper.service.js +14 -6
- package/dist/esm/nestjs-config-aws/src/integration/services/validation-integration.service.js +9 -6
- package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts +1 -1
- package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts.map +1 -1
- package/dist/types/nestjs-config-aws/src/integration/services/async-config-helper.service.d.ts.map +1 -1
- package/dist/types/nestjs-config-aws/src/integration/services/validation-integration.service.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -51,11 +51,18 @@ export class SecretsManagerLoader {
|
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
53
53
|
* Get the name of this loader for logging and debugging.
|
|
54
|
-
* @returns The loader name with secret path
|
|
54
|
+
* @returns The loader name with secret path or base secret name if path cannot be built
|
|
55
55
|
*/
|
|
56
56
|
getName() {
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
// Avoid calling buildSecretName() to prevent stack overflow when
|
|
58
|
+
// environment mapping is missing - buildSecretName() throws an error
|
|
59
|
+
// that includes getName() in the message, causing infinite recursion.
|
|
60
|
+
const envPrefix = this._config.environmentMapping[this._appEnv];
|
|
61
|
+
if (envPrefix) {
|
|
62
|
+
return `SecretsManagerLoader(/${envPrefix}${this._config.secretName})`;
|
|
63
|
+
}
|
|
64
|
+
// Fallback to base secret name when environment mapping is unavailable
|
|
65
|
+
return `SecretsManagerLoader(${this._config.secretName})`;
|
|
59
66
|
}
|
|
60
67
|
/**
|
|
61
68
|
* Check if this loader is available in the current environment.
|
|
@@ -155,4 +162,4 @@ export class SecretsManagerLoader {
|
|
|
155
162
|
return { ...this._config.environmentMapping };
|
|
156
163
|
}
|
|
157
164
|
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0cy1tYW5hZ2VyLmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2NvbmZpZy1hd3Mvc3JjL2xvYWRlcnMvc2VjcmV0cy1tYW5hZ2VyLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUl0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixnQkFBZ0I7SUFDRyxPQUFPLENBQXVCO0lBQ2pELGdCQUFnQjtJQUNHLE9BQU8sQ0FBdUM7SUFDakUsZ0JBQWdCO0lBQ0csT0FBTyxDQUFTO0lBRW5DLFlBQVksU0FBcUMsRUFBRTtRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUM7UUFFNUUsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxvQkFBb0I7WUFDckQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxXQUFXO1lBQ2pFLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSTtnQkFDL0MsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLElBQUksRUFBRSxNQUFNO2dCQUNaLFVBQVUsRUFBRSxZQUFZO2FBQ3pCO1NBQ0YsQ0FBQztRQUVGLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksb0JBQW9CLENBQUM7WUFDdEMsV0FBVyxFQUFFLHFCQUFxQixFQUFFO1lBQ3BDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdEOzs7T0FHRztJQUNILE9BQU87UUFDTCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUMsT0FBTyx3QkFBd0IsVUFBVSxHQUFHLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxXQUFXO1FBQ2YsNEJBQTRCO1FBQzVCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM3QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCw0REFBNEQ7WUFDNUQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLG9DQUFvQztRQUNwQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDN0IsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRTFDLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQXFCLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNwRSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWxELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztZQUVELGlEQUFpRDtZQUNqRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRWpELHVEQUF1RDtnQkFDdkQsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDNUUsT0FBTyxNQUFNLENBQUM7Z0JBQ2hCLENBQUM7cUJBQU0sQ0FBQztvQkFDTiwyREFBMkQ7b0JBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ2xDLENBQUM7WUFDSCxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLHdEQUF3RDtnQkFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakQsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsNkJBQTZCO1lBQzdCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssMkJBQTJCLEVBQUUsQ0FBQztvQkFDL0MsOEVBQThFO29CQUM5RSxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDO2dCQUVELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyx1QkFBdUIsRUFBRSxDQUFDO29CQUMzQyxNQUFNLElBQUksZUFBZSxDQUN2Qix5Q0FBeUMsVUFBVSwyQ0FBMkMsRUFDOUYsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixLQUFLLENBQ04sQ0FBQztnQkFDSixDQUFDO2dCQUVELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyx5QkFBeUIsRUFBRSxDQUFDO29CQUM3QyxNQUFNLElBQUksZUFBZSxDQUN2QiwyQ0FBMkMsVUFBVSw4QkFBOEIsRUFDbkYsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixLQUFLLENBQ04sQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUVELDRDQUE0QztZQUM1QyxNQUFNLElBQUksZUFBZSxDQUN2Qiw4QkFBOEIsVUFBVSwrQkFBK0IsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQy9ILGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzNDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWU7UUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksc0JBQXNCLENBQzlCLDZDQUE2QyxJQUFJLENBQUMsT0FBTyxLQUFLO2dCQUM1RCwyQkFBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ3RGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FDZixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gscUJBQXFCO1FBQ25CLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQsIFNlY3JldHNNYW5hZ2VyQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcic7XHJcbmltcG9ydCB7IGZyb21Ob2RlUHJvdmlkZXJDaGFpbiB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcclxuXHJcbmltcG9ydCB0eXBlIHsgQ29uZmlnTG9hZGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWctbG9hZGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB0eXBlIHsgU2VjcmV0c01hbmFnZXJMb2FkZXJDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlY3JldHMtbWFuYWdlci1sb2FkZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQVdTU2VydmljZUVycm9yLCBDb25maWd1cmF0aW9uTG9hZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcclxuXHJcbi8qKlxyXG4gKiBMb2FkZXIgdGhhdCByZWFkcyBjb25maWd1cmF0aW9uIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlci5cclxuICogU3VwcG9ydHMgZW52aXJvbm1lbnQtYXdhcmUgcGF0aCBjb25zdHJ1Y3Rpb24uXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogLy8gQmFzaWMgdXNhZ2VcclxuICogY29uc3QgbG9hZGVyID0gbmV3IFNlY3JldHNNYW5hZ2VyTG9hZGVyKHtcclxuICogICBzZWNyZXROYW1lOiAnL215LWFwcC9jb25maWcnLFxyXG4gKiAgIHJlZ2lvbjogJ3VzLWVhc3QtMSdcclxuICogfSk7XHJcbiAqXHJcbiAqIC8vIFdpdGggZW52aXJvbm1lbnQgbWFwcGluZ1xyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgU2VjcmV0c01hbmFnZXJMb2FkZXIoe1xyXG4gKiAgIHNlY3JldE5hbWU6ICcvbXktYXBwL2NvbmZpZycsXHJcbiAqICAgZW52aXJvbm1lbnRNYXBwaW5nOiB7XHJcbiAqICAgICBkZXZlbG9wbWVudDogJ2RldicsXHJcbiAqICAgICBzdGFnaW5nOiAnc3RnJyxcclxuICogICAgIHByb2R1Y3Rpb246ICdwcm9kJ1xyXG4gKiAgIH1cclxuICogfSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNlY3JldHNNYW5hZ2VyTG9hZGVyIGltcGxlbWVudHMgQ29uZmlnTG9hZGVyIHtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jbGllbnQ6IFNlY3JldHNNYW5hZ2VyQ2xpZW50O1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbmZpZzogUmVxdWlyZWQ8U2VjcmV0c01hbmFnZXJMb2FkZXJDb25maWc+O1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FwcEVudjogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFNlY3JldHNNYW5hZ2VyTG9hZGVyQ29uZmlnID0ge30pIHtcclxuICAgIHRoaXMuX2FwcEVudiA9IHByb2Nlc3MuZW52WydBUFBfRU5WJ10gfHwgcHJvY2Vzcy5lbnZbJ05PREVfRU5WJ10gfHwgJ2xvY2FsJztcclxuXHJcbiAgICAvLyBTZXQgZGVmYXVsdCBjb25maWd1cmF0aW9uXHJcbiAgICB0aGlzLl9jb25maWcgPSB7XHJcbiAgICAgIHNlY3JldE5hbWU6IGNvbmZpZy5zZWNyZXROYW1lIHx8ICcvbmVzdGpzLWNvbmZpZy1hd3MnLFxyXG4gICAgICByZWdpb246IGNvbmZpZy5yZWdpb24gfHwgcHJvY2Vzcy5lbnZbJ0FXU19SRUdJT04nXSB8fCAndXMtZWFzdC0xJyxcclxuICAgICAgZW52aXJvbm1lbnRNYXBwaW5nOiBjb25maWcuZW52aXJvbm1lbnRNYXBwaW5nIHx8IHtcclxuICAgICAgICBkZXZlbG9wbWVudDogJ2RldicsXHJcbiAgICAgICAgdGVzdDogJ3Rlc3QnLFxyXG4gICAgICAgIHByb2R1Y3Rpb246ICdwcm9kdWN0aW9uJyxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBBV1MgU2VjcmV0cyBNYW5hZ2VyIGNsaWVudFxyXG4gICAgdGhpcy5fY2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHtcclxuICAgICAgY3JlZGVudGlhbHM6IGZyb21Ob2RlUHJvdmlkZXJDaGFpbigpLFxyXG4gICAgICByZWdpb246IHRoaXMuX2NvbmZpZy5yZWdpb24sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIG5hbWUgb2YgdGhpcyBsb2FkZXIgZm9yIGxvZ2dpbmcgYW5kIGRlYnVnZ2luZy5cclxuICAgKiBAcmV0dXJucyBUaGUgbG9hZGVyIG5hbWUgd2l0aCBzZWNyZXQgcGF0aFxyXG4gICAqL1xyXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlY3JldE5hbWUgPSB0aGlzLmJ1aWxkU2VjcmV0TmFtZSgpO1xyXG4gICAgcmV0dXJuIGBTZWNyZXRzTWFuYWdlckxvYWRlcigke3NlY3JldE5hbWV9KWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGlzIGxvYWRlciBpcyBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gdHJ1ZSBpZiBub3QgaW4gbG9jYWwgZW52aXJvbm1lbnQgYW5kIEFXUyBjcmVkZW50aWFscyBhcmUgYXZhaWxhYmxlXHJcbiAgICovXHJcbiAgYXN5bmMgaXNBdmFpbGFibGUoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyBTa2lwIGluIGxvY2FsIGVudmlyb25tZW50XHJcbiAgICBpZiAodGhpcy5fYXBwRW52ID09PSAnbG9jYWwnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBUZXN0IEFXUyBjcmVkZW50aWFscyBieSBhdHRlbXB0aW5nIHRvIGdldCBjYWxsZXIgaWRlbnRpdHlcclxuICAgICAgYXdhaXQgdGhpcy5fY2xpZW50LmNvbmZpZy5jcmVkZW50aWFscygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIGNvbmZpZ3VyYXRpb24gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyLlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmZpZ3VyYXRpb24ga2V5LXZhbHVlIHBhaXJzIGZyb20gdGhlIHNlY3JldFxyXG4gICAqIEB0aHJvd3MgQVdTU2VydmljZUVycm9yIGlmIEFXUyBvcGVyYXRpb24gZmFpbHNcclxuICAgKiBAdGhyb3dzIENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IgaWYgc2VjcmV0IGNhbm5vdCBiZSBwYXJzZWRcclxuICAgKi9cclxuICBhc3luYyBsb2FkKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcclxuICAgIC8vIFNraXAgbG9hZGluZyBpbiBsb2NhbCBlbnZpcm9ubWVudFxyXG4gICAgaWYgKHRoaXMuX2FwcEVudiA9PT0gJ2xvY2FsJykge1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VjcmV0TmFtZSA9IHRoaXMuYnVpbGRTZWNyZXROYW1lKCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQoeyBTZWNyZXRJZDogc2VjcmV0TmFtZSB9KTtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLl9jbGllbnQuc2VuZChjb21tYW5kKTtcclxuXHJcbiAgICAgIGlmICghcmVzcG9uc2UuU2VjcmV0U3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBUcnkgdG8gcGFyc2UgYXMgSlNPTiwgZmFsbGJhY2sgdG8gc3RyaW5nIHZhbHVlXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyZXNwb25zZS5TZWNyZXRTdHJpbmcpO1xyXG5cclxuICAgICAgICAvLyBFbnN1cmUgd2UgcmV0dXJuIGFuIG9iamVjdCBmb3IgY29uZmlndXJhdGlvbiBtZXJnaW5nXHJcbiAgICAgICAgaWYgKHR5cGVvZiBwYXJzZWQgPT09ICdvYmplY3QnICYmIHBhcnNlZCAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShwYXJzZWQpKSB7XHJcbiAgICAgICAgICByZXR1cm4gcGFyc2VkO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBJZiBpdCdzIG5vdCBhbiBvYmplY3QsIHdyYXAgaXQgaW4gYSBjb25maWd1cmF0aW9uIG9iamVjdFxyXG4gICAgICAgICAgcmV0dXJuIHsgU0VDUkVUX1ZBTFVFOiBwYXJzZWQgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgIC8vIElmIEpTT04gcGFyc2luZyBmYWlscywgdHJlYXQgYXMgYSBzaW5nbGUgc3RyaW5nIHZhbHVlXHJcbiAgICAgICAgcmV0dXJuIHsgU0VDUkVUX1ZBTFVFOiByZXNwb25zZS5TZWNyZXRTdHJpbmcgfTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy8gSGFuZGxlIHNwZWNpZmljIEFXUyBlcnJvcnNcclxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24nKSB7XHJcbiAgICAgICAgICAvLyBTZWNyZXQgZG9lc24ndCBleGlzdCAtIHRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IGFuIGVycm9yIGluIGFsbCBlbnZpcm9ubWVudHNcclxuICAgICAgICAgIHJldHVybiB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnJvci5uYW1lID09PSAnQWNjZXNzRGVuaWVkRXhjZXB0aW9uJykge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEFXU1NlcnZpY2VFcnJvcihcclxuICAgICAgICAgICAgYEFjY2VzcyBkZW5pZWQgd2hlbiByZXRyaWV2aW5nIHNlY3JldCAnJHtzZWNyZXROYW1lfScuIENoZWNrIEFXUyBjcmVkZW50aWFscyBhbmQgcGVybWlzc2lvbnMuYCxcclxuICAgICAgICAgICAgJ1NlY3JldHNNYW5hZ2VyJyxcclxuICAgICAgICAgICAgJ0dldFNlY3JldFZhbHVlJyxcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdJbnZhbGlkUmVxdWVzdEV4Y2VwdGlvbicpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBV1NTZXJ2aWNlRXJyb3IoXHJcbiAgICAgICAgICAgIGBJbnZhbGlkIHJlcXVlc3Qgd2hlbiByZXRyaWV2aW5nIHNlY3JldCAnJHtzZWNyZXROYW1lfScuIENoZWNrIHNlY3JldCBuYW1lIGZvcm1hdC5gLFxyXG4gICAgICAgICAgICAnU2VjcmV0c01hbmFnZXInLFxyXG4gICAgICAgICAgICAnR2V0U2VjcmV0VmFsdWUnLFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBGb3Igb3RoZXIgZXJyb3JzLCB3cmFwIGluIEFXU1NlcnZpY2VFcnJvclxyXG4gICAgICB0aHJvdyBuZXcgQVdTU2VydmljZUVycm9yKFxyXG4gICAgICAgIGBGYWlsZWQgdG8gcmV0cmlldmUgc2VjcmV0ICcke3NlY3JldE5hbWV9JyBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXI6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWAsXHJcbiAgICAgICAgJ1NlY3JldHNNYW5hZ2VyJyxcclxuICAgICAgICAnR2V0U2VjcmV0VmFsdWUnLFxyXG4gICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IHVuZGVmaW5lZCxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1aWxkIHRoZSBlbnZpcm9ubWVudC1hd2FyZSBzZWNyZXQgbmFtZS9wYXRoLlxyXG4gICAqIEByZXR1cm5zIFRoZSBmdWxsIHNlY3JldCBuYW1lIHdpdGggZW52aXJvbm1lbnQgcHJlZml4XHJcbiAgICovXHJcbiAgYnVpbGRTZWNyZXROYW1lKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBlbnZQcmVmaXggPSB0aGlzLl9jb25maWcuZW52aXJvbm1lbnRNYXBwaW5nW3RoaXMuX2FwcEVudl07XHJcblxyXG4gICAgaWYgKCFlbnZQcmVmaXgpIHtcclxuICAgICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IoXHJcbiAgICAgICAgYE5vIGVudmlyb25tZW50IG1hcHBpbmcgZm91bmQgZm9yIEFQUF9FTlYgJyR7dGhpcy5fYXBwRW52fScuIGAgK1xyXG4gICAgICAgICAgYEF2YWlsYWJsZSBlbnZpcm9ubWVudHM6ICR7T2JqZWN0LmtleXModGhpcy5fY29uZmlnLmVudmlyb25tZW50TWFwcGluZykuam9pbignLCAnKX1gLFxyXG4gICAgICAgIHRoaXMuZ2V0TmFtZSgpLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBgLyR7ZW52UHJlZml4fSR7dGhpcy5fY29uZmlnLnNlY3JldE5hbWV9YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3VycmVudCBhcHAgZW52aXJvbm1lbnQuXHJcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgQVBQX0VOViBvciBOT0RFX0VOViB2YWx1ZVxyXG4gICAqL1xyXG4gIGdldEFwcEVudigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FwcEVudjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZW52aXJvbm1lbnQgbWFwcGluZyBjb25maWd1cmF0aW9uLlxyXG4gICAqIEByZXR1cm5zIFRoZSBlbnZpcm9ubWVudCBtYXBwaW5nIHJlY29yZFxyXG4gICAqL1xyXG4gIGdldEVudmlyb25tZW50TWFwcGluZygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuX2NvbmZpZy5lbnZpcm9ubWVudE1hcHBpbmcgfTtcclxuICB9XHJcbn1cclxuIl19
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0cy1tYW5hZ2VyLmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2NvbmZpZy1hd3Mvc3JjL2xvYWRlcnMvc2VjcmV0cy1tYW5hZ2VyLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUl0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixnQkFBZ0I7SUFDRyxPQUFPLENBQXVCO0lBQ2pELGdCQUFnQjtJQUNHLE9BQU8sQ0FBdUM7SUFDakUsZ0JBQWdCO0lBQ0csT0FBTyxDQUFTO0lBRW5DLFlBQVksU0FBcUMsRUFBRTtRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUM7UUFFNUUsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxvQkFBb0I7WUFDckQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxXQUFXO1lBQ2pFLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSTtnQkFDL0MsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLElBQUksRUFBRSxNQUFNO2dCQUNaLFVBQVUsRUFBRSxZQUFZO2FBQ3pCO1NBQ0YsQ0FBQztRQUVGLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsT0FB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QUVEOzs7T0FHRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILHFCQUFxQjtRQUNuQixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDaEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2V0U2VjcmV0VmFsdWVDb21tYW5kLCBTZWNyZXRzTWFuYWdlckNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXInO1xyXG5pbXBvcnQgeyBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4gfSBmcm9tICdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVycyc7XHJcblxyXG5pbXBvcnQgdHlwZSB7IENvbmZpZ0xvYWRlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnLWxvYWRlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgdHlwZSB7IFNlY3JldHNNYW5hZ2VyTG9hZGVyQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZWNyZXRzLW1hbmFnZXItbG9hZGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFXU1NlcnZpY2VFcnJvciwgQ29uZmlndXJhdGlvbkxvYWRFcnJvciB9IGZyb20gJy4uL2Vycm9ycyc7XHJcblxyXG4vKipcclxuICogTG9hZGVyIHRoYXQgcmVhZHMgY29uZmlndXJhdGlvbiBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIuXHJcbiAqIFN1cHBvcnRzIGVudmlyb25tZW50LWF3YXJlIHBhdGggY29uc3RydWN0aW9uLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIC8vIEJhc2ljIHVzYWdlXHJcbiAqIGNvbnN0IGxvYWRlciA9IG5ldyBTZWNyZXRzTWFuYWdlckxvYWRlcih7XHJcbiAqICAgc2VjcmV0TmFtZTogJy9teS1hcHAvY29uZmlnJyxcclxuICogICByZWdpb246ICd1cy1lYXN0LTEnXHJcbiAqIH0pO1xyXG4gKlxyXG4gKiAvLyBXaXRoIGVudmlyb25tZW50IG1hcHBpbmdcclxuICogY29uc3QgbG9hZGVyID0gbmV3IFNlY3JldHNNYW5hZ2VyTG9hZGVyKHtcclxuICogICBzZWNyZXROYW1lOiAnL215LWFwcC9jb25maWcnLFxyXG4gKiAgIGVudmlyb25tZW50TWFwcGluZzoge1xyXG4gKiAgICAgZGV2ZWxvcG1lbnQ6ICdkZXYnLFxyXG4gKiAgICAgc3RhZ2luZzogJ3N0ZycsXHJcbiAqICAgICBwcm9kdWN0aW9uOiAncHJvZCdcclxuICogICB9XHJcbiAqIH0pO1xyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTZWNyZXRzTWFuYWdlckxvYWRlciBpbXBsZW1lbnRzIENvbmZpZ0xvYWRlciB7XHJcbiAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBfY2xpZW50OiBTZWNyZXRzTWFuYWdlckNsaWVudDtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb25maWc6IFJlcXVpcmVkPFNlY3JldHNNYW5hZ2VyTG9hZGVyQ29uZmlnPjtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9hcHBFbnY6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoY29uZmlnOiBTZWNyZXRzTWFuYWdlckxvYWRlckNvbmZpZyA9IHt9KSB7XHJcbiAgICB0aGlzLl9hcHBFbnYgPSBwcm9jZXNzLmVudlsnQVBQX0VOViddIHx8IHByb2Nlc3MuZW52WydOT0RFX0VOViddIHx8ICdsb2NhbCc7XHJcblxyXG4gICAgLy8gU2V0IGRlZmF1bHQgY29uZmlndXJhdGlvblxyXG4gICAgdGhpcy5fY29uZmlnID0ge1xyXG4gICAgICBzZWNyZXROYW1lOiBjb25maWcuc2VjcmV0TmFtZSB8fCAnL25lc3Rqcy1jb25maWctYXdzJyxcclxuICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uIHx8IHByb2Nlc3MuZW52WydBV1NfUkVHSU9OJ10gfHwgJ3VzLWVhc3QtMScsXHJcbiAgICAgIGVudmlyb25tZW50TWFwcGluZzogY29uZmlnLmVudmlyb25tZW50TWFwcGluZyB8fCB7XHJcbiAgICAgICAgZGV2ZWxvcG1lbnQ6ICdkZXYnLFxyXG4gICAgICAgIHRlc3Q6ICd0ZXN0JyxcclxuICAgICAgICBwcm9kdWN0aW9uOiAncHJvZHVjdGlvbicsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEluaXRpYWxpemUgQVdTIFNlY3JldHMgTWFuYWdlciBjbGllbnRcclxuICAgIHRoaXMuX2NsaWVudCA9IG5ldyBTZWNyZXRzTWFuYWdlckNsaWVudCh7XHJcbiAgICAgIGNyZWRlbnRpYWxzOiBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4oKSxcclxuICAgICAgcmVnaW9uOiB0aGlzLl9jb25maWcucmVnaW9uLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBuYW1lIG9mIHRoaXMgbG9hZGVyIGZvciBsb2dnaW5nIGFuZCBkZWJ1Z2dpbmcuXHJcbiAgICogQHJldHVybnMgVGhlIGxvYWRlciBuYW1lIHdpdGggc2VjcmV0IHBhdGggb3IgYmFzZSBzZWNyZXQgbmFtZSBpZiBwYXRoIGNhbm5vdCBiZSBidWlsdFxyXG4gICAqL1xyXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIC8vIEF2b2lkIGNhbGxpbmcgYnVpbGRTZWNyZXROYW1lKCkgdG8gcHJldmVudCBzdGFjayBvdmVyZmxvdyB3aGVuXHJcbiAgICAvLyBlbnZpcm9ubWVudCBtYXBwaW5nIGlzIG1pc3NpbmcgLSBidWlsZFNlY3JldE5hbWUoKSB0aHJvd3MgYW4gZXJyb3JcclxuICAgIC8vIHRoYXQgaW5jbHVkZXMgZ2V0TmFtZSgpIGluIHRoZSBtZXNzYWdlLCBjYXVzaW5nIGluZmluaXRlIHJlY3Vyc2lvbi5cclxuICAgIGNvbnN0IGVudlByZWZpeCA9IHRoaXMuX2NvbmZpZy5lbnZpcm9ubWVudE1hcHBpbmdbdGhpcy5fYXBwRW52XTtcclxuICAgIGlmIChlbnZQcmVmaXgpIHtcclxuICAgICAgcmV0dXJuIGBTZWNyZXRzTWFuYWdlckxvYWRlcigvJHtlbnZQcmVmaXh9JHt0aGlzLl9jb25maWcuc2VjcmV0TmFtZX0pYDtcclxuICAgIH1cclxuICAgIC8vIEZhbGxiYWNrIHRvIGJhc2Ugc2VjcmV0IG5hbWUgd2hlbiBlbnZpcm9ubWVudCBtYXBwaW5nIGlzIHVuYXZhaWxhYmxlXHJcbiAgICByZXR1cm4gYFNlY3JldHNNYW5hZ2VyTG9hZGVyKCR7dGhpcy5fY29uZmlnLnNlY3JldE5hbWV9KWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGlzIGxvYWRlciBpcyBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gdHJ1ZSBpZiBub3QgaW4gbG9jYWwgZW52aXJvbm1lbnQgYW5kIEFXUyBjcmVkZW50aWFscyBhcmUgYXZhaWxhYmxlXHJcbiAgICovXHJcbiAgYXN5bmMgaXNBdmFpbGFibGUoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyBTa2lwIGluIGxvY2FsIGVudmlyb25tZW50XHJcbiAgICBpZiAodGhpcy5fYXBwRW52ID09PSAnbG9jYWwnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBUZXN0IEFXUyBjcmVkZW50aWFscyBieSBhdHRlbXB0aW5nIHRvIGdldCBjYWxsZXIgaWRlbnRpdHlcclxuICAgICAgYXdhaXQgdGhpcy5fY2xpZW50LmNvbmZpZy5jcmVkZW50aWFscygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIGNvbmZpZ3VyYXRpb24gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyLlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmZpZ3VyYXRpb24ga2V5LXZhbHVlIHBhaXJzIGZyb20gdGhlIHNlY3JldFxyXG4gICAqIEB0aHJvd3MgQVdTU2VydmljZUVycm9yIGlmIEFXUyBvcGVyYXRpb24gZmFpbHNcclxuICAgKiBAdGhyb3dzIENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IgaWYgc2VjcmV0IGNhbm5vdCBiZSBwYXJzZWRcclxuICAgKi9cclxuICBhc3luYyBsb2FkKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcclxuICAgIC8vIFNraXAgbG9hZGluZyBpbiBsb2NhbCBlbnZpcm9ubWVudFxyXG4gICAgaWYgKHRoaXMuX2FwcEVudiA9PT0gJ2xvY2FsJykge1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VjcmV0TmFtZSA9IHRoaXMuYnVpbGRTZWNyZXROYW1lKCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQoeyBTZWNyZXRJZDogc2VjcmV0TmFtZSB9KTtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLl9jbGllbnQuc2VuZChjb21tYW5kKTtcclxuXHJcbiAgICAgIGlmICghcmVzcG9uc2UuU2VjcmV0U3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBUcnkgdG8gcGFyc2UgYXMgSlNPTiwgZmFsbGJhY2sgdG8gc3RyaW5nIHZhbHVlXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyZXNwb25zZS5TZWNyZXRTdHJpbmcpO1xyXG5cclxuICAgICAgICAvLyBFbnN1cmUgd2UgcmV0dXJuIGFuIG9iamVjdCBmb3IgY29uZmlndXJhdGlvbiBtZXJnaW5nXHJcbiAgICAgICAgaWYgKHR5cGVvZiBwYXJzZWQgPT09ICdvYmplY3QnICYmIHBhcnNlZCAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShwYXJzZWQpKSB7XHJcbiAgICAgICAgICByZXR1cm4gcGFyc2VkO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBJZiBpdCdzIG5vdCBhbiBvYmplY3QsIHdyYXAgaXQgaW4gYSBjb25maWd1cmF0aW9uIG9iamVjdFxyXG4gICAgICAgICAgcmV0dXJuIHsgU0VDUkVUX1ZBTFVFOiBwYXJzZWQgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgIC8vIElmIEpTT04gcGFyc2luZyBmYWlscywgdHJlYXQgYXMgYSBzaW5nbGUgc3RyaW5nIHZhbHVlXHJcbiAgICAgICAgcmV0dXJuIHsgU0VDUkVUX1ZBTFVFOiByZXNwb25zZS5TZWNyZXRTdHJpbmcgfTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy8gSGFuZGxlIHNwZWNpZmljIEFXUyBlcnJvcnNcclxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24nKSB7XHJcbiAgICAgICAgICAvLyBTZWNyZXQgZG9lc24ndCBleGlzdCAtIHRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IGFuIGVycm9yIGluIGFsbCBlbnZpcm9ubWVudHNcclxuICAgICAgICAgIHJldHVybiB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnJvci5uYW1lID09PSAnQWNjZXNzRGVuaWVkRXhjZXB0aW9uJykge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEFXU1NlcnZpY2VFcnJvcihcclxuICAgICAgICAgICAgYEFjY2VzcyBkZW5pZWQgd2hlbiByZXRyaWV2aW5nIHNlY3JldCAnJHtzZWNyZXROYW1lfScuIENoZWNrIEFXUyBjcmVkZW50aWFscyBhbmQgcGVybWlzc2lvbnMuYCxcclxuICAgICAgICAgICAgJ1NlY3JldHNNYW5hZ2VyJyxcclxuICAgICAgICAgICAgJ0dldFNlY3JldFZhbHVlJyxcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdJbnZhbGlkUmVxdWVzdEV4Y2VwdGlvbicpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBV1NTZXJ2aWNlRXJyb3IoXHJcbiAgICAgICAgICAgIGBJbnZhbGlkIHJlcXVlc3Qgd2hlbiByZXRyaWV2aW5nIHNlY3JldCAnJHtzZWNyZXROYW1lfScuIENoZWNrIHNlY3JldCBuYW1lIGZvcm1hdC5gLFxyXG4gICAgICAgICAgICAnU2VjcmV0c01hbmFnZXInLFxyXG4gICAgICAgICAgICAnR2V0U2VjcmV0VmFsdWUnLFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBGb3Igb3RoZXIgZXJyb3JzLCB3cmFwIGluIEFXU1NlcnZpY2VFcnJvclxyXG4gICAgICB0aHJvdyBuZXcgQVdTU2VydmljZUVycm9yKFxyXG4gICAgICAgIGBGYWlsZWQgdG8gcmV0cmlldmUgc2VjcmV0ICcke3NlY3JldE5hbWV9JyBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXI6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWAsXHJcbiAgICAgICAgJ1NlY3JldHNNYW5hZ2VyJyxcclxuICAgICAgICAnR2V0U2VjcmV0VmFsdWUnLFxyXG4gICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IHVuZGVmaW5lZCxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1aWxkIHRoZSBlbnZpcm9ubWVudC1hd2FyZSBzZWNyZXQgbmFtZS9wYXRoLlxyXG4gICAqIEByZXR1cm5zIFRoZSBmdWxsIHNlY3JldCBuYW1lIHdpdGggZW52aXJvbm1lbnQgcHJlZml4XHJcbiAgICovXHJcbiAgYnVpbGRTZWNyZXROYW1lKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBlbnZQcmVmaXggPSB0aGlzLl9jb25maWcuZW52aXJvbm1lbnRNYXBwaW5nW3RoaXMuX2FwcEVudl07XHJcblxyXG4gICAgaWYgKCFlbnZQcmVmaXgpIHtcclxuICAgICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IoXHJcbiAgICAgICAgYE5vIGVudmlyb25tZW50IG1hcHBpbmcgZm91bmQgZm9yIEFQUF9FTlYgJyR7dGhpcy5fYXBwRW52fScuIGAgK1xyXG4gICAgICAgICAgYEF2YWlsYWJsZSBlbnZpcm9ubWVudHM6ICR7T2JqZWN0LmtleXModGhpcy5fY29uZmlnLmVudmlyb25tZW50TWFwcGluZykuam9pbignLCAnKX1gLFxyXG4gICAgICAgIHRoaXMuZ2V0TmFtZSgpLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBgLyR7ZW52UHJlZml4fSR7dGhpcy5fY29uZmlnLnNlY3JldE5hbWV9YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3VycmVudCBhcHAgZW52aXJvbm1lbnQuXHJcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgQVBQX0VOViBvciBOT0RFX0VOViB2YWx1ZVxyXG4gICAqL1xyXG4gIGdldEFwcEVudigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FwcEVudjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZW52aXJvbm1lbnQgbWFwcGluZyBjb25maWd1cmF0aW9uLlxyXG4gICAqIEByZXR1cm5zIFRoZSBlbnZpcm9ubWVudCBtYXBwaW5nIHJlY29yZFxyXG4gICAqL1xyXG4gIGdldEVudmlyb25tZW50TWFwcGluZygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuX2NvbmZpZy5lbnZpcm9ubWVudE1hcHBpbmcgfTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -293,8 +293,18 @@ let AsyncConfigHelperService = AsyncConfigHelperService_1 = class AsyncConfigHel
|
|
|
293
293
|
this.logger.warn('Lazy factory called while loading, returning empty config');
|
|
294
294
|
return {};
|
|
295
295
|
}
|
|
296
|
-
// Start loading configuration
|
|
297
|
-
loadingPromise = this.loadConfigurationLazily()
|
|
296
|
+
// Start loading configuration and update cache when complete
|
|
297
|
+
loadingPromise = this.loadConfigurationLazily()
|
|
298
|
+
.then((config) => {
|
|
299
|
+
cachedConfig = config;
|
|
300
|
+
loadingPromise = null;
|
|
301
|
+
return config;
|
|
302
|
+
})
|
|
303
|
+
.catch((error) => {
|
|
304
|
+
loadingPromise = null;
|
|
305
|
+
this.logger.error('Lazy loading failed:', error);
|
|
306
|
+
return {};
|
|
307
|
+
});
|
|
298
308
|
// Return empty config for now (will be populated on next call)
|
|
299
309
|
this.logger.debug('Started lazy loading, returning empty config');
|
|
300
310
|
return {};
|
|
@@ -309,10 +319,8 @@ let AsyncConfigHelperService = AsyncConfigHelperService_1 = class AsyncConfigHel
|
|
|
309
319
|
this.logger.debug('Loading configuration lazily');
|
|
310
320
|
const awsFactory = await this.createAsyncConfigFactory();
|
|
311
321
|
const config = awsFactory();
|
|
312
|
-
// Cache the configuration
|
|
313
|
-
const cachedConfig = config;
|
|
314
322
|
this.logger.debug('Lazy configuration loading completed');
|
|
315
|
-
return
|
|
323
|
+
return config;
|
|
316
324
|
}
|
|
317
325
|
catch (error) {
|
|
318
326
|
const lazyError = error instanceof Error ? error : new Error(String(error));
|
|
@@ -352,4 +360,4 @@ AsyncConfigHelperService = AsyncConfigHelperService_1 = __decorate([
|
|
|
352
360
|
__metadata("design:paramtypes", [FactoryRegistrationService, Object])
|
|
353
361
|
], AsyncConfigHelperService);
|
|
354
362
|
export { AsyncConfigHelperService };
|
|
355
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtY29uZmlnLWhlbHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uL3NlcnZpY2VzL2FzeW5jLWNvbmZpZy1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTVGOzs7O0dBSUc7QUFFSSxJQUFNLHdCQUF3QixnQ0FBOUIsTUFBTSx3QkFBd0I7SUFJaEI7SUFFQTtJQUxGLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQywwQkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwRSxZQUNtQiwwQkFBc0QsRUFFdEQsVUFBOEIsRUFBRTtRQUZoQywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBRXRELFlBQU8sR0FBUCxPQUFPLENBQXlCO0lBQ2hELENBQUM7SUFFSjs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyx3QkFBd0I7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUM7WUFDSCwrQ0FBK0M7WUFDL0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUUvRSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7Z0JBQ3ZFLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBRUQsMERBQTBEO1lBQzFELE1BQU0sZUFBZSxHQUFrQixHQUFHLEVBQUU7Z0JBQzFDLE1BQU0sY0FBYyxHQUF3QixFQUFFLENBQUM7Z0JBRS9DLEtBQUssTUFBTSxPQUFPLElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ25DLElBQUksQ0FBQzt3QkFDSCxNQUFNLGFBQWEsR0FBRyxPQUFPLEVBQUUsQ0FBQzt3QkFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7b0JBQy9DLENBQUM7b0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQzt3QkFDZixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDM0QsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU8sY0FBYyxDQUFDO1lBQ3hCLENBQUMsQ0FBQztZQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxZQUFZLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ25HLE9BQU8sZUFBZSxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUVqRixnQ0FBZ0M7WUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLFlBQVksQ0FBQztZQUNyQixDQUFDO1lBRUQsbUNBQW1DO1lBQ25DLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztnQkFDN0QsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BCLENBQUM7WUFFRCxNQUFNLFlBQVksQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxVQUFvQjtRQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdkYsSUFBSSxDQUFDO1lBQ0gsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUUxRyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkRBQTZELENBQUMsQ0FBQztnQkFDaEYsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxtQkFBbUIsQ0FBQyxNQUFNLDZCQUE2QixDQUFDLENBQUM7WUFDdEYsT0FBTyxtQkFBbUIsQ0FBQztRQUM3QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sZUFBZSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsOENBQThDLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFFbkYsZ0NBQWdDO1lBQ2hDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxlQUFlLENBQUM7WUFDeEIsQ0FBQztZQUVELHFDQUFxQztZQUNyQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7Z0JBQzFFLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUVELE1BQU0sZUFBZSxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsa0NBQWtDLENBQUMsZUFBc0IsRUFBRTtRQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsWUFBWSxDQUFDLE1BQU0sZUFBZSxDQUFDLENBQUM7UUFFckYsT0FBTyxLQUFLLEVBQUUsR0FBRyxxQkFBNEIsRUFBZ0MsRUFBRTtZQUM3RSxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFFL0QsbUNBQW1DO2dCQUNuQyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUV6RCx3Q0FBd0M7Z0JBQ3hDLE1BQU0sYUFBYSxHQUF3QjtvQkFDekMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO29CQUNsQixRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJO29CQUMvQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxJQUFJLElBQUk7b0JBQ2pELGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxlQUFlLElBQUksSUFBSTtpQkFDdEUsQ0FBQztnQkFFRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO2dCQUMzRSxPQUFPLGFBQWEsQ0FBQztZQUN2QixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLGVBQWUsR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNsRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFFekYsZ0NBQWdDO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sZUFBZSxDQUFDO2dCQUN4QixDQUFDO2dCQUVELHlDQUF5QztnQkFDekMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO29CQUMxRSxPQUFPO3dCQUNMLElBQUksRUFBRSxFQUFFO3dCQUNSLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLElBQUk7d0JBQy9DLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxLQUFLLElBQUksSUFBSTt3QkFDakQsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLGVBQWUsSUFBSSxJQUFJO3FCQUN0RSxDQUFDO2dCQUNKLENBQUM7Z0JBRUQsTUFBTSxlQUFlLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsd0JBQXdCLENBQUMsZUFBK0I7UUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUM7WUFDSCxtQ0FBbUM7WUFDbkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUV6RCw2Q0FBNkM7WUFDN0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixPQUFPLFVBQVUsQ0FBQztZQUNwQixDQUFDO1lBRUQsd0JBQXdCO1lBQ3hCLE1BQU0sYUFBYSxHQUFrQixHQUFHLEVBQUU7Z0JBQ3hDLE1BQU0sU0FBUyxHQUFHLFVBQVUsRUFBRSxDQUFDO2dCQUMvQixNQUFNLGNBQWMsR0FBRyxlQUFlLEVBQUUsQ0FBQztnQkFFekMsMkNBQTJDO2dCQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUM7Z0JBRTFELElBQUksVUFBVSxLQUFLLFdBQVcsRUFBRSxDQUFDO29CQUMvQixPQUFPLEVBQUUsR0FBRyxjQUFjLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztnQkFDN0MsQ0FBQztxQkFBTSxJQUFJLFVBQVUsS0FBSyxhQUFhLEVBQUUsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLEdBQUcsU0FBUyxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7Z0JBQzdDLENBQUM7cUJBQU0sQ0FBQztvQkFDTix5Q0FBeUM7b0JBQ3pDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ25ELENBQUM7WUFDSCxDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxVQUFVLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3RSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV4RSxnQ0FBZ0M7WUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLFVBQVUsQ0FBQztZQUNuQixDQUFDO1lBRUQsdURBQXVEO1lBQ3ZELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0NBQStDLENBQUMsQ0FBQztnQkFDbEUsT0FBTyxlQUFlLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUVELE1BQU0sVUFBVSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLHdCQUF3QixDQUFDLGNBQW1DLEVBQUU7UUFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUM7WUFDSCxtQ0FBbUM7WUFDbkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUV6RCxpQ0FBaUM7WUFDakMsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDNUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUVuRCwwQkFBMEI7WUFDMUIsTUFBTSxlQUFlLEdBQXdCO2dCQUMzQyxHQUFHLFdBQVc7Z0JBQ2QsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQztnQkFDN0csS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUM7Z0JBQ3pHLGVBQWUsRUFBRSxXQUFXLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxlQUFlLElBQUksSUFBSSxDQUFDO2FBQ2xKLENBQUM7WUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sZUFBZSxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUVqRixnQ0FBZ0M7WUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLFlBQVksQ0FBQztZQUNyQixDQUFDO1lBRUQsa0NBQWtDO1lBQ2xDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDOUQsT0FBTyxXQUFXLENBQUM7WUFDckIsQ0FBQztZQUVELE1BQU0sWUFBWSxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsc0JBQXNCO1FBSzFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFFL0QsTUFBTSxNQUFNLEdBQUc7WUFDYixXQUFXLEVBQUUsS0FBSztZQUNsQixjQUFjLEVBQUUsQ0FBQztZQUNqQixNQUFNLEVBQUUsRUFBYztTQUN2QixDQUFDO1FBRUYsSUFBSSxDQUFDO1lBQ0gsa0RBQWtEO1lBQ2xELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFNUUsTUFBTSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMxQyxNQUFNLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFFekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLE1BQU0sQ0FBQyxXQUFXLGVBQWUsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDckgsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLGlCQUFpQixHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFFL0QsSUFBSSxZQUFZLEdBQStCLElBQUksQ0FBQztRQUNwRCxJQUFJLGNBQWMsR0FBd0MsSUFBSSxDQUFDO1FBRS9ELE9BQU8sR0FBRyxFQUFFO1lBQ1Ysb0NBQW9DO1lBQ3BDLElBQUksWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUMxQixPQUFPLFlBQVksQ0FBQztZQUN0QixDQUFDO1lBRUQsMkNBQTJDO1lBQzNDLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ25CLDhEQUE4RDtnQkFDOUQsZ0VBQWdFO2dCQUNoRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywyREFBMkQsQ0FBQyxDQUFDO2dCQUM5RSxPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFFRCw4QkFBOEI7WUFDOUIsY0FBYyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBRWhELCtEQUErRDtZQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1lBQ2xFLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNLLEtBQUssQ0FBQyx1QkFBdUI7UUFDbkMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUVsRCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3pELE1BQU0sTUFBTSxHQUFHLFVBQVUsRUFBRSxDQUFDO1lBRTVCLDBCQUEwQjtZQUMxQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUM7WUFFNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMxRCxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sU0FBUyxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFbkUsK0JBQStCO1lBQy9CLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFNBQVMsQ0FBQyxNQUEyQixFQUFFLE1BQTJCO1FBQ3hFLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUU3QixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pFLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDbEYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNuRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGLENBQUE7QUE1WFksd0JBQXdCO0lBRHBDLFVBQVUsRUFBRTtJQU1SLFdBQUEsUUFBUSxFQUFFLENBQUE7SUFBRSxXQUFBLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO3FDQURiLDBCQUEwQjtHQUo5RCx3QkFBd0IsQ0E0WHBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTG9nZ2VyLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQG5lc3Rqcy9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdGYWN0b3J5LCBDb25maWdNb2R1bGVPcHRpb25zIH0gZnJvbSAnQG5lc3Rqcy9jb25maWcnO1xyXG5pbXBvcnQgeyBGYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZSB9IGZyb20gJy4vZmFjdG9yeS1yZWdpc3RyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEludGVncmF0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZWdyYXRpb24tb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBORVNUSlNfQ09ORklHX0FXU19JTlRFR1JBVElPTl9PUFRJT05TIH0gZnJvbSAnLi4vbmVzdGpzLWNvbmZpZy1pbnRlZ3JhdGlvbi5tb2R1bGUnO1xyXG5cclxuLyoqXHJcbiAqIEhlbHBlciBzZXJ2aWNlIGZvciBhc3luYyBjb25maWd1cmF0aW9uIHN1cHBvcnQgd2l0aCBAbmVzdGpzL2NvbmZpZy5cclxuICogVGhpcyBzZXJ2aWNlIHByb3ZpZGVzIHV0aWxpdGllcyBmb3IgY3JlYXRpbmcgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3JpZXNcclxuICogYW5kIG1hbmFnaW5nIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGluIGFzeW5jIHNjZW5hcmlvcy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFzeW5jQ29uZmlnSGVscGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBuZXcgTG9nZ2VyKEFzeW5jQ29uZmlnSGVscGVyU2VydmljZS5uYW1lKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZhY3RvcnlSZWdpc3RyYXRpb25TZXJ2aWNlOiBGYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkVTVEpTX0NPTkZJR19BV1NfSU5URUdSQVRJT05fT1BUSU9OUykgXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEludGVncmF0aW9uT3B0aW9ucyA9IHt9XHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYW4gYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3J5IHRoYXQgbG9hZHMgQVdTIGNvbmZpZ3VyYXRpb24uXHJcbiAgICogVGhpcyBmYWN0b3J5IGNhbiBiZSB1c2VkIHdpdGggQG5lc3Rqcy9jb25maWcncyBsb2FkIGFycmF5LlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmZpZ3VyYXRpb24gZmFjdG9yeVxyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZUFzeW5jQ29uZmlnRmFjdG9yeSgpOiBQcm9taXNlPENvbmZpZ0ZhY3Rvcnk+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDcmVhdGluZyBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gUmVnaXN0ZXIgQVdTIGZhY3RvcmllcyBhbmQgZ2V0IHRoZSBmaXJzdCBvbmVcclxuICAgICAgY29uc3QgYXdzRmFjdG9yaWVzID0gYXdhaXQgdGhpcy5mYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZS5yZWdpc3RlckZhY3RvcmllcygpO1xyXG4gICAgICBcclxuICAgICAgaWYgKGF3c0ZhY3Rvcmllcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdObyBBV1MgZmFjdG9yaWVzIGF2YWlsYWJsZSwgY3JlYXRpbmcgZW1wdHkgZmFjdG9yeScpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiAoe30pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvLyBDcmVhdGUgYSBjb21iaW5lZCBmYWN0b3J5IHRoYXQgbWVyZ2VzIGFsbCBBV1MgZmFjdG9yaWVzXHJcbiAgICAgIGNvbnN0IGNvbWJpbmVkRmFjdG9yeTogQ29uZmlnRmFjdG9yeSA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBjb21iaW5lZENvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGZvciAoY29uc3QgZmFjdG9yeSBvZiBhd3NGYWN0b3JpZXMpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcnlDb25maWcgPSBmYWN0b3J5KCk7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY29tYmluZWRDb25maWcsIGZhY3RvcnlDb25maWcpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYEVycm9yIGV4ZWN1dGluZyBBV1MgZmFjdG9yeTpgLCBlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBjb21iaW5lZENvbmZpZztcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBDcmVhdGVkIGFzeW5jIGNvbmZpZ3VyYXRpb24gZmFjdG9yeSB3aXRoICR7YXdzRmFjdG9yaWVzLmxlbmd0aH0gQVdTIGZhY3Rvcmllc2ApO1xyXG4gICAgICByZXR1cm4gY29tYmluZWRGYWN0b3J5O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgZmFjdG9yeUVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBhc3luYyBjb25maWd1cmF0aW9uIGZhY3Rvcnk6JywgZmFjdG9yeUVycm9yKTtcclxuICAgICAgXHJcbiAgICAgIC8vIEhhbmRsZSBlcnJvciBiYXNlZCBvbiBvcHRpb25zXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFpbE9uQXdzRXJyb3IpIHtcclxuICAgICAgICB0aHJvdyBmYWN0b3J5RXJyb3I7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIFJldHVybiBlbXB0eSBmYWN0b3J5IGFzIGZhbGxiYWNrXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFsbGJhY2tUb0xvY2FsKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGVtcHR5IGZhY3RvcnkgZHVlIHRvIEFXUyBlcnJvcicpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiAoe30pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBmYWN0b3J5RXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgbXVsdGlwbGUgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3JpZXMgZm9yIG5hbWVzcGFjZXMuXHJcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBzZXBhcmF0ZSBmYWN0b3JpZXMgZm9yIGVhY2ggbmFtZXNwYWNlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gQXJyYXkgb2YgbmFtZXNwYWNlIG5hbWVzXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gYXJyYXkgb2YgbmFtZXNwYWNlZCBjb25maWd1cmF0aW9uIGZhY3Rvcmllc1xyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZUFzeW5jTmFtZXNwYWNlZEZhY3RvcmllcyhuYW1lc3BhY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8Q29uZmlnRmFjdG9yeVtdPiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgYXN5bmMgbmFtZXNwYWNlZCBmYWN0b3JpZXMgZm9yOiAke25hbWVzcGFjZXMuam9pbignLCAnKX1gKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgbmFtZXNwYWNlZEZhY3RvcmllcyA9IGF3YWl0IHRoaXMuZmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UucmVnaXN0ZXJOYW1lc3BhY2VkRmFjdG9yaWVzKG5hbWVzcGFjZXMpO1xyXG4gICAgICBcclxuICAgICAgaWYgKG5hbWVzcGFjZWRGYWN0b3JpZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignTm8gbmFtZXNwYWNlZCBmYWN0b3JpZXMgYXZhaWxhYmxlLCBjcmVhdGluZyBlbXB0eSBmYWN0b3JpZXMnKTtcclxuICAgICAgICByZXR1cm4gbmFtZXNwYWNlcy5tYXAoKCkgPT4gKCkgPT4gKHt9KSk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBDcmVhdGVkICR7bmFtZXNwYWNlZEZhY3Rvcmllcy5sZW5ndGh9IGFzeW5jIG5hbWVzcGFjZWQgZmFjdG9yaWVzYCk7XHJcbiAgICAgIHJldHVybiBuYW1lc3BhY2VkRmFjdG9yaWVzO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgbmFtZXNwYWNlZEVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBhc3luYyBuYW1lc3BhY2VkIGZhY3RvcmllczonLCBuYW1lc3BhY2VkRXJyb3IpO1xyXG4gICAgICBcclxuICAgICAgLy8gSGFuZGxlIGVycm9yIGJhc2VkIG9uIG9wdGlvbnNcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5mYWlsT25Bd3NFcnJvcikge1xyXG4gICAgICAgIHRocm93IG5hbWVzcGFjZWRFcnJvcjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gUmV0dXJuIGVtcHR5IGZhY3RvcmllcyBhcyBmYWxsYmFja1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ1JldHVybmluZyBlbXB0eSBuYW1lc3BhY2VkIGZhY3RvcmllcyBkdWUgdG8gQVdTIGVycm9yJyk7XHJcbiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZXMubWFwKCgpID0+ICgpID0+ICh7fSkpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBuYW1lc3BhY2VkRXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYW4gYXN5bmMgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggZGVwZW5kZW5jeSBpbmplY3Rpb24uXHJcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBhIGZhY3RvcnkgdGhhdCBjYW4gcmVjZWl2ZSBpbmplY3RlZCBkZXBlbmRlbmNpZXMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRlcGVuZGVuY2llcyAtIEFycmF5IG9mIGRlcGVuZGVuY3kgdG9rZW5zIHRvIGluamVjdFxyXG4gICAqIEByZXR1cm5zIEFzeW5jIGZhY3RvcnkgZnVuY3Rpb25cclxuICAgKi9cclxuICBjcmVhdGVBc3luY0ZhY3RvcnlXaXRoRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llczogYW55W10gPSBbXSk6ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxDb25maWdNb2R1bGVPcHRpb25zPiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgYXN5bmMgZmFjdG9yeSB3aXRoICR7ZGVwZW5kZW5jaWVzLmxlbmd0aH0gZGVwZW5kZW5jaWVzYCk7XHJcbiAgICBcclxuICAgIHJldHVybiBhc3luYyAoLi4uX2luamVjdGVkRGVwZW5kZW5jaWVzOiBhbnlbXSk6IFByb21pc2U8Q29uZmlnTW9kdWxlT3B0aW9ucz4gPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdFeGVjdXRpbmcgYXN5bmMgZmFjdG9yeSB3aXRoIGRlcGVuZGVuY2llcycpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIENyZWF0ZSBBV1MgY29uZmlndXJhdGlvbiBmYWN0b3J5XHJcbiAgICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gQ3JlYXRlIGVuaGFuY2VkIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZ09wdGlvbnM6IENvbmZpZ01vZHVsZU9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBsb2FkOiBbYXdzRmFjdG9yeV0sXHJcbiAgICAgICAgICBpc0dsb2JhbDogdGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSxcclxuICAgICAgICAgIGNhY2hlOiB0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmNhY2hlID8/IHRydWUsXHJcbiAgICAgICAgICBleHBhbmRWYXJpYWJsZXM6IHRoaXMub3B0aW9ucy5mYWN0b3J5T3B0aW9ucz8uZXhwYW5kVmFyaWFibGVzID8/IHRydWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQXN5bmMgZmFjdG9yeSB3aXRoIGRlcGVuZGVuY2llcyBleGVjdXRlZCBzdWNjZXNzZnVsbHknKTtcclxuICAgICAgICByZXR1cm4gY29uZmlnT3B0aW9ucztcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zdCBkZXBlbmRlbmN5RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBleGVjdXRlIGFzeW5jIGZhY3Rvcnkgd2l0aCBkZXBlbmRlbmNpZXM6JywgZGVwZW5kZW5jeUVycm9yKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFpbE9uQXdzRXJyb3IpIHtcclxuICAgICAgICAgIHRocm93IGRlcGVuZGVuY3lFcnJvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gUmV0dXJuIGJhc2ljIGNvbmZpZ3VyYXRpb24gYXMgZmFsbGJhY2tcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGJhc2ljIGNvbmZpZ3VyYXRpb24gZHVlIHRvIGRlcGVuZGVuY3kgZXJyb3InKTtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxvYWQ6IFtdLFxyXG4gICAgICAgICAgICBpc0dsb2JhbDogdGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgY2FjaGU6IHRoaXMub3B0aW9ucy5mYWN0b3J5T3B0aW9ucz8uY2FjaGUgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgZXhwYW5kVmFyaWFibGVzOiB0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmV4cGFuZFZhcmlhYmxlcyA/PyB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhyb3cgZGVwZW5kZW5jeUVycm9yO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGFuIGFzeW5jIGZhY3RvcnkgdGhhdCBtZXJnZXMgd2l0aCBleGlzdGluZyBjb25maWd1cmF0aW9uLlxyXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmYWN0b3J5IHRoYXQgY2FuIGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgY29uZmlndXJhdGlvbiBzb3VyY2VzLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBleGlzdGluZ0ZhY3RvcnkgLSBFeGlzdGluZyBjb25maWd1cmF0aW9uIGZhY3RvcnkgdG8gbWVyZ2Ugd2l0aFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIG1lcmdlZCBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgKi9cclxuICBhc3luYyBjcmVhdGVNZXJnZWRBc3luY0ZhY3RvcnkoZXhpc3RpbmdGYWN0b3J5PzogQ29uZmlnRmFjdG9yeSk6IFByb21pc2U8Q29uZmlnRmFjdG9yeT4ge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ0NyZWF0aW5nIG1lcmdlZCBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gQ3JlYXRlIEFXUyBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBJZiBubyBleGlzdGluZyBmYWN0b3J5LCByZXR1cm4gQVdTIGZhY3RvcnlcclxuICAgICAgaWYgKCFleGlzdGluZ0ZhY3RvcnkpIHtcclxuICAgICAgICByZXR1cm4gYXdzRmFjdG9yeTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gQ3JlYXRlIG1lcmdlZCBmYWN0b3J5XHJcbiAgICAgIGNvbnN0IG1lcmdlZEZhY3Rvcnk6IENvbmZpZ0ZhY3RvcnkgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYXdzQ29uZmlnID0gYXdzRmFjdG9yeSgpO1xyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnID0gZXhpc3RpbmdGYWN0b3J5KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gTWVyZ2UgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gcHJlY2VkZW5jZVxyXG4gICAgICAgIGNvbnN0IHByZWNlZGVuY2UgPSB0aGlzLm9wdGlvbnMucHJlY2VkZW5jZSB8fCAnYXdzLWZpcnN0JztcclxuICAgICAgICBcclxuICAgICAgICBpZiAocHJlY2VkZW5jZSA9PT0gJ2F3cy1maXJzdCcpIHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLmV4aXN0aW5nQ29uZmlnLCAuLi5hd3NDb25maWcgfTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByZWNlZGVuY2UgPT09ICdsb2NhbC1maXJzdCcpIHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLmF3c0NvbmZpZywgLi4uZXhpc3RpbmdDb25maWcgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gbWVyZ2UgLSBkZWVwIG1lcmdlIGJvdGggY29uZmlndXJhdGlvbnNcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRlZXBNZXJnZShleGlzdGluZ0NvbmZpZywgYXdzQ29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRlZCBtZXJnZWQgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3J5Jyk7XHJcbiAgICAgIHJldHVybiBtZXJnZWRGYWN0b3J5O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgbWVyZ2VFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgbWVyZ2VkIGFzeW5jIGZhY3Rvcnk6JywgbWVyZ2VFcnJvcik7XHJcbiAgICAgIFxyXG4gICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhaWxPbkF3c0Vycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgbWVyZ2VFcnJvcjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gUmV0dXJuIGV4aXN0aW5nIGZhY3Rvcnkgb3IgZW1wdHkgZmFjdG9yeSBhcyBmYWxsYmFja1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ1JldHVybmluZyBleGlzdGluZyBmYWN0b3J5IGR1ZSB0byBtZXJnZSBlcnJvcicpO1xyXG4gICAgICAgIHJldHVybiBleGlzdGluZ0ZhY3RvcnkgfHwgKCgpID0+ICh7fSkpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBtZXJnZUVycm9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYXN5bmMgbW9kdWxlIHNldHVwLlxyXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgb3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggQ29uZmlnTW9kdWxlLmZvclJvb3QoKS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gYmFzZU9wdGlvbnMgLSBCYXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmhhbmNlXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gZW5oYW5jZWQgY29uZmlndXJhdGlvbiBvcHRpb25zXHJcbiAgICovXHJcbiAgYXN5bmMgY3JlYXRlQXN5bmNDb25maWdPcHRpb25zKGJhc2VPcHRpb25zOiBDb25maWdNb2R1bGVPcHRpb25zID0ge30pOiBQcm9taXNlPENvbmZpZ01vZHVsZU9wdGlvbnM+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDcmVhdGluZyBhc3luYyBjb25maWd1cmF0aW9uIG9wdGlvbnMnKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gQ3JlYXRlIEFXUyBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBNZXJnZSB3aXRoIGV4aXN0aW5nIGxvYWQgYXJyYXlcclxuICAgICAgY29uc3QgZXhpc3RpbmdMb2FkID0gYmFzZU9wdGlvbnMubG9hZCB8fCBbXTtcclxuICAgICAgY29uc3QgZW5oYW5jZWRMb2FkID0gWy4uLmV4aXN0aW5nTG9hZCwgYXdzRmFjdG9yeV07XHJcbiAgICAgIFxyXG4gICAgICAvLyBDcmVhdGUgZW5oYW5jZWQgb3B0aW9uc1xyXG4gICAgICBjb25zdCBlbmhhbmNlZE9wdGlvbnM6IENvbmZpZ01vZHVsZU9wdGlvbnMgPSB7XHJcbiAgICAgICAgLi4uYmFzZU9wdGlvbnMsXHJcbiAgICAgICAgbG9hZDogZW5oYW5jZWRMb2FkLFxyXG4gICAgICAgIGlzR2xvYmFsOiBiYXNlT3B0aW9ucy5pc0dsb2JhbCAhPT0gdW5kZWZpbmVkID8gYmFzZU9wdGlvbnMuaXNHbG9iYWwgOiAodGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSksXHJcbiAgICAgICAgY2FjaGU6IGJhc2VPcHRpb25zLmNhY2hlICE9PSB1bmRlZmluZWQgPyBiYXNlT3B0aW9ucy5jYWNoZSA6ICh0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmNhY2hlID8/IHRydWUpLFxyXG4gICAgICAgIGV4cGFuZFZhcmlhYmxlczogYmFzZU9wdGlvbnMuZXhwYW5kVmFyaWFibGVzICE9PSB1bmRlZmluZWQgPyBiYXNlT3B0aW9ucy5leHBhbmRWYXJpYWJsZXMgOiAodGhpcy5vcHRpb25zLmZhY3RvcnlPcHRpb25zPy5leHBhbmRWYXJpYWJsZXMgPz8gdHJ1ZSksXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRlZCBhc3luYyBjb25maWd1cmF0aW9uIG9wdGlvbnMnKTtcclxuICAgICAgcmV0dXJuIGVuaGFuY2VkT3B0aW9ucztcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnNFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgYXN5bmMgY29uZmlndXJhdGlvbiBvcHRpb25zOicsIG9wdGlvbnNFcnJvcik7XHJcbiAgICAgIFxyXG4gICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhaWxPbkF3c0Vycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgb3B0aW9uc0Vycm9yO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvLyBSZXR1cm4gYmFzZSBvcHRpb25zIGFzIGZhbGxiYWNrXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFsbGJhY2tUb0xvY2FsKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGJhc2Ugb3B0aW9ucyBkdWUgdG8gYXN5bmMgZXJyb3InKTtcclxuICAgICAgICByZXR1cm4gYmFzZU9wdGlvbnM7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRocm93IG9wdGlvbnNFcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIEFXUyBjb25maWd1cmF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgYXN5bmMgbG9hZGluZy5cclxuICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgQVdTIGludGVncmF0aW9uIHNob3VsZCBiZSBlbmFibGVkLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGF2YWlsYWJpbGl0eSBzdGF0dXNcclxuICAgKi9cclxuICBhc3luYyBjaGVja0FzeW5jQXZhaWxhYmlsaXR5KCk6IFByb21pc2U8e1xyXG4gICAgaXNBdmFpbGFibGU6IGJvb2xlYW47XHJcbiAgICBmYWN0b3JpZXNDb3VudDogbnVtYmVyO1xyXG4gICAgZXJyb3JzOiBzdHJpbmdbXTtcclxuICB9PiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ2hlY2tpbmcgYXN5bmMgY29uZmlndXJhdGlvbiBhdmFpbGFiaWxpdHknKTtcclxuICAgIFxyXG4gICAgY29uc3Qgc3RhdHVzID0ge1xyXG4gICAgICBpc0F2YWlsYWJsZTogZmFsc2UsXHJcbiAgICAgIGZhY3Rvcmllc0NvdW50OiAwLFxyXG4gICAgICBlcnJvcnM6IFtdIGFzIHN0cmluZ1tdXHJcbiAgICB9O1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFRyeSB0byByZWdpc3RlciBmYWN0b3JpZXMgdG8gY2hlY2sgYXZhaWxhYmlsaXR5XHJcbiAgICAgIGNvbnN0IGZhY3RvcmllcyA9IGF3YWl0IHRoaXMuZmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UucmVnaXN0ZXJGYWN0b3JpZXMoKTtcclxuICAgICAgXHJcbiAgICAgIHN0YXR1cy5pc0F2YWlsYWJsZSA9IGZhY3Rvcmllcy5sZW5ndGggPiAwO1xyXG4gICAgICBzdGF0dXMuZmFjdG9yaWVzQ291bnQgPSBmYWN0b3JpZXMubGVuZ3RoO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEFzeW5jIGF2YWlsYWJpbGl0eSBjaGVjazogYXZhaWxhYmxlPSR7c3RhdHVzLmlzQXZhaWxhYmxlfSwgZmFjdG9yaWVzPSR7c3RhdHVzLmZhY3Rvcmllc0NvdW50fWApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgYXZhaWxhYmlsaXR5RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgIHN0YXR1cy5lcnJvcnMucHVzaChhdmFpbGFiaWxpdHlFcnJvci5tZXNzYWdlKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0FzeW5jIGF2YWlsYWJpbGl0eSBjaGVjayBmYWlsZWQ6JywgYXZhaWxhYmlsaXR5RXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgbG9hZHMgY29uZmlndXJhdGlvbiBvbi1kZW1hbmQuXHJcbiAgICogVGhpcyBmYWN0b3J5IGRlbGF5cyBBV1MgY29uZmlndXJhdGlvbiBsb2FkaW5nIHVudGlsIGl0J3MgYWN0dWFsbHkgbmVlZGVkLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIENvbmZpZ3VyYXRpb24gZmFjdG9yeSB3aXRoIGxhenkgbG9hZGluZ1xyXG4gICAqL1xyXG4gIGNyZWF0ZUxhenlBc3luY0ZhY3RvcnkoKTogQ29uZmlnRmFjdG9yeSB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRpbmcgbGF6eSBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgbGV0IGNhY2hlZENvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IGxvYWRpbmdQcm9taXNlOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHwgbnVsbCA9IG51bGw7XHJcbiAgICBcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIC8vIFJldHVybiBjYWNoZWQgY29uZmlnIGlmIGF2YWlsYWJsZVxyXG4gICAgICBpZiAoY2FjaGVkQ29uZmlnICE9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZENvbmZpZztcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gSWYgYWxyZWFkeSBsb2FkaW5nLCB3YWl0IGZvciB0aGUgcHJvbWlzZVxyXG4gICAgICBpZiAobG9hZGluZ1Byb21pc2UpIHtcclxuICAgICAgICAvLyBGb3Igc3luY2hyb25vdXMgZmFjdG9yeSwgd2UgY2FuJ3Qgd2FpdCBmb3IgYXN5bmMgb3BlcmF0aW9uc1xyXG4gICAgICAgIC8vIFJldHVybiBlbXB0eSBjb25maWcgYW5kIGxldCB0aGUgcHJvbWlzZSByZXNvbHZlIGluIGJhY2tncm91bmRcclxuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdMYXp5IGZhY3RvcnkgY2FsbGVkIHdoaWxlIGxvYWRpbmcsIHJldHVybmluZyBlbXB0eSBjb25maWcnKTtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIFN0YXJ0IGxvYWRpbmcgY29uZmlndXJhdGlvblxyXG4gICAgICBsb2FkaW5nUHJvbWlzZSA9IHRoaXMubG9hZENvbmZpZ3VyYXRpb25MYXppbHkoKTtcclxuICAgICAgXHJcbiAgICAgIC8vIFJldHVybiBlbXB0eSBjb25maWcgZm9yIG5vdyAod2lsbCBiZSBwb3B1bGF0ZWQgb24gbmV4dCBjYWxsKVxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU3RhcnRlZCBsYXp5IGxvYWRpbmcsIHJldHVybmluZyBlbXB0eSBjb25maWcnKTtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgY29uZmlndXJhdGlvbiBsYXppbHkgZm9yIHRoZSBsYXp5IGZhY3RvcnkuXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gY29uZmlndXJhdGlvbiBkYXRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29uZmlndXJhdGlvbkxhemlseSgpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdMb2FkaW5nIGNvbmZpZ3VyYXRpb24gbGF6aWx5Jyk7XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBhd3NGYWN0b3J5ID0gYXdhaXQgdGhpcy5jcmVhdGVBc3luY0NvbmZpZ0ZhY3RvcnkoKTtcclxuICAgICAgY29uc3QgY29uZmlnID0gYXdzRmFjdG9yeSgpO1xyXG4gICAgICBcclxuICAgICAgLy8gQ2FjaGUgdGhlIGNvbmZpZ3VyYXRpb25cclxuICAgICAgY29uc3QgY2FjaGVkQ29uZmlnID0gY29uZmlnO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0xhenkgY29uZmlndXJhdGlvbiBsb2FkaW5nIGNvbXBsZXRlZCcpO1xyXG4gICAgICByZXR1cm4gY2FjaGVkQ29uZmlnO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgbGF6eUVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignTGF6eSBjb25maWd1cmF0aW9uIGxvYWRpbmcgZmFpbGVkOicsIGxhenlFcnJvcik7XHJcbiAgICAgIFxyXG4gICAgICAvLyBSZXR1cm4gZW1wdHkgY29uZmlnIG9uIGVycm9yXHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZXAgbWVyZ2UgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cy5cclxuICAgKiBAcGFyYW0gdGFyZ2V0IC0gVGFyZ2V0IG9iamVjdFxyXG4gICAqIEBwYXJhbSBzb3VyY2UgLSBTb3VyY2Ugb2JqZWN0XHJcbiAgICogQHJldHVybnMgTWVyZ2VkIG9iamVjdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGVlcE1lcmdlKHRhcmdldDogUmVjb3JkPHN0cmluZywgYW55Piwgc291cmNlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSB7IC4uLnRhcmdldCB9O1xyXG5cclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNvdXJjZSkpIHtcclxuICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgaWYgKHJlc3VsdFtrZXldICYmIHR5cGVvZiByZXN1bHRba2V5XSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkocmVzdWx0W2tleV0pKSB7XHJcbiAgICAgICAgICByZXN1bHRba2V5XSA9IHRoaXMuZGVlcE1lcmdlKHJlc3VsdFtrZXldLCB2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3VsdFtrZXldID0geyAuLi52YWx1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn0iXX0=
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtY29uZmlnLWhlbHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uL3NlcnZpY2VzL2FzeW5jLWNvbmZpZy1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTVGOzs7O0dBSUc7QUFFSSxJQUFNLHdCQUF3QixnQ0FBOUIsTUFBTSx3QkFBd0I7SUFJaEI7SUFFQTtJQUxGLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQywwQkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwRSxZQUNtQiwwQkFBc0QsRUFFdEQsVUFBOEIsRUFBRTtRQUZoQywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBRXRELFlBQU8sR0FBUCxPQUFPLENBQXlCO0lBQ2hELENBQUM7SUFFSjs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyx3QkFBd0I7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUM7WUFDSCwrQ0FBK0M7WUFDL0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUUvRSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7Z0JBQ3ZFLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENB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LENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGLENBQUE7QUFuWVksd0JBQXdCO0lBRHBDLFVBQVUsRUFBRTtJQU1SLFdBQUEsUUFBUSxFQUFFLENBQUE7SUFBRSxXQUFBLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO3FDQURiLDBCQUEwQjtHQUo5RCx3QkFBd0IsQ0FtWXBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTG9nZ2VyLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQG5lc3Rqcy9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdGYWN0b3J5LCBDb25maWdNb2R1bGVPcHRpb25zIH0gZnJvbSAnQG5lc3Rqcy9jb25maWcnO1xyXG5pbXBvcnQgeyBGYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZSB9IGZyb20gJy4vZmFjdG9yeS1yZWdpc3RyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEludGVncmF0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZWdyYXRpb24tb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBORVNUSlNfQ09ORklHX0FXU19JTlRFR1JBVElPTl9PUFRJT05TIH0gZnJvbSAnLi4vbmVzdGpzLWNvbmZpZy1pbnRlZ3JhdGlvbi5tb2R1bGUnO1xyXG5cclxuLyoqXHJcbiAqIEhlbHBlciBzZXJ2aWNlIGZvciBhc3luYyBjb25maWd1cmF0aW9uIHN1cHBvcnQgd2l0aCBAbmVzdGpzL2NvbmZpZy5cclxuICogVGhpcyBzZXJ2aWNlIHByb3ZpZGVzIHV0aWxpdGllcyBmb3IgY3JlYXRpbmcgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3JpZXNcclxuICogYW5kIG1hbmFnaW5nIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGluIGFzeW5jIHNjZW5hcmlvcy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFzeW5jQ29uZmlnSGVscGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBuZXcgTG9nZ2VyKEFzeW5jQ29uZmlnSGVscGVyU2VydmljZS5uYW1lKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZhY3RvcnlSZWdpc3RyYXRpb25TZXJ2aWNlOiBGYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkVTVEpTX0NPTkZJR19BV1NfSU5URUdSQVRJT05fT1BUSU9OUykgXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEludGVncmF0aW9uT3B0aW9ucyA9IHt9XHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYW4gYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3J5IHRoYXQgbG9hZHMgQVdTIGNvbmZpZ3VyYXRpb24uXHJcbiAgICogVGhpcyBmYWN0b3J5IGNhbiBiZSB1c2VkIHdpdGggQG5lc3Rqcy9jb25maWcncyBsb2FkIGFycmF5LlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmZpZ3VyYXRpb24gZmFjdG9yeVxyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZUFzeW5jQ29uZmlnRmFjdG9yeSgpOiBQcm9taXNlPENvbmZpZ0ZhY3Rvcnk+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDcmVhdGluZyBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gUmVnaXN0ZXIgQVdTIGZhY3RvcmllcyBhbmQgZ2V0IHRoZSBmaXJzdCBvbmVcclxuICAgICAgY29uc3QgYXdzRmFjdG9yaWVzID0gYXdhaXQgdGhpcy5mYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZS5yZWdpc3RlckZhY3RvcmllcygpO1xyXG4gICAgICBcclxuICAgICAgaWYgKGF3c0ZhY3Rvcmllcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdObyBBV1MgZmFjdG9yaWVzIGF2YWlsYWJsZSwgY3JlYXRpbmcgZW1wdHkgZmFjdG9yeScpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiAoe30pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvLyBDcmVhdGUgYSBjb21iaW5lZCBmYWN0b3J5IHRoYXQgbWVyZ2VzIGFsbCBBV1MgZmFjdG9yaWVzXHJcbiAgICAgIGNvbnN0IGNvbWJpbmVkRmFjdG9yeTogQ29uZmlnRmFjdG9yeSA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBjb21iaW5lZENvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGZvciAoY29uc3QgZmFjdG9yeSBvZiBhd3NGYWN0b3JpZXMpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcnlDb25maWcgPSBmYWN0b3J5KCk7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY29tYmluZWRDb25maWcsIGZhY3RvcnlDb25maWcpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYEVycm9yIGV4ZWN1dGluZyBBV1MgZmFjdG9yeTpgLCBlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBjb21iaW5lZENvbmZpZztcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBDcmVhdGVkIGFzeW5jIGNvbmZpZ3VyYXRpb24gZmFjdG9yeSB3aXRoICR7YXdzRmFjdG9yaWVzLmxlbmd0aH0gQVdTIGZhY3Rvcmllc2ApO1xyXG4gICAgICByZXR1cm4gY29tYmluZWRGYWN0b3J5O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgZmFjdG9yeUVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBhc3luYyBjb25maWd1cmF0aW9uIGZhY3Rvcnk6JywgZmFjdG9yeUVycm9yKTtcclxuICAgICAgXHJcbiAgICAgIC8vIEhhbmRsZSBlcnJvciBiYXNlZCBvbiBvcHRpb25zXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFpbE9uQXdzRXJyb3IpIHtcclxuICAgICAgICB0aHJvdyBmYWN0b3J5RXJyb3I7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIFJldHVybiBlbXB0eSBmYWN0b3J5IGFzIGZhbGxiYWNrXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFsbGJhY2tUb0xvY2FsKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGVtcHR5IGZhY3RvcnkgZHVlIHRvIEFXUyBlcnJvcicpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiAoe30pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBmYWN0b3J5RXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgbXVsdGlwbGUgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3JpZXMgZm9yIG5hbWVzcGFjZXMuXHJcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBzZXBhcmF0ZSBmYWN0b3JpZXMgZm9yIGVhY2ggbmFtZXNwYWNlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gQXJyYXkgb2YgbmFtZXNwYWNlIG5hbWVzXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gYXJyYXkgb2YgbmFtZXNwYWNlZCBjb25maWd1cmF0aW9uIGZhY3Rvcmllc1xyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZUFzeW5jTmFtZXNwYWNlZEZhY3RvcmllcyhuYW1lc3BhY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8Q29uZmlnRmFjdG9yeVtdPiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgYXN5bmMgbmFtZXNwYWNlZCBmYWN0b3JpZXMgZm9yOiAke25hbWVzcGFjZXMuam9pbignLCAnKX1gKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgbmFtZXNwYWNlZEZhY3RvcmllcyA9IGF3YWl0IHRoaXMuZmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UucmVnaXN0ZXJOYW1lc3BhY2VkRmFjdG9yaWVzKG5hbWVzcGFjZXMpO1xyXG4gICAgICBcclxuICAgICAgaWYgKG5hbWVzcGFjZWRGYWN0b3JpZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignTm8gbmFtZXNwYWNlZCBmYWN0b3JpZXMgYXZhaWxhYmxlLCBjcmVhdGluZyBlbXB0eSBmYWN0b3JpZXMnKTtcclxuICAgICAgICByZXR1cm4gbmFtZXNwYWNlcy5tYXAoKCkgPT4gKCkgPT4gKHt9KSk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBDcmVhdGVkICR7bmFtZXNwYWNlZEZhY3Rvcmllcy5sZW5ndGh9IGFzeW5jIG5hbWVzcGFjZWQgZmFjdG9yaWVzYCk7XHJcbiAgICAgIHJldHVybiBuYW1lc3BhY2VkRmFjdG9yaWVzO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgbmFtZXNwYWNlZEVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBhc3luYyBuYW1lc3BhY2VkIGZhY3RvcmllczonLCBuYW1lc3BhY2VkRXJyb3IpO1xyXG4gICAgICBcclxuICAgICAgLy8gSGFuZGxlIGVycm9yIGJhc2VkIG9uIG9wdGlvbnNcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5mYWlsT25Bd3NFcnJvcikge1xyXG4gICAgICAgIHRocm93IG5hbWVzcGFjZWRFcnJvcjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gUmV0dXJuIGVtcHR5IGZhY3RvcmllcyBhcyBmYWxsYmFja1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ1JldHVybmluZyBlbXB0eSBuYW1lc3BhY2VkIGZhY3RvcmllcyBkdWUgdG8gQVdTIGVycm9yJyk7XHJcbiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZXMubWFwKCgpID0+ICgpID0+ICh7fSkpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBuYW1lc3BhY2VkRXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYW4gYXN5bmMgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggZGVwZW5kZW5jeSBpbmplY3Rpb24uXHJcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBhIGZhY3RvcnkgdGhhdCBjYW4gcmVjZWl2ZSBpbmplY3RlZCBkZXBlbmRlbmNpZXMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRlcGVuZGVuY2llcyAtIEFycmF5IG9mIGRlcGVuZGVuY3kgdG9rZW5zIHRvIGluamVjdFxyXG4gICAqIEByZXR1cm5zIEFzeW5jIGZhY3RvcnkgZnVuY3Rpb25cclxuICAgKi9cclxuICBjcmVhdGVBc3luY0ZhY3RvcnlXaXRoRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llczogYW55W10gPSBbXSk6ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxDb25maWdNb2R1bGVPcHRpb25zPiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgYXN5bmMgZmFjdG9yeSB3aXRoICR7ZGVwZW5kZW5jaWVzLmxlbmd0aH0gZGVwZW5kZW5jaWVzYCk7XHJcbiAgICBcclxuICAgIHJldHVybiBhc3luYyAoLi4uX2luamVjdGVkRGVwZW5kZW5jaWVzOiBhbnlbXSk6IFByb21pc2U8Q29uZmlnTW9kdWxlT3B0aW9ucz4gPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdFeGVjdXRpbmcgYXN5bmMgZmFjdG9yeSB3aXRoIGRlcGVuZGVuY2llcycpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIENyZWF0ZSBBV1MgY29uZmlndXJhdGlvbiBmYWN0b3J5XHJcbiAgICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gQ3JlYXRlIGVuaGFuY2VkIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZ09wdGlvbnM6IENvbmZpZ01vZHVsZU9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBsb2FkOiBbYXdzRmFjdG9yeV0sXHJcbiAgICAgICAgICBpc0dsb2JhbDogdGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSxcclxuICAgICAgICAgIGNhY2hlOiB0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmNhY2hlID8/IHRydWUsXHJcbiAgICAgICAgICBleHBhbmRWYXJpYWJsZXM6IHRoaXMub3B0aW9ucy5mYWN0b3J5T3B0aW9ucz8uZXhwYW5kVmFyaWFibGVzID8/IHRydWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQXN5bmMgZmFjdG9yeSB3aXRoIGRlcGVuZGVuY2llcyBleGVjdXRlZCBzdWNjZXNzZnVsbHknKTtcclxuICAgICAgICByZXR1cm4gY29uZmlnT3B0aW9ucztcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zdCBkZXBlbmRlbmN5RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBleGVjdXRlIGFzeW5jIGZhY3Rvcnkgd2l0aCBkZXBlbmRlbmNpZXM6JywgZGVwZW5kZW5jeUVycm9yKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFpbE9uQXdzRXJyb3IpIHtcclxuICAgICAgICAgIHRocm93IGRlcGVuZGVuY3lFcnJvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gUmV0dXJuIGJhc2ljIGNvbmZpZ3VyYXRpb24gYXMgZmFsbGJhY2tcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGJhc2ljIGNvbmZpZ3VyYXRpb24gZHVlIHRvIGRlcGVuZGVuY3kgZXJyb3InKTtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxvYWQ6IFtdLFxyXG4gICAgICAgICAgICBpc0dsb2JhbDogdGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgY2FjaGU6IHRoaXMub3B0aW9ucy5mYWN0b3J5T3B0aW9ucz8uY2FjaGUgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgZXhwYW5kVmFyaWFibGVzOiB0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmV4cGFuZFZhcmlhYmxlcyA/PyB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhyb3cgZGVwZW5kZW5jeUVycm9yO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGFuIGFzeW5jIGZhY3RvcnkgdGhhdCBtZXJnZXMgd2l0aCBleGlzdGluZyBjb25maWd1cmF0aW9uLlxyXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmYWN0b3J5IHRoYXQgY2FuIGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgY29uZmlndXJhdGlvbiBzb3VyY2VzLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBleGlzdGluZ0ZhY3RvcnkgLSBFeGlzdGluZyBjb25maWd1cmF0aW9uIGZhY3RvcnkgdG8gbWVyZ2Ugd2l0aFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIG1lcmdlZCBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgKi9cclxuICBhc3luYyBjcmVhdGVNZXJnZWRBc3luY0ZhY3RvcnkoZXhpc3RpbmdGYWN0b3J5PzogQ29uZmlnRmFjdG9yeSk6IFByb21pc2U8Q29uZmlnRmFjdG9yeT4ge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ0NyZWF0aW5nIG1lcmdlZCBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gQ3JlYXRlIEFXUyBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBJZiBubyBleGlzdGluZyBmYWN0b3J5LCByZXR1cm4gQVdTIGZhY3RvcnlcclxuICAgICAgaWYgKCFleGlzdGluZ0ZhY3RvcnkpIHtcclxuICAgICAgICByZXR1cm4gYXdzRmFjdG9yeTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gQ3JlYXRlIG1lcmdlZCBmYWN0b3J5XHJcbiAgICAgIGNvbnN0IG1lcmdlZEZhY3Rvcnk6IENvbmZpZ0ZhY3RvcnkgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYXdzQ29uZmlnID0gYXdzRmFjdG9yeSgpO1xyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnID0gZXhpc3RpbmdGYWN0b3J5KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gTWVyZ2UgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gcHJlY2VkZW5jZVxyXG4gICAgICAgIGNvbnN0IHByZWNlZGVuY2UgPSB0aGlzLm9wdGlvbnMucHJlY2VkZW5jZSB8fCAnYXdzLWZpcnN0JztcclxuICAgICAgICBcclxuICAgICAgICBpZiAocHJlY2VkZW5jZSA9PT0gJ2F3cy1maXJzdCcpIHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLmV4aXN0aW5nQ29uZmlnLCAuLi5hd3NDb25maWcgfTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByZWNlZGVuY2UgPT09ICdsb2NhbC1maXJzdCcpIHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLmF3c0NvbmZpZywgLi4uZXhpc3RpbmdDb25maWcgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gbWVyZ2UgLSBkZWVwIG1lcmdlIGJvdGggY29uZmlndXJhdGlvbnNcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRlZXBNZXJnZShleGlzdGluZ0NvbmZpZywgYXdzQ29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRlZCBtZXJnZWQgYXN5bmMgY29uZmlndXJhdGlvbiBmYWN0b3J5Jyk7XHJcbiAgICAgIHJldHVybiBtZXJnZWRGYWN0b3J5O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgbWVyZ2VFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgbWVyZ2VkIGFzeW5jIGZhY3Rvcnk6JywgbWVyZ2VFcnJvcik7XHJcbiAgICAgIFxyXG4gICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhaWxPbkF3c0Vycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgbWVyZ2VFcnJvcjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gUmV0dXJuIGV4aXN0aW5nIGZhY3Rvcnkgb3IgZW1wdHkgZmFjdG9yeSBhcyBmYWxsYmFja1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhbGxiYWNrVG9Mb2NhbCkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ1JldHVybmluZyBleGlzdGluZyBmYWN0b3J5IGR1ZSB0byBtZXJnZSBlcnJvcicpO1xyXG4gICAgICAgIHJldHVybiBleGlzdGluZ0ZhY3RvcnkgfHwgKCgpID0+ICh7fSkpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aHJvdyBtZXJnZUVycm9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYXN5bmMgbW9kdWxlIHNldHVwLlxyXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgb3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggQ29uZmlnTW9kdWxlLmZvclJvb3QoKS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gYmFzZU9wdGlvbnMgLSBCYXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmhhbmNlXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gZW5oYW5jZWQgY29uZmlndXJhdGlvbiBvcHRpb25zXHJcbiAgICovXHJcbiAgYXN5bmMgY3JlYXRlQXN5bmNDb25maWdPcHRpb25zKGJhc2VPcHRpb25zOiBDb25maWdNb2R1bGVPcHRpb25zID0ge30pOiBQcm9taXNlPENvbmZpZ01vZHVsZU9wdGlvbnM+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDcmVhdGluZyBhc3luYyBjb25maWd1cmF0aW9uIG9wdGlvbnMnKTtcclxuICAgIFxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gQ3JlYXRlIEFXUyBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgICAgY29uc3QgYXdzRmFjdG9yeSA9IGF3YWl0IHRoaXMuY3JlYXRlQXN5bmNDb25maWdGYWN0b3J5KCk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBNZXJnZSB3aXRoIGV4aXN0aW5nIGxvYWQgYXJyYXlcclxuICAgICAgY29uc3QgZXhpc3RpbmdMb2FkID0gYmFzZU9wdGlvbnMubG9hZCB8fCBbXTtcclxuICAgICAgY29uc3QgZW5oYW5jZWRMb2FkID0gWy4uLmV4aXN0aW5nTG9hZCwgYXdzRmFjdG9yeV07XHJcbiAgICAgIFxyXG4gICAgICAvLyBDcmVhdGUgZW5oYW5jZWQgb3B0aW9uc1xyXG4gICAgICBjb25zdCBlbmhhbmNlZE9wdGlvbnM6IENvbmZpZ01vZHVsZU9wdGlvbnMgPSB7XHJcbiAgICAgICAgLi4uYmFzZU9wdGlvbnMsXHJcbiAgICAgICAgbG9hZDogZW5oYW5jZWRMb2FkLFxyXG4gICAgICAgIGlzR2xvYmFsOiBiYXNlT3B0aW9ucy5pc0dsb2JhbCAhPT0gdW5kZWZpbmVkID8gYmFzZU9wdGlvbnMuaXNHbG9iYWwgOiAodGhpcy5vcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSksXHJcbiAgICAgICAgY2FjaGU6IGJhc2VPcHRpb25zLmNhY2hlICE9PSB1bmRlZmluZWQgPyBiYXNlT3B0aW9ucy5jYWNoZSA6ICh0aGlzLm9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmNhY2hlID8/IHRydWUpLFxyXG4gICAgICAgIGV4cGFuZFZhcmlhYmxlczogYmFzZU9wdGlvbnMuZXhwYW5kVmFyaWFibGVzICE9PSB1bmRlZmluZWQgPyBiYXNlT3B0aW9ucy5leHBhbmRWYXJpYWJsZXMgOiAodGhpcy5vcHRpb25zLmZhY3RvcnlPcHRpb25zPy5leHBhbmRWYXJpYWJsZXMgPz8gdHJ1ZSksXHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRlZCBhc3luYyBjb25maWd1cmF0aW9uIG9wdGlvbnMnKTtcclxuICAgICAgcmV0dXJuIGVuaGFuY2VkT3B0aW9ucztcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnNFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgYXN5bmMgY29uZmlndXJhdGlvbiBvcHRpb25zOicsIG9wdGlvbnNFcnJvcik7XHJcbiAgICAgIFxyXG4gICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gb3B0aW9uc1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZhaWxPbkF3c0Vycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgb3B0aW9uc0Vycm9yO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvLyBSZXR1cm4gYmFzZSBvcHRpb25zIGFzIGZhbGxiYWNrXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFsbGJhY2tUb0xvY2FsKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignUmV0dXJuaW5nIGJhc2Ugb3B0aW9ucyBkdWUgdG8gYXN5bmMgZXJyb3InKTtcclxuICAgICAgICByZXR1cm4gYmFzZU9wdGlvbnM7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRocm93IG9wdGlvbnNFcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIEFXUyBjb25maWd1cmF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgYXN5bmMgbG9hZGluZy5cclxuICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgQVdTIGludGVncmF0aW9uIHNob3VsZCBiZSBlbmFibGVkLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGF2YWlsYWJpbGl0eSBzdGF0dXNcclxuICAgKi9cclxuICBhc3luYyBjaGVja0FzeW5jQXZhaWxhYmlsaXR5KCk6IFByb21pc2U8e1xyXG4gICAgaXNBdmFpbGFibGU6IGJvb2xlYW47XHJcbiAgICBmYWN0b3JpZXNDb3VudDogbnVtYmVyO1xyXG4gICAgZXJyb3JzOiBzdHJpbmdbXTtcclxuICB9PiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ2hlY2tpbmcgYXN5bmMgY29uZmlndXJhdGlvbiBhdmFpbGFiaWxpdHknKTtcclxuICAgIFxyXG4gICAgY29uc3Qgc3RhdHVzID0ge1xyXG4gICAgICBpc0F2YWlsYWJsZTogZmFsc2UsXHJcbiAgICAgIGZhY3Rvcmllc0NvdW50OiAwLFxyXG4gICAgICBlcnJvcnM6IFtdIGFzIHN0cmluZ1tdXHJcbiAgICB9O1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFRyeSB0byByZWdpc3RlciBmYWN0b3JpZXMgdG8gY2hlY2sgYXZhaWxhYmlsaXR5XHJcbiAgICAgIGNvbnN0IGZhY3RvcmllcyA9IGF3YWl0IHRoaXMuZmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UucmVnaXN0ZXJGYWN0b3JpZXMoKTtcclxuICAgICAgXHJcbiAgICAgIHN0YXR1cy5pc0F2YWlsYWJsZSA9IGZhY3Rvcmllcy5sZW5ndGggPiAwO1xyXG4gICAgICBzdGF0dXMuZmFjdG9yaWVzQ291bnQgPSBmYWN0b3JpZXMubGVuZ3RoO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEFzeW5jIGF2YWlsYWJpbGl0eSBjaGVjazogYXZhaWxhYmxlPSR7c3RhdHVzLmlzQXZhaWxhYmxlfSwgZmFjdG9yaWVzPSR7c3RhdHVzLmZhY3Rvcmllc0NvdW50fWApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgYXZhaWxhYmlsaXR5RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgIHN0YXR1cy5lcnJvcnMucHVzaChhdmFpbGFiaWxpdHlFcnJvci5tZXNzYWdlKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0FzeW5jIGF2YWlsYWJpbGl0eSBjaGVjayBmYWlsZWQ6JywgYXZhaWxhYmlsaXR5RXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgbG9hZHMgY29uZmlndXJhdGlvbiBvbi1kZW1hbmQuXHJcbiAgICogVGhpcyBmYWN0b3J5IGRlbGF5cyBBV1MgY29uZmlndXJhdGlvbiBsb2FkaW5nIHVudGlsIGl0J3MgYWN0dWFsbHkgbmVlZGVkLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIENvbmZpZ3VyYXRpb24gZmFjdG9yeSB3aXRoIGxhenkgbG9hZGluZ1xyXG4gICAqL1xyXG4gIGNyZWF0ZUxhenlBc3luY0ZhY3RvcnkoKTogQ29uZmlnRmFjdG9yeSB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ3JlYXRpbmcgbGF6eSBhc3luYyBjb25maWd1cmF0aW9uIGZhY3RvcnknKTtcclxuICAgIFxyXG4gICAgbGV0IGNhY2hlZENvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IGxvYWRpbmdQcm9taXNlOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHwgbnVsbCA9IG51bGw7XHJcbiAgICBcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIC8vIFJldHVybiBjYWNoZWQgY29uZmlnIGlmIGF2YWlsYWJsZVxyXG4gICAgICBpZiAoY2FjaGVkQ29uZmlnICE9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZENvbmZpZztcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gSWYgYWxyZWFkeSBsb2FkaW5nLCB3YWl0IGZvciB0aGUgcHJvbWlzZVxyXG4gICAgICBpZiAobG9hZGluZ1Byb21pc2UpIHtcclxuICAgICAgICAvLyBGb3Igc3luY2hyb25vdXMgZmFjdG9yeSwgd2UgY2FuJ3Qgd2FpdCBmb3IgYXN5bmMgb3BlcmF0aW9uc1xyXG4gICAgICAgIC8vIFJldHVybiBlbXB0eSBjb25maWcgYW5kIGxldCB0aGUgcHJvbWlzZSByZXNvbHZlIGluIGJhY2tncm91bmRcclxuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdMYXp5IGZhY3RvcnkgY2FsbGVkIHdoaWxlIGxvYWRpbmcsIHJldHVybmluZyBlbXB0eSBjb25maWcnKTtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIFN0YXJ0IGxvYWRpbmcgY29uZmlndXJhdGlvbiBhbmQgdXBkYXRlIGNhY2hlIHdoZW4gY29tcGxldGVcclxuICAgICAgbG9hZGluZ1Byb21pc2UgPSB0aGlzLmxvYWRDb25maWd1cmF0aW9uTGF6aWx5KClcclxuICAgICAgICAudGhlbigoY29uZmlnKSA9PiB7XHJcbiAgICAgICAgICBjYWNoZWRDb25maWcgPSBjb25maWc7XHJcbiAgICAgICAgICBsb2FkaW5nUHJvbWlzZSA9IG51bGw7XHJcbiAgICAgICAgICByZXR1cm4gY29uZmlnO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgbG9hZGluZ1Byb21pc2UgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0xhenkgbG9hZGluZyBmYWlsZWQ6JywgZXJyb3IpO1xyXG4gICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgLy8gUmV0dXJuIGVtcHR5IGNvbmZpZyBmb3Igbm93ICh3aWxsIGJlIHBvcHVsYXRlZCBvbiBuZXh0IGNhbGwpXHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTdGFydGVkIGxhenkgbG9hZGluZywgcmV0dXJuaW5nIGVtcHR5IGNvbmZpZycpO1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBjb25maWd1cmF0aW9uIGxhemlseSBmb3IgdGhlIGxhenkgZmFjdG9yeS5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byBjb25maWd1cmF0aW9uIGRhdGFcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIGxvYWRDb25maWd1cmF0aW9uTGF6aWx5KCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0xvYWRpbmcgY29uZmlndXJhdGlvbiBsYXppbHknKTtcclxuICAgICAgXHJcbiAgICAgIGNvbnN0IGF3c0ZhY3RvcnkgPSBhd2FpdCB0aGlzLmNyZWF0ZUFzeW5jQ29uZmlnRmFjdG9yeSgpO1xyXG4gICAgICBjb25zdCBjb25maWcgPSBhd3NGYWN0b3J5KCk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTGF6eSBjb25maWd1cmF0aW9uIGxvYWRpbmcgY29tcGxldGVkJyk7XHJcbiAgICAgIHJldHVybiBjb25maWc7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zdCBsYXp5RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdMYXp5IGNvbmZpZ3VyYXRpb24gbG9hZGluZyBmYWlsZWQ6JywgbGF6eUVycm9yKTtcclxuICAgICAgXHJcbiAgICAgIC8vIFJldHVybiBlbXB0eSBjb25maWcgb24gZXJyb3JcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVlcCBtZXJnZSB0d28gY29uZmlndXJhdGlvbiBvYmplY3RzLlxyXG4gICAqIEBwYXJhbSB0YXJnZXQgLSBUYXJnZXQgb2JqZWN0XHJcbiAgICogQHBhcmFtIHNvdXJjZSAtIFNvdXJjZSBvYmplY3RcclxuICAgKiBAcmV0dXJucyBNZXJnZWQgb2JqZWN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkZWVwTWVyZ2UodGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBzb3VyY2U6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHsgLi4udGFyZ2V0IH07XHJcblxyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc291cmNlKSkge1xyXG4gICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBpZiAocmVzdWx0W2tleV0gJiYgdHlwZW9mIHJlc3VsdFtrZXldID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyZXN1bHRba2V5XSkpIHtcclxuICAgICAgICAgIHJlc3VsdFtrZXldID0gdGhpcy5kZWVwTWVyZ2UocmVzdWx0W2tleV0sIHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB7IC4uLnZhbHVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufSJdfQ==
|
package/dist/esm/nestjs-config-aws/src/integration/services/validation-integration.service.js
CHANGED
|
@@ -20,7 +20,7 @@ export class JoiValidationProvider {
|
|
|
20
20
|
// Try to import Joi dynamically
|
|
21
21
|
this.joi = require('joi');
|
|
22
22
|
}
|
|
23
|
-
catch
|
|
23
|
+
catch {
|
|
24
24
|
// Joi is not available
|
|
25
25
|
this.joi = null;
|
|
26
26
|
}
|
|
@@ -33,9 +33,12 @@ export class JoiValidationProvider {
|
|
|
33
33
|
return { isValid: false, errors: ['Joi is not available'] };
|
|
34
34
|
}
|
|
35
35
|
try {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
// Use joi.attempt which throws on validation error, or fall back to schema.validate
|
|
37
|
+
if (this.joi.attempt) {
|
|
38
|
+
this.joi.attempt(config, schema);
|
|
39
|
+
return { isValid: true, errors: [] };
|
|
40
|
+
}
|
|
41
|
+
const { error } = schema.validate(config);
|
|
39
42
|
if (error) {
|
|
40
43
|
const errors = error.details?.map((detail) => detail.message) || [error.message];
|
|
41
44
|
return { isValid: false, errors };
|
|
@@ -61,7 +64,7 @@ export class ClassValidatorProvider {
|
|
|
61
64
|
this.classValidator = require('class-validator');
|
|
62
65
|
this.classTransformer = require('class-transformer');
|
|
63
66
|
}
|
|
64
|
-
catch
|
|
67
|
+
catch {
|
|
65
68
|
// class-validator is not available
|
|
66
69
|
this.classValidator = null;
|
|
67
70
|
this.classTransformer = null;
|
|
@@ -583,4 +586,4 @@ ValidationIntegrationService = ValidationIntegrationService_1 = __decorate([
|
|
|
583
586
|
__metadata("design:paramtypes", [])
|
|
584
587
|
], ValidationIntegrationService);
|
|
585
588
|
export { ValidationIntegrationService };
|
|
586
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1pbnRlZ3JhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uL3NlcnZpY2VzL3ZhbGlkYXRpb24taW50ZWdyYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWFwRDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNMLEdBQUcsQ0FBTTtJQUVqQjtRQUNFLElBQUksQ0FBQztZQUNILGdDQUFnQztZQUNoQyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLHVCQUF1QjtZQUN2QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBVyxFQUFFLE1BQVc7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztRQUM5RCxDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2xDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFMUIsSUFB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QUMvRSxDQUFDO0NBQ0YsQ0FBQTtBQTVpQlksNEJBQTRCO0lBRHhDLFVBQVUsRUFBRTs7R0FDQSw0QkFBNEIsQ0E0aUJ4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIExvZ2dlciB9IGZyb20gJ0BuZXN0anMvY29tbW9uJztcclxuaW1wb3J0IHsgQ29uZmlnRmFjdG9yeSB9IGZyb20gJ0BuZXN0anMvY29uZmlnJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNvdXJjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlndXJhdGlvbi1zb3VyY2UuaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBJbnRlcmZhY2UgZm9yIHZhbGlkYXRpb24gc2NoZW1hIHByb3ZpZGVycy5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblNjaGVtYVByb3ZpZGVyIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdmFsaWRhdGUoY29uZmlnOiBhbnksIHNjaGVtYTogYW55KTogeyBpc1ZhbGlkOiBib29sZWFuOyBlcnJvcnM6IHN0cmluZ1tdIH07XHJcbiAgaXNBdmFpbGFibGUoKTogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEpvaSB2YWxpZGF0aW9uIHNjaGVtYSBwcm92aWRlci5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBKb2lWYWxpZGF0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBWYWxpZGF0aW9uU2NoZW1hUHJvdmlkZXIge1xyXG4gIG5hbWUgPSAnam9pJztcclxuICBwcml2YXRlIGpvaTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFRyeSB0byBpbXBvcnQgSm9pIGR5bmFtaWNhbGx5XHJcbiAgICAgIHRoaXMuam9pID0gcmVxdWlyZSgnam9pJyk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAvLyBKb2kgaXMgbm90IGF2YWlsYWJsZVxyXG4gICAgICB0aGlzLmpvaSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0F2YWlsYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmpvaSAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGNvbmZpZzogYW55LCBzY2hlbWE6IGFueSk6IHsgaXNWYWxpZDogYm9vbGVhbjsgZXJyb3JzOiBzdHJpbmdbXSB9IHtcclxuICAgIGlmICghdGhpcy5qb2kpIHtcclxuICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yczogWydKb2kgaXMgbm90IGF2YWlsYWJsZSddIH07XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgeyBlcnJvciB9ID0gdGhpcy5qb2kuYXR0ZW1wdCA/IFxyXG4gICAgICAgIHsgZXJyb3I6IG51bGwgfSA6XHJcbiAgICAgICAgc2NoZW1hLnZhbGlkYXRlKGNvbmZpZyk7XHJcblxyXG4gICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICBjb25zdCBlcnJvcnMgPSBlcnJvci5kZXRhaWxzPy5tYXAoKGRldGFpbDogYW55KSA9PiBkZXRhaWwubWVzc2FnZSkgfHwgW2Vycm9yLm1lc3NhZ2VdO1xyXG4gICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IGZhbHNlLCBlcnJvcnMgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgZXJyb3JzOiBbXSB9O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgdmFsaWRhdGlvbkVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3JzOiBbdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2VdIH07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQ2xhc3MtdmFsaWRhdG9yIHZhbGlkYXRpb24gc2NoZW1hIHByb3ZpZGVyLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENsYXNzVmFsaWRhdG9yUHJvdmlkZXIgaW1wbGVtZW50cyBWYWxpZGF0aW9uU2NoZW1hUHJvdmlkZXIge1xyXG4gIG5hbWUgPSAnY2xhc3MtdmFsaWRhdG9yJztcclxuICBwcml2YXRlIGNsYXNzVmFsaWRhdG9yOiBhbnk7XHJcbiAgcHJpdmF0ZSBjbGFzc1RyYW5zZm9ybWVyOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gVHJ5IHRvIGltcG9ydCBjbGFzcy12YWxpZGF0b3IgYW5kIGNsYXNzLXRyYW5zZm9ybWVyIGR5bmFtaWNhbGx5XHJcbiAgICAgIHRoaXMuY2xhc3NWYWxpZGF0b3IgPSByZXF1aXJlKCdjbGFzcy12YWxpZGF0b3InKTtcclxuICAgICAgdGhpcy5jbGFzc1RyYW5zZm9ybWVyID0gcmVxdWlyZSgnY2xhc3MtdHJhbnNmb3JtZXInKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIC8vIGNsYXNzLXZhbGlkYXRvciBpcyBub3QgYXZhaWxhYmxlXHJcbiAgICAgIHRoaXMuY2xhc3NWYWxpZGF0b3IgPSBudWxsO1xyXG4gICAgICB0aGlzLmNsYXNzVHJhbnNmb3JtZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNBdmFpbGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGFzc1ZhbGlkYXRvciAhPT0gbnVsbCAmJiB0aGlzLmNsYXNzVHJhbnNmb3JtZXIgIT09IG51bGw7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZShjb25maWc6IGFueSwgc2NoZW1hQ2xhc3M6IGFueSk6IHsgaXNWYWxpZDogYm9vbGVhbjsgZXJyb3JzOiBzdHJpbmdbXSB9IHtcclxuICAgIGlmICghdGhpcy5jbGFzc1ZhbGlkYXRvciB8fCAhdGhpcy5jbGFzc1RyYW5zZm9ybWVyKSB7XHJcbiAgICAgIHJldHVybiB7IGlzVmFsaWQ6IGZhbHNlLCBlcnJvcnM6IFsnY2xhc3MtdmFsaWRhdG9yIG9yIGNsYXNzLXRyYW5zZm9ybWVyIGlzIG5vdCBhdmFpbGFibGUnXSB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFRyYW5zZm9ybSBwbGFpbiBvYmplY3QgdG8gY2xhc3MgaW5zdGFuY2VcclxuICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmNsYXNzVHJhbnNmb3JtZXIucGxhaW5Ub0NsYXNzKHNjaGVtYUNsYXNzLCBjb25maWcpO1xyXG4gICAgICBcclxuICAgICAgLy8gVmFsaWRhdGUgdGhlIGluc3RhbmNlXHJcbiAgICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuY2xhc3NWYWxpZGF0b3IudmFsaWRhdGVTeW5jKGluc3RhbmNlKTtcclxuICAgICAgXHJcbiAgICAgIGlmIChlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2VzID0gZXJyb3JzLm1hcCgoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY29uc3RyYWludHMgPSBlcnJvci5jb25zdHJhaW50cyB8fCB7fTtcclxuICAgICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGNvbnN0cmFpbnRzKS5qb2luKCcsICcpO1xyXG4gICAgICAgIH0pLmZpbHRlcigobXNnOiBzdHJpbmcpID0+IG1zZy5sZW5ndGggPiAwKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yczogZXJyb3JNZXNzYWdlcyB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBlcnJvcnM6IFtdIH07XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgIHJldHVybiB7IGlzVmFsaWQ6IGZhbHNlLCBlcnJvcnM6IFt2YWxpZGF0aW9uRXJyb3IubWVzc2FnZV0gfTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlvbiBwcm92aWRlci5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21WYWxpZGF0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBWYWxpZGF0aW9uU2NoZW1hUHJvdmlkZXIge1xyXG4gIG5hbWUgPSAnY3VzdG9tJztcclxuXHJcbiAgaXNBdmFpbGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGNvbmZpZzogYW55LCB2YWxpZGF0aW9uRm46IChjb25maWc6IGFueSkgPT4gc3RyaW5nW10gfCB2b2lkKTogeyBpc1ZhbGlkOiBib29sZWFuOyBlcnJvcnM6IHN0cmluZ1tdIH0ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGlvbkZuKGNvbmZpZyk7XHJcbiAgICAgIFxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpICYmIHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yczogcmVzdWx0IH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIGVycm9yczogW10gfTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yczogW3ZhbGlkYXRpb25FcnJvci5tZXNzYWdlXSB9O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgZm9yIGludGVncmF0aW5nIEFXUy1zb3VyY2VkIGNvbmZpZ3VyYXRpb24gd2l0aCBAbmVzdGpzL2NvbmZpZyB2YWxpZGF0aW9uLlxyXG4gKiBTdXBwb3J0cyBKb2ksIGNsYXNzLXZhbGlkYXRvciwgYW5kIGN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9ucy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25JbnRlZ3JhdGlvblNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gbmV3IExvZ2dlcihWYWxpZGF0aW9uSW50ZWdyYXRpb25TZXJ2aWNlLm5hbWUpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRhdGlvblByb3ZpZGVyczogTWFwPHN0cmluZywgVmFsaWRhdGlvblNjaGVtYVByb3ZpZGVyPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAvLyBSZWdpc3RlciBhdmFpbGFibGUgdmFsaWRhdGlvbiBwcm92aWRlcnNcclxuICAgIHRoaXMucmVnaXN0ZXJWYWxpZGF0aW9uUHJvdmlkZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSB2YWxpZGF0ZWQgY29uZmlndXJhdGlvbiBmYWN0b3J5LlxyXG4gICAqIFRoaXMgZmFjdG9yeSB3aWxsIHZhbGlkYXRlIEFXUy1zb3VyY2VkIGNvbmZpZ3VyYXRpb24gYmVmb3JlIHJldHVybmluZyBpdC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gbmFtZXNwYWNlIC0gT3B0aW9uYWwgbmFtZXNwYWNlIGZvciB0aGUgY29uZmlndXJhdGlvblxyXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIGRhdGEgdG8gdmFsaWRhdGVcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvblNjaGVtYSAtIFZhbGlkYXRpb24gc2NoZW1hIChKb2kgc2NoZW1hLCBjbGFzcy12YWxpZGF0b3IgY2xhc3MsIG9yIGN1c3RvbSBmdW5jdGlvbilcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvblR5cGUgLSBUeXBlIG9mIHZhbGlkYXRpb24gKCdqb2knLCAnY2xhc3MtdmFsaWRhdG9yJywgb3IgJ2N1c3RvbScpXHJcbiAgICogQHBhcmFtIHNvdXJjZXMgLSBDb25maWd1cmF0aW9uIHNvdXJjZXMgbWV0YWRhdGFcclxuICAgKiBAcmV0dXJucyBWYWxpZGF0ZWQgY29uZmlndXJhdGlvbiBmYWN0b3J5XHJcbiAgICovXHJcbiAgY3JlYXRlVmFsaWRhdGVkRmFjdG9yeShcclxuICAgIG5hbWVzcGFjZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxyXG4gICAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYW55LFxyXG4gICAgdmFsaWRhdGlvblR5cGU6ICdqb2knIHwgJ2NsYXNzLXZhbGlkYXRvcicgfCAnY3VzdG9tJyxcclxuICAgIHNvdXJjZXM/OiBDb25maWd1cmF0aW9uU291cmNlW11cclxuICApOiBDb25maWdGYWN0b3J5IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBDcmVhdGluZyB2YWxpZGF0ZWQgZmFjdG9yeSBmb3IgbmFtZXNwYWNlOiAke25hbWVzcGFjZSB8fCAnZGVmYXVsdCd9IHdpdGggJHt2YWxpZGF0aW9uVHlwZX0gdmFsaWRhdGlvbmApO1xyXG5cclxuICAgIGNvbnN0IGZhY3RvcnkgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBWYWxpZGF0ZWQgZmFjdG9yeSBjYWxsZWQgZm9yIG5hbWVzcGFjZTogJHtuYW1lc3BhY2UgfHwgJ2RlZmF1bHQnfWApO1xyXG5cclxuICAgICAgLy8gVmFsaWRhdGUgY29uZmlndXJhdGlvblxyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdGhpcy52YWxpZGF0ZUNvbmZpZ3VyYXRpb24oY29uZmlnLCB2YWxpZGF0aW9uU2NoZW1hLCB2YWxpZGF0aW9uVHlwZSwgc291cmNlcyk7XHJcblxyXG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQuaXNWYWxpZCkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbGVkIGZvciAke25hbWVzcGFjZSB8fCAnZGVmYXVsdCd9OiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3JzLmpvaW4oJywgJyl9YDtcclxuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIENyZWF0ZSBkZXRhaWxlZCBlcnJvciB3aXRoIHNvdXJjZSBpbmZvcm1hdGlvblxyXG4gICAgICAgIGNvbnN0IGRldGFpbGVkRXJyb3IgPSB0aGlzLmNyZWF0ZVZhbGlkYXRpb25FcnJvcihcclxuICAgICAgICAgIG5hbWVzcGFjZSB8fCAnZGVmYXVsdCcsXHJcbiAgICAgICAgICB2YWxpZGF0aW9uUmVzdWx0LmVycm9ycyxcclxuICAgICAgICAgIHNvdXJjZXNcclxuICAgICAgICApO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRocm93IGRldGFpbGVkRXJyb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gcGFzc2VkIGZvciBuYW1lc3BhY2U6ICR7bmFtZXNwYWNlIHx8ICdkZWZhdWx0J31gKTtcclxuICAgICAgcmV0dXJuIGNvbmZpZztcclxuICAgIH07XHJcblxyXG4gICAgLy8gQWRkIHZhbGlkYXRpb24gbWV0YWRhdGFcclxuICAgIChmYWN0b3J5IGFzIGFueSkuX19pc1ZhbGlkYXRlZEZhY3RvcnkgPSB0cnVlO1xyXG4gICAgKGZhY3RvcnkgYXMgYW55KS5fX3ZhbGlkYXRpb25UeXBlID0gdmFsaWRhdGlvblR5cGU7XHJcbiAgICAoZmFjdG9yeSBhcyBhbnkpLl9fbmFtZXNwYWNlID0gbmFtZXNwYWNlO1xyXG4gICAgKGZhY3RvcnkgYXMgYW55KS5fX3NvdXJjZXMgPSBzb3VyY2VzPy5tYXAocyA9PiBzLm5hbWUpIHx8IFtdO1xyXG5cclxuICAgIHJldHVybiBmYWN0b3J5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGUgY29uZmlndXJhdGlvbiB1c2luZyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRpb24gdHlwZSBhbmQgc2NoZW1hLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIHRvIHZhbGlkYXRlXHJcbiAgICogQHBhcmFtIHNjaGVtYSAtIFZhbGlkYXRpb24gc2NoZW1hXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25UeXBlIC0gVHlwZSBvZiB2YWxpZGF0aW9uXHJcbiAgICogQHBhcmFtIHNvdXJjZXMgLSBDb25maWd1cmF0aW9uIHNvdXJjZXMgZm9yIGVycm9yIHJlcG9ydGluZ1xyXG4gICAqIEByZXR1cm5zIFZhbGlkYXRpb24gcmVzdWx0XHJcbiAgICovXHJcbiAgdmFsaWRhdGVDb25maWd1cmF0aW9uKFxyXG4gICAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG4gICAgc2NoZW1hOiBhbnksXHJcbiAgICB2YWxpZGF0aW9uVHlwZTogJ2pvaScgfCAnY2xhc3MtdmFsaWRhdG9yJyB8ICdjdXN0b20nLFxyXG4gICAgc291cmNlcz86IENvbmZpZ3VyYXRpb25Tb3VyY2VbXVxyXG4gICk6IHsgaXNWYWxpZDogYm9vbGVhbjsgZXJyb3JzOiBzdHJpbmdbXTsgd2FybmluZ3M6IHN0cmluZ1tdIH0ge1xyXG4gICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnZhbGlkYXRpb25Qcm92aWRlcnMuZ2V0KHZhbGlkYXRpb25UeXBlKTtcclxuICAgIFxyXG4gICAgaWYgKCFwcm92aWRlcikge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgIGVycm9yczogW2BWYWxpZGF0aW9uIHByb3ZpZGVyICcke3ZhbGlkYXRpb25UeXBlfScgaXMgbm90IGF2YWlsYWJsZWBdLFxyXG4gICAgICAgIHdhcm5pbmdzOiBbXVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghcHJvdmlkZXIuaXNBdmFpbGFibGUoKSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgIGVycm9yczogW2BWYWxpZGF0aW9uIHByb3ZpZGVyICcke3ZhbGlkYXRpb25UeXBlfScgaXMgbm90IHByb3Blcmx5IGNvbmZpZ3VyZWRgXSxcclxuICAgICAgICB3YXJuaW5nczogW11cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBwcm92aWRlci52YWxpZGF0ZShjb25maWcsIHNjaGVtYSk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBBZGQgc291cmNlIGluZm9ybWF0aW9uIHRvIGVycm9yc1xyXG4gICAgICBjb25zdCBlbmhhbmNlZEVycm9ycyA9IHJlc3VsdC5lcnJvcnMubWFwKGVycm9yID0+IFxyXG4gICAgICAgIHRoaXMuZW5oYW5jZUVycm9yV2l0aFNvdXJjZUluZm8oZXJyb3IsIHNvdXJjZXMpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGlzVmFsaWQ6IHJlc3VsdC5pc1ZhbGlkLFxyXG4gICAgICAgIGVycm9yczogZW5oYW5jZWRFcnJvcnMsXHJcbiAgICAgICAgd2FybmluZ3M6IFtdXHJcbiAgICAgIH07XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICAgICAgZXJyb3JzOiBbdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2VdLFxyXG4gICAgICAgIHdhcm5pbmdzOiBbXVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgZmFjdG9yeSB0aGF0IHZhbGlkYXRlcyBjb25maWd1cmF0aW9uIGFuZCBwcm92aWRlcyBmYWxsYmFjayB2YWx1ZXMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG5hbWVzcGFjZSAtIE9wdGlvbmFsIG5hbWVzcGFjZVxyXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIGRhdGFcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvblNjaGVtYSAtIFZhbGlkYXRpb24gc2NoZW1hXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25UeXBlIC0gVHlwZSBvZiB2YWxpZGF0aW9uXHJcbiAgICogQHBhcmFtIGZhbGxiYWNrQ29uZmlnIC0gRmFsbGJhY2sgY29uZmlndXJhdGlvbiB0byB1c2UgaWYgdmFsaWRhdGlvbiBmYWlsc1xyXG4gICAqIEBwYXJhbSBzb3VyY2VzIC0gQ29uZmlndXJhdGlvbiBzb3VyY2VzXHJcbiAgICogQHJldHVybnMgRmFjdG9yeSB3aXRoIHZhbGlkYXRpb24gYW5kIGZhbGxiYWNrXHJcbiAgICovXHJcbiAgY3JlYXRlVmFsaWRhdGVkRmFjdG9yeVdpdGhGYWxsYmFjayhcclxuICAgIG5hbWVzcGFjZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxyXG4gICAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYW55LFxyXG4gICAgdmFsaWRhdGlvblR5cGU6ICdqb2knIHwgJ2NsYXNzLXZhbGlkYXRvcicgfCAnY3VzdG9tJyxcclxuICAgIGZhbGxiYWNrQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG4gICAgc291cmNlcz86IENvbmZpZ3VyYXRpb25Tb3VyY2VbXVxyXG4gICk6IENvbmZpZ0ZhY3Rvcnkge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYENyZWF0aW5nIHZhbGlkYXRlZCBmYWN0b3J5IHdpdGggZmFsbGJhY2sgZm9yIG5hbWVzcGFjZTogJHtuYW1lc3BhY2UgfHwgJ2RlZmF1bHQnfWApO1xyXG5cclxuICAgIGNvbnN0IGZhY3RvcnkgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBWYWxpZGF0ZWQgZmFjdG9yeSB3aXRoIGZhbGxiYWNrIGNhbGxlZCBmb3IgbmFtZXNwYWNlOiAke25hbWVzcGFjZSB8fCAnZGVmYXVsdCd9YCk7XHJcblxyXG4gICAgICAvLyBWYWxpZGF0ZSBjb25maWd1cmF0aW9uXHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB0aGlzLnZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25maWcsIHZhbGlkYXRpb25TY2hlbWEsIHZhbGlkYXRpb25UeXBlLCBzb3VyY2VzKTtcclxuXHJcbiAgICAgIGlmICghdmFsaWRhdGlvblJlc3VsdC5pc1ZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybihgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgJHtuYW1lc3BhY2UgfHwgJ2RlZmF1bHQnfSwgdXNpbmcgZmFsbGJhY2s6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvcnMuam9pbignLCAnKX1gKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBWYWxpZGF0ZSBmYWxsYmFjayBjb25maWd1cmF0aW9uXHJcbiAgICAgICAgY29uc3QgZmFsbGJhY2tWYWxpZGF0aW9uID0gdGhpcy52YWxpZGF0ZUNvbmZpZ3VyYXRpb24oZmFsbGJhY2tDb25maWcsIHZhbGlkYXRpb25TY2hlbWEsIHZhbGlkYXRpb25UeXBlKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoZmFsbGJhY2tWYWxpZGF0aW9uLmlzVmFsaWQpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxsYmFja0NvbmZpZztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gQm90aCBwcmltYXJ5IGFuZCBmYWxsYmFjayBmYWlsZWRcclxuICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBCb3RoIHByaW1hcnkgYW5kIGZhbGxiYWNrIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQgZm9yICR7bmFtZXNwYWNlIHx8ICdkZWZhdWx0J31gO1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZXJyb3JNZXNzYWdlKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgY29uc3QgZGV0YWlsZWRFcnJvciA9IHRoaXMuY3JlYXRlVmFsaWRhdGlvbkVycm9yKFxyXG4gICAgICAgICAgICBuYW1lc3BhY2UgfHwgJ2RlZmF1bHQnLFxyXG4gICAgICAgICAgICBbLi4udmFsaWRhdGlvblJlc3VsdC5lcnJvcnMsIC4uLmZhbGxiYWNrVmFsaWRhdGlvbi5lcnJvcnNdLFxyXG4gICAgICAgICAgICBzb3VyY2VzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aHJvdyBkZXRhaWxlZEVycm9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBwYXNzZWQgZm9yIG5hbWVzcGFjZTogJHtuYW1lc3BhY2UgfHwgJ2RlZmF1bHQnfWApO1xyXG4gICAgICByZXR1cm4gY29uZmlnO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBBZGQgbWV0YWRhdGFcclxuICAgIChmYWN0b3J5IGFzIGFueSkuX19pc1ZhbGlkYXRlZEZhY3RvcnkgPSB0cnVlO1xyXG4gICAgKGZhY3RvcnkgYXMgYW55KS5fX2hhc0ZhbGxiYWNrID0gdHJ1ZTtcclxuICAgIChmYWN0b3J5IGFzIGFueSkuX192YWxpZGF0aW9uVHlwZSA9IHZhbGlkYXRpb25UeXBlO1xyXG4gICAgKGZhY3RvcnkgYXMgYW55KS5fX25hbWVzcGFjZSA9IG5hbWVzcGFjZTtcclxuICAgIChmYWN0b3J5IGFzIGFueSkuX19zb3VyY2VzID0gc291cmNlcz8ubWFwKHMgPT4gcy5uYW1lKSB8fCBbXTtcclxuXHJcbiAgICByZXR1cm4gZmFjdG9yeTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRlIG11bHRpcGxlIG5hbWVzcGFjZSBjb25maWd1cmF0aW9ucy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gbmFtZXNwYWNlZENvbmZpZyAtIENvbmZpZ3VyYXRpb24gb3JnYW5pemVkIGJ5IG5hbWVzcGFjZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uU2NoZW1hcyAtIFZhbGlkYXRpb24gc2NoZW1hcyBmb3IgZWFjaCBuYW1lc3BhY2VcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvblR5cGUgLSBUeXBlIG9mIHZhbGlkYXRpb25cclxuICAgKiBAcGFyYW0gc291cmNlcyAtIENvbmZpZ3VyYXRpb24gc291cmNlc1xyXG4gICAqIEByZXR1cm5zIFZhbGlkYXRpb24gcmVzdWx0cyBmb3IgZWFjaCBuYW1lc3BhY2VcclxuICAgKi9cclxuICB2YWxpZGF0ZU5hbWVzcGFjZWRDb25maWd1cmF0aW9uKFxyXG4gICAgbmFtZXNwYWNlZENvbmZpZzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYW55Pj4sXHJcbiAgICB2YWxpZGF0aW9uU2NoZW1hczogUmVjb3JkPHN0cmluZywgYW55PixcclxuICAgIHZhbGlkYXRpb25UeXBlOiAnam9pJyB8ICdjbGFzcy12YWxpZGF0b3InIHwgJ2N1c3RvbScsXHJcbiAgICBzb3VyY2VzPzogQ29uZmlndXJhdGlvblNvdXJjZVtdXHJcbiAgKTogUmVjb3JkPHN0cmluZywgeyBpc1ZhbGlkOiBib29sZWFuOyBlcnJvcnM6IHN0cmluZ1tdOyB3YXJuaW5nczogc3RyaW5nW10gfT4ge1xyXG4gICAgY29uc3QgcmVzdWx0czogUmVjb3JkPHN0cmluZywgeyBpc1ZhbGlkOiBib29sZWFuOyBlcnJvcnM6IHN0cmluZ1tdOyB3YXJuaW5nczogc3RyaW5nW10gfT4gPSB7fTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IFtuYW1lc3BhY2UsIGNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXMobmFtZXNwYWNlZENvbmZpZykpIHtcclxuICAgICAgY29uc3Qgc2NoZW1hID0gdmFsaWRhdGlvblNjaGVtYXNbbmFtZXNwYWNlXTtcclxuICAgICAgXHJcbiAgICAgIGlmIChzY2hlbWEpIHtcclxuICAgICAgICByZXN1bHRzW25hbWVzcGFjZV0gPSB0aGlzLnZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25maWcsIHNjaGVtYSwgdmFsaWRhdGlvblR5cGUsIHNvdXJjZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdHNbbmFtZXNwYWNlXSA9IHtcclxuICAgICAgICAgIGlzVmFsaWQ6IHRydWUsXHJcbiAgICAgICAgICBlcnJvcnM6IFtdLFxyXG4gICAgICAgICAgd2FybmluZ3M6IFtgTm8gdmFsaWRhdGlvbiBzY2hlbWEgcHJvdmlkZWQgZm9yIG5hbWVzcGFjZTogJHtuYW1lc3BhY2V9YF1cclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayB3aGljaCB2YWxpZGF0aW9uIHByb3ZpZGVycyBhcmUgYXZhaWxhYmxlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIE9iamVjdCBpbmRpY2F0aW5nIGF2YWlsYWJpbGl0eSBvZiBlYWNoIHByb3ZpZGVyXHJcbiAgICovXHJcbiAgZ2V0QXZhaWxhYmxlVmFsaWRhdGlvblByb3ZpZGVycygpOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB7XHJcbiAgICBjb25zdCBhdmFpbGFiaWxpdHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgICBcclxuICAgIGZvciAoY29uc3QgW25hbWUsIHByb3ZpZGVyXSBvZiB0aGlzLnZhbGlkYXRpb25Qcm92aWRlcnMpIHtcclxuICAgICAgYXZhaWxhYmlsaXR5W25hbWVdID0gcHJvdmlkZXIuaXNBdmFpbGFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXZhaWxhYmlsaXR5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHZhbGlkYXRpb24gcmVjb21tZW5kYXRpb25zIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIHRvIGFuYWx5emVcclxuICAgKiBAcmV0dXJucyBWYWxpZGF0aW9uIHJlY29tbWVuZGF0aW9uc1xyXG4gICAqL1xyXG4gIGdldFZhbGlkYXRpb25SZWNvbW1lbmRhdGlvbnMoY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KToge1xyXG4gICAgcmVjb21tZW5kZWRQcm92aWRlcjogc3RyaW5nO1xyXG4gICAgcmVhc29uczogc3RyaW5nW107XHJcbiAgICBleGFtcGxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICB9IHtcclxuICAgIGNvbnN0IGFuYWx5c2lzID0gdGhpcy5hbmFseXplQ29uZmlndXJhdGlvblN0cnVjdHVyZShjb25maWcpO1xyXG4gICAgXHJcbiAgICBsZXQgcmVjb21tZW5kZWRQcm92aWRlciA9ICdjdXN0b20nO1xyXG4gICAgY29uc3QgcmVhc29uczogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IGV4YW1wbGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIGJlc3QgdmFsaWRhdGlvbiBhcHByb2FjaFxyXG4gICAgaWYgKGFuYWx5c2lzLmhhc0NvbXBsZXhOZXN0aW5nIHx8IGFuYWx5c2lzLmhhc0FycmF5cykge1xyXG4gICAgICBpZiAodGhpcy52YWxpZGF0aW9uUHJvdmlkZXJzLmdldCgnam9pJyk/LmlzQXZhaWxhYmxlKCkpIHtcclxuICAgICAgICByZWNvbW1lbmRlZFByb3ZpZGVyID0gJ2pvaSc7XHJcbiAgICAgICAgcmVhc29ucy5wdXNoKCdDb21wbGV4IG5lc3RlZCBzdHJ1Y3R1cmUgZGV0ZWN0ZWQgLSBKb2kgcHJvdmlkZXMgZXhjZWxsZW50IG5lc3RlZCB2YWxpZGF0aW9uJyk7XHJcbiAgICAgICAgZXhhbXBsZXNbJ2pvaSddID0gdGhpcy5nZW5lcmF0ZUpvaUV4YW1wbGUoY29uZmlnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChhbmFseXNpcy5oYXNUeXBlZFZhbHVlcyAmJiB0aGlzLnZhbGlkYXRpb25Qcm92aWRlcnMuZ2V0KCdjbGFzcy12YWxpZGF0b3InKT8uaXNBdmFpbGFibGUoKSkge1xyXG4gICAgICByZWNvbW1lbmRlZFByb3ZpZGVyID0gJ2NsYXNzLXZhbGlkYXRvcic7XHJcbiAgICAgIHJlYXNvbnMucHVzaCgnVHlwZWQgdmFsdWVzIGRldGVjdGVkIC0gY2xhc3MtdmFsaWRhdG9yIHByb3ZpZGVzIHN0cm9uZyB0eXBlIHNhZmV0eScpO1xyXG4gICAgICBleGFtcGxlc1snY2xhc3MtdmFsaWRhdG9yJ10gPSB0aGlzLmdlbmVyYXRlQ2xhc3NWYWxpZGF0b3JFeGFtcGxlKGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWx3YXlzIHByb3ZpZGUgY3VzdG9tIGV4YW1wbGVcclxuICAgIGV4YW1wbGVzWydjdXN0b20nXSA9IHRoaXMuZ2VuZXJhdGVDdXN0b21WYWxpZGF0aW9uRXhhbXBsZShjb25maWcpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHJlY29tbWVuZGVkUHJvdmlkZXIsXHJcbiAgICAgIHJlYXNvbnMsXHJcbiAgICAgIGV4YW1wbGVzXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXIgdmFsaWRhdGlvbiBwcm92aWRlcnMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWdpc3RlclZhbGlkYXRpb25Qcm92aWRlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25Qcm92aWRlcnMuc2V0KCdqb2knLCBuZXcgSm9pVmFsaWRhdGlvblByb3ZpZGVyKCkpO1xyXG4gICAgdGhpcy52YWxpZGF0aW9uUHJvdmlkZXJzLnNldCgnY2xhc3MtdmFsaWRhdG9yJywgbmV3IENsYXNzVmFsaWRhdG9yUHJvdmlkZXIoKSk7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25Qcm92aWRlcnMuc2V0KCdjdXN0b20nLCBuZXcgQ3VzdG9tVmFsaWRhdGlvblByb3ZpZGVyKCkpO1xyXG5cclxuICAgIC8vIExvZyBhdmFpbGFibGUgcHJvdmlkZXJzXHJcbiAgICBjb25zdCBhdmFpbGFibGUgPSBBcnJheS5mcm9tKHRoaXMudmFsaWRhdGlvblByb3ZpZGVycy5lbnRyaWVzKCkpXHJcbiAgICAgIC5maWx0ZXIoKFtfLCBwcm92aWRlcl0pID0+IHByb3ZpZGVyLmlzQXZhaWxhYmxlKCkpXHJcbiAgICAgIC5tYXAoKFtuYW1lXSkgPT4gbmFtZSk7XHJcblxyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYEF2YWlsYWJsZSB2YWxpZGF0aW9uIHByb3ZpZGVyczogJHthdmFpbGFibGUuam9pbignLCAnKX1gKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIGRldGFpbGVkIHZhbGlkYXRpb24gZXJyb3Igd2l0aCBzb3VyY2UgaW5mb3JtYXRpb24uXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG5hbWVzcGFjZSAtIE5hbWVzcGFjZSB0aGF0IGZhaWxlZCB2YWxpZGF0aW9uXHJcbiAgICogQHBhcmFtIGVycm9ycyAtIFZhbGlkYXRpb24gZXJyb3JzXHJcbiAgICogQHBhcmFtIHNvdXJjZXMgLSBDb25maWd1cmF0aW9uIHNvdXJjZXNcclxuICAgKiBAcmV0dXJucyBEZXRhaWxlZCBlcnJvclxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlVmFsaWRhdGlvbkVycm9yKFxyXG4gICAgbmFtZXNwYWNlOiBzdHJpbmcsXHJcbiAgICBlcnJvcnM6IHN0cmluZ1tdLFxyXG4gICAgc291cmNlcz86IENvbmZpZ3VyYXRpb25Tb3VyY2VbXVxyXG4gICk6IEVycm9yIHtcclxuICAgIGxldCBtZXNzYWdlID0gYENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQgZm9yIG5hbWVzcGFjZSAnJHtuYW1lc3BhY2V9JzpcXG5gO1xyXG4gICAgbWVzc2FnZSArPSBlcnJvcnMubWFwKGVycm9yID0+IGAgIC0gJHtlcnJvcn1gKS5qb2luKCdcXG4nKTtcclxuXHJcbiAgICBpZiAoc291cmNlcyAmJiBzb3VyY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbWVzc2FnZSArPSAnXFxuXFxuQ29uZmlndXJhdGlvbiBzb3VyY2VzOlxcbic7XHJcbiAgICAgIG1lc3NhZ2UgKz0gc291cmNlcy5tYXAoc291cmNlID0+IFxyXG4gICAgICAgIGAgIC0gJHtzb3VyY2UubmFtZX0gKCR7c291cmNlLnR5cGV9KTogJHtPYmplY3Qua2V5cyhzb3VyY2UuZGF0YSkubGVuZ3RofSBrZXlzYFxyXG4gICAgICApLmpvaW4oJ1xcbicpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgZXJyb3IubmFtZSA9ICdDb25maWd1cmF0aW9uVmFsaWRhdGlvbkVycm9yJztcclxuICAgIChlcnJvciBhcyBhbnkpLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcclxuICAgIChlcnJvciBhcyBhbnkpLnZhbGlkYXRpb25FcnJvcnMgPSBlcnJvcnM7XHJcbiAgICAoZXJyb3IgYXMgYW55KS5zb3VyY2VzID0gc291cmNlcztcclxuXHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmhhbmNlIGVycm9yIG1lc3NhZ2Ugd2l0aCBzb3VyY2UgaW5mb3JtYXRpb24uXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGVycm9yIC0gT3JpZ2luYWwgZXJyb3IgbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBzb3VyY2VzIC0gQ29uZmlndXJhdGlvbiBzb3VyY2VzXHJcbiAgICogQHJldHVybnMgRW5oYW5jZWQgZXJyb3IgbWVzc2FnZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZW5oYW5jZUVycm9yV2l0aFNvdXJjZUluZm8oZXJyb3I6IHN0cmluZywgc291cmNlcz86IENvbmZpZ3VyYXRpb25Tb3VyY2VbXSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXNvdXJjZXMgfHwgc291cmNlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNvdXJjZU5hbWVzID0gc291cmNlcy5tYXAocyA9PiBzLm5hbWUpLmpvaW4oJywgJyk7XHJcbiAgICByZXR1cm4gYCR7ZXJyb3J9IChmcm9tIHNvdXJjZXM6ICR7c291cmNlTmFtZXN9KWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbmFseXplIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIGZvciB2YWxpZGF0aW9uIHJlY29tbWVuZGF0aW9ucy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhdGlvbiB0byBhbmFseXplXHJcbiAgICogQHJldHVybnMgU3RydWN0dXJlIGFuYWx5c2lzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhbmFseXplQ29uZmlndXJhdGlvblN0cnVjdHVyZShjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4pOiB7XHJcbiAgICBoYXNDb21wbGV4TmVzdGluZzogYm9vbGVhbjtcclxuICAgIGhhc0FycmF5czogYm9vbGVhbjtcclxuICAgIGhhc1R5cGVkVmFsdWVzOiBib29sZWFuO1xyXG4gICAgZGVwdGg6IG51bWJlcjtcclxuICB9IHtcclxuICAgIGxldCBoYXNDb21wbGV4TmVzdGluZyA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc0FycmF5cyA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc1R5cGVkVmFsdWVzID0gZmFsc2U7XHJcbiAgICBsZXQgbWF4RGVwdGggPSAwO1xyXG5cclxuICAgIGNvbnN0IGFuYWx5emUgPSAob2JqOiBhbnksIGRlcHRoOiBudW1iZXIgPSAwKTogdm9pZCA9PiB7XHJcbiAgICAgIG1heERlcHRoID0gTWF0aC5tYXgobWF4RGVwdGgsIGRlcHRoKTtcclxuXHJcbiAgICAgIGlmIChkZXB0aCA+IDIpIHtcclxuICAgICAgICBoYXNDb21wbGV4TmVzdGluZyA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgT2JqZWN0LnZhbHVlcyhvYmopKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICBoYXNBcnJheXMgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgYW5hbHl6ZSh2YWx1ZSwgZGVwdGggKyAxKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgIGhhc1R5cGVkVmFsdWVzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgYW5hbHl6ZShjb25maWcpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGhhc0NvbXBsZXhOZXN0aW5nLFxyXG4gICAgICBoYXNBcnJheXMsXHJcbiAgICAgIGhhc1R5cGVkVmFsdWVzLFxyXG4gICAgICBkZXB0aDogbWF4RGVwdGhcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZSBKb2kgdmFsaWRhdGlvbiBleGFtcGxlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIHRvIGdlbmVyYXRlIGV4YW1wbGUgZm9yXHJcbiAgICogQHJldHVybnMgSm9pIHZhbGlkYXRpb24gZXhhbXBsZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2VuZXJhdGVKb2lFeGFtcGxlKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzY2hlbWEgPSB0aGlzLmdlbmVyYXRlSm9pU2NoZW1hRnJvbUNvbmZpZyhjb25maWcpO1xyXG4gICAgcmV0dXJuIGBjb25zdCBKb2kgPSByZXF1aXJlKCdqb2knKTtcclxuXHJcbmNvbnN0IHNjaGVtYSA9ICR7c2NoZW1hfTtcclxuXHJcbi8vIFVzYWdlIGluIGZhY3RvcnlcclxuY29uc3QgZmFjdG9yeSA9ICgpID0+IHtcclxuICBjb25zdCBjb25maWcgPSBsb2FkQXdzQ29uZmlnKCk7XHJcbiAgY29uc3QgeyBlcnJvciwgdmFsdWUgfSA9IHNjaGVtYS52YWxpZGF0ZShjb25maWcpO1xyXG4gIGlmIChlcnJvcikgdGhyb3cgZXJyb3I7XHJcbiAgcmV0dXJuIHZhbHVlO1xyXG59O2A7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZSBjbGFzcy12YWxpZGF0b3IgZXhhbXBsZS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhdGlvbiB0byBnZW5lcmF0ZSBleGFtcGxlIGZvclxyXG4gICAqIEByZXR1cm5zIGNsYXNzLXZhbGlkYXRvciBleGFtcGxlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUNsYXNzVmFsaWRhdG9yRXhhbXBsZShjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY2xhc3NEZWZpbml0aW9uID0gdGhpcy5nZW5lcmF0ZUNsYXNzRnJvbUNvbmZpZyhjb25maWcpO1xyXG4gICAgcmV0dXJuIGBpbXBvcnQgeyBJc1N0cmluZywgSXNOdW1iZXIsIElzT3B0aW9uYWwsIHZhbGlkYXRlU3luYyB9IGZyb20gJ2NsYXNzLXZhbGlkYXRvcic7XHJcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcclxuXHJcbiR7Y2xhc3NEZWZpbml0aW9ufVxyXG5cclxuLy8gVXNhZ2UgaW4gZmFjdG9yeVxyXG5jb25zdCBmYWN0b3J5ID0gKCkgPT4ge1xyXG4gIGNvbnN0IGNvbmZpZyA9IGxvYWRBd3NDb25maWcoKTtcclxuICBjb25zdCBpbnN0YW5jZSA9IHBsYWluVG9DbGFzcyhDb25maWdDbGFzcywgY29uZmlnKTtcclxuICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVN5bmMoaW5zdGFuY2UpO1xyXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkgdGhyb3cgbmV3IEVycm9yKCdWYWxpZGF0aW9uIGZhaWxlZCcpO1xyXG4gIHJldHVybiBjb25maWc7XHJcbn07YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlIGN1c3RvbSB2YWxpZGF0aW9uIGV4YW1wbGUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gdG8gZ2VuZXJhdGUgZXhhbXBsZSBmb3JcclxuICAgKiBAcmV0dXJucyBDdXN0b20gdmFsaWRhdGlvbiBleGFtcGxlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUN1c3RvbVZhbGlkYXRpb25FeGFtcGxlKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uQ2hlY2tzID0gdGhpcy5nZW5lcmF0ZVZhbGlkYXRpb25DaGVja3MoY29uZmlnKTtcclxuICAgIHJldHVybiBgY29uc3QgdmFsaWRhdGVDb25maWcgPSAoY29uZmlnKSA9PiB7XHJcbiAgY29uc3QgZXJyb3JzID0gW107XHJcbiAgXHJcbiR7dmFsaWRhdGlvbkNoZWNrc31cclxuICBcclxuICByZXR1cm4gZXJyb3JzO1xyXG59O1xyXG5cclxuLy8gVXNhZ2UgaW4gZmFjdG9yeVxyXG5jb25zdCBmYWN0b3J5ID0gKCkgPT4ge1xyXG4gIGNvbnN0IGNvbmZpZyA9IGxvYWRBd3NDb25maWcoKTtcclxuICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZUNvbmZpZyhjb25maWcpO1xyXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkgdGhyb3cgbmV3IEVycm9yKFxcYFZhbGlkYXRpb24gZmFpbGVkOiBcXCR7ZXJyb3JzLmpvaW4oJywgJyl9XFxgKTtcclxuICByZXR1cm4gY29uZmlnO1xyXG59O2A7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZSBKb2kgc2NoZW1hIGZyb20gY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gb2JqZWN0XHJcbiAgICogQHJldHVybnMgSm9pIHNjaGVtYSBzdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGdlbmVyYXRlSm9pU2NoZW1hRnJvbUNvbmZpZyhjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZ2VuZXJhdGVTY2hlbWEgPSAob2JqOiBhbnkpOiBzdHJpbmcgPT4ge1xyXG4gICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHJldHVybiAnSm9pLnN0cmluZygpJztcclxuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdudW1iZXInKSByZXR1cm4gJ0pvaS5udW1iZXIoKSc7XHJcbiAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnYm9vbGVhbicpIHJldHVybiAnSm9pLmJvb2xlYW4oKSc7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHJldHVybiAnSm9pLmFycmF5KCknO1xyXG4gICAgICBcclxuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBPYmplY3QuZW50cmllcyhvYmopXHJcbiAgICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAgICR7a2V5fTogJHtnZW5lcmF0ZVNjaGVtYSh2YWx1ZSl9YClcclxuICAgICAgICAgIC5qb2luKCcsXFxuJyk7XHJcbiAgICAgICAgcmV0dXJuIGBKb2kub2JqZWN0KHtcXG4ke3Byb3BlcnRpZXN9XFxufSlgO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gJ0pvaS5hbnkoKSc7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBnZW5lcmF0ZVNjaGVtYShjb25maWcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGUgY2xhc3MgZGVmaW5pdGlvbiBmcm9tIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIG9iamVjdFxyXG4gICAqIEByZXR1cm5zIENsYXNzIGRlZmluaXRpb24gc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUNsYXNzRnJvbUNvbmZpZyhjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKGNvbmZpZylcclxuICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGVjb3JhdG9yID0gdGhpcy5nZXRDbGFzc1ZhbGlkYXRvckRlY29yYXRvcih2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIGAgICR7ZGVjb3JhdG9yfVxcbiAgJHtrZXl9OiAke3RoaXMuZ2V0VHlwZVNjcmlwdFR5cGUodmFsdWUpfTtgO1xyXG4gICAgICB9KVxyXG4gICAgICAuam9pbignXFxuXFxuJyk7XHJcblxyXG4gICAgcmV0dXJuIGBjbGFzcyBDb25maWdDbGFzcyB7XFxuJHtwcm9wZXJ0aWVzfVxcbn1gO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGUgdmFsaWRhdGlvbiBjaGVja3MgZm9yIGN1c3RvbSB2YWxpZGF0aW9uLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIG9iamVjdFxyXG4gICAqIEByZXR1cm5zIFZhbGlkYXRpb24gY2hlY2tzIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2VuZXJhdGVWYWxpZGF0aW9uQ2hlY2tzKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY29uZmlnKVxyXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICBjb25zdCBjaGVjayA9IHRoaXMuZ2V0VmFsaWRhdGlvbkNoZWNrKGtleSwgdmFsdWUpO1xyXG4gICAgICAgIHJldHVybiBgICAke2NoZWNrfWA7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5qb2luKCdcXG4nKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBjbGFzcy12YWxpZGF0b3IgZGVjb3JhdG9yIGZvciBhIHZhbHVlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIGdldCBkZWNvcmF0b3IgZm9yXHJcbiAgICogQHJldHVybnMgRGVjb3JhdG9yIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0Q2xhc3NWYWxpZGF0b3JEZWNvcmF0b3IodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuICdASXNTdHJpbmcoKSc7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuICdASXNOdW1iZXIoKSc7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiAnQElzQm9vbGVhbigpJztcclxuICAgIHJldHVybiAnQElzT3B0aW9uYWwoKSc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgVHlwZVNjcmlwdCB0eXBlIGZvciBhIHZhbHVlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIGdldCB0eXBlIGZvclxyXG4gICAqIEByZXR1cm5zIFR5cGVTY3JpcHQgdHlwZSBzdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGdldFR5cGVTY3JpcHRUeXBlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiAnc3RyaW5nJztcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gJ251bWJlcic7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiAnYm9vbGVhbic7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiAnYW55W10nO1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHJldHVybiAnb2JqZWN0JztcclxuICAgIHJldHVybiAnYW55JztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB2YWxpZGF0aW9uIGNoZWNrIGZvciBjdXN0b20gdmFsaWRhdGlvbi5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ga2V5IC0gQ29uZmlndXJhdGlvbiBrZXlcclxuICAgKiBAcGFyYW0gdmFsdWUgLSBDb25maWd1cmF0aW9uIHZhbHVlXHJcbiAgICogQHJldHVybnMgVmFsaWRhdGlvbiBjaGVjayBzdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGdldFZhbGlkYXRpb25DaGVjayhrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gYGlmICghY29uZmlnLiR7a2V5fSB8fCB0eXBlb2YgY29uZmlnLiR7a2V5fSAhPT0gJ3N0cmluZycpIGVycm9ycy5wdXNoKCcke2tleX0gbXVzdCBiZSBhIHN0cmluZycpO2A7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xyXG4gICAgICByZXR1cm4gYGlmIChjb25maWcuJHtrZXl9ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGNvbmZpZy4ke2tleX0gIT09ICdudW1iZXInKSBlcnJvcnMucHVzaCgnJHtrZXl9IG11c3QgYmUgYSBudW1iZXInKTtgO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiBgaWYgKGNvbmZpZy4ke2tleX0gPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgY29uZmlnLiR7a2V5fSAhPT0gJ2Jvb2xlYW4nKSBlcnJvcnMucHVzaCgnJHtrZXl9IG11c3QgYmUgYSBib29sZWFuJyk7YDtcclxuICAgIH1cclxuICAgIHJldHVybiBgaWYgKGNvbmZpZy4ke2tleX0gPT09IHVuZGVmaW5lZCkgZXJyb3JzLnB1c2goJyR7a2V5fSBpcyByZXF1aXJlZCcpO2A7XHJcbiAgfVxyXG59Il19
|
|
589
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1pbnRlZ3JhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uL3NlcnZpY2VzL3ZhbGlkYXRpb24taW50ZWdyYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWFwRDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNMLEdBQUcsQ0FBTTtJQUVqQjtRQUNFLElBQUksQ0FBQztZQUNILGdDQUFnQztZQUNoQyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsdUJBQXVCO1lBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFXLEVBQUUsTUFBVztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1FBQzlELENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxvRkFBb0Y7WUFDcEYsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ2pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxF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QW1DLEdBQUcsZ0NBQWdDLEdBQUcsdUJBQXVCLENBQUM7UUFDM0gsQ0FBQztRQUNELE9BQU8sY0FBYyxHQUFHLGdDQUFnQyxHQUFHLGlCQUFpQixDQUFDO0lBQy9FLENBQUM7Q0FDRixDQUFBO0FBNWlCWSw0QkFBNEI7SUFEeEMsVUFBVSxFQUFFOztHQUNBLDRCQUE0QixDQTRpQnhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTG9nZ2VyIH0gZnJvbSAnQG5lc3Rqcy9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdGYWN0b3J5IH0gZnJvbSAnQG5lc3Rqcy9jb25maWcnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU291cmNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWd1cmF0aW9uLXNvdXJjZS5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIEludGVyZmFjZSBmb3IgdmFsaWRhdGlvbiBzY2hlbWEgcHJvdmlkZXJzLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uU2NoZW1hUHJvdmlkZXIge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB2YWxpZGF0ZShjb25maWc6IGFueSwgc2NoZW1hOiBhbnkpOiB7IGlzVmFsaWQ6IGJvb2xlYW47IGVycm9yczogc3RyaW5nW10gfTtcclxuICBpc0F2YWlsYWJsZSgpOiBib29sZWFuO1xyXG59XHJcblxyXG4vKipcclxuICogSm9pIHZhbGlkYXRpb24gc2NoZW1hIHByb3ZpZGVyLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEpvaVZhbGlkYXRpb25Qcm92aWRlciBpbXBsZW1lbnRzIFZhbGlkYXRpb25TY2hlbWFQcm92aWRlciB7XHJcbiAgbmFtZSA9ICdqb2knO1xyXG4gIHByaXZhdGUgam9pOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gVHJ5IHRvIGltcG9ydCBKb2kgZHluYW1pY2FsbHlcclxuICAgICAgdGhpcy5qb2kgPSByZXF1aXJlKCdqb2knKTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICAvLyBKb2kgaXMgbm90IGF2YWlsYWJsZVxyXG4gICAgICB0aGlzLmpvaSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0F2YWlsYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmpvaSAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGNvbmZpZzogYW55LCBzY2hlbWE6IGFueSk6IHsgaXNWYWxpZDogYm9vbGVhbjsgZXJyb3JzOiBzdHJpbmdbXSB9IHtcclxuICAgIGlmICghdGhpcy5qb2kpIHtcclxuICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yczogWydKb2kgaXMgbm90IGF2YWlsYWJsZSddIH07XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gVXNlIGpvaS5hdHRlbXB0IHdoaWNoIHRocm93cyBvbiB2YWxpZGF0aW9uIGVycm9yLCBvciBmYWxsIGJhY2sgdG8gc2NoZW1hLnZhbGlkYXRlXHJcbiAgICAgIGlmICh0aGlzLmpvaS5hdHRlbXB0KSB7XHJcbiAgICAgICAgdGhpcy5qb2kuYXR0ZW1wdChjb25maWcsIHNjaGVtYSk7XHJcbiAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgZXJyb3JzOiBbXSB9O1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCB7IGVycm9yIH0gPSBzY2hlbWEudmFsaWRhdGUoY29uZmlnKTtcclxuICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3JzID0gZXJyb3IuZGV0YWlscz8ubWFwKChkZXRhaWw6IGFueSkgPT4gZGV0YWlsLm1lc3NhZ2UpIHx8IFtlcnJvci5tZXNzYWdlXTtcclxuICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3JzIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIGVycm9yczogW10gfTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yczogW3ZhbGlkYXRpb25FcnJvci5tZXNzYWdlXSB9O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENsYXNzLXZhbGlkYXRvciB2YWxpZGF0aW9uIHNjaGVtYSBwcm92aWRlci5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBDbGFzc1ZhbGlkYXRvclByb3ZpZGVyIGltcGxlbWVudHMgVmFsaWRhdGlvblNjaGVtYVByb3ZpZGVyIHtcclxuICBuYW1lID0gJ2NsYXNzLXZhbGlkYXRvcic7XHJcbiAgcHJpdmF0ZSBjbGFzc1ZhbGlkYXRvcjogYW55O1xyXG4gIHByaXZhdGUgY2xhc3NUcmFuc2Zvcm1lcjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFRyeSB0byBpbXBvcnQgY2xhc3MtdmFsaWRhdG9yIGFuZCBjbGFzcy10cmFuc2Zvcm1lciBkeW5hbWljYWxseVxyXG4gICAgICB0aGlzLmNsYXNzVmFsaWRhdG9yID0gcmVxdWlyZSgnY2xhc3MtdmFsaWRhdG9yJyk7XHJcbiAgICAgIHRoaXMuY2xhc3NUcmFuc2Zvcm1lciA9IHJlcXVpcmUoJ2NsYXNzLXRyYW5zZm9ybWVyJyk7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgLy8gY2xhc3MtdmFsaWRhdG9yIGlzIG5vdCBhdmFpbGFibGVcclxuICAgICAgdGhpcy5jbGFzc1ZhbGlkYXRvciA9IG51bGw7XHJcbiAgICAgIHRoaXMuY2xhc3NUcmFuc2Zvcm1lciA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0F2YWlsYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNsYXNzVmFsaWRhdG9yICE9PSBudWxsICYmIHRoaXMuY2xhc3NUcmFuc2Zvcm1lciAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGNvbmZpZzogYW55LCBzY2hlbWFDbGFzczogYW55KTogeyBpc1ZhbGlkOiBib29sZWFuOyBlcnJvcnM6IHN0cmluZ1tdIH0ge1xyXG4gICAgaWYgKCF0aGlzLmNsYXNzVmFsaWRhdG9yIHx8ICF0aGlzLmNsYXNzVHJhbnNmb3JtZXIpIHtcclxuICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yczogWydjbGFzcy12YWxpZGF0b3Igb3IgY2xhc3MtdHJhbnNmb3JtZXIgaXMgbm90IGF2YWlsYWJsZSddIH07XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gVHJhbnNmb3JtIHBsYWluIG9iamVjdCB0byBjbGFzcyBpbnN0YW5jZVxyXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuY2xhc3NUcmFuc2Zvcm1lci5wbGFpblRvQ2xhc3Moc2NoZW1hQ2xhc3MsIGNvbmZpZyk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5zdGFuY2VcclxuICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5jbGFzc1ZhbGlkYXRvci52YWxpZGF0ZVN5bmMoaW5zdGFuY2UpO1xyXG4gICAgICBcclxuICAgICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZXMgPSBlcnJvcnMubWFwKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb25zdHJhaW50cyA9IGVycm9yLmNvbnN0cmFpbnRzIHx8IHt9O1xyXG4gICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoY29uc3RyYWludHMpLmpvaW4oJywgJyk7XHJcbiAgICAgICAgfSkuZmlsdGVyKChtc2c6IHN0cmluZykgPT4gbXNnLmxlbmd0aCA+IDApO1xyXG5cclxuICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3JzOiBlcnJvck1lc3NhZ2VzIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIGVycm9yczogW10gfTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yczogW3ZhbGlkYXRpb25FcnJvci5tZXNzYWdlXSB9O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHByb3ZpZGVyLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEN1c3RvbVZhbGlkYXRpb25Qcm92aWRlciBpbXBsZW1lbnRzIFZhbGlkYXRpb25TY2hlbWFQcm92aWRlciB7XHJcbiAgbmFtZSA9ICdjdXN0b20nO1xyXG5cclxuICBpc0F2YWlsYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoY29uZmlnOiBhbnksIHZhbGlkYXRpb25GbjogKGNvbmZpZzogYW55KSA9PiBzdHJpbmdbXSB8IHZvaWQpOiB7IGlzVmFsaWQ6IGJvb2xlYW47IGVycm9yczogc3RyaW5nW10gfSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0aW9uRm4oY29uZmlnKTtcclxuICAgICAgXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkgJiYgcmVzdWx0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3JzOiByZXN1bHQgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgZXJyb3JzOiBbXSB9O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc3QgdmFsaWRhdGlvbkVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpO1xyXG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3JzOiBbdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2VdIH07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogU2VydmljZSBmb3IgaW50ZWdyYXRpbmcgQVdTLXNvdXJjZWQgY29uZmlndXJhdGlvbiB3aXRoIEBuZXN0anMvY29uZmlnIHZhbGlkYXRpb24uXHJcbiAqIFN1cHBvcnRzIEpvaSwgY2xhc3MtdmFsaWRhdG9yLCBhbmQgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb25zLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkludGVncmF0aW9uU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBuZXcgTG9nZ2VyKFZhbGlkYXRpb25JbnRlZ3JhdGlvblNlcnZpY2UubmFtZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZGF0aW9uUHJvdmlkZXJzOiBNYXA8c3RyaW5nLCBWYWxpZGF0aW9uU2NoZW1hUHJvdmlkZXI+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIC8vIFJlZ2lzdGVyIGF2YWlsYWJsZSB2YWxpZGF0aW9uIHByb3ZpZGVyc1xyXG4gICAgdGhpcy5yZWdpc3RlclZhbGlkYXRpb25Qcm92aWRlcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIHZhbGlkYXRlZCBjb25maWd1cmF0aW9uIGZhY3RvcnkuXHJcbiAgICogVGhpcyBmYWN0b3J5IHdpbGwgdmFsaWRhdGUgQVdTLXNvdXJjZWQgY29uZmlndXJhdGlvbiBiZWZvcmUgcmV0dXJuaW5nIGl0LlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBuYW1lc3BhY2UgLSBPcHRpb25hbCBuYW1lc3BhY2UgZm9yIHRoZSBjb25maWd1cmF0aW9uXHJcbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gZGF0YSB0byB2YWxpZGF0ZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uU2NoZW1hIC0gVmFsaWRhdGlvbiBzY2hlbWEgKEpvaSBzY2hlbWEsIGNsYXNzLXZhbGlkYXRvciBjbGFzcywgb3IgY3VzdG9tIGZ1bmN0aW9uKVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uVHlwZSAtIFR5cGUgb2YgdmFsaWRhdGlvbiAoJ2pvaScsICdjbGFzcy12YWxpZGF0b3InLCBvciAnY3VzdG9tJylcclxuICAgKiBAcGFyYW0gc291cmNlcyAtIENvbmZpZ3VyYXRpb24gc291cmNlcyBtZXRhZGF0YVxyXG4gICAqIEByZXR1cm5zIFZhbGlkYXRlZCBjb25maWd1cmF0aW9uIGZhY3RvcnlcclxuICAgKi9cclxuICBjcmVhdGVWYWxpZGF0ZWRGYWN0b3J5KFxyXG4gICAgbmFtZXNwYWNlOiBzdHJpbmcgfCB1bmRlZmluZWQsXHJcbiAgICBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBhbnksXHJcbiAgICB2YWxpZGF0aW9uVHlwZTogJ2pvaScgfCAnY2xhc3MtdmFsaWRhdG9yJyB8ICdjdXN0b20nLFxyXG4gICAgc291cmNlcz86IENvbmZpZ3VyYXRpb25Tb3VyY2VbXVxyXG4gICk6IENvbmZpZ0ZhY3Rvcnkge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYENyZWF0aW5nIHZhbGlkYXRlZCBmYWN0b3J5IGZvciBuYW1lc3BhY2U6ICR7bmFtZXNwYWNlIHx8ICdkZWZhdWx0J30gd2l0aCAke3ZhbGlkYXRpb25UeXBlfSB2YWxpZGF0aW9uYCk7XHJcblxyXG4gICAgY29uc3QgZmFjdG9yeSA9ICgpID0+IHtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFZhbGlkYXRlZCBmYWN0b3J5IGNhbGxlZCBmb3IgbmFtZXNwYWNlOiAke25hbWVzcGFjZSB8fCAnZGVmYXVsdCd9YCk7XHJcblxyXG4gICAgICAvLyBWYWxpZGF0ZSBjb25maWd1cmF0aW9uXHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB0aGlzLnZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25maWcsIHZhbGlkYXRpb25TY2hlbWEsIHZhbGlkYXRpb25UeXBlLCBzb3VyY2VzKTtcclxuXHJcbiAgICAgIGlmICghdmFsaWRhdGlvblJlc3VsdC5pc1ZhbGlkKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQgZm9yICR7bmFtZXNwYWNlIHx8ICdkZWZhdWx0J306ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvcnMuam9pbignLCAnKX1gO1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gQ3JlYXRlIGRldGFpbGVkIGVycm9yIHdpdGggc291cmNlIGluZm9ybWF0aW9uXHJcbiAgICAgICAgY29uc3QgZGV0YWlsZWRFcnJvciA9IHRoaXMuY3JlYXRlVmFsaWRhdGlvbkVycm9yKFxyXG4gICAgICAgICAgbmFtZXNwYWNlIHx8ICdkZWZhdWx0JyxcclxuICAgICAgICAgIHZhbGlkYXRpb25SZXN1bHQuZXJyb3JzLFxyXG4gICAgICAgICAgc291cmNlc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhyb3cgZGV0YWlsZWRFcnJvcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBwYXNzZWQgZm9yIG5hbWVzcGFjZTogJHtuYW1lc3BhY2UgfHwgJ2RlZmF1bHQnfWApO1xyXG4gICAgICByZXR1cm4gY29uZmlnO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBBZGQgdmFsaWRhdGlvbiBtZXRhZGF0YVxyXG4gICAgKGZhY3RvcnkgYXMgYW55KS5fX2lzVmFsaWRhdGVkRmFjdG9yeSA9IHRydWU7XHJcbiAgICAoZmFjdG9yeSBhcyBhbnkpLl9fdmFsaWRhdGlvblR5cGUgPSB2YWxpZGF0aW9uVHlwZTtcclxuICAgIChmYWN0b3J5IGFzIGFueSkuX19uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XHJcbiAgICAoZmFjdG9yeSBhcyBhbnkpLl9fc291cmNlcyA9IHNvdXJjZXM/Lm1hcChzID0+IHMubmFtZSkgfHwgW107XHJcblxyXG4gICAgcmV0dXJuIGZhY3Rvcnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZSBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBzcGVjaWZpZWQgdmFsaWRhdGlvbiB0eXBlIGFuZCBzY2hlbWEuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gdG8gdmFsaWRhdGVcclxuICAgKiBAcGFyYW0gc2NoZW1hIC0gVmFsaWRhdGlvbiBzY2hlbWFcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvblR5cGUgLSBUeXBlIG9mIHZhbGlkYXRpb25cclxuICAgKiBAcGFyYW0gc291cmNlcyAtIENvbmZpZ3VyYXRpb24gc291cmNlcyBmb3IgZXJyb3IgcmVwb3J0aW5nXHJcbiAgICogQHJldHVybnMgVmFsaWRhdGlvbiByZXN1bHRcclxuICAgKi9cclxuICB2YWxpZGF0ZUNvbmZpZ3VyYXRpb24oXHJcbiAgICBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICBzY2hlbWE6IGFueSxcclxuICAgIHZhbGlkYXRpb25UeXBlOiAnam9pJyB8ICdjbGFzcy12YWxpZGF0b3InIHwgJ2N1c3RvbScsXHJcbiAgICBzb3VyY2VzPzogQ29uZmlndXJhdGlvblNvdXJjZVtdXHJcbiAgKTogeyBpc1ZhbGlkOiBib29sZWFuOyBlcnJvcnM6IHN0cmluZ1tdOyB3YXJuaW5nczogc3RyaW5nW10gfSB7XHJcbiAgICBjb25zdCBwcm92aWRlciA9IHRoaXMudmFsaWRhdGlvblByb3ZpZGVycy5nZXQodmFsaWRhdGlvblR5cGUpO1xyXG4gICAgXHJcbiAgICBpZiAoIXByb3ZpZGVyKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICAgICAgZXJyb3JzOiBbYFZhbGlkYXRpb24gcHJvdmlkZXIgJyR7dmFsaWRhdGlvblR5cGV9JyBpcyBub3QgYXZhaWxhYmxlYF0sXHJcbiAgICAgICAgd2FybmluZ3M6IFtdXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFwcm92aWRlci5pc0F2YWlsYWJsZSgpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICAgICAgZXJyb3JzOiBbYFZhbGlkYXRpb24gcHJvdmlkZXIgJyR7dmFsaWRhdGlvblR5cGV9JyBpcyBub3QgcHJvcGVybHkgY29uZmlndXJlZGBdLFxyXG4gICAgICAgIHdhcm5pbmdzOiBbXVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHByb3ZpZGVyLnZhbGlkYXRlKGNvbmZpZywgc2NoZW1hKTtcclxuICAgICAgXHJcbiAgICAgIC8vIEFkZCBzb3VyY2UgaW5mb3JtYXRpb24gdG8gZXJyb3JzXHJcbiAgICAgIGNvbnN0IGVuaGFuY2VkRXJyb3JzID0gcmVzdWx0LmVycm9ycy5tYXAoZXJyb3IgPT4gXHJcbiAgICAgICAgdGhpcy5lbmhhbmNlRXJyb3JXaXRoU291cmNlSW5mbyhlcnJvciwgc291cmNlcylcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXNWYWxpZDogcmVzdWx0LmlzVmFsaWQsXHJcbiAgICAgICAgZXJyb3JzOiBlbmhhbmNlZEVycm9ycyxcclxuICAgICAgICB3YXJuaW5nczogW11cclxuICAgICAgfTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICBlcnJvcnM6IFt2YWxpZGF0aW9uRXJyb3IubWVzc2FnZV0sXHJcbiAgICAgICAgd2FybmluZ3M6IFtdXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgdmFsaWRhdGVzIGNvbmZpZ3VyYXRpb24gYW5kIHByb3ZpZGVzIGZhbGxiYWNrIHZhbHVlcy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gbmFtZXNwYWNlIC0gT3B0aW9uYWwgbmFtZXNwYWNlXHJcbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gZGF0YVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uU2NoZW1hIC0gVmFsaWRhdGlvbiBzY2hlbWFcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvblR5cGUgLSBUeXBlIG9mIHZhbGlkYXRpb25cclxuICAgKiBAcGFyYW0gZmFsbGJhY2tDb25maWcgLSBGYWxsYmFjayBjb25maWd1cmF0aW9uIHRvIHVzZSBpZiB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogQHBhcmFtIHNvdXJjZXMgLSBDb25maWd1cmF0aW9uIHNvdXJjZXNcclxuICAgKiBAcmV0dXJucyBGYWN0b3J5IHdpdGggdmFsaWRhdGlvbiBhbmQgZmFsbGJhY2tcclxuICAgKi9cclxuICBjcmVhdGVWYWxpZGF0ZWRGYWN0b3J5V2l0aEZhbGxiYWNrKFxyXG4gICAgbmFtZXNwYWNlOiBzdHJpbmcgfCB1bmRlZmluZWQsXHJcbiAgICBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBhbnksXHJcbiAgICB2YWxpZGF0aW9uVHlwZTogJ2pvaScgfCAnY2xhc3MtdmFsaWRhdG9yJyB8ICdjdXN0b20nLFxyXG4gICAgZmFsbGJhY2tDb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICBzb3VyY2VzPzogQ29uZmlndXJhdGlvblNvdXJjZVtdXHJcbiAgKTogQ29uZmlnRmFjdG9yeSB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgdmFsaWRhdGVkIGZhY3Rvcnkgd2l0aCBmYWxsYmFjayBmb3IgbmFtZXNwYWNlOiAke25hbWVzcGFjZSB8fCAnZGVmYXVsdCd9YCk7XHJcblxyXG4gICAgY29uc3QgZmFjdG9yeSA9ICgpID0+IHtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFZhbGlkYXRlZCBmYWN0b3J5IHdpdGggZmFsbGJhY2sgY2FsbGVkIGZvciBuYW1lc3BhY2U6ICR7bmFtZXNwYWNlIHx8ICdkZWZhdWx0J31gKTtcclxuXHJcbiAgICAgIC8vIFZhbGlkYXRlIGNvbmZpZ3VyYXRpb25cclxuICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IHRoaXMudmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZpZywgdmFsaWRhdGlvblNjaGVtYSwgdmFsaWRhdGlvblR5cGUsIHNvdXJjZXMpO1xyXG5cclxuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LmlzVmFsaWQpIHtcclxuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbGVkIGZvciAke25hbWVzcGFjZSB8fCAnZGVmYXVsdCd9LCB1c2luZyBmYWxsYmFjazogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9ycy5qb2luKCcsICcpfWApO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIFZhbGlkYXRlIGZhbGxiYWNrIGNvbmZpZ3VyYXRpb25cclxuICAgICAgICBjb25zdCBmYWxsYmFja1ZhbGlkYXRpb24gPSB0aGlzLnZhbGlkYXRlQ29uZmlndXJhdGlvbihmYWxsYmFja0NvbmZpZywgdmFsaWRhdGlvblNjaGVtYSwgdmFsaWRhdGlvblR5cGUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChmYWxsYmFja1ZhbGlkYXRpb24uaXNWYWxpZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbGxiYWNrQ29uZmlnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBCb3RoIHByaW1hcnkgYW5kIGZhbGxiYWNrIGZhaWxlZFxyXG4gICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYEJvdGggcHJpbWFyeSBhbmQgZmFsbGJhY2sgY29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgJHtuYW1lc3BhY2UgfHwgJ2RlZmF1bHQnfWA7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBjb25zdCBkZXRhaWxlZEVycm9yID0gdGhpcy5jcmVhdGVWYWxpZGF0aW9uRXJyb3IoXHJcbiAgICAgICAgICAgIG5hbWVzcGFjZSB8fCAnZGVmYXVsdCcsXHJcbiAgICAgICAgICAgIFsuLi52YWxpZGF0aW9uUmVzdWx0LmVycm9ycywgLi4uZmFsbGJhY2tWYWxpZGF0aW9uLmVycm9yc10sXHJcbiAgICAgICAgICAgIHNvdXJjZXNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRocm93IGRldGFpbGVkRXJyb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIHBhc3NlZCBmb3IgbmFtZXNwYWNlOiAke25hbWVzcGFjZSB8fCAnZGVmYXVsdCd9YCk7XHJcbiAgICAgIHJldHVybiBjb25maWc7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEFkZCBtZXRhZGF0YVxyXG4gICAgKGZhY3RvcnkgYXMgYW55KS5fX2lzVmFsaWRhdGVkRmFjdG9yeSA9IHRydWU7XHJcbiAgICAoZmFjdG9yeSBhcyBhbnkpLl9faGFzRmFsbGJhY2sgPSB0cnVlO1xyXG4gICAgKGZhY3RvcnkgYXMgYW55KS5fX3ZhbGlkYXRpb25UeXBlID0gdmFsaWRhdGlvblR5cGU7XHJcbiAgICAoZmFjdG9yeSBhcyBhbnkpLl9fbmFtZXNwYWNlID0gbmFtZXNwYWNlO1xyXG4gICAgKGZhY3RvcnkgYXMgYW55KS5fX3NvdXJjZXMgPSBzb3VyY2VzPy5tYXAocyA9PiBzLm5hbWUpIHx8IFtdO1xyXG5cclxuICAgIHJldHVybiBmYWN0b3J5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGUgbXVsdGlwbGUgbmFtZXNwYWNlIGNvbmZpZ3VyYXRpb25zLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VkQ29uZmlnIC0gQ29uZmlndXJhdGlvbiBvcmdhbml6ZWQgYnkgbmFtZXNwYWNlXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25TY2hlbWFzIC0gVmFsaWRhdGlvbiBzY2hlbWFzIGZvciBlYWNoIG5hbWVzcGFjZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uVHlwZSAtIFR5cGUgb2YgdmFsaWRhdGlvblxyXG4gICAqIEBwYXJhbSBzb3VyY2VzIC0gQ29uZmlndXJhdGlvbiBzb3VyY2VzXHJcbiAgICogQHJldHVybnMgVmFsaWRhdGlvbiByZXN1bHRzIGZvciBlYWNoIG5hbWVzcGFjZVxyXG4gICAqL1xyXG4gIHZhbGlkYXRlTmFtZXNwYWNlZENvbmZpZ3VyYXRpb24oXHJcbiAgICBuYW1lc3BhY2VkQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+PixcclxuICAgIHZhbGlkYXRpb25TY2hlbWFzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG4gICAgdmFsaWRhdGlvblR5cGU6ICdqb2knIHwgJ2NsYXNzLXZhbGlkYXRvcicgfCAnY3VzdG9tJyxcclxuICAgIHNvdXJjZXM/OiBDb25maWd1cmF0aW9uU291cmNlW11cclxuICApOiBSZWNvcmQ8c3RyaW5nLCB7IGlzVmFsaWQ6IGJvb2xlYW47IGVycm9yczogc3RyaW5nW107IHdhcm5pbmdzOiBzdHJpbmdbXSB9PiB7XHJcbiAgICBjb25zdCByZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCB7IGlzVmFsaWQ6IGJvb2xlYW47IGVycm9yczogc3RyaW5nW107IHdhcm5pbmdzOiBzdHJpbmdbXSB9PiA9IHt9O1xyXG5cclxuICAgIGZvciAoY29uc3QgW25hbWVzcGFjZSwgY29uZmlnXSBvZiBPYmplY3QuZW50cmllcyhuYW1lc3BhY2VkQ29uZmlnKSkge1xyXG4gICAgICBjb25zdCBzY2hlbWEgPSB2YWxpZGF0aW9uU2NoZW1hc1tuYW1lc3BhY2VdO1xyXG4gICAgICBcclxuICAgICAgaWYgKHNjaGVtYSkge1xyXG4gICAgICAgIHJlc3VsdHNbbmFtZXNwYWNlXSA9IHRoaXMudmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZpZywgc2NoZW1hLCB2YWxpZGF0aW9uVHlwZSwgc291cmNlcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0c1tuYW1lc3BhY2VdID0ge1xyXG4gICAgICAgICAgaXNWYWxpZDogdHJ1ZSxcclxuICAgICAgICAgIGVycm9yczogW10sXHJcbiAgICAgICAgICB3YXJuaW5nczogW2BObyB2YWxpZGF0aW9uIHNjaGVtYSBwcm92aWRlZCBmb3IgbmFtZXNwYWNlOiAke25hbWVzcGFjZX1gXVxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIHdoaWNoIHZhbGlkYXRpb24gcHJvdmlkZXJzIGFyZSBhdmFpbGFibGUuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgT2JqZWN0IGluZGljYXRpbmcgYXZhaWxhYmlsaXR5IG9mIGVhY2ggcHJvdmlkZXJcclxuICAgKi9cclxuICBnZXRBdmFpbGFibGVWYWxpZGF0aW9uUHJvdmlkZXJzKCk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IGF2YWlsYWJpbGl0eTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuICAgIFxyXG4gICAgZm9yIChjb25zdCBbbmFtZSwgcHJvdmlkZXJdIG9mIHRoaXMudmFsaWRhdGlvblByb3ZpZGVycykge1xyXG4gICAgICBhdmFpbGFiaWxpdHlbbmFtZV0gPSBwcm92aWRlci5pc0F2YWlsYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhdmFpbGFiaWxpdHk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdmFsaWRhdGlvbiByZWNvbW1lbmRhdGlvbnMgYmFzZWQgb24gY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gdG8gYW5hbHl6ZVxyXG4gICAqIEByZXR1cm5zIFZhbGlkYXRpb24gcmVjb21tZW5kYXRpb25zXHJcbiAgICovXHJcbiAgZ2V0VmFsaWRhdGlvblJlY29tbWVuZGF0aW9ucyhjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4pOiB7XHJcbiAgICByZWNvbW1lbmRlZFByb3ZpZGVyOiBzdHJpbmc7XHJcbiAgICByZWFzb25zOiBzdHJpbmdbXTtcclxuICAgIGV4YW1wbGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIH0ge1xyXG4gICAgY29uc3QgYW5hbHlzaXMgPSB0aGlzLmFuYWx5emVDb25maWd1cmF0aW9uU3RydWN0dXJlKGNvbmZpZyk7XHJcbiAgICBcclxuICAgIGxldCByZWNvbW1lbmRlZFByb3ZpZGVyID0gJ2N1c3RvbSc7XHJcbiAgICBjb25zdCByZWFzb25zOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgY29uc3QgZXhhbXBsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgYmVzdCB2YWxpZGF0aW9uIGFwcHJvYWNoXHJcbiAgICBpZiAoYW5hbHlzaXMuaGFzQ29tcGxleE5lc3RpbmcgfHwgYW5hbHlzaXMuaGFzQXJyYXlzKSB7XHJcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRpb25Qcm92aWRlcnMuZ2V0KCdqb2knKT8uaXNBdmFpbGFibGUoKSkge1xyXG4gICAgICAgIHJlY29tbWVuZGVkUHJvdmlkZXIgPSAnam9pJztcclxuICAgICAgICByZWFzb25zLnB1c2goJ0NvbXBsZXggbmVzdGVkIHN0cnVjdHVyZSBkZXRlY3RlZCAtIEpvaSBwcm92aWRlcyBleGNlbGxlbnQgbmVzdGVkIHZhbGlkYXRpb24nKTtcclxuICAgICAgICBleGFtcGxlc1snam9pJ10gPSB0aGlzLmdlbmVyYXRlSm9pRXhhbXBsZShjb25maWcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFuYWx5c2lzLmhhc1R5cGVkVmFsdWVzICYmIHRoaXMudmFsaWRhdGlvblByb3ZpZGVycy5nZXQoJ2NsYXNzLXZhbGlkYXRvcicpPy5pc0F2YWlsYWJsZSgpKSB7XHJcbiAgICAgIHJlY29tbWVuZGVkUHJvdmlkZXIgPSAnY2xhc3MtdmFsaWRhdG9yJztcclxuICAgICAgcmVhc29ucy5wdXNoKCdUeXBlZCB2YWx1ZXMgZGV0ZWN0ZWQgLSBjbGFzcy12YWxpZGF0b3IgcHJvdmlkZXMgc3Ryb25nIHR5cGUgc2FmZXR5Jyk7XHJcbiAgICAgIGV4YW1wbGVzWydjbGFzcy12YWxpZGF0b3InXSA9IHRoaXMuZ2VuZXJhdGVDbGFzc1ZhbGlkYXRvckV4YW1wbGUoY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBbHdheXMgcHJvdmlkZSBjdXN0b20gZXhhbXBsZVxyXG4gICAgZXhhbXBsZXNbJ2N1c3RvbSddID0gdGhpcy5nZW5lcmF0ZUN1c3RvbVZhbGlkYXRpb25FeGFtcGxlKGNvbmZpZyk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcmVjb21tZW5kZWRQcm92aWRlcixcclxuICAgICAgcmVhc29ucyxcclxuICAgICAgZXhhbXBsZXNcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlciB2YWxpZGF0aW9uIHByb3ZpZGVycy5cclxuICAgKi9cclxuICBwcml2YXRlIHJlZ2lzdGVyVmFsaWRhdGlvblByb3ZpZGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsaWRhdGlvblByb3ZpZGVycy5zZXQoJ2pvaScsIG5ldyBKb2lWYWxpZGF0aW9uUHJvdmlkZXIoKSk7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25Qcm92aWRlcnMuc2V0KCdjbGFzcy12YWxpZGF0b3InLCBuZXcgQ2xhc3NWYWxpZGF0b3JQcm92aWRlcigpKTtcclxuICAgIHRoaXMudmFsaWRhdGlvblByb3ZpZGVycy5zZXQoJ2N1c3RvbScsIG5ldyBDdXN0b21WYWxpZGF0aW9uUHJvdmlkZXIoKSk7XHJcblxyXG4gICAgLy8gTG9nIGF2YWlsYWJsZSBwcm92aWRlcnNcclxuICAgIGNvbnN0IGF2YWlsYWJsZSA9IEFycmF5LmZyb20odGhpcy52YWxpZGF0aW9uUHJvdmlkZXJzLmVudHJpZXMoKSlcclxuICAgICAgLmZpbHRlcigoW18sIHByb3ZpZGVyXSkgPT4gcHJvdmlkZXIuaXNBdmFpbGFibGUoKSlcclxuICAgICAgLm1hcCgoW25hbWVdKSA9PiBuYW1lKTtcclxuXHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQXZhaWxhYmxlIHZhbGlkYXRpb24gcHJvdmlkZXJzOiAke2F2YWlsYWJsZS5qb2luKCcsICcpfWApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgZGV0YWlsZWQgdmFsaWRhdGlvbiBlcnJvciB3aXRoIHNvdXJjZSBpbmZvcm1hdGlvbi5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gbmFtZXNwYWNlIC0gTmFtZXNwYWNlIHRoYXQgZmFpbGVkIHZhbGlkYXRpb25cclxuICAgKiBAcGFyYW0gZXJyb3JzIC0gVmFsaWRhdGlvbiBlcnJvcnNcclxuICAgKiBAcGFyYW0gc291cmNlcyAtIENvbmZpZ3VyYXRpb24gc291cmNlc1xyXG4gICAqIEByZXR1cm5zIERldGFpbGVkIGVycm9yXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVWYWxpZGF0aW9uRXJyb3IoXHJcbiAgICBuYW1lc3BhY2U6IHN0cmluZyxcclxuICAgIGVycm9yczogc3RyaW5nW10sXHJcbiAgICBzb3VyY2VzPzogQ29uZmlndXJhdGlvblNvdXJjZVtdXHJcbiAgKTogRXJyb3Ige1xyXG4gICAgbGV0IG1lc3NhZ2UgPSBgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgbmFtZXNwYWNlICcke25hbWVzcGFjZX0nOlxcbmA7XHJcbiAgICBtZXNzYWdlICs9IGVycm9ycy5tYXAoZXJyb3IgPT4gYCAgLSAke2Vycm9yfWApLmpvaW4oJ1xcbicpO1xyXG5cclxuICAgIGlmIChzb3VyY2VzICYmIHNvdXJjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBtZXNzYWdlICs9ICdcXG5cXG5Db25maWd1cmF0aW9uIHNvdXJjZXM6XFxuJztcclxuICAgICAgbWVzc2FnZSArPSBzb3VyY2VzLm1hcChzb3VyY2UgPT4gXHJcbiAgICAgICAgYCAgLSAke3NvdXJjZS5uYW1lfSAoJHtzb3VyY2UudHlwZX0pOiAke09iamVjdC5rZXlzKHNvdXJjZS5kYXRhKS5sZW5ndGh9IGtleXNgXHJcbiAgICAgICkuam9pbignXFxuJyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICBlcnJvci5uYW1lID0gJ0NvbmZpZ3VyYXRpb25WYWxpZGF0aW9uRXJyb3InO1xyXG4gICAgKGVycm9yIGFzIGFueSkubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xyXG4gICAgKGVycm9yIGFzIGFueSkudmFsaWRhdGlvbkVycm9ycyA9IGVycm9ycztcclxuICAgIChlcnJvciBhcyBhbnkpLnNvdXJjZXMgPSBzb3VyY2VzO1xyXG5cclxuICAgIHJldHVybiBlcnJvcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuaGFuY2UgZXJyb3IgbWVzc2FnZSB3aXRoIHNvdXJjZSBpbmZvcm1hdGlvbi5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gZXJyb3IgLSBPcmlnaW5hbCBlcnJvciBtZXNzYWdlXHJcbiAgICogQHBhcmFtIHNvdXJjZXMgLSBDb25maWd1cmF0aW9uIHNvdXJjZXNcclxuICAgKiBAcmV0dXJucyBFbmhhbmNlZCBlcnJvciBtZXNzYWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBlbmhhbmNlRXJyb3JXaXRoU291cmNlSW5mbyhlcnJvcjogc3RyaW5nLCBzb3VyY2VzPzogQ29uZmlndXJhdGlvblNvdXJjZVtdKTogc3RyaW5nIHtcclxuICAgIGlmICghc291cmNlcyB8fCBzb3VyY2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc291cmNlTmFtZXMgPSBzb3VyY2VzLm1hcChzID0+IHMubmFtZSkuam9pbignLCAnKTtcclxuICAgIHJldHVybiBgJHtlcnJvcn0gKGZyb20gc291cmNlczogJHtzb3VyY2VOYW1lc30pYDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuYWx5emUgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgZm9yIHZhbGlkYXRpb24gcmVjb21tZW5kYXRpb25zLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIHRvIGFuYWx5emVcclxuICAgKiBAcmV0dXJucyBTdHJ1Y3R1cmUgYW5hbHlzaXNcclxuICAgKi9cclxuICBwcml2YXRlIGFuYWx5emVDb25maWd1cmF0aW9uU3RydWN0dXJlKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55Pik6IHtcclxuICAgIGhhc0NvbXBsZXhOZXN0aW5nOiBib29sZWFuO1xyXG4gICAgaGFzQXJyYXlzOiBib29sZWFuO1xyXG4gICAgaGFzVHlwZWRWYWx1ZXM6IGJvb2xlYW47XHJcbiAgICBkZXB0aDogbnVtYmVyO1xyXG4gIH0ge1xyXG4gICAgbGV0IGhhc0NvbXBsZXhOZXN0aW5nID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzQXJyYXlzID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzVHlwZWRWYWx1ZXMgPSBmYWxzZTtcclxuICAgIGxldCBtYXhEZXB0aCA9IDA7XHJcblxyXG4gICAgY29uc3QgYW5hbHl6ZSA9IChvYmo6IGFueSwgZGVwdGg6IG51bWJlciA9IDApOiB2b2lkID0+IHtcclxuICAgICAgbWF4RGVwdGggPSBNYXRoLm1heChtYXhEZXB0aCwgZGVwdGgpO1xyXG5cclxuICAgICAgaWYgKGRlcHRoID4gMikge1xyXG4gICAgICAgIGhhc0NvbXBsZXhOZXN0aW5nID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBPYmplY3QudmFsdWVzKG9iaikpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgIGhhc0FycmF5cyA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBhbmFseXplKHZhbHVlLCBkZXB0aCArIDEpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgaGFzVHlwZWRWYWx1ZXMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBhbmFseXplKGNvbmZpZyk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGFzQ29tcGxleE5lc3RpbmcsXHJcbiAgICAgIGhhc0FycmF5cyxcclxuICAgICAgaGFzVHlwZWRWYWx1ZXMsXHJcbiAgICAgIGRlcHRoOiBtYXhEZXB0aFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlIEpvaSB2YWxpZGF0aW9uIGV4YW1wbGUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gdG8gZ2VuZXJhdGUgZXhhbXBsZSBmb3JcclxuICAgKiBAcmV0dXJucyBKb2kgdmFsaWRhdGlvbiBleGFtcGxlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUpvaUV4YW1wbGUoY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuZ2VuZXJhdGVKb2lTY2hlbWFGcm9tQ29uZmlnKGNvbmZpZyk7XHJcbiAgICByZXR1cm4gYGNvbnN0IEpvaSA9IHJlcXVpcmUoJ2pvaScpO1xyXG5cclxuY29uc3Qgc2NoZW1hID0gJHtzY2hlbWF9O1xyXG5cclxuLy8gVXNhZ2UgaW4gZmFjdG9yeVxyXG5jb25zdCBmYWN0b3J5ID0gKCkgPT4ge1xyXG4gIGNvbnN0IGNvbmZpZyA9IGxvYWRBd3NDb25maWcoKTtcclxuICBjb25zdCB7IGVycm9yLCB2YWx1ZSB9ID0gc2NoZW1hLnZhbGlkYXRlKGNvbmZpZyk7XHJcbiAgaWYgKGVycm9yKSB0aHJvdyBlcnJvcjtcclxuICByZXR1cm4gdmFsdWU7XHJcbn07YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlIGNsYXNzLXZhbGlkYXRvciBleGFtcGxlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIHRvIGdlbmVyYXRlIGV4YW1wbGUgZm9yXHJcbiAgICogQHJldHVybnMgY2xhc3MtdmFsaWRhdG9yIGV4YW1wbGVcclxuICAgKi9cclxuICBwcml2YXRlIGdlbmVyYXRlQ2xhc3NWYWxpZGF0b3JFeGFtcGxlKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjbGFzc0RlZmluaXRpb24gPSB0aGlzLmdlbmVyYXRlQ2xhc3NGcm9tQ29uZmlnKGNvbmZpZyk7XHJcbiAgICByZXR1cm4gYGltcG9ydCB7IElzU3RyaW5nLCBJc051bWJlciwgSXNPcHRpb25hbCwgdmFsaWRhdGVTeW5jIH0gZnJvbSAnY2xhc3MtdmFsaWRhdG9yJztcclxuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xyXG5cclxuJHtjbGFzc0RlZmluaXRpb259XHJcblxyXG4vLyBVc2FnZSBpbiBmYWN0b3J5XHJcbmNvbnN0IGZhY3RvcnkgPSAoKSA9PiB7XHJcbiAgY29uc3QgY29uZmlnID0gbG9hZEF3c0NvbmZpZygpO1xyXG4gIGNvbnN0IGluc3RhbmNlID0gcGxhaW5Ub0NsYXNzKENvbmZpZ0NsYXNzLCBjb25maWcpO1xyXG4gIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlU3luYyhpbnN0YW5jZSk7XHJcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB0aHJvdyBuZXcgRXJyb3IoJ1ZhbGlkYXRpb24gZmFpbGVkJyk7XHJcbiAgcmV0dXJuIGNvbmZpZztcclxufTtgO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGUgY3VzdG9tIHZhbGlkYXRpb24gZXhhbXBsZS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhdGlvbiB0byBnZW5lcmF0ZSBleGFtcGxlIGZvclxyXG4gICAqIEByZXR1cm5zIEN1c3RvbSB2YWxpZGF0aW9uIGV4YW1wbGVcclxuICAgKi9cclxuICBwcml2YXRlIGdlbmVyYXRlQ3VzdG9tVmFsaWRhdGlvbkV4YW1wbGUoY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHZhbGlkYXRpb25DaGVja3MgPSB0aGlzLmdlbmVyYXRlVmFsaWRhdGlvbkNoZWNrcyhjb25maWcpO1xyXG4gICAgcmV0dXJuIGBjb25zdCB2YWxpZGF0ZUNvbmZpZyA9IChjb25maWcpID0+IHtcclxuICBjb25zdCBlcnJvcnMgPSBbXTtcclxuICBcclxuJHt2YWxpZGF0aW9uQ2hlY2tzfVxyXG4gIFxyXG4gIHJldHVybiBlcnJvcnM7XHJcbn07XHJcblxyXG4vLyBVc2FnZSBpbiBmYWN0b3J5XHJcbmNvbnN0IGZhY3RvcnkgPSAoKSA9PiB7XHJcbiAgY29uc3QgY29uZmlnID0gbG9hZEF3c0NvbmZpZygpO1xyXG4gIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlQ29uZmlnKGNvbmZpZyk7XHJcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB0aHJvdyBuZXcgRXJyb3IoXFxgVmFsaWRhdGlvbiBmYWlsZWQ6IFxcJHtlcnJvcnMuam9pbignLCAnKX1cXGApO1xyXG4gIHJldHVybiBjb25maWc7XHJcbn07YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlIEpvaSBzY2hlbWEgZnJvbSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhdGlvbiBvYmplY3RcclxuICAgKiBAcmV0dXJucyBKb2kgc2NoZW1hIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2VuZXJhdGVKb2lTY2hlbWFGcm9tQ29uZmlnKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBnZW5lcmF0ZVNjaGVtYSA9IChvYmo6IGFueSk6IHN0cmluZyA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykgcmV0dXJuICdKb2kuc3RyaW5nKCknO1xyXG4gICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ251bWJlcicpIHJldHVybiAnSm9pLm51bWJlcigpJztcclxuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdib29sZWFuJykgcmV0dXJuICdKb2kuYm9vbGVhbigpJztcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkgcmV0dXJuICdKb2kuYXJyYXkoKSc7XHJcbiAgICAgIFxyXG4gICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKG9iailcclxuICAgICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCAgJHtrZXl9OiAke2dlbmVyYXRlU2NoZW1hKHZhbHVlKX1gKVxyXG4gICAgICAgICAgLmpvaW4oJyxcXG4nKTtcclxuICAgICAgICByZXR1cm4gYEpvaS5vYmplY3Qoe1xcbiR7cHJvcGVydGllc31cXG59KWA7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHJldHVybiAnSm9pLmFueSgpJztcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGdlbmVyYXRlU2NoZW1hKGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZSBjbGFzcyBkZWZpbml0aW9uIGZyb20gY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gb2JqZWN0XHJcbiAgICogQHJldHVybnMgQ2xhc3MgZGVmaW5pdGlvbiBzdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGdlbmVyYXRlQ2xhc3NGcm9tQ29uZmlnKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmVudHJpZXMoY29uZmlnKVxyXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICBjb25zdCBkZWNvcmF0b3IgPSB0aGlzLmdldENsYXNzVmFsaWRhdG9yRGVjb3JhdG9yKHZhbHVlKTtcclxuICAgICAgICByZXR1cm4gYCAgJHtkZWNvcmF0b3J9XFxuICAke2tleX06ICR7dGhpcy5nZXRUeXBlU2NyaXB0VHlwZSh2YWx1ZSl9O2A7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5qb2luKCdcXG5cXG4nKTtcclxuXHJcbiAgICByZXR1cm4gYGNsYXNzIENvbmZpZ0NsYXNzIHtcXG4ke3Byb3BlcnRpZXN9XFxufWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZSB2YWxpZGF0aW9uIGNoZWNrcyBmb3IgY3VzdG9tIHZhbGlkYXRpb24uXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gb2JqZWN0XHJcbiAgICogQHJldHVybnMgVmFsaWRhdGlvbiBjaGVja3Mgc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZVZhbGlkYXRpb25DaGVja3MoY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhjb25maWcpXHJcbiAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNoZWNrID0gdGhpcy5nZXRWYWxpZGF0aW9uQ2hlY2soa2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIGAgICR7Y2hlY2t9YDtcclxuICAgICAgfSlcclxuICAgICAgLmpvaW4oJ1xcbicpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGNsYXNzLXZhbGlkYXRvciBkZWNvcmF0b3IgZm9yIGEgdmFsdWUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gZ2V0IGRlY29yYXRvciBmb3JcclxuICAgKiBAcmV0dXJucyBEZWNvcmF0b3Igc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRDbGFzc1ZhbGlkYXRvckRlY29yYXRvcih2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gJ0BJc1N0cmluZygpJztcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gJ0BJc051bWJlcigpJztcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykgcmV0dXJuICdASXNCb29sZWFuKCknO1xyXG4gICAgcmV0dXJuICdASXNPcHRpb25hbCgpJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBUeXBlU2NyaXB0IHR5cGUgZm9yIGEgdmFsdWUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gZ2V0IHR5cGUgZm9yXHJcbiAgICogQHJldHVybnMgVHlwZVNjcmlwdCB0eXBlIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0VHlwZVNjcmlwdFR5cGUodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuICdzdHJpbmcnO1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiAnbnVtYmVyJztcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykgcmV0dXJuICdib29sZWFuJztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuICdhbnlbXSc7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykgcmV0dXJuICdvYmplY3QnO1xyXG4gICAgcmV0dXJuICdhbnknO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHZhbGlkYXRpb24gY2hlY2sgZm9yIGN1c3RvbSB2YWxpZGF0aW9uLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBrZXkgLSBDb25maWd1cmF0aW9uIGtleVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAtIENvbmZpZ3VyYXRpb24gdmFsdWVcclxuICAgKiBAcmV0dXJucyBWYWxpZGF0aW9uIGNoZWNrIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0VmFsaWRhdGlvbkNoZWNrKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiBgaWYgKCFjb25maWcuJHtrZXl9IHx8IHR5cGVvZiBjb25maWcuJHtrZXl9ICE9PSAnc3RyaW5nJykgZXJyb3JzLnB1c2goJyR7a2V5fSBtdXN0IGJlIGEgc3RyaW5nJyk7YDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiBgaWYgKGNvbmZpZy4ke2tleX0gPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgY29uZmlnLiR7a2V5fSAhPT0gJ251bWJlcicpIGVycm9ycy5wdXNoKCcke2tleX0gbXVzdCBiZSBhIG51bWJlcicpO2A7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgcmV0dXJuIGBpZiAoY29uZmlnLiR7a2V5fSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBjb25maWcuJHtrZXl9ICE9PSAnYm9vbGVhbicpIGVycm9ycy5wdXNoKCcke2tleX0gbXVzdCBiZSBhIGJvb2xlYW4nKTtgO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGBpZiAoY29uZmlnLiR7a2V5fSA9PT0gdW5kZWZpbmVkKSBlcnJvcnMucHVzaCgnJHtrZXl9IGlzIHJlcXVpcmVkJyk7YDtcclxuICB9XHJcbn0iXX0=
|
|
@@ -34,7 +34,7 @@ export declare class SecretsManagerLoader implements ConfigLoader {
|
|
|
34
34
|
constructor(config?: SecretsManagerLoaderConfig);
|
|
35
35
|
/**
|
|
36
36
|
* Get the name of this loader for logging and debugging.
|
|
37
|
-
* @returns The loader name with secret path
|
|
37
|
+
* @returns The loader name with secret path or base secret name if path cannot be built
|
|
38
38
|
*/
|
|
39
39
|
getName(): string;
|
|
40
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets-manager.loader.d.ts","sourceRoot":"","sources":["../../../../../../config-aws/src/loaders/secrets-manager.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAG9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAGjG;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACjD,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IACjE,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEvB,MAAM,GAAE,0BAA+B;IAsBnD;;;OAGG;IACH,OAAO,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"secrets-manager.loader.d.ts","sourceRoot":"","sources":["../../../../../../config-aws/src/loaders/secrets-manager.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAG9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAGjG;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACjD,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IACjE,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEvB,MAAM,GAAE,0BAA+B;IAsBnD;;;OAGG;IACH,OAAO,IAAI,MAAM;IAYjB;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAerC;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAoE9C;;;OAGG;IACH,eAAe,IAAI,MAAM;IAczB;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGhD"}
|
package/dist/types/nestjs-config-aws/src/integration/services/async-config-helper.service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-config-helper.service.d.ts","sourceRoot":"","sources":["../../../../../../src/integration/services/async-config-helper.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGjF;;;;GAIG;AACH,qBACa,wBAAwB;IAIjC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAE3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAGjD,0BAA0B,EAAE,0BAA0B,EAEtD,OAAO,GAAE,kBAAuB;IAGnD;;;;;OAKG;IACG,wBAAwB,IAAI,OAAO,CAAC,aAAa,CAAC;IAiDxD;;;;;;OAMG;IACG,8BAA8B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAgCpF;;;;;;OAMG;IACH,kCAAkC,CAAC,YAAY,GAAE,GAAG,EAAO,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,mBAAmB,CAAC;IA6C9G;;;;;;OAMG;IACG,wBAAwB,CAAC,eAAe,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAmDvF;;;;;;OAMG;IACG,wBAAwB,CAAC,WAAW,GAAE,mBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyCnG;;;;;OAKG;IACG,sBAAsB,IAAI,OAAO,CAAC;QACtC,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IA0BF;;;;;OAKG;IACH,sBAAsB,IAAI,aAAa;
|
|
1
|
+
{"version":3,"file":"async-config-helper.service.d.ts","sourceRoot":"","sources":["../../../../../../src/integration/services/async-config-helper.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGjF;;;;GAIG;AACH,qBACa,wBAAwB;IAIjC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAE3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAGjD,0BAA0B,EAAE,0BAA0B,EAEtD,OAAO,GAAE,kBAAuB;IAGnD;;;;;OAKG;IACG,wBAAwB,IAAI,OAAO,CAAC,aAAa,CAAC;IAiDxD;;;;;;OAMG;IACG,8BAA8B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAgCpF;;;;;;OAMG;IACH,kCAAkC,CAAC,YAAY,GAAE,GAAG,EAAO,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,mBAAmB,CAAC;IA6C9G;;;;;;OAMG;IACG,wBAAwB,CAAC,eAAe,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAmDvF;;;;;;OAMG;IACG,wBAAwB,CAAC,WAAW,GAAE,mBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyCnG;;;;;OAKG;IACG,sBAAsB,IAAI,OAAO,CAAC;QACtC,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IA0BF;;;;;OAKG;IACH,sBAAsB,IAAI,aAAa;IAuCvC;;;OAGG;YACW,uBAAuB;IAkBrC;;;;;OAKG;IACH,OAAO,CAAC,SAAS;CAiBlB"}
|