@aws-solutions-constructs/core 2.96.0 → 2.98.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/index.d.ts CHANGED
@@ -76,4 +76,5 @@ export * from './lib/pipes-defaults';
76
76
  export * from './lib/pipes-helper';
77
77
  export * from './lib/bedrock-inference-helper';
78
78
  export * from './lib/translate-helper';
79
+ export * from './lib/textract-helper';
79
80
  export * from './lib/constructs-feature-flags';
package/index.js CHANGED
@@ -92,5 +92,6 @@ __exportStar(require("./lib/pipes-defaults"), exports);
92
92
  __exportStar(require("./lib/pipes-helper"), exports);
93
93
  __exportStar(require("./lib/bedrock-inference-helper"), exports);
94
94
  __exportStar(require("./lib/translate-helper"), exports);
95
+ __exportStar(require("./lib/textract-helper"), exports);
95
96
  __exportStar(require("./lib/constructs-feature-flags"), exports);
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxxREFBbUM7QUFDbkMsbURBQWlDO0FBQ2pDLDREQUEwQztBQUMxQywwREFBd0M7QUFDeEMsZ0VBQThDO0FBQzlDLDZEQUEyQztBQUMzQywyREFBeUM7QUFDekMseURBQXVDO0FBQ3ZDLHVEQUFxQztBQUNyQyxnRUFBOEM7QUFDOUMsbUVBQWlEO0FBQ2pELGlFQUErQztBQUMvQyxpRUFBK0M7QUFDL0MsK0RBQTZDO0FBQzdDLHFFQUFtRDtBQUNuRCw2RUFBMkQ7QUFDM0QscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyx3REFBc0M7QUFDdEMsc0RBQW9DO0FBQ3BDLDJEQUF5QztBQUN6Qyx5REFBdUM7QUFDdkMsZ0VBQThDO0FBQzlDLDhEQUE0QztBQUM1Qyw4REFBNEM7QUFDNUMscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyxzREFBb0M7QUFDcEMscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyx1RUFBcUQ7QUFDckQseUVBQXVEO0FBQ3ZELDhDQUE0QjtBQUM1Qiw2REFBMkM7QUFDM0MseURBQXVDO0FBQ3ZDLHVEQUFxQztBQUNyQywrREFBNkM7QUFDN0MsNkRBQTJDO0FBQzNDLCtEQUE2QztBQUM3Qyw2REFBMkM7QUFDM0MsOERBQTRDO0FBQzVDLHFEQUFtQztBQUNuQyxtREFBaUM7QUFDakMsMkRBQXlDO0FBQ3pDLHlEQUF1QztBQUN2QyxvRUFBa0Q7QUFDbEQsMERBQXdDO0FBQ3hDLHdEQUFzQztBQUN0Qyw0REFBMEM7QUFDMUMsMERBQXdDO0FBQ3hDLCtEQUE2QztBQUM3Qyw2REFBMkM7QUFDM0MscURBQW1DO0FBQ25DLG9FQUFrRDtBQUNsRCwyREFBeUM7QUFDekMscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyw0REFBMEM7QUFDMUMsMERBQXdDO0FBQ3hDLHNEQUFvQztBQUNwQywrREFBNkM7QUFDN0MsNkRBQTJDO0FBQzNDLHVEQUFxQztBQUNyQyxxREFBbUM7QUFDbkMsaUVBQStDO0FBQy9DLHlEQUF1QztBQUN2QyxpRUFBK0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbGItZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWxiLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGlnYXRld2F5LWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaWdhdGV3YXktaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2R5bmFtb2RiLXRhYmxlLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VsYXN0aWNhY2hlLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VsYXN0aWNhY2hlLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYXJnYXRlLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZhcmdhdGUtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lvdC10b3BpYy1ydWxlLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2tpbmVzaXMtYW5hbHl0aWNzLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2tpbmVzaXMtYW5hbHl0aWNzLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9raW5lc2lzLXN0cmVhbXMtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2luZXNpcy1zdHJlYW1zLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9raW5lc2lzLWZpcmVob3NlLXMzLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xhbWJkYS1ldmVudC1zb3VyY2UtbWFwcGluZy1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9rbXMtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva21zLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sYW1iZGEtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGFtYmRhLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zMy1idWNrZXQtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvczMtYnVja2V0LWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWNyZXRzbWFuYWdlci1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWNyZXRzbWFuYWdlci1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VjdXJpdHktZ3JvdXAtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Nucy1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbnMtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3MzLW9hYy1vcmlnaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3FzLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Nxcy1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xvdWRmcm9udC1kaXN0cmlidXRpb24taGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nsb3VkZnJvbnQtZGlzdHJpYnV0aW9uLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V2ZW50cy1ydWxlLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZ25pdG8tZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29nbml0by1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWxhc3RpY3NlYXJjaC1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbGFzdGljc2VhcmNoLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLWZ1bmN0aW9uLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtZnVuY3Rpb24taGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2R5bmFtb2RiLXRhYmxlLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92cGMtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdnBjLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zYWdlbWFrZXItZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2FnZW1ha2VyLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbG91ZHdhdGNoLWxvZy1ncm91cC1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2x1ZS1qb2ItZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2x1ZS1qb2ItaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dsdWUtdGFibGUtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2x1ZS10YWJsZS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2x1ZS1kYXRhYmFzZS1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbHVlLWRhdGFiYXNlLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL3Rlc3QvdGVzdC1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3NtLXN0cmluZy1wYXJhbWV0ZXItaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V2ZW50YnJpZGdlLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93YWYtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2FmLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vcGVuc2VhcmNoLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29wZW5zZWFyY2gtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2tlbmRyYS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2Vic29ja2V0LWFwaS1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93ZWJzb2NrZXQtYXBpLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmVkcm9jay1pbmZlcmVuY2UtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyYW5zbGF0ZS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc3RydWN0cy1mZWF0dXJlLWZsYWdzJztcbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxxREFBbUM7QUFDbkMsbURBQWlDO0FBQ2pDLDREQUEwQztBQUMxQywwREFBd0M7QUFDeEMsZ0VBQThDO0FBQzlDLDZEQUEyQztBQUMzQywyREFBeUM7QUFDekMseURBQXVDO0FBQ3ZDLHVEQUFxQztBQUNyQyxnRUFBOEM7QUFDOUMsbUVBQWlEO0FBQ2pELGlFQUErQztBQUMvQyxpRUFBK0M7QUFDL0MsK0RBQTZDO0FBQzdDLHFFQUFtRDtBQUNuRCw2RUFBMkQ7QUFDM0QscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyx3REFBc0M7QUFDdEMsc0RBQW9DO0FBQ3BDLDJEQUF5QztBQUN6Qyx5REFBdUM7QUFDdkMsZ0VBQThDO0FBQzlDLDhEQUE0QztBQUM1Qyw4REFBNEM7QUFDNUMscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyxzREFBb0M7QUFDcEMscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyx1RUFBcUQ7QUFDckQseUVBQXVEO0FBQ3ZELDhDQUE0QjtBQUM1Qiw2REFBMkM7QUFDM0MseURBQXVDO0FBQ3ZDLHVEQUFxQztBQUNyQywrREFBNkM7QUFDN0MsNkRBQTJDO0FBQzNDLCtEQUE2QztBQUM3Qyw2REFBMkM7QUFDM0MsOERBQTRDO0FBQzVDLHFEQUFtQztBQUNuQyxtREFBaUM7QUFDakMsMkRBQXlDO0FBQ3pDLHlEQUF1QztBQUN2QyxvRUFBa0Q7QUFDbEQsMERBQXdDO0FBQ3hDLHdEQUFzQztBQUN0Qyw0REFBMEM7QUFDMUMsMERBQXdDO0FBQ3hDLCtEQUE2QztBQUM3Qyw2REFBMkM7QUFDM0MscURBQW1DO0FBQ25DLG9FQUFrRDtBQUNsRCwyREFBeUM7QUFDekMscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyw0REFBMEM7QUFDMUMsMERBQXdDO0FBQ3hDLHNEQUFvQztBQUNwQywrREFBNkM7QUFDN0MsNkRBQTJDO0FBQzNDLHVEQUFxQztBQUNyQyxxREFBbUM7QUFDbkMsaUVBQStDO0FBQy9DLHlEQUF1QztBQUN2Qyx3REFBc0M7QUFDdEMsaUVBQStDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYWxiLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FsYi1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpZ2F0ZXdheS1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGlnYXRld2F5LWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9keW5hbW9kYi10YWJsZS1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbGFzdGljYWNoZS1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbGFzdGljYWNoZS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmFyZ2F0ZS1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYXJnYXRlLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pb3QtdG9waWMtcnVsZS1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9raW5lc2lzLWFuYWx5dGljcy1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9raW5lc2lzLWFuYWx5dGljcy1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2luZXNpcy1zdHJlYW1zLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2tpbmVzaXMtc3RyZWFtcy1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2luZXNpcy1maXJlaG9zZS1zMy1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sYW1iZGEtZXZlbnQtc291cmNlLW1hcHBpbmctZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva21zLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ttcy1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGFtYmRhLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xhbWJkYS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvczMtYnVja2V0LWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3MzLWJ1Y2tldC1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VjcmV0c21hbmFnZXItZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VjcmV0c21hbmFnZXItaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlY3VyaXR5LWdyb3VwLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbnMtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc25zLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zMy1vYWMtb3JpZ2luJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Nxcy1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcXMtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nsb3VkZnJvbnQtZGlzdHJpYnV0aW9uLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbG91ZGZyb250LWRpc3RyaWJ1dGlvbi1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ldmVudHMtcnVsZS1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2duaXRvLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZ25pdG8taGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VsYXN0aWNzZWFyY2gtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWxhc3RpY3NlYXJjaC1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RlcC1mdW5jdGlvbi1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLWZ1bmN0aW9uLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9keW5hbW9kYi10YWJsZS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdnBjLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZwYy1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2FnZW1ha2VyLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NhZ2VtYWtlci1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xvdWR3YXRjaC1sb2ctZ3JvdXAtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dsdWUtam9iLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dsdWUtam9iLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbHVlLXRhYmxlLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dsdWUtdGFibGUtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dsdWUtZGF0YWJhc2UtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2x1ZS1kYXRhYmFzZS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi90ZXN0L3Rlc3QtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NzbS1zdHJpbmctcGFyYW1ldGVyLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ldmVudGJyaWRnZS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2FmLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dhZi1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb3BlbnNlYXJjaC1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vcGVuc2VhcmNoLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9rZW5kcmEtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dlYnNvY2tldC1hcGktZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2Vic29ja2V0LWFwaS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JlZHJvY2staW5mZXJlbmNlLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmFuc2xhdGUtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RleHRyYWN0LWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25zdHJ1Y3RzLWZlYXR1cmUtZmxhZ3MnO1xuIl19
@@ -26,8 +26,8 @@ const QUEUE_USE_SSE = "@aws-solutions-constructs/aws-sqs:QueueUseSse";
26
26
  */
27
27
  class ConstructsFeatureFlagsReport extends constructs_1.Construct {
28
28
  static ensure(scope) {
29
- const app = aws_cdk_lib_1.App.of(scope);
30
- if (!app) {
29
+ const app = scope.node.root;
30
+ if (!app || !aws_cdk_lib_1.App.isApp(app)) {
31
31
  throw new Error('Invalid scope provided to ConstructsFeatureFlagsReport');
32
32
  }
33
33
  const id = 'AwsSolutionsFeatureFlagsReport';
@@ -60,4 +60,4 @@ class ConstructsFeatureFlagsReport extends constructs_1.Construct {
60
60
  }
61
61
  }
62
62
  exports.ConstructsFeatureFlagsReport = ConstructsFeatureFlagsReport;
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0cy1mZWF0dXJlLWZsYWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uc3RydWN0cy1mZWF0dXJlLWZsYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUg7OztHQUdHO0FBRUgsMkNBQXVDO0FBQ3ZDLDZDQUE0RTtBQUM1RSwwRUFBMkU7QUFFM0UsTUFBTSxhQUFhLEdBQUcsK0NBQStDLENBQUM7QUFFdEU7O0dBRUc7QUFDSCxNQUFhLDRCQUE2QixTQUFRLHNCQUFTO0lBRWxELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBZ0I7UUFDbkMsTUFBTSxHQUFHLEdBQUcsaUJBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxnQ0FBZ0MsQ0FBQztRQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLDRCQUE0QixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQW9CLEtBQWdCLEVBQUUsRUFBVTtRQUM5QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUEsbUNBQXFCLEVBQUMsSUFBSSxFQUFFO1lBQzFCLFlBQVksRUFBRSxDQUFDLE9BQTBCLEVBQUUsRUFBRTtnQkFDM0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsK0NBQStDLEVBQUU7b0JBQzVFLElBQUksRUFBRSxvQ0FBWSxDQUFDLG1CQUFtQjtvQkFDdEMsVUFBVSxFQUFFO3dCQUNWLE1BQU0sRUFBRSwyQkFBMkI7d0JBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7cUJBQ2pDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE9BQU87WUFDTCxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNmLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLFdBQVcsRUFBRSx1R0FBdUc7Z0JBQ3BILFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7YUFDbEQ7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNKO0FBdENELG9FQXNDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBcHAsIGF0dGFjaEN1c3RvbVN5bnRoZXNpcywgSVN5bnRoZXNpc1Nlc3Npb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBBcnRpZmFjdFR5cGUsIEZlYXR1cmVGbGFnIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcblxuY29uc3QgUVVFVUVfVVNFX1NTRSA9IFwiQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9hd3Mtc3FzOlF1ZXVlVXNlU3NlXCI7XG5cbi8qKlxuICogQSBDREsgTDMgY29uc3RydWN0IHRoYXQgY3JlYXRlcyByZXNvdXJjZXMgZm9yIFNvbHV0aW9ucyBGZWF0dXJlIEZsYWdzIHJlcG9ydGluZ1xuICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0c0ZlYXR1cmVGbGFnc1JlcG9ydCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcHVibGljIHN0YXRpYyBlbnN1cmUoc2NvcGU6IENvbnN0cnVjdCkge1xuICAgIGNvbnN0IGFwcCA9IEFwcC5vZihzY29wZSk7XG4gICAgaWYgKCFhcHApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzY29wZSBwcm92aWRlZCB0byBDb25zdHJ1Y3RzRmVhdHVyZUZsYWdzUmVwb3J0Jyk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gJ0F3c1NvbHV0aW9uc0ZlYXR1cmVGbGFnc1JlcG9ydCc7XG4gICAgaWYgKCFhcHAubm9kZS50cnlGaW5kQ2hpbGQoaWQpKSB7XG4gICAgICBuZXcgQ29uc3RydWN0c0ZlYXR1cmVGbGFnc1JlcG9ydChhcHAsIGlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgYXR0YWNoQ3VzdG9tU3ludGhlc2lzKHRoaXMsIHtcbiAgICAgIG9uU3ludGhlc2l6ZTogKHNlc3Npb246IElTeW50aGVzaXNTZXNzaW9uKSA9PiB7XG4gICAgICAgIHNlc3Npb24uYXNzZW1ibHkuYWRkQXJ0aWZhY3QoXCJAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2ZlYXR1cmUtZmxhZy1yZXBvcnRcIiwge1xuICAgICAgICAgIHR5cGU6IEFydGlmYWN0VHlwZS5GRUFUVVJFX0ZMQUdfUkVQT1JULFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG1vZHVsZTogJ0Bhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMnLFxuICAgICAgICAgICAgZmxhZ3M6IHRoaXMuR2V0RmxhZ0RlZmluaXRpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBHZXRGbGFnRGVmaW5pdGlvbnMoKTogUmVjb3JkIDwgc3RyaW5nLCBGZWF0dXJlRmxhZyA+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtRVUVVRV9VU0VfU1NFXToge1xuICAgICAgICAgIHJlY29tbWVuZGVkVmFsdWU6IHRydWUsXG4gICAgICAgICAgZXhwbGFuYXRpb246IFwiQ2hhbmdlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciB0aGUgY29uc3RydWN0IHRvIGVuY3J5cHQgdGhlIHF1ZXVlIHVzaW5nIFNlcnZlciBTaWRlIEVuY3J5cHRpb24gKFNTRSlcIixcbiAgICAgICAgICB1c2VyVmFsdWU6IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KFFVRVVFX1VTRV9TU0UpXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxufVxuIl19
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0cy1mZWF0dXJlLWZsYWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uc3RydWN0cy1mZWF0dXJlLWZsYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUg7OztHQUdHO0FBRUgsMkNBQXVDO0FBQ3ZDLDZDQUE0RTtBQUM1RSwwRUFBMkU7QUFFM0UsTUFBTSxhQUFhLEdBQUcsK0NBQStDLENBQUM7QUFFdEU7O0dBRUc7QUFDSCxNQUFhLDRCQUE2QixTQUFRLHNCQUFTO0lBRWxELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBZ0I7UUFDbkMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxnQ0FBZ0MsQ0FBQztRQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLDRCQUE0QixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQW9CLEtBQWdCLEVBQUUsRUFBVTtRQUM5QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUEsbUNBQXFCLEVBQUMsSUFBSSxFQUFFO1lBQzFCLFlBQVksRUFBRSxDQUFDLE9BQTBCLEVBQUUsRUFBRTtnQkFDM0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsK0NBQStDLEVBQUU7b0JBQzVFLElBQUksRUFBRSxvQ0FBWSxDQUFDLG1CQUFtQjtvQkFDdEMsVUFBVSxFQUFFO3dCQUNWLE1BQU0sRUFBRSwyQkFBMkI7d0JBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7cUJBQ2pDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE9BQU87WUFDTCxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNmLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLFdBQVcsRUFBRSx1R0FBdUc7Z0JBQ3BILFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7YUFDbEQ7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNKO0FBdENELG9FQXNDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBcHAsIGF0dGFjaEN1c3RvbVN5bnRoZXNpcywgSVN5bnRoZXNpc1Nlc3Npb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBBcnRpZmFjdFR5cGUsIEZlYXR1cmVGbGFnIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcblxuY29uc3QgUVVFVUVfVVNFX1NTRSA9IFwiQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9hd3Mtc3FzOlF1ZXVlVXNlU3NlXCI7XG5cbi8qKlxuICogQSBDREsgTDMgY29uc3RydWN0IHRoYXQgY3JlYXRlcyByZXNvdXJjZXMgZm9yIFNvbHV0aW9ucyBGZWF0dXJlIEZsYWdzIHJlcG9ydGluZ1xuICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0c0ZlYXR1cmVGbGFnc1JlcG9ydCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcHVibGljIHN0YXRpYyBlbnN1cmUoc2NvcGU6IENvbnN0cnVjdCkge1xuICAgIGNvbnN0IGFwcCA9IHNjb3BlLm5vZGUucm9vdDtcbiAgICBpZiAoIWFwcCB8fCAhQXBwLmlzQXBwKGFwcCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzY29wZSBwcm92aWRlZCB0byBDb25zdHJ1Y3RzRmVhdHVyZUZsYWdzUmVwb3J0Jyk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gJ0F3c1NvbHV0aW9uc0ZlYXR1cmVGbGFnc1JlcG9ydCc7XG4gICAgaWYgKCFhcHAubm9kZS50cnlGaW5kQ2hpbGQoaWQpKSB7XG4gICAgICBuZXcgQ29uc3RydWN0c0ZlYXR1cmVGbGFnc1JlcG9ydChhcHAsIGlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgYXR0YWNoQ3VzdG9tU3ludGhlc2lzKHRoaXMsIHtcbiAgICAgIG9uU3ludGhlc2l6ZTogKHNlc3Npb246IElTeW50aGVzaXNTZXNzaW9uKSA9PiB7XG4gICAgICAgIHNlc3Npb24uYXNzZW1ibHkuYWRkQXJ0aWZhY3QoXCJAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2ZlYXR1cmUtZmxhZy1yZXBvcnRcIiwge1xuICAgICAgICAgIHR5cGU6IEFydGlmYWN0VHlwZS5GRUFUVVJFX0ZMQUdfUkVQT1JULFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG1vZHVsZTogJ0Bhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMnLFxuICAgICAgICAgICAgZmxhZ3M6IHRoaXMuR2V0RmxhZ0RlZmluaXRpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBHZXRGbGFnRGVmaW5pdGlvbnMoKTogUmVjb3JkIDwgc3RyaW5nLCBGZWF0dXJlRmxhZyA+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtRVUVVRV9VU0VfU1NFXToge1xuICAgICAgICAgIHJlY29tbWVuZGVkVmFsdWU6IHRydWUsXG4gICAgICAgICAgZXhwbGFuYXRpb246IFwiQ2hhbmdlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciB0aGUgY29uc3RydWN0IHRvIGVuY3J5cHQgdGhlIHF1ZXVlIHVzaW5nIFNlcnZlciBTaWRlIEVuY3J5cHRpb24gKFNTRSlcIixcbiAgICAgICAgICB1c2VyVmFsdWU6IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KFFVRVVFX1VTRV9TU0UpXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxufVxuIl19
@@ -98,7 +98,7 @@ function deployGlueJob(scope, glueJobProps, database, table, outputDataStore, et
98
98
  ]
99
99
  });
100
100
  const jobRole = glueJobProps.role ?
101
- aws_iam_1.Role.fromRoleArn(scope, 'JobRole', glueJobProps.role) :
101
+ aws_iam_1.Role.fromRoleArn(scope, 'JobRole', (typeof glueJobProps.role === "string") ? glueJobProps.role : glueJobProps.role.roleArn) :
102
102
  defaults.createGlueJobRole(scope);
103
103
  glueJobPolicy.attachToRole(jobRole);
104
104
  let outputLocation;
@@ -207,4 +207,4 @@ function isJobCommandProperty(command) {
207
207
  return false;
208
208
  }
209
209
  }
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x1ZS1qb2ItaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2x1ZS1qb2ItaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBNkZILG9DQTBCQztBQVlELHNDQXFGQztBQVVELDhDQUtDO0FBT0QsMENBSUM7QUFXRCxnREFJQztBQXpQRCw2Q0FBNkM7QUFDN0MsaURBQXFHO0FBQ3JHLCtDQUFrRTtBQUNsRSw2Q0FBK0M7QUFFL0MsZ0NBQWdDO0FBQ2hDLG1DQUF3QztBQUd4Qzs7O0dBR0c7QUFDSCxJQUFZLGFBRVg7QUFGRCxXQUFZLGFBQWE7SUFDdkIsMEJBQVMsQ0FBQTtBQUNYLENBQUMsRUFGVyxhQUFhLDZCQUFiLGFBQWEsUUFFeEI7QUFtRUQ7O0dBRUc7QUFDSCxTQUFnQixZQUFZLENBQUMsS0FBZ0IsRUFBRSxLQUF3QjtJQUNyRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLEtBQUssS0FBSyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQy9FLE1BQU0sS0FBSyxDQUFDLG1HQUFtRztvQkFDL0csMEdBQTBHLENBQUMsQ0FBQztZQUM5RyxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDNUcsTUFBTSxLQUFLLENBQUMscUdBQXFHO29CQUNqSCw2REFBNkQsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7WUFFRCxNQUFNLHFCQUFxQixHQUN6QixhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFFB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QUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgZ2x1ZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgeyBFZmZlY3QsIElSb2xlLCBQb2xpY3ksIFBvbGljeVN0YXRlbWVudCwgUm9sZSwgU2VydmljZVByaW5jaXBhbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQnVja2V0LCBCdWNrZXRQcm9wcywgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBBd3MsIElSZXNvbHZhYmxlIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgczNhc3NldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zMy1hc3NldHNcIjtcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJy4uLyc7XG5pbXBvcnQgeyBvdmVycmlkZVByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBCdWlsZFMzQnVja2V0UmVzcG9uc2UgfSBmcm9tICcuLi8nO1xuXG4vKipcbiAqIEVudW1lcmF0aW9uIG9mIGRhdGEgc3RvcmUgdHlwZXMgdGhhdCBjb3VsZCBpbmNsdWRlIFMzLCBEeW5hbW9EQiwgRG9jdW1lbnREQiwgUkRTIG9yIFJlZHNoaWZ0LiBDdXJyZW50XG4gKiBjb25zdHJ1Y3QgaW1wbGVtZW50YXRpb24gb25seSBzdXBwb3J0cyBTMywgYnV0IHBvdGVudGlhbCB0byBhZGQgb3RoZXIgb3V0cHV0IHR5cGVzIGluIHRoZSBmdXR1cmVcbiAqL1xuZXhwb3J0IGVudW0gU2lua1N0b3JlVHlwZSB7XG4gIFMzID0gJ1MzJ1xufVxuXG4vKipcbiAqIEludGVyZmFjZSB0byBkZWZpbmUgcG90ZW50aWFsIG91dHB1dHMgdG8gYWxsb3cgdGhlIGNvbnN0cnVjdCBkZWZpbmUgYWRkaXRpb25hbCBvdXRwdXQgZGVzdGluYXRpb25zIGZvciBFVExcbiAqIHRyYW5zZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lua0RhdGFTdG9yZVByb3BzIHtcbiAgLyoqXG4gICAqIFNpbmsgZGF0YSBzdG9yZSB0eXBlXG4gICAqL1xuICByZWFkb25seSBkYXRhc3RvcmVUeXBlOiBTaW5rU3RvcmVUeXBlO1xuICAvKipcbiAgICogVGhlIG91dHB1dCBTMyBsb2NhdGlvbiB3aGVyZSB0aGUgZGF0YSBzaG91bGQgYmUgd3JpdHRlbi4gVGhlIHByb3ZpZGVkIFMzIGJ1Y2tldCB3aWxsIGJlIHVzZWQgdG8gcGFzc1xuICAgKiB0aGUgb3V0cHV0IGxvY2F0aW9uIHRvIHRoZSBldGwgc2NyaXB0IGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBBV1MgR2x1ZSBqb2IuXG4gICAqXG4gICAqIElmIG5vIGxvY2F0aW9uIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGNoZWNrIGlmIEBvdXRwdXRCdWNrZXRQcm9wcyBhcmUgcHJvdmlkZWQuIElmIG5vdCBpdCB3aWxsIGNyZWF0ZSBhIG5ld1xuICAgKiBidWNrZXQgaWYgdGhlIEBkYXRhc3RvcmVUeXBlIGlzIFMzLlxuICAgKlxuICAgKiBUaGUgYXJndW1lbnQga2V5IGlzIGBvdXRwdXRfcGF0aGAuIFRoZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQgY2FuIGJlIHJldHJpZXZlIGluIHRoZSBweXRob24gc2NyaXB0XG4gICAqIGFzIGZvbGxvd3M6XG4gICAqICBnZXRSZXNvbHZlZE9wdGlvbnMoc3lzLmFyZ3YsIFtcIkpPQl9OQU1FXCIsIFwib3V0cHV0X3BhdGhcIiwgPG90aGVyIGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWQ+IF0pXG4gICAqICBvdXRwdXRfcGF0aCA9IGFyZ3NbXCJvdXRwdXRfcGF0aFwiXVxuICAgKi9cbiAgcmVhZG9ubHkgZXhpc3RpbmdTM091dHB1dEJ1Y2tldD86IEJ1Y2tldFxuICAvKipcbiAgICogSWYgQGV4aXN0aW5nUzNPdXRwdXRCVWNrZXQgaXMgcHJvdmlkZWQsIHRoaXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIG5vdCBwcm92aWRlZCxcbiAgICogdGhlIGNvbnN0cnVjdCB3aWxsIGNyZWF0ZSBhIG5ldyBidWNrZXQgaWYgdGhlIEBkYXRhc3RvcmVUeXBlIGlzIFMzLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0QnVja2V0UHJvcHM/OiBCdWNrZXRQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZEdsdWVKb2JQcm9wcyB7XG4gIC8qKlxuICAgKiBHbHVlIEVUTCBqb2IgcHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGdsdWVKb2JQcm9wcz86IGdsdWUuQ2ZuSm9iUHJvcHMgfCBhbnlcbiAgLyoqXG4gICAqIEV4aXN0aW5nIGluc3RhbmNlIG9mIHRoZSBTMyBidWNrZXQgb2JqZWN0LCBpZiB0aGlzIGlzIHNldCB0aGVuIHRoZSBzY3JpcHQgbG9jYXRpb24gaXMgaWdub3JlZC5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nQ2ZuSm9iPzogZ2x1ZS5DZm5Kb2I7XG4gIC8qKlxuICAgKiBBV1MgR2x1ZSB0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGU6IGdsdWUuQ2ZuVGFibGU7XG4gIC8qKlxuICAgKiBBV1MgR2x1ZSBkYXRhYmFzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2U6IGdsdWUuQ2ZuRGF0YWJhc2U7XG4gIC8qKlxuICAgKiBPdXRwdXQgc3RvcmFnZSBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBvdXRwdXREYXRhU3RvcmU/OiBTaW5rRGF0YVN0b3JlUHJvcHNcbiAgLyoqXG4gICAqIEFzc2V0IGluc3RhbmNlIGZvciB0aGUgRVRMIGNvZGUgdGhhdCBwZXJmb3JtcyBHbHVlIEpvYiB0cmFuc2Zvcm1hdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gICByZWFkb25seSBldGxDb2RlQXNzZXQ/OiBzM2Fzc2V0cy5Bc3NldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZEdsdWVKb2JSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGpvYjogZ2x1ZS5DZm5Kb2IsXG4gIHJlYWRvbmx5IHJvbGU6IElSb2xlLFxuICByZWFkb25seSBidWNrZXQ/OiBCdWNrZXQsXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXQ/OiBCdWNrZXQsXG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkR2x1ZUpvYihzY29wZTogQ29uc3RydWN0LCBwcm9wczogQnVpbGRHbHVlSm9iUHJvcHMpOiBCdWlsZEdsdWVKb2JSZXNwb25zZSB7XG4gIGlmICghcHJvcHMuZXhpc3RpbmdDZm5Kb2IpIHtcbiAgICBpZiAocHJvcHMuZ2x1ZUpvYlByb3BzKSB7XG4gICAgICBpZiAocHJvcHMuZ2x1ZUpvYlByb3BzLmdsdWVWZXJzaW9uID09PSAnMi4wJyAmJiBwcm9wcy5nbHVlSm9iUHJvcHMubWF4Q2FwYWNpdHkpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0Nhbm5vdCBzZXQgXCJNYXhDYXBhY2l0eVwiIHdpdGggR2x1ZVZlcnNpb24gMi4wIG9yIGhpZ2hlci4gVXNlIFwiTnVtYmVyT2ZXb3JrZXJzXCIgYW5kIFwiV29ya2VyVHlwZVwiLiAnICtcbiAgICAgICAgJ1JlZmVyIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3Qvd2ViYXBpL0FQSV9Kb2IuaHRtbCBmb3IgbW9yZSBkZXRhaWxzJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wcy5nbHVlSm9iUHJvcHMubWF4Q2FwYWNpdHkgJiYgKHByb3BzLmdsdWVKb2JQcm9wcy5udW1iZXJPZldvcmtlcnMgfHwgcHJvcHMuZ2x1ZUpvYlByb3BzLndvcmtlclR5cGUpKSB7XG4gICAgICAgIHRocm93IEVycm9yKCdDYW5ub3Qgc2V0IE1heENhcGFjaXR5IGFuZCBcIldvcmtlclR5cGVcIiBvciAgXCJOdW1iZXJPZldvcmtlcnNcIi4gSWYgdXNpbmcgZ2x1ZVZlcnNpb24gMi4wIG9yIGJleW9uZCwgJyArXG4gICAgICAgICdpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgXCJXb3JrZXJUeXBlXCIgb3IgIFwiTnVtYmVyT2ZXb3JrZXJzXCInKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVwbG95R2x1ZUpvYlJlc3BvbnNlID1cbiAgICAgICAgZGVwbG95R2x1ZUpvYihzY29wZSwgcHJvcHMuZ2x1ZUpvYlByb3BzLCBwcm9wcy5kYXRhYmFzZSwgcHJvcHMudGFibGUsIHByb3BzLm91dHB1dERhdGFTdG9yZSEsIHByb3BzLmV0bENvZGVBc3NldCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBqb2I6IGRlcGxveUdsdWVKb2JSZXNwb25zZS5qb2IsXG4gICAgICAgIHJvbGU6IGRlcGxveUdsdWVKb2JSZXNwb25zZS5yb2xlLFxuICAgICAgICBidWNrZXQ6IGRlcGxveUdsdWVKb2JSZXNwb25zZS5idWNrZXQsXG4gICAgICAgIGxvZ2dpbmdCdWNrZXQ6IGRlcGxveUdsdWVKb2JSZXNwb25zZS5sb2dnaW5nQnVja2V0IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKCdFaXRoZXIgZ2x1ZUpvYlByb3BzIG9yIGV4aXN0aW5nQ2ZuSm9iIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IGpvYjogcHJvcHMuZXhpc3RpbmdDZm5Kb2IsIHJvbGU6IFJvbGUuZnJvbVJvbGVBcm4oc2NvcGUsICdFeGlzdGluZ1JvbGUnLCBwcm9wcy5leGlzdGluZ0NmbkpvYi5yb2xlKX07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3lHbHVlSm9iUmVzcG9uc2Uge1xuICByZWFkb25seSBqb2I6IGdsdWUuQ2ZuSm9iLFxuICByZWFkb25seSByb2xlOiBJUm9sZSxcbiAgcmVhZG9ubHkgYnVja2V0PzogQnVja2V0LFxuICByZWFkb25seSBsb2dnaW5nQnVja2V0PzogQnVja2V0LFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXBsb3lHbHVlSm9iKHNjb3BlOiBDb25zdHJ1Y3QsIGdsdWVKb2JQcm9wczogZ2x1ZS5DZm5Kb2JQcm9wcywgZGF0YWJhc2U6IGdsdWUuQ2ZuRGF0YWJhc2UsIHRhYmxlOiBnbHVlLkNmblRhYmxlLFxuICBvdXRwdXREYXRhU3RvcmU6IFNpbmtEYXRhU3RvcmVQcm9wcywgZXRsQ29kZUFzc2V0PzogczNhc3NldHMuQXNzZXQpOiBEZXBsb3lHbHVlSm9iUmVzcG9uc2Uge1xuXG4gIGxldCBnbHVlU2VjdXJpdHlDb25maWdOYW1lOiBzdHJpbmc7XG5cbiAgaWYgKGdsdWVKb2JQcm9wcy5zZWN1cml0eUNvbmZpZ3VyYXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgIGdsdWVTZWN1cml0eUNvbmZpZ05hbWUgPSBgRVRMSm9iU2VjdXJpdHlDb25maWcke0F3cy5TVEFDS19JRH1gO1xuICAgIGNvbnN0IGdsdWVLTVNLZXkgPSBgYXJuOiR7QXdzLlBBUlRJVElPTn06a21zOiR7QXdzLlJFR0lPTn06JHtBd3MuQUNDT1VOVF9JRH06YWxpYXMvYXdzL2dsdWVgO1xuXG4gICAgY29uc3Qgc2VjdXJpdHlDb25maWd1cmF0aW9uUHJvcHM6IGdsdWUuQ2ZuU2VjdXJpdHlDb25maWd1cmF0aW9uUHJvcHMgPSB7XG4gICAgICBuYW1lOiBnbHVlU2VjdXJpdHlDb25maWdOYW1lLFxuICAgICAgZW5jcnlwdGlvbkNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbjoge1xuICAgICAgICAgIGpvYkJvb2ttYXJrc0VuY3J5cHRpb25Nb2RlOiAnQ1NFLUtNUycsXG4gICAgICAgICAga21zS2V5QXJuOiBnbHVlS01TS2V5XG4gICAgICAgIH0sXG4gICAgICAgIHMzRW5jcnlwdGlvbnM6IFt7XG4gICAgICAgICAgczNFbmNyeXB0aW9uTW9kZTogJ1NTRS1TMydcbiAgICAgICAgfV1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gQmVmb3JlIHR1cm5pbmcgb2ZmIFNvbmFyUXViZSBmb3IgdGhlIGxpbmUsIHJlZHVjZSB0aGUgbGluZSB0byBpdCdzIG1pbmltdW1cbiAgICBuZXcgZ2x1ZS5DZm5TZWN1cml0eUNvbmZpZ3VyYXRpb24oc2NvcGUsICdHbHVlU2VjdXJpdHlDb25maWcnLCBzZWN1cml0eUNvbmZpZ3VyYXRpb25Qcm9wcyk7ICAvLyBOT1NPTkFSXG5cbiAgfSBlbHNlIHtcbiAgICBnbHVlU2VjdXJpdHlDb25maWdOYW1lID0gZ2x1ZUpvYlByb3BzLnNlY3VyaXR5Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIGNvbnN0IGdsdWVKb2JQb2xpY3kgPSBuZXcgUG9saWN5KHNjb3BlLCAnTG9nUG9saWN5Jywge1xuICAgIHN0YXRlbWVudHM6IFtcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogWyAnbG9nczpDcmVhdGVMb2dHcm91cCcsICdsb2dzOkNyZWF0ZUxvZ1N0cmVhbScsICdsb2dzOlB1dExvZ0V2ZW50cycgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbIGBhcm46JHtBd3MuUEFSVElUSU9OfTpsb2dzOiR7QXdzLlJFR0lPTn06JHtBd3MuQUNDT1VOVF9JRH06bG9nLWdyb3VwOi9hd3MtZ2x1ZS8qYCBdXG4gICAgICB9KVxuICAgIF1cbiAgfSk7XG5cbiAgY29uc3Qgam9iUm9sZSA9IGdsdWVKb2JQcm9wcy5yb2xlID9cbiAgICBSb2xlLmZyb21Sb2xlQXJuKHNjb3BlLCAnSm9iUm9sZScsIGdsdWVKb2JQcm9wcy5yb2xlKSA6XG4gICAgZGVmYXVsdHMuY3JlYXRlR2x1ZUpvYlJvbGUoc2NvcGUpO1xuXG4gIGdsdWVKb2JQb2xpY3kuYXR0YWNoVG9Sb2xlKGpvYlJvbGUpO1xuXG4gIGxldCBvdXRwdXRMb2NhdGlvbjogQnVpbGRTM0J1Y2tldFJlc3BvbnNlO1xuICBpZiAob3V0cHV0RGF0YVN0b3JlICE9PSB1bmRlZmluZWQgJiYgb3V0cHV0RGF0YVN0b3JlLmRhdGFzdG9yZVR5cGUgPT09IFNpbmtTdG9yZVR5cGUuUzMpIHtcbiAgICBpZiAob3V0cHV0RGF0YVN0b3JlLmV4aXN0aW5nUzNPdXRwdXRCdWNrZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3V0cHV0TG9jYXRpb24gPSB7IGJ1Y2tldDogb3V0cHV0RGF0YVN0b3JlLmV4aXN0aW5nUzNPdXRwdXRCdWNrZXQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0TG9jYXRpb24gPSBkZWZhdWx0cy5idWlsZFMzQnVja2V0KHNjb3BlLCB7IGJ1Y2tldFByb3BzOiBvdXRwdXREYXRhU3RvcmUub3V0cHV0QnVja2V0UHJvcHMgfSApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXRwdXRMb2NhdGlvbiA9IGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc2NvcGUsIHt9KTtcbiAgfVxuXG4gIG91dHB1dExvY2F0aW9uLmJ1Y2tldC5ncmFudFJlYWRXcml0ZShqb2JSb2xlKTtcblxuICBjb25zdCBqb2JBcmd1bWVudHNMaXN0ID0ge1xuICAgIFwiLS1lbmFibGUtbWV0cmljc1wiIDogdHJ1ZSxcbiAgICBcIi0tZW5hYmxlLWNvbnRpbnVvdXMtY2xvdWR3YXRjaC1sb2dcIiA6IHRydWUsXG4gICAgXCItLWRhdGFiYXNlX25hbWVcIjogZGF0YWJhc2UucmVmLFxuICAgIFwiLS10YWJsZV9uYW1lXCI6IHRhYmxlLnJlZixcbiAgICAuLi4oKG91dHB1dERhdGFTdG9yZSA9PT0gdW5kZWZpbmVkIHx8IChvdXRwdXREYXRhU3RvcmUgJiYgb3V0cHV0RGF0YVN0b3JlLmRhdGFzdG9yZVR5cGUgPT09IFNpbmtTdG9yZVR5cGUuUzMpKSAmJlxuICAgICAgeyAnLS1vdXRwdXRfcGF0aCcgOiBgczNhOi8vJHtvdXRwdXRMb2NhdGlvbi5idWNrZXQuYnVja2V0TmFtZX0vb3V0cHV0L2AgfSksXG4gICAgLi4uZ2x1ZUpvYlByb3BzLmRlZmF1bHRBcmd1bWVudHNcbiAgfTtcblxuICBjb25zdCBuZXdHbHVlSm9iUHJvcHM6IGdsdWUuQ2ZuSm9iUHJvcHMgPSBvdmVycmlkZVByb3BzKGRlZmF1bHRzLkRlZmF1bHRHbHVlSm9iUHJvcHMoam9iUm9sZSwgZ2x1ZUpvYlByb3BzLFxuICAgIGdsdWVTZWN1cml0eUNvbmZpZ05hbWUsIGpvYkFyZ3VtZW50c0xpc3QsIGV0bENvZGVBc3NldCksIGdsdWVKb2JQcm9wcyk7XG4gIGlmIChldGxDb2RlQXNzZXQpIHtcbiAgICBldGxDb2RlQXNzZXQuZ3JhbnRSZWFkKGpvYlJvbGUpO1xuICB9IGVsc2Uge1xuICAgIC8vIGNyZWF0ZSBDREsgQnVja2V0IGluc3RhbmNlIGZyb20gUzMgdXJsIGFuZCBncmFudCByZWFkIGFjY2VzcyB0byBHbHVlIEpvYidzIHNlcnZpY2UgcHJpbmNpcGFsXG4gICAgaWYgKGlzSm9iQ29tbWFuZFByb3BlcnR5KG5ld0dsdWVKb2JQcm9wcy5jb21tYW5kKSkge1xuICAgICAgY29uc3Qgc2NyaXB0TG9jYXRpb24gPSBuZXdHbHVlSm9iUHJvcHMuY29tbWFuZC5zY3JpcHRMb2NhdGlvbjtcblxuICAgICAgLy8gSW5jb21pbmcgUHJvcHMsIGluY2x1ZGluZyBzY3JpcHRMb2NhdGlvbiwgYXJlIGNoZWNrZWQgdXBzdHJlYW0gaW4gQ2hlY2tHbHVlUHJvcHMoKVxuICAgICAgY29uc3Qgc2NyaXB0QnVja2V0TG9jYXRpb246IElCdWNrZXQgPSBCdWNrZXQuZnJvbUJ1Y2tldEFybihzY29wZSwgJ1NjcmlwdExvY2F0aW9uJywgZ2V0UzNBcm5mcm9tUzNVcmwoc2NyaXB0TG9jYXRpb24hKSk7XG4gICAgICBzY3JpcHRCdWNrZXRMb2NhdGlvbi5ncmFudFJlYWQoam9iUm9sZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2x1ZUpvYjogZ2x1ZS5DZm5Kb2IgPSBuZXcgZ2x1ZS5DZm5Kb2Ioc2NvcGUsICdLaW5lc2lzRVRMSm9iJywgbmV3R2x1ZUpvYlByb3BzKTtcbiAgcmV0dXJuICB7IGpvYjogZ2x1ZUpvYiwgcm9sZTogam9iUm9sZSwgYnVja2V0OiBvdXRwdXRMb2NhdGlvbi5idWNrZXQsIGxvZ2dpbmdCdWNrZXQ6IG91dHB1dExvY2F0aW9uLmxvZ2dpbmdCdWNrZXQgfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIFRoaXMgaXMgYSBoZWxwZXIgbWV0aG9kIHRvIGNyZWF0ZSB0aGUgUm9sZSByZXF1aXJlZCBmb3IgdGhlIEdsdWUgSm9iLiBJZiBhIHJvbGUgaXMgYWxyZWFkeSBjcmVhdGVkIHRoZW4gdGhpc1xuICogbWV0aG9kIGlzIG5vdCByZXF1aXJlZCB0byBiZSBjYWxsZWQuXG4gKlxuICogQHBhcmFtIHNjb3BlIC0gVGhlIEFXUyBDb25zdHJ1Y3QgdW5kZXIgd2hpY2ggdGhlIHJvbGUgaXMgdG8gYmUgY3JlYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2x1ZUpvYlJvbGUoc2NvcGU6IENvbnN0cnVjdCk6IFJvbGUge1xuICByZXR1cm4gbmV3IFJvbGUoc2NvcGUsICdKb2JSb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2dsdWUuYW1hem9uYXdzLmNvbScpLFxuICAgIGRlc2NyaXB0aW9uOiAnU2VydmljZSByb2xlIHRoYXQgR2x1ZSBjdXN0b20gRVRMIGpvYnMgd2lsbCBhc3N1bWUgZm9yIGV4ZWN1dGlvbicsXG4gIH0pO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKlxuICogVGhpcyBtZXRob2QgY3JlYXRlcyBhbiBBV1MgR2x1ZSB0YWJsZS4gVGhlIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBleGlzdGluZyBHbHVlIHRhYmxlIGlzIG5vdCBwcm92aWRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2x1ZVRhYmxlKHNjb3BlOiBDb25zdHJ1Y3QsIGRhdGFiYXNlOiBnbHVlLkNmbkRhdGFiYXNlLCB0YWJsZVByb3BzPzogZ2x1ZS5DZm5UYWJsZVByb3BzLFxuICBmaWVsZFNjaGVtYT86IGdsdWUuQ2ZuVGFibGUuQ29sdW1uUHJvcGVydHkgW10sIHNvdXJjZVR5cGU/OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkpOiBnbHVlLkNmblRhYmxlIHtcbiAgcmV0dXJuIGRlZmF1bHRzLkRlZmF1bHRHbHVlVGFibGUoc2NvcGUsIHRhYmxlUHJvcHMgIT09IHVuZGVmaW5lZCA/IHRhYmxlUHJvcHMgOlxuICAgIGRlZmF1bHRzLkRlZmF1bHRHbHVlVGFibGVQcm9wcyhkYXRhYmFzZSwgZmllbGRTY2hlbWEhLCBzb3VyY2VUeXBlLCBwYXJhbWV0ZXJzKSk7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqXG4gKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIEFXUyBHbHVlIGRhdGFiYXNlLiBUaGUgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIHdpdGggYW4gZXhpc3RpbmcgR2x1ZSBkYXRhYmFzZSB0eXBlIGlzIG5vdCBwcm92aWRlZC5cbiAqIFRoZSBtZXRob2QgdXNlcyB0aGUgdXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIEdsdWUgZGF0YWJhc2VcbiAqXG4gKiBAcGFyYW0gc2NvcGVcbiAqIEBwYXJhbSBkYXRhYmFzZVByb3BzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHbHVlRGF0YWJhc2Uoc2NvcGU6IENvbnN0cnVjdCwgIGRhdGFiYXNlUHJvcHM/OiBnbHVlLkNmbkRhdGFiYXNlUHJvcHMpOiBnbHVlLkNmbkRhdGFiYXNlIHtcbiAgY29uc3QgbWVyZ2VkREJQcm9wczogZ2x1ZS5DZm5EYXRhYmFzZVByb3BzID0gKGRhdGFiYXNlUHJvcHMgIT09IHVuZGVmaW5lZCkgPyBvdmVycmlkZVByb3BzKGRlZmF1bHRzLkRlZmF1bHRHbHVlRGF0YWJhc2VQcm9wcygpLCBkYXRhYmFzZVByb3BzKSA6XG4gICAgZGVmYXVsdHMuRGVmYXVsdEdsdWVEYXRhYmFzZVByb3BzKCk7XG4gIHJldHVybiBkZWZhdWx0cy5EZWZhdWx0R2x1ZURhdGFiYXNlKHNjb3BlLCBtZXJnZWREQlByb3BzKTtcbn1cblxuLyoqXG4gKiBBIHV0aWxpdHkgbWV0aG9kIHRvIGdlbmVyYXRlIHRoZSBTMyBBcm4gZnJvbSBhbiBTMyBVcmwuXG4gKlxuICogQHBhcmFtIHMzVXJsXG4gKi9cbmZ1bmN0aW9uIGdldFMzQXJuZnJvbVMzVXJsKHMzVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoczNVcmwgJiYgczNVcmwuc3RhcnRzV2l0aCgnczM6Ly8nKSkge1xuICAgIGNvbnN0IHNwbGl0U3RyaW5nOiBzdHJpbmcgPSBzM1VybC5zbGljZSgnczM6Ly8nLmxlbmd0aCk7XG4gICAgcmV0dXJuIGBhcm46JHtBd3MuUEFSVElUSU9OfTpzMzo6OiR7c3BsaXRTdHJpbmd9YDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBFcnJvcihgUmVjZWl2ZWQgUzNVUkwgYXMgJHtzM1VybH0uIFRoZSBTMyB1cmwgc3RyaW5nIGRvZXMgbm90IGJlZ2luIHdpdGggczM6Ly8uIFRoaXMgaXMgbm90IGEgc3RhbmRhcmQgUzMgdXJsYCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHV0aWxpdHkgbWV0aG9kIHRvIHR5cGUgY2hlY2sgQ2ZuSm9iLkpvYkNvbW1hbmRQcm9wZXJ0eSB0eXBlLiBGb3IgdGhlIGNvbnN0cnVjdCB0byB3b3JrIGZvciBzdHJlYW1pbmcgRVRMIGZyb20gS2luZXNpcyBEYXRhXG4gKiBTdHJlYW1zLCBhbGwgdGhyZWUgYXR0cmlidXRlcyBvZiB0aGUgSm9iQ29tbWFuZFByb3BlcnR5IGFyZSByZXF1aXJlZCwgZXZlbiB0aG91Z2ggdGhleSBtYXkgYmUgb3B0aW9uYWwgZm9yIG90aGVyIHVzZSBjYXNlcy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZFxuICovXG5mdW5jdGlvbiBpc0pvYkNvbW1hbmRQcm9wZXJ0eShjb21tYW5kOiBnbHVlLkNmbkpvYi5Kb2JDb21tYW5kUHJvcGVydHkgfCBJUmVzb2x2YWJsZSk6IGNvbW1hbmQgaXMgZ2x1ZS5DZm5Kb2IuSm9iQ29tbWFuZFByb3BlcnR5IHtcbiAgaWYgKChjb21tYW5kIGFzIGdsdWUuQ2ZuSm9iLkpvYkNvbW1hbmRQcm9wZXJ0eSkubmFtZSAmJlxuICAgIChjb21tYW5kIGFzIGdsdWUuQ2ZuSm9iLkpvYkNvbW1hbmRQcm9wZXJ0eSkucHl0aG9uVmVyc2lvbiAmJlxuICAgIChjb21tYW5kIGFzIGdsdWUuQ2ZuSm9iLkpvYkNvbW1hbmRQcm9wZXJ0eSkuc2NyaXB0TG9jYXRpb24pIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBkZWZhdWx0cy5wcmludFdhcm5pbmcoJ2NvbW1hbmQgbm90IG9mIHR5cGUgSm9iQ29tbWFuZFByb3BlcnR5IHR5cGUnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x1ZS1qb2ItaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2x1ZS1qb2ItaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBNkZILG9DQTBCQztBQVlELHNDQXFGQztBQVVELDhDQUtDO0FBT0QsMENBSUM7QUFXRCxnREFJQztBQXpQRCw2Q0FBNkM7QUFDN0MsaURBQXFHO0FBQ3JHLCtDQUFrRTtBQUNsRSw2Q0FBK0M7QUFFL0MsZ0NBQWdDO0FBQ2hDLG1DQUF3QztBQUd4Qzs7O0dBR0c7QUFDSCxJQUFZLGFBRVg7QUFGRCxXQUFZLGFBQWE7SUFDdkIsMEJBQVMsQ0FBQTtBQUNYLENBQUMsRUFGVyxhQUFhLDZCQUFiLGFBQWEsUUFFeEI7QUFtRUQ7O0dBRUc7QUFDSCxTQUFnQixZQUFZLENBQUMsS0FBZ0IsRUFBRSxLQUF3QjtJQUNyRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLEtBQUssS0FBSyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQy9FLE1BQU0sS0FBSyxDQUFDLG1HQUFtRztvQkFDL0csMEdBQTBHLENBQUMsQ0FBQztZQUM5RyxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDNUcsTUFBTSxLQUFLLENBQUMscUdBQXFHO29CQUNqSCw2REFBNkQsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7WUFFRCxNQUFNLHFCQUFxQixHQUN6QixhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFnQixFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNwSCxPQUFPO2dCQUNMLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxHQUFHO2dCQUM5QixJQUFJLEVBQUUscUJBQXFCLENBQUMsSUFBSTtnQkFDaEMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLE1BQU07Z0JBQ3BDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxhQUFhO2FBQUUsQ0FBQztRQUN6RCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxjQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDO0lBQ2hILENBQUM7QUFDSCxDQUFDO0FBU0Q7O0dBRUc7QUFDSCxTQUFnQixhQUFhLENBQUMsS0FBZ0IsRUFBRSxZQUE4QixFQUFFLFFBQTBCLEVBQUUsS0FBb0IsRUFDOUgsZUFBbUMsRUFBRSxZQUE2QjtJQUVsRSxJQUFJLHNCQUE4QixDQUFDO0lBRW5DLElBQUksWUFBWSxDQUFDLHFCQUFxQixLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3JELHNCQUFzQixHQUFHLHVCQUF1QixpQkFBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9ELE1BQU0sVUFBVSxHQUFHLE9BQU8saUJBQUcsQ0FBQyxTQUFTLFFBQVEsaUJBQUcsQ0FBQyxNQUFNLElBQUksaUJBQUcsQ0FBQyxVQUFVLGlCQUFpQixDQUFDO1FBRTdGLE1BQU0sMEJBQTBCLEdBQXVDO1lBQ3JFLElBQUksRUFBRSxzQkFBc0I7WUFDNUIsdUJBQXVCLEVBQUU7Z0JBQ3ZCLHNCQUFzQixFQUFFO29CQUN0QiwwQkFBMEIsRUFBRSxTQUFTO29CQUNyQyxTQUFTLEVBQUUsVUFBVTtpQkFDdEI7Z0JBQ0QsYUFBYSxFQUFFLENBQUM7d0JBQ2QsZ0JBQWdCLEVBQUUsUUFBUTtxQkFDM0IsQ0FBQzthQUNIO1NBQ0YsQ0FBQztRQUVGLDZFQUE2RTtRQUM3RSxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsMEJBQTBCLENBQUMsQ0FBQyxDQUFFLFVBQVU7SUFFekcsQ0FBQztTQUFNLENBQUM7UUFDTixzQkFBc0IsR0FBRyxZQUFZLENBQUMscUJBQXFCLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLElBQUksZ0JBQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO1FBQ25ELFVBQVUsRUFBRTtZQUNWLElBQUkseUJBQWUsQ0FBQztnQkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztnQkFDcEIsT0FBTyxFQUFFLENBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLENBQUU7Z0JBQy9FLFNBQVMsRUFBRSxDQUFFLE9BQU8saUJBQUcsQ0FBQyxTQUFTLFNBQVMsaUJBQUcsQ0FBQyxNQUFNLElBQUksaUJBQUcsQ0FBQyxVQUFVLHdCQUF3QixDQUFFO2FBQ2pHLENBQUM7U0FDSDtLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxjQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxPQUFPLFlBQVksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLFlBQVksQ0FBQyxJQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN2SSxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFcEMsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVwQyxJQUFJLGNBQXFDLENBQUM7SUFDMUMsSUFBSSxlQUFlLEtBQUssU0FBUyxJQUFJLGVBQWUsQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3hGLElBQUksZUFBZSxDQUFDLHNCQUFzQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pELGNBQWMsR0FBRyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN0RSxDQUFDO2FBQU0sQ0FBQztZQUNOLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMsaUJBQWlCLEVBQUUsQ0FBRSxDQUFDO1FBQ3RHLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFOUMsTUFBTSxnQkFBZ0IsR0FBRztRQUN2QixrQkFBa0IsRUFBRyxJQUFJO1FBQ3pCLG9DQUFvQyxFQUFHLElBQUk7UUFDM0MsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLEdBQUc7UUFDL0IsY0FBYyxFQUFFLEtBQUssQ0FBQyxHQUFHO1FBQ3pCLEdBQUcsQ0FBQyxDQUFDLGVBQWUsS0FBSyxTQUFTLElBQUksQ0FBQyxlQUFlLElBQUksZUFBZSxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUcsRUFBRSxlQUFlLEVBQUcsU0FBUyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsVUFBVSxFQUFFLENBQUM7UUFDNUUsR0FBRyxZQUFZLENBQUMsZ0JBQWdCO0tBQ2pDLENBQUM7SUFFRixNQUFNLGVBQWUsR0FBcUIsSUFBQSxxQkFBYSxFQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUN4RyxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6RSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztTQUFNLENBQUM7UUFDTiwrRkFBK0Y7UUFDL0YsSUFBSSxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztZQUU5RCxxRkFBcUY7WUFDckYsTUFBTSxvQkFBb0IsR0FBWSxlQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxjQUFlLENBQUMsQ0FBQyxDQUFDO1lBQ3hILG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFnQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN0RixPQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDdEgsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxLQUFnQjtJQUNoRCxPQUFPLElBQUksY0FBSSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7UUFDaEMsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMsb0JBQW9CLENBQUM7UUFDckQsV0FBVyxFQUFFLGtFQUFrRTtLQUNoRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxLQUFnQixFQUFFLFFBQTBCLEVBQUUsVUFBK0IsRUFDM0csV0FBNkMsRUFBRSxVQUFtQixFQUFFLFVBQWdCO0lBQ3BGLE9BQU8sUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RSxRQUFRLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLFdBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNwRixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxLQUFnQixFQUFHLGFBQXFDO0lBQ3pGLE1BQU0sYUFBYSxHQUEwQixDQUFDLGFBQWEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxxQkFBYSxFQUFDLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDOUksUUFBUSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDdEMsT0FBTyxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxLQUFhO0lBQ3RDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBVyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxPQUFPLE9BQU8saUJBQUcsQ0FBQyxTQUFTLFNBQVMsV0FBVyxFQUFFLENBQUM7SUFDcEQsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLEtBQUssQ0FBQyxxQkFBcUIsS0FBSyw4RUFBOEUsQ0FBQyxDQUFDO0lBQ3hILENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLG9CQUFvQixDQUFDLE9BQXFEO0lBQ2pGLElBQUssT0FBMEMsQ0FBQyxJQUFJO1FBQ2pELE9BQTBDLENBQUMsYUFBYTtRQUN4RCxPQUEwQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztTQUFNLENBQUM7UUFDTixRQUFRLENBQUMsWUFBWSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDckUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBnbHVlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1nbHVlJztcbmltcG9ydCB7IEVmZmVjdCwgSVJvbGUsIFBvbGljeSwgUG9saWN5U3RhdGVtZW50LCBSb2xlLCBTZXJ2aWNlUHJpbmNpcGFsIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBCdWNrZXQsIEJ1Y2tldFByb3BzLCBJQnVja2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IEF3cywgSVJlc29sdmFibGUgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBzM2Fzc2V0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0c1wiO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSAnLi4vJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJ1aWxkUzNCdWNrZXRSZXNwb25zZSB9IGZyb20gJy4uLyc7XG5cbi8qKlxuICogRW51bWVyYXRpb24gb2YgZGF0YSBzdG9yZSB0eXBlcyB0aGF0IGNvdWxkIGluY2x1ZGUgUzMsIER5bmFtb0RCLCBEb2N1bWVudERCLCBSRFMgb3IgUmVkc2hpZnQuIEN1cnJlbnRcbiAqIGNvbnN0cnVjdCBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIFMzLCBidXQgcG90ZW50aWFsIHRvIGFkZCBvdGhlciBvdXRwdXQgdHlwZXMgaW4gdGhlIGZ1dHVyZVxuICovXG5leHBvcnQgZW51bSBTaW5rU3RvcmVUeXBlIHtcbiAgUzMgPSAnUzMnXG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHRvIGRlZmluZSBwb3RlbnRpYWwgb3V0cHV0cyB0byBhbGxvdyB0aGUgY29uc3RydWN0IGRlZmluZSBhZGRpdGlvbmFsIG91dHB1dCBkZXN0aW5hdGlvbnMgZm9yIEVUTFxuICogdHJhbnNmb3JtYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaW5rRGF0YVN0b3JlUHJvcHMge1xuICAvKipcbiAgICogU2luayBkYXRhIHN0b3JlIHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFzdG9yZVR5cGU6IFNpbmtTdG9yZVR5cGU7XG4gIC8qKlxuICAgKiBUaGUgb3V0cHV0IFMzIGxvY2F0aW9uIHdoZXJlIHRoZSBkYXRhIHNob3VsZCBiZSB3cml0dGVuLiBUaGUgcHJvdmlkZWQgUzMgYnVja2V0IHdpbGwgYmUgdXNlZCB0byBwYXNzXG4gICAqIHRoZSBvdXRwdXQgbG9jYXRpb24gdG8gdGhlIGV0bCBzY3JpcHQgYXMgYW4gYXJndW1lbnQgdG8gdGhlIEFXUyBHbHVlIGpvYi5cbiAgICpcbiAgICogSWYgbm8gbG9jYXRpb24gaXMgcHJvdmlkZWQsIGl0IHdpbGwgY2hlY2sgaWYgQG91dHB1dEJ1Y2tldFByb3BzIGFyZSBwcm92aWRlZC4gSWYgbm90IGl0IHdpbGwgY3JlYXRlIGEgbmV3XG4gICAqIGJ1Y2tldCBpZiB0aGUgQGRhdGFzdG9yZVR5cGUgaXMgUzMuXG4gICAqXG4gICAqIFRoZSBhcmd1bWVudCBrZXkgaXMgYG91dHB1dF9wYXRoYC4gVGhlIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW4gYmUgcmV0cmlldmUgaW4gdGhlIHB5dGhvbiBzY3JpcHRcbiAgICogYXMgZm9sbG93czpcbiAgICogIGdldFJlc29sdmVkT3B0aW9ucyhzeXMuYXJndiwgW1wiSk9CX05BTUVcIiwgXCJvdXRwdXRfcGF0aFwiLCA8b3RoZXIgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3NlZD4gXSlcbiAgICogIG91dHB1dF9wYXRoID0gYXJnc1tcIm91dHB1dF9wYXRoXCJdXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ1MzT3V0cHV0QnVja2V0PzogQnVja2V0XG4gIC8qKlxuICAgKiBJZiBAZXhpc3RpbmdTM091dHB1dEJVY2tldCBpcyBwcm92aWRlZCwgdGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLFxuICAgKiB0aGUgY29uc3RydWN0IHdpbGwgY3JlYXRlIGEgbmV3IGJ1Y2tldCBpZiB0aGUgQGRhdGFzdG9yZVR5cGUgaXMgUzMuXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRCdWNrZXRQcm9wcz86IEJ1Y2tldFByb3BzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkR2x1ZUpvYlByb3BzIHtcbiAgLyoqXG4gICAqIEdsdWUgRVRMIGpvYiBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2x1ZUpvYlByb3BzPzogZ2x1ZS5DZm5Kb2JQcm9wcyB8IGFueVxuICAvKipcbiAgICogRXhpc3RpbmcgaW5zdGFuY2Ugb2YgdGhlIFMzIGJ1Y2tldCBvYmplY3QsIGlmIHRoaXMgaXMgc2V0IHRoZW4gdGhlIHNjcmlwdCBsb2NhdGlvbiBpcyBpZ25vcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpc3RpbmdDZm5Kb2I/OiBnbHVlLkNmbkpvYjtcbiAgLyoqXG4gICAqIEFXUyBHbHVlIHRhYmxlXG4gICAqL1xuICByZWFkb25seSB0YWJsZTogZ2x1ZS5DZm5UYWJsZTtcbiAgLyoqXG4gICAqIEFXUyBHbHVlIGRhdGFiYXNlXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZTogZ2x1ZS5DZm5EYXRhYmFzZTtcbiAgLyoqXG4gICAqIE91dHB1dCBzdG9yYWdlIG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dERhdGFTdG9yZT86IFNpbmtEYXRhU3RvcmVQcm9wc1xuICAvKipcbiAgICogQXNzZXQgaW5zdGFuY2UgZm9yIHRoZSBFVEwgY29kZSB0aGF0IHBlcmZvcm1zIEdsdWUgSm9iIHRyYW5zZm9ybWF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgIHJlYWRvbmx5IGV0bENvZGVBc3NldD86IHMzYXNzZXRzLkFzc2V0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkR2x1ZUpvYlJlc3BvbnNlIHtcbiAgcmVhZG9ubHkgam9iOiBnbHVlLkNmbkpvYixcbiAgcmVhZG9ubHkgcm9sZTogSVJvbGUsXG4gIHJlYWRvbmx5IGJ1Y2tldD86IEJ1Y2tldCxcbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldD86IEJ1Y2tldCxcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRHbHVlSm9iKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBCdWlsZEdsdWVKb2JQcm9wcyk6IEJ1aWxkR2x1ZUpvYlJlc3BvbnNlIHtcbiAgaWYgKCFwcm9wcy5leGlzdGluZ0NmbkpvYikge1xuICAgIGlmIChwcm9wcy5nbHVlSm9iUHJvcHMpIHtcbiAgICAgIGlmIChwcm9wcy5nbHVlSm9iUHJvcHMuZ2x1ZVZlcnNpb24gPT09ICcyLjAnICYmIHByb3BzLmdsdWVKb2JQcm9wcy5tYXhDYXBhY2l0eSkge1xuICAgICAgICB0aHJvdyBFcnJvcignQ2Fubm90IHNldCBcIk1heENhcGFjaXR5XCIgd2l0aCBHbHVlVmVyc2lvbiAyLjAgb3IgaGlnaGVyLiBVc2UgXCJOdW1iZXJPZldvcmtlcnNcIiBhbmQgXCJXb3JrZXJUeXBlXCIuICcgK1xuICAgICAgICAnUmVmZXIgdGhlIEFQSSBkb2N1bWVudGF0aW9uIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC93ZWJhcGkvQVBJX0pvYi5odG1sIGZvciBtb3JlIGRldGFpbHMnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmdsdWVKb2JQcm9wcy5tYXhDYXBhY2l0eSAmJiAocHJvcHMuZ2x1ZUpvYlByb3BzLm51bWJlck9mV29ya2VycyB8fCBwcm9wcy5nbHVlSm9iUHJvcHMud29ya2VyVHlwZSkpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0Nhbm5vdCBzZXQgTWF4Q2FwYWNpdHkgYW5kIFwiV29ya2VyVHlwZVwiIG9yICBcIk51bWJlck9mV29ya2Vyc1wiLiBJZiB1c2luZyBnbHVlVmVyc2lvbiAyLjAgb3IgYmV5b25kLCAnICtcbiAgICAgICAgJ2l0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBcIldvcmtlclR5cGVcIiBvciAgXCJOdW1iZXJPZldvcmtlcnNcIicpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZXBsb3lHbHVlSm9iUmVzcG9uc2UgPVxuICAgICAgICBkZXBsb3lHbHVlSm9iKHNjb3BlLCBwcm9wcy5nbHVlSm9iUHJvcHMsIHByb3BzLmRhdGFiYXNlLCBwcm9wcy50YWJsZSwgcHJvcHMub3V0cHV0RGF0YVN0b3JlISwgcHJvcHMuZXRsQ29kZUFzc2V0KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGpvYjogZGVwbG95R2x1ZUpvYlJlc3BvbnNlLmpvYixcbiAgICAgICAgcm9sZTogZGVwbG95R2x1ZUpvYlJlc3BvbnNlLnJvbGUsXG4gICAgICAgIGJ1Y2tldDogZGVwbG95R2x1ZUpvYlJlc3BvbnNlLmJ1Y2tldCxcbiAgICAgICAgbG9nZ2luZ0J1Y2tldDogZGVwbG95R2x1ZUpvYlJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgRXJyb3IoJ0VpdGhlciBnbHVlSm9iUHJvcHMgb3IgZXhpc3RpbmdDZm5Kb2IgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHsgam9iOiBwcm9wcy5leGlzdGluZ0NmbkpvYiwgcm9sZTogUm9sZS5mcm9tUm9sZUFybihzY29wZSwgJ0V4aXN0aW5nUm9sZScsIHByb3BzLmV4aXN0aW5nQ2ZuSm9iLnJvbGUpfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveUdsdWVKb2JSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGpvYjogZ2x1ZS5DZm5Kb2IsXG4gIHJlYWRvbmx5IHJvbGU6IElSb2xlLFxuICByZWFkb25seSBidWNrZXQ/OiBCdWNrZXQsXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXQ/OiBCdWNrZXQsXG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcGxveUdsdWVKb2Ioc2NvcGU6IENvbnN0cnVjdCwgZ2x1ZUpvYlByb3BzOiBnbHVlLkNmbkpvYlByb3BzLCBkYXRhYmFzZTogZ2x1ZS5DZm5EYXRhYmFzZSwgdGFibGU6IGdsdWUuQ2ZuVGFibGUsXG4gIG91dHB1dERhdGFTdG9yZTogU2lua0RhdGFTdG9yZVByb3BzLCBldGxDb2RlQXNzZXQ/OiBzM2Fzc2V0cy5Bc3NldCk6IERlcGxveUdsdWVKb2JSZXNwb25zZSB7XG5cbiAgbGV0IGdsdWVTZWN1cml0eUNvbmZpZ05hbWU6IHN0cmluZztcblxuICBpZiAoZ2x1ZUpvYlByb3BzLnNlY3VyaXR5Q29uZmlndXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZ2x1ZVNlY3VyaXR5Q29uZmlnTmFtZSA9IGBFVExKb2JTZWN1cml0eUNvbmZpZyR7QXdzLlNUQUNLX0lEfWA7XG4gICAgY29uc3QgZ2x1ZUtNU0tleSA9IGBhcm46JHtBd3MuUEFSVElUSU9OfTprbXM6JHtBd3MuUkVHSU9OfToke0F3cy5BQ0NPVU5UX0lEfTphbGlhcy9hd3MvZ2x1ZWA7XG5cbiAgICBjb25zdCBzZWN1cml0eUNvbmZpZ3VyYXRpb25Qcm9wczogZ2x1ZS5DZm5TZWN1cml0eUNvbmZpZ3VyYXRpb25Qcm9wcyA9IHtcbiAgICAgIG5hbWU6IGdsdWVTZWN1cml0eUNvbmZpZ05hbWUsXG4gICAgICBlbmNyeXB0aW9uQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBqb2JCb29rbWFya3NFbmNyeXB0aW9uOiB7XG4gICAgICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbk1vZGU6ICdDU0UtS01TJyxcbiAgICAgICAgICBrbXNLZXlBcm46IGdsdWVLTVNLZXlcbiAgICAgICAgfSxcbiAgICAgICAgczNFbmNyeXB0aW9uczogW3tcbiAgICAgICAgICBzM0VuY3J5cHRpb25Nb2RlOiAnU1NFLVMzJ1xuICAgICAgICB9XVxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBCZWZvcmUgdHVybmluZyBvZmYgU29uYXJRdWJlIGZvciB0aGUgbGluZSwgcmVkdWNlIHRoZSBsaW5lIHRvIGl0J3MgbWluaW11bVxuICAgIG5ldyBnbHVlLkNmblNlY3VyaXR5Q29uZmlndXJhdGlvbihzY29wZSwgJ0dsdWVTZWN1cml0eUNvbmZpZycsIHNlY3VyaXR5Q29uZmlndXJhdGlvblByb3BzKTsgIC8vIE5PU09OQVJcblxuICB9IGVsc2Uge1xuICAgIGdsdWVTZWN1cml0eUNvbmZpZ05hbWUgPSBnbHVlSm9iUHJvcHMuc2VjdXJpdHlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgY29uc3QgZ2x1ZUpvYlBvbGljeSA9IG5ldyBQb2xpY3koc2NvcGUsICdMb2dQb2xpY3knLCB7XG4gICAgc3RhdGVtZW50czogW1xuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbICdsb2dzOkNyZWF0ZUxvZ0dyb3VwJywgJ2xvZ3M6Q3JlYXRlTG9nU3RyZWFtJywgJ2xvZ3M6UHV0TG9nRXZlbnRzJyBdLFxuICAgICAgICByZXNvdXJjZXM6IFsgYGFybjoke0F3cy5QQVJUSVRJT059OmxvZ3M6JHtBd3MuUkVHSU9OfToke0F3cy5BQ0NPVU5UX0lEfTpsb2ctZ3JvdXA6L2F3cy1nbHVlLypgIF1cbiAgICAgIH0pXG4gICAgXVxuICB9KTtcblxuICBjb25zdCBqb2JSb2xlID0gZ2x1ZUpvYlByb3BzLnJvbGUgP1xuICAgIFJvbGUuZnJvbVJvbGVBcm4oc2NvcGUsICdKb2JSb2xlJywgKHR5cGVvZiBnbHVlSm9iUHJvcHMucm9sZSA9PT0gXCJzdHJpbmdcIikgPyBnbHVlSm9iUHJvcHMucm9sZSA6IChnbHVlSm9iUHJvcHMucm9sZSBhcyBSb2xlKS5yb2xlQXJuKSA6XG4gICAgZGVmYXVsdHMuY3JlYXRlR2x1ZUpvYlJvbGUoc2NvcGUpO1xuXG4gIGdsdWVKb2JQb2xpY3kuYXR0YWNoVG9Sb2xlKGpvYlJvbGUpO1xuXG4gIGxldCBvdXRwdXRMb2NhdGlvbjogQnVpbGRTM0J1Y2tldFJlc3BvbnNlO1xuICBpZiAob3V0cHV0RGF0YVN0b3JlICE9PSB1bmRlZmluZWQgJiYgb3V0cHV0RGF0YVN0b3JlLmRhdGFzdG9yZVR5cGUgPT09IFNpbmtTdG9yZVR5cGUuUzMpIHtcbiAgICBpZiAob3V0cHV0RGF0YVN0b3JlLmV4aXN0aW5nUzNPdXRwdXRCdWNrZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3V0cHV0TG9jYXRpb24gPSB7IGJ1Y2tldDogb3V0cHV0RGF0YVN0b3JlLmV4aXN0aW5nUzNPdXRwdXRCdWNrZXQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0TG9jYXRpb24gPSBkZWZhdWx0cy5idWlsZFMzQnVja2V0KHNjb3BlLCB7IGJ1Y2tldFByb3BzOiBvdXRwdXREYXRhU3RvcmUub3V0cHV0QnVja2V0UHJvcHMgfSApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXRwdXRMb2NhdGlvbiA9IGRlZmF1bHRzLmJ1aWxkUzNCdWNrZXQoc2NvcGUsIHt9KTtcbiAgfVxuXG4gIG91dHB1dExvY2F0aW9uLmJ1Y2tldC5ncmFudFJlYWRXcml0ZShqb2JSb2xlKTtcblxuICBjb25zdCBqb2JBcmd1bWVudHNMaXN0ID0ge1xuICAgIFwiLS1lbmFibGUtbWV0cmljc1wiIDogdHJ1ZSxcbiAgICBcIi0tZW5hYmxlLWNvbnRpbnVvdXMtY2xvdWR3YXRjaC1sb2dcIiA6IHRydWUsXG4gICAgXCItLWRhdGFiYXNlX25hbWVcIjogZGF0YWJhc2UucmVmLFxuICAgIFwiLS10YWJsZV9uYW1lXCI6IHRhYmxlLnJlZixcbiAgICAuLi4oKG91dHB1dERhdGFTdG9yZSA9PT0gdW5kZWZpbmVkIHx8IChvdXRwdXREYXRhU3RvcmUgJiYgb3V0cHV0RGF0YVN0b3JlLmRhdGFzdG9yZVR5cGUgPT09IFNpbmtTdG9yZVR5cGUuUzMpKSAmJlxuICAgICAgeyAnLS1vdXRwdXRfcGF0aCcgOiBgczNhOi8vJHtvdXRwdXRMb2NhdGlvbi5idWNrZXQuYnVja2V0TmFtZX0vb3V0cHV0L2AgfSksXG4gICAgLi4uZ2x1ZUpvYlByb3BzLmRlZmF1bHRBcmd1bWVudHNcbiAgfTtcblxuICBjb25zdCBuZXdHbHVlSm9iUHJvcHM6IGdsdWUuQ2ZuSm9iUHJvcHMgPSBvdmVycmlkZVByb3BzKGRlZmF1bHRzLkRlZmF1bHRHbHVlSm9iUHJvcHMoam9iUm9sZSwgZ2x1ZUpvYlByb3BzLFxuICAgIGdsdWVTZWN1cml0eUNvbmZpZ05hbWUsIGpvYkFyZ3VtZW50c0xpc3QsIGV0bENvZGVBc3NldCksIGdsdWVKb2JQcm9wcyk7XG4gIGlmIChldGxDb2RlQXNzZXQpIHtcbiAgICBldGxDb2RlQXNzZXQuZ3JhbnRSZWFkKGpvYlJvbGUpO1xuICB9IGVsc2Uge1xuICAgIC8vIGNyZWF0ZSBDREsgQnVja2V0IGluc3RhbmNlIGZyb20gUzMgdXJsIGFuZCBncmFudCByZWFkIGFjY2VzcyB0byBHbHVlIEpvYidzIHNlcnZpY2UgcHJpbmNpcGFsXG4gICAgaWYgKGlzSm9iQ29tbWFuZFByb3BlcnR5KG5ld0dsdWVKb2JQcm9wcy5jb21tYW5kKSkge1xuICAgICAgY29uc3Qgc2NyaXB0TG9jYXRpb24gPSBuZXdHbHVlSm9iUHJvcHMuY29tbWFuZC5zY3JpcHRMb2NhdGlvbjtcblxuICAgICAgLy8gSW5jb21pbmcgUHJvcHMsIGluY2x1ZGluZyBzY3JpcHRMb2NhdGlvbiwgYXJlIGNoZWNrZWQgdXBzdHJlYW0gaW4gQ2hlY2tHbHVlUHJvcHMoKVxuICAgICAgY29uc3Qgc2NyaXB0QnVja2V0TG9jYXRpb246IElCdWNrZXQgPSBCdWNrZXQuZnJvbUJ1Y2tldEFybihzY29wZSwgJ1NjcmlwdExvY2F0aW9uJywgZ2V0UzNBcm5mcm9tUzNVcmwoc2NyaXB0TG9jYXRpb24hKSk7XG4gICAgICBzY3JpcHRCdWNrZXRMb2NhdGlvbi5ncmFudFJlYWQoam9iUm9sZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2x1ZUpvYjogZ2x1ZS5DZm5Kb2IgPSBuZXcgZ2x1ZS5DZm5Kb2Ioc2NvcGUsICdLaW5lc2lzRVRMSm9iJywgbmV3R2x1ZUpvYlByb3BzKTtcbiAgcmV0dXJuICB7IGpvYjogZ2x1ZUpvYiwgcm9sZTogam9iUm9sZSwgYnVja2V0OiBvdXRwdXRMb2NhdGlvbi5idWNrZXQsIGxvZ2dpbmdCdWNrZXQ6IG91dHB1dExvY2F0aW9uLmxvZ2dpbmdCdWNrZXQgfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIFRoaXMgaXMgYSBoZWxwZXIgbWV0aG9kIHRvIGNyZWF0ZSB0aGUgUm9sZSByZXF1aXJlZCBmb3IgdGhlIEdsdWUgSm9iLiBJZiBhIHJvbGUgaXMgYWxyZWFkeSBjcmVhdGVkIHRoZW4gdGhpc1xuICogbWV0aG9kIGlzIG5vdCByZXF1aXJlZCB0byBiZSBjYWxsZWQuXG4gKlxuICogQHBhcmFtIHNjb3BlIC0gVGhlIEFXUyBDb25zdHJ1Y3QgdW5kZXIgd2hpY2ggdGhlIHJvbGUgaXMgdG8gYmUgY3JlYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2x1ZUpvYlJvbGUoc2NvcGU6IENvbnN0cnVjdCk6IFJvbGUge1xuICByZXR1cm4gbmV3IFJvbGUoc2NvcGUsICdKb2JSb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2dsdWUuYW1hem9uYXdzLmNvbScpLFxuICAgIGRlc2NyaXB0aW9uOiAnU2VydmljZSByb2xlIHRoYXQgR2x1ZSBjdXN0b20gRVRMIGpvYnMgd2lsbCBhc3N1bWUgZm9yIGV4ZWN1dGlvbicsXG4gIH0pO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKlxuICogVGhpcyBtZXRob2QgY3JlYXRlcyBhbiBBV1MgR2x1ZSB0YWJsZS4gVGhlIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBleGlzdGluZyBHbHVlIHRhYmxlIGlzIG5vdCBwcm92aWRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2x1ZVRhYmxlKHNjb3BlOiBDb25zdHJ1Y3QsIGRhdGFiYXNlOiBnbHVlLkNmbkRhdGFiYXNlLCB0YWJsZVByb3BzPzogZ2x1ZS5DZm5UYWJsZVByb3BzLFxuICBmaWVsZFNjaGVtYT86IGdsdWUuQ2ZuVGFibGUuQ29sdW1uUHJvcGVydHkgW10sIHNvdXJjZVR5cGU/OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkpOiBnbHVlLkNmblRhYmxlIHtcbiAgcmV0dXJuIGRlZmF1bHRzLkRlZmF1bHRHbHVlVGFibGUoc2NvcGUsIHRhYmxlUHJvcHMgIT09IHVuZGVmaW5lZCA/IHRhYmxlUHJvcHMgOlxuICAgIGRlZmF1bHRzLkRlZmF1bHRHbHVlVGFibGVQcm9wcyhkYXRhYmFzZSwgZmllbGRTY2hlbWEhLCBzb3VyY2VUeXBlLCBwYXJhbWV0ZXJzKSk7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqXG4gKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIEFXUyBHbHVlIGRhdGFiYXNlLiBUaGUgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIHdpdGggYW4gZXhpc3RpbmcgR2x1ZSBkYXRhYmFzZSB0eXBlIGlzIG5vdCBwcm92aWRlZC5cbiAqIFRoZSBtZXRob2QgdXNlcyB0aGUgdXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIEdsdWUgZGF0YWJhc2VcbiAqXG4gKiBAcGFyYW0gc2NvcGVcbiAqIEBwYXJhbSBkYXRhYmFzZVByb3BzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHbHVlRGF0YWJhc2Uoc2NvcGU6IENvbnN0cnVjdCwgIGRhdGFiYXNlUHJvcHM/OiBnbHVlLkNmbkRhdGFiYXNlUHJvcHMpOiBnbHVlLkNmbkRhdGFiYXNlIHtcbiAgY29uc3QgbWVyZ2VkREJQcm9wczogZ2x1ZS5DZm5EYXRhYmFzZVByb3BzID0gKGRhdGFiYXNlUHJvcHMgIT09IHVuZGVmaW5lZCkgPyBvdmVycmlkZVByb3BzKGRlZmF1bHRzLkRlZmF1bHRHbHVlRGF0YWJhc2VQcm9wcygpLCBkYXRhYmFzZVByb3BzKSA6XG4gICAgZGVmYXVsdHMuRGVmYXVsdEdsdWVEYXRhYmFzZVByb3BzKCk7XG4gIHJldHVybiBkZWZhdWx0cy5EZWZhdWx0R2x1ZURhdGFiYXNlKHNjb3BlLCBtZXJnZWREQlByb3BzKTtcbn1cblxuLyoqXG4gKiBBIHV0aWxpdHkgbWV0aG9kIHRvIGdlbmVyYXRlIHRoZSBTMyBBcm4gZnJvbSBhbiBTMyBVcmwuXG4gKlxuICogQHBhcmFtIHMzVXJsXG4gKi9cbmZ1bmN0aW9uIGdldFMzQXJuZnJvbVMzVXJsKHMzVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoczNVcmwgJiYgczNVcmwuc3RhcnRzV2l0aCgnczM6Ly8nKSkge1xuICAgIGNvbnN0IHNwbGl0U3RyaW5nOiBzdHJpbmcgPSBzM1VybC5zbGljZSgnczM6Ly8nLmxlbmd0aCk7XG4gICAgcmV0dXJuIGBhcm46JHtBd3MuUEFSVElUSU9OfTpzMzo6OiR7c3BsaXRTdHJpbmd9YDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBFcnJvcihgUmVjZWl2ZWQgUzNVUkwgYXMgJHtzM1VybH0uIFRoZSBTMyB1cmwgc3RyaW5nIGRvZXMgbm90IGJlZ2luIHdpdGggczM6Ly8uIFRoaXMgaXMgbm90IGEgc3RhbmRhcmQgUzMgdXJsYCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHV0aWxpdHkgbWV0aG9kIHRvIHR5cGUgY2hlY2sgQ2ZuSm9iLkpvYkNvbW1hbmRQcm9wZXJ0eSB0eXBlLiBGb3IgdGhlIGNvbnN0cnVjdCB0byB3b3JrIGZvciBzdHJlYW1pbmcgRVRMIGZyb20gS2luZXNpcyBEYXRhXG4gKiBTdHJlYW1zLCBhbGwgdGhyZWUgYXR0cmlidXRlcyBvZiB0aGUgSm9iQ29tbWFuZFByb3BlcnR5IGFyZSByZXF1aXJlZCwgZXZlbiB0aG91Z2ggdGhleSBtYXkgYmUgb3B0aW9uYWwgZm9yIG90aGVyIHVzZSBjYXNlcy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZFxuICovXG5mdW5jdGlvbiBpc0pvYkNvbW1hbmRQcm9wZXJ0eShjb21tYW5kOiBnbHVlLkNmbkpvYi5Kb2JDb21tYW5kUHJvcGVydHkgfCBJUmVzb2x2YWJsZSk6IGNvbW1hbmQgaXMgZ2x1ZS5DZm5Kb2IuSm9iQ29tbWFuZFByb3BlcnR5IHtcbiAgaWYgKChjb21tYW5kIGFzIGdsdWUuQ2ZuSm9iLkpvYkNvbW1hbmRQcm9wZXJ0eSkubmFtZSAmJlxuICAgIChjb21tYW5kIGFzIGdsdWUuQ2ZuSm9iLkpvYkNvbW1hbmRQcm9wZXJ0eSkucHl0aG9uVmVyc2lvbiAmJlxuICAgIChjb21tYW5kIGFzIGdsdWUuQ2ZuSm9iLkpvYkNvbW1hbmRQcm9wZXJ0eSkuc2NyaXB0TG9jYXRpb24pIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBkZWZhdWx0cy5wcmludFdhcm5pbmcoJ2NvbW1hbmQgbm90IG9mIHR5cGUgSm9iQ29tbWFuZFByb3BlcnR5IHR5cGUnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
5
+ * with the License. A copy of the License is located at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
10
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
11
+ * and limitations under the License.
12
+ */
13
+ import * as s3 from 'aws-cdk-lib/aws-s3';
14
+ import { Construct } from 'constructs';
15
+ import * as iam from 'aws-cdk-lib/aws-iam';
16
+ import * as kms from 'aws-cdk-lib/aws-kms';
17
+ import * as sns from 'aws-cdk-lib/aws-sns';
18
+ export interface TextractProps {
19
+ readonly asyncJobs?: boolean;
20
+ readonly existingSourceBucketObj?: s3.IBucket;
21
+ readonly sourceBucketProps?: s3.BucketProps;
22
+ readonly existingDestinationBucketObj?: s3.IBucket;
23
+ readonly destinationBucketProps?: s3.BucketProps;
24
+ readonly useSameBucket?: boolean;
25
+ readonly createCustomerManagedOutputBucket?: boolean;
26
+ readonly sourceLoggingBucketProps?: s3.BucketProps;
27
+ readonly destinationLoggingBucketProps?: s3.BucketProps;
28
+ readonly logSourceS3AccessLogs?: boolean;
29
+ readonly logDestinationS3AccessLogs?: boolean;
30
+ readonly sourceBucketEnvironmentVariableName?: string;
31
+ readonly destinationBucketEnvironmentVariableName?: string;
32
+ readonly dataAccessRoleArnEnvironmentVariableName?: string;
33
+ readonly snsNotificationTopicArnEnvironmentVariableName?: string;
34
+ readonly existingNotificationTopicObj?: sns.Topic;
35
+ readonly existingNotificationTopicEncryptionKey?: kms.Key;
36
+ readonly notificationTopicProps?: sns.TopicProps;
37
+ readonly enableNotificationTopicEncryptionWithCustomerManagedKey?: boolean;
38
+ readonly notificationTopicEncryptionKey?: kms.Key;
39
+ readonly notificationTopicEncryptionKeyProps?: kms.KeyProps;
40
+ }
41
+ export interface TextractBucketDetails {
42
+ readonly bucket?: s3.Bucket;
43
+ readonly bucketInterface: s3.IBucket;
44
+ readonly loggingBucket?: s3.Bucket;
45
+ }
46
+ export interface TextractConfiguration {
47
+ readonly textractRole?: iam.Role;
48
+ readonly lambdaIamActionsRequired: string[];
49
+ readonly sourceBucket?: TextractBucketDetails;
50
+ readonly destinationBucket?: TextractBucketDetails;
51
+ readonly snsNotificationTopic?: sns.Topic;
52
+ readonly notificationTopicEncryptionKey?: kms.Key;
53
+ }
54
+ export declare function ConfigureTextractSupport(scope: Construct, id: string, props: TextractProps): TextractConfiguration;
55
+ export declare function CheckTextractProps(props: TextractProps): void;
56
+ export interface TextractSnsProps {
57
+ readonly notificationTopicProps?: sns.TopicProps;
58
+ readonly existingNotificationTopicObj?: sns.Topic;
59
+ readonly existingNotificationTopicObject?: sns.Topic;
60
+ readonly notificationTopicEncryptionKey?: kms.Key;
61
+ readonly notificationTopicEncryptionKeyProps?: kms.KeyProps;
62
+ }
63
+ export declare function CheckTextractSnsProps(propsObject: TextractSnsProps | any): void;
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
6
+ * with the License. A copy of the License is located at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
11
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
12
+ * and limitations under the License.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ConfigureTextractSupport = ConfigureTextractSupport;
16
+ exports.CheckTextractProps = CheckTextractProps;
17
+ exports.CheckTextractSnsProps = CheckTextractSnsProps;
18
+ const iam = require("aws-cdk-lib/aws-iam");
19
+ const s3_bucket_helper_1 = require("./s3-bucket-helper");
20
+ const sns_helper_1 = require("./sns-helper");
21
+ const utils_1 = require("./utils");
22
+ const syncPermissions = [
23
+ 'textract:DetectDocumentText',
24
+ 'textract:AnalyzeDocument',
25
+ 'textract:AnalyzeExpense',
26
+ 'textract:AnalyzeID'
27
+ ];
28
+ const asyncPermissions = [
29
+ 'textract:StartDocumentTextDetection',
30
+ 'textract:GetDocumentTextDetection',
31
+ 'textract:StartDocumentAnalysis',
32
+ 'textract:GetDocumentAnalysis',
33
+ 'textract:StartExpenseAnalysis',
34
+ 'textract:GetExpenseAnalysis',
35
+ 'textract:StartLendingAnalysis',
36
+ 'textract:GetLendingAnalysis'
37
+ ];
38
+ function ConfigureTextractSupport(scope, id, props) {
39
+ let configuration = {
40
+ lambdaIamActionsRequired: [...syncPermissions],
41
+ };
42
+ if (props.asyncJobs) {
43
+ const buildTopicResponse = (0, sns_helper_1.buildTopic)(scope, id, {
44
+ existingTopicObj: props.existingNotificationTopicObj,
45
+ existingTopicEncryptionKey: props.existingNotificationTopicEncryptionKey,
46
+ topicProps: props.notificationTopicProps,
47
+ enableEncryptionWithCustomerManagedKey: props.enableNotificationTopicEncryptionWithCustomerManagedKey,
48
+ encryptionKey: props.notificationTopicEncryptionKey,
49
+ encryptionKeyProps: props.notificationTopicEncryptionKeyProps
50
+ });
51
+ // Setup notification topic
52
+ configuration = (0, utils_1.overrideProps)(configuration, {
53
+ snsNotificationTopic: buildTopicResponse.topic,
54
+ });
55
+ if (buildTopicResponse.key) {
56
+ configuration = (0, utils_1.overrideProps)(configuration, { notificationTopicEncryptionKey: buildTopicResponse.key });
57
+ }
58
+ // Setup source S3 Bucket
59
+ if (props.existingSourceBucketObj) {
60
+ configuration = (0, utils_1.overrideProps)(configuration, {
61
+ sourceBucket: {
62
+ bucketInterface: props.existingSourceBucketObj
63
+ }
64
+ }, false);
65
+ }
66
+ else {
67
+ const buildSourceBucketResponse = (0, s3_bucket_helper_1.buildS3Bucket)(scope, {
68
+ bucketProps: props.sourceBucketProps,
69
+ loggingBucketProps: props.sourceLoggingBucketProps,
70
+ logS3AccessLogs: props.logSourceS3AccessLogs
71
+ }, `${id}-source-bucket`);
72
+ configuration = (0, utils_1.overrideProps)(configuration, {
73
+ sourceBucket: {
74
+ bucket: buildSourceBucketResponse.bucket,
75
+ loggingBucket: buildSourceBucketResponse.loggingBucket,
76
+ bucketInterface: buildSourceBucketResponse.bucket,
77
+ }
78
+ }, false);
79
+ }
80
+ if (props.createCustomerManagedOutputBucket !== false) {
81
+ // Setup destination S3 Bucket
82
+ if (props.useSameBucket) {
83
+ configuration = (0, utils_1.overrideProps)(configuration, {
84
+ destinationBucket: {
85
+ bucketInterface: configuration.sourceBucket?.bucketInterface,
86
+ bucket: configuration.sourceBucket?.bucket,
87
+ loggingBucket: configuration.sourceBucket?.loggingBucket,
88
+ }
89
+ }, false);
90
+ }
91
+ else {
92
+ if (props.existingDestinationBucketObj) {
93
+ configuration = (0, utils_1.overrideProps)(configuration, {
94
+ destinationBucket: {
95
+ bucketInterface: props.existingDestinationBucketObj
96
+ }
97
+ }, false);
98
+ }
99
+ else {
100
+ const buildDestinationBucketResponse = (0, s3_bucket_helper_1.buildS3Bucket)(scope, {
101
+ bucketProps: props.destinationBucketProps,
102
+ loggingBucketProps: props.destinationLoggingBucketProps,
103
+ logS3AccessLogs: props.logDestinationS3AccessLogs
104
+ }, `${id}-destination-bucket`);
105
+ configuration = (0, utils_1.overrideProps)(configuration, {
106
+ destinationBucket: {
107
+ bucket: buildDestinationBucketResponse.bucket,
108
+ loggingBucket: buildDestinationBucketResponse.loggingBucket,
109
+ bucketInterface: buildDestinationBucketResponse.bucket,
110
+ }
111
+ }, false);
112
+ }
113
+ }
114
+ }
115
+ // Set up role that is sent to the Textract service
116
+ const textractServiceRole = new iam.Role(scope, `${id}-textract-service-role`, {
117
+ assumedBy: new iam.ServicePrincipal('textract.amazonaws.com'),
118
+ });
119
+ configuration.snsNotificationTopic.grantPublish(textractServiceRole);
120
+ configuration = (0, utils_1.overrideProps)(configuration, {
121
+ textractRole: textractServiceRole
122
+ }, false);
123
+ // Give the Lambda function additional permissions
124
+ asyncPermissions.forEach((permission) => {
125
+ configuration.lambdaIamActionsRequired.push(permission);
126
+ });
127
+ }
128
+ return configuration;
129
+ }
130
+ function CheckTextractProps(props) {
131
+ let errorMessages = '';
132
+ let errorFound = false;
133
+ if (props.asyncJobs) {
134
+ // Check source bucket props
135
+ const sourceS3Props = {
136
+ existingBucketObj: props.existingSourceBucketObj,
137
+ bucketProps: props.sourceBucketProps,
138
+ loggingBucketProps: props.sourceLoggingBucketProps,
139
+ logS3AccessLogs: props.logSourceS3AccessLogs
140
+ };
141
+ (0, s3_bucket_helper_1.CheckS3Props)(sourceS3Props);
142
+ // Check destination bucket props (only if not using same bucket)
143
+ if (!props.useSameBucket) {
144
+ const destinationS3Props = {
145
+ existingBucketObj: props.existingDestinationBucketObj,
146
+ bucketProps: props.destinationBucketProps,
147
+ loggingBucketProps: props.destinationLoggingBucketProps,
148
+ logS3AccessLogs: props.logDestinationS3AccessLogs
149
+ };
150
+ (0, s3_bucket_helper_1.CheckS3Props)(destinationS3Props);
151
+ }
152
+ // Check SNS topic props
153
+ CheckTextractSnsProps(props);
154
+ }
155
+ // If asyncJobs is false, no S3 bucket props should be provided
156
+ if (!props.asyncJobs) {
157
+ if (props.existingSourceBucketObj || props.sourceBucketProps ||
158
+ props.existingDestinationBucketObj || props.destinationBucketProps ||
159
+ props.sourceLoggingBucketProps || props.destinationLoggingBucketProps ||
160
+ props.logSourceS3AccessLogs !== undefined || props.logDestinationS3AccessLogs !== undefined ||
161
+ props.sourceBucketEnvironmentVariableName || props.destinationBucketEnvironmentVariableName ||
162
+ props.dataAccessRoleArnEnvironmentVariableName || props.useSameBucket) {
163
+ errorMessages += 'S3 bucket properties can only be provided when asyncJobs is true\n';
164
+ errorFound = true;
165
+ }
166
+ // Check SNS topic props separately for clearer error message
167
+ if (props.existingNotificationTopicObj || props.notificationTopicProps || props.existingNotificationTopicEncryptionKey ||
168
+ props.enableNotificationTopicEncryptionWithCustomerManagedKey !== undefined || props.notificationTopicEncryptionKey ||
169
+ props.notificationTopicEncryptionKeyProps) {
170
+ errorMessages += 'SNS topic properties can only be provided when asyncJobs is true';
171
+ errorFound = true;
172
+ }
173
+ }
174
+ // If useSameBucket is true, no destination bucket props should be provided
175
+ if (props.useSameBucket) {
176
+ if (props.existingDestinationBucketObj || props.destinationBucketProps ||
177
+ props.destinationLoggingBucketProps || props.logDestinationS3AccessLogs !== undefined) {
178
+ errorMessages += 'Destination bucket properties cannot be provided when useSameBucket is true\n';
179
+ errorFound = true;
180
+ }
181
+ }
182
+ // If createCustomerManagedOutputBucket is explicitly false, no output bucket properties should be provided
183
+ if (props.createCustomerManagedOutputBucket === false) {
184
+ if (props.existingDestinationBucketObj || props.destinationBucketProps ||
185
+ props.destinationLoggingBucketProps || props.logDestinationS3AccessLogs !== undefined ||
186
+ props.useSameBucket) {
187
+ errorMessages += 'Output bucket properties cannot be provided when createCustomerManagedOutputBucket is false';
188
+ errorFound = true;
189
+ }
190
+ }
191
+ if (errorFound) {
192
+ throw new Error(errorMessages);
193
+ }
194
+ }
195
+ function CheckTextractSnsProps(propsObject) {
196
+ let errorMessages = '';
197
+ let errorFound = false;
198
+ // FargateToSns used TopicObject instead of TopicObj - to fix would be a breaking change, so we
199
+ // must look for both here.
200
+ if (propsObject.notificationTopicProps && (propsObject.existingNotificationTopicObj || propsObject.existingNotificationTopicObject)) {
201
+ errorMessages += 'Error - Either provide notificationTopicProps or existingNotificationTopicObj, but not both.\n';
202
+ errorFound = true;
203
+ }
204
+ if (propsObject.notificationTopicProps?.masterKey && propsObject.notificationTopicEncryptionKey) {
205
+ errorMessages += 'Error - Either provide notificationTopicProps.masterKey or notificationTopicEncryptionKey, but not both.\n';
206
+ errorFound = true;
207
+ }
208
+ if (propsObject.notificationTopicProps?.masterKey && propsObject.notificationTopicEncryptionKeyProps) {
209
+ errorMessages += 'Error - Either provide notificationTopicProps.masterKey or notificationTopicEncryptionKeyProps, but not both.\n';
210
+ errorFound = true;
211
+ }
212
+ if (propsObject.notificationTopicEncryptionKey && propsObject.notificationTopicEncryptionKeyProps) {
213
+ errorMessages += 'Error - Either provide notificationTopicEncryptionKey or notificationTopicEncryptionKeyProps, but not both.\n';
214
+ errorFound = true;
215
+ }
216
+ if (errorFound) {
217
+ throw new Error(errorMessages);
218
+ }
219
+ }
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHJhY3QtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGV4dHJhY3QtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFvRUgsNERBK0ZDO0FBRUQsZ0RBeUVDO0FBb0JELHNEQTZCQztBQTNSRCwyQ0FBMkM7QUFFM0MseURBQWlFO0FBQ2pFLDZDQUEwQztBQUMxQyxtQ0FBd0M7QUEwQ3hDLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLDZCQUE2QjtJQUM3QiwwQkFBMEI7SUFDMUIseUJBQXlCO0lBQ3pCLG9CQUFvQjtDQUNyQixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixxQ0FBcUM7SUFDckMsbUNBQW1DO0lBQ25DLGdDQUFnQztJQUNoQyw4QkFBOEI7SUFDOUIsK0JBQStCO0lBQy9CLDZCQUE2QjtJQUM3QiwrQkFBK0I7SUFDL0IsNkJBQTZCO0NBQzlCLENBQUM7QUFFRixTQUFnQix3QkFBd0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtJQUV6RixJQUFJLGFBQWEsR0FBMEI7UUFDekMsd0JBQXdCLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQztLQUMvQyxDQUFDO0lBRUYsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDcEIsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLHVCQUFVLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUMvQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsNEJBQTRCO1lBQ3BELDBCQUEwQixFQUFFLEtBQUssQ0FBQyxzQ0FBc0M7WUFDeEUsVUFBVSxFQUFFLEtBQUssQ0FBQyxzQkFBc0I7WUFDeEMsc0NBQXNDLEVBQUUsS0FBSyxDQUFDLHVEQUF1RDtZQUNyRyxhQUFhLEVBQUUsS0FBSyxDQUFDLDhCQUE4QjtZQUNuRCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsbUNBQW1DO1NBQzlELENBQUMsQ0FBQztRQUNILDJCQUEyQjtRQUMz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LFdBQVcsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ2hHLGFBQWEsSUFBSSw0R0FBNEcsQ0FBQztRQUM5SCxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLElBQUksV0FBVyxDQUFDLG1DQUFtQyxFQUFFLENBQUM7UUFDckcsYUFBYSxJQUFJLGlIQUFpSCxDQUFDO1FBQ25JLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLDhCQUE4QixJQUFJLFdBQVcsQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO1FBQ2xHLGFBQWEsSUFBSSwrR0FBK0csQ0FBQztRQUNqSSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IENoZWNrUzNQcm9wcywgYnVpbGRTM0J1Y2tldCB9IGZyb20gJy4vczMtYnVja2V0LWhlbHBlcic7XG5pbXBvcnQgeyBidWlsZFRvcGljIH0gZnJvbSAnLi9zbnMtaGVscGVyJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcblxuZXhwb3J0IGludGVyZmFjZSBUZXh0cmFjdFByb3BzIHtcbiAgcmVhZG9ubHkgYXN5bmNKb2JzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZXhpc3RpbmdTb3VyY2VCdWNrZXRPYmo/OiBzMy5JQnVja2V0O1xuICByZWFkb25seSBzb3VyY2VCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICByZWFkb25seSBleGlzdGluZ0Rlc3RpbmF0aW9uQnVja2V0T2JqPzogczMuSUJ1Y2tldDtcbiAgcmVhZG9ubHkgZGVzdGluYXRpb25CdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICByZWFkb25seSB1c2VTYW1lQnVja2V0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY3JlYXRlQ3VzdG9tZXJNYW5hZ2VkT3V0cHV0QnVja2V0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc291cmNlTG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHM7XG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uTG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHM7XG4gIHJlYWRvbmx5IGxvZ1NvdXJjZVMzQWNjZXNzTG9ncz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxvZ0Rlc3RpbmF0aW9uUzNBY2Nlc3NMb2dzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc291cmNlQnVja2V0RW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uQnVja2V0RW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRhdGFBY2Nlc3NSb2xlQXJuRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNuc05vdGlmaWNhdGlvblRvcGljQXJuRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV4aXN0aW5nTm90aWZpY2F0aW9uVG9waWNPYmo/OiBzbnMuVG9waWM7XG4gIHJlYWRvbmx5IGV4aXN0aW5nTm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5Pzoga21zLktleTtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVG9waWNQcm9wcz86IHNucy5Ub3BpY1Byb3BzO1xuICByZWFkb25seSBlbmFibGVOb3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5Pzoga21zLktleTtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5UHJvcHM/OiBrbXMuS2V5UHJvcHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dHJhY3RCdWNrZXREZXRhaWxzIHtcbiAgcmVhZG9ubHkgYnVja2V0PzogczMuQnVja2V0LFxuICByZWFkb25seSBidWNrZXRJbnRlcmZhY2U6IHMzLklCdWNrZXQsXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXQ/OiBzMy5CdWNrZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXh0cmFjdENvbmZpZ3VyYXRpb24ge1xuICByZWFkb25seSB0ZXh0cmFjdFJvbGU/OiBpYW0uUm9sZSxcbiAgcmVhZG9ubHkgbGFtYmRhSWFtQWN0aW9uc1JlcXVpcmVkOiBzdHJpbmdbXSxcbiAgcmVhZG9ubHkgc291cmNlQnVja2V0PzogVGV4dHJhY3RCdWNrZXREZXRhaWxzLFxuICByZWFkb25seSBkZXN0aW5hdGlvbkJ1Y2tldD86IFRleHRyYWN0QnVja2V0RGV0YWlscyxcbiAgcmVhZG9ubHkgc25zTm90aWZpY2F0aW9uVG9waWM/OiBzbnMuVG9waWMsXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleT86IGttcy5LZXksXG59XG5cbmNvbnN0IHN5bmNQZXJtaXNzaW9ucyA9IFtcbiAgJ3RleHRyYWN0OkRldGVjdERvY3VtZW50VGV4dCcsXG4gICd0ZXh0cmFjdDpBbmFseXplRG9jdW1lbnQnLFxuICAndGV4dHJhY3Q6QW5hbHl6ZUV4cGVuc2UnLFxuICAndGV4dHJhY3Q6QW5hbHl6ZUlEJ1xuXTtcblxuY29uc3QgYXN5bmNQZXJtaXNzaW9ucyA9IFtcbiAgJ3RleHRyYWN0OlN0YXJ0RG9jdW1lbnRUZXh0RGV0ZWN0aW9uJyxcbiAgJ3RleHRyYWN0OkdldERvY3VtZW50VGV4dERldGVjdGlvbicsXG4gICd0ZXh0cmFjdDpTdGFydERvY3VtZW50QW5hbHlzaXMnLFxuICAndGV4dHJhY3Q6R2V0RG9jdW1lbnRBbmFseXNpcycsXG4gICd0ZXh0cmFjdDpTdGFydEV4cGVuc2VBbmFseXNpcycsXG4gICd0ZXh0cmFjdDpHZXRFeHBlbnNlQW5hbHlzaXMnLFxuICAndGV4dHJhY3Q6U3RhcnRMZW5kaW5nQW5hbHlzaXMnLFxuICAndGV4dHJhY3Q6R2V0TGVuZGluZ0FuYWx5c2lzJ1xuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIENvbmZpZ3VyZVRleHRyYWN0U3VwcG9ydChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGV4dHJhY3RQcm9wcyk6IFRleHRyYWN0Q29uZmlndXJhdGlvbiB7XG5cbiAgbGV0IGNvbmZpZ3VyYXRpb246IFRleHRyYWN0Q29uZmlndXJhdGlvbiA9IHtcbiAgICBsYW1iZGFJYW1BY3Rpb25zUmVxdWlyZWQ6IFsuLi5zeW5jUGVybWlzc2lvbnNdLFxuICB9O1xuXG4gIGlmIChwcm9wcy5hc3luY0pvYnMpIHtcbiAgICBjb25zdCBidWlsZFRvcGljUmVzcG9uc2UgPSBidWlsZFRvcGljKHNjb3BlLCBpZCwge1xuICAgICAgZXhpc3RpbmdUb3BpY09iajogcHJvcHMuZXhpc3RpbmdOb3RpZmljYXRpb25Ub3BpY09iaixcbiAgICAgIGV4aXN0aW5nVG9waWNFbmNyeXB0aW9uS2V5OiBwcm9wcy5leGlzdGluZ05vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleSxcbiAgICAgIHRvcGljUHJvcHM6IHByb3BzLm5vdGlmaWNhdGlvblRvcGljUHJvcHMsXG4gICAgICBlbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleTogcHJvcHMuZW5hYmxlTm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleSxcbiAgICAgIGVuY3J5cHRpb25LZXk6IHByb3BzLm5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleSxcbiAgICAgIGVuY3J5cHRpb25LZXlQcm9wczogcHJvcHMubm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5UHJvcHNcbiAgICB9KTtcbiAgICAvLyBTZXR1cCBub3RpZmljYXRpb24gdG9waWNcbiAgICBjb25maWd1cmF0aW9uID0gb3ZlcnJpZGVQcm9wcyhjb25maWd1cmF0aW9uLCB7XG4gICAgICBzbnNOb3RpZmljYXRpb25Ub3BpYzogYnVpbGRUb3BpY1Jlc3BvbnNlLnRvcGljLFxuICAgIH0pO1xuICAgIGlmIChidWlsZFRvcGljUmVzcG9uc2Uua2V5KSB7XG4gICAgICBjb25maWd1cmF0aW9uID0gb3ZlcnJpZGVQcm9wcyhjb25maWd1cmF0aW9uLCB7IG5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleTogYnVpbGRUb3BpY1Jlc3BvbnNlLmtleSB9KTtcbiAgICB9XG5cbiAgICAvLyBTZXR1cCBzb3VyY2UgUzMgQnVja2V0XG4gICAgaWYgKHByb3BzLmV4aXN0aW5nU291cmNlQnVja2V0T2JqKSB7XG4gICAgICBjb25maWd1cmF0aW9uID0gb3ZlcnJpZGVQcm9wcyhjb25maWd1cmF0aW9uLCB7XG4gICAgICAgIHNvdXJjZUJ1Y2tldDoge1xuICAgICAgICAgIGJ1Y2tldEludGVyZmFjZTogcHJvcHMuZXhpc3RpbmdTb3VyY2VCdWNrZXRPYmpcbiAgICAgICAgfVxuICAgICAgfSwgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBidWlsZFNvdXJjZUJ1Y2tldFJlc3BvbnNlID0gYnVpbGRTM0J1Y2tldChzY29wZSwge1xuICAgICAgICBidWNrZXRQcm9wczogcHJvcHMuc291cmNlQnVja2V0UHJvcHMsXG4gICAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wczogcHJvcHMuc291cmNlTG9nZ2luZ0J1Y2tldFByb3BzLFxuICAgICAgICBsb2dTM0FjY2Vzc0xvZ3M6IHByb3BzLmxvZ1NvdXJjZVMzQWNjZXNzTG9nc1xuICAgICAgfSwgYCR7aWR9LXNvdXJjZS1idWNrZXRgKTtcbiAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgc291cmNlQnVja2V0OiB7XG4gICAgICAgICAgYnVja2V0OiBidWlsZFNvdXJjZUJ1Y2tldFJlc3BvbnNlLmJ1Y2tldCxcbiAgICAgICAgICBsb2dnaW5nQnVja2V0OiBidWlsZFNvdXJjZUJ1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQsXG4gICAgICAgICAgYnVja2V0SW50ZXJmYWNlOiBidWlsZFNvdXJjZUJ1Y2tldFJlc3BvbnNlLmJ1Y2tldCxcbiAgICAgICAgfVxuICAgICAgfSwgZmFsc2UpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5jcmVhdGVDdXN0b21lck1hbmFnZWRPdXRwdXRCdWNrZXQgIT09IGZhbHNlKSB7XG4gICAgICAvLyBTZXR1cCBkZXN0aW5hdGlvbiBTMyBCdWNrZXRcbiAgICAgIGlmIChwcm9wcy51c2VTYW1lQnVja2V0KSB7XG4gICAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgICBkZXN0aW5hdGlvbkJ1Y2tldDoge1xuICAgICAgICAgICAgYnVja2V0SW50ZXJmYWNlOiBjb25maWd1cmF0aW9uLnNvdXJjZUJ1Y2tldD8uYnVja2V0SW50ZXJmYWNlLFxuICAgICAgICAgICAgYnVja2V0OiBjb25maWd1cmF0aW9uLnNvdXJjZUJ1Y2tldD8uYnVja2V0LFxuICAgICAgICAgICAgbG9nZ2luZ0J1Y2tldDogY29uZmlndXJhdGlvbi5zb3VyY2VCdWNrZXQ/LmxvZ2dpbmdCdWNrZXQsXG4gICAgICAgICAgfVxuICAgICAgICB9LCBmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvcHMuZXhpc3RpbmdEZXN0aW5hdGlvbkJ1Y2tldE9iaikge1xuICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiB7XG4gICAgICAgICAgICAgIGJ1Y2tldEludGVyZmFjZTogcHJvcHMuZXhpc3RpbmdEZXN0aW5hdGlvbkJ1Y2tldE9ialxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBidWlsZERlc3RpbmF0aW9uQnVja2V0UmVzcG9uc2UgPSBidWlsZFMzQnVja2V0KHNjb3BlLCB7XG4gICAgICAgICAgICBidWNrZXRQcm9wczogcHJvcHMuZGVzdGluYXRpb25CdWNrZXRQcm9wcyxcbiAgICAgICAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wczogcHJvcHMuZGVzdGluYXRpb25Mb2dnaW5nQnVja2V0UHJvcHMsXG4gICAgICAgICAgICBsb2dTM0FjY2Vzc0xvZ3M6IHByb3BzLmxvZ0Rlc3RpbmF0aW9uUzNBY2Nlc3NMb2dzXG4gICAgICAgICAgfSwgYCR7aWR9LWRlc3RpbmF0aW9uLWJ1Y2tldGApO1xuICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiB7XG4gICAgICAgICAgICAgIGJ1Y2tldDogYnVpbGREZXN0aW5hdGlvbkJ1Y2tldFJlc3BvbnNlLmJ1Y2tldCxcbiAgICAgICAgICAgICAgbG9nZ2luZ0J1Y2tldDogYnVpbGREZXN0aW5hdGlvbkJ1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQsXG4gICAgICAgICAgICAgIGJ1Y2tldEludGVyZmFjZTogYnVpbGREZXN0aW5hdGlvbkJ1Y2tldFJlc3BvbnNlLmJ1Y2tldCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXQgdXAgcm9sZSB0aGF0IGlzIHNlbnQgdG8gdGhlIFRleHRyYWN0IHNlcnZpY2VcbiAgICBjb25zdCB0ZXh0cmFjdFNlcnZpY2VSb2xlID0gbmV3IGlhbS5Sb2xlKHNjb3BlLCBgJHtpZH0tdGV4dHJhY3Qtc2VydmljZS1yb2xlYCwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3RleHRyYWN0LmFtYXpvbmF3cy5jb20nKSxcbiAgICB9KTtcbiAgICBjb25maWd1cmF0aW9uLnNuc05vdGlmaWNhdGlvblRvcGljIS5ncmFudFB1Ymxpc2godGV4dHJhY3RTZXJ2aWNlUm9sZSk7XG4gICAgY29uZmlndXJhdGlvbiA9IG92ZXJyaWRlUHJvcHMoY29uZmlndXJhdGlvbiwge1xuICAgICAgdGV4dHJhY3RSb2xlOiB0ZXh0cmFjdFNlcnZpY2VSb2xlXG4gICAgfSwgZmFsc2UpO1xuXG4gICAgLy8gR2l2ZSB0aGUgTGFtYmRhIGZ1bmN0aW9uIGFkZGl0aW9uYWwgcGVybWlzc2lvbnNcbiAgICBhc3luY1Blcm1pc3Npb25zLmZvckVhY2goKHBlcm1pc3Npb24pID0+IHtcbiAgICAgIGNvbmZpZ3VyYXRpb24ubGFtYmRhSWFtQWN0aW9uc1JlcXVpcmVkLnB1c2gocGVybWlzc2lvbik7XG4gICAgfSk7XG5cbiAgfVxuICByZXR1cm4gY29uZmlndXJhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrVGV4dHJhY3RQcm9wcyhwcm9wczogVGV4dHJhY3RQcm9wcyk6IHZvaWQge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmIChwcm9wcy5hc3luY0pvYnMpIHtcblxuICAgIC8vIENoZWNrIHNvdXJjZSBidWNrZXQgcHJvcHNcbiAgICBjb25zdCBzb3VyY2VTM1Byb3BzID0ge1xuICAgICAgZXhpc3RpbmdCdWNrZXRPYmo6IHByb3BzLmV4aXN0aW5nU291cmNlQnVja2V0T2JqLFxuICAgICAgYnVja2V0UHJvcHM6IHByb3BzLnNvdXJjZUJ1Y2tldFByb3BzLFxuICAgICAgbG9nZ2luZ0J1Y2tldFByb3BzOiBwcm9wcy5zb3VyY2VMb2dnaW5nQnVja2V0UHJvcHMsXG4gICAgICBsb2dTM0FjY2Vzc0xvZ3M6IHByb3BzLmxvZ1NvdXJjZVMzQWNjZXNzTG9nc1xuICAgIH07XG4gICAgQ2hlY2tTM1Byb3BzKHNvdXJjZVMzUHJvcHMpO1xuXG4gICAgLy8gQ2hlY2sgZGVzdGluYXRpb24gYnVja2V0IHByb3BzIChvbmx5IGlmIG5vdCB1c2luZyBzYW1lIGJ1Y2tldClcbiAgICBpZiAoIXByb3BzLnVzZVNhbWVCdWNrZXQpIHtcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uUzNQcm9wcyA9IHtcbiAgICAgICAgZXhpc3RpbmdCdWNrZXRPYmo6IHByb3BzLmV4aXN0aW5nRGVzdGluYXRpb25CdWNrZXRPYmosXG4gICAgICAgIGJ1Y2tldFByb3BzOiBwcm9wcy5kZXN0aW5hdGlvbkJ1Y2tldFByb3BzLFxuICAgICAgICBsb2dnaW5nQnVja2V0UHJvcHM6IHByb3BzLmRlc3RpbmF0aW9uTG9nZ2luZ0J1Y2tldFByb3BzLFxuICAgICAgICBsb2dTM0FjY2Vzc0xvZ3M6IHByb3BzLmxvZ0Rlc3RpbmF0aW9uUzNBY2Nlc3NMb2dzXG4gICAgICB9O1xuICAgICAgQ2hlY2tTM1Byb3BzKGRlc3RpbmF0aW9uUzNQcm9wcyk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgU05TIHRvcGljIHByb3BzXG4gICAgQ2hlY2tUZXh0cmFjdFNuc1Byb3BzKHByb3BzKTtcbiAgfVxuXG4gIC8vIElmIGFzeW5jSm9icyBpcyBmYWxzZSwgbm8gUzMgYnVja2V0IHByb3BzIHNob3VsZCBiZSBwcm92aWRlZFxuICBpZiAoIXByb3BzLmFzeW5jSm9icykge1xuICAgIGlmIChwcm9wcy5leGlzdGluZ1NvdXJjZUJ1Y2tldE9iaiB8fCBwcm9wcy5zb3VyY2VCdWNrZXRQcm9wcyB8fFxuICAgICAgcHJvcHMuZXhpc3RpbmdEZXN0aW5hdGlvbkJ1Y2tldE9iaiB8fCBwcm9wcy5kZXN0aW5hdGlvbkJ1Y2tldFByb3BzIHx8XG4gICAgICBwcm9wcy5zb3VyY2VMb2dnaW5nQnVja2V0UHJvcHMgfHwgcHJvcHMuZGVzdGluYXRpb25Mb2dnaW5nQnVja2V0UHJvcHMgfHxcbiAgICAgIHByb3BzLmxvZ1NvdXJjZVMzQWNjZXNzTG9ncyAhPT0gdW5kZWZpbmVkIHx8IHByb3BzLmxvZ0Rlc3RpbmF0aW9uUzNBY2Nlc3NMb2dzICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLnNvdXJjZUJ1Y2tldEVudmlyb25tZW50VmFyaWFibGVOYW1lIHx8IHByb3BzLmRlc3RpbmF0aW9uQnVja2V0RW52aXJvbm1lbnRWYXJpYWJsZU5hbWUgfHxcbiAgICAgIHByb3BzLmRhdGFBY2Nlc3NSb2xlQXJuRW52aXJvbm1lbnRWYXJpYWJsZU5hbWUgfHwgcHJvcHMudXNlU2FtZUJ1Y2tldCkge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnUzMgYnVja2V0IHByb3BlcnRpZXMgY2FuIG9ubHkgYmUgcHJvdmlkZWQgd2hlbiBhc3luY0pvYnMgaXMgdHJ1ZVxcbic7XG4gICAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBTTlMgdG9waWMgcHJvcHMgc2VwYXJhdGVseSBmb3IgY2xlYXJlciBlcnJvciBtZXNzYWdlXG4gICAgaWYgKHByb3BzLmV4aXN0aW5nTm90aWZpY2F0aW9uVG9waWNPYmogfHwgcHJvcHMubm90aWZpY2F0aW9uVG9waWNQcm9wcyB8fCBwcm9wcy5leGlzdGluZ05vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleSB8fFxuICAgICAgcHJvcHMuZW5hYmxlTm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleSAhPT0gdW5kZWZpbmVkIHx8IHByb3BzLm5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleSB8fFxuICAgICAgcHJvcHMubm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5UHJvcHMpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gJ1NOUyB0b3BpYyBwcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIHByb3ZpZGVkIHdoZW4gYXN5bmNKb2JzIGlzIHRydWUnO1xuICAgICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdXNlU2FtZUJ1Y2tldCBpcyB0cnVlLCBubyBkZXN0aW5hdGlvbiBidWNrZXQgcHJvcHMgc2hvdWxkIGJlIHByb3ZpZGVkXG4gIGlmIChwcm9wcy51c2VTYW1lQnVja2V0KSB7XG4gICAgaWYgKHByb3BzLmV4aXN0aW5nRGVzdGluYXRpb25CdWNrZXRPYmogfHwgcHJvcHMuZGVzdGluYXRpb25CdWNrZXRQcm9wcyB8fFxuICAgICAgcHJvcHMuZGVzdGluYXRpb25Mb2dnaW5nQnVja2V0UHJvcHMgfHwgcHJvcHMubG9nRGVzdGluYXRpb25TM0FjY2Vzc0xvZ3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnRGVzdGluYXRpb24gYnVja2V0IHByb3BlcnRpZXMgY2Fubm90IGJlIHByb3ZpZGVkIHdoZW4gdXNlU2FtZUJ1Y2tldCBpcyB0cnVlXFxuJztcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIGNyZWF0ZUN1c3RvbWVyTWFuYWdlZE91dHB1dEJ1Y2tldCBpcyBleHBsaWNpdGx5IGZhbHNlLCBubyBvdXRwdXQgYnVja2V0IHByb3BlcnRpZXMgc2hvdWxkIGJlIHByb3ZpZGVkXG4gIGlmIChwcm9wcy5jcmVhdGVDdXN0b21lck1hbmFnZWRPdXRwdXRCdWNrZXQgPT09IGZhbHNlKSB7XG4gICAgaWYgKHByb3BzLmV4aXN0aW5nRGVzdGluYXRpb25CdWNrZXRPYmogfHwgcHJvcHMuZGVzdGluYXRpb25CdWNrZXRQcm9wcyB8fFxuICAgICAgcHJvcHMuZGVzdGluYXRpb25Mb2dnaW5nQnVja2V0UHJvcHMgfHwgcHJvcHMubG9nRGVzdGluYXRpb25TM0FjY2Vzc0xvZ3MgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgcHJvcHMudXNlU2FtZUJ1Y2tldCkge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnT3V0cHV0IGJ1Y2tldCBwcm9wZXJ0aWVzIGNhbm5vdCBiZSBwcm92aWRlZCB3aGVuIGNyZWF0ZUN1c3RvbWVyTWFuYWdlZE91dHB1dEJ1Y2tldCBpcyBmYWxzZSc7XG4gICAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuXG4vKlxuICogQmVjYXVzZSB0aGUgbm90aWZpY2F0aW9uIHRvcGljIGlzIGEgc2Vjb25kYXJ5IHJlc291cmNlXG4gKiBmb3IgdGV4dHJhY3QgY29uZmlndXJhdGlvbnMsIHRoZSBwcm9wIG5hbWVzIGFyZSBkaWZmZXJlbnRcbiAqIHRoYW4gd2hlbiBTTlMgaXMgcHJpbWFyeSByZXNvdXJjZS4gQ2hlY2tUZXh0cmFjdFNuc1Byb3BzKCkgaXNcbiAqIGEgY2xvbmUgb2YgdGhlIENoZWNrU25zUHJvcHMoKSBpbiBzbnMtaGVscGVyLnRzIHVzaW5nIHRoZVxuICogVGV4dHJhY3Qgbm90aWZpY2F0aW9uIHRvcGljIHNwZWNpZmljIG5hbWVzLiBUaGlzIGhhcyBhIHJpc2sgb2ZcbiAqIGdldHRpbmcgb3V0IG9mIHN5bmMgZ29pbmcgZm9yd2FyZCAtIGJ1dCB0aGlzIHNlZW1lZCBhIGJldHRlclxuICogc29sdXRpb24gdGhhbiBDaGVja1Nuc1Byb3BzIHRocm93aW5nIGVycm9yIG1lc3NhZ2VzIHdpdGggdGhlXG4gKiB3cm9uZyBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXh0cmFjdFNuc1Byb3BzIHtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVG9waWNQcm9wcz86IHNucy5Ub3BpY1Byb3BzLFxuICByZWFkb25seSBleGlzdGluZ05vdGlmaWNhdGlvblRvcGljT2JqPzogc25zLlRvcGljLFxuICByZWFkb25seSBleGlzdGluZ05vdGlmaWNhdGlvblRvcGljT2JqZWN0Pzogc25zLlRvcGljLFxuICByZWFkb25seSBub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXk/OiBrbXMuS2V5LFxuICByZWFkb25seSBub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXlQcm9wcz86IGttcy5LZXlQcm9wc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tUZXh0cmFjdFNuc1Byb3BzKHByb3BzT2JqZWN0OiBUZXh0cmFjdFNuc1Byb3BzIHwgYW55KSB7XG4gIGxldCBlcnJvck1lc3NhZ2VzID0gJyc7XG4gIGxldCBlcnJvckZvdW5kID0gZmFsc2U7XG5cbiAgLy8gRmFyZ2F0ZVRvU25zIHVzZWQgVG9waWNPYmplY3QgaW5zdGVhZCBvZiBUb3BpY09iaiAtIHRvIGZpeCB3b3VsZCBiZSBhIGJyZWFraW5nIGNoYW5nZSwgc28gd2VcbiAgLy8gbXVzdCBsb29rIGZvciBib3RoIGhlcmUuXG4gIGlmIChwcm9wc09iamVjdC5ub3RpZmljYXRpb25Ub3BpY1Byb3BzICYmIChwcm9wc09iamVjdC5leGlzdGluZ05vdGlmaWNhdGlvblRvcGljT2JqIHx8IHByb3BzT2JqZWN0LmV4aXN0aW5nTm90aWZpY2F0aW9uVG9waWNPYmplY3QpKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBub3RpZmljYXRpb25Ub3BpY1Byb3BzIG9yIGV4aXN0aW5nTm90aWZpY2F0aW9uVG9waWNPYmosIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3BzT2JqZWN0Lm5vdGlmaWNhdGlvblRvcGljUHJvcHM/Lm1hc3RlcktleSAmJiBwcm9wc09iamVjdC5ub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXkpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIG5vdGlmaWNhdGlvblRvcGljUHJvcHMubWFzdGVyS2V5IG9yIG5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleSwgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3Qubm90aWZpY2F0aW9uVG9waWNQcm9wcz8ubWFzdGVyS2V5ICYmIHByb3BzT2JqZWN0Lm5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleVByb3BzKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBub3RpZmljYXRpb25Ub3BpY1Byb3BzLm1hc3RlcktleSBvciBub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXlQcm9wcywgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3Qubm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5ICYmIHByb3BzT2JqZWN0Lm5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleVByb3BzKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXkgb3Igbm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5UHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn1cbiJdfQ==
@@ -56,7 +56,8 @@ export declare enum ServiceEndpointTypes {
56
56
  BEDROCK_RUNTIME = "BEDROCK_RUNTIME",
57
57
  KENDRA = "KENDRA",
58
58
  TRANSCRIBE = "TRANSCRIBE",
59
- TRANSLATE = "TRANSLATE"
59
+ TRANSLATE = "TRANSLATE",
60
+ TEXTRACT = "TEXTRACT"
60
61
  }
61
62
  /**
62
63
  * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.