master-control 0.4.92 → 0.4.94

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.
@@ -26,7 +26,16 @@ export class AnnuityCalculatorRadioComponent {
26
26
  });
27
27
  }
28
28
  ngAfterViewInit() {
29
- if (this.inputValue !== null && this.inputValue !== undefined) {
29
+ const f = this.field();
30
+ const selectVal = f?.configData?.selectValue;
31
+ if (selectVal !== null && selectVal !== undefined && selectVal !== '') {
32
+ const matchedOption = f?.options?.find((opt) => opt.value === selectVal);
33
+ if (matchedOption) {
34
+ this.inputValue = selectVal;
35
+ setTimeout(() => this.updateArrowPosition(), 0);
36
+ }
37
+ }
38
+ else if (this.inputValue !== null && this.inputValue !== undefined) {
30
39
  setTimeout(() => this.updateArrowPosition(), 0);
31
40
  }
32
41
  }
@@ -92,7 +101,7 @@ export class AnnuityCalculatorRadioComponent {
92
101
  useExisting: forwardRef(() => AnnuityCalculatorRadioComponent),
93
102
  multi: true
94
103
  }
95
- ], ngImport: i0, template: "\n\n<div class=\"acr-wrapper\">\n\n <!-- Top Header Label -->\n <div class=\"acr-sub-label\" *ngIf=\"field() && field()?.isVisible\">\n {{ field()?.label }}\n <span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n </div>\n\n <!-- Radio Option Cards -->\n <div class=\"radio-btn-group1\" *ngIf=\"field()?.configData?.isShowRadioOption\">\n <div\n class=\"annuity-radio-card-gender\"\n *ngFor=\"let data of field()?.options\"\n [class.selected]=\"inputValue === data.value\"\n [class.disable-radio-btn]=\"field()?.isDisable || data.disabled === true || data.disabled === 'true'\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n >\n <!-- Hidden native radio input \u2014 enables proper [id]/[name] binding for form semantics.\n Parent projects can bind (change)=\"myHandler($event)\" on the host component. -->\n <input\n type=\"radio\"\n style=\"position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;\"\n [id]=\"field()?.fieldName\"\n [name]=\"field()?.fieldName\"\n [value]=\"data.value\"\n [checked]=\"inputValue === data.value\"\n (growthRateChange)=\"toggleRadio(data.value, $event)\"\n />\n <span\n class=\"forRadioLabelAnnuityRadio\"\n [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color\n }\"\n >{{ data.label }}</span>\n </div>\n </div>\n\n <!-- Card Container -->\n <div class=\"acr-card-container\" *ngIf=\"field()?.configData?.isShowCard\">\n\n <div class=\"acr-card\">\n <div class=\"acr-sub-label\" *ngIf=\"field()?.configData?.subLabel\">\n {{ field()?.configData?.subLabel }}\n </div>\n\n <div class=\"acr-cards-row col-md-3 col-sm-6 col-xs-12 col-lg-3\">\n <div\n class=\"acr-card-option\"\n *ngFor=\"let card of field()?.configData?.cardsValue\"\n [class.selected]=\"value === card.value\"\n [class.disabled]=\"card.disabled\"\n (click)=\"selectCard(card)\"\n >\n <!-- Hidden native radio input \u2014 enables proper [id]/[name] binding for form semantics. -->\n <input\n type=\"radio\"\n style=\"position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;\"\n [id]=\"field()?.fieldName\"\n [name]=\"field()?.fieldName\"\n [value]=\"card.value\"\n [checked]=\"value === card.value\"\n (change)=\"selectCard(card)\"\n />\n <div class=\"acr-card-main-value\">\n <span class=\"acr-card-main-value\">{{ card.mainValue }}</span><span class=\"acr-card-main-value\"></span>\n </div>\n <div class=\"acr-card-sub-value\">\n <span class=\"acr-card-sub-value\">{{ card.subValue }}</span><span class=\"acr-card-sub-value\"></span>\n </div>\n <div class=\"acr-card-rate\">{{ card.growthRate }} Annuity Rate</div>\n <div class=\"acr-card-details\">\n <div class=\"acr-card-detail-row\">\n <span>Guaranteed </span>\n <span>:</span>\n <strong>{{ card.guaranteed }}</strong>\n </div>\n <div class=\"acr-card-detail-row\">\n <span>Variable </span>\n <span>:</span>\n <strong>{{ card.variable }}</strong>\n </div>\n </div>\n <!-- <div class=\"acr-card-type\">\n <button class=\"acr-card-type-btn\" [ngClass]=\"{\n 'btn-high': card.value === 'High',\n 'btn-medium': card.value === 'Medium',\n 'btn-low': card.value !== 'High' && card.value !== 'Medium'\n }\">{{ card.value }} variable</button>\n </div> -->\n </div>\n </div>\n <!-- Note \u2014 full width, vertically aligned with radio group and card container -->\n <div class=\"acr-note\" *ngIf=\"field()?.configData?.infoMessage\">\n <strong>Note:</strong> {{ field()?.configData?.infoMessage }}\n </div>\n </div>\n </div><!-- /acr-card-container -->\n\n</div>\n", styles: [".acr-wrapper{font-family:mulish!important;width:100%;display:flex;flex-direction:column}.forRadioLabelAnnuityRadio{font-size:12px!important;font-weight:400!important;cursor:pointer;color:#444!important;min-width:25%!important;height:fit-content}.required-star{color:red;margin-left:2px}.radio-btn-group1{display:flex;gap:4px;flex-wrap:wrap;padding-right:10px;padding-left:10px;max-width:max-content;height:90px;max-height:100px!important;line-height:15px}.annuity-radio-card-gender{border:1px solid rgba(218,218,218,1);border-radius:4px;padding:6px 20px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:1;-webkit-user-select:none;user-select:none;position:relative;overflow:visible}.annuity-radio-card-gender.selected{border-color:#fb0;border-width:1.6px}.annuity-radio-card-gender.selected:after{content:\"\";position:absolute;bottom:-16px;left:50%;transform:translate(-50%);width:0;height:0;z-index:3}.annuity-radio-card-gender.selected:before{content:\"\";position:absolute;bottom:-12px;left:50%;transform:translate(-50%);width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-top:11px solid #fff;z-index:4}.annuity-radio-card-gender:hover:not(.disable-radio-btn){border-color:#ffd600}.disable-radio-btn{opacity:.55;pointer-events:none;background:#f5f5f5}.acr-card-container{position:relative;width:100%;padding-top:22px;box-sizing:border-box;padding-right:10px;padding-left:10px}.acr-card{background:#fff;border:1px solid rgba(218,218,218,1);border-radius:14px;padding:20px 18px 16px;width:100%;position:relative;overflow:visible;box-sizing:border-box}.acr-card:after{content:\"\";position:absolute;bottom:100%;left:var(--arrow-left, 40px);transform:translate(-50%);transition:left .2s ease;border-width:14px;border-style:solid;border-color:transparent transparent rgba(218,218,218,1) transparent;z-index:2}.acr-card:before{content:\"\";position:absolute;bottom:100%;left:var(--arrow-left, 40px);transform:translate(-50%);transition:left .2s ease;border-width:12px;border-style:solid;border-color:transparent transparent rgba(255,255,255,1) transparent;z-index:3}.acr-sub-label{font-size:10px;font-weight:700;color:#444;margin-bottom:10px;padding-right:10px;padding-left:10px}.acr-cards-row{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:30px}.acr-card-option{background:#fff;border:2px solid #E0E0E0;border-radius:12px;padding:18px 16px 28px;flex:0 0 calc((100% - 28px) / 3);max-width:calc((100% - 28px) / 3);min-width:0;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;-webkit-user-select:none;user-select:none;position:relative;overflow:visible}.acr-card-option.selected{border-color:#ffd600;box-shadow:0 0 0 1px #ffd600}.acr-card-option:hover:not(.disabled){border-color:#ffd600}.acr-card-option.disabled{opacity:.5;pointer-events:none}.acr-card-main-value{font-size:16px;font-weight:700;color:#444;margin-bottom:3px;line-height:20px}.acr-card-main-sub-value{font-size:16px;font-weight:400;color:#444;margin-bottom:3px;line-height:20px}.acr-card-sub-value{font-size:10px;font-weight:700;color:#444;line-height:14px}.acr-card-sub-sub-value{font-size:10px;font-weight:400;color:#444;line-height:14px}.acr-card-rate{background:linear-gradient(to right,#fb0,#fff7df,#fb0);color:#444;font-weight:700;font-size:10px;line-height:14px;padding:4px;margin-bottom:10px;margin-top:6px;width:100%;height:22px;text-align:center;box-sizing:border-box}.acr-card-details{width:100%;margin-bottom:14px;background-color:#f5f5f5;padding-left:10px;padding-right:10px;display:grid;grid-template-columns:max-content auto 1fr;column-gap:4px}.acr-card-detail-row{display:contents;font-size:10px;color:#444}.acr-card-detail-row span{font-weight:400;font-size:8px;line-height:14px;color:#444}.acr-card-detail-row strong{font-weight:600;color:#444;font-size:8px;line-height:14px;text-align:right}.acr-card-type{position:absolute;bottom:-14px;left:0;right:0;display:flex;justify-content:center}.acr-card-type-btn{border:none;border-radius:20px;padding:5px 22px;font-size:13px;font-weight:600;cursor:pointer;outline:none}.btn-high{background:#00946f;color:#fff;font-weight:700;font-size:10px;line-height:14px}.btn-medium{background:#66ccb2;color:#444;font-weight:700;font-size:10px;line-height:14px}.btn-low{background:#cef0e8;color:#444;font-weight:700;font-size:10px;line-height:14px}.acr-note{background:#ececec;color:#222;font-size:12px;border-radius:4px;padding:4px 8px;line-height:16px;width:100%;box-sizing:border-box;margin-top:8px;font-weight:400}.acr-note strong{font-weight:700;font-size:12px;line-height:16px;color:#222}\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: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }] });
104
+ ], ngImport: i0, template: "\n\n<div class=\"acr-wrapper\">\n\n <!-- Top Header Label -->\n <div class=\"acr-sub-label\" *ngIf=\"field() && field()?.isVisible\">\n {{ field()?.label }}\n <span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n </div>\n\n <!-- Radio Option Cards -->\n <div class=\"radio-btn-group1\" *ngIf=\"field()?.configData?.isShowRadioOption\">\n <div\n class=\"annuity-radio-card-gender\"\n *ngFor=\"let data of field()?.options\"\n [class.selected]=\"inputValue === data.value\"\n [class.disable-radio-btn]=\"field()?.isDisable || data.disabled === true || data.disabled === 'true'\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n >\n <!-- Hidden native radio input \u2014 enables proper [id]/[name] binding for form semantics.\n Parent projects can bind (change)=\"myHandler($event)\" on the host component. -->\n <input\n type=\"radio\"\n style=\"position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;\"\n [id]=\"field()?.fieldName\"\n [name]=\"field()?.fieldName\"\n [value]=\"data.value\"\n [checked]=\"inputValue === data.value\"\n (growthRateChange)=\"toggleRadio(data.value, $event)\"\n />\n <span\n class=\"forRadioLabelAnnuityRadio\"\n [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color\n }\"\n >{{ data.label }}</span>\n </div>\n </div>\n\n <!-- Card Container -->\n <div class=\"acr-card-container\" *ngIf=\"field()?.configData?.isShowCard\">\n\n <div class=\"acr-card\">\n <div class=\"acr-sub-label\" *ngIf=\"field()?.configData?.subLabel\">\n {{ field()?.configData?.subLabel }}\n </div>\n\n <div class=\"acr-cards-row col-md-3 col-sm-6 col-xs-12 col-lg-3\">\n <div\n class=\"acr-card-option\"\n *ngFor=\"let card of field()?.configData?.cardsValue\"\n [class.selected]=\"value === card.value\"\n [class.disabled]=\"card.disabled\"\n (click)=\"selectCard(card)\"\n >\n <!-- Hidden native radio input \u2014 enables proper [id]/[name] binding for form semantics. -->\n <input\n type=\"radio\"\n style=\"position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;\"\n [id]=\"field()?.fieldName\"\n [name]=\"field()?.fieldName\"\n [value]=\"card.value\"\n [checked]=\"value === card.value\"\n (change)=\"selectCard(card)\"\n />\n <div class=\"acr-card-main-value\">\n <span class=\"acr-card-main-value\">{{ card.mainValue }}</span><span class=\"acr-card-main-value\"></span>\n </div>\n <div class=\"acr-card-sub-value\">\n <span class=\"acr-card-sub-value\">{{ card.subValue }}</span><span class=\"acr-card-sub-value\"></span>\n </div>\n <div class=\"acr-card-rate\">{{ card.growthRate }} Annuity Rate</div>\n <div class=\"acr-card-details\">\n <div class=\"acr-card-detail-row\">\n <span>Guaranteed </span>\n <span>:</span>\n <strong>{{ card.guaranteed }}</strong>\n </div>\n <div class=\"acr-card-detail-row\">\n <span>Variable </span>\n <span>:</span>\n <strong>{{ card.variable }}</strong>\n </div>\n </div>\n <!-- <div class=\"acr-card-type\">\n <button class=\"acr-card-type-btn\" [ngClass]=\"{\n 'btn-high': card.value === 'High',\n 'btn-medium': card.value === 'Medium',\n 'btn-low': card.value !== 'High' && card.value !== 'Medium'\n }\">{{ card.value }} variable</button>\n </div> -->\n </div>\n </div>\n <!-- Note \u2014 full width, vertically aligned with radio group and card container -->\n <div class=\"acr-note\" *ngIf=\"field()?.configData?.infoMessage\">\n <strong>Note:</strong> {{ field()?.configData?.infoMessage }}\n </div>\n </div>\n </div><!-- /acr-card-container -->\n\n</div>\n", styles: [".acr-wrapper{font-family:mulish!important;width:100%;display:flex;flex-direction:column}.forRadioLabelAnnuityRadio{font-size:12px!important;font-weight:400!important;cursor:pointer;color:#444!important;min-width:25%!important;height:fit-content}.required-star{color:red;margin-left:2px}.radio-btn-group1{display:flex;gap:4px;flex-wrap:wrap;padding-right:10px;padding-left:10px;max-width:max-content;height:90px;max-height:100px!important;line-height:15px}.annuity-radio-card-gender{border:1px solid rgba(218,218,218,1);border-radius:4px;padding:6px 20px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:1;-webkit-user-select:none;user-select:none;position:relative;overflow:visible}.annuity-radio-card-gender.selected{border-color:#fb0;border-width:1.6px}.annuity-radio-card-gender.selected:after{content:\"\";position:absolute;bottom:-16px;left:50%;transform:translate(-50%);width:0;height:0;z-index:3}.annuity-radio-card-gender.selected:before{content:\"\";position:absolute;bottom:-12px;left:50%;transform:translate(-50%);width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-top:11px solid #fff;z-index:4}.annuity-radio-card-gender:hover:not(.disable-radio-btn){border-color:#ffd600}.disable-radio-btn{opacity:.55;pointer-events:none;background:#f5f5f5}.acr-card-container{position:relative;width:100%;padding-top:22px;box-sizing:border-box;padding-right:10px;padding-left:10px}.acr-card{background:#fff;border:1px solid rgba(218,218,218,1);border-radius:14px;padding:20px 18px 16px;width:100%;position:relative;overflow:visible;box-sizing:border-box}.acr-card:after{content:\"\";position:absolute;bottom:100%;left:var(--arrow-left, 40px);transform:translate(-50%);transition:left .2s ease;border-width:14px;border-style:solid;border-color:transparent transparent rgba(218,218,218,1) transparent;z-index:2}.acr-card:before{content:\"\";position:absolute;bottom:100%;left:var(--arrow-left, 40px);transform:translate(-50%);transition:left .2s ease;border-width:12px;border-style:solid;border-color:transparent transparent rgba(255,255,255,1) transparent;z-index:3}.acr-sub-label{font-size:10px;font-weight:700;color:#444;margin-bottom:10px;padding-right:10px;padding-left:10px}.acr-cards-row{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:30px}.acr-card-option{background:#fff;border:2px solid #E0E0E0;border-radius:12px;flex:1 1 0;max-width:none;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;-webkit-user-select:none;user-select:none;position:relative;overflow:visible;flex:0 0 calc((100% - 28px) / 3);max-width:calc((100% - 28px) / 3);padding:18px 16px;min-width:0}.acr-card-option.selected{border-color:#ffd600;box-shadow:0 0 0 1px #ffd600}.acr-card-option:hover:not(.disabled){border-color:#ffd600}.acr-card-option.disabled{opacity:.5;pointer-events:none}.acr-card-main-value{font-size:16px;font-weight:700;color:#444;margin-bottom:3px;line-height:20px}.acr-card-main-sub-value{font-size:16px;font-weight:400;color:#444;margin-bottom:3px;line-height:20px}.acr-card-sub-value{font-size:10px;font-weight:700;color:#444;line-height:14px}.acr-card-sub-sub-value{font-size:10px;font-weight:400;color:#444;line-height:14px}.acr-card-rate{background:linear-gradient(to right,#fb0,#fff7df,#fb0);color:#444;font-weight:700;font-size:10px;line-height:14px;padding:4px;margin-bottom:10px;margin-top:6px;width:100%;height:22px;text-align:center;box-sizing:border-box}.acr-card-details{width:100%;margin-bottom:14px;background-color:#f5f5f5;padding-left:10px;padding-right:10px;display:grid;grid-template-columns:max-content auto 1fr;column-gap:4px}.acr-card-detail-row{display:contents;font-size:10px;color:#444}.acr-card-detail-row span{font-weight:400;font-size:8px;line-height:14px;color:#444}.acr-card-detail-row strong{font-weight:600;color:#444;font-size:8px;line-height:14px;text-align:right}.acr-card-type{position:absolute;bottom:-14px;left:0;right:0;display:flex;justify-content:center}.acr-card-type-btn{border:none;border-radius:20px;padding:5px 22px;font-size:13px;font-weight:600;cursor:pointer;outline:none}.btn-high{background:#00946f;color:#fff;font-weight:700;font-size:10px;line-height:14px}.btn-medium{background:#66ccb2;color:#444;font-weight:700;font-size:10px;line-height:14px}.btn-low{background:#cef0e8;color:#444;font-weight:700;font-size:10px;line-height:14px}.acr-note{background:#ececec;color:#222;font-size:12px;border-radius:4px;padding:4px 8px;line-height:16px;width:100%;box-sizing:border-box;margin-top:8px;font-weight:400}.acr-note strong{font-weight:700;font-size:12px;line-height:16px;color:#222}\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: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }] });
96
105
  }
97
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnnuityCalculatorRadioComponent, decorators: [{
98
107
  type: Component,
@@ -103,10 +112,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
103
112
  useExisting: forwardRef(() => AnnuityCalculatorRadioComponent),
104
113
  multi: true
105
114
  }
106
- ], template: "\n\n<div class=\"acr-wrapper\">\n\n <!-- Top Header Label -->\n <div class=\"acr-sub-label\" *ngIf=\"field() && field()?.isVisible\">\n {{ field()?.label }}\n <span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n </div>\n\n <!-- Radio Option Cards -->\n <div class=\"radio-btn-group1\" *ngIf=\"field()?.configData?.isShowRadioOption\">\n <div\n class=\"annuity-radio-card-gender\"\n *ngFor=\"let data of field()?.options\"\n [class.selected]=\"inputValue === data.value\"\n [class.disable-radio-btn]=\"field()?.isDisable || data.disabled === true || data.disabled === 'true'\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n >\n <!-- Hidden native radio input \u2014 enables proper [id]/[name] binding for form semantics.\n Parent projects can bind (change)=\"myHandler($event)\" on the host component. -->\n <input\n type=\"radio\"\n style=\"position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;\"\n [id]=\"field()?.fieldName\"\n [name]=\"field()?.fieldName\"\n [value]=\"data.value\"\n [checked]=\"inputValue === data.value\"\n (growthRateChange)=\"toggleRadio(data.value, $event)\"\n />\n <span\n class=\"forRadioLabelAnnuityRadio\"\n [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color\n }\"\n >{{ data.label }}</span>\n </div>\n </div>\n\n <!-- Card Container -->\n <div class=\"acr-card-container\" *ngIf=\"field()?.configData?.isShowCard\">\n\n <div class=\"acr-card\">\n <div class=\"acr-sub-label\" *ngIf=\"field()?.configData?.subLabel\">\n {{ field()?.configData?.subLabel }}\n </div>\n\n <div class=\"acr-cards-row col-md-3 col-sm-6 col-xs-12 col-lg-3\">\n <div\n class=\"acr-card-option\"\n *ngFor=\"let card of field()?.configData?.cardsValue\"\n [class.selected]=\"value === card.value\"\n [class.disabled]=\"card.disabled\"\n (click)=\"selectCard(card)\"\n >\n <!-- Hidden native radio input \u2014 enables proper [id]/[name] binding for form semantics. -->\n <input\n type=\"radio\"\n style=\"position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;\"\n [id]=\"field()?.fieldName\"\n [name]=\"field()?.fieldName\"\n [value]=\"card.value\"\n [checked]=\"value === card.value\"\n (change)=\"selectCard(card)\"\n />\n <div class=\"acr-card-main-value\">\n <span class=\"acr-card-main-value\">{{ card.mainValue }}</span><span class=\"acr-card-main-value\"></span>\n </div>\n <div class=\"acr-card-sub-value\">\n <span class=\"acr-card-sub-value\">{{ card.subValue }}</span><span class=\"acr-card-sub-value\"></span>\n </div>\n <div class=\"acr-card-rate\">{{ card.growthRate }} Annuity Rate</div>\n <div class=\"acr-card-details\">\n <div class=\"acr-card-detail-row\">\n <span>Guaranteed </span>\n <span>:</span>\n <strong>{{ card.guaranteed }}</strong>\n </div>\n <div class=\"acr-card-detail-row\">\n <span>Variable </span>\n <span>:</span>\n <strong>{{ card.variable }}</strong>\n </div>\n </div>\n <!-- <div class=\"acr-card-type\">\n <button class=\"acr-card-type-btn\" [ngClass]=\"{\n 'btn-high': card.value === 'High',\n 'btn-medium': card.value === 'Medium',\n 'btn-low': card.value !== 'High' && card.value !== 'Medium'\n }\">{{ card.value }} variable</button>\n </div> -->\n </div>\n </div>\n <!-- Note \u2014 full width, vertically aligned with radio group and card container -->\n <div class=\"acr-note\" *ngIf=\"field()?.configData?.infoMessage\">\n <strong>Note:</strong> {{ field()?.configData?.infoMessage }}\n </div>\n </div>\n </div><!-- /acr-card-container -->\n\n</div>\n", styles: [".acr-wrapper{font-family:mulish!important;width:100%;display:flex;flex-direction:column}.forRadioLabelAnnuityRadio{font-size:12px!important;font-weight:400!important;cursor:pointer;color:#444!important;min-width:25%!important;height:fit-content}.required-star{color:red;margin-left:2px}.radio-btn-group1{display:flex;gap:4px;flex-wrap:wrap;padding-right:10px;padding-left:10px;max-width:max-content;height:90px;max-height:100px!important;line-height:15px}.annuity-radio-card-gender{border:1px solid rgba(218,218,218,1);border-radius:4px;padding:6px 20px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:1;-webkit-user-select:none;user-select:none;position:relative;overflow:visible}.annuity-radio-card-gender.selected{border-color:#fb0;border-width:1.6px}.annuity-radio-card-gender.selected:after{content:\"\";position:absolute;bottom:-16px;left:50%;transform:translate(-50%);width:0;height:0;z-index:3}.annuity-radio-card-gender.selected:before{content:\"\";position:absolute;bottom:-12px;left:50%;transform:translate(-50%);width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-top:11px solid #fff;z-index:4}.annuity-radio-card-gender:hover:not(.disable-radio-btn){border-color:#ffd600}.disable-radio-btn{opacity:.55;pointer-events:none;background:#f5f5f5}.acr-card-container{position:relative;width:100%;padding-top:22px;box-sizing:border-box;padding-right:10px;padding-left:10px}.acr-card{background:#fff;border:1px solid rgba(218,218,218,1);border-radius:14px;padding:20px 18px 16px;width:100%;position:relative;overflow:visible;box-sizing:border-box}.acr-card:after{content:\"\";position:absolute;bottom:100%;left:var(--arrow-left, 40px);transform:translate(-50%);transition:left .2s ease;border-width:14px;border-style:solid;border-color:transparent transparent rgba(218,218,218,1) transparent;z-index:2}.acr-card:before{content:\"\";position:absolute;bottom:100%;left:var(--arrow-left, 40px);transform:translate(-50%);transition:left .2s ease;border-width:12px;border-style:solid;border-color:transparent transparent rgba(255,255,255,1) transparent;z-index:3}.acr-sub-label{font-size:10px;font-weight:700;color:#444;margin-bottom:10px;padding-right:10px;padding-left:10px}.acr-cards-row{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:30px}.acr-card-option{background:#fff;border:2px solid #E0E0E0;border-radius:12px;padding:18px 16px 28px;flex:0 0 calc((100% - 28px) / 3);max-width:calc((100% - 28px) / 3);min-width:0;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;-webkit-user-select:none;user-select:none;position:relative;overflow:visible}.acr-card-option.selected{border-color:#ffd600;box-shadow:0 0 0 1px #ffd600}.acr-card-option:hover:not(.disabled){border-color:#ffd600}.acr-card-option.disabled{opacity:.5;pointer-events:none}.acr-card-main-value{font-size:16px;font-weight:700;color:#444;margin-bottom:3px;line-height:20px}.acr-card-main-sub-value{font-size:16px;font-weight:400;color:#444;margin-bottom:3px;line-height:20px}.acr-card-sub-value{font-size:10px;font-weight:700;color:#444;line-height:14px}.acr-card-sub-sub-value{font-size:10px;font-weight:400;color:#444;line-height:14px}.acr-card-rate{background:linear-gradient(to right,#fb0,#fff7df,#fb0);color:#444;font-weight:700;font-size:10px;line-height:14px;padding:4px;margin-bottom:10px;margin-top:6px;width:100%;height:22px;text-align:center;box-sizing:border-box}.acr-card-details{width:100%;margin-bottom:14px;background-color:#f5f5f5;padding-left:10px;padding-right:10px;display:grid;grid-template-columns:max-content auto 1fr;column-gap:4px}.acr-card-detail-row{display:contents;font-size:10px;color:#444}.acr-card-detail-row span{font-weight:400;font-size:8px;line-height:14px;color:#444}.acr-card-detail-row strong{font-weight:600;color:#444;font-size:8px;line-height:14px;text-align:right}.acr-card-type{position:absolute;bottom:-14px;left:0;right:0;display:flex;justify-content:center}.acr-card-type-btn{border:none;border-radius:20px;padding:5px 22px;font-size:13px;font-weight:600;cursor:pointer;outline:none}.btn-high{background:#00946f;color:#fff;font-weight:700;font-size:10px;line-height:14px}.btn-medium{background:#66ccb2;color:#444;font-weight:700;font-size:10px;line-height:14px}.btn-low{background:#cef0e8;color:#444;font-weight:700;font-size:10px;line-height:14px}.acr-note{background:#ececec;color:#222;font-size:12px;border-radius:4px;padding:4px 8px;line-height:16px;width:100%;box-sizing:border-box;margin-top:8px;font-weight:400}.acr-note strong{font-weight:700;font-size:12px;line-height:16px;color:#222}\n"] }]
115
+ ], template: "\n\n<div class=\"acr-wrapper\">\n\n <!-- Top Header Label -->\n <div class=\"acr-sub-label\" *ngIf=\"field() && field()?.isVisible\">\n {{ field()?.label }}\n <span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n </div>\n\n <!-- Radio Option Cards -->\n <div class=\"radio-btn-group1\" *ngIf=\"field()?.configData?.isShowRadioOption\">\n <div\n class=\"annuity-radio-card-gender\"\n *ngFor=\"let data of field()?.options\"\n [class.selected]=\"inputValue === data.value\"\n [class.disable-radio-btn]=\"field()?.isDisable || data.disabled === true || data.disabled === 'true'\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n >\n <!-- Hidden native radio input \u2014 enables proper [id]/[name] binding for form semantics.\n Parent projects can bind (change)=\"myHandler($event)\" on the host component. -->\n <input\n type=\"radio\"\n style=\"position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;\"\n [id]=\"field()?.fieldName\"\n [name]=\"field()?.fieldName\"\n [value]=\"data.value\"\n [checked]=\"inputValue === data.value\"\n (growthRateChange)=\"toggleRadio(data.value, $event)\"\n />\n <span\n class=\"forRadioLabelAnnuityRadio\"\n [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color\n }\"\n >{{ data.label }}</span>\n </div>\n </div>\n\n <!-- Card Container -->\n <div class=\"acr-card-container\" *ngIf=\"field()?.configData?.isShowCard\">\n\n <div class=\"acr-card\">\n <div class=\"acr-sub-label\" *ngIf=\"field()?.configData?.subLabel\">\n {{ field()?.configData?.subLabel }}\n </div>\n\n <div class=\"acr-cards-row col-md-3 col-sm-6 col-xs-12 col-lg-3\">\n <div\n class=\"acr-card-option\"\n *ngFor=\"let card of field()?.configData?.cardsValue\"\n [class.selected]=\"value === card.value\"\n [class.disabled]=\"card.disabled\"\n (click)=\"selectCard(card)\"\n >\n <!-- Hidden native radio input \u2014 enables proper [id]/[name] binding for form semantics. -->\n <input\n type=\"radio\"\n style=\"position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;\"\n [id]=\"field()?.fieldName\"\n [name]=\"field()?.fieldName\"\n [value]=\"card.value\"\n [checked]=\"value === card.value\"\n (change)=\"selectCard(card)\"\n />\n <div class=\"acr-card-main-value\">\n <span class=\"acr-card-main-value\">{{ card.mainValue }}</span><span class=\"acr-card-main-value\"></span>\n </div>\n <div class=\"acr-card-sub-value\">\n <span class=\"acr-card-sub-value\">{{ card.subValue }}</span><span class=\"acr-card-sub-value\"></span>\n </div>\n <div class=\"acr-card-rate\">{{ card.growthRate }} Annuity Rate</div>\n <div class=\"acr-card-details\">\n <div class=\"acr-card-detail-row\">\n <span>Guaranteed </span>\n <span>:</span>\n <strong>{{ card.guaranteed }}</strong>\n </div>\n <div class=\"acr-card-detail-row\">\n <span>Variable </span>\n <span>:</span>\n <strong>{{ card.variable }}</strong>\n </div>\n </div>\n <!-- <div class=\"acr-card-type\">\n <button class=\"acr-card-type-btn\" [ngClass]=\"{\n 'btn-high': card.value === 'High',\n 'btn-medium': card.value === 'Medium',\n 'btn-low': card.value !== 'High' && card.value !== 'Medium'\n }\">{{ card.value }} variable</button>\n </div> -->\n </div>\n </div>\n <!-- Note \u2014 full width, vertically aligned with radio group and card container -->\n <div class=\"acr-note\" *ngIf=\"field()?.configData?.infoMessage\">\n <strong>Note:</strong> {{ field()?.configData?.infoMessage }}\n </div>\n </div>\n </div><!-- /acr-card-container -->\n\n</div>\n", styles: [".acr-wrapper{font-family:mulish!important;width:100%;display:flex;flex-direction:column}.forRadioLabelAnnuityRadio{font-size:12px!important;font-weight:400!important;cursor:pointer;color:#444!important;min-width:25%!important;height:fit-content}.required-star{color:red;margin-left:2px}.radio-btn-group1{display:flex;gap:4px;flex-wrap:wrap;padding-right:10px;padding-left:10px;max-width:max-content;height:90px;max-height:100px!important;line-height:15px}.annuity-radio-card-gender{border:1px solid rgba(218,218,218,1);border-radius:4px;padding:6px 20px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:1;-webkit-user-select:none;user-select:none;position:relative;overflow:visible}.annuity-radio-card-gender.selected{border-color:#fb0;border-width:1.6px}.annuity-radio-card-gender.selected:after{content:\"\";position:absolute;bottom:-16px;left:50%;transform:translate(-50%);width:0;height:0;z-index:3}.annuity-radio-card-gender.selected:before{content:\"\";position:absolute;bottom:-12px;left:50%;transform:translate(-50%);width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-top:11px solid #fff;z-index:4}.annuity-radio-card-gender:hover:not(.disable-radio-btn){border-color:#ffd600}.disable-radio-btn{opacity:.55;pointer-events:none;background:#f5f5f5}.acr-card-container{position:relative;width:100%;padding-top:22px;box-sizing:border-box;padding-right:10px;padding-left:10px}.acr-card{background:#fff;border:1px solid rgba(218,218,218,1);border-radius:14px;padding:20px 18px 16px;width:100%;position:relative;overflow:visible;box-sizing:border-box}.acr-card:after{content:\"\";position:absolute;bottom:100%;left:var(--arrow-left, 40px);transform:translate(-50%);transition:left .2s ease;border-width:14px;border-style:solid;border-color:transparent transparent rgba(218,218,218,1) transparent;z-index:2}.acr-card:before{content:\"\";position:absolute;bottom:100%;left:var(--arrow-left, 40px);transform:translate(-50%);transition:left .2s ease;border-width:12px;border-style:solid;border-color:transparent transparent rgba(255,255,255,1) transparent;z-index:3}.acr-sub-label{font-size:10px;font-weight:700;color:#444;margin-bottom:10px;padding-right:10px;padding-left:10px}.acr-cards-row{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:30px}.acr-card-option{background:#fff;border:2px solid #E0E0E0;border-radius:12px;flex:1 1 0;max-width:none;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;-webkit-user-select:none;user-select:none;position:relative;overflow:visible;flex:0 0 calc((100% - 28px) / 3);max-width:calc((100% - 28px) / 3);padding:18px 16px;min-width:0}.acr-card-option.selected{border-color:#ffd600;box-shadow:0 0 0 1px #ffd600}.acr-card-option:hover:not(.disabled){border-color:#ffd600}.acr-card-option.disabled{opacity:.5;pointer-events:none}.acr-card-main-value{font-size:16px;font-weight:700;color:#444;margin-bottom:3px;line-height:20px}.acr-card-main-sub-value{font-size:16px;font-weight:400;color:#444;margin-bottom:3px;line-height:20px}.acr-card-sub-value{font-size:10px;font-weight:700;color:#444;line-height:14px}.acr-card-sub-sub-value{font-size:10px;font-weight:400;color:#444;line-height:14px}.acr-card-rate{background:linear-gradient(to right,#fb0,#fff7df,#fb0);color:#444;font-weight:700;font-size:10px;line-height:14px;padding:4px;margin-bottom:10px;margin-top:6px;width:100%;height:22px;text-align:center;box-sizing:border-box}.acr-card-details{width:100%;margin-bottom:14px;background-color:#f5f5f5;padding-left:10px;padding-right:10px;display:grid;grid-template-columns:max-content auto 1fr;column-gap:4px}.acr-card-detail-row{display:contents;font-size:10px;color:#444}.acr-card-detail-row span{font-weight:400;font-size:8px;line-height:14px;color:#444}.acr-card-detail-row strong{font-weight:600;color:#444;font-size:8px;line-height:14px;text-align:right}.acr-card-type{position:absolute;bottom:-14px;left:0;right:0;display:flex;justify-content:center}.acr-card-type-btn{border:none;border-radius:20px;padding:5px 22px;font-size:13px;font-weight:600;cursor:pointer;outline:none}.btn-high{background:#00946f;color:#fff;font-weight:700;font-size:10px;line-height:14px}.btn-medium{background:#66ccb2;color:#444;font-weight:700;font-size:10px;line-height:14px}.btn-low{background:#cef0e8;color:#444;font-weight:700;font-size:10px;line-height:14px}.acr-note{background:#ececec;color:#222;font-size:12px;border-radius:4px;padding:4px 8px;line-height:16px;width:100%;box-sizing:border-box;margin-top:8px;font-weight:400}.acr-note strong{font-weight:700;font-size:12px;line-height:16px;color:#222}\n"] }]
107
116
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { change: [{
108
117
  type: Output
109
118
  }], growthRateChange: [{
110
119
  type: Output
111
120
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5udWl0eS1jYWxjdWxhdG9yLXJhZGlvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvYW5udWl0eS1jYWxjdWxhdG9yLXJhZGlvL2FubnVpdHktY2FsY3VsYXRvci1yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL2FubnVpdHktY2FsY3VsYXRvci1yYWRpby9hbm51aXR5LWNhbGN1bGF0b3ItcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQTZCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFrQixNQUFNLHlCQUF5QixDQUFDOzs7QUFnQnpFLE1BQU0sT0FBTywrQkFBK0I7SUFDdEI7SUFBcEIsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDaEMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QixNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQztZQUM3QyxJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLFNBQVMsSUFBSSxTQUFTLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ3RFLCtCQUErQjtnQkFDL0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFF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QUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsK0JBQStCLENBQUM7Z0JBQzlELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwwQkNsQkgsb3BJQXVHQSw2a0pEOUZZLFlBQVksb1ZBQUUsY0FBYyw4QkFBRSxtQkFBbUIsOEJBQ3pELFdBQVc7OzRGQVVGLCtCQUErQjtrQkFmM0MsU0FBUzsrQkFDRSw4QkFBOEIsV0FHL0IsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLG1CQUFtQjt3QkFDekQsV0FBVyxDQUFDLGNBQ0YsSUFBSSxhQUNMO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdDQUFnQyxDQUFDOzRCQUM5RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjsrRUFpQ1MsTUFBTTtzQkFBZixNQUFNO2dCQUVHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIGlucHV0LCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBlZmZlY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUsIE1hdFJhZGlvQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFubnVpdHktY2FsY3VsYXRvci1yYWRpbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbm51aXR5LWNhbGN1bGF0b3ItcmFkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbm51aXR5LWNhbGN1bGF0b3ItcmFkaW8uY29tcG9uZW50LmNzcyddLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRSYWRpb01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQW5udWl0eUNhbGN1bGF0b3JSYWRpb0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBbm51aXR5Q2FsY3VsYXRvclJhZGlvQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGYgPSB0aGlzLmZpZWxkKCk7XG4gICAgICBjb25zdCBzZWxlY3RWYWwgPSBmPy5jb25maWdEYXRhPy5zZWxlY3RWYWx1ZTtcbiAgICAgIGlmIChzZWxlY3RWYWwgIT09IG51bGwgJiYgc2VsZWN0VmFsICE9PSB1bmRlZmluZWQgJiYgc2VsZWN0VmFsICE9PSAnJykge1xuICAgICAgICAvLyBQcmUtc2VsZWN0IHRoZSBtYXRjaGluZyBjYXJkXG4gICAgICAgIGNvbnN0IG1hdGNoZWRDYXJkID0gZj8uY29uZmlnRGF0YT8uY2FyZHNWYWx1ZT8uZmluZCgoYzogYW55KSA9PiBjLnZhbHVlID09PSBzZWxlY3RWYWwpO1xuICAgICAgICBpZiAobWF0Y2hlZENhcmQpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlID0gc2VsZWN0VmFsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hdGNoZWRPcHRpb24gPSBmPy5vcHRpb25zPy5maW5kKChvcHQ6IGFueSkgPT4gb3B0LnZhbHVlID09PSBzZWxlY3RWYWwpO1xuICAgICAgICBpZiAobWF0Y2hlZE9wdGlvbikge1xuICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHNlbGVjdFZhbDtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQXJyb3dQb3NpdGlvbigpLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dFZhbHVlICE9PSBudWxsICYmIHRoaXMuaW5wdXRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQXJyb3dQb3NpdGlvbigpLCAwKTtcbiAgICB9XG4gIH1cbiAgIHJlYWN0aXZlRm9ybUNvbnRyb2xvYmplY3QgOiBhbnkgPSBpbnB1dDxhbnk+KCk7XG4gIGZpZWxkIDogYW55ID0gaW5wdXQucmVxdWlyZWQ8YW55PigpO1xuICBpbnB1dFZhbHVlOiBhbnkgPSBudWxsO1xuXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpIGdyb3d0aFJhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICB2YWx1ZTogYW55ID0gbnVsbDtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNlbGVjdENhcmQoY2FyZDogYW55KTogdm9pZCB7XG4gICAgaWYgKGNhcmQuZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLnZhbHVlID0gY2FyZC52YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5ncm93dGhSYXRlQ2hhbmdlLmVtaXQoY2FyZCk7XG4gIH1cbiAgb25SYWRpb0dyb3VwQ2hhbmdlKGV2ZW50OiBNYXRSYWRpb0NoYW5nZSk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQudmFsdWU7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLmNoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcbiAgICBjb25zb2xlLmxvZygnUmFkaW8gZ3JvdXAgY2hhbmdlZDonLCBuZXdWYWx1ZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZUFycm93UG9zaXRpb24oKSwgMCk7XG4gIH1cbiAgdG9nZ2xlUmFkaW8odmFsdWU6IGFueSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5yZWFjdGl2ZUZvcm1Db250cm9sb2JqZWN0ICYmIHRoaXMucmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdC5zZXRWYWx1ZSkge1xuICAgICAgdGhpcy5yZWFjdGl2ZUZvcm1Db250cm9sb2JqZWN0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5vblJhZGlvR3JvdXBDaGFuZ2UoeyBzb3VyY2U6IHt9IGFzIGFueSwgdmFsdWU6IHZhbHVlIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVBcnJvd1Bvc2l0aW9uKCksIDApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBcnJvd1Bvc2l0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgc2VsZWN0ZWQ6IEhUTUxFbGVtZW50ID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYW5udWl0eS1yYWRpby1jYXJkLWdlbmRlci5zZWxlY3RlZCcpO1xuICAgIGNvbnN0IGNhcmQ6IEhUTUxFbGVtZW50ID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYWNyLWNhcmQnKTtcbiAgICBpZiAoc2VsZWN0ZWQgJiYgY2FyZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRSZWN0ID0gc2VsZWN0ZWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjYXJkUmVjdCA9IGNhcmQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjZW50ZXJYID0gc2VsZWN0ZWRSZWN0LmxlZnQgKyBzZWxlY3RlZFJlY3Qud2lkdGggLyAyIC0gY2FyZFJlY3QubGVmdDtcbiAgICAgIGNhcmQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYXJyb3ctbGVmdCcsIGAke2NlbnRlclh9cHhgKTtcbiAgICB9XG4gIH1cblxufVxuIiwiXG5cbjxkaXYgY2xhc3M9XCJhY3Itd3JhcHBlclwiPlxuXG4gIDwhLS0gVG9wIEhlYWRlciBMYWJlbCAtLT5cbiAgPGRpdiBjbGFzcz1cImFjci1zdWItbGFiZWxcIiAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8uaXNWaXNpYmxlXCI+XG4gICAge3sgZmllbGQoKT8ubGFiZWwgfX1cbiAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImZpZWxkKCk/LnZhbGlkYXRvcnM/LmlzUmVxdWlyZWRcIj4qPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8IS0tIFJhZGlvIE9wdGlvbiBDYXJkcyAtLT5cbiAgPGRpdiBjbGFzcz1cInJhZGlvLWJ0bi1ncm91cDFcIiAqbmdJZj1cImZpZWxkKCk/LmNvbmZpZ0RhdGE/LmlzU2hvd1JhZGlvT3B0aW9uXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJhbm51aXR5LXJhZGlvLWNhcmQtZ2VuZGVyXCJcbiAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkKCk/Lm9wdGlvbnNcIlxuICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlucHV0VmFsdWUgPT09IGRhdGEudmFsdWVcIlxuICAgICAgW2NsYXNzLmRpc2FibGUtcmFkaW8tYnRuXT1cImZpZWxkKCk/LmlzRGlzYWJsZSB8fCBkYXRhLmRpc2FibGVkID09PSB0cnVlIHx8IGRhdGEuZGlzYWJsZWQgPT09ICd0cnVlJ1wiXG4gICAgICAoY2xpY2spPVwiKGRhdGEuZGlzYWJsZWQgPT09IHRydWUgfHwgZGF0YS5kaXNhYmxlZCA9PT0gJ3RydWUnKSA/IG51bGwgOiB0b2dnbGVSYWRpbyhkYXRhLnZhbHVlLCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8IS0tIEhpZGRlbiBuYXRpdmUgcmFkaW8gaW5wdXQg4oCUIGVuYWJsZXMgcHJvcGVyIFtpZF0vW25hbWVdIGJpbmRpbmcgZm9yIGZvcm0gc2VtYW50aWNzLlxuICAgICAgICAgICBQYXJlbnQgcHJvamVjdHMgY2FuIGJpbmQgKGNoYW5nZSk9XCJteUhhbmRsZXIoJGV2ZW50KVwiIG9uIHRoZSBob3N0IGNvbXBvbmVudC4gLS0+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IG9wYWNpdHk6IDA7IHdpZHRoOiAwOyBoZWlnaHQ6IDA7IHBvaW50ZXItZXZlbnRzOiBub25lO1wiXG4gICAgICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgICAgICBbbmFtZV09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXG4gICAgICAgIFtjaGVja2VkXT1cImlucHV0VmFsdWUgPT09IGRhdGEudmFsdWVcIlxuICAgICAgICAoZ3Jvd3RoUmF0ZUNoYW5nZSk9XCJ0b2dnbGVSYWRpbyhkYXRhLnZhbHVlLCAkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImZvclJhZGlvTGFiZWxBbm51aXR5UmFkaW9cIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJy0tcmFkaW8tYnV0dG9uLWZvbnQtd2VpZ2h0JzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb250V2VpZ2h0LFxuICAgICAgICAgICctLXJhZGlvLWJ1dHRvbi1mb250LXNpemUnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvbnRTaXplLFxuICAgICAgICAgICctLXJhZGlvLWJ1dHRvbi1mb250LWNvbG9yJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5jb2xvclxuICAgICAgICB9XCJcbiAgICAgID57eyBkYXRhLmxhYmVsIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIENhcmQgQ29udGFpbmVyIC0tPlxuICA8ZGl2IGNsYXNzPVwiYWNyLWNhcmQtY29udGFpbmVyXCIgKm5nSWY9XCJmaWVsZCgpPy5jb25maWdEYXRhPy5pc1Nob3dDYXJkXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWNyLWNhcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWNyLXN1Yi1sYWJlbFwiICpuZ0lmPVwiZmllbGQoKT8uY29uZmlnRGF0YT8uc3ViTGFiZWxcIj5cbiAgICAgIHt7IGZpZWxkKCk/LmNvbmZpZ0RhdGE/LnN1YkxhYmVsIH19XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWNyLWNhcmRzLXJvdyBjb2wtbWQtMyBjb2wtc20tNiBjb2wteHMtMTIgY29sLWxnLTNcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhY3ItY2FyZC1vcHRpb25cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgY2FyZCBvZiBmaWVsZCgpPy5jb25maWdEYXRhPy5jYXJkc1ZhbHVlXCJcbiAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInZhbHVlID09PSBjYXJkLnZhbHVlXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImNhcmQuZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0Q2FyZChjYXJkKVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gSGlkZGVuIG5hdGl2ZSByYWRpbyBpbnB1dCDigJQgZW5hYmxlcyBwcm9wZXIgW2lkXS9bbmFtZV0gYmluZGluZyBmb3IgZm9ybSBzZW1hbnRpY3MuIC0tPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBvcGFjaXR5OiAwOyB3aWR0aDogMDsgaGVpZ2h0OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTtcIlxuICAgICAgICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgICAgICAgIFtuYW1lXT1cImZpZWxkKCk/LmZpZWxkTmFtZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cImNhcmQudmFsdWVcIlxuICAgICAgICAgIFtjaGVja2VkXT1cInZhbHVlID09PSBjYXJkLnZhbHVlXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdENhcmQoY2FyZClcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWNyLWNhcmQtbWFpbi12YWx1ZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWNyLWNhcmQtbWFpbi12YWx1ZVwiPnt7IGNhcmQubWFpblZhbHVlIH19PC9zcGFuPjxzcGFuIGNsYXNzPVwiYWNyLWNhcmQtbWFpbi12YWx1ZVwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3ItY2FyZC1zdWItdmFsdWVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjci1jYXJkLXN1Yi12YWx1ZVwiPnt7IGNhcmQuc3ViVmFsdWUgfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJhY3ItY2FyZC1zdWItdmFsdWVcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWNyLWNhcmQtcmF0ZVwiPnt7IGNhcmQuZ3Jvd3RoUmF0ZSB9fSBBbm51aXR5IFJhdGU8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjci1jYXJkLWRldGFpbHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNyLWNhcmQtZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgPHNwYW4+R3VhcmFudGVlZCA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj46PC9zcGFuPlxuICAgICAgICAgICAgPHN0cm9uZz57eyBjYXJkLmd1YXJhbnRlZWQgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNyLWNhcmQtZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgPHNwYW4+VmFyaWFibGUgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+Ojwvc3Bhbj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgY2FyZC52YXJpYWJsZSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYWNyLWNhcmQtdHlwZVwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3ItY2FyZC10eXBlLWJ0blwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICdidG4taGlnaCc6IGNhcmQudmFsdWUgPT09ICdIaWdoJyxcbiAgICAgICdidG4tbWVkaXVtJzogY2FyZC52YWx1ZSA9PT0gJ01lZGl1bScsXG4gICAgICAnYnRuLWxvdyc6IGNhcmQudmFsdWUgIT09ICdIaWdoJyAmJiBjYXJkLnZhbHVlICE9PSAnTWVkaXVtJ1xuICAgIH1cIj57eyBjYXJkLnZhbHVlIH19IHZhcmlhYmxlPC9idXR0b24+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgICA8IS0tIE5vdGUg4oCUIGZ1bGwgd2lkdGgsIHZlcnRpY2FsbHkgYWxpZ25lZCB3aXRoIHJhZGlvIGdyb3VwIGFuZCBjYXJkIGNvbnRhaW5lciAtLT5cbiAgPGRpdiBjbGFzcz1cImFjci1ub3RlXCIgKm5nSWY9XCJmaWVsZCgpPy5jb25maWdEYXRhPy5pbmZvTWVzc2FnZVwiPlxuICAgIDxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4ge3sgZmllbGQoKT8uY29uZmlnRGF0YT8uaW5mb01lc3NhZ2UgfX1cbiAgPC9kaXY+XG4gIDwvZGl2PlxuICA8L2Rpdj48IS0tIC9hY3ItY2FyZC1jb250YWluZXIgLS0+XG5cbjwvZGl2PlxuIl19
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5udWl0eS1jYWxjdWxhdG9yLXJhZGlvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvYW5udWl0eS1jYWxjdWxhdG9yLXJhZGlvL2FubnVpdHktY2FsY3VsYXRvci1yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL2FubnVpdHktY2FsY3VsYXRvci1yYWRpby9hbm51aXR5LWNhbGN1bGF0b3ItcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQWtCLE1BQU0seUJBQXlCLENBQUM7OztBQWdCekUsTUFBTSxPQUFPLCtCQUErQjtJQUN0QjtJQUFwQixZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNoQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDO1lBQzdDLElBQUksU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLEtBQUssU0FBUyxJQUFJLFNBQVMsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDdEUsK0JBQStCO2dCQUMvQixNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUM7Z0JBQ3ZGLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO2dCQUN6QixDQUFDO2dCQUNELE1BQU0sYUFBYSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDO2dCQUM5RSxJQUFJLGFBQWEsRUFBRSxDQUFDO29CQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztvQkFDNUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUM7UUFDN0MsSUFBSSxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsS0FBSyxTQUFTLElBQUksU0FBUyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3RFLE1BQU0sYUFBYSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQzlFLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO2dCQUM1QixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBQ0QseUJBQXlCLEdBQVMsS0FBSyxFQUFPLENBQUM7SUFDL0MsS0FBSyxHQUFTLEtBQUssQ0FBQyxRQUFRLEVBQU8sQ0FBQztJQUNwQyxVQUFVLEdBQVEsSUFBSSxDQUFDO0lBRXZCLFFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDekIsU0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUVoQixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVqQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRXJELEtBQUssR0FBUSxJQUFJLENBQUM7SUFFbEIsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsS0FBcUI7UUFDdEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQVUsRUFBRSxLQUFZO1FBQ2xDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMseUJBQXlCLElBQUksSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxtQkFBbUI7UUFDekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDbkMsTUFBTSxRQUFRLEdBQWdCLElBQUksQ0FBQyxhQUFhLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN4RixNQUFNLElBQUksR0FBZ0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRCxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM5QyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQzt3R0EvRlUsK0JBQStCOzRGQUEvQiwrQkFBK0IsdWNBUi9CO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztnQkFDOUQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQ2xCSCxxcElBdUdBLDRrSkQ5RlksWUFBWSxvVkFBRSxjQUFjLDhCQUFFLG1CQUFtQiw4QkFDekQsV0FBVzs7NEZBVUYsK0JBQStCO2tCQWYzQyxTQUFTOytCQUNFLDhCQUE4QixXQUcvQixDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsbUJBQW1CO3dCQUN6RCxXQUFXLENBQUMsY0FDRixJQUFJLGFBQ0w7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0NBQWdDLENBQUM7NEJBQzlELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOytFQTBDUyxNQUFNO3NCQUFmLE1BQU07Z0JBRUcsZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgaW5wdXQsIEVsZW1lbnRSZWYsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSwgTWF0UmFkaW9DaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYW5udWl0eS1jYWxjdWxhdG9yLXJhZGlvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FubnVpdHktY2FsY3VsYXRvci1yYWRpby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FubnVpdHktY2FsY3VsYXRvci1yYWRpby5jb21wb25lbnQuY3NzJ10sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFJhZGlvTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbm51aXR5Q2FsY3VsYXRvclJhZGlvQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFubnVpdHlDYWxjdWxhdG9yUmFkaW9Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZiA9IHRoaXMuZmllbGQoKTtcbiAgICAgIGNvbnN0IHNlbGVjdFZhbCA9IGY/LmNvbmZpZ0RhdGE/LnNlbGVjdFZhbHVlO1xuICAgICAgaWYgKHNlbGVjdFZhbCAhPT0gbnVsbCAmJiBzZWxlY3RWYWwgIT09IHVuZGVmaW5lZCAmJiBzZWxlY3RWYWwgIT09ICcnKSB7XG4gICAgICAgIC8vIFByZS1zZWxlY3QgdGhlIG1hdGNoaW5nIGNhcmRcbiAgICAgICAgY29uc3QgbWF0Y2hlZENhcmQgPSBmPy5jb25maWdEYXRhPy5jYXJkc1ZhbHVlPy5maW5kKChjOiBhbnkpID0+IGMudmFsdWUgPT09IHNlbGVjdFZhbCk7XG4gICAgICAgIGlmIChtYXRjaGVkQ2FyZCkge1xuICAgICAgICAgIHRoaXMudmFsdWUgPSBzZWxlY3RWYWw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbiA9IGY/Lm9wdGlvbnM/LmZpbmQoKG9wdDogYW55KSA9PiBvcHQudmFsdWUgPT09IHNlbGVjdFZhbCk7XG4gICAgICAgIGlmIChtYXRjaGVkT3B0aW9uKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gc2VsZWN0VmFsO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVBcnJvd1Bvc2l0aW9uKCksIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZiA9IHRoaXMuZmllbGQoKTtcbiAgICBjb25zdCBzZWxlY3RWYWwgPSBmPy5jb25maWdEYXRhPy5zZWxlY3RWYWx1ZTtcbiAgICBpZiAoc2VsZWN0VmFsICE9PSBudWxsICYmIHNlbGVjdFZhbCAhPT0gdW5kZWZpbmVkICYmIHNlbGVjdFZhbCAhPT0gJycpIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRPcHRpb24gPSBmPy5vcHRpb25zPy5maW5kKChvcHQ6IGFueSkgPT4gb3B0LnZhbHVlID09PSBzZWxlY3RWYWwpO1xuICAgICAgaWYgKG1hdGNoZWRPcHRpb24pIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gc2VsZWN0VmFsO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQXJyb3dQb3NpdGlvbigpLCAwKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXRWYWx1ZSAhPT0gbnVsbCAmJiB0aGlzLmlucHV0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZUFycm93UG9zaXRpb24oKSwgMCk7XG4gICAgfVxuICB9XG4gIHJlYWN0aXZlRm9ybUNvbnRyb2xvYmplY3QgOiBhbnkgPSBpbnB1dDxhbnk+KCk7XG4gIGZpZWxkIDogYW55ID0gaW5wdXQucmVxdWlyZWQ8YW55PigpO1xuICBpbnB1dFZhbHVlOiBhbnkgPSBudWxsO1xuXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpIGdyb3d0aFJhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICB2YWx1ZTogYW55ID0gbnVsbDtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNlbGVjdENhcmQoY2FyZDogYW55KTogdm9pZCB7XG4gICAgaWYgKGNhcmQuZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLnZhbHVlID0gY2FyZC52YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5ncm93dGhSYXRlQ2hhbmdlLmVtaXQoY2FyZCk7XG4gIH1cbiAgb25SYWRpb0dyb3VwQ2hhbmdlKGV2ZW50OiBNYXRSYWRpb0NoYW5nZSk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQudmFsdWU7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLmNoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcbiAgICBjb25zb2xlLmxvZygnUmFkaW8gZ3JvdXAgY2hhbmdlZDonLCBuZXdWYWx1ZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZUFycm93UG9zaXRpb24oKSwgMCk7XG4gIH1cbiAgdG9nZ2xlUmFkaW8odmFsdWU6IGFueSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5yZWFjdGl2ZUZvcm1Db250cm9sb2JqZWN0ICYmIHRoaXMucmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdC5zZXRWYWx1ZSkge1xuICAgICAgdGhpcy5yZWFjdGl2ZUZvcm1Db250cm9sb2JqZWN0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5vblJhZGlvR3JvdXBDaGFuZ2UoeyBzb3VyY2U6IHt9IGFzIGFueSwgdmFsdWU6IHZhbHVlIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVBcnJvd1Bvc2l0aW9uKCksIDApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBcnJvd1Bvc2l0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgc2VsZWN0ZWQ6IEhUTUxFbGVtZW50ID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYW5udWl0eS1yYWRpby1jYXJkLWdlbmRlci5zZWxlY3RlZCcpO1xuICAgIGNvbnN0IGNhcmQ6IEhUTUxFbGVtZW50ID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYWNyLWNhcmQnKTtcbiAgICBpZiAoc2VsZWN0ZWQgJiYgY2FyZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRSZWN0ID0gc2VsZWN0ZWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjYXJkUmVjdCA9IGNhcmQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjZW50ZXJYID0gc2VsZWN0ZWRSZWN0LmxlZnQgKyBzZWxlY3RlZFJlY3Qud2lkdGggLyAyIC0gY2FyZFJlY3QubGVmdDtcbiAgICAgIGNhcmQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYXJyb3ctbGVmdCcsIGAke2NlbnRlclh9cHhgKTtcbiAgICB9XG4gIH1cblxufVxuIiwiXG5cbjxkaXYgY2xhc3M9XCJhY3Itd3JhcHBlclwiPlxuXG4gIDwhLS0gVG9wIEhlYWRlciBMYWJlbCAtLT5cbiAgPGRpdiBjbGFzcz1cImFjci1zdWItbGFiZWxcIiAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8uaXNWaXNpYmxlXCI+XG4gICAge3sgZmllbGQoKT8ubGFiZWwgfX1cbiAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImZpZWxkKCk/LnZhbGlkYXRvcnM/LmlzUmVxdWlyZWRcIj4qPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8IS0tIFJhZGlvIE9wdGlvbiBDYXJkcyAtLT5cbiAgPGRpdiBjbGFzcz1cInJhZGlvLWJ0bi1ncm91cDFcIiAqbmdJZj1cImZpZWxkKCk/LmNvbmZpZ0RhdGE/LmlzU2hvd1JhZGlvT3B0aW9uXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJhbm51aXR5LXJhZGlvLWNhcmQtZ2VuZGVyXCJcbiAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkKCk/Lm9wdGlvbnNcIlxuICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlucHV0VmFsdWUgPT09IGRhdGEudmFsdWVcIlxuICAgICAgW2NsYXNzLmRpc2FibGUtcmFkaW8tYnRuXT1cImZpZWxkKCk/LmlzRGlzYWJsZSB8fCBkYXRhLmRpc2FibGVkID09PSB0cnVlIHx8IGRhdGEuZGlzYWJsZWQgPT09ICd0cnVlJ1wiXG4gICAgICAoY2xpY2spPVwiKGRhdGEuZGlzYWJsZWQgPT09IHRydWUgfHwgZGF0YS5kaXNhYmxlZCA9PT0gJ3RydWUnKSA/IG51bGwgOiB0b2dnbGVSYWRpbyhkYXRhLnZhbHVlLCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8IS0tIEhpZGRlbiBuYXRpdmUgcmFkaW8gaW5wdXQg4oCUIGVuYWJsZXMgcHJvcGVyIFtpZF0vW25hbWVdIGJpbmRpbmcgZm9yIGZvcm0gc2VtYW50aWNzLlxuICAgICAgICAgICBQYXJlbnQgcHJvamVjdHMgY2FuIGJpbmQgKGNoYW5nZSk9XCJteUhhbmRsZXIoJGV2ZW50KVwiIG9uIHRoZSBob3N0IGNvbXBvbmVudC4gLS0+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IG9wYWNpdHk6IDA7IHdpZHRoOiAwOyBoZWlnaHQ6IDA7IHBvaW50ZXItZXZlbnRzOiBub25lO1wiXG4gICAgICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgICAgICBbbmFtZV09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXG4gICAgICAgIFtjaGVja2VkXT1cImlucHV0VmFsdWUgPT09IGRhdGEudmFsdWVcIlxuICAgICAgICAoZ3Jvd3RoUmF0ZUNoYW5nZSk9XCJ0b2dnbGVSYWRpbyhkYXRhLnZhbHVlLCAkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImZvclJhZGlvTGFiZWxBbm51aXR5UmFkaW9cIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJy0tcmFkaW8tYnV0dG9uLWZvbnQtd2VpZ2h0JzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb250V2VpZ2h0LFxuICAgICAgICAgICctLXJhZGlvLWJ1dHRvbi1mb250LXNpemUnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvbnRTaXplLFxuICAgICAgICAgICctLXJhZGlvLWJ1dHRvbi1mb250LWNvbG9yJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5jb2xvclxuICAgICAgICB9XCJcbiAgICAgID57eyBkYXRhLmxhYmVsIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIENhcmQgQ29udGFpbmVyIC0tPlxuICA8ZGl2IGNsYXNzPVwiYWNyLWNhcmQtY29udGFpbmVyXCIgKm5nSWY9XCJmaWVsZCgpPy5jb25maWdEYXRhPy5pc1Nob3dDYXJkXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWNyLWNhcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWNyLXN1Yi1sYWJlbFwiICpuZ0lmPVwiZmllbGQoKT8uY29uZmlnRGF0YT8uc3ViTGFiZWxcIj5cbiAgICAgIHt7IGZpZWxkKCk/LmNvbmZpZ0RhdGE/LnN1YkxhYmVsIH19XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWNyLWNhcmRzLXJvdyAgY29sLW1kLTMgY29sLXNtLTYgY29sLXhzLTEyIGNvbC1sZy0zXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYWNyLWNhcmQtb3B0aW9uXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNhcmQgb2YgZmllbGQoKT8uY29uZmlnRGF0YT8uY2FyZHNWYWx1ZVwiXG4gICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJ2YWx1ZSA9PT0gY2FyZC52YWx1ZVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjYXJkLmRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdENhcmQoY2FyZClcIlxuICAgICAgPlxuICAgICAgICA8IS0tIEhpZGRlbiBuYXRpdmUgcmFkaW8gaW5wdXQg4oCUIGVuYWJsZXMgcHJvcGVyIFtpZF0vW25hbWVdIGJpbmRpbmcgZm9yIGZvcm0gc2VtYW50aWNzLiAtLT5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgb3BhY2l0eTogMDsgd2lkdGg6IDA7IGhlaWdodDogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7XCJcbiAgICAgICAgICBbaWRdPVwiZmllbGQoKT8uZmllbGROYW1lXCJcbiAgICAgICAgICBbbmFtZV09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgICAgICAgIFt2YWx1ZV09XCJjYXJkLnZhbHVlXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJ2YWx1ZSA9PT0gY2FyZC52YWx1ZVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RDYXJkKGNhcmQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjci1jYXJkLW1haW4tdmFsdWVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjci1jYXJkLW1haW4tdmFsdWVcIj57eyBjYXJkLm1haW5WYWx1ZSB9fTwvc3Bhbj48c3BhbiBjbGFzcz1cImFjci1jYXJkLW1haW4tdmFsdWVcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWNyLWNhcmQtc3ViLXZhbHVlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3ItY2FyZC1zdWItdmFsdWVcIj57eyBjYXJkLnN1YlZhbHVlIH19PC9zcGFuPjxzcGFuIGNsYXNzPVwiYWNyLWNhcmQtc3ViLXZhbHVlXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjci1jYXJkLXJhdGVcIj57eyBjYXJkLmdyb3d0aFJhdGUgfX0gQW5udWl0eSBSYXRlPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3ItY2FyZC1kZXRhaWxzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjci1jYXJkLWRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgIDxzcGFuPkd1YXJhbnRlZWQgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+Ojwvc3Bhbj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgY2FyZC5ndWFyYW50ZWVkIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjci1jYXJkLWRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgIDxzcGFuPlZhcmlhYmxlIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPjo8L3NwYW4+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IGNhcmQudmFyaWFibGUgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImFjci1jYXJkLXR5cGVcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWNyLWNhcmQtdHlwZS1idG5cIiBbbmdDbGFzc109XCJ7XG4gICAgICAnYnRuLWhpZ2gnOiBjYXJkLnZhbHVlID09PSAnSGlnaCcsXG4gICAgICAnYnRuLW1lZGl1bSc6IGNhcmQudmFsdWUgPT09ICdNZWRpdW0nLFxuICAgICAgJ2J0bi1sb3cnOiBjYXJkLnZhbHVlICE9PSAnSGlnaCcgJiYgY2FyZC52YWx1ZSAhPT0gJ01lZGl1bSdcbiAgICB9XCI+e3sgY2FyZC52YWx1ZSB9fSB2YXJpYWJsZTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICAgPCEtLSBOb3RlIOKAlCBmdWxsIHdpZHRoLCB2ZXJ0aWNhbGx5IGFsaWduZWQgd2l0aCByYWRpbyBncm91cCBhbmQgY2FyZCBjb250YWluZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJhY3Itbm90ZVwiICpuZ0lmPVwiZmllbGQoKT8uY29uZmlnRGF0YT8uaW5mb01lc3NhZ2VcIj5cbiAgICA8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IHt7IGZpZWxkKCk/LmNvbmZpZ0RhdGE/LmluZm9NZXNzYWdlIH19XG4gIDwvZGl2PlxuICA8L2Rpdj5cbiAgPC9kaXY+PCEtLSAvYWNyLWNhcmQtY29udGFpbmVyIC0tPlxuXG48L2Rpdj5cbiJdfQ==