@hmcts/rpx-xui-common-lib 1.9.0-consume-jrd-e-links-api-new-version-v2 → 1.9.0-postcode-validation
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/bundles/hmcts-rpx-xui-common-lib.umd.js +546 -188
- package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +1 -1
- package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +1 -1
- package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +1 -1
- package/esm2015/hmcts-rpx-xui-common-lib.js +27 -24
- package/esm2015/lib/components/accessibility/accessibility.component.js +2 -2
- package/esm2015/lib/components/checkbox-list/checkbox-list.component.js +12 -4
- package/esm2015/lib/components/contact-details/contact-details.component.js +2 -2
- package/esm2015/lib/components/cookie-banner/cookie-banner.component.js +2 -2
- package/esm2015/lib/components/due-date/due-date.component.js +12 -4
- package/esm2015/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +2 -2
- package/esm2015/lib/components/find-person/find-person.component.js +2 -2
- package/esm2015/lib/components/find-service/find-service.component.js +2 -2
- package/esm2015/lib/components/generic-filter/generic-filter.component.js +2 -2
- package/esm2015/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +2 -2
- package/esm2015/lib/components/loading-spinner/loading-spinner.component.js +12 -4
- package/esm2015/lib/components/pagination/pagination.component.js +2 -2
- package/esm2015/lib/components/public_api.js +3 -1
- package/esm2015/lib/components/search-location/search-location.component.js +5 -32
- package/esm2015/lib/components/selected-case/selected-case.component.js +2 -2
- package/esm2015/lib/components/selected-case-confirm/selected-case-confirm.component.js +2 -2
- package/esm2015/lib/components/service-message/service-message.component.js +2 -2
- package/esm2015/lib/components/service-messages/service-messages.component.js +2 -2
- package/esm2015/lib/components/share-case/share-case.component.js +2 -2
- package/esm2015/lib/components/share-case-confirm/share-case-confirm.component.js +2 -2
- package/esm2015/lib/components/tab/tab.component.js +2 -2
- package/esm2015/lib/components/tc-confirm/tc-confirm.component.js +2 -2
- package/esm2015/lib/components/terms-and-conditions/terms-and-conditions.component.js +2 -2
- package/esm2015/lib/components/user-details/user-details.component.js +2 -2
- package/esm2015/lib/components/user-list/user-list.component.js +2 -2
- package/esm2015/lib/components/user-select/user-select.component.js +2 -2
- package/esm2015/lib/components/write-address/write-address.component.js +147 -0
- package/esm2015/lib/components/write-address-inputs/write-address-inputs.component.js +30 -0
- package/esm2015/lib/exui-common-lib.module.js +9 -3
- package/esm2015/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +2 -2
- package/esm2015/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +2 -2
- package/esm2015/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +2 -2
- package/esm2015/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +2 -2
- package/esm2015/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +2 -2
- package/esm2015/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +2 -2
- package/esm2015/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +2 -2
- package/esm2015/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +2 -2
- package/esm2015/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +2 -2
- package/esm2015/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +2 -2
- package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +2 -2
- package/esm2015/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +2 -2
- package/esm2015/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +2 -2
- package/esm2015/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +2 -2
- package/esm2015/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.js +2 -2
- package/esm2015/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +2 -2
- package/esm2015/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +2 -2
- package/esm2015/lib/models/address-message.enum.js +10 -0
- package/esm2015/lib/models/address-option.model.js +21 -0
- package/esm2015/lib/models/address.model.js +4 -0
- package/esm2015/lib/models/index.js +4 -1
- package/esm2015/lib/models/location.model.js +1 -1
- package/esm2015/lib/models/person.model.js +1 -1
- package/esm2015/lib/services/address/address-parser.js +76 -0
- package/esm2015/lib/services/address/address-type.enum.js +7 -0
- package/esm2015/lib/services/address/address.service.js +50 -0
- package/esm2015/lib/services/find-person/find-person.service.js +3 -2
- package/esm2015/lib/services/locations/location.service.js +3 -6
- package/esm2015/lib/services/public-api.js +2 -1
- package/esm2015/lib/services/timeout-notifications/timeout-notifications.service.js +19 -10
- package/fesm2015/hmcts-rpx-xui-common-lib.js +482 -144
- package/fesm2015/hmcts-rpx-xui-common-lib.js.map +1 -1
- package/hmcts-rpx-xui-common-lib.d.ts +26 -23
- package/hmcts-rpx-xui-common-lib.metadata.json +1 -1
- package/lib/components/checkbox-list/checkbox-list.component.d.ts +5 -2
- package/lib/components/due-date/due-date.component.d.ts +5 -2
- package/lib/components/loading-spinner/loading-spinner.component.d.ts +5 -1
- package/lib/components/public_api.d.ts +2 -0
- package/lib/components/search-location/search-location.component.d.ts +1 -0
- package/lib/components/write-address/write-address.component.d.ts +34 -0
- package/lib/components/write-address-inputs/write-address-inputs.component.d.ts +13 -0
- package/lib/exui-common-lib.module.d.ts +5 -1
- package/lib/models/address-message.enum.d.ts +8 -0
- package/lib/models/address-option.model.d.ts +9 -0
- package/lib/models/address.model.d.ts +9 -0
- package/lib/models/index.d.ts +3 -0
- package/lib/models/location.model.d.ts +5 -5
- package/lib/models/person.model.d.ts +8 -7
- package/lib/services/address/address-parser.d.ts +17 -0
- package/lib/services/address/address-type.enum.d.ts +5 -0
- package/lib/services/address/address.service.d.ts +12 -0
- package/lib/services/locations/location.service.d.ts +1 -1
- package/lib/services/public-api.d.ts +1 -0
- package/lib/services/timeout-notifications/timeout-notifications.service.d.ts +5 -2
- package/package.json +3 -2
|
@@ -88,7 +88,7 @@ export class FindPersonComponent {
|
|
|
88
88
|
FindPersonComponent.decorators = [
|
|
89
89
|
{ type: Component, args: [{
|
|
90
90
|
selector: 'xuilib-find-person',
|
|
91
|
-
template: "<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title}}</span>\n {{boldTitle}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findPersonGroup\"\n [ngClass]=\"{'form-group-error': findPersonGroup.get('findPersonControl').invalid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findPersonGroup && findPersonGroup.errors\">\n <span class=\"govuk-visually-hidden\">Error
|
|
91
|
+
template: "<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title | rpxTranslate}}</span>\n {{boldTitle | rpxTranslate}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findPersonGroup\"\n [ngClass]=\"{'form-group-error': findPersonGroup.get('findPersonControl').invalid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle | rpxTranslate}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findPersonGroup && findPersonGroup.errors\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span>{{findPersonGroup.errors.error ? findPersonGroup.errors.error : errorMessage}}\n </span>\n <input id=\"inputSelectPerson{{idValue}}\" type=\"text\" aria-label=\"select a person\"\n formControlName=\"findPersonControl\"\n [matAutocomplete]=\"auto\"\n class=\"govuk-input govuk-!-width-one-third\"\n [placeholder]=\"placeholderContent\"\n [attr.disabled]=\"disabled\"\n (input)=\"onInput()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onSelectionChange($event.option.value)\">\n <mat-option *ngFor=\"let option of filteredOptions\"\n [value]=\"option\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete, 'select-option': showUpdatedColor}\">\n {{getDisplayName(option) | rpxTranslate}}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && !filteredOptions.length && showAutocomplete\">{{'No results found' | rpxTranslate}}</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n",
|
|
92
92
|
styles: [".mat-option:hover{background:#2596be}.mat-option.select-option:hover{background:#1d70b8;color:#fff}.hide-autocomplete{display:none}"]
|
|
93
93
|
},] }
|
|
94
94
|
];
|
|
@@ -117,4 +117,4 @@ FindPersonComponent.propDecorators = {
|
|
|
117
117
|
services: [{ type: Input }],
|
|
118
118
|
disabled: [{ type: Input }]
|
|
119
119
|
};
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1wZXJzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9maW5kLXBlcnNvbi9maW5kLXBlcnNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQTRCLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQVFwRixNQUFNLE9BQU8sbUJBQW1CO0lBMEI5QixZQUE2QixpQkFBcUMsRUFBbUIsRUFBcUI7UUFBN0Usc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFvQjtRQUFtQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXpCekYsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0MsY0FBUyxHQUFHLGlCQUFpQixDQUFDO1FBQzlCLGFBQVEsR0FBRyw4Q0FBOEMsQ0FBQztRQUMxRCxXQUFNLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUN4QixvQkFBZSxHQUFjLElB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TCxLQUFLOzJCQUNMLEtBQUs7MkJBQ0wsS0FBSztpQ0FDTCxLQUFLOytCQUNMLEtBQUs7K0JBQ0wsS0FBSzs4QkFDTCxLQUFLOzJCQUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlL29mJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGVyc29uLCBQZXJzb25Sb2xlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZpbmRBUGVyc29uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbmQtcGVyc29uL2ZpbmQtcGVyc29uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZmluZC1wZXJzb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1wZXJzb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLXBlcnNvbi5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIEZpbmRQZXJzb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcGVyc29uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBlcnNvbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBwZXJzb25GaWVsZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgYm9sZFRpdGxlID0gJ0ZpbmQgdGhlIHBlcnNvbic7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJUaXRsZSA9ICdUeXBlIHRoZSBuYW1lIG9mIHRoZSBwZXJzb24gYW5kIHNlbGVjdCB0aGVtLic7XG4gIEBJbnB1dCgpIHB1YmxpYyBkb21haW4gPSBQZXJzb25Sb2xlLkFMTDtcbiAgQElucHV0KCkgcHVibGljIGZpbmRQZXJzb25Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZFBlcnNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHVzZXJJbmNsdWRlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGFzc2lnbmVkVXNlcj86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyQ29udGVudDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpc05vUmVzdWx0c1Nob3duOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHNob3dVcGRhdGVkQ29sb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkUGVyc29uczogUGVyc29uW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJ1lvdSBtdXN0IHNlbGVjdCBhIG5hbWUnO1xuICBASW5wdXQoKSBwdWJsaWMgaWRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXJ2aWNlczogc3RyaW5nID0gJ0lBJztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gbnVsbDtcbiAgcHVibGljIHNob3dBdXRvY29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGZpbmRQZXJzb25Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIGZpbHRlcmVkT3B0aW9uczogUGVyc29uW10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IG1pblNlYXJjaENoYXJhY3RlcnMgPSAyO1xuICBwcml2YXRlIHN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmluZFBlcnNvblNlcnZpY2U6IEZpbmRBUGVyc29uU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWIpIHtcbiAgICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5zZWxlY3RlZFBlcnNvbik7XG4gICAgdGhpcy5maW5kUGVyc29uR3JvdXAuYWRkQ29udHJvbCgnZmluZFBlcnNvbkNvbnRyb2wnLCB0aGlzLmZpbmRQZXJzb25Db250cm9sKTtcbiAgICB0aGlzLnN1YiA9IHRoaXMuZmluZFBlcnNvbkNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zaG93QXV0b2NvbXBsZXRlID0gZmFsc2UpLFxuICAgICAgdGFwKCgpID0+IHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW10pLFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICB0YXAoKHNlYXJjaFRlcm0pID0+IHR5cGVvZiBzZWFyY2hUZXJtID09PSAnc3RyaW5nJyA/IHRoaXMucGVyc29uU2VsZWN0ZWQuZW1pdChudWxsKSA6IHZvaWQgMCksXG4gICAgICBmaWx0ZXIoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLmxlbmd0aCA+IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyksXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gdGhpcy5maWx0ZXIoc2VhcmNoVGVybSkucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuc2hvd0F1dG9jb21wbGV0ZSA9IHRydWUpLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW10pLFxuICAgICAgKSlcbiAgICApLnN1YnNjcmliZSgocGVvcGxlOiBQZXJzb25bXSkgPT4ge1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBwZW9wbGU7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXIoc2VhcmNoVGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxQZXJzb25bXT4ge1xuICAgIGNvbnN0IGZpbmRKdWRpY2lhbE9yQ1RTQ1Blb3BsZSA9IHRoaXMuZmluZFBlcnNvblNlcnZpY2UuZmluZCh7c2VhcmNoVGVybSwgdXNlclJvbGU6IHRoaXMuZG9tYWluLCBzZXJ2aWNlczogW3RoaXMuc2VydmljZXNdLCB1c2VySW5jbHVkZWQ6IHRoaXMudXNlckluY2x1ZGVkLCBhc3NpZ25lZFVzZXI6IHRoaXMuYXNzaWduZWRVc2VyfSk7XG4gICAgY29uc3QgZmluZENhc2V3b3JrZXJzT3JBZG1pbnNPckN0c2MgPSB0aGlzLmZpbmRQZXJzb25TZXJ2aWNlLmZpbmRDYXNld29ya2Vycyh7c2VhcmNoVGVybSwgdXNlclJvbGU6IHRoaXMuZG9tYWluLCBzZXJ2aWNlczogW3RoaXMuc2VydmljZXNdLCB1c2VySW5jbHVkZWQ6IHRoaXMudXNlckluY2x1ZGVkLCBhc3NpZ25lZFVzZXI6IHRoaXMuYXNzaWduZWRVc2VyfSk7XG4gICAgaWYgKHNlYXJjaFRlcm0gJiYgc2VhcmNoVGVybS5sZW5ndGggPiB0aGlzLm1pblNlYXJjaENoYXJhY3RlcnMpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5kb21haW4pIHtcbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkpVRElDSUFMOiB7XG4gICAgICAgICAgcmV0dXJuIGZpbmRKdWRpY2lhbE9yQ1RTQ1Blb3BsZS5waXBlKG1hcChwZXJzb25zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkczogc3RyaW5nW10gPSB0aGlzLnNlbGVjdGVkUGVyc29ucy5tYXAoKHtpZH0pID0+IGlkKTtcbiAgICAgICAgICAgIHJldHVybiBwZXJzb25zLmZpbHRlcigoeyBpZCB9KSA9PiAhaWRzLmluY2x1ZGVzKGlkKSk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5BTEw6IHtcbiAgICAgICAgICByZXR1cm4gemlwKGZpbmRKdWRpY2lhbE9yQ1RTQ1Blb3BsZSwgZmluZENhc2V3b3JrZXJzT3JBZG1pbnNPckN0c2MpLnBpcGUobWFwKHNlcGFyYXRlUGVvcGxlID0+IHNlcGFyYXRlUGVvcGxlWzBdLmNvbmNhdChzZXBhcmF0ZVBlb3BsZVsxXSkpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFBlcnNvblJvbGUuQ1RTQzpcbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkNBU0VXT1JLRVI6XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5BRE1JTjoge1xuICAgICAgICAgIHJldHVybiBmaW5kQ2FzZXdvcmtlcnNPckFkbWluc09yQ3RzYztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2YoW10pO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkUGVyc29uOiBQZXJzb24pOiB2b2lkIHtcbiAgICB0aGlzLnBlcnNvblNlbGVjdGVkLmVtaXQoc2VsZWN0ZWRQZXJzb24pO1xuICAgIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wuc2V0VmFsdWUodGhpcy5nZXREaXNwbGF5TmFtZShzZWxlY3RlZFBlcnNvbiksIHtlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZX0pO1xuICB9XG5cbiAgcHVibGljIGdldERpc3BsYXlOYW1lKHNlbGVjdGVkUGVyc29uOiBQZXJzb24pOiBzdHJpbmcge1xuICAgIGlmICghc2VsZWN0ZWRQZXJzb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKHNlbGVjdGVkUGVyc29uLmRvbWFpbiA9PT0gUGVyc29uUm9sZS5KVURJQ0lBTCAmJiBzZWxlY3RlZFBlcnNvbi5mdWxsTmFtZSkge1xuICAgICAgcmV0dXJuIGAke3NlbGVjdGVkUGVyc29uLmZ1bGxOYW1lfSAoJHtzZWxlY3RlZFBlcnNvbi5lbWFpbH0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVkUGVyc29uLmVtYWlsID8gYCR7c2VsZWN0ZWRQZXJzb24ubmFtZX0gKCR7c2VsZWN0ZWRQZXJzb24uZW1haWx9KWAgOiBzZWxlY3RlZFBlcnNvbi5uYW1lO1xuICB9XG5cbiAgcHVibGljIG9uSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5wZXJzb25GaWVsZENoYW5nZWQuZW1pdCgpO1xuICB9XG59XG4iXX0=
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1wZXJzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9maW5kLXBlcnNvbi9maW5kLXBlcnNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQTRCLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQVFwRixNQUFNLE9BQU8sbUJBQW1CO0lBMEI5QixZQUE2QixpQkFBcUMsRUFBbUIsRUFBcUI7UUFBN0Usc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFvQjtRQUFtQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXpCekYsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0MsY0FBUyxHQUFHLGlCQUFpQixDQUFDO1FBQzlCLGFBQVEsR0FBRyw4Q0FBOEMsQ0FBQztRQUMxRCxXQUFNLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUN4QixvQkFBZSxHQUFjLElB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TCxLQUFLOzJCQUNMLEtBQUs7MkJBQ0wsS0FBSztpQ0FDTCxLQUFLOytCQUNMLEtBQUs7K0JBQ0wsS0FBSzs4QkFDTCxLQUFLOzJCQUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlL29mJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGVyc29uLCBQZXJzb25Sb2xlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZpbmRBUGVyc29uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbmQtcGVyc29uL2ZpbmQtcGVyc29uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZmluZC1wZXJzb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1wZXJzb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLXBlcnNvbi5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIEZpbmRQZXJzb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcGVyc29uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBlcnNvbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBwZXJzb25GaWVsZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgYm9sZFRpdGxlID0gJ0ZpbmQgdGhlIHBlcnNvbic7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJUaXRsZSA9ICdUeXBlIHRoZSBuYW1lIG9mIHRoZSBwZXJzb24gYW5kIHNlbGVjdCB0aGVtLic7XG4gIEBJbnB1dCgpIHB1YmxpYyBkb21haW4gPSBQZXJzb25Sb2xlLkFMTDtcbiAgQElucHV0KCkgcHVibGljIGZpbmRQZXJzb25Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZFBlcnNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHVzZXJJbmNsdWRlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGFzc2lnbmVkVXNlcj86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyQ29udGVudDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpc05vUmVzdWx0c1Nob3duOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHNob3dVcGRhdGVkQ29sb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkUGVyc29uczogUGVyc29uW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJ1lvdSBtdXN0IHNlbGVjdCBhIG5hbWUnO1xuICBASW5wdXQoKSBwdWJsaWMgaWRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXJ2aWNlczogc3RyaW5nID0gJ0lBJztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gbnVsbDtcbiAgcHVibGljIHNob3dBdXRvY29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGZpbmRQZXJzb25Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIGZpbHRlcmVkT3B0aW9uczogUGVyc29uW10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IG1pblNlYXJjaENoYXJhY3RlcnMgPSAyO1xuICBwcml2YXRlIHN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmluZFBlcnNvblNlcnZpY2U6IEZpbmRBUGVyc29uU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWIpIHtcbiAgICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5zZWxlY3RlZFBlcnNvbik7XG4gICAgdGhpcy5maW5kUGVyc29uR3JvdXAuYWRkQ29udHJvbCgnZmluZFBlcnNvbkNvbnRyb2wnLCB0aGlzLmZpbmRQZXJzb25Db250cm9sKTtcbiAgICB0aGlzLnN1YiA9IHRoaXMuZmluZFBlcnNvbkNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zaG93QXV0b2NvbXBsZXRlID0gZmFsc2UpLFxuICAgICAgdGFwKCgpID0+IHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW10pLFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICB0YXAoKHNlYXJjaFRlcm0pID0+IHR5cGVvZiBzZWFyY2hUZXJtID09PSAnc3RyaW5nJyA/IHRoaXMucGVyc29uU2VsZWN0ZWQuZW1pdChudWxsKSA6IHZvaWQgMCksXG4gICAgICBmaWx0ZXIoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLmxlbmd0aCA+IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyksXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gdGhpcy5maWx0ZXIoc2VhcmNoVGVybSkucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuc2hvd0F1dG9jb21wbGV0ZSA9IHRydWUpLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW10pLFxuICAgICAgKSlcbiAgICApLnN1YnNjcmliZSgocGVvcGxlOiBQZXJzb25bXSkgPT4ge1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBwZW9wbGU7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXIoc2VhcmNoVGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxQZXJzb25bXT4ge1xuICAgIGNvbnN0IGZpbmRKdWRpY2lhbE9yQ1RTQ1Blb3BsZSA9IHRoaXMuZmluZFBlcnNvblNlcnZpY2UuZmluZCh7c2VhcmNoVGVybSwgdXNlclJvbGU6IHRoaXMuZG9tYWluLCBzZXJ2aWNlczogW3RoaXMuc2VydmljZXNdLCB1c2VySW5jbHVkZWQ6IHRoaXMudXNlckluY2x1ZGVkLCBhc3NpZ25lZFVzZXI6IHRoaXMuYXNzaWduZWRVc2VyfSk7XG4gICAgY29uc3QgZmluZENhc2V3b3JrZXJzT3JBZG1pbnNPckN0c2MgPSB0aGlzLmZpbmRQZXJzb25TZXJ2aWNlLmZpbmRDYXNld29ya2Vycyh7c2VhcmNoVGVybSwgdXNlclJvbGU6IHRoaXMuZG9tYWluLCBzZXJ2aWNlczogW3RoaXMuc2VydmljZXNdLCB1c2VySW5jbHVkZWQ6IHRoaXMudXNlckluY2x1ZGVkLCBhc3NpZ25lZFVzZXI6IHRoaXMuYXNzaWduZWRVc2VyfSk7XG4gICAgaWYgKHNlYXJjaFRlcm0gJiYgc2VhcmNoVGVybS5sZW5ndGggPiB0aGlzLm1pblNlYXJjaENoYXJhY3RlcnMpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5kb21haW4pIHtcbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkpVRElDSUFMOiB7XG4gICAgICAgICAgcmV0dXJuIGZpbmRKdWRpY2lhbE9yQ1RTQ1Blb3BsZS5waXBlKG1hcChwZXJzb25zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkczogc3RyaW5nW10gPSB0aGlzLnNlbGVjdGVkUGVyc29ucy5tYXAoKHtpZH0pID0+IGlkKTtcbiAgICAgICAgICAgIHJldHVybiBwZXJzb25zLmZpbHRlcigoeyBpZCB9KSA9PiAhaWRzLmluY2x1ZGVzKGlkKSk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5BTEw6IHtcbiAgICAgICAgICByZXR1cm4gemlwKGZpbmRKdWRpY2lhbE9yQ1RTQ1Blb3BsZSwgZmluZENhc2V3b3JrZXJzT3JBZG1pbnNPckN0c2MpLnBpcGUobWFwKHNlcGFyYXRlUGVvcGxlID0+IHNlcGFyYXRlUGVvcGxlWzBdLmNvbmNhdChzZXBhcmF0ZVBlb3BsZVsxXSkpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFBlcnNvblJvbGUuQ1RTQzpcbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkNBU0VXT1JLRVI6XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5BRE1JTjoge1xuICAgICAgICAgIHJldHVybiBmaW5kQ2FzZXdvcmtlcnNPckFkbWluc09yQ3RzYztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2YoW10pO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkUGVyc29uOiBQZXJzb24pOiB2b2lkIHtcbiAgICB0aGlzLnBlcnNvblNlbGVjdGVkLmVtaXQoc2VsZWN0ZWRQZXJzb24pO1xuICAgIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wuc2V0VmFsdWUodGhpcy5nZXREaXNwbGF5TmFtZShzZWxlY3RlZFBlcnNvbiksIHtlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZX0pO1xuICB9XG5cbiAgcHVibGljIGdldERpc3BsYXlOYW1lKHNlbGVjdGVkUGVyc29uOiBQZXJzb24pOiBzdHJpbmcge1xuICAgIGlmICghc2VsZWN0ZWRQZXJzb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKHNlbGVjdGVkUGVyc29uLmRvbWFpbiA9PT0gUGVyc29uUm9sZS5KVURJQ0lBTCAmJiBzZWxlY3RlZFBlcnNvbi5mdWxsTmFtZSkge1xuICAgICAgcmV0dXJuIGAke3NlbGVjdGVkUGVyc29uLmZ1bGxOYW1lfSAoJHtzZWxlY3RlZFBlcnNvbi5lbWFpbH0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVkUGVyc29uLmVtYWlsID8gYCR7c2VsZWN0ZWRQZXJzb24ubmFtZX0gKCR7c2VsZWN0ZWRQZXJzb24uZW1haWx9KWAgOiBzZWxlY3RlZFBlcnNvbi5uYW1lO1xuICB9XG5cbiAgcHVibGljIG9uSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5wZXJzb25GaWVsZENoYW5nZWQuZW1pdCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -97,7 +97,7 @@ export class FindServiceComponent {
|
|
|
97
97
|
FindServiceComponent.decorators = [
|
|
98
98
|
{ type: Component, args: [{
|
|
99
99
|
selector: 'xuilib-find-service',
|
|
100
|
-
template: "<div class=\"service-picker-custom\">\n <div class=\"search-service\">\n <div class=\"govuk-body\">\n <label id=\"selectServiceSearch-label\" for=\"serviceSearch__select\" *ngIf=\"serviceTitle\">\n {{ serviceTitle }}\n </label>\n </div>\n <div class=\"search-service__input-container\">\n <exui-search-service class=\"search-service__input\"\n [options]=\"field.options\"\n [selectedOptions]=\"selectedServices\"\n [disabled]=\"disabled\"\n (optionChanged)=\"onOptionSelected($event)\">\n </exui-search-service>\n <a href=\"javascript:void(0)\" (click)=\"addOption(tempSelectedService)\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\" data-module=\"govuk-button\"\n *ngIf=\"field?.enableAddButton\" id=\"add-service\">\n Add\n </a>\n </div>\n </div>\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedServices\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeOption(selection)\" href=\"javascript:void(0)\">\n {{ selection.label }}\n </a>\n </li>\n </ul>\n</div>\n",
|
|
100
|
+
template: "<div class=\"service-picker-custom\">\n <div class=\"search-service\">\n <div class=\"govuk-body\">\n <label id=\"selectServiceSearch-label\" for=\"serviceSearch__select\" *ngIf=\"serviceTitle\">\n {{ serviceTitle | rpxTranslate}}\n </label>\n </div>\n <div class=\"search-service__input-container\">\n <exui-search-service class=\"search-service__input\"\n [options]=\"field.options\"\n [selectedOptions]=\"selectedServices\"\n [disabled]=\"disabled\"\n (optionChanged)=\"onOptionSelected($event)\">\n </exui-search-service>\n <a href=\"javascript:void(0)\" (click)=\"addOption(tempSelectedService)\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\" data-module=\"govuk-button\"\n *ngIf=\"field?.enableAddButton\" id=\"add-service\">\n {{ 'Add' | rpxTranslate}}\n </a>\n </div>\n </div>\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedServices\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeOption(selection)\" href=\"javascript:void(0)\">\n {{ selection.label | rpxTranslate }}\n </a>\n </li>\n </ul>\n</div>\n",
|
|
101
101
|
styles: ["#add-service{background-color:#ddd}"]
|
|
102
102
|
},] }
|
|
103
103
|
];
|
|
@@ -110,4 +110,4 @@ FindServiceComponent.propDecorators = {
|
|
|
110
110
|
searchServiceComponent: [{ type: ViewChild, args: [SearchServiceComponent, { static: true },] }],
|
|
111
111
|
serviceFieldChanged: [{ type: Output }]
|
|
112
112
|
};
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1zZXJ2aWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmluZC1zZXJ2aWNlL2ZpbmQtc2VydmljZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBYSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFPcEYsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQVNrQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBR3pCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHdkIsd0JBQW1CLEdBQXVCLElBQUksQ0FBQztJQTBGeEQsQ0FBQztJQXpGQyxJQUFXLGdCQUFnQjs7UUFDekIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsMENBQUUsS0FBSyxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLHlCQUF5QixF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O2dCQUMvQixvdENBQTRDOzthQUU3Qzs7O29CQUVFLEtBQUs7MkJBQ0wsS0FBSzttQkFDTCxLQUFLO3VCQUNMLEtBQUs7bUNBQ0wsS0FBSztxQ0FDTCxTQUFTLFNBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2tDQUNsRCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnT3B0aW9uLCBGaWx0ZXJGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLXNlcnZpY2Uvc2VhcmNoLXNlcnZpY2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLWZpbmQtc2VydmljZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9maW5kLXNlcnZpY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLXNlcnZpY2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaW5kU2VydmljZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZztcbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2VUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGZvcm1TdWJtaXNzaW9uRXZlbnQkOiBTdWJqZWN0PHZvaWQ+O1xuICBAVmlld0NoaWxkKFNlYXJjaFNlcnZpY2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBzZWFyY2hTZXJ2aWNlQ29tcG9uZW50OiBTZWFyY2hTZXJ2aWNlQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgcHVibGljIHNlcnZpY2VGaWVsZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgaXNTZWxlY3RlZEFsbCA9IGZhbHNlO1xuICBwcml2YXRlIGZvcm1TdWJtaXNzaW9uRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgdGVtcFNlbGVjdGVkU2VydmljZTogRmlsdGVyQ29uZmlnT3B0aW9uID0gbnVsbDtcbiAgcHVibGljIGdldCBzZWxlY3RlZFNlcnZpY2VzKCk6IEZpbHRlckNvbmZpZ09wdGlvbltdIHtcbiAgICBjb25zdCBzZWxlY3RBbGxWYWx1ZSA9IHRoaXMuZmllbGQub3B0aW9ucy5maW5kKGl0ZW0gPT4gaXRlbS5zZWxlY3RBbGwpO1xuICAgIHJldHVybiB0aGlzLmlzU2VsZWN0ZWRBbGwgPyBbc2VsZWN0QWxsVmFsdWVdIDogdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpPy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRPcHRpb25zQWxwaGFiZXRpY2FsbHkoKTtcblxuICAgIC8vIFBhdGNoIERlZmF1bHQgT3B0aW9uXG4gICAgaWYgKHRoaXMuZmllbGQuZGVmYXVsdE9wdGlvbikge1xuICAgICAgdGhpcy5hZGRPcHRpb24odGhpcy5maWVsZC5kZWZhdWx0T3B0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudCQpIHtcbiAgICAgIHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgb25lU2VsZWN0ZWRBbmRNYXhTZWxlY3RlZE9uZSA9IHRoaXMuc2VsZWN0ZWRTZXJ2aWNlcy5sZW5ndGggPT09IDEgJiYgdGhpcy5maWVsZC5tYXhTZWxlY3RlZCA9PT0gMTtcbiAgICAgICAgaWYgKCFvbmVTZWxlY3RlZEFuZE1heFNlbGVjdGVkT25lKSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlQ29tcG9uZW50LnJlc2V0U2VhcmNoVGVybSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkT3B0aW9uKG9wdGlvbjogRmlsdGVyQ29uZmlnT3B0aW9uKTogdm9pZCB7XG4gICAgaWYgKG9wdGlvbikge1xuICAgICAgaWYgKG9wdGlvbi5zZWxlY3RBbGwpIHtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkQWxsID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZW1vdmVBbGxTZWxlY3RlZFZhbHVlcygpO1xuICAgICAgICB0aGlzLmZpZWxkLm9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoIWl0ZW0uc2VsZWN0QWxsKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZEFsbCkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlQWxsU2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShvcHRpb24pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZFNlcnZpY2UgPSBudWxsO1xuICAgICAgdGhpcy5zZXJ2aWNlRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZUNvbXBvbmVudC5yZXNldFNlYXJjaFRlcm0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlT3B0aW9uKHNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbik6IHZvaWQge1xuICAgIGlmIChzZXJ2aWNlLnNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5yZW1vdmVBbGxTZWxlY3RlZFZhbHVlcygpO1xuICAgICAgdGhpcy5pc1NlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChzZXJ2aWNlLmtleSkge1xuICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICAgIGNvbnN0IGluZGV4ID0gKGZvcm1BcnJheS52YWx1ZSkuZmluZEluZGV4KChzZWxlY3RlZFNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbikgPT4gc2VsZWN0ZWRTZXJ2aWNlLmtleS50b0xvd2VyQ2FzZSgpID09PSBzZXJ2aWNlLmtleS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlcnZpY2VGaWVsZENoYW5nZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbk9wdGlvblNlbGVjdGVkKG9wdGlvbjogRmlsdGVyQ29uZmlnT3B0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpZWxkLmVuYWJsZUFkZEJ1dHRvbiAmJiB0aGlzLmZpZWxkLm1heFNlbGVjdGVkID09PSAxKSB7XG4gICAgICB0aGlzLnJlbW92ZUFsbFNlbGVjdGVkVmFsdWVzKCk7XG4gICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShvcHRpb24pO1xuICAgICAgdGhpcy5zZXJ2aWNlRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRTZXJ2aWNlID0gb3B0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQWxsU2VsZWN0ZWRWYWx1ZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICBmb3JtQXJyYXkuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkU2VsZWN0ZWRTZXJ2aWNlVG9Gb3JtKHNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5uYW1lKSBhcyBGb3JtQXJyYXk7XG4gICAgZm9ybUFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKHNlcnZpY2UpKTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydE9wdGlvbnNBbHBoYWJldGljYWxseSgpOiBGaWx0ZXJDb25maWdPcHRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQub3B0aW9ucy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gYS5sYWJlbC50b0xvd2VyQ2FzZSgpID4gYi5sYWJlbC50b0xvd2VyQ2FzZSgpID8gMSA6IChiLmxhYmVsLnRvTG93ZXJDYXNlKCkgPiBhLmxhYmVsLnRvTG93ZXJDYXNlKCkgPyAtMSA6IDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1zZXJ2aWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmluZC1zZXJ2aWNlL2ZpbmQtc2VydmljZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBYSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFPcEYsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQVNrQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBR3pCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHdkIsd0JBQW1CLEdBQXVCLElBQUksQ0FBQztJQTBGeEQsQ0FBQztJQXpGQyxJQUFXLGdCQUFnQjs7UUFDekIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsMENBQUUsS0FBSyxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFFakMsdUJBQXVCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsSUFBSSxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUM5RSxNQUFNLDRCQUE0QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxLQUFLLENBQUMsQ0FBQztnQkFDeEcsSUFBSSxDQUFDLDRCQUE0QixFQUFFO29CQUNqQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLENBQUM7aUJBQy9DO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTSxTQUFTLENBQUMsTUFBMEI7UUFDekMsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTt3QkFDbkIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNyQztnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDdEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2lCQUM1QjtnQkFDRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdkM7WUFFRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDL0M7SUFDSCxDQUFDO0lBRU0sWUFBWSxDQUFDLE9BQTJCO1FBQzdDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNyQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUM1QjthQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBYyxDQUFDO1lBQzlELE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQW1DLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3BKLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDM0I7WUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBMEI7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxLQUFLLENBQUMsRUFBRTtZQUMvRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2pDO2FBQU07WUFDTCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBYyxDQUFDO1FBQzlELFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sd0JBQXdCLENBQUMsT0FBMkI7UUFDMUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWMsQ0FBQztRQUM5RCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7O1FBQ2hCLE1BQUEsSUFBSSxDQUFDLCtCQUErQiwwQ0FBRSxXQUFXLEdBQUc7SUFDdEQsQ0FBQzs7O1lBekdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQix3d0NBQTRDOzthQUU3Qzs7O29CQUVFLEtBQUs7MkJBQ0wsS0FBSzttQkFDTCxLQUFLO3VCQUNMLEtBQUs7bUNBQ0wsS0FBSztxQ0FDTCxTQUFTLFNBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2tDQUNsRCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnT3B0aW9uLCBGaWx0ZXJGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLXNlcnZpY2Uvc2VhcmNoLXNlcnZpY2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLWZpbmQtc2VydmljZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9maW5kLXNlcnZpY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLXNlcnZpY2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaW5kU2VydmljZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZztcbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2VUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGZvcm1TdWJtaXNzaW9uRXZlbnQkOiBTdWJqZWN0PHZvaWQ+O1xuICBAVmlld0NoaWxkKFNlYXJjaFNlcnZpY2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBzZWFyY2hTZXJ2aWNlQ29tcG9uZW50OiBTZWFyY2hTZXJ2aWNlQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgcHVibGljIHNlcnZpY2VGaWVsZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgaXNTZWxlY3RlZEFsbCA9IGZhbHNlO1xuICBwcml2YXRlIGZvcm1TdWJtaXNzaW9uRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgdGVtcFNlbGVjdGVkU2VydmljZTogRmlsdGVyQ29uZmlnT3B0aW9uID0gbnVsbDtcbiAgcHVibGljIGdldCBzZWxlY3RlZFNlcnZpY2VzKCk6IEZpbHRlckNvbmZpZ09wdGlvbltdIHtcbiAgICBjb25zdCBzZWxlY3RBbGxWYWx1ZSA9IHRoaXMuZmllbGQub3B0aW9ucy5maW5kKGl0ZW0gPT4gaXRlbS5zZWxlY3RBbGwpO1xuICAgIHJldHVybiB0aGlzLmlzU2VsZWN0ZWRBbGwgPyBbc2VsZWN0QWxsVmFsdWVdIDogdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpPy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRPcHRpb25zQWxwaGFiZXRpY2FsbHkoKTtcblxuICAgIC8vIFBhdGNoIERlZmF1bHQgT3B0aW9uXG4gICAgaWYgKHRoaXMuZmllbGQuZGVmYXVsdE9wdGlvbikge1xuICAgICAgdGhpcy5hZGRPcHRpb24odGhpcy5maWVsZC5kZWZhdWx0T3B0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudCQpIHtcbiAgICAgIHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgb25lU2VsZWN0ZWRBbmRNYXhTZWxlY3RlZE9uZSA9IHRoaXMuc2VsZWN0ZWRTZXJ2aWNlcy5sZW5ndGggPT09IDEgJiYgdGhpcy5maWVsZC5tYXhTZWxlY3RlZCA9PT0gMTtcbiAgICAgICAgaWYgKCFvbmVTZWxlY3RlZEFuZE1heFNlbGVjdGVkT25lKSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlQ29tcG9uZW50LnJlc2V0U2VhcmNoVGVybSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkT3B0aW9uKG9wdGlvbjogRmlsdGVyQ29uZmlnT3B0aW9uKTogdm9pZCB7XG4gICAgaWYgKG9wdGlvbikge1xuICAgICAgaWYgKG9wdGlvbi5zZWxlY3RBbGwpIHtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkQWxsID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZW1vdmVBbGxTZWxlY3RlZFZhbHVlcygpO1xuICAgICAgICB0aGlzLmZpZWxkLm9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoIWl0ZW0uc2VsZWN0QWxsKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZEFsbCkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlQWxsU2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShvcHRpb24pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZFNlcnZpY2UgPSBudWxsO1xuICAgICAgdGhpcy5zZXJ2aWNlRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZUNvbXBvbmVudC5yZXNldFNlYXJjaFRlcm0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlT3B0aW9uKHNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbik6IHZvaWQge1xuICAgIGlmIChzZXJ2aWNlLnNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5yZW1vdmVBbGxTZWxlY3RlZFZhbHVlcygpO1xuICAgICAgdGhpcy5pc1NlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChzZXJ2aWNlLmtleSkge1xuICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICAgIGNvbnN0IGluZGV4ID0gKGZvcm1BcnJheS52YWx1ZSkuZmluZEluZGV4KChzZWxlY3RlZFNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbikgPT4gc2VsZWN0ZWRTZXJ2aWNlLmtleS50b0xvd2VyQ2FzZSgpID09PSBzZXJ2aWNlLmtleS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlcnZpY2VGaWVsZENoYW5nZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbk9wdGlvblNlbGVjdGVkKG9wdGlvbjogRmlsdGVyQ29uZmlnT3B0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpZWxkLmVuYWJsZUFkZEJ1dHRvbiAmJiB0aGlzLmZpZWxkLm1heFNlbGVjdGVkID09PSAxKSB7XG4gICAgICB0aGlzLnJlbW92ZUFsbFNlbGVjdGVkVmFsdWVzKCk7XG4gICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShvcHRpb24pO1xuICAgICAgdGhpcy5zZXJ2aWNlRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRTZXJ2aWNlID0gb3B0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQWxsU2VsZWN0ZWRWYWx1ZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICBmb3JtQXJyYXkuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkU2VsZWN0ZWRTZXJ2aWNlVG9Gb3JtKHNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5uYW1lKSBhcyBGb3JtQXJyYXk7XG4gICAgZm9ybUFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKHNlcnZpY2UpKTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydE9wdGlvbnNBbHBoYWJldGljYWxseSgpOiBGaWx0ZXJDb25maWdPcHRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQub3B0aW9ucy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gYS5sYWJlbC50b0xvd2VyQ2FzZSgpID4gYi5sYWJlbC50b0xvd2VyQ2FzZSgpID8gMSA6IChiLmxhYmVsLnRvTG93ZXJDYXNlKCkgPiBhLmxhYmVsLnRvTG93ZXJDYXNlKCkgPyAtMSA6IDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|
|
@@ -612,7 +612,7 @@ export class GenericFilterComponent {
|
|
|
612
612
|
GenericFilterComponent.decorators = [
|
|
613
613
|
{ type: Component, args: [{
|
|
614
614
|
selector: 'xuilib-generic-filter',
|
|
615
|
-
template: "<form [formGroup]=\"form\" (ngSubmit)=\"applyFilter(form)\">\n <div class=\"contain-classes\" *ngFor=\"let field of config.fields\">\n <hr *ngIf=\"field.lineBreakBefore\" class=\"govuk-section-break govuk-section-break--visible elevated-break\">\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'group-title'\">\n <div [class]=\"field.titleClasses ? field.titleClasses: 'govuk-label govuk-label--m govuk-!-margin-bottom-4'\">\n {{ field.name | capitalize }}\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"govuk-form-group xui-generic-filter\"\n [hidden]=\"hidden(field, form)\"\n [id]=\"field.name\"\n [ngClass]=\"{'form-group-error': submitted && (form.get(field.name).errors?.required || form.get(field.name).errors?.minlength || form.get(field.name).errors?.maxLength)}\">\n <div *ngIf=\"field.title\" class=\"xui-generic-filter__field-title\">\n <h3 [class]=\"field.titleClasses ? field.titleClasses : 'govuk-heading-s'\" style=\"margin-bottom: 0!important\">\n {{field.title | capitalize}}\n </h3>\n <div *ngIf=\"field?.titleHint\" class=\"govuk-!-margin-left-2\">\n {{ field.titleHint }}\n </div>\n </div>\n <p class=\"govuk-body\" *ngIf=\"field.subTitle\">{{field.subTitle}}</p>\n <div *ngIf=\"field.hintText\"\n [id]=\"field.hintText + '-hint'\" class=\"govuk-hint\">\n {{ field.hintText }}\n </div>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMinSelectedError && submitted && (form.get(field.name).errors?.required || form.get(field.name).errors?.minlength)\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.minSelectedError}}\n </span>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMaxSelectedError && submitted && form.get(field.name).errors?.maxLength\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.maxSelectedError}}\n </span>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\"\n *ngIf=\"field.emailError && submitted && form.get(field.name).errors?.email\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.emailError}}\n </span>\n <div class=\"govuk-body\" [class.govuk-body--maxWidth480px]=\"field.maxWidth480px\" [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'select'\">\n <select class=\"govuk-select\" (change)=\"fieldChanged(field, form)\" [attr.disabled]=\"disabled(field, form)\" [name]=\"'select_' + field.name\" [id]=\"'select_' + field.name\" [formControlName]=\"field.name\">\n <option disabled selected hidden value=\"\">{{field.disabledText}}</option>\n <option *ngIf=\"field.defaultOption\" [attr.selected]=\"true\" [value]=\"field.defaultOption.key\">{{field.defaultOption.label}}</option>\n <option class=\"govuk-radios__item\" *ngFor=\"let item of field.options\" [value]=\"item.key\">{{item.label}}</option>\n </select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'group-select'\">\n <select class=\"govuk-select\" (change)=\"fieldChanged(field, form)\" [attr.disabled]=\"disabled(field, form)\" [name]=\"'select_' + field.name\" [id]=\"'select_' + field.name\" [formControlName]=\"field.name\">\n <option disabled selected hidden value=\"\">{{field.disabledText}}</option>\n <option *ngIf=\"field.defaultOption\" selected [value]=\"field.defaultOption.key\">{{field.defaultOption.label}}</option>\n <optgroup *ngFor = 'let grp of filteredSkillsByServices' label=\"{{grp.group | titlecase}}\">\n <option *ngFor = 'let item of grp.options' [value]=\"item.key\">{{item.label}}</option>\n </optgroup>\n </select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'nested-checkbox'\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of filteredSkillsByServicesCheckbox; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox-large'\">\n <div class=\"govuk-checkboxes\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'radio'\">\n <div class=\"govuk-radios\">\n <div *ngFor=\"let item of field.options\" class=\"govuk-radios__item\">\n <input type=\"radio\"\n [formControlName]=\"field.name\"\n [id]=\"'radio_' + item.key\"\n [attr.disabled]=\"disabled(field, form)\"\n [checked]=\"item.key === form.get(field.name).value\"\n class=\"govuk-radios__input\"\n [value]=\"item.key\"\n (change)=\"fieldChanged(field, form)\"\n />\n <label [for]=\"'radio_' + item.key\" class=\"govuk-label govuk-radios__label\">{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-person'\">\n <xuilib-find-person subTitle=\"\" (personSelected)=\"updatePersonControls($event, field)\"\n (personFieldChanged)=\"inputChanged(field)\"\n [submitted]=\"submitted\"\n [disabled]=\"disabled(field, form)\"\n [domain]=\"form.get(field.domainField)?.value\"\n [findPersonGroup]=\"form\"\n [selectedPerson]=\"form.get(field.name)?.value?.email\"\n [userIncluded]=\"false\"\n [placeholderContent]=\"field.placeholderContent ? field.placeholderContent : ''\"\n [services]=\"form.get(field.servicesField)?.value\"\n ></xuilib-find-person>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-location'\">\n <xuilib-find-location (locationFieldChanged)=\"inputChanged(field)\"\n [form]=\"form\"\n [fields]=\"config.fields\"\n [locationTitle]=\"field.locationTitle\"\n [enableAddLocationButton]=\"field.enableAddButton\"\n [disabled]=\"disabled(field, form)\"\n [disableInputField]=\"field.disable\"\n [submitted]=\"submitted\"\n [field]=\"field\"\n [services]=\"form.get(field.findLocationField)?.value\"\n [formSubmissionEvent$]=\"formSubmissionEvent$\"\n ></xuilib-find-location>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-task-name'\">\n <xuilib-find-task-name subTitle=\"\" (taskNameSelected)=\"updateTaskNameControls($event, field)\"\n (taskNameFieldChanged)=\"inputChanged(field)\"\n [submitted]=\"submitted\"\n [disabled]=\"disabled(field, form)\"\n [domain]=\"form.get(field.domainField)?.value\"\n [findTaskNameGroup]=\"form\"\n [selectedTaskName]=\"form.get(field.name)?.value?.task_type_name\"\n [placeholderContent]=\"field.placeholderContent ? field.placeholderContent : ''\"\n [services]=\"form.get(field.servicesField)?.value\"\n ></xuilib-find-task-name>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-service'\">\n <xuilib-find-service (serviceFieldChanged)=\"inputServiceChanged(field)\"\n [field]=\"field\"\n [form]=\"form\"\n [formSubmissionEvent$]=\"formSubmissionEvent$\"\n [disabled]=\"disabled(field, form)\">\n </xuilib-find-service>\n </ng-container>\n <ng-container *ngSwitchCase=\"'text-input'\">\n <input class=\"govuk-input\" type=\"text\"\n [formControlName]=\"field.name\"\n [id]=\"field.name\"\n [attr.disabled]=\"disabled(field, form)\"\n (change)=\"fieldChanged(field, form)\"\n [attr.maxlength]=\"field.maxlength ? field.maxlength : null\"\n [readonly]=\"field.readonly\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"'email-input'\">\n <input class=\"govuk-input\" type=\"email\"\n [formControlName]=\"field.name\"\n [id]=\"field.name\"\n [attr.disabled]=\"disabled(field, form)\"\n (change)=\"fieldChanged(field, form)\"\n [readonly]=\"field.readonly\"\n />\n </ng-container>\n </div>\n </div>\n </ng-container>\n</ng-container>\n </div>\n <hr class=\"govuk-section-break govuk-section-break--m govuk-section-break--visible\"/>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <button\n class=\"govuk-button govuk-!-margin-right-1 govuk-!-margin-bottom-0\"\n type=\"submit\"\n id=\"applyFilter\"\n [disabled]=\"config.enableDisabledButton && form.invalid\"\n >{{config.applyButtonText || 'Apply'}}</button>\n <button *ngIf=\"config.showCancelFilterButton\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\"\n type=\"button\"\n id=\"cancelFilter\"\n (click)=\"cancelFilter()\">{{ config.cancelButtonText || 'Cancel'}}</button>\n </div>\n </div>\n</form>\n",
|
|
615
|
+
template: "<form [formGroup]=\"form\" (ngSubmit)=\"applyFilter(form)\">\n <div class=\"contain-classes\" *ngFor=\"let field of config.fields\">\n <hr *ngIf=\"field.lineBreakBefore\" class=\"govuk-section-break govuk-section-break--visible elevated-break\">\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'group-title'\">\n <div [class]=\"field.titleClasses ? field.titleClasses: 'govuk-label govuk-label--m govuk-!-margin-bottom-4'\">\n {{ field.name | capitalize }}\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"govuk-form-group xui-generic-filter\"\n [hidden]=\"hidden(field, form)\"\n [id]=\"field.name\"\n [ngClass]=\"{'form-group-error': submitted && (form.get(field.name).errors?.required || form.get(field.name).errors?.minlength || form.get(field.name).errors?.maxLength)}\">\n <div *ngIf=\"field.title\" class=\"xui-generic-filter__field-title\">\n <h3 [class]=\"field.titleClasses ? field.titleClasses : 'govuk-heading-s'\" style=\"margin-bottom: 0!important\">\n {{field.title | capitalize}}\n </h3>\n <div *ngIf=\"field?.titleHint\" class=\"govuk-!-margin-left-2\">\n {{ field.titleHint }}\n </div>\n </div>\n <p class=\"govuk-body\" *ngIf=\"field.subTitle\">{{field.subTitle}}</p>\n <div *ngIf=\"field.hintText\"\n [id]=\"field.hintText + '-hint'\" class=\"govuk-hint\">\n {{ field.hintText | rpxTranslate }}\n </div>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMinSelectedError && submitted && (form.get(field.name).errors?.required || form.get(field.name).errors?.minlength)\">\n <span class=\"govuk-visually-hidden\">{{ 'Error:' | rpxTranslate}}</span> {{field.minSelectedError | rpxTranslate }}\n </span>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMaxSelectedError && submitted && form.get(field.name).errors?.maxLength\">\n <span class=\"govuk-visually-hidden\">{{ 'Error:' | rpxTranslate}}</span> {{field.maxSelectedError | rpxTranslate }}\n </span>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\"\n *ngIf=\"field.emailError && submitted && form.get(field.name).errors?.email\">\n <span class=\"govuk-visually-hidden\">{{ 'Error:' | rpxTranslate }}</span> {{field.emailError | rpxTranslate }}\n </span>\n <div class=\"govuk-body\" [class.govuk-body--maxWidth480px]=\"field.maxWidth480px\" [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'select'\">\n <select class=\"govuk-select\" (change)=\"fieldChanged(field, form)\" [attr.disabled]=\"disabled(field, form)\" [name]=\"'select_' + field.name\" [id]=\"'select_' + field.name\" [formControlName]=\"field.name\">\n <option disabled selected hidden value=\"\">{{field.disabledText}}</option>\n <option *ngIf=\"field.defaultOption\" [attr.selected]=\"true\" [value]=\"field.defaultOption.key\">{{field.defaultOption.label}}</option>\n <option class=\"govuk-radios__item\" *ngFor=\"let item of field.options\" [value]=\"item.key\">{{item.label}}</option>\n </select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'group-select'\">\n <select class=\"govuk-select\" (change)=\"fieldChanged(field, form)\" [attr.disabled]=\"disabled(field, form)\" [name]=\"'select_' + field.name\" [id]=\"'select_' + field.name\" [formControlName]=\"field.name\">\n <option disabled selected hidden value=\"\">{{field.disabledText}}</option>\n <option *ngIf=\"field.defaultOption\" selected [value]=\"field.defaultOption.key\">{{field.defaultOption.label}}</option>\n <optgroup *ngFor = 'let grp of filteredSkillsByServices' label=\"{{grp.group | titlecase}}\">\n <option *ngFor = 'let item of grp.options' [value]=\"item.key\">{{item.label}}</option>\n </optgroup>\n </select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'nested-checkbox'\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of filteredSkillsByServicesCheckbox; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label | rpxTranslate}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox-large'\">\n <div class=\"govuk-checkboxes\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label | rpxTranslate}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'radio'\">\n <div class=\"govuk-radios\">\n <div *ngFor=\"let item of field.options\" class=\"govuk-radios__item\">\n <input type=\"radio\"\n [formControlName]=\"field.name\"\n [id]=\"'radio_' + item.key\"\n [attr.disabled]=\"disabled(field, form)\"\n [checked]=\"item.key === form.get(field.name).value\"\n class=\"govuk-radios__input\"\n [value]=\"item.key\"\n (change)=\"fieldChanged(field, form)\"\n />\n <label [for]=\"'radio_' + item.key\" class=\"govuk-label govuk-radios__label\">{{item.label | rpxTranslate}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-person'\">\n <xuilib-find-person subTitle=\"\" (personSelected)=\"updatePersonControls($event, field)\"\n (personFieldChanged)=\"inputChanged(field)\"\n [submitted]=\"submitted\"\n [disabled]=\"disabled(field, form)\"\n [domain]=\"form.get(field.domainField)?.value\"\n [findPersonGroup]=\"form\"\n [selectedPerson]=\"form.get(field.name)?.value?.email\"\n [userIncluded]=\"false\"\n [placeholderContent]=\"field.placeholderContent ? field.placeholderContent : ''\"\n [services]=\"form.get(field.servicesField)?.value\"\n ></xuilib-find-person>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-location'\">\n <xuilib-find-location (locationFieldChanged)=\"inputChanged(field)\"\n [form]=\"form\"\n [fields]=\"config.fields\"\n [locationTitle]=\"field.locationTitle\"\n [enableAddLocationButton]=\"field.enableAddButton\"\n [disabled]=\"disabled(field, form)\"\n [disableInputField]=\"field.disable\"\n [submitted]=\"submitted\"\n [field]=\"field\"\n [services]=\"form.get(field.findLocationField)?.value\"\n [formSubmissionEvent$]=\"formSubmissionEvent$\"\n ></xuilib-find-location>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-task-name'\">\n <xuilib-find-task-name subTitle=\"\" (taskNameSelected)=\"updateTaskNameControls($event, field)\"\n (taskNameFieldChanged)=\"inputChanged(field)\"\n [submitted]=\"submitted\"\n [disabled]=\"disabled(field, form)\"\n [domain]=\"form.get(field.domainField)?.value\"\n [findTaskNameGroup]=\"form\"\n [selectedTaskName]=\"form.get(field.name)?.value?.task_type_name\"\n [placeholderContent]=\"field.placeholderContent ? field.placeholderContent : ''\"\n [services]=\"form.get(field.servicesField)?.value\"\n ></xuilib-find-task-name>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-service'\">\n <xuilib-find-service (serviceFieldChanged)=\"inputServiceChanged(field)\"\n [field]=\"field\"\n [form]=\"form\"\n [formSubmissionEvent$]=\"formSubmissionEvent$\"\n [disabled]=\"disabled(field, form)\">\n </xuilib-find-service>\n </ng-container>\n <ng-container *ngSwitchCase=\"'text-input'\">\n <input class=\"govuk-input\" type=\"text\"\n [formControlName]=\"field.name\"\n [id]=\"field.name\"\n [attr.disabled]=\"disabled(field, form)\"\n (change)=\"fieldChanged(field, form)\"\n [attr.maxlength]=\"field.maxlength ? field.maxlength : null\"\n [readonly]=\"field.readonly\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"'email-input'\">\n <input class=\"govuk-input\" type=\"email\"\n [formControlName]=\"field.name\"\n [id]=\"field.name\"\n [attr.disabled]=\"disabled(field, form)\"\n (change)=\"fieldChanged(field, form)\"\n [readonly]=\"field.readonly\"\n />\n </ng-container>\n </div>\n </div>\n </ng-container>\n</ng-container>\n </div>\n <hr class=\"govuk-section-break govuk-section-break--m govuk-section-break--visible\"/>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <button\n class=\"govuk-button govuk-!-margin-right-1 govuk-!-margin-bottom-0\"\n type=\"submit\"\n id=\"applyFilter\"\n [disabled]=\"config.enableDisabledButton && form.invalid\"\n >{{(config.applyButtonText || 'Apply') | rpxTranslate}}</button>\n <button *ngIf=\"config.showCancelFilterButton\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\"\n type=\"button\"\n id=\"cancelFilter\"\n (click)=\"cancelFilter()\">{{ (config.cancelButtonText || 'Cancel') | rpxTranslate}}</button>\n </div>\n </div>\n</form>\n",
|
|
616
616
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
617
617
|
encapsulation: ViewEncapsulation.None,
|
|
618
618
|
styles: [".contain-classes .elevated-break{margin-bottom:20px}@media (min-width:40.0625em){.contain-classes .elevated-break{margin-bottom:30px}}.contain-classes .govuk-body--maxWidth480px{max-width:480px}.contain-classes .xui-generic-filter .select-all{margin-bottom:10px}.contain-classes .xui-generic-filter .govuk-checkboxes{display:flex;flex-direction:column;flex-wrap:wrap}.contain-classes .xui-generic-filter .govuk-checkboxes>div{flex-grow:1;flex-shrink:0}.contain-classes .xui-generic-filter__field-title{display:flex;align-items:center;margin-bottom:10px}.contain-classes .govuk-select{width:100%}"]
|
|
@@ -626,4 +626,4 @@ GenericFilterComponent.propDecorators = {
|
|
|
626
626
|
config: [{ type: Input }],
|
|
627
627
|
settings: [{ type: Input }]
|
|
628
628
|
};
|
|
629
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9nZW5lcmljLWZpbHRlci9nZW5lcmljLWZpbHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFILE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFTL0YsTUFBTSxPQUFPLHNCQUFzQjtJQVNqQyxZQUE2QixhQUE0QixFQUFtQixFQUFlO1FBQTlELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQW1CLE9BQUUsR0FBRixFQUFFLENBQWE7UUFQcEYsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUlsQixtQ0FBOEIsR0FBYSxFQUFFLENBQUM7UUFDOUMseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUU0QyxDQUFDO0lBSy9GLElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFDVyxNQUFNLENBQUMsS0FBbUI7UUFDbkMsSUFBSSxDQUFDLE9BQU8sbUNBQ1AsS0FBSyxLQUNSLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFB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YSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7OztZQWhwQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx1QkFBdUI7Z0JBQ2pDLHVqWkFBNEM7Z0JBRTVDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQVRRLGFBQWE7WUFIZSxXQUFXOzs7cUJBK0I3QyxLQUFLO3VCQW9CTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnLCBGaWx0ZXJDb25maWdPcHRpb24sIEZpbHRlckVycm9yLCBGaWx0ZXJGaWVsZENvbmZpZywgRmlsdGVyU2V0dGluZywgR3JvdXBPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBnZXRWYWx1ZXMsIG1heFNlbGVjdGVkVmFsaWRhdG9yLCBtaW5TZWxlY3RlZFZhbGlkYXRvciB9IGZyb20gJy4vZ2VuZXJpYy1maWx0ZXItdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZ2VuZXJpYy1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJ2dlbmVyaWMtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2dlbmVyaWMtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzdWJtaXR0ZWQgPSBmYWxzZTtcbiAgcHVibGljIGZvcm1TdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlczogR3JvdXBPcHRpb25zW107XG4gIHB1YmxpYyBmaWx0ZXJlZFNraWxsc0J5U2VydmljZXNDaGVja2JveDogRmlsdGVyQ29uZmlnT3B0aW9uW107XG4gIHB1YmxpYyBwcmV2aW91c1NlbGVjdGVkTmVzdGVkQ2hlY2tib3g6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBmb3JtU3VibWlzc2lvbkV2ZW50JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLCBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcikge31cblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9jb25maWc6IEZpbHRlckNvbmZpZztcblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBGaWx0ZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNvbmZpZyh2YWx1ZTogRmlsdGVyQ29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0ge1xuICAgICAgLi4udmFsdWUsXG4gICAgICBmaWVsZHM6IHZhbHVlLmZpZWxkcy5tYXAoZmllbGQgPT4gKHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIGRpc3BsYXlNaW5TZWxlY3RlZEVycm9yOiBmYWxzZSxcbiAgICAgICAgZGlzcGxheU1heFNlbGVjdGVkRXJyb3I6IGZhbHNlLFxuICAgICAgfSkpXG4gICAgfTtcbiAgICB0aGlzLl9jb25maWcgPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX3NldHRpbmdzPzogRmlsdGVyU2V0dGluZztcblxuICBwdWJsaWMgZ2V0IHNldHRpbmdzKCk6IEZpbHRlclNldHRpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXR0aW5ncztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2V0dGluZ3ModmFsdWU6IEZpbHRlclNldHRpbmcpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmdldFNldHRpbmdzKCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5maWVsZHMpIHtcbiAgICAgIHRoaXMubWVyZ2VEZWZhdWx0RmllbGRzKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5fc2V0dGluZ3MgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFkZEZvcm1WYWxpZGF0b3JzKGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZyk6IFZhbGlkYXRvcnMge1xuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbXTtcbiAgICBpZiAoZmllbGQgJiYgZmllbGQubWluU2VsZWN0ZWQgPiAwKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2gobWluU2VsZWN0ZWRWYWxpZGF0b3IoZmllbGQubWluU2VsZWN0ZWQpKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQgJiYgZmllbGQubWF4U2VsZWN0ZWQgPiAwKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2gobWF4U2VsZWN0ZWRWYWxpZGF0b3IoZmllbGQubWF4U2VsZWN0ZWQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MpIHtcbiAgICAgIHRoaXMuZ2V0U2V0dGluZ3MoKTtcbiAgICB9XG4gICAgdGhpcy5tZXJnZURlZmF1bHRGaWVsZHModGhpcy5zZXR0aW5ncyk7XG4gICAgdGhpcy5idWlsZEZvcm0odGhpcy5jb25maWcsIHRoaXMuc2V0dGluZ3MpO1xuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5jb3B5RmllbGRzKSB7XG4gICAgICB0aGlzLmZvcm0gPSB0aGlzLl9jb25maWcuY29weUZpZWxkcyh0aGlzLmZvcm0pO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybVN1YiA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuc3VibWl0dGVkID0gZmFsc2UpO1xuICAgIHRoaXMuZmlsdGVyU2tpbGxzQnlTZXJ2aWNlcyhudWxsLCB0aGlzLmNvbmZpZyk7XG4gICAgY29uc3Qgc2VydmljZXMgPSB0aGlzLmNvbmZpZy5maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lID09PSAndXNlci1zZXJ2aWNlcycpO1xuICAgIGlmIChzZXJ2aWNlcykge1xuICAgICAgdGhpcy5zdGFydEZpbHRlclNraWxsc0J5U2VydmljZXModGhpcy5mb3JtLCBzZXJ2aWNlcyk7XG4gICAgICBpZighdGhpcy5fY29uZmlnLmNvcHlGaWVsZHMpIHtcbiAgICAgICAgdGhpcy5pbml0VmFsdWVzRnJvbUNhY2hlRm9yU2tpbGxzQnlTZXJ2aWNlcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZ2l2ZW5FcnJvcnMubmV4dChudWxsKTtcblxuICAgIGlmICh0aGlzLmZvcm1TdWIpIHtcbiAgICAgIHRoaXMuZm9ybVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoaWRkZW4oZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnLCBmb3JtOiBGb3JtR3JvdXApOiBib29sZWFuIHtcbiAgICBpZiAoIWZpZWxkLnNob3dDb25kaXRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBmaWVsZC5zaG93Q29uZGl0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uZ2V0KGZpZWxkLm5hbWUpIGFzIEZvcm1Db250cm9sO1xuICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGZpZWxkLnNob3dDb25kaXRpb24uc3BsaXQoJz0nKTtcbiAgICAgIGlmIChmb3JtLnZhbHVlICYmIGZvcm0udmFsdWVbbmFtZV0gPT09IHZhbHVlKSB7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1wZXJzb24nKSB7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICBjb250cm9sLmdldCgnZW1haWwnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1wZXJzb24nKSB7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZWQoZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnLCBmb3JtOiBGb3JtR3JvdXApOiBib29sZWFuIHtcbiAgICBpZiAoIWZpZWxkLmVuYWJsZUNvbmRpdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZmllbGQuZW5hYmxlQ29uZGl0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uZ2V0KGZpZWxkLm5hbWUpIGFzIEZvcm1Db250cm9sO1xuICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGZpZWxkLmVuYWJsZUNvbmRpdGlvbi5zcGxpdCgnPScpO1xuICAgICAgaWYgKGZvcm0udmFsdWUgJiYgZm9ybS52YWx1ZVtuYW1lXSA9PT0gdmFsdWUpIHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLXBlcnNvbicpIHtcbiAgICAgICAgICBjb250cm9sLmdldCgnZW1haWwnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgIGNvbnRyb2wuZ2V0KCdlbWFpbCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2ZpbmQtcGVyc29uJykge1xuICAgICAgICAgIGNvbnRyb2wuZ2V0KCdlbWFpbCcpLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgIGNvbnRyb2wuZ2V0KCdlbWFpbCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGZpbmQtbG9jYXRpb24gaXMgc3BlY2lhbCBjYXNlIHdoZXJlIG5lZWQgdG8gcmVzZXQgdGV4dGJveCAoYnkgZXhpc3RpbmcgZGlzYWJsaW5nIGZ1bmN0aW9uYWxpdHkpXG4gICAgLy8gZmllbGQuZGlzYWJsZSByZWZlcnJlZCB0byBjb21wb25lbnQgaXRzZWxmXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLWxvY2F0aW9uJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIE5vdGU6IGZpZWxkLmRpc2FibGUgZGVjaWRlcyB3aGV0aGVyIHRvIGFjdHVhbGx5IGRpc2FibGUgb3Igbm90XG4gICAgcmV0dXJuIGZpZWxkLmRpc2FibGUgPyBmaWVsZC5kaXNhYmxlIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseUZpbHRlcihmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnQkLm5leHQoKTtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgZm9ybS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgaWYgKGZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuX3NldHRpbmdzID0ge1xuICAgICAgICBpZDogdGhpcy5jb25maWcuaWQsXG4gICAgICAgIGlkYW1JZDogdGhpcy5maWx0ZXJTZXJ2aWNlLmdldFVzZXJJZCgpLFxuICAgICAgICBmaWVsZHM6IHRoaXMuZ2V0U2VsZWN0ZWRWYWx1ZXMoZm9ybS52YWx1ZSwgdGhpcy5jb25maWcpXG4gICAgICB9O1xuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmdpdmVuRXJyb3JzLm5leHQobnVsbCk7XG4gICAgICBjb25zdCBzZXR0aW5ncyA9IHsuLi50aGlzLnNldHRpbmdzLCByZXNldDogZmFsc2V9O1xuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnBlcnNpc3Qoc2V0dGluZ3MsIHRoaXMuY29uZmlnLnBlcnNpc3RlbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWl0Rm9ybUVycm9ycyhmb3JtKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLmFwcGx5QnV0dG9uQ2FsbGJhY2spIHtcbiAgICAgIHRoaXMuX2NvbmZpZy5hcHBseUJ1dHRvbkNhbGxiYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gd2hlbiBkb21haW4gY2hhbmdlcyBlbnN1cmUgdGhhdCBwZXJzb24gZmllbGQgaXMgcmVzZXRcbiAgcHVibGljIGZpZWxkQ2hhbmdlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcsIGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIC8vIFRPRE8gLSBEbyBzaW1pbGFyIHdpdGgganVyaXNkaWN0aW9uL3NlcnZpY2UgZm9yIGNhc2V3b3JrZXJzIGJ5IHNlcnZpY2VzXG4gICAgaWYgKGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzICYmIGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzLmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCByZXNldEZpZWxkIG9mIGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzKSB7XG4gICAgICAgIHRoaXMucmVzZXRGaWVsZChyZXNldEZpZWxkLCBmb3JtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyB3aGVuIHVzZXIgZW50ZXJzIGlucHV0IGNoYW5nZSByYWRpbyBidXR0b25cbiAgcHVibGljIGlucHV0Q2hhbmdlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiB2b2lkIHtcbiAgICBpZiAoZmllbGQucmFkaW9TZWxlY3Rpb25DaGFuZ2UgJiYgdHlwZW9mIGZpZWxkLnJhZGlvU2VsZWN0aW9uQ2hhbmdlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGZpZWxkLmVuYWJsZUNvbmRpdGlvbi5zcGxpdCgnPScpO1xuICAgICAgdGhpcy5mb3JtLmdldChuYW1lKS5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5wdXRTZXJ2aWNlQ2hhbmdlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiB2b2lkIHtcbiAgICBpZiAoZmllbGQubmFtZSA9PT0gJ3VzZXItc2VydmljZXMnKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFNlcnZpY2VzID0gdGhpcy5nZXRTZWxlY3RlZFZhbHVlc0ZvckZpZWxkcyh0aGlzLmZvcm0uY29udHJvbHMsIGZpZWxkKTtcbiAgICAgIHRoaXMuZmlsdGVyU2tpbGxzQnlTZXJ2aWNlcyhzZWxlY3RlZFNlcnZpY2VzLCB0aGlzLmNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbmNlbEZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmJ1aWxkRm9ybSh0aGlzLmNvbmZpZywgdGhpcy5zZXR0aW5ncywgdHJ1ZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmNhbmNlbFNldHRpbmcpIHtcbiAgICAgIHRoaXMuX3NldHRpbmdzLmZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcuY2FuY2VsU2V0dGluZy5maWVsZHMpKTtcbiAgICB9XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB7Li4udGhpcy5zZXR0aW5ncywgcmVzZXQ6IHRydWV9O1xuICAgIHRoaXMuZmlsdGVyU2VydmljZS5wZXJzaXN0KHNldHRpbmdzLCB0aGlzLmNvbmZpZy5wZXJzaXN0ZW5jZSk7XG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmdpdmVuRXJyb3JzLm5leHQobnVsbCk7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5jYW5jZWxCdXR0b25DYWxsYmFjaykge1xuICAgICAgdGhpcy5jb25maWcuY2FuY2VsQnV0dG9uQ2FsbGJhY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUGVyc29uQ29udHJvbHModmFsdWVzOiBhbnksIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZyk6IHZvaWQge1xuICAgIGxldCBrZXlzO1xuICAgIGlmICghdmFsdWVzKSB7XG4gICAgICBrZXlzID0gT2JqZWN0LmtleXModGhpcy5mb3JtLmdldChmaWVsZC5uYW1lKS52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZXMpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBpZiAodGhpcy5mb3JtLmdldChmaWVsZC5uYW1lKSAmJiB0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpLmdldChrZXkpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzICYmIHZhbHVlc1trZXldID8gdmFsdWVzW2tleV0gOiBudWxsO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpLmdldChrZXkpLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjaGVja0JveENoZWNrZWQoZmllbGQ6IGFueSwgaTogbnVtYmVyKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheSlbJ2NvbnRyb2xzJ11baV1bJ3ZhbHVlJ107XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVGFza05hbWVDb250cm9scyh2YWx1ZXM6IGFueSwgZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnKTogdm9pZCB7XG4gICAgbGV0IGtleXM7XG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5cyA9IHZhbHVlcy50YXNrX3R5cGUgPyBPYmplY3Qua2V5cyh2YWx1ZXMudGFza190eXBlKSA6IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5nZXQoZmllbGQubmFtZSkudmFsdWUpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBpZiAodGhpcy5mb3JtLmdldChmaWVsZC5uYW1lKSAmJiB0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpLmdldChrZXkpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzLnRhc2tfdHlwZSAmJiB2YWx1ZXMudGFza190eXBlW2tleV0gPyB2YWx1ZXMudGFza190eXBlW2tleV0gOiBudWxsO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpLmdldChrZXkpLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVTZWxlY3RBbGwoZXZlbnQ6IGFueSwgZm9ybTogRm9ybUdyb3VwLCBpdGVtOiB7IGtleTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyBzZWxlY3RBbGw/OiB0cnVlIH0sIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xuICAgIGNvbnN0IGZvcm1BcnJheTogRm9ybUFycmF5ID0gZm9ybS5nZXQoZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgIGlmICghaXRlbS5zZWxlY3RBbGwpIHtcbiAgICAgIGNvbnN0IGFsbENoZWNrZWQgPSBmb3JtQXJyYXkuY29udHJvbHMuZXZlcnkoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gY29udHJvbC52YWx1ZSk7XG4gICAgICBsZXQgaW5kZXg6IG51bWJlciA9IG51bGw7XG4gICAgICBjb25zdCBoYXNTZWxlY3RBbGxPcHRpb24gPSBmaWVsZC5vcHRpb25zLmZpbmQoKG9wdGlvbiwgaSkgPT4ge1xuICAgICAgICBpZiAob3B0aW9uLmhhc093blByb3BlcnR5KCdzZWxlY3RBbGwnKSkge1xuICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgICBjb25zdCBpc0FsbENoZWNrZWRFeGNsdWRpbmdUaGVTZWxlY3RBbGxPcHRpb24gPSBmb3JtQXJyYXkuY29udHJvbHMuZmlsdGVyKChfY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBpOiBudW1iZXIpID0+IGkgIT09IGluZGV4KVxuICAgICAgICAuZXZlcnkoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gY29udHJvbC52YWx1ZSk7XG5cbiAgICAgIGlmICghYWxsQ2hlY2tlZCAmJiBoYXNTZWxlY3RBbGxPcHRpb24gJiYgIWlzQ2hlY2tlZCkge1xuICAgICAgICBmb3JtQXJyYXkuY29udHJvbHMuZm9yRWFjaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IGkpIHtcbiAgICAgICAgICAgIGNvbnRyb2wucGF0Y2hWYWx1ZShmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaGFzU2VsZWN0QWxsT3B0aW9uICYmICFhbGxDaGVja2VkICYmIGlzQ2hlY2tlZCAmJiBpc0FsbENoZWNrZWRFeGNsdWRpbmdUaGVTZWxlY3RBbGxPcHRpb24pIHtcbiAgICAgICAgZm9ybUFycmF5LmNvbnRyb2xzW2luZGV4XS5wYXRjaFZhbHVlKHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtQXJyYXkuY29udHJvbHMuZm9yRWFjaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChmaWVsZC5jaGFuZ2VSZXNldEZpZWxkcyAmJiBmaWVsZC5jaGFuZ2VSZXNldEZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgcmVzZXRGaWVsZCBvZiBmaWVsZC5jaGFuZ2VSZXNldEZpZWxkcykge1xuICAgICAgICB0aGlzLnJlc2V0RmllbGQocmVzZXRGaWVsZCwgZm9ybSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChmaWVsZC5uYW1lID09PSAndXNlci1zZXJ2aWNlcycpIHtcbiAgICAgIHRoaXMuc3RhcnRGaWx0ZXJTa2lsbHNCeVNlcnZpY2VzKGZvcm0sIGZpZWxkKTtcbiAgICB9IGVsc2UgaWYgKGZpZWxkLm5hbWUgPT09ICd1c2VyLXNraWxscycpIHtcbiAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IGZpZWxkLm9wdGlvbnMuZmluZEluZGV4KG9wdGlvbiA9PiBOdW1iZXIob3B0aW9uLmtleSkgPT09IE51bWJlcihldmVudC50YXJnZXQudmFsdWUpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGVja2JveCA9IHRoaXMuZm9ybS5nZXQoJ3VzZXItc2tpbGxzJykudmFsdWU7XG4gICAgICAgIHNlbGVjdGVkQ2hlY2tib3hbc2VsZWN0ZWRJbmRleF0gPSB0cnVlO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCd1c2VyLXNraWxscycpLnNldFZhbHVlKHNlbGVjdGVkQ2hlY2tib3gpO1xuICAgICAgICB0aGlzLnByZXZpb3VzU2VsZWN0ZWROZXN0ZWRDaGVja2JveC5wdXNoKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucHJldmlvdXNTZWxlY3RlZE5lc3RlZENoZWNrYm94LmluZGV4T2YoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3RlZE5lc3RlZENoZWNrYm94LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0RmlsdGVyU2tpbGxzQnlTZXJ2aWNlcyhmb3JtOiBGb3JtR3JvdXAsIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZykge1xuICAgIGNvbnN0IHNlcnZpY2VzQXJyYXk6IHN0cmluZ1tdID0gW107XG4gICAgZm9ybS52YWx1ZVtmaWVsZC5uYW1lXS5tYXAoKHNlcnZpY2U6IGJvb2xlYW4sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChzZXJ2aWNlKSB7XG4gICAgICAgIHNlcnZpY2VzQXJyYXkucHVzaChmaWVsZC5vcHRpb25zW2luZGV4XS5rZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZmlsdGVyU2tpbGxzQnlTZXJ2aWNlcyhzZXJ2aWNlc0FycmF5LCB0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmllbGQocmVzZXRGaWVsZDogc3RyaW5nLCBmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQocmVzZXRGaWVsZCk7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiB7IG5hbWU6IHN0cmluZywgdmFsdWU6IGFueVtdIH0gPSB0aGlzLmNvbmZpZy5jYW5jZWxTZXR0aW5nLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IHJlc2V0RmllbGQpO1xuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRyb2wubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29udHJvbC5yZW1vdmVBdChpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjb250cm9sLnZhbHVlKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgdGhpcy5yZXNldEZpZWxkKGtleSwgY29udHJvbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZGVmYXVsdFZhbHVlICYmIGRlZmF1bHRWYWx1ZS52YWx1ZSAmJiBkZWZhdWx0VmFsdWUudmFsdWUubGVuZ3RoID8gZGVmYXVsdFZhbHVlLnZhbHVlWzBdIDogbnVsbDtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VEZWZhdWx0RmllbGRzKGZpbHRlcjogRmlsdGVyU2V0dGluZyk6IHZvaWQge1xuICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgIGZpbHRlci5maWVsZHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0KHRoaXMuY29uZmlnLmlkKSA/IHRoaXMuZmlsdGVyU2VydmljZS5nZXQodGhpcy5jb25maWcuaWQpLmZpZWxkcyA6IGZpbHRlci5maWVsZHM7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5jYW5jZWxTZXR0aW5nKSB7XG4gICAgICB0aGlzLl9zZXR0aW5ncyA9IHtcbiAgICAgICAgaWQ6IHRoaXMuY29uZmlnLmlkLFxuICAgICAgICBmaWVsZHM6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcuY2FuY2VsU2V0dGluZy5maWVsZHMpKVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFNldHRpbmdzKCk6IHZvaWQge1xuICAgIHRoaXMuX3NldHRpbmdzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmdldCh0aGlzLmNvbmZpZy5pZCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRm9ybShjb25maWc6IEZpbHRlckNvbmZpZywgc2V0dGluZ3M6IEZpbHRlclNldHRpbmcsIHJlc2V0PzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGZpbmRQZXJzb25Db250cm9sID0gdGhpcy5mb3JtID8gdGhpcy5mb3JtLmdldCgnZmluZFBlcnNvbkNvbnRyb2wnKSA6IG51bGw7XG4gICAgY29uc3QgZmluZFRhc2tOYW1lQ29udHJvbCA9IHRoaXMuZm9ybSA/IHRoaXMuZm9ybS5nZXQoJ2ZpbmRUYXNrTmFtZUNvbnRyb2wnKSA6IG51bGw7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgaWYgKGZpbmRQZXJzb25Db250cm9sKSB7XG4gICAgICAvLyBpbiBvcmRlciB0byBtYWludGFpbiBmaW5kIHBlcnNvbiBjb21wb25lbnQsIGNvbnRyb2wgbmVlZHMgdG8gYmUga2VwdFxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ2ZpbmRQZXJzb25Db250cm9sJywgZmluZFBlcnNvbkNvbnRyb2wpO1xuICAgIH1cbiAgICBpZiAoZmluZFRhc2tOYW1lQ29udHJvbCkge1xuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ2ZpbmRUYXNrTmFtZUNvbnRyb2wnLCBmaW5kVGFza05hbWVDb250cm9sKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBjb25maWcuZmllbGRzKSB7XG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBmaWVsZC50eXBlID09PSAnY2hlY2tib3gtbGFyZ2UnIHx8IGZpZWxkLnR5cGUgPT09ICduZXN0ZWQtY2hlY2tib3gnKSB7XG4gICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYnVpbGRDaGVja0JveEZvcm1BcnJheShmaWVsZCwgc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChmaWVsZC5uYW1lLCBmb3JtQXJyYXkpO1xuICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1sb2NhdGlvbicgfHwgZmllbGQudHlwZSA9PT0gJ2ZpbmQtc2VydmljZScpIHtcbiAgICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5idWlsZEZvcm1BcnJheShmaWVsZCwgc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChmaWVsZC5uYW1lLCBmb3JtQXJyYXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuICAgICAgICBpZiAoZmllbGQubWluU2VsZWN0ZWQgJiYgZmllbGQubWluU2VsZWN0ZWQgPiAwKSB7XG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0ZXh0LWlucHV0Jykge1xuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKGZpZWxkLm1pblNlbGVjdGVkKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdlbWFpbC1pbnB1dCcpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGVmYXVsdFZhbHVlOiBhbnkgPSBudWxsO1xuICAgICAgICBpZiAocmVzZXQgJiYgY29uZmlnLmNhbmNlbFNldHRpbmcpIHtcbiAgICAgICAgICBjb25zdCBjYW5jZWxGaWVsZCA9IGNvbmZpZy5jYW5jZWxTZXR0aW5nLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGNhbmNlbEZpZWxkICYmIGNhbmNlbEZpZWxkLnZhbHVlID8gY2FuY2VsRmllbGQudmFsdWVbMF0gOiAnJztcbiAgICAgICAgfSBlbHNlIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy5maWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBsYXN0U2F2ZWRWYWx1ZSA9IHNldHRpbmdzLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGxhc3RTYXZlZFZhbHVlICYmIGxhc3RTYXZlZFZhbHVlID8gbGFzdFNhdmVkVmFsdWUudmFsdWVbMF0gOiAnJztcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBmaWVsZCBpcyBmaW5kLXBlcnNvbiBidWlsZCBhIGZvcm0gZ3JvdXA7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1wZXJzb24nKSB7XG4gICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICBkb21haW46IG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUgJiYgZGVmYXVsdFZhbHVlLmhhc093blByb3BlcnR5KCdkb21haW4nKSA/IGRlZmF1bHRWYWx1ZS5kb21haW4gOiAnJyksXG4gICAgICAgICAgICBlbWFpbDogbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSAmJiBkZWZhdWx0VmFsdWUuaGFzT3duUHJvcGVydHkoJ2VtYWlsJykgPyBkZWZhdWx0VmFsdWUuZW1haWwgOiAnJywgdmFsaWRhdG9ycyksXG4gICAgICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSAmJiBkZWZhdWx0VmFsdWUuaGFzT3duUHJvcGVydHkoJ2lkJykgPyBkZWZhdWx0VmFsdWUuaWQgOiAnJyksXG4gICAgICAgICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woZGVmYXVsdFZhbHVlICYmIGRlZmF1bHRWYWx1ZS5oYXNPd25Qcm9wZXJ0eSgnbmFtZScpID8gZGVmYXVsdFZhbHVlLm5hbWUgOiAnJyksXG4gICAgICAgICAgICBrbm93bkFzOiBuZXcgRm9ybUNvbnRyb2woZGVmYXVsdFZhbHVlICYmIGRlZmF1bHRWYWx1ZS5oYXNPd25Qcm9wZXJ0eSgna25vd25BcycpID8gZGVmYXVsdFZhbHVlLmtub3duQXMgOiAnJyksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woZmllbGQubmFtZSwgZm9ybUdyb3VwKTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSAnZmluZC10YXNrLW5hbWUnKSB7XG4gICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICB0YXNrX3R5cGVfaWQ6IG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUgJiYgZGVmYXVsdFZhbHVlLmhhc093blByb3BlcnR5KCd0YXNrX3R5cGVfaWQnKSA/IGRlZmF1bHRWYWx1ZS50YXNrX3R5cGVfaWQgOiAnJyksXG4gICAgICAgICAgICB0YXNrX3R5cGVfbmFtZTogbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSAmJiBkZWZhdWx0VmFsdWUuaGFzT3duUHJvcGVydHkoJ3Rhc2tfdHlwZV9uYW1lJykgPyBkZWZhdWx0VmFsdWUudGFza190eXBlX25hbWUgOiAnJyksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woZmllbGQubmFtZSwgZm9ybUdyb3VwKTtcbiAgICAgICAgICBpZiAoIWRlZmF1bHRWYWx1ZSB8fCAhZGVmYXVsdFZhbHVlLnRhc2tfdHlwZV9pZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnZmluZFRhc2tOYW1lQ29udHJvbCcpPy5wYXRjaFZhbHVlKCcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSAhPT0gJ2dyb3VwLXRpdGxlJykge1xuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZGVmYXVsdFZhbHVlLCB2YWxpZGF0b3JzKTtcbiAgICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChmaWVsZC5uYW1lLCBjb250cm9sKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIGZpZWxkIHVwZGF0ZXMgZmluZCBwZXJzb24gY29tcG9uZW50IHNldCB0aGUgaW5pdGlhbCBkb21haW5cbiAgICAgICAgaWYgKGZpZWxkLmZpbmRQZXJzb25GaWVsZCkge1xuICAgICAgICAgIHRoaXMuZmllbGRDaGFuZ2VkKGZpZWxkLCB0aGlzLmZvcm0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENoZWNrQm94Rm9ybUFycmF5KGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZywgc2V0dGluZ3M6IEZpbHRlclNldHRpbmcpOiBGb3JtQXJyYXkge1xuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBHZW5lcmljRmlsdGVyQ29tcG9uZW50LmFkZEZvcm1WYWxpZGF0b3JzKGZpZWxkKTtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZiLmFycmF5KFtdLCB2YWxpZGF0b3JzKTtcbiAgICBsZXQgZGVmYXVsdFZhbHVlcztcbiAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MuZmllbGRzKSB7XG4gICAgICBkZWZhdWx0VmFsdWVzID0gc2V0dGluZ3MuZmllbGRzLmZpbmQoKGYpID0+IGYubmFtZSA9PT0gZmllbGQubmFtZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIGZpZWxkLm9wdGlvbnMpIHtcbiAgICAgIGxldCBjaGVja2VkID0gZmFsc2U7XG4gICAgICBpZiAoZGVmYXVsdFZhbHVlcyAmJiBBcnJheS5pc0FycmF5KGRlZmF1bHRWYWx1ZXMudmFsdWUpKSB7XG4gICAgICAgIGNoZWNrZWQgPSAhIWRlZmF1bHRWYWx1ZXMudmFsdWUuZmluZCgodmFsdWUpID0+IHZhbHVlID09PSBvcHRpb24ua2V5KTtcbiAgICAgIH1cbiAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbChjaGVja2VkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1BcnJheTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtQXJyYXkoZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnLCBzZXR0aW5nczogRmlsdGVyU2V0dGluZyk6IEZvcm1BcnJheSB7XG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IEdlbmVyaWNGaWx0ZXJDb21wb25lbnQuYWRkRm9ybVZhbGlkYXRvcnMoZmllbGQpO1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZmIuYXJyYXkoW10sIHZhbGlkYXRvcnMpO1xuICAgIGxldCBkZWZhdWx0VmFsdWVzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueVtdIH07XG4gICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLmZpZWxkcykge1xuICAgICAgZGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgaWYgKGRlZmF1bHRWYWx1ZXMgJiYgZGVmYXVsdFZhbHVlcy52YWx1ZSAmJiBkZWZhdWx0VmFsdWVzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yIChjb25zdCBkZWZhdWx0VmFsdWUgb2YgZGVmYXVsdFZhbHVlcy52YWx1ZSkge1xuICAgICAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybUFycmF5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZFZhbHVlcyhmb3JtVmFsdWVzOiBhbnksIGNvbmZpZzogRmlsdGVyQ29uZmlnKTogYW55IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybVZhbHVlcykubWFwKChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm1WYWx1ZXNbbmFtZV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gY29uZmlnLmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLWxvY2F0aW9uJyB8fCBmaWVsZC50eXBlID09PSAnZmluZC1zZXJ2aWNlJykge1xuICAgICAgICAgIHJldHVybiB7dmFsdWU6IHZhbHVlcywgbmFtZX07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHt2YWx1ZTogZ2V0VmFsdWVzKGZpZWxkLm9wdGlvbnMsIHZhbHVlcyksIG5hbWV9O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge3ZhbHVlOiBbdmFsdWVzXSwgbmFtZX07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGb3JtRXJyb3JzKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIGxldCBlcnJvcnM6IEZpbHRlckVycm9yW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHRoaXMuY29uZmlnLmZpZWxkcykge1xuICAgICAgY29uc3QgZmllbGROYW1lID0gZmllbGQubmFtZTtcbiAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IGZvcm0uZ2V0KGZpZWxkTmFtZSk7XG4gICAgICBpZiAoZm9ybUdyb3VwICYmIGZvcm1Hcm91cC5lcnJvcnMgJiYgKGZvcm1Hcm91cC5lcnJvcnMubWlubGVuZ3RoIHx8IGZvcm1Hcm91cC5lcnJvcnMucmVxdWlyZWQpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHtuYW1lOiBmaWVsZE5hbWUsIGVycm9yOiBmaWVsZC5taW5TZWxlY3RlZEVycm9yfSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybUdyb3VwICYmIGZvcm1Hcm91cC5lcnJvcnMgJiYgZm9ybUdyb3VwLmVycm9ycy5tYXhsZW5ndGgpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goe25hbWU6IGZpZWxkTmFtZSwgZXJyb3I6IGZpZWxkLm1heFNlbGVjdGVkRXJyb3J9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZW1vdmUgZHVwbGljYXRlc1xuICAgIGVycm9ycyA9IGVycm9ycy5maWx0ZXIoIChmaWx0ZXJFcnJvciwgaSwgYXJyKSA9PiB7XG4gICAgICByZXR1cm4gZXJyb3JzLmluZGV4T2YoYXJyLmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IGZpbHRlckVycm9yLm5hbWUpKSA9PT0gaTtcbiAgICB9KTtcblxuICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZ2l2ZW5FcnJvcnMubmV4dChlcnJvcnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbml0VmFsdWVzRnJvbUNhY2hlRm9yU2tpbGxzQnlTZXJ2aWNlcygpIHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncyAmJiB0aGlzLnNldHRpbmdzLmZpZWxkcykge1xuICAgICAgY29uc3QgY2FjaGVkVmFsdWVzID0gdGhpcy5maWx0ZXJlZFNraWxsc0J5U2VydmljZXNDaGVja2JveC5tYXAoc2tpbGwgPT4ge1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IGlzU2VsZWN0ZWRVc2VyU2tpbGw6IG51bWJlcjtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRVc2VyU2tpbGxzID0gdGhpcy5zZXR0aW5ncy5maWVsZHMuZmluZChzZXR0aW5nID0+IHNldHRpbmcubmFtZSA9PT0gJ3VzZXItc2tpbGxzJyk7XG4gICAgICAgIGlmIChzZWxlY3RlZFVzZXJTa2lsbHMgJiYgc2VsZWN0ZWRVc2VyU2tpbGxzLnZhbHVlICYmIHNlbGVjdGVkVXNlclNraWxscy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaXNTZWxlY3RlZFVzZXJTa2lsbCA9IHNlbGVjdGVkVXNlclNraWxscy52YWx1ZS5maW5kSW5kZXgodmFsID0+IHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsKSA9PT0gU3RyaW5nKHNraWxsLmtleSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2VsZWN0ZWQgPSBpc1NlbGVjdGVkVXNlclNraWxsICE9PSAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZDtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoY2FjaGVkVmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgndXNlci1za2lsbHMnKS5zZXRWYWx1ZShjYWNoZWRWYWx1ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJTa2lsbHNCeVNlcnZpY2VzKHNlcnZpY2VzOiBzdHJpbmdbXSwgY29uZmlnOiBGaWx0ZXJDb25maWcpIHtcbiAgICB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlcyA9IFtdO1xuICAgIHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzQ2hlY2tib3ggPSBbXTtcbiAgICBjb25zdCB1c2VyU2tpbGxzU2VsZWN0RmllbGQgPSBjb25maWcuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09ICd1c2VyLXNraWxscycgJiYgZi50eXBlID09PSAnZ3JvdXAtc2VsZWN0Jyk7XG4gICAgY29uc3QgdXNlclNraWxsc0NoZWNrYm94RmllbGQgPSBjb25maWcuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09ICd1c2VyLXNraWxscycgJiYgZi50eXBlID09PSAnbmVzdGVkLWNoZWNrYm94Jyk7XG5cbiAgICBpZiAodXNlclNraWxsc1NlbGVjdEZpZWxkKSB7XG4gICAgICBjb25zdCB1c2VyU2tpbGxzID0gdXNlclNraWxsc1NlbGVjdEZpZWxkLmdyb3VwT3B0aW9ucztcbiAgICAgIGlmICghc2VydmljZXMgfHwgc2VydmljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzID0gdXNlclNraWxscztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlcnZpY2VzLmZvckVhY2gocyA9PiB7XG4gICAgICAgICAgY29uc3QgZ3JvdXBPcHRpb24gPSB1c2VyU2tpbGxzLmZpbmQodSA9PiB1Lmdyb3VwLnRvTG93ZXJDYXNlKCkgPT09IHMudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgaWYgKGdyb3VwT3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlcy5wdXNoKGdyb3VwT3B0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodXNlclNraWxsc0NoZWNrYm94RmllbGQpIHtcbiAgICAgIGNvbnN0IHVzZXJTa2lsbHMgPSB1c2VyU2tpbGxzQ2hlY2tib3hGaWVsZC5ncm91cE9wdGlvbnM7XG4gICAgICBpZiAoIXNlcnZpY2VzIHx8IHNlcnZpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlcyA9IHVzZXJTa2lsbHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXJ2aWNlcy5mb3JFYWNoKHMgPT4ge1xuICAgICAgICAgIGNvbnN0IGdyb3VwT3B0aW9uID0gdXNlclNraWxscy5maW5kKHUgPT4gdS5ncm91cC50b0xvd2VyQ2FzZSgpID09PSBzLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgIGlmIChncm91cE9wdGlvbikge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFNraWxsc0J5U2VydmljZXMucHVzaChncm91cE9wdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZFNraWxsc0J5U2VydmljZXNDaGVja2JveCA9IHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzLm1hcChza2lsbCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHNraWxsLm9wdGlvbnM7XG4gICAgICAgIH0pLnJlZHVjZSgoYSwgYikgPT4ge1xuICAgICAgICAgIHJldHVybiBhLmNvbmNhdChiKTtcbiAgICAgICAgfSwgW10pO1xuICAgICAgICB1c2VyU2tpbGxzQ2hlY2tib3hGaWVsZC5vcHRpb25zID0gW107XG4gICAgICAgIHVzZXJTa2lsbHNDaGVja2JveEZpZWxkLm9wdGlvbnMgPSB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlc0NoZWNrYm94O1xuXG4gICAgICAgIHRoaXMuZm9ybS5zZXRDb250cm9sKCd1c2VyLXNraWxscycsIG5ldyBGb3JtQXJyYXkoW10pKTtcblxuICAgICAgICBpZiAoIXRoaXMuX2NvbmZpZy5jb3B5RmllbGRzKSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJlZFNraWxsc0J5U2VydmljZXNDaGVja2JveC5mb3JFYWNoKCgpID0+IHtcbiAgICAgICAgICAgICh0aGlzLmZvcm0uZ2V0KCd1c2VyLXNraWxscycpIGFzIEZvcm1BcnJheSkucHVzaChuZXcgRm9ybUNvbnRyb2woZmFsc2UpKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IHByZXZWYWx1ZXMgPSB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlc0NoZWNrYm94Lm1hcChza2lsbCA9PiB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzICYmIHRoaXMuc2V0dGluZ3MuZmllbGRzKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzU2VsZWN0ZWROZXN0ZWRDaGVja2JveC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0aGlzLnByZXZpb3VzU2VsZWN0ZWROZXN0ZWRDaGVja2JveC5pbmNsdWRlcyhza2lsbC5rZXkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBpc1NlbGVjdGVkVXNlclNraWxsOiBudW1iZXI7XG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVXNlclNraWxscyA9IHRoaXMuc2V0dGluZ3MuZmllbGRzLmZpbmQoc2V0dGluZyA9PiBzZXR0aW5nLm5hbWUgPT09ICd1c2VyLXNraWxscycpO1xuICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRVc2VyU2tpbGxzICYmIHNlbGVjdGVkVXNlclNraWxscy52YWx1ZSAmJiBzZWxlY3RlZFVzZXJTa2lsbHMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRVc2VyU2tpbGwgPSBzZWxlY3RlZFVzZXJTa2lsbHMudmFsdWUuZmluZEluZGV4KHZhbCA9PiBOdW1iZXIodmFsKSA9PT0gTnVtYmVyKHNraWxsLmtleSkpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gaXNTZWxlY3RlZFVzZXJTa2lsbCAhPT0gLTE7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHRoaXMucHJldmlvdXNTZWxlY3RlZE5lc3RlZENoZWNrYm94Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBQaWNrIHVwIGZyb20gcHJldmlvdXMgc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IHRoaXMucHJldmlvdXNTZWxlY3RlZE5lc3RlZENoZWNrYm94LmluY2x1ZGVzKFN0cmluZyhza2lsbC5rZXkpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd1c2VyLXNraWxscycpLnNldFZhbHVlKHByZXZWYWx1ZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkU2tpbGxzOiBib29sZWFuW10gPSBbXTtcblxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzQ2hlY2tib3gubWFwKChza2lsbHNCeVNlcnZpY2VzLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaTx0aGlzLl9jb25maWcucHJlU2VsZWN0ZWROZXN0ZWRDaGVja2JveC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBjb25zdCBza2lsbENvcHlWYWx1ZSA9IHRoaXMuX2NvbmZpZy5wcmVTZWxlY3RlZE5lc3RlZENoZWNrYm94W2ldO1xuXG4gICAgICAgICAgICAgIGlmKHNraWxsQ29weVZhbHVlLnRvU3RyaW5nKCkgPT09IHNraWxsc0J5U2VydmljZXMua2V5LnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZFNraWxsc1tpbmRleF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkU2tpbGxzW2luZGV4XSA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZihwcmVTZWxlY3RlZFNraWxscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwcmVTZWxlY3RlZFNraWxscy5mb3JFYWNoKChoKSA9PiB7XG4gICAgICAgICAgICAgICh0aGlzLmZvcm0uZ2V0KCd1c2VyLXNraWxscycpIGFzIEZvcm1BcnJheSkucHVzaChuZXcgRm9ybUNvbnRyb2woaCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzQ2hlY2tib3gubWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3VzZXItc2tpbGxzJykgYXMgRm9ybUFycmF5KS5wdXNoKG5ldyBGb3JtQ29udHJvbChmYWxzZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlc0NoZWNrYm94O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzID0gdGhpcy5zb3J0R3JvdXBPcHRpb25zKHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzKTtcblxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRWYWx1ZXNGb3JGaWVsZHMoZm9ybVZhbHVlczogYW55LCBmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZ1tdID0gW107XG4gICAgT2JqZWN0LmtleXMoZm9ybVZhbHVlcykubWFwKChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm1WYWx1ZXNbbmFtZV0udmFsdWU7XG4gICAgICBpZiAobmFtZSA9PT0gZmllbGQubmFtZSkge1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodjogYW55KSA9PiB7XG4gICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMucHVzaCh2LmtleSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgc29ydEdyb3VwT3B0aW9ucyhncm91cE9wdGlvbnM6IEdyb3VwT3B0aW9uc1tdKTogR3JvdXBPcHRpb25zW10ge1xuICAgIGNvbnN0IHNvcnRlZFJlc3VsdHM6IEdyb3VwT3B0aW9uc1tdID0gW107XG4gICAgY29uc3QgZ3JvdXBzID0gZ3JvdXBPcHRpb25zLm1hcChnbyA9PiBnby5ncm91cCk7XG4gICAgZ3JvdXBzLnNvcnQoKS5mb3JFYWNoKGcgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IGdyb3VwT3B0aW9ucy5maW5kKChnbzogYW55KSA9PiBnby5ncm91cCA9PT0gZykub3B0aW9ucztcbiAgICAgIGNvbnN0IHNvcnRlZE9wdGlvbnMgPSBvcHRpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIGEubGFiZWwudG9Mb3dlckNhc2UoKSA+IGIubGFiZWwudG9Mb3dlckNhc2UoKSA/IDEgOiAoYi5sYWJlbC50b0xvd2VyQ2FzZSgpID4gYS5sYWJlbC50b0xvd2VyQ2FzZSgpID8gLTEgOiAwKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICBncm91cCA6IGcsXG4gICAgICAgIG9wdGlvbnM6IHNvcnRlZE9wdGlvbnNcbiAgICAgIH07XG4gICAgICBzb3J0ZWRSZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gc29ydGVkUmVzdWx0cztcbiAgfVxufVxuIl19
|
|
629
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9nZW5lcmljLWZpbHRlci9nZW5lcmljLWZpbHRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFILE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFTL0YsTUFBTSxPQUFPLHNCQUFzQjtJQVNqQyxZQUE2QixhQUE0QixFQUFtQixFQUFlO1FBQTlELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQW1CLE9BQUUsR0FBRixFQUFFLENBQWE7UUFQcEYsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUlsQixtQ0FBOEIsR0FBYSxFQUFFLENBQUM7UUFDOUMseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUU0QyxDQUFDO0lBSy9GLElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFDVyxNQUFNLENBQUMsS0FBbUI7UUFDbkMsSUFBSSxDQUFDLE9BQU8sbUNBQ1AsS0FBSyxLQUNSLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFB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YSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7OztZQWhwQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx1QkFBdUI7Z0JBQ2pDLHd3WkFBNEM7Z0JBRTVDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQVRRLGFBQWE7WUFIZSxXQUFXOzs7cUJBK0I3QyxLQUFLO3VCQW9CTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnLCBGaWx0ZXJDb25maWdPcHRpb24sIEZpbHRlckVycm9yLCBGaWx0ZXJGaWVsZENvbmZpZywgRmlsdGVyU2V0dGluZywgR3JvdXBPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBnZXRWYWx1ZXMsIG1heFNlbGVjdGVkVmFsaWRhdG9yLCBtaW5TZWxlY3RlZFZhbGlkYXRvciB9IGZyb20gJy4vZ2VuZXJpYy1maWx0ZXItdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZ2VuZXJpYy1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJ2dlbmVyaWMtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2dlbmVyaWMtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzdWJtaXR0ZWQgPSBmYWxzZTtcbiAgcHVibGljIGZvcm1TdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlczogR3JvdXBPcHRpb25zW107XG4gIHB1YmxpYyBmaWx0ZXJlZFNraWxsc0J5U2VydmljZXNDaGVja2JveDogRmlsdGVyQ29uZmlnT3B0aW9uW107XG4gIHB1YmxpYyBwcmV2aW91c1NlbGVjdGVkTmVzdGVkQ2hlY2tib3g6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBmb3JtU3VibWlzc2lvbkV2ZW50JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLCBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcikge31cblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF9jb25maWc6IEZpbHRlckNvbmZpZztcblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBGaWx0ZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNvbmZpZyh2YWx1ZTogRmlsdGVyQ29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0ge1xuICAgICAgLi4udmFsdWUsXG4gICAgICBmaWVsZHM6IHZhbHVlLmZpZWxkcy5tYXAoZmllbGQgPT4gKHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIGRpc3BsYXlNaW5TZWxlY3RlZEVycm9yOiBmYWxzZSxcbiAgICAgICAgZGlzcGxheU1heFNlbGVjdGVkRXJyb3I6IGZhbHNlLFxuICAgICAgfSkpXG4gICAgfTtcbiAgICB0aGlzLl9jb25maWcgPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX3NldHRpbmdzPzogRmlsdGVyU2V0dGluZztcblxuICBwdWJsaWMgZ2V0IHNldHRpbmdzKCk6IEZpbHRlclNldHRpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXR0aW5ncztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2V0dGluZ3ModmFsdWU6IEZpbHRlclNldHRpbmcpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmdldFNldHRpbmdzKCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5maWVsZHMpIHtcbiAgICAgIHRoaXMubWVyZ2VEZWZhdWx0RmllbGRzKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5fc2V0dGluZ3MgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFkZEZvcm1WYWxpZGF0b3JzKGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZyk6IFZhbGlkYXRvcnMge1xuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbXTtcbiAgICBpZiAoZmllbGQgJiYgZmllbGQubWluU2VsZWN0ZWQgPiAwKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2gobWluU2VsZWN0ZWRWYWxpZGF0b3IoZmllbGQubWluU2VsZWN0ZWQpKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQgJiYgZmllbGQubWF4U2VsZWN0ZWQgPiAwKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2gobWF4U2VsZWN0ZWRWYWxpZGF0b3IoZmllbGQubWF4U2VsZWN0ZWQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MpIHtcbiAgICAgIHRoaXMuZ2V0U2V0dGluZ3MoKTtcbiAgICB9XG4gICAgdGhpcy5tZXJnZURlZmF1bHRGaWVsZHModGhpcy5zZXR0aW5ncyk7XG4gICAgdGhpcy5idWlsZEZvcm0odGhpcy5jb25maWcsIHRoaXMuc2V0dGluZ3MpO1xuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5jb3B5RmllbGRzKSB7XG4gICAgICB0aGlzLmZvcm0gPSB0aGlzLl9jb25maWcuY29weUZpZWxkcyh0aGlzLmZvcm0pO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybVN1YiA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuc3VibWl0dGVkID0gZmFsc2UpO1xuICAgIHRoaXMuZmlsdGVyU2tpbGxzQnlTZXJ2aWNlcyhudWxsLCB0aGlzLmNvbmZpZyk7XG4gICAgY29uc3Qgc2VydmljZXMgPSB0aGlzLmNvbmZpZy5maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lID09PSAndXNlci1zZXJ2aWNlcycpO1xuICAgIGlmIChzZXJ2aWNlcykge1xuICAgICAgdGhpcy5zdGFydEZpbHRlclNraWxsc0J5U2VydmljZXModGhpcy5mb3JtLCBzZXJ2aWNlcyk7XG4gICAgICBpZighdGhpcy5fY29uZmlnLmNvcHlGaWVsZHMpIHtcbiAgICAgICAgdGhpcy5pbml0VmFsdWVzRnJvbUNhY2hlRm9yU2tpbGxzQnlTZXJ2aWNlcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZ2l2ZW5FcnJvcnMubmV4dChudWxsKTtcblxuICAgIGlmICh0aGlzLmZvcm1TdWIpIHtcbiAgICAgIHRoaXMuZm9ybVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoaWRkZW4oZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnLCBmb3JtOiBGb3JtR3JvdXApOiBib29sZWFuIHtcbiAgICBpZiAoIWZpZWxkLnNob3dDb25kaXRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBmaWVsZC5zaG93Q29uZGl0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uZ2V0KGZpZWxkLm5hbWUpIGFzIEZvcm1Db250cm9sO1xuICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGZpZWxkLnNob3dDb25kaXRpb24uc3BsaXQoJz0nKTtcbiAgICAgIGlmIChmb3JtLnZhbHVlICYmIGZvcm0udmFsdWVbbmFtZV0gPT09IHZhbHVlKSB7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1wZXJzb24nKSB7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICBjb250cm9sLmdldCgnZW1haWwnKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1wZXJzb24nKSB7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgY29udHJvbC5nZXQoJ2VtYWlsJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZWQoZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnLCBmb3JtOiBGb3JtR3JvdXApOiBib29sZWFuIHtcbiAgICBpZiAoIWZpZWxkLmVuYWJsZUNvbmRpdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZmllbGQuZW5hYmxlQ29uZGl0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uZ2V0KGZpZWxkLm5hbWUpIGFzIEZvcm1Db250cm9sO1xuICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGZpZWxkLmVuYWJsZUNvbmRpdGlvbi5zcGxpdCgnPScpO1xuICAgICAgaWYgKGZvcm0udmFsdWUgJiYgZm9ybS52YWx1ZVtuYW1lXSA9PT0gdmFsdWUpIHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLXBlcnNvbicpIHtcbiAgICAgICAgICBjb250cm9sLmdldCgnZW1haWwnKS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgIGNvbnRyb2wuZ2V0KCdlbWFpbCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2ZpbmQtcGVyc29uJykge1xuICAgICAgICAgIGNvbnRyb2wuZ2V0KCdlbWFpbCcpLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgIGNvbnRyb2wuZ2V0KCdlbWFpbCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGZpbmQtbG9jYXRpb24gaXMgc3BlY2lhbCBjYXNlIHdoZXJlIG5lZWQgdG8gcmVzZXQgdGV4dGJveCAoYnkgZXhpc3RpbmcgZGlzYWJsaW5nIGZ1bmN0aW9uYWxpdHkpXG4gICAgLy8gZmllbGQuZGlzYWJsZSByZWZlcnJlZCB0byBjb21wb25lbnQgaXRzZWxmXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLWxvY2F0aW9uJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIE5vdGU6IGZpZWxkLmRpc2FibGUgZGVjaWRlcyB3aGV0aGVyIHRvIGFjdHVhbGx5IGRpc2FibGUgb3Igbm90XG4gICAgcmV0dXJuIGZpZWxkLmRpc2FibGUgPyBmaWVsZC5kaXNhYmxlIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseUZpbHRlcihmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnQkLm5leHQoKTtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgZm9ybS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgaWYgKGZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuX3NldHRpbmdzID0ge1xuICAgICAgICBpZDogdGhpcy5jb25maWcuaWQsXG4gICAgICAgIGlkYW1JZDogdGhpcy5maWx0ZXJTZXJ2aWNlLmdldFVzZXJJZCgpLFxuICAgICAgICBmaWVsZHM6IHRoaXMuZ2V0U2VsZWN0ZWRWYWx1ZXMoZm9ybS52YWx1ZSwgdGhpcy5jb25maWcpXG4gICAgICB9O1xuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmdpdmVuRXJyb3JzLm5leHQobnVsbCk7XG4gICAgICBjb25zdCBzZXR0aW5ncyA9IHsuLi50aGlzLnNldHRpbmdzLCByZXNldDogZmFsc2V9O1xuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnBlcnNpc3Qoc2V0dGluZ3MsIHRoaXMuY29uZmlnLnBlcnNpc3RlbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWl0Rm9ybUVycm9ycyhmb3JtKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLmFwcGx5QnV0dG9uQ2FsbGJhY2spIHtcbiAgICAgIHRoaXMuX2NvbmZpZy5hcHBseUJ1dHRvbkNhbGxiYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gd2hlbiBkb21haW4gY2hhbmdlcyBlbnN1cmUgdGhhdCBwZXJzb24gZmllbGQgaXMgcmVzZXRcbiAgcHVibGljIGZpZWxkQ2hhbmdlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcsIGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIC8vIFRPRE8gLSBEbyBzaW1pbGFyIHdpdGgganVyaXNkaWN0aW9uL3NlcnZpY2UgZm9yIGNhc2V3b3JrZXJzIGJ5IHNlcnZpY2VzXG4gICAgaWYgKGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzICYmIGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzLmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCByZXNldEZpZWxkIG9mIGZpZWxkLmNoYW5nZVJlc2V0RmllbGRzKSB7XG4gICAgICAgIHRoaXMucmVzZXRGaWVsZChyZXNldEZpZWxkLCBmb3JtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyB3aGVuIHVzZXIgZW50ZXJzIGlucHV0IGNoYW5nZSByYWRpbyBidXR0b25cbiAgcHVibGljIGlucHV0Q2hhbmdlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiB2b2lkIHtcbiAgICBpZiAoZmllbGQucmFkaW9TZWxlY3Rpb25DaGFuZ2UgJiYgdHlwZW9mIGZpZWxkLnJhZGlvU2VsZWN0aW9uQ2hhbmdlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGZpZWxkLmVuYWJsZUNvbmRpdGlvbi5zcGxpdCgnPScpO1xuICAgICAgdGhpcy5mb3JtLmdldChuYW1lKS5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5wdXRTZXJ2aWNlQ2hhbmdlZChmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiB2b2lkIHtcbiAgICBpZiAoZmllbGQubmFtZSA9PT0gJ3VzZXItc2VydmljZXMnKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFNlcnZpY2VzID0gdGhpcy5nZXRTZWxlY3RlZFZhbHVlc0ZvckZpZWxkcyh0aGlzLmZvcm0uY29udHJvbHMsIGZpZWxkKTtcbiAgICAgIHRoaXMuZmlsdGVyU2tpbGxzQnlTZXJ2aWNlcyhzZWxlY3RlZFNlcnZpY2VzLCB0aGlzLmNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbmNlbEZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmJ1aWxkRm9ybSh0aGlzLmNvbmZpZywgdGhpcy5zZXR0aW5ncywgdHJ1ZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmNhbmNlbFNldHRpbmcpIHtcbiAgICAgIHRoaXMuX3NldHRpbmdzLmZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcuY2FuY2VsU2V0dGluZy5maWVsZHMpKTtcbiAgICB9XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB7Li4udGhpcy5zZXR0aW5ncywgcmVzZXQ6IHRydWV9O1xuICAgIHRoaXMuZmlsdGVyU2VydmljZS5wZXJzaXN0KHNldHRpbmdzLCB0aGlzLmNvbmZpZy5wZXJzaXN0ZW5jZSk7XG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmdpdmVuRXJyb3JzLm5leHQobnVsbCk7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5jYW5jZWxCdXR0b25DYWxsYmFjaykge1xuICAgICAgdGhpcy5jb25maWcuY2FuY2VsQnV0dG9uQ2FsbGJhY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUGVyc29uQ29udHJvbHModmFsdWVzOiBhbnksIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZyk6IHZvaWQge1xuICAgIGxldCBrZXlzO1xuICAgIGlmICghdmFsdWVzKSB7XG4gICAgICBrZXlzID0gT2JqZWN0LmtleXModGhpcy5mb3JtLmdldChmaWVsZC5uYW1lKS52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZXMpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBpZiAodGhpcy5mb3JtLmdldChmaWVsZC5uYW1lKSAmJiB0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpLmdldChrZXkpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzICYmIHZhbHVlc1trZXldID8gdmFsdWVzW2tleV0gOiBudWxsO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpLmdldChrZXkpLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjaGVja0JveENoZWNrZWQoZmllbGQ6IGFueSwgaTogbnVtYmVyKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheSlbJ2NvbnRyb2xzJ11baV1bJ3ZhbHVlJ107XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVGFza05hbWVDb250cm9scyh2YWx1ZXM6IGFueSwgZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnKTogdm9pZCB7XG4gICAgbGV0IGtleXM7XG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5cyA9IHZhbHVlcy50YXNrX3R5cGUgPyBPYmplY3Qua2V5cyh2YWx1ZXMudGFza190eXBlKSA6IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5nZXQoZmllbGQubmFtZSkudmFsdWUpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBpZiAodGhpcy5mb3JtLmdldChmaWVsZC5uYW1lKSAmJiB0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpLmdldChrZXkpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzLnRhc2tfdHlwZSAmJiB2YWx1ZXMudGFza190eXBlW2tleV0gPyB2YWx1ZXMudGFza190eXBlW2tleV0gOiBudWxsO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkLm5hbWUpLmdldChrZXkpLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVTZWxlY3RBbGwoZXZlbnQ6IGFueSwgZm9ybTogRm9ybUdyb3VwLCBpdGVtOiB7IGtleTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyBzZWxlY3RBbGw/OiB0cnVlIH0sIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xuICAgIGNvbnN0IGZvcm1BcnJheTogRm9ybUFycmF5ID0gZm9ybS5nZXQoZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgIGlmICghaXRlbS5zZWxlY3RBbGwpIHtcbiAgICAgIGNvbnN0IGFsbENoZWNrZWQgPSBmb3JtQXJyYXkuY29udHJvbHMuZXZlcnkoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gY29udHJvbC52YWx1ZSk7XG4gICAgICBsZXQgaW5kZXg6IG51bWJlciA9IG51bGw7XG4gICAgICBjb25zdCBoYXNTZWxlY3RBbGxPcHRpb24gPSBmaWVsZC5vcHRpb25zLmZpbmQoKG9wdGlvbiwgaSkgPT4ge1xuICAgICAgICBpZiAob3B0aW9uLmhhc093blByb3BlcnR5KCdzZWxlY3RBbGwnKSkge1xuICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgICBjb25zdCBpc0FsbENoZWNrZWRFeGNsdWRpbmdUaGVTZWxlY3RBbGxPcHRpb24gPSBmb3JtQXJyYXkuY29udHJvbHMuZmlsdGVyKChfY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBpOiBudW1iZXIpID0+IGkgIT09IGluZGV4KVxuICAgICAgICAuZXZlcnkoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gY29udHJvbC52YWx1ZSk7XG5cbiAgICAgIGlmICghYWxsQ2hlY2tlZCAmJiBoYXNTZWxlY3RBbGxPcHRpb24gJiYgIWlzQ2hlY2tlZCkge1xuICAgICAgICBmb3JtQXJyYXkuY29udHJvbHMuZm9yRWFjaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IGkpIHtcbiAgICAgICAgICAgIGNvbnRyb2wucGF0Y2hWYWx1ZShmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaGFzU2VsZWN0QWxsT3B0aW9uICYmICFhbGxDaGVja2VkICYmIGlzQ2hlY2tlZCAmJiBpc0FsbENoZWNrZWRFeGNsdWRpbmdUaGVTZWxlY3RBbGxPcHRpb24pIHtcbiAgICAgICAgZm9ybUFycmF5LmNvbnRyb2xzW2luZGV4XS5wYXRjaFZhbHVlKHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtQXJyYXkuY29udHJvbHMuZm9yRWFjaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChmaWVsZC5jaGFuZ2VSZXNldEZpZWxkcyAmJiBmaWVsZC5jaGFuZ2VSZXNldEZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgcmVzZXRGaWVsZCBvZiBmaWVsZC5jaGFuZ2VSZXNldEZpZWxkcykge1xuICAgICAgICB0aGlzLnJlc2V0RmllbGQocmVzZXRGaWVsZCwgZm9ybSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChmaWVsZC5uYW1lID09PSAndXNlci1zZXJ2aWNlcycpIHtcbiAgICAgIHRoaXMuc3RhcnRGaWx0ZXJTa2lsbHNCeVNlcnZpY2VzKGZvcm0sIGZpZWxkKTtcbiAgICB9IGVsc2UgaWYgKGZpZWxkLm5hbWUgPT09ICd1c2VyLXNraWxscycpIHtcbiAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IGZpZWxkLm9wdGlvbnMuZmluZEluZGV4KG9wdGlvbiA9PiBOdW1iZXIob3B0aW9uLmtleSkgPT09IE51bWJlcihldmVudC50YXJnZXQudmFsdWUpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGVja2JveCA9IHRoaXMuZm9ybS5nZXQoJ3VzZXItc2tpbGxzJykudmFsdWU7XG4gICAgICAgIHNlbGVjdGVkQ2hlY2tib3hbc2VsZWN0ZWRJbmRleF0gPSB0cnVlO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCd1c2VyLXNraWxscycpLnNldFZhbHVlKHNlbGVjdGVkQ2hlY2tib3gpO1xuICAgICAgICB0aGlzLnByZXZpb3VzU2VsZWN0ZWROZXN0ZWRDaGVja2JveC5wdXNoKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucHJldmlvdXNTZWxlY3RlZE5lc3RlZENoZWNrYm94LmluZGV4T2YoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3RlZE5lc3RlZENoZWNrYm94LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0RmlsdGVyU2tpbGxzQnlTZXJ2aWNlcyhmb3JtOiBGb3JtR3JvdXAsIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZykge1xuICAgIGNvbnN0IHNlcnZpY2VzQXJyYXk6IHN0cmluZ1tdID0gW107XG4gICAgZm9ybS52YWx1ZVtmaWVsZC5uYW1lXS5tYXAoKHNlcnZpY2U6IGJvb2xlYW4sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChzZXJ2aWNlKSB7XG4gICAgICAgIHNlcnZpY2VzQXJyYXkucHVzaChmaWVsZC5vcHRpb25zW2luZGV4XS5rZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZmlsdGVyU2tpbGxzQnlTZXJ2aWNlcyhzZXJ2aWNlc0FycmF5LCB0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmllbGQocmVzZXRGaWVsZDogc3RyaW5nLCBmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQocmVzZXRGaWVsZCk7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiB7IG5hbWU6IHN0cmluZywgdmFsdWU6IGFueVtdIH0gPSB0aGlzLmNvbmZpZy5jYW5jZWxTZXR0aW5nLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IHJlc2V0RmllbGQpO1xuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRyb2wubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29udHJvbC5yZW1vdmVBdChpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjb250cm9sLnZhbHVlKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgdGhpcy5yZXNldEZpZWxkKGtleSwgY29udHJvbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZGVmYXVsdFZhbHVlICYmIGRlZmF1bHRWYWx1ZS52YWx1ZSAmJiBkZWZhdWx0VmFsdWUudmFsdWUubGVuZ3RoID8gZGVmYXVsdFZhbHVlLnZhbHVlWzBdIDogbnVsbDtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VEZWZhdWx0RmllbGRzKGZpbHRlcjogRmlsdGVyU2V0dGluZyk6IHZvaWQge1xuICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgIGZpbHRlci5maWVsZHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0KHRoaXMuY29uZmlnLmlkKSA/IHRoaXMuZmlsdGVyU2VydmljZS5nZXQodGhpcy5jb25maWcuaWQpLmZpZWxkcyA6IGZpbHRlci5maWVsZHM7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5jYW5jZWxTZXR0aW5nKSB7XG4gICAgICB0aGlzLl9zZXR0aW5ncyA9IHtcbiAgICAgICAgaWQ6IHRoaXMuY29uZmlnLmlkLFxuICAgICAgICBmaWVsZHM6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcuY2FuY2VsU2V0dGluZy5maWVsZHMpKVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFNldHRpbmdzKCk6IHZvaWQge1xuICAgIHRoaXMuX3NldHRpbmdzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmdldCh0aGlzLmNvbmZpZy5pZCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRm9ybShjb25maWc6IEZpbHRlckNvbmZpZywgc2V0dGluZ3M6IEZpbHRlclNldHRpbmcsIHJlc2V0PzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGZpbmRQZXJzb25Db250cm9sID0gdGhpcy5mb3JtID8gdGhpcy5mb3JtLmdldCgnZmluZFBlcnNvbkNvbnRyb2wnKSA6IG51bGw7XG4gICAgY29uc3QgZmluZFRhc2tOYW1lQ29udHJvbCA9IHRoaXMuZm9ybSA/IHRoaXMuZm9ybS5nZXQoJ2ZpbmRUYXNrTmFtZUNvbnRyb2wnKSA6IG51bGw7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgaWYgKGZpbmRQZXJzb25Db250cm9sKSB7XG4gICAgICAvLyBpbiBvcmRlciB0byBtYWludGFpbiBmaW5kIHBlcnNvbiBjb21wb25lbnQsIGNvbnRyb2wgbmVlZHMgdG8gYmUga2VwdFxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ2ZpbmRQZXJzb25Db250cm9sJywgZmluZFBlcnNvbkNvbnRyb2wpO1xuICAgIH1cbiAgICBpZiAoZmluZFRhc2tOYW1lQ29udHJvbCkge1xuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ2ZpbmRUYXNrTmFtZUNvbnRyb2wnLCBmaW5kVGFza05hbWVDb250cm9sKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBjb25maWcuZmllbGRzKSB7XG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBmaWVsZC50eXBlID09PSAnY2hlY2tib3gtbGFyZ2UnIHx8IGZpZWxkLnR5cGUgPT09ICduZXN0ZWQtY2hlY2tib3gnKSB7XG4gICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYnVpbGRDaGVja0JveEZvcm1BcnJheShmaWVsZCwgc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChmaWVsZC5uYW1lLCBmb3JtQXJyYXkpO1xuICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1sb2NhdGlvbicgfHwgZmllbGQudHlwZSA9PT0gJ2ZpbmQtc2VydmljZScpIHtcbiAgICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5idWlsZEZvcm1BcnJheShmaWVsZCwgc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChmaWVsZC5uYW1lLCBmb3JtQXJyYXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuICAgICAgICBpZiAoZmllbGQubWluU2VsZWN0ZWQgJiYgZmllbGQubWluU2VsZWN0ZWQgPiAwKSB7XG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0ZXh0LWlucHV0Jykge1xuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKGZpZWxkLm1pblNlbGVjdGVkKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdlbWFpbC1pbnB1dCcpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGVmYXVsdFZhbHVlOiBhbnkgPSBudWxsO1xuICAgICAgICBpZiAocmVzZXQgJiYgY29uZmlnLmNhbmNlbFNldHRpbmcpIHtcbiAgICAgICAgICBjb25zdCBjYW5jZWxGaWVsZCA9IGNvbmZpZy5jYW5jZWxTZXR0aW5nLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGNhbmNlbEZpZWxkICYmIGNhbmNlbEZpZWxkLnZhbHVlID8gY2FuY2VsRmllbGQudmFsdWVbMF0gOiAnJztcbiAgICAgICAgfSBlbHNlIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy5maWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBsYXN0U2F2ZWRWYWx1ZSA9IHNldHRpbmdzLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGxhc3RTYXZlZFZhbHVlICYmIGxhc3RTYXZlZFZhbHVlID8gbGFzdFNhdmVkVmFsdWUudmFsdWVbMF0gOiAnJztcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBmaWVsZCBpcyBmaW5kLXBlcnNvbiBidWlsZCBhIGZvcm0gZ3JvdXA7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZmluZC1wZXJzb24nKSB7XG4gICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICBkb21haW46IG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUgJiYgZGVmYXVsdFZhbHVlLmhhc093blByb3BlcnR5KCdkb21haW4nKSA/IGRlZmF1bHRWYWx1ZS5kb21haW4gOiAnJyksXG4gICAgICAgICAgICBlbWFpbDogbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSAmJiBkZWZhdWx0VmFsdWUuaGFzT3duUHJvcGVydHkoJ2VtYWlsJykgPyBkZWZhdWx0VmFsdWUuZW1haWwgOiAnJywgdmFsaWRhdG9ycyksXG4gICAgICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSAmJiBkZWZhdWx0VmFsdWUuaGFzT3duUHJvcGVydHkoJ2lkJykgPyBkZWZhdWx0VmFsdWUuaWQgOiAnJyksXG4gICAgICAgICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woZGVmYXVsdFZhbHVlICYmIGRlZmF1bHRWYWx1ZS5oYXNPd25Qcm9wZXJ0eSgnbmFtZScpID8gZGVmYXVsdFZhbHVlLm5hbWUgOiAnJyksXG4gICAgICAgICAgICBrbm93bkFzOiBuZXcgRm9ybUNvbnRyb2woZGVmYXVsdFZhbHVlICYmIGRlZmF1bHRWYWx1ZS5oYXNPd25Qcm9wZXJ0eSgna25vd25BcycpID8gZGVmYXVsdFZhbHVlLmtub3duQXMgOiAnJyksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woZmllbGQubmFtZSwgZm9ybUdyb3VwKTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSAnZmluZC10YXNrLW5hbWUnKSB7XG4gICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICB0YXNrX3R5cGVfaWQ6IG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUgJiYgZGVmYXVsdFZhbHVlLmhhc093blByb3BlcnR5KCd0YXNrX3R5cGVfaWQnKSA/IGRlZmF1bHRWYWx1ZS50YXNrX3R5cGVfaWQgOiAnJyksXG4gICAgICAgICAgICB0YXNrX3R5cGVfbmFtZTogbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSAmJiBkZWZhdWx0VmFsdWUuaGFzT3duUHJvcGVydHkoJ3Rhc2tfdHlwZV9uYW1lJykgPyBkZWZhdWx0VmFsdWUudGFza190eXBlX25hbWUgOiAnJyksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woZmllbGQubmFtZSwgZm9ybUdyb3VwKTtcbiAgICAgICAgICBpZiAoIWRlZmF1bHRWYWx1ZSB8fCAhZGVmYXVsdFZhbHVlLnRhc2tfdHlwZV9pZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnZmluZFRhc2tOYW1lQ29udHJvbCcpPy5wYXRjaFZhbHVlKCcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSAhPT0gJ2dyb3VwLXRpdGxlJykge1xuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZGVmYXVsdFZhbHVlLCB2YWxpZGF0b3JzKTtcbiAgICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChmaWVsZC5uYW1lLCBjb250cm9sKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIGZpZWxkIHVwZGF0ZXMgZmluZCBwZXJzb24gY29tcG9uZW50IHNldCB0aGUgaW5pdGlhbCBkb21haW5cbiAgICAgICAgaWYgKGZpZWxkLmZpbmRQZXJzb25GaWVsZCkge1xuICAgICAgICAgIHRoaXMuZmllbGRDaGFuZ2VkKGZpZWxkLCB0aGlzLmZvcm0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENoZWNrQm94Rm9ybUFycmF5KGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZywgc2V0dGluZ3M6IEZpbHRlclNldHRpbmcpOiBGb3JtQXJyYXkge1xuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBHZW5lcmljRmlsdGVyQ29tcG9uZW50LmFkZEZvcm1WYWxpZGF0b3JzKGZpZWxkKTtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZiLmFycmF5KFtdLCB2YWxpZGF0b3JzKTtcbiAgICBsZXQgZGVmYXVsdFZhbHVlcztcbiAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MuZmllbGRzKSB7XG4gICAgICBkZWZhdWx0VmFsdWVzID0gc2V0dGluZ3MuZmllbGRzLmZpbmQoKGYpID0+IGYubmFtZSA9PT0gZmllbGQubmFtZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIGZpZWxkLm9wdGlvbnMpIHtcbiAgICAgIGxldCBjaGVja2VkID0gZmFsc2U7XG4gICAgICBpZiAoZGVmYXVsdFZhbHVlcyAmJiBBcnJheS5pc0FycmF5KGRlZmF1bHRWYWx1ZXMudmFsdWUpKSB7XG4gICAgICAgIGNoZWNrZWQgPSAhIWRlZmF1bHRWYWx1ZXMudmFsdWUuZmluZCgodmFsdWUpID0+IHZhbHVlID09PSBvcHRpb24ua2V5KTtcbiAgICAgIH1cbiAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbChjaGVja2VkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1BcnJheTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtQXJyYXkoZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnLCBzZXR0aW5nczogRmlsdGVyU2V0dGluZyk6IEZvcm1BcnJheSB7XG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IEdlbmVyaWNGaWx0ZXJDb21wb25lbnQuYWRkRm9ybVZhbGlkYXRvcnMoZmllbGQpO1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZmIuYXJyYXkoW10sIHZhbGlkYXRvcnMpO1xuICAgIGxldCBkZWZhdWx0VmFsdWVzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueVtdIH07XG4gICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLmZpZWxkcykge1xuICAgICAgZGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgICAgaWYgKGRlZmF1bHRWYWx1ZXMgJiYgZGVmYXVsdFZhbHVlcy52YWx1ZSAmJiBkZWZhdWx0VmFsdWVzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yIChjb25zdCBkZWZhdWx0VmFsdWUgb2YgZGVmYXVsdFZhbHVlcy52YWx1ZSkge1xuICAgICAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybUFycmF5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZFZhbHVlcyhmb3JtVmFsdWVzOiBhbnksIGNvbmZpZzogRmlsdGVyQ29uZmlnKTogYW55IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybVZhbHVlcykubWFwKChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm1WYWx1ZXNbbmFtZV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gY29uZmlnLmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdmaW5kLWxvY2F0aW9uJyB8fCBmaWVsZC50eXBlID09PSAnZmluZC1zZXJ2aWNlJykge1xuICAgICAgICAgIHJldHVybiB7dmFsdWU6IHZhbHVlcywgbmFtZX07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHt2YWx1ZTogZ2V0VmFsdWVzKGZpZWxkLm9wdGlvbnMsIHZhbHVlcyksIG5hbWV9O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge3ZhbHVlOiBbdmFsdWVzXSwgbmFtZX07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGb3JtRXJyb3JzKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIGxldCBlcnJvcnM6IEZpbHRlckVycm9yW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHRoaXMuY29uZmlnLmZpZWxkcykge1xuICAgICAgY29uc3QgZmllbGROYW1lID0gZmllbGQubmFtZTtcbiAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IGZvcm0uZ2V0KGZpZWxkTmFtZSk7XG4gICAgICBpZiAoZm9ybUdyb3VwICYmIGZvcm1Hcm91cC5lcnJvcnMgJiYgKGZvcm1Hcm91cC5lcnJvcnMubWlubGVuZ3RoIHx8IGZvcm1Hcm91cC5lcnJvcnMucmVxdWlyZWQpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHtuYW1lOiBmaWVsZE5hbWUsIGVycm9yOiBmaWVsZC5taW5TZWxlY3RlZEVycm9yfSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybUdyb3VwICYmIGZvcm1Hcm91cC5lcnJvcnMgJiYgZm9ybUdyb3VwLmVycm9ycy5tYXhsZW5ndGgpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goe25hbWU6IGZpZWxkTmFtZSwgZXJyb3I6IGZpZWxkLm1heFNlbGVjdGVkRXJyb3J9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZW1vdmUgZHVwbGljYXRlc1xuICAgIGVycm9ycyA9IGVycm9ycy5maWx0ZXIoIChmaWx0ZXJFcnJvciwgaSwgYXJyKSA9PiB7XG4gICAgICByZXR1cm4gZXJyb3JzLmluZGV4T2YoYXJyLmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IGZpbHRlckVycm9yLm5hbWUpKSA9PT0gaTtcbiAgICB9KTtcblxuICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZ2l2ZW5FcnJvcnMubmV4dChlcnJvcnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbml0VmFsdWVzRnJvbUNhY2hlRm9yU2tpbGxzQnlTZXJ2aWNlcygpIHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncyAmJiB0aGlzLnNldHRpbmdzLmZpZWxkcykge1xuICAgICAgY29uc3QgY2FjaGVkVmFsdWVzID0gdGhpcy5maWx0ZXJlZFNraWxsc0J5U2VydmljZXNDaGVja2JveC5tYXAoc2tpbGwgPT4ge1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IGlzU2VsZWN0ZWRVc2VyU2tpbGw6IG51bWJlcjtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRVc2VyU2tpbGxzID0gdGhpcy5zZXR0aW5ncy5maWVsZHMuZmluZChzZXR0aW5nID0+IHNldHRpbmcubmFtZSA9PT0gJ3VzZXItc2tpbGxzJyk7XG4gICAgICAgIGlmIChzZWxlY3RlZFVzZXJTa2lsbHMgJiYgc2VsZWN0ZWRVc2VyU2tpbGxzLnZhbHVlICYmIHNlbGVjdGVkVXNlclNraWxscy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaXNTZWxlY3RlZFVzZXJTa2lsbCA9IHNlbGVjdGVkVXNlclNraWxscy52YWx1ZS5maW5kSW5kZXgodmFsID0+IHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsKSA9PT0gU3RyaW5nKHNraWxsLmtleSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2VsZWN0ZWQgPSBpc1NlbGVjdGVkVXNlclNraWxsICE9PSAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZDtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoY2FjaGVkVmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgndXNlci1za2lsbHMnKS5zZXRWYWx1ZShjYWNoZWRWYWx1ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJTa2lsbHNCeVNlcnZpY2VzKHNlcnZpY2VzOiBzdHJpbmdbXSwgY29uZmlnOiBGaWx0ZXJDb25maWcpIHtcbiAgICB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlcyA9IFtdO1xuICAgIHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzQ2hlY2tib3ggPSBbXTtcbiAgICBjb25zdCB1c2VyU2tpbGxzU2VsZWN0RmllbGQgPSBjb25maWcuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09ICd1c2VyLXNraWxscycgJiYgZi50eXBlID09PSAnZ3JvdXAtc2VsZWN0Jyk7XG4gICAgY29uc3QgdXNlclNraWxsc0NoZWNrYm94RmllbGQgPSBjb25maWcuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09ICd1c2VyLXNraWxscycgJiYgZi50eXBlID09PSAnbmVzdGVkLWNoZWNrYm94Jyk7XG5cbiAgICBpZiAodXNlclNraWxsc1NlbGVjdEZpZWxkKSB7XG4gICAgICBjb25zdCB1c2VyU2tpbGxzID0gdXNlclNraWxsc1NlbGVjdEZpZWxkLmdyb3VwT3B0aW9ucztcbiAgICAgIGlmICghc2VydmljZXMgfHwgc2VydmljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzID0gdXNlclNraWxscztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlcnZpY2VzLmZvckVhY2gocyA9PiB7XG4gICAgICAgICAgY29uc3QgZ3JvdXBPcHRpb24gPSB1c2VyU2tpbGxzLmZpbmQodSA9PiB1Lmdyb3VwLnRvTG93ZXJDYXNlKCkgPT09IHMudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgaWYgKGdyb3VwT3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlcy5wdXNoKGdyb3VwT3B0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodXNlclNraWxsc0NoZWNrYm94RmllbGQpIHtcbiAgICAgIGNvbnN0IHVzZXJTa2lsbHMgPSB1c2VyU2tpbGxzQ2hlY2tib3hGaWVsZC5ncm91cE9wdGlvbnM7XG4gICAgICBpZiAoIXNlcnZpY2VzIHx8IHNlcnZpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlcyA9IHVzZXJTa2lsbHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXJ2aWNlcy5mb3JFYWNoKHMgPT4ge1xuICAgICAgICAgIGNvbnN0IGdyb3VwT3B0aW9uID0gdXNlclNraWxscy5maW5kKHUgPT4gdS5ncm91cC50b0xvd2VyQ2FzZSgpID09PSBzLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgIGlmIChncm91cE9wdGlvbikge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFNraWxsc0J5U2VydmljZXMucHVzaChncm91cE9wdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZFNraWxsc0J5U2VydmljZXNDaGVja2JveCA9IHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzLm1hcChza2lsbCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHNraWxsLm9wdGlvbnM7XG4gICAgICAgIH0pLnJlZHVjZSgoYSwgYikgPT4ge1xuICAgICAgICAgIHJldHVybiBhLmNvbmNhdChiKTtcbiAgICAgICAgfSwgW10pO1xuICAgICAgICB1c2VyU2tpbGxzQ2hlY2tib3hGaWVsZC5vcHRpb25zID0gW107XG4gICAgICAgIHVzZXJTa2lsbHNDaGVja2JveEZpZWxkLm9wdGlvbnMgPSB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlc0NoZWNrYm94O1xuXG4gICAgICAgIHRoaXMuZm9ybS5zZXRDb250cm9sKCd1c2VyLXNraWxscycsIG5ldyBGb3JtQXJyYXkoW10pKTtcblxuICAgICAgICBpZiAoIXRoaXMuX2NvbmZpZy5jb3B5RmllbGRzKSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJlZFNraWxsc0J5U2VydmljZXNDaGVja2JveC5mb3JFYWNoKCgpID0+IHtcbiAgICAgICAgICAgICh0aGlzLmZvcm0uZ2V0KCd1c2VyLXNraWxscycpIGFzIEZvcm1BcnJheSkucHVzaChuZXcgRm9ybUNvbnRyb2woZmFsc2UpKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IHByZXZWYWx1ZXMgPSB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlc0NoZWNrYm94Lm1hcChza2lsbCA9PiB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzICYmIHRoaXMuc2V0dGluZ3MuZmllbGRzKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzU2VsZWN0ZWROZXN0ZWRDaGVja2JveC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0aGlzLnByZXZpb3VzU2VsZWN0ZWROZXN0ZWRDaGVja2JveC5pbmNsdWRlcyhza2lsbC5rZXkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBpc1NlbGVjdGVkVXNlclNraWxsOiBudW1iZXI7XG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVXNlclNraWxscyA9IHRoaXMuc2V0dGluZ3MuZmllbGRzLmZpbmQoc2V0dGluZyA9PiBzZXR0aW5nLm5hbWUgPT09ICd1c2VyLXNraWxscycpO1xuICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRVc2VyU2tpbGxzICYmIHNlbGVjdGVkVXNlclNraWxscy52YWx1ZSAmJiBzZWxlY3RlZFVzZXJTa2lsbHMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRVc2VyU2tpbGwgPSBzZWxlY3RlZFVzZXJTa2lsbHMudmFsdWUuZmluZEluZGV4KHZhbCA9PiBOdW1iZXIodmFsKSA9PT0gTnVtYmVyKHNraWxsLmtleSkpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gaXNTZWxlY3RlZFVzZXJTa2lsbCAhPT0gLTE7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHRoaXMucHJldmlvdXNTZWxlY3RlZE5lc3RlZENoZWNrYm94Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBQaWNrIHVwIGZyb20gcHJldmlvdXMgc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IHRoaXMucHJldmlvdXNTZWxlY3RlZE5lc3RlZENoZWNrYm94LmluY2x1ZGVzKFN0cmluZyhza2lsbC5rZXkpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd1c2VyLXNraWxscycpLnNldFZhbHVlKHByZXZWYWx1ZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkU2tpbGxzOiBib29sZWFuW10gPSBbXTtcblxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzQ2hlY2tib3gubWFwKChza2lsbHNCeVNlcnZpY2VzLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaTx0aGlzLl9jb25maWcucHJlU2VsZWN0ZWROZXN0ZWRDaGVja2JveC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBjb25zdCBza2lsbENvcHlWYWx1ZSA9IHRoaXMuX2NvbmZpZy5wcmVTZWxlY3RlZE5lc3RlZENoZWNrYm94W2ldO1xuXG4gICAgICAgICAgICAgIGlmKHNraWxsQ29weVZhbHVlLnRvU3RyaW5nKCkgPT09IHNraWxsc0J5U2VydmljZXMua2V5LnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZFNraWxsc1tpbmRleF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkU2tpbGxzW2luZGV4XSA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZihwcmVTZWxlY3RlZFNraWxscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwcmVTZWxlY3RlZFNraWxscy5mb3JFYWNoKChoKSA9PiB7XG4gICAgICAgICAgICAgICh0aGlzLmZvcm0uZ2V0KCd1c2VyLXNraWxscycpIGFzIEZvcm1BcnJheSkucHVzaChuZXcgRm9ybUNvbnRyb2woaCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzQ2hlY2tib3gubWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ3VzZXItc2tpbGxzJykgYXMgRm9ybUFycmF5KS5wdXNoKG5ldyBGb3JtQ29udHJvbChmYWxzZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlc0NoZWNrYm94O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzID0gdGhpcy5zb3J0R3JvdXBPcHRpb25zKHRoaXMuZmlsdGVyZWRTa2lsbHNCeVNlcnZpY2VzKTtcblxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkU2tpbGxzQnlTZXJ2aWNlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRWYWx1ZXNGb3JGaWVsZHMoZm9ybVZhbHVlczogYW55LCBmaWVsZDogRmlsdGVyRmllbGRDb25maWcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZ1tdID0gW107XG4gICAgT2JqZWN0LmtleXMoZm9ybVZhbHVlcykubWFwKChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm1WYWx1ZXNbbmFtZV0udmFsdWU7XG4gICAgICBpZiAobmFtZSA9PT0gZmllbGQubmFtZSkge1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodjogYW55KSA9PiB7XG4gICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMucHVzaCh2LmtleSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgc29ydEdyb3VwT3B0aW9ucyhncm91cE9wdGlvbnM6IEdyb3VwT3B0aW9uc1tdKTogR3JvdXBPcHRpb25zW10ge1xuICAgIGNvbnN0IHNvcnRlZFJlc3VsdHM6IEdyb3VwT3B0aW9uc1tdID0gW107XG4gICAgY29uc3QgZ3JvdXBzID0gZ3JvdXBPcHRpb25zLm1hcChnbyA9PiBnby5ncm91cCk7XG4gICAgZ3JvdXBzLnNvcnQoKS5mb3JFYWNoKGcgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IGdyb3VwT3B0aW9ucy5maW5kKChnbzogYW55KSA9PiBnby5ncm91cCA9PT0gZykub3B0aW9ucztcbiAgICAgIGNvbnN0IHNvcnRlZE9wdGlvbnMgPSBvcHRpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIGEubGFiZWwudG9Mb3dlckNhc2UoKSA+IGIubGFiZWwudG9Mb3dlckNhc2UoKSA/IDEgOiAoYi5sYWJlbC50b0xvd2VyQ2FzZSgpID4gYS5sYWJlbC50b0xvd2VyQ2FzZSgpID8gLTEgOiAwKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICBncm91cCA6IGcsXG4gICAgICAgIG9wdGlvbnM6IHNvcnRlZE9wdGlvbnNcbiAgICAgIH07XG4gICAgICBzb3J0ZWRSZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gc29ydGVkUmVzdWx0cztcbiAgfVxufVxuIl19
|