vcomply-workflow-engine 3.9.98 → 3.9.99
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/esm2022/lib/add-multiple-risk/add-multiple-risk.component.mjs +48 -27
- package/esm2022/lib/sharedComponents/bulk-view/bulk-view.component.mjs +3 -4
- package/fesm2022/vcomply-workflow-engine.mjs +49 -29
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +7 -0
- package/package.json +1 -1
|
@@ -13,7 +13,6 @@ export class BulkViewComponent {
|
|
|
13
13
|
this.showCompleteAssessmentButton = false;
|
|
14
14
|
}
|
|
15
15
|
ngOnChanges() {
|
|
16
|
-
console.log(this.riskBulkUpload, 'risk');
|
|
17
16
|
if (this.riskBulkUpload) {
|
|
18
17
|
this.finalRisks = 0;
|
|
19
18
|
this.riskBulkUpload.risks.forEach((risk) => {
|
|
@@ -52,11 +51,11 @@ export class BulkViewComponent {
|
|
|
52
51
|
this.cancel.emit();
|
|
53
52
|
}
|
|
54
53
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BulkViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BulkViewComponent, selector: "app-bulk-view", inputs: { riskBulkUpload: "riskBulkUpload", templateInfo: "templateInfo", fileName: "fileName", assessmentDaysEnable: "assessmentDaysEnable", defaultOwner: "defaultOwner", loader: "loader", ffLinkedGrcObjects: "ffLinkedGrcObjects" }, outputs: { submitRiskBulkUpload: "submitRiskBulkUpload", cancel: "cancel" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"bulk-view\">\r\n <div class=\"bulk-view-head\">\r\n <h2 class=\"bulk-view-title\">\r\n {{ fileName }}\r\n </h2>\r\n </div>\r\n <div class=\"bulk-view-body\">\r\n <div class=\"exel-view\">\r\n <div class=\"exel-view-row head\">\r\n <div class=\"exel-view-column sl-no\">#</div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.two-column]=\"heading && i === 5\"\r\n *ngFor=\"let heading of riskBulkUpload?.header; let i = index\"\r\n [class.large]=\"heading && heading.startsWith('Inherent')\"\r\n >\r\n <ng-container\r\n *ngIf=\"heading && !heading.startsWith('Inherent') && !(i === 5)\"\r\n >\r\n {{ heading.includes(\"*\") ? heading.replace(\"*\", \"\") : heading }}\r\n <span *ngIf=\"heading.includes('*')\" class=\"required\">*</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && heading.startsWith('Inherent')\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Inherent Risk Assessment</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\">\r\n <div\r\n class=\"exel-view-column\"\r\n *ngFor=\"\r\n let weightAgeFactor of riskBulkUpload.weightFactors\r\n | slice : 2\r\n \"\r\n >\r\n {{ weightAgeFactor }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && i === 5\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">\r\n {{ heading.includes(\"*\") ? heading.replace(\"*\", \"\") : heading }}\r\n <span *ngIf=\"heading.includes('*')\" class=\"required\">*</span>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div\r\n class=\"exel-view-column\"\r\n *ngFor=\"\r\n let weightAgeFactor of riskBulkUpload?.weightFactors\r\n | slice : 0 : 2\r\n \"\r\n >\r\n {{\r\n weightAgeFactor.includes(\"*\")\r\n ? weightAgeFactor.replace(\"*\", \"\")\r\n : weightAgeFactor\r\n }}\r\n <span *ngIf=\"weightAgeFactor.includes('*')\" class=\"required\"\r\n >*</span\r\n >\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div\r\n class=\"exel-view-row\"\r\n *ngFor=\"let risk of riskBulkUpload.risks; let i = index\"\r\n >\r\n <div class=\"exel-view-column sl-no\" [class.error]=\"!risk.isValid\">\r\n {{ i + 1 }}\r\n </div>\r\n\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.riskName\">\r\n {{ risk?.riskName }}\r\n <i\r\n *ngIf=\"!risk?.riskName\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk Name must be populated.'\"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n\r\n <div class=\"exel-view-column\">{{ risk?.description }}</div>\r\n\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.rcName\">\r\n {{ risk?.rcName }}\r\n <i\r\n *ngIf=\"!risk?.rcName\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Assign this risk to a Responsibility Center.'\"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div class=\"exel-view-column\">{{ risk?.owner }}</div>\r\n <div class=\"exel-view-column\">{{ risk?.riskOwner }}</div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.isValidFrequency\">\r\n {{ risk?.frequency }}\r\n <i\r\n *ngIf=\"!risk?.isValidFrequency\"\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Set a frequency for the completion of the inherent risk assessment.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"false\">\r\n {{ risk?.emailReminder }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n (risk?.owner && risk?.owner == risk?.overseer) ||\r\n (!risk?.owner && defaultOwner == risk?.overseer)\r\n \"\r\n >\r\n {{ risk?.overseer }}\r\n <i\r\n *ngIf=\"\r\n (risk?.owner && risk?.owner == risk?.overseer) ||\r\n (!risk?.owner && defaultOwner == risk?.overseer)\r\n \"\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n (risk?.owner\r\n ? 'The Risk Owner cannot also be the'\r\n : 'You cannot be a') +\r\n ' Oversight of the risk. Select another user as the Oversight of this risk.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div\r\n *ngIf=\"\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes('Recommended Mitigation Priority')\r\n \"\r\n class=\"exel-view-column\"\r\n >\r\n {{ risk?.mitigationPriority }}\r\n </div>\r\n <div class=\"exel-view-column\">{{ risk?.mitigationPlans }}</div>\r\n <div class=\"exel-view-column\">{{ risk?.riskLabel }}</div>\r\n <!-- <div class=\"exel-view-column\" *ngIf=\"assessmentDaysEnable\" [class.error]=\"!risk?.assessmentDeadLine\">\r\n {{risk?.assessmentDeadLine}}\r\n <i *ngIf=\"!risk?.assessmentDeadLine\" class=\"icons\"\r\n [appTooltip]=\"'Set a deadline for the completion of the inherent risk assessment.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=\"true\"></i>\r\n </div> -->\r\n <div class=\"exel-view-row multi-column\">\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.likelihood &&\r\n !templateInfo?.likelihood.includes(risk?.likelihood)\r\n \"\r\n >\r\n {{ risk?.likelihood }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.impact && !templateInfo?.impact.includes(risk?.impact)\r\n \"\r\n >\r\n {{ risk?.impact }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.velocity && !templateInfo?.velocity.includes(risk?.velocity)\r\n \"\r\n *ngIf=\"riskBulkUpload?.weightFactors?.includes('Velocity')\"\r\n >\r\n {{ risk?.velocity }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.vulnerability &&\r\n !templateInfo?.vulnerability.includes(risk?.vulnerability)\r\n \"\r\n *ngIf=\"riskBulkUpload?.weightFactors?.includes('Vulnerability')\"\r\n >\r\n {{ risk?.vulnerability }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes(\r\n 'Do you want to apply the same risk ratings for all Responsibility Centers?'\r\n )\r\n \"\r\n class=\"exel-view-column\"\r\n >\r\n {{ risk?.applySameRiskRating }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n ffLinkedGrcObjects &&\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes('Linked GRC Object(s)')\r\n \"\r\n class=\"exel-view-column\"\r\n >\r\n {{ risk?.linkedGrcObject }}\r\n </div>\r\n <!-- <div class=\"exel-view-column\">{{risk?.customField1}}</div>\r\n <div class=\"exel-view-column\">{{risk?.customField2}}</div> -->\r\n\r\n <ng-container *ngIf=\"risk?.customTag\">\r\n <div class=\"exel-view-column\" *ngFor=\"let tag of risk?.customTag\">\r\n {{ tag?.custom_tag_value }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"bulk-view-footer\">\r\n <div class=\"left\">\r\n <p>\r\n {{ finalRisks }} out of {{ riskBulkUpload?.risks?.length }} risks will\r\n be added to the Risk Register.\r\n </p>\r\n </div>\r\n <div class=\"right\">\r\n <button (click)=\"close()\">Cancel</button>\r\n <button\r\n (click)=\"submit(false)\"\r\n [disabled]=\"finalRisks < 1\"\r\n class=\"blue\"\r\n >\r\n Add Risks\r\n </button>\r\n <button\r\n (click)=\"submit(true)\"\r\n *ngIf=\"showCompleteAssessmentButton\"\r\n [disabled]=\"finalRisks < 1\"\r\n class=\"blue\"\r\n >\r\n Add Risks And Complete Assessment\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#747576;border-radius:16px}::-webkit-scrollbar{height:15px}.bulk-view{position:fixed;inset:0;z-index:11}.bulk-view-head{height:60px;padding:20px 24px;background:#161b2f;display:flex;justify-content:flex-start}.bulk-view-title{font-size:16px;line-height:20px;font-weight:400;margin:0;color:#fff}.bulk-view-body{height:calc(100vh - 110px);overflow:auto;width:100%;background:#fff}.bulk-view-body .exel-view{display:block}.bulk-view-body .exel-view-row{display:flex;width:100%}.bulk-view-body .exel-view-row.head .exel-view-column{font-weight:500;font-size:14px;min-height:26px;background:#f1f1f1;padding:0}.bulk-view-body .exel-view-row.two-column .exel-view-column,.bulk-view-body .exel-view-row.three-column .exel-view-column,.bulk-view-body .exel-view-row.four-column .exel-view-column{min-width:250px!important}.bulk-view-body .exel-view-row.multi-column .exel-view-column{width:140px;min-width:140px}.bulk-view-body .exel-view-column{width:300px;min-width:300px;padding:0 10px;border-right:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;display:flex;align-items:center;justify-content:center;text-align:center;word-break:break-all;line-height:16px;font-size:12px;color:#161b2f;flex-wrap:wrap;position:relative}.bulk-view-body .exel-view-column.two-column{width:500px;min-width:500px!important}.bulk-view-body .exel-view-column.three-column{width:750px;min-width:750px!important}.bulk-view-body .exel-view-column.four-column{width:1000px;min-width:1000px!important}.bulk-view-body .exel-view-column i.icons{position:absolute;top:8px;right:10px;cursor:pointer;color:#d93b41}.bulk-view-body .exel-view-column.large{width:100%;min-width:auto}.bulk-view-body .exel-view-column.error{border:1px solid #eb2424}.bulk-view-body .exel-view-column span.required{color:#eb2424}.bulk-view-body .exel-view-column .exel-view-row .exel-view-column{width:100%}.bulk-view-body .exel-view-column.sl-no{background:#f1f1f1;width:60px;min-width:60px;min-height:30px;font-weight:400}.bulk-view-footer{height:50px;box-shadow:0 0 15px #1e5dd259;padding:10px 20px;position:fixed;width:100%;bottom:0;display:flex;align-items:center;justify-content:space-between;background:#fff}.bulk-view-footer .left p{color:#747576;font-size:13px;font-weight:500;margin:0}.bulk-view-footer .right button{font-size:12px;background:#fff;border:1px solid #dcdcdc;color:#747576;border-radius:2px;padding:8px 18px;cursor:pointer;text-transform:uppercase}.bulk-view-footer .right button+button{margin-left:4px}.bulk-view-footer .right button.blue{color:#fff;background:#1e5dd3}.bulk-view-footer .right button:disabled{background:#f1f1f1;border-color:#f1f1f1;pointer-events:none;cursor:not-allowed;color:#747576}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i3.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] }); }
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BulkViewComponent, selector: "app-bulk-view", inputs: { riskBulkUpload: "riskBulkUpload", templateInfo: "templateInfo", fileName: "fileName", assessmentDaysEnable: "assessmentDaysEnable", defaultOwner: "defaultOwner", loader: "loader", ffLinkedGrcObjects: "ffLinkedGrcObjects" }, outputs: { submitRiskBulkUpload: "submitRiskBulkUpload", cancel: "cancel" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"bulk-view\">\r\n <div class=\"bulk-view-head\">\r\n <h2 class=\"bulk-view-title\">\r\n {{ fileName }}\r\n </h2>\r\n </div>\r\n <div class=\"bulk-view-body\">\r\n <div class=\"exel-view\">\r\n <div class=\"exel-view-row head\">\r\n <div class=\"exel-view-column sl-no\">#</div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.two-column]=\"heading && i === 5\"\r\n *ngFor=\"let heading of riskBulkUpload?.header; let i = index\"\r\n [class.large]=\"heading && heading.startsWith('Inherent')\"\r\n >\r\n <ng-container\r\n *ngIf=\"heading && !heading.startsWith('Inherent') && !(i === 5)\"\r\n >\r\n {{ heading.includes(\"*\") ? heading.replace(\"*\", \"\") : heading }}\r\n <span *ngIf=\"heading.includes('*')\" class=\"required\">*</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && heading.startsWith('Inherent')\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Inherent Risk Assessment</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\">\r\n <div\r\n class=\"exel-view-column\"\r\n *ngFor=\"\r\n let weightAgeFactor of riskBulkUpload.weightFactors\r\n | slice : 2\r\n \"\r\n >\r\n {{ weightAgeFactor }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && i === 5\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">\r\n {{ heading.includes(\"*\") ? heading.replace(\"*\", \"\") : heading }}\r\n <span *ngIf=\"heading.includes('*')\" class=\"required\">*</span>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div\r\n class=\"exel-view-column\"\r\n *ngFor=\"\r\n let weightAgeFactor of riskBulkUpload?.weightFactors\r\n | slice : 0 : 2\r\n \"\r\n >\r\n {{\r\n weightAgeFactor.includes(\"*\")\r\n ? weightAgeFactor.replace(\"*\", \"\")\r\n : weightAgeFactor\r\n }}\r\n <span *ngIf=\"weightAgeFactor.includes('*')\" class=\"required\"\r\n >*</span\r\n >\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div\r\n class=\"exel-view-row\"\r\n *ngFor=\"let risk of riskBulkUpload.risks; let i = index\"\r\n >\r\n <div class=\"exel-view-column sl-no\" [class.error]=\"!risk.isValid\">\r\n {{ i + 1 }}\r\n </div>\r\n\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.riskName\">\r\n {{ risk?.riskName }}\r\n <i\r\n *ngIf=\"!risk?.riskName\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk Name must be populated.'\"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n\r\n <div class=\"exel-view-column\">{{ risk?.description }}</div>\r\n\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.rcName\">\r\n {{ risk?.rcName }}\r\n <i\r\n *ngIf=\"!risk?.rcName\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Assign this risk to a Responsibility Center.'\"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div class=\"exel-view-column\">{{ risk?.owner }}</div>\r\n <div class=\"exel-view-column\">{{ risk?.riskOwner }}</div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.isValidFrequency\">\r\n {{ risk?.frequency }}\r\n <i\r\n *ngIf=\"!risk?.isValidFrequency\"\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Set a frequency for the completion of the inherent risk assessment.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"false\">\r\n {{ risk?.emailReminder }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n (risk?.owner && risk?.owner == risk?.overseer) ||\r\n (!risk?.owner && defaultOwner == risk?.overseer)\r\n \"\r\n >\r\n {{ risk?.overseer }}\r\n <i\r\n *ngIf=\"\r\n (risk?.owner && risk?.owner == risk?.overseer) ||\r\n (!risk?.owner && defaultOwner == risk?.overseer)\r\n \"\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n (risk?.owner\r\n ? 'The Risk Owner cannot also be the'\r\n : 'You cannot be a') +\r\n ' Oversight of the risk. Select another user as the Oversight of this risk.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div\r\n *ngIf=\"\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes('Recommended Mitigation Priority')\r\n \"\r\n class=\"exel-view-column\"\r\n >\r\n {{ risk?.mitigationPriority }}\r\n </div>\r\n <div class=\"exel-view-column\">{{ risk?.mitigationPlans }}</div>\r\n <div class=\"exel-view-column\">{{ risk?.riskLabel }}</div>\r\n <!-- <div class=\"exel-view-column\" *ngIf=\"assessmentDaysEnable\" [class.error]=\"!risk?.assessmentDeadLine\">\r\n {{risk?.assessmentDeadLine}}\r\n <i *ngIf=\"!risk?.assessmentDeadLine\" class=\"icons\"\r\n [appTooltip]=\"'Set a deadline for the completion of the inherent risk assessment.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=\"true\"></i>\r\n </div> -->\r\n <div class=\"exel-view-row multi-column\">\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.likelihood &&\r\n !templateInfo?.likelihood.includes(risk?.likelihood)\r\n \"\r\n >\r\n {{ risk?.likelihood }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.impact && !templateInfo?.impact.includes(risk?.impact)\r\n \"\r\n >\r\n {{ risk?.impact }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.velocity && !templateInfo?.velocity.includes(risk?.velocity)\r\n \"\r\n *ngIf=\"riskBulkUpload?.weightFactors?.includes('Velocity')\"\r\n >\r\n {{ risk?.velocity }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.vulnerability &&\r\n !templateInfo?.vulnerability.includes(risk?.vulnerability)\r\n \"\r\n *ngIf=\"riskBulkUpload?.weightFactors?.includes('Vulnerability')\"\r\n >\r\n {{ risk?.vulnerability }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes(\r\n 'Do you want to apply the same risk ratings for all Responsibility Centers?'\r\n )\r\n \"\r\n class=\"exel-view-column\"\r\n >\r\n {{ risk?.applySameRiskRating }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n ffLinkedGrcObjects &&\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes('Linked GRC Object(s)')\r\n \"\r\n class=\"exel-view-column\"\r\n [class.error]=\"risk?.isGrcNotValid\"\r\n >\r\n {{ risk?.linkedGrcObject }}\r\n <i\r\n *ngIf=\"risk?.isGrcNotValid\"\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The selected GRC object is not linked to the correct Responsibility Center. Therefore, this GRC object will not be associated with this risk.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <!-- <div class=\"exel-view-column\">{{risk?.customField1}}</div>\r\n <div class=\"exel-view-column\">{{risk?.customField2}}</div> -->\r\n\r\n <ng-container *ngIf=\"risk?.customTag\">\r\n <div class=\"exel-view-column\" *ngFor=\"let tag of risk?.customTag\">\r\n {{ tag?.custom_tag_value }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"bulk-view-footer\">\r\n <div class=\"left\">\r\n <p>\r\n {{ finalRisks }} out of {{ riskBulkUpload?.risks?.length }} risks will\r\n be added to the Risk Register.\r\n </p>\r\n </div>\r\n <div class=\"right\">\r\n <button (click)=\"close()\">Cancel</button>\r\n <button\r\n (click)=\"submit(false)\"\r\n [disabled]=\"finalRisks < 1\"\r\n class=\"blue\"\r\n >\r\n Add Risks\r\n </button>\r\n <button\r\n (click)=\"submit(true)\"\r\n *ngIf=\"showCompleteAssessmentButton\"\r\n [disabled]=\"finalRisks < 1\"\r\n class=\"blue\"\r\n >\r\n Add Risks And Complete Assessment\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#747576;border-radius:16px}::-webkit-scrollbar{height:15px}.bulk-view{position:fixed;inset:0;z-index:11}.bulk-view-head{height:60px;padding:20px 24px;background:#161b2f;display:flex;justify-content:flex-start}.bulk-view-title{font-size:16px;line-height:20px;font-weight:400;margin:0;color:#fff}.bulk-view-body{height:calc(100vh - 110px);overflow:auto;width:100%;background:#fff}.bulk-view-body .exel-view{display:block}.bulk-view-body .exel-view-row{display:flex;width:100%}.bulk-view-body .exel-view-row.head .exel-view-column{font-weight:500;font-size:14px;min-height:26px;background:#f1f1f1;padding:0}.bulk-view-body .exel-view-row.two-column .exel-view-column,.bulk-view-body .exel-view-row.three-column .exel-view-column,.bulk-view-body .exel-view-row.four-column .exel-view-column{min-width:250px!important}.bulk-view-body .exel-view-row.multi-column .exel-view-column{width:140px;min-width:140px}.bulk-view-body .exel-view-column{width:300px;min-width:300px;padding:0 10px;border-right:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;display:flex;align-items:center;justify-content:center;text-align:center;word-break:break-all;line-height:16px;font-size:12px;color:#161b2f;flex-wrap:wrap;position:relative}.bulk-view-body .exel-view-column.two-column{width:500px;min-width:500px!important}.bulk-view-body .exel-view-column.three-column{width:750px;min-width:750px!important}.bulk-view-body .exel-view-column.four-column{width:1000px;min-width:1000px!important}.bulk-view-body .exel-view-column i.icons{position:absolute;top:8px;right:10px;cursor:pointer;color:#d93b41}.bulk-view-body .exel-view-column.large{width:100%;min-width:auto}.bulk-view-body .exel-view-column.error{border:1px solid #eb2424}.bulk-view-body .exel-view-column span.required{color:#eb2424}.bulk-view-body .exel-view-column .exel-view-row .exel-view-column{width:100%}.bulk-view-body .exel-view-column.sl-no{background:#f1f1f1;width:60px;min-width:60px;min-height:30px;font-weight:400}.bulk-view-footer{height:50px;box-shadow:0 0 15px #1e5dd259;padding:10px 20px;position:fixed;width:100%;bottom:0;display:flex;align-items:center;justify-content:space-between;background:#fff}.bulk-view-footer .left p{color:#747576;font-size:13px;font-weight:500;margin:0}.bulk-view-footer .right button{font-size:12px;background:#fff;border:1px solid #dcdcdc;color:#747576;border-radius:2px;padding:8px 18px;cursor:pointer;text-transform:uppercase}.bulk-view-footer .right button+button{margin-left:4px}.bulk-view-footer .right button.blue{color:#fff;background:#1e5dd3}.bulk-view-footer .right button:disabled{background:#f1f1f1;border-color:#f1f1f1;pointer-events:none;cursor:not-allowed;color:#747576}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i3.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] }); }
|
|
56
55
|
}
|
|
57
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BulkViewComponent, decorators: [{
|
|
58
57
|
type: Component,
|
|
59
|
-
args: [{ selector: 'app-bulk-view', template: "<div class=\"bulk-view\">\r\n <div class=\"bulk-view-head\">\r\n <h2 class=\"bulk-view-title\">\r\n {{ fileName }}\r\n </h2>\r\n </div>\r\n <div class=\"bulk-view-body\">\r\n <div class=\"exel-view\">\r\n <div class=\"exel-view-row head\">\r\n <div class=\"exel-view-column sl-no\">#</div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.two-column]=\"heading && i === 5\"\r\n *ngFor=\"let heading of riskBulkUpload?.header; let i = index\"\r\n [class.large]=\"heading && heading.startsWith('Inherent')\"\r\n >\r\n <ng-container\r\n *ngIf=\"heading && !heading.startsWith('Inherent') && !(i === 5)\"\r\n >\r\n {{ heading.includes(\"*\") ? heading.replace(\"*\", \"\") : heading }}\r\n <span *ngIf=\"heading.includes('*')\" class=\"required\">*</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && heading.startsWith('Inherent')\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Inherent Risk Assessment</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\">\r\n <div\r\n class=\"exel-view-column\"\r\n *ngFor=\"\r\n let weightAgeFactor of riskBulkUpload.weightFactors\r\n | slice : 2\r\n \"\r\n >\r\n {{ weightAgeFactor }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && i === 5\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">\r\n {{ heading.includes(\"*\") ? heading.replace(\"*\", \"\") : heading }}\r\n <span *ngIf=\"heading.includes('*')\" class=\"required\">*</span>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div\r\n class=\"exel-view-column\"\r\n *ngFor=\"\r\n let weightAgeFactor of riskBulkUpload?.weightFactors\r\n | slice : 0 : 2\r\n \"\r\n >\r\n {{\r\n weightAgeFactor.includes(\"*\")\r\n ? weightAgeFactor.replace(\"*\", \"\")\r\n : weightAgeFactor\r\n }}\r\n <span *ngIf=\"weightAgeFactor.includes('*')\" class=\"required\"\r\n >*</span\r\n >\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div\r\n class=\"exel-view-row\"\r\n *ngFor=\"let risk of riskBulkUpload.risks; let i = index\"\r\n >\r\n <div class=\"exel-view-column sl-no\" [class.error]=\"!risk.isValid\">\r\n {{ i + 1 }}\r\n </div>\r\n\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.riskName\">\r\n {{ risk?.riskName }}\r\n <i\r\n *ngIf=\"!risk?.riskName\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk Name must be populated.'\"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n\r\n <div class=\"exel-view-column\">{{ risk?.description }}</div>\r\n\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.rcName\">\r\n {{ risk?.rcName }}\r\n <i\r\n *ngIf=\"!risk?.rcName\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Assign this risk to a Responsibility Center.'\"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div class=\"exel-view-column\">{{ risk?.owner }}</div>\r\n <div class=\"exel-view-column\">{{ risk?.riskOwner }}</div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.isValidFrequency\">\r\n {{ risk?.frequency }}\r\n <i\r\n *ngIf=\"!risk?.isValidFrequency\"\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Set a frequency for the completion of the inherent risk assessment.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"false\">\r\n {{ risk?.emailReminder }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n (risk?.owner && risk?.owner == risk?.overseer) ||\r\n (!risk?.owner && defaultOwner == risk?.overseer)\r\n \"\r\n >\r\n {{ risk?.overseer }}\r\n <i\r\n *ngIf=\"\r\n (risk?.owner && risk?.owner == risk?.overseer) ||\r\n (!risk?.owner && defaultOwner == risk?.overseer)\r\n \"\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n (risk?.owner\r\n ? 'The Risk Owner cannot also be the'\r\n : 'You cannot be a') +\r\n ' Oversight of the risk. Select another user as the Oversight of this risk.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div\r\n *ngIf=\"\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes('Recommended Mitigation Priority')\r\n \"\r\n class=\"exel-view-column\"\r\n >\r\n {{ risk?.mitigationPriority }}\r\n </div>\r\n <div class=\"exel-view-column\">{{ risk?.mitigationPlans }}</div>\r\n <div class=\"exel-view-column\">{{ risk?.riskLabel }}</div>\r\n <!-- <div class=\"exel-view-column\" *ngIf=\"assessmentDaysEnable\" [class.error]=\"!risk?.assessmentDeadLine\">\r\n {{risk?.assessmentDeadLine}}\r\n <i *ngIf=\"!risk?.assessmentDeadLine\" class=\"icons\"\r\n [appTooltip]=\"'Set a deadline for the completion of the inherent risk assessment.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=\"true\"></i>\r\n </div> -->\r\n <div class=\"exel-view-row multi-column\">\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.likelihood &&\r\n !templateInfo?.likelihood.includes(risk?.likelihood)\r\n \"\r\n >\r\n {{ risk?.likelihood }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.impact && !templateInfo?.impact.includes(risk?.impact)\r\n \"\r\n >\r\n {{ risk?.impact }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.velocity && !templateInfo?.velocity.includes(risk?.velocity)\r\n \"\r\n *ngIf=\"riskBulkUpload?.weightFactors?.includes('Velocity')\"\r\n >\r\n {{ risk?.velocity }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.vulnerability &&\r\n !templateInfo?.vulnerability.includes(risk?.vulnerability)\r\n \"\r\n *ngIf=\"riskBulkUpload?.weightFactors?.includes('Vulnerability')\"\r\n >\r\n {{ risk?.vulnerability }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes(\r\n 'Do you want to apply the same risk ratings for all Responsibility Centers?'\r\n )\r\n \"\r\n class=\"exel-view-column\"\r\n >\r\n {{ risk?.applySameRiskRating }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n ffLinkedGrcObjects &&\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes('Linked GRC Object(s)')\r\n \"\r\n class=\"exel-view-column\"\r\n >\r\n {{ risk?.linkedGrcObject }}\r\n </div>\r\n <!-- <div class=\"exel-view-column\">{{risk?.customField1}}</div>\r\n <div class=\"exel-view-column\">{{risk?.customField2}}</div> -->\r\n\r\n <ng-container *ngIf=\"risk?.customTag\">\r\n <div class=\"exel-view-column\" *ngFor=\"let tag of risk?.customTag\">\r\n {{ tag?.custom_tag_value }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"bulk-view-footer\">\r\n <div class=\"left\">\r\n <p>\r\n {{ finalRisks }} out of {{ riskBulkUpload?.risks?.length }} risks will\r\n be added to the Risk Register.\r\n </p>\r\n </div>\r\n <div class=\"right\">\r\n <button (click)=\"close()\">Cancel</button>\r\n <button\r\n (click)=\"submit(false)\"\r\n [disabled]=\"finalRisks < 1\"\r\n class=\"blue\"\r\n >\r\n Add Risks\r\n </button>\r\n <button\r\n (click)=\"submit(true)\"\r\n *ngIf=\"showCompleteAssessmentButton\"\r\n [disabled]=\"finalRisks < 1\"\r\n class=\"blue\"\r\n >\r\n Add Risks And Complete Assessment\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#747576;border-radius:16px}::-webkit-scrollbar{height:15px}.bulk-view{position:fixed;inset:0;z-index:11}.bulk-view-head{height:60px;padding:20px 24px;background:#161b2f;display:flex;justify-content:flex-start}.bulk-view-title{font-size:16px;line-height:20px;font-weight:400;margin:0;color:#fff}.bulk-view-body{height:calc(100vh - 110px);overflow:auto;width:100%;background:#fff}.bulk-view-body .exel-view{display:block}.bulk-view-body .exel-view-row{display:flex;width:100%}.bulk-view-body .exel-view-row.head .exel-view-column{font-weight:500;font-size:14px;min-height:26px;background:#f1f1f1;padding:0}.bulk-view-body .exel-view-row.two-column .exel-view-column,.bulk-view-body .exel-view-row.three-column .exel-view-column,.bulk-view-body .exel-view-row.four-column .exel-view-column{min-width:250px!important}.bulk-view-body .exel-view-row.multi-column .exel-view-column{width:140px;min-width:140px}.bulk-view-body .exel-view-column{width:300px;min-width:300px;padding:0 10px;border-right:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;display:flex;align-items:center;justify-content:center;text-align:center;word-break:break-all;line-height:16px;font-size:12px;color:#161b2f;flex-wrap:wrap;position:relative}.bulk-view-body .exel-view-column.two-column{width:500px;min-width:500px!important}.bulk-view-body .exel-view-column.three-column{width:750px;min-width:750px!important}.bulk-view-body .exel-view-column.four-column{width:1000px;min-width:1000px!important}.bulk-view-body .exel-view-column i.icons{position:absolute;top:8px;right:10px;cursor:pointer;color:#d93b41}.bulk-view-body .exel-view-column.large{width:100%;min-width:auto}.bulk-view-body .exel-view-column.error{border:1px solid #eb2424}.bulk-view-body .exel-view-column span.required{color:#eb2424}.bulk-view-body .exel-view-column .exel-view-row .exel-view-column{width:100%}.bulk-view-body .exel-view-column.sl-no{background:#f1f1f1;width:60px;min-width:60px;min-height:30px;font-weight:400}.bulk-view-footer{height:50px;box-shadow:0 0 15px #1e5dd259;padding:10px 20px;position:fixed;width:100%;bottom:0;display:flex;align-items:center;justify-content:space-between;background:#fff}.bulk-view-footer .left p{color:#747576;font-size:13px;font-weight:500;margin:0}.bulk-view-footer .right button{font-size:12px;background:#fff;border:1px solid #dcdcdc;color:#747576;border-radius:2px;padding:8px 18px;cursor:pointer;text-transform:uppercase}.bulk-view-footer .right button+button{margin-left:4px}.bulk-view-footer .right button.blue{color:#fff;background:#1e5dd3}.bulk-view-footer .right button:disabled{background:#f1f1f1;border-color:#f1f1f1;pointer-events:none;cursor:not-allowed;color:#747576}\n"] }]
|
|
58
|
+
args: [{ selector: 'app-bulk-view', template: "<div class=\"bulk-view\">\r\n <div class=\"bulk-view-head\">\r\n <h2 class=\"bulk-view-title\">\r\n {{ fileName }}\r\n </h2>\r\n </div>\r\n <div class=\"bulk-view-body\">\r\n <div class=\"exel-view\">\r\n <div class=\"exel-view-row head\">\r\n <div class=\"exel-view-column sl-no\">#</div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.two-column]=\"heading && i === 5\"\r\n *ngFor=\"let heading of riskBulkUpload?.header; let i = index\"\r\n [class.large]=\"heading && heading.startsWith('Inherent')\"\r\n >\r\n <ng-container\r\n *ngIf=\"heading && !heading.startsWith('Inherent') && !(i === 5)\"\r\n >\r\n {{ heading.includes(\"*\") ? heading.replace(\"*\", \"\") : heading }}\r\n <span *ngIf=\"heading.includes('*')\" class=\"required\">*</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && heading.startsWith('Inherent')\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Inherent Risk Assessment</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\">\r\n <div\r\n class=\"exel-view-column\"\r\n *ngFor=\"\r\n let weightAgeFactor of riskBulkUpload.weightFactors\r\n | slice : 2\r\n \"\r\n >\r\n {{ weightAgeFactor }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && i === 5\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">\r\n {{ heading.includes(\"*\") ? heading.replace(\"*\", \"\") : heading }}\r\n <span *ngIf=\"heading.includes('*')\" class=\"required\">*</span>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div\r\n class=\"exel-view-column\"\r\n *ngFor=\"\r\n let weightAgeFactor of riskBulkUpload?.weightFactors\r\n | slice : 0 : 2\r\n \"\r\n >\r\n {{\r\n weightAgeFactor.includes(\"*\")\r\n ? weightAgeFactor.replace(\"*\", \"\")\r\n : weightAgeFactor\r\n }}\r\n <span *ngIf=\"weightAgeFactor.includes('*')\" class=\"required\"\r\n >*</span\r\n >\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div\r\n class=\"exel-view-row\"\r\n *ngFor=\"let risk of riskBulkUpload.risks; let i = index\"\r\n >\r\n <div class=\"exel-view-column sl-no\" [class.error]=\"!risk.isValid\">\r\n {{ i + 1 }}\r\n </div>\r\n\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.riskName\">\r\n {{ risk?.riskName }}\r\n <i\r\n *ngIf=\"!risk?.riskName\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Risk Name must be populated.'\"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n\r\n <div class=\"exel-view-column\">{{ risk?.description }}</div>\r\n\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.rcName\">\r\n {{ risk?.rcName }}\r\n <i\r\n *ngIf=\"!risk?.rcName\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Assign this risk to a Responsibility Center.'\"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div class=\"exel-view-column\">{{ risk?.owner }}</div>\r\n <div class=\"exel-view-column\">{{ risk?.riskOwner }}</div>\r\n <div class=\"exel-view-row multi-column\" [class.two-column]=\"true\">\r\n <div class=\"exel-view-column\" [class.error]=\"!risk?.isValidFrequency\">\r\n {{ risk?.frequency }}\r\n <i\r\n *ngIf=\"!risk?.isValidFrequency\"\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'Set a frequency for the completion of the inherent risk assessment.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"false\">\r\n {{ risk?.emailReminder }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n (risk?.owner && risk?.owner == risk?.overseer) ||\r\n (!risk?.owner && defaultOwner == risk?.overseer)\r\n \"\r\n >\r\n {{ risk?.overseer }}\r\n <i\r\n *ngIf=\"\r\n (risk?.owner && risk?.owner == risk?.overseer) ||\r\n (!risk?.owner && defaultOwner == risk?.overseer)\r\n \"\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n (risk?.owner\r\n ? 'The Risk Owner cannot also be the'\r\n : 'You cannot be a') +\r\n ' Oversight of the risk. Select another user as the Oversight of this risk.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <div\r\n *ngIf=\"\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes('Recommended Mitigation Priority')\r\n \"\r\n class=\"exel-view-column\"\r\n >\r\n {{ risk?.mitigationPriority }}\r\n </div>\r\n <div class=\"exel-view-column\">{{ risk?.mitigationPlans }}</div>\r\n <div class=\"exel-view-column\">{{ risk?.riskLabel }}</div>\r\n <!-- <div class=\"exel-view-column\" *ngIf=\"assessmentDaysEnable\" [class.error]=\"!risk?.assessmentDeadLine\">\r\n {{risk?.assessmentDeadLine}}\r\n <i *ngIf=\"!risk?.assessmentDeadLine\" class=\"icons\"\r\n [appTooltip]=\"'Set a deadline for the completion of the inherent risk assessment.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=\"true\"></i>\r\n </div> -->\r\n <div class=\"exel-view-row multi-column\">\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.likelihood &&\r\n !templateInfo?.likelihood.includes(risk?.likelihood)\r\n \"\r\n >\r\n {{ risk?.likelihood }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.impact && !templateInfo?.impact.includes(risk?.impact)\r\n \"\r\n >\r\n {{ risk?.impact }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.velocity && !templateInfo?.velocity.includes(risk?.velocity)\r\n \"\r\n *ngIf=\"riskBulkUpload?.weightFactors?.includes('Velocity')\"\r\n >\r\n {{ risk?.velocity }}\r\n </div>\r\n <div\r\n class=\"exel-view-column\"\r\n [class.error]=\"\r\n risk?.vulnerability &&\r\n !templateInfo?.vulnerability.includes(risk?.vulnerability)\r\n \"\r\n *ngIf=\"riskBulkUpload?.weightFactors?.includes('Vulnerability')\"\r\n >\r\n {{ risk?.vulnerability }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes(\r\n 'Do you want to apply the same risk ratings for all Responsibility Centers?'\r\n )\r\n \"\r\n class=\"exel-view-column\"\r\n >\r\n {{ risk?.applySameRiskRating }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n ffLinkedGrcObjects &&\r\n riskBulkUpload?.header &&\r\n riskBulkUpload?.header?.includes('Linked GRC Object(s)')\r\n \"\r\n class=\"exel-view-column\"\r\n [class.error]=\"risk?.isGrcNotValid\"\r\n >\r\n {{ risk?.linkedGrcObject }}\r\n <i\r\n *ngIf=\"risk?.isGrcNotValid\"\r\n class=\"icons\"\r\n [appTooltip]=\"\r\n 'The selected GRC object is not linked to the correct Responsibility Center. Therefore, this GRC object will not be associated with this risk.'\r\n \"\r\n placement=\"bottom-right\"\r\n type=\"white\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n ></i\r\n >\r\n </div>\r\n <!-- <div class=\"exel-view-column\">{{risk?.customField1}}</div>\r\n <div class=\"exel-view-column\">{{risk?.customField2}}</div> -->\r\n\r\n <ng-container *ngIf=\"risk?.customTag\">\r\n <div class=\"exel-view-column\" *ngFor=\"let tag of risk?.customTag\">\r\n {{ tag?.custom_tag_value }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"bulk-view-footer\">\r\n <div class=\"left\">\r\n <p>\r\n {{ finalRisks }} out of {{ riskBulkUpload?.risks?.length }} risks will\r\n be added to the Risk Register.\r\n </p>\r\n </div>\r\n <div class=\"right\">\r\n <button (click)=\"close()\">Cancel</button>\r\n <button\r\n (click)=\"submit(false)\"\r\n [disabled]=\"finalRisks < 1\"\r\n class=\"blue\"\r\n >\r\n Add Risks\r\n </button>\r\n <button\r\n (click)=\"submit(true)\"\r\n *ngIf=\"showCompleteAssessmentButton\"\r\n [disabled]=\"finalRisks < 1\"\r\n class=\"blue\"\r\n >\r\n Add Risks And Complete Assessment\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#747576;border-radius:16px}::-webkit-scrollbar{height:15px}.bulk-view{position:fixed;inset:0;z-index:11}.bulk-view-head{height:60px;padding:20px 24px;background:#161b2f;display:flex;justify-content:flex-start}.bulk-view-title{font-size:16px;line-height:20px;font-weight:400;margin:0;color:#fff}.bulk-view-body{height:calc(100vh - 110px);overflow:auto;width:100%;background:#fff}.bulk-view-body .exel-view{display:block}.bulk-view-body .exel-view-row{display:flex;width:100%}.bulk-view-body .exel-view-row.head .exel-view-column{font-weight:500;font-size:14px;min-height:26px;background:#f1f1f1;padding:0}.bulk-view-body .exel-view-row.two-column .exel-view-column,.bulk-view-body .exel-view-row.three-column .exel-view-column,.bulk-view-body .exel-view-row.four-column .exel-view-column{min-width:250px!important}.bulk-view-body .exel-view-row.multi-column .exel-view-column{width:140px;min-width:140px}.bulk-view-body .exel-view-column{width:300px;min-width:300px;padding:0 10px;border-right:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;display:flex;align-items:center;justify-content:center;text-align:center;word-break:break-all;line-height:16px;font-size:12px;color:#161b2f;flex-wrap:wrap;position:relative}.bulk-view-body .exel-view-column.two-column{width:500px;min-width:500px!important}.bulk-view-body .exel-view-column.three-column{width:750px;min-width:750px!important}.bulk-view-body .exel-view-column.four-column{width:1000px;min-width:1000px!important}.bulk-view-body .exel-view-column i.icons{position:absolute;top:8px;right:10px;cursor:pointer;color:#d93b41}.bulk-view-body .exel-view-column.large{width:100%;min-width:auto}.bulk-view-body .exel-view-column.error{border:1px solid #eb2424}.bulk-view-body .exel-view-column span.required{color:#eb2424}.bulk-view-body .exel-view-column .exel-view-row .exel-view-column{width:100%}.bulk-view-body .exel-view-column.sl-no{background:#f1f1f1;width:60px;min-width:60px;min-height:30px;font-weight:400}.bulk-view-footer{height:50px;box-shadow:0 0 15px #1e5dd259;padding:10px 20px;position:fixed;width:100%;bottom:0;display:flex;align-items:center;justify-content:space-between;background:#fff}.bulk-view-footer .left p{color:#747576;font-size:13px;font-weight:500;margin:0}.bulk-view-footer .right button{font-size:12px;background:#fff;border:1px solid #dcdcdc;color:#747576;border-radius:2px;padding:8px 18px;cursor:pointer;text-transform:uppercase}.bulk-view-footer .right button+button{margin-left:4px}.bulk-view-footer .right button.blue{color:#fff;background:#1e5dd3}.bulk-view-footer .right button:disabled{background:#f1f1f1;border-color:#f1f1f1;pointer-events:none;cursor:not-allowed;color:#747576}\n"] }]
|
|
60
59
|
}], propDecorators: { riskBulkUpload: [{
|
|
61
60
|
type: Input
|
|
62
61
|
}], templateInfo: [{
|
|
@@ -76,4 +75,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
76
75
|
}], cancel: [{
|
|
77
76
|
type: Output
|
|
78
77
|
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvYnVsay12aWV3L2J1bGstdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2J1bGstdmlldy9idWxrLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFPdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUw5QjtRQVdXLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFbkMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0QyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsaUNBQTRCLEdBQUcsS0FBSyxDQUFDO0tBNkN0QztJQTNDQyxXQUFXO1FBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDOUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNoQixJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztpQkFDdEI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDOUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNuRCxJQUFJLElBQUksRUFBRSxVQUFVLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRTtvQkFDcEMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztpQkFDMUM7YUFDRjtpQkFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQzFELElBQ0UsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxNQUFNO29CQUNaLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxJQUFJLEVBQUUsYUFBYSxDQUFDLEVBQ3ZDO29CQUNBLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUM7aUJBQzFDO2FBQ0Y7aUJBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUMxRCxJQUNFLElBQUksRUFBRSxVQUFVO29CQUNoQixJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsYUFBYSxFQUNuQjtvQkFDQSxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO2lCQUMxQzthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUF1QjtRQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7K0dBekRVLGlCQUFpQjttR0FBakIsaUJBQWlCLGlZQ2I5Qiw0L1RBMlFBOzs0RkQ5UGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGVBQWU7OEJBS2hCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPdXRwdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYnVsay12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnVsay12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9idWxrLXZpZXcuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1bGtWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSByaXNrQnVsa1VwbG9hZCE6IGFueTtcclxuICBASW5wdXQoKSB0ZW1wbGF0ZUluZm8hOiBhbnk7XHJcbiAgQElucHV0KCkgZmlsZU5hbWUhOiBhbnk7XHJcbiAgQElucHV0KCkgYXNzZXNzbWVudERheXNFbmFibGUhOiBhbnk7XHJcbiAgQElucHV0KCkgZGVmYXVsdE93bmVyITogYW55O1xyXG4gIEBJbnB1dCgpIGxvYWRlciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZmTGlua2VkR3JjT2JqZWN0czogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgc3VibWl0Umlza0J1bGtVcGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgZmluYWxSaXNrcyA9IDA7XHJcbiAgc2hvd0NvbXBsZXRlQXNzZXNzbWVudEJ1dHRvbiA9IGZhbHNlO1xyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMucmlza0J1bGtVcGxvYWQsICdyaXNrJyk7XHJcbiAgICBpZiAodGhpcy5yaXNrQnVsa1VwbG9hZCkge1xyXG4gICAgICB0aGlzLmZpbmFsUmlza3MgPSAwO1xyXG4gICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLnJpc2tzLmZvckVhY2goKHJpc2s6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyaXNrLmlzVmFsaWQpIHtcclxuICAgICAgICAgIHRoaXMuZmluYWxSaXNrcyArPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLnJpc2tzLmZvckVhY2goKHJpc2s6IGFueSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5yaXNrQnVsa1VwbG9hZD8ud2VpZ2h0RmFjdG9ycz8ubGVuZ3RoID09IDQpIHtcclxuICAgICAgICBpZiAocmlzaz8ubGlrZWxpaG9vZCAmJiByaXNrPy5pbXBhY3QpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0NvbXBsZXRlQXNzZXNzbWVudEJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/Lmxlbmd0aCA9PSA1KSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcmlzaz8ubGlrZWxpaG9vZCAmJlxyXG4gICAgICAgICAgcmlzaz8uaW1wYWN0ICYmXHJcbiAgICAgICAgICAocmlzaz8udmVsb2NpdHkgfHwgcmlzaz8udnVsbmVyYWJpbGl0eSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0NvbXBsZXRlQXNzZXNzbWVudEJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/Lmxlbmd0aCA9PSA2KSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcmlzaz8ubGlrZWxpaG9vZCAmJlxyXG4gICAgICAgICAgcmlzaz8uaW1wYWN0ICYmXHJcbiAgICAgICAgICByaXNrPy52ZWxvY2l0eSAmJlxyXG4gICAgICAgICAgcmlzaz8udnVsbmVyYWJpbGl0eVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5zaG93Q29tcGxldGVBc3Nlc3NtZW50QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0KGNvbXBsZXRlQXNzZXNzbWVudDogYW55KSB7XHJcbiAgICB0aGlzLnN1Ym1pdFJpc2tCdWxrVXBsb2FkLmVtaXQoY29tcGxldGVBc3Nlc3NtZW50KTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYnVsay12aWV3XCI+XHJcbiAgPGRpdiBjbGFzcz1cImJ1bGstdmlldy1oZWFkXCI+XHJcbiAgICA8aDIgY2xhc3M9XCJidWxrLXZpZXctdGl0bGVcIj5cclxuICAgICAge3sgZmlsZU5hbWUgfX1cclxuICAgIDwvaDI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImJ1bGstdmlldy1ib2R5XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctcm93IGhlYWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtbiBzbC1ub1wiPiM8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIlxyXG4gICAgICAgICAgW2NsYXNzLnR3by1jb2x1bW5dPVwiaGVhZGluZyAmJiBpID09PSA1XCJcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBoZWFkaW5nIG9mIHJpc2tCdWxrVXBsb2FkPy5oZWFkZXI7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgW2NsYXNzLmxhcmdlXT1cImhlYWRpbmcgJiYgaGVhZGluZy5zdGFydHNXaXRoKCdJbmhlcmVudCcpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaGVhZGluZyAmJiAhaGVhZGluZy5zdGFydHNXaXRoKCdJbmhlcmVudCcpICYmICEoaSA9PT0gNSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBoZWFkaW5nLmluY2x1ZGVzKFwiKlwiKSA/IGhlYWRpbmcucmVwbGFjZShcIipcIiwgXCJcIikgOiBoZWFkaW5nIH19XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZGluZy5pbmNsdWRlcygnKicpXCIgY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkaW5nICYmIGhlYWRpbmcuc3RhcnRzV2l0aCgnSW5oZXJlbnQnKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LXJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uIGxhcmdlXCI+SW5oZXJlbnQgUmlzayBBc3Nlc3NtZW50PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LXJvdyBtdWx0aS1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCB3ZWlnaHRBZ2VGYWN0b3Igb2Ygcmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9yc1xyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAyXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IHdlaWdodEFnZUZhY3RvciB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRpbmcgJiYgaSA9PT0gNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LXJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uIGxhcmdlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBoZWFkaW5nLmluY2x1ZGVzKFwiKlwiKSA/IGhlYWRpbmcucmVwbGFjZShcIipcIiwgXCJcIikgOiBoZWFkaW5nIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRpbmcuaW5jbHVkZXMoJyonKVwiIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1yb3cgbXVsdGktY29sdW1uXCIgW2NsYXNzLnR3by1jb2x1bW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IHdlaWdodEFnZUZhY3RvciBvZiByaXNrQnVsa1VwbG9hZD8ud2VpZ2h0RmFjdG9yc1xyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAwIDogMlxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICB3ZWlnaHRBZ2VGYWN0b3IuaW5jbHVkZXMoXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgPyB3ZWlnaHRBZ2VGYWN0b3IucmVwbGFjZShcIipcIiwgXCJcIilcclxuICAgICAgICAgICAgICAgICAgICA6IHdlaWdodEFnZUZhY3RvclxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2VpZ2h0QWdlRmFjdG9yLmluY2x1ZGVzKCcqJylcIiBjbGFzcz1cInJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgPio8L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImV4ZWwtdmlldy1yb3dcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCByaXNrIG9mIHJpc2tCdWxrVXBsb2FkLnJpc2tzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uIHNsLW5vXCIgW2NsYXNzLmVycm9yXT1cIiFyaXNrLmlzVmFsaWRcIj5cclxuICAgICAgICAgIHt7IGkgKyAxIH19XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCIgW2NsYXNzLmVycm9yXT1cIiFyaXNrPy5yaXNrTmFtZVwiPlxyXG4gICAgICAgICAge3sgcmlzaz8ucmlza05hbWUgfX1cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXJpc2s/LnJpc2tOYW1lXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIidSaXNrIE5hbWUgbXVzdCBiZSBwb3B1bGF0ZWQuJ1wiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkzMjs8L2lcclxuICAgICAgICAgID5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIj57eyByaXNrPy5kZXNjcmlwdGlvbiB9fTwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiIFtjbGFzcy5lcnJvcl09XCIhcmlzaz8ucmNOYW1lXCI+XHJcbiAgICAgICAgICB7eyByaXNrPy5yY05hbWUgfX1cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXJpc2s/LnJjTmFtZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInQXNzaWduIHRoaXMgcmlzayB0byBhIFJlc3BvbnNpYmlsaXR5IENlbnRlci4nXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTMyOzwvaVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCI+e3sgcmlzaz8ub3duZXIgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiPnt7IHJpc2s/LnJpc2tPd25lciB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctcm93IG11bHRpLWNvbHVtblwiIFtjbGFzcy50d28tY29sdW1uXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCIgW2NsYXNzLmVycm9yXT1cIiFyaXNrPy5pc1ZhbGlkRnJlcXVlbmN5XCI+XHJcbiAgICAgICAgICAgIHt7IHJpc2s/LmZyZXF1ZW5jeSB9fVxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXJpc2s/LmlzVmFsaWRGcmVxdWVuY3lcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgJ1NldCBhIGZyZXF1ZW5jeSBmb3IgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGluaGVyZW50IHJpc2sgYXNzZXNzbWVudC4nXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICA+JiN4ZTkzMjs8L2lcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiIFtjbGFzcy5lcnJvcl09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICB7eyByaXNrPy5lbWFpbFJlbWluZGVyIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIlxyXG4gICAgICAgICAgW2NsYXNzLmVycm9yXT1cIlxyXG4gICAgICAgICAgICAocmlzaz8ub3duZXIgJiYgcmlzaz8ub3duZXIgPT0gcmlzaz8ub3ZlcnNlZXIpIHx8XHJcbiAgICAgICAgICAgICghcmlzaz8ub3duZXIgJiYgZGVmYXVsdE93bmVyID09IHJpc2s/Lm92ZXJzZWVyKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyByaXNrPy5vdmVyc2VlciB9fVxyXG4gICAgICAgICAgPGlcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAocmlzaz8ub3duZXIgJiYgcmlzaz8ub3duZXIgPT0gcmlzaz8ub3ZlcnNlZXIpIHx8XHJcbiAgICAgICAgICAgICAgKCFyaXNrPy5vd25lciAmJiBkZWZhdWx0T3duZXIgPT0gcmlzaz8ub3ZlcnNlZXIpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAocmlzaz8ub3duZXJcclxuICAgICAgICAgICAgICAgID8gJ1RoZSBSaXNrIE93bmVyIGNhbm5vdCBhbHNvIGJlIHRoZSdcclxuICAgICAgICAgICAgICAgIDogJ1lvdSBjYW5ub3QgYmUgYScpICtcclxuICAgICAgICAgICAgICAnIE92ZXJzaWdodCBvZiB0aGUgcmlzay4gU2VsZWN0IGFub3RoZXIgdXNlciBhcyB0aGUgT3ZlcnNpZ2h0IG9mIHRoaXMgcmlzay4nXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkzMjs8L2lcclxuICAgICAgICAgID5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICByaXNrQnVsa1VwbG9hZD8uaGVhZGVyICYmXHJcbiAgICAgICAgICAgIHJpc2tCdWxrVXBsb2FkPy5oZWFkZXI/LmluY2x1ZGVzKCdSZWNvbW1lbmRlZCBNaXRpZ2F0aW9uIFByaW9yaXR5JylcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHJpc2s/Lm1pdGlnYXRpb25Qcmlvcml0eSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCI+e3sgcmlzaz8ubWl0aWdhdGlvblBsYW5zIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIj57eyByaXNrPy5yaXNrTGFiZWwgfX08L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCIgKm5nSWY9XCJhc3Nlc3NtZW50RGF5c0VuYWJsZVwiIFtjbGFzcy5lcnJvcl09XCIhcmlzaz8uYXNzZXNzbWVudERlYWRMaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7cmlzaz8uYXNzZXNzbWVudERlYWRMaW5lfX1cclxuICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhcmlzaz8uYXNzZXNzbWVudERlYWRMaW5lXCIgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInU2V0IGEgZGVhZGxpbmUgZm9yIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBpbmhlcmVudCByaXNrIGFzc2Vzc21lbnQuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiB0eXBlPVwid2hpdGVcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkzMjs8L2k+XHJcbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctcm93IG11bHRpLWNvbHVtblwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIlxyXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwiXHJcbiAgICAgICAgICAgICAgcmlzaz8ubGlrZWxpaG9vZCAmJlxyXG4gICAgICAgICAgICAgICF0ZW1wbGF0ZUluZm8/Lmxpa2VsaWhvb2QuaW5jbHVkZXMocmlzaz8ubGlrZWxpaG9vZClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgcmlzaz8ubGlrZWxpaG9vZCB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5lcnJvcl09XCJcclxuICAgICAgICAgICAgICByaXNrPy5pbXBhY3QgJiYgIXRlbXBsYXRlSW5mbz8uaW1wYWN0LmluY2x1ZGVzKHJpc2s/LmltcGFjdClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgcmlzaz8uaW1wYWN0IH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCJcclxuICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cIlxyXG4gICAgICAgICAgICAgIHJpc2s/LnZlbG9jaXR5ICYmICF0ZW1wbGF0ZUluZm8/LnZlbG9jaXR5LmluY2x1ZGVzKHJpc2s/LnZlbG9jaXR5KVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInJpc2tCdWxrVXBsb2FkPy53ZWlnaHRGYWN0b3JzPy5pbmNsdWRlcygnVmVsb2NpdHknKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHJpc2s/LnZlbG9jaXR5IH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCJcclxuICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cIlxyXG4gICAgICAgICAgICAgIHJpc2s/LnZ1bG5lcmFiaWxpdHkgJiZcclxuICAgICAgICAgICAgICAhdGVtcGxhdGVJbmZvPy52dWxuZXJhYmlsaXR5LmluY2x1ZGVzKHJpc2s/LnZ1bG5lcmFiaWxpdHkpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/LmluY2x1ZGVzKCdWdWxuZXJhYmlsaXR5JylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyByaXNrPy52dWxuZXJhYmlsaXR5IH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICByaXNrQnVsa1VwbG9hZD8uaGVhZGVyICYmXHJcbiAgICAgICAgICAgIHJpc2tCdWxrVXBsb2FkPy5oZWFkZXI/LmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgICdEbyB5b3Ugd2FudCB0byBhcHBseSB0aGUgc2FtZSByaXNrIHJhdGluZ3MgZm9yIGFsbCBSZXNwb25zaWJpbGl0eSBDZW50ZXJzPydcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgcmlzaz8uYXBwbHlTYW1lUmlza1JhdGluZyB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIGZmTGlua2VkR3JjT2JqZWN0cyAmJlxyXG4gICAgICAgICAgICByaXNrQnVsa1VwbG9hZD8uaGVhZGVyICYmXHJcbiAgICAgICAgICAgIHJpc2tCdWxrVXBsb2FkPy5oZWFkZXI/LmluY2x1ZGVzKCdMaW5rZWQgR1JDIE9iamVjdChzKScpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyByaXNrPy5saW5rZWRHcmNPYmplY3QgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCI+e3tyaXNrPy5jdXN0b21GaWVsZDF9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCI+e3tyaXNrPy5jdXN0b21GaWVsZDJ9fTwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJpc2s/LmN1c3RvbVRhZ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIiAqbmdGb3I9XCJsZXQgdGFnIG9mIHJpc2s/LmN1c3RvbVRhZ1wiPlxyXG4gICAgICAgICAgICB7eyB0YWc/LmN1c3RvbV90YWdfdmFsdWUgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImJ1bGstdmlldy1mb290ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICA8cD5cclxuICAgICAgICAgIHt7IGZpbmFsUmlza3MgfX0gb3V0IG9mIHt7IHJpc2tCdWxrVXBsb2FkPy5yaXNrcz8ubGVuZ3RoIH19IHJpc2tzIHdpbGxcclxuICAgICAgICAgIGJlIGFkZGVkIHRvIHRoZSBSaXNrIFJlZ2lzdGVyLlxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAoY2xpY2spPVwic3VibWl0KGZhbHNlKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmluYWxSaXNrcyA8IDFcIlxyXG4gICAgICAgICAgY2xhc3M9XCJibHVlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBBZGQgUmlza3NcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAoY2xpY2spPVwic3VibWl0KHRydWUpXCJcclxuICAgICAgICAgICpuZ0lmPVwic2hvd0NvbXBsZXRlQXNzZXNzbWVudEJ1dHRvblwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmluYWxSaXNrcyA8IDFcIlxyXG4gICAgICAgICAgY2xhc3M9XCJibHVlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBBZGQgUmlza3MgQW5kIENvbXBsZXRlIEFzc2Vzc21lbnRcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxyXG48L2Rpdj5cclxuIl19
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvYnVsay12aWV3L2J1bGstdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2J1bGstdmlldy9idWxrLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFPdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUw5QjtRQVdXLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFbkMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0QyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsaUNBQTRCLEdBQUcsS0FBSyxDQUFDO0tBNEN0QztJQTFDQyxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO2lCQUN0QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUM5QyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ25ELElBQUksSUFBSSxFQUFFLFVBQVUsSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFO29CQUNwQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO2lCQUMxQzthQUNGO2lCQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDMUQsSUFDRSxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLE1BQU07b0JBQ1osQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLElBQUksRUFBRSxhQUFhLENBQUMsRUFDdkM7b0JBQ0EsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztpQkFDMUM7YUFDRjtpQkFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQzFELElBQ0UsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxRQUFRO29CQUNkLElBQUksRUFBRSxhQUFhLEVBQ25CO29CQUNBLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUM7aUJBQzFDO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQXVCO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQzsrR0F4RFUsaUJBQWlCO21HQUFqQixpQkFBaUIsaVlDYjlCLHNoVkF3UkE7OzRGRDNRYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsZUFBZTs4QkFLaEIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE91dHB1dCxcclxuICBPbkNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1idWxrLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9idWxrLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2J1bGstdmlldy5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnVsa1ZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHJpc2tCdWxrVXBsb2FkITogYW55O1xyXG4gIEBJbnB1dCgpIHRlbXBsYXRlSW5mbyE6IGFueTtcclxuICBASW5wdXQoKSBmaWxlTmFtZSE6IGFueTtcclxuICBASW5wdXQoKSBhc3Nlc3NtZW50RGF5c0VuYWJsZSE6IGFueTtcclxuICBASW5wdXQoKSBkZWZhdWx0T3duZXIhOiBhbnk7XHJcbiAgQElucHV0KCkgbG9hZGVyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZmZMaW5rZWRHcmNPYmplY3RzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBzdWJtaXRSaXNrQnVsa1VwbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBmaW5hbFJpc2tzID0gMDtcclxuICBzaG93Q29tcGxldGVBc3Nlc3NtZW50QnV0dG9uID0gZmFsc2U7XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQpIHtcclxuICAgICAgdGhpcy5maW5hbFJpc2tzID0gMDtcclxuICAgICAgdGhpcy5yaXNrQnVsa1VwbG9hZC5yaXNrcy5mb3JFYWNoKChyaXNrOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmlzay5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbmFsUmlza3MgKz0gMTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yaXNrQnVsa1VwbG9hZC5yaXNrcy5mb3JFYWNoKChyaXNrOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/Lmxlbmd0aCA9PSA0KSB7XHJcbiAgICAgICAgaWYgKHJpc2s/Lmxpa2VsaWhvb2QgJiYgcmlzaz8uaW1wYWN0KSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dDb21wbGV0ZUFzc2Vzc21lbnRCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkPy53ZWlnaHRGYWN0b3JzPy5sZW5ndGggPT0gNSkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHJpc2s/Lmxpa2VsaWhvb2QgJiZcclxuICAgICAgICAgIHJpc2s/LmltcGFjdCAmJlxyXG4gICAgICAgICAgKHJpc2s/LnZlbG9jaXR5IHx8IHJpc2s/LnZ1bG5lcmFiaWxpdHkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dDb21wbGV0ZUFzc2Vzc21lbnRCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkPy53ZWlnaHRGYWN0b3JzPy5sZW5ndGggPT0gNikge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHJpc2s/Lmxpa2VsaWhvb2QgJiZcclxuICAgICAgICAgIHJpc2s/LmltcGFjdCAmJlxyXG4gICAgICAgICAgcmlzaz8udmVsb2NpdHkgJiZcclxuICAgICAgICAgIHJpc2s/LnZ1bG5lcmFiaWxpdHlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0NvbXBsZXRlQXNzZXNzbWVudEJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdChjb21wbGV0ZUFzc2Vzc21lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zdWJtaXRSaXNrQnVsa1VwbG9hZC5lbWl0KGNvbXBsZXRlQXNzZXNzbWVudCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImJ1bGstdmlld1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJidWxrLXZpZXctaGVhZFwiPlxyXG4gICAgPGgyIGNsYXNzPVwiYnVsay12aWV3LXRpdGxlXCI+XHJcbiAgICAgIHt7IGZpbGVOYW1lIH19XHJcbiAgICA8L2gyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJidWxrLXZpZXctYm9keVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlld1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LXJvdyBoZWFkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW4gc2wtbm9cIj4jPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCJcclxuICAgICAgICAgIFtjbGFzcy50d28tY29sdW1uXT1cImhlYWRpbmcgJiYgaSA9PT0gNVwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaGVhZGluZyBvZiByaXNrQnVsa1VwbG9hZD8uaGVhZGVyOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5sYXJnZV09XCJoZWFkaW5nICYmIGhlYWRpbmcuc3RhcnRzV2l0aCgnSW5oZXJlbnQnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdJZj1cImhlYWRpbmcgJiYgIWhlYWRpbmcuc3RhcnRzV2l0aCgnSW5oZXJlbnQnKSAmJiAhKGkgPT09IDUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgaGVhZGluZy5pbmNsdWRlcyhcIipcIikgPyBoZWFkaW5nLnJlcGxhY2UoXCIqXCIsIFwiXCIpIDogaGVhZGluZyB9fVxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRpbmcuaW5jbHVkZXMoJyonKVwiIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGluZyAmJiBoZWFkaW5nLnN0YXJ0c1dpdGgoJ0luaGVyZW50JylcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1yb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtbiBsYXJnZVwiPkluaGVyZW50IFJpc2sgQXNzZXNzbWVudDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1yb3cgbXVsdGktY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgd2VpZ2h0QWdlRmFjdG9yIG9mIHJpc2tCdWxrVXBsb2FkLndlaWdodEZhY3RvcnNcclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMlxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyB3ZWlnaHRBZ2VGYWN0b3IgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkaW5nICYmIGkgPT09IDVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1yb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtbiBsYXJnZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgaGVhZGluZy5pbmNsdWRlcyhcIipcIikgPyBoZWFkaW5nLnJlcGxhY2UoXCIqXCIsIFwiXCIpIDogaGVhZGluZyB9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJoZWFkaW5nLmluY2x1ZGVzKCcqJylcIiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctcm93IG11bHRpLWNvbHVtblwiIFtjbGFzcy50d28tY29sdW1uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCB3ZWlnaHRBZ2VGYWN0b3Igb2Ygcmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnNcclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMCA6IDJcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgd2VpZ2h0QWdlRmFjdG9yLmluY2x1ZGVzKFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgID8gd2VpZ2h0QWdlRmFjdG9yLnJlcGxhY2UoXCIqXCIsIFwiXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgOiB3ZWlnaHRBZ2VGYWN0b3JcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIndlaWdodEFnZUZhY3Rvci5pbmNsdWRlcygnKicpXCIgY2xhc3M9XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgID4qPC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJleGVsLXZpZXctcm93XCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgcmlzayBvZiByaXNrQnVsa1VwbG9hZC5yaXNrczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtbiBzbC1ub1wiIFtjbGFzcy5lcnJvcl09XCIhcmlzay5pc1ZhbGlkXCI+XHJcbiAgICAgICAgICB7eyBpICsgMSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiIFtjbGFzcy5lcnJvcl09XCIhcmlzaz8ucmlza05hbWVcIj5cclxuICAgICAgICAgIHt7IHJpc2s/LnJpc2tOYW1lIH19XHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAqbmdJZj1cIiFyaXNrPy5yaXNrTmFtZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInUmlzayBOYW1lIG11c3QgYmUgcG9wdWxhdGVkLidcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MzI7PC9pXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCI+e3sgcmlzaz8uZGVzY3JpcHRpb24gfX08L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIiBbY2xhc3MuZXJyb3JdPVwiIXJpc2s/LnJjTmFtZVwiPlxyXG4gICAgICAgICAge3sgcmlzaz8ucmNOYW1lIH19XHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAqbmdJZj1cIiFyaXNrPy5yY05hbWVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ0Fzc2lnbiB0aGlzIHJpc2sgdG8gYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJ1wiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkzMjs8L2lcclxuICAgICAgICAgID5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiPnt7IHJpc2s/Lm93bmVyIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIj57eyByaXNrPy5yaXNrT3duZXIgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LXJvdyBtdWx0aS1jb2x1bW5cIiBbY2xhc3MudHdvLWNvbHVtbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiIFtjbGFzcy5lcnJvcl09XCIhcmlzaz8uaXNWYWxpZEZyZXF1ZW5jeVwiPlxyXG4gICAgICAgICAgICB7eyByaXNrPy5mcmVxdWVuY3kgfX1cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFyaXNrPy5pc1ZhbGlkRnJlcXVlbmN5XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICdTZXQgYSBmcmVxdWVuY3kgZm9yIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBpbmhlcmVudCByaXNrIGFzc2Vzc21lbnQuJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MzI7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIiBbY2xhc3MuZXJyb3JdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAge3sgcmlzaz8uZW1haWxSZW1pbmRlciB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCJcclxuICAgICAgICAgIFtjbGFzcy5lcnJvcl09XCJcclxuICAgICAgICAgICAgKHJpc2s/Lm93bmVyICYmIHJpc2s/Lm93bmVyID09IHJpc2s/Lm92ZXJzZWVyKSB8fFxyXG4gICAgICAgICAgICAoIXJpc2s/Lm93bmVyICYmIGRlZmF1bHRPd25lciA9PSByaXNrPy5vdmVyc2VlcilcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgcmlzaz8ub3ZlcnNlZXIgfX1cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgKHJpc2s/Lm93bmVyICYmIHJpc2s/Lm93bmVyID09IHJpc2s/Lm92ZXJzZWVyKSB8fFxyXG4gICAgICAgICAgICAgICghcmlzaz8ub3duZXIgJiYgZGVmYXVsdE93bmVyID09IHJpc2s/Lm92ZXJzZWVyKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgKHJpc2s/Lm93bmVyXHJcbiAgICAgICAgICAgICAgICA/ICdUaGUgUmlzayBPd25lciBjYW5ub3QgYWxzbyBiZSB0aGUnXHJcbiAgICAgICAgICAgICAgICA6ICdZb3UgY2Fubm90IGJlIGEnKSArXHJcbiAgICAgICAgICAgICAgJyBPdmVyc2lnaHQgb2YgdGhlIHJpc2suIFNlbGVjdCBhbm90aGVyIHVzZXIgYXMgdGhlIE92ZXJzaWdodCBvZiB0aGlzIHJpc2suJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxyXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPiYjeGU5MzI7PC9pXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcmlza0J1bGtVcGxvYWQ/LmhlYWRlciAmJlxyXG4gICAgICAgICAgICByaXNrQnVsa1VwbG9hZD8uaGVhZGVyPy5pbmNsdWRlcygnUmVjb21tZW5kZWQgTWl0aWdhdGlvbiBQcmlvcml0eScpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyByaXNrPy5taXRpZ2F0aW9uUHJpb3JpdHkgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiPnt7IHJpc2s/Lm1pdGlnYXRpb25QbGFucyB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCI+e3sgcmlzaz8ucmlza0xhYmVsIH19PC9kaXY+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiICpuZ0lmPVwiYXNzZXNzbWVudERheXNFbmFibGVcIiBbY2xhc3MuZXJyb3JdPVwiIXJpc2s/LmFzc2Vzc21lbnREZWFkTGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3Jpc2s/LmFzc2Vzc21lbnREZWFkTGluZX19XHJcbiAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIXJpc2s/LmFzc2Vzc21lbnREZWFkTGluZVwiIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1NldCBhIGRlYWRsaW5lIGZvciB0aGUgY29tcGxldGlvbiBvZiB0aGUgaW5oZXJlbnQgcmlzayBhc3Nlc3NtZW50LidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCIgdHlwZT1cIndoaXRlXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MzI7PC9pPlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LXJvdyBtdWx0aS1jb2x1bW5cIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJleGVsLXZpZXctY29sdW1uXCJcclxuICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cIlxyXG4gICAgICAgICAgICAgIHJpc2s/Lmxpa2VsaWhvb2QgJiZcclxuICAgICAgICAgICAgICAhdGVtcGxhdGVJbmZvPy5saWtlbGlob29kLmluY2x1ZGVzKHJpc2s/Lmxpa2VsaWhvb2QpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHJpc2s/Lmxpa2VsaWhvb2QgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIlxyXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwiXHJcbiAgICAgICAgICAgICAgcmlzaz8uaW1wYWN0ICYmICF0ZW1wbGF0ZUluZm8/LmltcGFjdC5pbmNsdWRlcyhyaXNrPy5pbXBhY3QpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHJpc2s/LmltcGFjdCB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5lcnJvcl09XCJcclxuICAgICAgICAgICAgICByaXNrPy52ZWxvY2l0eSAmJiAhdGVtcGxhdGVJbmZvPy52ZWxvY2l0eS5pbmNsdWRlcyhyaXNrPy52ZWxvY2l0eSlcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJyaXNrQnVsa1VwbG9hZD8ud2VpZ2h0RmFjdG9ycz8uaW5jbHVkZXMoJ1ZlbG9jaXR5JylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyByaXNrPy52ZWxvY2l0eSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5lcnJvcl09XCJcclxuICAgICAgICAgICAgICByaXNrPy52dWxuZXJhYmlsaXR5ICYmXHJcbiAgICAgICAgICAgICAgIXRlbXBsYXRlSW5mbz8udnVsbmVyYWJpbGl0eS5pbmNsdWRlcyhyaXNrPy52dWxuZXJhYmlsaXR5KVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInJpc2tCdWxrVXBsb2FkPy53ZWlnaHRGYWN0b3JzPy5pbmNsdWRlcygnVnVsbmVyYWJpbGl0eScpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgcmlzaz8udnVsbmVyYWJpbGl0eSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcmlza0J1bGtVcGxvYWQ/LmhlYWRlciAmJlxyXG4gICAgICAgICAgICByaXNrQnVsa1VwbG9hZD8uaGVhZGVyPy5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAnRG8geW91IHdhbnQgdG8gYXBwbHkgdGhlIHNhbWUgcmlzayByYXRpbmdzIGZvciBhbGwgUmVzcG9uc2liaWxpdHkgQ2VudGVycz8nXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHJpc2s/LmFwcGx5U2FtZVJpc2tSYXRpbmcgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBmZkxpbmtlZEdyY09iamVjdHMgJiZcclxuICAgICAgICAgICAgcmlza0J1bGtVcGxvYWQ/LmhlYWRlciAmJlxyXG4gICAgICAgICAgICByaXNrQnVsa1VwbG9hZD8uaGVhZGVyPy5pbmNsdWRlcygnTGlua2VkIEdSQyBPYmplY3QocyknKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiXHJcbiAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwicmlzaz8uaXNHcmNOb3RWYWxpZFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgcmlzaz8ubGlua2VkR3JjT2JqZWN0IH19XHJcbiAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAqbmdJZj1cInJpc2s/LmlzR3JjTm90VmFsaWRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgJ1RoZSBzZWxlY3RlZCBHUkMgb2JqZWN0IGlzIG5vdCBsaW5rZWQgdG8gdGhlIGNvcnJlY3QgUmVzcG9uc2liaWxpdHkgQ2VudGVyLiBUaGVyZWZvcmUsIHRoaXMgR1JDIG9iamVjdCB3aWxsIG5vdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhpcyByaXNrLidcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTMyOzwvaVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIj57e3Jpc2s/LmN1c3RvbUZpZWxkMX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4ZWwtdmlldy1jb2x1bW5cIj57e3Jpc2s/LmN1c3RvbUZpZWxkMn19PC9kaXY+IC0tPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmlzaz8uY3VzdG9tVGFnXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhlbC12aWV3LWNvbHVtblwiICpuZ0Zvcj1cImxldCB0YWcgb2Ygcmlzaz8uY3VzdG9tVGFnXCI+XHJcbiAgICAgICAgICAgIHt7IHRhZz8uY3VzdG9tX3RhZ192YWx1ZSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYnVsay12aWV3LWZvb3RlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgIDxwPlxyXG4gICAgICAgICAge3sgZmluYWxSaXNrcyB9fSBvdXQgb2Yge3sgcmlza0J1bGtVcGxvYWQ/LnJpc2tzPy5sZW5ndGggfX0gcmlza3Mgd2lsbFxyXG4gICAgICAgICAgYmUgYWRkZWQgdG8gdGhlIFJpc2sgUmVnaXN0ZXIuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIChjbGljayk9XCJzdWJtaXQoZmFsc2UpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmaW5hbFJpc2tzIDwgMVwiXHJcbiAgICAgICAgICBjbGFzcz1cImJsdWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEFkZCBSaXNrc1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIChjbGljayk9XCJzdWJtaXQodHJ1ZSlcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzaG93Q29tcGxldGVBc3Nlc3NtZW50QnV0dG9uXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmaW5hbFJpc2tzIDwgMVwiXHJcbiAgICAgICAgICBjbGFzcz1cImJsdWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEFkZCBSaXNrcyBBbmQgQ29tcGxldGUgQXNzZXNzbWVudFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XHJcbjwvZGl2PlxyXG4iXX0=
|