@stemy/backend 2.8.6 → 2.9.3

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/common-types.d.ts CHANGED
@@ -115,6 +115,7 @@ export interface IAssetCropInfo {
115
115
  }
116
116
  export interface IAssetMeta {
117
117
  filename?: string;
118
+ extension?: string;
118
119
  classified?: boolean;
119
120
  downloadCount?: number;
120
121
  firstDownload?: Date;
@@ -224,6 +225,10 @@ export interface IPaginationParams {
224
225
  [key: string]: any;
225
226
  }
226
227
  export declare type FontFormat = "opentype" | "truetype" | "woff" | "woff2" | "datafork";
228
+ export interface IFileType {
229
+ ext: string;
230
+ mime: string;
231
+ }
227
232
  export interface IBackendConfig {
228
233
  rootFolder?: string;
229
234
  routePrefix?: string;
@@ -15,4 +15,4 @@ export class Parameter {
15
15
  this.resolver = resolver;
16
16
  }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQkEsdUJBQXVCO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUM7QUF3RDdCLDJCQUEyQjtBQUUzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQTZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUF5QixNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBNEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQTJCLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWlDLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU3RixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQThCLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXlDLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQWVuRyxNQUFNLE9BQU8sU0FBUztJQUVsQixZQUFxQixJQUFZLEVBQVMsWUFBaUIsRUFBUyxXQUEwQixJQUFJO1FBQTdFLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBSztRQUFTLGFBQVEsR0FBUixRQUFRLENBQXNCO0lBRWxHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VydmVyfSBmcm9tIFwiaHR0cFwiO1xyXG5pbXBvcnQge1JlcXVlc3QsIEV4cHJlc3N9IGZyb20gXCJleHByZXNzXCI7XHJcbmltcG9ydCB7U29ja2V0LCBTZXJ2ZXIgYXMgU29ja2V0U2VydmVyfSBmcm9tIFwic29ja2V0LmlvXCI7XHJcbmltcG9ydCB7Um91dGluZ0NvbnRyb2xsZXJzT3B0aW9uc30gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtTb2NrZXRDb250cm9sbGVyc09wdGlvbnN9IGZyb20gXCJzb2NrZXQtY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtcclxuICAgIENsYXNzUHJvdmlkZXIsXHJcbiAgICBEZXBlbmRlbmN5Q29udGFpbmVyLFxyXG4gICAgSW5qZWN0aW9uVG9rZW4sXHJcbiAgICBUb2tlblByb3ZpZGVyLFxyXG4gICAgVmFsdWVQcm92aWRlcixcclxuICAgIFJlZ2lzdHJhdGlvbk9wdGlvbnNcclxufSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtTY2hlbWFPYmplY3R9IGZyb20gXCJvcGVuYXBpMy10c1wiO1xyXG5pbXBvcnQgQnVmZmVyIGZyb20gXCJidWZmZXJcIjtcclxuaW1wb3J0IHtSZWFkYWJsZX0gZnJvbSBcInN0cmVhbVwiO1xyXG5pbXBvcnQge01vbWVudH0gZnJvbSBcIm1vbWVudFwiO1xyXG5cclxuLy8gLS0tIERJIGZ1bmN0aW9ucyAtLS1cclxuXHJcbmV4cG9ydCBjb25zdCBUeXBlID0gRnVuY3Rpb247XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFR5cGU8VCA9IG9iamVjdD4gZXh0ZW5kcyBGdW5jdGlvbiB7XHJcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGYWN0b3J5UHJvdmlkZXI8VD4ge1xyXG4gICAgdXNlRmFjdG9yeTogKGRjOiBJRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4gVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJlZSB7XHJcbiAgICByZWFkb25seSBwYXRoOiBzdHJpbmc7XHJcbiAgICByZXNvbHZlU2VydmljZSgpOiBhbnk7XHJcbiAgICByZXNvbHZlTGVhdmVzKCk6IE1hcDxzdHJpbmcsIElUcmVlPjtcclxuICAgIHJlc29sdmVTZXJ2aWNlcygpOiBNYXA8c3RyaW5nLCBhbnk+O1xyXG4gICAgcmVzb2x2ZUFuY2VzdG9yKHBhdGg6IHN0cmluZyk6IElUcmVlO1xyXG4gICAgcmVzb2x2ZVBhdGgocGF0aDogc3RyaW5nLCB0aHJvd0Vycm9yPzogYm9vbGVhbik6IElUcmVlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEZXBlbmRlbmN5Q29udGFpbmVyIGV4dGVuZHMgRGVwZW5kZW5jeUNvbnRhaW5lciB7XHJcbiAgICByZWFkb25seSBwYXJlbnQ6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVhZG9ubHkgdHJlZTogSVRyZWU7XHJcbiAgICByZWFkb25seSByZWdpc3RlcmVkVG9rZW5zOiBSZWFkb25seUFycmF5PEluamVjdGlvblRva2VuPjtcclxuICAgIGNyZWF0ZUNoaWxkQ29udGFpbmVyKCk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogVmFsdWVQcm92aWRlcjxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogRmFjdG9yeVByb3ZpZGVyPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBUb2tlblByb3ZpZGVyPFQ+LCBvcHRpb25zPzogUmVnaXN0cmF0aW9uT3B0aW9ucyk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogQ2xhc3NQcm92aWRlcjxUPiwgb3B0aW9ucz86IFJlZ2lzdHJhdGlvbk9wdGlvbnMpOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVyPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPiwgcHJvdmlkZXI6IFR5cGU8VD4sIG9wdGlvbnM/OiBSZWdpc3RyYXRpb25PcHRpb25zKTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclNpbmdsZXRvbjxUPihmcm9tOiBJbmplY3Rpb25Ub2tlbjxUPiwgdG86IEluamVjdGlvblRva2VuPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclNpbmdsZXRvbjxUPih0b2tlbjogVHlwZTxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXJUeXBlPFQ+KGZyb206IEluamVjdGlvblRva2VuPFQ+LCB0bzogSW5qZWN0aW9uVG9rZW48VD4pOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVySW5zdGFuY2U8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBpbnN0YW5jZTogVCk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgZ2V0PFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPik6IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NCYXNlZFByb3ZpZGVyPFQ+IGV4dGVuZHMgQ2xhc3NQcm92aWRlcjxUPiB7XHJcbiAgICBwcm92aWRlOiBJbmplY3Rpb25Ub2tlbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUJhc2VkUHJvdmlkZXI8VD4gZXh0ZW5kcyBWYWx1ZVByb3ZpZGVyPFQ+IHtcclxuICAgIHByb3ZpZGU6IEluamVjdGlvblRva2VuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlCYXNlZFByb3ZpZGVyPFQ+IGV4dGVuZHMgRmFjdG9yeVByb3ZpZGVyPFQ+IHtcclxuICAgIHByb3ZpZGU6IEluamVjdGlvblRva2VuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuQmFzZWRQcm92aWRlcjxUPiBleHRlbmRzIFRva2VuUHJvdmlkZXI8VD4ge1xyXG4gICAgcHJvdmlkZTogSW5qZWN0aW9uVG9rZW47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFN5cmluZ2VQcm92aWRlcjxUPiA9IFR5cGU8VD4gfCBDbGFzc1Byb3ZpZGVyPFQ+IHwgVmFsdWVQcm92aWRlcjxUPiB8IEZhY3RvcnlQcm92aWRlcjxUPiB8IFRva2VuUHJvdmlkZXI8VD47XHJcblxyXG5leHBvcnQgdHlwZSBQcm92aWRlcjxUPiA9IFR5cGU8VD4gfCBDbGFzc0Jhc2VkUHJvdmlkZXI8VD4gfCBWYWx1ZUJhc2VkUHJvdmlkZXI8VD4gfCBGYWN0b3J5QmFzZWRQcm92aWRlcjxUPiB8IFRva2VuQmFzZWRQcm92aWRlcjxUPjtcclxuXHJcbi8vIC0tLSBJbmplY3Rpb24gdG9rZW5zIC0tLVxyXG5cclxuZXhwb3J0IGNvbnN0IEZJWFRVUkU6IEluamVjdGlvblRva2VuPElGaXh0dXJlPiA9IFN5bWJvbC5mb3IoXCJmaXh0dXJlLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEpPQjogSW5qZWN0aW9uVG9rZW48SUpvYj4gPSBTeW1ib2wuZm9yKFwiam9iLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEVYUFJFU1M6IEluamVjdGlvblRva2VuPEV4cHJlc3M+ID0gU3ltYm9sLmZvcihcImV4cHJlc3MtdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgSFRUUF9TRVJWRVI6IEluamVjdGlvblRva2VuPFNlcnZlcj4gPSBTeW1ib2wuZm9yKFwiaHR0cC1zZXJ2ZXItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgU09DS0VUX1NFUlZFUjogSW5qZWN0aW9uVG9rZW48U29ja2V0U2VydmVyPiA9IFN5bWJvbC5mb3IoXCJzb2NrZXQtc2VydmVyLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBBUkFNRVRFUjogSW5qZWN0aW9uVG9rZW48UGFyYW1ldGVyPiA9IFN5bWJvbC5mb3IoXCJwYXJhbWV0ZXItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgRElfQ09OVEFJTkVSOiBJbmplY3Rpb25Ub2tlbjxJRGVwZW5kZW5jeUNvbnRhaW5lcj4gPSBTeW1ib2wuZm9yKFwiZGktY29udGFpbmVyLXRva2VuXCIpO1xyXG5cclxuLy8gLS0tIEludGVyZmFjZXMgYW5kIHV0aWxpdHkgY2xhc3NlcyAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZpeHR1cmUge1xyXG4gICAgbG9hZCgpOiBQcm9taXNlPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFNjaGVtYUNvbnZlcnRlciA9IChcclxuICAgIG1ldGE6IGFueSxcclxuICAgIG9wdGlvbnM6IGFueVxyXG4pID0+IFNjaGVtYU9iamVjdDtcclxuXHJcbmV4cG9ydCB0eXBlIFBhcmFtUmVzb2x2ZXIgPSAodmFsdWU6IHN0cmluZykgPT4gYW55O1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgbmFtZTogc3RyaW5nLCBwdWJsaWMgZGVmYXVsdFZhbHVlOiBhbnksIHB1YmxpYyByZXNvbHZlcjogUGFyYW1SZXNvbHZlciA9IG51bGwpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUpvYiB7XHJcbiAgICBwcm9jZXNzKCk6IFByb21pc2U8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSm9iVGFzayB7XHJcbiAgICBzdGFydDogKCkgPT4gdGhpcztcclxuICAgIHN0b3A6ICgpID0+IHRoaXM7XHJcbiAgICBkZXN0cm95OiAoKSA9PiB2b2lkO1xyXG4gICAgZ2V0U3RhdHVzOiAoKSA9PiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEpvYlBhcmFtcyA9IHtbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEpvYlNjaGVkdWxlUmFuZ2Uge1xyXG4gICAgbWluOiBudW1iZXI7XHJcbiAgICBtYXg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSm9iU2NoZWR1bGVUaW1lID0gc3RyaW5nIHwgbnVtYmVyIHwgSm9iU2NoZWR1bGVSYW5nZSB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmVzcyB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgY3VycmVudDogbnVtYmVyO1xyXG4gICAgbWF4OiBudW1iZXI7XHJcbiAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBlcnJvcjogc3RyaW5nO1xyXG4gICAgY2FuY2VsZWQ6IGJvb2xlYW47XHJcbiAgICBwZXJjZW50OiBudW1iZXI7XHJcbiAgICByZW1haW5pbmc6IG51bWJlcjtcclxuICAgIGNyZWF0ZVN1YlByb2dyZXNzKHByb2dyZXNzVmFsdWU6IG51bWJlciwgbWF4PzogbnVtYmVyLCBtZXNzYWdlPzogc3RyaW5nKTogUHJvbWlzZTxJUHJvZ3Jlc3M+O1xyXG4gICAgc2V0TWF4KG1heDogbnVtYmVyKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgc2V0TWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XHJcbiAgICBzZXRFcnJvcihlcnJvcjogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgYWR2YW5jZSh2YWx1ZT86IG51bWJlcik6IFByb21pc2U8YW55PjtcclxuICAgIGNhbmNlbCgpOiBQcm9taXNlPGFueT47XHJcbiAgICBzYXZlKCk6IFByb21pc2U8YW55PjtcclxuICAgIGxvYWQoKTogUHJvbWlzZTx0aGlzPjtcclxuICAgIHRvSlNPTigpOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0Q3JvcEluZm8ge1xyXG4gICAgeDogbnVtYmVyO1xyXG4gICAgeTogbnVtYmVyO1xyXG4gICAgdzogbnVtYmVyO1xyXG4gICAgaDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldE1ldGEge1xyXG4gICAgZmlsZW5hbWU/OiBzdHJpbmc7XHJcbiAgICBjbGFzc2lmaWVkPzogYm9vbGVhbjtcclxuICAgIGRvd25sb2FkQ291bnQ/OiBudW1iZXI7XHJcbiAgICBmaXJzdERvd25sb2FkPzogRGF0ZTtcclxuICAgIGxhc3REb3dubG9hZD86IERhdGU7XHJcbiAgICBjcm9wPzogSUFzc2V0Q3JvcEluZm87XHJcbiAgICBjcm9wQmVmb3JlPzogSUFzc2V0Q3JvcEluZm87XHJcbiAgICBjcm9wQWZ0ZXI/OiBJQXNzZXRDcm9wSW5mbztcclxuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0SW1hZ2VQYXJhbXMge1xyXG4gICAgcm90YXRpb24/OiBudW1iZXI7XHJcbiAgICBjYW52YXNTY2FsZVg/OiBudW1iZXI7XHJcbiAgICBjYW52YXNTY2FsZVk/OiBudW1iZXI7XHJcbiAgICBzY2FsZVg/OiBudW1iZXI7XHJcbiAgICBzY2FsZVk/OiBudW1iZXI7XHJcbiAgICBsYXp5PzogYm9vbGVhbjtcclxuICAgIGNyb3A/OiBzdHJpbmcgfCBib29sZWFuO1xyXG4gICAgY3JvcEJlZm9yZT86IHN0cmluZyB8IElBc3NldENyb3BJbmZvO1xyXG4gICAgY3JvcEFmdGVyPzogc3RyaW5nIHwgSUFzc2V0Q3JvcEluZm87XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0IHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xyXG4gICAgY29udGVudFR5cGU6IHN0cmluZztcclxuICAgIG1ldGFkYXRhOiBJQXNzZXRNZXRhO1xyXG4gICAgc3RyZWFtOiBSZWFkYWJsZSxcclxuICAgIHVubGluaygpOiBQcm9taXNlPHN0cmluZz47XHJcbiAgICBnZXRCdWZmZXIoKTogUHJvbWlzZTxCdWZmZXI+O1xyXG4gICAgZG93bmxvYWQobWV0YWRhdGE/OiBJQXNzZXRNZXRhKTogUHJvbWlzZTxSZWFkYWJsZT47XHJcbiAgICBkb3dubG9hZEltYWdlKHBhcmFtcz86IElBc3NldEltYWdlUGFyYW1zLCBtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPjtcclxuICAgIGdldEltYWdlKHBhcmFtcz86IElBc3NldEltYWdlUGFyYW1zKTogUHJvbWlzZTxSZWFkYWJsZT47XHJcbiAgICBzYXZlKCk6IFByb21pc2U8YW55PjtcclxuICAgIGxvYWQoKTogUHJvbWlzZTx0aGlzPjtcclxuICAgIHRvSlNPTigpOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhenlBc3NldCB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgam9iTmFtZTogc3RyaW5nO1xyXG4gICAgam9iUGFyYW1zOiBhbnk7XHJcbiAgICBqb2JRdWU6IHN0cmluZztcclxuICAgIHByb2dyZXNzSWQ/OiBzdHJpbmc7XHJcbiAgICBhc3NldElkPzogc3RyaW5nO1xyXG4gICAgdW5saW5rKCk6IFByb21pc2U8c3RyaW5nPjtcclxuICAgIHN0YXJ0V29ya2luZygpOiB2b2lkO1xyXG4gICAgbG9hZEFzc2V0KCk6IFByb21pc2U8SUFzc2V0PjtcclxuICAgIHdyaXRlQXNzZXQoYXNzZXQ6IElBc3NldCk6IFByb21pc2U8SUFzc2V0PjtcclxuICAgIHNhdmUoKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgbG9hZCgpOiBQcm9taXNlPHRoaXM+O1xyXG4gICAgdG9KU09OKCk6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVXNlciB7XHJcbiAgICBfaWQ/OiBzdHJpbmc7XHJcbiAgICBpZD86IHN0cmluZztcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICBwYXNzd29yZDogc3RyaW5nO1xyXG4gICAgcm9sZXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDbGllbnRTb2NrZXQgZXh0ZW5kcyBTb2NrZXQge1xyXG4gICAgaW50ZXJlc3RlZFByb2dyZXNzZXM6IFNldDxzdHJpbmc+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSZXF1ZXN0QmFzZTxUPiBleHRlbmRzIFJlcXVlc3Qge1xyXG4gICAgaWQ/OiBzdHJpbmc7XHJcbiAgICBzdGFydGVkPzogTW9tZW50O1xyXG4gICAgZW5kZWQ/OiBNb21lbnQ7XHJcbiAgICBjb250YWluZXI/OiBEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmc7XHJcbiAgICB1c2VyPzogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdCBleHRlbmRzIElSZXF1ZXN0QmFzZTxJVXNlcj4ge1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2FsbGVyeUltYWdlIHtcclxuICAgIGZvbGRlcjogc3RyaW5nO1xyXG4gICAgdGh1bWI6IHN0cmluZztcclxuICAgIGJpZzogc3RyaW5nO1xyXG4gICAgc2VydmUoaWQ6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPlxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHYWxsZXJ5U2l6ZSB7XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGhlaWdodD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2FsbGVyeUltYWdlSGFuZGxlciB7XHJcbiAgICBnZXRPcmlnaW5hbCgpOiBQcm9taXNlPEJ1ZmZlcj47XHJcbiAgICB3cml0ZVJlc3VsdChpc1RodW1iOiBib29sZWFuLCBidWZmZXI6IEJ1ZmZlcik6IFByb21pc2U8YW55PjtcclxuICAgIGhhc1Jlc3VsdChpc1RodW1iOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPjtcclxuICAgIHNlcnZlUmVzdWx0KGlzVGh1bWI6IGJvb2xlYW4pOiBQcm9taXNlPEJ1ZmZlcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9ucyB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25NZXRhIHtcclxuICAgIHRvdGFsOiBudW1iZXI7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25CYXNlPFQ+IHtcclxuICAgIGNvdW50OiBudW1iZXJcclxuICAgIGl0ZW1zOiBUW107XHJcbiAgICBtZXRhPzogSVBhZ2luYXRpb25NZXRhO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uIGV4dGVuZHMgSVBhZ2luYXRpb25CYXNlPGFueT4ge1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvblBhcmFtcyB7XHJcbiAgICBwYWdlOiBudW1iZXI7XHJcbiAgICBsaW1pdDogbnVtYmVyO1xyXG4gICAgc29ydD86IHN0cmluZztcclxuICAgIHBvcHVsYXRlPzogc3RyaW5nW107XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEZvbnRGb3JtYXQgPSBcIm9wZW50eXBlXCIgfCBcInRydWV0eXBlXCIgfCBcIndvZmZcIiB8IFwid29mZjJcIiB8IFwiZGF0YWZvcmtcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUJhY2tlbmRDb25maWcge1xyXG4gICAgcm9vdEZvbGRlcj86IHN0cmluZztcclxuICAgIHJvdXRlUHJlZml4Pzogc3RyaW5nO1xyXG4gICAgcGFyYW1zPzogUGFyYW1ldGVyW107XHJcbiAgICBmaXh0dXJlcz86IFR5cGU8SUZpeHR1cmU+W107XHJcbiAgICBqb2JzPzogVHlwZTxJSm9iPltdO1xyXG4gICAgcmVzdE9wdGlvbnM/OiBSb3V0aW5nQ29udHJvbGxlcnNPcHRpb25zO1xyXG4gICAgc29ja2V0T3B0aW9ucz86IFNvY2tldENvbnRyb2xsZXJzT3B0aW9ucztcclxuICAgIGN1c3RvbVZhbGlkYXRpb24/OiBTY2hlbWFDb252ZXJ0ZXIgfCBTY2hlbWFPYmplY3Q7XHJcbn1cclxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQkEsdUJBQXVCO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUM7QUF3RDdCLDJCQUEyQjtBQUUzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQTZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUF5QixNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBNEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQTJCLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWlDLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU3RixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQThCLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXlDLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQWVuRyxNQUFNLE9BQU8sU0FBUztJQUVsQixZQUFxQixJQUFZLEVBQVMsWUFBaUIsRUFBUyxXQUEwQixJQUFJO1FBQTdFLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBSztRQUFTLGFBQVEsR0FBUixRQUFRLENBQXNCO0lBRWxHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VydmVyfSBmcm9tIFwiaHR0cFwiO1xyXG5pbXBvcnQge1JlcXVlc3QsIEV4cHJlc3N9IGZyb20gXCJleHByZXNzXCI7XHJcbmltcG9ydCB7U29ja2V0LCBTZXJ2ZXIgYXMgU29ja2V0U2VydmVyfSBmcm9tIFwic29ja2V0LmlvXCI7XHJcbmltcG9ydCB7Um91dGluZ0NvbnRyb2xsZXJzT3B0aW9uc30gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtTb2NrZXRDb250cm9sbGVyc09wdGlvbnN9IGZyb20gXCJzb2NrZXQtY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtcclxuICAgIENsYXNzUHJvdmlkZXIsXHJcbiAgICBEZXBlbmRlbmN5Q29udGFpbmVyLFxyXG4gICAgSW5qZWN0aW9uVG9rZW4sXHJcbiAgICBUb2tlblByb3ZpZGVyLFxyXG4gICAgVmFsdWVQcm92aWRlcixcclxuICAgIFJlZ2lzdHJhdGlvbk9wdGlvbnNcclxufSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtTY2hlbWFPYmplY3R9IGZyb20gXCJvcGVuYXBpMy10c1wiO1xyXG5pbXBvcnQgQnVmZmVyIGZyb20gXCJidWZmZXJcIjtcclxuaW1wb3J0IHtSZWFkYWJsZX0gZnJvbSBcInN0cmVhbVwiO1xyXG5pbXBvcnQge01vbWVudH0gZnJvbSBcIm1vbWVudFwiO1xyXG5cclxuLy8gLS0tIERJIGZ1bmN0aW9ucyAtLS1cclxuXHJcbmV4cG9ydCBjb25zdCBUeXBlID0gRnVuY3Rpb247XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFR5cGU8VCA9IG9iamVjdD4gZXh0ZW5kcyBGdW5jdGlvbiB7XHJcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGYWN0b3J5UHJvdmlkZXI8VD4ge1xyXG4gICAgdXNlRmFjdG9yeTogKGRjOiBJRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4gVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJlZSB7XHJcbiAgICByZWFkb25seSBwYXRoOiBzdHJpbmc7XHJcbiAgICByZXNvbHZlU2VydmljZSgpOiBhbnk7XHJcbiAgICByZXNvbHZlTGVhdmVzKCk6IE1hcDxzdHJpbmcsIElUcmVlPjtcclxuICAgIHJlc29sdmVTZXJ2aWNlcygpOiBNYXA8c3RyaW5nLCBhbnk+O1xyXG4gICAgcmVzb2x2ZUFuY2VzdG9yKHBhdGg6IHN0cmluZyk6IElUcmVlO1xyXG4gICAgcmVzb2x2ZVBhdGgocGF0aDogc3RyaW5nLCB0aHJvd0Vycm9yPzogYm9vbGVhbik6IElUcmVlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEZXBlbmRlbmN5Q29udGFpbmVyIGV4dGVuZHMgRGVwZW5kZW5jeUNvbnRhaW5lciB7XHJcbiAgICByZWFkb25seSBwYXJlbnQ6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVhZG9ubHkgdHJlZTogSVRyZWU7XHJcbiAgICByZWFkb25seSByZWdpc3RlcmVkVG9rZW5zOiBSZWFkb25seUFycmF5PEluamVjdGlvblRva2VuPjtcclxuICAgIGNyZWF0ZUNoaWxkQ29udGFpbmVyKCk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogVmFsdWVQcm92aWRlcjxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogRmFjdG9yeVByb3ZpZGVyPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBUb2tlblByb3ZpZGVyPFQ+LCBvcHRpb25zPzogUmVnaXN0cmF0aW9uT3B0aW9ucyk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogQ2xhc3NQcm92aWRlcjxUPiwgb3B0aW9ucz86IFJlZ2lzdHJhdGlvbk9wdGlvbnMpOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVyPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPiwgcHJvdmlkZXI6IFR5cGU8VD4sIG9wdGlvbnM/OiBSZWdpc3RyYXRpb25PcHRpb25zKTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclNpbmdsZXRvbjxUPihmcm9tOiBJbmplY3Rpb25Ub2tlbjxUPiwgdG86IEluamVjdGlvblRva2VuPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclNpbmdsZXRvbjxUPih0b2tlbjogVHlwZTxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXJUeXBlPFQ+KGZyb206IEluamVjdGlvblRva2VuPFQ+LCB0bzogSW5qZWN0aW9uVG9rZW48VD4pOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVySW5zdGFuY2U8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBpbnN0YW5jZTogVCk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgZ2V0PFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPik6IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NCYXNlZFByb3ZpZGVyPFQ+IGV4dGVuZHMgQ2xhc3NQcm92aWRlcjxUPiB7XHJcbiAgICBwcm92aWRlOiBJbmplY3Rpb25Ub2tlbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUJhc2VkUHJvdmlkZXI8VD4gZXh0ZW5kcyBWYWx1ZVByb3ZpZGVyPFQ+IHtcclxuICAgIHByb3ZpZGU6IEluamVjdGlvblRva2VuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlCYXNlZFByb3ZpZGVyPFQ+IGV4dGVuZHMgRmFjdG9yeVByb3ZpZGVyPFQ+IHtcclxuICAgIHByb3ZpZGU6IEluamVjdGlvblRva2VuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuQmFzZWRQcm92aWRlcjxUPiBleHRlbmRzIFRva2VuUHJvdmlkZXI8VD4ge1xyXG4gICAgcHJvdmlkZTogSW5qZWN0aW9uVG9rZW47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFN5cmluZ2VQcm92aWRlcjxUPiA9IFR5cGU8VD4gfCBDbGFzc1Byb3ZpZGVyPFQ+IHwgVmFsdWVQcm92aWRlcjxUPiB8IEZhY3RvcnlQcm92aWRlcjxUPiB8IFRva2VuUHJvdmlkZXI8VD47XHJcblxyXG5leHBvcnQgdHlwZSBQcm92aWRlcjxUPiA9IFR5cGU8VD4gfCBDbGFzc0Jhc2VkUHJvdmlkZXI8VD4gfCBWYWx1ZUJhc2VkUHJvdmlkZXI8VD4gfCBGYWN0b3J5QmFzZWRQcm92aWRlcjxUPiB8IFRva2VuQmFzZWRQcm92aWRlcjxUPjtcclxuXHJcbi8vIC0tLSBJbmplY3Rpb24gdG9rZW5zIC0tLVxyXG5cclxuZXhwb3J0IGNvbnN0IEZJWFRVUkU6IEluamVjdGlvblRva2VuPElGaXh0dXJlPiA9IFN5bWJvbC5mb3IoXCJmaXh0dXJlLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEpPQjogSW5qZWN0aW9uVG9rZW48SUpvYj4gPSBTeW1ib2wuZm9yKFwiam9iLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEVYUFJFU1M6IEluamVjdGlvblRva2VuPEV4cHJlc3M+ID0gU3ltYm9sLmZvcihcImV4cHJlc3MtdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgSFRUUF9TRVJWRVI6IEluamVjdGlvblRva2VuPFNlcnZlcj4gPSBTeW1ib2wuZm9yKFwiaHR0cC1zZXJ2ZXItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgU09DS0VUX1NFUlZFUjogSW5qZWN0aW9uVG9rZW48U29ja2V0U2VydmVyPiA9IFN5bWJvbC5mb3IoXCJzb2NrZXQtc2VydmVyLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBBUkFNRVRFUjogSW5qZWN0aW9uVG9rZW48UGFyYW1ldGVyPiA9IFN5bWJvbC5mb3IoXCJwYXJhbWV0ZXItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgRElfQ09OVEFJTkVSOiBJbmplY3Rpb25Ub2tlbjxJRGVwZW5kZW5jeUNvbnRhaW5lcj4gPSBTeW1ib2wuZm9yKFwiZGktY29udGFpbmVyLXRva2VuXCIpO1xyXG5cclxuLy8gLS0tIEludGVyZmFjZXMgYW5kIHV0aWxpdHkgY2xhc3NlcyAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZpeHR1cmUge1xyXG4gICAgbG9hZCgpOiBQcm9taXNlPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFNjaGVtYUNvbnZlcnRlciA9IChcclxuICAgIG1ldGE6IGFueSxcclxuICAgIG9wdGlvbnM6IGFueVxyXG4pID0+IFNjaGVtYU9iamVjdDtcclxuXHJcbmV4cG9ydCB0eXBlIFBhcmFtUmVzb2x2ZXIgPSAodmFsdWU6IHN0cmluZykgPT4gYW55O1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgbmFtZTogc3RyaW5nLCBwdWJsaWMgZGVmYXVsdFZhbHVlOiBhbnksIHB1YmxpYyByZXNvbHZlcjogUGFyYW1SZXNvbHZlciA9IG51bGwpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUpvYiB7XHJcbiAgICBwcm9jZXNzKCk6IFByb21pc2U8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSm9iVGFzayB7XHJcbiAgICBzdGFydDogKCkgPT4gdGhpcztcclxuICAgIHN0b3A6ICgpID0+IHRoaXM7XHJcbiAgICBkZXN0cm95OiAoKSA9PiB2b2lkO1xyXG4gICAgZ2V0U3RhdHVzOiAoKSA9PiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEpvYlBhcmFtcyA9IHtbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEpvYlNjaGVkdWxlUmFuZ2Uge1xyXG4gICAgbWluOiBudW1iZXI7XHJcbiAgICBtYXg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSm9iU2NoZWR1bGVUaW1lID0gc3RyaW5nIHwgbnVtYmVyIHwgSm9iU2NoZWR1bGVSYW5nZSB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmVzcyB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgY3VycmVudDogbnVtYmVyO1xyXG4gICAgbWF4OiBudW1iZXI7XHJcbiAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBlcnJvcjogc3RyaW5nO1xyXG4gICAgY2FuY2VsZWQ6IGJvb2xlYW47XHJcbiAgICBwZXJjZW50OiBudW1iZXI7XHJcbiAgICByZW1haW5pbmc6IG51bWJlcjtcclxuICAgIGNyZWF0ZVN1YlByb2dyZXNzKHByb2dyZXNzVmFsdWU6IG51bWJlciwgbWF4PzogbnVtYmVyLCBtZXNzYWdlPzogc3RyaW5nKTogUHJvbWlzZTxJUHJvZ3Jlc3M+O1xyXG4gICAgc2V0TWF4KG1heDogbnVtYmVyKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgc2V0TWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XHJcbiAgICBzZXRFcnJvcihlcnJvcjogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgYWR2YW5jZSh2YWx1ZT86IG51bWJlcik6IFByb21pc2U8YW55PjtcclxuICAgIGNhbmNlbCgpOiBQcm9taXNlPGFueT47XHJcbiAgICBzYXZlKCk6IFByb21pc2U8YW55PjtcclxuICAgIGxvYWQoKTogUHJvbWlzZTx0aGlzPjtcclxuICAgIHRvSlNPTigpOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0Q3JvcEluZm8ge1xyXG4gICAgeDogbnVtYmVyO1xyXG4gICAgeTogbnVtYmVyO1xyXG4gICAgdzogbnVtYmVyO1xyXG4gICAgaDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldE1ldGEge1xyXG4gICAgZmlsZW5hbWU/OiBzdHJpbmc7XHJcbiAgICBleHRlbnNpb24/OiBzdHJpbmc7XHJcbiAgICBjbGFzc2lmaWVkPzogYm9vbGVhbjtcclxuICAgIGRvd25sb2FkQ291bnQ/OiBudW1iZXI7XHJcbiAgICBmaXJzdERvd25sb2FkPzogRGF0ZTtcclxuICAgIGxhc3REb3dubG9hZD86IERhdGU7XHJcbiAgICBjcm9wPzogSUFzc2V0Q3JvcEluZm87XHJcbiAgICBjcm9wQmVmb3JlPzogSUFzc2V0Q3JvcEluZm87XHJcbiAgICBjcm9wQWZ0ZXI/OiBJQXNzZXRDcm9wSW5mbztcclxuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0SW1hZ2VQYXJhbXMge1xyXG4gICAgcm90YXRpb24/OiBudW1iZXI7XHJcbiAgICBjYW52YXNTY2FsZVg/OiBudW1iZXI7XHJcbiAgICBjYW52YXNTY2FsZVk/OiBudW1iZXI7XHJcbiAgICBzY2FsZVg/OiBudW1iZXI7XHJcbiAgICBzY2FsZVk/OiBudW1iZXI7XHJcbiAgICBsYXp5PzogYm9vbGVhbjtcclxuICAgIGNyb3A/OiBzdHJpbmcgfCBib29sZWFuO1xyXG4gICAgY3JvcEJlZm9yZT86IHN0cmluZyB8IElBc3NldENyb3BJbmZvO1xyXG4gICAgY3JvcEFmdGVyPzogc3RyaW5nIHwgSUFzc2V0Q3JvcEluZm87XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0IHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xyXG4gICAgY29udGVudFR5cGU6IHN0cmluZztcclxuICAgIG1ldGFkYXRhOiBJQXNzZXRNZXRhO1xyXG4gICAgc3RyZWFtOiBSZWFkYWJsZSxcclxuICAgIHVubGluaygpOiBQcm9taXNlPHN0cmluZz47XHJcbiAgICBnZXRCdWZmZXIoKTogUHJvbWlzZTxCdWZmZXI+O1xyXG4gICAgZG93bmxvYWQobWV0YWRhdGE/OiBJQXNzZXRNZXRhKTogUHJvbWlzZTxSZWFkYWJsZT47XHJcbiAgICBkb3dubG9hZEltYWdlKHBhcmFtcz86IElBc3NldEltYWdlUGFyYW1zLCBtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPjtcclxuICAgIGdldEltYWdlKHBhcmFtcz86IElBc3NldEltYWdlUGFyYW1zKTogUHJvbWlzZTxSZWFkYWJsZT47XHJcbiAgICBzYXZlKCk6IFByb21pc2U8YW55PjtcclxuICAgIGxvYWQoKTogUHJvbWlzZTx0aGlzPjtcclxuICAgIHRvSlNPTigpOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhenlBc3NldCB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgam9iTmFtZTogc3RyaW5nO1xyXG4gICAgam9iUGFyYW1zOiBhbnk7XHJcbiAgICBqb2JRdWU6IHN0cmluZztcclxuICAgIHByb2dyZXNzSWQ/OiBzdHJpbmc7XHJcbiAgICBhc3NldElkPzogc3RyaW5nO1xyXG4gICAgdW5saW5rKCk6IFByb21pc2U8c3RyaW5nPjtcclxuICAgIHN0YXJ0V29ya2luZygpOiB2b2lkO1xyXG4gICAgbG9hZEFzc2V0KCk6IFByb21pc2U8SUFzc2V0PjtcclxuICAgIHdyaXRlQXNzZXQoYXNzZXQ6IElBc3NldCk6IFByb21pc2U8SUFzc2V0PjtcclxuICAgIHNhdmUoKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgbG9hZCgpOiBQcm9taXNlPHRoaXM+O1xyXG4gICAgdG9KU09OKCk6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVXNlciB7XHJcbiAgICBfaWQ/OiBzdHJpbmc7XHJcbiAgICBpZD86IHN0cmluZztcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICBwYXNzd29yZDogc3RyaW5nO1xyXG4gICAgcm9sZXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDbGllbnRTb2NrZXQgZXh0ZW5kcyBTb2NrZXQge1xyXG4gICAgaW50ZXJlc3RlZFByb2dyZXNzZXM6IFNldDxzdHJpbmc+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSZXF1ZXN0QmFzZTxUPiBleHRlbmRzIFJlcXVlc3Qge1xyXG4gICAgaWQ/OiBzdHJpbmc7XHJcbiAgICBzdGFydGVkPzogTW9tZW50O1xyXG4gICAgZW5kZWQ/OiBNb21lbnQ7XHJcbiAgICBjb250YWluZXI/OiBEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmc7XHJcbiAgICB1c2VyPzogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdCBleHRlbmRzIElSZXF1ZXN0QmFzZTxJVXNlcj4ge1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2FsbGVyeUltYWdlIHtcclxuICAgIGZvbGRlcjogc3RyaW5nO1xyXG4gICAgdGh1bWI6IHN0cmluZztcclxuICAgIGJpZzogc3RyaW5nO1xyXG4gICAgc2VydmUoaWQ6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPlxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHYWxsZXJ5U2l6ZSB7XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGhlaWdodD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2FsbGVyeUltYWdlSGFuZGxlciB7XHJcbiAgICBnZXRPcmlnaW5hbCgpOiBQcm9taXNlPEJ1ZmZlcj47XHJcbiAgICB3cml0ZVJlc3VsdChpc1RodW1iOiBib29sZWFuLCBidWZmZXI6IEJ1ZmZlcik6IFByb21pc2U8YW55PjtcclxuICAgIGhhc1Jlc3VsdChpc1RodW1iOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPjtcclxuICAgIHNlcnZlUmVzdWx0KGlzVGh1bWI6IGJvb2xlYW4pOiBQcm9taXNlPEJ1ZmZlcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9ucyB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25NZXRhIHtcclxuICAgIHRvdGFsOiBudW1iZXI7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25CYXNlPFQ+IHtcclxuICAgIGNvdW50OiBudW1iZXJcclxuICAgIGl0ZW1zOiBUW107XHJcbiAgICBtZXRhPzogSVBhZ2luYXRpb25NZXRhO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uIGV4dGVuZHMgSVBhZ2luYXRpb25CYXNlPGFueT4ge1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvblBhcmFtcyB7XHJcbiAgICBwYWdlOiBudW1iZXI7XHJcbiAgICBsaW1pdDogbnVtYmVyO1xyXG4gICAgc29ydD86IHN0cmluZztcclxuICAgIHBvcHVsYXRlPzogc3RyaW5nW107XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEZvbnRGb3JtYXQgPSBcIm9wZW50eXBlXCIgfCBcInRydWV0eXBlXCIgfCBcIndvZmZcIiB8IFwid29mZjJcIiB8IFwiZGF0YWZvcmtcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZpbGVUeXBlIHtcclxuICAgIGV4dDogc3RyaW5nO1xyXG4gICAgbWltZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElCYWNrZW5kQ29uZmlnIHtcclxuICAgIHJvb3RGb2xkZXI/OiBzdHJpbmc7XHJcbiAgICByb3V0ZVByZWZpeD86IHN0cmluZztcclxuICAgIHBhcmFtcz86IFBhcmFtZXRlcltdO1xyXG4gICAgZml4dHVyZXM/OiBUeXBlPElGaXh0dXJlPltdO1xyXG4gICAgam9icz86IFR5cGU8SUpvYj5bXTtcclxuICAgIHJlc3RPcHRpb25zPzogUm91dGluZ0NvbnRyb2xsZXJzT3B0aW9ucztcclxuICAgIHNvY2tldE9wdGlvbnM/OiBTb2NrZXRDb250cm9sbGVyc09wdGlvbnM7XHJcbiAgICBjdXN0b21WYWxpZGF0aW9uPzogU2NoZW1hQ29udmVydGVyIHwgU2NoZW1hT2JqZWN0O1xyXG59XHJcbiJdfQ==
@@ -335,4 +335,4 @@ export function setupBackend(config, providers, parent) {
335
335
  return diContainer;
336
336
  });
337
337
  }
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxTQUFTLEVBQXNCLE1BQU0sVUFBVSxDQUFDO0FBQ3hELE9BQU8sRUFBUyxTQUFTLEVBQUUsWUFBWSxJQUFJLG1CQUFtQixFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDN0csT0FBTyxFQUFDLFlBQVksSUFBSSxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQU1ILFNBQVMsRUFFVCxPQUFPLEVBQ1AsR0FBRyxFQUNILE9BQU8sRUFDUCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFNBQVMsRUFDVCxZQUFZLEVBRWYsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFD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QUMsRUFBRTtZQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDeEMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN0RCxNQUFNLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDckQ7UUFFRCxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWxELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7am9pbn0gZnJvbSBcInBhdGhcIjtcclxuaW1wb3J0IHtqc29ufSBmcm9tIFwiYm9keS1wYXJzZXJcIjtcclxuaW1wb3J0IHt2ZXJpZnl9IGZyb20gXCJqc29ud2VidG9rZW5cIjtcclxuaW1wb3J0IHtjb250YWluZXIsIERlcGVuZGVuY3lDb250YWluZXJ9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge0FjdGlvbiwgSHR0cEVycm9yLCB1c2VDb250YWluZXIgYXMgdXNlUm91dGluZ0NvbnRhaW5lciwgdXNlRXhwcmVzc1NlcnZlcn0gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHt1c2VDb250YWluZXIgYXMgdXNlU29ja2V0Q29udGFpbmVyLCB1c2VTb2NrZXRTZXJ2ZXJ9IGZyb20gXCJzb2NrZXQtY29udHJvbGxlcnNcIjtcclxuXHJcbmltcG9ydCB7Z2V0QXBpRG9jc30gZnJvbSBcIi4vcmVzdC1vcGVuYXBpXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgSUJhY2tlbmRDb25maWcsXHJcbiAgICBJRGVwZW5kZW5jeUNvbnRhaW5lcixcclxuICAgIElQYWdpbmF0aW9uUGFyYW1zLFxyXG4gICAgSVJlcXVlc3QsXHJcbiAgICBJVXNlcixcclxuICAgIFBhcmFtZXRlcixcclxuICAgIFByb3ZpZGVyLFxyXG4gICAgRklYVFVSRSxcclxuICAgIEpPQixcclxuICAgIEVYUFJFU1MsXHJcbiAgICBIVFRQX1NFUlZFUixcclxuICAgIFNPQ0tFVF9TRVJWRVIsXHJcbiAgICBQQVJBTUVURVIsXHJcbiAgICBESV9DT05UQUlORVIsXHJcbiAgICBUeXBlXHJcbn0gZnJvbSBcIi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5pbXBvcnQge0Fzc2V0UHJvY2Vzc29yfSBmcm9tIFwiLi9zZXJ2aWNlcy9hc3NldC1wcm9jZXNzb3JcIjtcclxuaW1wb3J0IHtBc3NldFJlc29sdmVyfSBmcm9tIFwiLi9zZXJ2aWNlcy9hc3NldC1yZXNvbHZlclwiO1xyXG5pbXBvcnQge0Fzc2V0c30gZnJvbSBcIi4vc2VydmljZXMvYXNzZXRzXCI7XHJcbmltcG9ydCB7QmFja2VuZFByb3ZpZGVyfSBmcm9tIFwiLi9zZXJ2aWNlcy9iYWNrZW5kLXByb3ZpZGVyXCI7XHJcbmltcG9ydCB7Q2FjaGV9IGZyb20gXCIuL3NlcnZpY2VzL2NhY2hlXCI7XHJcbmltcG9ydCB7Q2FjaGVQcm9jZXNzb3J9IGZyb20gXCIuL3NlcnZpY2VzL2NhY2hlLXByb2Nlc3NvclwiO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHtFbmRwb2ludFByb3ZpZGVyfSBmcm9tIFwiLi9zZXJ2aWNlcy9lbmRwb2ludC1wcm92aWRlclwiO1xyXG5pbXBvcnQge0ZpeHR1cmVzfSBmcm9tIFwiLi9zZXJ2aWNlcy9maXh0dXJlc1wiO1xyXG5pbXBvcnQge0dhbGxlcnl9IGZyb20gXCIuL3NlcnZpY2VzL2dhbGxlcnlcIjtcclxuaW1wb3J0IHtHYWxsZXJ5Q2FjaGV9IGZyb20gXCIuL3NlcnZpY2VzL2dhbGxlcnktY2FjaGVcIjtcclxuaW1wb3J0IHtJZEdlbmVyYXRvcn0gZnJvbSBcIi4vc2VydmljZXMvaWQtZ2VuZXJhdG9yXCI7XHJcbmltcG9ydCB7Sm9iTWFuYWdlcn0gZnJvbSBcIi4vc2VydmljZXMvam9iLW1hbmFnZXJcIjtcclxuaW1wb3J0IHtMYXp5QXNzZXRzfSBmcm9tIFwiLi9zZXJ2aWNlcy9sYXp5LWFzc2V0c1wiO1xyXG5pbXBvcnQge01haWxTZW5kZXJ9IGZyb20gXCIuL3NlcnZpY2VzL21haWwtc2VuZGVyXCI7XHJcbmltcG9ydCB7TWVtb3J5Q2FjaGV9IGZyb20gXCIuL3NlcnZpY2VzL21lbW9yeS1jYWNoZVwiO1xyXG5pbXBvcnQge01vbmdvQ29ubmVjdG9yfSBmcm9tIFwiLi9zZXJ2aWNlcy9tb25nby1jb25uZWN0b3JcIjtcclxuaW1wb3J0IHtQcm9ncmVzc2VzfSBmcm9tIFwiLi9zZXJ2aWNlcy9wcm9ncmVzc2VzXCI7XHJcbmltcG9ydCB7VGVtcGxhdGVSZW5kZXJlcn0gZnJvbSBcIi4vc2VydmljZXMvdGVtcGxhdGUtcmVuZGVyZXJcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGlvblByb3ZpZGVyfSBmcm9tIFwiLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1wcm92aWRlclwiO1xyXG5pbXBvcnQge1RyYW5zbGF0b3J9IGZyb20gXCIuL3NlcnZpY2VzL3RyYW5zbGF0b3JcIjtcclxuaW1wb3J0IHtVc2VyTWFuYWdlcn0gZnJvbSBcIi4vc2VydmljZXMvdXNlci1tYW5hZ2VyXCI7XHJcblxyXG5pbXBvcnQge0Fzc2V0c0NvbnRyb2xsZXJ9IGZyb20gXCIuL3Jlc3QtY29udHJvbGxlcnMvYXNzZXRzLmNvbnRyb2xsZXJcIjtcclxuaW1wb3J0IHtBdXRoQ29udHJvbGxlcn0gZnJvbSBcIi4vcmVzdC1jb250cm9sbGVycy9hdXRoLmNvbnRyb2xsZXJcIjtcclxuaW1wb3J0IHtHYWxsZXJ5Q29udHJvbGxlcn0gZnJvbSBcIi4vcmVzdC1jb250cm9sbGVycy9nYWxsZXJ5LmNvbnRyb2xsZXJcIjtcclxuaW1wb3J0IHtQcm9ncmVzc2VzQ29udHJvbGxlcn0gZnJvbSBcIi4vcmVzdC1jb250cm9sbGVycy9wcm9ncmVzc2VzLmNvbnRyb2xsZXJcIjtcclxuXHJcbmltcG9ydCB7RXJyb3JIYW5kbGVyTWlkZGxld2FyZX0gZnJvbSBcIi4vcmVzdC1taWRkbGV3YXJlcy9lcnJvci1oYW5kbGVyLm1pZGRsZXdhcmVcIjtcclxuaW1wb3J0IHtDb250YWluZXJNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL2NvbnRhaW5lci5taWRkbGV3YXJlXCI7XHJcbmltcG9ydCB7TGFuZ3VhZ2VNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL2xhbmd1YWdlLm1pZGRsZXdhcmVcIjtcclxuaW1wb3J0IHtSZXF1ZXN0RW5kZWRNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL3JlcXVlc3QtZW5kZWQubWlkZGxld2FyZVwiO1xyXG5pbXBvcnQge1JlcXVlc3RTdGFydGVkTWlkZGxld2FyZX0gZnJvbSBcIi4vcmVzdC1taWRkbGV3YXJlcy9yZXF1ZXN0LXN0YXJ0ZWQubWlkZGxld2FyZVwiO1xyXG5cclxuaW1wb3J0IHtQcm9ncmVzc0NvbnRyb2xsZXJ9IGZyb20gXCIuL3NvY2tldC1jb250cm9sbGVycy9wcm9ncmVzcy5jb250cm9sbGVyXCI7XHJcblxyXG5pbXBvcnQge0NvbXByZXNzaW9uTWlkZGxld2FyZX0gZnJvbSBcIi4vc29ja2V0LW1pZGRsZXdhcmVzL2NvbXByZXNzaW9uLm1pZGRsZXdhcmVcIjtcclxuaW1wb3J0IHtkaUNvbnRhaW5lcnMsIGlzRnVuY3Rpb24sIGlzU3RyaW5nLCBpc1R5cGUsIHZhbHVlVG9Qcm9taXNlfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5pbXBvcnQge0RpQ29udGFpbmVyfSBmcm9tIFwiLi91dGlsaXRpZXMvZGktY29udGFpbmVyXCI7XHJcbmltcG9ydCB7c2V0dXBTdGF0aWN9IGZyb20gXCIuL3N0YXRpY1wiO1xyXG5cclxuZXhwb3J0IHtcclxuICAgIEZpbHRlclByZWRpY2F0ZSxcclxuICAgIGlzTnVsbE9yVW5kZWZpbmVkLFxyXG4gICAgaXNEZWZpbmVkLFxyXG4gICAgZ2V0VHlwZSxcclxuICAgIGlzT2JqZWN0LFxyXG4gICAgaXNBcnJheSxcclxuICAgIGlzQm9vbGVhbixcclxuICAgIGlzRGF0ZSxcclxuICAgIGlzUHJpbWl0aXZlLFxyXG4gICAgaXNTdHJpbmcsXHJcbiAgICBpc0Z1bmN0aW9uLFxyXG4gICAgaXNDb25zdHJ1Y3RvcixcclxuICAgIGlzVHlwZSxcclxuICAgIGlzSW50ZXJmYWNlLFxyXG4gICAgdWNGaXJzdCxcclxuICAgIGxjRmlyc3QsXHJcbiAgICBmaXJzdEl0ZW0sXHJcbiAgICBsYXN0SXRlbSxcclxuICAgIGdldFZhbHVlLFxyXG4gICAgZ3JvdXBCeSxcclxuICAgIGNvbnZlcnRWYWx1ZSxcclxuICAgIGluamVjdFNlcnZpY2VzLFxyXG4gICAgcGFnaW5hdGUsXHJcbiAgICBsb29rdXBQaXBlbGluZXMsXHJcbiAgICBoeWRyYXRlUG9wdWxhdGVkLFxyXG4gICAgcGFnaW5hdGVBZ2dyZWdhdGlvbnMsXHJcbiAgICBidWZmZXJUb1N0cmVhbSxcclxuICAgIHN0cmVhbVRvQnVmZmVyLFxyXG4gICAgY29weVN0cmVhbSxcclxuICAgIG1rZGlyUmVjdXJzaXZlLFxyXG4gICAgZGVsZXRlRmlsZSxcclxuICAgIHJlYWRGaWxlLFxyXG4gICAgcmVhZEFuZERlbGV0ZUZpbGUsXHJcbiAgICB3cml0ZUZpbGUsXHJcbiAgICB2YWx1ZVRvUHJvbWlzZSxcclxuICAgIHByb21pc2VUaW1lb3V0LFxyXG4gICAgZ2V0Q29uc3RydWN0b3JOYW1lLFxyXG4gICAgZ2V0RnVuY3Rpb25QYXJhbXMsXHJcbiAgICBwcm94eUZ1bmN0aW9uLFxyXG4gICAgcHJveHlGdW5jdGlvbnMsXHJcbiAgICBSZXNvbHZlRW50aXR5LFxyXG4gICAgZ2V0RmlsZU5hbWUsXHJcbiAgICBnZXRFeHRlbnNpb24sXHJcbiAgICBpZFRvU3RyaW5nLFxyXG4gICAgY3JlYXRlVHJhbnNmb3JtZXIsXHJcbiAgICBicm9hZGNhc3QsXHJcbiAgICByYW5kLFxyXG4gICAgcmFuZG9tLFxyXG4gICAgbXVsdGlTdWJzY3JpcHRpb24sXHJcbiAgICBvYnNlcnZhYmxlRnJvbUZ1bmN0aW9uLFxyXG4gICAgcGFkTGVmdCxcclxuICAgIHBhZFJpZ2h0LFxyXG4gICAgZGVsZXRlRnJvbUJ1Y2tldCxcclxuICAgIGZpbHRlcixcclxuICAgIGNvcHksXHJcbiAgICBhc3NpZ24sXHJcbiAgICBtZDUsXHJcbiAgICBydW5Db21tYW5kXHJcbn0gZnJvbSBcIi4vdXRpbHNcIjtcclxuXHJcbmV4cG9ydCB7SXNGaWxlLCBJc09iamVjdElkfSBmcm9tIFwiLi92YWxpZGF0b3JzXCI7XHJcblxyXG5leHBvcnQge1xyXG4gICAgRklYVFVSRSxcclxuICAgIEpPQixcclxuICAgIEVYUFJFU1MsXHJcbiAgICBIVFRQX1NFUlZFUixcclxuICAgIFNPQ0tFVF9TRVJWRVIsXHJcbiAgICBQQVJBTUVURVIsXHJcbiAgICBESV9DT05UQUlORVIsXHJcbiAgICBUeXBlLFxyXG4gICAgRmFjdG9yeVByb3ZpZGVyLFxyXG4gICAgSURlcGVuZGVuY3lDb250YWluZXIsXHJcbiAgICBDbGFzc0Jhc2VkUHJvdmlkZXIsXHJcbiAgICBWYWx1ZUJhc2VkUHJvdmlkZXIsXHJcbiAgICBGYWN0b3J5QmFzZWRQcm92aWRlcixcclxuICAgIFRva2VuQmFzZWRQcm92aWRlcixcclxuICAgIFN5cmluZ2VQcm92aWRlcixcclxuICAgIFByb3ZpZGVyLFxyXG4gICAgSUZpeHR1cmUsXHJcbiAgICBTY2hlbWFDb252ZXJ0ZXIsXHJcbiAgICBQYXJhbVJlc29sdmVyLFxyXG4gICAgUGFyYW1ldGVyLFxyXG4gICAgSUpvYixcclxuICAgIElKb2JUYXNrLFxyXG4gICAgSm9iUGFyYW1zLFxyXG4gICAgSm9iU2NoZWR1bGVSYW5nZSxcclxuICAgIEpvYlNjaGVkdWxlVGltZSxcclxuICAgIElQcm9ncmVzcyxcclxuICAgIElBc3NldENyb3BJbmZvLFxyXG4gICAgSUFzc2V0TWV0YSxcclxuICAgIElBc3NldEltYWdlUGFyYW1zLFxyXG4gICAgSUFzc2V0LFxyXG4gICAgSUxhenlBc3NldCxcclxuICAgIElVc2VyLFxyXG4gICAgSUNsaWVudFNvY2tldCxcclxuICAgIElSZXF1ZXN0QmFzZSxcclxuICAgIElSZXF1ZXN0LFxyXG4gICAgSUdhbGxlcnlJbWFnZSxcclxuICAgIElHYWxsZXJ5U2l6ZSxcclxuICAgIElHYWxsZXJ5SW1hZ2VIYW5kbGVyLFxyXG4gICAgSVRyYW5zbGF0aW9ucyxcclxuICAgIElQYWdpbmF0aW9uTWV0YSxcclxuICAgIElQYWdpbmF0aW9uQmFzZSxcclxuICAgIElQYWdpbmF0aW9uLFxyXG4gICAgSVBhZ2luYXRpb25QYXJhbXMsXHJcbiAgICBGb250Rm9ybWF0LFxyXG4gICAgSUJhY2tlbmRDb25maWdcclxufSBmcm9tIFwiLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmV4cG9ydCB7QXNzZXRQcm9jZXNzb3J9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXByb2Nlc3NvclwiO1xyXG5leHBvcnQge0Fzc2V0UmVzb2x2ZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXJlc29sdmVyXCI7XHJcbmV4cG9ydCB7QXNzZXRzfSBmcm9tIFwiLi9zZXJ2aWNlcy9hc3NldHNcIjtcclxuZXhwb3J0IHtCYWNrZW5kUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2JhY2tlbmQtcHJvdmlkZXJcIjtcclxuZXhwb3J0IHtDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGVcIjtcclxuZXhwb3J0IHtDYWNoZVByb2Nlc3Nvcn0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGUtcHJvY2Vzc29yXCI7XHJcbmV4cG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vc2VydmljZXMvY29uZmlndXJhdGlvblwiO1xyXG5leHBvcnQge0VuZHBvaW50UHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2VuZHBvaW50LXByb3ZpZGVyXCI7XHJcbmV4cG9ydCB7Rml4dHVyZXN9IGZyb20gXCIuL3NlcnZpY2VzL2ZpeHR1cmVzXCI7XHJcbmV4cG9ydCB7R2FsbGVyeX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeVwiO1xyXG5leHBvcnQge0dhbGxlcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeS1jYWNoZVwiO1xyXG5leHBvcnQge0lkR2VuZXJhdG9yfSBmcm9tIFwiLi9zZXJ2aWNlcy9pZC1nZW5lcmF0b3JcIjtcclxuZXhwb3J0IHtKb2JNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy9qb2ItbWFuYWdlclwiO1xyXG5leHBvcnQge0xhenlBc3NldHN9IGZyb20gXCIuL3NlcnZpY2VzL2xhenktYXNzZXRzXCI7XHJcbmV4cG9ydCB7TWFpbFNlbmRlcn0gZnJvbSBcIi4vc2VydmljZXMvbWFpbC1zZW5kZXJcIjtcclxuZXhwb3J0IHtNZW1vcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvbWVtb3J5LWNhY2hlXCI7XHJcbmV4cG9ydCB7TW9uZ29Db25uZWN0b3J9IGZyb20gXCIuL3NlcnZpY2VzL21vbmdvLWNvbm5lY3RvclwiO1xyXG5leHBvcnQge1Byb2dyZXNzZXN9IGZyb20gXCIuL3NlcnZpY2VzL3Byb2dyZXNzZXNcIjtcclxuZXhwb3J0IHtUZW1wbGF0ZVJlbmRlcmVyfSBmcm9tIFwiLi9zZXJ2aWNlcy90ZW1wbGF0ZS1yZW5kZXJlclwiO1xyXG5leHBvcnQge1RyYW5zbGF0aW9uUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXByb3ZpZGVyXCI7XHJcbmV4cG9ydCB7VHJhbnNsYXRvcn0gZnJvbSBcIi4vc2VydmljZXMvdHJhbnNsYXRvclwiO1xyXG5leHBvcnQge1VzZXJNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy91c2VyLW1hbmFnZXJcIjtcclxuXHJcbmV4cG9ydCB7QXV0aENvbnRyb2xsZXJ9IGZyb20gXCIuL3Jlc3QtY29udHJvbGxlcnMvYXV0aC5jb250cm9sbGVyXCI7XHJcbmV4cG9ydCB7R2FsbGVyeUNvbnRyb2xsZXJ9IGZyb20gXCIuL3Jlc3QtY29udHJvbGxlcnMvZ2FsbGVyeS5jb250cm9sbGVyXCI7XHJcblxyXG5leHBvcnQge0Vycm9ySGFuZGxlck1pZGRsZXdhcmV9IGZyb20gXCIuL3Jlc3QtbWlkZGxld2FyZXMvZXJyb3ItaGFuZGxlci5taWRkbGV3YXJlXCI7XHJcbmV4cG9ydCB7TGFuZ3VhZ2VNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL2xhbmd1YWdlLm1pZGRsZXdhcmVcIjtcclxuXHJcbmV4cG9ydCB7TGF6eUFzc2V0R2VuZXJhdG9yfSBmcm9tIFwiLi91dGlsaXRpZXMvbGF6eS1hc3NldC1nZW5lcmF0b3JcIjtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVVc2VyKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lciwgcmVxOiBJUmVxdWVzdCk6IFByb21pc2U8SVVzZXI+IHtcclxuICAgIGlmIChyZXEudXNlcikgcmV0dXJuIHJlcS51c2VyO1xyXG4gICAgY29uc3QgYXV0aCA9IHJlcS5oZWFkZXIoXCJBdXRob3JpemF0aW9uXCIpIHx8IFwiXCI7XHJcbiAgICBsZXQgcGF5bG9hZCA9IG51bGw7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGNvbnRhaW5lci5yZXNvbHZlKENvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIHBheWxvYWQgPSB2ZXJpZnkoYXV0aC5zcGxpdChcIiBcIilbMV0sIGNvbmZpZy5yZXNvbHZlKFwiand0U2VjcmV0XCIpKSBhcyBhbnk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEh0dHBFcnJvcig0MDEsIGBBdXRoZW50aWNhdGlvbiBmYWlsZWQuICgke2UubWVzc2FnZX0pYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXBheWxvYWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMSwgYEF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKE1heWJlIGludmFsaWQgdG9rZW4pYCk7XHJcbiAgICB9XHJcbiAgICByZXEudXNlciA9IGF3YWl0IGNvbnRhaW5lci5yZXNvbHZlKFVzZXJNYW5hZ2VyKS5nZXRCeUlkKHBheWxvYWQuaWQpO1xyXG4gICAgcmV0dXJuIHJlcS51c2VyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VydmljZXMoKTogSURlcGVuZGVuY3lDb250YWluZXIge1xyXG4gICAgLy8gTGlzdCBvZiBwYXJhbWV0ZXJzXHJcbiAgICBjb25zdCBwYXJhbXMgPSBbXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInRlbXBsYXRlc0RpclwiLCBqb2luKF9fZGlybmFtZSwgXCJ0ZW1wbGF0ZXNcIikpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJnYWxsZXJ5RGlyXCIsIGpvaW4oX19kaXJuYW1lLCBcImdhbGxlcnlcIikpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJjYWNoZURpclwiLCBqb2luKF9fZGlybmFtZSwgXCJjYWNoZVwiKSksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcImRlZmF1bHRMYW5ndWFnZVwiLCBcImVuXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwSG9zdFwiLCBcInNtdHAuc2VuZGdyaWQubmV0XCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwUG9ydFwiLCA1ODcpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwVXNlclwiLCBcImFwaWtleVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwic210cFBhc3N3b3JkXCIsIFwiXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtYWlsU2VuZGVyQWRkcmVzc1wiLCBcImluZm9Ac3RlbXkuaHVcIiksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInRyYW5zbGF0aW9uc1RlbXBsYXRlXCIsIFwiaHR0cHM6Ly90cmFuc2xhdGlvbi5zZXJ2aWNlL1tsYW5nXVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiand0U2VjcmV0XCIsIFwiZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5XCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtb25nb1VyaVwiLCBcIlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwibW9uZ29EYlwiLCBcIm5vZGUtYmFja2VuZFwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwibW9uZ29Vc2VyXCIsIG51bGwpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtb25nb1Bhc3N3b3JkXCIsIG51bGwpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJub2RlRW52XCIsIFwiZGV2ZWxvcG1lbnRcIiksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcImFwcFBvcnRcIiwgODApLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJyZWRpc0hvc3RcIiwgXCIxMjcuMC4wLjFcIiksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInJlZGlzUG9ydFwiLCA2Mzc5KSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwicmVkaXNQYXNzd29yZFwiLCBcIjEyMzQ1NlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwicmVkaXNOYW1lc3BhY2VcIiwgXCJyZXNxdWVcIiksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInJlZGlzQ2x1c3RlclwiLCBcIm15bWFzdGVyXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJyZWRpc1NlbnRpbmVsc1wiLCBudWxsLCB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuc3BsaXQoXCIsIFwiKS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBpdGVtLnNwbGl0KFwiOlwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7aG9zdDogdmFsdWVzWzBdLCBwb3J0OiBOdW1iZXIodmFsdWVzWzFdKX07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJ3b3JrUXVldWVzXCIsIFtcIm1haW5cIl0pLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJpc1dvcmtlclwiLCBmYWxzZSksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcIm1haW5FbmRwb2ludFwiLCBcIlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRDaGFyc1wiLCBcIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRTZXBhcmF0b3JcIiwgXCItXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJpZFByZWZpeFwiLCBcIklELVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRQYXJ0c1wiLCBbNCwgNF0pLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJqc29uTGltaXRcIiwgXCIyNTBtYlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiY2FjaGVDb2xsZWN0aW9uXCIsIFwiY2FjaGVcIiksXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIENvbnZlcnQgcGFyYW1ldGVycyB0byBwcm92aWRlcnNcclxuICAgIGNvbnN0IHBhcmFtUHJvdmlkZXJzID0gcGFyYW1zLm1hcChwID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBQQVJBTUVURVIsXHJcbiAgICAgICAgICAgIHVzZVZhbHVlOiBwXHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gTGlzdCBvZiBzZXJ2aWNlc1xyXG4gICAgY29uc3Qgc2VydmljZXMgPSBbXHJcbiAgICAgICAgQXNzZXRQcm9jZXNzb3IsXHJcbiAgICAgICAgQXNzZXRSZXNvbHZlcixcclxuICAgICAgICBBc3NldHMsXHJcbiAgICAgICAgQmFja2VuZFByb3ZpZGVyLFxyXG4gICAgICAgIENhY2hlLFxyXG4gICAgICAgIENhY2hlUHJvY2Vzc29yLFxyXG4gICAgICAgIENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgRW5kcG9pbnRQcm92aWRlcixcclxuICAgICAgICBGaXh0dXJlcyxcclxuICAgICAgICBHYWxsZXJ5LFxyXG4gICAgICAgIEdhbGxlcnlDYWNoZSxcclxuICAgICAgICBJZEdlbmVyYXRvcixcclxuICAgICAgICBKb2JNYW5hZ2VyLFxyXG4gICAgICAgIExhenlBc3NldHMsXHJcbiAgICAgICAgTWFpbFNlbmRlcixcclxuICAgICAgICBNZW1vcnlDYWNoZSxcclxuICAgICAgICBNb25nb0Nvbm5lY3RvcixcclxuICAgICAgICBQcm9ncmVzc2VzLFxyXG4gICAgICAgIFRlbXBsYXRlUmVuZGVyZXIsXHJcbiAgICAgICAgVHJhbnNsYXRpb25Qcm92aWRlcixcclxuICAgICAgICBUcmFuc2xhdG9yLFxyXG4gICAgICAgIFVzZXJNYW5hZ2VyXHJcbiAgICBdIGFzIFR5cGU8YW55PltdO1xyXG5cclxuICAgIC8vIENyZWF0ZSBjb250YWluZXJcclxuICAgIGNvbnN0IGRpQ29udGFpbmVyID0gbmV3IERpQ29udGFpbmVyKGNvbnRhaW5lci5jcmVhdGVDaGlsZENvbnRhaW5lcigpKTtcclxuICAgIHBhcmFtUHJvdmlkZXJzLmZvckVhY2gocHJvdmlkZXIgPT4ge1xyXG4gICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHByb3ZpZGVyLnByb3ZpZGUsIHByb3ZpZGVyKTtcclxuICAgIH0pO1xyXG4gICAgc2VydmljZXMuZm9yRWFjaChzZXJ2aWNlID0+IHtcclxuICAgICAgICBpZiAoIWNvbnRhaW5lci5pc1JlZ2lzdGVyZWQoc2VydmljZSkpXHJcbiAgICAgICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHNlcnZpY2UsIHNlcnZpY2UpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGlDb250YWluZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXR1cEJhY2tlbmQoY29uZmlnOiBJQmFja2VuZENvbmZpZywgcHJvdmlkZXJzPzogUHJvdmlkZXI8YW55PltdLCBwYXJlbnQ/OiBJRGVwZW5kZW5jeUNvbnRhaW5lcik6IFByb21pc2U8SURlcGVuZGVuY3lDb250YWluZXI+IHtcclxuXHJcbiAgICBwcm92aWRlcnMgPSBBcnJheS5pc0FycmF5KHByb3ZpZGVycykgPyBwcm92aWRlcnMgOiBbXTtcclxuICAgIHBhcmVudCA9IHBhcmVudCB8fCBjcmVhdGVTZXJ2aWNlcygpO1xyXG5cclxuICAgIC8vIENyZWF0ZSBmaXh0dXJlc1xyXG4gICAgY29uc3QgZml4dHVyZVR5cGVzID0gKGNvbmZpZy5maXh0dXJlcyB8fCBbXSk7XHJcbiAgICBjb25zdCBmaXh0dXJlUHJvdmlkZXJzID0gZml4dHVyZVR5cGVzLm1hcChmaXh0dXJlID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBGSVhUVVJFLFxyXG4gICAgICAgICAgICB1c2VDbGFzczogZml4dHVyZVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBDcmVhdGUgcGFyYW1zXHJcbiAgICBjb25zdCBwYXJhbVByb3ZpZGVycyA9IChjb25maWcucGFyYW1zIHx8IFtdKS5tYXAocCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogUEFSQU1FVEVSLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogcFxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIENyZWF0ZSBqb2JzXHJcbiAgICBjb25zdCBqb2JQcm92aWRlcnMgPSAoY29uZmlnLmpvYnMgfHwgW10pLm1hcChqb2JUeXBlID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBKT0IsXHJcbiAgICAgICAgICAgIHVzZVZhbHVlOiBqb2JUeXBlXHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFNldHVwIHJlc3QgQVBJXHJcbiAgICBjb25zdCByZXN0T3B0aW9ucyA9IGNvbmZpZy5yZXN0T3B0aW9ucyB8fCB7fTtcclxuICAgIHJlc3RPcHRpb25zLmRlZmF1bHRFcnJvckhhbmRsZXIgPSBmYWxzZTtcclxuICAgIHJlc3RPcHRpb25zLmNvcnMgPSB7XHJcbiAgICAgICAgY3JlZGVudGlhbHM6IHRydWUsXHJcbiAgICAgICAgb3JpZ2luOiAob3JpZ2luLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmVzdE9wdGlvbnMucm91dGVQcmVmaXggPSBjb25maWcucm91dGVQcmVmaXggfHwgXCIvYXBpXCI7XHJcbiAgICByZXN0T3B0aW9ucy5yb3V0ZVByZWZpeCA9IHJlc3RPcHRpb25zLnJvdXRlUHJlZml4ID09IFwiL1wiID8gXCJcIiA6IHJlc3RPcHRpb25zLnJvdXRlUHJlZml4O1xyXG4gICAgcmVzdE9wdGlvbnMubWlkZGxld2FyZXMgPSBbRXJyb3JIYW5kbGVyTWlkZGxld2FyZSwgQ29udGFpbmVyTWlkZGxld2FyZSwgTGFuZ3VhZ2VNaWRkbGV3YXJlLCBSZXF1ZXN0U3RhcnRlZE1pZGRsZXdhcmUsIFJlcXVlc3RFbmRlZE1pZGRsZXdhcmVdXHJcbiAgICAgICAgLmNvbmNhdChyZXN0T3B0aW9ucy5taWRkbGV3YXJlcyBhcyBhbnkgfHwgW10pO1xyXG4gICAgcmVzdE9wdGlvbnMuY29udHJvbGxlcnMgPSBbQXNzZXRzQ29udHJvbGxlciwgQXV0aENvbnRyb2xsZXIsIEdhbGxlcnlDb250cm9sbGVyLCBQcm9ncmVzc2VzQ29udHJvbGxlcl1cclxuICAgICAgICAuY29uY2F0KHJlc3RPcHRpb25zLmNvbnRyb2xsZXJzIGFzIGFueSB8fCBbXSk7XHJcblxyXG4gICAgLy8gU2V0dXAgc29ja2V0IEFQSVxyXG4gICAgY29uc3Qgc29ja2V0T3B0aW9ucyA9IGNvbmZpZy5zb2NrZXRPcHRpb25zIHx8IHt9O1xyXG4gICAgc29ja2V0T3B0aW9ucy5taWRkbGV3YXJlcyA9IFtDb21wcmVzc2lvbk1pZGRsZXdhcmVdLmNvbmNhdChzb2NrZXRPcHRpb25zLm1pZGRsZXdhcmVzIGFzIGFueSB8fCBbXSk7XHJcbiAgICBzb2NrZXRPcHRpb25zLmNvbnRyb2xsZXJzID0gW1Byb2dyZXNzQ29udHJvbGxlcl0uY29uY2F0KHNvY2tldE9wdGlvbnMuY29udHJvbGxlcnMgYXMgYW55IHx8IFtdKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgcHJvdmlkZXJzXHJcblxyXG4gICAgY29uc3QgYWxsUHJvdmlkZXJzOiBQcm92aWRlcjxhbnk+W10gPSBbXTtcclxuXHJcbiAgICAvLyBBZGQgbXVsdGkgdG9rZW5zIHRvIHN1YiBjb250YWluZXJcclxuICAgIFtQQVJBTUVURVJdLmZvckVhY2gocHJvdmlkZSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVzID0gcGFyZW50LnJlc29sdmVBbGwocHJvdmlkZSk7XHJcbiAgICAgICAgdmFsdWVzLmZvckVhY2godXNlVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICBhbGxQcm92aWRlcnMucHVzaCh7cHJvdmlkZSwgdXNlVmFsdWV9KTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEFkZCBvdGhlciBwcm92aWRlcnNcclxuICAgIGFsbFByb3ZpZGVycy5wdXNoKFxyXG4gICAgICAgIC4uLmZpeHR1cmVUeXBlcyxcclxuICAgICAgICAuLi5maXh0dXJlUHJvdmlkZXJzLFxyXG4gICAgICAgIC4uLnBhcmFtUHJvdmlkZXJzLFxyXG4gICAgICAgIC4uLmpvYlByb3ZpZGVycyxcclxuICAgICAgICAuLi5yZXN0T3B0aW9ucy5taWRkbGV3YXJlcyBhcyBUeXBlPGFueT5bXSxcclxuICAgICAgICAuLi5yZXN0T3B0aW9ucy5jb250cm9sbGVycyBhcyBUeXBlPGFueT5bXSxcclxuICAgICAgICAuLi5zb2NrZXRPcHRpb25zLm1pZGRsZXdhcmVzIGFzIFR5cGU8YW55PltdLFxyXG4gICAgICAgIC4uLnNvY2tldE9wdGlvbnMuY29udHJvbGxlcnMgYXMgVHlwZTxhbnk+W10sXHJcbiAgICAgICAgLi4ucHJvdmlkZXJzLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogRVhQUkVTUyxcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcikuZXhwcmVzcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBIVFRQX1NFUlZFUixcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcikuc2VydmVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IFNPQ0tFVF9TRVJWRVIsXHJcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IChjb250YWluZXI6IERlcGVuZGVuY3lDb250YWluZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIucmVzb2x2ZShCYWNrZW5kUHJvdmlkZXIpLmlvO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgKVxyXG5cclxuICAgIC8vIENyZWF0ZSBESSBjb250YWluZXJcclxuXHJcbiAgICBjb25zdCBkaUNvbnRhaW5lciA9IHBhcmVudC5jcmVhdGVDaGlsZENvbnRhaW5lcigpO1xyXG5cclxuICAgIGFsbFByb3ZpZGVycy5mb3JFYWNoKHByb3ZpZGVyID0+IHtcclxuICAgICAgICBpZiAoaXNUeXBlKHByb3ZpZGVyKSkge1xyXG4gICAgICAgICAgICBkaUNvbnRhaW5lci5yZWdpc3Rlcihwcm92aWRlciwgcHJvdmlkZXIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHByb3ZpZGVyLnByb3ZpZGUsIHByb3ZpZGVyIGFzIGFueSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkaUNvbnRhaW5lci5yZWdpc3RlcihESV9DT05UQUlORVIsIHtcclxuICAgICAgICB1c2VWYWx1ZTogZGlDb250YWluZXJcclxuICAgIH0pO1xyXG5cclxuICAgIGRpQ29udGFpbmVycy5hcHBDb250YWluZXIgPSBkaUNvbnRhaW5lcnMuYXBwQ29udGFpbmVyIHx8IGRpQ29udGFpbmVyO1xyXG5cclxuICAgIC8vIEF1dGhlbnRpY2F0aW9uXHJcbiAgICByZXN0T3B0aW9ucy5hdXRob3JpemF0aW9uQ2hlY2tlciA9IGFzeW5jIChhY3Rpb246IEFjdGlvbiwgcm9sZXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHJlc29sdmVVc2VyKGRpQ29udGFpbmVyLCBhY3Rpb24ucmVxdWVzdCk7XHJcbiAgICAgICAgaWYgKCF1c2VyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDAxLCBcIkF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKFVzZXIgY2FuJ3QgYmUgZm91bmQuKVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdXNlclJvbGVzID0gQXJyYXkuaXNBcnJheSh1c2VyLnJvbGVzKSA/IHVzZXIucm9sZXMgOiBbXTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb2xlcykgJiYgcm9sZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgbGFzdEVycm9yID0gbnVsbDtcclxuICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBvZiByb2xlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocm9sZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgdmFsdWVUb1Byb21pc2Uocm9sZSh1c2VyLCBhY3Rpb24pKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RFcnJvciA9IGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHVzZXJSb2xlcy5pbmRleE9mKHJvbGUpID49IDApIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gIWxhc3RFcnJvciB8fCAoIWxhc3RFcnJvci5tZXNzYWdlICYmICFpc1N0cmluZyhsYXN0RXJyb3IpKVxyXG4gICAgICAgICAgICAgICAgPyBcIlVzZXIgZG9lc24ndCBoYXZlIGFjY2VzcyB0byB0aGlzIHJlc291cmNlXCJcclxuICAgICAgICAgICAgICAgIDogbGFzdEVycm9yLm1lc3NhZ2UgfHwgbGFzdEVycm9yO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMSwgYEF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKCR7ZXJyb3J9KWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICByZXN0T3B0aW9ucy5jdXJyZW50VXNlckNoZWNrZXIgPSBhc3luYyAoYWN0aW9uOiBBY3Rpb24pID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZVVzZXIoZGlDb250YWluZXIsIGFjdGlvbi5yZXF1ZXN0KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gRmluYWwgc2V0dXBcclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBkaUNvbnRhaW5lci5yZXNvbHZlKENvbmZpZ3VyYXRpb24pO1xyXG4gICAgY29uc3QgYnAgPSBkaUNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcik7XHJcblxyXG4gICAgaWYgKGNvbmZpZy5yZXN0T3B0aW9ucykge1xyXG4gICAgICAgIGJwLmV4cHJlc3MudXNlKGpzb24oe1xyXG4gICAgICAgICAgICBsaW1pdDogY29uZmlndXJhdGlvbi5oYXNQYXJhbShcImpzb25MaW1pdFwiKVxyXG4gICAgICAgICAgICAgICAgPyBjb25maWd1cmF0aW9uLnJlc29sdmUoXCJqc29uTGltaXRcIilcclxuICAgICAgICAgICAgICAgIDogXCIyNTBtYlwiXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHVzZVJvdXRpbmdDb250YWluZXIoZGlDb250YWluZXIpO1xyXG4gICAgICAgIHVzZUV4cHJlc3NTZXJ2ZXIoYnAuZXhwcmVzcywgcmVzdE9wdGlvbnMpO1xyXG4gICAgICAgIC8vIFNldHVwIHJlc3QgYWkgZG9jc1xyXG4gICAgICAgIGJwLmV4cHJlc3MuZ2V0KFwiL2FwaS1kb2NzXCIsIChyZXEsIHJlcykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzKDIwMCkuZW5kKGdldEFwaURvY3MoY29uZmlnLmN1c3RvbVZhbGlkYXRpb24pKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWcuc29ja2V0T3B0aW9ucykge1xyXG4gICAgICAgIHVzZVNvY2tldENvbnRhaW5lcihkaUNvbnRhaW5lcik7XHJcbiAgICAgICAgdXNlU29ja2V0U2VydmVyKGJwLmlvLCBzb2NrZXRPcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDb25uZWN0IHRvIG1vbmdvIGlmIG5lY2Vzc2FyeVxyXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaGFzUGFyYW0oXCJtb25nb1VyaVwiKSAmJiBjb25maWd1cmF0aW9uLnJlc29sdmUoXCJtb25nb1VyaVwiKSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiQ29ubmVjdGluZyB0byBNb25nb0RCLi4uXCIpO1xyXG4gICAgICAgIGNvbnN0IGNvbm5lY3RvciA9IGRpQ29udGFpbmVyLnJlc29sdmUoTW9uZ29Db25uZWN0b3IpO1xyXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rvci5jb25uZWN0KCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzZnVsbHkgY29ubmVjdGVkIHRvIE1vbmdvREIuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHNldHVwU3RhdGljKGNvbmZpZy5yb290Rm9sZGVyLCBkaUNvbnRhaW5lcik7XHJcblxyXG4gICAgcmV0dXJuIGRpQ29udGFpbmVyO1xyXG59XHJcbiJdfQ==
338
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxTQUFTLEVBQXNCLE1BQU0sVUFBVSxDQUFDO0FBQ3hELE9BQU8sRUFBUyxTQUFTLEVBQUUsWUFBWSxJQUFJLG1CQUFtQixFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDN0csT0FBTyxFQUFDLFlBQVksSUFBSSxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQU1ILFNBQVMsRUFFVCxPQUFPLEVBQ1AsR0FBRyxFQUNILE9BQU8sRUFDUCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFNBQVMsRUFDVCxZQUFZLEVBRWYsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFD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QUMsRUFBRTtZQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDeEMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN0RCxNQUFNLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDckQ7UUFFRCxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWxELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7am9pbn0gZnJvbSBcInBhdGhcIjtcclxuaW1wb3J0IHtqc29ufSBmcm9tIFwiYm9keS1wYXJzZXJcIjtcclxuaW1wb3J0IHt2ZXJpZnl9IGZyb20gXCJqc29ud2VidG9rZW5cIjtcclxuaW1wb3J0IHtjb250YWluZXIsIERlcGVuZGVuY3lDb250YWluZXJ9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge0FjdGlvbiwgSHR0cEVycm9yLCB1c2VDb250YWluZXIgYXMgdXNlUm91dGluZ0NvbnRhaW5lciwgdXNlRXhwcmVzc1NlcnZlcn0gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHt1c2VDb250YWluZXIgYXMgdXNlU29ja2V0Q29udGFpbmVyLCB1c2VTb2NrZXRTZXJ2ZXJ9IGZyb20gXCJzb2NrZXQtY29udHJvbGxlcnNcIjtcclxuXHJcbmltcG9ydCB7Z2V0QXBpRG9jc30gZnJvbSBcIi4vcmVzdC1vcGVuYXBpXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgSUJhY2tlbmRDb25maWcsXHJcbiAgICBJRGVwZW5kZW5jeUNvbnRhaW5lcixcclxuICAgIElQYWdpbmF0aW9uUGFyYW1zLFxyXG4gICAgSVJlcXVlc3QsXHJcbiAgICBJVXNlcixcclxuICAgIFBhcmFtZXRlcixcclxuICAgIFByb3ZpZGVyLFxyXG4gICAgRklYVFVSRSxcclxuICAgIEpPQixcclxuICAgIEVYUFJFU1MsXHJcbiAgICBIVFRQX1NFUlZFUixcclxuICAgIFNPQ0tFVF9TRVJWRVIsXHJcbiAgICBQQVJBTUVURVIsXHJcbiAgICBESV9DT05UQUlORVIsXHJcbiAgICBUeXBlXHJcbn0gZnJvbSBcIi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5pbXBvcnQge0Fzc2V0UHJvY2Vzc29yfSBmcm9tIFwiLi9zZXJ2aWNlcy9hc3NldC1wcm9jZXNzb3JcIjtcclxuaW1wb3J0IHtBc3NldFJlc29sdmVyfSBmcm9tIFwiLi9zZXJ2aWNlcy9hc3NldC1yZXNvbHZlclwiO1xyXG5pbXBvcnQge0Fzc2V0c30gZnJvbSBcIi4vc2VydmljZXMvYXNzZXRzXCI7XHJcbmltcG9ydCB7QmFja2VuZFByb3ZpZGVyfSBmcm9tIFwiLi9zZXJ2aWNlcy9iYWNrZW5kLXByb3ZpZGVyXCI7XHJcbmltcG9ydCB7Q2FjaGV9IGZyb20gXCIuL3NlcnZpY2VzL2NhY2hlXCI7XHJcbmltcG9ydCB7Q2FjaGVQcm9jZXNzb3J9IGZyb20gXCIuL3NlcnZpY2VzL2NhY2hlLXByb2Nlc3NvclwiO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHtFbmRwb2ludFByb3ZpZGVyfSBmcm9tIFwiLi9zZXJ2aWNlcy9lbmRwb2ludC1wcm92aWRlclwiO1xyXG5pbXBvcnQge0ZpeHR1cmVzfSBmcm9tIFwiLi9zZXJ2aWNlcy9maXh0dXJlc1wiO1xyXG5pbXBvcnQge0dhbGxlcnl9IGZyb20gXCIuL3NlcnZpY2VzL2dhbGxlcnlcIjtcclxuaW1wb3J0IHtHYWxsZXJ5Q2FjaGV9IGZyb20gXCIuL3NlcnZpY2VzL2dhbGxlcnktY2FjaGVcIjtcclxuaW1wb3J0IHtJZEdlbmVyYXRvcn0gZnJvbSBcIi4vc2VydmljZXMvaWQtZ2VuZXJhdG9yXCI7XHJcbmltcG9ydCB7Sm9iTWFuYWdlcn0gZnJvbSBcIi4vc2VydmljZXMvam9iLW1hbmFnZXJcIjtcclxuaW1wb3J0IHtMYXp5QXNzZXRzfSBmcm9tIFwiLi9zZXJ2aWNlcy9sYXp5LWFzc2V0c1wiO1xyXG5pbXBvcnQge01haWxTZW5kZXJ9IGZyb20gXCIuL3NlcnZpY2VzL21haWwtc2VuZGVyXCI7XHJcbmltcG9ydCB7TWVtb3J5Q2FjaGV9IGZyb20gXCIuL3NlcnZpY2VzL21lbW9yeS1jYWNoZVwiO1xyXG5pbXBvcnQge01vbmdvQ29ubmVjdG9yfSBmcm9tIFwiLi9zZXJ2aWNlcy9tb25nby1jb25uZWN0b3JcIjtcclxuaW1wb3J0IHtQcm9ncmVzc2VzfSBmcm9tIFwiLi9zZXJ2aWNlcy9wcm9ncmVzc2VzXCI7XHJcbmltcG9ydCB7VGVtcGxhdGVSZW5kZXJlcn0gZnJvbSBcIi4vc2VydmljZXMvdGVtcGxhdGUtcmVuZGVyZXJcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGlvblByb3ZpZGVyfSBmcm9tIFwiLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1wcm92aWRlclwiO1xyXG5pbXBvcnQge1RyYW5zbGF0b3J9IGZyb20gXCIuL3NlcnZpY2VzL3RyYW5zbGF0b3JcIjtcclxuaW1wb3J0IHtVc2VyTWFuYWdlcn0gZnJvbSBcIi4vc2VydmljZXMvdXNlci1tYW5hZ2VyXCI7XHJcblxyXG5pbXBvcnQge0Fzc2V0c0NvbnRyb2xsZXJ9IGZyb20gXCIuL3Jlc3QtY29udHJvbGxlcnMvYXNzZXRzLmNvbnRyb2xsZXJcIjtcclxuaW1wb3J0IHtBdXRoQ29udHJvbGxlcn0gZnJvbSBcIi4vcmVzdC1jb250cm9sbGVycy9hdXRoLmNvbnRyb2xsZXJcIjtcclxuaW1wb3J0IHtHYWxsZXJ5Q29udHJvbGxlcn0gZnJvbSBcIi4vcmVzdC1jb250cm9sbGVycy9nYWxsZXJ5LmNvbnRyb2xsZXJcIjtcclxuaW1wb3J0IHtQcm9ncmVzc2VzQ29udHJvbGxlcn0gZnJvbSBcIi4vcmVzdC1jb250cm9sbGVycy9wcm9ncmVzc2VzLmNvbnRyb2xsZXJcIjtcclxuXHJcbmltcG9ydCB7RXJyb3JIYW5kbGVyTWlkZGxld2FyZX0gZnJvbSBcIi4vcmVzdC1taWRkbGV3YXJlcy9lcnJvci1oYW5kbGVyLm1pZGRsZXdhcmVcIjtcclxuaW1wb3J0IHtDb250YWluZXJNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL2NvbnRhaW5lci5taWRkbGV3YXJlXCI7XHJcbmltcG9ydCB7TGFuZ3VhZ2VNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL2xhbmd1YWdlLm1pZGRsZXdhcmVcIjtcclxuaW1wb3J0IHtSZXF1ZXN0RW5kZWRNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL3JlcXVlc3QtZW5kZWQubWlkZGxld2FyZVwiO1xyXG5pbXBvcnQge1JlcXVlc3RTdGFydGVkTWlkZGxld2FyZX0gZnJvbSBcIi4vcmVzdC1taWRkbGV3YXJlcy9yZXF1ZXN0LXN0YXJ0ZWQubWlkZGxld2FyZVwiO1xyXG5cclxuaW1wb3J0IHtQcm9ncmVzc0NvbnRyb2xsZXJ9IGZyb20gXCIuL3NvY2tldC1jb250cm9sbGVycy9wcm9ncmVzcy5jb250cm9sbGVyXCI7XHJcblxyXG5pbXBvcnQge0NvbXByZXNzaW9uTWlkZGxld2FyZX0gZnJvbSBcIi4vc29ja2V0LW1pZGRsZXdhcmVzL2NvbXByZXNzaW9uLm1pZGRsZXdhcmVcIjtcclxuaW1wb3J0IHtkaUNvbnRhaW5lcnMsIGlzRnVuY3Rpb24sIGlzU3RyaW5nLCBpc1R5cGUsIHZhbHVlVG9Qcm9taXNlfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5pbXBvcnQge0RpQ29udGFpbmVyfSBmcm9tIFwiLi91dGlsaXRpZXMvZGktY29udGFpbmVyXCI7XHJcbmltcG9ydCB7c2V0dXBTdGF0aWN9IGZyb20gXCIuL3N0YXRpY1wiO1xyXG5cclxuZXhwb3J0IHtcclxuICAgIEZpbHRlclByZWRpY2F0ZSxcclxuICAgIGlzTnVsbE9yVW5kZWZpbmVkLFxyXG4gICAgaXNEZWZpbmVkLFxyXG4gICAgZ2V0VHlwZSxcclxuICAgIGlzT2JqZWN0LFxyXG4gICAgaXNBcnJheSxcclxuICAgIGlzQm9vbGVhbixcclxuICAgIGlzRGF0ZSxcclxuICAgIGlzUHJpbWl0aXZlLFxyXG4gICAgaXNTdHJpbmcsXHJcbiAgICBpc0Z1bmN0aW9uLFxyXG4gICAgaXNDb25zdHJ1Y3RvcixcclxuICAgIGlzVHlwZSxcclxuICAgIGlzSW50ZXJmYWNlLFxyXG4gICAgdWNGaXJzdCxcclxuICAgIGxjRmlyc3QsXHJcbiAgICBmaXJzdEl0ZW0sXHJcbiAgICBsYXN0SXRlbSxcclxuICAgIGdldFZhbHVlLFxyXG4gICAgZ3JvdXBCeSxcclxuICAgIGNvbnZlcnRWYWx1ZSxcclxuICAgIGluamVjdFNlcnZpY2VzLFxyXG4gICAgcGFnaW5hdGUsXHJcbiAgICBsb29rdXBQaXBlbGluZXMsXHJcbiAgICBoeWRyYXRlUG9wdWxhdGVkLFxyXG4gICAgcGFnaW5hdGVBZ2dyZWdhdGlvbnMsXHJcbiAgICBidWZmZXJUb1N0cmVhbSxcclxuICAgIHN0cmVhbVRvQnVmZmVyLFxyXG4gICAgY29weVN0cmVhbSxcclxuICAgIG1rZGlyUmVjdXJzaXZlLFxyXG4gICAgZGVsZXRlRmlsZSxcclxuICAgIHJlYWRGaWxlLFxyXG4gICAgcmVhZEFuZERlbGV0ZUZpbGUsXHJcbiAgICB3cml0ZUZpbGUsXHJcbiAgICB2YWx1ZVRvUHJvbWlzZSxcclxuICAgIHByb21pc2VUaW1lb3V0LFxyXG4gICAgZ2V0Q29uc3RydWN0b3JOYW1lLFxyXG4gICAgZ2V0RnVuY3Rpb25QYXJhbXMsXHJcbiAgICBwcm94eUZ1bmN0aW9uLFxyXG4gICAgcHJveHlGdW5jdGlvbnMsXHJcbiAgICBSZXNvbHZlRW50aXR5LFxyXG4gICAgZ2V0RmlsZU5hbWUsXHJcbiAgICBnZXRFeHRlbnNpb24sXHJcbiAgICBpZFRvU3RyaW5nLFxyXG4gICAgY3JlYXRlVHJhbnNmb3JtZXIsXHJcbiAgICBicm9hZGNhc3QsXHJcbiAgICByYW5kLFxyXG4gICAgcmFuZG9tLFxyXG4gICAgbXVsdGlTdWJzY3JpcHRpb24sXHJcbiAgICBvYnNlcnZhYmxlRnJvbUZ1bmN0aW9uLFxyXG4gICAgcGFkTGVmdCxcclxuICAgIHBhZFJpZ2h0LFxyXG4gICAgZGVsZXRlRnJvbUJ1Y2tldCxcclxuICAgIGZpbHRlcixcclxuICAgIGNvcHksXHJcbiAgICBhc3NpZ24sXHJcbiAgICBtZDUsXHJcbiAgICBydW5Db21tYW5kXHJcbn0gZnJvbSBcIi4vdXRpbHNcIjtcclxuXHJcbmV4cG9ydCB7SXNGaWxlLCBJc09iamVjdElkfSBmcm9tIFwiLi92YWxpZGF0b3JzXCI7XHJcblxyXG5leHBvcnQge1xyXG4gICAgRklYVFVSRSxcclxuICAgIEpPQixcclxuICAgIEVYUFJFU1MsXHJcbiAgICBIVFRQX1NFUlZFUixcclxuICAgIFNPQ0tFVF9TRVJWRVIsXHJcbiAgICBQQVJBTUVURVIsXHJcbiAgICBESV9DT05UQUlORVIsXHJcbiAgICBUeXBlLFxyXG4gICAgRmFjdG9yeVByb3ZpZGVyLFxyXG4gICAgSURlcGVuZGVuY3lDb250YWluZXIsXHJcbiAgICBDbGFzc0Jhc2VkUHJvdmlkZXIsXHJcbiAgICBWYWx1ZUJhc2VkUHJvdmlkZXIsXHJcbiAgICBGYWN0b3J5QmFzZWRQcm92aWRlcixcclxuICAgIFRva2VuQmFzZWRQcm92aWRlcixcclxuICAgIFN5cmluZ2VQcm92aWRlcixcclxuICAgIFByb3ZpZGVyLFxyXG4gICAgSUZpeHR1cmUsXHJcbiAgICBTY2hlbWFDb252ZXJ0ZXIsXHJcbiAgICBQYXJhbVJlc29sdmVyLFxyXG4gICAgUGFyYW1ldGVyLFxyXG4gICAgSUpvYixcclxuICAgIElKb2JUYXNrLFxyXG4gICAgSm9iUGFyYW1zLFxyXG4gICAgSm9iU2NoZWR1bGVSYW5nZSxcclxuICAgIEpvYlNjaGVkdWxlVGltZSxcclxuICAgIElQcm9ncmVzcyxcclxuICAgIElBc3NldENyb3BJbmZvLFxyXG4gICAgSUFzc2V0TWV0YSxcclxuICAgIElBc3NldEltYWdlUGFyYW1zLFxyXG4gICAgSUFzc2V0LFxyXG4gICAgSUxhenlBc3NldCxcclxuICAgIElVc2VyLFxyXG4gICAgSUNsaWVudFNvY2tldCxcclxuICAgIElSZXF1ZXN0QmFzZSxcclxuICAgIElSZXF1ZXN0LFxyXG4gICAgSUdhbGxlcnlJbWFnZSxcclxuICAgIElHYWxsZXJ5U2l6ZSxcclxuICAgIElHYWxsZXJ5SW1hZ2VIYW5kbGVyLFxyXG4gICAgSVRyYW5zbGF0aW9ucyxcclxuICAgIElQYWdpbmF0aW9uTWV0YSxcclxuICAgIElQYWdpbmF0aW9uQmFzZSxcclxuICAgIElQYWdpbmF0aW9uLFxyXG4gICAgSVBhZ2luYXRpb25QYXJhbXMsXHJcbiAgICBGb250Rm9ybWF0LFxyXG4gICAgSUZpbGVUeXBlLFxyXG4gICAgSUJhY2tlbmRDb25maWdcclxufSBmcm9tIFwiLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmV4cG9ydCB7QXNzZXRQcm9jZXNzb3J9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXByb2Nlc3NvclwiO1xyXG5leHBvcnQge0Fzc2V0UmVzb2x2ZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2Fzc2V0LXJlc29sdmVyXCI7XHJcbmV4cG9ydCB7QXNzZXRzfSBmcm9tIFwiLi9zZXJ2aWNlcy9hc3NldHNcIjtcclxuZXhwb3J0IHtCYWNrZW5kUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2JhY2tlbmQtcHJvdmlkZXJcIjtcclxuZXhwb3J0IHtDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGVcIjtcclxuZXhwb3J0IHtDYWNoZVByb2Nlc3Nvcn0gZnJvbSBcIi4vc2VydmljZXMvY2FjaGUtcHJvY2Vzc29yXCI7XHJcbmV4cG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vc2VydmljZXMvY29uZmlndXJhdGlvblwiO1xyXG5leHBvcnQge0VuZHBvaW50UHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL2VuZHBvaW50LXByb3ZpZGVyXCI7XHJcbmV4cG9ydCB7Rml4dHVyZXN9IGZyb20gXCIuL3NlcnZpY2VzL2ZpeHR1cmVzXCI7XHJcbmV4cG9ydCB7R2FsbGVyeX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeVwiO1xyXG5leHBvcnQge0dhbGxlcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvZ2FsbGVyeS1jYWNoZVwiO1xyXG5leHBvcnQge0lkR2VuZXJhdG9yfSBmcm9tIFwiLi9zZXJ2aWNlcy9pZC1nZW5lcmF0b3JcIjtcclxuZXhwb3J0IHtKb2JNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy9qb2ItbWFuYWdlclwiO1xyXG5leHBvcnQge0xhenlBc3NldHN9IGZyb20gXCIuL3NlcnZpY2VzL2xhenktYXNzZXRzXCI7XHJcbmV4cG9ydCB7TWFpbFNlbmRlcn0gZnJvbSBcIi4vc2VydmljZXMvbWFpbC1zZW5kZXJcIjtcclxuZXhwb3J0IHtNZW1vcnlDYWNoZX0gZnJvbSBcIi4vc2VydmljZXMvbWVtb3J5LWNhY2hlXCI7XHJcbmV4cG9ydCB7TW9uZ29Db25uZWN0b3J9IGZyb20gXCIuL3NlcnZpY2VzL21vbmdvLWNvbm5lY3RvclwiO1xyXG5leHBvcnQge1Byb2dyZXNzZXN9IGZyb20gXCIuL3NlcnZpY2VzL3Byb2dyZXNzZXNcIjtcclxuZXhwb3J0IHtUZW1wbGF0ZVJlbmRlcmVyfSBmcm9tIFwiLi9zZXJ2aWNlcy90ZW1wbGF0ZS1yZW5kZXJlclwiO1xyXG5leHBvcnQge1RyYW5zbGF0aW9uUHJvdmlkZXJ9IGZyb20gXCIuL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXByb3ZpZGVyXCI7XHJcbmV4cG9ydCB7VHJhbnNsYXRvcn0gZnJvbSBcIi4vc2VydmljZXMvdHJhbnNsYXRvclwiO1xyXG5leHBvcnQge1VzZXJNYW5hZ2VyfSBmcm9tIFwiLi9zZXJ2aWNlcy91c2VyLW1hbmFnZXJcIjtcclxuXHJcbmV4cG9ydCB7QXV0aENvbnRyb2xsZXJ9IGZyb20gXCIuL3Jlc3QtY29udHJvbGxlcnMvYXV0aC5jb250cm9sbGVyXCI7XHJcbmV4cG9ydCB7R2FsbGVyeUNvbnRyb2xsZXJ9IGZyb20gXCIuL3Jlc3QtY29udHJvbGxlcnMvZ2FsbGVyeS5jb250cm9sbGVyXCI7XHJcblxyXG5leHBvcnQge0Vycm9ySGFuZGxlck1pZGRsZXdhcmV9IGZyb20gXCIuL3Jlc3QtbWlkZGxld2FyZXMvZXJyb3ItaGFuZGxlci5taWRkbGV3YXJlXCI7XHJcbmV4cG9ydCB7TGFuZ3VhZ2VNaWRkbGV3YXJlfSBmcm9tIFwiLi9yZXN0LW1pZGRsZXdhcmVzL2xhbmd1YWdlLm1pZGRsZXdhcmVcIjtcclxuXHJcbmV4cG9ydCB7TGF6eUFzc2V0R2VuZXJhdG9yfSBmcm9tIFwiLi91dGlsaXRpZXMvbGF6eS1hc3NldC1nZW5lcmF0b3JcIjtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVVc2VyKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lciwgcmVxOiBJUmVxdWVzdCk6IFByb21pc2U8SVVzZXI+IHtcclxuICAgIGlmIChyZXEudXNlcikgcmV0dXJuIHJlcS51c2VyO1xyXG4gICAgY29uc3QgYXV0aCA9IHJlcS5oZWFkZXIoXCJBdXRob3JpemF0aW9uXCIpIHx8IFwiXCI7XHJcbiAgICBsZXQgcGF5bG9hZCA9IG51bGw7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGNvbnRhaW5lci5yZXNvbHZlKENvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIHBheWxvYWQgPSB2ZXJpZnkoYXV0aC5zcGxpdChcIiBcIilbMV0sIGNvbmZpZy5yZXNvbHZlKFwiand0U2VjcmV0XCIpKSBhcyBhbnk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEh0dHBFcnJvcig0MDEsIGBBdXRoZW50aWNhdGlvbiBmYWlsZWQuICgke2UubWVzc2FnZX0pYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXBheWxvYWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMSwgYEF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKE1heWJlIGludmFsaWQgdG9rZW4pYCk7XHJcbiAgICB9XHJcbiAgICByZXEudXNlciA9IGF3YWl0IGNvbnRhaW5lci5yZXNvbHZlKFVzZXJNYW5hZ2VyKS5nZXRCeUlkKHBheWxvYWQuaWQpO1xyXG4gICAgcmV0dXJuIHJlcS51c2VyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VydmljZXMoKTogSURlcGVuZGVuY3lDb250YWluZXIge1xyXG4gICAgLy8gTGlzdCBvZiBwYXJhbWV0ZXJzXHJcbiAgICBjb25zdCBwYXJhbXMgPSBbXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInRlbXBsYXRlc0RpclwiLCBqb2luKF9fZGlybmFtZSwgXCJ0ZW1wbGF0ZXNcIikpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJnYWxsZXJ5RGlyXCIsIGpvaW4oX19kaXJuYW1lLCBcImdhbGxlcnlcIikpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJjYWNoZURpclwiLCBqb2luKF9fZGlybmFtZSwgXCJjYWNoZVwiKSksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcImRlZmF1bHRMYW5ndWFnZVwiLCBcImVuXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwSG9zdFwiLCBcInNtdHAuc2VuZGdyaWQubmV0XCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwUG9ydFwiLCA1ODcpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJzbXRwVXNlclwiLCBcImFwaWtleVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwic210cFBhc3N3b3JkXCIsIFwiXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtYWlsU2VuZGVyQWRkcmVzc1wiLCBcImluZm9Ac3RlbXkuaHVcIiksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInRyYW5zbGF0aW9uc1RlbXBsYXRlXCIsIFwiaHR0cHM6Ly90cmFuc2xhdGlvbi5zZXJ2aWNlL1tsYW5nXVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiand0U2VjcmV0XCIsIFwiZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5XCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtb25nb1VyaVwiLCBcIlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwibW9uZ29EYlwiLCBcIm5vZGUtYmFja2VuZFwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwibW9uZ29Vc2VyXCIsIG51bGwpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJtb25nb1Bhc3N3b3JkXCIsIG51bGwpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJub2RlRW52XCIsIFwiZGV2ZWxvcG1lbnRcIiksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcImFwcFBvcnRcIiwgODApLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJyZWRpc0hvc3RcIiwgXCIxMjcuMC4wLjFcIiksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInJlZGlzUG9ydFwiLCA2Mzc5KSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwicmVkaXNQYXNzd29yZFwiLCBcIjEyMzQ1NlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwicmVkaXNOYW1lc3BhY2VcIiwgXCJyZXNxdWVcIiksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcInJlZGlzQ2x1c3RlclwiLCBcIm15bWFzdGVyXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJyZWRpc1NlbnRpbmVsc1wiLCBudWxsLCB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuc3BsaXQoXCIsIFwiKS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBpdGVtLnNwbGl0KFwiOlwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7aG9zdDogdmFsdWVzWzBdLCBwb3J0OiBOdW1iZXIodmFsdWVzWzFdKX07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJ3b3JrUXVldWVzXCIsIFtcIm1haW5cIl0pLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJpc1dvcmtlclwiLCBmYWxzZSksXHJcbiAgICAgICAgbmV3IFBhcmFtZXRlcihcIm1haW5FbmRwb2ludFwiLCBcIlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRDaGFyc1wiLCBcIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRTZXBhcmF0b3JcIiwgXCItXCIpLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJpZFByZWZpeFwiLCBcIklELVwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiaWRQYXJ0c1wiLCBbNCwgNF0pLFxyXG4gICAgICAgIG5ldyBQYXJhbWV0ZXIoXCJqc29uTGltaXRcIiwgXCIyNTBtYlwiKSxcclxuICAgICAgICBuZXcgUGFyYW1ldGVyKFwiY2FjaGVDb2xsZWN0aW9uXCIsIFwiY2FjaGVcIiksXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIENvbnZlcnQgcGFyYW1ldGVycyB0byBwcm92aWRlcnNcclxuICAgIGNvbnN0IHBhcmFtUHJvdmlkZXJzID0gcGFyYW1zLm1hcChwID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBQQVJBTUVURVIsXHJcbiAgICAgICAgICAgIHVzZVZhbHVlOiBwXHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gTGlzdCBvZiBzZXJ2aWNlc1xyXG4gICAgY29uc3Qgc2VydmljZXMgPSBbXHJcbiAgICAgICAgQXNzZXRQcm9jZXNzb3IsXHJcbiAgICAgICAgQXNzZXRSZXNvbHZlcixcclxuICAgICAgICBBc3NldHMsXHJcbiAgICAgICAgQmFja2VuZFByb3ZpZGVyLFxyXG4gICAgICAgIENhY2hlLFxyXG4gICAgICAgIENhY2hlUHJvY2Vzc29yLFxyXG4gICAgICAgIENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgRW5kcG9pbnRQcm92aWRlcixcclxuICAgICAgICBGaXh0dXJlcyxcclxuICAgICAgICBHYWxsZXJ5LFxyXG4gICAgICAgIEdhbGxlcnlDYWNoZSxcclxuICAgICAgICBJZEdlbmVyYXRvcixcclxuICAgICAgICBKb2JNYW5hZ2VyLFxyXG4gICAgICAgIExhenlBc3NldHMsXHJcbiAgICAgICAgTWFpbFNlbmRlcixcclxuICAgICAgICBNZW1vcnlDYWNoZSxcclxuICAgICAgICBNb25nb0Nvbm5lY3RvcixcclxuICAgICAgICBQcm9ncmVzc2VzLFxyXG4gICAgICAgIFRlbXBsYXRlUmVuZGVyZXIsXHJcbiAgICAgICAgVHJhbnNsYXRpb25Qcm92aWRlcixcclxuICAgICAgICBUcmFuc2xhdG9yLFxyXG4gICAgICAgIFVzZXJNYW5hZ2VyXHJcbiAgICBdIGFzIFR5cGU8YW55PltdO1xyXG5cclxuICAgIC8vIENyZWF0ZSBjb250YWluZXJcclxuICAgIGNvbnN0IGRpQ29udGFpbmVyID0gbmV3IERpQ29udGFpbmVyKGNvbnRhaW5lci5jcmVhdGVDaGlsZENvbnRhaW5lcigpKTtcclxuICAgIHBhcmFtUHJvdmlkZXJzLmZvckVhY2gocHJvdmlkZXIgPT4ge1xyXG4gICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHByb3ZpZGVyLnByb3ZpZGUsIHByb3ZpZGVyKTtcclxuICAgIH0pO1xyXG4gICAgc2VydmljZXMuZm9yRWFjaChzZXJ2aWNlID0+IHtcclxuICAgICAgICBpZiAoIWNvbnRhaW5lci5pc1JlZ2lzdGVyZWQoc2VydmljZSkpXHJcbiAgICAgICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHNlcnZpY2UsIHNlcnZpY2UpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGlDb250YWluZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXR1cEJhY2tlbmQoY29uZmlnOiBJQmFja2VuZENvbmZpZywgcHJvdmlkZXJzPzogUHJvdmlkZXI8YW55PltdLCBwYXJlbnQ/OiBJRGVwZW5kZW5jeUNvbnRhaW5lcik6IFByb21pc2U8SURlcGVuZGVuY3lDb250YWluZXI+IHtcclxuXHJcbiAgICBwcm92aWRlcnMgPSBBcnJheS5pc0FycmF5KHByb3ZpZGVycykgPyBwcm92aWRlcnMgOiBbXTtcclxuICAgIHBhcmVudCA9IHBhcmVudCB8fCBjcmVhdGVTZXJ2aWNlcygpO1xyXG5cclxuICAgIC8vIENyZWF0ZSBmaXh0dXJlc1xyXG4gICAgY29uc3QgZml4dHVyZVR5cGVzID0gKGNvbmZpZy5maXh0dXJlcyB8fCBbXSk7XHJcbiAgICBjb25zdCBmaXh0dXJlUHJvdmlkZXJzID0gZml4dHVyZVR5cGVzLm1hcChmaXh0dXJlID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBGSVhUVVJFLFxyXG4gICAgICAgICAgICB1c2VDbGFzczogZml4dHVyZVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBDcmVhdGUgcGFyYW1zXHJcbiAgICBjb25zdCBwYXJhbVByb3ZpZGVycyA9IChjb25maWcucGFyYW1zIHx8IFtdKS5tYXAocCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogUEFSQU1FVEVSLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogcFxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIENyZWF0ZSBqb2JzXHJcbiAgICBjb25zdCBqb2JQcm92aWRlcnMgPSAoY29uZmlnLmpvYnMgfHwgW10pLm1hcChqb2JUeXBlID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBKT0IsXHJcbiAgICAgICAgICAgIHVzZVZhbHVlOiBqb2JUeXBlXHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFNldHVwIHJlc3QgQVBJXHJcbiAgICBjb25zdCByZXN0T3B0aW9ucyA9IGNvbmZpZy5yZXN0T3B0aW9ucyB8fCB7fTtcclxuICAgIHJlc3RPcHRpb25zLmRlZmF1bHRFcnJvckhhbmRsZXIgPSBmYWxzZTtcclxuICAgIHJlc3RPcHRpb25zLmNvcnMgPSB7XHJcbiAgICAgICAgY3JlZGVudGlhbHM6IHRydWUsXHJcbiAgICAgICAgb3JpZ2luOiAob3JpZ2luLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmVzdE9wdGlvbnMucm91dGVQcmVmaXggPSBjb25maWcucm91dGVQcmVmaXggfHwgXCIvYXBpXCI7XHJcbiAgICByZXN0T3B0aW9ucy5yb3V0ZVByZWZpeCA9IHJlc3RPcHRpb25zLnJvdXRlUHJlZml4ID09IFwiL1wiID8gXCJcIiA6IHJlc3RPcHRpb25zLnJvdXRlUHJlZml4O1xyXG4gICAgcmVzdE9wdGlvbnMubWlkZGxld2FyZXMgPSBbRXJyb3JIYW5kbGVyTWlkZGxld2FyZSwgQ29udGFpbmVyTWlkZGxld2FyZSwgTGFuZ3VhZ2VNaWRkbGV3YXJlLCBSZXF1ZXN0U3RhcnRlZE1pZGRsZXdhcmUsIFJlcXVlc3RFbmRlZE1pZGRsZXdhcmVdXHJcbiAgICAgICAgLmNvbmNhdChyZXN0T3B0aW9ucy5taWRkbGV3YXJlcyBhcyBhbnkgfHwgW10pO1xyXG4gICAgcmVzdE9wdGlvbnMuY29udHJvbGxlcnMgPSBbQXNzZXRzQ29udHJvbGxlciwgQXV0aENvbnRyb2xsZXIsIEdhbGxlcnlDb250cm9sbGVyLCBQcm9ncmVzc2VzQ29udHJvbGxlcl1cclxuICAgICAgICAuY29uY2F0KHJlc3RPcHRpb25zLmNvbnRyb2xsZXJzIGFzIGFueSB8fCBbXSk7XHJcblxyXG4gICAgLy8gU2V0dXAgc29ja2V0IEFQSVxyXG4gICAgY29uc3Qgc29ja2V0T3B0aW9ucyA9IGNvbmZpZy5zb2NrZXRPcHRpb25zIHx8IHt9O1xyXG4gICAgc29ja2V0T3B0aW9ucy5taWRkbGV3YXJlcyA9IFtDb21wcmVzc2lvbk1pZGRsZXdhcmVdLmNvbmNhdChzb2NrZXRPcHRpb25zLm1pZGRsZXdhcmVzIGFzIGFueSB8fCBbXSk7XHJcbiAgICBzb2NrZXRPcHRpb25zLmNvbnRyb2xsZXJzID0gW1Byb2dyZXNzQ29udHJvbGxlcl0uY29uY2F0KHNvY2tldE9wdGlvbnMuY29udHJvbGxlcnMgYXMgYW55IHx8IFtdKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgcHJvdmlkZXJzXHJcblxyXG4gICAgY29uc3QgYWxsUHJvdmlkZXJzOiBQcm92aWRlcjxhbnk+W10gPSBbXTtcclxuXHJcbiAgICAvLyBBZGQgbXVsdGkgdG9rZW5zIHRvIHN1YiBjb250YWluZXJcclxuICAgIFtQQVJBTUVURVJdLmZvckVhY2gocHJvdmlkZSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVzID0gcGFyZW50LnJlc29sdmVBbGwocHJvdmlkZSk7XHJcbiAgICAgICAgdmFsdWVzLmZvckVhY2godXNlVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICBhbGxQcm92aWRlcnMucHVzaCh7cHJvdmlkZSwgdXNlVmFsdWV9KTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEFkZCBvdGhlciBwcm92aWRlcnNcclxuICAgIGFsbFByb3ZpZGVycy5wdXNoKFxyXG4gICAgICAgIC4uLmZpeHR1cmVUeXBlcyxcclxuICAgICAgICAuLi5maXh0dXJlUHJvdmlkZXJzLFxyXG4gICAgICAgIC4uLnBhcmFtUHJvdmlkZXJzLFxyXG4gICAgICAgIC4uLmpvYlByb3ZpZGVycyxcclxuICAgICAgICAuLi5yZXN0T3B0aW9ucy5taWRkbGV3YXJlcyBhcyBUeXBlPGFueT5bXSxcclxuICAgICAgICAuLi5yZXN0T3B0aW9ucy5jb250cm9sbGVycyBhcyBUeXBlPGFueT5bXSxcclxuICAgICAgICAuLi5zb2NrZXRPcHRpb25zLm1pZGRsZXdhcmVzIGFzIFR5cGU8YW55PltdLFxyXG4gICAgICAgIC4uLnNvY2tldE9wdGlvbnMuY29udHJvbGxlcnMgYXMgVHlwZTxhbnk+W10sXHJcbiAgICAgICAgLi4ucHJvdmlkZXJzLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogRVhQUkVTUyxcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcikuZXhwcmVzcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBIVFRQX1NFUlZFUixcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcikuc2VydmVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IFNPQ0tFVF9TRVJWRVIsXHJcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IChjb250YWluZXI6IERlcGVuZGVuY3lDb250YWluZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIucmVzb2x2ZShCYWNrZW5kUHJvdmlkZXIpLmlvO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgKVxyXG5cclxuICAgIC8vIENyZWF0ZSBESSBjb250YWluZXJcclxuXHJcbiAgICBjb25zdCBkaUNvbnRhaW5lciA9IHBhcmVudC5jcmVhdGVDaGlsZENvbnRhaW5lcigpO1xyXG5cclxuICAgIGFsbFByb3ZpZGVycy5mb3JFYWNoKHByb3ZpZGVyID0+IHtcclxuICAgICAgICBpZiAoaXNUeXBlKHByb3ZpZGVyKSkge1xyXG4gICAgICAgICAgICBkaUNvbnRhaW5lci5yZWdpc3Rlcihwcm92aWRlciwgcHJvdmlkZXIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpQ29udGFpbmVyLnJlZ2lzdGVyKHByb3ZpZGVyLnByb3ZpZGUsIHByb3ZpZGVyIGFzIGFueSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkaUNvbnRhaW5lci5yZWdpc3RlcihESV9DT05UQUlORVIsIHtcclxuICAgICAgICB1c2VWYWx1ZTogZGlDb250YWluZXJcclxuICAgIH0pO1xyXG5cclxuICAgIGRpQ29udGFpbmVycy5hcHBDb250YWluZXIgPSBkaUNvbnRhaW5lcnMuYXBwQ29udGFpbmVyIHx8IGRpQ29udGFpbmVyO1xyXG5cclxuICAgIC8vIEF1dGhlbnRpY2F0aW9uXHJcbiAgICByZXN0T3B0aW9ucy5hdXRob3JpemF0aW9uQ2hlY2tlciA9IGFzeW5jIChhY3Rpb246IEFjdGlvbiwgcm9sZXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHJlc29sdmVVc2VyKGRpQ29udGFpbmVyLCBhY3Rpb24ucmVxdWVzdCk7XHJcbiAgICAgICAgaWYgKCF1c2VyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDAxLCBcIkF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKFVzZXIgY2FuJ3QgYmUgZm91bmQuKVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdXNlclJvbGVzID0gQXJyYXkuaXNBcnJheSh1c2VyLnJvbGVzKSA/IHVzZXIucm9sZXMgOiBbXTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb2xlcykgJiYgcm9sZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgbGFzdEVycm9yID0gbnVsbDtcclxuICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBvZiByb2xlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocm9sZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgdmFsdWVUb1Byb21pc2Uocm9sZSh1c2VyLCBhY3Rpb24pKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RFcnJvciA9IGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHVzZXJSb2xlcy5pbmRleE9mKHJvbGUpID49IDApIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gIWxhc3RFcnJvciB8fCAoIWxhc3RFcnJvci5tZXNzYWdlICYmICFpc1N0cmluZyhsYXN0RXJyb3IpKVxyXG4gICAgICAgICAgICAgICAgPyBcIlVzZXIgZG9lc24ndCBoYXZlIGFjY2VzcyB0byB0aGlzIHJlc291cmNlXCJcclxuICAgICAgICAgICAgICAgIDogbGFzdEVycm9yLm1lc3NhZ2UgfHwgbGFzdEVycm9yO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMSwgYEF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gKCR7ZXJyb3J9KWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICByZXN0T3B0aW9ucy5jdXJyZW50VXNlckNoZWNrZXIgPSBhc3luYyAoYWN0aW9uOiBBY3Rpb24pID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZVVzZXIoZGlDb250YWluZXIsIGFjdGlvbi5yZXF1ZXN0KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gRmluYWwgc2V0dXBcclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBkaUNvbnRhaW5lci5yZXNvbHZlKENvbmZpZ3VyYXRpb24pO1xyXG4gICAgY29uc3QgYnAgPSBkaUNvbnRhaW5lci5yZXNvbHZlKEJhY2tlbmRQcm92aWRlcik7XHJcblxyXG4gICAgaWYgKGNvbmZpZy5yZXN0T3B0aW9ucykge1xyXG4gICAgICAgIGJwLmV4cHJlc3MudXNlKGpzb24oe1xyXG4gICAgICAgICAgICBsaW1pdDogY29uZmlndXJhdGlvbi5oYXNQYXJhbShcImpzb25MaW1pdFwiKVxyXG4gICAgICAgICAgICAgICAgPyBjb25maWd1cmF0aW9uLnJlc29sdmUoXCJqc29uTGltaXRcIilcclxuICAgICAgICAgICAgICAgIDogXCIyNTBtYlwiXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHVzZVJvdXRpbmdDb250YWluZXIoZGlDb250YWluZXIpO1xyXG4gICAgICAgIHVzZUV4cHJlc3NTZXJ2ZXIoYnAuZXhwcmVzcywgcmVzdE9wdGlvbnMpO1xyXG4gICAgICAgIC8vIFNldHVwIHJlc3QgYWkgZG9jc1xyXG4gICAgICAgIGJwLmV4cHJlc3MuZ2V0KFwiL2FwaS1kb2NzXCIsIChyZXEsIHJlcykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzKDIwMCkuZW5kKGdldEFwaURvY3MoY29uZmlnLmN1c3RvbVZhbGlkYXRpb24pKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWcuc29ja2V0T3B0aW9ucykge1xyXG4gICAgICAgIHVzZVNvY2tldENvbnRhaW5lcihkaUNvbnRhaW5lcik7XHJcbiAgICAgICAgdXNlU29ja2V0U2VydmVyKGJwLmlvLCBzb2NrZXRPcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDb25uZWN0IHRvIG1vbmdvIGlmIG5lY2Vzc2FyeVxyXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaGFzUGFyYW0oXCJtb25nb1VyaVwiKSAmJiBjb25maWd1cmF0aW9uLnJlc29sdmUoXCJtb25nb1VyaVwiKSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiQ29ubmVjdGluZyB0byBNb25nb0RCLi4uXCIpO1xyXG4gICAgICAgIGNvbnN0IGNvbm5lY3RvciA9IGRpQ29udGFpbmVyLnJlc29sdmUoTW9uZ29Db25uZWN0b3IpO1xyXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rvci5jb25uZWN0KCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzZnVsbHkgY29ubmVjdGVkIHRvIE1vbmdvREIuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHNldHVwU3RhdGljKGNvbmZpZy5yb290Rm9sZGVyLCBkaUNvbnRhaW5lcik7XHJcblxyXG4gICAgcmV0dXJuIGRpQ29udGFpbmVyO1xyXG59XHJcbiJdfQ==
@@ -53,40 +53,42 @@ let AssetsController = class AssetsController {
53
53
  }
54
54
  });
55
55
  }
56
- getImageRotation(id, params, rotation = 0) {
57
- var _a;
56
+ getImageRotation(id, params, res, rotation = 0) {
58
57
  return __awaiter(this, void 0, void 0, function* () {
59
- const asset = yield this.assetResolver.resolve(id, params.lazy);
60
- if (!asset) {
61
- throw new HttpError(404, `Image with id: '${id}' not found.`);
62
- }
63
- if ((_a = asset.metadata) === null || _a === void 0 ? void 0 : _a.classified) {
64
- throw new HttpError(403, `Image is classified, and can be only downloaded from a custom url.`);
65
- }
58
+ const asset = yield this.getAsset("Image", id, params.lazy, res);
66
59
  params.rotation = params.rotation || rotation;
67
60
  return asset.downloadImage(params);
68
61
  });
69
62
  }
70
- getImage(id, params) {
63
+ getImage(id, params, res) {
71
64
  return __awaiter(this, void 0, void 0, function* () {
72
- return this.getImageRotation(id, params);
65
+ return this.getImageRotation(id, params, res);
73
66
  });
74
67
  }
75
68
  getFile(id, lazy, res) {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const asset = yield this.getAsset("Asset", id, lazy, res);
71
+ return asset.download();
72
+ });
73
+ }
74
+ getAsset(type, id, lazy, res) {
76
75
  var _a, _b;
77
76
  return __awaiter(this, void 0, void 0, function* () {
78
77
  const asset = yield this.assetResolver.resolve(id, lazy);
79
78
  if (!asset) {
80
- throw new HttpError(404, `File with id: '${id}' not found.`);
79
+ throw new HttpError(404, `${type} with id: '${id}' not found.`);
81
80
  }
82
81
  if ((_a = asset.metadata) === null || _a === void 0 ? void 0 : _a.classified) {
83
- throw new HttpError(403, `Asset is classified, and can be only downloaded from a custom url.`);
82
+ throw new HttpError(403, `${type} is classified, and can be only downloaded from a custom url.`);
84
83
  }
85
84
  const ext = (_b = asset.metadata) === null || _b === void 0 ? void 0 : _b.extension;
86
85
  if (ext) {
87
86
  res.header("content-disposition", `inline; filename=${asset.filename}.${ext}`);
88
87
  }
89
- return asset.download();
88
+ if (asset.contentType) {
89
+ res.header("content-type", asset.contentType);
90
+ }
91
+ return asset;
90
92
  });
91
93
  }
92
94
  };
@@ -108,16 +110,16 @@ __decorate([
108
110
  ], AssetsController.prototype, "uploadUrl", null);
109
111
  __decorate([
110
112
  Get("/image/:id/:rotation"),
111
- __param(0, Param("id")), __param(1, QueryParams()), __param(2, Param("rotation")),
113
+ __param(0, Param("id")), __param(1, QueryParams()), __param(2, Res()), __param(3, Param("rotation")),
112
114
  __metadata("design:type", Function),
113
- __metadata("design:paramtypes", [String, Object, Number]),
115
+ __metadata("design:paramtypes", [String, Object, Object, Number]),
114
116
  __metadata("design:returntype", Promise)
115
117
  ], AssetsController.prototype, "getImageRotation", null);
116
118
  __decorate([
117
119
  Get("/image/:id"),
118
- __param(0, Param("id")), __param(1, QueryParams()),
120
+ __param(0, Param("id")), __param(1, QueryParams()), __param(2, Res()),
119
121
  __metadata("design:type", Function),
120
- __metadata("design:paramtypes", [String, Object]),
122
+ __metadata("design:paramtypes", [String, Object, Object]),
121
123
  __metadata("design:returntype", Promise)
122
124
  ], AssetsController.prototype, "getImage", null);
123
125
  __decorate([
@@ -133,4 +135,4 @@ AssetsController = __decorate([
133
135
  __metadata("design:paramtypes", [Assets, AssetResolver])
134
136
  ], AssetsController);
135
137
  export { AssetsController };
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzdC1jb250cm9sbGVycy9hc3NldHMuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDSCxVQUFVLEVBQ1YsSUFBSSxFQUNKLFVBQVUsRUFDVixHQUFHLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxJQUFJLEVBQ0osVUFBVSxFQUNWLFdBQVcsRUFDWCxHQUFHLEVBQ0gsWUFBWSxFQUNmLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztJQUs1QyxnQkFBZ0IsU0FBaEIsZ0JBQWdCO0lBRXpCLFlBQXFCLE1BQWMsRUFBVyxhQUE0QjtRQUFyRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVcsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFFMUUsQ0FBQztJQUlLLE1BQU0sQ0FBdUIsSUFBeUI7O1lBQ3hELElBQUk7Z0JBQ0EsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUN4RixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUNqRyxPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUN6QjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLE1BQU0sR0FBRyxHQUFHLENBQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLE9BQU8sS0FBSSxDQUFDLElBQUksZUFBZSxDQUFDO2dCQUMvQyxNQUFNLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSw2QkFBNkIsR0FBRyxFQUFFLENBQUMsQ0FBQzthQUNoRTtRQUNMLENBQUM7S0FBQTtJQUlLLFNBQVMsQ0FBUyxJQUFTOztZQUM3QixJQUFJO2dCQUNBLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDekQsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDekI7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixNQUFNLEdBQUcsR0FBRyxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxPQUFPLEtBQUksQ0FBQyxJQUFJLGVBQWUsQ0FBQztnQkFDL0MsTUFBTSxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDaEU7UUFDTCxDQUFDO0tBQUE7SUFHSyxnQkFBZ0IsQ0FBYyxFQUFVLEVBQWlCLE1BQXlCLEVBQXFCLFdBQW1CLENBQUM7OztZQUM3SCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDUixNQUFNLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLENBQUMsQ0FBQzthQUNqRTtZQUNELFVBQUksS0FBSyxDQUFDLFFBQVEsMENBQUUsVUFBVSxFQUFFO2dCQUM1QixNQUFNLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxvRUFBb0UsQ0FBQyxDQUFDO2FBQ2xHO1lBQ0QsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQztZQUM5QyxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7O0tBQ3RDO0lBR0ssUUFBUSxDQUFjLEVBQVUsRUFBaUIsTUFBeUI7O1lBQzVFLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxDQUFDO0tBQUE7SUFHSyxPQUFPLENBQWMsRUFBVSxFQUFzQixJQUFhLEVBQVMsR0FBYTs7O1lBQzFGLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1IsTUFBTSxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLENBQUM7YUFDaEU7WUFDRCxVQUFJLEtBQUssQ0FBQyxRQUFRLDBDQUFFLFVBQVUsRUFBRTtnQkFDNUIsTUFBTSxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsb0VBQW9FLENBQUMsQ0FBQzthQUNsRztZQUNELE1BQU0sR0FBRyxTQUFHLEtBQUssQ0FBQyxRQUFRLDBDQUFFLFNBQVMsQ0FBQztZQUN0QyxJQUFJLEdBQUcsRUFBRTtnQkFDTCxHQUFHLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLG9CQUFvQixLQUFLLENBQUMsUUFBUSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDbEY7WUFDRCxPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7S0FDM0I7Q0FDSixDQUFBO0FBeERHO0lBRkMsVUFBVSxFQUFFO0lBQ1osSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNLLFdBQUEsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFBOzs7OzhDQVNqQztBQUlEO0lBRkMsVUFBVSxFQUFFO0lBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNLLFdBQUEsSUFBSSxFQUFFLENBQUE7Ozs7aURBUXRCO0FBR0Q7SUFEQyxHQUFHLENBQUMsc0JBQXNCLENBQUM7SUFDSixXQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxFQUFjLFdBQUEsV0FBVyxFQUFFLENBQUEsRUFBNkIsV0FBQSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7Ozs7d0RBVTNHO0FBR0Q7SUFEQyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ0YsV0FBQSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsRUFBYyxXQUFBLFdBQVcsRUFBRSxDQUFBOzs7O2dEQUVyRDtBQUdEO0lBREMsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNHLFdBQUEsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLEVBQWMsV0FBQSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUEsRUFBaUIsV0FBQSxHQUFHLEVBQUUsQ0FBQTs7OzsrQ0FhL0U7QUEvRFEsZ0JBQWdCO0lBRjVCLFVBQVUsRUFBRTtJQUNaLFVBQVUsQ0FBQyxTQUFTLENBQUM7cUNBR1csTUFBTSxFQUEwQixhQUFhO0dBRmpFLGdCQUFnQixDQWdFNUI7U0FoRVksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFkYWJsZX0gZnJvbSBcInN0cmVhbVwiO1xyXG5pbXBvcnQge2luamVjdGFibGV9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgQXV0aG9yaXplZCxcclxuICAgIEJvZHksXHJcbiAgICBDb250cm9sbGVyLFxyXG4gICAgR2V0LFxyXG4gICAgSHR0cEVycm9yLFxyXG4gICAgUGFyYW0sXHJcbiAgICBQb3N0LFxyXG4gICAgUXVlcnlQYXJhbSxcclxuICAgIFF1ZXJ5UGFyYW1zLFxyXG4gICAgUmVzLFxyXG4gICAgVXBsb2FkZWRGaWxlXHJcbn0gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtJQXNzZXRJbWFnZVBhcmFtc30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge0Fzc2V0c30gZnJvbSBcIi4uL3NlcnZpY2VzL2Fzc2V0c1wiO1xyXG5pbXBvcnQge0Fzc2V0UmVzb2x2ZXJ9IGZyb20gXCIuLi9zZXJ2aWNlcy9hc3NldC1yZXNvbHZlclwiO1xyXG5pbXBvcnQge1Jlc3BvbnNlfSBmcm9tIFwiZXhwcmVzc1wiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5AQ29udHJvbGxlcihcIi9hc3NldHNcIilcclxuZXhwb3J0IGNsYXNzIEFzc2V0c0NvbnRyb2xsZXIge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGFzc2V0czogQXNzZXRzLCByZWFkb25seSBhc3NldFJlc29sdmVyOiBBc3NldFJlc29sdmVyKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIEBBdXRob3JpemVkKClcclxuICAgIEBQb3N0KFwiXCIpXHJcbiAgICBhc3luYyB1cGxvYWQoQFVwbG9hZGVkRmlsZShcImZpbGVcIikgZmlsZTogRXhwcmVzcy5NdWx0ZXIuRmlsZSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gZmlsZS5taW1ldHlwZSA9PT0gXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIiA/IG51bGwgOiBmaWxlLm1pbWV0eXBlO1xyXG4gICAgICAgICAgICBjb25zdCBhc3NldCA9IGF3YWl0IHRoaXMuYXNzZXRzLndyaXRlQnVmZmVyKGZpbGUuYnVmZmVyLCB7ZmlsZW5hbWU6IGZpbGUuZmlsZW5hbWV9LCBjb250ZW50VHlwZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBhc3NldC50b0pTT04oKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGU/Lm1lc3NhZ2UgfHwgZSB8fCBcIlVua25vd24gZXJyb3JcIjtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEh0dHBFcnJvcig0MDAsIGBBc3NldCBjYW4ndCBiZSB1cGxvYWRlZC5cXG4ke21zZ31gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEF1dGhvcml6ZWQoKVxyXG4gICAgQFBvc3QoXCJ1cmxcIilcclxuICAgIGFzeW5jIHVwbG9hZFVybChAQm9keSgpIGJvZHk6IGFueSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc2V0ID0gYXdhaXQgdGhpcy5hc3NldHMud3JpdGVVcmwoYm9keS51cmwsIGJvZHkpO1xyXG4gICAgICAgICAgICByZXR1cm4gYXNzZXQudG9KU09OKCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlPy5tZXNzYWdlIHx8IGUgfHwgXCJVbmtub3duIGVycm9yXCI7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDAwLCBgQXNzZXQgY2FuJ3QgYmUgdXBsb2FkZWQuXFxuJHttc2d9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBHZXQoXCIvaW1hZ2UvOmlkLzpyb3RhdGlvblwiKVxyXG4gICAgYXN5bmMgZ2V0SW1hZ2VSb3RhdGlvbihAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nLCBAUXVlcnlQYXJhbXMoKSBwYXJhbXM6IElBc3NldEltYWdlUGFyYW1zLCBAUGFyYW0oXCJyb3RhdGlvblwiKSByb3RhdGlvbjogbnVtYmVyID0gMCk6IFByb21pc2U8UmVhZGFibGU+IHtcclxuICAgICAgICBjb25zdCBhc3NldCA9IGF3YWl0IHRoaXMuYXNzZXRSZXNvbHZlci5yZXNvbHZlKGlkLCBwYXJhbXMubGF6eSk7XHJcbiAgICAgICAgaWYgKCFhc3NldCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwNCwgYEltYWdlIHdpdGggaWQ6ICcke2lkfScgbm90IGZvdW5kLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXNzZXQubWV0YWRhdGE/LmNsYXNzaWZpZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEh0dHBFcnJvcig0MDMsIGBJbWFnZSBpcyBjbGFzc2lmaWVkLCBhbmQgY2FuIGJlIG9ubHkgZG93bmxvYWRlZCBmcm9tIGEgY3VzdG9tIHVybC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFyYW1zLnJvdGF0aW9uID0gcGFyYW1zLnJvdGF0aW9uIHx8IHJvdGF0aW9uO1xyXG4gICAgICAgIHJldHVybiBhc3NldC5kb3dubG9hZEltYWdlKHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgQEdldChcIi9pbWFnZS86aWRcIilcclxuICAgIGFzeW5jIGdldEltYWdlKEBQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcsIEBRdWVyeVBhcmFtcygpIHBhcmFtczogSUFzc2V0SW1hZ2VQYXJhbXMpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW1hZ2VSb3RhdGlvbihpZCwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBAR2V0KFwiLzppZFwiKVxyXG4gICAgYXN5bmMgZ2V0RmlsZShAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nLCBAUXVlcnlQYXJhbShcImxhenlcIikgbGF6eTogYm9vbGVhbiwgQFJlcygpIHJlczogUmVzcG9uc2UpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgY29uc3QgYXNzZXQgPSBhd2FpdCB0aGlzLmFzc2V0UmVzb2x2ZXIucmVzb2x2ZShpZCwgbGF6eSk7XHJcbiAgICAgICAgaWYgKCFhc3NldCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwNCwgYEZpbGUgd2l0aCBpZDogJyR7aWR9JyBub3QgZm91bmQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhc3NldC5tZXRhZGF0YT8uY2xhc3NpZmllZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMywgYEFzc2V0IGlzIGNsYXNzaWZpZWQsIGFuZCBjYW4gYmUgb25seSBkb3dubG9hZGVkIGZyb20gYSBjdXN0b20gdXJsLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBleHQgPSBhc3NldC5tZXRhZGF0YT8uZXh0ZW5zaW9uO1xyXG4gICAgICAgIGlmIChleHQpIHtcclxuICAgICAgICAgICAgcmVzLmhlYWRlcihcImNvbnRlbnQtZGlzcG9zaXRpb25cIiwgYGlubGluZTsgZmlsZW5hbWU9JHthc3NldC5maWxlbmFtZX0uJHtleHR9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhc3NldC5kb3dubG9hZCgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzdC1jb250cm9sbGVycy9hc3NldHMuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDSCxVQUFVLEVBQ1YsSUFBSSxFQUNKLFVBQVUsRUFDVixHQUFHLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxJQUFJLEVBQ0osVUFBVSxFQUNWLFdBQVcsRUFDWCxHQUFHLEVBQ0gsWUFBWSxFQUNmLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztJQUk1QyxnQkFBZ0IsU0FBaEIsZ0JBQWdCO0lBRXpCLFlBQXFCLE1BQWMsRUFBVyxhQUE0QjtRQUFyRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVcsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFFMUUsQ0FBQztJQUlLLE1BQU0sQ0FBdUIsSUFBeUI7O1lBQ3hELElBQUk7Z0JBQ0EsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUN4RixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUNqRyxPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUN6QjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLE1BQU0sR0FB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SUFDSyxXQUFBLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTs7Ozs4Q0FTakM7QUFJRDtJQUZDLFVBQVUsRUFBRTtJQUNaLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDSyxXQUFBLElBQUksRUFBRSxDQUFBOzs7O2lEQVF0QjtBQUdEO0lBREMsR0FBRyxDQUFDLHNCQUFzQixDQUFDO0lBQ0osV0FBQSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsRUFBYyxXQUFBLFdBQVcsRUFBRSxDQUFBLEVBQTZCLFdBQUEsR0FBRyxFQUFFLENBQUEsRUFBaUIsV0FBQSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7Ozs7d0RBSWpJO0FBR0Q7SUFEQyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ0YsV0FBQSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsRUFBYyxXQUFBLFdBQVcsRUFBRSxDQUFBLEVBQTZCLFdBQUEsR0FBRyxFQUFFLENBQUE7Ozs7Z0RBRXZGO0FBR0Q7SUFEQyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ0csV0FBQSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsRUFBYyxXQUFBLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQSxFQUFpQixXQUFBLEdBQUcsRUFBRSxDQUFBOzs7OytDQUcvRTtBQS9DUSxnQkFBZ0I7SUFGNUIsVUFBVSxFQUFFO0lBQ1osVUFBVSxDQUFDLFNBQVMsQ0FBQztxQ0FHVyxNQUFNLEVBQTBCLGFBQWE7R0FGakUsZ0JBQWdCLENBa0U1QjtTQWxFWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWRhYmxlfSBmcm9tIFwic3RyZWFtXCI7XHJcbmltcG9ydCB7UmVzcG9uc2V9IGZyb20gXCJleHByZXNzXCI7XHJcbmltcG9ydCB7aW5qZWN0YWJsZX0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBBdXRob3JpemVkLFxyXG4gICAgQm9keSxcclxuICAgIENvbnRyb2xsZXIsXHJcbiAgICBHZXQsXHJcbiAgICBIdHRwRXJyb3IsXHJcbiAgICBQYXJhbSxcclxuICAgIFBvc3QsXHJcbiAgICBRdWVyeVBhcmFtLFxyXG4gICAgUXVlcnlQYXJhbXMsXHJcbiAgICBSZXMsXHJcbiAgICBVcGxvYWRlZEZpbGVcclxufSBmcm9tIFwicm91dGluZy1jb250cm9sbGVyc1wiO1xyXG5pbXBvcnQge0lBc3NldCwgSUFzc2V0SW1hZ2VQYXJhbXN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtBc3NldHN9IGZyb20gXCIuLi9zZXJ2aWNlcy9hc3NldHNcIjtcclxuaW1wb3J0IHtBc3NldFJlc29sdmVyfSBmcm9tIFwiLi4vc2VydmljZXMvYXNzZXQtcmVzb2x2ZXJcIjtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQENvbnRyb2xsZXIoXCIvYXNzZXRzXCIpXHJcbmV4cG9ydCBjbGFzcyBBc3NldHNDb250cm9sbGVyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBhc3NldHM6IEFzc2V0cywgcmVhZG9ubHkgYXNzZXRSZXNvbHZlcjogQXNzZXRSZXNvbHZlcikge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBAQXV0aG9yaXplZCgpXHJcbiAgICBAUG9zdChcIlwiKVxyXG4gICAgYXN5bmMgdXBsb2FkKEBVcGxvYWRlZEZpbGUoXCJmaWxlXCIpIGZpbGU6IEV4cHJlc3MuTXVsdGVyLkZpbGUpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IGZpbGUubWltZXR5cGUgPT09IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIgPyBudWxsIDogZmlsZS5taW1ldHlwZTtcclxuICAgICAgICAgICAgY29uc3QgYXNzZXQgPSBhd2FpdCB0aGlzLmFzc2V0cy53cml0ZUJ1ZmZlcihmaWxlLmJ1ZmZlciwge2ZpbGVuYW1lOiBmaWxlLmZpbGVuYW1lfSwgY29udGVudFR5cGUpO1xyXG4gICAgICAgICAgICByZXR1cm4gYXNzZXQudG9KU09OKCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlPy5tZXNzYWdlIHx8IGUgfHwgXCJVbmtub3duIGVycm9yXCI7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDAwLCBgQXNzZXQgY2FuJ3QgYmUgdXBsb2FkZWQuXFxuJHttc2d9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBBdXRob3JpemVkKClcclxuICAgIEBQb3N0KFwidXJsXCIpXHJcbiAgICBhc3luYyB1cGxvYWRVcmwoQEJvZHkoKSBib2R5OiBhbnkpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBhc3NldCA9IGF3YWl0IHRoaXMuYXNzZXRzLndyaXRlVXJsKGJvZHkudXJsLCBib2R5KTtcclxuICAgICAgICAgICAgcmV0dXJuIGFzc2V0LnRvSlNPTigpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc3QgbXNnID0gZT8ubWVzc2FnZSB8fCBlIHx8IFwiVW5rbm93biBlcnJvclwiO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMCwgYEFzc2V0IGNhbid0IGJlIHVwbG9hZGVkLlxcbiR7bXNnfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAR2V0KFwiL2ltYWdlLzppZC86cm90YXRpb25cIilcclxuICAgIGFzeW5jIGdldEltYWdlUm90YXRpb24oQFBhcmFtKFwiaWRcIikgaWQ6IHN0cmluZywgQFF1ZXJ5UGFyYW1zKCkgcGFyYW1zOiBJQXNzZXRJbWFnZVBhcmFtcywgQFJlcygpIHJlczogUmVzcG9uc2UsIEBQYXJhbShcInJvdGF0aW9uXCIpIHJvdGF0aW9uOiBudW1iZXIgPSAwKTogUHJvbWlzZTxSZWFkYWJsZT4ge1xyXG4gICAgICAgIGNvbnN0IGFzc2V0ID0gYXdhaXQgdGhpcy5nZXRBc3NldChcIkltYWdlXCIsIGlkLCBwYXJhbXMubGF6eSwgcmVzKTtcclxuICAgICAgICBwYXJhbXMucm90YXRpb24gPSBwYXJhbXMucm90YXRpb24gfHwgcm90YXRpb247XHJcbiAgICAgICAgcmV0dXJuIGFzc2V0LmRvd25sb2FkSW1hZ2UocGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBAR2V0KFwiL2ltYWdlLzppZFwiKVxyXG4gICAgYXN5bmMgZ2V0SW1hZ2UoQFBhcmFtKFwiaWRcIikgaWQ6IHN0cmluZywgQFF1ZXJ5UGFyYW1zKCkgcGFyYW1zOiBJQXNzZXRJbWFnZVBhcmFtcywgQFJlcygpIHJlczogUmVzcG9uc2UpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW1hZ2VSb3RhdGlvbihpZCwgcGFyYW1zLCByZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIEBHZXQoXCIvOmlkXCIpXHJcbiAgICBhc3luYyBnZXRGaWxlKEBQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcsIEBRdWVyeVBhcmFtKFwibGF6eVwiKSBsYXp5OiBib29sZWFuLCBAUmVzKCkgcmVzOiBSZXNwb25zZSk6IFByb21pc2U8UmVhZGFibGU+IHtcclxuICAgICAgICBjb25zdCBhc3NldCA9IGF3YWl0IHRoaXMuZ2V0QXNzZXQoXCJBc3NldFwiLCBpZCwgbGF6eSwgcmVzKTtcclxuICAgICAgICByZXR1cm4gYXNzZXQuZG93bmxvYWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QXNzZXQodHlwZTogc3RyaW5nLCBpZDogc3RyaW5nLCBsYXp5OiBib29sZWFuLCByZXM6IFJlc3BvbnNlKTogUHJvbWlzZTxJQXNzZXQ+IHtcclxuICAgICAgICBjb25zdCBhc3NldCA9IGF3YWl0IHRoaXMuYXNzZXRSZXNvbHZlci5yZXNvbHZlKGlkLCBsYXp5KTtcclxuICAgICAgICBpZiAoIWFzc2V0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDA0LCBgJHt0eXBlfSB3aXRoIGlkOiAnJHtpZH0nIG5vdCBmb3VuZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFzc2V0Lm1ldGFkYXRhPy5jbGFzc2lmaWVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDAzLCBgJHt0eXBlfSBpcyBjbGFzc2lmaWVkLCBhbmQgY2FuIGJlIG9ubHkgZG93bmxvYWRlZCBmcm9tIGEgY3VzdG9tIHVybC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXh0ID0gYXNzZXQubWV0YWRhdGE/LmV4dGVuc2lvbjtcclxuICAgICAgICBpZiAoZXh0KSB7XHJcbiAgICAgICAgICAgIHJlcy5oZWFkZXIoXCJjb250ZW50LWRpc3Bvc2l0aW9uXCIsIGBpbmxpbmU7IGZpbGVuYW1lPSR7YXNzZXQuZmlsZW5hbWV9LiR7ZXh0fWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXNzZXQuY29udGVudFR5cGUpIHtcclxuICAgICAgICAgICAgcmVzLmhlYWRlcihcImNvbnRlbnQtdHlwZVwiLCBhc3NldC5jb250ZW50VHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhc3NldDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -32,18 +32,24 @@ const fontProps = [
32
32
  "xHeight", "numGlyphs", "characterSet", "availableFeatures"
33
33
  ];
34
34
  let AssetProcessor = AssetProcessor_1 = class AssetProcessor {
35
- static getMimeType(buffer, mimeType) {
35
+ static checkTextFileType(type) {
36
+ return type.mime.indexOf("text") >= 0 || type.mime.indexOf("xml") >= 0;
37
+ }
38
+ static fixTextFileType(type, buffer) {
39
+ const text = buffer.toString("utf8");
40
+ if (text.indexOf("<svg") >= 0) {
41
+ return { ext: "svg", mime: "image/svg+xml" };
42
+ }
43
+ return type;
44
+ }
45
+ static fileTypeFromBuffer(buffer) {
46
+ var _a;
36
47
  return __awaiter(this, void 0, void 0, function* () {
37
- try {
38
- mimeType = (yield fromBuffer(buffer)).mime;
39
- }
40
- catch (e) {
41
- if (!mimeType) {
42
- throw `Can't determine mime type`;
43
- }
44
- console.log(`Can't determine mime type`, e);
48
+ const type = ((_a = yield fromBuffer(buffer)) !== null && _a !== void 0 ? _a : { ext: "txt", mime: "text/plain" });
49
+ if (AssetProcessor_1.checkTextFileType(type)) {
50
+ return AssetProcessor_1.fixTextFileType(type, buffer);
45
51
  }
46
- return mimeType;
52
+ return type;
47
53
  });
48
54
  }
49
55
  static extractFontFormat(font) {
@@ -81,12 +87,12 @@ let AssetProcessor = AssetProcessor_1 = class AssetProcessor {
81
87
  metadata[prop] = font[prop];
82
88
  });
83
89
  }
84
- process(buffer, metadata, contentType) {
90
+ process(buffer, metadata, fileType) {
85
91
  return __awaiter(this, void 0, void 0, function* () {
86
- if (AssetProcessor_1.isImage(contentType)) {
92
+ if (AssetProcessor_1.isImage(fileType.mime)) {
87
93
  buffer = yield AssetProcessor_1.copyImageMeta(buffer, metadata);
88
94
  }
89
- if (AssetProcessor_1.isFont(contentType)) {
95
+ if (AssetProcessor_1.isFont(fileType.mime)) {
90
96
  AssetProcessor_1.copyFontMeta(buffer, metadata);
91
97
  }
92
98
  return buffer;
@@ -98,4 +104,4 @@ AssetProcessor = AssetProcessor_1 = __decorate([
98
104
  scoped(Lifecycle.ContainerScoped)
99
105
  ], AssetProcessor);
100
106
  export { AssetProcessor };
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2Fzc2V0LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sUUFBZ0IsTUFBTSxTQUFTLENBQUM7QUFDdkMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxPQUFPLENBQUM7QUFHM0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztBQUV6QixNQUFNLFNBQVMsR0FBRztJQUNkLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QjtJQUM5SSxXQUFXLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZUFBZTtDQUNyRSxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRTVELE1BQU0sU0FBUyxHQUFHO0lBQ2QsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxlQUFlO0lBQzNELFdBQVcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUztJQUNwRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsV0FBVztJQUNyRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxtQkFBbUI7Q0FDOUQsQ0FBQztJQUlXLGNBQWMsNEJBQWQsY0FBYztJQUV2QixNQUFNLENBQU8sV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFpQjs7WUFDdEQsSUFBSTtnQkFDQSxRQUFRLEdBQUcsQ0FBQyxN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ZWN0YWJsZSwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQgZm9udEtpdF8sIHtGb250fSBmcm9tIFwiZm9udGtpdFwiO1xyXG5pbXBvcnQge2Zyb21CdWZmZXJ9IGZyb20gXCJmaWxlLXR5cGVcIjtcclxuaW1wb3J0IHNoYXJwXyBmcm9tIFwic2hhcnBcIjtcclxuaW1wb3J0IHtGb250Rm9ybWF0LCBJQXNzZXRNZXRhfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5jb25zdCBzaGFycCA9IHNoYXJwXztcclxuY29uc3QgZm9udEtpdCA9IGZvbnRLaXRfO1xyXG5cclxuY29uc3QgZm9udFR5cGVzID0gW1xyXG4gICAgXCJhcHBsaWNhdGlvbi9mb250LXdvZmZcIiwgXCJhcHBsaWNhdGlvbi9mb250LXdvZmYyXCIsIFwiYXBwbGljYXRpb24veC1mb250LW9wZW50eXBlXCIsIFwiYXBwbGljYXRpb24veC1mb250LXRydWV0eXBlXCIsIFwiYXBwbGljYXRpb24veC1mb250LWRhdGFmb3JrXCIsXHJcbiAgICBcImZvbnQvd29mZlwiLCBcImZvbnQvd29mZjJcIiwgXCJmb250L290ZlwiLCBcImZvbnQvdHRmXCIsIFwiZm9udC9kYXRhZm9ya1wiXHJcbl07XHJcblxyXG5jb25zdCBpbWFnZVR5cGVzID0gW1wiaW1hZ2UvanBlZ1wiLCBcImltYWdlL2pwZ1wiLCBcImltYWdlL3BuZ1wiXTtcclxuXHJcbmNvbnN0IGZvbnRQcm9wcyA9IFtcclxuICAgIFwicG9zdHNjcmlwdE5hbWVcIiwgXCJmdWxsTmFtZVwiLCBcImZhbWlseU5hbWVcIiwgXCJzdWJmYW1pbHlOYW1lXCIsXHJcbiAgICBcImNvcHlyaWdodFwiLCBcInZlcnNpb25cIiwgXCJ1bml0c1BlckVtXCIsIFwiYXNjZW50XCIsIFwiZGVzY2VudFwiLCBcImxpbmVHYXBcIixcclxuICAgIFwidW5kZXJsaW5lUG9zaXRpb25cIiwgXCJ1bmRlcmxpbmVUaGlja25lc3NcIiwgXCJpdGFsaWNBbmdsZVwiLCBcImNhcEhlaWdodFwiLFxyXG4gICAgXCJ4SGVpZ2h0XCIsIFwibnVtR2x5cGhzXCIsIFwiY2hhcmFjdGVyU2V0XCIsIFwiYXZhaWxhYmxlRmVhdHVyZXNcIlxyXG5dO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBBc3NldFByb2Nlc3NvciB7XHJcblxyXG4gICAgc3RhdGljIGFzeW5jIGdldE1pbWVUeXBlKGJ1ZmZlcjogQnVmZmVyLCBtaW1lVHlwZT86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbWltZVR5cGUgPSAoYXdhaXQgZnJvbUJ1ZmZlcihidWZmZXIpKS5taW1lO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgYENhbid0IGRldGVybWluZSBtaW1lIHR5cGVgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBkZXRlcm1pbmUgbWltZSB0eXBlYCwgZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtaW1lVHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZXh0cmFjdEZvbnRGb3JtYXQoZm9udDogRm9udCk6IEZvbnRGb3JtYXQge1xyXG4gICAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IGZvbnQuY29uc3RydWN0b3IubmFtZTtcclxuICAgICAgICBjb25zdCB0YWc6IHN0cmluZyAgPSBmb250W1wiZGlyZWN0b3J5XCJdLnRhZztcclxuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcclxuICAgICAgICAgICAgY2FzZSBcIlRURkZvbnRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0YWcgPT09IFwiT1RUT1wiID8gXCJvcGVudHlwZVwiIDogXCJ0cnVldHlwZVwiO1xyXG4gICAgICAgICAgICBjYXNlIFwiV09GRjJGb250XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ3b2ZmMlwiO1xyXG4gICAgICAgICAgICBjYXNlIFwiV09GRkZvbnRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIndvZmZcIjtcclxuICAgICAgICAgICAgY2FzZSBcIkRGb250XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJkYXRhZm9ya1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNJbWFnZShjb250ZW50VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGltYWdlVHlwZXMuaW5kZXhPZihjb250ZW50VHlwZSkgPj0gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYXN5bmMgY29weUltYWdlTWV0YShidWZmZXI6IEJ1ZmZlciwgbWV0YWRhdGE6IElBc3NldE1ldGEpOiBQcm9taXNlPEJ1ZmZlcj4ge1xyXG4gICAgICAgIGNvbnN0IG91dHB1dCA9IGF3YWl0IHNoYXJwKGJ1ZmZlcikucm90YXRlKCkudG9CdWZmZXIoe3Jlc29sdmVXaXRoT2JqZWN0OiB0cnVlfSk7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihtZXRhZGF0YSwgb3V0cHV0LmluZm8pO1xyXG4gICAgICAgIHJldHVybiBvdXRwdXQuZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNGb250KGNvbnRlbnRUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gZm9udFR5cGVzLmluZGV4T2YoY29udGVudFR5cGUpID49IDA7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNvcHlGb250TWV0YShidWZmZXI6IEJ1ZmZlciwgbWV0YWRhdGE6IElBc3NldE1ldGEpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBmb250OiBGb250ID0gZm9udEtpdC5jcmVhdGUoYnVmZmVyKTtcclxuICAgICAgICBtZXRhZGF0YS5mb3JtYXQgPSBBc3NldFByb2Nlc3Nvci5leHRyYWN0Rm9udEZvcm1hdChmb250KTtcclxuICAgICAgICBmb250UHJvcHMuZm9yRWFjaChwcm9wID0+IHtcclxuICAgICAgICAgICAgbWV0YWRhdGFbcHJvcF0gPSBmb250W3Byb3BdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHByb2Nlc3MoYnVmZmVyOiBCdWZmZXIsIG1ldGFkYXRhOiBJQXNzZXRNZXRhLCBjb250ZW50VHlwZTogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+IHtcclxuICAgICAgICBpZiAoQXNzZXRQcm9jZXNzb3IuaXNJbWFnZShjb250ZW50VHlwZSkpIHtcclxuICAgICAgICAgICAgYnVmZmVyID0gYXdhaXQgQXNzZXRQcm9jZXNzb3IuY29weUltYWdlTWV0YShidWZmZXIsIG1ldGFkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKEFzc2V0UHJvY2Vzc29yLmlzRm9udChjb250ZW50VHlwZSkpIHtcclxuICAgICAgICAgICAgQXNzZXRQcm9jZXNzb3IuY29weUZvbnRNZXRhKGJ1ZmZlciwgbWV0YWRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYnVmZmVyO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2Fzc2V0LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sUUFBZ0IsTUFBTSxTQUFTLENBQUM7QUFDdkMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxPQUFPLENBQUM7QUFHM0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztBQUV6QixNQUFNLFNBQVMsR0FBRztJQUNkLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QjtJQUM5SSxXQUFXLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZUFBZTtDQUNyRSxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRTVELE1BQU0sU0FBUyxHQUFHO0lBQ2QsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxlQUFlO0lBQzNELFdBQVcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUztJQUNwRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsV0FBVztJQUNyRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxtQkFBbUI7Q0FDOUQsQ0FBQztJQUlXLGNBQWMsNEJBQWQsY0FBYztJQUVmLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFlO1FBQzVDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFB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LFFBQW1COztZQUNuRSxJQUFJLGdCQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxHQUFHLE1BQU0sZ0JBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ2pFO1lBQ0QsSUFBSSxnQkFBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3RDLGdCQUFjLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQzthQUNqRDtZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7S0FBQTtDQUNKLENBQUE7QUFyRVksY0FBYztJQUYxQixVQUFVLEVBQUU7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztHQUNyQixjQUFjLENBcUUxQjtTQXJFWSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBMaWZlY3ljbGUsIHNjb3BlZH0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCBmb250S2l0Xywge0ZvbnR9IGZyb20gXCJmb250a2l0XCI7XHJcbmltcG9ydCB7ZnJvbUJ1ZmZlcn0gZnJvbSBcImZpbGUtdHlwZVwiO1xyXG5pbXBvcnQgc2hhcnBfIGZyb20gXCJzaGFycFwiO1xyXG5pbXBvcnQge0ZvbnRGb3JtYXQsIElBc3NldE1ldGEsIElGaWxlVHlwZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuY29uc3Qgc2hhcnAgPSBzaGFycF87XHJcbmNvbnN0IGZvbnRLaXQgPSBmb250S2l0XztcclxuXHJcbmNvbnN0IGZvbnRUeXBlcyA9IFtcclxuICAgIFwiYXBwbGljYXRpb24vZm9udC13b2ZmXCIsIFwiYXBwbGljYXRpb24vZm9udC13b2ZmMlwiLCBcImFwcGxpY2F0aW9uL3gtZm9udC1vcGVudHlwZVwiLCBcImFwcGxpY2F0aW9uL3gtZm9udC10cnVldHlwZVwiLCBcImFwcGxpY2F0aW9uL3gtZm9udC1kYXRhZm9ya1wiLFxyXG4gICAgXCJmb250L3dvZmZcIiwgXCJmb250L3dvZmYyXCIsIFwiZm9udC9vdGZcIiwgXCJmb250L3R0ZlwiLCBcImZvbnQvZGF0YWZvcmtcIlxyXG5dO1xyXG5cclxuY29uc3QgaW1hZ2VUeXBlcyA9IFtcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9wbmdcIl07XHJcblxyXG5jb25zdCBmb250UHJvcHMgPSBbXHJcbiAgICBcInBvc3RzY3JpcHROYW1lXCIsIFwiZnVsbE5hbWVcIiwgXCJmYW1pbHlOYW1lXCIsIFwic3ViZmFtaWx5TmFtZVwiLFxyXG4gICAgXCJjb3B5cmlnaHRcIiwgXCJ2ZXJzaW9uXCIsIFwidW5pdHNQZXJFbVwiLCBcImFzY2VudFwiLCBcImRlc2NlbnRcIiwgXCJsaW5lR2FwXCIsXHJcbiAgICBcInVuZGVybGluZVBvc2l0aW9uXCIsIFwidW5kZXJsaW5lVGhpY2tuZXNzXCIsIFwiaXRhbGljQW5nbGVcIiwgXCJjYXBIZWlnaHRcIixcclxuICAgIFwieEhlaWdodFwiLCBcIm51bUdseXBoc1wiLCBcImNoYXJhY3RlclNldFwiLCBcImF2YWlsYWJsZUZlYXR1cmVzXCJcclxuXTtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQHNjb3BlZChMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKVxyXG5leHBvcnQgY2xhc3MgQXNzZXRQcm9jZXNzb3Ige1xyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGNoZWNrVGV4dEZpbGVUeXBlKHR5cGU6IElGaWxlVHlwZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0eXBlLm1pbWUuaW5kZXhPZihcInRleHRcIikgPj0gMCB8fCB0eXBlLm1pbWUuaW5kZXhPZihcInhtbFwiKSA+PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGZpeFRleHRGaWxlVHlwZSh0eXBlOiBJRmlsZVR5cGUsIGJ1ZmZlcjogQnVmZmVyKTogSUZpbGVUeXBlIHtcclxuICAgICAgICBjb25zdCB0ZXh0ID0gYnVmZmVyLnRvU3RyaW5nKFwidXRmOFwiKTtcclxuICAgICAgICBpZiAodGV4dC5pbmRleE9mKFwiPHN2Z1wiKSA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7ZXh0OiBcInN2Z1wiLCBtaW1lOiBcImltYWdlL3N2Zyt4bWxcIn07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBhc3luYyBmaWxlVHlwZUZyb21CdWZmZXIoYnVmZmVyOiBCdWZmZXIpOiBQcm9taXNlPElGaWxlVHlwZT4ge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSAoYXdhaXQgZnJvbUJ1ZmZlcihidWZmZXIpID8/IHtleHQ6IFwidHh0XCIsIG1pbWU6IFwidGV4dC9wbGFpblwifSkgYXMgSUZpbGVUeXBlO1xyXG4gICAgICAgIGlmIChBc3NldFByb2Nlc3Nvci5jaGVja1RleHRGaWxlVHlwZSh0eXBlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gQXNzZXRQcm9jZXNzb3IuZml4VGV4dEZpbGVUeXBlKHR5cGUsIGJ1ZmZlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBleHRyYWN0Rm9udEZvcm1hdChmb250OiBGb250KTogRm9udEZvcm1hdCB7XHJcbiAgICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gZm9udC5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgICAgIGNvbnN0IHRhZzogc3RyaW5nICA9IGZvbnRbXCJkaXJlY3RvcnlcIl0udGFnO1xyXG4gICAgICAgIHN3aXRjaCAobmFtZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiVFRGRm9udFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhZyA9PT0gXCJPVFRPXCIgPyBcIm9wZW50eXBlXCIgOiBcInRydWV0eXBlXCI7XHJcbiAgICAgICAgICAgIGNhc2UgXCJXT0ZGMkZvbnRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIndvZmYyXCI7XHJcbiAgICAgICAgICAgIGNhc2UgXCJXT0ZGRm9udFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwid29mZlwiO1xyXG4gICAgICAgICAgICBjYXNlIFwiREZvbnRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImRhdGFmb3JrXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0ltYWdlKGNvbnRlbnRUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaW1hZ2VUeXBlcy5pbmRleE9mKGNvbnRlbnRUeXBlKSA+PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBhc3luYyBjb3B5SW1hZ2VNZXRhKGJ1ZmZlcjogQnVmZmVyLCBtZXRhZGF0YTogSUFzc2V0TWV0YSk6IFByb21pc2U8QnVmZmVyPiB7XHJcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgc2hhcnAoYnVmZmVyKS5yb3RhdGUoKS50b0J1ZmZlcih7cmVzb2x2ZVdpdGhPYmplY3Q6IHRydWV9KTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKG1ldGFkYXRhLCBvdXRwdXQuaW5mbyk7XHJcbiAgICAgICAgcmV0dXJuIG91dHB1dC5kYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0ZvbnQoY29udGVudFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBmb250VHlwZXMuaW5kZXhPZihjb250ZW50VHlwZSkgPj0gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29weUZvbnRNZXRhKGJ1ZmZlcjogQnVmZmVyLCBtZXRhZGF0YTogSUFzc2V0TWV0YSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZvbnQ6IEZvbnQgPSBmb250S2l0LmNyZWF0ZShidWZmZXIpO1xyXG4gICAgICAgIG1ldGFkYXRhLmZvcm1hdCA9IEFzc2V0UHJvY2Vzc29yLmV4dHJhY3RGb250Rm9ybWF0KGZvbnQpO1xyXG4gICAgICAgIGZvbnRQcm9wcy5mb3JFYWNoKHByb3AgPT4ge1xyXG4gICAgICAgICAgICBtZXRhZGF0YVtwcm9wXSA9IGZvbnRbcHJvcF07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcHJvY2VzcyhidWZmZXI6IEJ1ZmZlciwgbWV0YWRhdGE6IElBc3NldE1ldGEsIGZpbGVUeXBlOiBJRmlsZVR5cGUpOiBQcm9taXNlPEJ1ZmZlcj4ge1xyXG4gICAgICAgIGlmIChBc3NldFByb2Nlc3Nvci5pc0ltYWdlKGZpbGVUeXBlLm1pbWUpKSB7XHJcbiAgICAgICAgICAgIGJ1ZmZlciA9IGF3YWl0IEFzc2V0UHJvY2Vzc29yLmNvcHlJbWFnZU1ldGEoYnVmZmVyLCBtZXRhZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBc3NldFByb2Nlc3Nvci5pc0ZvbnQoZmlsZVR5cGUubWltZSkpIHtcclxuICAgICAgICAgICAgQXNzZXRQcm9jZXNzb3IuY29weUZvbnRNZXRhKGJ1ZmZlciwgbWV0YWRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYnVmZmVyO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==