@hmcts/rpx-xui-common-lib 2.0.16-pre-release-accessibility-page-reference-link → 2.0.17-node-store-caseworkers

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.
@@ -43,7 +43,7 @@ function CookieBannerComponent_div_0_Template(rf, ctx) { if (rf & 1) {
43
43
  i0.ɵɵadvance(5);
44
44
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 12, "We use some essential cookies to make this service work."));
45
45
  i0.ɵɵadvance(3);
46
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 14, "We\u2019d also like to use analytics cookies so we can understand how you use the service and make improvements."));
46
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 14, "We'd also like to use analytics cookies so we can understand how you use the service and make improvements."));
47
47
  i0.ɵɵadvance(4);
48
48
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 16, "Accept analytics cookies"), " ");
49
49
  i0.ɵɵadvance(3);
@@ -132,7 +132,7 @@ CookieBannerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cooki
132
132
  } }, dependencies: [i2.NgIf, i3.RouterLink, i4.RpxTranslatePipe], encapsulation: 2 });
133
133
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CookieBannerComponent, [{
134
134
  type: Component,
135
- args: [{ selector: 'xuilib-cookie-banner', template: "<div class=\"govuk-cookie-banner \" role=\"region\" attr.aria-label=\"'Cookies on {{appName}}'\" *ngIf=\"isCookieBannerVisible\">\n <div class=\"govuk-cookie-banner__message govuk-width-container\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h2 class=\"govuk-cookie-banner__heading govuk-heading-m\">{{'Cookies on' | rpxTranslate}} {{appName | rpxTranslate}}</h2>\n\n <div class=\"govuk-cookie-banner__content\">\n <p>{{'We use some essential cookies to make this service work.' | rpxTranslate}}</p>\n <p>{{'We\\\u2019d also like to use analytics cookies so we can understand how you use the service and make improvements.' | rpxTranslate}}</p>\n </div>\n </div>\n </div>\n\n <div class=\"govuk-button-group\">\n <button value=\"accept\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"acceptCookie()\">\n {{'Accept analytics cookies' | rpxTranslate}}\n </button>\n <button value=\"reject\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"rejectCookie()\">\n {{'Reject analytics cookies' | rpxTranslate}}\n </button>\n <a class=\"govuk-link\" routerLink=\"/cookies\">{{'View cookies' | rpxTranslate}}</a>\n </div>\n </div>\n</div>\n" }]
135
+ args: [{ selector: 'xuilib-cookie-banner', template: "<div class=\"govuk-cookie-banner \" role=\"region\" attr.aria-label=\"'Cookies on {{appName}}'\" *ngIf=\"isCookieBannerVisible\">\n <div class=\"govuk-cookie-banner__message govuk-width-container\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h2 class=\"govuk-cookie-banner__heading govuk-heading-m\">{{'Cookies on' | rpxTranslate}} {{appName | rpxTranslate}}</h2>\n\n <div class=\"govuk-cookie-banner__content\">\n <p>{{'We use some essential cookies to make this service work.' | rpxTranslate}}</p>\n <p>{{'We\\'d also like to use analytics cookies so we can understand how you use the service and make improvements.' | rpxTranslate}}</p>\n </div>\n </div>\n </div>\n\n <div class=\"govuk-button-group\">\n <button value=\"accept\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"acceptCookie()\">\n {{'Accept analytics cookies' | rpxTranslate}}\n </button>\n <button value=\"reject\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"rejectCookie()\">\n {{'Reject analytics cookies' | rpxTranslate}}\n </button>\n <a class=\"govuk-link\" routerLink=\"/cookies\">{{'View cookies' | rpxTranslate}}</a>\n </div>\n </div>\n</div>\n" }]
136
136
  }], function () { return [{ type: i1.CookieService }, { type: undefined, decorators: [{
137
137
  type: Inject,
138
138
  args: [windowToken]
@@ -147,4 +147,4 @@ CookieBannerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cooki
147
147
  }], acceptanceNotifier: [{
148
148
  type: Output
149
149
  }] }); })();
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7SUNGM0MsOEJBQXlILGFBQUEsYUFBQSxhQUFBLFlBQUE7SUFLeEQsWUFBMEQ7OztJQUFBLGlCQUFLO0lBRXhILDhCQUEwQyxRQUFBO0lBQ3JDLGFBQTZFOztJQUFBLGlCQUFJO0lBQ3BGLDBCQUFHO0lBQUEsYUFBaUk7O0lBQUEsaUJBQUksRUFBQSxFQUFBLEVBQUE7SUFLOUksK0JBQWdDLGlCQUFBO0lBQ3NFLG1LQUFTLGVBQUEscUJBQWMsQ0FBQSxJQUFDO0lBQzFILGFBQ0Y7O0lBQUEsaUJBQVM7SUFDVCxrQ0FBNkg7SUFBekIsbUtBQVMsZUFBQSxxQkFBYyxDQUFBLElBQUM7SUFDMUgsYUFDRjs7SUFBQSxpQkFBUztJQUNULDhCQUE0QztJQUFBLGFBQWlDOztJQUFBLGlCQUFJLEVBQUEsRUFBQSxFQUFBOzs7SUFyQnZDLDZFQUEwQztJQUt6QixlQUEwRDtJQUExRCw2R0FBMEQ7SUFHOUcsZUFBNkU7SUFBN0Usd0dBQTZFO0lBQzdFLGVB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UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLGFBQWE7UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFFLHdDQUF3QztRQUNoRixHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7OzBGQW5GVSxxQkFBcUIsK0RBWXRCLFdBQVc7d0VBWlYscUJBQXFCO1FDVGxDLHdFQXdCTTs7UUF4QnNGLGdEQUEyQjs7dUZEUzFHLHFCQUFxQjtjQUxqQyxTQUFTOzJCQUNJLHNCQUFzQjs7c0JBZ0IvQixNQUFNO3VCQUFDLFdBQVc7d0JBWEwsVUFBVTtrQkFBekIsS0FBSztZQUNVLE9BQU87a0JBQXRCLEtBQUs7WUFDVSxlQUFlO2tCQUE5QixLQUFLO1lBQ1csaUJBQWlCO2tCQUFqQyxNQUFNO1lBQ1Usa0JBQWtCO2tCQUFsQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29va2llL2Nvb2tpZS5zZXJ2aWNlJztcbmltcG9ydCB7IHdpbmRvd1Rva2VuIH0gZnJvbSAnLi4vLi4vd2luZG93JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd4dWlsaWItY29va2llLWJhbm5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nvb2tpZS1iYW5uZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgQ29va2llQmFubmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHVibGljIGlkZW50aWZpZXI6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGFwcE5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGVuYWJsZUR5bmF0cmFjZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHVibGljIHJlamVjdGlvbk5vdGlmaWVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgYWNjZXB0YW5jZU5vdGlmaWVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHVibGljIGlzQ29va2llQmFubmVyVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgd2luZG93OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxuICAgIEBJbmplY3Qod2luZG93VG9rZW4pIHdpbmRvdzogYW55LFxuICApIHtcbiAgICB0aGlzLndpbmRvdyA9IHdpbmRvdztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYWNjZXB0Q29va2llKCk6IHZvaWQge1xuICAgIHRoaXMuY29va2llU2VydmljZS5zZXRDb29raWUodGhpcy5pZGVudGlmaWVyLCAndHJ1ZScsIHRoaXMuZ2V0RXhwaXJ5RGF0ZSgpKTtcbiAgICB0aGlzLnNldFN0YXRlKHRydWUpO1xuICB9XG5cbiAgcHVibGljIHJlamVjdENvb2tpZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0Q29va2llKHRoaXMuaWRlbnRpZmllciwgJ2ZhbHNlJywgdGhpcy5nZXRFeHBpcnlEYXRlKCkpO1xuICAgIHRoaXMuc2V0U3RhdGUodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdGUocmVsb2FkOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ29va2llQmFubmVyVmlzaWJsZSA9ICF0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2tDb29raWUodGhpcy5pZGVudGlmaWVyKTtcblxuICAgIGlmICh0aGlzLmFyZUNvb2tpZXNBY2NlcHRlZCgpKSB7XG4gICAgICB0aGlzLm5vdGlmeUFjY2VwdGFuY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnlSZWplY3Rpb24oKTtcbiAgICB9XG5cbiAgICBpZiAocmVsb2FkKSB7IC8vIHJlbG9hZCBpZiBhbnkgb2YgdGhlIGJ1dHRvbnMgYXJlIHByZXNzZWRcbiAgICAgIHRoaXMud2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhcmVDb29raWVzQWNjZXB0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29va2llU2VydmljZS5jaGVja0Nvb2tpZSh0aGlzLmlkZW50aWZpZXIpICYmIHRoaXMuY29va2llU2VydmljZS5nZXRDb29raWUodGhpcy5pZGVudGlmaWVyKSA9PT0gJ3RydWUnO1xuICB9XG5cbiAgcHVibGljIG5vdGlmeVJlamVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnJlamVjdGlvbk5vdGlmaWVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBub3RpZnlBY2NlcHRhbmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVuYWJsZUR5bmF0cmFjZSkge1xuICAgICAgaWYgKHRoaXMud2luZG93Lmhhc093blByb3BlcnR5KCdkdHJ1bScpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgZHRydW0gPSB0aGlzLndpbmRvd1snZHRydW0nXTtcbiAgICAgICAgaWYgKGR0cnVtKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGR0cnVtLmVuYWJsZSgpO1xuICAgICAgICAgICAgZHRydW0uZW5hYmxlU2Vzc2lvblJlcGxheSh0cnVlKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlbmFibGluZyBEeW5hVHJhY2UnLCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5pbmZvKFwiRHluYVRyYWNlIG5vdCBlbmFibGVkIG9uIHRoZSBzZXJ2ZXJcIik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIkR5bmFUcmFjZSBub3QgZW5hYmxlZCBvbiB0aGUgc2VydmVyXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmluZm8oXCJEeW50cmFjZSBSVU0gbm90IGVuYWJsZWQgdmlhIGNvbXBvbmVudCBwYXJhbWV0ZXJcIik7XG4gICAgfVxuICAgIHRoaXMuYWNjZXB0YW5jZU5vdGlmaWVyLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhwaXJ5RGF0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgdGltZSA9IG5vdy5nZXRUaW1lKCk7XG4gICAgY29uc3QgZXhwaXJlVGltZSA9IHRpbWUgKyAzMTUzNjAwMDAwMDsgIC8vICBpbiAzNjUgZGF5cyA9IDM2MDAgKiAxMDAwICogMjQgKiAzNjVcbiAgICBub3cuc2V0VGltZShleHBpcmVUaW1lKTtcbiAgICByZXR1cm4gbm93LnRvVVRDU3RyaW5nKCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImdvdnVrLWNvb2tpZS1iYW5uZXIgXCIgcm9sZT1cInJlZ2lvblwiIGF0dHIuYXJpYS1sYWJlbD1cIidDb29raWVzIG9uIHt7YXBwTmFtZX19J1wiICpuZ0lmPVwiaXNDb29raWVCYW5uZXJWaXNpYmxlXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1jb29raWUtYmFubmVyX19tZXNzYWdlIGdvdnVrLXdpZHRoLWNvbnRhaW5lclwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tdHdvLXRoaXJkc1wiPlxuICAgICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1jb29raWUtYmFubmVyX19oZWFkaW5nIGdvdnVrLWhlYWRpbmctbVwiPnt7J0Nvb2tpZXMgb24nIHwgcnB4VHJhbnNsYXRlfX0ge3thcHBOYW1lIHwgcnB4VHJhbnNsYXRlfX08L2gyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jb29raWUtYmFubmVyX19jb250ZW50XCI+XG4gICAgICAgICAgPHA+e3snV2UgdXNlIHNvbWUgZXNzZW50aWFsIGNvb2tpZXMgdG8gbWFrZSB0aGlzIHNlcnZpY2Ugd29yay4nIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgICAgICAgPHA+e3snV2VcXOKAmWQgYWxzbyBsaWtlIHRvIHVzZSBhbmFseXRpY3MgY29va2llcyBzbyB3ZSBjYW4gdW5kZXJzdGFuZCBob3cgeW91IHVzZSB0aGUgc2VydmljZSBhbmQgbWFrZSBpbXByb3ZlbWVudHMuJyB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiB2YWx1ZT1cImFjY2VwdFwiIHR5cGU9XCJidXR0b25cIiBuYW1lPVwiY29va2llc1wiIGNsYXNzPVwiZ292dWstYnV0dG9uXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIiAoY2xpY2spPVwiYWNjZXB0Q29va2llKClcIj5cbiAgICAgICAge3snQWNjZXB0IGFuYWx5dGljcyBjb29raWVzJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdmFsdWU9XCJyZWplY3RcIiB0eXBlPVwiYnV0dG9uXCIgbmFtZT1cImNvb2tpZXNcIiBjbGFzcz1cImdvdnVrLWJ1dHRvblwiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCIgKGNsaWNrKT1cInJlamVjdENvb2tpZSgpXCI+XG4gICAgICAgIHt7J1JlamVjdCBhbmFseXRpY3MgY29va2llcycgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YSBjbGFzcz1cImdvdnVrLWxpbmtcIiByb3V0ZXJMaW5rPVwiL2Nvb2tpZXNcIj57eydWaWV3IGNvb2tpZXMnIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7SUNGM0MsOEJBQXlILGFBQUEsYUFBQSxhQUFBLFlBQUE7SUFLeEQsWUFBMEQ7OztJQUFBLGlCQUFLO0lBRXhILDhCQUEwQyxRQUFBO0lBQ3JDLGFBQTZFOztJQUFBLGlCQUFJO0lBQ3BGLDBCQUFHO0lBQUEsYUFBaUk7O0lBQUEsaUJBQUksRUFBQSxFQUFBLEVBQUE7SUFLOUksK0JBQWdDLGlCQUFBO0lBQ3NFLG1LQUFTLGVBQUEscUJBQWMsQ0FBQSxJQUFDO0lBQzFILGFBQ0Y7O0lBQUEsaUJBQVM7SUFDVCxrQ0FBNkg7SUFBekIsbUtBQVMsZUFBQSxxQkFBYyxDQUFBLElBQUM7SUFDMUgsYUFDRjs7SUFBQSxpQkFBUztJQUNULDhCQUE0QztJQUFBLGFBQWlDOztJQUFBLGlCQUFJLEVBQUEsRUFBQSxFQUFBOzs7SUFyQnZDLDZFQUEwQztJQUt6QixlQUEwRDtJQUExRCw2R0FBMEQ7SUFHOUcsZUFBNkU7SUFBN0Usd0dBQTZFO0lBQzdFLGVB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UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLGFBQWE7UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFFLHdDQUF3QztRQUNoRixHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7OzBGQW5GVSxxQkFBcUIsK0RBWXRCLFdBQVc7d0VBWlYscUJBQXFCO1FDVGxDLHdFQXdCTTs7UUF4QnNGLGdEQUEyQjs7dUZEUzFHLHFCQUFxQjtjQUxqQyxTQUFTOzJCQUNJLHNCQUFzQjs7c0JBZ0IvQixNQUFNO3VCQUFDLFdBQVc7d0JBWEwsVUFBVTtrQkFBekIsS0FBSztZQUNVLE9BQU87a0JBQXRCLEtBQUs7WUFDVSxlQUFlO2tCQUE5QixLQUFLO1lBQ1csaUJBQWlCO2tCQUFqQyxNQUFNO1lBQ1Usa0JBQWtCO2tCQUFsQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29va2llL2Nvb2tpZS5zZXJ2aWNlJztcbmltcG9ydCB7IHdpbmRvd1Rva2VuIH0gZnJvbSAnLi4vLi4vd2luZG93JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd4dWlsaWItY29va2llLWJhbm5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nvb2tpZS1iYW5uZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgQ29va2llQmFubmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHVibGljIGlkZW50aWZpZXI6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGFwcE5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGVuYWJsZUR5bmF0cmFjZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHVibGljIHJlamVjdGlvbk5vdGlmaWVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgYWNjZXB0YW5jZU5vdGlmaWVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHVibGljIGlzQ29va2llQmFubmVyVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgd2luZG93OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxuICAgIEBJbmplY3Qod2luZG93VG9rZW4pIHdpbmRvdzogYW55LFxuICApIHtcbiAgICB0aGlzLndpbmRvdyA9IHdpbmRvdztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYWNjZXB0Q29va2llKCk6IHZvaWQge1xuICAgIHRoaXMuY29va2llU2VydmljZS5zZXRDb29raWUodGhpcy5pZGVudGlmaWVyLCAndHJ1ZScsIHRoaXMuZ2V0RXhwaXJ5RGF0ZSgpKTtcbiAgICB0aGlzLnNldFN0YXRlKHRydWUpO1xuICB9XG5cbiAgcHVibGljIHJlamVjdENvb2tpZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0Q29va2llKHRoaXMuaWRlbnRpZmllciwgJ2ZhbHNlJywgdGhpcy5nZXRFeHBpcnlEYXRlKCkpO1xuICAgIHRoaXMuc2V0U3RhdGUodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdGUocmVsb2FkOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ29va2llQmFubmVyVmlzaWJsZSA9ICF0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2tDb29raWUodGhpcy5pZGVudGlmaWVyKTtcblxuICAgIGlmICh0aGlzLmFyZUNvb2tpZXNBY2NlcHRlZCgpKSB7XG4gICAgICB0aGlzLm5vdGlmeUFjY2VwdGFuY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnlSZWplY3Rpb24oKTtcbiAgICB9XG5cbiAgICBpZiAocmVsb2FkKSB7IC8vIHJlbG9hZCBpZiBhbnkgb2YgdGhlIGJ1dHRvbnMgYXJlIHByZXNzZWRcbiAgICAgIHRoaXMud2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhcmVDb29raWVzQWNjZXB0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29va2llU2VydmljZS5jaGVja0Nvb2tpZSh0aGlzLmlkZW50aWZpZXIpICYmIHRoaXMuY29va2llU2VydmljZS5nZXRDb29raWUodGhpcy5pZGVudGlmaWVyKSA9PT0gJ3RydWUnO1xuICB9XG5cbiAgcHVibGljIG5vdGlmeVJlamVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnJlamVjdGlvbk5vdGlmaWVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBub3RpZnlBY2NlcHRhbmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVuYWJsZUR5bmF0cmFjZSkge1xuICAgICAgaWYgKHRoaXMud2luZG93Lmhhc093blByb3BlcnR5KCdkdHJ1bScpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgZHRydW0gPSB0aGlzLndpbmRvd1snZHRydW0nXTtcbiAgICAgICAgaWYgKGR0cnVtKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGR0cnVtLmVuYWJsZSgpO1xuICAgICAgICAgICAgZHRydW0uZW5hYmxlU2Vzc2lvblJlcGxheSh0cnVlKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlbmFibGluZyBEeW5hVHJhY2UnLCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5pbmZvKFwiRHluYVRyYWNlIG5vdCBlbmFibGVkIG9uIHRoZSBzZXJ2ZXJcIik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIkR5bmFUcmFjZSBub3QgZW5hYmxlZCBvbiB0aGUgc2VydmVyXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmluZm8oXCJEeW50cmFjZSBSVU0gbm90IGVuYWJsZWQgdmlhIGNvbXBvbmVudCBwYXJhbWV0ZXJcIik7XG4gICAgfVxuICAgIHRoaXMuYWNjZXB0YW5jZU5vdGlmaWVyLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhwaXJ5RGF0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgdGltZSA9IG5vdy5nZXRUaW1lKCk7XG4gICAgY29uc3QgZXhwaXJlVGltZSA9IHRpbWUgKyAzMTUzNjAwMDAwMDsgIC8vICBpbiAzNjUgZGF5cyA9IDM2MDAgKiAxMDAwICogMjQgKiAzNjVcbiAgICBub3cuc2V0VGltZShleHBpcmVUaW1lKTtcbiAgICByZXR1cm4gbm93LnRvVVRDU3RyaW5nKCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImdvdnVrLWNvb2tpZS1iYW5uZXIgXCIgcm9sZT1cInJlZ2lvblwiIGF0dHIuYXJpYS1sYWJlbD1cIidDb29raWVzIG9uIHt7YXBwTmFtZX19J1wiICpuZ0lmPVwiaXNDb29raWVCYW5uZXJWaXNpYmxlXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1jb29raWUtYmFubmVyX19tZXNzYWdlIGdvdnVrLXdpZHRoLWNvbnRhaW5lclwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tdHdvLXRoaXJkc1wiPlxuICAgICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1jb29raWUtYmFubmVyX19oZWFkaW5nIGdvdnVrLWhlYWRpbmctbVwiPnt7J0Nvb2tpZXMgb24nIHwgcnB4VHJhbnNsYXRlfX0ge3thcHBOYW1lIHwgcnB4VHJhbnNsYXRlfX08L2gyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jb29raWUtYmFubmVyX19jb250ZW50XCI+XG4gICAgICAgICAgPHA+e3snV2UgdXNlIHNvbWUgZXNzZW50aWFsIGNvb2tpZXMgdG8gbWFrZSB0aGlzIHNlcnZpY2Ugd29yay4nIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgICAgICAgPHA+e3snV2VcXCdkIGFsc28gbGlrZSB0byB1c2UgYW5hbHl0aWNzIGNvb2tpZXMgc28gd2UgY2FuIHVuZGVyc3RhbmQgaG93IHlvdSB1c2UgdGhlIHNlcnZpY2UgYW5kIG1ha2UgaW1wcm92ZW1lbnRzLicgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1idXR0b24tZ3JvdXBcIj5cbiAgICAgIDxidXR0b24gdmFsdWU9XCJhY2NlcHRcIiB0eXBlPVwiYnV0dG9uXCIgbmFtZT1cImNvb2tpZXNcIiBjbGFzcz1cImdvdnVrLWJ1dHRvblwiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCIgKGNsaWNrKT1cImFjY2VwdENvb2tpZSgpXCI+XG4gICAgICAgIHt7J0FjY2VwdCBhbmFseXRpY3MgY29va2llcycgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHZhbHVlPVwicmVqZWN0XCIgdHlwZT1cImJ1dHRvblwiIG5hbWU9XCJjb29raWVzXCIgY2xhc3M9XCJnb3Z1ay1idXR0b25cIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiIChjbGljayk9XCJyZWplY3RDb29raWUoKVwiPlxuICAgICAgICB7eydSZWplY3QgYW5hbHl0aWNzIGNvb2tpZXMnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGEgY2xhc3M9XCJnb3Z1ay1saW5rXCIgcm91dGVyTGluaz1cIi9jb29raWVzXCI+e3snVmlldyBjb29raWVzJyB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -22,14 +22,19 @@ function FindServiceComponent_a_6_Template(rf, ctx) { if (rf & 1) {
22
22
  i0.ɵɵlistener("click", function FindServiceComponent_a_6_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.addOption(ctx_r3.tempSelectedService)); });
23
23
  i0.ɵɵtext(1);
24
24
  i0.ɵɵpipe(2, "rpxTranslate");
25
- i0.ɵɵelementEnd();
25
+ i0.ɵɵelementStart(3, "span", 10);
26
+ i0.ɵɵtext(4);
27
+ i0.ɵɵpipe(5, "rpxTranslate");
28
+ i0.ɵɵelementEnd()();
26
29
  } if (rf & 2) {
27
30
  i0.ɵɵadvance(1);
28
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "Add"), " ");
31
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "Add"), " ");
32
+ i0.ɵɵadvance(3);
33
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 4, "service"));
29
34
  } }
30
35
  function FindServiceComponent_ul_7_li_1_Template(rf, ctx) { if (rf & 1) {
31
36
  const _r8 = i0.ɵɵgetCurrentView();
32
- i0.ɵɵelementStart(0, "li", 12)(1, "a", 13);
37
+ i0.ɵɵelementStart(0, "li", 13)(1, "a", 14);
33
38
  i0.ɵɵlistener("click", function FindServiceComponent_ul_7_li_1_Template_a_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r8); const selection_r6 = restoredCtx.$implicit; const ctx_r7 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r7.removeOption(selection_r6)); });
34
39
  i0.ɵɵtext(2);
35
40
  i0.ɵɵpipe(3, "rpxTranslate");
@@ -40,8 +45,8 @@ function FindServiceComponent_ul_7_li_1_Template(rf, ctx) { if (rf & 1) {
40
45
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, selection_r6.label), " ");
41
46
  } }
42
47
  function FindServiceComponent_ul_7_Template(rf, ctx) { if (rf & 1) {
43
- i0.ɵɵelementStart(0, "ul", 10);
44
- i0.ɵɵtemplate(1, FindServiceComponent_ul_7_li_1_Template, 4, 3, "li", 11);
48
+ i0.ɵɵelementStart(0, "ul", 11);
49
+ i0.ɵɵtemplate(1, FindServiceComponent_ul_7_li_1_Template, 4, 3, "li", 12);
45
50
  i0.ɵɵelementEnd();
46
51
  } if (rf & 2) {
47
52
  const ctx_r2 = i0.ɵɵnextContext();
@@ -144,14 +149,14 @@ FindServiceComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FindSe
144
149
  } if (rf & 2) {
145
150
  let _t;
146
151
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchServiceComponent = _t.first);
147
- } }, inputs: { field: "field", serviceTitle: "serviceTitle", form: "form", disabled: "disabled", formSubmissionEvent$: "formSubmissionEvent$" }, outputs: { serviceFieldChanged: "serviceFieldChanged" }, decls: 8, vars: 6, consts: [[1, "service-picker-custom"], [1, "search-service"], [1, "govuk-body"], ["id", "selectServiceSearch-label", "for", "serviceSearch__select", 4, "ngIf"], [1, "search-service__input-container"], [1, "search-service__input", 3, "options", "selectedOptions", "disabled", "optionChanged"], ["href", "javascript:void(0)", "class", "govuk-button govuk-button--secondary govuk-!-margin-bottom-0", "data-module", "govuk-button", "id", "add-service", 3, "click", 4, "ngIf"], ["class", "hmcts-filter-tags selection-container", 4, "ngIf"], ["id", "selectServiceSearch-label", "for", "serviceSearch__select"], ["href", "javascript:void(0)", "data-module", "govuk-button", "id", "add-service", 1, "govuk-button", "govuk-button--secondary", "govuk-!-margin-bottom-0", 3, "click"], [1, "hmcts-filter-tags", "selection-container"], ["class", "location-selection", 4, "ngFor", "ngForOf"], [1, "location-selection"], ["href", "javascript:void(0)", 1, "hmcts-filter__tag", 3, "click"]], template: function FindServiceComponent_Template(rf, ctx) { if (rf & 1) {
152
+ } }, inputs: { field: "field", serviceTitle: "serviceTitle", form: "form", disabled: "disabled", formSubmissionEvent$: "formSubmissionEvent$" }, outputs: { serviceFieldChanged: "serviceFieldChanged" }, decls: 8, vars: 6, consts: [[1, "service-picker-custom"], [1, "search-service"], [1, "govuk-body"], ["id", "selectServiceSearch-label", "for", "serviceSearch__select", 4, "ngIf"], [1, "search-service__input-container"], [1, "search-service__input", 3, "options", "selectedOptions", "disabled", "optionChanged"], ["href", "javascript:void(0)", "class", "govuk-button govuk-button--secondary govuk-!-margin-bottom-0", "data-module", "govuk-button", "id", "add-service", 3, "click", 4, "ngIf"], ["class", "hmcts-filter-tags selection-container", 4, "ngIf"], ["id", "selectServiceSearch-label", "for", "serviceSearch__select"], ["href", "javascript:void(0)", "data-module", "govuk-button", "id", "add-service", 1, "govuk-button", "govuk-button--secondary", "govuk-!-margin-bottom-0", 3, "click"], [1, "govuk-visually-hidden"], [1, "hmcts-filter-tags", "selection-container"], ["class", "location-selection", 4, "ngFor", "ngForOf"], [1, "location-selection"], ["href", "javascript:void(0)", 1, "hmcts-filter__tag", 3, "click"]], template: function FindServiceComponent_Template(rf, ctx) { if (rf & 1) {
148
153
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
149
154
  i0.ɵɵtemplate(3, FindServiceComponent_label_3_Template, 3, 3, "label", 3);
150
155
  i0.ɵɵelementEnd();
151
156
  i0.ɵɵelementStart(4, "div", 4)(5, "exui-search-service", 5);
152
157
  i0.ɵɵlistener("optionChanged", function FindServiceComponent_Template_exui_search_service_optionChanged_5_listener($event) { return ctx.onOptionSelected($event); });
153
158
  i0.ɵɵelementEnd();
154
- i0.ɵɵtemplate(6, FindServiceComponent_a_6_Template, 3, 3, "a", 6);
159
+ i0.ɵɵtemplate(6, FindServiceComponent_a_6_Template, 6, 6, "a", 6);
155
160
  i0.ɵɵelementEnd()();
156
161
  i0.ɵɵtemplate(7, FindServiceComponent_ul_7_Template, 2, 1, "ul", 7);
157
162
  i0.ɵɵelementEnd();
@@ -167,7 +172,7 @@ FindServiceComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FindSe
167
172
  } }, dependencies: [i1.NgForOf, i1.NgIf, i2.SearchServiceComponent, i3.RpxTranslatePipe], styles: ["#add-service[_ngcontent-%COMP%]{background-color:#ddd}"] });
168
173
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FindServiceComponent, [{
169
174
  type: Component,
170
- args: [{ selector: 'xuilib-find-service', 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", styles: ["#add-service{background-color:#ddd}\n"] }]
175
+ args: [{ selector: 'xuilib-find-service', 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 <span class=\"govuk-visually-hidden\">{{'service' | rpxTranslate}}</span>\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", styles: ["#add-service{background-color:#ddd}\n"] }]
171
176
  }], null, { field: [{
172
177
  type: Input
173
178
  }], serviceTitle: [{
@@ -184,4 +189,4 @@ FindServiceComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FindSe
184
189
  }], serviceFieldChanged: [{
185
190
  type: Output
186
191
  }] }); })();
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1zZXJ2aWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmluZC1zZXJ2aWNlL2ZpbmQtc2VydmljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbmQtc2VydmljZS9maW5kLXNlcnZpY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBYSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7OztJQ0Q5RSxnQ0FBdUY7SUFDckYsWUFDRjs7SUFBQSxpQkFBUTs7O0lBRE4sZUFDRjtJQURFLDBFQUNGOzs7O0lBU0EsNEJBRWtEO0lBRnJCLDBKQUFTLGVBQUEsNENBQThCLENBQUEsSUFBQztJQUduRSxZQUNGOztJQUFBLGlCQUFJOztJQURGLGVBQ0Y7SUFERSw0REFDRjs7OztJQUlGLDhCQUEwRSxZQUFBO0lBQzNDLGlPQUFTLGVBQUEsaUNBQXVCLENBQUEsSUFBQztJQUM1RCxZQUNGOztJQUFBLGlCQUFJLEVBQUE7OztJQURGLGVBQ0Y7SUFERSx5RUFDRjs7O0lBSkosOEJBQWlGO0lBQy9FLHlFQUlLO0lBQ1AsaUJBQUs7OztJQUxrRCxlQUFtQjtJQUFuQixpREFBbUI7O0FEWDVFLE1BQU0sT0FBTyxvQkFBb0I7SUFMakM7UUFTa0IsYUFBUSxHQUFZ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QU0sRUFBRSxJQUFJLEVBQUU7WUFDbEMsbUJBQW1CO2tCQUFuQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnT3B0aW9uLCBGaWx0ZXJGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLXNlcnZpY2Uvc2VhcmNoLXNlcnZpY2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLWZpbmQtc2VydmljZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9maW5kLXNlcnZpY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLXNlcnZpY2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaW5kU2VydmljZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZztcbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2VUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGZvcm1TdWJtaXNzaW9uRXZlbnQkOiBTdWJqZWN0PHZvaWQ+O1xuICBAVmlld0NoaWxkKFNlYXJjaFNlcnZpY2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBzZWFyY2hTZXJ2aWNlQ29tcG9uZW50OiBTZWFyY2hTZXJ2aWNlQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgcHVibGljIHNlcnZpY2VGaWVsZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgaXNTZWxlY3RlZEFsbCA9IGZhbHNlO1xuICBwcml2YXRlIGZvcm1TdWJtaXNzaW9uRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgdGVtcFNlbGVjdGVkU2VydmljZTogRmlsdGVyQ29uZmlnT3B0aW9uID0gbnVsbDtcbiAgcHVibGljIGdldCBzZWxlY3RlZFNlcnZpY2VzKCk6IEZpbHRlckNvbmZpZ09wdGlvbltdIHtcbiAgICBjb25zdCBzZWxlY3RBbGxWYWx1ZSA9IHRoaXMuZmllbGQub3B0aW9ucy5maW5kKGl0ZW0gPT4gaXRlbS5zZWxlY3RBbGwpO1xuICAgIHJldHVybiB0aGlzLmlzU2VsZWN0ZWRBbGwgPyBbc2VsZWN0QWxsVmFsdWVdIDogdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpPy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRPcHRpb25zQWxwaGFiZXRpY2FsbHkoKTtcblxuICAgIC8vIFBhdGNoIERlZmF1bHQgT3B0aW9uXG4gICAgaWYgKHRoaXMuZmllbGQuZGVmYXVsdE9wdGlvbikge1xuICAgICAgdGhpcy5hZGRPcHRpb24odGhpcy5maWVsZC5kZWZhdWx0T3B0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudCQpIHtcbiAgICAgIHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgb25lU2VsZWN0ZWRBbmRNYXhTZWxlY3RlZE9uZSA9IHRoaXMuc2VsZWN0ZWRTZXJ2aWNlcy5sZW5ndGggPT09IDEgJiYgdGhpcy5maWVsZC5tYXhTZWxlY3RlZCA9PT0gMTtcbiAgICAgICAgaWYgKCFvbmVTZWxlY3RlZEFuZE1heFNlbGVjdGVkT25lKSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlQ29tcG9uZW50LnJlc2V0U2VhcmNoVGVybSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkT3B0aW9uKG9wdGlvbjogRmlsdGVyQ29uZmlnT3B0aW9uKTogdm9pZCB7XG4gICAgaWYgKG9wdGlvbikge1xuICAgICAgaWYgKG9wdGlvbi5zZWxlY3RBbGwpIHtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkQWxsID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZW1vdmVBbGxTZWxlY3RlZFZhbHVlcygpO1xuICAgICAgICB0aGlzLmZpZWxkLm9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoIWl0ZW0uc2VsZWN0QWxsKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZEFsbCkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlQWxsU2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShvcHRpb24pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZFNlcnZpY2UgPSBudWxsO1xuICAgICAgdGhpcy5zZXJ2aWNlRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZUNvbXBvbmVudC5yZXNldFNlYXJjaFRlcm0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlT3B0aW9uKHNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbik6IHZvaWQge1xuICAgIGlmIChzZXJ2aWNlLnNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5yZW1vdmVBbGxTZWxlY3RlZFZhbHVlcygpO1xuICAgICAgdGhpcy5pc1NlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChzZXJ2aWNlLmtleSkge1xuICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICAgIGNvbnN0IGluZGV4ID0gKGZvcm1BcnJheS52YWx1ZSkuZmluZEluZGV4KChzZWxlY3RlZFNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbikgPT4gc2VsZWN0ZWRTZXJ2aWNlLmtleS50b0xvd2VyQ2FzZSgpID09PSBzZXJ2aWNlLmtleS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlcnZpY2VGaWVsZENoYW5nZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbk9wdGlvblNlbGVjdGVkKG9wdGlvbjogRmlsdGVyQ29uZmlnT3B0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpZWxkLmVuYWJsZUFkZEJ1dHRvbiAmJiB0aGlzLmZpZWxkLm1heFNlbGVjdGVkID09PSAxKSB7XG4gICAgICB0aGlzLnJlbW92ZUFsbFNlbGVjdGVkVmFsdWVzKCk7XG4gICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShvcHRpb24pO1xuICAgICAgdGhpcy5zZXJ2aWNlRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRTZXJ2aWNlID0gb3B0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQWxsU2VsZWN0ZWRWYWx1ZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICBmb3JtQXJyYXkuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkU2VsZWN0ZWRTZXJ2aWNlVG9Gb3JtKHNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5uYW1lKSBhcyBGb3JtQXJyYXk7XG4gICAgZm9ybUFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKHNlcnZpY2UpKTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydE9wdGlvbnNBbHBoYWJldGljYWxseSgpOiBGaWx0ZXJDb25maWdPcHRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQub3B0aW9ucy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gYS5sYWJlbC50b0xvd2VyQ2FzZSgpID4gYi5sYWJlbC50b0xvd2VyQ2FzZSgpID8gMSA6IChiLmxhYmVsLnRvTG93ZXJDYXNlKCkgPiBhLmxhYmVsLnRvTG93ZXJDYXNlKCkgPyAtMSA6IDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNlcnZpY2UtcGlja2VyLWN1c3RvbVwiPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLXNlcnZpY2VcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstYm9keVwiPlxuICAgICAgPGxhYmVsIGlkPVwic2VsZWN0U2VydmljZVNlYXJjaC1sYWJlbFwiIGZvcj1cInNlcnZpY2VTZWFyY2hfX3NlbGVjdFwiICpuZ0lmPVwic2VydmljZVRpdGxlXCI+XG4gICAgICAgIHt7IHNlcnZpY2VUaXRsZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtc2VydmljZV9faW5wdXQtY29udGFpbmVyXCI+XG4gICAgICA8ZXh1aS1zZWFyY2gtc2VydmljZSBjbGFzcz1cInNlYXJjaC1zZXJ2aWNlX19pbnB1dFwiXG4gICAgICAgIFtvcHRpb25zXT1cImZpZWxkLm9wdGlvbnNcIlxuICAgICAgICBbc2VsZWN0ZWRPcHRpb25zXT1cInNlbGVjdGVkU2VydmljZXNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAob3B0aW9uQ2hhbmdlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgIDwvZXh1aS1zZWFyY2gtc2VydmljZT5cbiAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiYWRkT3B0aW9uKHRlbXBTZWxlY3RlZFNlcnZpY2UpXCJcbiAgICAgICAgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnkgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiXG4gICAgICAgICpuZ0lmPVwiZmllbGQ/LmVuYWJsZUFkZEJ1dHRvblwiIGlkPVwiYWRkLXNlcnZpY2VcIj5cbiAgICAgICAge3sgJ0FkZCcgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPHVsIGNsYXNzPVwiaG1jdHMtZmlsdGVyLXRhZ3Mgc2VsZWN0aW9uLWNvbnRhaW5lclwiICpuZ0lmPVwiZmllbGQubWF4U2VsZWN0ZWQgIT0gMVwiPlxuICAgIDxsaSBjbGFzcz1cImxvY2F0aW9uLXNlbGVjdGlvblwiICpuZ0Zvcj1cImxldCBzZWxlY3Rpb24gb2Ygc2VsZWN0ZWRTZXJ2aWNlc1wiPlxuICAgICAgPGEgY2xhc3M9XCJobWN0cy1maWx0ZXJfX3RhZ1wiIChjbGljayk9XCJyZW1vdmVPcHRpb24oc2VsZWN0aW9uKVwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIj5cbiAgICAgICAge3sgc2VsZWN0aW9uLmxhYmVsICB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9hPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1zZXJ2aWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmluZC1zZXJ2aWNlL2ZpbmQtc2VydmljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbmQtc2VydmljZS9maW5kLXNlcnZpY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBYSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7OztJQ0Q5RSxnQ0FBdUY7SUFDckYsWUFDRjs7SUFBQSxpQkFBUTs7O0lBRE4sZUFDRjtJQURFLDBFQUNGOzs7O0lBU0EsNEJBRWtEO0lBRnJCLDBKQUFTLGVBQUEsNENBQThCLENBQUEsSUFBQztJQUduRSxZQUNBOztJQUFBLGdDQUFvQztJQUFBLFlBQTRCOztJQUFBLGlCQUFPLEVBQUE7O0lBRHZFLGVBQ0E7SUFEQSw0REFDQTtJQUFvQyxlQUE0QjtJQUE1QixxREFBNEI7Ozs7SUFLcEUsOEJBQTBFLFlBQUE7SUFDM0MsaU9BQVMsZUFBQSxpQ0FBdUIsQ0FBQSxJQUFDO0lBQzVELFlBQ0Y7O0lBQUEsaUJBQUksRUFBQTs7O0lBREYsZUFDRjtJQURFLHlFQUNGOzs7SUFKSiw4QkFBaUY7SUFDL0UseUVBSUs7SUFDUCxpQkFBSzs7O0lBTGtELGVBQW1CO0lB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LEtBQUs7WUFDc0Qsc0JBQXNCO2tCQUFqRixTQUFTO21CQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNsQyxtQkFBbUI7a0JBQW5DLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWdPcHRpb24sIEZpbHRlckZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2VDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtc2VydmljZS9zZWFyY2gtc2VydmljZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZmluZC1zZXJ2aWNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbmQtc2VydmljZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbmQtc2VydmljZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbmRTZXJ2aWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgc2VydmljZVRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybVN1Ym1pc3Npb25FdmVudCQ6IFN1YmplY3Q8dm9pZD47XG4gIEBWaWV3Q2hpbGQoU2VhcmNoU2VydmljZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHNlYXJjaFNlcnZpY2VDb21wb25lbnQ6IFNlYXJjaFNlcnZpY2VDb21wb25lbnQ7XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VydmljZUZpZWxkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSBpc1NlbGVjdGVkQWxsID0gZmFsc2U7XG4gIHByaXZhdGUgZm9ybVN1Ym1pc3Npb25FdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyB0ZW1wU2VsZWN0ZWRTZXJ2aWNlOiBGaWx0ZXJDb25maWdPcHRpb24gPSBudWxsO1xuICBwdWJsaWMgZ2V0IHNlbGVjdGVkU2VydmljZXMoKTogRmlsdGVyQ29uZmlnT3B0aW9uW10ge1xuICAgIGNvbnN0IHNlbGVjdEFsbFZhbHVlID0gdGhpcy5maWVsZC5vcHRpb25zLmZpbmQoaXRlbSA9PiBpdGVtLnNlbGVjdEFsbCk7XG4gICAgcmV0dXJuIHRoaXMuaXNTZWxlY3RlZEFsbCA/IFtzZWxlY3RBbGxWYWx1ZV0gOiB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSk/LnZhbHVlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc29ydE9wdGlvbnNBbHBoYWJldGljYWxseSgpO1xuXG4gICAgLy8gUGF0Y2ggRGVmYXVsdCBPcHRpb25cbiAgICBpZiAodGhpcy5maWVsZC5kZWZhdWx0T3B0aW9uKSB7XG4gICAgICB0aGlzLmFkZE9wdGlvbih0aGlzLmZpZWxkLmRlZmF1bHRPcHRpb24pO1xuICAgIH1cbiAgICBpZiAodGhpcy5mb3JtU3VibWlzc2lvbkV2ZW50JCkge1xuICAgICAgdGhpcy5mb3JtU3VibWlzc2lvbkV2ZW50U3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtU3VibWlzc2lvbkV2ZW50JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBvbmVTZWxlY3RlZEFuZE1heFNlbGVjdGVkT25lID0gdGhpcy5zZWxlY3RlZFNlcnZpY2VzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmZpZWxkLm1heFNlbGVjdGVkID09PSAxO1xuICAgICAgICBpZiAoIW9uZVNlbGVjdGVkQW5kTWF4U2VsZWN0ZWRPbmUpIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2VDb21wb25lbnQucmVzZXRTZWFyY2hUZXJtKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRPcHRpb24ob3B0aW9uOiBGaWx0ZXJDb25maWdPcHRpb24pOiB2b2lkIHtcbiAgICBpZiAob3B0aW9uKSB7XG4gICAgICBpZiAob3B0aW9uLnNlbGVjdEFsbCkge1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRBbGwgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlbW92ZUFsbFNlbGVjdGVkVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuZmllbGQub3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIGlmICghaXRlbS5zZWxlY3RBbGwpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkU2VsZWN0ZWRTZXJ2aWNlVG9Gb3JtKGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkQWxsKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVBbGxTZWxlY3RlZFZhbHVlcygpO1xuICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkU2VsZWN0ZWRTZXJ2aWNlVG9Gb3JtKG9wdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGVtcFNlbGVjdGVkU2VydmljZSA9IG51bGw7XG4gICAgICB0aGlzLnNlcnZpY2VGaWVsZENoYW5nZWQuZW1pdCgpO1xuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlQ29tcG9uZW50LnJlc2V0U2VhcmNoVGVybSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVPcHRpb24oc2VydmljZTogRmlsdGVyQ29uZmlnT3B0aW9uKTogdm9pZCB7XG4gICAgaWYgKHNlcnZpY2Uuc2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnJlbW92ZUFsbFNlbGVjdGVkVmFsdWVzKCk7XG4gICAgICB0aGlzLmlzU2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHNlcnZpY2Uua2V5KSB7XG4gICAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgICAgY29uc3QgaW5kZXggPSAoZm9ybUFycmF5LnZhbHVlKS5maW5kSW5kZXgoKHNlbGVjdGVkU2VydmljZTogRmlsdGVyQ29uZmlnT3B0aW9uKSA9PiBzZWxlY3RlZFNlcnZpY2Uua2V5LnRvTG93ZXJDYXNlKCkgPT09IHNlcnZpY2Uua2V5LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VydmljZUZpZWxkQ2hhbmdlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uT3B0aW9uU2VsZWN0ZWQob3B0aW9uOiBGaWx0ZXJDb25maWdPcHRpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZmllbGQuZW5hYmxlQWRkQnV0dG9uICYmIHRoaXMuZmllbGQubWF4U2VsZWN0ZWQgPT09IDEpIHtcbiAgICAgIHRoaXMucmVtb3ZlQWxsU2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgIHRoaXMuYWRkU2VsZWN0ZWRTZXJ2aWNlVG9Gb3JtKG9wdGlvbik7XG4gICAgICB0aGlzLnNlcnZpY2VGaWVsZENoYW5nZWQuZW1pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZFNlcnZpY2UgPSBvcHRpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVBbGxTZWxlY3RlZFZhbHVlcygpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgIGZvcm1BcnJheS5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTZWxlY3RlZFNlcnZpY2VUb0Zvcm0oc2VydmljZTogRmlsdGVyQ29uZmlnT3B0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICBmb3JtQXJyYXkucHVzaChuZXcgRm9ybUNvbnRyb2woc2VydmljZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0T3B0aW9uc0FscGhhYmV0aWNhbGx5KCk6IEZpbHRlckNvbmZpZ09wdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5vcHRpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIHJldHVybiBhLmxhYmVsLnRvTG93ZXJDYXNlKCkgPiBiLmxhYmVsLnRvTG93ZXJDYXNlKCkgPyAxIDogKGIubGFiZWwudG9Mb3dlckNhc2UoKSA+IGEubGFiZWwudG9Mb3dlckNhc2UoKSA/IC0xIDogMCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JtU3VibWlzc2lvbkV2ZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2VydmljZS1waWNrZXItY3VzdG9tXCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtc2VydmljZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ib2R5XCI+XG4gICAgICA8bGFiZWwgaWQ9XCJzZWxlY3RTZXJ2aWNlU2VhcmNoLWxhYmVsXCIgZm9yPVwic2VydmljZVNlYXJjaF9fc2VsZWN0XCIgKm5nSWY9XCJzZXJ2aWNlVGl0bGVcIj5cbiAgICAgICAge3sgc2VydmljZVRpdGxlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1zZXJ2aWNlX19pbnB1dC1jb250YWluZXJcIj5cbiAgICAgIDxleHVpLXNlYXJjaC1zZXJ2aWNlIGNsYXNzPVwic2VhcmNoLXNlcnZpY2VfX2lucHV0XCJcbiAgICAgICAgW29wdGlvbnNdPVwiZmllbGQub3B0aW9uc1wiXG4gICAgICAgIFtzZWxlY3RlZE9wdGlvbnNdPVwic2VsZWN0ZWRTZXJ2aWNlc1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChvcHRpb25DaGFuZ2VkKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAgPC9leHVpLXNlYXJjaC1zZXJ2aWNlPlxuICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJhZGRPcHRpb24odGVtcFNlbGVjdGVkU2VydmljZSlcIlxuICAgICAgICBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeSBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCJmaWVsZD8uZW5hYmxlQWRkQnV0dG9uXCIgaWQ9XCJhZGQtc2VydmljZVwiPlxuICAgICAgICB7eyAnQWRkJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snc2VydmljZScgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDx1bCBjbGFzcz1cImhtY3RzLWZpbHRlci10YWdzIHNlbGVjdGlvbi1jb250YWluZXJcIiAqbmdJZj1cImZpZWxkLm1heFNlbGVjdGVkICE9IDFcIj5cbiAgICA8bGkgY2xhc3M9XCJsb2NhdGlvbi1zZWxlY3Rpb25cIiAqbmdGb3I9XCJsZXQgc2VsZWN0aW9uIG9mIHNlbGVjdGVkU2VydmljZXNcIj5cbiAgICAgIDxhIGNsYXNzPVwiaG1jdHMtZmlsdGVyX190YWdcIiAoY2xpY2spPVwicmVtb3ZlT3B0aW9uKHNlbGVjdGlvbilcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XG4gICAgICAgIHt7IHNlbGVjdGlvbi5sYWJlbCAgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvYT5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9kaXY+XG4iXX0=
@@ -15,19 +15,19 @@ import * as i5 from "@angular/forms";
15
15
  import * as i6 from "@angular/material/legacy-autocomplete";
16
16
  import * as i7 from "@angular/material/legacy-core";
17
17
  import * as i8 from "rpx-xui-translation";
18
- function SearchLocationComponent_ng_container_4_ng_container_1_mat_option_1_Template(rf, ctx) { if (rf & 1) {
19
- const _r8 = i0.ɵɵgetCurrentView();
20
- i0.ɵɵelementStart(0, "mat-option", 6);
21
- i0.ɵɵlistener("onSelectionChange", function SearchLocationComponent_ng_container_4_ng_container_1_mat_option_1_Template_mat_option_onSelectionChange_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r8); const location_r6 = restoredCtx.$implicit; const ctx_r7 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r7.onSelectedLocation(location_r6)); });
18
+ function SearchLocationComponent_ng_container_5_ng_container_1_mat_option_1_Template(rf, ctx) { if (rf & 1) {
19
+ const _r9 = i0.ɵɵgetCurrentView();
20
+ i0.ɵɵelementStart(0, "mat-option", 7);
21
+ i0.ɵɵlistener("onSelectionChange", function SearchLocationComponent_ng_container_5_ng_container_1_mat_option_1_Template_mat_option_onSelectionChange_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r9); const location_r7 = restoredCtx.$implicit; const ctx_r8 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r8.onSelectedLocation(location_r7)); });
22
22
  i0.ɵɵtext(1);
23
23
  i0.ɵɵelementEnd();
24
24
  } if (rf & 2) {
25
- const location_r6 = ctx.$implicit;
26
- const ctx_r4 = i0.ɵɵnextContext(3);
25
+ const location_r7 = ctx.$implicit;
26
+ const ctx_r5 = i0.ɵɵnextContext(3);
27
27
  i0.ɵɵadvance(1);
28
- i0.ɵɵtextInterpolate1(" ", location_r6[ctx_r4.propertyNameFilter], " ");
28
+ i0.ɵɵtextInterpolate1(" ", location_r7[ctx_r5.propertyNameFilter], " ");
29
29
  } }
30
- function SearchLocationComponent_ng_container_4_ng_container_1_mat_option_2_Template(rf, ctx) { if (rf & 1) {
30
+ function SearchLocationComponent_ng_container_5_ng_container_1_mat_option_2_Template(rf, ctx) { if (rf & 1) {
31
31
  i0.ɵɵelementStart(0, "mat-option");
32
32
  i0.ɵɵtext(1);
33
33
  i0.ɵɵpipe(2, "rpxTranslate");
@@ -36,26 +36,26 @@ function SearchLocationComponent_ng_container_4_ng_container_1_mat_option_2_Temp
36
36
  i0.ɵɵadvance(1);
37
37
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "No results found"));
38
38
  } }
39
- function SearchLocationComponent_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
39
+ function SearchLocationComponent_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
40
40
  i0.ɵɵelementContainerStart(0);
41
- i0.ɵɵtemplate(1, SearchLocationComponent_ng_container_4_ng_container_1_mat_option_1_Template, 2, 1, "mat-option", 5);
42
- i0.ɵɵtemplate(2, SearchLocationComponent_ng_container_4_ng_container_1_mat_option_2_Template, 3, 3, "mat-option", 4);
41
+ i0.ɵɵtemplate(1, SearchLocationComponent_ng_container_5_ng_container_1_mat_option_1_Template, 2, 1, "mat-option", 6);
42
+ i0.ɵɵtemplate(2, SearchLocationComponent_ng_container_5_ng_container_1_mat_option_2_Template, 3, 3, "mat-option", 5);
43
43
  i0.ɵɵelementContainerEnd();
44
44
  } if (rf & 2) {
45
- const filteredList_r2 = i0.ɵɵnextContext().ngIf;
45
+ const filteredList_r3 = i0.ɵɵnextContext().ngIf;
46
46
  i0.ɵɵadvance(1);
47
- i0.ɵɵproperty("ngForOf", filteredList_r2);
47
+ i0.ɵɵproperty("ngForOf", filteredList_r3);
48
48
  i0.ɵɵadvance(1);
49
- i0.ɵɵproperty("ngIf", filteredList_r2.length === 0);
49
+ i0.ɵɵproperty("ngIf", filteredList_r3.length === 0);
50
50
  } }
51
- function SearchLocationComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
51
+ function SearchLocationComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {
52
52
  i0.ɵɵelementContainerStart(0);
53
- i0.ɵɵtemplate(1, SearchLocationComponent_ng_container_4_ng_container_1_Template, 3, 2, "ng-container", 4);
53
+ i0.ɵɵtemplate(1, SearchLocationComponent_ng_container_5_ng_container_1_Template, 3, 2, "ng-container", 5);
54
54
  i0.ɵɵelementContainerEnd();
55
55
  } if (rf & 2) {
56
- const filteredList_r2 = ctx.ngIf;
56
+ const filteredList_r3 = ctx.ngIf;
57
57
  i0.ɵɵadvance(1);
58
- i0.ɵɵproperty("ngIf", filteredList_r2 && filteredList_r2.length >= 0);
58
+ i0.ɵɵproperty("ngIf", filteredList_r3 && filteredList_r3.length >= 0);
59
59
  } }
60
60
  export class SearchLocationComponent {
61
61
  get reset() {
@@ -85,6 +85,7 @@ export class SearchLocationComponent {
85
85
  this.term = '';
86
86
  this.pReset = true;
87
87
  this.debounceTimeInput = 300;
88
+ this.previousValue = '';
88
89
  }
89
90
  ngOnInit() {
90
91
  const searchInputChanges$ = this.searchTermFormControl.valueChanges
@@ -149,28 +150,58 @@ export class SearchLocationComponent {
149
150
  }
150
151
  return locations.filter(location => !selectedLocations.map(selectedLocation => selectedLocation.epimms_id).includes(location.epimms_id) && location[this.propertyNameFilter]);
151
152
  }
153
+ removeInvalidString(formInputValue) {
154
+ if (!this.isCharacterValid(formInputValue)) {
155
+ formInputValue.preventDefault();
156
+ }
157
+ }
158
+ isCharacterValid(event) {
159
+ let pressed = undefined;
160
+ if (event.key !== undefined) {
161
+ pressed = event.key;
162
+ if (pressed.length > 1) {
163
+ switch (pressed) {
164
+ case 'Tab':
165
+ return true;
166
+ case 'ArrowRight':
167
+ return true;
168
+ case 'ArrowLeft':
169
+ return true;
170
+ case 'Backspace':
171
+ return true;
172
+ case 'Enter':
173
+ return true;
174
+ default: return false;
175
+ }
176
+ }
177
+ }
178
+ else if (event.keyCode !== undefined) {
179
+ pressed = String.fromCharCode(event.keyCode);
180
+ }
181
+ return pressed && (/[a-zA-Z \s'-]/).test(pressed);
182
+ }
152
183
  }
153
184
  SearchLocationComponent.allLocationAPI = `api/locations/getLocations`;
154
185
  SearchLocationComponent.ɵfac = function SearchLocationComponent_Factory(t) { return new (t || SearchLocationComponent)(i0.ɵɵdirectiveInject(i1.LocationService), i0.ɵɵdirectiveInject(i2.SessionStorageService), i0.ɵɵdirectiveInject(i3.RefDataService)); };
155
- SearchLocationComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchLocationComponent, selectors: [["exui-search-location"]], inputs: { form: "form", field: "field", disabled: "disabled", singleMode: "singleMode", locationType: "locationType", serviceIds: "serviceIds", submitted: "submitted", bookingCheck: "bookingCheck", selectedLocations: "selectedLocations", propertyNameFilter: "propertyNameFilter", delay: "delay", reset: "reset" }, outputs: { locationSelected: "locationSelected", locationTermSearchInputChanged: "locationTermSearchInputChanged", searchLocationChanged: "searchLocationChanged" }, decls: 6, vars: 6, consts: [[1, "auto-complete-container"], ["id", "inputLocationSearch", 1, "govuk-input", 3, "formControl", "matAutocomplete", "input"], ["autoActiveFirstOption", "", 1, "mat-autocomplete-panel-extend"], ["autoSearchLocation", "matAutocomplete"], [4, "ngIf"], [3, "onSelectionChange", 4, "ngFor", "ngForOf"], [3, "onSelectionChange"]], template: function SearchLocationComponent_Template(rf, ctx) { if (rf & 1) {
156
- i0.ɵɵelementStart(0, "div", 0)(1, "input", 1);
157
- i0.ɵɵlistener("input", function SearchLocationComponent_Template_input_input_1_listener() { return ctx.onInput(); });
186
+ SearchLocationComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchLocationComponent, selectors: [["exui-search-location"]], inputs: { form: "form", field: "field", disabled: "disabled", singleMode: "singleMode", locationType: "locationType", serviceIds: "serviceIds", submitted: "submitted", bookingCheck: "bookingCheck", selectedLocations: "selectedLocations", propertyNameFilter: "propertyNameFilter", delay: "delay", reset: "reset" }, outputs: { locationSelected: "locationSelected", locationTermSearchInputChanged: "locationTermSearchInputChanged", searchLocationChanged: "searchLocationChanged" }, decls: 7, vars: 6, consts: [[1, "auto-complete-container"], ["id", "inputLocationSearch", 1, "govuk-input", 3, "formControl", "matAutocomplete", "keydown", "input"], ["char", ""], ["autoActiveFirstOption", "", 1, "mat-autocomplete-panel-extend"], ["autoSearchLocation", "matAutocomplete"], [4, "ngIf"], [3, "onSelectionChange", 4, "ngFor", "ngForOf"], [3, "onSelectionChange"]], template: function SearchLocationComponent_Template(rf, ctx) { if (rf & 1) {
187
+ i0.ɵɵelementStart(0, "div", 0)(1, "input", 1, 2);
188
+ i0.ɵɵlistener("keydown", function SearchLocationComponent_Template_input_keydown_1_listener($event) { return ctx.removeInvalidString($event); })("input", function SearchLocationComponent_Template_input_input_1_listener() { return ctx.onInput(); });
158
189
  i0.ɵɵelementEnd();
159
- i0.ɵɵelementStart(2, "mat-autocomplete", 2, 3);
160
- i0.ɵɵtemplate(4, SearchLocationComponent_ng_container_4_Template, 2, 1, "ng-container", 4);
161
- i0.ɵɵpipe(5, "async");
190
+ i0.ɵɵelementStart(3, "mat-autocomplete", 3, 4);
191
+ i0.ɵɵtemplate(5, SearchLocationComponent_ng_container_5_Template, 2, 1, "ng-container", 5);
192
+ i0.ɵɵpipe(6, "async");
162
193
  i0.ɵɵelementEnd()();
163
194
  } if (rf & 2) {
164
- const _r0 = i0.ɵɵreference(3);
195
+ const _r1 = i0.ɵɵreference(4);
165
196
  i0.ɵɵadvance(1);
166
- i0.ɵɵproperty("formControl", ctx.searchTermFormControl)("matAutocomplete", _r0);
197
+ i0.ɵɵproperty("formControl", ctx.searchTermFormControl)("matAutocomplete", _r1);
167
198
  i0.ɵɵattribute("disabled", ctx.disabled);
168
- i0.ɵɵadvance(3);
169
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(5, 4, ctx.filteredList$));
199
+ i0.ɵɵadvance(4);
200
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 4, ctx.filteredList$));
170
201
  } }, dependencies: [i4.NgForOf, i4.NgIf, i5.DefaultValueAccessor, i5.NgControlStatus, i5.FormControlDirective, i6.MatLegacyAutocomplete, i6.MatLegacyAutocompleteTrigger, i7.MatLegacyOption, i4.AsyncPipe, i8.RpxTranslatePipe], styles: [".autocomplete__input--show-all-values[_ngcontent-%COMP%]{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down[_ngcontent-%COMP%]{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu[_ngcontent-%COMP%]{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:calc(100% - 4px)}.autocomplete__menu--visible[_ngcontent-%COMP%]{display:block}.autocomplete__menu--hidden[_ngcontent-%COMP%]{display:none}.autocomplete__menu--overlay[_ngcontent-%COMP%]{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline[_ngcontent-%COMP%]{position:relative}.autocomplete__option[_ngcontent-%COMP%]{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{pointer-events:none}.autocomplete__option[_ngcontent-%COMP%]:first-of-type{border-top-width:0}.autocomplete__option[_ngcontent-%COMP%]:last-of-type{border-bottom-width:0}.autocomplete__option--odd[_ngcontent-%COMP%]{background-color:#fafafa}.autocomplete__option--focused[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results[_ngcontent-%COMP%]{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.25}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{padding:5px}@media (min-width: 641px){.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.31579}}.div-action[_ngcontent-%COMP%]{display:inline-block}.add-location[_ngcontent-%COMP%]{display:inline}.remove-location-button[_ngcontent-%COMP%]{margin:5px}.hide-autocomplete[_ngcontent-%COMP%]{display:none}.auto-complete-container[_ngcontent-%COMP%]{display:inline-block;margin-right:4px;width:calc(100% - 4px)}.autocomplete__input[_ngcontent-%COMP%]{line-height:24px;font-size:19px}"] });
171
202
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchLocationComponent, [{
172
203
  type: Component,
173
- args: [{ selector: 'exui-search-location', template: "<div class=\"auto-complete-container\">\n <input\n id=\"inputLocationSearch\"\n (input)=\"onInput()\"\n [formControl]=\"searchTermFormControl\"\n [matAutocomplete]=\"autoSearchLocation\"\n class=\"govuk-input\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchLocation=\"matAutocomplete\">\n <ng-container *ngIf=\"filteredList$ | async as filteredList\">\n <ng-container *ngIf=\"filteredList && filteredList.length >= 0\">\n <mat-option *ngFor=\"let location of filteredList\" (onSelectionChange)=\"onSelectedLocation(location)\">\n {{ location[propertyNameFilter] }}\n </mat-option>\n <mat-option *ngIf=\"filteredList.length === 0\">{{'No results found' | rpxTranslate}}</mat-option>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n</div>\n", styles: [".autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width: 641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.31579}}.div-action{display:inline-block}.add-location{display:inline}.remove-location-button{margin:5px}.hide-autocomplete{display:none}.auto-complete-container{display:inline-block;margin-right:4px;width:calc(100% - 4px)}.autocomplete__input{line-height:24px;font-size:19px}\n"] }]
204
+ args: [{ selector: 'exui-search-location', template: "<div class=\"auto-complete-container\">\n <input\n id=\"inputLocationSearch\"\n #char\n (keydown)=\"removeInvalidString($event)\"\n (input)=\"onInput()\"\n [formControl]=\"searchTermFormControl\"\n [matAutocomplete]=\"autoSearchLocation\"\n class=\"govuk-input\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchLocation=\"matAutocomplete\">\n <ng-container *ngIf=\"filteredList$ | async as filteredList\">\n <ng-container *ngIf=\"filteredList && filteredList.length >= 0\">\n <mat-option *ngFor=\"let location of filteredList\" (onSelectionChange)=\"onSelectedLocation(location)\">\n {{ location[propertyNameFilter] }}\n </mat-option>\n <mat-option *ngIf=\"filteredList.length === 0\">{{'No results found' | rpxTranslate}}</mat-option>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n</div>\n", styles: [".autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width: 641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.31579}}.div-action{display:inline-block}.add-location{display:inline}.remove-location-button{margin:5px}.hide-autocomplete{display:none}.auto-complete-container{display:inline-block;margin-right:4px;width:calc(100% - 4px)}.autocomplete__input{line-height:24px;font-size:19px}\n"] }]
174
205
  }], function () { return [{ type: i1.LocationService }, { type: i2.SessionStorageService }, { type: i3.RefDataService }]; }, { form: [{
175
206
  type: Input
176
207
  }], field: [{
@@ -202,4 +233,4 @@ SearchLocationComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
202
233
  }], reset: [{
203
234
  type: Input
204
235
  }] }); })();
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWxvY2F0aW9uL3NlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1sb2NhdGlvbi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBSWpCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7Ozs7Ozs7Ozs7OztJQ0QvRixxQ0FBcUc7SUFBbkQscVNBQXFCLGVBQUEsc0NBQTRCLENBQUEsSUFBQztJQUNsRyxZQUNGO0lBQUEsaUJBQWE7Ozs7SUFEWCxlQUNGO0lBREUsdUVBQ0Y7OztJQUNBLGtDQUE4QztJQUFBLFlBQXFDOztJQUFBLGlCQUFhOztJQUFsRCxlQUFxQztJ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QkFBcUMsZUFBQTtRQUdqQyxtR0FBUyxhQUFTLElBQUM7UUFGckIsaUJBTTZCO1FBQzdCLDhDQUFvSDtRQUNsSCwwRkFPZTs7UUFDakIsaUJBQW1CLEVBQUE7OztRQWJqQixlQUFxQztRQUFyQyx1REFBcUMsd0JBQUE7UUFHckMsd0NBQTBCO1FBRVgsZUFBNEI7UUFBNUIsOERBQTRCOzt1RkRVbEMsdUJBQXVCO2NBTG5DLFNBQVM7MkJBQ0Usc0JBQXNCO21JQU1oQixJQUFJO2tCQUFuQixLQUFLO1lBQ1UsS0FBSztrQkFBcEIsS0FBSztZQUNVLFFBQVE7a0JBQXZCLEtBQUs7WUFDVSxVQUFVO2tCQUF6QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLFVBQVU7a0JBQXpCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLGlCQUFpQjtrQkFBaEMsS0FBSztZQUNVLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLEtBQUs7a0JBQXBCLEtBQUs7WUFDVyxnQkFBZ0I7a0JBQWhDLE1BQU07WUFDVSw4QkFBOEI7a0JBQTlDLE1BQU07WUFDVSxxQkFBcUI7a0JBQXJDLE1BQU07WUFhSSxLQUFLO2tCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaWlmLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQm9va2luZ0NoZWNrVHlwZSwgRmlsdGVyQ29uZmlnT3B0aW9uLFxuICBGaWx0ZXJGaWVsZENvbmZpZyxcbiAgTG9jYXRpb25CeUVQSU1NU01vZGVsLFxuICBMb2NhdGlvbnNCeVNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IExvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvY2F0aW9ucy9sb2NhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZkRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVmLWRhdGEnO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS9zZXNzaW9uLXN0b3JhZ2Uvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdleHVpLXNlYXJjaC1sb2NhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hMb2NhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGFsbExvY2F0aW9uQVBJID0gYGFwaS9sb2NhdGlvbnMvZ2V0TG9jYXRpb25zYDtcbiAgQElucHV0KCkgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gbnVsbDtcbiAgQElucHV0KCkgcHVibGljIHNpbmdsZU1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxvY2F0aW9uVHlwZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXJ2aWNlSWRzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHN1Ym1pdHRlZD86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgYm9va2luZ0NoZWNrOiBCb29raW5nQ2hlY2tUeXBlO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRMb2NhdGlvbnM6IExvY2F0aW9uQnlFUElNTVNNb2RlbFtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBwcm9wZXJ0eU5hbWVGaWx0ZXI6IGtleW9mIExvY2F0aW9uQnlFUElNTVNNb2RlbCA9ICdzaXRlX25hbWUnO1xuICBASW5wdXQoKSBwdWJsaWMgZGVsYXk/OiBudW1iZXIgPSA1MDA7XG4gIEBPdXRwdXQoKSBwdWJsaWMgbG9jYXRpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TG9jYXRpb25CeUVQSU1NU01vZGVsPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGxvY2F0aW9uVGVybVNlYXJjaElucHV0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBzZWFyY2hMb2NhdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgcHVibGljIHNlYXJjaFRlcm1Gb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIHB1YmxpYyByZWFkb25seSBtaW5TZWFyY2hDaGFyYWN0ZXJzID0gMztcbiAgcHVibGljIHRlcm06IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHBSZXNldDogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBmaWx0ZXJlZExpc3QkOiBPYnNlcnZhYmxlPExvY2F0aW9uQnlFUElNTVNNb2RlbFtdIHwgYm9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVib3VuY2VUaW1lSW5wdXQgPSAzMDA7XG5cbiAgcHVibGljIGdldCByZXNldCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wUmVzZXQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJlc2V0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5wUmVzZXQgPSB2YWx1ZTtcbiAgICB0aGlzLnJlc2V0U2VhcmNoVGVybSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBsb2NhdGlvblNlcnZpY2U6IExvY2F0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZWZEYXRhU2VydmljZTogUmVmRGF0YVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWFyY2hJbnB1dENoYW5nZXMkID0gdGhpcy5zZWFyY2hUZXJtRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh0ZXJtKSA9PiB0aGlzLmxvY2F0aW9uVGVybVNlYXJjaElucHV0Q2hhbmdlZC5lbWl0KHRlcm0pKVxuICAgICAgKTtcblxuICAgIC8vIGlmIHNlcnZpY2VzRmllbGQgZXhpc3RzLCB0aGVuIHdlIHNob3VsZCBmaWx0ZXIgbG9jYXRpb25zIGJ5IHRoZSBzZXJ2aWNlIGNvZGVzXG4gICAgaWYgKHRoaXMuZmllbGQgJiYgdGhpcy5maWVsZC5zZXJ2aWNlc0ZpZWxkKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCQgPSBzZWFyY2hJbnB1dENoYW5nZXMkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodGVybTogc3RyaW5nKSA9PiBpaWYoXG4gICAgICAgICAgLy8gU2VlbXMgbW9yZSByZXNwb25zaXZlIHRvIGRvIGxlbmd0aCAwIGlmIGxvY2F0aW9uc0J5U2VydmljZUNvZGVzIGFyZSBjYWNoZWRcbiAgICAgICAgICAoKSA9PiAoISF0ZXJtICYmIHRlcm0ubGVuZ3RoID49IDApLFxuICAgICAgICAgICAgdGhpcy5yZWZEYXRhU2VydmljZS5nZXRMb2NhdGlvbnNCeVNlcnZpY2VDb2RlcyhcbiAgICAgICAgICAgICAgKHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5zZXJ2aWNlc0ZpZWxkKT8udmFsdWUgYXMgRmlsdGVyQ29uZmlnT3B0aW9uW10pLm1hcCgoc2VydmljZSkgPT4gc2VydmljZS5rZXkpXG4gICAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICAgIC8vIEZpbHRlciBsb2NhdGlvbnMgYnkgdGhlIHNlYXJjaCBpbnB1dCB0ZXJtIGFuZCB0aGUgY2hvc2VuIHByb3BlcnR5IG5hbWVcbiAgICAgICAgICAgICAgbWFwKChsb2NhdGlvbnMpID0+IGxvY2F0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGxvY2F0aW9uKSA9PiBsb2NhdGlvblt0aGlzLnByb3BlcnR5TmFtZUZpbHRlcl0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtLnRvTG93ZXJDYXNlKCkpKSksXG4gICAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgbG9jYXRpb25zIHRoYXQgYXJlIGFscmVhZHkgc2VsZWN0ZWRcbiAgICAgICAgICAgICAgbWFwKChsb2NhdGlvbnMpID0+IHRoaXMuZmlsdGVyVW5zZWxlY3RlZExvY2F0aW9ucyhsb2NhdGlvbnMsIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMsIHRoaXMuc2luZ2xlTW9kZSkpLFxuICAgICAgICAgICAgICAvLyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZSBsb2NhdGlvbnMgKGJ5IHByb3BlcnR5TmFtZUZpbHRlcilcbiAgICAgICAgICAgICAgbWFwKChsb2NhdGlvbnMpID0+IGxvY2F0aW9ucy5maWx0ZXIoKGxvY2F0aW9uLCBpbmRleCwgYXJyYXkpID0+XG4gICAgICAgICAgICAgICAgaW5kZXggPT09IGFycmF5LmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbVt0aGlzLnByb3BlcnR5TmFtZUZpbHRlcl0gPT09IGxvY2F0aW9uW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXSlcbiAgICAgICAgICAgICAgKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgc2VhcmNoIHRlcm0gaXMgZW1wdHkgdG8gbm90IHNob3cgdGhlIGF1dG9jb21wbGV0ZSBmaWVsZCBpLmUuIG5nSWYgc2hvdWxkIGJlIGZhbHNlXG4gICAgICAgICAgICBvZihmYWxzZSlcbiAgICAgICAgKSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCQgPSBzZWFyY2hJbnB1dENoYW5nZXMkLnBpcGUoXG4gICAgICAgIC8vIERlYm91bmNlIG5lZWRlZCB0byBwcmV2ZW50IG11bHRpcGxlIEFQSSBjYWxscyBiZWluZyBtYWRlXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZUlucHV0KSxcbiAgICAgICAgc3dpdGNoTWFwKCh0ZXJtOiBzdHJpbmcpID0+IGlpZihcbiAgICAgICAgICAoKSA9PiAoISF0ZXJtICYmIHRlcm0ubGVuZ3RoID49IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyksXG4gICAgICAgICAgdGhpcy5nZXRMb2NhdGlvbnModGVybSkucGlwZShcbiAgICAgICAgICAgIG1hcCgobG9jYXRpb25zKSA9PiB0aGlzLmZpbHRlclVuc2VsZWN0ZWRMb2NhdGlvbnMobG9jYXRpb25zLCB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLCB0aGlzLnNpbmdsZU1vZGUpKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIG9mKGZhbHNlKVxuICAgICAgICApKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2luZ2xlTW9kZSAmJiB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5zZWxlY3RlZExvY2F0aW9uc1swXTtcbiAgICAgIHRoaXMuc2VhcmNoVGVybUZvcm1Db250cm9sLnBhdGNoVmFsdWUobG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdLCB7ZW1pdEV2ZW50OiBmYWxzZSwgb25seVNlbGY6IHRydWV9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RlZExvY2F0aW9uKGxvY2F0aW9uOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm1Gb3JtQ29udHJvbC5wYXRjaFZhbHVlKGxvY2F0aW9uW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXSwge2VtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlfSk7XG4gICAgdGhpcy5sb2NhdGlvblNlbGVjdGVkLmVtaXQobG9jYXRpb24pO1xuICB9XG4gIHB1YmxpYyBvbklucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoTG9jYXRpb25DaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMb2NhdGlvbnModGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXT4ge1xuICAgIGxldCB1c2VyTG9jYXRpb25zO1xuICAgIC8vIEJvb2tpbmcgdHlwZSBpbmZvIC0gY2FuIGNyZWF0ZSBtb3JlXG4gICAgLy8gTk9fQ0hFQ0sgLSBBbGwgd29yayAtIERvIG5vdCBmaWx0ZXIgb3V0IGxvY2F0aW9ucyAtIERlZmF1bHQgYXNzdW1wdGlvblxuICAgIC8vIEJPT0tJTkdTX0FORF9CQVNFIC0gTXkgd29yayAtIFRyeSB0byBvbmx5IHNob3cgYmFzZSBsb2NhdGlvbnMvcmVnaW9uc1xuICAgIC8vIFBPU1NJQkxFX0JPT0tJTkdTIC0gQ3JlYXRlIGJvb2tpbmcgc2NyZWVuIC0gU2hvdyBvbmx5IHBvdGVudGlhbCBib29raW5nc1xuICAgIGlmICh0aGlzLmJvb2tpbmdDaGVjayA9PT0gQm9va2luZ0NoZWNrVHlwZS5CT09LSU5HU19BTkRfQkFTRSkge1xuICAgICAgdXNlckxvY2F0aW9ucyA9IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndXNlckxvY2F0aW9ucycpKSBhcyBMb2NhdGlvbnNCeVNlcnZpY2VbXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYm9va2luZ0NoZWNrID09PSBCb29raW5nQ2hlY2tUeXBlLlBPU1NJQkxFX0JPT0tJTkdTKSB7XG4gICAgICB0aGlzLnNlcnZpY2VJZHMgPSB0aGlzLnNlcnZpY2VJZHMgJiYgdGhpcy5zZXJ2aWNlSWRzLmxlbmd0aCA/IHRoaXMuc2VydmljZUlkcyA6IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnYm9va2FibGVTZXJ2aWNlcycpKTtcbiAgICAgIHVzZXJMb2NhdGlvbnMgPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2Jvb2thYmxlVXNlckxvY2F0aW9ucycpKSBhcyBMb2NhdGlvbnNCeVNlcnZpY2VbXTtcbiAgICB9XG4gICAgLy8gZ2V0IGFsbCBsb2NhdGlvbnMgd2lsbCByZXNvbHZlIGZpbHRlciBzZXR0aW5nIHVzaW5nIG9iamVjdHMgYWJvdmVcbiAgICAvLyBpZiBubyB1c2VyTG9jYXRpb25zLCBOT19DSEVDS1xuICAgIC8vIGlmIGp1c3QgZ2V0dGluZyBhbGwgc3Vic3RhbnRpdmUgdXNlciBsb2NhdGlvbnMsIEJPT0tJTkdTX0FORF9CQVNFXG4gICAgLy8gZmVlIHBhaWQgdXNlciBsb2NhdGlvbnMgYXJlIHVzZWQgZm9yIFBPU1NJQkxFX0JPT0tJTkdTXG4gICAgcmV0dXJuIHRoaXMubG9jYXRpb25TZXJ2aWNlLmdldEFsbExvY2F0aW9ucyhTZWFyY2hMb2NhdGlvbkNvbXBvbmVudC5hbGxMb2NhdGlvbkFQSSwgdGhpcy5zZXJ2aWNlSWRzLCB0aGlzLmxvY2F0aW9uVHlwZSwgdGVybSwgdXNlckxvY2F0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRTZWFyY2hUZXJtKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybUZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyVW5zZWxlY3RlZExvY2F0aW9ucyhcbiAgICBsb2NhdGlvbnM6IExvY2F0aW9uQnlFUElNTVNNb2RlbFtdLFxuICAgIHNlbGVjdGVkTG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSxcbiAgICBzaW5nbGVNb2RlOiBib29sZWFuXG4gICk6IExvY2F0aW9uQnlFUElNTVNNb2RlbFtdIHtcbiAgICBpZiAoc2luZ2xlTW9kZSkge1xuICAgICAgcmV0dXJuIGxvY2F0aW9ucztcbiAgICB9XG4gICAgcmV0dXJuIGxvY2F0aW9ucy5maWx0ZXIoXG4gICAgICBsb2NhdGlvbiA9PiAhc2VsZWN0ZWRMb2NhdGlvbnMubWFwKHNlbGVjdGVkTG9jYXRpb24gPT4gc2VsZWN0ZWRMb2NhdGlvbi5lcGltbXNfaWQpLmluY2x1ZGVzKGxvY2F0aW9uLmVwaW1tc19pZCkgJiYgbG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF1dG8tY29tcGxldGUtY29udGFpbmVyXCI+XG4gIDxpbnB1dFxuICAgIGlkPVwiaW5wdXRMb2NhdGlvblNlYXJjaFwiXG4gICAgKGlucHV0KT1cIm9uSW5wdXQoKVwiXG4gICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaFRlcm1Gb3JtQ29udHJvbFwiXG4gICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvU2VhcmNoTG9jYXRpb25cIlxuICAgIGNsYXNzPVwiZ292dWstaW5wdXRcIlxuICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gIDxtYXQtYXV0b2NvbXBsZXRlIGNsYXNzPVwibWF0LWF1dG9jb21wbGV0ZS1wYW5lbC1leHRlbmRcIiBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG9TZWFyY2hMb2NhdGlvbj1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZExpc3QkIHwgYXN5bmMgYXMgZmlsdGVyZWRMaXN0XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRMaXN0ICYmIGZpbHRlcmVkTGlzdC5sZW5ndGggPj0gMFwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbG9jYXRpb24gb2YgZmlsdGVyZWRMaXN0XCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0ZWRMb2NhdGlvbihsb2NhdGlvbilcIj5cbiAgICAgICAgICB7eyBsb2NhdGlvbltwcm9wZXJ0eU5hbWVGaWx0ZXJdIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJmaWx0ZXJlZExpc3QubGVuZ3RoID09PSAwXCI+e3snTm8gcmVzdWx0cyBmb3VuZCcgfCBycHhUcmFuc2xhdGV9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L21hdC1hdXRvY29tcGxldGU+XG48L2Rpdj5cbiJdfQ==
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWxvY2F0aW9uL3NlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1sb2NhdGlvbi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBSWpCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7Ozs7Ozs7Ozs7OztJQ0MvRixxQ0FBcUc7SUFBbkQscVNBQXFCLGVBQUEsc0NBQTRCLENBQUEsSUFBQztJQUNsRyxZQUNGO0lBQUEsaUJBQWE7Ozs7SUFEWCxlQUNGO0lBREUsdUVBQ0Y7OztJQUNBLGtDQUE4QztJQUFBLFlBQXFDOztJQUFBLGlCQUFhOztJQUFsRCxlQUFxQztJ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cUMsd0JBQUE7UUFHckMsd0NBQTBCO1FBRVgsZUFBNEI7UUFBNUIsOERBQTRCOzt1RkRRbEMsdUJBQXVCO2NBTG5DLFNBQVM7MkJBQ0Usc0JBQXNCO21JQU1oQixJQUFJO2tCQUFuQixLQUFLO1lBQ1UsS0FBSztrQkFBcEIsS0FBSztZQUNVLFFBQVE7a0JBQXZCLEtBQUs7WUFDVSxVQUFVO2tCQUF6QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLFVBQVU7a0JBQXpCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLGlCQUFpQjtrQkFBaEMsS0FBSztZQUNVLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLEtBQUs7a0JBQXBCLEtBQUs7WUFDVyxnQkFBZ0I7a0JBQWhDLE1BQU07WUFDVSw4QkFBOEI7a0JBQTlDLE1BQU07WUFDVSxxQkFBcUI7a0JBQXJDLE1BQU07WUFjSSxLQUFLO2tCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaWlmLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQm9va2luZ0NoZWNrVHlwZSwgRmlsdGVyQ29uZmlnT3B0aW9uLFxuICBGaWx0ZXJGaWVsZENvbmZpZyxcbiAgTG9jYXRpb25CeUVQSU1NU01vZGVsLFxuICBMb2NhdGlvbnNCeVNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IExvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvY2F0aW9ucy9sb2NhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZkRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVmLWRhdGEnO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS9zZXNzaW9uLXN0b3JhZ2Uvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdleHVpLXNlYXJjaC1sb2NhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hMb2NhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGFsbExvY2F0aW9uQVBJID0gYGFwaS9sb2NhdGlvbnMvZ2V0TG9jYXRpb25zYDtcbiAgQElucHV0KCkgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gbnVsbDtcbiAgQElucHV0KCkgcHVibGljIHNpbmdsZU1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxvY2F0aW9uVHlwZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXJ2aWNlSWRzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHN1Ym1pdHRlZD86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgYm9va2luZ0NoZWNrOiBCb29raW5nQ2hlY2tUeXBlO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRMb2NhdGlvbnM6IExvY2F0aW9uQnlFUElNTVNNb2RlbFtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBwcm9wZXJ0eU5hbWVGaWx0ZXI6IGtleW9mIExvY2F0aW9uQnlFUElNTVNNb2RlbCA9ICdzaXRlX25hbWUnO1xuICBASW5wdXQoKSBwdWJsaWMgZGVsYXk/OiBudW1iZXIgPSA1MDA7XG4gIEBPdXRwdXQoKSBwdWJsaWMgbG9jYXRpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TG9jYXRpb25CeUVQSU1NU01vZGVsPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGxvY2F0aW9uVGVybVNlYXJjaElucHV0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBzZWFyY2hMb2NhdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgcHVibGljIHNlYXJjaFRlcm1Gb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIHB1YmxpYyByZWFkb25seSBtaW5TZWFyY2hDaGFyYWN0ZXJzID0gMztcbiAgcHVibGljIHRlcm06IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHBSZXNldDogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBmaWx0ZXJlZExpc3QkOiBPYnNlcnZhYmxlPExvY2F0aW9uQnlFUElNTVNNb2RlbFtdIHwgYm9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVib3VuY2VUaW1lSW5wdXQgPSAzMDA7XG4gIHB1YmxpYyBwcmV2aW91c1ZhbHVlID0gJyc7XG5cbiAgcHVibGljIGdldCByZXNldCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wUmVzZXQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJlc2V0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5wUmVzZXQgPSB2YWx1ZTtcbiAgICB0aGlzLnJlc2V0U2VhcmNoVGVybSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBsb2NhdGlvblNlcnZpY2U6IExvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmRGF0YVNlcnZpY2U6IFJlZkRhdGFTZXJ2aWNlXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHNlYXJjaElucHV0Q2hhbmdlcyQgPSB0aGlzLnNlYXJjaFRlcm1Gb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHRlcm0pID0+IHRoaXMubG9jYXRpb25UZXJtU2VhcmNoSW5wdXRDaGFuZ2VkLmVtaXQodGVybSkpXG4gICAgICApO1xuXG4gICAgLy8gaWYgc2VydmljZXNGaWVsZCBleGlzdHMsIHRoZW4gd2Ugc2hvdWxkIGZpbHRlciBsb2NhdGlvbnMgYnkgdGhlIHNlcnZpY2UgY29kZXNcbiAgICBpZiAodGhpcy5maWVsZCAmJiB0aGlzLmZpZWxkLnNlcnZpY2VzRmllbGQpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRMaXN0JCA9IHNlYXJjaElucHV0Q2hhbmdlcyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh0ZXJtOiBzdHJpbmcpID0+IGlpZihcbiAgICAgICAgICAvLyBTZWVtcyBtb3JlIHJlc3BvbnNpdmUgdG8gZG8gbGVuZ3RoIDAgaWYgbG9jYXRpb25zQnlTZXJ2aWNlQ29kZXMgYXJlIGNhY2hlZFxuICAgICAgICAgICgpID0+ICghIXRlcm0gJiYgdGVybS5sZW5ndGggPj0gMCksXG4gICAgICAgICAgdGhpcy5yZWZEYXRhU2VydmljZS5nZXRMb2NhdGlvbnNCeVNlcnZpY2VDb2RlcyhcbiAgICAgICAgICAgICh0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQuc2VydmljZXNGaWVsZCk/LnZhbHVlIGFzIEZpbHRlckNvbmZpZ09wdGlvbltdKS5tYXAoKHNlcnZpY2UpID0+IHNlcnZpY2Uua2V5KVxuICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgIC8vIEZpbHRlciBsb2NhdGlvbnMgYnkgdGhlIHNlYXJjaCBpbnB1dCB0ZXJtIGFuZCB0aGUgY2hvc2VuIHByb3BlcnR5IG5hbWVcbiAgICAgICAgICAgIG1hcCgobG9jYXRpb25zKSA9PiBsb2NhdGlvbnNcbiAgICAgICAgICAgICAgLmZpbHRlcigobG9jYXRpb24pID0+IGxvY2F0aW9uW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSkpKSxcbiAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgbG9jYXRpb25zIHRoYXQgYXJlIGFscmVhZHkgc2VsZWN0ZWRcbiAgICAgICAgICAgIG1hcCgobG9jYXRpb25zKSA9PiB0aGlzLmZpbHRlclVuc2VsZWN0ZWRMb2NhdGlvbnMobG9jYXRpb25zLCB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLCB0aGlzLnNpbmdsZU1vZGUpKSxcbiAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgZHVwbGljYXRlIGxvY2F0aW9ucyAoYnkgcHJvcGVydHlOYW1lRmlsdGVyKVxuICAgICAgICAgICAgbWFwKChsb2NhdGlvbnMpID0+IGxvY2F0aW9ucy5maWx0ZXIoKGxvY2F0aW9uLCBpbmRleCwgYXJyYXkpID0+XG4gICAgICAgICAgICAgIGluZGV4ID09PSBhcnJheS5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW1bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdID09PSBsb2NhdGlvblt0aGlzLnByb3BlcnR5TmFtZUZpbHRlcl0pXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIHNlYXJjaCB0ZXJtIGlzIGVtcHR5IHRvIG5vdCBzaG93IHRoZSBhdXRvY29tcGxldGUgZmllbGQgaS5lLiBuZ0lmIHNob3VsZCBiZSBmYWxzZVxuICAgICAgICAgIG9mKGZhbHNlKVxuICAgICAgICApKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRMaXN0JCA9IHNlYXJjaElucHV0Q2hhbmdlcyQucGlwZShcbiAgICAgICAgLy8gRGVib3VuY2UgbmVlZGVkIHRvIHByZXZlbnQgbXVsdGlwbGUgQVBJIGNhbGxzIGJlaW5nIG1hZGVcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lSW5wdXQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHRlcm06IHN0cmluZykgPT4gaWlmKFxuICAgICAgICAgICgpID0+ICghIXRlcm0gJiYgdGVybS5sZW5ndGggPj0gdGhpcy5taW5TZWFyY2hDaGFyYWN0ZXJzKSxcbiAgICAgICAgICB0aGlzLmdldExvY2F0aW9ucyh0ZXJtKS5waXBlKFxuICAgICAgICAgICAgbWFwKChsb2NhdGlvbnMpID0+IHRoaXMuZmlsdGVyVW5zZWxlY3RlZExvY2F0aW9ucyhsb2NhdGlvbnMsIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMsIHRoaXMuc2luZ2xlTW9kZSkpLFxuICAgICAgICAgICksXG4gICAgICAgICAgb2YoZmFsc2UpXG4gICAgICAgICkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaW5nbGVNb2RlICYmIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLnNlbGVjdGVkTG9jYXRpb25zWzBdO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShsb2NhdGlvblt0aGlzLnByb3BlcnR5TmFtZUZpbHRlcl0sIHsgZW1pdEV2ZW50OiBmYWxzZSwgb25seVNlbGY6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWRMb2NhdGlvbihsb2NhdGlvbjogTG9jYXRpb25CeUVQSU1NU01vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShsb2NhdGlvblt0aGlzLnByb3BlcnR5TmFtZUZpbHRlcl0sIHsgZW1pdEV2ZW50OiBmYWxzZSwgb25seVNlbGY6IHRydWUgfSk7XG4gICAgdGhpcy5sb2NhdGlvblNlbGVjdGVkLmVtaXQobG9jYXRpb24pO1xuICB9XG4gIHB1YmxpYyBvbklucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoTG9jYXRpb25DaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMb2NhdGlvbnModGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXT4ge1xuICAgIGxldCB1c2VyTG9jYXRpb25zO1xuICAgIC8vIEJvb2tpbmcgdHlwZSBpbmZvIC0gY2FuIGNyZWF0ZSBtb3JlXG4gICAgLy8gTk9fQ0hFQ0sgLSBBbGwgd29yayAtIERvIG5vdCBmaWx0ZXIgb3V0IGxvY2F0aW9ucyAtIERlZmF1bHQgYXNzdW1wdGlvblxuICAgIC8vIEJPT0tJTkdTX0FORF9CQVNFIC0gTXkgd29yayAtIFRyeSB0byBvbmx5IHNob3cgYmFzZSBsb2NhdGlvbnMvcmVnaW9uc1xuICAgIC8vIFBPU1NJQkxFX0JPT0tJTkdTIC0gQ3JlYXRlIGJvb2tpbmcgc2NyZWVuIC0gU2hvdyBvbmx5IHBvdGVudGlhbCBib29raW5nc1xuICAgIGlmICh0aGlzLmJvb2tpbmdDaGVjayA9PT0gQm9va2luZ0NoZWNrVHlwZS5CT09LSU5HU19BTkRfQkFTRSkge1xuICAgICAgdXNlckxvY2F0aW9ucyA9IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndXNlckxvY2F0aW9ucycpKSBhcyBMb2NhdGlvbnNCeVNlcnZpY2VbXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYm9va2luZ0NoZWNrID09PSBCb29raW5nQ2hlY2tUeXBlLlBPU1NJQkxFX0JPT0tJTkdTKSB7XG4gICAgICB0aGlzLnNlcnZpY2VJZHMgPSB0aGlzLnNlcnZpY2VJZHMgJiYgdGhpcy5zZXJ2aWNlSWRzLmxlbmd0aCA/IHRoaXMuc2VydmljZUlkcyA6IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnYm9va2FibGVTZXJ2aWNlcycpKTtcbiAgICAgIHVzZXJMb2NhdGlvbnMgPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2Jvb2thYmxlVXNlckxvY2F0aW9ucycpKSBhcyBMb2NhdGlvbnNCeVNlcnZpY2VbXTtcbiAgICB9XG4gICAgLy8gZ2V0IGFsbCBsb2NhdGlvbnMgd2lsbCByZXNvbHZlIGZpbHRlciBzZXR0aW5nIHVzaW5nIG9iamVjdHMgYWJvdmVcbiAgICAvLyBpZiBubyB1c2VyTG9jYXRpb25zLCBOT19DSEVDS1xuICAgIC8vIGlmIGp1c3QgZ2V0dGluZyBhbGwgc3Vic3RhbnRpdmUgdXNlciBsb2NhdGlvbnMsIEJPT0tJTkdTX0FORF9CQVNFXG4gICAgLy8gZmVlIHBhaWQgdXNlciBsb2NhdGlvbnMgYXJlIHVzZWQgZm9yIFBPU1NJQkxFX0JPT0tJTkdTXG4gICAgcmV0dXJuIHRoaXMubG9jYXRpb25TZXJ2aWNlLmdldEFsbExvY2F0aW9ucyhTZWFyY2hMb2NhdGlvbkNvbXBvbmVudC5hbGxMb2NhdGlvbkFQSSwgdGhpcy5zZXJ2aWNlSWRzLCB0aGlzLmxvY2F0aW9uVHlwZSwgdGVybSwgdXNlckxvY2F0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRTZWFyY2hUZXJtKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybUZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyVW5zZWxlY3RlZExvY2F0aW9ucyhcbiAgICBsb2NhdGlvbnM6IExvY2F0aW9uQnlFUElNTVNNb2RlbFtdLFxuICAgIHNlbGVjdGVkTG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSxcbiAgICBzaW5nbGVNb2RlOiBib29sZWFuXG4gICk6IExvY2F0aW9uQnlFUElNTVNNb2RlbFtdIHtcbiAgICBpZiAoc2luZ2xlTW9kZSkge1xuICAgICAgcmV0dXJuIGxvY2F0aW9ucztcbiAgICB9XG4gICAgcmV0dXJuIGxvY2F0aW9ucy5maWx0ZXIoXG4gICAgICBsb2NhdGlvbiA9PiAhc2VsZWN0ZWRMb2NhdGlvbnMubWFwKHNlbGVjdGVkTG9jYXRpb24gPT4gc2VsZWN0ZWRMb2NhdGlvbi5lcGltbXNfaWQpLmluY2x1ZGVzKGxvY2F0aW9uLmVwaW1tc19pZCkgJiYgbG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVJbnZhbGlkU3RyaW5nKGZvcm1JbnB1dFZhbHVlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzQ2hhcmFjdGVyVmFsaWQoZm9ybUlucHV0VmFsdWUpKSB7XG4gICAgICBmb3JtSW5wdXRWYWx1ZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0NoYXJhY3RlclZhbGlkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgbGV0IHByZXNzZWQgPSB1bmRlZmluZWRcbiAgICBpZiAoZXZlbnQua2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByZXNzZWQgPSBldmVudC5rZXk7XG4gICAgICBpZiAocHJlc3NlZC5sZW5ndGggPiAxKSB7XG4gICAgICAgIHN3aXRjaCAocHJlc3NlZCkge1xuICAgICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByZXNzZWQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmtleUNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gcHJlc3NlZCAmJiAoL1thLXpBLVogXFxzJy1dLykudGVzdChwcmVzc2VkKTtcbiAgfVxuXG59IiwiPGRpdiBjbGFzcz1cImF1dG8tY29tcGxldGUtY29udGFpbmVyXCI+XG4gIDxpbnB1dFxuICAgIGlkPVwiaW5wdXRMb2NhdGlvblNlYXJjaFwiXG4gICAgI2NoYXJcbiAgICAoa2V5ZG93bik9XCJyZW1vdmVJbnZhbGlkU3RyaW5nKCRldmVudClcIlxuICAgIChpbnB1dCk9XCJvbklucHV0KClcIlxuICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hUZXJtRm9ybUNvbnRyb2xcIlxuICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1NlYXJjaExvY2F0aW9uXCJcbiAgICBjbGFzcz1cImdvdnVrLWlucHV0XCJcbiAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICA8bWF0LWF1dG9jb21wbGV0ZSBjbGFzcz1cIm1hdC1hdXRvY29tcGxldGUtcGFuZWwtZXh0ZW5kXCIgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvU2VhcmNoTG9jYXRpb249XCJtYXRBdXRvY29tcGxldGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRMaXN0JCB8IGFzeW5jIGFzIGZpbHRlcmVkTGlzdFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkTGlzdCAmJiBmaWx0ZXJlZExpc3QubGVuZ3RoID49IDBcIj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGxvY2F0aW9uIG9mIGZpbHRlcmVkTGlzdFwiIChvblNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGVkTG9jYXRpb24obG9jYXRpb24pXCI+XG4gICAgICAgICAge3sgbG9jYXRpb25bcHJvcGVydHlOYW1lRmlsdGVyXSB9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiZmlsdGVyZWRMaXN0Lmxlbmd0aCA9PT0gMFwiPnt7J05vIHJlc3VsdHMgZm91bmQnIHwgcnB4VHJhbnNsYXRlfX08L21hdC1vcHRpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuPC9kaXY+XG4iXX0=