@symphony-talent/component-library 4.206.0 → 4.207.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/organisms/merge-contacts-modal/merge-contacts-modal.component.mjs +3 -3
- package/esm2020/projects/component-library/lib/organisms/merge-contacts-modal/merge-contacts-modal.component.mjs +3 -3
- package/fesm2015/symphony-talent-component-library-projects-component-library.mjs +2 -2
- package/fesm2015/symphony-talent-component-library-projects-component-library.mjs.map +1 -1
- package/fesm2015/symphony-talent-component-library.mjs +2 -2
- package/fesm2015/symphony-talent-component-library.mjs.map +1 -1
- package/fesm2020/symphony-talent-component-library-projects-component-library.mjs +2 -2
- package/fesm2020/symphony-talent-component-library-projects-component-library.mjs.map +1 -1
- package/fesm2020/symphony-talent-component-library.mjs +2 -2
- package/fesm2020/symphony-talent-component-library.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -126,10 +126,10 @@ export class MergeContactsModalComponent {
|
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
MergeContactsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: MergeContactsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
129
|
-
MergeContactsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: MergeContactsModalComponent, selector: "symphony-merge-contacts-modal", inputs: { model: "model", isLoading: "isLoading", hasError: "hasError", stepCopy: "stepCopy", confirmStepCopy: "confirmStepCopy", selected: "selected", confirmSuggestion: "confirmSuggestion", showSuccessToast: "showSuccessToast", showFailureToast: "showFailureToast", currentStep: "currentStep" }, outputs: { next: "next", cancel: "cancel", notDuplicate: "notDuplicate", selectionChange: "selectionChange", hideSuccessToast: "hideSuccessToast", hideFailureToast: "hideFailureToast", requestConfirmSuggestion: "requestConfirmSuggestion", requestCancelConfirmSuggestion: "requestCancelConfirmSuggestion" }, ngImport: i0, template: "<div class=\"sfx sfx-modal modal-container\" *ngIf=\"model\">\n <section class=\"modal-header sfx-p-30 sfx-pt-40\">\n <div class=\"modal-title\">\n <div class=\"row\">\n <div class=\"col-xs-8 col-sm-8 col-md-8 col-lg-8\">\n <ng-container *ngIf=\"getStepTitle(currentStep) as stepTitle\">\n <symphony-h4 [text]=\"stepTitle\"></symphony-h4>\n </ng-container> \n </div>\n <div class=\"col-xs-4 col-sm-4 col-md-4 col-lg-4\">\n <symphony-icon\n class=\"pull-right\"\n [icon]=\"'si-close-modal'\"\n (clicked)=\"onCancel()\"\n ></symphony-icon>\n </div>\n <div\n class=\"col-xs-12 col-sm-12 col-md-12 col-lg-12 sfx-mt-15\"\n *ngIf=\"getStepDescription(currentStep)\"\n >\n <ng-container *ngIf=\"getStepDescription(currentStep) as stepDescription\">\n <symphony-paragraph [text]=\"stepDescription\"></symphony-paragraph>\n </ng-container> \n </div>\n </div>\n </div>\n </section>\n <section class=\"modal-body sfx-p-30\" *ngIf=\"currentStep === 1\">\n <ng-container>\n <div class=\"toaster-alert-container-global\">\n <symphony-toaster-alert\n *ngIf=\"showSuccessToast\"\n [alertModel]=\"successToast\"\n (hideAlert)=\"onHideSuccessToast()\"\n ></symphony-toaster-alert>\n <symphony-toaster-alert\n *ngIf=\"showFailureToast\"\n [alertModel]=\"failureToast\"\n (hideAlert)=\"onHideFailureToast()\"\n ></symphony-toaster-alert>\n </div>\n <div *ngIf=\"isLoading\" class=\"sfx-mt-30 sfx-mb-30\">\n <symphony-sfx-loader></symphony-sfx-loader>\n </div>\n <div *ngIf=\"hasError\" class=\"sfx-mt-20 sfx-mb-20 sfx-txt-center\">\n <symphony-paragraph text=\"We couldn't retrieve the candidate data. The information cannot be displayed at this time, please try again.\"></symphony-paragraph>\n </div>\n <div *ngIf=\"!isLoading && !hasError && (!model?.suggestions || model.suggestions.length === 0)\" class=\"sfx-mt-20 sfx-mb-20 sfx-txt-center\">\n <symphony-paragraph text=\"No more duplicates exist for this selected contact. Please try again later.\"></symphony-paragraph>\n </div>\n <div *ngIf=\"!isLoading && !hasError && !confirmSuggestion && model?.suggestions?.length\" class=\"row\">\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Contact\"></symphony-h5> \n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card selected-contact-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ model.selectedContact.name }} [{{ model.selectedContact.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"model.selectedContact.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ model.selectedContact.email }}</span>\n </div>\n <div\n class=\"info-row\"\n *ngFor=\"let criterion of model.selectedContact.criteria\"\n >\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"model.selectedContact.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ model.selectedContact.atsId }}</span>\n </div>\n </div>\n </div>\n </div> \n </div>\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 [text]=\"'Potential Duplicates (' + (model?.suggestions?.length || 0) + ')'\"></symphony-h5>\n <div class=\"scrollable-container card-wrapper\">\n <div\n *ngFor=\"let suggestion of model.suggestions; let i = index\"\n class=\"suggestion-card\"\n [ngClass]=\"{ selected: selected === suggestion }\"\n (click)=\"onSelect(suggestion)\"\n >\n <div class=\"card-header\">\n <symphony-input-radio\n [radioID]=\"suggestion.id\"\n [name]=\"'merge-suggestions'\"\n [isActive]=\"selected === suggestion\"\n (clicked)=\"onSelect(suggestion)\"\n ></symphony-input-radio> \n <div class=\"card-title sfx-font-bold\">\n {{ suggestion.name }} [{{ suggestion.id }}]\n </div>\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <symphony-grid-cell-clicked-open-new-tab\n [newTabUrl]=\"getContactUrl(suggestion.id)\"\n ></symphony-grid-cell-clicked-open-new-tab>\n <symphony-icon-wrapper\n class=\"not-duplicate-icon-global\"\n title=\"Mark not duplicate\"\n (clicked)=\"onNotDuplicate(suggestion)\"\n >\n <symphony-icon [icon]=\"'si-exclude'\"></symphony-icon>\n </symphony-icon-wrapper>\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"suggestion.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ suggestion.email }}</span>\n </div>\n <div class=\"info-row\" *ngFor=\"let criterion of suggestion.criteria\">\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"suggestion.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ suggestion.atsId }}</span>\n </div>\n </div>\n <div class=\"match-criteria\" *ngIf=\"suggestion.statuses?.length\"> \n <div class=\"criteria-list\">\n <div class=\"match-label\">Contact's share the same:</div>\n <symphony-paragraph\n *ngFor=\"let status of suggestion.statuses\"\n [text]=\"status + '.'\"\n ></symphony-paragraph>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!isLoading && !hasError && confirmSuggestion\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Contact\"></symphony-h5>\n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card selected-contact-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ model.selectedContact.name }} [{{ model.selectedContact.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"model.selectedContact.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ model.selectedContact.email }}</span>\n </div>\n <div\n class=\"info-row\"\n *ngFor=\"let criterion of model.selectedContact.criteria\"\n >\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"model.selectedContact.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ model.selectedContact.atsId }}</span>\n </div>\n </div>\n </div>\n </div> \n </div>\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Duplicate\"></symphony-h5>\n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card confirm-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ confirmSuggestion.name }} [{{ confirmSuggestion.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"confirmSuggestion.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ confirmSuggestion.email }}</span>\n </div>\n <div class=\"info-row\" *ngFor=\"let criterion of confirmSuggestion.criteria\">\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"confirmSuggestion.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ confirmSuggestion.atsId }}</span>\n </div>\n </div>\n <div class=\"match-criteria\" *ngIf=\"confirmSuggestion.statuses?.length\">\n \n <div class=\"criteria-list\">\n <div class=\"match-label\">Contact's share the same:</div>\n <symphony-paragraph\n *ngFor=\"let status of confirmSuggestion.statuses\"\n [text]=\"status + '.'\"\n ></symphony-paragraph>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </section>\n <section *ngIf=\"currentStep === 2\" class=\"modal-body merge-contacts-body\">\n <ng-content></ng-content>\n </section>\n <section *ngIf=\"currentStep === 1\" class=\"modal-footer\">\n <ng-container *ngIf=\"!confirmSuggestion; else confirmActions\">\n <symphony-button-v2 text=\"Close\" [isSecondary]=\"true\" (clicked)=\"onCancel()\"></symphony-button-v2>\n <symphony-button-v2 text=\"Next\" [disabled]=\"!selected || !!confirmSuggestion\" (clicked)=\"onNext()\"></symphony-button-v2>\n </ng-container>\n <ng-template #confirmActions>\n <div class=\"confirm-actions\">\n <symphony-button-v2\n text=\"Back\"\n [isSecondary]=\"true\"\n (clicked)=\"cancelNotDuplicate()\"\n ></symphony-button-v2>\n <symphony-button-v2\n text=\"Confirm\"\n (clicked)=\"confirmOnNotDuplicate()\"\n ></symphony-button-v2>\n </div>\n </ng-template>\n </section>\n</div>\n", styles: [".scrollable-container{max-height:500px;display:flex;flex-direction:column;overflow-y:auto;padding:20px 10px;gap:10px}.radio-item{display:flex;align-items:flex-start;gap:5px}.radio-label{display:flex;align-items:center;gap:1px}.radio-details{padding-left:24px}.radio-action{margin-left:auto;display:flex}.icon-upwards{margin-top:-1px!important;margin-bottom:auto}.modal-footer{display:flex;gap:10px;width:100%;justify-content:flex-end}.confirm-actions{display:flex;gap:10px}.suggestion-confirm{margin-top:38px}.pending-icon{margin-right:8px}.suggestion-card{border:1px solid #e4e7ef;border-radius:10px;padding:20px;background:#ffffff}.suggestion-card .card-header{display:flex;align-items:flex-start}.suggestion-card .card-title{flex:1;word-break:break-word}.suggestion-card .card-actions{margin-left:auto;display:flex;gap:10px}.suggestion-card .card-body{margin-top:15px;display:flex;flex-direction:column;gap:8px}.suggestion-card .info-row{display:flex;align-items:baseline;gap:8px;word-break:break-word}.suggestion-card .match-criteria{margin-top:10px}.suggestion-card .match-label{font-size:.875rem;font-weight:500}.suggestion-card .criteria-list{display:flex;flex-wrap:wrap;gap:5px}.sfx-modal.modal-container .modal-body.merge-contacts-body{padding:0}\n"], components: [{ type: i1.H4Component, selector: "symphony-h4", inputs: ["text", "isSecondary"] }, { type: i2.IconComponent, selector: "symphony-icon", inputs: ["icon", "isSecondary", "size", "iconColor"], outputs: ["clicked"] }, { type: i3.ParagraphComponent, selector: "symphony-paragraph", inputs: ["text", "isSecondary", "isFontBold"] }, { type: i4.ToasterAlertComponent, selector: "symphony-toaster-alert", inputs: ["alertModel", "showAlert"], outputs: ["hideAlert", "refreshClicked"] }, { type: i5.SfxLoaderComponent, selector: "symphony-sfx-loader", inputs: ["leftStyle", "message", "hasCustomMessage"] }, { type: i6.H5Component, selector: "symphony-h5", inputs: ["text", "isSecondary"] }, { type: i7.InputRadioComponent, selector: "symphony-input-radio", inputs: ["isActive", "name", "label", "isRequired", "radioID"], outputs: ["clicked"] }, { type: i8.GridCellClickedOpenNewTabComponent, selector: "symphony-grid-cell-clicked-open-new-tab", inputs: ["newTabUrl"] }, { type: i9.IconWrapperComponent, selector: "symphony-icon-wrapper", inputs: ["backgroundColor", "isInverse", "hasHoverWithoutBorder", "isDisabled"], outputs: ["clicked"] }, { type: i10.ButtonV2Component, selector: "symphony-button-v2" }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
129
|
+
MergeContactsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: MergeContactsModalComponent, selector: "symphony-merge-contacts-modal", inputs: { model: "model", isLoading: "isLoading", hasError: "hasError", stepCopy: "stepCopy", confirmStepCopy: "confirmStepCopy", selected: "selected", confirmSuggestion: "confirmSuggestion", showSuccessToast: "showSuccessToast", showFailureToast: "showFailureToast", currentStep: "currentStep" }, outputs: { next: "next", cancel: "cancel", notDuplicate: "notDuplicate", selectionChange: "selectionChange", hideSuccessToast: "hideSuccessToast", hideFailureToast: "hideFailureToast", requestConfirmSuggestion: "requestConfirmSuggestion", requestCancelConfirmSuggestion: "requestCancelConfirmSuggestion" }, ngImport: i0, template: "<div class=\"sfx sfx-modal modal-container\" *ngIf=\"model\">\n <section class=\"modal-header sfx-p-30 sfx-pt-40\">\n <div class=\"modal-title\">\n <div class=\"row\">\n <div class=\"col-xs-8 col-sm-8 col-md-8 col-lg-8\">\n <ng-container *ngIf=\"getStepTitle(currentStep) as stepTitle\">\n <symphony-h4 [text]=\"stepTitle\"></symphony-h4>\n </ng-container> \n </div>\n <div class=\"col-xs-4 col-sm-4 col-md-4 col-lg-4\">\n <symphony-icon\n class=\"pull-right\"\n [icon]=\"'si-close-modal'\"\n (clicked)=\"onCancel()\"\n ></symphony-icon>\n </div>\n <div\n class=\"col-xs-12 col-sm-12 col-md-12 col-lg-12 sfx-mt-15\"\n [ngClass]=\"{'white-space-pre-line': currentStep === 2}\"\n *ngIf=\"getStepDescription(currentStep)\"\n >\n <ng-container *ngIf=\"getStepDescription(currentStep) as stepDescription\">\n <symphony-paragraph [text]=\"stepDescription\"></symphony-paragraph>\n </ng-container> \n </div>\n </div>\n </div>\n </section>\n <section class=\"modal-body sfx-p-30\" *ngIf=\"currentStep === 1\">\n <ng-container>\n <div class=\"toaster-alert-container-global\">\n <symphony-toaster-alert\n *ngIf=\"showSuccessToast\"\n [alertModel]=\"successToast\"\n (hideAlert)=\"onHideSuccessToast()\"\n ></symphony-toaster-alert>\n <symphony-toaster-alert\n *ngIf=\"showFailureToast\"\n [alertModel]=\"failureToast\"\n (hideAlert)=\"onHideFailureToast()\"\n ></symphony-toaster-alert>\n </div>\n <div *ngIf=\"isLoading\" class=\"sfx-mt-30 sfx-mb-30\">\n <symphony-sfx-loader></symphony-sfx-loader>\n </div>\n <div *ngIf=\"hasError\" class=\"sfx-mt-20 sfx-mb-20 sfx-txt-center\">\n <symphony-paragraph text=\"We couldn't retrieve the candidate data. The information cannot be displayed at this time, please try again.\"></symphony-paragraph>\n </div>\n <div *ngIf=\"!isLoading && !hasError && (!model?.suggestions || model.suggestions.length === 0)\" class=\"sfx-mt-20 sfx-mb-20 sfx-txt-center\">\n <symphony-paragraph text=\"No more duplicates exist for this selected contact. Please try again later.\"></symphony-paragraph>\n </div>\n <div *ngIf=\"!isLoading && !hasError && !confirmSuggestion && model?.suggestions?.length\" class=\"row\">\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Contact\"></symphony-h5> \n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card selected-contact-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ model.selectedContact.name }} [{{ model.selectedContact.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"model.selectedContact.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ model.selectedContact.email }}</span>\n </div>\n <div\n class=\"info-row\"\n *ngFor=\"let criterion of model.selectedContact.criteria\"\n >\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"model.selectedContact.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ model.selectedContact.atsId }}</span>\n </div>\n </div>\n </div>\n </div> \n </div>\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 [text]=\"'Potential Duplicates (' + (model?.suggestions?.length || 0) + ')'\"></symphony-h5>\n <div class=\"scrollable-container card-wrapper\">\n <div\n *ngFor=\"let suggestion of model.suggestions; let i = index\"\n class=\"suggestion-card\"\n [ngClass]=\"{ selected: selected === suggestion }\"\n (click)=\"onSelect(suggestion)\"\n >\n <div class=\"card-header\">\n <symphony-input-radio\n [radioID]=\"suggestion.id\"\n [name]=\"'merge-suggestions'\"\n [isActive]=\"selected === suggestion\"\n (clicked)=\"onSelect(suggestion)\"\n ></symphony-input-radio> \n <div class=\"card-title sfx-font-bold\">\n {{ suggestion.name }} [{{ suggestion.id }}]\n </div>\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <symphony-grid-cell-clicked-open-new-tab\n [newTabUrl]=\"getContactUrl(suggestion.id)\"\n ></symphony-grid-cell-clicked-open-new-tab>\n <symphony-icon-wrapper\n class=\"not-duplicate-icon-global\"\n title=\"Mark not duplicate\"\n (clicked)=\"onNotDuplicate(suggestion)\"\n >\n <symphony-icon [icon]=\"'si-exclude'\"></symphony-icon>\n </symphony-icon-wrapper>\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"suggestion.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ suggestion.email }}</span>\n </div>\n <div class=\"info-row\" *ngFor=\"let criterion of suggestion.criteria\">\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"suggestion.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ suggestion.atsId }}</span>\n </div>\n </div>\n <div class=\"match-criteria\" *ngIf=\"suggestion.statuses?.length\"> \n <div class=\"criteria-list\">\n <div class=\"match-label\">Contact's share the same:</div>\n <symphony-paragraph\n *ngFor=\"let status of suggestion.statuses\"\n [text]=\"status + '.'\"\n ></symphony-paragraph>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!isLoading && !hasError && confirmSuggestion\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Contact\"></symphony-h5>\n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card selected-contact-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ model.selectedContact.name }} [{{ model.selectedContact.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"model.selectedContact.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ model.selectedContact.email }}</span>\n </div>\n <div\n class=\"info-row\"\n *ngFor=\"let criterion of model.selectedContact.criteria\"\n >\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"model.selectedContact.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ model.selectedContact.atsId }}</span>\n </div>\n </div>\n </div>\n </div> \n </div>\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Duplicate\"></symphony-h5>\n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card confirm-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ confirmSuggestion.name }} [{{ confirmSuggestion.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"confirmSuggestion.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ confirmSuggestion.email }}</span>\n </div>\n <div class=\"info-row\" *ngFor=\"let criterion of confirmSuggestion.criteria\">\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"confirmSuggestion.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ confirmSuggestion.atsId }}</span>\n </div>\n </div>\n <div class=\"match-criteria\" *ngIf=\"confirmSuggestion.statuses?.length\">\n \n <div class=\"criteria-list\">\n <div class=\"match-label\">Contact's share the same:</div>\n <symphony-paragraph\n *ngFor=\"let status of confirmSuggestion.statuses\"\n [text]=\"status + '.'\"\n ></symphony-paragraph>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </section>\n <section *ngIf=\"currentStep === 2\" class=\"modal-body merge-contacts-body\">\n <ng-content></ng-content>\n </section>\n <section *ngIf=\"currentStep === 1\" class=\"modal-footer\">\n <ng-container *ngIf=\"!confirmSuggestion; else confirmActions\">\n <symphony-button-v2 text=\"Close\" [isSecondary]=\"true\" (clicked)=\"onCancel()\"></symphony-button-v2>\n <symphony-button-v2 text=\"Next\" [disabled]=\"!selected || !!confirmSuggestion\" (clicked)=\"onNext()\"></symphony-button-v2>\n </ng-container>\n <ng-template #confirmActions>\n <div class=\"confirm-actions\">\n <symphony-button-v2\n text=\"Back\"\n [isSecondary]=\"true\"\n (clicked)=\"cancelNotDuplicate()\"\n ></symphony-button-v2>\n <symphony-button-v2\n text=\"Confirm\"\n (clicked)=\"confirmOnNotDuplicate()\"\n ></symphony-button-v2>\n </div>\n </ng-template>\n </section>\n</div>\n", styles: [".scrollable-container{max-height:500px;display:flex;flex-direction:column;overflow-y:auto;padding:20px 10px;gap:10px}.radio-item{display:flex;align-items:flex-start;gap:5px}.radio-label{display:flex;align-items:center;gap:1px}.radio-details{padding-left:24px}.radio-action{margin-left:auto;display:flex}.icon-upwards{margin-top:-1px!important;margin-bottom:auto}.modal-footer{display:flex;gap:10px;width:100%;justify-content:flex-end}.confirm-actions{display:flex;gap:10px}.suggestion-confirm{margin-top:38px}.pending-icon{margin-right:8px}.suggestion-card{border:1px solid #e4e7ef;border-radius:10px;padding:20px;background:#ffffff}.suggestion-card .card-header{display:flex;align-items:flex-start}.suggestion-card .card-title{flex:1;word-break:break-word}.suggestion-card .card-actions{margin-left:auto;display:flex;gap:10px}.suggestion-card .card-body{margin-top:15px;display:flex;flex-direction:column;gap:8px}.suggestion-card .info-row{display:flex;align-items:baseline;gap:8px;word-break:break-word}.suggestion-card .match-criteria{margin-top:10px}.suggestion-card .match-label{font-size:.875rem;font-weight:500}.suggestion-card .criteria-list{display:flex;flex-wrap:wrap;gap:5px}.sfx-modal.modal-container .modal-body.merge-contacts-body{padding:0}.sfx-modal.modal-container .modal-title .white-space-pre-line{white-space:pre-line}\n"], components: [{ type: i1.H4Component, selector: "symphony-h4", inputs: ["text", "isSecondary"] }, { type: i2.IconComponent, selector: "symphony-icon", inputs: ["icon", "isSecondary", "size", "iconColor"], outputs: ["clicked"] }, { type: i3.ParagraphComponent, selector: "symphony-paragraph", inputs: ["text", "isSecondary", "isFontBold"] }, { type: i4.ToasterAlertComponent, selector: "symphony-toaster-alert", inputs: ["alertModel", "showAlert"], outputs: ["hideAlert", "refreshClicked"] }, { type: i5.SfxLoaderComponent, selector: "symphony-sfx-loader", inputs: ["leftStyle", "message", "hasCustomMessage"] }, { type: i6.H5Component, selector: "symphony-h5", inputs: ["text", "isSecondary"] }, { type: i7.InputRadioComponent, selector: "symphony-input-radio", inputs: ["isActive", "name", "label", "isRequired", "radioID"], outputs: ["clicked"] }, { type: i8.GridCellClickedOpenNewTabComponent, selector: "symphony-grid-cell-clicked-open-new-tab", inputs: ["newTabUrl"] }, { type: i9.IconWrapperComponent, selector: "symphony-icon-wrapper", inputs: ["backgroundColor", "isInverse", "hasHoverWithoutBorder", "isDisabled"], outputs: ["clicked"] }, { type: i10.ButtonV2Component, selector: "symphony-button-v2" }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
130
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: MergeContactsModalComponent, decorators: [{
|
|
131
131
|
type: Component,
|
|
132
|
-
args: [{ selector: 'symphony-merge-contacts-modal', template: "<div class=\"sfx sfx-modal modal-container\" *ngIf=\"model\">\n <section class=\"modal-header sfx-p-30 sfx-pt-40\">\n <div class=\"modal-title\">\n <div class=\"row\">\n <div class=\"col-xs-8 col-sm-8 col-md-8 col-lg-8\">\n <ng-container *ngIf=\"getStepTitle(currentStep) as stepTitle\">\n <symphony-h4 [text]=\"stepTitle\"></symphony-h4>\n </ng-container> \n </div>\n <div class=\"col-xs-4 col-sm-4 col-md-4 col-lg-4\">\n <symphony-icon\n class=\"pull-right\"\n [icon]=\"'si-close-modal'\"\n (clicked)=\"onCancel()\"\n ></symphony-icon>\n </div>\n <div\n class=\"col-xs-12 col-sm-12 col-md-12 col-lg-12 sfx-mt-15\"\n *ngIf=\"getStepDescription(currentStep)\"\n >\n <ng-container *ngIf=\"getStepDescription(currentStep) as stepDescription\">\n <symphony-paragraph [text]=\"stepDescription\"></symphony-paragraph>\n </ng-container> \n </div>\n </div>\n </div>\n </section>\n <section class=\"modal-body sfx-p-30\" *ngIf=\"currentStep === 1\">\n <ng-container>\n <div class=\"toaster-alert-container-global\">\n <symphony-toaster-alert\n *ngIf=\"showSuccessToast\"\n [alertModel]=\"successToast\"\n (hideAlert)=\"onHideSuccessToast()\"\n ></symphony-toaster-alert>\n <symphony-toaster-alert\n *ngIf=\"showFailureToast\"\n [alertModel]=\"failureToast\"\n (hideAlert)=\"onHideFailureToast()\"\n ></symphony-toaster-alert>\n </div>\n <div *ngIf=\"isLoading\" class=\"sfx-mt-30 sfx-mb-30\">\n <symphony-sfx-loader></symphony-sfx-loader>\n </div>\n <div *ngIf=\"hasError\" class=\"sfx-mt-20 sfx-mb-20 sfx-txt-center\">\n <symphony-paragraph text=\"We couldn't retrieve the candidate data. The information cannot be displayed at this time, please try again.\"></symphony-paragraph>\n </div>\n <div *ngIf=\"!isLoading && !hasError && (!model?.suggestions || model.suggestions.length === 0)\" class=\"sfx-mt-20 sfx-mb-20 sfx-txt-center\">\n <symphony-paragraph text=\"No more duplicates exist for this selected contact. Please try again later.\"></symphony-paragraph>\n </div>\n <div *ngIf=\"!isLoading && !hasError && !confirmSuggestion && model?.suggestions?.length\" class=\"row\">\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Contact\"></symphony-h5> \n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card selected-contact-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ model.selectedContact.name }} [{{ model.selectedContact.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"model.selectedContact.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ model.selectedContact.email }}</span>\n </div>\n <div\n class=\"info-row\"\n *ngFor=\"let criterion of model.selectedContact.criteria\"\n >\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"model.selectedContact.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ model.selectedContact.atsId }}</span>\n </div>\n </div>\n </div>\n </div> \n </div>\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 [text]=\"'Potential Duplicates (' + (model?.suggestions?.length || 0) + ')'\"></symphony-h5>\n <div class=\"scrollable-container card-wrapper\">\n <div\n *ngFor=\"let suggestion of model.suggestions; let i = index\"\n class=\"suggestion-card\"\n [ngClass]=\"{ selected: selected === suggestion }\"\n (click)=\"onSelect(suggestion)\"\n >\n <div class=\"card-header\">\n <symphony-input-radio\n [radioID]=\"suggestion.id\"\n [name]=\"'merge-suggestions'\"\n [isActive]=\"selected === suggestion\"\n (clicked)=\"onSelect(suggestion)\"\n ></symphony-input-radio> \n <div class=\"card-title sfx-font-bold\">\n {{ suggestion.name }} [{{ suggestion.id }}]\n </div>\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <symphony-grid-cell-clicked-open-new-tab\n [newTabUrl]=\"getContactUrl(suggestion.id)\"\n ></symphony-grid-cell-clicked-open-new-tab>\n <symphony-icon-wrapper\n class=\"not-duplicate-icon-global\"\n title=\"Mark not duplicate\"\n (clicked)=\"onNotDuplicate(suggestion)\"\n >\n <symphony-icon [icon]=\"'si-exclude'\"></symphony-icon>\n </symphony-icon-wrapper>\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"suggestion.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ suggestion.email }}</span>\n </div>\n <div class=\"info-row\" *ngFor=\"let criterion of suggestion.criteria\">\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"suggestion.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ suggestion.atsId }}</span>\n </div>\n </div>\n <div class=\"match-criteria\" *ngIf=\"suggestion.statuses?.length\"> \n <div class=\"criteria-list\">\n <div class=\"match-label\">Contact's share the same:</div>\n <symphony-paragraph\n *ngFor=\"let status of suggestion.statuses\"\n [text]=\"status + '.'\"\n ></symphony-paragraph>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!isLoading && !hasError && confirmSuggestion\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Contact\"></symphony-h5>\n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card selected-contact-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ model.selectedContact.name }} [{{ model.selectedContact.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"model.selectedContact.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ model.selectedContact.email }}</span>\n </div>\n <div\n class=\"info-row\"\n *ngFor=\"let criterion of model.selectedContact.criteria\"\n >\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"model.selectedContact.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ model.selectedContact.atsId }}</span>\n </div>\n </div>\n </div>\n </div> \n </div>\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Duplicate\"></symphony-h5>\n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card confirm-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ confirmSuggestion.name }} [{{ confirmSuggestion.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"confirmSuggestion.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ confirmSuggestion.email }}</span>\n </div>\n <div class=\"info-row\" *ngFor=\"let criterion of confirmSuggestion.criteria\">\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"confirmSuggestion.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ confirmSuggestion.atsId }}</span>\n </div>\n </div>\n <div class=\"match-criteria\" *ngIf=\"confirmSuggestion.statuses?.length\">\n \n <div class=\"criteria-list\">\n <div class=\"match-label\">Contact's share the same:</div>\n <symphony-paragraph\n *ngFor=\"let status of confirmSuggestion.statuses\"\n [text]=\"status + '.'\"\n ></symphony-paragraph>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </section>\n <section *ngIf=\"currentStep === 2\" class=\"modal-body merge-contacts-body\">\n <ng-content></ng-content>\n </section>\n <section *ngIf=\"currentStep === 1\" class=\"modal-footer\">\n <ng-container *ngIf=\"!confirmSuggestion; else confirmActions\">\n <symphony-button-v2 text=\"Close\" [isSecondary]=\"true\" (clicked)=\"onCancel()\"></symphony-button-v2>\n <symphony-button-v2 text=\"Next\" [disabled]=\"!selected || !!confirmSuggestion\" (clicked)=\"onNext()\"></symphony-button-v2>\n </ng-container>\n <ng-template #confirmActions>\n <div class=\"confirm-actions\">\n <symphony-button-v2\n text=\"Back\"\n [isSecondary]=\"true\"\n (clicked)=\"cancelNotDuplicate()\"\n ></symphony-button-v2>\n <symphony-button-v2\n text=\"Confirm\"\n (clicked)=\"confirmOnNotDuplicate()\"\n ></symphony-button-v2>\n </div>\n </ng-template>\n </section>\n</div>\n", styles: [".scrollable-container{max-height:500px;display:flex;flex-direction:column;overflow-y:auto;padding:20px 10px;gap:10px}.radio-item{display:flex;align-items:flex-start;gap:5px}.radio-label{display:flex;align-items:center;gap:1px}.radio-details{padding-left:24px}.radio-action{margin-left:auto;display:flex}.icon-upwards{margin-top:-1px!important;margin-bottom:auto}.modal-footer{display:flex;gap:10px;width:100%;justify-content:flex-end}.confirm-actions{display:flex;gap:10px}.suggestion-confirm{margin-top:38px}.pending-icon{margin-right:8px}.suggestion-card{border:1px solid #e4e7ef;border-radius:10px;padding:20px;background:#ffffff}.suggestion-card .card-header{display:flex;align-items:flex-start}.suggestion-card .card-title{flex:1;word-break:break-word}.suggestion-card .card-actions{margin-left:auto;display:flex;gap:10px}.suggestion-card .card-body{margin-top:15px;display:flex;flex-direction:column;gap:8px}.suggestion-card .info-row{display:flex;align-items:baseline;gap:8px;word-break:break-word}.suggestion-card .match-criteria{margin-top:10px}.suggestion-card .match-label{font-size:.875rem;font-weight:500}.suggestion-card .criteria-list{display:flex;flex-wrap:wrap;gap:5px}.sfx-modal.modal-container .modal-body.merge-contacts-body{padding:0}\n"] }]
|
|
132
|
+
args: [{ selector: 'symphony-merge-contacts-modal', template: "<div class=\"sfx sfx-modal modal-container\" *ngIf=\"model\">\n <section class=\"modal-header sfx-p-30 sfx-pt-40\">\n <div class=\"modal-title\">\n <div class=\"row\">\n <div class=\"col-xs-8 col-sm-8 col-md-8 col-lg-8\">\n <ng-container *ngIf=\"getStepTitle(currentStep) as stepTitle\">\n <symphony-h4 [text]=\"stepTitle\"></symphony-h4>\n </ng-container> \n </div>\n <div class=\"col-xs-4 col-sm-4 col-md-4 col-lg-4\">\n <symphony-icon\n class=\"pull-right\"\n [icon]=\"'si-close-modal'\"\n (clicked)=\"onCancel()\"\n ></symphony-icon>\n </div>\n <div\n class=\"col-xs-12 col-sm-12 col-md-12 col-lg-12 sfx-mt-15\"\n [ngClass]=\"{'white-space-pre-line': currentStep === 2}\"\n *ngIf=\"getStepDescription(currentStep)\"\n >\n <ng-container *ngIf=\"getStepDescription(currentStep) as stepDescription\">\n <symphony-paragraph [text]=\"stepDescription\"></symphony-paragraph>\n </ng-container> \n </div>\n </div>\n </div>\n </section>\n <section class=\"modal-body sfx-p-30\" *ngIf=\"currentStep === 1\">\n <ng-container>\n <div class=\"toaster-alert-container-global\">\n <symphony-toaster-alert\n *ngIf=\"showSuccessToast\"\n [alertModel]=\"successToast\"\n (hideAlert)=\"onHideSuccessToast()\"\n ></symphony-toaster-alert>\n <symphony-toaster-alert\n *ngIf=\"showFailureToast\"\n [alertModel]=\"failureToast\"\n (hideAlert)=\"onHideFailureToast()\"\n ></symphony-toaster-alert>\n </div>\n <div *ngIf=\"isLoading\" class=\"sfx-mt-30 sfx-mb-30\">\n <symphony-sfx-loader></symphony-sfx-loader>\n </div>\n <div *ngIf=\"hasError\" class=\"sfx-mt-20 sfx-mb-20 sfx-txt-center\">\n <symphony-paragraph text=\"We couldn't retrieve the candidate data. The information cannot be displayed at this time, please try again.\"></symphony-paragraph>\n </div>\n <div *ngIf=\"!isLoading && !hasError && (!model?.suggestions || model.suggestions.length === 0)\" class=\"sfx-mt-20 sfx-mb-20 sfx-txt-center\">\n <symphony-paragraph text=\"No more duplicates exist for this selected contact. Please try again later.\"></symphony-paragraph>\n </div>\n <div *ngIf=\"!isLoading && !hasError && !confirmSuggestion && model?.suggestions?.length\" class=\"row\">\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Contact\"></symphony-h5> \n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card selected-contact-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ model.selectedContact.name }} [{{ model.selectedContact.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"model.selectedContact.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ model.selectedContact.email }}</span>\n </div>\n <div\n class=\"info-row\"\n *ngFor=\"let criterion of model.selectedContact.criteria\"\n >\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"model.selectedContact.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ model.selectedContact.atsId }}</span>\n </div>\n </div>\n </div>\n </div> \n </div>\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 [text]=\"'Potential Duplicates (' + (model?.suggestions?.length || 0) + ')'\"></symphony-h5>\n <div class=\"scrollable-container card-wrapper\">\n <div\n *ngFor=\"let suggestion of model.suggestions; let i = index\"\n class=\"suggestion-card\"\n [ngClass]=\"{ selected: selected === suggestion }\"\n (click)=\"onSelect(suggestion)\"\n >\n <div class=\"card-header\">\n <symphony-input-radio\n [radioID]=\"suggestion.id\"\n [name]=\"'merge-suggestions'\"\n [isActive]=\"selected === suggestion\"\n (clicked)=\"onSelect(suggestion)\"\n ></symphony-input-radio> \n <div class=\"card-title sfx-font-bold\">\n {{ suggestion.name }} [{{ suggestion.id }}]\n </div>\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <symphony-grid-cell-clicked-open-new-tab\n [newTabUrl]=\"getContactUrl(suggestion.id)\"\n ></symphony-grid-cell-clicked-open-new-tab>\n <symphony-icon-wrapper\n class=\"not-duplicate-icon-global\"\n title=\"Mark not duplicate\"\n (clicked)=\"onNotDuplicate(suggestion)\"\n >\n <symphony-icon [icon]=\"'si-exclude'\"></symphony-icon>\n </symphony-icon-wrapper>\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"suggestion.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ suggestion.email }}</span>\n </div>\n <div class=\"info-row\" *ngFor=\"let criterion of suggestion.criteria\">\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"suggestion.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ suggestion.atsId }}</span>\n </div>\n </div>\n <div class=\"match-criteria\" *ngIf=\"suggestion.statuses?.length\"> \n <div class=\"criteria-list\">\n <div class=\"match-label\">Contact's share the same:</div>\n <symphony-paragraph\n *ngFor=\"let status of suggestion.statuses\"\n [text]=\"status + '.'\"\n ></symphony-paragraph>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!isLoading && !hasError && confirmSuggestion\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Contact\"></symphony-h5>\n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card selected-contact-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ model.selectedContact.name }} [{{ model.selectedContact.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"model.selectedContact.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ model.selectedContact.email }}</span>\n </div>\n <div\n class=\"info-row\"\n *ngFor=\"let criterion of model.selectedContact.criteria\"\n >\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"model.selectedContact.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ model.selectedContact.atsId }}</span>\n </div>\n </div>\n </div>\n </div> \n </div>\n <div class=\"col-xs-12 col-sm-6 col-md-6 col-lg-6\">\n <symphony-h5 text=\"Selected Duplicate\"></symphony-h5>\n <div class=\"card-wrapper sfx-mt-20\">\n <div class=\"suggestion-card confirm-card\">\n <div class=\"card-header\">\n <div class=\"card-title sfx-font-bold\">\n {{ confirmSuggestion.name }} [{{ confirmSuggestion.id }}]\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"info-row\" *ngIf=\"confirmSuggestion.email\">\n <symphony-icon [icon]=\"'si-email-send'\"></symphony-icon>\n <span>{{ confirmSuggestion.email }}</span>\n </div>\n <div class=\"info-row\" *ngFor=\"let criterion of confirmSuggestion.criteria\">\n <symphony-icon\n *ngIf=\"criterion.iconClass\"\n [icon]=\"criterion.iconClass\"\n ></symphony-icon>\n <span>{{ criterion.value }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"confirmSuggestion.atsId\">\n <span class=\"sfx-txt-gray sfx-font-bold sfx-font12\">ATS ID:</span>\n <span>{{ confirmSuggestion.atsId }}</span>\n </div>\n </div>\n <div class=\"match-criteria\" *ngIf=\"confirmSuggestion.statuses?.length\">\n \n <div class=\"criteria-list\">\n <div class=\"match-label\">Contact's share the same:</div>\n <symphony-paragraph\n *ngFor=\"let status of confirmSuggestion.statuses\"\n [text]=\"status + '.'\"\n ></symphony-paragraph>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </section>\n <section *ngIf=\"currentStep === 2\" class=\"modal-body merge-contacts-body\">\n <ng-content></ng-content>\n </section>\n <section *ngIf=\"currentStep === 1\" class=\"modal-footer\">\n <ng-container *ngIf=\"!confirmSuggestion; else confirmActions\">\n <symphony-button-v2 text=\"Close\" [isSecondary]=\"true\" (clicked)=\"onCancel()\"></symphony-button-v2>\n <symphony-button-v2 text=\"Next\" [disabled]=\"!selected || !!confirmSuggestion\" (clicked)=\"onNext()\"></symphony-button-v2>\n </ng-container>\n <ng-template #confirmActions>\n <div class=\"confirm-actions\">\n <symphony-button-v2\n text=\"Back\"\n [isSecondary]=\"true\"\n (clicked)=\"cancelNotDuplicate()\"\n ></symphony-button-v2>\n <symphony-button-v2\n text=\"Confirm\"\n (clicked)=\"confirmOnNotDuplicate()\"\n ></symphony-button-v2>\n </div>\n </ng-template>\n </section>\n</div>\n", styles: [".scrollable-container{max-height:500px;display:flex;flex-direction:column;overflow-y:auto;padding:20px 10px;gap:10px}.radio-item{display:flex;align-items:flex-start;gap:5px}.radio-label{display:flex;align-items:center;gap:1px}.radio-details{padding-left:24px}.radio-action{margin-left:auto;display:flex}.icon-upwards{margin-top:-1px!important;margin-bottom:auto}.modal-footer{display:flex;gap:10px;width:100%;justify-content:flex-end}.confirm-actions{display:flex;gap:10px}.suggestion-confirm{margin-top:38px}.pending-icon{margin-right:8px}.suggestion-card{border:1px solid #e4e7ef;border-radius:10px;padding:20px;background:#ffffff}.suggestion-card .card-header{display:flex;align-items:flex-start}.suggestion-card .card-title{flex:1;word-break:break-word}.suggestion-card .card-actions{margin-left:auto;display:flex;gap:10px}.suggestion-card .card-body{margin-top:15px;display:flex;flex-direction:column;gap:8px}.suggestion-card .info-row{display:flex;align-items:baseline;gap:8px;word-break:break-word}.suggestion-card .match-criteria{margin-top:10px}.suggestion-card .match-label{font-size:.875rem;font-weight:500}.suggestion-card .criteria-list{display:flex;flex-wrap:wrap;gap:5px}.sfx-modal.modal-container .modal-body.merge-contacts-body{padding:0}.sfx-modal.modal-container .modal-title .white-space-pre-line{white-space:pre-line}\n"] }]
|
|
133
133
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
134
134
|
type: Input
|
|
135
135
|
}], isLoading: [{
|
|
@@ -167,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
167
167
|
}], currentStep: [{
|
|
168
168
|
type: Input
|
|
169
169
|
}] } });
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtY29udGFjdHMtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9vcmdhbmlzbXMvbWVyZ2UtY29udGFjdHMtbW9kYWwvbWVyZ2UtY29udGFjdHMtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9vcmdhbmlzbXMvbWVyZ2UtY29udGFjdHMtbW9kYWwvbWVyZ2UtY29udGFjdHMtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDakIsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU92RCxNQUFNLE9BQU8sMkJBQTJCO0lBeUJ0QztRQXZCUyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFtRCxFQUFFLENBQUM7UUFDN0QsU0FBSSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQ2xELFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2xDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBR3JDLENBQUM7UUFDSyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQzdELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDNUMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUM1Qyw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUV0RSxtQ0FBOEIsR0FBRyxJQUFJLFlBQVksRUFBUSxD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LHFCQUFxQixDQUMzQixJQUFZO1FBRVosTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEMsSUFBSSxTQUFTLElBQUksU0FBUyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsR0FBRyxTQUFTO2dCQUNaLEdBQUcsU0FBUzthQUNiLENBQUM7U0FDSDtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7O3dIQWhKVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixrcUJDYnhDLHdrV0FxUEE7MkZEeE9hLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSwrQkFBK0I7MEVBS2hDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBSUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRSxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLDhCQUE4QjtzQkFBdkMsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVyZ2VDb250YWN0c01vZGFsTW9kZWwsIE1lcmdlQ29udGFjdHNTdGVwQ29weSwgTWVyZ2VDb250YWN0U3VnZ2VzdGlvbiB9IGZyb20gJy4vbWVyZ2UtY29udGFjdHMtbW9kYWwubW9kZWwnO1xuaW1wb3J0IHtcbiAgQWxlcnREdXJhdGlvbixcbiAgVG9hc3RlckFsZXJ0TW9kZWwsXG4gIFRvYXN0ZXJBbGVydFR5cGUsXG59IGZyb20gJy4uLy4uL2F0b21zL3RvYXN0ZXItYWxlcnQvdG9hc3Rlci1hbGVydC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N5bXBob255LW1lcmdlLWNvbnRhY3RzLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lcmdlLWNvbnRhY3RzLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVyZ2UtY29udGFjdHMtbW9kYWwuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNZXJnZUNvbnRhY3RzTW9kYWxDb21wb25lbnQge1xuICBASW5wdXQoKSBtb2RlbDogTWVyZ2VDb250YWN0c01vZGFsTW9kZWw7XG4gIEBJbnB1dCgpIGlzTG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBoYXNFcnJvciA9IGZhbHNlO1xuICBASW5wdXQoKSBzdGVwQ29weTogUGFydGlhbDxSZWNvcmQ8bnVtYmVyLCBNZXJnZUNvbnRhY3RzU3RlcENvcHk+PiA9IHt9OyAgXG4gIEBPdXRwdXQoKSBuZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxNZXJnZUNvbnRhY3RTdWdnZXN0aW9uPigpO1xuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbm90RHVwbGljYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgc2VsZWN0ZWQ6IE1lcmdlQ29udGFjdHNNb2RhbE1vZGVsWydzZWxlY3RlZENvbnRhY3QnXTtcbiAgICBzdWdnZXN0aW9uOiBNZXJnZUNvbnRhY3RTdWdnZXN0aW9uO1xuICB9PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNZXJnZUNvbnRhY3RTdWdnZXN0aW9uPigpO1xuICBAT3V0cHV0KCkgaGlkZVN1Y2Nlc3NUb2FzdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGhpZGVGYWlsdXJlVG9hc3QgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSByZXF1ZXN0Q29uZmlybVN1Z2dlc3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPE1lcmdlQ29udGFjdFN1Z2dlc3Rpb24+KCk7XG4gIEBJbnB1dCgpIGNvbmZpcm1TdGVwQ29weT86IE1lcmdlQ29udGFjdHNTdGVwQ29weTsgIFxuICBAT3V0cHV0KCkgcmVxdWVzdENhbmNlbENvbmZpcm1TdWdnZXN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBASW5wdXQoKSBzZWxlY3RlZDogTWVyZ2VDb250YWN0U3VnZ2VzdGlvbiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBjb25maXJtU3VnZ2VzdGlvbjogTWVyZ2VDb250YWN0U3VnZ2VzdGlvbiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzaG93U3VjY2Vzc1RvYXN0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dGYWlsdXJlVG9hc3QgPSBmYWxzZTtcbiAgQElucHV0KCkgY3VycmVudFN0ZXA6IG51bWJlciA9IDE7XG4gIHN1Y2Nlc3NUb2FzdDogVG9hc3RlckFsZXJ0TW9kZWw7XG4gIGZhaWx1cmVUb2FzdDogVG9hc3RlckFsZXJ0TW9kZWw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIHRoaXMuc3VjY2Vzc1RvYXN0ID0gbmV3IFRvYXN0ZXJBbGVydE1vZGVsKCk7XG4gIHRoaXMuc3VjY2Vzc1RvYXN0LnR5cGUgPSBUb2FzdGVyQWxlcnRUeXBlLlN1Y2Nlc3M7XG4gIHRoaXMuc3VjY2Vzc1RvYXN0Lm1lc3NhZ2UgPSBcIkNvbnRhY3QgcmVtb3ZlZCBmcm9tIGR1cGxpY2F0ZXMgc3VjY2Vzc2Z1bGx5XCI7XG4gIHRoaXMuc3VjY2Vzc1RvYXN0LmR1cmF0aW9uID0gQWxlcnREdXJhdGlvbi5GaXZlU2Vjb25kcztcbiAgdGhpcy5zdWNjZXNzVG9hc3Quc2hvd0Nsb3NlSWNvbiA9IHRydWU7XG5cbiAgdGhpcy5mYWlsdXJlVG9hc3QgPSBuZXcgVG9hc3RlckFsZXJ0TW9kZWwoKTtcbiAgdGhpcy5mYWlsdXJlVG9hc3QudHlwZSA9IFRvYXN0ZXJBbGVydFR5cGUuRXJyb3I7XG4gIHRoaXMuZmFpbHVyZVRvYXN0Lm1lc3NhZ2UgPSBcIkZhaWxlZCB0byByZW1vdmUgY29udGFjdCBmcm9tIGR1cGxpY2F0ZXNcIjtcbiAgdGhpcy5mYWlsdXJlVG9hc3QuZHVyYXRpb24gPSBBbGVydER1cmF0aW9uLkZpdmVTZWNvbmRzO1xuICB0aGlzLmZhaWx1cmVUb2FzdC5zaG93Q2xvc2VJY29uID0gdHJ1ZTtcbiAgfVxuXG4gIG9uTmV4dCgpIHtcbiAgICB0aGlzLm5leHQuZW1pdCh0aGlzLnNlbGVjdGVkKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCkge1xuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2VsZWN0KHN1Z2dlc3Rpb246IE1lcmdlQ29udGFjdFN1Z2dlc3Rpb24pIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHN1Z2dlc3Rpb24pO1xuICB9XG5cbiAgb25Ob3REdXBsaWNhdGUoc3VnZ2VzdGlvbjogTWVyZ2VDb250YWN0U3VnZ2VzdGlvbikge1xuICAgIHRoaXMucmVxdWVzdENvbmZpcm1TdWdnZXN0aW9uLmVtaXQoc3VnZ2VzdGlvbik7XG4gIH1cblxuICBjYW5jZWxOb3REdXBsaWNhdGUoKSB7XG4gICAgdGhpcy5yZXF1ZXN0Q2FuY2VsQ29uZmlybVN1Z2dlc3Rpb24uZW1pdCgpO1xuICB9XG5cbiAgY29uZmlybU9uTm90RHVwbGljYXRlKCkge1xuICAgIGlmICh0aGlzLmNvbmZpcm1TdWdnZXN0aW9uKSB7XG4gICAgICB0aGlzLm5vdER1cGxpY2F0ZS5lbWl0KHtcbiAgICAgICAgc2VsZWN0ZWQ6IHRoaXMubW9kZWwuc2VsZWN0ZWRDb250YWN0LFxuICAgICAgICBzdWdnZXN0aW9uOiB0aGlzLmNvbmZpcm1TdWdnZXN0aW9uLFxuICAgICAgfSk7XG4gICAgIH1cbiAgfVxuXG4gIGhhbmRsZU5vdER1cGxpY2F0ZVN1Y2Nlc3MoKSB7XG4gICAgY29uc3QgcmVtb3ZlZCA9IHRoaXMuY29uZmlybVN1Z2dlc3Rpb247XG4gICAgaWYgKHJlbW92ZWQpIHtcbiAgICAgIHRoaXMubW9kZWwuc3VnZ2VzdGlvbnMgPSB0aGlzLm1vZGVsLnN1Z2dlc3Rpb25zLmZpbHRlcihcbiAgICAgICAgKHMpID0+IHMgIT09IHJlbW92ZWRcbiAgICAgICk7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29uZmlybVN1Z2dlc3Rpb24gPSBudWxsO1xuICAgICAgdGhpcy5zaG93U3VjY2Vzc1RvYXN0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTm90RHVwbGljYXRlRXJyb3IoKSB7XG4gICAgdGhpcy5zaG93RmFpbHVyZVRvYXN0ID0gdHJ1ZTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgb25IaWRlU3VjY2Vzc1RvYXN0KCkge1xuICAgIHRoaXMuaGlkZVN1Y2Nlc3NUb2FzdC5lbWl0KCk7XG4gIH1cbiAgb25IaWRlRmFpbHVyZVRvYXN0KCkge1xuICAgIHRoaXMuaGlkZUZhaWx1cmVUb2FzdC5lbWl0KCk7XG4gIH1cblxuICBnZXRDb250YWN0VXJsKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIGNvbnN0IFtiYXNlVXJsXSA9IHVybC5zcGxpdCgnIycpO1xuICAgIHJldHVybiBgJHtiYXNlVXJsfSMvY2FuZGlkYXRlcHJvZmlsZXZpZXc/aWQ9JHtpZH1gO1xuICB9XG5cbiAgZ2V0U3RlcFRpdGxlKHN0ZXA6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RlcENvcHkoc3RlcCk/LnRpdGxlO1xuICB9XG5cbiAgZ2V0U3RlcERlc2NyaXB0aW9uKHN0ZXA6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RlcENvcHkoc3RlcCk/LmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdGVwQ29weShzdGVwOiBudW1iZXIpOiBNZXJnZUNvbnRhY3RzU3RlcENvcHkgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmNvbmZpcm1TdWdnZXN0aW9uICYmIHN0ZXAgPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbmZpcm1TdWdnZXN0aW9uQ29weSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldENvbmZpZ3VyZWRTdGVwQ29weShzdGVwKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uZmlybVN1Z2dlc3Rpb25Db3B5KCk6IE1lcmdlQ29udGFjdHNTdGVwQ29weSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29uZmlybUNvcHk6IE1lcmdlQ29udGFjdHNTdGVwQ29weSA9IHtcbiAgICAgIC4uLih0aGlzLm1vZGVsPy5jb25maXJtU3RlcENvcHkgPz8ge30pLFxuICAgICAgLi4uKHRoaXMuY29uZmlybVN0ZXBDb3B5ID8/IHt9KSxcbiAgICB9O1xuXG4gICAgaWYgKGNvbmZpcm1Db3B5LnRpdGxlIHx8IGNvbmZpcm1Db3B5LmRlc2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm4gY29uZmlybUNvcHk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29uZmlndXJlZFN0ZXBDb3B5KDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb25maWd1cmVkU3RlcENvcHkoXG4gICAgc3RlcDogbnVtYmVyXG4gICk6IE1lcmdlQ29udGFjdHNTdGVwQ29weSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbW9kZWxDb3B5ID0gdGhpcy5tb2RlbD8uc3RlcENvcHk/LltzdGVwXTtcbiAgICBjb25zdCBpbnB1dENvcHkgPSB0aGlzLnN0ZXBDb3B5Py5bc3RlcF07XG5cbiAgICBpZiAobW9kZWxDb3B5IHx8IGlucHV0Q29weSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubW9kZWxDb3B5LFxuICAgICAgICAuLi5pbnB1dENvcHksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgXG59XG4iLCI8ZGl2IGNsYXNzPVwic2Z4IHNmeC1tb2RhbCBtb2RhbC1jb250YWluZXJcIiAqbmdJZj1cIm1vZGVsXCI+XG4gIDxzZWN0aW9uIGNsYXNzPVwibW9kYWwtaGVhZGVyIHNmeC1wLTMwIHNmeC1wdC00MFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTggY29sLXNtLTggY29sLW1kLTggY29sLWxnLThcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0U3RlcFRpdGxlKGN1cnJlbnRTdGVwKSBhcyBzdGVwVGl0bGVcIj5cbiAgICAgICAgICAgIDxzeW1waG9ueS1oNCBbdGV4dF09XCJzdGVwVGl0bGVcIj48L3N5bXBob255LWg0PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtNCBjb2wtc20tNCBjb2wtbWQtNCBjb2wtbGctNFwiPlxuICAgICAgICAgIDxzeW1waG9ueS1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInB1bGwtcmlnaHRcIlxuICAgICAgICAgICAgW2ljb25dPVwiJ3NpLWNsb3NlLW1vZGFsJ1wiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkNhbmNlbCgpXCJcbiAgICAgICAgICA+PC9zeW1waG9ueS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0xMiBjb2wtbWQtMTIgY29sLWxnLTEyIHNmeC1tdC0xNVwiXG4gICAgICAgICAgKm5nSWY9XCJnZXRTdGVwRGVzY3JpcHRpb24oY3VycmVudFN0ZXApXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRTdGVwRGVzY3JpcHRpb24oY3VycmVudFN0ZXApIGFzIHN0ZXBEZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPHN5bXBob255LXBhcmFncmFwaCBbdGV4dF09XCJzdGVwRGVzY3JpcHRpb25cIj48L3N5bXBob255LXBhcmFncmFwaD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuICA8c2VjdGlvbiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Z4LXAtMzBcIiAqbmdJZj1cImN1cnJlbnRTdGVwID09PSAxXCI+XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwidG9hc3Rlci1hbGVydC1jb250YWluZXItZ2xvYmFsXCI+XG4gICAgICAgIDxzeW1waG9ueS10b2FzdGVyLWFsZXJ0XG4gICAgICAgICAgKm5nSWY9XCJzaG93U3VjY2Vzc1RvYXN0XCJcbiAgICAgICAgICBbYWxlcnRNb2RlbF09XCJzdWNjZXNzVG9hc3RcIlxuICAgICAgICAgIChoaWRlQWxlcnQpPVwib25IaWRlU3VjY2Vzc1RvYXN0KClcIlxuICAgICAgICA+PC9zeW1waG9ueS10b2FzdGVyLWFsZXJ0PlxuICAgICAgPHN5bXBob255LXRvYXN0ZXItYWxlcnRcbiAgICAgICAgKm5nSWY9XCJzaG93RmFpbHVyZVRvYXN0XCJcbiAgICAgICAgW2FsZXJ0TW9kZWxdPVwiZmFpbHVyZVRvYXN0XCJcbiAgICAgICAgKGhpZGVBbGVydCk9XCJvbkhpZGVGYWlsdXJlVG9hc3QoKVwiXG4gICAgICA+PC9zeW1waG9ueS10b2FzdGVyLWFsZXJ0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cInNmeC1tdC0zMCBzZngtbWItMzBcIj5cbiAgICAgIDxzeW1waG9ueS1zZngtbG9hZGVyPjwvc3ltcGhvbnktc2Z4LWxvYWRlcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaGFzRXJyb3JcIiBjbGFzcz1cInNmeC1tdC0yMCBzZngtbWItMjAgc2Z4LXR4dC1jZW50ZXJcIj5cbiAgICAgIDxzeW1waG9ueS1wYXJhZ3JhcGggdGV4dD1cIldlIGNvdWxkbid0IHJldHJpZXZlIHRoZSBjYW5kaWRhdGUgZGF0YS4gVGhlIGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkaXNwbGF5ZWQgYXQgdGhpcyB0aW1lLCBwbGVhc2UgdHJ5IGFnYWluLlwiPjwvc3ltcGhvbnktcGFyYWdyYXBoPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFoYXNFcnJvciAmJiAoIW1vZGVsPy5zdWdnZXN0aW9ucyB8fCBtb2RlbC5zdWdnZXN0aW9ucy5sZW5ndGggPT09IDApXCIgY2xhc3M9XCJzZngtbXQtMjAgc2Z4LW1iLTIwIHNmeC10eHQtY2VudGVyXCI+XG4gICAgICA8c3ltcGhvbnktcGFyYWdyYXBoIHRleHQ9XCJObyBtb3JlIGR1cGxpY2F0ZXMgZXhpc3QgZm9yIHRoaXMgc2VsZWN0ZWQgY29udGFjdC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5cIj48L3N5bXBob255LXBhcmFncmFwaD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAhaGFzRXJyb3IgJiYgIWNvbmZpcm1TdWdnZXN0aW9uICYmIG1vZGVsPy5zdWdnZXN0aW9ucz8ubGVuZ3RoXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTYgY29sLW1kLTYgY29sLWxnLTZcIj5cbiAgICAgICAgPHN5bXBob255LWg1IHRleHQ9XCJTZWxlY3RlZCBDb250YWN0XCI+PC9zeW1waG9ueS1oNT4gICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC13cmFwcGVyIHNmeC1tdC0yMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0aW9uLWNhcmQgc2VsZWN0ZWQtY29udGFjdC1jYXJkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgc2Z4LWZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgIHt7IG1vZGVsLnNlbGVjdGVkQ29udGFjdC5uYW1lIH19IFt7eyBtb2RlbC5zZWxlY3RlZENvbnRhY3QuaWQgfX1dXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwibW9kZWwuc2VsZWN0ZWRDb250YWN0LmVtYWlsXCI+XG4gICAgICAgICAgICAgICAgPHN5bXBob255LWljb24gW2ljb25dPVwiJ3NpLWVtYWlsLXNlbmQnXCI+PC9zeW1waG9ueS1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IG1vZGVsLnNlbGVjdGVkQ29udGFjdC5lbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImluZm8tcm93XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY3JpdGVyaW9uIG9mIG1vZGVsLnNlbGVjdGVkQ29udGFjdC5jcml0ZXJpYVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ltcGhvbnktaWNvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcml0ZXJpb24uaWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cImNyaXRlcmlvbi5pY29uQ2xhc3NcIlxuICAgICAgICAgICAgICAgID48L3N5bXBob255LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgY3JpdGVyaW9uLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tcm93XCIgKm5nSWY9XCJtb2RlbC5zZWxlY3RlZENvbnRhY3QuYXRzSWRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmeC10eHQtZ3JheSBzZngtZm9udC1ib2xkIHNmeC1mb250MTJcIj5BVFMgSUQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IG1vZGVsLnNlbGVjdGVkQ29udGFjdC5hdHNJZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+ICAgICAgICBcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tNiBjb2wtbWQtNiBjb2wtbGctNlwiPlxuICAgICAgIDxzeW1waG9ueS1oNSBbdGV4dF09XCInUG90ZW50aWFsIER1cGxpY2F0ZXMgKCcgKyAobW9kZWw/LnN1Z2dlc3Rpb25zPy5sZW5ndGggfHwgMCkgKyAnKSdcIj48L3N5bXBob255LWg1PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsYWJsZS1jb250YWluZXIgY2FyZC13cmFwcGVyXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN1Z2dlc3Rpb24gb2YgbW9kZWwuc3VnZ2VzdGlvbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdWdnZXN0aW9uLWNhcmRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBzZWxlY3RlZDogc2VsZWN0ZWQgPT09IHN1Z2dlc3Rpb24gfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3Qoc3VnZ2VzdGlvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgICAgICAgICAgICA8c3ltcGhvbnktaW5wdXQtcmFkaW9cbiAgICAgICAgICAgICAgICBbcmFkaW9JRF09XCJzdWdnZXN0aW9uLmlkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCInbWVyZ2Utc3VnZ2VzdGlvbnMnXCJcbiAgICAgICAgICAgICAgICBbaXNBY3RpdmVdPVwic2VsZWN0ZWQgPT09IHN1Z2dlc3Rpb25cIlxuICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uU2VsZWN0KHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgICAgICAgPjwvc3ltcGhvbnktaW5wdXQtcmFkaW8+ICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgc2Z4LWZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgIHt7IHN1Z2dlc3Rpb24ubmFtZSB9fSBbe3sgc3VnZ2VzdGlvbi5pZCB9fV1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWFjdGlvbnNcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPHN5bXBob255LWdyaWQtY2VsbC1jbGlja2VkLW9wZW4tbmV3LXRhYlxuICAgICAgICAgICAgICAgICAgW25ld1RhYlVybF09XCJnZXRDb250YWN0VXJsKHN1Z2dlc3Rpb24uaWQpXCJcbiAgICAgICAgICAgICAgICA+PC9zeW1waG9ueS1ncmlkLWNlbGwtY2xpY2tlZC1vcGVuLW5ldy10YWI+XG4gICAgICAgICAgICAgICAgPHN5bXBob255LWljb24td3JhcHBlclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJub3QtZHVwbGljYXRlLWljb24tZ2xvYmFsXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiTWFyayBub3QgZHVwbGljYXRlXCJcbiAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uTm90RHVwbGljYXRlKHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3ltcGhvbnktaWNvbiBbaWNvbl09XCInc2ktZXhjbHVkZSdcIj48L3N5bXBob255LWljb24+XG4gICAgICAgICAgICAgICAgPC9zeW1waG9ueS1pY29uLXdyYXBwZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwic3VnZ2VzdGlvbi5lbWFpbFwiPlxuICAgICAgICAgICAgICAgIDxzeW1waG9ueS1pY29uIFtpY29uXT1cIidzaS1lbWFpbC1zZW5kJ1wiPjwvc3ltcGhvbnktaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBzdWdnZXN0aW9uLmVtYWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tcm93XCIgKm5nRm9yPVwibGV0IGNyaXRlcmlvbiBvZiBzdWdnZXN0aW9uLmNyaXRlcmlhXCI+XG4gICAgICAgICAgICAgICAgPHN5bXBob255LWljb25cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JpdGVyaW9uLmljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICBbaWNvbl09XCJjcml0ZXJpb24uaWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICA+PC9zeW1waG9ueS1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNyaXRlcmlvbi52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwic3VnZ2VzdGlvbi5hdHNJZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Z4LXR4dC1ncmF5IHNmeC1mb250LWJvbGQgc2Z4LWZvbnQxMlwiPkFUUyBJRDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgc3VnZ2VzdGlvbi5hdHNJZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXRjaC1jcml0ZXJpYVwiICpuZ0lmPVwic3VnZ2VzdGlvbi5zdGF0dXNlcz8ubGVuZ3RoXCI+ICAgICAgICAgIFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXRjaC1sYWJlbFwiPkNvbnRhY3QncyBzaGFyZSB0aGUgc2FtZTo8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3ltcGhvbnktcGFyYWdyYXBoXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RhdHVzIG9mIHN1Z2dlc3Rpb24uc3RhdHVzZXNcIlxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwic3RhdHVzICsgJy4nXCJcbiAgICAgICAgICAgICAgICA+PC9zeW1waG9ueS1wYXJhZ3JhcGg+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgIWhhc0Vycm9yICYmIGNvbmZpcm1TdWdnZXN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTYgY29sLW1kLTYgY29sLWxnLTZcIj5cbiAgICAgICAgICA8c3ltcGhvbnktaDUgdGV4dD1cIlNlbGVjdGVkIENvbnRhY3RcIj48L3N5bXBob255LWg1PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXdyYXBwZXIgc2Z4LW10LTIwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VnZ2VzdGlvbi1jYXJkIHNlbGVjdGVkLWNvbnRhY3QtY2FyZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBzZngtZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICB7eyBtb2RlbC5zZWxlY3RlZENvbnRhY3QubmFtZSB9fSBbe3sgbW9kZWwuc2VsZWN0ZWRDb250YWN0LmlkIH19XVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwibW9kZWwuc2VsZWN0ZWRDb250YWN0LmVtYWlsXCI+XG4gICAgICAgICAgICAgICAgICA8c3ltcGhvbnktaWNvbiBbaWNvbl09XCInc2ktZW1haWwtc2VuZCdcIj48L3N5bXBob255LWljb24+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBtb2RlbC5zZWxlY3RlZENvbnRhY3QuZW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLXJvd1wiXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY3JpdGVyaW9uIG9mIG1vZGVsLnNlbGVjdGVkQ29udGFjdC5jcml0ZXJpYVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHN5bXBob255LWljb25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcml0ZXJpb24uaWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiY3JpdGVyaW9uLmljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICA+PC9zeW1waG9ueS1pY29uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY3JpdGVyaW9uLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwibW9kZWwuc2VsZWN0ZWRDb250YWN0LmF0c0lkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmeC10eHQtZ3JheSBzZngtZm9udC1ib2xkIHNmeC1mb250MTJcIj5BVFMgSUQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgbW9kZWwuc2VsZWN0ZWRDb250YWN0LmF0c0lkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PiAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTYgY29sLW1kLTYgY29sLWxnLTZcIj5cbiAgICAgICAgICA8c3ltcGhvbnktaDUgdGV4dD1cIlNlbGVjdGVkIER1cGxpY2F0ZVwiPjwvc3ltcGhvbnktaDU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtd3JhcHBlciBzZngtbXQtMjBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0aW9uLWNhcmQgY29uZmlybS1jYXJkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIHNmeC1mb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGNvbmZpcm1TdWdnZXN0aW9uLm5hbWUgfX0gW3t7IGNvbmZpcm1TdWdnZXN0aW9uLmlkIH19XVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwiY29uZmlybVN1Z2dlc3Rpb24uZW1haWxcIj5cbiAgICAgICAgICAgICAgICAgIDxzeW1waG9ueS1pY29uIFtpY29uXT1cIidzaS1lbWFpbC1zZW5kJ1wiPjwvc3ltcGhvbnktaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbmZpcm1TdWdnZXN0aW9uLmVtYWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0Zvcj1cImxldCBjcml0ZXJpb24gb2YgY29uZmlybVN1Z2dlc3Rpb24uY3JpdGVyaWFcIj5cbiAgICAgICAgICAgICAgICAgIDxzeW1waG9ueS1pY29uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JpdGVyaW9uLmljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImNyaXRlcmlvbi5pY29uQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgPjwvc3ltcGhvbnktaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNyaXRlcmlvbi52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiAqbmdJZj1cImNvbmZpcm1TdWdnZXN0aW9uLmF0c0lkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmeC10eHQtZ3JheSBzZngtZm9udC1ib2xkIHNmeC1mb250MTJcIj5BVFMgSUQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29uZmlybVN1Z2dlc3Rpb24uYXRzSWQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0Y2gtY3JpdGVyaWFcIiAqbmdJZj1cImNvbmZpcm1TdWdnZXN0aW9uLnN0YXR1c2VzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdGNoLWxhYmVsXCI+Q29udGFjdCdzIHNoYXJlIHRoZSBzYW1lOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHN5bXBob255LXBhcmFncmFwaFxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RhdHVzIG9mIGNvbmZpcm1TdWdnZXN0aW9uLnN0YXR1c2VzXCJcbiAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwic3RhdHVzICsgJy4nXCJcbiAgICAgICAgICAgICAgICAgID48L3N5bXBob255LXBhcmFncmFwaD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9zZWN0aW9uPlxuICA8c2VjdGlvbiAqbmdJZj1cImN1cnJlbnRTdGVwID09PSAyXCIgY2xhc3M9XCJtb2RhbC1ib2R5IG1lcmdlLWNvbnRhY3RzLWJvZHlcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc2VjdGlvbj5cbiAgPHNlY3Rpb24gKm5nSWY9XCJjdXJyZW50U3RlcCA9PT0gMVwiIGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb25maXJtU3VnZ2VzdGlvbjsgZWxzZSBjb25maXJtQWN0aW9uc1wiPlxuICAgICAgPHN5bXBob255LWJ1dHRvbi12MiB0ZXh0PVwiQ2xvc2VcIiBbaXNTZWNvbmRhcnldPVwidHJ1ZVwiIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj48L3N5bXBob255LWJ1dHRvbi12Mj5cbiAgICAgIDxzeW1waG9ueS1idXR0b24tdjIgdGV4dD1cIk5leHRcIiBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkIHx8ICEhY29uZmlybVN1Z2dlc3Rpb25cIiAoY2xpY2tlZCk9XCJvbk5leHQoKVwiPjwvc3ltcGhvbnktYnV0dG9uLXYyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlybUFjdGlvbnM+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybS1hY3Rpb25zXCI+XG4gICAgICAgIDxzeW1waG9ueS1idXR0b24tdjJcbiAgICAgICAgICB0ZXh0PVwiQmFja1wiXG4gICAgICAgICAgW2lzU2Vjb25kYXJ5XT1cInRydWVcIlxuICAgICAgICAgIChjbGlja2VkKT1cImNhbmNlbE5vdER1cGxpY2F0ZSgpXCJcbiAgICAgICAgPjwvc3ltcGhvbnktYnV0dG9uLXYyPlxuICAgICAgICA8c3ltcGhvbnktYnV0dG9uLXYyXG4gICAgICAgICAgdGV4dD1cIkNvbmZpcm1cIlxuICAgICAgICAgIChjbGlja2VkKT1cImNvbmZpcm1Pbk5vdER1cGxpY2F0ZSgpXCJcbiAgICAgICAgPjwvc3ltcGhvbnktYnV0dG9uLXYyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtY29udGFjdHMtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9vcmdhbmlzbXMvbWVyZ2UtY29udGFjdHMtbW9kYWwvbWVyZ2UtY29udGFjdHMtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9vcmdhbmlzbXMvbWVyZ2UtY29udGFjdHMtbW9kYWwvbWVyZ2UtY29udGFjdHMtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDakIsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU92RCxNQUFNLE9BQU8sMkJBQTJCO0lBeUJ0QztRQXZCUyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFtRCxFQUFFLENBQUM7UUFDN0QsU0FBSSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQ2xELFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2xDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBR3JDLENBQUM7UUFDSyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQzdELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDNUMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUM1Qyw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUV0RSxtQ0FBOEIsR0FBRyxJQUFJLFlBQVksRUFBUSxD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LHFCQUFxQixDQUMzQixJQUFZO1FBRVosTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEMsSUFBSSxTQUFTLElBQUksU0FBUyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsR0FBRyxTQUFTO2dCQUNaLEdBQUcsU0FBUzthQUNiLENBQUM7U0FDSDtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7O3dIQWhKVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixrcUJDYnhDLDZvV0FzUEE7MkZEek9hLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSwrQkFBK0I7MEVBS2hDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBSUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRSxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLDhCQUE4QjtzQkFBdkMsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVyZ2VDb250YWN0c01vZGFsTW9kZWwsIE1lcmdlQ29udGFjdHNTdGVwQ29weSwgTWVyZ2VDb250YWN0U3VnZ2VzdGlvbiB9IGZyb20gJy4vbWVyZ2UtY29udGFjdHMtbW9kYWwubW9kZWwnO1xuaW1wb3J0IHtcbiAgQWxlcnREdXJhdGlvbixcbiAgVG9hc3RlckFsZXJ0TW9kZWwsXG4gIFRvYXN0ZXJBbGVydFR5cGUsXG59IGZyb20gJy4uLy4uL2F0b21zL3RvYXN0ZXItYWxlcnQvdG9hc3Rlci1hbGVydC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N5bXBob255LW1lcmdlLWNvbnRhY3RzLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lcmdlLWNvbnRhY3RzLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVyZ2UtY29udGFjdHMtbW9kYWwuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNZXJnZUNvbnRhY3RzTW9kYWxDb21wb25lbnQge1xuICBASW5wdXQoKSBtb2RlbDogTWVyZ2VDb250YWN0c01vZGFsTW9kZWw7XG4gIEBJbnB1dCgpIGlzTG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBoYXNFcnJvciA9IGZhbHNlO1xuICBASW5wdXQoKSBzdGVwQ29weTogUGFydGlhbDxSZWNvcmQ8bnVtYmVyLCBNZXJnZUNvbnRhY3RzU3RlcENvcHk+PiA9IHt9OyAgXG4gIEBPdXRwdXQoKSBuZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxNZXJnZUNvbnRhY3RTdWdnZXN0aW9uPigpO1xuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbm90RHVwbGljYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgc2VsZWN0ZWQ6IE1lcmdlQ29udGFjdHNNb2RhbE1vZGVsWydzZWxlY3RlZENvbnRhY3QnXTtcbiAgICBzdWdnZXN0aW9uOiBNZXJnZUNvbnRhY3RTdWdnZXN0aW9uO1xuICB9PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNZXJnZUNvbnRhY3RTdWdnZXN0aW9uPigpO1xuICBAT3V0cHV0KCkgaGlkZVN1Y2Nlc3NUb2FzdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGhpZGVGYWlsdXJlVG9hc3QgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSByZXF1ZXN0Q29uZmlybVN1Z2dlc3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPE1lcmdlQ29udGFjdFN1Z2dlc3Rpb24+KCk7XG4gIEBJbnB1dCgpIGNvbmZpcm1TdGVwQ29weT86IE1lcmdlQ29udGFjdHNTdGVwQ29weTsgIFxuICBAT3V0cHV0KCkgcmVxdWVzdENhbmNlbENvbmZpcm1TdWdnZXN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBASW5wdXQoKSBzZWxlY3RlZDogTWVyZ2VDb250YWN0U3VnZ2VzdGlvbiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBjb25maXJtU3VnZ2VzdGlvbjogTWVyZ2VDb250YWN0U3VnZ2VzdGlvbiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzaG93U3VjY2Vzc1RvYXN0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dGYWlsdXJlVG9hc3QgPSBmYWxzZTtcbiAgQElucHV0KCkgY3VycmVudFN0ZXA6IG51bWJlciA9IDE7XG4gIHN1Y2Nlc3NUb2FzdDogVG9hc3RlckFsZXJ0TW9kZWw7XG4gIGZhaWx1cmVUb2FzdDogVG9hc3RlckFsZXJ0TW9kZWw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIHRoaXMuc3VjY2Vzc1RvYXN0ID0gbmV3IFRvYXN0ZXJBbGVydE1vZGVsKCk7XG4gIHRoaXMuc3VjY2Vzc1RvYXN0LnR5cGUgPSBUb2FzdGVyQWxlcnRUeXBlLlN1Y2Nlc3M7XG4gIHRoaXMuc3VjY2Vzc1RvYXN0Lm1lc3NhZ2UgPSBcIkNvbnRhY3QgcmVtb3ZlZCBmcm9tIGR1cGxpY2F0ZXMgc3VjY2Vzc2Z1bGx5XCI7XG4gIHRoaXMuc3VjY2Vzc1RvYXN0LmR1cmF0aW9uID0gQWxlcnREdXJhdGlvbi5GaXZlU2Vjb25kcztcbiAgdGhpcy5zdWNjZXNzVG9hc3Quc2hvd0Nsb3NlSWNvbiA9IHRydWU7XG5cbiAgdGhpcy5mYWlsdXJlVG9hc3QgPSBuZXcgVG9hc3RlckFsZXJ0TW9kZWwoKTtcbiAgdGhpcy5mYWlsdXJlVG9hc3QudHlwZSA9IFRvYXN0ZXJBbGVydFR5cGUuRXJyb3I7XG4gIHRoaXMuZmFpbHVyZVRvYXN0Lm1lc3NhZ2UgPSBcIkZhaWxlZCB0byByZW1vdmUgY29udGFjdCBmcm9tIGR1cGxpY2F0ZXNcIjtcbiAgdGhpcy5mYWlsdXJlVG9hc3QuZHVyYXRpb24gPSBBbGVydER1cmF0aW9uLkZpdmVTZWNvbmRzO1xuICB0aGlzLmZhaWx1cmVUb2FzdC5zaG93Q2xvc2VJY29uID0gdHJ1ZTtcbiAgfVxuXG4gIG9uTmV4dCgpIHtcbiAgICB0aGlzLm5leHQuZW1pdCh0aGlzLnNlbGVjdGVkKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCkge1xuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2VsZWN0KHN1Z2dlc3Rpb246IE1lcmdlQ29udGFjdFN1Z2dlc3Rpb24pIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHN1Z2dlc3Rpb24pO1xuICB9XG5cbiAgb25Ob3REdXBsaWNhdGUoc3VnZ2VzdGlvbjogTWVyZ2VDb250YWN0U3VnZ2VzdGlvbikge1xuICAgIHRoaXMucmVxdWVzdENvbmZpcm1TdWdnZXN0aW9uLmVtaXQoc3VnZ2VzdGlvbik7XG4gIH1cblxuICBjYW5jZWxOb3REdXBsaWNhdGUoKSB7XG4gICAgdGhpcy5yZXF1ZXN0Q2FuY2VsQ29uZmlybVN1Z2dlc3Rpb24uZW1pdCgpO1xuICB9XG5cbiAgY29uZmlybU9uTm90RHVwbGljYXRlKCkge1xuICAgIGlmICh0aGlzLmNvbmZpcm1TdWdnZXN0aW9uKSB7XG4gICAgICB0aGlzLm5vdER1cGxpY2F0ZS5lbWl0KHtcbiAgICAgICAgc2VsZWN0ZWQ6IHRoaXMubW9kZWwuc2VsZWN0ZWRDb250YWN0LFxuICAgICAgICBzdWdnZXN0aW9uOiB0aGlzLmNvbmZpcm1TdWdnZXN0aW9uLFxuICAgICAgfSk7XG4gICAgIH1cbiAgfVxuXG4gIGhhbmRsZU5vdER1cGxpY2F0ZVN1Y2Nlc3MoKSB7XG4gICAgY29uc3QgcmVtb3ZlZCA9IHRoaXMuY29uZmlybVN1Z2dlc3Rpb247XG4gICAgaWYgKHJlbW92ZWQpIHtcbiAgICAgIHRoaXMubW9kZWwuc3VnZ2VzdGlvbnMgPSB0aGlzLm1vZGVsLnN1Z2dlc3Rpb25zLmZpbHRlcihcbiAgICAgICAgKHMpID0+IHMgIT09IHJlbW92ZWRcbiAgICAgICk7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29uZmlybVN1Z2dlc3Rpb24gPSBudWxsO1xuICAgICAgdGhpcy5zaG93U3VjY2Vzc1RvYXN0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTm90RHVwbGljYXRlRXJyb3IoKSB7XG4gICAgdGhpcy5zaG93RmFpbHVyZVRvYXN0ID0gdHJ1ZTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgb25IaWRlU3VjY2Vzc1RvYXN0KCkge1xuICAgIHRoaXMuaGlkZVN1Y2Nlc3NUb2FzdC5lbWl0KCk7XG4gIH1cbiAgb25IaWRlRmFpbHVyZVRvYXN0KCkge1xuICAgIHRoaXMuaGlkZUZhaWx1cmVUb2FzdC5lbWl0KCk7XG4gIH1cblxuICBnZXRDb250YWN0VXJsKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIGNvbnN0IFtiYXNlVXJsXSA9IHVybC5zcGxpdCgnIycpO1xuICAgIHJldHVybiBgJHtiYXNlVXJsfSMvY2FuZGlkYXRlcHJvZmlsZXZpZXc/aWQ9JHtpZH1gO1xuICB9XG5cbiAgZ2V0U3RlcFRpdGxlKHN0ZXA6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RlcENvcHkoc3RlcCk/LnRpdGxlO1xuICB9XG5cbiAgZ2V0U3RlcERlc2NyaXB0aW9uKHN0ZXA6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RlcENvcHkoc3RlcCk/LmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdGVwQ29weShzdGVwOiBudW1iZXIpOiBNZXJnZUNvbnRhY3RzU3RlcENvcHkgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmNvbmZpcm1TdWdnZXN0aW9uICYmIHN0ZXAgPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbmZpcm1TdWdnZXN0aW9uQ29weSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldENvbmZpZ3VyZWRTdGVwQ29weShzdGVwKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uZmlybVN1Z2dlc3Rpb25Db3B5KCk6IE1lcmdlQ29udGFjdHNTdGVwQ29weSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29uZmlybUNvcHk6IE1lcmdlQ29udGFjdHNTdGVwQ29weSA9IHtcbiAgICAgIC4uLih0aGlzLm1vZGVsPy5jb25maXJtU3RlcENvcHkgPz8ge30pLFxuICAgICAgLi4uKHRoaXMuY29uZmlybVN0ZXBDb3B5ID8/IHt9KSxcbiAgICB9O1xuXG4gICAgaWYgKGNvbmZpcm1Db3B5LnRpdGxlIHx8IGNvbmZpcm1Db3B5LmRlc2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm4gY29uZmlybUNvcHk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29uZmlndXJlZFN0ZXBDb3B5KDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb25maWd1cmVkU3RlcENvcHkoXG4gICAgc3RlcDogbnVtYmVyXG4gICk6IE1lcmdlQ29udGFjdHNTdGVwQ29weSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbW9kZWxDb3B5ID0gdGhpcy5tb2RlbD8uc3RlcENvcHk/LltzdGVwXTtcbiAgICBjb25zdCBpbnB1dENvcHkgPSB0aGlzLnN0ZXBDb3B5Py5bc3RlcF07XG5cbiAgICBpZiAobW9kZWxDb3B5IHx8IGlucHV0Q29weSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubW9kZWxDb3B5LFxuICAgICAgICAuLi5pbnB1dENvcHksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgXG59XG4iLCI8ZGl2IGNsYXNzPVwic2Z4IHNmeC1tb2RhbCBtb2RhbC1jb250YWluZXJcIiAqbmdJZj1cIm1vZGVsXCI+XG4gIDxzZWN0aW9uIGNsYXNzPVwibW9kYWwtaGVhZGVyIHNmeC1wLTMwIHNmeC1wdC00MFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTggY29sLXNtLTggY29sLW1kLTggY29sLWxnLThcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0U3RlcFRpdGxlKGN1cnJlbnRTdGVwKSBhcyBzdGVwVGl0bGVcIj5cbiAgICAgICAgICAgIDxzeW1waG9ueS1oNCBbdGV4dF09XCJzdGVwVGl0bGVcIj48L3N5bXBob255LWg0PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtNCBjb2wtc20tNCBjb2wtbWQtNCBjb2wtbGctNFwiPlxuICAgICAgICAgIDxzeW1waG9ueS1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInB1bGwtcmlnaHRcIlxuICAgICAgICAgICAgW2ljb25dPVwiJ3NpLWNsb3NlLW1vZGFsJ1wiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkNhbmNlbCgpXCJcbiAgICAgICAgICA+PC9zeW1waG9ueS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0xMiBjb2wtbWQtMTIgY29sLWxnLTEyIHNmeC1tdC0xNVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyd3aGl0ZS1zcGFjZS1wcmUtbGluZSc6IGN1cnJlbnRTdGVwID09PSAyfVwiXG4gICAgICAgICAgKm5nSWY9XCJnZXRTdGVwRGVzY3JpcHRpb24oY3VycmVudFN0ZXApXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRTdGVwRGVzY3JpcHRpb24oY3VycmVudFN0ZXApIGFzIHN0ZXBEZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPHN5bXBob255LXBhcmFncmFwaCBbdGV4dF09XCJzdGVwRGVzY3JpcHRpb25cIj48L3N5bXBob255LXBhcmFncmFwaD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuICA8c2VjdGlvbiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Z4LXAtMzBcIiAqbmdJZj1cImN1cnJlbnRTdGVwID09PSAxXCI+XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwidG9hc3Rlci1hbGVydC1jb250YWluZXItZ2xvYmFsXCI+XG4gICAgICAgIDxzeW1waG9ueS10b2FzdGVyLWFsZXJ0XG4gICAgICAgICAgKm5nSWY9XCJzaG93U3VjY2Vzc1RvYXN0XCJcbiAgICAgICAgICBbYWxlcnRNb2RlbF09XCJzdWNjZXNzVG9hc3RcIlxuICAgICAgICAgIChoaWRlQWxlcnQpPVwib25IaWRlU3VjY2Vzc1RvYXN0KClcIlxuICAgICAgICA+PC9zeW1waG9ueS10b2FzdGVyLWFsZXJ0PlxuICAgICAgPHN5bXBob255LXRvYXN0ZXItYWxlcnRcbiAgICAgICAgKm5nSWY9XCJzaG93RmFpbHVyZVRvYXN0XCJcbiAgICAgICAgW2FsZXJ0TW9kZWxdPVwiZmFpbHVyZVRvYXN0XCJcbiAgICAgICAgKGhpZGVBbGVydCk9XCJvbkhpZGVGYWlsdXJlVG9hc3QoKVwiXG4gICAgICA+PC9zeW1waG9ueS10b2FzdGVyLWFsZXJ0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cInNmeC1tdC0zMCBzZngtbWItMzBcIj5cbiAgICAgIDxzeW1waG9ueS1zZngtbG9hZGVyPjwvc3ltcGhvbnktc2Z4LWxvYWRlcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaGFzRXJyb3JcIiBjbGFzcz1cInNmeC1tdC0yMCBzZngtbWItMjAgc2Z4LXR4dC1jZW50ZXJcIj5cbiAgICAgIDxzeW1waG9ueS1wYXJhZ3JhcGggdGV4dD1cIldlIGNvdWxkbid0IHJldHJpZXZlIHRoZSBjYW5kaWRhdGUgZGF0YS4gVGhlIGluZm9ybWF0aW9uIGNhbm5vdCBiZSBkaXNwbGF5ZWQgYXQgdGhpcyB0aW1lLCBwbGVhc2UgdHJ5IGFnYWluLlwiPjwvc3ltcGhvbnktcGFyYWdyYXBoPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFoYXNFcnJvciAmJiAoIW1vZGVsPy5zdWdnZXN0aW9ucyB8fCBtb2RlbC5zdWdnZXN0aW9ucy5sZW5ndGggPT09IDApXCIgY2xhc3M9XCJzZngtbXQtMjAgc2Z4LW1iLTIwIHNmeC10eHQtY2VudGVyXCI+XG4gICAgICA8c3ltcGhvbnktcGFyYWdyYXBoIHRleHQ9XCJObyBtb3JlIGR1cGxpY2F0ZXMgZXhpc3QgZm9yIHRoaXMgc2VsZWN0ZWQgY29udGFjdC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5cIj48L3N5bXBob255LXBhcmFncmFwaD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAhaGFzRXJyb3IgJiYgIWNvbmZpcm1TdWdnZXN0aW9uICYmIG1vZGVsPy5zdWdnZXN0aW9ucz8ubGVuZ3RoXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTYgY29sLW1kLTYgY29sLWxnLTZcIj5cbiAgICAgICAgPHN5bXBob255LWg1IHRleHQ9XCJTZWxlY3RlZCBDb250YWN0XCI+PC9zeW1waG9ueS1oNT4gICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC13cmFwcGVyIHNmeC1tdC0yMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0aW9uLWNhcmQgc2VsZWN0ZWQtY29udGFjdC1jYXJkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgc2Z4LWZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgIHt7IG1vZGVsLnNlbGVjdGVkQ29udGFjdC5uYW1lIH19IFt7eyBtb2RlbC5zZWxlY3RlZENvbnRhY3QuaWQgfX1dXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwibW9kZWwuc2VsZWN0ZWRDb250YWN0LmVtYWlsXCI+XG4gICAgICAgICAgICAgICAgPHN5bXBob255LWljb24gW2ljb25dPVwiJ3NpLWVtYWlsLXNlbmQnXCI+PC9zeW1waG9ueS1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IG1vZGVsLnNlbGVjdGVkQ29udGFjdC5lbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImluZm8tcm93XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY3JpdGVyaW9uIG9mIG1vZGVsLnNlbGVjdGVkQ29udGFjdC5jcml0ZXJpYVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ltcGhvbnktaWNvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcml0ZXJpb24uaWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cImNyaXRlcmlvbi5pY29uQ2xhc3NcIlxuICAgICAgICAgICAgICAgID48L3N5bXBob255LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgY3JpdGVyaW9uLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tcm93XCIgKm5nSWY9XCJtb2RlbC5zZWxlY3RlZENvbnRhY3QuYXRzSWRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmeC10eHQtZ3JheSBzZngtZm9udC1ib2xkIHNmeC1mb250MTJcIj5BVFMgSUQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IG1vZGVsLnNlbGVjdGVkQ29udGFjdC5hdHNJZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+ICAgICAgICBcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tNiBjb2wtbWQtNiBjb2wtbGctNlwiPlxuICAgICAgIDxzeW1waG9ueS1oNSBbdGV4dF09XCInUG90ZW50aWFsIER1cGxpY2F0ZXMgKCcgKyAobW9kZWw/LnN1Z2dlc3Rpb25zPy5sZW5ndGggfHwgMCkgKyAnKSdcIj48L3N5bXBob255LWg1PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsYWJsZS1jb250YWluZXIgY2FyZC13cmFwcGVyXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN1Z2dlc3Rpb24gb2YgbW9kZWwuc3VnZ2VzdGlvbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdWdnZXN0aW9uLWNhcmRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBzZWxlY3RlZDogc2VsZWN0ZWQgPT09IHN1Z2dlc3Rpb24gfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3Qoc3VnZ2VzdGlvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgICAgICAgICAgICA8c3ltcGhvbnktaW5wdXQtcmFkaW9cbiAgICAgICAgICAgICAgICBbcmFkaW9JRF09XCJzdWdnZXN0aW9uLmlkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCInbWVyZ2Utc3VnZ2VzdGlvbnMnXCJcbiAgICAgICAgICAgICAgICBbaXNBY3RpdmVdPVwic2VsZWN0ZWQgPT09IHN1Z2dlc3Rpb25cIlxuICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uU2VsZWN0KHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgICAgICAgPjwvc3ltcGhvbnktaW5wdXQtcmFkaW8+ICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgc2Z4LWZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgIHt7IHN1Z2dlc3Rpb24ubmFtZSB9fSBbe3sgc3VnZ2VzdGlvbi5pZCB9fV1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWFjdGlvbnNcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPHN5bXBob255LWdyaWQtY2VsbC1jbGlja2VkLW9wZW4tbmV3LXRhYlxuICAgICAgICAgICAgICAgICAgW25ld1RhYlVybF09XCJnZXRDb250YWN0VXJsKHN1Z2dlc3Rpb24uaWQpXCJcbiAgICAgICAgICAgICAgICA+PC9zeW1waG9ueS1ncmlkLWNlbGwtY2xpY2tlZC1vcGVuLW5ldy10YWI+XG4gICAgICAgICAgICAgICAgPHN5bXBob255LWljb24td3JhcHBlclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJub3QtZHVwbGljYXRlLWljb24tZ2xvYmFsXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiTWFyayBub3QgZHVwbGljYXRlXCJcbiAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uTm90RHVwbGljYXRlKHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3ltcGhvbnktaWNvbiBbaWNvbl09XCInc2ktZXhjbHVkZSdcIj48L3N5bXBob255LWljb24+XG4gICAgICAgICAgICAgICAgPC9zeW1waG9ueS1pY29uLXdyYXBwZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwic3VnZ2VzdGlvbi5lbWFpbFwiPlxuICAgICAgICAgICAgICAgIDxzeW1waG9ueS1pY29uIFtpY29uXT1cIidzaS1lbWFpbC1zZW5kJ1wiPjwvc3ltcGhvbnktaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBzdWdnZXN0aW9uLmVtYWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tcm93XCIgKm5nRm9yPVwibGV0IGNyaXRlcmlvbiBvZiBzdWdnZXN0aW9uLmNyaXRlcmlhXCI+XG4gICAgICAgICAgICAgICAgPHN5bXBob255LWljb25cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JpdGVyaW9uLmljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICBbaWNvbl09XCJjcml0ZXJpb24uaWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICA+PC9zeW1waG9ueS1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNyaXRlcmlvbi52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwic3VnZ2VzdGlvbi5hdHNJZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Z4LXR4dC1ncmF5IHNmeC1mb250LWJvbGQgc2Z4LWZvbnQxMlwiPkFUUyBJRDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgc3VnZ2VzdGlvbi5hdHNJZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXRjaC1jcml0ZXJpYVwiICpuZ0lmPVwic3VnZ2VzdGlvbi5zdGF0dXNlcz8ubGVuZ3RoXCI+ICAgICAgICAgIFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXRjaC1sYWJlbFwiPkNvbnRhY3QncyBzaGFyZSB0aGUgc2FtZTo8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3ltcGhvbnktcGFyYWdyYXBoXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RhdHVzIG9mIHN1Z2dlc3Rpb24uc3RhdHVzZXNcIlxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwic3RhdHVzICsgJy4nXCJcbiAgICAgICAgICAgICAgICA+PC9zeW1waG9ueS1wYXJhZ3JhcGg+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgIWhhc0Vycm9yICYmIGNvbmZpcm1TdWdnZXN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTYgY29sLW1kLTYgY29sLWxnLTZcIj5cbiAgICAgICAgICA8c3ltcGhvbnktaDUgdGV4dD1cIlNlbGVjdGVkIENvbnRhY3RcIj48L3N5bXBob255LWg1PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXdyYXBwZXIgc2Z4LW10LTIwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VnZ2VzdGlvbi1jYXJkIHNlbGVjdGVkLWNvbnRhY3QtY2FyZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBzZngtZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICB7eyBtb2RlbC5zZWxlY3RlZENvbnRhY3QubmFtZSB9fSBbe3sgbW9kZWwuc2VsZWN0ZWRDb250YWN0LmlkIH19XVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwibW9kZWwuc2VsZWN0ZWRDb250YWN0LmVtYWlsXCI+XG4gICAgICAgICAgICAgICAgICA8c3ltcGhvbnktaWNvbiBbaWNvbl09XCInc2ktZW1haWwtc2VuZCdcIj48L3N5bXBob255LWljb24+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBtb2RlbC5zZWxlY3RlZENvbnRhY3QuZW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLXJvd1wiXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY3JpdGVyaW9uIG9mIG1vZGVsLnNlbGVjdGVkQ29udGFjdC5jcml0ZXJpYVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHN5bXBob255LWljb25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcml0ZXJpb24uaWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiY3JpdGVyaW9uLmljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICA+PC9zeW1waG9ueS1pY29uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY3JpdGVyaW9uLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwibW9kZWwuc2VsZWN0ZWRDb250YWN0LmF0c0lkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmeC10eHQtZ3JheSBzZngtZm9udC1ib2xkIHNmeC1mb250MTJcIj5BVFMgSUQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgbW9kZWwuc2VsZWN0ZWRDb250YWN0LmF0c0lkIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PiAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTYgY29sLW1kLTYgY29sLWxnLTZcIj5cbiAgICAgICAgICA8c3ltcGhvbnktaDUgdGV4dD1cIlNlbGVjdGVkIER1cGxpY2F0ZVwiPjwvc3ltcGhvbnktaDU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtd3JhcHBlciBzZngtbXQtMjBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0aW9uLWNhcmQgY29uZmlybS1jYXJkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIHNmeC1mb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGNvbmZpcm1TdWdnZXN0aW9uLm5hbWUgfX0gW3t7IGNvbmZpcm1TdWdnZXN0aW9uLmlkIH19XVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwiY29uZmlybVN1Z2dlc3Rpb24uZW1haWxcIj5cbiAgICAgICAgICAgICAgICAgIDxzeW1waG9ueS1pY29uIFtpY29uXT1cIidzaS1lbWFpbC1zZW5kJ1wiPjwvc3ltcGhvbnktaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbmZpcm1TdWdnZXN0aW9uLmVtYWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0Zvcj1cImxldCBjcml0ZXJpb24gb2YgY29uZmlybVN1Z2dlc3Rpb24uY3JpdGVyaWFcIj5cbiAgICAgICAgICAgICAgICAgIDxzeW1waG9ueS1pY29uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JpdGVyaW9uLmljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImNyaXRlcmlvbi5pY29uQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgPjwvc3ltcGhvbnktaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNyaXRlcmlvbi52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiAqbmdJZj1cImNvbmZpcm1TdWdnZXN0aW9uLmF0c0lkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNmeC10eHQtZ3JheSBzZngtZm9udC1ib2xkIHNmeC1mb250MTJcIj5BVFMgSUQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29uZmlybVN1Z2dlc3Rpb24uYXRzSWQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0Y2gtY3JpdGVyaWFcIiAqbmdJZj1cImNvbmZpcm1TdWdnZXN0aW9uLnN0YXR1c2VzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdGNoLWxhYmVsXCI+Q29udGFjdCdzIHNoYXJlIHRoZSBzYW1lOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHN5bXBob255LXBhcmFncmFwaFxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RhdHVzIG9mIGNvbmZpcm1TdWdnZXN0aW9uLnN0YXR1c2VzXCJcbiAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwic3RhdHVzICsgJy4nXCJcbiAgICAgICAgICAgICAgICAgID48L3N5bXBob255LXBhcmFncmFwaD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9zZWN0aW9uPlxuICA8c2VjdGlvbiAqbmdJZj1cImN1cnJlbnRTdGVwID09PSAyXCIgY2xhc3M9XCJtb2RhbC1ib2R5IG1lcmdlLWNvbnRhY3RzLWJvZHlcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc2VjdGlvbj5cbiAgPHNlY3Rpb24gKm5nSWY9XCJjdXJyZW50U3RlcCA9PT0gMVwiIGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb25maXJtU3VnZ2VzdGlvbjsgZWxzZSBjb25maXJtQWN0aW9uc1wiPlxuICAgICAgPHN5bXBob255LWJ1dHRvbi12MiB0ZXh0PVwiQ2xvc2VcIiBbaXNTZWNvbmRhcnldPVwidHJ1ZVwiIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj48L3N5bXBob255LWJ1dHRvbi12Mj5cbiAgICAgIDxzeW1waG9ueS1idXR0b24tdjIgdGV4dD1cIk5leHRcIiBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkIHx8ICEhY29uZmlybVN1Z2dlc3Rpb25cIiAoY2xpY2tlZCk9XCJvbk5leHQoKVwiPjwvc3ltcGhvbnktYnV0dG9uLXYyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlybUFjdGlvbnM+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybS1hY3Rpb25zXCI+XG4gICAgICAgIDxzeW1waG9ueS1idXR0b24tdjJcbiAgICAgICAgICB0ZXh0PVwiQmFja1wiXG4gICAgICAgICAgW2lzU2Vjb25kYXJ5XT1cInRydWVcIlxuICAgICAgICAgIChjbGlja2VkKT1cImNhbmNlbE5vdER1cGxpY2F0ZSgpXCJcbiAgICAgICAgPjwvc3ltcGhvbnktYnV0dG9uLXYyPlxuICAgICAgICA8c3ltcGhvbnktYnV0dG9uLXYyXG4gICAgICAgICAgdGV4dD1cIkNvbmZpcm1cIlxuICAgICAgICAgIChjbGlja2VkKT1cImNvbmZpcm1Pbk5vdER1cGxpY2F0ZSgpXCJcbiAgICAgICAgPjwvc3ltcGhvbnktYnV0dG9uLXYyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
|