master-control 0.4.86 → 0.4.89

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.
Files changed (51) hide show
  1. package/esm2022/lib/age-date/age-date.component.mjs +3 -3
  2. package/esm2022/lib/amount-textbox/amount-textbox.component.mjs +3 -3
  3. package/esm2022/lib/annuity-calculator-radio/annuity-calculator-radio.component.mjs +19 -7
  4. package/esm2022/lib/annuity-premium-calculator/annuity-premium-calculator.component.mjs +13 -14
  5. package/esm2022/lib/autocomplete/autocomplete.component.mjs +3 -3
  6. package/esm2022/lib/checkbox/checkbox.component.mjs +3 -3
  7. package/esm2022/lib/dob/dob.component.mjs +3 -3
  8. package/esm2022/lib/email-with-domain/email-with-domain.component.mjs +14 -9
  9. package/esm2022/lib/file-preview/file-preview.component.mjs +10 -7
  10. package/esm2022/lib/iframe/iframe.component.mjs +10 -7
  11. package/esm2022/lib/info-textbox/info-textbox.component.mjs +14 -9
  12. package/esm2022/lib/master-control.service.mjs +4 -1
  13. package/esm2022/lib/mob-number/mob-number.component.mjs +3 -3
  14. package/esm2022/lib/multiple-select/multiple-select.component.mjs +3 -3
  15. package/esm2022/lib/otp-mob-number/otp-mob-number.component.mjs +14 -9
  16. package/esm2022/lib/otp-textbox/otp-textbox.component.mjs +15 -11
  17. package/esm2022/lib/pay-get-card/pay-get-card.component.mjs +3 -3
  18. package/esm2022/lib/radio/radio.component.mjs +3 -3
  19. package/esm2022/lib/search-multi-select/search-multi-select.component.mjs +18 -13
  20. package/esm2022/lib/select/select.component.mjs +3 -3
  21. package/esm2022/lib/select-textbox/select-textbox.component.mjs +3 -3
  22. package/esm2022/lib/subscript-textbox/subscript-textbox.component.mjs +14 -9
  23. package/esm2022/lib/suffix-textbox/suffix-textbox.component.mjs +15 -10
  24. package/esm2022/lib/tag-mob-number/tag-mob-number.component.mjs +15 -10
  25. package/esm2022/lib/textarea/textarea.component.mjs +3 -3
  26. package/esm2022/lib/textbox/textbox.component.mjs +3 -3
  27. package/esm2022/lib/textbox-with-image/textbox-with-image.component.mjs +14 -9
  28. package/esm2022/lib/textbox-with-text/textbox-with-text.component.mjs +14 -9
  29. package/esm2022/lib/textbox-with-underscore/textbox-with-underscore.component.mjs +14 -9
  30. package/esm2022/lib/toggle/toggle.component.mjs +3 -3
  31. package/esm2022/lib/upload/upload.component.mjs +3 -3
  32. package/fesm2022/master-control.mjs +185 -125
  33. package/fesm2022/master-control.mjs.map +1 -1
  34. package/lib/annuity-calculator-radio/annuity-calculator-radio.component.d.ts +4 -1
  35. package/lib/email-with-domain/email-with-domain.component.d.ts +3 -0
  36. package/lib/file-preview/file-preview.component.d.ts +3 -1
  37. package/lib/iframe/iframe.component.d.ts +3 -1
  38. package/lib/info-textbox/info-textbox.component.d.ts +3 -0
  39. package/lib/master-control.service.d.ts +1 -0
  40. package/lib/otp-mob-number/otp-mob-number.component.d.ts +3 -0
  41. package/lib/otp-textbox/otp-textbox.component.d.ts +3 -1
  42. package/lib/search-multi-select/search-multi-select.component.d.ts +3 -0
  43. package/lib/subscript-textbox/subscript-textbox.component.d.ts +3 -0
  44. package/lib/suffix-textbox/suffix-textbox.component.d.ts +3 -0
  45. package/lib/tag-mob-number/tag-mob-number.component.d.ts +3 -0
  46. package/lib/textbox-with-image/textbox-with-image.component.d.ts +3 -0
  47. package/lib/textbox-with-text/textbox-with-text.component.d.ts +3 -0
  48. package/lib/textbox-with-underscore/textbox-with-underscore.component.d.ts +3 -0
  49. package/master-control-0.4.89.tgz +0 -0
  50. package/package.json +1 -1
  51. package/master-control-0.4.86.tgz +0 -0
@@ -2,9 +2,11 @@ import { CommonModule } from '@angular/common';
2
2
  import { Component, input, Output, EventEmitter } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/platform-browser";
5
- import * as i2 from "@angular/common";
5
+ import * as i2 from "../master-control.service";
6
+ import * as i3 from "@angular/common";
6
7
  export class FilePreviewComponent {
7
8
  sanitizer;
9
+ masterService;
8
10
  field = input.required();
9
11
  file = input(null);
10
12
  closed = new EventEmitter();
@@ -12,8 +14,9 @@ export class FilePreviewComponent {
12
14
  fileObjectUrl = '';
13
15
  textContent = '';
14
16
  safeFileUrl = null;
15
- constructor(sanitizer) {
17
+ constructor(sanitizer, masterService) {
16
18
  this.sanitizer = sanitizer;
19
+ this.masterService = masterService;
17
20
  }
18
21
  isImage() {
19
22
  return this.file()?.type.startsWith('image/') || false;
@@ -82,13 +85,13 @@ export class FilePreviewComponent {
82
85
  document.body.removeChild(link);
83
86
  setTimeout(() => URL.revokeObjectURL(url), 100);
84
87
  }
85
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilePreviewComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
86
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: FilePreviewComponent, isStandalone: true, selector: "lib-file-preview", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, file: { classPropertyName: "file", publicName: "file", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "<div class=\"file-preview-modal\" \n *ngIf=\"field() && field()?.isVisible\"\n [id]=\"field()?.fieldName + '_preview'\"\n (click)=\"onBackdropClick($event)\"\n (keydown.escape)=\"closePreview()\"\n [ngStyle]=\"{\n '--modal-background': field()?.previewStyle?.modalBackground || 'rgba(0, 0, 0, 0.9)',\n '--modal-z-index': field()?.previewStyle?.zIndex || '10000',\n '--modal-width': field()?.previewStyle?.width || '100%',\n '--modal-height': field()?.previewStyle?.height || '100%'\n }\">\n \n <!-- Image Preview -->\n <div *ngIf=\"isImage()\" \n class=\"preview-container image-container\"\n [id]=\"field()?.fieldName + '_image_container'\"\n [ngStyle]=\"{\n '--image-container-background': field()?.previewStyle?.imageContainerBackground || 'transparent',\n '--image-container-border-radius': field()?.previewStyle?.imageContainerBorderRadius || '8px',\n '--image-container-padding': field()?.previewStyle?.imageContainerPadding || '20px',\n '--image-container-margin': field()?.previewStyle?.imageContainerMargin || '0'\n }\">\n \n <button class=\"close-btn\" \n type=\"button\"\n [id]=\"field()?.fieldName + '_close_btn'\"\n (click)=\"closePreview()\" \n [title]=\"field()?.previewStyle?.closeBtnTitle || 'Close'\"\n [ngStyle]=\"{\n '--close-btn-background': field()?.previewStyle?.closeBtnBackground || 'rgba(255, 255, 255, 0.9)',\n '--close-btn-color': field()?.previewStyle?.closeBtnColor || '#000',\n '--close-btn-border-radius': field()?.previewStyle?.closeBtnBorderRadius || '50%',\n '--close-btn-font-size': field()?.previewStyle?.closeBtnFontSize || '20px',\n '--close-btn-font-weight': field()?.previewStyle?.closeBtnFontWeight || 'bold',\n '--close-btn-hover-background': field()?.previewStyle?.closeBtnHoverBackground || 'rgba(255, 255, 255, 1)'\n }\">&times;</button>\n \n <h3 class=\"file-title\"\n [ngStyle]=\"{\n '--title-color': field()?.previewStyle?.titleColor || '#fff',\n '--title-font-family': field()?.previewStyle?.titleFontFamily || 'Mulish',\n '--title-font-size': field()?.previewStyle?.titleFontSize || '18px',\n '--title-font-weight': field()?.previewStyle?.titleFontWeight || '600',\n '--title-margin': field()?.previewStyle?.titleMargin || '0 0 10px 0',\n '--title-padding': field()?.previewStyle?.titlePadding || '0 10px'\n }\">{{ file()?.name }}</h3>\n \n <img [src]=\"fileDataUrl\" \n [alt]=\"file()?.name\" \n [id]=\"field()?.fieldName + '_preview_image'\"\n class=\"preview-image\"\n [ngStyle]=\"{\n '--image-max-width': field()?.previewStyle?.imageMaxWidth || '100%',\n '--image-max-height': field()?.previewStyle?.imageMaxHeight || '80vh',\n '--image-border-radius': field()?.previewStyle?.imageBorderRadius || '8px',\n '--image-box-shadow': field()?.previewStyle?.imageBoxShadow || '0 4px 20px rgba(0,0,0,0.5)',\n '--image-object-fit': field()?.previewStyle?.imageObjectFit || 'contain'\n }\" />\n </div>\n\n <!-- PDF Preview -->\n <div *ngIf=\"isPdf()\" \n class=\"preview-container pdf-container\"\n [id]=\"field()?.fieldName + '_pdf_container'\"\n [ngStyle]=\"{\n '--pdf-container-background': field()?.previewStyle?.pdfContainerBackground || '#fff',\n '--pdf-container-border-radius': field()?.previewStyle?.pdfContainerBorderRadius || '8px',\n '--pdf-container-width': field()?.previewStyle?.pdfContainerWidth || '95vw',\n '--pdf-container-height': field()?.previewStyle?.pdfContainerHeight || '95vh'\n }\">\n \n <!-- Top-right action buttons -->\n <div class=\"pdf-actions-top-right\"\n [ngStyle]=\"{\n '--actions-top': field()?.previewStyle?.actionsTop || '15px',\n '--actions-right': field()?.previewStyle?.actionsRight || '15px',\n '--actions-gap': field()?.previewStyle?.actionsGap || '10px'\n }\">\n \n <button (click)=\"closePreview()\" \n type=\"button\"\n class=\"action-icon-btn close-btn\"\n [id]=\"field()?.fieldName + '_close_pdf'\"\n [title]=\"field()?.previewStyle?.closeBtnTitle || 'Close'\"\n [ngStyle]=\"{\n '--close-btn-background': field()?.previewStyle?.closeBtnBackground || 'rgba(255, 255, 255, 0.9)',\n '--close-btn-color': field()?.previewStyle?.closeBtnColor || '#000',\n '--close-btn-border-radius': field()?.previewStyle?.closeBtnBorderRadius || '50%',\n '--close-btn-font-size': field()?.previewStyle?.closeBtnFontSize || '20px',\n '--close-btn-font-weight': field()?.previewStyle?.closeBtnFontWeight || 'bold',\n '--close-btn-hover-background': field()?.previewStyle?.closeBtnHoverBackground || 'rgba(255, 255, 255, 1)'\n }\">&times;</button>\n </div>\n \n <!-- File title -->\n <h3 class=\"file-title pdf-title\"\n [ngStyle]=\"{\n '--pdf-title-color': field()?.previewStyle?.pdfTitleColor || '#333',\n '--pdf-title-font-family': field()?.previewStyle?.pdfTitleFontFamily || 'Mulish',\n '--pdf-title-font-size': field()?.previewStyle?.pdfTitleFontSize || '16px',\n '--pdf-title-font-weight': field()?.previewStyle?.pdfTitleFontWeight || '600',\n '--pdf-title-margin': field()?.previewStyle?.pdfTitleMargin || '0px 20px 10px 20px',\n '--pdf-title-padding': field()?.previewStyle?.pdfTitlePadding || '0'\n }\">{{ file()?.name }}</h3>\n \n <iframe [src]=\"safeFileUrl\" \n [title]=\"file()?.name\" \n [id]=\"field()?.fieldName + '_pdf_iframe'\"\n class=\"pdf-iframe\"\n [ngStyle]=\"{\n '--iframe-border': field()?.previewStyle?.iframeBorder || 'none',\n '--iframe-border-radius': field()?.previewStyle?.iframeBorderRadius || '0',\n '--iframe-width': field()?.previewStyle?.iframeWidth || '100%',\n '--iframe-height': field()?.previewStyle?.iframeHeight || 'calc(100% - 80px)',\n '--iframe-min-height': field()?.previewStyle?.iframeMinHeight || '600px'\n }\"></iframe>\n </div>\n\n <!-- Text Preview -->\n <div *ngIf=\"isText()\" \n class=\"preview-container text-container\"\n [id]=\"field()?.fieldName + '_text_container'\"\n [ngStyle]=\"{\n '--text-container-background': field()?.previewStyle?.textContainerBackground || '#fff',\n '--text-container-border-radius': field()?.previewStyle?.textContainerBorderRadius || '8px',\n '--text-container-width': field()?.previewStyle?.textContainerWidth || '95vw',\n '--text-container-height': field()?.previewStyle?.textContainerHeight || '95vh'\n }\">\n \n <div class=\"text-header\"\n [id]=\"field()?.fieldName + '_text_header'\"\n [ngStyle]=\"{\n '--text-header-background': field()?.previewStyle?.textHeaderBackground || '#f8f9fa',\n '--text-header-border-color': field()?.previewStyle?.textHeaderBorderColor || '#dee2e6',\n '--text-header-padding': field()?.previewStyle?.textHeaderPadding || '15px 20px'\n }\">\n \n <h3 class=\"file-title\"\n [ngStyle]=\"{\n '--text-title-color': field()?.previewStyle?.textTitleColor || '#333',\n '--text-title-font-family': field()?.previewStyle?.textTitleFontFamily || 'Mulish',\n '--text-title-font-size': field()?.previewStyle?.textTitleFontSize || '16px',\n '--text-title-font-weight': field()?.previewStyle?.textTitleFontWeight || '600',\n '--text-title-margin': field()?.previewStyle?.textTitleMargin || '0'\n }\">{{ file()?.name }}</h3>\n \n <button (click)=\"closePreview()\" \n type=\"button\"\n class=\"btn btn-danger\"\n [id]=\"field()?.fieldName + '_close_text'\"\n [ngStyle]=\"{\n '--btn-danger-background': field()?.previewStyle?.btnDangerBackground || '#dc3545',\n '--btn-danger-color': field()?.previewStyle?.btnDangerColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.closeText || 'Close' }}</button>\n </div>\n \n <pre class=\"text-content\"\n [id]=\"field()?.fieldName + '_text_content'\"\n [ngStyle]=\"{\n '--text-content-background': field()?.previewStyle?.textContentBackground || '#fff',\n '--text-content-color': field()?.previewStyle?.textContentColor || '#333',\n '--text-content-font-family': field()?.previewStyle?.textContentFontFamily || 'Consolas, Monaco, Courier New, monospace',\n '--text-content-font-size': field()?.previewStyle?.textContentFontSize || '14px',\n '--text-content-line-height': field()?.previewStyle?.textContentLineHeight || '1.5',\n '--text-content-padding': field()?.previewStyle?.textContentPadding || '20px',\n '--text-content-margin': field()?.previewStyle?.textContentMargin || '0'\n }\">{{ textContent }}</pre>\n </div>\n\n <!-- Unsupported File -->\n <div *ngIf=\"isUnsupported()\" \n class=\"preview-container unsupported-container\"\n [id]=\"field()?.fieldName + '_unsupported_container'\"\n [ngStyle]=\"{\n '--unsupported-background': field()?.previewStyle?.unsupportedBackground || '#fff',\n '--unsupported-border-radius': field()?.previewStyle?.unsupportedBorderRadius || '8px',\n '--unsupported-padding': field()?.previewStyle?.unsupportedPadding || '40px',\n '--unsupported-min-width': field()?.previewStyle?.unsupportedMinWidth || '300px'\n }\">\n \n <div class=\"unsupported-content\">\n <h3 [ngStyle]=\"{\n '--unsupported-title-color': field()?.previewStyle?.unsupportedTitleColor || '#333',\n '--unsupported-title-font-family': field()?.previewStyle?.unsupportedTitleFontFamily || 'Mulish',\n '--unsupported-title-font-size': field()?.previewStyle?.unsupportedTitleFontSize || '18px',\n '--unsupported-title-font-weight': field()?.previewStyle?.unsupportedTitleFontWeight || '600',\n '--unsupported-title-margin': field()?.previewStyle?.unsupportedTitleMargin || '0 0 20px 0'\n }\">{{ file()?.name }}</h3>\n \n <p [ngStyle]=\"{\n '--unsupported-text-color': field()?.previewStyle?.unsupportedTextColor || '#666',\n '--unsupported-text-font-size': field()?.previewStyle?.unsupportedTextFontSize || '14px',\n '--unsupported-text-margin': field()?.previewStyle?.unsupportedTextMargin || '0 0 30px 0'\n }\">{{ field()?.previewStyle?.unsupportedMessage || 'Preview not available for this file type' }}</p>\n \n <div class=\"unsupported-actions\"\n [ngStyle]=\"{\n '--actions-gap': field()?.previewStyle?.actionsGap || '15px',\n '--actions-justify': field()?.previewStyle?.actionsJustify || 'center'\n }\">\n \n <button (click)=\"downloadFile()\" \n type=\"button\"\n class=\"btn btn-primary\"\n [id]=\"field()?.fieldName + '_download'\"\n [ngStyle]=\"{\n '--btn-primary-background': field()?.previewStyle?.btnPrimaryBackground || '#007bff',\n '--btn-primary-color': field()?.previewStyle?.btnPrimaryColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.downloadText || 'Download' }}</button>\n \n <button (click)=\"closePreview()\" \n type=\"button\"\n class=\"btn btn-secondary\"\n [id]=\"field()?.fieldName + '_close_unsupported'\"\n [ngStyle]=\"{\n '--btn-secondary-background': field()?.previewStyle?.btnSecondaryBackground || '#6c757d',\n '--btn-secondary-color': field()?.previewStyle?.btnSecondaryColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.closeText || 'Close' }}</button>\n </div>\n </div>\n </div>\n</div>", styles: [".file-preview-modal{position:fixed;top:0;left:0;width:var(--modal-width, 100%);height:var(--modal-height, 100%);background:var(--modal-background, rgba(0, 0, 0, .9));z-index:var(--modal-z-index, 10000);display:flex;align-items:center;justify-content:center;overflow:auto}.preview-container{position:relative;max-width:90%;max-height:90%;display:flex;flex-direction:column;align-items:center;background:var(--image-container-background, transparent);border-radius:var(--image-container-border-radius, 8px);padding:var(--image-container-padding, 10px);margin:var(--image-container-margin, 0)}.close-btn{position:absolute;top:0;right:10px;width:40px!important;height:40px!important;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;background:var(--close-btn-background, rgba(255, 255, 255, .9));color:var(--close-btn-color, #000);border-radius:var(--close-btn-border-radius, 50%);font-size:var(--close-btn-font-size, 20px);font-weight:var(--close-btn-font-weight, bold);z-index:1001;box-shadow:1px 0 4px 1px #c7c7c7}.close-btn:hover{background:var(--close-btn-hover-background, rgba(255, 255, 255, 1))}.file-title{color:var(--title-color, #000000);font-family:var(--title-font-family, \"Mulish\");font-size:var(--title-font-size, 18px);font-weight:var(--title-font-weight, 600);margin:var(--title-margin, 0 0 10px 0);padding:var(--title-padding, 0 10px);text-align:center;word-break:break-all}.preview-image{max-width:var(--image-max-width, 100%);max-height:var(--image-max-height, 80vh);object-fit:var(--image-object-fit, contain);border-radius:var(--image-border-radius, 4px);box-shadow:var(--image-box-shadow, 0 4px 20px rgba(0, 0, 0, .3))}.preview-content{width:100%;height:80vh;border:none;border-radius:var(--content-border-radius, 4px)}.text-content{background:var(--text-background, #fff);color:var(--text-color, #000);padding:var(--text-padding, 20px);border-radius:var(--text-border-radius, 4px);max-width:var(--text-max-width, 800px);max-height:var(--text-max-height, 70vh);overflow:auto;white-space:pre-wrap;font-family:var(--text-font-family, \"Courier New, monospace\")}.action-buttons{margin-top:20px;display:flex;gap:10px}.action-btn{padding:var(--btn-padding, 8px 16px);background:var(--btn-background, #007bff);color:var(--btn-color, #fff);border:none;border-radius:var(--btn-border-radius, 4px);cursor:pointer;font-size:var(--btn-font-size, 14px)}.action-btn:hover{background:var(--btn-hover-background, #0056b3)}.unsupported-content{text-align:center;color:var(--unsupported-color, #fff);padding:var(--unsupported-padding, 40px)}.pdf-iframe{width:var(--iframe-width, 100%);height:var(--iframe-height, 80vh);min-height:var(--iframe-min-height, 600px);border:var(--iframe-border, none);border-radius:var(--iframe-border-radius, 0)}.pdf-container{width:var(--pdf-container-width, 95vw);height:var(--pdf-container-height, 95vh);background:var(--pdf-container-background, #fff);border-radius:var(--pdf-container-border-radius, 8px);display:flex;flex-direction:column;overflow:hidden}.pdf-header{background:var(--pdf-header-background, #f8f9fa);border-bottom:1px solid var(--pdf-header-border-color, #dee2e6);padding:var(--pdf-header-padding, 15px 20px);flex-shrink:0}.pdf-actions{display:flex;gap:10px;margin-top:10px}.btn{padding:var(--btn-padding, 8px 16px);border:none;border-radius:var(--btn-border-radius, 4px);cursor:pointer;font-size:var(--btn-font-size, 14px);font-weight:var(--btn-font-weight, 400);text-decoration:none;display:inline-block}.btn-primary{background:var(--btn-primary-background, #007bff);color:var(--btn-primary-color, #fff)}.btn-primary:hover{background:var(--btn-primary-hover-background, #0056b3)}.btn-danger{background:var(--btn-danger-background, #dc3545);color:var(--btn-danger-color, #fff)}.btn-danger:hover{background:var(--btn-danger-hover-background, #c82333)}.pdf-actions-top-right{position:absolute;top:var(--actions-top, 15px);right:var(--actions-right, 15px);display:flex;gap:var(--actions-gap, 10px);z-index:1001}.action-icon-btn{width:40px;height:40px;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--icon-btn-border-radius, 50%);font-size:var(--icon-btn-font-size, 16px);transition:background-color .2s ease}.open-new-tab-btn{background:var(--icon-btn-background, rgba(255, 255, 255, .9));color:var(--icon-btn-color, #007bff)}.open-new-tab-btn:hover{background:var(--icon-btn-hover-background, rgba(255, 255, 255, 1))}.pdf-title{color:var(--pdf-title-color, #333);font-family:var(--pdf-title-font-family, \"Mulish\");font-size:var(--pdf-title-font-size, 16px);font-weight:var(--pdf-title-font-weight, 600);margin:var(--pdf-title-margin, 0 20px 10px 20px);padding:var(--pdf-title-padding, 0);text-align:center}.pdf-iframe{width:var(--iframe-width, 100%);height:var(--iframe-height, calc(100% - 80px) );min-height:var(--iframe-min-height, 600px);border:var(--iframe-border, none);border-radius:var(--iframe-border-radius, 0);margin:0 20px 20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
88
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilePreviewComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.MasterControlService }], target: i0.ɵɵFactoryTarget.Component });
89
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: FilePreviewComponent, isStandalone: true, selector: "lib-file-preview", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, file: { classPropertyName: "file", publicName: "file", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "<div class=\"file-preview-modal\"\n *ngIf=\"field() && field()?.isVisible\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_preview'\"\n (click)=\"onBackdropClick($event)\"\n (keydown.escape)=\"closePreview()\"\n [ngStyle]=\"{\n '--modal-background': field()?.previewStyle?.modalBackground || 'rgba(0, 0, 0, 0.9)',\n '--modal-z-index': field()?.previewStyle?.zIndex || '10000',\n '--modal-width': field()?.previewStyle?.width || '100%',\n '--modal-height': field()?.previewStyle?.height || '100%'\n }\">\n\n <!-- Image Preview -->\n <div *ngIf=\"isImage()\"\n class=\"preview-container image-container\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_image_container'\"\n [ngStyle]=\"{\n '--image-container-background': field()?.previewStyle?.imageContainerBackground || 'transparent',\n '--image-container-border-radius': field()?.previewStyle?.imageContainerBorderRadius || '8px',\n '--image-container-padding': field()?.previewStyle?.imageContainerPadding || '20px',\n '--image-container-margin': field()?.previewStyle?.imageContainerMargin || '0'\n }\">\n\n <button class=\"close-btn\"\n type=\"button\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_close_btn'\"\n (click)=\"closePreview()\"\n [title]=\"field()?.previewStyle?.closeBtnTitle || 'Close'\"\n [ngStyle]=\"{\n '--close-btn-background': field()?.previewStyle?.closeBtnBackground || 'rgba(255, 255, 255, 0.9)',\n '--close-btn-color': field()?.previewStyle?.closeBtnColor || '#000',\n '--close-btn-border-radius': field()?.previewStyle?.closeBtnBorderRadius || '50%',\n '--close-btn-font-size': field()?.previewStyle?.closeBtnFontSize || '20px',\n '--close-btn-font-weight': field()?.previewStyle?.closeBtnFontWeight || 'bold',\n '--close-btn-hover-background': field()?.previewStyle?.closeBtnHoverBackground || 'rgba(255, 255, 255, 1)'\n }\">&times;</button>\n\n <h3 class=\"file-title\"\n [ngStyle]=\"{\n '--title-color': field()?.previewStyle?.titleColor || '#fff',\n '--title-font-family': field()?.previewStyle?.titleFontFamily || 'Mulish',\n '--title-font-size': field()?.previewStyle?.titleFontSize || '18px',\n '--title-font-weight': field()?.previewStyle?.titleFontWeight || '600',\n '--title-margin': field()?.previewStyle?.titleMargin || '0 0 10px 0',\n '--title-padding': field()?.previewStyle?.titlePadding || '0 10px'\n }\">{{ file()?.name }}</h3>\n\n <img [src]=\"fileDataUrl\"\n [alt]=\"file()?.name\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_preview_image'\"\n class=\"preview-image\"\n [ngStyle]=\"{\n '--image-max-width': field()?.previewStyle?.imageMaxWidth || '100%',\n '--image-max-height': field()?.previewStyle?.imageMaxHeight || '80vh',\n '--image-border-radius': field()?.previewStyle?.imageBorderRadius || '8px',\n '--image-box-shadow': field()?.previewStyle?.imageBoxShadow || '0 4px 20px rgba(0,0,0,0.5)',\n '--image-object-fit': field()?.previewStyle?.imageObjectFit || 'contain'\n }\" />\n </div>\n\n <!-- PDF Preview -->\n <div *ngIf=\"isPdf()\"\n class=\"preview-container pdf-container\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_pdf_container'\"\n [ngStyle]=\"{\n '--pdf-container-background': field()?.previewStyle?.pdfContainerBackground || '#fff',\n '--pdf-container-border-radius': field()?.previewStyle?.pdfContainerBorderRadius || '8px',\n '--pdf-container-width': field()?.previewStyle?.pdfContainerWidth || '95vw',\n '--pdf-container-height': field()?.previewStyle?.pdfContainerHeight || '95vh'\n }\">\n\n <!-- Top-right action buttons -->\n <div class=\"pdf-actions-top-right\"\n [ngStyle]=\"{\n '--actions-top': field()?.previewStyle?.actionsTop || '15px',\n '--actions-right': field()?.previewStyle?.actionsRight || '15px',\n '--actions-gap': field()?.previewStyle?.actionsGap || '10px'\n }\">\n\n <button (click)=\"closePreview()\"\n type=\"button\"\n class=\"action-icon-btn close-btn\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_close_pdf'\"\n [title]=\"field()?.previewStyle?.closeBtnTitle || 'Close'\"\n [ngStyle]=\"{\n '--close-btn-background': field()?.previewStyle?.closeBtnBackground || 'rgba(255, 255, 255, 0.9)',\n '--close-btn-color': field()?.previewStyle?.closeBtnColor || '#000',\n '--close-btn-border-radius': field()?.previewStyle?.closeBtnBorderRadius || '50%',\n '--close-btn-font-size': field()?.previewStyle?.closeBtnFontSize || '20px',\n '--close-btn-font-weight': field()?.previewStyle?.closeBtnFontWeight || 'bold',\n '--close-btn-hover-background': field()?.previewStyle?.closeBtnHoverBackground || 'rgba(255, 255, 255, 1)'\n }\">&times;</button>\n </div>\n\n <!-- File title -->\n <h3 class=\"file-title pdf-title\"\n [ngStyle]=\"{\n '--pdf-title-color': field()?.previewStyle?.pdfTitleColor || '#333',\n '--pdf-title-font-family': field()?.previewStyle?.pdfTitleFontFamily || 'Mulish',\n '--pdf-title-font-size': field()?.previewStyle?.pdfTitleFontSize || '16px',\n '--pdf-title-font-weight': field()?.previewStyle?.pdfTitleFontWeight || '600',\n '--pdf-title-margin': field()?.previewStyle?.pdfTitleMargin || '0px 20px 10px 20px',\n '--pdf-title-padding': field()?.previewStyle?.pdfTitlePadding || '0'\n }\">{{ file()?.name }}</h3>\n\n <iframe [src]=\"safeFileUrl\"\n [title]=\"file()?.name\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_pdf_iframe'\"\n class=\"pdf-iframe\"\n [ngStyle]=\"{\n '--iframe-border': field()?.previewStyle?.iframeBorder || 'none',\n '--iframe-border-radius': field()?.previewStyle?.iframeBorderRadius || '0',\n '--iframe-width': field()?.previewStyle?.iframeWidth || '100%',\n '--iframe-height': field()?.previewStyle?.iframeHeight || 'calc(100% - 80px)',\n '--iframe-min-height': field()?.previewStyle?.iframeMinHeight || '600px'\n }\"></iframe>\n </div>\n\n <!-- Text Preview -->\n <div *ngIf=\"isText()\"\n class=\"preview-container text-container\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_text_container'\"\n [ngStyle]=\"{\n '--text-container-background': field()?.previewStyle?.textContainerBackground || '#fff',\n '--text-container-border-radius': field()?.previewStyle?.textContainerBorderRadius || '8px',\n '--text-container-width': field()?.previewStyle?.textContainerWidth || '95vw',\n '--text-container-height': field()?.previewStyle?.textContainerHeight || '95vh'\n }\">\n\n <div class=\"text-header\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_text_header'\"\n [ngStyle]=\"{\n '--text-header-background': field()?.previewStyle?.textHeaderBackground || '#f8f9fa',\n '--text-header-border-color': field()?.previewStyle?.textHeaderBorderColor || '#dee2e6',\n '--text-header-padding': field()?.previewStyle?.textHeaderPadding || '15px 20px'\n }\">\n\n <h3 class=\"file-title\"\n [ngStyle]=\"{\n '--text-title-color': field()?.previewStyle?.textTitleColor || '#333',\n '--text-title-font-family': field()?.previewStyle?.textTitleFontFamily || 'Mulish',\n '--text-title-font-size': field()?.previewStyle?.textTitleFontSize || '16px',\n '--text-title-font-weight': field()?.previewStyle?.textTitleFontWeight || '600',\n '--text-title-margin': field()?.previewStyle?.textTitleMargin || '0'\n }\">{{ file()?.name }}</h3>\n\n <button (click)=\"closePreview()\"\n type=\"button\"\n class=\"btn btn-danger\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_close_text'\"\n [ngStyle]=\"{\n '--btn-danger-background': field()?.previewStyle?.btnDangerBackground || '#dc3545',\n '--btn-danger-color': field()?.previewStyle?.btnDangerColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.closeText || 'Close' }}</button>\n </div>\n\n <pre class=\"text-content\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_text_content'\"\n [ngStyle]=\"{\n '--text-content-background': field()?.previewStyle?.textContentBackground || '#fff',\n '--text-content-color': field()?.previewStyle?.textContentColor || '#333',\n '--text-content-font-family': field()?.previewStyle?.textContentFontFamily || 'Consolas, Monaco, Courier New, monospace',\n '--text-content-font-size': field()?.previewStyle?.textContentFontSize || '14px',\n '--text-content-line-height': field()?.previewStyle?.textContentLineHeight || '1.5',\n '--text-content-padding': field()?.previewStyle?.textContentPadding || '20px',\n '--text-content-margin': field()?.previewStyle?.textContentMargin || '0'\n }\">{{ textContent }}</pre>\n </div>\n\n <!-- Unsupported File -->\n <div *ngIf=\"isUnsupported()\"\n class=\"preview-container unsupported-container\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_unsupported_container'\"\n [ngStyle]=\"{\n '--unsupported-background': field()?.previewStyle?.unsupportedBackground || '#fff',\n '--unsupported-border-radius': field()?.previewStyle?.unsupportedBorderRadius || '8px',\n '--unsupported-padding': field()?.previewStyle?.unsupportedPadding || '40px',\n '--unsupported-min-width': field()?.previewStyle?.unsupportedMinWidth || '300px'\n }\">\n\n <div class=\"unsupported-content\">\n <h3 [ngStyle]=\"{\n '--unsupported-title-color': field()?.previewStyle?.unsupportedTitleColor || '#333',\n '--unsupported-title-font-family': field()?.previewStyle?.unsupportedTitleFontFamily || 'Mulish',\n '--unsupported-title-font-size': field()?.previewStyle?.unsupportedTitleFontSize || '18px',\n '--unsupported-title-font-weight': field()?.previewStyle?.unsupportedTitleFontWeight || '600',\n '--unsupported-title-margin': field()?.previewStyle?.unsupportedTitleMargin || '0 0 20px 0'\n }\">{{ file()?.name }}</h3>\n\n <p [ngStyle]=\"{\n '--unsupported-text-color': field()?.previewStyle?.unsupportedTextColor || '#666',\n '--unsupported-text-font-size': field()?.previewStyle?.unsupportedTextFontSize || '14px',\n '--unsupported-text-margin': field()?.previewStyle?.unsupportedTextMargin || '0 0 30px 0'\n }\">{{ field()?.previewStyle?.unsupportedMessage || 'Preview not available for this file type' }}</p>\n\n <div class=\"unsupported-actions\"\n [ngStyle]=\"{\n '--actions-gap': field()?.previewStyle?.actionsGap || '15px',\n '--actions-justify': field()?.previewStyle?.actionsJustify || 'center'\n }\">\n\n <button (click)=\"downloadFile()\"\n type=\"button\"\n class=\"btn btn-primary\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_download'\"\n [ngStyle]=\"{\n '--btn-primary-background': field()?.previewStyle?.btnPrimaryBackground || '#007bff',\n '--btn-primary-color': field()?.previewStyle?.btnPrimaryColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.downloadText || 'Download' }}</button>\n\n <button (click)=\"closePreview()\"\n type=\"button\"\n class=\"btn btn-secondary\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_close_unsupported'\"\n [ngStyle]=\"{\n '--btn-secondary-background': field()?.previewStyle?.btnSecondaryBackground || '#6c757d',\n '--btn-secondary-color': field()?.previewStyle?.btnSecondaryColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.closeText || 'Close' }}</button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".file-preview-modal{position:fixed;top:0;left:0;width:var(--modal-width, 100%);height:var(--modal-height, 100%);background:var(--modal-background, rgba(0, 0, 0, .9));z-index:var(--modal-z-index, 10000);display:flex;align-items:center;justify-content:center;overflow:auto}.preview-container{position:relative;max-width:90%;max-height:90%;display:flex;flex-direction:column;align-items:center;background:var(--image-container-background, transparent);border-radius:var(--image-container-border-radius, 8px);padding:var(--image-container-padding, 10px);margin:var(--image-container-margin, 0)}.close-btn{position:absolute;top:0;right:10px;width:40px!important;height:40px!important;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;background:var(--close-btn-background, rgba(255, 255, 255, .9));color:var(--close-btn-color, #000);border-radius:var(--close-btn-border-radius, 50%);font-size:var(--close-btn-font-size, 20px);font-weight:var(--close-btn-font-weight, bold);z-index:1001;box-shadow:1px 0 4px 1px #c7c7c7}.close-btn:hover{background:var(--close-btn-hover-background, rgba(255, 255, 255, 1))}.file-title{color:var(--title-color, #000000);font-family:var(--title-font-family, \"Mulish\");font-size:var(--title-font-size, 18px);font-weight:var(--title-font-weight, 600);margin:var(--title-margin, 0 0 10px 0);padding:var(--title-padding, 0 10px);text-align:center;word-break:break-all}.preview-image{max-width:var(--image-max-width, 100%);max-height:var(--image-max-height, 80vh);object-fit:var(--image-object-fit, contain);border-radius:var(--image-border-radius, 4px);box-shadow:var(--image-box-shadow, 0 4px 20px rgba(0, 0, 0, .3))}.preview-content{width:100%;height:80vh;border:none;border-radius:var(--content-border-radius, 4px)}.text-content{background:var(--text-background, #fff);color:var(--text-color, #000);padding:var(--text-padding, 20px);border-radius:var(--text-border-radius, 4px);max-width:var(--text-max-width, 800px);max-height:var(--text-max-height, 70vh);overflow:auto;white-space:pre-wrap;font-family:var(--text-font-family, \"Courier New, monospace\")}.action-buttons{margin-top:20px;display:flex;gap:10px}.action-btn{padding:var(--btn-padding, 8px 16px);background:var(--btn-background, #007bff);color:var(--btn-color, #fff);border:none;border-radius:var(--btn-border-radius, 4px);cursor:pointer;font-size:var(--btn-font-size, 14px)}.action-btn:hover{background:var(--btn-hover-background, #0056b3)}.unsupported-content{text-align:center;color:var(--unsupported-color, #fff);padding:var(--unsupported-padding, 40px)}.pdf-iframe{width:var(--iframe-width, 100%);height:var(--iframe-height, 80vh);min-height:var(--iframe-min-height, 600px);border:var(--iframe-border, none);border-radius:var(--iframe-border-radius, 0)}.pdf-container{width:var(--pdf-container-width, 95vw);height:var(--pdf-container-height, 95vh);background:var(--pdf-container-background, #fff);border-radius:var(--pdf-container-border-radius, 8px);display:flex;flex-direction:column;overflow:hidden}.pdf-header{background:var(--pdf-header-background, #f8f9fa);border-bottom:1px solid var(--pdf-header-border-color, #dee2e6);padding:var(--pdf-header-padding, 15px 20px);flex-shrink:0}.pdf-actions{display:flex;gap:10px;margin-top:10px}.btn{padding:var(--btn-padding, 8px 16px);border:none;border-radius:var(--btn-border-radius, 4px);cursor:pointer;font-size:var(--btn-font-size, 14px);font-weight:var(--btn-font-weight, 400);text-decoration:none;display:inline-block}.btn-primary{background:var(--btn-primary-background, #007bff);color:var(--btn-primary-color, #fff)}.btn-primary:hover{background:var(--btn-primary-hover-background, #0056b3)}.btn-danger{background:var(--btn-danger-background, #dc3545);color:var(--btn-danger-color, #fff)}.btn-danger:hover{background:var(--btn-danger-hover-background, #c82333)}.pdf-actions-top-right{position:absolute;top:var(--actions-top, 15px);right:var(--actions-right, 15px);display:flex;gap:var(--actions-gap, 10px);z-index:1001}.action-icon-btn{width:40px;height:40px;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--icon-btn-border-radius, 50%);font-size:var(--icon-btn-font-size, 16px);transition:background-color .2s ease}.open-new-tab-btn{background:var(--icon-btn-background, rgba(255, 255, 255, .9));color:var(--icon-btn-color, #007bff)}.open-new-tab-btn:hover{background:var(--icon-btn-hover-background, rgba(255, 255, 255, 1))}.pdf-title{color:var(--pdf-title-color, #333);font-family:var(--pdf-title-font-family, \"Mulish\");font-size:var(--pdf-title-font-size, 16px);font-weight:var(--pdf-title-font-weight, 600);margin:var(--pdf-title-margin, 0 20px 10px 20px);padding:var(--pdf-title-padding, 0);text-align:center}.pdf-iframe{width:var(--iframe-width, 100%);height:var(--iframe-height, calc(100% - 80px) );min-height:var(--iframe-min-height, 600px);border:var(--iframe-border, none);border-radius:var(--iframe-border-radius, 0);margin:0 20px 20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
87
90
  }
88
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilePreviewComponent, decorators: [{
89
92
  type: Component,
90
- args: [{ selector: 'lib-file-preview', standalone: true, imports: [CommonModule], template: "<div class=\"file-preview-modal\" \n *ngIf=\"field() && field()?.isVisible\"\n [id]=\"field()?.fieldName + '_preview'\"\n (click)=\"onBackdropClick($event)\"\n (keydown.escape)=\"closePreview()\"\n [ngStyle]=\"{\n '--modal-background': field()?.previewStyle?.modalBackground || 'rgba(0, 0, 0, 0.9)',\n '--modal-z-index': field()?.previewStyle?.zIndex || '10000',\n '--modal-width': field()?.previewStyle?.width || '100%',\n '--modal-height': field()?.previewStyle?.height || '100%'\n }\">\n \n <!-- Image Preview -->\n <div *ngIf=\"isImage()\" \n class=\"preview-container image-container\"\n [id]=\"field()?.fieldName + '_image_container'\"\n [ngStyle]=\"{\n '--image-container-background': field()?.previewStyle?.imageContainerBackground || 'transparent',\n '--image-container-border-radius': field()?.previewStyle?.imageContainerBorderRadius || '8px',\n '--image-container-padding': field()?.previewStyle?.imageContainerPadding || '20px',\n '--image-container-margin': field()?.previewStyle?.imageContainerMargin || '0'\n }\">\n \n <button class=\"close-btn\" \n type=\"button\"\n [id]=\"field()?.fieldName + '_close_btn'\"\n (click)=\"closePreview()\" \n [title]=\"field()?.previewStyle?.closeBtnTitle || 'Close'\"\n [ngStyle]=\"{\n '--close-btn-background': field()?.previewStyle?.closeBtnBackground || 'rgba(255, 255, 255, 0.9)',\n '--close-btn-color': field()?.previewStyle?.closeBtnColor || '#000',\n '--close-btn-border-radius': field()?.previewStyle?.closeBtnBorderRadius || '50%',\n '--close-btn-font-size': field()?.previewStyle?.closeBtnFontSize || '20px',\n '--close-btn-font-weight': field()?.previewStyle?.closeBtnFontWeight || 'bold',\n '--close-btn-hover-background': field()?.previewStyle?.closeBtnHoverBackground || 'rgba(255, 255, 255, 1)'\n }\">&times;</button>\n \n <h3 class=\"file-title\"\n [ngStyle]=\"{\n '--title-color': field()?.previewStyle?.titleColor || '#fff',\n '--title-font-family': field()?.previewStyle?.titleFontFamily || 'Mulish',\n '--title-font-size': field()?.previewStyle?.titleFontSize || '18px',\n '--title-font-weight': field()?.previewStyle?.titleFontWeight || '600',\n '--title-margin': field()?.previewStyle?.titleMargin || '0 0 10px 0',\n '--title-padding': field()?.previewStyle?.titlePadding || '0 10px'\n }\">{{ file()?.name }}</h3>\n \n <img [src]=\"fileDataUrl\" \n [alt]=\"file()?.name\" \n [id]=\"field()?.fieldName + '_preview_image'\"\n class=\"preview-image\"\n [ngStyle]=\"{\n '--image-max-width': field()?.previewStyle?.imageMaxWidth || '100%',\n '--image-max-height': field()?.previewStyle?.imageMaxHeight || '80vh',\n '--image-border-radius': field()?.previewStyle?.imageBorderRadius || '8px',\n '--image-box-shadow': field()?.previewStyle?.imageBoxShadow || '0 4px 20px rgba(0,0,0,0.5)',\n '--image-object-fit': field()?.previewStyle?.imageObjectFit || 'contain'\n }\" />\n </div>\n\n <!-- PDF Preview -->\n <div *ngIf=\"isPdf()\" \n class=\"preview-container pdf-container\"\n [id]=\"field()?.fieldName + '_pdf_container'\"\n [ngStyle]=\"{\n '--pdf-container-background': field()?.previewStyle?.pdfContainerBackground || '#fff',\n '--pdf-container-border-radius': field()?.previewStyle?.pdfContainerBorderRadius || '8px',\n '--pdf-container-width': field()?.previewStyle?.pdfContainerWidth || '95vw',\n '--pdf-container-height': field()?.previewStyle?.pdfContainerHeight || '95vh'\n }\">\n \n <!-- Top-right action buttons -->\n <div class=\"pdf-actions-top-right\"\n [ngStyle]=\"{\n '--actions-top': field()?.previewStyle?.actionsTop || '15px',\n '--actions-right': field()?.previewStyle?.actionsRight || '15px',\n '--actions-gap': field()?.previewStyle?.actionsGap || '10px'\n }\">\n \n <button (click)=\"closePreview()\" \n type=\"button\"\n class=\"action-icon-btn close-btn\"\n [id]=\"field()?.fieldName + '_close_pdf'\"\n [title]=\"field()?.previewStyle?.closeBtnTitle || 'Close'\"\n [ngStyle]=\"{\n '--close-btn-background': field()?.previewStyle?.closeBtnBackground || 'rgba(255, 255, 255, 0.9)',\n '--close-btn-color': field()?.previewStyle?.closeBtnColor || '#000',\n '--close-btn-border-radius': field()?.previewStyle?.closeBtnBorderRadius || '50%',\n '--close-btn-font-size': field()?.previewStyle?.closeBtnFontSize || '20px',\n '--close-btn-font-weight': field()?.previewStyle?.closeBtnFontWeight || 'bold',\n '--close-btn-hover-background': field()?.previewStyle?.closeBtnHoverBackground || 'rgba(255, 255, 255, 1)'\n }\">&times;</button>\n </div>\n \n <!-- File title -->\n <h3 class=\"file-title pdf-title\"\n [ngStyle]=\"{\n '--pdf-title-color': field()?.previewStyle?.pdfTitleColor || '#333',\n '--pdf-title-font-family': field()?.previewStyle?.pdfTitleFontFamily || 'Mulish',\n '--pdf-title-font-size': field()?.previewStyle?.pdfTitleFontSize || '16px',\n '--pdf-title-font-weight': field()?.previewStyle?.pdfTitleFontWeight || '600',\n '--pdf-title-margin': field()?.previewStyle?.pdfTitleMargin || '0px 20px 10px 20px',\n '--pdf-title-padding': field()?.previewStyle?.pdfTitlePadding || '0'\n }\">{{ file()?.name }}</h3>\n \n <iframe [src]=\"safeFileUrl\" \n [title]=\"file()?.name\" \n [id]=\"field()?.fieldName + '_pdf_iframe'\"\n class=\"pdf-iframe\"\n [ngStyle]=\"{\n '--iframe-border': field()?.previewStyle?.iframeBorder || 'none',\n '--iframe-border-radius': field()?.previewStyle?.iframeBorderRadius || '0',\n '--iframe-width': field()?.previewStyle?.iframeWidth || '100%',\n '--iframe-height': field()?.previewStyle?.iframeHeight || 'calc(100% - 80px)',\n '--iframe-min-height': field()?.previewStyle?.iframeMinHeight || '600px'\n }\"></iframe>\n </div>\n\n <!-- Text Preview -->\n <div *ngIf=\"isText()\" \n class=\"preview-container text-container\"\n [id]=\"field()?.fieldName + '_text_container'\"\n [ngStyle]=\"{\n '--text-container-background': field()?.previewStyle?.textContainerBackground || '#fff',\n '--text-container-border-radius': field()?.previewStyle?.textContainerBorderRadius || '8px',\n '--text-container-width': field()?.previewStyle?.textContainerWidth || '95vw',\n '--text-container-height': field()?.previewStyle?.textContainerHeight || '95vh'\n }\">\n \n <div class=\"text-header\"\n [id]=\"field()?.fieldName + '_text_header'\"\n [ngStyle]=\"{\n '--text-header-background': field()?.previewStyle?.textHeaderBackground || '#f8f9fa',\n '--text-header-border-color': field()?.previewStyle?.textHeaderBorderColor || '#dee2e6',\n '--text-header-padding': field()?.previewStyle?.textHeaderPadding || '15px 20px'\n }\">\n \n <h3 class=\"file-title\"\n [ngStyle]=\"{\n '--text-title-color': field()?.previewStyle?.textTitleColor || '#333',\n '--text-title-font-family': field()?.previewStyle?.textTitleFontFamily || 'Mulish',\n '--text-title-font-size': field()?.previewStyle?.textTitleFontSize || '16px',\n '--text-title-font-weight': field()?.previewStyle?.textTitleFontWeight || '600',\n '--text-title-margin': field()?.previewStyle?.textTitleMargin || '0'\n }\">{{ file()?.name }}</h3>\n \n <button (click)=\"closePreview()\" \n type=\"button\"\n class=\"btn btn-danger\"\n [id]=\"field()?.fieldName + '_close_text'\"\n [ngStyle]=\"{\n '--btn-danger-background': field()?.previewStyle?.btnDangerBackground || '#dc3545',\n '--btn-danger-color': field()?.previewStyle?.btnDangerColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.closeText || 'Close' }}</button>\n </div>\n \n <pre class=\"text-content\"\n [id]=\"field()?.fieldName + '_text_content'\"\n [ngStyle]=\"{\n '--text-content-background': field()?.previewStyle?.textContentBackground || '#fff',\n '--text-content-color': field()?.previewStyle?.textContentColor || '#333',\n '--text-content-font-family': field()?.previewStyle?.textContentFontFamily || 'Consolas, Monaco, Courier New, monospace',\n '--text-content-font-size': field()?.previewStyle?.textContentFontSize || '14px',\n '--text-content-line-height': field()?.previewStyle?.textContentLineHeight || '1.5',\n '--text-content-padding': field()?.previewStyle?.textContentPadding || '20px',\n '--text-content-margin': field()?.previewStyle?.textContentMargin || '0'\n }\">{{ textContent }}</pre>\n </div>\n\n <!-- Unsupported File -->\n <div *ngIf=\"isUnsupported()\" \n class=\"preview-container unsupported-container\"\n [id]=\"field()?.fieldName + '_unsupported_container'\"\n [ngStyle]=\"{\n '--unsupported-background': field()?.previewStyle?.unsupportedBackground || '#fff',\n '--unsupported-border-radius': field()?.previewStyle?.unsupportedBorderRadius || '8px',\n '--unsupported-padding': field()?.previewStyle?.unsupportedPadding || '40px',\n '--unsupported-min-width': field()?.previewStyle?.unsupportedMinWidth || '300px'\n }\">\n \n <div class=\"unsupported-content\">\n <h3 [ngStyle]=\"{\n '--unsupported-title-color': field()?.previewStyle?.unsupportedTitleColor || '#333',\n '--unsupported-title-font-family': field()?.previewStyle?.unsupportedTitleFontFamily || 'Mulish',\n '--unsupported-title-font-size': field()?.previewStyle?.unsupportedTitleFontSize || '18px',\n '--unsupported-title-font-weight': field()?.previewStyle?.unsupportedTitleFontWeight || '600',\n '--unsupported-title-margin': field()?.previewStyle?.unsupportedTitleMargin || '0 0 20px 0'\n }\">{{ file()?.name }}</h3>\n \n <p [ngStyle]=\"{\n '--unsupported-text-color': field()?.previewStyle?.unsupportedTextColor || '#666',\n '--unsupported-text-font-size': field()?.previewStyle?.unsupportedTextFontSize || '14px',\n '--unsupported-text-margin': field()?.previewStyle?.unsupportedTextMargin || '0 0 30px 0'\n }\">{{ field()?.previewStyle?.unsupportedMessage || 'Preview not available for this file type' }}</p>\n \n <div class=\"unsupported-actions\"\n [ngStyle]=\"{\n '--actions-gap': field()?.previewStyle?.actionsGap || '15px',\n '--actions-justify': field()?.previewStyle?.actionsJustify || 'center'\n }\">\n \n <button (click)=\"downloadFile()\" \n type=\"button\"\n class=\"btn btn-primary\"\n [id]=\"field()?.fieldName + '_download'\"\n [ngStyle]=\"{\n '--btn-primary-background': field()?.previewStyle?.btnPrimaryBackground || '#007bff',\n '--btn-primary-color': field()?.previewStyle?.btnPrimaryColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.downloadText || 'Download' }}</button>\n \n <button (click)=\"closePreview()\" \n type=\"button\"\n class=\"btn btn-secondary\"\n [id]=\"field()?.fieldName + '_close_unsupported'\"\n [ngStyle]=\"{\n '--btn-secondary-background': field()?.previewStyle?.btnSecondaryBackground || '#6c757d',\n '--btn-secondary-color': field()?.previewStyle?.btnSecondaryColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.closeText || 'Close' }}</button>\n </div>\n </div>\n </div>\n</div>", styles: [".file-preview-modal{position:fixed;top:0;left:0;width:var(--modal-width, 100%);height:var(--modal-height, 100%);background:var(--modal-background, rgba(0, 0, 0, .9));z-index:var(--modal-z-index, 10000);display:flex;align-items:center;justify-content:center;overflow:auto}.preview-container{position:relative;max-width:90%;max-height:90%;display:flex;flex-direction:column;align-items:center;background:var(--image-container-background, transparent);border-radius:var(--image-container-border-radius, 8px);padding:var(--image-container-padding, 10px);margin:var(--image-container-margin, 0)}.close-btn{position:absolute;top:0;right:10px;width:40px!important;height:40px!important;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;background:var(--close-btn-background, rgba(255, 255, 255, .9));color:var(--close-btn-color, #000);border-radius:var(--close-btn-border-radius, 50%);font-size:var(--close-btn-font-size, 20px);font-weight:var(--close-btn-font-weight, bold);z-index:1001;box-shadow:1px 0 4px 1px #c7c7c7}.close-btn:hover{background:var(--close-btn-hover-background, rgba(255, 255, 255, 1))}.file-title{color:var(--title-color, #000000);font-family:var(--title-font-family, \"Mulish\");font-size:var(--title-font-size, 18px);font-weight:var(--title-font-weight, 600);margin:var(--title-margin, 0 0 10px 0);padding:var(--title-padding, 0 10px);text-align:center;word-break:break-all}.preview-image{max-width:var(--image-max-width, 100%);max-height:var(--image-max-height, 80vh);object-fit:var(--image-object-fit, contain);border-radius:var(--image-border-radius, 4px);box-shadow:var(--image-box-shadow, 0 4px 20px rgba(0, 0, 0, .3))}.preview-content{width:100%;height:80vh;border:none;border-radius:var(--content-border-radius, 4px)}.text-content{background:var(--text-background, #fff);color:var(--text-color, #000);padding:var(--text-padding, 20px);border-radius:var(--text-border-radius, 4px);max-width:var(--text-max-width, 800px);max-height:var(--text-max-height, 70vh);overflow:auto;white-space:pre-wrap;font-family:var(--text-font-family, \"Courier New, monospace\")}.action-buttons{margin-top:20px;display:flex;gap:10px}.action-btn{padding:var(--btn-padding, 8px 16px);background:var(--btn-background, #007bff);color:var(--btn-color, #fff);border:none;border-radius:var(--btn-border-radius, 4px);cursor:pointer;font-size:var(--btn-font-size, 14px)}.action-btn:hover{background:var(--btn-hover-background, #0056b3)}.unsupported-content{text-align:center;color:var(--unsupported-color, #fff);padding:var(--unsupported-padding, 40px)}.pdf-iframe{width:var(--iframe-width, 100%);height:var(--iframe-height, 80vh);min-height:var(--iframe-min-height, 600px);border:var(--iframe-border, none);border-radius:var(--iframe-border-radius, 0)}.pdf-container{width:var(--pdf-container-width, 95vw);height:var(--pdf-container-height, 95vh);background:var(--pdf-container-background, #fff);border-radius:var(--pdf-container-border-radius, 8px);display:flex;flex-direction:column;overflow:hidden}.pdf-header{background:var(--pdf-header-background, #f8f9fa);border-bottom:1px solid var(--pdf-header-border-color, #dee2e6);padding:var(--pdf-header-padding, 15px 20px);flex-shrink:0}.pdf-actions{display:flex;gap:10px;margin-top:10px}.btn{padding:var(--btn-padding, 8px 16px);border:none;border-radius:var(--btn-border-radius, 4px);cursor:pointer;font-size:var(--btn-font-size, 14px);font-weight:var(--btn-font-weight, 400);text-decoration:none;display:inline-block}.btn-primary{background:var(--btn-primary-background, #007bff);color:var(--btn-primary-color, #fff)}.btn-primary:hover{background:var(--btn-primary-hover-background, #0056b3)}.btn-danger{background:var(--btn-danger-background, #dc3545);color:var(--btn-danger-color, #fff)}.btn-danger:hover{background:var(--btn-danger-hover-background, #c82333)}.pdf-actions-top-right{position:absolute;top:var(--actions-top, 15px);right:var(--actions-right, 15px);display:flex;gap:var(--actions-gap, 10px);z-index:1001}.action-icon-btn{width:40px;height:40px;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--icon-btn-border-radius, 50%);font-size:var(--icon-btn-font-size, 16px);transition:background-color .2s ease}.open-new-tab-btn{background:var(--icon-btn-background, rgba(255, 255, 255, .9));color:var(--icon-btn-color, #007bff)}.open-new-tab-btn:hover{background:var(--icon-btn-hover-background, rgba(255, 255, 255, 1))}.pdf-title{color:var(--pdf-title-color, #333);font-family:var(--pdf-title-font-family, \"Mulish\");font-size:var(--pdf-title-font-size, 16px);font-weight:var(--pdf-title-font-weight, 600);margin:var(--pdf-title-margin, 0 20px 10px 20px);padding:var(--pdf-title-padding, 0);text-align:center}.pdf-iframe{width:var(--iframe-width, 100%);height:var(--iframe-height, calc(100% - 80px) );min-height:var(--iframe-min-height, 600px);border:var(--iframe-border, none);border-radius:var(--iframe-border-radius, 0);margin:0 20px 20px}\n"] }]
91
- }], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { closed: [{
93
+ args: [{ selector: 'lib-file-preview', standalone: true, imports: [CommonModule], template: "<div class=\"file-preview-modal\"\n *ngIf=\"field() && field()?.isVisible\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_preview'\"\n (click)=\"onBackdropClick($event)\"\n (keydown.escape)=\"closePreview()\"\n [ngStyle]=\"{\n '--modal-background': field()?.previewStyle?.modalBackground || 'rgba(0, 0, 0, 0.9)',\n '--modal-z-index': field()?.previewStyle?.zIndex || '10000',\n '--modal-width': field()?.previewStyle?.width || '100%',\n '--modal-height': field()?.previewStyle?.height || '100%'\n }\">\n\n <!-- Image Preview -->\n <div *ngIf=\"isImage()\"\n class=\"preview-container image-container\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_image_container'\"\n [ngStyle]=\"{\n '--image-container-background': field()?.previewStyle?.imageContainerBackground || 'transparent',\n '--image-container-border-radius': field()?.previewStyle?.imageContainerBorderRadius || '8px',\n '--image-container-padding': field()?.previewStyle?.imageContainerPadding || '20px',\n '--image-container-margin': field()?.previewStyle?.imageContainerMargin || '0'\n }\">\n\n <button class=\"close-btn\"\n type=\"button\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_close_btn'\"\n (click)=\"closePreview()\"\n [title]=\"field()?.previewStyle?.closeBtnTitle || 'Close'\"\n [ngStyle]=\"{\n '--close-btn-background': field()?.previewStyle?.closeBtnBackground || 'rgba(255, 255, 255, 0.9)',\n '--close-btn-color': field()?.previewStyle?.closeBtnColor || '#000',\n '--close-btn-border-radius': field()?.previewStyle?.closeBtnBorderRadius || '50%',\n '--close-btn-font-size': field()?.previewStyle?.closeBtnFontSize || '20px',\n '--close-btn-font-weight': field()?.previewStyle?.closeBtnFontWeight || 'bold',\n '--close-btn-hover-background': field()?.previewStyle?.closeBtnHoverBackground || 'rgba(255, 255, 255, 1)'\n }\">&times;</button>\n\n <h3 class=\"file-title\"\n [ngStyle]=\"{\n '--title-color': field()?.previewStyle?.titleColor || '#fff',\n '--title-font-family': field()?.previewStyle?.titleFontFamily || 'Mulish',\n '--title-font-size': field()?.previewStyle?.titleFontSize || '18px',\n '--title-font-weight': field()?.previewStyle?.titleFontWeight || '600',\n '--title-margin': field()?.previewStyle?.titleMargin || '0 0 10px 0',\n '--title-padding': field()?.previewStyle?.titlePadding || '0 10px'\n }\">{{ file()?.name }}</h3>\n\n <img [src]=\"fileDataUrl\"\n [alt]=\"file()?.name\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_preview_image'\"\n class=\"preview-image\"\n [ngStyle]=\"{\n '--image-max-width': field()?.previewStyle?.imageMaxWidth || '100%',\n '--image-max-height': field()?.previewStyle?.imageMaxHeight || '80vh',\n '--image-border-radius': field()?.previewStyle?.imageBorderRadius || '8px',\n '--image-box-shadow': field()?.previewStyle?.imageBoxShadow || '0 4px 20px rgba(0,0,0,0.5)',\n '--image-object-fit': field()?.previewStyle?.imageObjectFit || 'contain'\n }\" />\n </div>\n\n <!-- PDF Preview -->\n <div *ngIf=\"isPdf()\"\n class=\"preview-container pdf-container\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_pdf_container'\"\n [ngStyle]=\"{\n '--pdf-container-background': field()?.previewStyle?.pdfContainerBackground || '#fff',\n '--pdf-container-border-radius': field()?.previewStyle?.pdfContainerBorderRadius || '8px',\n '--pdf-container-width': field()?.previewStyle?.pdfContainerWidth || '95vw',\n '--pdf-container-height': field()?.previewStyle?.pdfContainerHeight || '95vh'\n }\">\n\n <!-- Top-right action buttons -->\n <div class=\"pdf-actions-top-right\"\n [ngStyle]=\"{\n '--actions-top': field()?.previewStyle?.actionsTop || '15px',\n '--actions-right': field()?.previewStyle?.actionsRight || '15px',\n '--actions-gap': field()?.previewStyle?.actionsGap || '10px'\n }\">\n\n <button (click)=\"closePreview()\"\n type=\"button\"\n class=\"action-icon-btn close-btn\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_close_pdf'\"\n [title]=\"field()?.previewStyle?.closeBtnTitle || 'Close'\"\n [ngStyle]=\"{\n '--close-btn-background': field()?.previewStyle?.closeBtnBackground || 'rgba(255, 255, 255, 0.9)',\n '--close-btn-color': field()?.previewStyle?.closeBtnColor || '#000',\n '--close-btn-border-radius': field()?.previewStyle?.closeBtnBorderRadius || '50%',\n '--close-btn-font-size': field()?.previewStyle?.closeBtnFontSize || '20px',\n '--close-btn-font-weight': field()?.previewStyle?.closeBtnFontWeight || 'bold',\n '--close-btn-hover-background': field()?.previewStyle?.closeBtnHoverBackground || 'rgba(255, 255, 255, 1)'\n }\">&times;</button>\n </div>\n\n <!-- File title -->\n <h3 class=\"file-title pdf-title\"\n [ngStyle]=\"{\n '--pdf-title-color': field()?.previewStyle?.pdfTitleColor || '#333',\n '--pdf-title-font-family': field()?.previewStyle?.pdfTitleFontFamily || 'Mulish',\n '--pdf-title-font-size': field()?.previewStyle?.pdfTitleFontSize || '16px',\n '--pdf-title-font-weight': field()?.previewStyle?.pdfTitleFontWeight || '600',\n '--pdf-title-margin': field()?.previewStyle?.pdfTitleMargin || '0px 20px 10px 20px',\n '--pdf-title-padding': field()?.previewStyle?.pdfTitlePadding || '0'\n }\">{{ file()?.name }}</h3>\n\n <iframe [src]=\"safeFileUrl\"\n [title]=\"file()?.name\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_pdf_iframe'\"\n class=\"pdf-iframe\"\n [ngStyle]=\"{\n '--iframe-border': field()?.previewStyle?.iframeBorder || 'none',\n '--iframe-border-radius': field()?.previewStyle?.iframeBorderRadius || '0',\n '--iframe-width': field()?.previewStyle?.iframeWidth || '100%',\n '--iframe-height': field()?.previewStyle?.iframeHeight || 'calc(100% - 80px)',\n '--iframe-min-height': field()?.previewStyle?.iframeMinHeight || '600px'\n }\"></iframe>\n </div>\n\n <!-- Text Preview -->\n <div *ngIf=\"isText()\"\n class=\"preview-container text-container\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_text_container'\"\n [ngStyle]=\"{\n '--text-container-background': field()?.previewStyle?.textContainerBackground || '#fff',\n '--text-container-border-radius': field()?.previewStyle?.textContainerBorderRadius || '8px',\n '--text-container-width': field()?.previewStyle?.textContainerWidth || '95vw',\n '--text-container-height': field()?.previewStyle?.textContainerHeight || '95vh'\n }\">\n\n <div class=\"text-header\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_text_header'\"\n [ngStyle]=\"{\n '--text-header-background': field()?.previewStyle?.textHeaderBackground || '#f8f9fa',\n '--text-header-border-color': field()?.previewStyle?.textHeaderBorderColor || '#dee2e6',\n '--text-header-padding': field()?.previewStyle?.textHeaderPadding || '15px 20px'\n }\">\n\n <h3 class=\"file-title\"\n [ngStyle]=\"{\n '--text-title-color': field()?.previewStyle?.textTitleColor || '#333',\n '--text-title-font-family': field()?.previewStyle?.textTitleFontFamily || 'Mulish',\n '--text-title-font-size': field()?.previewStyle?.textTitleFontSize || '16px',\n '--text-title-font-weight': field()?.previewStyle?.textTitleFontWeight || '600',\n '--text-title-margin': field()?.previewStyle?.textTitleMargin || '0'\n }\">{{ file()?.name }}</h3>\n\n <button (click)=\"closePreview()\"\n type=\"button\"\n class=\"btn btn-danger\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_close_text'\"\n [ngStyle]=\"{\n '--btn-danger-background': field()?.previewStyle?.btnDangerBackground || '#dc3545',\n '--btn-danger-color': field()?.previewStyle?.btnDangerColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.closeText || 'Close' }}</button>\n </div>\n\n <pre class=\"text-content\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_text_content'\"\n [ngStyle]=\"{\n '--text-content-background': field()?.previewStyle?.textContentBackground || '#fff',\n '--text-content-color': field()?.previewStyle?.textContentColor || '#333',\n '--text-content-font-family': field()?.previewStyle?.textContentFontFamily || 'Consolas, Monaco, Courier New, monospace',\n '--text-content-font-size': field()?.previewStyle?.textContentFontSize || '14px',\n '--text-content-line-height': field()?.previewStyle?.textContentLineHeight || '1.5',\n '--text-content-padding': field()?.previewStyle?.textContentPadding || '20px',\n '--text-content-margin': field()?.previewStyle?.textContentMargin || '0'\n }\">{{ textContent }}</pre>\n </div>\n\n <!-- Unsupported File -->\n <div *ngIf=\"isUnsupported()\"\n class=\"preview-container unsupported-container\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_unsupported_container'\"\n [ngStyle]=\"{\n '--unsupported-background': field()?.previewStyle?.unsupportedBackground || '#fff',\n '--unsupported-border-radius': field()?.previewStyle?.unsupportedBorderRadius || '8px',\n '--unsupported-padding': field()?.previewStyle?.unsupportedPadding || '40px',\n '--unsupported-min-width': field()?.previewStyle?.unsupportedMinWidth || '300px'\n }\">\n\n <div class=\"unsupported-content\">\n <h3 [ngStyle]=\"{\n '--unsupported-title-color': field()?.previewStyle?.unsupportedTitleColor || '#333',\n '--unsupported-title-font-family': field()?.previewStyle?.unsupportedTitleFontFamily || 'Mulish',\n '--unsupported-title-font-size': field()?.previewStyle?.unsupportedTitleFontSize || '18px',\n '--unsupported-title-font-weight': field()?.previewStyle?.unsupportedTitleFontWeight || '600',\n '--unsupported-title-margin': field()?.previewStyle?.unsupportedTitleMargin || '0 0 20px 0'\n }\">{{ file()?.name }}</h3>\n\n <p [ngStyle]=\"{\n '--unsupported-text-color': field()?.previewStyle?.unsupportedTextColor || '#666',\n '--unsupported-text-font-size': field()?.previewStyle?.unsupportedTextFontSize || '14px',\n '--unsupported-text-margin': field()?.previewStyle?.unsupportedTextMargin || '0 0 30px 0'\n }\">{{ field()?.previewStyle?.unsupportedMessage || 'Preview not available for this file type' }}</p>\n\n <div class=\"unsupported-actions\"\n [ngStyle]=\"{\n '--actions-gap': field()?.previewStyle?.actionsGap || '15px',\n '--actions-justify': field()?.previewStyle?.actionsJustify || 'center'\n }\">\n\n <button (click)=\"downloadFile()\"\n type=\"button\"\n class=\"btn btn-primary\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_download'\"\n [ngStyle]=\"{\n '--btn-primary-background': field()?.previewStyle?.btnPrimaryBackground || '#007bff',\n '--btn-primary-color': field()?.previewStyle?.btnPrimaryColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.downloadText || 'Download' }}</button>\n\n <button (click)=\"closePreview()\"\n type=\"button\"\n class=\"btn btn-secondary\"\n [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label) + '_close_unsupported'\"\n [ngStyle]=\"{\n '--btn-secondary-background': field()?.previewStyle?.btnSecondaryBackground || '#6c757d',\n '--btn-secondary-color': field()?.previewStyle?.btnSecondaryColor || '#fff',\n '--btn-border-radius': field()?.previewStyle?.btnBorderRadius || '4px',\n '--btn-padding': field()?.previewStyle?.btnPadding || '8px 16px',\n '--btn-font-size': field()?.previewStyle?.btnFontSize || '14px'\n }\">{{ field()?.previewStyle?.closeText || 'Close' }}</button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".file-preview-modal{position:fixed;top:0;left:0;width:var(--modal-width, 100%);height:var(--modal-height, 100%);background:var(--modal-background, rgba(0, 0, 0, .9));z-index:var(--modal-z-index, 10000);display:flex;align-items:center;justify-content:center;overflow:auto}.preview-container{position:relative;max-width:90%;max-height:90%;display:flex;flex-direction:column;align-items:center;background:var(--image-container-background, transparent);border-radius:var(--image-container-border-radius, 8px);padding:var(--image-container-padding, 10px);margin:var(--image-container-margin, 0)}.close-btn{position:absolute;top:0;right:10px;width:40px!important;height:40px!important;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;background:var(--close-btn-background, rgba(255, 255, 255, .9));color:var(--close-btn-color, #000);border-radius:var(--close-btn-border-radius, 50%);font-size:var(--close-btn-font-size, 20px);font-weight:var(--close-btn-font-weight, bold);z-index:1001;box-shadow:1px 0 4px 1px #c7c7c7}.close-btn:hover{background:var(--close-btn-hover-background, rgba(255, 255, 255, 1))}.file-title{color:var(--title-color, #000000);font-family:var(--title-font-family, \"Mulish\");font-size:var(--title-font-size, 18px);font-weight:var(--title-font-weight, 600);margin:var(--title-margin, 0 0 10px 0);padding:var(--title-padding, 0 10px);text-align:center;word-break:break-all}.preview-image{max-width:var(--image-max-width, 100%);max-height:var(--image-max-height, 80vh);object-fit:var(--image-object-fit, contain);border-radius:var(--image-border-radius, 4px);box-shadow:var(--image-box-shadow, 0 4px 20px rgba(0, 0, 0, .3))}.preview-content{width:100%;height:80vh;border:none;border-radius:var(--content-border-radius, 4px)}.text-content{background:var(--text-background, #fff);color:var(--text-color, #000);padding:var(--text-padding, 20px);border-radius:var(--text-border-radius, 4px);max-width:var(--text-max-width, 800px);max-height:var(--text-max-height, 70vh);overflow:auto;white-space:pre-wrap;font-family:var(--text-font-family, \"Courier New, monospace\")}.action-buttons{margin-top:20px;display:flex;gap:10px}.action-btn{padding:var(--btn-padding, 8px 16px);background:var(--btn-background, #007bff);color:var(--btn-color, #fff);border:none;border-radius:var(--btn-border-radius, 4px);cursor:pointer;font-size:var(--btn-font-size, 14px)}.action-btn:hover{background:var(--btn-hover-background, #0056b3)}.unsupported-content{text-align:center;color:var(--unsupported-color, #fff);padding:var(--unsupported-padding, 40px)}.pdf-iframe{width:var(--iframe-width, 100%);height:var(--iframe-height, 80vh);min-height:var(--iframe-min-height, 600px);border:var(--iframe-border, none);border-radius:var(--iframe-border-radius, 0)}.pdf-container{width:var(--pdf-container-width, 95vw);height:var(--pdf-container-height, 95vh);background:var(--pdf-container-background, #fff);border-radius:var(--pdf-container-border-radius, 8px);display:flex;flex-direction:column;overflow:hidden}.pdf-header{background:var(--pdf-header-background, #f8f9fa);border-bottom:1px solid var(--pdf-header-border-color, #dee2e6);padding:var(--pdf-header-padding, 15px 20px);flex-shrink:0}.pdf-actions{display:flex;gap:10px;margin-top:10px}.btn{padding:var(--btn-padding, 8px 16px);border:none;border-radius:var(--btn-border-radius, 4px);cursor:pointer;font-size:var(--btn-font-size, 14px);font-weight:var(--btn-font-weight, 400);text-decoration:none;display:inline-block}.btn-primary{background:var(--btn-primary-background, #007bff);color:var(--btn-primary-color, #fff)}.btn-primary:hover{background:var(--btn-primary-hover-background, #0056b3)}.btn-danger{background:var(--btn-danger-background, #dc3545);color:var(--btn-danger-color, #fff)}.btn-danger:hover{background:var(--btn-danger-hover-background, #c82333)}.pdf-actions-top-right{position:absolute;top:var(--actions-top, 15px);right:var(--actions-right, 15px);display:flex;gap:var(--actions-gap, 10px);z-index:1001}.action-icon-btn{width:40px;height:40px;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--icon-btn-border-radius, 50%);font-size:var(--icon-btn-font-size, 16px);transition:background-color .2s ease}.open-new-tab-btn{background:var(--icon-btn-background, rgba(255, 255, 255, .9));color:var(--icon-btn-color, #007bff)}.open-new-tab-btn:hover{background:var(--icon-btn-hover-background, rgba(255, 255, 255, 1))}.pdf-title{color:var(--pdf-title-color, #333);font-family:var(--pdf-title-font-family, \"Mulish\");font-size:var(--pdf-title-font-size, 16px);font-weight:var(--pdf-title-font-weight, 600);margin:var(--pdf-title-margin, 0 20px 10px 20px);padding:var(--pdf-title-padding, 0);text-align:center}.pdf-iframe{width:var(--iframe-width, 100%);height:var(--iframe-height, calc(100% - 80px) );min-height:var(--iframe-min-height, 600px);border:var(--iframe-border, none);border-radius:var(--iframe-border-radius, 0);margin:0 20px 20px}\n"] }]
94
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.MasterControlService }], propDecorators: { closed: [{
92
95
  type: Output
93
96
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvZmlsZS1wcmV2aWV3L2ZpbGUtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL2ZpbGUtcHJldmlldy9maWxlLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7O0FBVTFGLE1BQU0sT0FBTyxvQkFBb0I7SUFVWDtJQVRwQixLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBTyxDQUFDO0lBQzlCLElBQUksR0FBRyxLQUFLLENBQWMsSUFBSSxDQUFDLENBQUM7SUFFdEIsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFNUMsV0FBVyxHQUFRLEVBQUUsQ0FBQztJQUN0QixhQUFhLEdBQVEsRUFBRSxDQUFDO0lBQ3hCLFdBQVcsR0FBUSxFQUFFLENBQUM7SUFDdEIsV0FBVyxHQUEyQixJQUFJLENBQUM7SUFDM0MsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFHLENBQUM7SUFDL0MsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3pELENBQUM7SUFFQSxLQUFLO1FBQ0osT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxLQUFLLGlCQUFpQixJQUFJLEtBQUssQ0FBQztJQUMxRCxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3hELENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFFLFlBQVk7SUFDMUUsQ0FBQztJQUVELFFBQVE7UUFDTixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNULFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUV6QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBYSxDQUFDO1lBQzdDLENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkYsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFhLENBQUM7WUFDN0MsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVDLGVBQWUsQ0FBQyxLQUFZO1FBQzFCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBRXpCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBRTVCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7d0dBdEZVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLG1XQ1hqQyxpMVpBc09NLGk3SkQvTk0sWUFBWTs7NEZBSVgsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7aUZBUWIsTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWZpbGUtcHJldmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2ZpbGUtcHJldmlldy5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgZmllbGQgPSBpbnB1dC5yZXF1aXJlZDxhbnk+KCk7XG4gIGZpbGUgPSBpbnB1dDxGaWxlIHwgbnVsbD4obnVsbCk7XG4gIFxuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGZpbGVEYXRhVXJsOiBhbnkgPSAnJztcbiAgZmlsZU9iamVjdFVybDogYW55ID0gJyc7XG4gIHRleHRDb250ZW50OiBhbnkgPSAnJztcbiAgc2FmZUZpbGVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGwgPSBudWxsOyBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cbiAgaXNJbWFnZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZpbGUoKT8udHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSB8fCBmYWxzZTtcbiAgfVxuXG4gICBpc1BkZigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZpbGUoKT8udHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicgfHwgZmFsc2U7XG4gIH1cblxuICBpc1RleHQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5maWxlKCk/LnR5cGUuc3RhcnRzV2l0aCgndGV4dC8nKSB8fCBmYWxzZTtcbiAgfVxuXG4gIGlzVW5zdXBwb3J0ZWQoKTogYW55IHtcbiAgICByZXR1cm4gIXRoaXMuaXNJbWFnZSgpICYmICF0aGlzLmlzUGRmKCkgJiYgIXRoaXMuaXNUZXh0KCk7ICAvLyDinIUgQ29ycmVjdFxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgIHRoaXMubG9hZEZpbGVDb250ZW50KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJyc7XG4gICAgaWYgKHRoaXMuZmlsZU9iamVjdFVybCkge1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLmZpbGVPYmplY3RVcmwpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRGaWxlQ29udGVudCgpIHtcbiAgY29uc3QgY3VycmVudEZpbGUgPSB0aGlzLmZpbGUoKTtcbiAgaWYgKCFjdXJyZW50RmlsZSkgcmV0dXJuO1xuXG4gIGlmICh0aGlzLmlzSW1hZ2UoKSkge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgICB0aGlzLmZpbGVEYXRhVXJsID0gZS50YXJnZXQ/LnJlc3VsdCBhcyBhbnk7XG4gICAgfTtcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChjdXJyZW50RmlsZSk7XG4gIH0gZWxzZSBpZiAodGhpcy5pc1BkZigpKSB7XG4gICAgdGhpcy5maWxlT2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChjdXJyZW50RmlsZSk7XG4gICAgdGhpcy5zYWZlRmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmZpbGVPYmplY3RVcmwpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNUZXh0KCkpIHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgICAgdGhpcy50ZXh0Q29udGVudCA9IGUudGFyZ2V0Py5yZXN1bHQgYXMgYW55O1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc1RleHQoY3VycmVudEZpbGUpO1xuICB9XG59XG5cbiAgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgIHRoaXMuY2xvc2VQcmV2aWV3KCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VQcmV2aWV3KCkge1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgfVxuXG4gIGRvd25sb2FkRmlsZSgpIHtcbiAgICBjb25zdCBjdXJyZW50RmlsZSA9IHRoaXMuZmlsZSgpO1xuICAgIGlmICghY3VycmVudEZpbGUpIHJldHVybjtcblxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoY3VycmVudEZpbGUpO1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuZG93bmxvYWQgPSBjdXJyZW50RmlsZS5uYW1lO1xuICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICBcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICAgIFxuICAgIHNldFRpbWVvdXQoKCkgPT4gVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpLCAxMDApO1xuICB9XG59IiwiPGRpdiBjbGFzcz1cImZpbGUtcHJldmlldy1tb2RhbFwiIFxuICAgICAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8uaXNWaXNpYmxlXCJcbiAgICAgW2lkXT1cImZpZWxkKCk/LmZpZWxkTmFtZSArICdfcHJldmlldydcIlxuICAgICAoY2xpY2spPVwib25CYWNrZHJvcENsaWNrKCRldmVudClcIlxuICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2xvc2VQcmV2aWV3KClcIlxuICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgJy0tbW9kYWwtYmFja2dyb3VuZCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8ubW9kYWxCYWNrZ3JvdW5kIHx8ICdyZ2JhKDAsIDAsIDAsIDAuOSknLFxuICAgICAgICctLW1vZGFsLXotaW5kZXgnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnpJbmRleCB8fCAnMTAwMDAnLFxuICAgICAgICctLW1vZGFsLXdpZHRoJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy53aWR0aCB8fCAnMTAwJScsXG4gICAgICAgJy0tbW9kYWwtaGVpZ2h0JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5oZWlnaHQgfHwgJzEwMCUnXG4gICAgIH1cIj5cbiAgXG4gIDwhLS0gSW1hZ2UgUHJldmlldyAtLT5cbiAgPGRpdiAqbmdJZj1cImlzSW1hZ2UoKVwiIFxuICAgICAgIGNsYXNzPVwicHJldmlldy1jb250YWluZXIgaW1hZ2UtY29udGFpbmVyXCJcbiAgICAgICBbaWRdPVwiZmllbGQoKT8uZmllbGROYW1lICsgJ19pbWFnZV9jb250YWluZXInXCJcbiAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAnLS1pbWFnZS1jb250YWluZXItYmFja2dyb3VuZCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uaW1hZ2VDb250YWluZXJCYWNrZ3JvdW5kIHx8ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAnLS1pbWFnZS1jb250YWluZXItYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uaW1hZ2VDb250YWluZXJCb3JkZXJSYWRpdXMgfHwgJzhweCcsXG4gICAgICAgICAnLS1pbWFnZS1jb250YWluZXItcGFkZGluZyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uaW1hZ2VDb250YWluZXJQYWRkaW5nIHx8ICcyMHB4JyxcbiAgICAgICAgICctLWltYWdlLWNvbnRhaW5lci1tYXJnaW4nOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmltYWdlQ29udGFpbmVyTWFyZ2luIHx8ICcwJ1xuICAgICAgIH1cIj5cbiAgICBcbiAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UtYnRuXCIgXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWUgKyAnX2Nsb3NlX2J0bidcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUHJldmlldygpXCIgXG4gICAgICAgICAgICBbdGl0bGVdPVwiZmllbGQoKT8ucHJldmlld1N0eWxlPy5jbG9zZUJ0blRpdGxlIHx8ICdDbG9zZSdcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAnLS1jbG9zZS1idG4tYmFja2dyb3VuZCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5CYWNrZ3JvdW5kIHx8ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSknLFxuICAgICAgICAgICAgICAnLS1jbG9zZS1idG4tY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmNsb3NlQnRuQ29sb3IgfHwgJyMwMDAnLFxuICAgICAgICAgICAgICAnLS1jbG9zZS1idG4tYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5Cb3JkZXJSYWRpdXMgfHwgJzUwJScsXG4gICAgICAgICAgICAgICctLWNsb3NlLWJ0bi1mb250LXNpemUnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmNsb3NlQnRuRm9udFNpemUgfHwgJzIwcHgnLFxuICAgICAgICAgICAgICAnLS1jbG9zZS1idG4tZm9udC13ZWlnaHQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmNsb3NlQnRuRm9udFdlaWdodCB8fCAnYm9sZCcsXG4gICAgICAgICAgICAgICctLWNsb3NlLWJ0bi1ob3Zlci1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5jbG9zZUJ0bkhvdmVyQmFja2dyb3VuZCB8fCAncmdiYSgyNTUsIDI1NSwgMjU1LCAxKSdcbiAgICAgICAgICAgIH1cIj4mdGltZXM7PC9idXR0b24+XG4gICAgXG4gICAgPGgzIGNsYXNzPVwiZmlsZS10aXRsZVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAnLS10aXRsZS1jb2xvcic6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGl0bGVDb2xvciB8fCAnI2ZmZicsXG4gICAgICAgICAgJy0tdGl0bGUtZm9udC1mYW1pbHknOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRpdGxlRm9udEZhbWlseSB8fCAnTXVsaXNoJyxcbiAgICAgICAgICAnLS10aXRsZS1mb250LXNpemUnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRpdGxlRm9udFNpemUgfHwgJzE4cHgnLFxuICAgICAgICAgICctLXRpdGxlLWZvbnQtd2VpZ2h0JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50aXRsZUZvbnRXZWlnaHQgfHwgJzYwMCcsXG4gICAgICAgICAgJy0tdGl0bGUtbWFyZ2luJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50aXRsZU1hcmdpbiB8fCAnMCAwIDEwcHggMCcsXG4gICAgICAgICAgJy0tdGl0bGUtcGFkZGluZyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGl0bGVQYWRkaW5nIHx8ICcwIDEwcHgnXG4gICAgICAgIH1cIj57eyBmaWxlKCk/Lm5hbWUgfX08L2gzPlxuICAgIFxuICAgIDxpbWcgW3NyY109XCJmaWxlRGF0YVVybFwiIFxuICAgICAgICAgW2FsdF09XCJmaWxlKCk/Lm5hbWVcIiBcbiAgICAgICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWUgKyAnX3ByZXZpZXdfaW1hZ2UnXCJcbiAgICAgICAgIGNsYXNzPVwicHJldmlldy1pbWFnZVwiXG4gICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICctLWltYWdlLW1heC13aWR0aCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uaW1hZ2VNYXhXaWR0aCB8fCAnMTAwJScsXG4gICAgICAgICAgICctLWltYWdlLW1heC1oZWlnaHQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmltYWdlTWF4SGVpZ2h0IHx8ICc4MHZoJyxcbiAgICAgICAgICAgJy0taW1hZ2UtYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uaW1hZ2VCb3JkZXJSYWRpdXMgfHwgJzhweCcsXG4gICAgICAgICAgICctLWltYWdlLWJveC1zaGFkb3cnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmltYWdlQm94U2hhZG93IHx8ICcwIDRweCAyMHB4IHJnYmEoMCwwLDAsMC41KScsXG4gICAgICAgICAgICctLWltYWdlLW9iamVjdC1maXQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmltYWdlT2JqZWN0Rml0IHx8ICdjb250YWluJ1xuICAgICAgICAgfVwiIC8+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUERGIFByZXZpZXcgLS0+XG4gIDxkaXYgKm5nSWY9XCJpc1BkZigpXCIgXG4gICAgICAgY2xhc3M9XCJwcmV2aWV3LWNvbnRhaW5lciBwZGYtY29udGFpbmVyXCJcbiAgICAgICBbaWRdPVwiZmllbGQoKT8uZmllbGROYW1lICsgJ19wZGZfY29udGFpbmVyJ1wiXG4gICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgJy0tcGRmLWNvbnRhaW5lci1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5wZGZDb250YWluZXJCYWNrZ3JvdW5kIHx8ICcjZmZmJyxcbiAgICAgICAgICctLXBkZi1jb250YWluZXItYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8ucGRmQ29udGFpbmVyQm9yZGVyUmFkaXVzIHx8ICc4cHgnLFxuICAgICAgICAgJy0tcGRmLWNvbnRhaW5lci13aWR0aCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8ucGRmQ29udGFpbmVyV2lkdGggfHwgJzk1dncnLFxuICAgICAgICAgJy0tcGRmLWNvbnRhaW5lci1oZWlnaHQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnBkZkNvbnRhaW5lckhlaWdodCB8fCAnOTV2aCdcbiAgICAgICB9XCI+XG4gICAgXG4gICAgPCEtLSBUb3AtcmlnaHQgYWN0aW9uIGJ1dHRvbnMgLS0+XG4gICAgPGRpdiBjbGFzcz1cInBkZi1hY3Rpb25zLXRvcC1yaWdodFwiXG4gICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICctLWFjdGlvbnMtdG9wJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5hY3Rpb25zVG9wIHx8ICcxNXB4JyxcbiAgICAgICAgICAgJy0tYWN0aW9ucy1yaWdodCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYWN0aW9uc1JpZ2h0IHx8ICcxNXB4JyxcbiAgICAgICAgICAgJy0tYWN0aW9ucy1nYXAnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmFjdGlvbnNHYXAgfHwgJzEwcHgnXG4gICAgICAgICB9XCI+XG4gICAgICBcbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlUHJldmlldygpXCIgXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1pY29uLWJ0biBjbG9zZS1idG5cIlxuICAgICAgICAgICAgICBbaWRdPVwiZmllbGQoKT8uZmllbGROYW1lICsgJ19jbG9zZV9wZGYnXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cImZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5UaXRsZSB8fCAnQ2xvc2UnXCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICctLWNsb3NlLWJ0bi1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5jbG9zZUJ0bkJhY2tncm91bmQgfHwgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC45KScsXG4gICAgICAgICAgICAgICAgJy0tY2xvc2UtYnRuLWNvbG9yJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5jbG9zZUJ0bkNvbG9yIHx8ICcjMDAwJyxcbiAgICAgICAgICAgICAgICAnLS1jbG9zZS1idG4tYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5Cb3JkZXJSYWRpdXMgfHwgJzUwJScsXG4gICAgICAgICAgICAgICAgJy0tY2xvc2UtYnRuLWZvbnQtc2l6ZSc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5Gb250U2l6ZSB8fCAnMjBweCcsXG4gICAgICAgICAgICAgICAgJy0tY2xvc2UtYnRuLWZvbnQtd2VpZ2h0JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5jbG9zZUJ0bkZvbnRXZWlnaHQgfHwgJ2JvbGQnLFxuICAgICAgICAgICAgICAgICctLWNsb3NlLWJ0bi1ob3Zlci1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5jbG9zZUJ0bkhvdmVyQmFja2dyb3VuZCB8fCAncmdiYSgyNTUsIDI1NSwgMjU1LCAxKSdcbiAgICAgICAgICAgICAgfVwiPiZ0aW1lczs8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8IS0tIEZpbGUgdGl0bGUgLS0+XG4gICAgPGgzIGNsYXNzPVwiZmlsZS10aXRsZSBwZGYtdGl0bGVcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJy0tcGRmLXRpdGxlLWNvbG9yJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5wZGZUaXRsZUNvbG9yIHx8ICcjMzMzJyxcbiAgICAgICAgICAnLS1wZGYtdGl0bGUtZm9udC1mYW1pbHknOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnBkZlRpdGxlRm9udEZhbWlseSB8fCAnTXVsaXNoJyxcbiAgICAgICAgICAnLS1wZGYtdGl0bGUtZm9udC1zaXplJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5wZGZUaXRsZUZvbnRTaXplIHx8ICcxNnB4JyxcbiAgICAgICAgICAnLS1wZGYtdGl0bGUtZm9udC13ZWlnaHQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnBkZlRpdGxlRm9udFdlaWdodCB8fCAnNjAwJyxcbiAgICAgICAgICAnLS1wZGYtdGl0bGUtbWFyZ2luJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5wZGZUaXRsZU1hcmdpbiB8fCAnMHB4IDIwcHggMTBweCAyMHB4JyxcbiAgICAgICAgICAnLS1wZGYtdGl0bGUtcGFkZGluZyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8ucGRmVGl0bGVQYWRkaW5nIHx8ICcwJ1xuICAgICAgICB9XCI+e3sgZmlsZSgpPy5uYW1lIH19PC9oMz5cbiAgICBcbiAgICA8aWZyYW1lIFtzcmNdPVwic2FmZUZpbGVVcmxcIiBcbiAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlKCk/Lm5hbWVcIiBcbiAgICAgICAgICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWUgKyAnX3BkZl9pZnJhbWUnXCJcbiAgICAgICAgICAgIGNsYXNzPVwicGRmLWlmcmFtZVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICctLWlmcmFtZS1ib3JkZXInOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmlmcmFtZUJvcmRlciB8fCAnbm9uZScsXG4gICAgICAgICAgICAgICctLWlmcmFtZS1ib3JkZXItcmFkaXVzJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5pZnJhbWVCb3JkZXJSYWRpdXMgfHwgJzAnLFxuICAgICAgICAgICAgICAnLS1pZnJhbWUtd2lkdGgnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmlmcmFtZVdpZHRoIHx8ICcxMDAlJyxcbiAgICAgICAgICAgICAgJy0taWZyYW1lLWhlaWdodCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uaWZyYW1lSGVpZ2h0IHx8ICdjYWxjKDEwMCUgLSA4MHB4KScsXG4gICAgICAgICAgICAgICctLWlmcmFtZS1taW4taGVpZ2h0JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5pZnJhbWVNaW5IZWlnaHQgfHwgJzYwMHB4J1xuICAgICAgICAgICAgfVwiPjwvaWZyYW1lPlxuICA8L2Rpdj5cblxuICA8IS0tIFRleHQgUHJldmlldyAtLT5cbiAgPGRpdiAqbmdJZj1cImlzVGV4dCgpXCIgXG4gICAgICAgY2xhc3M9XCJwcmV2aWV3LWNvbnRhaW5lciB0ZXh0LWNvbnRhaW5lclwiXG4gICAgICAgW2lkXT1cImZpZWxkKCk/LmZpZWxkTmFtZSArICdfdGV4dF9jb250YWluZXInXCJcbiAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAnLS10ZXh0LWNvbnRhaW5lci1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0Q29udGFpbmVyQmFja2dyb3VuZCB8fCAnI2ZmZicsXG4gICAgICAgICAnLS10ZXh0LWNvbnRhaW5lci1ib3JkZXItcmFkaXVzJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0Q29udGFpbmVyQm9yZGVyUmFkaXVzIHx8ICc4cHgnLFxuICAgICAgICAgJy0tdGV4dC1jb250YWluZXItd2lkdGgnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRleHRDb250YWluZXJXaWR0aCB8fCAnOTV2dycsXG4gICAgICAgICAnLS10ZXh0LWNvbnRhaW5lci1oZWlnaHQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRleHRDb250YWluZXJIZWlnaHQgfHwgJzk1dmgnXG4gICAgICAgfVwiPlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWhlYWRlclwiXG4gICAgICAgICBbaWRdPVwiZmllbGQoKT8uZmllbGROYW1lICsgJ190ZXh0X2hlYWRlcidcIlxuICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAnLS10ZXh0LWhlYWRlci1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0SGVhZGVyQmFja2dyb3VuZCB8fCAnI2Y4ZjlmYScsXG4gICAgICAgICAgICctLXRleHQtaGVhZGVyLWJvcmRlci1jb2xvcic6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dEhlYWRlckJvcmRlckNvbG9yIHx8ICcjZGVlMmU2JyxcbiAgICAgICAgICAgJy0tdGV4dC1oZWFkZXItcGFkZGluZyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dEhlYWRlclBhZGRpbmcgfHwgJzE1cHggMjBweCdcbiAgICAgICAgIH1cIj5cbiAgICAgIFxuICAgICAgPGgzIGNsYXNzPVwiZmlsZS10aXRsZVwiXG4gICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgJy0tdGV4dC10aXRsZS1jb2xvcic6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dFRpdGxlQ29sb3IgfHwgJyMzMzMnLFxuICAgICAgICAgICAgJy0tdGV4dC10aXRsZS1mb250LWZhbWlseSc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dFRpdGxlRm9udEZhbWlseSB8fCAnTXVsaXNoJyxcbiAgICAgICAgICAgICctLXRleHQtdGl0bGUtZm9udC1zaXplJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0VGl0bGVGb250U2l6ZSB8fCAnMTZweCcsXG4gICAgICAgICAgICAnLS10ZXh0LXRpdGxlLWZvbnQtd2VpZ2h0JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0VGl0bGVGb250V2VpZ2h0IHx8ICc2MDAnLFxuICAgICAgICAgICAgJy0tdGV4dC10aXRsZS1tYXJnaW4nOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRleHRUaXRsZU1hcmdpbiB8fCAnMCdcbiAgICAgICAgICB9XCI+e3sgZmlsZSgpPy5uYW1lIH19PC9oMz5cbiAgICAgIFxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2VQcmV2aWV3KClcIiBcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIlxuICAgICAgICAgICAgICBbaWRdPVwiZmllbGQoKT8uZmllbGROYW1lICsgJ19jbG9zZV90ZXh0J1wiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAnLS1idG4tZGFuZ2VyLWJhY2tncm91bmQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0bkRhbmdlckJhY2tncm91bmQgfHwgJyNkYzM1NDUnLFxuICAgICAgICAgICAgICAgICctLWJ0bi1kYW5nZXItY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0bkRhbmdlckNvbG9yIHx8ICcjZmZmJyxcbiAgICAgICAgICAgICAgICAnLS1idG4tYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuQm9yZGVyUmFkaXVzIHx8ICc0cHgnLFxuICAgICAgICAgICAgICAgICctLWJ0bi1wYWRkaW5nJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5idG5QYWRkaW5nIHx8ICc4cHggMTZweCcsXG4gICAgICAgICAgICAgICAgJy0tYnRuLWZvbnQtc2l6ZSc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuRm9udFNpemUgfHwgJzE0cHgnXG4gICAgICAgICAgICAgIH1cIj57eyBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmNsb3NlVGV4dCB8fCAnQ2xvc2UnIH19PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPHByZSBjbGFzcz1cInRleHQtY29udGVudFwiXG4gICAgICAgICBbaWRdPVwiZmllbGQoKT8uZmllbGROYW1lICsgJ190ZXh0X2NvbnRlbnQnXCJcbiAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgJy0tdGV4dC1jb250ZW50LWJhY2tncm91bmQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRleHRDb250ZW50QmFja2dyb3VuZCB8fCAnI2ZmZicsXG4gICAgICAgICAgICctLXRleHQtY29udGVudC1jb2xvcic6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dENvbnRlbnRDb2xvciB8fCAnIzMzMycsXG4gICAgICAgICAgICctLXRleHQtY29udGVudC1mb250LWZhbWlseSc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dENvbnRlbnRGb250RmFtaWx5IHx8ICdDb25zb2xhcywgTW9uYWNvLCBDb3VyaWVyIE5ldywgbW9ub3NwYWNlJyxcbiAgICAgICAgICAgJy0tdGV4dC1jb250ZW50LWZvbnQtc2l6ZSc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dENvbnRlbnRGb250U2l6ZSB8fCAnMTRweCcsXG4gICAgICAgICAgICctLXRleHQtY29udGVudC1saW5lLWhlaWdodCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dENvbnRlbnRMaW5lSGVpZ2h0IHx8ICcxLjUnLFxuICAgICAgICAgICAnLS10ZXh0LWNvbnRlbnQtcGFkZGluZyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dENvbnRlbnRQYWRkaW5nIHx8ICcyMHB4JyxcbiAgICAgICAgICAgJy0tdGV4dC1jb250ZW50LW1hcmdpbic6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dENvbnRlbnRNYXJnaW4gfHwgJzAnXG4gICAgICAgICB9XCI+e3sgdGV4dENvbnRlbnQgfX08L3ByZT5cbiAgPC9kaXY+XG5cbiAgPCEtLSBVbnN1cHBvcnRlZCBGaWxlIC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXNVbnN1cHBvcnRlZCgpXCIgXG4gICAgICAgY2xhc3M9XCJwcmV2aWV3LWNvbnRhaW5lciB1bnN1cHBvcnRlZC1jb250YWluZXJcIlxuICAgICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWUgKyAnX3Vuc3VwcG9ydGVkX2NvbnRhaW5lcidcIlxuICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICctLXVuc3VwcG9ydGVkLWJhY2tncm91bmQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkQmFja2dyb3VuZCB8fCAnI2ZmZicsXG4gICAgICAgICAnLS11bnN1cHBvcnRlZC1ib3JkZXItcmFkaXVzJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy51bnN1cHBvcnRlZEJvcmRlclJhZGl1cyB8fCAnOHB4JyxcbiAgICAgICAgICctLXVuc3VwcG9ydGVkLXBhZGRpbmcnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkUGFkZGluZyB8fCAnNDBweCcsXG4gICAgICAgICAnLS11bnN1cHBvcnRlZC1taW4td2lkdGgnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkTWluV2lkdGggfHwgJzMwMHB4J1xuICAgICAgIH1cIj5cbiAgICBcbiAgICA8ZGl2IGNsYXNzPVwidW5zdXBwb3J0ZWQtY29udGVudFwiPlxuICAgICAgPGgzIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICctLXVuc3VwcG9ydGVkLXRpdGxlLWNvbG9yJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy51bnN1cHBvcnRlZFRpdGxlQ29sb3IgfHwgJyMzMzMnLFxuICAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGl0bGUtZm9udC1mYW1pbHknOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkVGl0bGVGb250RmFtaWx5IHx8ICdNdWxpc2gnLFxuICAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGl0bGUtZm9udC1zaXplJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy51bnN1cHBvcnRlZFRpdGxlRm9udFNpemUgfHwgJzE4cHgnLFxuICAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGl0bGUtZm9udC13ZWlnaHQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkVGl0bGVGb250V2VpZ2h0IHx8ICc2MDAnLFxuICAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGl0bGUtbWFyZ2luJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy51bnN1cHBvcnRlZFRpdGxlTWFyZ2luIHx8ICcwIDAgMjBweCAwJ1xuICAgICAgICAgIH1cIj57eyBmaWxlKCk/Lm5hbWUgfX08L2gzPlxuICAgICAgXG4gICAgICA8cCBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICctLXVuc3VwcG9ydGVkLXRleHQtY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkVGV4dENvbG9yIHx8ICcjNjY2JyxcbiAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGV4dC1mb250LXNpemUnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkVGV4dEZvbnRTaXplIHx8ICcxNHB4JyxcbiAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGV4dC1tYXJnaW4nOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkVGV4dE1hcmdpbiB8fCAnMCAwIDMwcHggMCdcbiAgICAgICAgIH1cIj57eyBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkTWVzc2FnZSB8fCAnUHJldmlldyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIGZpbGUgdHlwZScgfX08L3A+XG4gICAgICBcbiAgICAgIDxkaXYgY2xhc3M9XCJ1bnN1cHBvcnRlZC1hY3Rpb25zXCJcbiAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICctLWFjdGlvbnMtZ2FwJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5hY3Rpb25zR2FwIHx8ICcxNXB4JyxcbiAgICAgICAgICAgICAnLS1hY3Rpb25zLWp1c3RpZnknOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmFjdGlvbnNKdXN0aWZ5IHx8ICdjZW50ZXInXG4gICAgICAgICAgIH1cIj5cbiAgICAgICAgXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkRmlsZSgpXCIgXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWUgKyAnX2Rvd25sb2FkJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgJy0tYnRuLXByaW1hcnktYmFja2dyb3VuZCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuUHJpbWFyeUJhY2tncm91bmQgfHwgJyMwMDdiZmYnLFxuICAgICAgICAgICAgICAgICAgJy0tYnRuLXByaW1hcnktY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0blByaW1hcnlDb2xvciB8fCAnI2ZmZicsXG4gICAgICAgICAgICAgICAgICAnLS1idG4tYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuQm9yZGVyUmFkaXVzIHx8ICc0cHgnLFxuICAgICAgICAgICAgICAgICAgJy0tYnRuLXBhZGRpbmcnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0blBhZGRpbmcgfHwgJzhweCAxNnB4JyxcbiAgICAgICAgICAgICAgICAgICctLWJ0bi1mb250LXNpemUnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0bkZvbnRTaXplIHx8ICcxNHB4J1xuICAgICAgICAgICAgICAgIH1cIj57eyBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmRvd25sb2FkVGV4dCB8fCAnRG93bmxvYWQnIH19PC9idXR0b24+XG4gICAgICAgIFxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZVByZXZpZXcoKVwiIFxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWUgKyAnX2Nsb3NlX3Vuc3VwcG9ydGVkJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgJy0tYnRuLXNlY29uZGFyeS1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5idG5TZWNvbmRhcnlCYWNrZ3JvdW5kIHx8ICcjNmM3NTdkJyxcbiAgICAgICAgICAgICAgICAgICctLWJ0bi1zZWNvbmRhcnktY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0blNlY29uZGFyeUNvbG9yIHx8ICcjZmZmJyxcbiAgICAgICAgICAgICAgICAgICctLWJ0bi1ib3JkZXItcmFkaXVzJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5idG5Cb3JkZXJSYWRpdXMgfHwgJzRweCcsXG4gICAgICAgICAgICAgICAgICAnLS1idG4tcGFkZGluZyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuUGFkZGluZyB8fCAnOHB4IDE2cHgnLFxuICAgICAgICAgICAgICAgICAgJy0tYnRuLWZvbnQtc2l6ZSc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuRm9udFNpemUgfHwgJzE0cHgnXG4gICAgICAgICAgICAgICAgfVwiPnt7IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VUZXh0IHx8ICdDbG9zZScgfX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvZmlsZS1wcmV2aWV3L2ZpbGUtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL2ZpbGUtcHJldmlldy9maWxlLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7OztBQVcxRixNQUFNLE9BQU8sb0JBQW9CO0lBVVg7SUFBZ0M7SUFUcEQsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQU8sQ0FBQztJQUM5QixJQUFJLEdBQUcsS0FBSyxDQUFjLElBQUksQ0FBQyxDQUFDO0lBRXRCLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRTVDLFdBQVcsR0FBUSxFQUFFLENBQUM7SUFDdEIsYUFBYSxHQUFRLEVBQUUsQ0FBQztJQUN4QixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLFdBQVcsR0FBMkIsSUFBSSxDQUFDO0lBQzNDLFlBQW9CLFNBQXVCLEVBQVMsYUFBbUM7UUFBbkUsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtJQUFHLENBQUM7SUFDM0YsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3pELENBQUM7SUFFQSxLQUFLO1FBQ0osT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxLQUFLLGlCQUFpQixJQUFJLEtBQUssQ0FBQztJQUMxRCxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3hELENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFFLFlBQVk7SUFDMUUsQ0FBQztJQUVELFFBQVE7UUFDTixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNULFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUV6QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBYSxDQUFDO1lBQzdDLENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkYsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFhLENBQUM7WUFDN0MsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVDLGVBQWUsQ0FBQyxLQUFZO1FBQzFCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBRXpCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBRTVCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7d0dBdEZVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLG1XQ1pqQyxzMmFBdU9BLGk3SkQvTlksWUFBWTs7NEZBSVgsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7b0hBUWIsTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE1hc3RlckNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi4vbWFzdGVyLWNvbnRyb2wuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1maWxlLXByZXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9maWxlLXByZXZpZXcuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVByZXZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGZpZWxkID0gaW5wdXQucmVxdWlyZWQ8YW55PigpO1xuICBmaWxlID0gaW5wdXQ8RmlsZSB8IG51bGw+KG51bGwpO1xuXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgZmlsZURhdGFVcmw6IGFueSA9ICcnO1xuICBmaWxlT2JqZWN0VXJsOiBhbnkgPSAnJztcbiAgdGV4dENvbnRlbnQ6IGFueSA9ICcnO1xuICBzYWZlRmlsZVVybDogU2FmZVJlc291cmNlVXJsIHwgbnVsbCA9IG51bGw7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHB1YmxpYyBtYXN0ZXJTZXJ2aWNlOiBNYXN0ZXJDb250cm9sU2VydmljZSkge31cbiAgaXNJbWFnZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZpbGUoKT8udHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSB8fCBmYWxzZTtcbiAgfVxuXG4gICBpc1BkZigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZpbGUoKT8udHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicgfHwgZmFsc2U7XG4gIH1cblxuICBpc1RleHQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5maWxlKCk/LnR5cGUuc3RhcnRzV2l0aCgndGV4dC8nKSB8fCBmYWxzZTtcbiAgfVxuXG4gIGlzVW5zdXBwb3J0ZWQoKTogYW55IHtcbiAgICByZXR1cm4gIXRoaXMuaXNJbWFnZSgpICYmICF0aGlzLmlzUGRmKCkgJiYgIXRoaXMuaXNUZXh0KCk7ICAvLyDinIUgQ29ycmVjdFxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgIHRoaXMubG9hZEZpbGVDb250ZW50KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJyc7XG4gICAgaWYgKHRoaXMuZmlsZU9iamVjdFVybCkge1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLmZpbGVPYmplY3RVcmwpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRGaWxlQ29udGVudCgpIHtcbiAgY29uc3QgY3VycmVudEZpbGUgPSB0aGlzLmZpbGUoKTtcbiAgaWYgKCFjdXJyZW50RmlsZSkgcmV0dXJuO1xuXG4gIGlmICh0aGlzLmlzSW1hZ2UoKSkge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgICB0aGlzLmZpbGVEYXRhVXJsID0gZS50YXJnZXQ/LnJlc3VsdCBhcyBhbnk7XG4gICAgfTtcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChjdXJyZW50RmlsZSk7XG4gIH0gZWxzZSBpZiAodGhpcy5pc1BkZigpKSB7XG4gICAgdGhpcy5maWxlT2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChjdXJyZW50RmlsZSk7XG4gICAgdGhpcy5zYWZlRmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmZpbGVPYmplY3RVcmwpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNUZXh0KCkpIHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgICAgdGhpcy50ZXh0Q29udGVudCA9IGUudGFyZ2V0Py5yZXN1bHQgYXMgYW55O1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc1RleHQoY3VycmVudEZpbGUpO1xuICB9XG59XG5cbiAgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgIHRoaXMuY2xvc2VQcmV2aWV3KCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VQcmV2aWV3KCkge1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgfVxuXG4gIGRvd25sb2FkRmlsZSgpIHtcbiAgICBjb25zdCBjdXJyZW50RmlsZSA9IHRoaXMuZmlsZSgpO1xuICAgIGlmICghY3VycmVudEZpbGUpIHJldHVybjtcblxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoY3VycmVudEZpbGUpO1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuZG93bmxvYWQgPSBjdXJyZW50RmlsZS5uYW1lO1xuICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgbGluay5jbGljaygpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IFVSTC5yZXZva2VPYmplY3RVUkwodXJsKSwgMTAwKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZpbGUtcHJldmlldy1tb2RhbFwiXG4gICAgICpuZ0lmPVwiZmllbGQoKSAmJiBmaWVsZCgpPy5pc1Zpc2libGVcIlxuICAgICBbaWRdPVwidGhpcy5tYXN0ZXJTZXJ2aWNlLnJlcGxhY2VTcGFjZXNXaXRoVW5kZXJzY29yZXMoZmllbGQoKT8ubGFiZWwpICsgJ19wcmV2aWV3J1wiXG4gICAgIChjbGljayk9XCJvbkJhY2tkcm9wQ2xpY2soJGV2ZW50KVwiXG4gICAgIChrZXlkb3duLmVzY2FwZSk9XCJjbG9zZVByZXZpZXcoKVwiXG4gICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAnLS1tb2RhbC1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5tb2RhbEJhY2tncm91bmQgfHwgJ3JnYmEoMCwgMCwgMCwgMC45KScsXG4gICAgICAgJy0tbW9kYWwtei1pbmRleCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uekluZGV4IHx8ICcxMDAwMCcsXG4gICAgICAgJy0tbW9kYWwtd2lkdGgnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LndpZHRoIHx8ICcxMDAlJyxcbiAgICAgICAnLS1tb2RhbC1oZWlnaHQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmhlaWdodCB8fCAnMTAwJSdcbiAgICAgfVwiPlxuXG4gIDwhLS0gSW1hZ2UgUHJldmlldyAtLT5cbiAgPGRpdiAqbmdJZj1cImlzSW1hZ2UoKVwiXG4gICAgICAgY2xhc3M9XCJwcmV2aWV3LWNvbnRhaW5lciBpbWFnZS1jb250YWluZXJcIlxuICAgICAgIFtpZF09XCJ0aGlzLm1hc3RlclNlcnZpY2UucmVwbGFjZVNwYWNlc1dpdGhVbmRlcnNjb3JlcyhmaWVsZCgpPy5sYWJlbCkgKyAnX2ltYWdlX2NvbnRhaW5lcidcIlxuICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICctLWltYWdlLWNvbnRhaW5lci1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5pbWFnZUNvbnRhaW5lckJhY2tncm91bmQgfHwgJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICctLWltYWdlLWNvbnRhaW5lci1ib3JkZXItcmFkaXVzJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5pbWFnZUNvbnRhaW5lckJvcmRlclJhZGl1cyB8fCAnOHB4JyxcbiAgICAgICAgICctLWltYWdlLWNvbnRhaW5lci1wYWRkaW5nJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5pbWFnZUNvbnRhaW5lclBhZGRpbmcgfHwgJzIwcHgnLFxuICAgICAgICAgJy0taW1hZ2UtY29udGFpbmVyLW1hcmdpbic6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uaW1hZ2VDb250YWluZXJNYXJnaW4gfHwgJzAnXG4gICAgICAgfVwiPlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ0blwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtpZF09XCJ0aGlzLm1hc3RlclNlcnZpY2UucmVwbGFjZVNwYWNlc1dpdGhVbmRlcnNjb3JlcyhmaWVsZCgpPy5sYWJlbCkgKyAnX2Nsb3NlX2J0bidcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUHJldmlldygpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmNsb3NlQnRuVGl0bGUgfHwgJ0Nsb3NlJ1wiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICctLWNsb3NlLWJ0bi1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5jbG9zZUJ0bkJhY2tncm91bmQgfHwgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC45KScsXG4gICAgICAgICAgICAgICctLWNsb3NlLWJ0bi1jb2xvcic6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5Db2xvciB8fCAnIzAwMCcsXG4gICAgICAgICAgICAgICctLWNsb3NlLWJ0bi1ib3JkZXItcmFkaXVzJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5jbG9zZUJ0bkJvcmRlclJhZGl1cyB8fCAnNTAlJyxcbiAgICAgICAgICAgICAgJy0tY2xvc2UtYnRuLWZvbnQtc2l6ZSc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5Gb250U2l6ZSB8fCAnMjBweCcsXG4gICAgICAgICAgICAgICctLWNsb3NlLWJ0bi1mb250LXdlaWdodCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5Gb250V2VpZ2h0IHx8ICdib2xkJyxcbiAgICAgICAgICAgICAgJy0tY2xvc2UtYnRuLWhvdmVyLWJhY2tncm91bmQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmNsb3NlQnRuSG92ZXJCYWNrZ3JvdW5kIHx8ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDEpJ1xuICAgICAgICAgICAgfVwiPiZ0aW1lczs8L2J1dHRvbj5cblxuICAgIDxoMyBjbGFzcz1cImZpbGUtdGl0bGVcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJy0tdGl0bGUtY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRpdGxlQ29sb3IgfHwgJyNmZmYnLFxuICAgICAgICAgICctLXRpdGxlLWZvbnQtZmFtaWx5JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50aXRsZUZvbnRGYW1pbHkgfHwgJ011bGlzaCcsXG4gICAgICAgICAgJy0tdGl0bGUtZm9udC1zaXplJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50aXRsZUZvbnRTaXplIHx8ICcxOHB4JyxcbiAgICAgICAgICAnLS10aXRsZS1mb250LXdlaWdodCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGl0bGVGb250V2VpZ2h0IHx8ICc2MDAnLFxuICAgICAgICAgICctLXRpdGxlLW1hcmdpbic6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGl0bGVNYXJnaW4gfHwgJzAgMCAxMHB4IDAnLFxuICAgICAgICAgICctLXRpdGxlLXBhZGRpbmcnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRpdGxlUGFkZGluZyB8fCAnMCAxMHB4J1xuICAgICAgICB9XCI+e3sgZmlsZSgpPy5uYW1lIH19PC9oMz5cblxuICAgIDxpbWcgW3NyY109XCJmaWxlRGF0YVVybFwiXG4gICAgICAgICBbYWx0XT1cImZpbGUoKT8ubmFtZVwiXG4gICAgICAgICBbaWRdPVwidGhpcy5tYXN0ZXJTZXJ2aWNlLnJlcGxhY2VTcGFjZXNXaXRoVW5kZXJzY29yZXMoZmllbGQoKT8ubGFiZWwpICsgJ19wcmV2aWV3X2ltYWdlJ1wiXG4gICAgICAgICBjbGFzcz1cInByZXZpZXctaW1hZ2VcIlxuICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAnLS1pbWFnZS1tYXgtd2lkdGgnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmltYWdlTWF4V2lkdGggfHwgJzEwMCUnLFxuICAgICAgICAgICAnLS1pbWFnZS1tYXgtaGVpZ2h0JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5pbWFnZU1heEhlaWdodCB8fCAnODB2aCcsXG4gICAgICAgICAgICctLWltYWdlLWJvcmRlci1yYWRpdXMnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmltYWdlQm9yZGVyUmFkaXVzIHx8ICc4cHgnLFxuICAgICAgICAgICAnLS1pbWFnZS1ib3gtc2hhZG93JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5pbWFnZUJveFNoYWRvdyB8fCAnMCA0cHggMjBweCByZ2JhKDAsMCwwLDAuNSknLFxuICAgICAgICAgICAnLS1pbWFnZS1vYmplY3QtZml0JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5pbWFnZU9iamVjdEZpdCB8fCAnY29udGFpbidcbiAgICAgICAgIH1cIiAvPlxuICA8L2Rpdj5cblxuICA8IS0tIFBERiBQcmV2aWV3IC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXNQZGYoKVwiXG4gICAgICAgY2xhc3M9XCJwcmV2aWV3LWNvbnRhaW5lciBwZGYtY29udGFpbmVyXCJcbiAgICAgICBbaWRdPVwidGhpcy5tYXN0ZXJTZXJ2aWNlLnJlcGxhY2VTcGFjZXNXaXRoVW5kZXJzY29yZXMoZmllbGQoKT8ubGFiZWwpICsgJ19wZGZfY29udGFpbmVyJ1wiXG4gICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgJy0tcGRmLWNvbnRhaW5lci1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5wZGZDb250YWluZXJCYWNrZ3JvdW5kIHx8ICcjZmZmJyxcbiAgICAgICAgICctLXBkZi1jb250YWluZXItYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8ucGRmQ29udGFpbmVyQm9yZGVyUmFkaXVzIHx8ICc4cHgnLFxuICAgICAgICAgJy0tcGRmLWNvbnRhaW5lci13aWR0aCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8ucGRmQ29udGFpbmVyV2lkdGggfHwgJzk1dncnLFxuICAgICAgICAgJy0tcGRmLWNvbnRhaW5lci1oZWlnaHQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnBkZkNvbnRhaW5lckhlaWdodCB8fCAnOTV2aCdcbiAgICAgICB9XCI+XG5cbiAgICA8IS0tIFRvcC1yaWdodCBhY3Rpb24gYnV0dG9ucyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwicGRmLWFjdGlvbnMtdG9wLXJpZ2h0XCJcbiAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgJy0tYWN0aW9ucy10b3AnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmFjdGlvbnNUb3AgfHwgJzE1cHgnLFxuICAgICAgICAgICAnLS1hY3Rpb25zLXJpZ2h0JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5hY3Rpb25zUmlnaHQgfHwgJzE1cHgnLFxuICAgICAgICAgICAnLS1hY3Rpb25zLWdhcCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYWN0aW9uc0dhcCB8fCAnMTBweCdcbiAgICAgICAgIH1cIj5cblxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2VQcmV2aWV3KClcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvbi1idG4gY2xvc2UtYnRuXCJcbiAgICAgICAgICAgICAgW2lkXT1cInRoaXMubWFzdGVyU2VydmljZS5yZXBsYWNlU3BhY2VzV2l0aFVuZGVyc2NvcmVzKGZpZWxkKCk/LmxhYmVsKSArICdfY2xvc2VfcGRmJ1wiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmNsb3NlQnRuVGl0bGUgfHwgJ0Nsb3NlJ1wiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAnLS1jbG9zZS1idG4tYmFja2dyb3VuZCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5CYWNrZ3JvdW5kIHx8ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSknLFxuICAgICAgICAgICAgICAgICctLWNsb3NlLWJ0bi1jb2xvcic6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5Db2xvciB8fCAnIzAwMCcsXG4gICAgICAgICAgICAgICAgJy0tY2xvc2UtYnRuLWJvcmRlci1yYWRpdXMnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmNsb3NlQnRuQm9yZGVyUmFkaXVzIHx8ICc1MCUnLFxuICAgICAgICAgICAgICAgICctLWNsb3NlLWJ0bi1mb250LXNpemUnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmNsb3NlQnRuRm9udFNpemUgfHwgJzIwcHgnLFxuICAgICAgICAgICAgICAgICctLWNsb3NlLWJ0bi1mb250LXdlaWdodCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5Gb250V2VpZ2h0IHx8ICdib2xkJyxcbiAgICAgICAgICAgICAgICAnLS1jbG9zZS1idG4taG92ZXItYmFja2dyb3VuZCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VCdG5Ib3ZlckJhY2tncm91bmQgfHwgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMSknXG4gICAgICAgICAgICAgIH1cIj4mdGltZXM7PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEZpbGUgdGl0bGUgLS0+XG4gICAgPGgzIGNsYXNzPVwiZmlsZS10aXRsZSBwZGYtdGl0bGVcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJy0tcGRmLXRpdGxlLWNvbG9yJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5wZGZUaXRsZUNvbG9yIHx8ICcjMzMzJyxcbiAgICAgICAgICAnLS1wZGYtdGl0bGUtZm9udC1mYW1pbHknOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnBkZlRpdGxlRm9udEZhbWlseSB8fCAnTXVsaXNoJyxcbiAgICAgICAgICAnLS1wZGYtdGl0bGUtZm9udC1zaXplJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5wZGZUaXRsZUZvbnRTaXplIHx8ICcxNnB4JyxcbiAgICAgICAgICAnLS1wZGYtdGl0bGUtZm9udC13ZWlnaHQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnBkZlRpdGxlRm9udFdlaWdodCB8fCAnNjAwJyxcbiAgICAgICAgICAnLS1wZGYtdGl0bGUtbWFyZ2luJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5wZGZUaXRsZU1hcmdpbiB8fCAnMHB4IDIwcHggMTBweCAyMHB4JyxcbiAgICAgICAgICAnLS1wZGYtdGl0bGUtcGFkZGluZyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8ucGRmVGl0bGVQYWRkaW5nIHx8ICcwJ1xuICAgICAgICB9XCI+e3sgZmlsZSgpPy5uYW1lIH19PC9oMz5cblxuICAgIDxpZnJhbWUgW3NyY109XCJzYWZlRmlsZVVybFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiZmlsZSgpPy5uYW1lXCJcbiAgICAgICAgICAgIFtpZF09XCJ0aGlzLm1hc3RlclNlcnZpY2UucmVwbGFjZVNwYWNlc1dpdGhVbmRlcnNjb3JlcyhmaWVsZCgpPy5sYWJlbCkgKyAnX3BkZl9pZnJhbWUnXCJcbiAgICAgICAgICAgIGNsYXNzPVwicGRmLWlmcmFtZVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICctLWlmcmFtZS1ib3JkZXInOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmlmcmFtZUJvcmRlciB8fCAnbm9uZScsXG4gICAgICAgICAgICAgICctLWlmcmFtZS1ib3JkZXItcmFkaXVzJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5pZnJhbWVCb3JkZXJSYWRpdXMgfHwgJzAnLFxuICAgICAgICAgICAgICAnLS1pZnJhbWUtd2lkdGgnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmlmcmFtZVdpZHRoIHx8ICcxMDAlJyxcbiAgICAgICAgICAgICAgJy0taWZyYW1lLWhlaWdodCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uaWZyYW1lSGVpZ2h0IHx8ICdjYWxjKDEwMCUgLSA4MHB4KScsXG4gICAgICAgICAgICAgICctLWlmcmFtZS1taW4taGVpZ2h0JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5pZnJhbWVNaW5IZWlnaHQgfHwgJzYwMHB4J1xuICAgICAgICAgICAgfVwiPjwvaWZyYW1lPlxuICA8L2Rpdj5cblxuICA8IS0tIFRleHQgUHJldmlldyAtLT5cbiAgPGRpdiAqbmdJZj1cImlzVGV4dCgpXCJcbiAgICAgICBjbGFzcz1cInByZXZpZXctY29udGFpbmVyIHRleHQtY29udGFpbmVyXCJcbiAgICAgICBbaWRdPVwidGhpcy5tYXN0ZXJTZXJ2aWNlLnJlcGxhY2VTcGFjZXNXaXRoVW5kZXJzY29yZXMoZmllbGQoKT8ubGFiZWwpICsgJ190ZXh0X2NvbnRhaW5lcidcIlxuICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICctLXRleHQtY29udGFpbmVyLWJhY2tncm91bmQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRleHRDb250YWluZXJCYWNrZ3JvdW5kIHx8ICcjZmZmJyxcbiAgICAgICAgICctLXRleHQtY29udGFpbmVyLWJvcmRlci1yYWRpdXMnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRleHRDb250YWluZXJCb3JkZXJSYWRpdXMgfHwgJzhweCcsXG4gICAgICAgICAnLS10ZXh0LWNvbnRhaW5lci13aWR0aCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dENvbnRhaW5lcldpZHRoIHx8ICc5NXZ3JyxcbiAgICAgICAgICctLXRleHQtY29udGFpbmVyLWhlaWdodCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dENvbnRhaW5lckhlaWdodCB8fCAnOTV2aCdcbiAgICAgICB9XCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1oZWFkZXJcIlxuICAgICAgICAgW2lkXT1cInRoaXMubWFzdGVyU2VydmljZS5yZXBsYWNlU3BhY2VzV2l0aFVuZGVyc2NvcmVzKGZpZWxkKCk/LmxhYmVsKSArICdfdGV4dF9oZWFkZXInXCJcbiAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgJy0tdGV4dC1oZWFkZXItYmFja2dyb3VuZCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dEhlYWRlckJhY2tncm91bmQgfHwgJyNmOGY5ZmEnLFxuICAgICAgICAgICAnLS10ZXh0LWhlYWRlci1ib3JkZXItY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRleHRIZWFkZXJCb3JkZXJDb2xvciB8fCAnI2RlZTJlNicsXG4gICAgICAgICAgICctLXRleHQtaGVhZGVyLXBhZGRpbmcnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRleHRIZWFkZXJQYWRkaW5nIHx8ICcxNXB4IDIwcHgnXG4gICAgICAgICB9XCI+XG5cbiAgICAgIDxoMyBjbGFzcz1cImZpbGUtdGl0bGVcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICctLXRleHQtdGl0bGUtY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRleHRUaXRsZUNvbG9yIHx8ICcjMzMzJyxcbiAgICAgICAgICAgICctLXRleHQtdGl0bGUtZm9udC1mYW1pbHknOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnRleHRUaXRsZUZvbnRGYW1pbHkgfHwgJ011bGlzaCcsXG4gICAgICAgICAgICAnLS10ZXh0LXRpdGxlLWZvbnQtc2l6ZSc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dFRpdGxlRm9udFNpemUgfHwgJzE2cHgnLFxuICAgICAgICAgICAgJy0tdGV4dC10aXRsZS1mb250LXdlaWdodCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dFRpdGxlRm9udFdlaWdodCB8fCAnNjAwJyxcbiAgICAgICAgICAgICctLXRleHQtdGl0bGUtbWFyZ2luJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0VGl0bGVNYXJnaW4gfHwgJzAnXG4gICAgICAgICAgfVwiPnt7IGZpbGUoKT8ubmFtZSB9fTwvaDM+XG5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlUHJldmlldygpXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIlxuICAgICAgICAgICAgICBbaWRdPVwidGhpcy5tYXN0ZXJTZXJ2aWNlLnJlcGxhY2VTcGFjZXNXaXRoVW5kZXJzY29yZXMoZmllbGQoKT8ubGFiZWwpICsgJ19jbG9zZV90ZXh0J1wiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAnLS1idG4tZGFuZ2VyLWJhY2tncm91bmQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0bkRhbmdlckJhY2tncm91bmQgfHwgJyNkYzM1NDUnLFxuICAgICAgICAgICAgICAgICctLWJ0bi1kYW5nZXItY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0bkRhbmdlckNvbG9yIHx8ICcjZmZmJyxcbiAgICAgICAgICAgICAgICAnLS1idG4tYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuQm9yZGVyUmFkaXVzIHx8ICc0cHgnLFxuICAgICAgICAgICAgICAgICctLWJ0bi1wYWRkaW5nJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5idG5QYWRkaW5nIHx8ICc4cHggMTZweCcsXG4gICAgICAgICAgICAgICAgJy0tYnRuLWZvbnQtc2l6ZSc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuRm9udFNpemUgfHwgJzE0cHgnXG4gICAgICAgICAgICAgIH1cIj57eyBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmNsb3NlVGV4dCB8fCAnQ2xvc2UnIH19PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8cHJlIGNsYXNzPVwidGV4dC1jb250ZW50XCJcbiAgICAgICAgIFtpZF09XCJ0aGlzLm1hc3RlclNlcnZpY2UucmVwbGFjZVNwYWNlc1dpdGhVbmRlcnNjb3JlcyhmaWVsZCgpPy5sYWJlbCkgKyAnX3RleHRfY29udGVudCdcIlxuICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAnLS10ZXh0LWNvbnRlbnQtYmFja2dyb3VuZCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udGV4dENvbnRlbnRCYWNrZ3JvdW5kIHx8ICcjZmZmJyxcbiAgICAgICAgICAgJy0tdGV4dC1jb250ZW50LWNvbG9yJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0Q29udGVudENvbG9yIHx8ICcjMzMzJyxcbiAgICAgICAgICAgJy0tdGV4dC1jb250ZW50LWZvbnQtZmFtaWx5JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0Q29udGVudEZvbnRGYW1pbHkgfHwgJ0NvbnNvbGFzLCBNb25hY28sIENvdXJpZXIgTmV3LCBtb25vc3BhY2UnLFxuICAgICAgICAgICAnLS10ZXh0LWNvbnRlbnQtZm9udC1zaXplJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0Q29udGVudEZvbnRTaXplIHx8ICcxNHB4JyxcbiAgICAgICAgICAgJy0tdGV4dC1jb250ZW50LWxpbmUtaGVpZ2h0JzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0Q29udGVudExpbmVIZWlnaHQgfHwgJzEuNScsXG4gICAgICAgICAgICctLXRleHQtY29udGVudC1wYWRkaW5nJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0Q29udGVudFBhZGRpbmcgfHwgJzIwcHgnLFxuICAgICAgICAgICAnLS10ZXh0LWNvbnRlbnQtbWFyZ2luJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy50ZXh0Q29udGVudE1hcmdpbiB8fCAnMCdcbiAgICAgICAgIH1cIj57eyB0ZXh0Q29udGVudCB9fTwvcHJlPlxuICA8L2Rpdj5cblxuICA8IS0tIFVuc3VwcG9ydGVkIEZpbGUgLS0+XG4gIDxkaXYgKm5nSWY9XCJpc1Vuc3VwcG9ydGVkKClcIlxuICAgICAgIGNsYXNzPVwicHJldmlldy1jb250YWluZXIgdW5zdXBwb3J0ZWQtY29udGFpbmVyXCJcbiAgICAgICBbaWRdPVwidGhpcy5tYXN0ZXJTZXJ2aWNlLnJlcGxhY2VTcGFjZXNXaXRoVW5kZXJzY29yZXMoZmllbGQoKT8ubGFiZWwpICsgJ191bnN1cHBvcnRlZF9jb250YWluZXInXCJcbiAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAnLS11bnN1cHBvcnRlZC1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy51bnN1cHBvcnRlZEJhY2tncm91bmQgfHwgJyNmZmYnLFxuICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8udW5zdXBwb3J0ZWRCb3JkZXJSYWRpdXMgfHwgJzhweCcsXG4gICAgICAgICAnLS11bnN1cHBvcnRlZC1wYWRkaW5nJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy51bnN1cHBvcnRlZFBhZGRpbmcgfHwgJzQwcHgnLFxuICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtbWluLXdpZHRoJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy51bnN1cHBvcnRlZE1pbldpZHRoIHx8ICczMDBweCdcbiAgICAgICB9XCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidW5zdXBwb3J0ZWQtY29udGVudFwiPlxuICAgICAgPGgzIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICctLXVuc3VwcG9ydGVkLXRpdGxlLWNvbG9yJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy51bnN1cHBvcnRlZFRpdGxlQ29sb3IgfHwgJyMzMzMnLFxuICAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGl0bGUtZm9udC1mYW1pbHknOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkVGl0bGVGb250RmFtaWx5IHx8ICdNdWxpc2gnLFxuICAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGl0bGUtZm9udC1zaXplJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy51bnN1cHBvcnRlZFRpdGxlRm9udFNpemUgfHwgJzE4cHgnLFxuICAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGl0bGUtZm9udC13ZWlnaHQnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkVGl0bGVGb250V2VpZ2h0IHx8ICc2MDAnLFxuICAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGl0bGUtbWFyZ2luJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy51bnN1cHBvcnRlZFRpdGxlTWFyZ2luIHx8ICcwIDAgMjBweCAwJ1xuICAgICAgICAgIH1cIj57eyBmaWxlKCk/Lm5hbWUgfX08L2gzPlxuXG4gICAgICA8cCBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICctLXVuc3VwcG9ydGVkLXRleHQtY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkVGV4dENvbG9yIHx8ICcjNjY2JyxcbiAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGV4dC1mb250LXNpemUnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkVGV4dEZvbnRTaXplIHx8ICcxNHB4JyxcbiAgICAgICAgICAgJy0tdW5zdXBwb3J0ZWQtdGV4dC1tYXJnaW4nOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkVGV4dE1hcmdpbiB8fCAnMCAwIDMwcHggMCdcbiAgICAgICAgIH1cIj57eyBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LnVuc3VwcG9ydGVkTWVzc2FnZSB8fCAnUHJldmlldyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIGZpbGUgdHlwZScgfX08L3A+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1bnN1cHBvcnRlZC1hY3Rpb25zXCJcbiAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICctLWFjdGlvbnMtZ2FwJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5hY3Rpb25zR2FwIHx8ICcxNXB4JyxcbiAgICAgICAgICAgICAnLS1hY3Rpb25zLWp1c3RpZnknOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmFjdGlvbnNKdXN0aWZ5IHx8ICdjZW50ZXInXG4gICAgICAgICAgIH1cIj5cblxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZEZpbGUoKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJ0aGlzLm1hc3RlclNlcnZpY2UucmVwbGFjZVNwYWNlc1dpdGhVbmRlcnNjb3JlcyhmaWVsZCgpPy5sYWJlbCkgKyAnX2Rvd25sb2FkJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgJy0tYnRuLXByaW1hcnktYmFja2dyb3VuZCc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuUHJpbWFyeUJhY2tncm91bmQgfHwgJyMwMDdiZmYnLFxuICAgICAgICAgICAgICAgICAgJy0tYnRuLXByaW1hcnktY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0blByaW1hcnlDb2xvciB8fCAnI2ZmZicsXG4gICAgICAgICAgICAgICAgICAnLS1idG4tYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuQm9yZGVyUmFkaXVzIHx8ICc0cHgnLFxuICAgICAgICAgICAgICAgICAgJy0tYnRuLXBhZGRpbmcnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0blBhZGRpbmcgfHwgJzhweCAxNnB4JyxcbiAgICAgICAgICAgICAgICAgICctLWJ0bi1mb250LXNpemUnOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0bkZvbnRTaXplIHx8ICcxNHB4J1xuICAgICAgICAgICAgICAgIH1cIj57eyBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmRvd25sb2FkVGV4dCB8fCAnRG93bmxvYWQnIH19PC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2VQcmV2aWV3KClcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJ0aGlzLm1hc3RlclNlcnZpY2UucmVwbGFjZVNwYWNlc1dpdGhVbmRlcnNjb3JlcyhmaWVsZCgpPy5sYWJlbCkgKyAnX2Nsb3NlX3Vuc3VwcG9ydGVkJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgJy0tYnRuLXNlY29uZGFyeS1iYWNrZ3JvdW5kJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5idG5TZWNvbmRhcnlCYWNrZ3JvdW5kIHx8ICcjNmM3NTdkJyxcbiAgICAgICAgICAgICAgICAgICctLWJ0bi1zZWNvbmRhcnktY29sb3InOiBmaWVsZCgpPy5wcmV2aWV3U3R5bGU/LmJ0blNlY29uZGFyeUNvbG9yIHx8ICcjZmZmJyxcbiAgICAgICAgICAgICAgICAgICctLWJ0bi1ib3JkZXItcmFkaXVzJzogZmllbGQoKT8ucHJldmlld1N0eWxlPy5idG5Cb3JkZXJSYWRpdXMgfHwgJzRweCcsXG4gICAgICAgICAgICAgICAgICAnLS1idG4tcGFkZGluZyc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuUGFkZGluZyB8fCAnOHB4IDE2cHgnLFxuICAgICAgICAgICAgICAgICAgJy0tYnRuLWZvbnQtc2l6ZSc6IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uYnRuRm9udFNpemUgfHwgJzE0cHgnXG4gICAgICAgICAgICAgICAgfVwiPnt7IGZpZWxkKCk/LnByZXZpZXdTdHlsZT8uY2xvc2VUZXh0IHx8ICdDbG9zZScgfX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -2,13 +2,16 @@ import { CommonModule } from '@angular/common';
2
2
  import { Component, input } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/platform-browser";
5
- import * as i2 from "@angular/common";
5
+ import * as i2 from "../master-control.service";
6
+ import * as i3 from "@angular/common";
6
7
  export class IframeComponent {
7
8
  sanitizer;
9
+ masterService;
8
10
  field = input.required();
9
11
  safeUrl = null;
10
- constructor(sanitizer) {
12
+ constructor(sanitizer, masterService) {
11
13
  this.sanitizer = sanitizer;
14
+ this.masterService = masterService;
12
15
  }
13
16
  ngOnInit() {
14
17
  if (this.field() && this.field().imageUrl) {
@@ -22,11 +25,11 @@ export class IframeComponent {
22
25
  }
23
26
  return iframeUrl;
24
27
  }
25
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IframeComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
26
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: IframeComponent, isStandalone: true, selector: "lib-iframe", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div *ngIf=\"field().imageUrl\">\n <iframe [id]=\"field().fieldName\" width=\"100%\" height=\"500px\" style=\"border: none\"></iframe>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IframeComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.MasterControlService }], target: i0.ɵɵFactoryTarget.Component });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: IframeComponent, isStandalone: true, selector: "lib-iframe", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div *ngIf=\"field().imageUrl\">\n <iframe [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label)\" width=\"100%\" height=\"500px\" style=\"border: none\"></iframe>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
27
30
  }
28
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IframeComponent, decorators: [{
29
32
  type: Component,
30
- args: [{ selector: 'lib-iframe', standalone: true, imports: [CommonModule], template: "<div *ngIf=\"field().imageUrl\">\n <iframe [id]=\"field().fieldName\" width=\"100%\" height=\"500px\" style=\"border: none\"></iframe>\n</div>\n" }]
31
- }], ctorParameters: () => [{ type: i1.DomSanitizer }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZyYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvaWZyYW1lL2lmcmFtZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL2lmcmFtZS9pZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7O0FBVXpELE1BQU0sT0FBTyxlQUFlO0lBSU47SUFIcEIsS0FBSyxHQUFRLEtBQUssQ0FBQyxRQUFRLEVBQU8sQ0FBQztJQUNuQyxPQUFPLEdBQTJCLElBQUksQ0FBQztJQUV2QyxZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQztJQUU3QyxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxTQUFTLEdBQVMsSUFBSSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkYsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7d0dBbEJRLGVBQWU7NEZBQWYsZUFBZSx5TUNYNUIsbUpBR0EseURESVksWUFBWTs7NEZBSVgsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWlmcmFtZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vaWZyYW1lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2lmcmFtZS5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBJZnJhbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmaWVsZDogYW55ID0gaW5wdXQucmVxdWlyZWQ8YW55PigpO1xuICBzYWZlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICBpZiAodGhpcy5maWVsZCgpICYmIHRoaXMuZmllbGQoKS5pbWFnZVVybCkge1xuICAgICAgICB0aGlzLnNhZmVVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5maWVsZCgpLmltYWdlVXJsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJZnJhbWVVcmwoKSB7XG4gICAgICBsZXQgaWZyYW1lVXJsIDogYW55ID0gbnVsbDtcbiAgICAgIGlmICh0aGlzLmZpZWxkKCkgJiYgdGhpcy5maWVsZCgpLmltYWdlVXJsKSB7XG4gICAgICAgIGlmcmFtZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmZpZWxkKCkuaW1hZ2VVcmwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlmcmFtZVVybDtcbiAgICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJmaWVsZCgpLmltYWdlVXJsXCI+XG4gIDxpZnJhbWUgW2lkXT1cImZpZWxkKCkuZmllbGROYW1lXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiNTAwcHhcIiBzdHlsZT1cImJvcmRlcjogbm9uZVwiPjwvaWZyYW1lPlxuPC9kaXY+XG4iXX0=
33
+ args: [{ selector: 'lib-iframe', standalone: true, imports: [CommonModule], template: "<div *ngIf=\"field().imageUrl\">\n <iframe [id]=\"this.masterService.replaceSpacesWithUnderscores(field()?.label)\" width=\"100%\" height=\"500px\" style=\"border: none\"></iframe>\n</div>\n" }]
34
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.MasterControlService }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZyYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvaWZyYW1lL2lmcmFtZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL2lmcmFtZS9pZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7OztBQVV6RCxNQUFNLE9BQU8sZUFBZTtJQUlOO0lBQWdDO0lBSHBELEtBQUssR0FBUSxLQUFLLENBQUMsUUFBUSxFQUFPLENBQUM7SUFDbkMsT0FBTyxHQUEyQixJQUFJLENBQUM7SUFFdkMsWUFBb0IsU0FBdUIsRUFBUyxhQUFtQztRQUFuRSxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQXNCO0lBQUcsQ0FBQztJQUV6RixRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxTQUFTLEdBQVMsSUFBSSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkYsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7d0dBbEJRLGVBQWU7NEZBQWYsZUFBZSx5TUNYNUIsaU1BR0EseURESVksWUFBWTs7NEZBSVgsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE1hc3RlckNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi4vbWFzdGVyLWNvbnRyb2wuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItaWZyYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pZnJhbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vaWZyYW1lLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIElmcmFtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZpZWxkOiBhbnkgPSBpbnB1dC5yZXF1aXJlZDxhbnk+KCk7XG4gIHNhZmVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHB1YmxpYyBtYXN0ZXJTZXJ2aWNlOiBNYXN0ZXJDb250cm9sU2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgaWYgKHRoaXMuZmllbGQoKSAmJiB0aGlzLmZpZWxkKCkuaW1hZ2VVcmwpIHtcbiAgICAgICAgdGhpcy5zYWZlVXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuZmllbGQoKS5pbWFnZVVybCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SWZyYW1lVXJsKCkge1xuICAgICAgbGV0IGlmcmFtZVVybCA6IGFueSA9IG51bGw7XG4gICAgICBpZiAodGhpcy5maWVsZCgpICYmIHRoaXMuZmllbGQoKS5pbWFnZVVybCkge1xuICAgICAgICBpZnJhbWVVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5maWVsZCgpLmltYWdlVXJsKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpZnJhbWVVcmw7XG4gICAgfVxuXG59XG4iLCI8ZGl2ICpuZ0lmPVwiZmllbGQoKS5pbWFnZVVybFwiPlxuICA8aWZyYW1lIFtpZF09XCJ0aGlzLm1hc3RlclNlcnZpY2UucmVwbGFjZVNwYWNlc1dpdGhVbmRlcnNjb3JlcyhmaWVsZCgpPy5sYWJlbClcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI1MDBweFwiIHN0eWxlPVwiYm9yZGVyOiBub25lXCI+PC9pZnJhbWU+XG48L2Rpdj5cbiJdfQ==
@@ -4,11 +4,16 @@ import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
4
4
  import { MatFormFieldModule } from '@angular/material/form-field';
5
5
  import { MatInputModule } from '@angular/material/input';
6
6
  import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/material/form-field";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@angular/material/input";
10
- import * as i4 from "@angular/forms";
7
+ import * as i1 from "../master-control.service";
8
+ import * as i2 from "@angular/material/form-field";
9
+ import * as i3 from "@angular/common";
10
+ import * as i4 from "@angular/material/input";
11
+ import * as i5 from "@angular/forms";
11
12
  export class InfoTextboxComponent {
13
+ service;
14
+ constructor(service) {
15
+ this.service = service;
16
+ }
12
17
  field = input.required();
13
18
  inputValue = null;
14
19
  reactiveFormControlobject = input();
@@ -40,14 +45,14 @@ export class InfoTextboxComponent {
40
45
  handleWhereToFindClick() {
41
46
  this.infoClick.emit({ field: this.field });
42
47
  }
43
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InfoTextboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InfoTextboxComponent, deps: [{ token: i1.MasterControlService }], target: i0.ɵɵFactoryTarget.Component });
44
49
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: InfoTextboxComponent, isStandalone: true, selector: "lib-info-textbox", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, reactiveFormControlobject: { classPropertyName: "reactiveFormControlobject", publicName: "reactiveFormControlobject", isSignal: true, isRequired: false, transformFunction: null }, fields: { classPropertyName: "fields", publicName: "fields", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { infoClick: "infoClick" }, providers: [
45
50
  {
46
51
  provide: NG_VALUE_ACCESSOR,
47
52
  useExisting: InfoTextboxComponent,
48
53
  multi: true
49
54
  }
50
- ], ngImport: i0, template: "<label class=\"field-lable info-label\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\"\n >{{ field()?.label\n }}\n <!-- <span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\"\n >*</span\n > -->\n <span style=\"justify-content: end;\">\n <img class=\"mx-1\" *ngIf=\"field()?.configData?.imageURL\" [src]=\"field()?.configData?.imageURL\" alt=\"\">\n <u style=\"cursor: pointer;\" (click)=\"handleWhereToFindClick()\">{{field()?.configData?.infoMsg}}</u></span>\n </label\n>\n<mat-form-field\n class=\"w-100\"\n appearance=\"outline\"\n *ngIf=\"field() && field()?.isVisible\"\n [ngStyle]=\"{\n'--custom-border-color': field()?.controlStyle?.borderColor ,\n'--custom-border-width': field()?.controlStyle?.borderWidth ,\n'--custom-border-radius': field()?.controlStyle?.borderRadius ,\n'--custom-bg-color': field()?.controlStyle?.background ,\n'--custom-border-color-focus': field()?.controlStyle?.focusBorderColor ,\n'--custom-border-width-focus': field()?.controlStyle?.focusBorderWidth ,\n'--custom-bg-color-focus': field()?.controlStyle?.focusBackground ,\n'--custom-border-color-hover': field()?.controlStyle?.hoverBorderColor ,\n'--custom-border-width-hover': field()?.controlStyle?.hoverBorderWidth ,\n'--custom-border-color-error': field()?.controlStyle?.errorBorderColor ,\n'--custom-border-width-error': field()?.controlStyle?.errorBorderWidth ,\n'--custom-font-size': field()?.controlStyle?.fontSize ,\n'--custom-font-weight': field()?.controlStyle?.fontWeight ,\n'--custom-font-family': field()?.controlStyle?.fontFamily ,\n'--custom-font-color': field()?.controlStyle?.color ,\n'--custom-caret-color': field()?.controlStyle?.caretColor ,\n'--custom-font-color-disabled' : field()?.controlStyle?.disableColor ,\n'--custom-bg-color-disabled' : field()?.controlStyle?.disableBackground ,\n}\"\n>\n @if(reactiveFormControlobject()) {\n<input\n matInput\n autocomplete=\"off\"\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [placeholder]=\"field()?.placeHolder\"\n [maxLength]=\"field()?.validators?.maxLength\"\n [minLength]=\"field()?.validators?.minLength\"\n [disabled]=\"field()?.isDisable\"\n [required]=\"field()?.validators?.isRequired\"\n [pattern]=\"field()?.validators?.pattern\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur()\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n />\n }@else {\n <input\n matInput\n autocomplete=\"off\"\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [placeholder]=\"field()?.placeHolder\"\n [maxLength]=\"field()?.validators?.maxLength\"\n [minLength]=\"field()?.validators?.minLength\"\n [disabled]=\"field()?.isDisable\"\n [required]=\"field()?.validators?.isRequired\"\n [pattern]=\"field()?.validators?.pattern\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur()\"\n [value]=\"inputValue\"\n />\n }\n\n <mat-error *ngIf=\"false\">\n {{ field()?.validators?.isRequiredMessage }}\n </mat-error>\n</mat-form-field>\n<div class=\"error-message\" *ngIf=\"false\">\n {{ field()?.validators?.isRequiredMessage }}.\n</div>\n<div class=\"error-message\" *ngIf=\"false\">\n {{ field()?.validators?.patternMessage }}.\n</div>\n", styles: [".field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important}.info-label{display:flex;justify-content:space-between}.error-message{color:red}*{font-family:mulish!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--custom-border-color-focus, #ffbb00)!important;border-width:var(--custom-border-width-focus, 1.5px)!important}::ng-deep .mat-mdc-form-field{background-color:var(--custom-bg-color, #ffffff)!important;border-radius:var(--custom-border-radius , 4px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined .mat-mdc-notch-piece{border-color:var(--custom-border-color, #dddddd)!important;border-width:var(--custom-border-width, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--custom-caret-color, #ffbb00)!important;font-size:12px!important;font-weight:var(--custom-font-weight, 400)!important;font-family:var(--custom-font-family, \"Mulish\")!important;color:var(--custom-font-color, #444444)!important}::ng-deep .mat-form-field-invalid .mdc-text-field--outlined .mat-mdc-notch-piece{border-color:var(--custom-border-color-error, red)!important;border-width:var(--custom-border-width-error, 1.5px)!important}::ng-deep .mat-mdc-form-field.mat-form-field-disabled{background:var(--custom-bg-color-disabled, #ECECEC)!important}::ng-deep .mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--custom-font-color-disabled, #999999)!important}::ng-deep .mdc-label{color:var(--custom-font-color, #444)!important;font-size:var(--custom-font-size, 16px)!important;font-weight:var(--custom-font-weight, 400)!important;font-family:var(--custom-font-family, \"Mulish\")!important}::placeholder{color:#8f8f8f!important;font-size:12px!important}::ng-deep .mat-mdc-form-field-hint-wrapper{padding:0!important}::ng-deep .mat-mdc-form-field-error-wrapper{padding:0!important}::ng-deep .mat-mdc-form-field-error{color:#e00!important;font-size:12px;font-weight:500;font-family:Mulish!important;letter-spacing:0}::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: var(--custom-border-radius , 4px) !important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--custom-border-color-error, red)!important;border-width:var(--custom-border-width-error, 1.5px)!important}::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none!important}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
55
+ ], ngImport: i0, template: "<label class=\"field-lable info-label\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\"\n >{{ field()?.label\n }}\n <!-- <span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\"\n >*</span\n > -->\n <span style=\"justify-content: end;\">\n <img class=\"mx-1\" *ngIf=\"field()?.configData?.imageURL\" [src]=\"field()?.configData?.imageURL\" alt=\"\">\n <u style=\"cursor: pointer;\" (click)=\"handleWhereToFindClick()\">{{field()?.configData?.infoMsg}}</u></span>\n </label\n>\n<mat-form-field\n class=\"w-100\"\n appearance=\"outline\"\n *ngIf=\"field() && field()?.isVisible\"\n [ngStyle]=\"{\n'--custom-border-color': field()?.controlStyle?.borderColor ,\n'--custom-border-width': field()?.controlStyle?.borderWidth ,\n'--custom-border-radius': field()?.controlStyle?.borderRadius ,\n'--custom-bg-color': field()?.controlStyle?.background ,\n'--custom-border-color-focus': field()?.controlStyle?.focusBorderColor ,\n'--custom-border-width-focus': field()?.controlStyle?.focusBorderWidth ,\n'--custom-bg-color-focus': field()?.controlStyle?.focusBackground ,\n'--custom-border-color-hover': field()?.controlStyle?.hoverBorderColor ,\n'--custom-border-width-hover': field()?.controlStyle?.hoverBorderWidth ,\n'--custom-border-color-error': field()?.controlStyle?.errorBorderColor ,\n'--custom-border-width-error': field()?.controlStyle?.errorBorderWidth ,\n'--custom-font-size': field()?.controlStyle?.fontSize ,\n'--custom-font-weight': field()?.controlStyle?.fontWeight ,\n'--custom-font-family': field()?.controlStyle?.fontFamily ,\n'--custom-font-color': field()?.controlStyle?.color ,\n'--custom-caret-color': field()?.controlStyle?.caretColor ,\n'--custom-font-color-disabled' : field()?.controlStyle?.disableColor ,\n'--custom-bg-color-disabled' : field()?.controlStyle?.disableBackground ,\n}\"\n>\n @if(reactiveFormControlobject()) {\n<input\n matInput\n autocomplete=\"off\"\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"this.service.replaceSpacesWithUnderscores(field()?.label)\"\n [placeholder]=\"field()?.placeHolder\"\n [maxLength]=\"field()?.validators?.maxLength\"\n [minLength]=\"field()?.validators?.minLength\"\n [disabled]=\"field()?.isDisable\"\n [required]=\"field()?.validators?.isRequired\"\n [pattern]=\"field()?.validators?.pattern\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur()\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n />\n }@else {\n <input\n matInput\n autocomplete=\"off\"\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"this.service.replaceSpacesWithUnderscores(field()?.label)\"\n [placeholder]=\"field()?.placeHolder\"\n [maxLength]=\"field()?.validators?.maxLength\"\n [minLength]=\"field()?.validators?.minLength\"\n [disabled]=\"field()?.isDisable\"\n [required]=\"field()?.validators?.isRequired\"\n [pattern]=\"field()?.validators?.pattern\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur()\"\n [value]=\"inputValue\"\n />\n }\n\n <mat-error *ngIf=\"false\">\n {{ field()?.validators?.isRequiredMessage }}\n </mat-error>\n</mat-form-field>\n<div class=\"error-message\" *ngIf=\"false\">\n {{ field()?.validators?.isRequiredMessage }}.\n</div>\n<div class=\"error-message\" *ngIf=\"false\">\n {{ field()?.validators?.patternMessage }}.\n</div>\n", styles: [".field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important}.info-label{display:flex;justify-content:space-between}.error-message{color:red}*{font-family:mulish!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--custom-border-color-focus, #ffbb00)!important;border-width:var(--custom-border-width-focus, 1.5px)!important}::ng-deep .mat-mdc-form-field{background-color:var(--custom-bg-color, #ffffff)!important;border-radius:var(--custom-border-radius , 4px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined .mat-mdc-notch-piece{border-color:var(--custom-border-color, #dddddd)!important;border-width:var(--custom-border-width, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--custom-caret-color, #ffbb00)!important;font-size:12px!important;font-weight:var(--custom-font-weight, 400)!important;font-family:var(--custom-font-family, \"Mulish\")!important;color:var(--custom-font-color, #444444)!important}::ng-deep .mat-form-field-invalid .mdc-text-field--outlined .mat-mdc-notch-piece{border-color:var(--custom-border-color-error, red)!important;border-width:var(--custom-border-width-error, 1.5px)!important}::ng-deep .mat-mdc-form-field.mat-form-field-disabled{background:var(--custom-bg-color-disabled, #ECECEC)!important}::ng-deep .mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--custom-font-color-disabled, #999999)!important}::ng-deep .mdc-label{color:var(--custom-font-color, #444)!important;font-size:var(--custom-font-size, 16px)!important;font-weight:var(--custom-font-weight, 400)!important;font-family:var(--custom-font-family, \"Mulish\")!important}::placeholder{color:#8f8f8f!important;font-size:12px!important}::ng-deep .mat-mdc-form-field-hint-wrapper{padding:0!important}::ng-deep .mat-mdc-form-field-error-wrapper{padding:0!important}::ng-deep .mat-mdc-form-field-error{color:#e00!important;font-size:12px;font-weight:500;font-family:Mulish!important;letter-spacing:0}::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: var(--custom-border-radius , 4px) !important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--custom-border-color-error, red)!important;border-width:var(--custom-border-width-error, 1.5px)!important}::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none!important}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
51
56
  }
52
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InfoTextboxComponent, decorators: [{
53
58
  type: Component,
@@ -62,10 +67,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
62
67
  useExisting: InfoTextboxComponent,
63
68
  multi: true
64
69
  }
65
- ], template: "<label class=\"field-lable info-label\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\"\n >{{ field()?.label\n }}\n <!-- <span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\"\n >*</span\n > -->\n <span style=\"justify-content: end;\">\n <img class=\"mx-1\" *ngIf=\"field()?.configData?.imageURL\" [src]=\"field()?.configData?.imageURL\" alt=\"\">\n <u style=\"cursor: pointer;\" (click)=\"handleWhereToFindClick()\">{{field()?.configData?.infoMsg}}</u></span>\n </label\n>\n<mat-form-field\n class=\"w-100\"\n appearance=\"outline\"\n *ngIf=\"field() && field()?.isVisible\"\n [ngStyle]=\"{\n'--custom-border-color': field()?.controlStyle?.borderColor ,\n'--custom-border-width': field()?.controlStyle?.borderWidth ,\n'--custom-border-radius': field()?.controlStyle?.borderRadius ,\n'--custom-bg-color': field()?.controlStyle?.background ,\n'--custom-border-color-focus': field()?.controlStyle?.focusBorderColor ,\n'--custom-border-width-focus': field()?.controlStyle?.focusBorderWidth ,\n'--custom-bg-color-focus': field()?.controlStyle?.focusBackground ,\n'--custom-border-color-hover': field()?.controlStyle?.hoverBorderColor ,\n'--custom-border-width-hover': field()?.controlStyle?.hoverBorderWidth ,\n'--custom-border-color-error': field()?.controlStyle?.errorBorderColor ,\n'--custom-border-width-error': field()?.controlStyle?.errorBorderWidth ,\n'--custom-font-size': field()?.controlStyle?.fontSize ,\n'--custom-font-weight': field()?.controlStyle?.fontWeight ,\n'--custom-font-family': field()?.controlStyle?.fontFamily ,\n'--custom-font-color': field()?.controlStyle?.color ,\n'--custom-caret-color': field()?.controlStyle?.caretColor ,\n'--custom-font-color-disabled' : field()?.controlStyle?.disableColor ,\n'--custom-bg-color-disabled' : field()?.controlStyle?.disableBackground ,\n}\"\n>\n @if(reactiveFormControlobject()) {\n<input\n matInput\n autocomplete=\"off\"\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [placeholder]=\"field()?.placeHolder\"\n [maxLength]=\"field()?.validators?.maxLength\"\n [minLength]=\"field()?.validators?.minLength\"\n [disabled]=\"field()?.isDisable\"\n [required]=\"field()?.validators?.isRequired\"\n [pattern]=\"field()?.validators?.pattern\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur()\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n />\n }@else {\n <input\n matInput\n autocomplete=\"off\"\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [placeholder]=\"field()?.placeHolder\"\n [maxLength]=\"field()?.validators?.maxLength\"\n [minLength]=\"field()?.validators?.minLength\"\n [disabled]=\"field()?.isDisable\"\n [required]=\"field()?.validators?.isRequired\"\n [pattern]=\"field()?.validators?.pattern\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur()\"\n [value]=\"inputValue\"\n />\n }\n\n <mat-error *ngIf=\"false\">\n {{ field()?.validators?.isRequiredMessage }}\n </mat-error>\n</mat-form-field>\n<div class=\"error-message\" *ngIf=\"false\">\n {{ field()?.validators?.isRequiredMessage }}.\n</div>\n<div class=\"error-message\" *ngIf=\"false\">\n {{ field()?.validators?.patternMessage }}.\n</div>\n", styles: [".field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important}.info-label{display:flex;justify-content:space-between}.error-message{color:red}*{font-family:mulish!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--custom-border-color-focus, #ffbb00)!important;border-width:var(--custom-border-width-focus, 1.5px)!important}::ng-deep .mat-mdc-form-field{background-color:var(--custom-bg-color, #ffffff)!important;border-radius:var(--custom-border-radius , 4px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined .mat-mdc-notch-piece{border-color:var(--custom-border-color, #dddddd)!important;border-width:var(--custom-border-width, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--custom-caret-color, #ffbb00)!important;font-size:12px!important;font-weight:var(--custom-font-weight, 400)!important;font-family:var(--custom-font-family, \"Mulish\")!important;color:var(--custom-font-color, #444444)!important}::ng-deep .mat-form-field-invalid .mdc-text-field--outlined .mat-mdc-notch-piece{border-color:var(--custom-border-color-error, red)!important;border-width:var(--custom-border-width-error, 1.5px)!important}::ng-deep .mat-mdc-form-field.mat-form-field-disabled{background:var(--custom-bg-color-disabled, #ECECEC)!important}::ng-deep .mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--custom-font-color-disabled, #999999)!important}::ng-deep .mdc-label{color:var(--custom-font-color, #444)!important;font-size:var(--custom-font-size, 16px)!important;font-weight:var(--custom-font-weight, 400)!important;font-family:var(--custom-font-family, \"Mulish\")!important}::placeholder{color:#8f8f8f!important;font-size:12px!important}::ng-deep .mat-mdc-form-field-hint-wrapper{padding:0!important}::ng-deep .mat-mdc-form-field-error-wrapper{padding:0!important}::ng-deep .mat-mdc-form-field-error{color:#e00!important;font-size:12px;font-weight:500;font-family:Mulish!important;letter-spacing:0}::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: var(--custom-border-radius , 4px) !important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--custom-border-color-error, red)!important;border-width:var(--custom-border-width-error, 1.5px)!important}::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none!important}\n"] }]
66
- }], propDecorators: { fields: [{
70
+ ], template: "<label class=\"field-lable info-label\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\"\n >{{ field()?.label\n }}\n <!-- <span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\"\n >*</span\n > -->\n <span style=\"justify-content: end;\">\n <img class=\"mx-1\" *ngIf=\"field()?.configData?.imageURL\" [src]=\"field()?.configData?.imageURL\" alt=\"\">\n <u style=\"cursor: pointer;\" (click)=\"handleWhereToFindClick()\">{{field()?.configData?.infoMsg}}</u></span>\n </label\n>\n<mat-form-field\n class=\"w-100\"\n appearance=\"outline\"\n *ngIf=\"field() && field()?.isVisible\"\n [ngStyle]=\"{\n'--custom-border-color': field()?.controlStyle?.borderColor ,\n'--custom-border-width': field()?.controlStyle?.borderWidth ,\n'--custom-border-radius': field()?.controlStyle?.borderRadius ,\n'--custom-bg-color': field()?.controlStyle?.background ,\n'--custom-border-color-focus': field()?.controlStyle?.focusBorderColor ,\n'--custom-border-width-focus': field()?.controlStyle?.focusBorderWidth ,\n'--custom-bg-color-focus': field()?.controlStyle?.focusBackground ,\n'--custom-border-color-hover': field()?.controlStyle?.hoverBorderColor ,\n'--custom-border-width-hover': field()?.controlStyle?.hoverBorderWidth ,\n'--custom-border-color-error': field()?.controlStyle?.errorBorderColor ,\n'--custom-border-width-error': field()?.controlStyle?.errorBorderWidth ,\n'--custom-font-size': field()?.controlStyle?.fontSize ,\n'--custom-font-weight': field()?.controlStyle?.fontWeight ,\n'--custom-font-family': field()?.controlStyle?.fontFamily ,\n'--custom-font-color': field()?.controlStyle?.color ,\n'--custom-caret-color': field()?.controlStyle?.caretColor ,\n'--custom-font-color-disabled' : field()?.controlStyle?.disableColor ,\n'--custom-bg-color-disabled' : field()?.controlStyle?.disableBackground ,\n}\"\n>\n @if(reactiveFormControlobject()) {\n<input\n matInput\n autocomplete=\"off\"\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"this.service.replaceSpacesWithUnderscores(field()?.label)\"\n [placeholder]=\"field()?.placeHolder\"\n [maxLength]=\"field()?.validators?.maxLength\"\n [minLength]=\"field()?.validators?.minLength\"\n [disabled]=\"field()?.isDisable\"\n [required]=\"field()?.validators?.isRequired\"\n [pattern]=\"field()?.validators?.pattern\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur()\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n />\n }@else {\n <input\n matInput\n autocomplete=\"off\"\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"this.service.replaceSpacesWithUnderscores(field()?.label)\"\n [placeholder]=\"field()?.placeHolder\"\n [maxLength]=\"field()?.validators?.maxLength\"\n [minLength]=\"field()?.validators?.minLength\"\n [disabled]=\"field()?.isDisable\"\n [required]=\"field()?.validators?.isRequired\"\n [pattern]=\"field()?.validators?.pattern\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur()\"\n [value]=\"inputValue\"\n />\n }\n\n <mat-error *ngIf=\"false\">\n {{ field()?.validators?.isRequiredMessage }}\n </mat-error>\n</mat-form-field>\n<div class=\"error-message\" *ngIf=\"false\">\n {{ field()?.validators?.isRequiredMessage }}.\n</div>\n<div class=\"error-message\" *ngIf=\"false\">\n {{ field()?.validators?.patternMessage }}.\n</div>\n", styles: [".field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important}.info-label{display:flex;justify-content:space-between}.error-message{color:red}*{font-family:mulish!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--custom-border-color-focus, #ffbb00)!important;border-width:var(--custom-border-width-focus, 1.5px)!important}::ng-deep .mat-mdc-form-field{background-color:var(--custom-bg-color, #ffffff)!important;border-radius:var(--custom-border-radius , 4px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--custom-border-color-hover, #ffbb00)!important;border-width:var(--custom-border-width-hover, 1.5px)!important}::ng-deep .mdc-text-field--outlined .mat-mdc-notch-piece{border-color:var(--custom-border-color, #dddddd)!important;border-width:var(--custom-border-width, 1.5px)!important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--custom-caret-color, #ffbb00)!important;font-size:12px!important;font-weight:var(--custom-font-weight, 400)!important;font-family:var(--custom-font-family, \"Mulish\")!important;color:var(--custom-font-color, #444444)!important}::ng-deep .mat-form-field-invalid .mdc-text-field--outlined .mat-mdc-notch-piece{border-color:var(--custom-border-color-error, red)!important;border-width:var(--custom-border-width-error, 1.5px)!important}::ng-deep .mat-mdc-form-field.mat-form-field-disabled{background:var(--custom-bg-color-disabled, #ECECEC)!important}::ng-deep .mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--custom-font-color-disabled, #999999)!important}::ng-deep .mdc-label{color:var(--custom-font-color, #444)!important;font-size:var(--custom-font-size, 16px)!important;font-weight:var(--custom-font-weight, 400)!important;font-family:var(--custom-font-family, \"Mulish\")!important}::placeholder{color:#8f8f8f!important;font-size:12px!important}::ng-deep .mat-mdc-form-field-hint-wrapper{padding:0!important}::ng-deep .mat-mdc-form-field-error-wrapper{padding:0!important}::ng-deep .mat-mdc-form-field-error{color:#e00!important;font-size:12px;font-weight:500;font-family:Mulish!important;letter-spacing:0}::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: var(--custom-border-radius , 4px) !important}::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--custom-border-color-error, red)!important;border-width:var(--custom-border-width-error, 1.5px)!important}::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none!important}\n"] }]
71
+ }], ctorParameters: () => [{ type: i1.MasterControlService }], propDecorators: { fields: [{
67
72
  type: Input
68
73
  }], infoClick: [{
69
74
  type: Output
70
75
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby10ZXh0Ym94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvaW5mby10ZXh0Ym94L2luZm8tdGV4dGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL2luZm8tdGV4dGJveC9pbmZvLXRleHRib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQXFCekQsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixLQUFLLEdBQVEsS0FBSyxDQUFDLFFBQVEsRUFBTyxDQUFDO0lBQ25DLFVBQVUsR0FBUSxJQUFJLENBQUM7SUFDdkIseUJBQXlCLEdBQVMsS0FBSyxFQUFPLENBQUM7SUFDdEMsTUFBTSxDQUFNO0lBQ1gsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDOUMsU0FBUyxHQUFRLENBQUMsVUFBYyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDeEMsVUFBVSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUUzQixVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFDLEdBQUcsQ0FBQztJQUN0QixDQUFDO0lBQUEsQ0FBQztJQUNGLGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUFBLENBQUM7SUFDRixpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFBQSxDQUFDO0lBQ0YsZ0JBQWdCLENBQUUsVUFBbUIsSUFBUSxDQUFDO0lBQUEsQ0FBQztJQUUvQyxhQUFhLENBQUMsS0FBVTtRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQzt3R0E5QlUsb0JBQW9COzRGQUFwQixvQkFBb0IsdWhCQVJwQjtZQUNMO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxvQkFBb0I7Z0JBQ2pDLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwwQkN2QlAsb3pHQW1GQSwrNEdEekVJLGtCQUFrQixzVUFDbEIsWUFBWSx1TkFDWixjQUFjLDBXQUNkLG1CQUFtQjs7NEZBWVYsb0JBQW9CO2tCQW5CaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLGtCQUFrQjt3QkFDbEIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjtxQkFDcEIsYUFHVTt3QkFDTDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHNCQUFzQjs0QkFDakMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBTUksTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBpbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItaW5mby10ZXh0Ym94JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5mby10ZXh0Ym94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2luZm8tdGV4dGJveC5jb21wb25lbnQuY3NzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICB1c2VFeGlzdGluZzogSW5mb1RleHRib3hDb21wb25lbnQsXG4gICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxufSlcbmV4cG9ydCBjbGFzcyBJbmZvVGV4dGJveENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgZmllbGQ6IGFueSA9IGlucHV0LnJlcXVpcmVkPGFueT4oKTtcbiAgaW5wdXRWYWx1ZTogYW55ID0gbnVsbDtcbiAgcmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdCA6IGFueSA9IGlucHV0PGFueT4oKTtcbiAgQElucHV0KCkgZmllbGRzOiBhbnk7XG4gIEBPdXRwdXQoKSBpbmZvQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgX29uQ2hhbmdlOiBhbnkgPSAoaW5wdXRWYWx1ZTphbnkpID0+IHt9O1xuICBfdW5Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZHtcbiAgICB0aGlzLmlucHV0VmFsdWU9b2JqO1xuICB9O1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lke1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH07XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lke1xuICAgIHRoaXMuX3VuVG91Y2hlZCA9IGZuO1xuICB9O1xuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZHt9O1xuXG4gIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLmlucHV0VmFsdWUpO1xuICB9XG5cbiAgb25JbnB1dEJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5fdW5Ub3VjaGVkKCk7XG4gIH1cbiAgaGFuZGxlV2hlcmVUb0ZpbmRDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmluZm9DbGljay5lbWl0KHsgZmllbGQ6IHRoaXMuZmllbGQgfSk7XG4gIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImZpZWxkLWxhYmxlIGluZm8tbGFiZWxcIiAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8uaXNWaXNpYmxlICYmIGZpZWxkKCkuaXNTaG93TGFiZWxcIlxuICA+e3sgZmllbGQoKT8ubGFiZWxcbiAgfX1cbiAgPCEtLSA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWRcIiAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8udmFsaWRhdG9ycz8uaXNSZXF1aXJlZFwiXG4gICAgPio8L3NwYW5cbiAgPiAtLT5cbiAgPHNwYW4gc3R5bGU9XCJqdXN0aWZ5LWNvbnRlbnQ6IGVuZDtcIj5cbiAgICA8aW1nIGNsYXNzPVwibXgtMVwiICpuZ0lmPVwiZmllbGQoKT8uY29uZmlnRGF0YT8uaW1hZ2VVUkxcIiBbc3JjXT1cImZpZWxkKCk/LmNvbmZpZ0RhdGE/LmltYWdlVVJMXCIgYWx0PVwiXCI+XG4gICAgPHUgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgKGNsaWNrKT1cImhhbmRsZVdoZXJlVG9GaW5kQ2xpY2soKVwiPnt7ZmllbGQoKT8uY29uZmlnRGF0YT8uaW5mb01zZ319PC91Pjwvc3Bhbj5cbiAgPC9sYWJlbFxuPlxuPG1hdC1mb3JtLWZpZWxkXG4gIGNsYXNzPVwidy0xMDBcIlxuICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXG4gICpuZ0lmPVwiZmllbGQoKSAmJiBmaWVsZCgpPy5pc1Zpc2libGVcIlxuICBbbmdTdHlsZV09XCJ7XG4nLS1jdXN0b20tYm9yZGVyLWNvbG9yJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5ib3JkZXJDb2xvciAsXG4nLS1jdXN0b20tYm9yZGVyLXdpZHRoJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5ib3JkZXJXaWR0aCAsXG4nLS1jdXN0b20tYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyUmFkaXVzICxcbictLWN1c3RvbS1iZy1jb2xvcic6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYmFja2dyb3VuZCAsXG4nLS1jdXN0b20tYm9yZGVyLWNvbG9yLWZvY3VzJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb2N1c0JvcmRlckNvbG9yICxcbictLWN1c3RvbS1ib3JkZXItd2lkdGgtZm9jdXMnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvY3VzQm9yZGVyV2lkdGggLFxuJy0tY3VzdG9tLWJnLWNvbG9yLWZvY3VzJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb2N1c0JhY2tncm91bmQgLFxuJy0tY3VzdG9tLWJvcmRlci1jb2xvci1ob3Zlcic6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uaG92ZXJCb3JkZXJDb2xvciAsXG4nLS1jdXN0b20tYm9yZGVyLXdpZHRoLWhvdmVyJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5ob3ZlckJvcmRlcldpZHRoICxcbictLWN1c3RvbS1ib3JkZXItY29sb3ItZXJyb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmVycm9yQm9yZGVyQ29sb3IgLFxuJy0tY3VzdG9tLWJvcmRlci13aWR0aC1lcnJvcic6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZXJyb3JCb3JkZXJXaWR0aCAsXG4nLS1jdXN0b20tZm9udC1zaXplJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb250U2l6ZSAsXG4nLS1jdXN0b20tZm9udC13ZWlnaHQnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvbnRXZWlnaHQgLFxuJy0tY3VzdG9tLWZvbnQtZmFtaWx5JzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb250RmFtaWx5ICxcbictLWN1c3RvbS1mb250LWNvbG9yJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5jb2xvciAsXG4nLS1jdXN0b20tY2FyZXQtY29sb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmNhcmV0Q29sb3IgLFxuJy0tY3VzdG9tLWZvbnQtY29sb3ItZGlzYWJsZWQnIDogZmllbGQoKT8uY29udHJvbFN0eWxlPy5kaXNhYmxlQ29sb3IgLFxuJy0tY3VzdG9tLWJnLWNvbG9yLWRpc2FibGVkJyA6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZGlzYWJsZUJhY2tncm91bmQgLFxufVwiXG4+XG4gQGlmKHJlYWN0aXZlRm9ybUNvbnRyb2xvYmplY3QoKSkge1xuPGlucHV0XG4gICAgbWF0SW5wdXRcbiAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgIFt0eXBlXT1cImZpZWxkKCk/LmNvbnRyb2xUeXBlXCJcbiAgICBbbmFtZV09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZCgpPy5wbGFjZUhvbGRlclwiXG4gICAgW21heExlbmd0aF09XCJmaWVsZCgpPy52YWxpZGF0b3JzPy5tYXhMZW5ndGhcIlxuICAgIFttaW5MZW5ndGhdPVwiZmllbGQoKT8udmFsaWRhdG9ycz8ubWluTGVuZ3RoXCJcbiAgICBbZGlzYWJsZWRdPVwiZmllbGQoKT8uaXNEaXNhYmxlXCJcbiAgICBbcmVxdWlyZWRdPVwiZmllbGQoKT8udmFsaWRhdG9ycz8uaXNSZXF1aXJlZFwiXG4gICAgW3BhdHRlcm5dPVwiZmllbGQoKT8udmFsaWRhdG9ycz8ucGF0dGVyblwiXG4gICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGJsdXIpPVwib25JbnB1dEJsdXIoKVwiXG4gICAgW3ZhbHVlXT1cImlucHV0VmFsdWVcIlxuICAgIFtmb3JtQ29udHJvbF09XCJyZWFjdGl2ZUZvcm1Db250cm9sb2JqZWN0KClcIlxuICAvPlxuIH1AZWxzZSB7XG4gIDxpbnB1dFxuICAgIG1hdElucHV0XG4gICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICBbdHlwZV09XCJmaWVsZCgpPy5jb250cm9sVHlwZVwiXG4gICAgW25hbWVdPVwiZmllbGQoKT8uZmllbGROYW1lXCJcbiAgICBbaWRdPVwiZmllbGQoKT8uZmllbGROYW1lXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQoKT8ucGxhY2VIb2xkZXJcIlxuICAgIFttYXhMZW5ndGhdPVwiZmllbGQoKT8udmFsaWRhdG9ycz8ubWF4TGVuZ3RoXCJcbiAgICBbbWluTGVuZ3RoXT1cImZpZWxkKCk/LnZhbGlkYXRvcnM/Lm1pbkxlbmd0aFwiXG4gICAgW2Rpc2FibGVkXT1cImZpZWxkKCk/LmlzRGlzYWJsZVwiXG4gICAgW3JlcXVpcmVkXT1cImZpZWxkKCk/LnZhbGlkYXRvcnM/LmlzUmVxdWlyZWRcIlxuICAgIFtwYXR0ZXJuXT1cImZpZWxkKCk/LnZhbGlkYXRvcnM/LnBhdHRlcm5cIlxuICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxuICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKClcIlxuICAgIFt2YWx1ZV09XCJpbnB1dFZhbHVlXCJcbiAgLz5cbiB9XG5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImZhbHNlXCI+XG4gICAge3sgZmllbGQoKT8udmFsaWRhdG9ycz8uaXNSZXF1aXJlZE1lc3NhZ2UgfX1cbiAgPC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPlxuPGRpdiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImZhbHNlXCI+XG4gIHt7IGZpZWxkKCk/LnZhbGlkYXRvcnM/LmlzUmVxdWlyZWRNZXNzYWdlIH19LlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZmFsc2VcIj5cbiAge3sgZmllbGQoKT8udmFsaWRhdG9ycz8ucGF0dGVybk1lc3NhZ2UgfX0uXG48L2Rpdj5cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby10ZXh0Ym94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvaW5mby10ZXh0Ym94L2luZm8tdGV4dGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL2luZm8tdGV4dGJveC9pbmZvLXRleHRib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFzQnpELE1BQU0sT0FBTyxvQkFBb0I7SUFDWjtJQUFuQixZQUFtQixPQUE2QjtRQUE3QixZQUFPLEdBQVAsT0FBTyxDQUFzQjtJQUFHLENBQUM7SUFDcEQsS0FBSyxHQUFRLEtBQUssQ0FBQyxRQUFRLEVBQU8sQ0FBQztJQUNuQyxVQUFVLEdBQVEsSUFBSSxDQUFDO0lBQ3ZCLHlCQUF5QixHQUFTLEtBQUssRUFBTyxDQUFDO0lBQ3RDLE1BQU0sQ0FBTTtJQUNYLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQzlDLFNBQVMsR0FBUSxDQUFDLFVBQWMsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ3hDLFVBQVUsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFM0IsVUFBVSxDQUFDLEdBQVE7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBQyxHQUFHLENBQUM7SUFDdEIsQ0FBQztJQUFBLENBQUM7SUFDRixnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFBQSxDQUFDO0lBQ0YsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQUEsQ0FBQztJQUNGLGdCQUFnQixDQUFFLFVBQW1CLElBQVEsQ0FBQztJQUFBLENBQUM7SUFFL0MsYUFBYSxDQUFDLEtBQVU7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBQ0Qsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7d0dBL0JVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLHVoQkFScEI7WUFDTDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJDeEJQLGs0R0FtRkEsKzRHRHhFSSxrQkFBa0Isc1VBQ2xCLFlBQVksdU5BQ1osY0FBYywwV0FDZCxtQkFBbUI7OzRGQVlWLG9CQUFvQjtrQkFuQmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUDt3QkFDUCxrQkFBa0I7d0JBQ2xCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxtQkFBbUI7cUJBQ3BCLGFBR1U7d0JBQ0w7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxzQkFBc0I7NEJBQ2pDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3lGQU9JLE1BQU07c0JBQWQsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgaW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hc3RlckNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi4vbWFzdGVyLWNvbnRyb2wuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1pbmZvLXRleHRib3gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmZvLXRleHRib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vaW5mby10ZXh0Ym94LmNvbXBvbmVudC5jc3MnLFxuICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgIHVzZUV4aXN0aW5nOiBJbmZvVGV4dGJveENvbXBvbmVudCxcbiAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEluZm9UZXh0Ym94Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2VydmljZTogTWFzdGVyQ29udHJvbFNlcnZpY2UpIHt9XG4gIGZpZWxkOiBhbnkgPSBpbnB1dC5yZXF1aXJlZDxhbnk+KCk7XG4gIGlucHV0VmFsdWU6IGFueSA9IG51bGw7XG4gIHJlYWN0aXZlRm9ybUNvbnRyb2xvYmplY3QgOiBhbnkgPSBpbnB1dDxhbnk+KCk7XG4gIEBJbnB1dCgpIGZpZWxkczogYW55O1xuICBAT3V0cHV0KCkgaW5mb0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIF9vbkNoYW5nZTogYW55ID0gKGlucHV0VmFsdWU6YW55KSA9PiB7fTtcbiAgX3VuVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWR7XG4gICAgdGhpcy5pbnB1dFZhbHVlPW9iajtcbiAgfTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9O1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZHtcbiAgICB0aGlzLl91blRvdWNoZWQgPSBmbjtcbiAgfTtcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWR7fTtcblxuICBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5fb25DaGFuZ2UodGhpcy5pbnB1dFZhbHVlKTtcbiAgfVxuXG4gIG9uSW5wdXRCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3VuVG91Y2hlZCgpO1xuICB9XG4gIGhhbmRsZVdoZXJlVG9GaW5kQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5pbmZvQ2xpY2suZW1pdCh7IGZpZWxkOiB0aGlzLmZpZWxkIH0pO1xuICB9XG59XG4iLCI8bGFiZWwgY2xhc3M9XCJmaWVsZC1sYWJsZSBpbmZvLWxhYmVsXCIgKm5nSWY9XCJmaWVsZCgpICYmIGZpZWxkKCk/LmlzVmlzaWJsZSAmJiBmaWVsZCgpLmlzU2hvd0xhYmVsXCJcbiAgPnt7IGZpZWxkKCk/LmxhYmVsXG4gIH19XG4gIDwhLS0gPHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkXCIgKm5nSWY9XCJmaWVsZCgpICYmIGZpZWxkKCk/LnZhbGlkYXRvcnM/LmlzUmVxdWlyZWRcIlxuICAgID4qPC9zcGFuXG4gID4gLS0+XG4gIDxzcGFuIHN0eWxlPVwianVzdGlmeS1jb250ZW50OiBlbmQ7XCI+XG4gICAgPGltZyBjbGFzcz1cIm14LTFcIiAqbmdJZj1cImZpZWxkKCk/LmNvbmZpZ0RhdGE/LmltYWdlVVJMXCIgW3NyY109XCJmaWVsZCgpPy5jb25maWdEYXRhPy5pbWFnZVVSTFwiIGFsdD1cIlwiPlxuICAgIDx1IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJoYW5kbGVXaGVyZVRvRmluZENsaWNrKClcIj57e2ZpZWxkKCk/LmNvbmZpZ0RhdGE/LmluZm9Nc2d9fTwvdT48L3NwYW4+XG4gIDwvbGFiZWxcbj5cbjxtYXQtZm9ybS1maWVsZFxuICBjbGFzcz1cInctMTAwXCJcbiAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxuICAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8uaXNWaXNpYmxlXCJcbiAgW25nU3R5bGVdPVwie1xuJy0tY3VzdG9tLWJvcmRlci1jb2xvcic6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyQ29sb3IgLFxuJy0tY3VzdG9tLWJvcmRlci13aWR0aCc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyV2lkdGggLFxuJy0tY3VzdG9tLWJvcmRlci1yYWRpdXMnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJvcmRlclJhZGl1cyAsXG4nLS1jdXN0b20tYmctY29sb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJhY2tncm91bmQgLFxuJy0tY3VzdG9tLWJvcmRlci1jb2xvci1mb2N1cyc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9jdXNCb3JkZXJDb2xvciAsXG4nLS1jdXN0b20tYm9yZGVyLXdpZHRoLWZvY3VzJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb2N1c0JvcmRlcldpZHRoICxcbictLWN1c3RvbS1iZy1jb2xvci1mb2N1cyc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9jdXNCYWNrZ3JvdW5kICxcbictLWN1c3RvbS1ib3JkZXItY29sb3ItaG92ZXInOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmhvdmVyQm9yZGVyQ29sb3IgLFxuJy0tY3VzdG9tLWJvcmRlci13aWR0aC1ob3Zlcic6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uaG92ZXJCb3JkZXJXaWR0aCAsXG4nLS1jdXN0b20tYm9yZGVyLWNvbG9yLWVycm9yJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5lcnJvckJvcmRlckNvbG9yICxcbictLWN1c3RvbS1ib3JkZXItd2lkdGgtZXJyb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmVycm9yQm9yZGVyV2lkdGggLFxuJy0tY3VzdG9tLWZvbnQtc2l6ZSc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9udFNpemUgLFxuJy0tY3VzdG9tLWZvbnQtd2VpZ2h0JzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb250V2VpZ2h0ICxcbictLWN1c3RvbS1mb250LWZhbWlseSc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9udEZhbWlseSAsXG4nLS1jdXN0b20tZm9udC1jb2xvcic6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uY29sb3IgLFxuJy0tY3VzdG9tLWNhcmV0LWNvbG9yJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5jYXJldENvbG9yICxcbictLWN1c3RvbS1mb250LWNvbG9yLWRpc2FibGVkJyA6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZGlzYWJsZUNvbG9yICxcbictLWN1c3RvbS1iZy1jb2xvci1kaXNhYmxlZCcgOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmRpc2FibGVCYWNrZ3JvdW5kICxcbn1cIlxuPlxuIEBpZihyZWFjdGl2ZUZvcm1Db250cm9sb2JqZWN0KCkpIHtcbjxpbnB1dFxuICAgIG1hdElucHV0XG4gICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICBbdHlwZV09XCJmaWVsZCgpPy5jb250cm9sVHlwZVwiXG4gICAgW25hbWVdPVwiZmllbGQoKT8uZmllbGROYW1lXCJcbiAgICBbaWRdPVwidGhpcy5zZXJ2aWNlLnJlcGxhY2VTcGFjZXNXaXRoVW5kZXJzY29yZXMoZmllbGQoKT8ubGFiZWwpXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQoKT8ucGxhY2VIb2xkZXJcIlxuICAgIFttYXhMZW5ndGhdPVwiZmllbGQoKT8udmFsaWRhdG9ycz8ubWF4TGVuZ3RoXCJcbiAgICBbbWluTGVuZ3RoXT1cImZpZWxkKCk/LnZhbGlkYXRvcnM/Lm1pbkxlbmd0aFwiXG4gICAgW2Rpc2FibGVkXT1cImZpZWxkKCk/LmlzRGlzYWJsZVwiXG4gICAgW3JlcXVpcmVkXT1cImZpZWxkKCk/LnZhbGlkYXRvcnM/LmlzUmVxdWlyZWRcIlxuICAgIFtwYXR0ZXJuXT1cImZpZWxkKCk/LnZhbGlkYXRvcnM/LnBhdHRlcm5cIlxuICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxuICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKClcIlxuICAgIFt2YWx1ZV09XCJpbnB1dFZhbHVlXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwicmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdCgpXCJcbiAgLz5cbiB9QGVsc2Uge1xuICA8aW5wdXRcbiAgICBtYXRJbnB1dFxuICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgW3R5cGVdPVwiZmllbGQoKT8uY29udHJvbFR5cGVcIlxuICAgIFtuYW1lXT1cImZpZWxkKCk/LmZpZWxkTmFtZVwiXG4gICAgW2lkXT1cInRoaXMuc2VydmljZS5yZXBsYWNlU3BhY2VzV2l0aFVuZGVyc2NvcmVzKGZpZWxkKCk/LmxhYmVsKVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkKCk/LnBsYWNlSG9sZGVyXCJcbiAgICBbbWF4TGVuZ3RoXT1cImZpZWxkKCk/LnZhbGlkYXRvcnM/Lm1heExlbmd0aFwiXG4gICAgW21pbkxlbmd0aF09XCJmaWVsZCgpPy52YWxpZGF0b3JzPy5taW5MZW5ndGhcIlxuICAgIFtkaXNhYmxlZF09XCJmaWVsZCgpPy5pc0Rpc2FibGVcIlxuICAgIFtyZXF1aXJlZF09XCJmaWVsZCgpPy52YWxpZGF0b3JzPy5pc1JlcXVpcmVkXCJcbiAgICBbcGF0dGVybl09XCJmaWVsZCgpPy52YWxpZGF0b3JzPy5wYXR0ZXJuXCJcbiAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbklucHV0Qmx1cigpXCJcbiAgICBbdmFsdWVdPVwiaW5wdXRWYWx1ZVwiXG4gIC8+XG4gfVxuXG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJmYWxzZVwiPlxuICAgIHt7IGZpZWxkKCk/LnZhbGlkYXRvcnM/LmlzUmVxdWlyZWRNZXNzYWdlIH19XG4gIDwvbWF0LWVycm9yPlxuPC9tYXQtZm9ybS1maWVsZD5cbjxkaXYgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJmYWxzZVwiPlxuICB7eyBmaWVsZCgpPy52YWxpZGF0b3JzPy5pc1JlcXVpcmVkTWVzc2FnZSB9fS5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImZhbHNlXCI+XG4gIHt7IGZpZWxkKCk/LnZhbGlkYXRvcnM/LnBhdHRlcm5NZXNzYWdlIH19LlxuPC9kaXY+XG4iXX0=