@kirbydesign/designsystem 8.5.2-duplicated-modal-controller.0 → 8.5.2-duplicated-modal-controller.1

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.
@@ -133,13 +133,14 @@ export class ModalController {
133
133
  }
134
134
  }
135
135
  /** @nocollapse */ ModalController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalController, deps: [{ token: i1.ModalHelper }, { token: i2.ActionSheetHelper }, { token: i3.AlertHelper }, { token: i4.ModalNavigationService }, { token: ROUTES, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
136
- /** @nocollapse */ ModalController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalController });
136
+ /** @nocollapse */ ModalController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalController, providedIn: 'root' });
137
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalController, decorators: [{
138
- type: Injectable
138
+ type: Injectable,
139
+ args: [{ providedIn: 'root' }]
139
140
  }], ctorParameters: function () { return [{ type: i1.ModalHelper }, { type: i2.ActionSheetHelper }, { type: i3.AlertHelper }, { type: i4.ModalNavigationService }, { type: undefined, decorators: [{
140
141
  type: Optional
141
142
  }, {
142
143
  type: Inject,
143
144
  args: [ROUTES]
144
145
  }] }]; } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL21vZGFsL3NyYy9tb2RhbC9zZXJ2aWNlcy9tb2RhbC5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQWtDLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBRTdDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUVoQixNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNVLFdBQXdCLEVBQ3hCLGlCQUFvQyxFQUNwQyxXQUF3QixFQUN4QixzQkFBOEMsRUFDbEIsV0FBcUI7UUFKakQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFVO1FBVG5ELGFBQVEsR0FBYyxFQUFFLENBQUM7UUFDaEIsb0NBQStCLEdBQUcsNENBQTRDLENBQUM7UUFDeEYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFTckMsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLG1CQUE0QjtRQUMzQyxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FDMUUsSUFBSSxDQUFDLFdBQVcsRUFDaEIsbUJBQW1CLENBQ3BCLENBQUM7UUFDRixJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyx3SEFBd0g7SUFDdEwsQ0FBQztJQUVPLHFCQUFxQixDQUFDLG9CQUFzRDtRQUNsRixNQUFNLG1CQUFtQixHQUFHLEdBQUcsRUFBRTtZQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUN6RCxDQUFDLENBQUM7UUFFRixNQUFNLDJCQUEyQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FDM0QsTUFBTSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLEVBQ2xFLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FDMUQsQ0FBQztRQUVGLG9CQUFvQjthQUNqQixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUN6QzthQUNBLFNBQVMsQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsRUFBRTtZQUN4QyxJQUFJLG9CQUFvQixDQUFDLFVBQVUsRUFBRTtnQkFDbkMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUN2QixvQkFBb0IsQ0FBQyxLQUFLLEVBQzFCLDJCQUEyQixFQUMzQixvQkFBb0IsQ0FBQyxTQUFTLEVBQzlCLG1CQUFtQixDQUNwQixDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxzQkFBMkM7UUFDekUsc0JBQXNCO2FBQ25CLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsK0VBQStFO1NBQ3ZIO2FBQ0EsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQ3BCLE1BQW1CLEVBQ25CLE9BQThCLEVBQzlCLFdBQXlCO1FBRXpCLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUMvQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQzNELE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlLENBQzFCLElBQXVCLEVBQ3ZCLFdBQW9CLEVBQ3BCLFdBQXlCO1FBRXpCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CLENBQUMsWUFBb0IsRUFBRSxXQUFvQjtRQUN6RSxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQzFCLFVBQTBCLEVBQzFCLDJCQUF1RCxFQUN2RCxTQUFvQixFQUNwQixXQUFpQztRQUVqQyxNQUFNLE1BQU0sR0FBZ0I7WUFDMUIsU0FBUyxFQUFFLElBQUk7WUFDZixVQUFVLEVBQUUsVUFBVTtZQUN0QiwyQkFBMkIsRUFBRSwyQkFBMkI7WUFDeEQsTUFBTSxFQUFFLE9BQU8sRUFBRSx3RUFBd0U7U0FDMUYsQ0FBQztRQUNGLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUMvQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxFQUN0RSxJQUFJLEVBQ0osV0FBVyxDQUNaLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FDMUIsTUFBeUIsRUFDekIsT0FBOEI7UUFFOUIsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQy9CLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQ3BELE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBbUIsRUFBRSxPQUFtQztRQUM3RSxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU8sS0FBSyxDQUFDLHNCQUFzQixDQUNsQyxXQUFtQyxFQUNuQyxjQUFxQyxFQUNyQyxrQkFBeUM7UUFFekMsTUFBTSxPQUFPLEdBQUcsTUFBTSxXQUFXLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFNUIsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtZQUM1QyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDdkU7UUFFRCxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxPQUFPLGNBQWMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3hDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDNUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSx5QkFBeUI7UUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FDVCx5R0FBeUcsQ0FDMUcsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQVU7UUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQztTQUN2RDtRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsUUFBa0M7UUFDbkQsT0FBTyxDQUFDLElBQUksQ0FDViwwSEFBMEgsQ0FDM0gsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7U0FDdkQ7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYyxDQUFDLFFBQWtDO1FBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQ1YsZ0lBQWdJLENBQ2pJLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTztRQUNsQixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2xDLE1BQU0sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzsrSEFsTVUsZUFBZSwrSUFVSixNQUFNO21JQVZqQixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQVdOLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUm91dGVzLCBST1VURVMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgS2lyYnlBbmltYXRpb24gfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuaW1wb3J0IHsgTW9kYWxEYXRhLCBNb2RhbFJvdXRlQWN0aXZhdGlvbiwgT3ZlcmxheSB9IGZyb20gJy4uLy4uL21vZGFsLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWN0aW9uU2hlZXRDb25maWcgfSBmcm9tICcuLi9hY3Rpb24tc2hlZXQvY29uZmlnL2FjdGlvbi1zaGVldC1jb25maWcnO1xuaW1wb3J0IHsgQWxlcnRDb25maWcgfSBmcm9tICcuLi9hbGVydC9jb25maWcvYWxlcnQtY29uZmlnJztcblxuaW1wb3J0IHsgTW9kYWxOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL21vZGFsLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGFsLXdyYXBwZXInO1xuaW1wb3J0IHsgQWN0aW9uU2hlZXRIZWxwZXIgfSBmcm9tICcuL2FjdGlvbi1zaGVldC5oZWxwZXInO1xuaW1wb3J0IHsgQWxlcnRIZWxwZXIgfSBmcm9tICcuL2FsZXJ0LmhlbHBlcic7XG5pbXBvcnQgeyBNb2RhbEhlbHBlciB9IGZyb20gJy4vbW9kYWwuaGVscGVyJztcblxubGV0IGNvdW50ZXIgPSAwO1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgb3ZlcmxheXM6IE92ZXJsYXlbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IG5vT3ZlcmxheVJlZ2lzdGVyZWRFcnJvck1lc3NhZ2UgPSAnTm8gbW9kYWwgb3ZlcmxheXMgYXJlIGN1cnJlbnRseSByZWdpc3RlcmVkJztcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtb2RhbEhlbHBlcjogTW9kYWxIZWxwZXIsXG4gICAgcHJpdmF0ZSBhY3Rpb25TaGVldEhlbHBlcjogQWN0aW9uU2hlZXRIZWxwZXIsXG4gICAgcHJpdmF0ZSBhbGVydEhlbHBlcjogQWxlcnRIZWxwZXIsXG4gICAgcHJpdmF0ZSBtb2RhbE5hdmlnYXRpb25TZXJ2aWNlOiBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUk9VVEVTKSBwcml2YXRlIHJvdXRlQ29uZmlnOiBSb3V0ZXNbXVxuICApIHtcbiAgICBjb3VudGVyKys7XG4gICAgY29uc29sZS5sb2coYE1vZGFsQ29udHJvbGxlci5jb25zdHJ1Y3RvciAtIGluc3RhbmNlOiBbJHtjb3VudGVyfV1gKTtcbiAgfVxuXG4gIGFzeW5jIGluaXRpYWxpemUobW9kdWxlUm9vdFJvdXRlUGF0aD86IHN0cmluZykge1xuICAgIGNvbnN0IG1vZGFsTmF2aWdhdGlvbiA9IGF3YWl0IHRoaXMubW9kYWxOYXZpZ2F0aW9uU2VydmljZS5nZXRNb2RhbE5hdmlnYXRpb24oXG4gICAgICB0aGlzLnJvdXRlQ29uZmlnLFxuICAgICAgbW9kdWxlUm9vdFJvdXRlUGF0aFxuICAgICk7XG4gICAgdGhpcy5vbk1vZGFsUm91dGVBY3RpdmF0ZWQobW9kYWxOYXZpZ2F0aW9uLmFjdGl2YXRlZCQpO1xuICAgIHRoaXMub25Nb2RhbFJvdXRlRGVhY3RpdmF0ZWQobW9kYWxOYXZpZ2F0aW9uLmRlYWN0aXZhdGVkJCk7IC8vIFRPRE86IERvIHdlIHdhbnQgdG8gY2xvc2UgbW9kYWwgd2hlbiByb3V0aW5nIG91dCBvZiBtb2RhbCByb3V0ZT8gT3Igc2hvdWxkIHRoZSBjb2RlIHRoYXQgbmF2aWdhdGVzIGNsb3NlIHRoZSB3aW5kb3c/P1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1vZGFsUm91dGVBY3RpdmF0ZWQobW9kYWxSb3V0ZUFjdGl2YXRlZCQ6IE9ic2VydmFibGU8TW9kYWxSb3V0ZUFjdGl2YXRpb24+KSB7XG4gICAgY29uc3QgbmF2aWdhdGVPbldpbGxDbG9zZSA9ICgpID0+IHtcbiAgICAgIHRoaXMubW9kYWxOYXZpZ2F0aW9uU2VydmljZS5uYXZpZ2F0ZU91dE9mTW9kYWxPdXRsZXQoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkID0gbW9kYWxSb3V0ZUFjdGl2YXRlZCQucGlwZShcbiAgICAgIGZpbHRlcigobW9kYWxSb3V0ZUFjdGl2YXRpb24pID0+ICFtb2RhbFJvdXRlQWN0aXZhdGlvbi5pc05ld01vZGFsKSxcbiAgICAgIG1hcCgobW9kYWxSb3V0ZUFjdGl2YXRpb24pID0+IG1vZGFsUm91dGVBY3RpdmF0aW9uLnJvdXRlKVxuICAgICk7XG5cbiAgICBtb2RhbFJvdXRlQWN0aXZhdGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMub3ZlcmxheXMubGVuZ3RoID09PSAwKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAobW9kYWxSb3V0ZUFjdGl2YXRpb24pID0+IHtcbiAgICAgICAgaWYgKG1vZGFsUm91dGVBY3RpdmF0aW9uLmlzTmV3TW9kYWwpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNob3dNb2RhbFJvdXRlKFxuICAgICAgICAgICAgbW9kYWxSb3V0ZUFjdGl2YXRpb24ucm91dGUsXG4gICAgICAgICAgICBzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQsXG4gICAgICAgICAgICBtb2RhbFJvdXRlQWN0aXZhdGlvbi5tb2RhbERhdGEsXG4gICAgICAgICAgICBuYXZpZ2F0ZU9uV2lsbENsb3NlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uTW9kYWxSb3V0ZURlYWN0aXZhdGVkKG1vZGFsUm91dGVEZWFjdGl2YXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4pIHtcbiAgICBtb2RhbFJvdXRlRGVhY3RpdmF0ZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5vdmVybGF5cy5sZW5ndGggPiAwKSAvLyBUT0RPOiBUaGlzIGFsc28gZmlyZXMgd2hlbiBjbG9zaW5nIG92ZXJsYXkgLSBzaG91bGQgd2UgY2hlY2sgZm9yIGlzQ2xvc2luZz8/XG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5oaWRlQWxsKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93TW9kYWwoXG4gICAgY29uZmlnOiBNb2RhbENvbmZpZyxcbiAgICBvbkNsb3NlPzogKGRhdGE/OiBhbnkpID0+IHZvaWQsXG4gICAgYWxlcnRDb25maWc/OiBBbGVydENvbmZpZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNob3dBbmRSZWdpc3Rlck92ZXJsYXkoXG4gICAgICAoKSA9PiB0aGlzLm1vZGFsSGVscGVyLnNob3dNb2RhbFdpbmRvdyhjb25maWcsIGFsZXJ0Q29uZmlnKSxcbiAgICAgIG9uQ2xvc2VcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG5hdmlnYXRlVG9Nb2RhbChcbiAgICBwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBxdWVyeVBhcmFtcz86IFBhcmFtcyxcbiAgICBhbGVydENvbmZpZz86IEFsZXJ0Q29uZmlnXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UubmF2aWdhdGVUb01vZGFsKHBhdGgsIHF1ZXJ5UGFyYW1zLCBhbGVydENvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbmF2aWdhdGVXaXRoaW5Nb2RhbChyZWxhdGl2ZVBhdGg6IHN0cmluZywgcXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLm5hdmlnYXRlV2l0aGluTW9kYWwocmVsYXRpdmVQYXRoLCBxdWVyeVBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dNb2RhbFJvdXRlKFxuICAgIG1vZGFsUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJDogT2JzZXJ2YWJsZTxBY3RpdmF0ZWRSb3V0ZT4sXG4gICAgbW9kYWxEYXRhOiBNb2RhbERhdGEsXG4gICAgb25XaWxsQ2xvc2U6IChkYXRhPzogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbmZpZzogTW9kYWxDb25maWcgPSB7XG4gICAgICBjb21wb25lbnQ6IG51bGwsXG4gICAgICBtb2RhbFJvdXRlOiBtb2RhbFJvdXRlLFxuICAgICAgc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkOiBzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQsXG4gICAgICBmbGF2b3I6ICdtb2RhbCcsIC8vIFRvZG86IFNob3VsZCBpdCBiZSBwb3NzaWJsZSB0byBzcGVjaWZ5IGZsYXZvciBhcyBkYXRhIGluIFJvdXRlQ29uZmlnP1xuICAgIH07XG4gICAgYXdhaXQgdGhpcy5zaG93QW5kUmVnaXN0ZXJPdmVybGF5KFxuICAgICAgKCkgPT4gdGhpcy5tb2RhbEhlbHBlci5zaG93TW9kYWxXaW5kb3coY29uZmlnLCBtb2RhbERhdGE/LmFsZXJ0Q29uZmlnKSxcbiAgICAgIG51bGwsXG4gICAgICBvbldpbGxDbG9zZVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2hvd0FjdGlvblNoZWV0KFxuICAgIGNvbmZpZzogQWN0aW9uU2hlZXRDb25maWcsXG4gICAgb25DbG9zZT86IChkYXRhPzogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2hvd0FuZFJlZ2lzdGVyT3ZlcmxheShcbiAgICAgICgpID0+IHRoaXMuYWN0aW9uU2hlZXRIZWxwZXIuc2hvd0FjdGlvblNoZWV0KGNvbmZpZyksXG4gICAgICBvbkNsb3NlXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93QWxlcnQoY29uZmlnOiBBbGVydENvbmZpZywgb25DbG9zZT86IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNob3dBbmRSZWdpc3Rlck92ZXJsYXkoKCkgPT4gdGhpcy5hbGVydEhlbHBlci5zaG93QWxlcnQoY29uZmlnKSwgb25DbG9zZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dBbmRSZWdpc3Rlck92ZXJsYXkoXG4gICAgc2hvd092ZXJsYXk6ICgpID0+IFByb21pc2U8T3ZlcmxheT4sXG4gICAgb25DbG9zZU92ZXJsYXk/OiAoZGF0YT86IGFueSkgPT4gdm9pZCxcbiAgICBvbldpbGxDbG9zZU92ZXJsYXk/OiAoZGF0YT86IGFueSkgPT4gdm9pZFxuICApIHtcbiAgICBjb25zdCBvdmVybGF5ID0gYXdhaXQgc2hvd092ZXJsYXkoKTtcbiAgICBpZiAoIW92ZXJsYXkpIHJldHVybjtcblxuICAgIHRoaXMub3ZlcmxheXMucHVzaChvdmVybGF5KTtcblxuICAgIGlmICh0eXBlb2Ygb25XaWxsQ2xvc2VPdmVybGF5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvdmVybGF5Lm9uV2lsbERpc21pc3MudGhlbigoZXZlbnQpID0+IG9uV2lsbENsb3NlT3ZlcmxheShldmVudC5kYXRhKSk7XG4gICAgfVxuXG4gICAgb3ZlcmxheS5vbkRpZERpc21pc3MudGhlbigoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMub3ZlcmxheXMucG9wKCk7XG4gICAgICBpZiAodHlwZW9mIG9uQ2xvc2VPdmVybGF5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9uQ2xvc2VPdmVybGF5KGV2ZW50LmRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyUHJlc2VudGluZ0VsZW1lbnQoKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICAncmVnaXN0ZXJQcmVzZW50aW5nRWxlbWVudCBoYXMgYmVlbiBkZXByZWNhdGVkLiBJdCBpcyBubyBsb25nZXIgbmVlZGVkIHRvIHJlZ2lzdGVyIGEgcHJlc2VudGluZyBlbGVtZW50LidcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhpZGVUb3Btb3N0KGRhdGE/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBvdmVybGF5ID0gdGhpcy5vdmVybGF5c1t0aGlzLm92ZXJsYXlzLmxlbmd0aCAtIDFdO1xuICAgIGlmICghb3ZlcmxheSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMubm9PdmVybGF5UmVnaXN0ZXJlZEVycm9yTWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiBvdmVybGF5LmRpc21pc3MoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIGluIG5leHQgbWFqb3IgdmVyc2lvbi4gSW5qZWN0IE1vZGFsIGluIGVtYmVkZGVkIGNvbXBvbmVudCBhbmQgdXNlIE1vZGFsLnNjcm9sbFRvVG9wIGluc3RlYWQuXG4gICAqL1xuICBwdWJsaWMgc2Nyb2xsVG9Ub3AoZHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdNb2RhbENvbnRyb2xsZXIuc2Nyb2xsVG9Ub3AgaXMgZGVwcmVjYXRlZCAtIHBsZWFzZSBpbmplY3QgTW9kYWwgaW4gZW1iZWRkZWQgY29tcG9uZW50IGFuZCB1c2UgTW9kYWwuc2Nyb2xsVG9Ub3AgaW5zdGVhZC4nXG4gICAgKTtcbiAgICBjb25zdCBvdmVybGF5ID0gdGhpcy5vdmVybGF5c1t0aGlzLm92ZXJsYXlzLmxlbmd0aCAtIDFdO1xuICAgIGlmICghb3ZlcmxheSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMubm9PdmVybGF5UmVnaXN0ZXJlZEVycm9yTWVzc2FnZSk7XG4gICAgfVxuICAgIHRoaXMubW9kYWxIZWxwZXIuc2Nyb2xsVG9Ub3AodGhpcy5ub092ZXJsYXlSZWdpc3RlcmVkRXJyb3JNZXNzYWdlLCBkdXJhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIGluIG5leHQgbWFqb3IgdmVyc2lvbi4gSW5qZWN0IE1vZGFsIGluIGVtYmVkZGVkIGNvbXBvbmVudCBhbmQgdXNlIE1vZGFsLnNjcm9sbFRvQm90dG9tIGluc3RlYWQuXG4gICAqL1xuICBwdWJsaWMgc2Nyb2xsVG9Cb3R0b20oZHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdNb2RhbENvbnRyb2xsZXIuc2Nyb2xsVG9Cb3R0b20gaXMgZGVwcmVjYXRlZCAtIHBsZWFzZSBpbmplY3QgTW9kYWwgaW4gZW1iZWRkZWQgY29tcG9uZW50IGFuZCB1c2UgTW9kYWwuc2Nyb2xsVG9Cb3R0b20gaW5zdGVhZC4nXG4gICAgKTtcbiAgICBjb25zdCBvdmVybGF5ID0gdGhpcy5vdmVybGF5c1t0aGlzLm92ZXJsYXlzLmxlbmd0aCAtIDFdO1xuICAgIGlmICghb3ZlcmxheSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMubm9PdmVybGF5UmVnaXN0ZXJlZEVycm9yTWVzc2FnZSk7XG4gICAgfVxuICAgIHRoaXMubW9kYWxIZWxwZXIuc2Nyb2xsVG9Cb3R0b20odGhpcy5ub092ZXJsYXlSZWdpc3RlcmVkRXJyb3JNZXNzYWdlLCBkdXJhdGlvbik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGlkZUFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMub3ZlcmxheXMubWFwKGFzeW5jIChvdmVybGF5KSA9PiB7XG4gICAgICAgIGF3YWl0IG92ZXJsYXkuZGlzbWlzcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL21vZGFsL3NyYy9tb2RhbC9zZXJ2aWNlcy9tb2RhbC5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQWtDLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBRTdDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUVoQixNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNVLFdBQXdCLEVBQ3hCLGlCQUFvQyxFQUNwQyxXQUF3QixFQUN4QixzQkFBOEMsRUFDbEIsV0FBcUI7UUFKakQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFVO1FBVG5ELGFBQVEsR0FBYyxFQUFFLENBQUM7UUFDaEIsb0NBQStCLEdBQUcsNENBQTRDLENBQUM7UUFDeEYsYUFBUSxH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LENBQUM7SUFDL0UsQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYyxDQUFDLFFBQWtDO1FBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQ1YsZ0lBQWdJLENBQ2pJLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTztRQUNsQixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2xDLE1BQU0sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzsrSEFsTVUsZUFBZSwrSUFVSixNQUFNO21JQVZqQixlQUFlLGNBREYsTUFBTTsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVc3QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlcywgUk9VVEVTIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IE1vZGFsRGF0YSwgTW9kYWxSb3V0ZUFjdGl2YXRpb24sIE92ZXJsYXkgfSBmcm9tICcuLi8uLi9tb2RhbC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFjdGlvblNoZWV0Q29uZmlnIH0gZnJvbSAnLi4vYWN0aW9uLXNoZWV0L2NvbmZpZy9hY3Rpb24tc2hlZXQtY29uZmlnJztcbmltcG9ydCB7IEFsZXJ0Q29uZmlnIH0gZnJvbSAnLi4vYWxlcnQvY29uZmlnL2FsZXJ0LWNvbmZpZyc7XG5cbmltcG9ydCB7IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2RhbC1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9kYWxDb25maWcgfSBmcm9tICcuLi8uLi9tb2RhbC13cmFwcGVyJztcbmltcG9ydCB7IEFjdGlvblNoZWV0SGVscGVyIH0gZnJvbSAnLi9hY3Rpb24tc2hlZXQuaGVscGVyJztcbmltcG9ydCB7IEFsZXJ0SGVscGVyIH0gZnJvbSAnLi9hbGVydC5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWxIZWxwZXIgfSBmcm9tICcuL21vZGFsLmhlbHBlcic7XG5cbmxldCBjb3VudGVyID0gMDtcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb250cm9sbGVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBvdmVybGF5czogT3ZlcmxheVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9PdmVybGF5UmVnaXN0ZXJlZEVycm9yTWVzc2FnZSA9ICdObyBtb2RhbCBvdmVybGF5cyBhcmUgY3VycmVudGx5IHJlZ2lzdGVyZWQnO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsSGVscGVyOiBNb2RhbEhlbHBlcixcbiAgICBwcml2YXRlIGFjdGlvblNoZWV0SGVscGVyOiBBY3Rpb25TaGVldEhlbHBlcixcbiAgICBwcml2YXRlIGFsZXJ0SGVscGVyOiBBbGVydEhlbHBlcixcbiAgICBwcml2YXRlIG1vZGFsTmF2aWdhdGlvblNlcnZpY2U6IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChST1VURVMpIHByaXZhdGUgcm91dGVDb25maWc6IFJvdXRlc1tdXG4gICkge1xuICAgIGNvdW50ZXIrKztcbiAgICBjb25zb2xlLmxvZyhgTW9kYWxDb250cm9sbGVyLmNvbnN0cnVjdG9yIC0gaW5zdGFuY2U6IFske2NvdW50ZXJ9XWApO1xuICB9XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZShtb2R1bGVSb290Um91dGVQYXRoPzogc3RyaW5nKSB7XG4gICAgY29uc3QgbW9kYWxOYXZpZ2F0aW9uID0gYXdhaXQgdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmdldE1vZGFsTmF2aWdhdGlvbihcbiAgICAgIHRoaXMucm91dGVDb25maWcsXG4gICAgICBtb2R1bGVSb290Um91dGVQYXRoXG4gICAgKTtcbiAgICB0aGlzLm9uTW9kYWxSb3V0ZUFjdGl2YXRlZChtb2RhbE5hdmlnYXRpb24uYWN0aXZhdGVkJCk7XG4gICAgdGhpcy5vbk1vZGFsUm91dGVEZWFjdGl2YXRlZChtb2RhbE5hdmlnYXRpb24uZGVhY3RpdmF0ZWQkKTsgLy8gVE9ETzogRG8gd2Ugd2FudCB0byBjbG9zZSBtb2RhbCB3aGVuIHJvdXRpbmcgb3V0IG9mIG1vZGFsIHJvdXRlPyBPciBzaG91bGQgdGhlIGNvZGUgdGhhdCBuYXZpZ2F0ZXMgY2xvc2UgdGhlIHdpbmRvdz8/XG4gIH1cblxuICBwcml2YXRlIG9uTW9kYWxSb3V0ZUFjdGl2YXRlZChtb2RhbFJvdXRlQWN0aXZhdGVkJDogT2JzZXJ2YWJsZTxNb2RhbFJvdXRlQWN0aXZhdGlvbj4pIHtcbiAgICBjb25zdCBuYXZpZ2F0ZU9uV2lsbENsb3NlID0gKCkgPT4ge1xuICAgICAgdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLm5hdmlnYXRlT3V0T2ZNb2RhbE91dGxldCgpO1xuICAgIH07XG5cbiAgICBjb25zdCBzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQgPSBtb2RhbFJvdXRlQWN0aXZhdGVkJC5waXBlKFxuICAgICAgZmlsdGVyKChtb2RhbFJvdXRlQWN0aXZhdGlvbikgPT4gIW1vZGFsUm91dGVBY3RpdmF0aW9uLmlzTmV3TW9kYWwpLFxuICAgICAgbWFwKChtb2RhbFJvdXRlQWN0aXZhdGlvbikgPT4gbW9kYWxSb3V0ZUFjdGl2YXRpb24ucm91dGUpXG4gICAgKTtcblxuICAgIG1vZGFsUm91dGVBY3RpdmF0ZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5vdmVybGF5cy5sZW5ndGggPT09IDApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChtb2RhbFJvdXRlQWN0aXZhdGlvbikgPT4ge1xuICAgICAgICBpZiAobW9kYWxSb3V0ZUFjdGl2YXRpb24uaXNOZXdNb2RhbCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd01vZGFsUm91dGUoXG4gICAgICAgICAgICBtb2RhbFJvdXRlQWN0aXZhdGlvbi5yb3V0ZSxcbiAgICAgICAgICAgIHNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJCxcbiAgICAgICAgICAgIG1vZGFsUm91dGVBY3RpdmF0aW9uLm1vZGFsRGF0YSxcbiAgICAgICAgICAgIG5hdmlnYXRlT25XaWxsQ2xvc2VcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25Nb2RhbFJvdXRlRGVhY3RpdmF0ZWQobW9kYWxSb3V0ZURlYWN0aXZhdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPikge1xuICAgIG1vZGFsUm91dGVEZWFjdGl2YXRlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLm92ZXJsYXlzLmxlbmd0aCA+IDApIC8vIFRPRE86IFRoaXMgYWxzbyBmaXJlcyB3aGVuIGNsb3Npbmcgb3ZlcmxheSAtIHNob3VsZCB3ZSBjaGVjayBmb3IgaXNDbG9zaW5nPz9cbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmhpZGVBbGwoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNob3dNb2RhbChcbiAgICBjb25maWc6IE1vZGFsQ29uZmlnLFxuICAgIG9uQ2xvc2U/OiAoZGF0YT86IGFueSkgPT4gdm9pZCxcbiAgICBhbGVydENvbmZpZz86IEFsZXJ0Q29uZmlnXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2hvd0FuZFJlZ2lzdGVyT3ZlcmxheShcbiAgICAgICgpID0+IHRoaXMubW9kYWxIZWxwZXIuc2hvd01vZGFsV2luZG93KGNvbmZpZywgYWxlcnRDb25maWcpLFxuICAgICAgb25DbG9zZVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbmF2aWdhdGVUb01vZGFsKFxuICAgIHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIHF1ZXJ5UGFyYW1zPzogUGFyYW1zLFxuICAgIGFsZXJ0Q29uZmlnPzogQWxlcnRDb25maWdcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubW9kYWxOYXZpZ2F0aW9uU2VydmljZS5uYXZpZ2F0ZVRvTW9kYWwocGF0aCwgcXVlcnlQYXJhbXMsIGFsZXJ0Q29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBuYXZpZ2F0ZVdpdGhpbk1vZGFsKHJlbGF0aXZlUGF0aDogc3RyaW5nLCBxdWVyeVBhcmFtcz86IFBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UubmF2aWdhdGVXaXRoaW5Nb2RhbChyZWxhdGl2ZVBhdGgsIHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hvd01vZGFsUm91dGUoXG4gICAgbW9kYWxSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkOiBPYnNlcnZhYmxlPEFjdGl2YXRlZFJvdXRlPixcbiAgICBtb2RhbERhdGE6IE1vZGFsRGF0YSxcbiAgICBvbldpbGxDbG9zZTogKGRhdGE/OiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29uZmlnOiBNb2RhbENvbmZpZyA9IHtcbiAgICAgIGNvbXBvbmVudDogbnVsbCxcbiAgICAgIG1vZGFsUm91dGU6IG1vZGFsUm91dGUsXG4gICAgICBzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQ6IHNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJCxcbiAgICAgIGZsYXZvcjogJ21vZGFsJywgLy8gVG9kbzogU2hvdWxkIGl0IGJlIHBvc3NpYmxlIHRvIHNwZWNpZnkgZmxhdm9yIGFzIGRhdGEgaW4gUm91dGVDb25maWc/XG4gICAgfTtcbiAgICBhd2FpdCB0aGlzLnNob3dBbmRSZWdpc3Rlck92ZXJsYXkoXG4gICAgICAoKSA9PiB0aGlzLm1vZGFsSGVscGVyLnNob3dNb2RhbFdpbmRvdyhjb25maWcsIG1vZGFsRGF0YT8uYWxlcnRDb25maWcpLFxuICAgICAgbnVsbCxcbiAgICAgIG9uV2lsbENsb3NlXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93QWN0aW9uU2hlZXQoXG4gICAgY29uZmlnOiBBY3Rpb25TaGVldENvbmZpZyxcbiAgICBvbkNsb3NlPzogKGRhdGE/OiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zaG93QW5kUmVnaXN0ZXJPdmVybGF5KFxuICAgICAgKCkgPT4gdGhpcy5hY3Rpb25TaGVldEhlbHBlci5zaG93QWN0aW9uU2hlZXQoY29uZmlnKSxcbiAgICAgIG9uQ2xvc2VcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNob3dBbGVydChjb25maWc6IEFsZXJ0Q29uZmlnLCBvbkNsb3NlPzogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2hvd0FuZFJlZ2lzdGVyT3ZlcmxheSgoKSA9PiB0aGlzLmFsZXJ0SGVscGVyLnNob3dBbGVydChjb25maWcpLCBvbkNsb3NlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hvd0FuZFJlZ2lzdGVyT3ZlcmxheShcbiAgICBzaG93T3ZlcmxheTogKCkgPT4gUHJvbWlzZTxPdmVybGF5PixcbiAgICBvbkNsb3NlT3ZlcmxheT86IChkYXRhPzogYW55KSA9PiB2b2lkLFxuICAgIG9uV2lsbENsb3NlT3ZlcmxheT86IChkYXRhPzogYW55KSA9PiB2b2lkXG4gICkge1xuICAgIGNvbnN0IG92ZXJsYXkgPSBhd2FpdCBzaG93T3ZlcmxheSgpO1xuICAgIGlmICghb3ZlcmxheSkgcmV0dXJuO1xuXG4gICAgdGhpcy5vdmVybGF5cy5wdXNoKG92ZXJsYXkpO1xuXG4gICAgaWYgKHR5cGVvZiBvbldpbGxDbG9zZU92ZXJsYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG92ZXJsYXkub25XaWxsRGlzbWlzcy50aGVuKChldmVudCkgPT4gb25XaWxsQ2xvc2VPdmVybGF5KGV2ZW50LmRhdGEpKTtcbiAgICB9XG5cbiAgICBvdmVybGF5Lm9uRGlkRGlzbWlzcy50aGVuKChldmVudCkgPT4ge1xuICAgICAgdGhpcy5vdmVybGF5cy5wb3AoKTtcbiAgICAgIGlmICh0eXBlb2Ygb25DbG9zZU92ZXJsYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25DbG9zZU92ZXJsYXkoZXZlbnQuZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJQcmVzZW50aW5nRWxlbWVudCgpIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgICdyZWdpc3RlclByZXNlbnRpbmdFbGVtZW50IGhhcyBiZWVuIGRlcHJlY2F0ZWQuIEl0IGlzIG5vIGxvbmdlciBuZWVkZWQgdG8gcmVnaXN0ZXIgYSBwcmVzZW50aW5nIGVsZW1lbnQuJ1xuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGlkZVRvcG1vc3QoZGF0YT86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlzW3RoaXMub3ZlcmxheXMubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFvdmVybGF5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5ub092ZXJsYXlSZWdpc3RlcmVkRXJyb3JNZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIG92ZXJsYXkuZGlzbWlzcyhkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLiBJbmplY3QgTW9kYWwgaW4gZW1iZWRkZWQgY29tcG9uZW50IGFuZCB1c2UgTW9kYWwuc2Nyb2xsVG9Ub3AgaW5zdGVhZC5cbiAgICovXG4gIHB1YmxpYyBzY3JvbGxUb1RvcChkdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgJ01vZGFsQ29udHJvbGxlci5zY3JvbGxUb1RvcCBpcyBkZXByZWNhdGVkIC0gcGxlYXNlIGluamVjdCBNb2RhbCBpbiBlbWJlZGRlZCBjb21wb25lbnQgYW5kIHVzZSBNb2RhbC5zY3JvbGxUb1RvcCBpbnN0ZWFkLidcbiAgICApO1xuICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlzW3RoaXMub3ZlcmxheXMubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFvdmVybGF5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5ub092ZXJsYXlSZWdpc3RlcmVkRXJyb3JNZXNzYWdlKTtcbiAgICB9XG4gICAgdGhpcy5tb2RhbEhlbHBlci5zY3JvbGxUb1RvcCh0aGlzLm5vT3ZlcmxheVJlZ2lzdGVyZWRFcnJvck1lc3NhZ2UsIGR1cmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLiBJbmplY3QgTW9kYWwgaW4gZW1iZWRkZWQgY29tcG9uZW50IGFuZCB1c2UgTW9kYWwuc2Nyb2xsVG9Cb3R0b20gaW5zdGVhZC5cbiAgICovXG4gIHB1YmxpYyBzY3JvbGxUb0JvdHRvbShkdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgJ01vZGFsQ29udHJvbGxlci5zY3JvbGxUb0JvdHRvbSBpcyBkZXByZWNhdGVkIC0gcGxlYXNlIGluamVjdCBNb2RhbCBpbiBlbWJlZGRlZCBjb21wb25lbnQgYW5kIHVzZSBNb2RhbC5zY3JvbGxUb0JvdHRvbSBpbnN0ZWFkLidcbiAgICApO1xuICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlzW3RoaXMub3ZlcmxheXMubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFvdmVybGF5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5ub092ZXJsYXlSZWdpc3RlcmVkRXJyb3JNZXNzYWdlKTtcbiAgICB9XG4gICAgdGhpcy5tb2RhbEhlbHBlci5zY3JvbGxUb0JvdHRvbSh0aGlzLm5vT3ZlcmxheVJlZ2lzdGVyZWRFcnJvck1lc3NhZ2UsIGR1cmF0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoaWRlQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdGhpcy5vdmVybGF5cy5tYXAoYXN5bmMgKG92ZXJsYXkpID0+IHtcbiAgICAgICAgYXdhaXQgb3ZlcmxheS5kaXNtaXNzKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -6,12 +6,15 @@ import { Location } from '@angular/common';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/router";
8
8
  import * as i2 from "@angular/common";
9
+ let counter = 0;
9
10
  export class ModalNavigationService {
10
11
  constructor(router, route, location) {
11
12
  this.router = router;
12
13
  this.route = route;
13
14
  this.location = location;
14
15
  this.navigationEndListener$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd));
16
+ counter++;
17
+ console.log(`ModalNavigationService.constructor - instance: [${counter}]`);
15
18
  }
16
19
  isModalRoute(url) {
17
20
  return url.includes('(modal:');
@@ -255,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
255
258
  type: Injectable,
256
259
  args: [{ providedIn: 'root' }]
257
260
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.Location }]; } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vbW9kYWwvc3JjL21vZGFsLW5hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFpQixNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBSzNDLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0IsTUFBYyxFQUFVLEtBQXFCLEVBQVUsUUFBa0I7UUFBekUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTBMckYsMkJBQXNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0RCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQTBCLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQzFFLENBQUM7SUE1TDhGLENBQUM7SUFFakcsWUFBWSxDQUFDLEdBQVc7UUFDdEIsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDakMsT0FBTyxVQUFVLENBQUMsVUFBVSxFQUFFO1lB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LHFCQUFxQixDQUFDLENBQUM7WUFDakUsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BDLFVBQVUsRUFBRSxXQUFXO2FBQ3hCLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLHFCQUFxQztRQUM1RCxJQUFJLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFDL0MsT0FBTyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQ3BFLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs7c0lBM1VVLHNCQUFzQjswSUFBdEIsc0JBQXNCLGNBRFQsTUFBTTsyRkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBQYXJhbXMsIFJvdXRlLCBSb3V0ZXIsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFTVBUWSwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBwYWlyd2lzZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2RhbFJvdXRlQWN0aXZhdGlvbiwgTmF2aWdhdGlvbkRhdGEgfSBmcm9tICcuL21vZGFsLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWxlcnRDb25maWcgfSBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsTmF2aWdhdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24pIHt9XG5cbiAgaXNNb2RhbFJvdXRlKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHVybC5pbmNsdWRlcygnKG1vZGFsOicpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKTogQWN0aXZhdGVkUm91dGUge1xuICAgIGxldCBjaGlsZFJvdXRlID0gdGhpcy5yb3V0ZS5yb290O1xuICAgIHdoaWxlIChjaGlsZFJvdXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIGNoaWxkUm91dGUgPSBjaGlsZFJvdXRlLmZpcnN0Q2hpbGQ7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZFJvdXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRNb2RhbFJvdXRlcyhcbiAgICByb3V0ZUNvbmZpZzogUm91dGVzW10sXG4gICAgbW9kdWxlUm9vdFJvdXRlUGF0aD86IHN0cmluZ1xuICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgZmxhdHRlbmVkUm91dGVzOiBSb3V0ZXMgPSBbXS5jb25jYXQoLi4ucm91dGVDb25maWcpO1xuICAgIGxldCBtb2RhbFJvdXRlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBtb2R1bGVSb290UGF0aHMgPSBhd2FpdCB0aGlzLmdldE1vZHVsZVJvb3RQYXRoKGZsYXR0ZW5lZFJvdXRlcywgbW9kdWxlUm9vdFJvdXRlUGF0aCk7XG4gICAgaWYgKG1vZHVsZVJvb3RQYXRocykge1xuICAgICAgbW9kYWxSb3V0ZXMgPSB0aGlzLmdldE1vZGFsUm91dGVQYXRocyhmbGF0dGVuZWRSb3V0ZXMsIG1vZHVsZVJvb3RQYXRocyk7XG4gICAgfVxuICAgIHJldHVybiBtb2RhbFJvdXRlcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0TW9kdWxlUm9vdFBhdGgocm91dGVzOiBSb3V0ZXMsIG1vZHVsZVJvb3RSb3V0ZVBhdGg/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgaWYgKG1vZHVsZVJvb3RSb3V0ZVBhdGgpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWRQYXRocyA9IG1vZHVsZVJvb3RSb3V0ZVBhdGhcbiAgICAgICAgLnRyaW0oKVxuICAgICAgICAuc3BsaXQoJy8nKVxuICAgICAgICAuZmlsdGVyKChwYXRoKSA9PiAhIXBhdGgpO1xuICAgICAgY29uc3Qgcm9vdFBhdGggPSBbJyddO1xuICAgICAgcmV0dXJuIHJvb3RQYXRoLmNvbmNhdCh0cmltbWVkUGF0aHMpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRSb3V0ZVBhdGhzID0gYXdhaXQgdGhpcy5nZXRDdXJyZW50Um91dGVQYXRocygpO1xuICAgIGNvbnN0IG1vZHVsZVJvb3RQYXRocyA9IHRoaXMuZ2V0Um91dGVQYXRoc1dpdGhvdXRDaGlsZFNlZ21lbnRzKGN1cnJlbnRSb3V0ZVBhdGhzLCByb3V0ZXMpO1xuICAgIHJldHVybiBtb2R1bGVSb290UGF0aHM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEN1cnJlbnRSb3V0ZVBhdGhzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCByb290UGF0aCA9IFsnJ107XG4gICAgY29uc3QgY3VycmVudE5hdmlnYXRpb24gPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpO1xuXG4gICAgaWYgKCF0aGlzLnJvdXRlci5uYXZpZ2F0ZWQgJiYgIWN1cnJlbnROYXZpZ2F0aW9uKSB7XG4gICAgICAvLyBJZiByb3V0ZXIgaGFzbid0IG5hdmlnYXRlZCB5ZXQgYW5kIHdlIGFyZSBub3QgaW4gdGhlIG1pZGRsZSBvZiBuYXZpZ2F0aW5nLCBhc3N1bWUgcm9vdDpcbiAgICAgIHJldHVybiByb290UGF0aDtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudE5hdmlnYXRpb24pIHtcbiAgICAgIC8vIFdhaXQgZm9yIGN1cnJlbnQgbmF2aWdhdGlvbiB0byBmaW5pc2g6XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm5hdmlnYXRpb25FbmRMaXN0ZW5lciQpO1xuICAgIH1cblxuICAgIGxldCBjaGlsZFJvdXRlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5yb290O1xuICAgIHdoaWxlIChjaGlsZFJvdXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIGNoaWxkUm91dGUgPSBjaGlsZFJvdXRlLmZpcnN0Q2hpbGQ7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRCYWNrZHJvcFJvdXRlUGF0aCA9IGNoaWxkUm91dGUucGF0aEZyb21Sb290LmZpbHRlcihcbiAgICAgIChyb3V0ZSkgPT4gcm91dGUub3V0bGV0ICE9PSAnbW9kYWwnXG4gICAgKTtcblxuICAgIHJldHVybiByb290UGF0aC5jb25jYXQoXG4gICAgICAuLi5jdXJyZW50QmFja2Ryb3BSb3V0ZVBhdGgubWFwKChyb3V0ZSkgPT5cbiAgICAgICAgcm91dGUudXJsLmZpbHRlcigoc2VnbWVudCkgPT4gISFzZWdtZW50LnBhdGgpLm1hcCgoc2VnbWVudCkgPT4gc2VnbWVudC5wYXRoKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlUGF0aHNXaXRob3V0Q2hpbGRTZWdtZW50cyhyb3V0ZVBhdGhzOiBzdHJpbmdbXSwgcm91dGVzOiBSb3V0ZXMpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCFyb3V0ZVBhdGhzLmxlbmd0aCkgcmV0dXJuIHJvdXRlUGF0aHM7XG5cbiAgICBjb25zdCBtYXRjaGVkQ2hpbGRSb3V0ZSA9IHRoaXMuZmluZENoaWxkUm91dGVGb3JVcmwocm91dGVQYXRocy5qb2luKCcvJyksIHJvdXRlcyk7XG5cbiAgICBpZiAoIW1hdGNoZWRDaGlsZFJvdXRlKSByZXR1cm4gcm91dGVQYXRocztcblxuICAgIGNvbnN0IHN0YXJ0U2xhc2hSZWdleCA9IC9eXFwvLztcbiAgICBjb25zdCByZWxhdGl2ZUNoaWxkUm91dGUgPSBtYXRjaGVkQ2hpbGRSb3V0ZS5yZXBsYWNlKHN0YXJ0U2xhc2hSZWdleCwgJycpO1xuICAgIGNvbnN0IGNoaWxkU2VnbWVudENvdW50ID0gcmVsYXRpdmVDaGlsZFJvdXRlLnNwbGl0KCcvJykubGVuZ3RoO1xuICAgIGNvbnN0IHJvdXRlUGF0aHNXaXRob3V0Q2hpbGRTZWdtZW50cyA9IHJvdXRlUGF0aHMuc2xpY2UoMCwgLWNoaWxkU2VnbWVudENvdW50KTsgLy8gUmVtb3ZlIGNoaWxkIHNlZ21lbnRzIGZyb20gZW5kIG9mIHJvdXRlIHBhdGggYXJyYXlcbiAgICByZXR1cm4gcm91dGVQYXRoc1dpdGhvdXRDaGlsZFNlZ21lbnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQ2hpbGRSb3V0ZUZvclVybCh1cmw6IHN0cmluZywgcm91dGVzOiBSb3V0ZXMpIHtcbiAgICBjb25zdCBtb2R1bGVSZWxhdGl2ZVBhdGhzID0gdGhpcy5nZXRSb3V0ZVBhdGhzKHJvdXRlcywgWycnXSkuc29ydCgpLnJldmVyc2UoKTsgLy8gRW5zdXJlIGNoaWxkIHBhdGhzIGFyZSBldmFsdWF0ZWQgZmlyc3RcbiAgICBsZXQgbWF0Y2hlZENoaWxkUm91dGUgPSBtb2R1bGVSZWxhdGl2ZVBhdGhzLmZpbmQoKHBhdGgpID0+IHVybC5lbmRzV2l0aChwYXRoKSk7XG4gICAgaWYgKCFtYXRjaGVkQ2hpbGRSb3V0ZSkge1xuICAgICAgLy8gTm8gc3RhdGljIGNoaWxkIHJvdXRlIGZvdW5kIG1hdGNoaW5nIGN1cnJlbnQgcm91dGUgLSBsb29rIGZvciBjaGlsZCByb3V0ZSB3aXRoIHVybCBwYXJhbXM6XG4gICAgICBjb25zdCBleGFjdE1hdGNoID0gZmFsc2U7XG4gICAgICBtYXRjaGVkQ2hpbGRSb3V0ZSA9IG1vZHVsZVJlbGF0aXZlUGF0aHMuZmluZChcbiAgICAgICAgKHBhdGgpID0+XG4gICAgICAgICAgcGF0aC5pbmNsdWRlcygnLzonKSAmJiB0aGlzLnBhdGhDb250YWluc0NoaWxkUm91dGVXaXRoVXJsUGFyYW1zKHVybCwgcGF0aCwgZXhhY3RNYXRjaClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBtYXRjaGVkQ2hpbGRSb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0aENvbnRhaW5zQ2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXMoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGNoaWxkUm91dGVXaXRoVXJsUGFyYW1zOiBzdHJpbmcsXG4gICAgZXhhY3RNYXRjaDogYm9vbGVhblxuICApIHtcbiAgICBjb25zdCBwYXRoU2VnbWVudHMgPSBwYXRoLnNwbGl0KCcvJyk7XG4gICAgY29uc3Qgc3RhcnRTbGFzaFJlZ2V4ID0gL15cXC8vO1xuICAgIGxldCBjaGlsZFJvdXRlVG9NYXRjaCA9IGNoaWxkUm91dGVXaXRoVXJsUGFyYW1zO1xuICAgIGlmICghZXhhY3RNYXRjaCkge1xuICAgICAgY29uc3QgcmVsYXRpdmVDaGlsZFJvdXRlID0gY2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXMucmVwbGFjZShzdGFydFNsYXNoUmVnZXgsICcnKTtcbiAgICAgIGNoaWxkUm91dGVUb01hdGNoID0gcmVsYXRpdmVDaGlsZFJvdXRlO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZFJvdXRlU2VnbWVudHMgPSBjaGlsZFJvdXRlVG9NYXRjaC5zcGxpdCgnLycpO1xuICAgIC8vIE1hdGNoIGVhY2ggY2hpbGQgcm91dGUgc2VnbWVudCBhZ2FpbnN0IHVybFxuICAgIC8vIE1hdGNoIGJhY2t3YXJkcyBmcm9tIGVuZCB0byBzdGFydCBvZiBjaGlsZCByb3V0ZSwgaS5lLiBcInVybCBlbmRzIHdpdGggY2hpbGQgcm91dGVcIjpcbiAgICBjb25zdCBwYXRoQ29udGFpbnNDaGlsZFJvdXRlID0gY2hpbGRSb3V0ZVNlZ21lbnRzLnJldmVyc2UoKS5ldmVyeSgoY2hpbGRSb3V0ZVNlZ21lbnQpID0+IHtcbiAgICAgIGNvbnN0IHBhdGhTZWdtZW50ID0gcGF0aFNlZ21lbnRzLnBvcCgpO1xuICAgICAgLy8gdXJsIHBhcmFtcyAoZS5nLiBgLzppZC9gKSBhcmUgdHJlYXRlZCBhcyBhIG1hdGNoOlxuICAgICAgcmV0dXJuIGNoaWxkUm91dGVTZWdtZW50LnN0YXJ0c1dpdGgoJzonKSB8fCBjaGlsZFJvdXRlU2VnbWVudCA9PT0gcGF0aFNlZ21lbnQ7XG4gICAgfSk7XG4gICAgaWYgKGV4YWN0TWF0Y2gpIHtcbiAgICAgIC8vIE9ubHkgbWF0Y2ggaWYgd2UndmUgcmVhY2hlZCB0aGUgc3RhcnQgb2YgdGhlIHVybCB0byBtYXRjaCBhZ2FpbnN0OlxuICAgICAgcmV0dXJuIHBhdGhTZWdtZW50cy5sZW5ndGggPT09IDAgJiYgcGF0aENvbnRhaW5zQ2hpbGRSb3V0ZTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGhDb250YWluc0NoaWxkUm91dGU7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlUGF0aHMocm91dGVzOiBSb3V0ZXMsIHBhcmVudFBhdGg6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJvdXRlcylcbiAgICAgID8gKFtdIGFzIHN0cmluZ1tdKS5jb25jYXQoLi4ucm91dGVzLm1hcCgocm91dGUpID0+IHRoaXMuZ2V0Um91dGVQYXRoKHJvdXRlLCBwYXJlbnRQYXRoKSkpXG4gICAgICA6IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb3V0ZVBhdGgocm91dGU6IFJvdXRlLCBwYXJlbnRQYXRoOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByb3V0ZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHJvdXRlLm91dGxldCkgcmV0dXJuIHJvdXRlczsgLy8gRG9uJ3QgcmV0dXJuIHJlbGF0aXZlIHBhdGhzIGZvciBvdXRsZXQgcm91dGVzXG5cbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IFsuLi5wYXJlbnRQYXRoXTtcbiAgICBpZiAocm91dGUucGF0aCkge1xuICAgICAgY3VycmVudFBhdGgucHVzaChyb3V0ZS5wYXRoKTtcbiAgICAgIHJvdXRlcy5wdXNoKGN1cnJlbnRQYXRoLmpvaW4oJy8nKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvdXRlcy5jb25jYXQodGhpcy5nZXRSb3V0ZVBhdGhzKHJvdXRlLmNoaWxkcmVuLCBjdXJyZW50UGF0aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb2RhbFJvdXRlUGF0aChyb3V0ZTogUm91dGUsIHBhcmVudFBhdGg6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG1vZGFsT3V0bGV0TmFtZSA9ICdtb2RhbCc7XG4gICAgaWYgKCEhcm91dGUucGF0aCAmJiByb3V0ZS5vdXRsZXQgPT09IG1vZGFsT3V0bGV0TmFtZSkge1xuICAgICAgY29uc3QgbW9kYWxPdXRsZXRQYXRoID0gYCgke21vZGFsT3V0bGV0TmFtZX06JHtyb3V0ZS5wYXRofSlgO1xuICAgICAgY29uc3QgbW9kYWxSb3V0ZVBhdGggPSBbLi4ucGFyZW50UGF0aCwgbW9kYWxPdXRsZXRQYXRoXS5qb2luKCcvJyk7XG4gICAgICByZXR1cm4gW21vZGFsUm91dGVQYXRoXTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudFBhdGggPSBbLi4ucGFyZW50UGF0aF07XG4gICAgaWYgKHJvdXRlLnBhdGgpIHtcbiAgICAgIGN1cnJlbnRQYXRoLnB1c2gocm91dGUucGF0aCk7XG4gICAgfVxuICAgIHJldHVybiAoW10gYXMgc3RyaW5nW10pLmNvbmNhdCguLi50aGlzLmdldE1vZGFsUm91dGVQYXRocyhyb3V0ZS5jaGlsZHJlbiwgY3VycmVudFBhdGgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kYWxSb3V0ZVBhdGhzKHJvdXRlczogUm91dGVzLCBwYXJlbnRQYXRoOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShyb3V0ZXMpXG4gICAgICA/IChbXSBhcyBzdHJpbmdbXSkuY29uY2F0KC4uLnJvdXRlcy5tYXAoKHJvdXRlKSA9PiB0aGlzLmdldE1vZGFsUm91dGVQYXRoKHJvdXRlLCBwYXJlbnRQYXRoKSkpXG4gICAgICA6IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05ld01vZGFsV2luZG93KG5hdmlnYXRpb25FbmQ6IE5hdmlnYXRpb25FbmQpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XG4gICAgaWYgKCFjdXJyZW50TmF2aWdhdGlvbiB8fCAhY3VycmVudE5hdmlnYXRpb24ucHJldmlvdXNOYXZpZ2F0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgcHJldmlvdXNSb3V0ZVBhdGggPSAoXG4gICAgICBjdXJyZW50TmF2aWdhdGlvbi5wcmV2aW91c05hdmlnYXRpb24uZmluYWxVcmwgfHxcbiAgICAgIGN1cnJlbnROYXZpZ2F0aW9uLnByZXZpb3VzTmF2aWdhdGlvbi5leHRyYWN0ZWRVcmxcbiAgICApLnRvU3RyaW5nKCk7XG4gICAgY29uc3Qgd2FzTW9kYWxSb3V0ZSA9IHRoaXMuaXNNb2RhbFJvdXRlKHByZXZpb3VzUm91dGVQYXRoKTtcbiAgICBjb25zdCBpc01vZGFsUm91dGUgPSB0aGlzLmlzTW9kYWxSb3V0ZShuYXZpZ2F0aW9uRW5kLnVybEFmdGVyUmVkaXJlY3RzKTtcbiAgICBpZiAoIXdhc01vZGFsUm91dGUgJiYgaXNNb2RhbFJvdXRlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50TW9kYWxSb3V0ZVBhcmVudCA9IG5hdmlnYXRpb25FbmQudXJsQWZ0ZXJSZWRpcmVjdHMuc3BsaXQoJy8obW9kYWw6JylbMF07XG4gICAgY29uc3QgcHJldmlvdXNNb2RhbFJvdXRlUGFyZW50ID0gcHJldmlvdXNSb3V0ZVBhdGguc3BsaXQoJy8obW9kYWw6JylbMF07XG5cbiAgICByZXR1cm4gcHJldmlvdXNNb2RhbFJvdXRlUGFyZW50ICE9PSBjdXJyZW50TW9kYWxSb3V0ZVBhcmVudDtcbiAgfVxuXG4gIHByaXZhdGUgbmF2aWdhdGlvbkVuZExpc3RlbmVyJCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgIGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBOYXZpZ2F0aW9uRW5kID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgKTtcblxuICBwcml2YXRlIGFzeW5jIHdhaXRGb3JDdXJyZW50VGhlbkdldE5hdmlnYXRpb25FbmRTdHJlYW0oKTogUHJvbWlzZTxPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+PiB7XG4gICAgaWYgKHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnROYXZpZ2F0aW9uRW5kID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5uYXZpZ2F0aW9uRW5kTGlzdGVuZXIkKTtcbiAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25FbmRMaXN0ZW5lciQucGlwZShzdGFydFdpdGgoY3VycmVudE5hdmlnYXRpb25FbmQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvbkVuZExpc3RlbmVyJDtcbiAgfVxuXG4gIHByaXZhdGUgbW9kYWxSb3V0ZUFjdGl2YXRlZEZvcihcbiAgICBuYXZpZ2F0aW9uRW5kJDogT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPixcbiAgICBtb2RhbFJvdXRlU2V0OiBTZXQ8c3RyaW5nPixcbiAgICBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zOiBib29sZWFuXG4gICk6IE9ic2VydmFibGU8TW9kYWxSb3V0ZUFjdGl2YXRpb24+IHtcbiAgICByZXR1cm4gbmF2aWdhdGlvbkVuZCQucGlwZShcbiAgICAgIGZpbHRlcigobmF2aWdhdGlvbkVuZCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbFJvdXRlU2V0Q29udGFpbnNQYXRoKG1vZGFsUm91dGVTZXQsIG5hdmlnYXRpb25FbmQsIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXMpXG4gICAgICApLFxuICAgICAgbWFwKChuYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uU3RhdGUgPSB0aGlzLmxvY2F0aW9uLmdldFN0YXRlKCkgYXMgTmF2aWdhdGlvbkRhdGE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm91dGU6IHRoaXMuZ2V0Q3VycmVudEFjdGl2YXRlZFJvdXRlKCksXG4gICAgICAgICAgbW9kYWxEYXRhOiBsb2NhdGlvblN0YXRlLm5hdmlnYXRpb25EYXRhLFxuICAgICAgICAgIGlzTmV3TW9kYWw6IHRoaXMuaXNOZXdNb2RhbFdpbmRvdyhuYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9kYWxSb3V0ZURlYWN0aXZhdGVkRm9yKFxuICAgIG5hdmlnYXRpb25FbmQkOiBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+LFxuICAgIG1vZGFsUm91dGVTZXQ6IFNldDxzdHJpbmc+LFxuICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXM6IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5hdmlnYXRpb25FbmQkLnBpcGUoXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgZmlsdGVyKChbcHJldk5hdmlnYXRpb24sIF9dKSA9PlxuICAgICAgICB0aGlzLm1vZGFsUm91dGVTZXRDb250YWluc1BhdGgobW9kYWxSb3V0ZVNldCwgcHJldk5hdmlnYXRpb24sIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXMpXG4gICAgICApLCAvLyBPbmx5IGVtaXQgaWYgcHJldmlvdXMgcm91dGUgd2FzIG1vZGFsXG4gICAgICBtYXAoKFtfLCBjdXJyZW50TmF2aWdhdGlvbl0pID0+IHtcbiAgICAgICAgY29uc3QgaXNOZXdNb2RhbFJvdXRlID0gdGhpcy5pc01vZGFsUm91dGUoY3VycmVudE5hdmlnYXRpb24udXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgICAgICAvLyBEZWFjdGl2YXRlIG1vZGFsIHJvdXRlIGlmIG5ldyByb3V0ZSBpcyBOT1QgbW9kYWwgT1IgaXMgb3V0c2lkZSBjdXJyZW50IHBhcmVudCByb3V0ZTpcbiAgICAgICAgcmV0dXJuICFpc05ld01vZGFsUm91dGUgfHwgdGhpcy5pc05ld01vZGFsV2luZG93KGN1cnJlbnROYXZpZ2F0aW9uKTtcbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKChpc0RlYWN0aXZhdGlvbikgPT4gaXNEZWFjdGl2YXRpb24pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9kYWxSb3V0ZVNldENvbnRhaW5zUGF0aChcbiAgICBtb2RhbFJvdXRlU2V0OiBTZXQ8c3RyaW5nPixcbiAgICBuYXZpZ2F0aW9uRW5kOiBOYXZpZ2F0aW9uRW5kLFxuICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXM6IGJvb2xlYW5cbiAgKSB7XG4gICAgY29uc3QgcGF0aG5hbWUgPSBuYXZpZ2F0aW9uRW5kLnVybEFmdGVyUmVkaXJlY3RzLnNwbGl0KCc/JylbMF07XG4gICAgbGV0IGhhc1JvdXRlID0gbW9kYWxSb3V0ZVNldC5oYXMocGF0aG5hbWUpO1xuICAgIGlmICghaGFzUm91dGUgJiYgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtcykge1xuICAgICAgLy8gVXNlIGBmb3IgLi4uIG9mYCBpbnN0ZWFkIG9mIGBmb3JFYWNoYCBzbyB3ZSBjYW4gYnJlYWsgb3V0IG9mIHRoZSBsb29wIGlmIHJvdXRlIGlzIGZvdW5kOlxuICAgICAgZm9yIChjb25zdCByb3V0ZSBvZiBtb2RhbFJvdXRlU2V0KSB7XG4gICAgICAgIGNvbnN0IGV4YWN0TWF0Y2ggPSB0cnVlO1xuICAgICAgICBjb25zdCByb3V0ZU1hdGNoZXNQYXRoID0gdGhpcy5wYXRoQ29udGFpbnNDaGlsZFJvdXRlV2l0aFVybFBhcmFtcyhcbiAgICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICBleGFjdE1hdGNoXG4gICAgICAgICk7XG4gICAgICAgIGlmIChyb3V0ZU1hdGNoZXNQYXRoKSB7XG4gICAgICAgICAgaGFzUm91dGUgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYXNSb3V0ZTtcbiAgfVxuXG4gIGFzeW5jIGdldE1vZGFsTmF2aWdhdGlvbihcbiAgICByb3V0ZUNvbmZpZzogUm91dGVzW10sXG4gICAgbW9kdWxlUm9vdFJvdXRlUGF0aD86IHN0cmluZ1xuICApOiBQcm9taXNlPHsgYWN0aXZhdGVkJDogT2JzZXJ2YWJsZTxNb2RhbFJvdXRlQWN0aXZhdGlvbj47IGRlYWN0aXZhdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiB9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocm91dGVDb25maWcpKSB7XG4gICAgICBjb25zdCBuYXZpZ2F0aW9uRW5kJCA9IGF3YWl0IHRoaXMud2FpdEZvckN1cnJlbnRUaGVuR2V0TmF2aWdhdGlvbkVuZFN0cmVhbSgpO1xuICAgICAgY29uc3QgbW9kYWxSb3V0ZXMgPSBhd2FpdCB0aGlzLmdldE1vZGFsUm91dGVzKHJvdXRlQ29uZmlnLCBtb2R1bGVSb290Um91dGVQYXRoKTtcbiAgICAgIGNvbnN0IGhhc01vZGFsUm91dGVzID0gbW9kYWxSb3V0ZXMubGVuZ3RoID4gMDtcbiAgICAgIGlmIChoYXNNb2RhbFJvdXRlcykge1xuICAgICAgICBjb25zdCBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zID0gbW9kYWxSb3V0ZXMuc29tZSgocm91dGUpID0+IHJvdXRlLmluY2x1ZGVzKCcvOicpKTtcbiAgICAgICAgY29uc3QgbW9kYWxSb3V0ZVNldCA9IG5ldyBTZXQobW9kYWxSb3V0ZXMpO1xuICAgICAgICBjb25zdCBhY3RpdmF0ZWQkID0gdGhpcy5tb2RhbFJvdXRlQWN0aXZhdGVkRm9yKFxuICAgICAgICAgIG5hdmlnYXRpb25FbmQkLFxuICAgICAgICAgIG1vZGFsUm91dGVTZXQsXG4gICAgICAgICAgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtc1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBkZWFjdGl2YXRlZCQgPSB0aGlzLm1vZGFsUm91dGVEZWFjdGl2YXRlZEZvcihcbiAgICAgICAgICBuYXZpZ2F0aW9uRW5kJCxcbiAgICAgICAgICBtb2RhbFJvdXRlU2V0LFxuICAgICAgICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgYWN0aXZhdGVkJCwgZGVhY3RpdmF0ZWQkIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGFjdGl2YXRlZCQ6IEVNUFRZLCBkZWFjdGl2YXRlZCQ6IEVNUFRZIH07XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZVRvTW9kYWwoXG4gICAgcGF0aDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgcXVlcnlQYXJhbXM/OiBQYXJhbXMsXG4gICAgYWxlcnRDb25maWc/OiBBbGVydENvbmZpZ1xuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjb21tYW5kcyA9IEFycmF5LmlzQXJyYXkocGF0aCkgPyBwYXRoIDogcGF0aC5zcGxpdCgnLycpO1xuICAgIGNvbnN0IGNoaWxkUGF0aCA9IGNvbW1hbmRzLnBvcCgpO1xuICAgIGNvbnN0IG5hdmlnYXRpb25EYXRhOiBOYXZpZ2F0aW9uRGF0YSA9IHsgbmF2aWdhdGlvbkRhdGE6IHsgYWxlcnRDb25maWcgfSB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsuLi5jb21tYW5kcywgeyBvdXRsZXRzOiB7IG1vZGFsOiBbY2hpbGRQYXRoXSB9IH1dLCB7XG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuZ2V0Q3VycmVudEFjdGl2YXRlZFJvdXRlKCksXG4gICAgICBzdGF0ZTogbmF2aWdhdGlvbkRhdGEsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlV2l0aGluTW9kYWwocmVsYXRpdmVQYXRoOiBzdHJpbmcsIHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyZWxhdGl2ZVBhdGhdLCB7XG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuZ2V0Q3VycmVudEFjdGl2YXRlZFJvdXRlKCksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZU91dE9mTW9kYWxPdXRsZXQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgbGV0IHJlc3VsdCA9IFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICBjb25zdCBjdXJyZW50QWN0aXZhdGVkUm91dGUgPSB0aGlzLmdldEN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSgpO1xuICAgIGlmIChjdXJyZW50QWN0aXZhdGVkUm91dGUub3V0bGV0ID09PSAnbW9kYWwnKSB7XG4gICAgICBjb25zdCBwYXJlbnRSb3V0ZSA9IHRoaXMuZ2V0QmFja2Ryb3BSb3V0ZShjdXJyZW50QWN0aXZhdGVkUm91dGUpO1xuICAgICAgcmVzdWx0ID0gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLyddLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IHBhcmVudFJvdXRlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGdldEJhY2tkcm9wUm91dGUoY3VycmVudEFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgIGxldCBwYXJlbnRSb3V0ZSA9IGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZS5wYXJlbnQ7XG4gICAgd2hpbGUgKHBhcmVudFJvdXRlICYmICFwYXJlbnRSb3V0ZS5jb21wb25lbnQgJiYgISFwYXJlbnRSb3V0ZS5wYXJlbnQpIHtcbiAgICAgIHBhcmVudFJvdXRlID0gcGFyZW50Um91dGUucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50Um91dGU7XG4gIH1cbn1cbiJdfQ==
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vbW9kYWwvc3JjL21vZGFsLW5hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFpQixNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBSTNDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUVoQixNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQW9CLE1BQWMsRUFBVSxLQUFxQixFQUFVLFFBQWtCO1FBQXpFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUE2THJGLDJCQUFzQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDdEQsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUEwQixFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUMxRSxDQUFDO1FBOUxBLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtREFBbUQsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVc7UUFDdEIsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pD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d0JBQXdCLEVBQUUsQ0FBQztRQUM5RCxJQUFJLHFCQUFxQixDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUU7WUFDNUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDakUsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BDLFVBQVUsRUFBRSxXQUFXO2FBQ3hCLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLHFCQUFxQztRQUM1RCxJQUFJLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFDL0MsT0FBTyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQ3BFLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs7c0lBOVVVLHNCQUFzQjswSUFBdEIsc0JBQXNCLGNBRFQsTUFBTTsyRkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBQYXJhbXMsIFJvdXRlLCBSb3V0ZXIsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFTVBUWSwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBwYWlyd2lzZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2RhbFJvdXRlQWN0aXZhdGlvbiwgTmF2aWdhdGlvbkRhdGEgfSBmcm9tICcuL21vZGFsLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWxlcnRDb25maWcgfSBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5sZXQgY291bnRlciA9IDA7XG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsTmF2aWdhdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24pIHtcbiAgICBjb3VudGVyKys7XG4gICAgY29uc29sZS5sb2coYE1vZGFsTmF2aWdhdGlvblNlcnZpY2UuY29uc3RydWN0b3IgLSBpbnN0YW5jZTogWyR7Y291bnRlcn1dYCk7XG4gIH1cblxuICBpc01vZGFsUm91dGUodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXJsLmluY2x1ZGVzKCcobW9kYWw6Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSgpOiBBY3RpdmF0ZWRSb3V0ZSB7XG4gICAgbGV0IGNoaWxkUm91dGUgPSB0aGlzLnJvdXRlLnJvb3Q7XG4gICAgd2hpbGUgKGNoaWxkUm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgY2hpbGRSb3V0ZSA9IGNoaWxkUm91dGUuZmlyc3RDaGlsZDtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkUm91dGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE1vZGFsUm91dGVzKFxuICAgIHJvdXRlQ29uZmlnOiBSb3V0ZXNbXSxcbiAgICBtb2R1bGVSb290Um91dGVQYXRoPzogc3RyaW5nXG4gICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBmbGF0dGVuZWRSb3V0ZXM6IFJvdXRlcyA9IFtdLmNvbmNhdCguLi5yb3V0ZUNvbmZpZyk7XG4gICAgbGV0IG1vZGFsUm91dGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IG1vZHVsZVJvb3RQYXRocyA9IGF3YWl0IHRoaXMuZ2V0TW9kdWxlUm9vdFBhdGgoZmxhdHRlbmVkUm91dGVzLCBtb2R1bGVSb290Um91dGVQYXRoKTtcbiAgICBpZiAobW9kdWxlUm9vdFBhdGhzKSB7XG4gICAgICBtb2RhbFJvdXRlcyA9IHRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGhzKGZsYXR0ZW5lZFJvdXRlcywgbW9kdWxlUm9vdFBhdGhzKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGFsUm91dGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRNb2R1bGVSb290UGF0aChyb3V0ZXM6IFJvdXRlcywgbW9kdWxlUm9vdFJvdXRlUGF0aD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAobW9kdWxlUm9vdFJvdXRlUGF0aCkge1xuICAgICAgY29uc3QgdHJpbW1lZFBhdGhzID0gbW9kdWxlUm9vdFJvdXRlUGF0aFxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5maWx0ZXIoKHBhdGgpID0+ICEhcGF0aCk7XG4gICAgICBjb25zdCByb290UGF0aCA9IFsnJ107XG4gICAgICByZXR1cm4gcm9vdFBhdGguY29uY2F0KHRyaW1tZWRQYXRocyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFJvdXRlUGF0aHMgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRSb3V0ZVBhdGhzKCk7XG4gICAgY29uc3QgbW9kdWxlUm9vdFBhdGhzID0gdGhpcy5nZXRSb3V0ZVBhdGhzV2l0aG91dENoaWxkU2VnbWVudHMoY3VycmVudFJvdXRlUGF0aHMsIHJvdXRlcyk7XG4gICAgcmV0dXJuIG1vZHVsZVJvb3RQYXRocztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q3VycmVudFJvdXRlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHJvb3RQYXRoID0gWycnXTtcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XG5cbiAgICBpZiAoIXRoaXMucm91dGVyLm5hdmlnYXRlZCAmJiAhY3VycmVudE5hdmlnYXRpb24pIHtcbiAgICAgIC8vIElmIHJvdXRlciBoYXNuJ3QgbmF2aWdhdGVkIHlldCBhbmQgd2UgYXJlIG5vdCBpbiB0aGUgbWlkZGxlIG9mIG5hdmlnYXRpbmcsIGFzc3VtZSByb290OlxuICAgICAgcmV0dXJuIHJvb3RQYXRoO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50TmF2aWdhdGlvbikge1xuICAgICAgLy8gV2FpdCBmb3IgY3VycmVudCBuYXZpZ2F0aW9uIHRvIGZpbmlzaDpcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubmF2aWdhdGlvbkVuZExpc3RlbmVyJCk7XG4gICAgfVxuXG4gICAgbGV0IGNoaWxkUm91dGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnJvb3Q7XG4gICAgd2hpbGUgKGNoaWxkUm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgY2hpbGRSb3V0ZSA9IGNoaWxkUm91dGUuZmlyc3RDaGlsZDtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEJhY2tkcm9wUm91dGVQYXRoID0gY2hpbGRSb3V0ZS5wYXRoRnJvbVJvb3QuZmlsdGVyKFxuICAgICAgKHJvdXRlKSA9PiByb3V0ZS5vdXRsZXQgIT09ICdtb2RhbCdcbiAgICApO1xuXG4gICAgcmV0dXJuIHJvb3RQYXRoLmNvbmNhdChcbiAgICAgIC4uLmN1cnJlbnRCYWNrZHJvcFJvdXRlUGF0aC5tYXAoKHJvdXRlKSA9PlxuICAgICAgICByb3V0ZS51cmwuZmlsdGVyKChzZWdtZW50KSA9PiAhIXNlZ21lbnQucGF0aCkubWFwKChzZWdtZW50KSA9PiBzZWdtZW50LnBhdGgpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGVQYXRoc1dpdGhvdXRDaGlsZFNlZ21lbnRzKHJvdXRlUGF0aHM6IHN0cmluZ1tdLCByb3V0ZXM6IFJvdXRlcyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXJvdXRlUGF0aHMubGVuZ3RoKSByZXR1cm4gcm91dGVQYXRocztcblxuICAgIGNvbnN0IG1hdGNoZWRDaGlsZFJvdXRlID0gdGhpcy5maW5kQ2hpbGRSb3V0ZUZvclVybChyb3V0ZVBhdGhzLmpvaW4oJy8nKSwgcm91dGVzKTtcblxuICAgIGlmICghbWF0Y2hlZENoaWxkUm91dGUpIHJldHVybiByb3V0ZVBhdGhzO1xuXG4gICAgY29uc3Qgc3RhcnRTbGFzaFJlZ2V4ID0gL15cXC8vO1xuICAgIGNvbnN0IHJlbGF0aXZlQ2hpbGRSb3V0ZSA9IG1hdGNoZWRDaGlsZFJvdXRlLnJlcGxhY2Uoc3RhcnRTbGFzaFJlZ2V4LCAnJyk7XG4gICAgY29uc3QgY2hpbGRTZWdtZW50Q291bnQgPSByZWxhdGl2ZUNoaWxkUm91dGUuc3BsaXQoJy8nKS5sZW5ndGg7XG4gICAgY29uc3Qgcm91dGVQYXRoc1dpdGhvdXRDaGlsZFNlZ21lbnRzID0gcm91dGVQYXRocy5zbGljZSgwLCAtY2hpbGRTZWdtZW50Q291bnQpOyAvLyBSZW1vdmUgY2hpbGQgc2VnbWVudHMgZnJvbSBlbmQgb2Ygcm91dGUgcGF0aCBhcnJheVxuICAgIHJldHVybiByb3V0ZVBhdGhzV2l0aG91dENoaWxkU2VnbWVudHM7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDaGlsZFJvdXRlRm9yVXJsKHVybDogc3RyaW5nLCByb3V0ZXM6IFJvdXRlcykge1xuICAgIGNvbnN0IG1vZHVsZVJlbGF0aXZlUGF0aHMgPSB0aGlzLmdldFJvdXRlUGF0aHMocm91dGVzLCBbJyddKS5zb3J0KCkucmV2ZXJzZSgpOyAvLyBFbnN1cmUgY2hpbGQgcGF0aHMgYXJlIGV2YWx1YXRlZCBmaXJzdFxuICAgIGxldCBtYXRjaGVkQ2hpbGRSb3V0ZSA9IG1vZHVsZVJlbGF0aXZlUGF0aHMuZmluZCgocGF0aCkgPT4gdXJsLmVuZHNXaXRoKHBhdGgpKTtcbiAgICBpZiAoIW1hdGNoZWRDaGlsZFJvdXRlKSB7XG4gICAgICAvLyBObyBzdGF0aWMgY2hpbGQgcm91dGUgZm91bmQgbWF0Y2hpbmcgY3VycmVudCByb3V0ZSAtIGxvb2sgZm9yIGNoaWxkIHJvdXRlIHdpdGggdXJsIHBhcmFtczpcbiAgICAgIGNvbnN0IGV4YWN0TWF0Y2ggPSBmYWxzZTtcbiAgICAgIG1hdGNoZWRDaGlsZFJvdXRlID0gbW9kdWxlUmVsYXRpdmVQYXRocy5maW5kKFxuICAgICAgICAocGF0aCkgPT5cbiAgICAgICAgICBwYXRoLmluY2x1ZGVzKCcvOicpICYmIHRoaXMucGF0aENvbnRhaW5zQ2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXModXJsLCBwYXRoLCBleGFjdE1hdGNoKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoZWRDaGlsZFJvdXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRoQ29udGFpbnNDaGlsZFJvdXRlV2l0aFVybFBhcmFtcyhcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXM6IHN0cmluZyxcbiAgICBleGFjdE1hdGNoOiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHBhdGguc3BsaXQoJy8nKTtcbiAgICBjb25zdCBzdGFydFNsYXNoUmVnZXggPSAvXlxcLy87XG4gICAgbGV0IGNoaWxkUm91dGVUb01hdGNoID0gY2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXM7XG4gICAgaWYgKCFleGFjdE1hdGNoKSB7XG4gICAgICBjb25zdCByZWxhdGl2ZUNoaWxkUm91dGUgPSBjaGlsZFJvdXRlV2l0aFVybFBhcmFtcy5yZXBsYWNlKHN0YXJ0U2xhc2hSZWdleCwgJycpO1xuICAgICAgY2hpbGRSb3V0ZVRvTWF0Y2ggPSByZWxhdGl2ZUNoaWxkUm91dGU7XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkUm91dGVTZWdtZW50cyA9IGNoaWxkUm91dGVUb01hdGNoLnNwbGl0KCcvJyk7XG4gICAgLy8gTWF0Y2ggZWFjaCBjaGlsZCByb3V0ZSBzZWdtZW50IGFnYWluc3QgdXJsXG4gICAgLy8gTWF0Y2ggYmFja3dhcmRzIGZyb20gZW5kIHRvIHN0YXJ0IG9mIGNoaWxkIHJvdXRlLCBpLmUuIFwidXJsIGVuZHMgd2l0aCBjaGlsZCByb3V0ZVwiOlxuICAgIGNvbnN0IHBhdGhDb250YWluc0NoaWxkUm91dGUgPSBjaGlsZFJvdXRlU2VnbWVudHMucmV2ZXJzZSgpLmV2ZXJ5KChjaGlsZFJvdXRlU2VnbWVudCkgPT4ge1xuICAgICAgY29uc3QgcGF0aFNlZ21lbnQgPSBwYXRoU2VnbWVudHMucG9wKCk7XG4gICAgICAvLyB1cmwgcGFyYW1zIChlLmcuIGAvOmlkL2ApIGFyZSB0cmVhdGVkIGFzIGEgbWF0Y2g6XG4gICAgICByZXR1cm4gY2hpbGRSb3V0ZVNlZ21lbnQuc3RhcnRzV2l0aCgnOicpIHx8IGNoaWxkUm91dGVTZWdtZW50ID09PSBwYXRoU2VnbWVudDtcbiAgICB9KTtcbiAgICBpZiAoZXhhY3RNYXRjaCkge1xuICAgICAgLy8gT25seSBtYXRjaCBpZiB3ZSd2ZSByZWFjaGVkIHRoZSBzdGFydCBvZiB0aGUgdXJsIHRvIG1hdGNoIGFnYWluc3Q6XG4gICAgICByZXR1cm4gcGF0aFNlZ21lbnRzLmxlbmd0aCA9PT0gMCAmJiBwYXRoQ29udGFpbnNDaGlsZFJvdXRlO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aENvbnRhaW5zQ2hpbGRSb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGVQYXRocyhyb3V0ZXM6IFJvdXRlcywgcGFyZW50UGF0aDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocm91dGVzKVxuICAgICAgPyAoW10gYXMgc3RyaW5nW10pLmNvbmNhdCguLi5yb3V0ZXMubWFwKChyb3V0ZSkgPT4gdGhpcy5nZXRSb3V0ZVBhdGgocm91dGUsIHBhcmVudFBhdGgpKSlcbiAgICAgIDogW107XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlUGF0aChyb3V0ZTogUm91dGUsIHBhcmVudFBhdGg6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJvdXRlczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAocm91dGUub3V0bGV0KSByZXR1cm4gcm91dGVzOyAvLyBEb24ndCByZXR1cm4gcmVsYXRpdmUgcGF0aHMgZm9yIG91dGxldCByb3V0ZXNcblxuICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gWy4uLnBhcmVudFBhdGhdO1xuICAgIGlmIChyb3V0ZS5wYXRoKSB7XG4gICAgICBjdXJyZW50UGF0aC5wdXNoKHJvdXRlLnBhdGgpO1xuICAgICAgcm91dGVzLnB1c2goY3VycmVudFBhdGguam9pbignLycpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm91dGVzLmNvbmNhdCh0aGlzLmdldFJvdXRlUGF0aHMocm91dGUuY2hpbGRyZW4sIGN1cnJlbnRQYXRoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1vZGFsUm91dGVQYXRoKHJvdXRlOiBSb3V0ZSwgcGFyZW50UGF0aDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbW9kYWxPdXRsZXROYW1lID0gJ21vZGFsJztcbiAgICBpZiAoISFyb3V0ZS5wYXRoICYmIHJvdXRlLm91dGxldCA9PT0gbW9kYWxPdXRsZXROYW1lKSB7XG4gICAgICBjb25zdCBtb2RhbE91dGxldFBhdGggPSBgKCR7bW9kYWxPdXRsZXROYW1lfToke3JvdXRlLnBhdGh9KWA7XG4gICAgICBjb25zdCBtb2RhbFJvdXRlUGF0aCA9IFsuLi5wYXJlbnRQYXRoLCBtb2RhbE91dGxldFBhdGhdLmpvaW4oJy8nKTtcbiAgICAgIHJldHVybiBbbW9kYWxSb3V0ZVBhdGhdO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IFsuLi5wYXJlbnRQYXRoXTtcbiAgICBpZiAocm91dGUucGF0aCkge1xuICAgICAgY3VycmVudFBhdGgucHVzaChyb3V0ZS5wYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIChbXSBhcyBzdHJpbmdbXSkuY29uY2F0KC4uLnRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGhzKHJvdXRlLmNoaWxkcmVuLCBjdXJyZW50UGF0aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb2RhbFJvdXRlUGF0aHMocm91dGVzOiBSb3V0ZXMsIHBhcmVudFBhdGg6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJvdXRlcylcbiAgICAgID8gKFtdIGFzIHN0cmluZ1tdKS5jb25jYXQoLi4ucm91dGVzLm1hcCgocm91dGUpID0+IHRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGgocm91dGUsIHBhcmVudFBhdGgpKSlcbiAgICAgIDogW107XG4gIH1cblxuICBwcml2YXRlIGlzTmV3TW9kYWxXaW5kb3cobmF2aWdhdGlvbkVuZDogTmF2aWdhdGlvbkVuZCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnROYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcbiAgICBpZiAoIWN1cnJlbnROYXZpZ2F0aW9uIHx8ICFjdXJyZW50TmF2aWdhdGlvbi5wcmV2aW91c05hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBwcmV2aW91c1JvdXRlUGF0aCA9IChcbiAgICAgIGN1cnJlbnROYXZpZ2F0aW9uLnByZXZpb3VzTmF2aWdhdGlvbi5maW5hbFVybCB8fFxuICAgICAgY3VycmVudE5hdmlnYXRpb24ucHJldmlvdXNOYXZpZ2F0aW9uLmV4dHJhY3RlZFVybFxuICAgICkudG9TdHJpbmcoKTtcbiAgICBjb25zdCB3YXNNb2RhbFJvdXRlID0gdGhpcy5pc01vZGFsUm91dGUocHJldmlvdXNSb3V0ZVBhdGgpO1xuICAgIGNvbnN0IGlzTW9kYWxSb3V0ZSA9IHRoaXMuaXNNb2RhbFJvdXRlKG5hdmlnYXRpb25FbmQudXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgIGlmICghd2FzTW9kYWxSb3V0ZSAmJiBpc01vZGFsUm91dGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRNb2RhbFJvdXRlUGFyZW50ID0gbmF2aWdhdGlvbkVuZC51cmxBZnRlclJlZGlyZWN0cy5zcGxpdCgnLyhtb2RhbDonKVswXTtcbiAgICBjb25zdCBwcmV2aW91c01vZGFsUm91dGVQYXJlbnQgPSBwcmV2aW91c1JvdXRlUGF0aC5zcGxpdCgnLyhtb2RhbDonKVswXTtcblxuICAgIHJldHVybiBwcmV2aW91c01vZGFsUm91dGVQYXJlbnQgIT09IGN1cnJlbnRNb2RhbFJvdXRlUGFyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kTGlzdGVuZXIkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIE5hdmlnYXRpb25FbmQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxuICApO1xuXG4gIHByaXZhdGUgYXN5bmMgd2FpdEZvckN1cnJlbnRUaGVuR2V0TmF2aWdhdGlvbkVuZFN0cmVhbSgpOiBQcm9taXNlPE9ic2VydmFibGU8TmF2aWdhdGlvbkVuZD4+IHtcbiAgICBpZiAodGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSkge1xuICAgICAgY29uc3QgY3VycmVudE5hdmlnYXRpb25FbmQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm5hdmlnYXRpb25FbmRMaXN0ZW5lciQpO1xuICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvbkVuZExpc3RlbmVyJC5waXBlKHN0YXJ0V2l0aChjdXJyZW50TmF2aWdhdGlvbkVuZCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uRW5kTGlzdGVuZXIkO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RhbFJvdXRlQWN0aXZhdGVkRm9yKFxuICAgIG5hdmlnYXRpb25FbmQkOiBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+LFxuICAgIG1vZGFsUm91dGVTZXQ6IFNldDxzdHJpbmc+LFxuICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXM6IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxNb2RhbFJvdXRlQWN0aXZhdGlvbj4ge1xuICAgIHJldHVybiBuYXZpZ2F0aW9uRW5kJC5waXBlKFxuICAgICAgZmlsdGVyKChuYXZpZ2F0aW9uRW5kKSA9PlxuICAgICAgICB0aGlzLm1vZGFsUm91dGVTZXRDb250YWluc1BhdGgobW9kYWxSb3V0ZVNldCwgbmF2aWdhdGlvbkVuZCwgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtcylcbiAgICAgICksXG4gICAgICBtYXAoKG5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgICAgY29uc3QgbG9jYXRpb25TdGF0ZSA9IHRoaXMubG9jYXRpb24uZ2V0U3RhdGUoKSBhcyBOYXZpZ2F0aW9uRGF0YTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByb3V0ZTogdGhpcy5nZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKSxcbiAgICAgICAgICBtb2RhbERhdGE6IGxvY2F0aW9uU3RhdGUubmF2aWdhdGlvbkRhdGEsXG4gICAgICAgICAgaXNOZXdNb2RhbDogdGhpcy5pc05ld01vZGFsV2luZG93KG5hdmlnYXRpb25FbmQpLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RhbFJvdXRlRGVhY3RpdmF0ZWRGb3IoXG4gICAgbmF2aWdhdGlvbkVuZCQ6IE9ic2VydmFibGU8TmF2aWdhdGlvbkVuZD4sXG4gICAgbW9kYWxSb3V0ZVNldDogU2V0PHN0cmluZz4sXG4gICAgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtczogYm9vbGVhblxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmF2aWdhdGlvbkVuZCQucGlwZShcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBmaWx0ZXIoKFtwcmV2TmF2aWdhdGlvbiwgX10pID0+XG4gICAgICAgIHRoaXMubW9kYWxSb3V0ZVNldENvbnRhaW5zUGF0aChtb2RhbFJvdXRlU2V0LCBwcmV2TmF2aWdhdGlvbiwgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtcylcbiAgICAgICksIC8vIE9ubHkgZW1pdCBpZiBwcmV2aW91cyByb3V0ZSB3YXMgbW9kYWxcbiAgICAgIG1hcCgoW18sIGN1cnJlbnROYXZpZ2F0aW9uXSkgPT4ge1xuICAgICAgICBjb25zdCBpc05ld01vZGFsUm91dGUgPSB0aGlzLmlzTW9kYWxSb3V0ZShjdXJyZW50TmF2aWdhdGlvbi51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICAgIC8vIERlYWN0aXZhdGUgbW9kYWwgcm91dGUgaWYgbmV3IHJvdXRlIGlzIE5PVCBtb2RhbCBPUiBpcyBvdXRzaWRlIGN1cnJlbnQgcGFyZW50IHJvdXRlOlxuICAgICAgICByZXR1cm4gIWlzTmV3TW9kYWxSb3V0ZSB8fCB0aGlzLmlzTmV3TW9kYWxXaW5kb3coY3VycmVudE5hdmlnYXRpb24pO1xuICAgICAgfSksXG4gICAgICBmaWx0ZXIoKGlzRGVhY3RpdmF0aW9uKSA9PiBpc0RlYWN0aXZhdGlvbilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RhbFJvdXRlU2V0Q29udGFpbnNQYXRoKFxuICAgIG1vZGFsUm91dGVTZXQ6IFNldDxzdHJpbmc+LFxuICAgIG5hdmlnYXRpb25FbmQ6IE5hdmlnYXRpb25FbmQsXG4gICAgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtczogYm9vbGVhblxuICApIHtcbiAgICBjb25zdCBwYXRobmFtZSA9IG5hdmlnYXRpb25FbmQudXJsQWZ0ZXJSZWRpcmVjdHMuc3BsaXQoJz8nKVswXTtcbiAgICBsZXQgaGFzUm91dGUgPSBtb2RhbFJvdXRlU2V0LmhhcyhwYXRobmFtZSk7XG4gICAgaWYgKCFoYXNSb3V0ZSAmJiBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zKSB7XG4gICAgICAvLyBVc2UgYGZvciAuLi4gb2ZgIGluc3RlYWQgb2YgYGZvckVhY2hgIHNvIHdlIGNhbiBicmVhayBvdXQgb2YgdGhlIGxvb3AgaWYgcm91dGUgaXMgZm91bmQ6XG4gICAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIG1vZGFsUm91dGVTZXQpIHtcbiAgICAgICAgY29uc3QgZXhhY3RNYXRjaCA9IHRydWU7XG4gICAgICAgIGNvbnN0IHJvdXRlTWF0Y2hlc1BhdGggPSB0aGlzLnBhdGhDb250YWluc0NoaWxkUm91dGVXaXRoVXJsUGFyYW1zKFxuICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgIGV4YWN0TWF0Y2hcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHJvdXRlTWF0Y2hlc1BhdGgpIHtcbiAgICAgICAgICBoYXNSb3V0ZSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc1JvdXRlO1xuICB9XG5cbiAgYXN5bmMgZ2V0TW9kYWxOYXZpZ2F0aW9uKFxuICAgIHJvdXRlQ29uZmlnOiBSb3V0ZXNbXSxcbiAgICBtb2R1bGVSb290Um91dGVQYXRoPzogc3RyaW5nXG4gICk6IFByb21pc2U8eyBhY3RpdmF0ZWQkOiBPYnNlcnZhYmxlPE1vZGFsUm91dGVBY3RpdmF0aW9uPjsgZGVhY3RpdmF0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+IH0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyb3V0ZUNvbmZpZykpIHtcbiAgICAgIGNvbnN0IG5hdmlnYXRpb25FbmQkID0gYXdhaXQgdGhpcy53YWl0Rm9yQ3VycmVudFRoZW5HZXROYXZpZ2F0aW9uRW5kU3RyZWFtKCk7XG4gICAgICBjb25zdCBtb2RhbFJvdXRlcyA9IGF3YWl0IHRoaXMuZ2V0TW9kYWxSb3V0ZXMocm91dGVDb25maWcsIG1vZHVsZVJvb3RSb3V0ZVBhdGgpO1xuICAgICAgY29uc3QgaGFzTW9kYWxSb3V0ZXMgPSBtb2RhbFJvdXRlcy5sZW5ndGggPiAwO1xuICAgICAgaWYgKGhhc01vZGFsUm91dGVzKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXMgPSBtb2RhbFJvdXRlcy5zb21lKChyb3V0ZSkgPT4gcm91dGUuaW5jbHVkZXMoJy86JykpO1xuICAgICAgICBjb25zdCBtb2RhbFJvdXRlU2V0ID0gbmV3IFNldChtb2RhbFJvdXRlcyk7XG4gICAgICAgIGNvbnN0IGFjdGl2YXRlZCQgPSB0aGlzLm1vZGFsUm91dGVBY3RpdmF0ZWRGb3IoXG4gICAgICAgICAgbmF2aWdhdGlvbkVuZCQsXG4gICAgICAgICAgbW9kYWxSb3V0ZVNldCxcbiAgICAgICAgICBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlYWN0aXZhdGVkJCA9IHRoaXMubW9kYWxSb3V0ZURlYWN0aXZhdGVkRm9yKFxuICAgICAgICAgIG5hdmlnYXRpb25FbmQkLFxuICAgICAgICAgIG1vZGFsUm91dGVTZXQsXG4gICAgICAgICAgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtc1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyBhY3RpdmF0ZWQkLCBkZWFjdGl2YXRlZCQgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgYWN0aXZhdGVkJDogRU1QVFksIGRlYWN0aXZhdGVkJDogRU1QVFkgfTtcbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlVG9Nb2RhbChcbiAgICBwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBxdWVyeVBhcmFtcz86IFBhcmFtcyxcbiAgICBhbGVydENvbmZpZz86IEFsZXJ0Q29uZmlnXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNvbW1hbmRzID0gQXJyYXkuaXNBcnJheShwYXRoKSA/IHBhdGggOiBwYXRoLnNwbGl0KCcvJyk7XG4gICAgY29uc3QgY2hpbGRQYXRoID0gY29tbWFuZHMucG9wKCk7XG4gICAgY29uc3QgbmF2aWdhdGlvbkRhdGE6IE5hdmlnYXRpb25EYXRhID0geyBuYXZpZ2F0aW9uRGF0YTogeyBhbGVydENvbmZpZyB9IH07XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWy4uLmNvbW1hbmRzLCB7IG91dGxldHM6IHsgbW9kYWw6IFtjaGlsZFBhdGhdIH0gfV0sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5nZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKSxcbiAgICAgIHN0YXRlOiBuYXZpZ2F0aW9uRGF0YSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXN5bmMgbmF2aWdhdGVXaXRoaW5Nb2RhbChyZWxhdGl2ZVBhdGg6IHN0cmluZywgcXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JlbGF0aXZlUGF0aF0sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5nZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlT3V0T2ZNb2RhbE91dGxldCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBsZXQgcmVzdWx0ID0gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSA9IHRoaXMuZ2V0Q3VycmVudEFjdGl2YXRlZFJvdXRlKCk7XG4gICAgaWYgKGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZS5vdXRsZXQgPT09ICdtb2RhbCcpIHtcbiAgICAgIGNvbnN0IHBhcmVudFJvdXRlID0gdGhpcy5nZXRCYWNrZHJvcFJvdXRlKGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICByZXN1bHQgPSB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vJ10sIHtcbiAgICAgICAgcmVsYXRpdmVUbzogcGFyZW50Um91dGUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QmFja2Ryb3BSb3V0ZShjdXJyZW50QWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgbGV0IHBhcmVudFJvdXRlID0gY3VycmVudEFjdGl2YXRlZFJvdXRlLnBhcmVudDtcbiAgICB3aGlsZSAocGFyZW50Um91dGUgJiYgIXBhcmVudFJvdXRlLmNvbXBvbmVudCAmJiAhIXBhcmVudFJvdXRlLnBhcmVudCkge1xuICAgICAgcGFyZW50Um91dGUgPSBwYXJlbnRSb3V0ZS5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRSb3V0ZTtcbiAgfVxufVxuIl19
@@ -1229,12 +1229,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1229
1229
  type: Injectable
1230
1230
  }], ctorParameters: function () { return [{ type: i1$2.ModalController }]; } });
1231
1231
 
1232
+ let counter$1 = 0;
1232
1233
  class ModalNavigationService {
1233
1234
  constructor(router, route, location) {
1234
1235
  this.router = router;
1235
1236
  this.route = route;
1236
1237
  this.location = location;
1237
1238
  this.navigationEndListener$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd));
1239
+ counter$1++;
1240
+ console.log(`ModalNavigationService.constructor - instance: [${counter$1}]`);
1238
1241
  }
1239
1242
  isModalRoute(url) {
1240
1243
  return url.includes('(modal:');
@@ -1637,9 +1640,10 @@ class ModalController {
1637
1640
  }
1638
1641
  }
1639
1642
  /** @nocollapse */ ModalController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalController, deps: [{ token: ModalHelper }, { token: ActionSheetHelper }, { token: AlertHelper }, { token: ModalNavigationService }, { token: ROUTES, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
1640
- /** @nocollapse */ ModalController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalController });
1643
+ /** @nocollapse */ ModalController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalController, providedIn: 'root' });
1641
1644
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalController, decorators: [{
1642
- type: Injectable
1645
+ type: Injectable,
1646
+ args: [{ providedIn: 'root' }]
1643
1647
  }], ctorParameters: function () {
1644
1648
  return [{ type: ModalHelper }, { type: ActionSheetHelper }, { type: AlertHelper }, { type: ModalNavigationService }, { type: undefined, decorators: [{
1645
1649
  type: Optional
@@ -1683,4 +1687,3 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1683
1687
 
1684
1688
  export { ActionSheetComponent, ActionSheetHelper, AlertComponent, AlertHelper, COMPONENT_PROPS, DrawerSupplementaryAction, Modal, ModalCompactWrapperComponent, ModalController, ModalElementComponent, ModalElementType, ModalElementsAdvertiser, ModalFooterComponent, ModalHelper, ModalNavigationService, ModalWrapperComponent };
1685
1689
  //# sourceMappingURL=kirbydesign-designsystem-modal.mjs.map
1686
- //# sourceMappingURL=kirbydesign-designsystem-modal.mjs.map