@ieeesa-npm/groups 0.15.12 → 0.15.14

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.
@@ -398,7 +398,8 @@
398
398
  "buttons": {
399
399
  "cancel": "Cancel",
400
400
  "import": "Import Roster",
401
- "downloadErrorLog": "Download Error log"
401
+ "downloadErrorLog": "Download Error log",
402
+ "uploadNewFile": "Upload Different File"
402
403
  },
403
404
  "result": {
404
405
  "successCardLabel": "Rosters added successfully",
@@ -424,7 +425,8 @@
424
425
  "downloadSample": "Download Sample File",
425
426
  "dropzone": "Drag and drop file upload area",
426
427
  "remove": "Remove selected file",
427
- "downloadErrorLog": "Download Error log"
428
+ "downloadErrorLog": "Download Error log",
429
+ "uploadNewFile": "Upload different file"
428
430
  }
429
431
  },
430
432
  "rosterImportHistory": {
@@ -51,7 +51,7 @@ export class InterestFormManagementComponent {
51
51
  this.dialogRef?.close();
52
52
  }
53
53
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterestFormManagementComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InterestFormManagementComponent, isStandalone: true, selector: "ieeesa-interest-form-management", ngImport: i0, template: "<div class=\"ieeesa-interest-form-management\">\r\n <div\r\n class=\"ieeesa-interest-form-management__header d-flex justify-content-between align-items-center\"\r\n >\r\n <h1 class=\"ieeesa-interest-form-management__title ieeesa-title-lg-24 m-0\">\r\n {{ heading }}\r\n </h1>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form-management__close\"\r\n (click)=\"onClose()\"\r\n [attr.aria-label]=\"closeAriaLabel\"\r\n >\r\n &times;\r\n </button>\r\n </div>\r\n\r\n <div class=\"ieeesa-interest-form-management__body\">\r\n <ieeesa-tabs\r\n [tabs]=\"tabs\"\r\n [selectedTabIndex]=\"0\"\r\n ></ieeesa-tabs>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-modal-dialog.ieeesa-roster-interests .mat-mdc-dialog-container{--mat-dialog-with-actions-content-padding: 0;padding:0}.ieeesa-modal-dialog.ieeesa-roster-interests .mat-mdc-dialog-container .mat-mdc-dialog-surface{border-radius:8px;overflow:hidden}.ieeesa-interest-form-management{display:flex;flex-direction:column;max-height:90vh}.ieeesa-interest-form-management__header{flex:0 0 auto;padding:16px 24px;border-bottom:1px solid #d7d6d6}.ieeesa-interest-form-management__close{background:none;border:none;font-size:24px;line-height:1;cursor:pointer;padding:0}.ieeesa-interest-form-management__body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px 24px 24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "component", type: TabsComponent, selector: "ieeesa-tabs", inputs: ["selectedTabIndex", "tabs", "isFormChanged", "confirmationModalConfig", "isViewOnly", "isMemberOfGroup", "eventId", "meetingId", "actionType", "routePaths", "apiBaseURL", "apiDomainURL", "userPermissions", "isInlineMode", "tenantFeatures"], outputs: ["selectedIndexChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InterestFormManagementComponent, isStandalone: true, selector: "ieeesa-interest-form-management", ngImport: i0, template: "<div class=\"ieeesa-interest-form-management\">\r\n <div\r\n class=\"ieeesa-interest-form-management__header d-flex justify-content-between align-items-center\"\r\n >\r\n <h1 class=\"ieeesa-interest-form-management__title ieeesa-title-lg-24 m-0\">\r\n {{ heading }}\r\n </h1>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form-management__close\"\r\n (click)=\"onClose()\"\r\n [attr.aria-label]=\"closeAriaLabel\"\r\n >\r\n &times;\r\n </button>\r\n </div>\r\n\r\n <div class=\"ieeesa-interest-form-management__body\">\r\n <ieeesa-tabs\r\n [tabs]=\"tabs\"\r\n [selectedTabIndex]=\"0\"\r\n ></ieeesa-tabs>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-modal-dialog.ieeesa-roster-interests .mat-mdc-dialog-container{--mat-dialog-with-actions-content-padding: 0;padding:0}.ieeesa-modal-dialog.ieeesa-roster-interests .mat-mdc-dialog-container .mat-mdc-dialog-surface{border-radius:8px;overflow:hidden}.ieeesa-interest-form-management{display:flex;flex-direction:column;max-height:90vh}.ieeesa-interest-form-management__header{flex:0 0 auto;padding:16px 24px;border-bottom:1px solid #d7d6d6}.ieeesa-interest-form-management__close{background:none;border:none;font-size:24px;line-height:1;cursor:pointer;padding:0}.ieeesa-interest-form-management__body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px 24px 24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "component", type: TabsComponent, selector: "ieeesa-tabs", inputs: ["selectedTabIndex", "tabs", "isFormChanged", "confirmationModalConfig", "isViewOnly", "isMemberOfGroup", "eventId", "meetingId", "actionType", "routePaths", "apiBaseURL", "apiDomainURL", "userPermissions", "isInlineMode", "tenantFeatures", "groupInterests"], outputs: ["selectedIndexChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
55
55
  }
56
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterestFormManagementComponent, decorators: [{
57
57
  type: Component,
@@ -298,7 +298,7 @@ export class OrgMultiSelectComponent {
298
298
  * @memberof OrgMultiSelectComponent
299
299
  */
300
300
  toggleOption(option) {
301
- const index = this._selectedOptions.findIndex((item) => item.id === option.id && item.name === option.name);
301
+ const index = this._selectedOptions.findIndex((item) => this.isSameOption(item, option));
302
302
  if (index >= 0) {
303
303
  this._selectedOptions = this._selectedOptions.filter((_, i) => i !== index);
304
304
  }
@@ -316,7 +316,43 @@ export class OrgMultiSelectComponent {
316
316
  * @memberof OrgMultiSelectComponent
317
317
  */
318
318
  isSelected(option) {
319
- return this._selectedOptions.some((item) => item.id === option.id && item.name === option.name);
319
+ return this._selectedOptions.some((item) => this.isSameOption(item, option));
320
+ }
321
+ /**
322
+ * Identity check shared by isSelected / toggleOption / removeOption so all
323
+ * three agree on what "the same option" means.
324
+ *
325
+ * Why not a strict id === id && name === name match: SelectOption.id is
326
+ * `number | string`, and the two sides being compared do not always carry the
327
+ * same representation of the same organization. A freshly searched API result
328
+ * can arrive with a numeric id while the already-selected value (from edit
329
+ * prefill, or a previous search) holds the string form of that same id, so a
330
+ * strict === misses them. Free-text chips are added with an empty id
331
+ * (see addTypedValue), so when the same name later comes back from the API
332
+ * with a real id there is no id to match on at all. Both cases made the
333
+ * dropdown checkbox render unchecked for an option that is in fact selected.
334
+ *
335
+ * Rule:
336
+ * - If BOTH sides have a non-empty id, match by String(id) === String(id)
337
+ * (number-vs-string safe).
338
+ * - Otherwise (either side is a free-text chip with no id) fall back to a
339
+ * trimmed, case-insensitive name match.
340
+ * @param {SelectOption} a -first option.
341
+ * @param {SelectOption} b -second option.
342
+ * @return {boolean} true when both refer to the same organization.
343
+ * @memberof OrgMultiSelectComponent
344
+ */
345
+ isSameOption(a, b) {
346
+ const aId = a?.id;
347
+ const bId = b?.id;
348
+ const aHasId = aId !== undefined && aId !== null && `${aId}` !== '';
349
+ const bHasId = bId !== undefined && bId !== null && `${bId}` !== '';
350
+ if (aHasId && bHasId) {
351
+ return `${aId}` === `${bId}`;
352
+ }
353
+ const aName = (a?.name ?? '').trim().toLowerCase();
354
+ const bName = (b?.name ?? '').trim().toLowerCase();
355
+ return aName !== '' && aName === bName;
320
356
  }
321
357
  /**
322
358
  * Removes a selected chip.
@@ -324,7 +360,7 @@ export class OrgMultiSelectComponent {
324
360
  * @memberof OrgMultiSelectComponent
325
361
  */
326
362
  removeOption(option) {
327
- this._selectedOptions = this._selectedOptions.filter((item) => !(item.id === option.id && item.name === option.name));
363
+ this._selectedOptions = this._selectedOptions.filter((item) => !this.isSameOption(item, option));
328
364
  this.emitSelection();
329
365
  }
330
366
  /**
@@ -411,7 +447,7 @@ export class OrgMultiSelectComponent {
411
447
  this.destroy$.complete();
412
448
  }
413
449
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrgMultiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
414
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrgMultiSelectComponent, isStandalone: true, selector: "ieeesa-org-multi-select", inputs: { label: "label", placeholder: "placeholder", supportMessage: "supportMessage", ariaLabel: "ariaLabel", options: "options", selectedOptions: "selectedOptions", required: "required", removeIconURL: "removeIconURL", clearAllIconURL: "clearAllIconURL" }, outputs: { search: "search", selectionChange: "selectionChange", fieldBlur: "fieldBlur", invalidFreeText: "invalidFreeText" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"ieeesa-org-multi-select\"\r\n [class.ieeesa-org-multi-select--invalid]=\"showRequiredError || errorMessage\"\r\n>\r\n <label class=\"ieeesa-org-multi-select__label ieeesa-body-sm-14\">\r\n {{ label }}\r\n </label>\r\n\r\n <div class=\"ieeesa-org-multi-select__field\">\r\n <!--\r\n Chips and the search input flow together inline (like the Material\r\n chip-grid). This keeps a single-row field appearance that grows as chips\r\n wrap, with the clear-all button pinned to the right as a suffix.\r\n -->\r\n <div class=\"ieeesa-org-multi-select__control\">\r\n <span\r\n class=\"ieeesa-org-multi-select__chip\"\r\n *ngFor=\"let option of selectedOptions; trackBy: trackByFn\"\r\n [attr.aria-label]=\"option.name\"\r\n >\r\n <span class=\"ieeesa-org-multi-select__chip-label\">\r\n {{ option.name }}\r\n </span>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-org-multi-select__chip-remove\"\r\n [attr.aria-label]=\"'Remove ' + option.name\"\r\n (click)=\"removeOption(option)\"\r\n >\r\n <svg\r\n class=\"ieeesa-org-multi-select__chip-remove-icon\"\r\n *ngIf=\"removeIconURL\"\r\n >\r\n <use [attr.xlink:href]=\"removeIconURL\"></use>\r\n </svg>\r\n <span *ngIf=\"!removeIconURL\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </span>\r\n\r\n <input\r\n #searchInput\r\n type=\"text\"\r\n class=\"ieeesa-org-multi-select__input ieeesa-title-sm-16\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isDropdownOpen\"\r\n [attr.aria-controls]=\"optionIdPrefix + 'listbox'\"\r\n [attr.aria-activedescendant]=\"\r\n isDropdownOpen && activeOptionIndex >= 0\r\n ? optionIdPrefix + activeOptionIndex\r\n : null\r\n \"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [placeholder]=\"placeholder\"\r\n [value]=\"searchText\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onFocus()\"\r\n (keydown)=\"onKeydown($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-org-multi-select__clear-all\"\r\n [matTooltip]=\"'Clear all'\"\r\n aria-label=\"Clear all\"\r\n *ngIf=\"selectedOptions.length\"\r\n (click)=\"clearAll()\"\r\n >\r\n <svg\r\n class=\"ieeesa-org-multi-select__clear-all-icon\"\r\n *ngIf=\"clearAllIconURL\"\r\n >\r\n <use [attr.xlink:href]=\"clearAllIconURL\"></use>\r\n </svg>\r\n <span *ngIf=\"!clearAllIconURL\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n\r\n <!--\r\n Custom results dropdown. Fully owned (not mat-autocomplete) so a pick never\r\n closes the panel or overwrites the typed text. mousedown is prevented so\r\n clicking a row does not blur the input before the click registers.\r\n -->\r\n <div\r\n class=\"ieeesa-org-multi-select__dropdown\"\r\n role=\"listbox\"\r\n [id]=\"optionIdPrefix + 'listbox'\"\r\n aria-multiselectable=\"true\"\r\n *ngIf=\"isDropdownOpen && options.length\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n >\r\n <div\r\n class=\"ieeesa-org-multi-select__option\"\r\n role=\"option\"\r\n *ngFor=\"let option of options; let i = index; trackBy: trackByFn\"\r\n [id]=\"optionIdPrefix + i\"\r\n [attr.aria-selected]=\"isSelected(option)\"\r\n [class.ieeesa-org-multi-select__option--selected]=\"isSelected(option)\"\r\n [class.ieeesa-org-multi-select__option--active]=\"isActiveOption(i)\"\r\n (click)=\"toggleOption(option)\"\r\n (mouseenter)=\"activeOptionIndex = i\"\r\n >\r\n <mat-checkbox\r\n color=\"primary\"\r\n [checked]=\"isSelected(option)\"\r\n (click)=\"$event.preventDefault()\"\r\n ></mat-checkbox>\r\n <span\r\n class=\"ieeesa-org-multi-select__option-label ieeesa-title-sm-16\"\r\n >\r\n {{ option.name }}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Inline free-text validation error (Enter path) -->\r\n <p\r\n class=\"ieeesa-org-multi-select__error ieeesa-body-sm-14\"\r\n *ngIf=\"errorMessage\"\r\n >\r\n {{ errorMessage }}\r\n </p>\r\n\r\n <!-- Required error (touched, nothing selected) -->\r\n <p\r\n class=\"ieeesa-org-multi-select__error ieeesa-body-sm-14\"\r\n *ngIf=\"showRequiredError && !errorMessage\"\r\n >\r\n {{ addUserRosterTexts?.message?.error?.required }}\r\n </p>\r\n\r\n <!-- Support/help text -->\r\n <p\r\n class=\"ieeesa-org-multi-select__support ieeesa-body-sm-14\"\r\n *ngIf=\"supportMessage && !errorMessage && !showRequiredError\"\r\n >\r\n {{ supportMessage }}\r\n </p>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-org-multi-select{display:block;width:100%;position:relative;font-family:Calibri Regular}.ieeesa-org-multi-select__label,.ieeesa-org-multi-select__label.ieeesa-body-sm-14{display:block;margin-bottom:4px;color:#49454f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select__field{display:flex;align-items:center;gap:8px;position:relative;background:#fff;border:1px solid #878b8f;border-radius:4px;padding:8px 12px;min-height:48px;transition:border-color .15s ease}.ieeesa-org-multi-select__field:focus-within{border:2px solid #00629b;padding:7px 11px}.ieeesa-org-multi-select__control{flex:1 1 auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}.ieeesa-org-multi-select__chip{display:inline-flex;align-items:center;max-width:100%;padding:4px 8px;border:1px solid #79747e;border-radius:.25em;background-color:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe}.ieeesa-org-multi-select__chip-label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#49454f;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__chip-remove{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;padding:0;margin-left:6px;color:#878b8f;font-size:16px;line-height:1}.ieeesa-org-multi-select__chip-remove-icon{height:18px;width:18px;fill:currentColor}.ieeesa-org-multi-select__input,.ieeesa-org-multi-select__input.ieeesa-title-sm-16{flex:1 1 120px;border:none;outline:none;background:transparent;min-width:120px;padding:4px 0;color:#1c1b1f;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__input::placeholder,.ieeesa-org-multi-select__input.ieeesa-title-sm-16::placeholder{color:#63666a;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__clear-all{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;padding:0;color:#878b8f}.ieeesa-org-multi-select__clear-all-icon{height:24px;width:24px;fill:currentColor}.ieeesa-org-multi-select__dropdown{position:absolute;left:0;right:0;top:calc(100% + 2px);z-index:1000;max-height:240px;overflow-y:auto;background:#fff;border:1px solid #878b8f;border-radius:4px;box-shadow:0 4px 12px #0000001f}.ieeesa-org-multi-select__option{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;font-family:Calibri Regular}.ieeesa-org-multi-select__option:hover,.ieeesa-org-multi-select__option--active{background:#fff}.ieeesa-org-multi-select__option--selected .ieeesa-org-multi-select__option-label{color:#00629b}.ieeesa-org-multi-select__option-label,.ieeesa-org-multi-select__option-label.ieeesa-title-sm-16{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#000;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__error,.ieeesa-org-multi-select__error.ieeesa-body-sm-14{margin:4px 0 0;color:#ba0c2f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select__support,.ieeesa-org-multi-select__support.ieeesa-body-sm-14{margin:4px 0 0;color:#49454f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select--invalid .ieeesa-org-multi-select__label{color:#ba0c2f}.ieeesa-org-multi-select--invalid .ieeesa-org-multi-select__field{border:2px solid #ba0c2f;padding:7px 11px}.ieeesa-org-multi-select .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#00629b;border-color:#00629b}@media (max-width: 767px){.ieeesa-org-multi-select__chip-label{max-width:120px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], encapsulation: i0.ViewEncapsulation.None }); }
450
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrgMultiSelectComponent, isStandalone: true, selector: "ieeesa-org-multi-select", inputs: { label: "label", placeholder: "placeholder", supportMessage: "supportMessage", ariaLabel: "ariaLabel", options: "options", selectedOptions: "selectedOptions", required: "required", removeIconURL: "removeIconURL", clearAllIconURL: "clearAllIconURL" }, outputs: { search: "search", selectionChange: "selectionChange", fieldBlur: "fieldBlur", invalidFreeText: "invalidFreeText" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"ieeesa-org-multi-select\"\r\n [class.ieeesa-org-multi-select--invalid]=\"showRequiredError || errorMessage\"\r\n>\r\n <label class=\"ieeesa-org-multi-select__label ieeesa-body-sm-14\">\r\n {{ label }}\r\n </label>\r\n\r\n <div class=\"ieeesa-org-multi-select__field\">\r\n <!--\r\n Chips and the search input flow together inline (like the Material\r\n chip-grid). This keeps a single-row field appearance that grows as chips\r\n wrap, with the clear-all button pinned to the right as a suffix.\r\n -->\r\n <div class=\"ieeesa-org-multi-select__control\">\r\n <span\r\n class=\"ieeesa-org-multi-select__chip\"\r\n *ngFor=\"let option of selectedOptions; trackBy: trackByFn\"\r\n [attr.aria-label]=\"option.name\"\r\n >\r\n <span class=\"ieeesa-org-multi-select__chip-label\">\r\n {{ option.name }}\r\n </span>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-org-multi-select__chip-remove\"\r\n [attr.aria-label]=\"'Remove ' + option.name\"\r\n (click)=\"removeOption(option)\"\r\n >\r\n <svg\r\n class=\"ieeesa-org-multi-select__chip-remove-icon\"\r\n *ngIf=\"removeIconURL\"\r\n >\r\n <use [attr.xlink:href]=\"removeIconURL\"></use>\r\n </svg>\r\n <span *ngIf=\"!removeIconURL\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </span>\r\n\r\n <input\r\n #searchInput\r\n type=\"text\"\r\n class=\"ieeesa-org-multi-select__input ieeesa-title-sm-16\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isDropdownOpen\"\r\n [attr.aria-controls]=\"optionIdPrefix + 'listbox'\"\r\n [attr.aria-activedescendant]=\"\r\n isDropdownOpen && activeOptionIndex >= 0\r\n ? optionIdPrefix + activeOptionIndex\r\n : null\r\n \"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [placeholder]=\"placeholder\"\r\n [value]=\"searchText\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onFocus()\"\r\n (keydown)=\"onKeydown($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-org-multi-select__clear-all\"\r\n [matTooltip]=\"'Clear all'\"\r\n aria-label=\"Clear all\"\r\n *ngIf=\"selectedOptions.length\"\r\n (click)=\"clearAll()\"\r\n >\r\n <svg\r\n class=\"ieeesa-org-multi-select__clear-all-icon\"\r\n *ngIf=\"clearAllIconURL\"\r\n >\r\n <use [attr.xlink:href]=\"clearAllIconURL\"></use>\r\n </svg>\r\n <span *ngIf=\"!clearAllIconURL\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n\r\n <!--\r\n Custom results dropdown. Fully owned (not mat-autocomplete) so a pick never\r\n closes the panel or overwrites the typed text. mousedown is prevented so\r\n clicking a row does not blur the input before the click registers.\r\n -->\r\n <div\r\n class=\"ieeesa-org-multi-select__dropdown\"\r\n role=\"listbox\"\r\n [id]=\"optionIdPrefix + 'listbox'\"\r\n aria-multiselectable=\"true\"\r\n *ngIf=\"isDropdownOpen && options.length\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n >\r\n <div\r\n class=\"ieeesa-org-multi-select__option\"\r\n role=\"option\"\r\n *ngFor=\"let option of options; let i = index; trackBy: trackByFn\"\r\n [id]=\"optionIdPrefix + i\"\r\n [attr.aria-selected]=\"isSelected(option)\"\r\n [class.ieeesa-org-multi-select__option--selected]=\"isSelected(option)\"\r\n [class.ieeesa-org-multi-select__option--active]=\"isActiveOption(i)\"\r\n (click)=\"toggleOption(option)\"\r\n (mouseenter)=\"activeOptionIndex = i\"\r\n >\r\n <mat-checkbox\r\n class=\"ieeesa-org-multi-select__checkbox\"\r\n color=\"primary\"\r\n [checked]=\"isSelected(option)\"\r\n [disableRipple]=\"true\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n ></mat-checkbox>\r\n <span\r\n class=\"ieeesa-org-multi-select__option-label ieeesa-title-sm-16\"\r\n >\r\n {{ option.name }}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Inline free-text validation error (Enter path) -->\r\n <p\r\n class=\"ieeesa-org-multi-select__error ieeesa-body-sm-14\"\r\n *ngIf=\"errorMessage\"\r\n >\r\n {{ errorMessage }}\r\n </p>\r\n\r\n <!-- Required error (touched, nothing selected) -->\r\n <p\r\n class=\"ieeesa-org-multi-select__error ieeesa-body-sm-14\"\r\n *ngIf=\"showRequiredError && !errorMessage\"\r\n >\r\n {{ addUserRosterTexts?.message?.error?.required }}\r\n </p>\r\n\r\n <!-- Support/help text -->\r\n <p\r\n class=\"ieeesa-org-multi-select__support ieeesa-body-sm-14\"\r\n *ngIf=\"supportMessage && !errorMessage && !showRequiredError\"\r\n >\r\n {{ supportMessage }}\r\n </p>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-org-multi-select{display:block;width:100%;position:relative;font-family:Calibri Regular}.ieeesa-org-multi-select__label,.ieeesa-org-multi-select__label.ieeesa-body-sm-14{display:block;margin-bottom:4px;color:#49454f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select__field{display:flex;align-items:center;gap:8px;position:relative;background:#fff;border:1px solid #878b8f;border-radius:4px;padding:8px 12px;min-height:48px;transition:border-color .15s ease}.ieeesa-org-multi-select__field:focus-within{border:2px solid #00629b;padding:7px 11px}.ieeesa-org-multi-select__control{flex:1 1 auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}.ieeesa-org-multi-select__chip{display:inline-flex;align-items:center;max-width:100%;padding:4px 8px;border:1px solid #79747e;border-radius:.25em;background-color:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe}.ieeesa-org-multi-select__chip-label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#49454f;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__chip-remove{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;padding:0;margin-left:6px;color:#878b8f;font-size:16px;line-height:1}.ieeesa-org-multi-select__chip-remove-icon{height:18px;width:18px;fill:currentColor}.ieeesa-org-multi-select__input,.ieeesa-org-multi-select__input.ieeesa-title-sm-16{flex:1 1 120px;border:none;outline:none;background:transparent;min-width:120px;padding:4px 0;color:#1c1b1f;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__input::placeholder,.ieeesa-org-multi-select__input.ieeesa-title-sm-16::placeholder{color:#63666a;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__clear-all{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;padding:0;color:#878b8f}.ieeesa-org-multi-select__clear-all-icon{height:24px;width:24px;fill:currentColor}.ieeesa-org-multi-select__dropdown{position:absolute;left:0;right:0;top:calc(100% + 2px);z-index:1000;max-height:240px;overflow-y:auto;background:#fff;border:1px solid #878b8f;border-radius:4px;box-shadow:0 4px 12px #0000001f}.ieeesa-org-multi-select__checkbox{pointer-events:none}.ieeesa-org-multi-select__option{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;font-family:Calibri Regular}.ieeesa-org-multi-select__option:hover,.ieeesa-org-multi-select__option--active{background:#fff}.ieeesa-org-multi-select__option--selected .ieeesa-org-multi-select__option-label{color:#00629b}.ieeesa-org-multi-select__option-label,.ieeesa-org-multi-select__option-label.ieeesa-title-sm-16{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#000;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__error,.ieeesa-org-multi-select__error.ieeesa-body-sm-14{margin:4px 0 0;color:#ba0c2f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select__support,.ieeesa-org-multi-select__support.ieeesa-body-sm-14{margin:4px 0 0;color:#49454f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select--invalid .ieeesa-org-multi-select__label{color:#ba0c2f}.ieeesa-org-multi-select--invalid .ieeesa-org-multi-select__field{border:2px solid #ba0c2f;padding:7px 11px}.ieeesa-org-multi-select .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#00629b;border-color:#00629b}@media (max-width: 767px){.ieeesa-org-multi-select__chip-label{max-width:120px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], encapsulation: i0.ViewEncapsulation.None }); }
415
451
  }
416
452
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrgMultiSelectComponent, decorators: [{
417
453
  type: Component,
@@ -421,7 +457,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
421
457
  MatCheckboxModule,
422
458
  MatIconModule,
423
459
  MatTooltipModule,
424
- ], encapsulation: ViewEncapsulation.None, template: "<div\r\n class=\"ieeesa-org-multi-select\"\r\n [class.ieeesa-org-multi-select--invalid]=\"showRequiredError || errorMessage\"\r\n>\r\n <label class=\"ieeesa-org-multi-select__label ieeesa-body-sm-14\">\r\n {{ label }}\r\n </label>\r\n\r\n <div class=\"ieeesa-org-multi-select__field\">\r\n <!--\r\n Chips and the search input flow together inline (like the Material\r\n chip-grid). This keeps a single-row field appearance that grows as chips\r\n wrap, with the clear-all button pinned to the right as a suffix.\r\n -->\r\n <div class=\"ieeesa-org-multi-select__control\">\r\n <span\r\n class=\"ieeesa-org-multi-select__chip\"\r\n *ngFor=\"let option of selectedOptions; trackBy: trackByFn\"\r\n [attr.aria-label]=\"option.name\"\r\n >\r\n <span class=\"ieeesa-org-multi-select__chip-label\">\r\n {{ option.name }}\r\n </span>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-org-multi-select__chip-remove\"\r\n [attr.aria-label]=\"'Remove ' + option.name\"\r\n (click)=\"removeOption(option)\"\r\n >\r\n <svg\r\n class=\"ieeesa-org-multi-select__chip-remove-icon\"\r\n *ngIf=\"removeIconURL\"\r\n >\r\n <use [attr.xlink:href]=\"removeIconURL\"></use>\r\n </svg>\r\n <span *ngIf=\"!removeIconURL\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </span>\r\n\r\n <input\r\n #searchInput\r\n type=\"text\"\r\n class=\"ieeesa-org-multi-select__input ieeesa-title-sm-16\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isDropdownOpen\"\r\n [attr.aria-controls]=\"optionIdPrefix + 'listbox'\"\r\n [attr.aria-activedescendant]=\"\r\n isDropdownOpen && activeOptionIndex >= 0\r\n ? optionIdPrefix + activeOptionIndex\r\n : null\r\n \"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [placeholder]=\"placeholder\"\r\n [value]=\"searchText\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onFocus()\"\r\n (keydown)=\"onKeydown($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-org-multi-select__clear-all\"\r\n [matTooltip]=\"'Clear all'\"\r\n aria-label=\"Clear all\"\r\n *ngIf=\"selectedOptions.length\"\r\n (click)=\"clearAll()\"\r\n >\r\n <svg\r\n class=\"ieeesa-org-multi-select__clear-all-icon\"\r\n *ngIf=\"clearAllIconURL\"\r\n >\r\n <use [attr.xlink:href]=\"clearAllIconURL\"></use>\r\n </svg>\r\n <span *ngIf=\"!clearAllIconURL\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n\r\n <!--\r\n Custom results dropdown. Fully owned (not mat-autocomplete) so a pick never\r\n closes the panel or overwrites the typed text. mousedown is prevented so\r\n clicking a row does not blur the input before the click registers.\r\n -->\r\n <div\r\n class=\"ieeesa-org-multi-select__dropdown\"\r\n role=\"listbox\"\r\n [id]=\"optionIdPrefix + 'listbox'\"\r\n aria-multiselectable=\"true\"\r\n *ngIf=\"isDropdownOpen && options.length\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n >\r\n <div\r\n class=\"ieeesa-org-multi-select__option\"\r\n role=\"option\"\r\n *ngFor=\"let option of options; let i = index; trackBy: trackByFn\"\r\n [id]=\"optionIdPrefix + i\"\r\n [attr.aria-selected]=\"isSelected(option)\"\r\n [class.ieeesa-org-multi-select__option--selected]=\"isSelected(option)\"\r\n [class.ieeesa-org-multi-select__option--active]=\"isActiveOption(i)\"\r\n (click)=\"toggleOption(option)\"\r\n (mouseenter)=\"activeOptionIndex = i\"\r\n >\r\n <mat-checkbox\r\n color=\"primary\"\r\n [checked]=\"isSelected(option)\"\r\n (click)=\"$event.preventDefault()\"\r\n ></mat-checkbox>\r\n <span\r\n class=\"ieeesa-org-multi-select__option-label ieeesa-title-sm-16\"\r\n >\r\n {{ option.name }}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Inline free-text validation error (Enter path) -->\r\n <p\r\n class=\"ieeesa-org-multi-select__error ieeesa-body-sm-14\"\r\n *ngIf=\"errorMessage\"\r\n >\r\n {{ errorMessage }}\r\n </p>\r\n\r\n <!-- Required error (touched, nothing selected) -->\r\n <p\r\n class=\"ieeesa-org-multi-select__error ieeesa-body-sm-14\"\r\n *ngIf=\"showRequiredError && !errorMessage\"\r\n >\r\n {{ addUserRosterTexts?.message?.error?.required }}\r\n </p>\r\n\r\n <!-- Support/help text -->\r\n <p\r\n class=\"ieeesa-org-multi-select__support ieeesa-body-sm-14\"\r\n *ngIf=\"supportMessage && !errorMessage && !showRequiredError\"\r\n >\r\n {{ supportMessage }}\r\n </p>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-org-multi-select{display:block;width:100%;position:relative;font-family:Calibri Regular}.ieeesa-org-multi-select__label,.ieeesa-org-multi-select__label.ieeesa-body-sm-14{display:block;margin-bottom:4px;color:#49454f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select__field{display:flex;align-items:center;gap:8px;position:relative;background:#fff;border:1px solid #878b8f;border-radius:4px;padding:8px 12px;min-height:48px;transition:border-color .15s ease}.ieeesa-org-multi-select__field:focus-within{border:2px solid #00629b;padding:7px 11px}.ieeesa-org-multi-select__control{flex:1 1 auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}.ieeesa-org-multi-select__chip{display:inline-flex;align-items:center;max-width:100%;padding:4px 8px;border:1px solid #79747e;border-radius:.25em;background-color:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe}.ieeesa-org-multi-select__chip-label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#49454f;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__chip-remove{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;padding:0;margin-left:6px;color:#878b8f;font-size:16px;line-height:1}.ieeesa-org-multi-select__chip-remove-icon{height:18px;width:18px;fill:currentColor}.ieeesa-org-multi-select__input,.ieeesa-org-multi-select__input.ieeesa-title-sm-16{flex:1 1 120px;border:none;outline:none;background:transparent;min-width:120px;padding:4px 0;color:#1c1b1f;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__input::placeholder,.ieeesa-org-multi-select__input.ieeesa-title-sm-16::placeholder{color:#63666a;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__clear-all{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;padding:0;color:#878b8f}.ieeesa-org-multi-select__clear-all-icon{height:24px;width:24px;fill:currentColor}.ieeesa-org-multi-select__dropdown{position:absolute;left:0;right:0;top:calc(100% + 2px);z-index:1000;max-height:240px;overflow-y:auto;background:#fff;border:1px solid #878b8f;border-radius:4px;box-shadow:0 4px 12px #0000001f}.ieeesa-org-multi-select__option{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;font-family:Calibri Regular}.ieeesa-org-multi-select__option:hover,.ieeesa-org-multi-select__option--active{background:#fff}.ieeesa-org-multi-select__option--selected .ieeesa-org-multi-select__option-label{color:#00629b}.ieeesa-org-multi-select__option-label,.ieeesa-org-multi-select__option-label.ieeesa-title-sm-16{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#000;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__error,.ieeesa-org-multi-select__error.ieeesa-body-sm-14{margin:4px 0 0;color:#ba0c2f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select__support,.ieeesa-org-multi-select__support.ieeesa-body-sm-14{margin:4px 0 0;color:#49454f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select--invalid .ieeesa-org-multi-select__label{color:#ba0c2f}.ieeesa-org-multi-select--invalid .ieeesa-org-multi-select__field{border:2px solid #ba0c2f;padding:7px 11px}.ieeesa-org-multi-select .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#00629b;border-color:#00629b}@media (max-width: 767px){.ieeesa-org-multi-select__chip-label{max-width:120px}}\n"] }]
460
+ ], encapsulation: ViewEncapsulation.None, template: "<div\r\n class=\"ieeesa-org-multi-select\"\r\n [class.ieeesa-org-multi-select--invalid]=\"showRequiredError || errorMessage\"\r\n>\r\n <label class=\"ieeesa-org-multi-select__label ieeesa-body-sm-14\">\r\n {{ label }}\r\n </label>\r\n\r\n <div class=\"ieeesa-org-multi-select__field\">\r\n <!--\r\n Chips and the search input flow together inline (like the Material\r\n chip-grid). This keeps a single-row field appearance that grows as chips\r\n wrap, with the clear-all button pinned to the right as a suffix.\r\n -->\r\n <div class=\"ieeesa-org-multi-select__control\">\r\n <span\r\n class=\"ieeesa-org-multi-select__chip\"\r\n *ngFor=\"let option of selectedOptions; trackBy: trackByFn\"\r\n [attr.aria-label]=\"option.name\"\r\n >\r\n <span class=\"ieeesa-org-multi-select__chip-label\">\r\n {{ option.name }}\r\n </span>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-org-multi-select__chip-remove\"\r\n [attr.aria-label]=\"'Remove ' + option.name\"\r\n (click)=\"removeOption(option)\"\r\n >\r\n <svg\r\n class=\"ieeesa-org-multi-select__chip-remove-icon\"\r\n *ngIf=\"removeIconURL\"\r\n >\r\n <use [attr.xlink:href]=\"removeIconURL\"></use>\r\n </svg>\r\n <span *ngIf=\"!removeIconURL\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </span>\r\n\r\n <input\r\n #searchInput\r\n type=\"text\"\r\n class=\"ieeesa-org-multi-select__input ieeesa-title-sm-16\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isDropdownOpen\"\r\n [attr.aria-controls]=\"optionIdPrefix + 'listbox'\"\r\n [attr.aria-activedescendant]=\"\r\n isDropdownOpen && activeOptionIndex >= 0\r\n ? optionIdPrefix + activeOptionIndex\r\n : null\r\n \"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [placeholder]=\"placeholder\"\r\n [value]=\"searchText\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onFocus()\"\r\n (keydown)=\"onKeydown($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-org-multi-select__clear-all\"\r\n [matTooltip]=\"'Clear all'\"\r\n aria-label=\"Clear all\"\r\n *ngIf=\"selectedOptions.length\"\r\n (click)=\"clearAll()\"\r\n >\r\n <svg\r\n class=\"ieeesa-org-multi-select__clear-all-icon\"\r\n *ngIf=\"clearAllIconURL\"\r\n >\r\n <use [attr.xlink:href]=\"clearAllIconURL\"></use>\r\n </svg>\r\n <span *ngIf=\"!clearAllIconURL\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n\r\n <!--\r\n Custom results dropdown. Fully owned (not mat-autocomplete) so a pick never\r\n closes the panel or overwrites the typed text. mousedown is prevented so\r\n clicking a row does not blur the input before the click registers.\r\n -->\r\n <div\r\n class=\"ieeesa-org-multi-select__dropdown\"\r\n role=\"listbox\"\r\n [id]=\"optionIdPrefix + 'listbox'\"\r\n aria-multiselectable=\"true\"\r\n *ngIf=\"isDropdownOpen && options.length\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n >\r\n <div\r\n class=\"ieeesa-org-multi-select__option\"\r\n role=\"option\"\r\n *ngFor=\"let option of options; let i = index; trackBy: trackByFn\"\r\n [id]=\"optionIdPrefix + i\"\r\n [attr.aria-selected]=\"isSelected(option)\"\r\n [class.ieeesa-org-multi-select__option--selected]=\"isSelected(option)\"\r\n [class.ieeesa-org-multi-select__option--active]=\"isActiveOption(i)\"\r\n (click)=\"toggleOption(option)\"\r\n (mouseenter)=\"activeOptionIndex = i\"\r\n >\r\n <mat-checkbox\r\n class=\"ieeesa-org-multi-select__checkbox\"\r\n color=\"primary\"\r\n [checked]=\"isSelected(option)\"\r\n [disableRipple]=\"true\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n ></mat-checkbox>\r\n <span\r\n class=\"ieeesa-org-multi-select__option-label ieeesa-title-sm-16\"\r\n >\r\n {{ option.name }}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Inline free-text validation error (Enter path) -->\r\n <p\r\n class=\"ieeesa-org-multi-select__error ieeesa-body-sm-14\"\r\n *ngIf=\"errorMessage\"\r\n >\r\n {{ errorMessage }}\r\n </p>\r\n\r\n <!-- Required error (touched, nothing selected) -->\r\n <p\r\n class=\"ieeesa-org-multi-select__error ieeesa-body-sm-14\"\r\n *ngIf=\"showRequiredError && !errorMessage\"\r\n >\r\n {{ addUserRosterTexts?.message?.error?.required }}\r\n </p>\r\n\r\n <!-- Support/help text -->\r\n <p\r\n class=\"ieeesa-org-multi-select__support ieeesa-body-sm-14\"\r\n *ngIf=\"supportMessage && !errorMessage && !showRequiredError\"\r\n >\r\n {{ supportMessage }}\r\n </p>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-org-multi-select{display:block;width:100%;position:relative;font-family:Calibri Regular}.ieeesa-org-multi-select__label,.ieeesa-org-multi-select__label.ieeesa-body-sm-14{display:block;margin-bottom:4px;color:#49454f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select__field{display:flex;align-items:center;gap:8px;position:relative;background:#fff;border:1px solid #878b8f;border-radius:4px;padding:8px 12px;min-height:48px;transition:border-color .15s ease}.ieeesa-org-multi-select__field:focus-within{border:2px solid #00629b;padding:7px 11px}.ieeesa-org-multi-select__control{flex:1 1 auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}.ieeesa-org-multi-select__chip{display:inline-flex;align-items:center;max-width:100%;padding:4px 8px;border:1px solid #79747e;border-radius:.25em;background-color:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe}.ieeesa-org-multi-select__chip-label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#49454f;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__chip-remove{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;padding:0;margin-left:6px;color:#878b8f;font-size:16px;line-height:1}.ieeesa-org-multi-select__chip-remove-icon{height:18px;width:18px;fill:currentColor}.ieeesa-org-multi-select__input,.ieeesa-org-multi-select__input.ieeesa-title-sm-16{flex:1 1 120px;border:none;outline:none;background:transparent;min-width:120px;padding:4px 0;color:#1c1b1f;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__input::placeholder,.ieeesa-org-multi-select__input.ieeesa-title-sm-16::placeholder{color:#63666a;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__clear-all{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;padding:0;color:#878b8f}.ieeesa-org-multi-select__clear-all-icon{height:24px;width:24px;fill:currentColor}.ieeesa-org-multi-select__dropdown{position:absolute;left:0;right:0;top:calc(100% + 2px);z-index:1000;max-height:240px;overflow-y:auto;background:#fff;border:1px solid #878b8f;border-radius:4px;box-shadow:0 4px 12px #0000001f}.ieeesa-org-multi-select__checkbox{pointer-events:none}.ieeesa-org-multi-select__option{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;font-family:Calibri Regular}.ieeesa-org-multi-select__option:hover,.ieeesa-org-multi-select__option--active{background:#fff}.ieeesa-org-multi-select__option--selected .ieeesa-org-multi-select__option-label{color:#00629b}.ieeesa-org-multi-select__option-label,.ieeesa-org-multi-select__option-label.ieeesa-title-sm-16{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#000;font-family:Calibri Regular;font-size:1rem}.ieeesa-org-multi-select__error,.ieeesa-org-multi-select__error.ieeesa-body-sm-14{margin:4px 0 0;color:#ba0c2f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select__support,.ieeesa-org-multi-select__support.ieeesa-body-sm-14{margin:4px 0 0;color:#49454f;font-family:Calibri Regular;font-size:.75rem}.ieeesa-org-multi-select--invalid .ieeesa-org-multi-select__label{color:#ba0c2f}.ieeesa-org-multi-select--invalid .ieeesa-org-multi-select__field{border:2px solid #ba0c2f;padding:7px 11px}.ieeesa-org-multi-select .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#00629b;border-color:#00629b}@media (max-width: 767px){.ieeesa-org-multi-select__chip-label{max-width:120px}}\n"] }]
425
461
  }], propDecorators: { label: [{
426
462
  type: Input
427
463
  }], placeholder: [{
@@ -452,4 +488,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
452
488
  type: ViewChild,
453
489
  args: ['searchInput']
454
490
  }] } });
455
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLW11bHRpLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL29yZy1tdWx0aS1zZWxlY3Qvb3JnLW11bHRpLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL29yZy1tdWx0aS1zZWxlY3Qvb3JnLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxLQUFLLFdBQVcsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFlSCxNQUFNLE9BQU8sdUJBQXVCO0lBZHBD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ekZJLFlBQVksK1BBQ1osZUFBZSw4QkFDZixpQkFBaUIsZ0xBQ2pCLGFBQWEsOEJBQ2IsZ0JBQWdCOzs0RkFNUCx1QkFBdUI7a0JBZG5DLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTs4QkFJNUIsS0FBSztzQkFBYixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdPLE9BQU87c0JBQW5CLEtBQUs7Z0JBZU8sZUFBZTtzQkFBM0IsS0FBSztnQkFTRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFJSSxNQUFNO3NCQUFmLE1BQU07Z0JBR0csZUFBZTtzQkFBeEIsTUFBTTtnQkFHRyxTQUFTO3NCQUFsQixNQUFNO2dCQVVHLGVBQWU7c0JBQXhCLE1BQU07Z0JBS21CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ09NTUEsXHJcbiAgRE9XTl9BUlJPVyxcclxuICBFTlRFUixcclxuICBFU0NBUEUsXHJcbiAgVVBfQVJST1csXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zIH0gZnJvbSAnLi4vLi4vYXNzZXRzL2Zvcm0tdmFsaWRhdGlvbnMnO1xyXG5cclxuLyoqXHJcbiAqIEEgc2VsZi1jb250YWluZWQgbXVsdGktc2VsZWN0IG9yZ2FuaXphdGlvbiBmaWVsZCB1c2VkIGluc2lkZSB0aGUgQWRkL0VkaXRcclxuICogcm9zdGVyIHBvcHVwcy5cclxuICpcclxuICogSXQgaW50ZW50aW9uYWxseSBkb2VzIE5PVCByZXVzZSB0aGUgc2hhcmVkIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAqICh3aGljaCBpcyBidWlsdCBvbiBtYXQtYXV0b2NvbXBsZXRlKS4gTWF0ZXJpYWwncyBhdXRvY29tcGxldGUgY2xvc2VzIGl0cyBwYW5lbFxyXG4gKiBhbmQgb3ZlcndyaXRlcyB0aGUgaW5wdXQgb24gZXZlcnkgb3B0aW9uIHBpY2ssIHdoaWNoIG1hZGUgbXVsdGktc2VsZWN0aW9uXHJcbiAqIGZlZWwgc2luZ2xlLXNlbGVjdCBhbmQgY2xlYXJlZCB0aGUgdXNlcidzIHR5cGVkIHRleHQuIFRoaXMgY29tcG9uZW50IHVzZXMgYVxyXG4gKiBmdWxseS1vd25lZCBjdXN0b20gZHJvcGRvd24gKDxkaXY+ICsgY2hlY2tib3hlcykgc286XHJcbiAqICAtIHRoZSBwYW5lbCBzdGF5cyBvcGVuIHdoaWxlIHRoZSB1c2VyIHRpY2tzIHNldmVyYWwgcmVzdWx0cyxcclxuICogIC0gdGhlIHR5cGVkIHNlYXJjaCB0ZXh0IGlzIG5ldmVyIG92ZXJ3cml0dGVuIGJ5IGEgcGljayxcclxuICogIC0gcHJlc3NpbmcgRW50ZXIgYWRkcyB0aGUgdHlwZWQgdmFsdWUgYXMgYSBmcmVlLXRleHQgY2hpcCxcclxuICogIC0gY2xpY2tpbmcgb3V0c2lkZSBjbGVhcnMgYW55IGxlZnRvdmVyIHR5cGVkIHRleHQgKG9sZCBiZWhhdmlvciksXHJcbiAqICAtIHNlbGVjdGVkIHZhbHVlcyByZW5kZXIgYXMgcmVtb3ZhYmxlIGNoaXBzIChvbGQgYmVoYXZpb3IpLlxyXG4gKlxyXG4gKiBUaGUgcGFyZW50IHN1cHBsaWVzIHNlYXJjaCByZXN1bHRzIHZpYSB7QGxpbmsgb3B0aW9uc30gYW5kIHJlYWN0cyB0b1xyXG4gKiB7QGxpbmsgc2VhcmNofSAoZGVib3VuY2VkIHR5cGVkIHRlcm0pIGFuZCB7QGxpbmsgc2VsZWN0aW9uQ2hhbmdlfS5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3QnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9vcmctbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9vcmctbXVsdGktc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKiBGaWVsZCBsYWJlbCAoZS5nLiBcIlJlcHJlc2VudGluZyBPcmdhbml6YXRpb24gKlwiKS4gKi9cclxuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xyXG5cclxuICAvKiogUGxhY2Vob2xkZXIgZm9yIHRoZSBpbnB1dC4gKi9cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG5cclxuICAvKiogU3VwcG9ydC9oZWxwIHRleHQgc2hvd24gYmVsb3cgdGhlIGZpZWxkLiAqL1xyXG4gIEBJbnB1dCgpIHN1cHBvcnRNZXNzYWdlID0gJyc7XHJcblxyXG4gIC8qKiBhcmlhLWxhYmVsIGZvciB0aGUgaW5wdXQuICovXHJcbiAgQElucHV0KCkgYXJpYUxhYmVsID0gJyc7XHJcblxyXG4gIC8qKiBTZWFyY2ggcmVzdWx0cyBzdXBwbGllZCBieSB0aGUgcGFyZW50IChyZXBvcHVsYXRlZCBvbiBlYWNoIHNlYXJjaCkuICovXHJcbiAgQElucHV0KCkgc2V0IG9wdGlvbnModmFsdWU6IFNlbGVjdE9wdGlvbltdKSB7XHJcbiAgICB0aGlzLl9vcHRpb25zID0gdmFsdWUgPz8gW107XHJcbiAgICAvLyBSZXNldCBrZXlib2FyZCBoaWdobGlnaHQgd2hlbmV2ZXIgdGhlIHJlc3VsdCBzZXQgY2hhbmdlcy5cclxuICAgIHRoaXMuYWN0aXZlT3B0aW9uSW5kZXggPSAtMTtcclxuICAgIC8vIE9wZW4gdGhlIGRyb3Bkb3duIGFzIHNvb24gYXMgZnJlc2ggcmVzdWx0cyBhcnJpdmUgd2hpbGUgdGhlIHVzZXIgaXMgc3RpbGxcclxuICAgIC8vIHR5cGluZy9zZWFyY2hpbmcgKGhhcyBub24tZW1wdHkgdGV4dCkuIENsb3NlcyB3aGVuIHJlc3VsdHMgYXJlIGVtcHRpZWQuXHJcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID1cclxuICAgICAgdGhpcy5fb3B0aW9ucy5sZW5ndGggPiAwICYmIHRoaXMuc2VhcmNoVGV4dC50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcbiAgZ2V0IG9wdGlvbnMoKTogU2VsZWN0T3B0aW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29wdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcblxyXG4gIC8qKiBQcmUtc2VsZWN0ZWQgb3B0aW9ucyAoZWRpdCBwcmVmaWxsKS4gUmVuZGVyZWQgYXMgY2hpcHMuICovXHJcbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkT3B0aW9ucyh2YWx1ZTogU2VsZWN0T3B0aW9uW10pIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkT3B0aW9ucyA9IHZhbHVlID8/IFtdO1xyXG4gIH1cclxuICBnZXQgc2VsZWN0ZWRPcHRpb25zKCk6IFNlbGVjdE9wdGlvbltdIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZE9wdGlvbnM7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NlbGVjdGVkT3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuXHJcbiAgLyoqIE1hcmtzIHRoZSBmaWVsZCByZXF1aXJlZCAoZHJpdmVzIHRoZSByZXF1aXJlZCBtZXNzYWdlICsgZXJyb3IgYm9yZGVyKS4gKi9cclxuICBASW5wdXQoKSByZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIEljb24gVVJMcyAoc2FtZSBzcHJpdGUgcmVmcyB0aGUgc2hhcmVkIG11bHRpLXNlbGVjdCBmaWVsZCB1c2VkKS4gRGVmYXVsdGVkXHJcbiAgICogc28gdGhlIHBvcHVwcyBkb24ndCBuZWVkIHRvIHBhc3MgdGhlbTsgb3ZlcnJpZGFibGUgdmlhIGlucHV0IGlmIG5lZWRlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSByZW1vdmVJY29uVVJMID0gJ2Fzc2V0cy9pbWFnZXMvc3ByaXRlcy9zcHJpdGVzLnN2ZyNpY29uLXRyYWlsaW5nJztcclxuICBASW5wdXQoKSBjbGVhckFsbEljb25VUkwgPVxyXG4gICAgJ2Fzc2V0cy9pbWFnZXMvc3ByaXRlcy9zcHJpdGVzLnN2ZyNpY29uLWNsZWFyLWFsbCc7XHJcblxyXG4gIC8qKiBFbWl0cyB0aGUgdHJpbW1lZCB0eXBlZCB0ZXJtIChkZWJvdW5jZWQpIHNvIHRoZSBwYXJlbnQgY2FuIGNhbGwgdGhlIEFQSS4gKi9cclxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBFbWl0cyB0aGUgY3VycmVudCBzZWxlY3Rpb24gYXJyYXkgd2hlbmV2ZXIgaXQgY2hhbmdlcy4gKi9cclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RPcHRpb25bXT4oKTtcclxuXHJcbiAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZmllbGQgaXMgYmx1cnJlZCAocGFyZW50IGNhbiByZS1ldmFsdWF0ZSB2YWxpZGF0aW9uKS4gKi9cclxuICBAT3V0cHV0KCkgZmllbGRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0cnVlIHdoZW4gdGhlIGlucHV0IGhvbGRzIGFuIHVuY29tbWl0dGVkIGZyZWUtdGV4dCB0b2tlbiB0aGF0IGZhaWxzXHJcbiAgICogdmFsaWRhdGlvbiAodG9vIHNob3J0IC8gdG9vIGxvbmcgLyBpbnZhbGlkIHBhdHRlcm4pLCBhbmQgZmFsc2Ugd2hlbiB0aGVcclxuICAgKiBpbnB1dCBpcyBlbXB0eSBvciB0aGUgdG9rZW4gaXMgdmFsaWQuIFRoZSBwYXJlbnQgdXNlcyB0aGlzIHRvIGtlZXAgdGhlIFNhdmVcclxuICAgKiBidXR0b24gZGlzYWJsZWQgd2hpbGUgYW4gaW52YWxpZCB0b2tlbiByZW1haW5zIOKAlCBvdGhlcndpc2UgYSBwcmV2aW91c2x5XHJcbiAgICogYWRkZWQgdmFsaWQgY2hpcCB3b3VsZCBrZWVwIHRoZSBwYXJlbnQgY29udHJvbCB2YWxpZCBhbmQgbGV0IHRoZSBmb3JtIHN1Ym1pdFxyXG4gICAqIHdpdGggYW4gaW52YWxpZCB0b2tlbiBzdGlsbCBpbiB0aGUgaW5wdXQuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGludmFsaWRGcmVlVGV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLyoqIFRyYWNrcyB0aGUgbGFzdCBlbWl0dGVkIGludmFsaWQtdG9rZW4gc3RhdGUgdG8gYXZvaWQgZHVwbGljYXRlIGVtaXRzLiAqL1xyXG4gIHByaXZhdGUgaGFzSW52YWxpZEZyZWVUZXh0ID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dHM7XHJcbiAgYWRkVXNlclJvc3RlclRleHRzID0gdGhpcy5jb25zdGFudHM/LmFkZFVzZXJSb3N0ZXI7XHJcblxyXG4gIC8qKiBXaGV0aGVyIHRoZSByZXN1bHRzIGRyb3Bkb3duIGlzIG9wZW4uICovXHJcbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFRoZSBjdXJyZW50IHR5cGVkIHNlYXJjaCB0ZXh0LiAqL1xyXG4gIHNlYXJjaFRleHQgPSAnJztcclxuXHJcbiAgLyoqIElubGluZSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIHRoZSBmcmVlLXRleHQgKEVudGVyKSBwYXRoLiAqL1xyXG4gIGVycm9yTWVzc2FnZSA9ICcnO1xyXG5cclxuICAvKiogV2hldGhlciB0aGUgZmllbGQgaGFzIGJlZW4gdG91Y2hlZCAodG8gc2hvdyByZXF1aXJlZCBlcnJvciBhZnRlciBibHVyKS4gKi9cclxuICBpc1RvdWNoZWQgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kZXggb2YgdGhlIGtleWJvYXJkLWhpZ2hsaWdodGVkIHJlc3VsdCByb3cgKC0xID0gbm9uZSkuIEVuYWJsZXMgYXJyb3cta2V5XHJcbiAgICogbmF2aWdhdGlvbiBhbmQgRW50ZXItdG8tdG9nZ2xlIGZvciBrZXlib2FyZCB1c2VycywgbWlycm9yaW5nIHRoZSBtYXQtb3B0aW9uXHJcbiAgICogYmVoYXZpb3IgdGhpcyBjdXN0b20gZHJvcGRvd24gcmVwbGFjZXMuXHJcbiAgICovXHJcbiAgYWN0aXZlT3B0aW9uSW5kZXggPSAtMTtcclxuXHJcbiAgLyoqIFN0YWJsZSBpZCBwcmVmaXggZm9yIG9wdGlvbiByb3dzICh1c2VkIGZvciBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQpLiAqL1xyXG4gIHJlYWRvbmx5IG9wdGlvbklkUHJlZml4ID0gJ2llZWVzYS1vcmctb3B0aW9uLSc7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIHByaXZhdGUgc2VhcmNoRGVib3VuY2U/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBibHVyVGltZXI/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZU1zID0gMzAwO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWluQ2hhclRvU2VhcmNoID0gMztcclxuXHJcbiAgcHJpdmF0ZSBzZXBhcmF0b3JLZXlzID0gW0VOVEVSLCBDT01NQV07XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gRmFsbGJhY2sgbGFiZWxzIGZyb20gdGhlIHNoYXJlZCBjb25zdGFudHMgaWYgaW5wdXRzIGFyZSBub3QgcHJvdmlkZWQuXHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlciA/PyAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdHlwaW5nIGluIHRoZSBzZWFyY2ggaW5wdXQ6IHRyYWNrcyB0aGUgdGV4dCwgb3BlbnMvY2xvc2VzIHRoZVxyXG4gICAqIGRyb3Bkb3duIGFuZCBkZWJvdW5jZXMgdGhlIHNlYXJjaCBlbWl0IHRvIHRoZSBwYXJlbnQuXHJcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLWlucHV0IGV2ZW50LlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB2YWx1ZTtcclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgICAvLyBBbnkgbm9uLWVtcHR5LCB1bmNvbW1pdHRlZCB0ZXh0IGlzIGEgcGVuZGluZyB0b2tlbiDigJQgZmxhZyB0aGUgZmllbGRcclxuICAgIC8vIGludmFsaWQgc28gdGhlIHBhcmVudCBkaXNhYmxlcyBTYXZlIHVudGlsIGl0IGlzIGNvbW1pdHRlZCAoRW50ZXIpIG9yXHJcbiAgICAvLyBjbGVhcmVkLiBDbGVhcmVkIHRleHQgcmVzZXRzIHRoZSBmbGFnLlxyXG4gICAgdGhpcy5lbWl0SW52YWxpZFN0YXRlKCEhdmFsdWUudHJpbSgpKTtcclxuICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XHJcbiAgICB0aGlzLnNlYXJjaERlYm91bmNlPy51bnN1YnNjcmliZSgpO1xyXG4gICAgaWYgKHRyaW1tZWQubGVuZ3RoIDwgdGhpcy5taW5DaGFyVG9TZWFyY2gpIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hEZWJvdW5jZSA9IHRpbWVyKHRoaXMuZGVib3VuY2VNcykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZWFyY2guZW1pdCh0cmltbWVkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIGludmFsaWQtZnJlZS10ZXh0IHN0YXRlIHRvIHRoZSBwYXJlbnQgKGRlZHVwZWQpLiBUcnVlIG1lYW5zIGFuXHJcbiAgICogdW5jb21taXR0ZWQgdG9rZW4gaXMgcHJlc2VudCBhbmQgU2F2ZSBzaG91bGQgc3RheSBkaXNhYmxlZC5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzSW52YWxpZCAtd2hldGhlciBhbiB1bmNvbW1pdHRlZCB0b2tlbiBpcyBwcmVzZW50LlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZW1pdEludmFsaWRTdGF0ZShpc0ludmFsaWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhhc0ludmFsaWRGcmVlVGV4dCAhPT0gaXNJbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuaGFzSW52YWxpZEZyZWVUZXh0ID0gaXNJbnZhbGlkO1xyXG4gICAgICB0aGlzLmludmFsaWRGcmVlVGV4dC5lbWl0KGlzSW52YWxpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgZHJvcGRvd24gb24gZm9jdXMgb25seSB3aGVuIHRoZXJlIGFyZSByZXN1bHRzIEFORCB0aGUgaW5wdXQgc3RpbGxcclxuICAgKiBob2xkcyBhIHZhbGlkIHNlYXJjaCB0ZXJtIChhdCBvciBhYm92ZSBtaW5DaGFyVG9TZWFyY2gpLiBUaGlzIHByZXZlbnRzXHJcbiAgICogcmUtb3BlbmluZyBzdGFsZSByZXN1bHRzIOKAlCBlLmcuIGEgbGF0ZSBBUEkgcmVzcG9uc2UgdGhhdCBwb3B1bGF0ZWQgb3B0aW9uc1xyXG4gICAqIGFmdGVyIHRoZSBpbnB1dCB3YXMgY2xlYXJlZCDigJQgd2hlbiB0aGUgdXNlciBzaW1wbHkgcmVmb2N1c2VzIHRoZSBmaWVsZC5cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZvY3VzKCk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm9wdGlvbnM/Lmxlbmd0aCAmJlxyXG4gICAgICB0aGlzLnNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA+PSB0aGlzLm1pbkNoYXJUb1NlYXJjaFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIGJ5IHRoZSBwYXJlbnQgKHZpYSBhIHNldHRlciByZS1hc3NpZ24pIG9yIGludGVybmFsbHkgYWZ0ZXIgbmV3XHJcbiAgICogb3B0aW9ucyBhcnJpdmUgc28gdGhlIGRyb3Bkb3duIG9wZW5zIHRvIHNob3cgdGhlbS5cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93UmVzdWx0cygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSAhIXRoaXMub3B0aW9ucz8ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBrZXlkb3duIGZvciB0aGUgRW50ZXIvY29tbWEgXCJhZGQgdHlwZWQgdmFsdWVcIiBwYXRoLlxyXG4gICAqIEBwYXJhbSB7S2V5Ym9hcmRFdmVudH0gZXZlbnQgLWtleWJvYXJkIGV2ZW50LlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gQXJyb3cga2V5cyBtb3ZlIHRoZSBoaWdobGlnaHQgdGhyb3VnaCB0aGUgb3BlbiByZXN1bHRzIGxpc3QgKG9wZW5pbmcgaXRcclxuICAgIC8vIGZpcnN0IGlmIHRoZXJlIGFyZSByZXN1bHRzKS4gVGhpcyBtYWtlcyB0aGUgY3VzdG9tIGRyb3Bkb3duIG9wZXJhYmxlIGJ5XHJcbiAgICAvLyBrZXlib2FyZCwgbWF0Y2hpbmcgdGhlIG1hdC1vcHRpb24gbGlzdCBpdCByZXBsYWNlcy5cclxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSBET1dOX0FSUk9XIHx8IGV2ZW50LmtleUNvZGUgPT09IFVQX0FSUk9XKSB7XHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25zPy5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IHRydWU7XHJcbiAgICAgIHRoaXMubW92ZUFjdGl2ZU9wdGlvbihldmVudC5rZXlDb2RlID09PSBET1dOX0FSUk9XID8gMSA6IC0xKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEVzY2FwZSBjbG9zZXMgdGhlIHJlc3VsdHMgd2l0aG91dCBjb21taXR0aW5nIGFueXRoaW5nLlxyXG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSkge1xyXG4gICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duT3Blbikge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlT3B0aW9uSW5kZXggPSAtMTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnNlcGFyYXRvcktleXMuaW5jbHVkZXMoZXZlbnQua2V5Q29kZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vIEVudGVyL2NvbW1hOiBpZiBhIHJlc3VsdCByb3cgaXMgaGlnaGxpZ2h0ZWQsIHRvZ2dsZSB0aGF0IG9wdGlvbiAoa2V5Ym9hcmRcclxuICAgIC8vIHBhcml0eSB3aXRoIGNsaWNraW5nIGl0KS4gT3RoZXJ3aXNlIGZhbGwgYmFjayB0byBhZGRpbmcgdGhlIHR5cGVkIHRleHQgYXNcclxuICAgIC8vIGEgZnJlZS10ZXh0IGNoaXAuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gJiZcclxuICAgICAgdGhpcy5hY3RpdmVPcHRpb25JbmRleCA+PSAwICYmXHJcbiAgICAgIHRoaXMuYWN0aXZlT3B0aW9uSW5kZXggPCB0aGlzLm9wdGlvbnMubGVuZ3RoXHJcbiAgICApIHtcclxuICAgICAgdGhpcy50b2dnbGVPcHRpb24odGhpcy5vcHRpb25zW3RoaXMuYWN0aXZlT3B0aW9uSW5kZXhdKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hZGRUeXBlZFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb3ZlcyB0aGUga2V5Ym9hcmQgaGlnaGxpZ2h0IHVwL2Rvd24gdGhlIHJlc3VsdHMgbGlzdCwgd3JhcHBpbmcgYXQgdGhlIGVuZHMuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRlbHRhIC0rMSB0byBtb3ZlIGRvd24sIC0xIHRvIG1vdmUgdXAuXHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtb3ZlQWN0aXZlT3B0aW9uKGRlbHRhOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5vcHRpb25zLmxlbmd0aDtcclxuICAgIGlmICghY291bnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbmV4dCA9IHRoaXMuYWN0aXZlT3B0aW9uSW5kZXggKyBkZWx0YTtcclxuICAgIC8vIFdyYXAgYXJvdW5kIHNvIHRoZSBoaWdobGlnaHQgY3ljbGVzIHRocm91Z2ggdGhlIGxpc3QuXHJcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbkluZGV4ID0gKG5leHQgKyBjb3VudCkgJSBjb3VudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGdpdmVuIHJlc3VsdCBpbmRleCBpcyB0aGUga2V5Ym9hcmQtaGlnaGxpZ2h0ZWQgcm93LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtdGhlIG9wdGlvbidzIGluZGV4LlxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgaXNBY3RpdmVPcHRpb24oaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGluZGV4ID09PSB0aGlzLmFjdGl2ZU9wdGlvbkluZGV4O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyB0aGUgdHlwZWQgZnJlZS10ZXh0IHZhbHVlIGFzIGEgc2VsZWN0aW9uIChjaGlwKSBhZnRlciB2YWxpZGF0aW5nIGl0c1xyXG4gICAqIGxlbmd0aCBhbmQgcGF0dGVybiAocGFyaXR5IHdpdGggdGhlIHByZXZpb3VzIGNoaXAtaW5wdXQgYmVoYXZpb3IpLlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGFkZFR5cGVkVmFsdWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2VhcmNoVGV4dC50cmltKCk7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvciA9IHRoaXMudmFsaWRhdGVGcmVlVGV4dCh2YWx1ZSk7XHJcbiAgICBpZiAodmFsaWRhdGlvbkVycm9yKSB7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdmFsaWRhdGlvbkVycm9yO1xyXG4gICAgICAvLyBLZWVwIHRoZSBmaWVsZCBmbGFnZ2VkIGludmFsaWQgc28gdGhlIHBhcmVudCdzIFNhdmUgYnV0dG9uIHN0YXlzXHJcbiAgICAgIC8vIGRpc2FibGVkIGV2ZW4gd2hlbiBhIHZhbGlkIGNoaXAgYWxyZWFkeSBleGlzdHMg4oCUIHRoZSB1bmNvbW1pdHRlZCB0b2tlblxyXG4gICAgICAvLyBpcyBpbnZhbGlkIGFuZCBtdXN0IGJlIGNvcnJlY3RlZCBvciBjbGVhcmVkIGJlZm9yZSBzdWJtaXR0aW5nLlxyXG4gICAgICB0aGlzLmVtaXRJbnZhbGlkU3RhdGUodHJ1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIEF2b2lkIGR1cGxpY2F0ZXMgKGNhc2UtaW5zZW5zaXRpdmUgYnkgbmFtZSkuXHJcbiAgICBjb25zdCBleGlzdHMgPSB0aGlzLl9zZWxlY3RlZE9wdGlvbnMuc29tZShcclxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IHZhbHVlLnRvTG93ZXJDYXNlKClcclxuICAgICk7XHJcbiAgICBpZiAoIWV4aXN0cykge1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZE9wdGlvbnMgPSBbXHJcbiAgICAgICAgLi4udGhpcy5fc2VsZWN0ZWRPcHRpb25zLFxyXG4gICAgICAgIHsgaWQ6ICcnLCBuYW1lOiB2YWx1ZSB9LFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLmVtaXRTZWxlY3Rpb24oKTtcclxuICAgIH1cclxuICAgIC8vIFRva2VuIGNvbW1pdHRlZCBzdWNjZXNzZnVsbHkg4oCUIGlucHV0IGlzIGNsZWFyZWQsIHNvIHRoZSBmaWVsZCBpcyB2YWxpZC5cclxuICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgYSBmcmVlLXRleHQgb3JnYW5pemF0aW9uIHZhbHVlIGFnYWluc3QgdGhlIHNoYXJlZCBtaW4vbWF4L3BhdHRlcm5cclxuICAgKiBydWxlcy4gUmV0dXJucyBhbiBlcnJvciBtZXNzYWdlIHdoZW4gaW52YWxpZCwgb3RoZXJ3aXNlIGFuIGVtcHR5IHN0cmluZy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLXRoZSB0eXBlZCB2YWx1ZS5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgdmFsaWRhdGVGcmVlVGV4dCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yO1xyXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA8IEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5yZXByZXNlbnRpbmdPcmdOYW1lTWluTGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlcz8ubGltaXQ/LnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbk1pbkNoYXJzID8/ICcnO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5yZXByZXNlbnRpbmdPcmdOYW1lTWF4TGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlcz8ubGltaXQ/LnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbk1heENoYXJzID8/ICcnO1xyXG4gICAgfVxyXG4gICAgaWYgKCFHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlcz8ucGF0dGVybj8ucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uID8/ICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyBzZWxlY3Rpb24gb2YgYSByZXN1bHQgb3B0aW9uLiBLZWVwcyB0aGUgZHJvcGRvd24gb3BlbiBhbmQgdGhlIHR5cGVkXHJcbiAgICogdGV4dCBpbnRhY3Qgc28gdGhlIHVzZXIgY2FuIGtlZXAgc2VsZWN0aW5nLlxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9ufSBvcHRpb24gLXRoZSBjbGlja2VkIHJlc3VsdCBvcHRpb24uXHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgdG9nZ2xlT3B0aW9uKG9wdGlvbjogU2VsZWN0T3B0aW9uKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX3NlbGVjdGVkT3B0aW9ucy5maW5kSW5kZXgoXHJcbiAgICAgIChpdGVtKSA9PiBpdGVtLmlkID09PSBvcHRpb24uaWQgJiYgaXRlbS5uYW1lID09PSBvcHRpb24ubmFtZVxyXG4gICAgKTtcclxuICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkT3B0aW9ucyA9IHRoaXMuX3NlbGVjdGVkT3B0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKF8sIGkpID0+IGkgIT09IGluZGV4XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZE9wdGlvbnMgPSBbLi4udGhpcy5fc2VsZWN0ZWRPcHRpb25zLCBvcHRpb25dO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uKCk7XHJcbiAgICAvLyBLZWVwIGZvY3VzIGluIHRoZSBpbnB1dCBzbyB0aGUgdXNlciBjYW4gY29udGludWUgdHlwaW5nL3NlbGVjdGluZy5cclxuICAgIHRoaXMuc2VhcmNoSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIGFuIG9wdGlvbiBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgKGRyaXZlcyB0aGUgY2hlY2tib3ggY2hlY2tlZCBzdGF0ZSkuXHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb259IG9wdGlvbiAtb3B0aW9uIHRvIHRlc3QuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICBpc1NlbGVjdGVkKG9wdGlvbjogU2VsZWN0T3B0aW9uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRPcHRpb25zLnNvbWUoXHJcbiAgICAgIChpdGVtKSA9PiBpdGVtLmlkID09PSBvcHRpb24uaWQgJiYgaXRlbS5uYW1lID09PSBvcHRpb24ubmFtZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBzZWxlY3RlZCBjaGlwLlxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9ufSBvcHRpb24gLXRoZSBvcHRpb24gdG8gcmVtb3ZlLlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHJlbW92ZU9wdGlvbihvcHRpb246IFNlbGVjdE9wdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5fc2VsZWN0ZWRPcHRpb25zLmZpbHRlcihcclxuICAgICAgKGl0ZW0pID0+ICEoaXRlbS5pZCA9PT0gb3B0aW9uLmlkICYmIGl0ZW0ubmFtZSA9PT0gb3B0aW9uLm5hbWUpXHJcbiAgICApO1xyXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhcnMgYWxsIHNlbGVjdGVkIGNoaXBzLlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNsZWFyQWxsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRPcHRpb25zID0gW107XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBbXTtcclxuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuZW1pdFNlbGVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXJzIHRoZSBsZWZ0b3ZlciB0eXBlZCB0ZXh0IG9uIGJsdXIgKG9sZCBiZWhhdmlvcikgYW5kIGNsb3NlcyB0aGVcclxuICAgKiBkcm9wZG93bi4gRGVmZXJyZWQgc28gYSBjbGljayBvbiBhIGRyb3Bkb3duIG9wdGlvbiAod2hpY2ggYWxzbyBibHVycyB0aGVcclxuICAgKiBpbnB1dCkgaXMgaGFuZGxlZCBmaXJzdC5cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzVG91Y2hlZCA9IHRydWU7XHJcbiAgICB0aGlzLmJsdXJUaW1lcj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuYmx1clRpbWVyID0gdGltZXIoMTUwKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyBJZiBmb2N1cyBtb3ZlZCBpbnRvIHRoZSBkcm9wZG93biAob3B0aW9uIGNsaWNrKSwgdGhlIGNsaWNrIGhhbmRsZXJcclxuICAgICAgLy8gcmUtZm9jdXNlcyB0aGUgaW5wdXQsIHNvIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgdGhlIGlucHV0IGFnYWluLlxyXG4gICAgICBjb25zdCBhY3RpdmUgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG4gICAgICBpZiAoYWN0aXZlID09PSB0aGlzLnNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5maWVsZEJsdXIuZW1pdCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSByZXF1aXJlZCBlcnJvciBzaG91bGQgc2hvdyAodG91Y2hlZCwgbm8gc2VsZWN0aW9uKS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBzaG93UmVxdWlyZWRFcnJvcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMucmVxdWlyZWQgJiYgdGhpcy5pc1RvdWNoZWQgJiYgdGhpcy5fc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFycyB0aGUgdHlwZWQgc2VhcmNoIHRleHQgYW5kIGhpZGVzIHRoZSByZXN1bHRzLlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2xlYXJTZWFyY2hUZXh0KCk6IHZvaWQge1xyXG4gICAgLy8gQ2FuY2VsIGFueSBwZW5kaW5nIGRlYm91bmNlZCBzZWFyY2ggc28gYSBibHVyL2NsZWFyIGJlZm9yZSB0aGUgdGltZXJcclxuICAgIC8vIGV4cGlyZXMgZG9lcyBub3QgZW1pdCB0aGUgbm93LWNsZWFyZWQgcXVlcnkgdG8gdGhlIHBhcmVudC5cclxuICAgIHRoaXMuc2VhcmNoRGVib3VuY2U/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnNlYXJjaERlYm91bmNlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcclxuICAgIC8vIE5vIGxlZnRvdmVyIHRleHQg4oCUIHRoZSBmaWVsZCBpcyBubyBsb25nZXIgaG9sZGluZyBhbiBpbnZhbGlkIHRva2VuLlxyXG4gICAgdGhpcy5lbWl0SW52YWxpZFN0YXRlKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBjdXJyZW50IHNlbGVjdGlvbiB0byB0aGUgcGFyZW50LlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZW1pdFNlbGVjdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoXHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkT3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gKHtcclxuICAgICAgICBpZDogb3B0aW9uLmlkLFxyXG4gICAgICAgIG5hbWU6IG9wdGlvbi5uYW1lLFxyXG4gICAgICB9KSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmFja0J5IGZvciBib3RoIHJlc3VsdCBhbmQgY2hpcCBsaXN0cy5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLWxpc3QgaW5kZXguXHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb259IG9wdGlvbiAtdGhlIG9wdGlvbi5cclxuICAgKiBAcmV0dXJuIHsoc3RyaW5nIHwgbnVtYmVyKX1cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgb3B0aW9uOiBTZWxlY3RPcHRpb24pOiBzdHJpbmcgfCBudW1iZXIge1xyXG4gICAgcmV0dXJuIGAke29wdGlvbi5pZH0tJHtvcHRpb24ubmFtZX1gO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaERlYm91bmNlPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5ibHVyVGltZXI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImllZWVzYS1vcmctbXVsdGktc2VsZWN0XCJcclxuICBbY2xhc3MuaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3QtLWludmFsaWRdPVwic2hvd1JlcXVpcmVkRXJyb3IgfHwgZXJyb3JNZXNzYWdlXCJcclxuPlxyXG4gIDxsYWJlbCBjbGFzcz1cImllZWVzYS1vcmctbXVsdGktc2VsZWN0X19sYWJlbCBpZWVlc2EtYm9keS1zbS0xNFwiPlxyXG4gICAge3sgbGFiZWwgfX1cclxuICA8L2xhYmVsPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX2ZpZWxkXCI+XHJcbiAgICA8IS0tXHJcbiAgICAgIENoaXBzIGFuZCB0aGUgc2VhcmNoIGlucHV0IGZsb3cgdG9nZXRoZXIgaW5saW5lIChsaWtlIHRoZSBNYXRlcmlhbFxyXG4gICAgICBjaGlwLWdyaWQpLiBUaGlzIGtlZXBzIGEgc2luZ2xlLXJvdyBmaWVsZCBhcHBlYXJhbmNlIHRoYXQgZ3Jvd3MgYXMgY2hpcHNcclxuICAgICAgd3JhcCwgd2l0aCB0aGUgY2xlYXItYWxsIGJ1dHRvbiBwaW5uZWQgdG8gdGhlIHJpZ2h0IGFzIGEgc3VmZml4LlxyXG4gICAgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX2NvbnRyb2xcIj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjbGFzcz1cImllZWVzYS1vcmctbXVsdGktc2VsZWN0X19jaGlwXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNlbGVjdGVkT3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm9wdGlvbi5uYW1lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX2NoaXAtbGFiZWxcIj5cclxuICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdF9fY2hpcC1yZW1vdmVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInUmVtb3ZlICcgKyBvcHRpb24ubmFtZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlT3B0aW9uKG9wdGlvbilcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdF9fY2hpcC1yZW1vdmUtaWNvblwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicmVtb3ZlSWNvblVSTFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDx1c2UgW2F0dHIueGxpbms6aHJlZl09XCJyZW1vdmVJY29uVVJMXCI+PC91c2U+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXJlbW92ZUljb25VUkxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICAjc2VhcmNoSW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdF9faW5wdXQgaWVlZXNhLXRpdGxlLXNtLTE2XCJcclxuICAgICAgICByb2xlPVwiY29tYm9ib3hcIlxyXG4gICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcclxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzRHJvcGRvd25PcGVuXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIm9wdGlvbklkUHJlZml4ICsgJ2xpc3Rib3gnXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiXHJcbiAgICAgICAgICBpc0Ryb3Bkb3duT3BlbiAmJiBhY3RpdmVPcHRpb25JbmRleCA+PSAwXHJcbiAgICAgICAgICAgID8gb3B0aW9uSWRQcmVmaXggKyBhY3RpdmVPcHRpb25JbmRleFxyXG4gICAgICAgICAgICA6IG51bGxcclxuICAgICAgICBcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJzZWFyY2hUZXh0XCJcclxuICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcclxuICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdF9fY2xlYXItYWxsXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwiJ0NsZWFyIGFsbCdcIlxyXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xlYXIgYWxsXCJcclxuICAgICAgKm5nSWY9XCJzZWxlY3RlZE9wdGlvbnMubGVuZ3RoXCJcclxuICAgICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIlxyXG4gICAgPlxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdF9fY2xlYXItYWxsLWljb25cIlxyXG4gICAgICAgICpuZ0lmPVwiY2xlYXJBbGxJY29uVVJMXCJcclxuICAgICAgPlxyXG4gICAgICAgIDx1c2UgW2F0dHIueGxpbms6aHJlZl09XCJjbGVhckFsbEljb25VUkxcIj48L3VzZT5cclxuICAgICAgPC9zdmc+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiIWNsZWFyQWxsSWNvblVSTFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8IS0tXHJcbiAgICAgIEN1c3RvbSByZXN1bHRzIGRyb3Bkb3duLiBGdWxseSBvd25lZCAobm90IG1hdC1hdXRvY29tcGxldGUpIHNvIGEgcGljayBuZXZlclxyXG4gICAgICBjbG9zZXMgdGhlIHBhbmVsIG9yIG92ZXJ3cml0ZXMgdGhlIHR5cGVkIHRleHQuIG1vdXNlZG93biBpcyBwcmV2ZW50ZWQgc29cclxuICAgICAgY2xpY2tpbmcgYSByb3cgZG9lcyBub3QgYmx1ciB0aGUgaW5wdXQgYmVmb3JlIHRoZSBjbGljayByZWdpc3RlcnMuXHJcbiAgICAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdF9fZHJvcGRvd25cIlxyXG4gICAgICByb2xlPVwibGlzdGJveFwiXHJcbiAgICAgIFtpZF09XCJvcHRpb25JZFByZWZpeCArICdsaXN0Ym94J1wiXHJcbiAgICAgIGFyaWEtbXVsdGlzZWxlY3RhYmxlPVwidHJ1ZVwiXHJcbiAgICAgICpuZ0lmPVwiaXNEcm9wZG93bk9wZW4gJiYgb3B0aW9ucy5sZW5ndGhcIlxyXG4gICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX29wdGlvblwiXHJcbiAgICAgICAgcm9sZT1cIm9wdGlvblwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgIFtpZF09XCJvcHRpb25JZFByZWZpeCArIGlcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcclxuICAgICAgICBbY2xhc3MuaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX29wdGlvbi0tc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcclxuICAgICAgICBbY2xhc3MuaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX29wdGlvbi0tYWN0aXZlXT1cImlzQWN0aXZlT3B0aW9uKGkpXCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3B0aW9uKG9wdGlvbilcIlxyXG4gICAgICAgIChtb3VzZWVudGVyKT1cImFjdGl2ZU9wdGlvbkluZGV4ID0gaVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcclxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgPjwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1vcmctbXVsdGktc2VsZWN0X19vcHRpb24tbGFiZWwgaWVlZXNhLXRpdGxlLXNtLTE2XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBJbmxpbmUgZnJlZS10ZXh0IHZhbGlkYXRpb24gZXJyb3IgKEVudGVyIHBhdGgpIC0tPlxyXG4gIDxwXHJcbiAgICBjbGFzcz1cImllZWVzYS1vcmctbXVsdGktc2VsZWN0X19lcnJvciBpZWVlc2EtYm9keS1zbS0xNFwiXHJcbiAgICAqbmdJZj1cImVycm9yTWVzc2FnZVwiXHJcbiAgPlxyXG4gICAge3sgZXJyb3JNZXNzYWdlIH19XHJcbiAgPC9wPlxyXG5cclxuICA8IS0tIFJlcXVpcmVkIGVycm9yICh0b3VjaGVkLCBub3RoaW5nIHNlbGVjdGVkKSAtLT5cclxuICA8cFxyXG4gICAgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdF9fZXJyb3IgaWVlZXNhLWJvZHktc20tMTRcIlxyXG4gICAgKm5nSWY9XCJzaG93UmVxdWlyZWRFcnJvciAmJiAhZXJyb3JNZXNzYWdlXCJcclxuICA+XHJcbiAgICB7eyBhZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCB9fVxyXG4gIDwvcD5cclxuXHJcbiAgPCEtLSBTdXBwb3J0L2hlbHAgdGV4dCAtLT5cclxuICA8cFxyXG4gICAgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdF9fc3VwcG9ydCBpZWVlc2EtYm9keS1zbS0xNFwiXHJcbiAgICAqbmdJZj1cInN1cHBvcnRNZXNzYWdlICYmICFlcnJvck1lc3NhZ2UgJiYgIXNob3dSZXF1aXJlZEVycm9yXCJcclxuICA+XHJcbiAgICB7eyBzdXBwb3J0TWVzc2FnZSB9fVxyXG4gIDwvcD5cclxuPC9kaXY+XHJcbiJdfQ==
491
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLW11bHRpLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL29yZy1tdWx0aS1zZWxlY3Qvb3JnLW11bHRpLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL29yZy1tdWx0aS1zZWxlY3Qvb3JnLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxLQUFLLFdBQVcsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFlSCxNQUFNLE9BQU8sdUJBQXVCO0lBZHBD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QixLQUFLO2dCQU1HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFJSSxNQUFNO3NCQUFmLE1BQU07Z0JBR0csZUFBZTtzQkFBeEIsTUFBTTtnQkFHRyxTQUFTO3NCQUFsQixNQUFNO2dCQVVHLGVBQWU7c0JBQXhCLE1BQU07Z0JBS21CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ09NTUEsXHJcbiAgRE9XTl9BUlJPVyxcclxuICBFTlRFUixcclxuICBFU0NBUEUsXHJcbiAgVVBfQVJST1csXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zIH0gZnJvbSAnLi4vLi4vYXNzZXRzL2Zvcm0tdmFsaWRhdGlvbnMnO1xyXG5cclxuLyoqXHJcbiAqIEEgc2VsZi1jb250YWluZWQgbXVsdGktc2VsZWN0IG9yZ2FuaXphdGlvbiBmaWVsZCB1c2VkIGluc2lkZSB0aGUgQWRkL0VkaXRcclxuICogcm9zdGVyIHBvcHVwcy5cclxuICpcclxuICogSXQgaW50ZW50aW9uYWxseSBkb2VzIE5PVCByZXVzZSB0aGUgc2hhcmVkIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAqICh3aGljaCBpcyBidWlsdCBvbiBtYXQtYXV0b2NvbXBsZXRlKS4gTWF0ZXJpYWwncyBhdXRvY29tcGxldGUgY2xvc2VzIGl0cyBwYW5lbFxyXG4gKiBhbmQgb3ZlcndyaXRlcyB0aGUgaW5wdXQgb24gZXZlcnkgb3B0aW9uIHBpY2ssIHdoaWNoIG1hZGUgbXVsdGktc2VsZWN0aW9uXHJcbiAqIGZlZWwgc2luZ2xlLXNlbGVjdCBhbmQgY2xlYXJlZCB0aGUgdXNlcidzIHR5cGVkIHRleHQuIFRoaXMgY29tcG9uZW50IHVzZXMgYVxyXG4gKiBmdWxseS1vd25lZCBjdXN0b20gZHJvcGRvd24gKDxkaXY+ICsgY2hlY2tib3hlcykgc286XHJcbiAqICAtIHRoZSBwYW5lbCBzdGF5cyBvcGVuIHdoaWxlIHRoZSB1c2VyIHRpY2tzIHNldmVyYWwgcmVzdWx0cyxcclxuICogIC0gdGhlIHR5cGVkIHNlYXJjaCB0ZXh0IGlzIG5ldmVyIG92ZXJ3cml0dGVuIGJ5IGEgcGljayxcclxuICogIC0gcHJlc3NpbmcgRW50ZXIgYWRkcyB0aGUgdHlwZWQgdmFsdWUgYXMgYSBmcmVlLXRleHQgY2hpcCxcclxuICogIC0gY2xpY2tpbmcgb3V0c2lkZSBjbGVhcnMgYW55IGxlZnRvdmVyIHR5cGVkIHRleHQgKG9sZCBiZWhhdmlvciksXHJcbiAqICAtIHNlbGVjdGVkIHZhbHVlcyByZW5kZXIgYXMgcmVtb3ZhYmxlIGNoaXBzIChvbGQgYmVoYXZpb3IpLlxyXG4gKlxyXG4gKiBUaGUgcGFyZW50IHN1cHBsaWVzIHNlYXJjaCByZXN1bHRzIHZpYSB7QGxpbmsgb3B0aW9uc30gYW5kIHJlYWN0cyB0b1xyXG4gKiB7QGxpbmsgc2VhcmNofSAoZGVib3VuY2VkIHR5cGVkIHRlcm0pIGFuZCB7QGxpbmsgc2VsZWN0aW9uQ2hhbmdlfS5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3QnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9vcmctbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9vcmctbXVsdGktc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKiBGaWVsZCBsYWJlbCAoZS5nLiBcIlJlcHJlc2VudGluZyBPcmdhbml6YXRpb24gKlwiKS4gKi9cclxuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xyXG5cclxuICAvKiogUGxhY2Vob2xkZXIgZm9yIHRoZSBpbnB1dC4gKi9cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG5cclxuICAvKiogU3VwcG9ydC9oZWxwIHRleHQgc2hvd24gYmVsb3cgdGhlIGZpZWxkLiAqL1xyXG4gIEBJbnB1dCgpIHN1cHBvcnRNZXNzYWdlID0gJyc7XHJcblxyXG4gIC8qKiBhcmlhLWxhYmVsIGZvciB0aGUgaW5wdXQuICovXHJcbiAgQElucHV0KCkgYXJpYUxhYmVsID0gJyc7XHJcblxyXG4gIC8qKiBTZWFyY2ggcmVzdWx0cyBzdXBwbGllZCBieSB0aGUgcGFyZW50IChyZXBvcHVsYXRlZCBvbiBlYWNoIHNlYXJjaCkuICovXHJcbiAgQElucHV0KCkgc2V0IG9wdGlvbnModmFsdWU6IFNlbGVjdE9wdGlvbltdKSB7XHJcbiAgICB0aGlzLl9vcHRpb25zID0gdmFsdWUgPz8gW107XHJcbiAgICAvLyBSZXNldCBrZXlib2FyZCBoaWdobGlnaHQgd2hlbmV2ZXIgdGhlIHJlc3VsdCBzZXQgY2hhbmdlcy5cclxuICAgIHRoaXMuYWN0aXZlT3B0aW9uSW5kZXggPSAtMTtcclxuICAgIC8vIE9wZW4gdGhlIGRyb3Bkb3duIGFzIHNvb24gYXMgZnJlc2ggcmVzdWx0cyBhcnJpdmUgd2hpbGUgdGhlIHVzZXIgaXMgc3RpbGxcclxuICAgIC8vIHR5cGluZy9zZWFyY2hpbmcgKGhhcyBub24tZW1wdHkgdGV4dCkuIENsb3NlcyB3aGVuIHJlc3VsdHMgYXJlIGVtcHRpZWQuXHJcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID1cclxuICAgICAgdGhpcy5fb3B0aW9ucy5sZW5ndGggPiAwICYmIHRoaXMuc2VhcmNoVGV4dC50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcbiAgZ2V0IG9wdGlvbnMoKTogU2VsZWN0T3B0aW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29wdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcblxyXG4gIC8qKiBQcmUtc2VsZWN0ZWQgb3B0aW9ucyAoZWRpdCBwcmVmaWxsKS4gUmVuZGVyZWQgYXMgY2hpcHMuICovXHJcbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkT3B0aW9ucyh2YWx1ZTogU2VsZWN0T3B0aW9uW10pIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkT3B0aW9ucyA9IHZhbHVlID8/IFtdO1xyXG4gIH1cclxuICBnZXQgc2VsZWN0ZWRPcHRpb25zKCk6IFNlbGVjdE9wdGlvbltdIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZE9wdGlvbnM7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NlbGVjdGVkT3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuXHJcbiAgLyoqIE1hcmtzIHRoZSBmaWVsZCByZXF1aXJlZCAoZHJpdmVzIHRoZSByZXF1aXJlZCBtZXNzYWdlICsgZXJyb3IgYm9yZGVyKS4gKi9cclxuICBASW5wdXQoKSByZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIEljb24gVVJMcyAoc2FtZSBzcHJpdGUgcmVmcyB0aGUgc2hhcmVkIG11bHRpLXNlbGVjdCBmaWVsZCB1c2VkKS4gRGVmYXVsdGVkXHJcbiAgICogc28gdGhlIHBvcHVwcyBkb24ndCBuZWVkIHRvIHBhc3MgdGhlbTsgb3ZlcnJpZGFibGUgdmlhIGlucHV0IGlmIG5lZWRlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSByZW1vdmVJY29uVVJMID0gJ2Fzc2V0cy9pbWFnZXMvc3ByaXRlcy9zcHJpdGVzLnN2ZyNpY29uLXRyYWlsaW5nJztcclxuICBASW5wdXQoKSBjbGVhckFsbEljb25VUkwgPVxyXG4gICAgJ2Fzc2V0cy9pbWFnZXMvc3ByaXRlcy9zcHJpdGVzLnN2ZyNpY29uLWNsZWFyLWFsbCc7XHJcblxyXG4gIC8qKiBFbWl0cyB0aGUgdHJpbW1lZCB0eXBlZCB0ZXJtIChkZWJvdW5jZWQpIHNvIHRoZSBwYXJlbnQgY2FuIGNhbGwgdGhlIEFQSS4gKi9cclxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBFbWl0cyB0aGUgY3VycmVudCBzZWxlY3Rpb24gYXJyYXkgd2hlbmV2ZXIgaXQgY2hhbmdlcy4gKi9cclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RPcHRpb25bXT4oKTtcclxuXHJcbiAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZmllbGQgaXMgYmx1cnJlZCAocGFyZW50IGNhbiByZS1ldmFsdWF0ZSB2YWxpZGF0aW9uKS4gKi9cclxuICBAT3V0cHV0KCkgZmllbGRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0cnVlIHdoZW4gdGhlIGlucHV0IGhvbGRzIGFuIHVuY29tbWl0dGVkIGZyZWUtdGV4dCB0b2tlbiB0aGF0IGZhaWxzXHJcbiAgICogdmFsaWRhdGlvbiAodG9vIHNob3J0IC8gdG9vIGxvbmcgLyBpbnZhbGlkIHBhdHRlcm4pLCBhbmQgZmFsc2Ugd2hlbiB0aGVcclxuICAgKiBpbnB1dCBpcyBlbXB0eSBvciB0aGUgdG9rZW4gaXMgdmFsaWQuIFRoZSBwYXJlbnQgdXNlcyB0aGlzIHRvIGtlZXAgdGhlIFNhdmVcclxuICAgKiBidXR0b24gZGlzYWJsZWQgd2hpbGUgYW4gaW52YWxpZCB0b2tlbiByZW1haW5zIOKAlCBvdGhlcndpc2UgYSBwcmV2aW91c2x5XHJcbiAgICogYWRkZWQgdmFsaWQgY2hpcCB3b3VsZCBrZWVwIHRoZSBwYXJlbnQgY29udHJvbCB2YWxpZCBhbmQgbGV0IHRoZSBmb3JtIHN1Ym1pdFxyXG4gICAqIHdpdGggYW4gaW52YWxpZCB0b2tlbiBzdGlsbCBpbiB0aGUgaW5wdXQuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGludmFsaWRGcmVlVGV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLyoqIFRyYWNrcyB0aGUgbGFzdCBlbWl0dGVkIGludmFsaWQtdG9rZW4gc3RhdGUgdG8gYXZvaWQgZHVwbGljYXRlIGVtaXRzLiAqL1xyXG4gIHByaXZhdGUgaGFzSW52YWxpZEZyZWVUZXh0ID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dHM7XHJcbiAgYWRkVXNlclJvc3RlclRleHRzID0gdGhpcy5jb25zdGFudHM/LmFkZFVzZXJSb3N0ZXI7XHJcblxyXG4gIC8qKiBXaGV0aGVyIHRoZSByZXN1bHRzIGRyb3Bkb3duIGlzIG9wZW4uICovXHJcbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFRoZSBjdXJyZW50IHR5cGVkIHNlYXJjaCB0ZXh0LiAqL1xyXG4gIHNlYXJjaFRleHQgPSAnJztcclxuXHJcbiAgLyoqIElubGluZSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIHRoZSBmcmVlLXRleHQgKEVudGVyKSBwYXRoLiAqL1xyXG4gIGVycm9yTWVzc2FnZSA9ICcnO1xyXG5cclxuICAvKiogV2hldGhlciB0aGUgZmllbGQgaGFzIGJlZW4gdG91Y2hlZCAodG8gc2hvdyByZXF1aXJlZCBlcnJvciBhZnRlciBibHVyKS4gKi9cclxuICBpc1RvdWNoZWQgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kZXggb2YgdGhlIGtleWJvYXJkLWhpZ2hsaWdodGVkIHJlc3VsdCByb3cgKC0xID0gbm9uZSkuIEVuYWJsZXMgYXJyb3cta2V5XHJcbiAgICogbmF2aWdhdGlvbiBhbmQgRW50ZXItdG8tdG9nZ2xlIGZvciBrZXlib2FyZCB1c2VycywgbWlycm9yaW5nIHRoZSBtYXQtb3B0aW9uXHJcbiAgICogYmVoYXZpb3IgdGhpcyBjdXN0b20gZHJvcGRvd24gcmVwbGFjZXMuXHJcbiAgICovXHJcbiAgYWN0aXZlT3B0aW9uSW5kZXggPSAtMTtcclxuXHJcbiAgLyoqIFN0YWJsZSBpZCBwcmVmaXggZm9yIG9wdGlvbiByb3dzICh1c2VkIGZvciBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQpLiAqL1xyXG4gIHJlYWRvbmx5IG9wdGlvbklkUHJlZml4ID0gJ2llZWVzYS1vcmctb3B0aW9uLSc7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIHByaXZhdGUgc2VhcmNoRGVib3VuY2U/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBibHVyVGltZXI/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZU1zID0gMzAwO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWluQ2hhclRvU2VhcmNoID0gMztcclxuXHJcbiAgcHJpdmF0ZSBzZXBhcmF0b3JLZXlzID0gW0VOVEVSLCBDT01NQV07XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gRmFsbGJhY2sgbGFiZWxzIGZyb20gdGhlIHNoYXJlZCBjb25zdGFudHMgaWYgaW5wdXRzIGFyZSBub3QgcHJvdmlkZWQuXHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlciA/PyAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdHlwaW5nIGluIHRoZSBzZWFyY2ggaW5wdXQ6IHRyYWNrcyB0aGUgdGV4dCwgb3BlbnMvY2xvc2VzIHRoZVxyXG4gICAqIGRyb3Bkb3duIGFuZCBkZWJvdW5jZXMgdGhlIHNlYXJjaCBlbWl0IHRvIHRoZSBwYXJlbnQuXHJcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLWlucHV0IGV2ZW50LlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB2YWx1ZTtcclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgICAvLyBBbnkgbm9uLWVtcHR5LCB1bmNvbW1pdHRlZCB0ZXh0IGlzIGEgcGVuZGluZyB0b2tlbiDigJQgZmxhZyB0aGUgZmllbGRcclxuICAgIC8vIGludmFsaWQgc28gdGhlIHBhcmVudCBkaXNhYmxlcyBTYXZlIHVudGlsIGl0IGlzIGNvbW1pdHRlZCAoRW50ZXIpIG9yXHJcbiAgICAvLyBjbGVhcmVkLiBDbGVhcmVkIHRleHQgcmVzZXRzIHRoZSBmbGFnLlxyXG4gICAgdGhpcy5lbWl0SW52YWxpZFN0YXRlKCEhdmFsdWUudHJpbSgpKTtcclxuICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XHJcbiAgICB0aGlzLnNlYXJjaERlYm91bmNlPy51bnN1YnNjcmliZSgpO1xyXG4gICAgaWYgKHRyaW1tZWQubGVuZ3RoIDwgdGhpcy5taW5DaGFyVG9TZWFyY2gpIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hEZWJvdW5jZSA9IHRpbWVyKHRoaXMuZGVib3VuY2VNcykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZWFyY2guZW1pdCh0cmltbWVkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIGludmFsaWQtZnJlZS10ZXh0IHN0YXRlIHRvIHRoZSBwYXJlbnQgKGRlZHVwZWQpLiBUcnVlIG1lYW5zIGFuXHJcbiAgICogdW5jb21taXR0ZWQgdG9rZW4gaXMgcHJlc2VudCBhbmQgU2F2ZSBzaG91bGQgc3RheSBkaXNhYmxlZC5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzSW52YWxpZCAtd2hldGhlciBhbiB1bmNvbW1pdHRlZCB0b2tlbiBpcyBwcmVzZW50LlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZW1pdEludmFsaWRTdGF0ZShpc0ludmFsaWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhhc0ludmFsaWRGcmVlVGV4dCAhPT0gaXNJbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuaGFzSW52YWxpZEZyZWVUZXh0ID0gaXNJbnZhbGlkO1xyXG4gICAgICB0aGlzLmludmFsaWRGcmVlVGV4dC5lbWl0KGlzSW52YWxpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgZHJvcGRvd24gb24gZm9jdXMgb25seSB3aGVuIHRoZXJlIGFyZSByZXN1bHRzIEFORCB0aGUgaW5wdXQgc3RpbGxcclxuICAgKiBob2xkcyBhIHZhbGlkIHNlYXJjaCB0ZXJtIChhdCBvciBhYm92ZSBtaW5DaGFyVG9TZWFyY2gpLiBUaGlzIHByZXZlbnRzXHJcbiAgICogcmUtb3BlbmluZyBzdGFsZSByZXN1bHRzIOKAlCBlLmcuIGEgbGF0ZSBBUEkgcmVzcG9uc2UgdGhhdCBwb3B1bGF0ZWQgb3B0aW9uc1xyXG4gICAqIGFmdGVyIHRoZSBpbnB1dCB3YXMgY2xlYXJlZCDigJQgd2hlbiB0aGUgdXNlciBzaW1wbHkgcmVmb2N1c2VzIHRoZSBmaWVsZC5cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZvY3VzKCk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm9wdGlvbnM/Lmxlbmd0aCAmJlxyXG4gICAgICB0aGlzLnNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA+PSB0aGlzLm1pbkNoYXJUb1NlYXJjaFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIGJ5IHRoZSBwYXJlbnQgKHZpYSBhIHNldHRlciByZS1hc3NpZ24pIG9yIGludGVybmFsbHkgYWZ0ZXIgbmV3XHJcbiAgICogb3B0aW9ucyBhcnJpdmUgc28gdGhlIGRyb3Bkb3duIG9wZW5zIHRvIHNob3cgdGhlbS5cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93UmVzdWx0cygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSAhIXRoaXMub3B0aW9ucz8ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBrZXlkb3duIGZvciB0aGUgRW50ZXIvY29tbWEgXCJhZGQgdHlwZWQgdmFsdWVcIiBwYXRoLlxyXG4gICAqIEBwYXJhbSB7S2V5Ym9hcmRFdmVudH0gZXZlbnQgLWtleWJvYXJkIGV2ZW50LlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gQXJyb3cga2V5cyBtb3ZlIHRoZSBoaWdobGlnaHQgdGhyb3VnaCB0aGUgb3BlbiByZXN1bHRzIGxpc3QgKG9wZW5pbmcgaXRcclxuICAgIC8vIGZpcnN0IGlmIHRoZXJlIGFyZSByZXN1bHRzKS4gVGhpcyBtYWtlcyB0aGUgY3VzdG9tIGRyb3Bkb3duIG9wZXJhYmxlIGJ5XHJcbiAgICAvLyBrZXlib2FyZCwgbWF0Y2hpbmcgdGhlIG1hdC1vcHRpb24gbGlzdCBpdCByZXBsYWNlcy5cclxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSBET1dOX0FSUk9XIHx8IGV2ZW50LmtleUNvZGUgPT09IFVQX0FSUk9XKSB7XHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25zPy5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IHRydWU7XHJcbiAgICAgIHRoaXMubW92ZUFjdGl2ZU9wdGlvbihldmVudC5rZXlDb2RlID09PSBET1dOX0FSUk9XID8gMSA6IC0xKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEVzY2FwZSBjbG9zZXMgdGhlIHJlc3VsdHMgd2l0aG91dCBjb21taXR0aW5nIGFueXRoaW5nLlxyXG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSkge1xyXG4gICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duT3Blbikge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlT3B0aW9uSW5kZXggPSAtMTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnNlcGFyYXRvcktleXMuaW5jbHVkZXMoZXZlbnQua2V5Q29kZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vIEVudGVyL2NvbW1hOiBpZiBhIHJlc3VsdCByb3cgaXMgaGlnaGxpZ2h0ZWQsIHRvZ2dsZSB0aGF0IG9wdGlvbiAoa2V5Ym9hcmRcclxuICAgIC8vIHBhcml0eSB3aXRoIGNsaWNraW5nIGl0KS4gT3RoZXJ3aXNlIGZhbGwgYmFjayB0byBhZGRpbmcgdGhlIHR5cGVkIHRleHQgYXNcclxuICAgIC8vIGEgZnJlZS10ZXh0IGNoaXAuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gJiZcclxuICAgICAgdGhpcy5hY3RpdmVPcHRpb25JbmRleCA+PSAwICYmXHJcbiAgICAgIHRoaXMuYWN0aXZlT3B0aW9uSW5kZXggPCB0aGlzLm9wdGlvbnMubGVuZ3RoXHJcbiAgICApIHtcclxuICAgICAgdGhpcy50b2dnbGVPcHRpb24odGhpcy5vcHRpb25zW3RoaXMuYWN0aXZlT3B0aW9uSW5kZXhdKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hZGRUeXBlZFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb3ZlcyB0aGUga2V5Ym9hcmQgaGlnaGxpZ2h0IHVwL2Rvd24gdGhlIHJlc3VsdHMgbGlzdCwgd3JhcHBpbmcgYXQgdGhlIGVuZHMuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRlbHRhIC0rMSB0byBtb3ZlIGRvd24sIC0xIHRvIG1vdmUgdXAuXHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtb3ZlQWN0aXZlT3B0aW9uKGRlbHRhOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5vcHRpb25zLmxlbmd0aDtcclxuICAgIGlmICghY291bnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbmV4dCA9IHRoaXMuYWN0aXZlT3B0aW9uSW5kZXggKyBkZWx0YTtcclxuICAgIC8vIFdyYXAgYXJvdW5kIHNvIHRoZSBoaWdobGlnaHQgY3ljbGVzIHRocm91Z2ggdGhlIGxpc3QuXHJcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbkluZGV4ID0gKG5leHQgKyBjb3VudCkgJSBjb3VudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGdpdmVuIHJlc3VsdCBpbmRleCBpcyB0aGUga2V5Ym9hcmQtaGlnaGxpZ2h0ZWQgcm93LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtdGhlIG9wdGlvbidzIGluZGV4LlxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgaXNBY3RpdmVPcHRpb24oaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGluZGV4ID09PSB0aGlzLmFjdGl2ZU9wdGlvbkluZGV4O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyB0aGUgdHlwZWQgZnJlZS10ZXh0IHZhbHVlIGFzIGEgc2VsZWN0aW9uIChjaGlwKSBhZnRlciB2YWxpZGF0aW5nIGl0c1xyXG4gICAqIGxlbmd0aCBhbmQgcGF0dGVybiAocGFyaXR5IHdpdGggdGhlIHByZXZpb3VzIGNoaXAtaW5wdXQgYmVoYXZpb3IpLlxyXG4gICAqIEBtZW1iZXJvZiBPcmdNdWx0aVNlbGVjdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGFkZFR5cGVkVmFsdWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2VhcmNoVGV4dC50cmltKCk7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvciA9IHRoaXMudmFsaWRhdGVGcmVlVGV4dCh2YWx1ZSk7XHJcbiAgICBpZiAodmFsaWRhdGlvbkVycm9yKSB7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdmFsaWRhdGlvbkVycm9yO1xyXG4gICAgICAvLyBLZWVwIHRoZSBmaWVsZCBmbGFnZ2VkIGludmFsaWQgc28gdGhlIHBhcmVudCdzIFNhdmUgYnV0dG9uIHN0YXlzXHJcbiAgICAgIC8vIGRpc2FibGVkIGV2ZW4gd2hlbiBhIHZhbGlkIGNoaXAgYWxyZWFkeSBleGlzdHMg4oCUIHRoZSB1bmNvbW1pdHRlZCB0b2tlblxyXG4gICAgICAvLyBpcyBpbnZhbGlkIGFuZCBtdXN0IGJlIGNvcnJlY3RlZCBvciBjbGVhcmVkIGJlZm9yZSBzdWJtaXR0aW5nLlxyXG4gICAgICB0aGlzLmVtaXRJbnZhbGlkU3RhdGUodHJ1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIEF2b2lkIGR1cGxpY2F0ZXMgKGNhc2UtaW5zZW5zaXRpdmUgYnkgbmFtZSkuXHJcbiAgICBjb25zdCBleGlzdHMgPSB0aGlzLl9zZWxlY3RlZE9wdGlvbnMuc29tZShcclxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IHZhbHVlLnRvTG93ZXJDYXNlKClcclxuICAgICk7XHJcbiAgICBpZiAoIWV4aXN0cykge1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZE9wdGlvbnMgPSBbXHJcbiAgICAgICAgLi4udGhpcy5fc2VsZWN0ZWRPcHRpb25zLFxyXG4gICAgICAgIHsgaWQ6ICcnLCBuYW1lOiB2YWx1ZSB9LFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLmVtaXRTZWxlY3Rpb24oKTtcclxuICAgIH1cclxuICAgIC8vIFRva2VuIGNvbW1pdHRlZCBzdWNjZXNzZnVsbHkg4oCUIGlucHV0IGlzIGNsZWFyZWQsIHNvIHRoZSBmaWVsZCBpcyB2YWxpZC5cclxuICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgYSBmcmVlLXRleHQgb3JnYW5pemF0aW9uIHZhbHVlIGFnYWluc3QgdGhlIHNoYXJlZCBtaW4vbWF4L3BhdHRlcm5cclxuICAgKiBydWxlcy4gUmV0dXJucyBhbiBlcnJvciBtZXNzYWdlIHdoZW4gaW52YWxpZCwgb3RoZXJ3aXNlIGFuIGVtcHR5IHN0cmluZy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLXRoZSB0eXBlZCB2YWx1ZS5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgdmFsaWRhdGVGcmVlVGV4dCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yO1xyXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA8IEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5yZXByZXNlbnRpbmdPcmdOYW1lTWluTGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlcz8ubGltaXQ/LnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbk1pbkNoYXJzID8/ICcnO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5yZXByZXNlbnRpbmdPcmdOYW1lTWF4TGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlcz8ubGltaXQ/LnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbk1heENoYXJzID8/ICcnO1xyXG4gICAgfVxyXG4gICAgaWYgKCFHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlcz8ucGF0dGVybj8ucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uID8/ICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyBzZWxlY3Rpb24gb2YgYSByZXN1bHQgb3B0aW9uLiBLZWVwcyB0aGUgZHJvcGRvd24gb3BlbiBhbmQgdGhlIHR5cGVkXHJcbiAgICogdGV4dCBpbnRhY3Qgc28gdGhlIHVzZXIgY2FuIGtlZXAgc2VsZWN0aW5nLlxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9ufSBvcHRpb24gLXRoZSBjbGlja2VkIHJlc3VsdCBvcHRpb24uXHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgdG9nZ2xlT3B0aW9uKG9wdGlvbjogU2VsZWN0T3B0aW9uKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX3NlbGVjdGVkT3B0aW9ucy5maW5kSW5kZXgoKGl0ZW0pID0+XHJcbiAgICAgIHRoaXMuaXNTYW1lT3B0aW9uKGl0ZW0sIG9wdGlvbilcclxuICAgICk7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZE9wdGlvbnMgPSB0aGlzLl9zZWxlY3RlZE9wdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgIChfLCBpKSA9PiBpICE9PSBpbmRleFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuX3NlbGVjdGVkT3B0aW9ucywgb3B0aW9uXTtcclxuICAgIH1cclxuICAgIHRoaXMuZW1pdFNlbGVjdGlvbigpO1xyXG4gICAgLy8gS2VlcCBmb2N1cyBpbiB0aGUgaW5wdXQgc28gdGhlIHVzZXIgY2FuIGNvbnRpbnVlIHR5cGluZy9zZWxlY3RpbmcuXHJcbiAgICB0aGlzLnNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciBhbiBvcHRpb24gaXMgY3VycmVudGx5IHNlbGVjdGVkIChkcml2ZXMgdGhlIGNoZWNrYm94IGNoZWNrZWQgc3RhdGUpLlxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9ufSBvcHRpb24gLW9wdGlvbiB0byB0ZXN0LlxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgaXNTZWxlY3RlZChvcHRpb246IFNlbGVjdE9wdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkT3B0aW9ucy5zb21lKChpdGVtKSA9PlxyXG4gICAgICB0aGlzLmlzU2FtZU9wdGlvbihpdGVtLCBvcHRpb24pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWRlbnRpdHkgY2hlY2sgc2hhcmVkIGJ5IGlzU2VsZWN0ZWQgLyB0b2dnbGVPcHRpb24gLyByZW1vdmVPcHRpb24gc28gYWxsXHJcbiAgICogdGhyZWUgYWdyZWUgb24gd2hhdCBcInRoZSBzYW1lIG9wdGlvblwiIG1lYW5zLlxyXG4gICAqXHJcbiAgICogV2h5IG5vdCBhIHN0cmljdCBpZCA9PT0gaWQgJiYgbmFtZSA9PT0gbmFtZSBtYXRjaDogU2VsZWN0T3B0aW9uLmlkIGlzXHJcbiAgICogYG51bWJlciB8IHN0cmluZ2AsIGFuZCB0aGUgdHdvIHNpZGVzIGJlaW5nIGNvbXBhcmVkIGRvIG5vdCBhbHdheXMgY2FycnkgdGhlXHJcbiAgICogc2FtZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2FtZSBvcmdhbml6YXRpb24uIEEgZnJlc2hseSBzZWFyY2hlZCBBUEkgcmVzdWx0XHJcbiAgICogY2FuIGFycml2ZSB3aXRoIGEgbnVtZXJpYyBpZCB3aGlsZSB0aGUgYWxyZWFkeS1zZWxlY3RlZCB2YWx1ZSAoZnJvbSBlZGl0XHJcbiAgICogcHJlZmlsbCwgb3IgYSBwcmV2aW91cyBzZWFyY2gpIGhvbGRzIHRoZSBzdHJpbmcgZm9ybSBvZiB0aGF0IHNhbWUgaWQsIHNvIGFcclxuICAgKiBzdHJpY3QgPT09IG1pc3NlcyB0aGVtLiBGcmVlLXRleHQgY2hpcHMgYXJlIGFkZGVkIHdpdGggYW4gZW1wdHkgaWRcclxuICAgKiAoc2VlIGFkZFR5cGVkVmFsdWUpLCBzbyB3aGVuIHRoZSBzYW1lIG5hbWUgbGF0ZXIgY29tZXMgYmFjayBmcm9tIHRoZSBBUElcclxuICAgKiB3aXRoIGEgcmVhbCBpZCB0aGVyZSBpcyBubyBpZCB0byBtYXRjaCBvbiBhdCBhbGwuIEJvdGggY2FzZXMgbWFkZSB0aGVcclxuICAgKiBkcm9wZG93biBjaGVja2JveCByZW5kZXIgdW5jaGVja2VkIGZvciBhbiBvcHRpb24gdGhhdCBpcyBpbiBmYWN0IHNlbGVjdGVkLlxyXG4gICAqXHJcbiAgICogUnVsZTpcclxuICAgKiAgLSBJZiBCT1RIIHNpZGVzIGhhdmUgYSBub24tZW1wdHkgaWQsIG1hdGNoIGJ5IFN0cmluZyhpZCkgPT09IFN0cmluZyhpZClcclxuICAgKiAgICAobnVtYmVyLXZzLXN0cmluZyBzYWZlKS5cclxuICAgKiAgLSBPdGhlcndpc2UgKGVpdGhlciBzaWRlIGlzIGEgZnJlZS10ZXh0IGNoaXAgd2l0aCBubyBpZCkgZmFsbCBiYWNrIHRvIGFcclxuICAgKiAgICB0cmltbWVkLCBjYXNlLWluc2Vuc2l0aXZlIG5hbWUgbWF0Y2guXHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb259IGEgLWZpcnN0IG9wdGlvbi5cclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wdGlvbn0gYiAtc2Vjb25kIG9wdGlvbi5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIHdoZW4gYm90aCByZWZlciB0byB0aGUgc2FtZSBvcmdhbml6YXRpb24uXHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc1NhbWVPcHRpb24oYTogU2VsZWN0T3B0aW9uLCBiOiBTZWxlY3RPcHRpb24pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGFJZCA9IGE/LmlkO1xyXG4gICAgY29uc3QgYklkID0gYj8uaWQ7XHJcbiAgICBjb25zdCBhSGFzSWQgPSBhSWQgIT09IHVuZGVmaW5lZCAmJiBhSWQgIT09IG51bGwgJiYgYCR7YUlkfWAgIT09ICcnO1xyXG4gICAgY29uc3QgYkhhc0lkID0gYklkICE9PSB1bmRlZmluZWQgJiYgYklkICE9PSBudWxsICYmIGAke2JJZH1gICE9PSAnJztcclxuICAgIGlmIChhSGFzSWQgJiYgYkhhc0lkKSB7XHJcbiAgICAgIHJldHVybiBgJHthSWR9YCA9PT0gYCR7YklkfWA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBhTmFtZSA9IChhPy5uYW1lID8/ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGJOYW1lID0gKGI/Lm5hbWUgPz8gJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmV0dXJuIGFOYW1lICE9PSAnJyAmJiBhTmFtZSA9PT0gYk5hbWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgc2VsZWN0ZWQgY2hpcC5cclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wdGlvbn0gb3B0aW9uIC10aGUgb3B0aW9uIHRvIHJlbW92ZS5cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICByZW1vdmVPcHRpb24ob3B0aW9uOiBTZWxlY3RPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkT3B0aW9ucyA9IHRoaXMuX3NlbGVjdGVkT3B0aW9ucy5maWx0ZXIoXHJcbiAgICAgIChpdGVtKSA9PiAhdGhpcy5pc1NhbWVPcHRpb24oaXRlbSwgb3B0aW9uKVxyXG4gICAgKTtcclxuICAgIHRoaXMuZW1pdFNlbGVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXJzIGFsbCBzZWxlY3RlZCBjaGlwcy5cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICBjbGVhckFsbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmVtaXRTZWxlY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFycyB0aGUgbGVmdG92ZXIgdHlwZWQgdGV4dCBvbiBibHVyIChvbGQgYmVoYXZpb3IpIGFuZCBjbG9zZXMgdGhlXHJcbiAgICogZHJvcGRvd24uIERlZmVycmVkIHNvIGEgY2xpY2sgb24gYSBkcm9wZG93biBvcHRpb24gKHdoaWNoIGFsc28gYmx1cnMgdGhlXHJcbiAgICogaW5wdXQpIGlzIGhhbmRsZWQgZmlyc3QuXHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1RvdWNoZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5ibHVyVGltZXI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmJsdXJUaW1lciA9IHRpbWVyKDE1MCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgLy8gSWYgZm9jdXMgbW92ZWQgaW50byB0aGUgZHJvcGRvd24gKG9wdGlvbiBjbGljayksIHRoZSBjbGljayBoYW5kbGVyXHJcbiAgICAgIC8vIHJlLWZvY3VzZXMgdGhlIGlucHV0LCBzbyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlzIHRoZSBpbnB1dCBhZ2Fpbi5cclxuICAgICAgY29uc3QgYWN0aXZlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcclxuICAgICAgaWYgKGFjdGl2ZSA9PT0gdGhpcy5zZWFyY2hJbnB1dD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNsZWFyU2VhcmNoVGV4dCgpO1xyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZmllbGRCbHVyLmVtaXQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgcmVxdWlyZWQgZXJyb3Igc2hvdWxkIHNob3cgKHRvdWNoZWQsIG5vIHNlbGVjdGlvbikuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgc2hvd1JlcXVpcmVkRXJyb3IoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnJlcXVpcmVkICYmIHRoaXMuaXNUb3VjaGVkICYmIHRoaXMuX3NlbGVjdGVkT3B0aW9ucy5sZW5ndGggPT09IDBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhcnMgdGhlIHR5cGVkIHNlYXJjaCB0ZXh0IGFuZCBoaWRlcyB0aGUgcmVzdWx0cy5cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFyU2VhcmNoVGV4dCgpOiB2b2lkIHtcclxuICAgIC8vIENhbmNlbCBhbnkgcGVuZGluZyBkZWJvdW5jZWQgc2VhcmNoIHNvIGEgYmx1ci9jbGVhciBiZWZvcmUgdGhlIHRpbWVyXHJcbiAgICAvLyBleHBpcmVzIGRvZXMgbm90IGVtaXQgdGhlIG5vdy1jbGVhcmVkIHF1ZXJ5IHRvIHRoZSBwYXJlbnQuXHJcbiAgICB0aGlzLnNlYXJjaERlYm91bmNlPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5zZWFyY2hEZWJvdW5jZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBbXTtcclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgICAvLyBObyBsZWZ0b3ZlciB0ZXh0IOKAlCB0aGUgZmllbGQgaXMgbm8gbG9uZ2VyIGhvbGRpbmcgYW4gaW52YWxpZCB0b2tlbi5cclxuICAgIHRoaXMuZW1pdEludmFsaWRTdGF0ZShmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgY3VycmVudCBzZWxlY3Rpb24gdG8gdGhlIHBhcmVudC5cclxuICAgKiBAbWVtYmVyb2YgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGVtaXRTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KFxyXG4gICAgICB0aGlzLl9zZWxlY3RlZE9wdGlvbnMubWFwKChvcHRpb24pID0+ICh7XHJcbiAgICAgICAgaWQ6IG9wdGlvbi5pZCxcclxuICAgICAgICBuYW1lOiBvcHRpb24ubmFtZSxcclxuICAgICAgfSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhY2tCeSBmb3IgYm90aCByZXN1bHQgYW5kIGNoaXAgbGlzdHMuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC1saXN0IGluZGV4LlxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9ufSBvcHRpb24gLXRoZSBvcHRpb24uXHJcbiAgICogQHJldHVybiB7KHN0cmluZyB8IG51bWJlcil9XHJcbiAgICogQG1lbWJlcm9mIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIG9wdGlvbjogU2VsZWN0T3B0aW9uKTogc3RyaW5nIHwgbnVtYmVyIHtcclxuICAgIHJldHVybiBgJHtvcHRpb24uaWR9LSR7b3B0aW9uLm5hbWV9YDtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hEZWJvdW5jZT8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuYmx1clRpbWVyPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdFwiXHJcbiAgW2NsYXNzLmllZWVzYS1vcmctbXVsdGktc2VsZWN0LS1pbnZhbGlkXT1cInNob3dSZXF1aXJlZEVycm9yIHx8IGVycm9yTWVzc2FnZVwiXHJcbj5cclxuICA8bGFiZWwgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdF9fbGFiZWwgaWVlZXNhLWJvZHktc20tMTRcIj5cclxuICAgIHt7IGxhYmVsIH19XHJcbiAgPC9sYWJlbD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImllZWVzYS1vcmctbXVsdGktc2VsZWN0X19maWVsZFwiPlxyXG4gICAgPCEtLVxyXG4gICAgICBDaGlwcyBhbmQgdGhlIHNlYXJjaCBpbnB1dCBmbG93IHRvZ2V0aGVyIGlubGluZSAobGlrZSB0aGUgTWF0ZXJpYWxcclxuICAgICAgY2hpcC1ncmlkKS4gVGhpcyBrZWVwcyBhIHNpbmdsZS1yb3cgZmllbGQgYXBwZWFyYW5jZSB0aGF0IGdyb3dzIGFzIGNoaXBzXHJcbiAgICAgIHdyYXAsIHdpdGggdGhlIGNsZWFyLWFsbCBidXR0b24gcGlubmVkIHRvIHRoZSByaWdodCBhcyBhIHN1ZmZpeC5cclxuICAgIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImllZWVzYS1vcmctbXVsdGktc2VsZWN0X19jb250cm9sXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdF9fY2hpcFwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWxlY3RlZE9wdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJvcHRpb24ubmFtZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1vcmctbXVsdGktc2VsZWN0X19jaGlwLWxhYmVsXCI+XHJcbiAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX2NoaXAtcmVtb3ZlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZSAnICsgb3B0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInJlbW92ZU9wdGlvbihvcHRpb24pXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX2NoaXAtcmVtb3ZlLWljb25cIlxyXG4gICAgICAgICAgICAqbmdJZj1cInJlbW92ZUljb25VUkxcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8dXNlIFthdHRyLnhsaW5rOmhyZWZdPVwicmVtb3ZlSWNvblVSTFwiPjwvdXNlPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFyZW1vdmVJY29uVVJMXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgI3NlYXJjaElucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX2lucHV0IGllZWVzYS10aXRsZS1zbS0xNlwiXHJcbiAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcclxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc0Ryb3Bkb3duT3BlblwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJvcHRpb25JZFByZWZpeCArICdsaXN0Ym94J1wiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIlxyXG4gICAgICAgICAgaXNEcm9wZG93bk9wZW4gJiYgYWN0aXZlT3B0aW9uSW5kZXggPj0gMFxyXG4gICAgICAgICAgICA/IG9wdGlvbklkUHJlZml4ICsgYWN0aXZlT3B0aW9uSW5kZXhcclxuICAgICAgICAgICAgOiBudWxsXHJcbiAgICAgICAgXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX2NsZWFyLWFsbFwiXHJcbiAgICAgIFttYXRUb29sdGlwXT1cIidDbGVhciBhbGwnXCJcclxuICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIGFsbFwiXHJcbiAgICAgICpuZ0lmPVwic2VsZWN0ZWRPcHRpb25zLmxlbmd0aFwiXHJcbiAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcclxuICAgID5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX2NsZWFyLWFsbC1pY29uXCJcclxuICAgICAgICAqbmdJZj1cImNsZWFyQWxsSWNvblVSTFwiXHJcbiAgICAgID5cclxuICAgICAgICA8dXNlIFthdHRyLnhsaW5rOmhyZWZdPVwiY2xlYXJBbGxJY29uVVJMXCI+PC91c2U+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIiFjbGVhckFsbEljb25VUkxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPCEtLVxyXG4gICAgICBDdXN0b20gcmVzdWx0cyBkcm9wZG93bi4gRnVsbHkgb3duZWQgKG5vdCBtYXQtYXV0b2NvbXBsZXRlKSBzbyBhIHBpY2sgbmV2ZXJcclxuICAgICAgY2xvc2VzIHRoZSBwYW5lbCBvciBvdmVyd3JpdGVzIHRoZSB0eXBlZCB0ZXh0LiBtb3VzZWRvd24gaXMgcHJldmVudGVkIHNvXHJcbiAgICAgIGNsaWNraW5nIGEgcm93IGRvZXMgbm90IGJsdXIgdGhlIGlucHV0IGJlZm9yZSB0aGUgY2xpY2sgcmVnaXN0ZXJzLlxyXG4gICAgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX2Ryb3Bkb3duXCJcclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxyXG4gICAgICBbaWRdPVwib3B0aW9uSWRQcmVmaXggKyAnbGlzdGJveCdcIlxyXG4gICAgICBhcmlhLW11bHRpc2VsZWN0YWJsZT1cInRydWVcIlxyXG4gICAgICAqbmdJZj1cImlzRHJvcGRvd25PcGVuICYmIG9wdGlvbnMubGVuZ3RoXCJcclxuICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1vcmctbXVsdGktc2VsZWN0X19vcHRpb25cIlxyXG4gICAgICAgIHJvbGU9XCJvcHRpb25cIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgICBbaWRdPVwib3B0aW9uSWRQcmVmaXggKyBpXCJcclxuICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQob3B0aW9uKVwiXHJcbiAgICAgICAgW2NsYXNzLmllZWVzYS1vcmctbXVsdGktc2VsZWN0X19vcHRpb24tLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQob3B0aW9uKVwiXHJcbiAgICAgICAgW2NsYXNzLmllZWVzYS1vcmctbXVsdGktc2VsZWN0X19vcHRpb24tLWFjdGl2ZV09XCJpc0FjdGl2ZU9wdGlvbihpKVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU9wdGlvbihvcHRpb24pXCJcclxuICAgICAgICAobW91c2VlbnRlcik9XCJhY3RpdmVPcHRpb25JbmRleCA9IGlcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2Etb3JnLW11bHRpLXNlbGVjdF9fY2hlY2tib3hcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQob3B0aW9uKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcclxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICA+PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX29wdGlvbi1sYWJlbCBpZWVlc2EtdGl0bGUtc20tMTZcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIElubGluZSBmcmVlLXRleHQgdmFsaWRhdGlvbiBlcnJvciAoRW50ZXIgcGF0aCkgLS0+XHJcbiAgPHBcclxuICAgIGNsYXNzPVwiaWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RfX2Vycm9yIGllZWVzYS1ib2R5LXNtLTE0XCJcclxuICAgICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCJcclxuICA+XHJcbiAgICB7eyBlcnJvck1lc3NhZ2UgfX1cclxuICA8L3A+XHJcblxyXG4gIDwhLS0gUmVxdWlyZWQgZXJyb3IgKHRvdWNoZWQsIG5vdGhpbmcgc2VsZWN0ZWQpIC0tPlxyXG4gIDxwXHJcbiAgICBjbGFzcz1cImllZWVzYS1vcmctbXVsdGktc2VsZWN0X19lcnJvciBpZWVlc2EtYm9keS1zbS0xNFwiXHJcbiAgICAqbmdJZj1cInNob3dSZXF1aXJlZEVycm9yICYmICFlcnJvck1lc3NhZ2VcIlxyXG4gID5cclxuICAgIHt7IGFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkIH19XHJcbiAgPC9wPlxyXG5cclxuICA8IS0tIFN1cHBvcnQvaGVscCB0ZXh0IC0tPlxyXG4gIDxwXHJcbiAgICBjbGFzcz1cImllZWVzYS1vcmctbXVsdGktc2VsZWN0X19zdXBwb3J0IGllZWVzYS1ib2R5LXNtLTE0XCJcclxuICAgICpuZ0lmPVwic3VwcG9ydE1lc3NhZ2UgJiYgIWVycm9yTWVzc2FnZSAmJiAhc2hvd1JlcXVpcmVkRXJyb3JcIlxyXG4gID5cclxuICAgIHt7IHN1cHBvcnRNZXNzYWdlIH19XHJcbiAgPC9wPlxyXG48L2Rpdj5cclxuIl19