@rangertechnologies/ngnxt 2.0.47 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/esm2022/lib/ar.i18n.mjs +29 -0
  2. package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +13 -9
  3. package/esm2022/lib/components/custom-input/custom-input.component.mjs +12 -8
  4. package/esm2022/lib/components/custom-table/custom-table.component.mjs +13 -8
  5. package/esm2022/lib/components/custom-text-area/custom-text-area.component.mjs +13 -8
  6. package/esm2022/lib/components/dropdown-with-flag/dropdown-with-flag.component.mjs +14 -9
  7. package/esm2022/lib/components/file-upload/file-upload.component.mjs +11 -7
  8. package/esm2022/lib/components/file-view/file-view.component.mjs +11 -7
  9. package/esm2022/lib/components/pick-location/pick-location.component.mjs +13 -9
  10. package/esm2022/lib/components/search-box/search-box.component.mjs +11 -8
  11. package/esm2022/lib/components/table-appendix/table-appendix.component.mjs +15 -10
  12. package/esm2022/lib/en.i18n.mjs +29 -0
  13. package/esm2022/lib/i18n-config.service.mjs +4 -0
  14. package/esm2022/lib/i18n.component.mjs +47 -0
  15. package/esm2022/lib/i18n.module.mjs +38 -0
  16. package/esm2022/lib/i18n.pipe.mjs +25 -0
  17. package/esm2022/lib/i18n.service.mjs +54 -0
  18. package/esm2022/lib/nxt-app.module.mjs +41 -8
  19. package/esm2022/lib/pages/booklet/booklet.component.mjs +32 -16
  20. package/esm2022/lib/pages/questionbook/questionbook.component.mjs +66 -32
  21. package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +20 -16
  22. package/esm2022/lib/pages/summary-page/summary-page.component.mjs +13 -8
  23. package/esm2022/lib/sample.mjs +137 -6
  24. package/esm2022/lib/tam.i18n.mjs +29 -0
  25. package/esm2022/lib/wrapper.mjs +5 -1
  26. package/esm2022/public-api.mjs +3 -1
  27. package/fesm2022/rangertechnologies-ngnxt.mjs +592 -112
  28. package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
  29. package/lib/ar.i18n.d.ts +24 -0
  30. package/lib/components/custom-dropdown/custom-dropdown.component.d.ts +3 -1
  31. package/lib/components/custom-input/custom-input.component.d.ts +3 -1
  32. package/lib/components/custom-table/custom-table.component.d.ts +3 -1
  33. package/lib/components/custom-text-area/custom-text-area.component.d.ts +3 -1
  34. package/lib/components/dropdown-with-flag/dropdown-with-flag.component.d.ts +3 -1
  35. package/lib/components/file-upload/file-upload.component.d.ts +3 -1
  36. package/lib/components/file-view/file-view.component.d.ts +3 -1
  37. package/lib/components/pick-location/pick-location.component.d.ts +3 -1
  38. package/lib/components/search-box/search-box.component.d.ts +3 -1
  39. package/lib/components/table-appendix/table-appendix.component.d.ts +3 -1
  40. package/lib/en.i18n.d.ts +24 -0
  41. package/lib/i18n-config.service.d.ts +2 -0
  42. package/lib/i18n.component.d.ts +11 -0
  43. package/lib/i18n.module.d.ts +9 -0
  44. package/lib/i18n.pipe.d.ts +10 -0
  45. package/lib/i18n.service.d.ts +14 -0
  46. package/lib/nxt-app.module.d.ts +13 -10
  47. package/lib/pages/booklet/booklet.component.d.ts +5 -4
  48. package/lib/pages/questionbook/questionbook.component.d.ts +8 -3
  49. package/lib/pages/questionnaire/questionnaire.component.d.ts +3 -1
  50. package/lib/pages/summary-page/summary-page.component.d.ts +3 -1
  51. package/lib/tam.i18n.d.ts +24 -0
  52. package/lib/wrapper.d.ts +30 -0
  53. package/package.json +1 -1
  54. package/public-api.d.ts +2 -0
  55. package/rangertechnologies-ngnxt-2.1.0.tgz +0 -0
  56. package/rangertechnologies-ngnxt-2.0.47.tgz +0 -0
@@ -1,56 +1,93 @@
1
- import { Component, Input, Output, EventEmitter, } from '@angular/core';
1
+ import { Component, Input, Output, EventEmitter, Inject } from '@angular/core';
2
2
  import { ErrorWrapper } from '../../model/errorWrapper';
3
+ import { DOCUMENT } from '@angular/common';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "../../services/salesforce.service";
5
6
  import * as i2 from "../../services/data.service";
6
7
  import * as i3 from "../../services/change.service";
7
8
  import * as i4 from "../../services/storage.service";
8
- import * as i5 from "@angular/common";
9
- import * as i6 from "@angular/forms";
10
- import * as i7 from "../../components/pick-location/pick-location.component";
11
- import * as i8 from "../../components/custom-input/custom-input.component";
12
- import * as i9 from "../../components/custom-text-area/custom-text-area.component";
13
- import * as i10 from "../../components/custom-table/custom-table.component";
14
- import * as i11 from "../../components/custom-date-picker/custom-date-picker.component";
15
- import * as i12 from "../../components/custom-dropdown/custom-dropdown.component";
16
- import * as i13 from "../../components/search-box/search-box.component";
17
- import * as i14 from "../../components/file-upload/file-upload.component";
18
- import * as i15 from "../../components/dependent-table/dependent-table.component";
19
- import * as i16 from "../../components/custom-label/custom-label.component";
20
- import * as i17 from "../../components/table-appendix/table-appendix.component";
21
- import * as i18 from "../../components/custom-date/custom-date.component";
22
- import * as i19 from "../../components/custom-time/custom-time.component";
23
- import * as i20 from "../../components/custom-button/custom-button.component";
9
+ import * as i5 from "../../i18n.service";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "@angular/forms";
12
+ import * as i8 from "../../components/pick-location/pick-location.component";
13
+ import * as i9 from "../../components/custom-input/custom-input.component";
14
+ import * as i10 from "../../components/custom-text-area/custom-text-area.component";
15
+ import * as i11 from "../../components/custom-table/custom-table.component";
16
+ import * as i12 from "../../components/custom-date-picker/custom-date-picker.component";
17
+ import * as i13 from "../../components/custom-dropdown/custom-dropdown.component";
18
+ import * as i14 from "../../components/search-box/search-box.component";
19
+ import * as i15 from "../../components/file-upload/file-upload.component";
20
+ import * as i16 from "../../components/dependent-table/dependent-table.component";
21
+ import * as i17 from "../../components/custom-label/custom-label.component";
22
+ import * as i18 from "../../components/table-appendix/table-appendix.component";
23
+ import * as i19 from "../../components/custom-date/custom-date.component";
24
+ import * as i20 from "../../components/custom-time/custom-time.component";
25
+ import * as i21 from "../../components/custom-button/custom-button.component";
26
+ import * as i22 from "../../i18n.pipe";
24
27
  export class QuestionbookComponent {
25
28
  sfService;
26
29
  dataService;
27
30
  changeService;
28
31
  storageService;
32
+ i18nService;
33
+ document;
29
34
  qbItem;
30
35
  questionItem;
31
36
  questions;
32
37
  errorFieldId;
33
38
  labelValue;
34
39
  handleDropDown = new EventEmitter();
35
- // VD 08NOV23 - handle the button event
36
- handleButton = new EventEmitter();
37
40
  dropDownData;
38
41
  subQuestions;
39
42
  selectedFileData = [];
40
- constructor(sfService, dataService, changeService, storageService) {
43
+ // HA 19DEC23 Declaration for Salesforce Styling
44
+ style;
45
+ langDirection;
46
+ bookStyle;
47
+ constructor(sfService, dataService, changeService, storageService, i18nService, document) {
41
48
  this.sfService = sfService;
42
49
  this.dataService = dataService;
43
50
  this.changeService = changeService;
44
51
  this.storageService = storageService;
52
+ this.i18nService = i18nService;
53
+ this.document = document;
45
54
  }
46
55
  ngOnInit() {
47
56
  console.log('inside QuestionBookComponent OnInit');
48
- // console.log(this.qbItem);
57
+ // console.log('qbItem', this.qbItem);
49
58
  // console.log(this.questions);
59
+ // HA 19DEC23 Logic for Question Book Styling(Slaesforce)
60
+ if (this.qbItem.Style__c) {
61
+ this.qbItem.Style__c = JSON.parse(JSON.parse(JSON.stringify(this.qbItem?.Style__c)));
62
+ }
63
+ else {
64
+ this.qbItem.Style__c = {
65
+ "labelClass": "",
66
+ "labelStyle": "",
67
+ "inputClass": "",
68
+ "inputStyle": "",
69
+ "bookStyle": "",
70
+ "showLabel": true,
71
+ "direction": "ltr",
72
+ "questionStyle": ""
73
+ };
74
+ }
75
+ this.langDirection = this.qbItem.Style__c.direction ? this.qbItem?.Style__c?.direction : 'ltr';
76
+ // this.i18nService.languageChange(this.langDirection);
77
+ this.bookStyle = this.qbItem?.Style__c?.bookStyle;
78
+ // console.log('this.qbItem ', this.qbItem.Style__c);
50
79
  this.questions.forEach(element => {
51
80
  var htmlElement = element.Question_Text__c;
52
81
  var textOnly = htmlElement?.replace(/<[^>]*>/g, '');
53
82
  element.Question_Text__c = textOnly;
83
+ // HA 19DEC23 Logic for Question Styling(Slaesforce)
84
+ if (element.Style__c) {
85
+ element.Style__c = JSON.parse('' + element?.Style__c);
86
+ }
87
+ else {
88
+ element.Style__c = this.qbItem?.Style__c;
89
+ }
90
+ element['langDirection'] = element.Style__c.direction ? element.Style__c.direction : this.langDirection;
54
91
  });
55
92
  this.subQuestions = [];
56
93
  this.setSubQuestions(this.questions);
@@ -86,10 +123,6 @@ export class QuestionbookComponent {
86
123
  else if (ques.Type__c == 'File') {
87
124
  ques.input = this.selectedFileData = event;
88
125
  }
89
- else if (ques.Type__c == 'Button') { // VD 08NOV23 - handle the button ques
90
- ques.input = event;
91
- this.handleButton.emit(ques);
92
- }
93
126
  else {
94
127
  ques.input = event;
95
128
  }
@@ -106,13 +139,16 @@ export class QuestionbookComponent {
106
139
  deleteFile(fileData) {
107
140
  console.log('fileDATA', fileData);
108
141
  }
109
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: QuestionbookComponent, deps: [{ token: i1.SalesforceService }, { token: i2.DataService }, { token: i3.ChangeService }, { token: i4.StorageService }], target: i0.ɵɵFactoryTarget.Component });
110
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: QuestionbookComponent, selector: "lib-questionbook", inputs: { qbItem: "qbItem", questionItem: "questionItem", questions: "questions", errorFieldId: "errorFieldId", labelValue: "labelValue", dropDownData: "dropDownData" }, outputs: { handleDropDown: "handleDropDown", handleButton: "handleButton" }, ngImport: i0, template: "<div [class]=\"qbItem.isShengel__c ? 'form-group content-box' : 'form-group'\">\n <div class=\"form-row\">\n <div [class]=\"qbItem.isShengel__c ? '' : 'myt-align3'\"\n [class]=\"qbItem.isShengel__c ? 'col-lg-' + ques.Size__c + ' paddingnone' : 'col-md-' + ques.Size__c + ' paddingnone'\"\n *ngFor=\"let ques of questions;let i = index\" [id]=\"ques.Id\">\n <!-- Sub Question Label -->\n <div [ngClass]=\"{ down2: qbItem?.Progress_Bar__c }\">\n <span [class]=\"qbItem.isShengel__c ? 'dis-flex shengel-myt-font3 myt-font7' : 'dis-flex myt-font3 myt-font7' \">{{ ques?.Question_Text__c }}</span>\n </div>\n\n <!-- DateTime -->\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n <app-custom-date-picker [minDate]=\"ques.minDate\" [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date-picker>\n </div>\n\n <!-- Date-->\n <div *ngIf=\"ques.Type__c === 'Date'\">\n <app-custom-date [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date>\n </div>\n\n <!-- Time-->\n <div *ngIf=\"ques.Type__c === 'Time'\">\n <app-custom-time [time]=\"ques.input\" (timeChange)=\"childEventCapture($event, ques)\">\n </app-custom-time>\n </div>\n\n <!-- Text -->\n <div *ngIf=\"ques.Type__c === 'Text'\">\n <app-custom-input [fromShengel]=\"qbItem.isShengel__c\" [value]=\"ques.input\" [ngClassValue]=\"{\n 'dis-flex dt-line date-line bookText boxoutline myt-font1': qbItem.Progress_Bar__c,\n textBox: !qbItem.Progress_Bar__c\n }\" [question]=\"ques\" [idValue]=\"ques.Tracking_ID__c\" [focusEvent]=\"clearSQError(ques.Id)\"\n [error]=\"ques.error\" [placeholder]=\"ques.Question__c\" (inputValue)=\"childEventCapture($event, ques)\">\n </app-custom-input>\n </div>\n \n <!-- for pick location -->\n <div *ngIf=\"ques.Type__c === 'Location'\">\n <app-pick-location [address]=\"ques.input\" (locationSelected)=\"childEventCapture($event, ques)\">\n </app-pick-location>\n </div>\n\n <!-- for text area -->\n <div *ngIf=\"ques.Type__c === 'TextArea'\">\n <app-custom-text-area [value]=\"ques.input\" [rows]=\"3\" [error]=\"ques.error\" [placeholder]=\"ques.Question__c \"\n (textareaValueChange)=\"childEventCapture($event, ques)\"></app-custom-text-area>\n </div>\n\n <!-- Email -->\n <div *ngIf=\"ques.Type__c === 'Email'\">\n <input type=\"email\" [(ngModel)]=\"ques.input\" [id]=\"ques.Id\" required=\"\" (focus)=\"clearSQError(ques.Id)\"\n style.border-color=\"{{ ques.error ? 'red' : '' }}\" placeholder=\"{{ ques.Question__c }}\" />\n </div>\n\n <!-- Table -->\n <div *ngIf=\"ques.Type__c === 'Table'\" class=\"\">\n <app-custom-table [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-table>\n </div>\n\n <!-- Table Appendix -->\n <div *ngIf=\"ques.Type__c === 'TableAppendix'\" class=\"\">\n <app-table-appendix [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-table-appendix>\n </div>\n <!-- list -->\n <div *ngIf=\"ques.Type__c === 'List'\" class=\"\">\n <lib-search-box [question]=\"ques\" [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [placeHolderText]=\"ques.Question__c\" [selectedValue]=\"ques.input\" (searchValueChange)=\"childEventCapture($event, ques)\">\n </lib-search-box>\n </div>\n\n <!-- Dropdown -->\n <div *ngIf=\"ques.Type__c === 'Dropdown'\" class=\"\">\n <app-custom-dropdown [fromShengel]=\"qbItem.isShengel__c\" [options]=\"ques.Question_Options__r.records\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\" [placeholder]=\"'---Select---'\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-dropdown>\n <i class=\"fa fa-check \" aria-hidden=\"true\" *ngIf=\"ques?.input?.length > 0\"></i>\n </div>\n\n <!-- Attachment / Files -->\n <div *ngIf=\"ques.Type__c === 'File'\" class=\"\">\n <app-file-upload [limitFileUploading]=\"5\" [allFiles]=\"ques.input\" [tableFile]=\"false\"\n (selectedFileData)=\"childEventCapture($event, ques)\" (deletedFileData)=\"deleteFile($event)\"\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n </div>\n <div *ngIf=\"ques.Type__c === 'PopUpMessage'\" class=\"\">\n <app-dependent-table [alertMessage]=\"ques.Error_Message__c\">\n </app-dependent-table>\n </div>\n <div *ngIf=\"ques.Type__c === 'Label'\" class=\"\">\n <app-custom-label [labelValue]=\"labelValue\">\n </app-custom-label>\n </div>\n <!-- 08NOV23 - button type question added -->\n <!-- Button -->\n <div *ngIf=\"ques.Type__c === 'Button'\" class=\"\">\n <app-custom-button [height]=\"'50px'\" \n [width]=\"'150px'\" \n [buttonText]=\"ques?.Question__c\"\n [value]=\"ques?.Question__c\"\n (buttonValue)=\"childEventCapture($event, ques)\"\n >\n </app-custom-button>\n </div>\n </div>\n </div>\n</div>", styles: [".form-group.content-box{background:#ffffff;padding:40px;border:1px solid #e8e8e8;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.col-lg-6{width:100%}.shengel-myt-font3{padding:5px 15px 5px 2px;color:#9a9a9a;font-size:14px;font-weight:400}.myt-font7{display:flex;justify-content:flex-start}@media (min-width: 1200px){.col-lg-6{width:50%!important}.form-row{display:flex;flex-wrap:wrap}}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.PickLocationComponent, selector: "app-pick-location", inputs: ["address"], outputs: ["locationSelected"] }, { kind: "component", type: i8.CustomInputComponent, selector: "app-custom-input", inputs: ["value", "question", "disabled", "placeholder", "error", "fromShengel", "ngClassValue", "idValue", "focusEvent"], outputs: ["inputValue"] }, { kind: "component", type: i9.CustomTextAreaComponent, selector: "app-custom-text-area", inputs: ["value", "placeholder", "rows", "error"], outputs: ["textareaValueChange"] }, { kind: "component", type: i10.CustomTableComponent, selector: "app-custom-table", inputs: ["question"], outputs: ["valueChange"] }, { kind: "component", type: i11.CustomDatePickerComponent, selector: "app-custom-date-picker", inputs: ["date", "minDate", "maxDate"], outputs: ["dateChange"] }, { kind: "component", type: i12.CustomDropdownComponent, selector: "app-custom-dropdown", inputs: ["options", "placeholder", "apiMeta", "selectedValue", "progressBar", "id", "errorMessage", "error", "fromShengel", "referenceField"], outputs: ["valueChange"] }, { kind: "component", type: i13.SearchBoxComponent, selector: "lib-search-box", inputs: ["placeHolderText", "question", "apiMeta", "id"], outputs: ["searchValueChange"] }, { kind: "component", type: i14.FileUploadComponent, selector: "app-file-upload", inputs: ["allFiles", "limitFileUploading", "isDeleteFileButtonVisible", "isShowNoFileIcon", "tableFile"], outputs: ["selectedFileData", "deletedFileData"] }, { kind: "component", type: i15.DependentTableComponent, selector: "app-dependent-table", inputs: ["alertMessage"] }, { kind: "component", type: i16.CustomLabelComponent, selector: "app-custom-label", inputs: ["labelValue"] }, { kind: "component", type: i17.TableAppendixComponent, selector: "app-table-appendix", inputs: ["question"], outputs: ["valueChange"] }, { kind: "component", type: i18.CustomDateComponent, selector: "app-custom-date", inputs: ["date"], outputs: ["dateChange"] }, { kind: "component", type: i19.CustomTimeComponent, selector: "app-custom-time", inputs: ["time"], outputs: ["timeChange"] }, { kind: "component", type: i20.CustomButtonComponent, selector: "app-custom-button", inputs: ["height", "width", "textColor", "buttonText", "value", "backgroundColor"], outputs: ["buttonValue"] }] });
142
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: QuestionbookComponent, deps: [{ token: i1.SalesforceService }, { token: i2.DataService }, { token: i3.ChangeService }, { token: i4.StorageService }, { token: i5.I18nService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: QuestionbookComponent, selector: "lib-questionbook", inputs: { qbItem: "qbItem", questionItem: "questionItem", questions: "questions", errorFieldId: "errorFieldId", labelValue: "labelValue", dropDownData: "dropDownData" }, outputs: { handleDropDown: "handleDropDown" }, ngImport: i0, template: "<!-- HA 20DEC23 Book Style from salesforce -->\n<div [class]=\"qbItem.isShengel__c ? 'form-group content-box' : 'form-group'\" [style]=\"bookStyle\">\n <div class=\"form-row\">\n <!-- HA 20DEC23 Directive and Question Style from salesforce -->\n <div [class]=\"qbItem.isShengel__c ? '' : 'myt-align3'\"\n [class]=\"qbItem.isShengel__c ? 'col-lg-' + ques.Size__c + ' paddingnone' : 'col-md-' + ques.Size__c + ' paddingnone'\"\n *ngFor=\"let ques of questions;let i = index\" [id]=\"ques.Id\" [dir]=\"ques.langDirection\" [style]=\"ques?.Style__c?.questionStyle\">\n <!-- Sub Question Label -->\n <!-- HA 20DEC23 Label Style from salesforce -->\n <div [ngClass]=\"{ down2: qbItem?.Progress_Bar__c }\" [style]=\"ques.Style__c.labelStyle\">\n <span [class]=\"qbItem.isShengel__c ? 'dis-flex shengel-myt-font3 myt-font7' : 'dis-flex myt-font3 myt-font7' \">{{ ques?.Question_Text__c }}</span>\n </div>\n\n <!-- DateTime -->\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n <app-custom-date-picker [minDate]=\"ques.minDate\" [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date-picker>\n </div>\n\n <!-- Date-->\n <div *ngIf=\"ques.Type__c === 'Date'\">\n <app-custom-date [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date>\n </div>\n\n <!-- Time-->\n <div *ngIf=\"ques.Type__c === 'Time'\">\n <app-custom-time [time]=\"ques.input\" (timeChange)=\"childEventCapture($event, ques)\">\n </app-custom-time>\n </div>\n\n <!-- Text -->\n <div *ngIf=\"ques.Type__c === 'Text'\">\n <app-custom-input [fromShengel]=\"qbItem.isShengel__c\" [value]=\"ques.input\" [ngClassValue]=\"{\n 'dis-flex dt-line date-line bookText boxoutline myt-font1': qbItem.Progress_Bar__c,\n textBox: !qbItem.Progress_Bar__c\n }\" [question]=\"ques\" [idValue]=\"ques.Tracking_ID__c\" [focusEvent]=\"clearSQError(ques.Id)\"\n [error]=\"ques.error\" [placeholder]=\"ques.Question__c\" (inputValue)=\"childEventCapture($event, ques)\">\n </app-custom-input>\n </div>\n \n <!-- for pick location -->\n <div *ngIf=\"ques.Type__c === 'Location'\">\n <app-pick-location [address]=\"ques.input\" (locationSelected)=\"childEventCapture($event, ques)\">\n </app-pick-location>\n </div>\n\n <!-- for text area -->\n <div *ngIf=\"ques.Type__c === 'TextArea'\">\n <app-custom-text-area [value]=\"ques.input\" [rows]=\"3\" [error]=\"ques.error\" [placeholder]=\"ques.Question__c \"\n (textareaValueChange)=\"childEventCapture($event, ques)\"></app-custom-text-area>\n </div>\n\n <!-- Email -->\n <div *ngIf=\"ques.Type__c === 'Email'\">\n <input type=\"email\" [(ngModel)]=\"ques.input\" [id]=\"ques.Id\" required=\"\" (focus)=\"clearSQError(ques.Id)\"\n style.border-color=\"{{ ques.error ? 'red' : '' }}\" placeholder=\"{{ ques.Question__c }}\" />\n </div>\n\n <!-- Table -->\n <div *ngIf=\"ques.Type__c === 'Table'\" class=\"\">\n <app-custom-table [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-table>\n </div>\n\n <!-- Table Appendix -->\n <div *ngIf=\"ques.Type__c === 'TableAppendix'\" class=\"\">\n <app-table-appendix [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-table-appendix>\n </div>\n <!-- list -->\n <div *ngIf=\"ques.Type__c === 'List'\" class=\"\">\n <lib-search-box [question]=\"ques\" [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [placeHolderText]=\"ques.Question__c\" [selectedValue]=\"ques.input\" (searchValueChange)=\"childEventCapture($event, ques)\">\n </lib-search-box>\n </div>\n\n <!-- Dropdown -->\n <div *ngIf=\"ques.Type__c === 'Dropdown'\" class=\"\">\n <!-- HA 20DEC23 For Translation -->\n <app-custom-dropdown [fromShengel]=\"qbItem.isShengel__c\" [options]=\"ques.Question_Options__r.records\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\" placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-dropdown>\n <i class=\"fa fa-check \" aria-hidden=\"true\" *ngIf=\"ques?.input?.length > 0\"></i>\n </div>\n\n <!-- Attachment / Files -->\n <div *ngIf=\"ques.Type__c === 'File'\" class=\"\">\n <app-file-upload [limitFileUploading]=\"5\" [allFiles]=\"ques.input\" [tableFile]=\"false\"\n (selectedFileData)=\"childEventCapture($event, ques)\" (deletedFileData)=\"deleteFile($event)\"\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n </div>\n <div *ngIf=\"ques.Type__c === 'PopUpMessage'\" class=\"\">\n <app-dependent-table [alertMessage]=\"ques.Error_Message__c\">\n </app-dependent-table>\n </div>\n <div *ngIf=\"ques.Type__c === 'Label'\" class=\"\">\n <app-custom-label [labelValue]=\"labelValue\">\n </app-custom-label>\n </div>\n <!-- 08NOV23 - button type question added -->\n <!-- Button -->\n <div *ngIf=\"ques.Type__c === 'Button'\" class=\"\">\n <app-custom-button [height]=\"'50px'\" \n [width]=\"'150px'\" \n [buttonText]=\"ques?.Question__c\"\n [value]=\"ques?.Question__c\"\n (buttonValue)=\"childEventCapture($event, ques)\"\n >\n </app-custom-button>\n </div>\n </div>\n </div>\n</div>", styles: [".form-group.content-box{background:#ffffff;padding:40px;border:1px solid #e8e8e8;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.col-lg-6{width:100%}.myt-font7{display:flex;justify-content:flex-start}@media (min-width: 1200px){.col-lg-6{width:50%!important}.form-row{display:flex;flex-wrap:wrap}}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.PickLocationComponent, selector: "app-pick-location", inputs: ["address"], outputs: ["locationSelected"] }, { kind: "component", type: i9.CustomInputComponent, selector: "app-custom-input", inputs: ["value", "question", "disabled", "placeholder", "error", "fromShengel", "ngClassValue", "idValue", "focusEvent"], outputs: ["inputValue"] }, { kind: "component", type: i10.CustomTextAreaComponent, selector: "app-custom-text-area", inputs: ["value", "placeholder", "rows", "error"], outputs: ["textareaValueChange"] }, { kind: "component", type: i11.CustomTableComponent, selector: "app-custom-table", inputs: ["question"], outputs: ["valueChange"] }, { kind: "component", type: i12.CustomDatePickerComponent, selector: "app-custom-date-picker", inputs: ["date", "minDate", "maxDate"], outputs: ["dateChange"] }, { kind: "component", type: i13.CustomDropdownComponent, selector: "app-custom-dropdown", inputs: ["options", "placeholder", "apiMeta", "selectedValue", "progressBar", "id", "errorMessage", "error", "fromShengel", "referenceField"], outputs: ["valueChange"] }, { kind: "component", type: i14.SearchBoxComponent, selector: "lib-search-box", inputs: ["placeHolderText", "question", "apiMeta", "id"], outputs: ["searchValueChange"] }, { kind: "component", type: i15.FileUploadComponent, selector: "app-file-upload", inputs: ["allFiles", "limitFileUploading", "isDeleteFileButtonVisible", "isShowNoFileIcon", "tableFile"], outputs: ["selectedFileData", "deletedFileData"] }, { kind: "component", type: i16.DependentTableComponent, selector: "app-dependent-table", inputs: ["alertMessage"] }, { kind: "component", type: i17.CustomLabelComponent, selector: "app-custom-label", inputs: ["labelValue"] }, { kind: "component", type: i18.TableAppendixComponent, selector: "app-table-appendix", inputs: ["question"], outputs: ["valueChange"] }, { kind: "component", type: i19.CustomDateComponent, selector: "app-custom-date", inputs: ["date"], outputs: ["dateChange"] }, { kind: "component", type: i20.CustomTimeComponent, selector: "app-custom-time", inputs: ["time"], outputs: ["timeChange"] }, { kind: "component", type: i21.CustomButtonComponent, selector: "app-custom-button", inputs: ["height", "width", "textColor", "buttonText", "value", "backgroundColor"], outputs: ["buttonValue"] }, { kind: "pipe", type: i22.I18nPipe, name: "i18n" }] });
111
144
  }
112
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: QuestionbookComponent, decorators: [{
113
146
  type: Component,
114
- args: [{ selector: 'lib-questionbook', template: "<div [class]=\"qbItem.isShengel__c ? 'form-group content-box' : 'form-group'\">\n <div class=\"form-row\">\n <div [class]=\"qbItem.isShengel__c ? '' : 'myt-align3'\"\n [class]=\"qbItem.isShengel__c ? 'col-lg-' + ques.Size__c + ' paddingnone' : 'col-md-' + ques.Size__c + ' paddingnone'\"\n *ngFor=\"let ques of questions;let i = index\" [id]=\"ques.Id\">\n <!-- Sub Question Label -->\n <div [ngClass]=\"{ down2: qbItem?.Progress_Bar__c }\">\n <span [class]=\"qbItem.isShengel__c ? 'dis-flex shengel-myt-font3 myt-font7' : 'dis-flex myt-font3 myt-font7' \">{{ ques?.Question_Text__c }}</span>\n </div>\n\n <!-- DateTime -->\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n <app-custom-date-picker [minDate]=\"ques.minDate\" [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date-picker>\n </div>\n\n <!-- Date-->\n <div *ngIf=\"ques.Type__c === 'Date'\">\n <app-custom-date [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date>\n </div>\n\n <!-- Time-->\n <div *ngIf=\"ques.Type__c === 'Time'\">\n <app-custom-time [time]=\"ques.input\" (timeChange)=\"childEventCapture($event, ques)\">\n </app-custom-time>\n </div>\n\n <!-- Text -->\n <div *ngIf=\"ques.Type__c === 'Text'\">\n <app-custom-input [fromShengel]=\"qbItem.isShengel__c\" [value]=\"ques.input\" [ngClassValue]=\"{\n 'dis-flex dt-line date-line bookText boxoutline myt-font1': qbItem.Progress_Bar__c,\n textBox: !qbItem.Progress_Bar__c\n }\" [question]=\"ques\" [idValue]=\"ques.Tracking_ID__c\" [focusEvent]=\"clearSQError(ques.Id)\"\n [error]=\"ques.error\" [placeholder]=\"ques.Question__c\" (inputValue)=\"childEventCapture($event, ques)\">\n </app-custom-input>\n </div>\n \n <!-- for pick location -->\n <div *ngIf=\"ques.Type__c === 'Location'\">\n <app-pick-location [address]=\"ques.input\" (locationSelected)=\"childEventCapture($event, ques)\">\n </app-pick-location>\n </div>\n\n <!-- for text area -->\n <div *ngIf=\"ques.Type__c === 'TextArea'\">\n <app-custom-text-area [value]=\"ques.input\" [rows]=\"3\" [error]=\"ques.error\" [placeholder]=\"ques.Question__c \"\n (textareaValueChange)=\"childEventCapture($event, ques)\"></app-custom-text-area>\n </div>\n\n <!-- Email -->\n <div *ngIf=\"ques.Type__c === 'Email'\">\n <input type=\"email\" [(ngModel)]=\"ques.input\" [id]=\"ques.Id\" required=\"\" (focus)=\"clearSQError(ques.Id)\"\n style.border-color=\"{{ ques.error ? 'red' : '' }}\" placeholder=\"{{ ques.Question__c }}\" />\n </div>\n\n <!-- Table -->\n <div *ngIf=\"ques.Type__c === 'Table'\" class=\"\">\n <app-custom-table [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-table>\n </div>\n\n <!-- Table Appendix -->\n <div *ngIf=\"ques.Type__c === 'TableAppendix'\" class=\"\">\n <app-table-appendix [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-table-appendix>\n </div>\n <!-- list -->\n <div *ngIf=\"ques.Type__c === 'List'\" class=\"\">\n <lib-search-box [question]=\"ques\" [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [placeHolderText]=\"ques.Question__c\" [selectedValue]=\"ques.input\" (searchValueChange)=\"childEventCapture($event, ques)\">\n </lib-search-box>\n </div>\n\n <!-- Dropdown -->\n <div *ngIf=\"ques.Type__c === 'Dropdown'\" class=\"\">\n <app-custom-dropdown [fromShengel]=\"qbItem.isShengel__c\" [options]=\"ques.Question_Options__r.records\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\" [placeholder]=\"'---Select---'\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-dropdown>\n <i class=\"fa fa-check \" aria-hidden=\"true\" *ngIf=\"ques?.input?.length > 0\"></i>\n </div>\n\n <!-- Attachment / Files -->\n <div *ngIf=\"ques.Type__c === 'File'\" class=\"\">\n <app-file-upload [limitFileUploading]=\"5\" [allFiles]=\"ques.input\" [tableFile]=\"false\"\n (selectedFileData)=\"childEventCapture($event, ques)\" (deletedFileData)=\"deleteFile($event)\"\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n </div>\n <div *ngIf=\"ques.Type__c === 'PopUpMessage'\" class=\"\">\n <app-dependent-table [alertMessage]=\"ques.Error_Message__c\">\n </app-dependent-table>\n </div>\n <div *ngIf=\"ques.Type__c === 'Label'\" class=\"\">\n <app-custom-label [labelValue]=\"labelValue\">\n </app-custom-label>\n </div>\n <!-- 08NOV23 - button type question added -->\n <!-- Button -->\n <div *ngIf=\"ques.Type__c === 'Button'\" class=\"\">\n <app-custom-button [height]=\"'50px'\" \n [width]=\"'150px'\" \n [buttonText]=\"ques?.Question__c\"\n [value]=\"ques?.Question__c\"\n (buttonValue)=\"childEventCapture($event, ques)\"\n >\n </app-custom-button>\n </div>\n </div>\n </div>\n</div>", styles: [".form-group.content-box{background:#ffffff;padding:40px;border:1px solid #e8e8e8;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.col-lg-6{width:100%}.shengel-myt-font3{padding:5px 15px 5px 2px;color:#9a9a9a;font-size:14px;font-weight:400}.myt-font7{display:flex;justify-content:flex-start}@media (min-width: 1200px){.col-lg-6{width:50%!important}.form-row{display:flex;flex-wrap:wrap}}\n"] }]
115
- }], ctorParameters: function () { return [{ type: i1.SalesforceService }, { type: i2.DataService }, { type: i3.ChangeService }, { type: i4.StorageService }]; }, propDecorators: { qbItem: [{
147
+ args: [{ selector: 'lib-questionbook', template: "<!-- HA 20DEC23 Book Style from salesforce -->\n<div [class]=\"qbItem.isShengel__c ? 'form-group content-box' : 'form-group'\" [style]=\"bookStyle\">\n <div class=\"form-row\">\n <!-- HA 20DEC23 Directive and Question Style from salesforce -->\n <div [class]=\"qbItem.isShengel__c ? '' : 'myt-align3'\"\n [class]=\"qbItem.isShengel__c ? 'col-lg-' + ques.Size__c + ' paddingnone' : 'col-md-' + ques.Size__c + ' paddingnone'\"\n *ngFor=\"let ques of questions;let i = index\" [id]=\"ques.Id\" [dir]=\"ques.langDirection\" [style]=\"ques?.Style__c?.questionStyle\">\n <!-- Sub Question Label -->\n <!-- HA 20DEC23 Label Style from salesforce -->\n <div [ngClass]=\"{ down2: qbItem?.Progress_Bar__c }\" [style]=\"ques.Style__c.labelStyle\">\n <span [class]=\"qbItem.isShengel__c ? 'dis-flex shengel-myt-font3 myt-font7' : 'dis-flex myt-font3 myt-font7' \">{{ ques?.Question_Text__c }}</span>\n </div>\n\n <!-- DateTime -->\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n <app-custom-date-picker [minDate]=\"ques.minDate\" [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date-picker>\n </div>\n\n <!-- Date-->\n <div *ngIf=\"ques.Type__c === 'Date'\">\n <app-custom-date [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date>\n </div>\n\n <!-- Time-->\n <div *ngIf=\"ques.Type__c === 'Time'\">\n <app-custom-time [time]=\"ques.input\" (timeChange)=\"childEventCapture($event, ques)\">\n </app-custom-time>\n </div>\n\n <!-- Text -->\n <div *ngIf=\"ques.Type__c === 'Text'\">\n <app-custom-input [fromShengel]=\"qbItem.isShengel__c\" [value]=\"ques.input\" [ngClassValue]=\"{\n 'dis-flex dt-line date-line bookText boxoutline myt-font1': qbItem.Progress_Bar__c,\n textBox: !qbItem.Progress_Bar__c\n }\" [question]=\"ques\" [idValue]=\"ques.Tracking_ID__c\" [focusEvent]=\"clearSQError(ques.Id)\"\n [error]=\"ques.error\" [placeholder]=\"ques.Question__c\" (inputValue)=\"childEventCapture($event, ques)\">\n </app-custom-input>\n </div>\n \n <!-- for pick location -->\n <div *ngIf=\"ques.Type__c === 'Location'\">\n <app-pick-location [address]=\"ques.input\" (locationSelected)=\"childEventCapture($event, ques)\">\n </app-pick-location>\n </div>\n\n <!-- for text area -->\n <div *ngIf=\"ques.Type__c === 'TextArea'\">\n <app-custom-text-area [value]=\"ques.input\" [rows]=\"3\" [error]=\"ques.error\" [placeholder]=\"ques.Question__c \"\n (textareaValueChange)=\"childEventCapture($event, ques)\"></app-custom-text-area>\n </div>\n\n <!-- Email -->\n <div *ngIf=\"ques.Type__c === 'Email'\">\n <input type=\"email\" [(ngModel)]=\"ques.input\" [id]=\"ques.Id\" required=\"\" (focus)=\"clearSQError(ques.Id)\"\n style.border-color=\"{{ ques.error ? 'red' : '' }}\" placeholder=\"{{ ques.Question__c }}\" />\n </div>\n\n <!-- Table -->\n <div *ngIf=\"ques.Type__c === 'Table'\" class=\"\">\n <app-custom-table [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-table>\n </div>\n\n <!-- Table Appendix -->\n <div *ngIf=\"ques.Type__c === 'TableAppendix'\" class=\"\">\n <app-table-appendix [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-table-appendix>\n </div>\n <!-- list -->\n <div *ngIf=\"ques.Type__c === 'List'\" class=\"\">\n <lib-search-box [question]=\"ques\" [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [placeHolderText]=\"ques.Question__c\" [selectedValue]=\"ques.input\" (searchValueChange)=\"childEventCapture($event, ques)\">\n </lib-search-box>\n </div>\n\n <!-- Dropdown -->\n <div *ngIf=\"ques.Type__c === 'Dropdown'\" class=\"\">\n <!-- HA 20DEC23 For Translation -->\n <app-custom-dropdown [fromShengel]=\"qbItem.isShengel__c\" [options]=\"ques.Question_Options__r.records\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\" placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-dropdown>\n <i class=\"fa fa-check \" aria-hidden=\"true\" *ngIf=\"ques?.input?.length > 0\"></i>\n </div>\n\n <!-- Attachment / Files -->\n <div *ngIf=\"ques.Type__c === 'File'\" class=\"\">\n <app-file-upload [limitFileUploading]=\"5\" [allFiles]=\"ques.input\" [tableFile]=\"false\"\n (selectedFileData)=\"childEventCapture($event, ques)\" (deletedFileData)=\"deleteFile($event)\"\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n </div>\n <div *ngIf=\"ques.Type__c === 'PopUpMessage'\" class=\"\">\n <app-dependent-table [alertMessage]=\"ques.Error_Message__c\">\n </app-dependent-table>\n </div>\n <div *ngIf=\"ques.Type__c === 'Label'\" class=\"\">\n <app-custom-label [labelValue]=\"labelValue\">\n </app-custom-label>\n </div>\n <!-- 08NOV23 - button type question added -->\n <!-- Button -->\n <div *ngIf=\"ques.Type__c === 'Button'\" class=\"\">\n <app-custom-button [height]=\"'50px'\" \n [width]=\"'150px'\" \n [buttonText]=\"ques?.Question__c\"\n [value]=\"ques?.Question__c\"\n (buttonValue)=\"childEventCapture($event, ques)\"\n >\n </app-custom-button>\n </div>\n </div>\n </div>\n</div>", styles: [".form-group.content-box{background:#ffffff;padding:40px;border:1px solid #e8e8e8;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.col-lg-6{width:100%}.myt-font7{display:flex;justify-content:flex-start}@media (min-width: 1200px){.col-lg-6{width:50%!important}.form-row{display:flex;flex-wrap:wrap}}\n"] }]
148
+ }], ctorParameters: function () { return [{ type: i1.SalesforceService }, { type: i2.DataService }, { type: i3.ChangeService }, { type: i4.StorageService }, { type: i5.I18nService }, { type: Document, decorators: [{
149
+ type: Inject,
150
+ args: [DOCUMENT]
151
+ }] }]; }, propDecorators: { qbItem: [{
116
152
  type: Input
117
153
  }], questionItem: [{
118
154
  type: Input
@@ -124,9 +160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
124
160
  type: Input
125
161
  }], handleDropDown: [{
126
162
  type: Output
127
- }], handleButton: [{
128
- type: Output
129
163
  }], dropDownData: [{
130
164
  type: Input
131
165
  }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25ib29rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFPaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT3hELE1BQU0sT0FBTyxxQkFBcUI7SUFhWjtJQUNWO0lBQ0E7SUFDQTtJQWZELE1BQU0sQ0FBZTtJQUNyQixZQUFZLENBQVc7SUFDdkIsU0FBUyxDQUFhO0lBQ3RCLFlBQVksQ0FBSztJQUNqQixVQUFVLENBQVE7SUFDakIsY0FBYyxHQUFxQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3JFLHVDQUF1QztJQUM3QixZQUFZLEdBQXFCLElBQUksWUFBWSxFQUFPLENBQUM7SUFDMUQsWUFBWSxDQUFLO0lBQzFCLFlBQVksQ0FBYTtJQUN6QixnQkFBZ0IsR0FBVSxFQUFFLENBQUM7SUFFN0IsWUFBb0IsU0FBNEIsRUFDdEMsV0FBd0IsRUFDeEIsYUFBNEIsRUFDNUIsY0FBOEI7UUFIcEIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQ3hDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMs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RyxJQUFJLENBQUM7U0FDbkI7UUFDRCw2RkFBNkY7UUFDN0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELFVBQVUsQ0FBQyxRQUFZO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7d0dBaEZVLHFCQUFxQjs0RkFBckIscUJBQXFCLCtTQ2RsQyx5a01BK0dNOzs0RkRqR08scUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGtCQUFrQjsyTEFLbkIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNFLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUXVlc3Rpb24sIFF1ZXN0aW9uQm9vayB9IGZyb20gJy4uLy4uL3dyYXBwZXInO1xuaW1wb3J0IHsgU2FsZXNmb3JjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2FsZXNmb3JjZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBFcnJvcldyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbC9lcnJvcldyYXBwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcXVlc3Rpb25ib29rJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXN0aW9uYm9vay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXN0aW9uYm9vay5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUXVlc3Rpb25ib29rQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcWJJdGVtOiBRdWVzdGlvbkJvb2s7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uSXRlbTogUXVlc3Rpb247XG4gIEBJbnB1dCgpIHF1ZXN0aW9uczogUXVlc3Rpb25bXTtcbiAgQElucHV0KCkgZXJyb3JGaWVsZElkOmFueTtcbiAgQElucHV0KCkgbGFiZWxWYWx1ZTpzdHJpbmc7IFxuICBAT3V0cHV0KCkgaGFuZGxlRHJvcERvd246RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gVkQgMDhOT1YyMyAtIGhhbmRsZSB0aGUgYnV0dG9uIGV2ZW50XG4gIEBPdXRwdXQoKSBoYW5kbGVCdXR0b246RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgZHJvcERvd25EYXRhOmFueTtcbiAgc3ViUXVlc3Rpb25zOiBRdWVzdGlvbltdO1xuICBzZWxlY3RlZEZpbGVEYXRhOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2ZTZXJ2aWNlOiBTYWxlc2ZvcmNlU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UsIFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlKSB7IFxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbkJvb2tDb21wb25lbnQgT25Jbml0Jyk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5xYkl0ZW0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMucXVlc3Rpb25zKTtcbiAgICB0aGlzLnF1ZXN0aW9ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgdmFyIGh0bWxFbGVtZW50ID0gZWxlbWVudC5RdWVzdGlvbl9UZXh0X19jIDtcbiAgICAgIHZhciB0ZXh0T25seSA9IGh0bWxFbGVtZW50Py5yZXBsYWNlKC88W14+XSo+L2csICcnKVxuICAgICAgZWxlbWVudC5RdWVzdGlvbl9UZXh0X19jID0gdGV4dE9ubHk7XG4gICAgfSk7XG4gICAgdGhpcy5zdWJRdWVzdGlvbnMgPSBbXTtcbiAgICB0aGlzLnNldFN1YlF1ZXN0aW9ucyh0aGlzLnF1ZXN0aW9ucyk7XG4gIH1cblxuICBjbGVhclNRRXJyb3IocXVlc0lkKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbkJvb2tDb21wb25lbnQgY2xlYXJTUUVycm9yJyk7XG4gICAgdmFyIHNxTGlzdCA9IHRoaXMuc3ViUXVlc3Rpb25zPy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uSWQgPT0gcXVlc0lkKTtcbiAgICBmb3IgKHZhciBzcSBvZiBzcUxpc3QpIHtcbiAgICAgIHNxLmVycm9yID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBzZXRTdWJRdWVzdGlvbnMocmVjb3Jkcykge1xuICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25ib29rQ29tcG9uZW50IHNldFN1YlF1ZXN0aW9ucycpO1xuICAgIHRoaXMuc3ViUXVlc3Rpb25zLnB1c2gocmVjb3Jkcyk7XG4gIH1cblxuICAvLyBDYXB0dXJlIGFuZCBQcm9jZXNzIENoaWxkIEV2ZW50XG4gIGNoaWxkRXZlbnRDYXB0dXJlKGV2ZW50LCBxdWVzPzphbnkpIHtcbiAgICBsZXQgZHJvcGRvd25EYXRhID0gIHt9O1xuICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbmJvb2tDb21wb25lbnQgY2hpbGRFdmVudENhcHR1cmUnKTtcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmFubm91bmNlQ2hhbmdlKGV2ZW50KTtcbiAgICAvLyBQcm9jZXNzIHRoZSBjaGFuZ2VzIGluIFRhYmxlIGFuZCBEcm9wZG93biBhbmQgc3RvcmUgcmlnaHQgdmFsdWUgaW4gcXVlcy5pbnB1dFxuICAgIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRHJvcGRvd24nKSB7XG4gICAgICBxdWVzLmlucHV0ID0gZXZlbnQudmFsdWVPYmogPyBldmVudC52YWx1ZU9iai5pZCA6IG51bGw7XG4gICAgICBxdWVzLnNlbGVjdGVkVmFsdWUgPSBldmVudC52YWx1ZU9iaiA/IGV2ZW50LnZhbHVlT2JqLm5hbWUgOiBudWxsO1xuICAgICAgLy8gZW1pdCB0aGUgZHJvcGRvd24gZGF0YSB0byBwYXJlbnRcbiAgICAgIGRyb3Bkb3duRGF0YVsnZXZlbnQnXSA9IGV2ZW50LnZhbHVlT2JqO1xuICAgICAgZHJvcGRvd25EYXRhWydxdWVzJ10gPSBxdWVzO1xuICAgICAgaWYoZHJvcGRvd25EYXRhWydldmVudCddKXtcbiAgICAgICAgdGhpcy5oYW5kbGVEcm9wRG93bi5lbWl0KGRyb3Bkb3duRGF0YSk7XG4gICAgICB9XG4gICAgfWVsc2UgaWYocXVlcy5UeXBlX19jID09ICdGaWxlJyl7IFxuICAgICAgcXVlcy5pbnB1dCA9IHRoaXMuc2VsZWN0ZWRGaWxlRGF0YSA9IGV2ZW50O1xuICAgIH1lbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PSAnQnV0dG9uJyl7IC8vIFZEIDA4Tk9WMjMgLSBoYW5kbGUgdGhlIGJ1dHRvbiBxdWVzXG4gICAgICBxdWVzLmlucHV0ID0gZXZlbnQ7XG4gICAgICB0aGlzLmhhbmRsZUJ1dHRvbi5lbWl0KHF1ZXMpO1xuICAgIH1lbHNle1xuICAgICAgcXVlcy5pbnB1dCA9IGV2ZW50O1xuICAgIH1cbiAgICAvLyB2YWxpZGF0aW5nICAgZXJyb3IgbWVzc2FnZVxuICAgIGlmKHF1ZXMuRXJyb3JfTWVzc2FnZV9fYyAmJiAhcXVlcy5pbnB1dCl7XG4gICAgICBxdWVzLmVycm9yID0gbmV3IEVycm9yV3JhcHBlclxuICAgIH1lbHNle1xuICAgICAgcXVlcy5lcnJvciA9IG51bGw7ICBcbiAgICB9XG4gICAgLy8gT25jZSB0aGUgcmlnaHQgdmFsdWUgaXMgc3RvcmVkIGluIHF1ZXMuaW5wdXQgc3RvcmUgdGhlIHF1ZXMgKHdpdGggaW5wdXQpIGluIHN0b3JhZ2VTZXJ2aWNlXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS51cGRhdGUocXVlcyk7XG4gIH1cbiAgZGVsZXRlRmlsZShmaWxlRGF0YTphbnkpe1xuICAgIGNvbnNvbGUubG9nKCdmaWxlREFUQScsZmlsZURhdGEpXG4gIH1cbn1cbiIsIjxkaXYgW2NsYXNzXT1cInFiSXRlbS5pc1NoZW5nZWxfX2MgPyAnZm9ybS1ncm91cCBjb250ZW50LWJveCcgOiAnZm9ybS1ncm91cCdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgICAgPGRpdiBbY2xhc3NdPVwicWJJdGVtLmlzU2hlbmdlbF9fYyA/ICcnIDogJ215dC1hbGlnbjMnXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJxYkl0ZW0uaXNTaGVuZ2VsX19jID8gJ2NvbC1sZy0nICsgcXVlcy5TaXplX19jICsgJyBwYWRkaW5nbm9uZScgOiAnY29sLW1kLScgKyBxdWVzLlNpemVfX2MgKyAnIHBhZGRpbmdub25lJ1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlcyBvZiBxdWVzdGlvbnM7bGV0IGkgPSBpbmRleFwiIFtpZF09XCJxdWVzLklkXCI+XG4gICAgICAgICAgICA8IS0tIFN1YiBRdWVzdGlvbiBMYWJlbCAtLT5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBkb3duMjogcWJJdGVtPy5Qcm9ncmVzc19CYXJfX2MgfVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJxYkl0ZW0uaXNTaGVuZ2VsX19jID8gJ2Rpcy1mbGV4IHNoZW5nZWwtbXl0LWZvbnQzIG15dC1mb250NycgIDogJ2Rpcy1mbGV4IG15dC1mb250MyBteXQtZm9udDcnIFwiPnt7IHF1ZXM/LlF1ZXN0aW9uX1RleHRfX2MgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBEYXRlVGltZSAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdEYXRlVGltZSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1kYXRlLXBpY2tlciBbbWluRGF0ZV09XCJxdWVzLm1pbkRhdGVcIiBbZGF0ZV09XCJxdWVzLmlucHV0XCIgKGRhdGVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgPCEtLSBEYXRlLS0+XG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0RhdGUnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tZGF0ZSAgW2RhdGVdPVwicXVlcy5pbnB1dFwiIChkYXRlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tZGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgPCEtLSBUaW1lLS0+XG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tdGltZSAgW3RpbWVdPVwicXVlcy5pbnB1dFwiICh0aW1lQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tdGltZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFRleHQgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnVGV4dCdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1pbnB1dCBbZnJvbVNoZW5nZWxdPVwicWJJdGVtLmlzU2hlbmdlbF9fY1wiIFt2YWx1ZV09XCJxdWVzLmlucHV0XCIgW25nQ2xhc3NWYWx1ZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZGlzLWZsZXggZHQtbGluZSBkYXRlLWxpbmUgYm9va1RleHQgYm94b3V0bGluZSBteXQtZm9udDEnOiBxYkl0ZW0uUHJvZ3Jlc3NfQmFyX19jLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEJveDogIXFiSXRlbS5Qcm9ncmVzc19CYXJfX2NcbiAgICAgICAgICAgICAgICAgICAgfVwiIFtxdWVzdGlvbl09XCJxdWVzXCIgW2lkVmFsdWVdPVwicXVlcy5UcmFja2luZ19JRF9fY1wiIFtmb2N1c0V2ZW50XT1cImNsZWFyU1FFcnJvcihxdWVzLklkKVwiXG4gICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXMuUXVlc3Rpb25fX2NcIiAoaW5wdXRWYWx1ZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWlucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDwhLS0gZm9yIHBpY2sgbG9jYXRpb24gLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnTG9jYXRpb24nXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1waWNrLWxvY2F0aW9uIFthZGRyZXNzXT1cInF1ZXMuaW5wdXRcIiAobG9jYXRpb25TZWxlY3RlZCk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtcGljay1sb2NhdGlvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIGZvciAgdGV4dCBhcmVhICAgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnVGV4dEFyZWEnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tdGV4dC1hcmVhIFt2YWx1ZV09XCJxdWVzLmlucHV0XCIgW3Jvd3NdPVwiM1wiIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXMuUXVlc3Rpb25fX2MgXCJcbiAgICAgICAgICAgICAgICAgICAgKHRleHRhcmVhVmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPjwvYXBwLWN1c3RvbS10ZXh0LWFyZWE+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBFbWFpbCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdFbWFpbCdcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgWyhuZ01vZGVsKV09XCJxdWVzLmlucHV0XCIgW2lkXT1cInF1ZXMuSWRcIiByZXF1aXJlZD1cIlwiIChmb2N1cyk9XCJjbGVhclNRRXJyb3IocXVlcy5JZClcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZS5ib3JkZXItY29sb3I9XCJ7eyBxdWVzLmVycm9yID8gJ3JlZCcgOiAnJyB9fVwiIHBsYWNlaG9sZGVyPVwie3sgcXVlcy5RdWVzdGlvbl9fYyB9fVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBUYWJsZSAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUYWJsZSdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLXRhYmxlIFtxdWVzdGlvbl09XCJxdWVzXCIgKHZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcyk7IGNsZWFyU1FFcnJvcihxdWVzLklkKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS10YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDwhLS0gVGFibGUgQXBwZW5kaXggLS0+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUYWJsZUFwcGVuZGl4J1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC10YWJsZS1hcHBlbmRpeCBbcXVlc3Rpb25dPVwicXVlc1wiICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC10YWJsZS1hcHBlbmRpeD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDwhLS0gbGlzdCAtLT5cbiAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnTGlzdCdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxsaWItc2VhcmNoLWJveCBbcXVlc3Rpb25dPVwicXVlc1wiIFthcGlNZXRhXT1cInF1ZXMuU3ViX1RleHRfX2NcIiBbaWRdPVwicXVlcy5JZFwiIFtwbGFjZUhvbGRlclRleHRdPVwicXVlcy5RdWVzdGlvbl9fY1wiICBbc2VsZWN0ZWRWYWx1ZV09XCJxdWVzLmlucHV0XCIgKHNlYXJjaFZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2xpYi1zZWFyY2gtYm94PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRHJvcGRvd24nXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1kcm9wZG93biBbZnJvbVNoZW5nZWxdPVwicWJJdGVtLmlzU2hlbmdlbF9fY1wiIFtvcHRpb25zXT1cInF1ZXMuUXVlc3Rpb25fT3B0aW9uc19fci5yZWNvcmRzXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwaU1ldGFdPVwicXVlcy5TdWJfVGV4dF9fY1wiIFtpZF09XCJxdWVzLklkXCIgW3NlbGVjdGVkVmFsdWVdPVwicXVlcy5zZWxlY3RlZFZhbHVlXCIgW3BsYWNlaG9sZGVyXT1cIictLS1TZWxlY3QtLS0nXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWZlcmVuY2VGaWVsZF09XCJxdWVzLlJlZmVyZW5jZV9GaWVsZF9fY1wiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVjayBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAqbmdJZj1cInF1ZXM/LmlucHV0Py5sZW5ndGggPiAwXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gQXR0YWNobWVudCAvIEZpbGVzIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0ZpbGUnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWZpbGUtdXBsb2FkIFtsaW1pdEZpbGVVcGxvYWRpbmddPVwiNVwiIFthbGxGaWxlc109XCJxdWVzLmlucHV0XCIgW3RhYmxlRmlsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRmlsZURhdGEpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiIChkZWxldGVkRmlsZURhdGEpPVwiZGVsZXRlRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaXNEZWxldGVGaWxlQnV0dG9uVmlzaWJsZV09XCJ0cnVlXCI+PC9hcHAtZmlsZS11cGxvYWQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdQb3BVcE1lc3NhZ2UnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWRlcGVuZGVudC10YWJsZSBbYWxlcnRNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWRlcGVuZGVudC10YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0xhYmVsJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tbGFiZWwgW2xhYmVsVmFsdWVdPVwibGFiZWxWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSAwOE5PVjIzIC0gYnV0dG9uIHR5cGUgcXVlc3Rpb24gYWRkZWQgLS0+XG4gICAgICAgICAgICAgPCEtLSBCdXR0b24gLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnQnV0dG9uJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tYnV0dG9uIFtoZWlnaHRdPVwiJzUwcHgnXCIgIFxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCInMTUwcHgnXCIgXG4gICAgICAgICAgICAgICAgW2J1dHRvblRleHRdPVwicXVlcz8uUXVlc3Rpb25fX2NcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJxdWVzPy5RdWVzdGlvbl9fY1wiXG4gICAgICAgICAgICAgICAgKGJ1dHRvblZhbHVlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25ib29rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU8zQyxNQUFNLE9BQU8scUJBQXFCO0lBZVo7SUFDVjtJQUNBO0lBQ0E7SUFDRDtJQUNtQjtJQW5CbkIsTUFBTSxDQUFlO0lBQ3JCLFlBQVksQ0FBVztJQUN2QixTQUFTLENBQWE7SUFDdEIsWUFBWSxDQUFLO0lBQ2pCLFVBQVUsQ0FBUTtJQUNqQixjQUFjLEdBQXFCLElBQUksWUFBWSxFQUFPLENBQUM7SUFDNUQsWUFBWSxDQUFLO0lBQzFCLFlBQVksQ0FBYTtJQUN6QixnQkFBZ0IsR0FBVSxFQUFFLENBQUM7SUFDN0IsaURBQWlEO0lBQ2pELEtBQUssQ0FBTTtJQUNYLGFBQWEsQ0FBUztJQUN0QixTQUFTLENBQU07SUFFZixZQUFvQixTQUE0QixFQUN0QyxXQUF3QixFQUN4QixhQUE0QixFQUM1QixjQUE4QixFQUMvQixXQUF3QixFQUNMLFFBQWtCO1FBTDFCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtC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QyxJQUFJLENBQUMsS0FBSyxFQUFDO1lBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxZQUFZLENBQUE7U0FDOUI7YUFBSTtZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ25CO1FBQ0QsNkZBQTZGO1FBQzdGLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxVQUFVLENBQUMsUUFBWTtRQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQTtJQUNsQyxDQUFDO3dHQTlHVSxxQkFBcUIsb0tBb0J0QixRQUFROzRGQXBCUCxxQkFBcUIsaVJDakJsQyw0OU1BbUhNOzs0RkRsR08scUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGtCQUFrQjs7MEJBd0J6QixNQUFNOzJCQUFDLFFBQVE7NENBbkJULE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0UsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUXVlc3Rpb24sIFF1ZXN0aW9uQm9vayB9IGZyb20gJy4uLy4uL3dyYXBwZXInO1xuaW1wb3J0IHsgU2FsZXNmb3JjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2FsZXNmb3JjZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBFcnJvcldyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbC9lcnJvcldyYXBwZXInO1xuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1xdWVzdGlvbmJvb2snLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlc3Rpb25ib29rLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb25ib29rLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRdWVzdGlvbmJvb2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBxYkl0ZW06IFF1ZXN0aW9uQm9vaztcbiAgQElucHV0KCkgcXVlc3Rpb25JdGVtOiBRdWVzdGlvbjtcbiAgQElucHV0KCkgcXVlc3Rpb25zOiBRdWVzdGlvbltdO1xuICBASW5wdXQoKSBlcnJvckZpZWxkSWQ6YW55O1xuICBASW5wdXQoKSBsYWJlbFZhbHVlOnN0cmluZzsgXG4gIEBPdXRwdXQoKSBoYW5kbGVEcm9wRG93bjpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBkcm9wRG93bkRhdGE6YW55O1xuICBzdWJRdWVzdGlvbnM6IFF1ZXN0aW9uW107XG4gIHNlbGVjdGVkRmlsZURhdGE6IGFueVtdID0gW107XG4gIC8vICBIQSAxOURFQzIzIERlY2xhcmF0aW9uIGZvciBTYWxlc2ZvcmNlIFN0eWxpbmdcbiAgc3R5bGU6IGFueTtcbiAgbGFuZ0RpcmVjdGlvbjogc3RyaW5nO1xuICBib29rU3R5bGU6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNmU2VydmljZTogU2FsZXNmb3JjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlLCBcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcbiAgICBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50XG4gICAgKSB7IFxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbkJvb2tDb21wb25lbnQgT25Jbml0Jyk7XG4gICAgLy8gY29uc29sZS5sb2coJ3FiSXRlbScsIHRoaXMucWJJdGVtKTtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnF1ZXN0aW9ucyk7XG4gICAgLy8gIEhBIDE5REVDMjMgTG9naWMgZm9yIFF1ZXN0aW9uIEJvb2sgU3R5bGluZyhTbGFlc2ZvcmNlKVxuICAgIGlmKHRoaXMucWJJdGVtLlN0eWxlX19jKXtcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucWJJdGVtPy5TdHlsZV9fYykpKTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jID0ge1xuICAgICAgICBcImxhYmVsQ2xhc3NcIiA6IFwiXCIsXG4gICAgICAgIFwibGFiZWxTdHlsZVwiIDogXCJcIixcbiAgICAgICAgXCJpbnB1dENsYXNzXCIgOiBcIlwiLFxuICAgICAgICBcImlucHV0U3R5bGVcIiA6IFwiXCIsXG4gICAgICAgIFwiYm9va1N0eWxlXCIgOiBcIlwiLFxuICAgICAgICBcInNob3dMYWJlbFwiOiB0cnVlLFxuICAgICAgICBcImRpcmVjdGlvblwiIDogXCJsdHJcIixcbiAgICAgICAgXCJxdWVzdGlvblN0eWxlXCI6IFwiXCJcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHRoaXMucWJJdGVtLlN0eWxlX19jLmRpcmVjdGlvbiA/IHRoaXMucWJJdGVtPy5TdHlsZV9fYz8uZGlyZWN0aW9uIDogJ2x0cic7XG4gICAgLy8gdGhpcy5pMThuU2VydmljZS5sYW5ndWFnZUNoYW5nZSh0aGlzLmxhbmdEaXJlY3Rpb24pO1xuICAgIHRoaXMuYm9va1N0eWxlID0gdGhpcy5xYkl0ZW0/LlN0eWxlX19jPy5ib29rU3R5bGU7XG4gICAgLy8gY29uc29sZS5sb2coJ3RoaXMucWJJdGVtICcsIHRoaXMucWJJdGVtLlN0eWxlX19jKTtcbiAgICB0aGlzLnF1ZXN0aW9ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgdmFyIGh0bWxFbGVtZW50ID0gZWxlbWVudC5RdWVzdGlvbl9UZXh0X19jIDtcbiAgICAgIHZhciB0ZXh0T25seSA9IGh0bWxFbGVtZW50Py5yZXBsYWNlKC88W14+XSo+L2csICcnKVxuICAgICAgZWxlbWVudC5RdWVzdGlvbl9UZXh0X19jID0gdGV4dE9ubHk7XG4gICAgICAvLyAgSEEgMTlERUMyMyBMb2dpYyBmb3IgUXVlc3Rpb24gU3R5bGluZyhTbGFlc2ZvcmNlKVxuICAgICAgaWYoZWxlbWVudC5TdHlsZV9fYyl7XG4gICAgICAgIGVsZW1lbnQuU3R5bGVfX2MgPSBKU09OLnBhcnNlKCcnK2VsZW1lbnQ/LlN0eWxlX19jKTtcbiAgICAgIH1cbiAgICAgIGVsc2V7XG4gICAgICAgIGVsZW1lbnQuU3R5bGVfX2MgPSB0aGlzLnFiSXRlbT8uU3R5bGVfX2M7XG4gICAgICB9XG4gICAgICBlbGVtZW50WydsYW5nRGlyZWN0aW9uJ10gPSBlbGVtZW50LlN0eWxlX19jLmRpcmVjdGlvbiA/IGVsZW1lbnQuU3R5bGVfX2MuZGlyZWN0aW9uIDogdGhpcy5sYW5nRGlyZWN0aW9uO1xuICAgIH0pO1xuICAgIHRoaXMuc3ViUXVlc3Rpb25zID0gW107XG4gICAgdGhpcy5zZXRTdWJRdWVzdGlvbnModGhpcy5xdWVzdGlvbnMpO1xuICB9XG5cbiAgY2xlYXJTUUVycm9yKHF1ZXNJZCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25Cb29rQ29tcG9uZW50IGNsZWFyU1FFcnJvcicpO1xuICAgIHZhciBzcUxpc3QgPSB0aGlzLnN1YlF1ZXN0aW9ucz8uZmlsdGVyKChpdGVtKSA9PiBpdGVtLklkID09IHF1ZXNJZCk7XG4gICAgZm9yICh2YXIgc3Egb2Ygc3FMaXN0KSB7XG4gICAgICBzcS5lcnJvciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2V0U3ViUXVlc3Rpb25zKHJlY29yZHMpIHtcbiAgICBjb25zb2xlLmxvZygnaW5zaWRlIFF1ZXN0aW9uYm9va0NvbXBvbmVudCBzZXRTdWJRdWVzdGlvbnMnKTtcbiAgICB0aGlzLnN1YlF1ZXN0aW9ucy5wdXNoKHJlY29yZHMpO1xuICB9XG5cbiAgLy8gQ2FwdHVyZSBhbmQgUHJvY2VzcyBDaGlsZCBFdmVudFxuICBjaGlsZEV2ZW50Q2FwdHVyZShldmVudCwgcXVlcz86YW55KSB7XG4gICAgbGV0IGRyb3Bkb3duRGF0YSA9ICB7fTtcbiAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25ib29rQ29tcG9uZW50IGNoaWxkRXZlbnRDYXB0dXJlJyk7XG4gICAgY29uc29sZS5sb2coZXZlbnQpO1xuICAgIHRoaXMuY2hhbmdlU2VydmljZS5hbm5vdW5jZUNoYW5nZShldmVudCk7XG4gICAgLy8gUHJvY2VzcyB0aGUgY2hhbmdlcyBpbiBUYWJsZSBhbmQgRHJvcGRvd24gYW5kIHN0b3JlIHJpZ2h0IHZhbHVlIGluIHF1ZXMuaW5wdXRcbiAgICBpZihxdWVzLlR5cGVfX2MgPT0gJ0Ryb3Bkb3duJykge1xuICAgICAgcXVlcy5pbnB1dCA9IGV2ZW50LnZhbHVlT2JqID8gZXZlbnQudmFsdWVPYmouaWQgOiBudWxsO1xuICAgICAgcXVlcy5zZWxlY3RlZFZhbHVlID0gZXZlbnQudmFsdWVPYmogPyBldmVudC52YWx1ZU9iai5uYW1lIDogbnVsbDtcbiAgICAgIC8vIGVtaXQgdGhlIGRyb3Bkb3duIGRhdGEgdG8gcGFyZW50XG4gICAgICBkcm9wZG93bkRhdGFbJ2V2ZW50J10gPSBldmVudC52YWx1ZU9iajtcbiAgICAgIGRyb3Bkb3duRGF0YVsncXVlcyddID0gcXVlcztcbiAgICAgIGlmKGRyb3Bkb3duRGF0YVsnZXZlbnQnXSl7XG4gICAgICAgIHRoaXMuaGFuZGxlRHJvcERvd24uZW1pdChkcm9wZG93bkRhdGEpO1xuICAgICAgfVxuICAgIH1lbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRmlsZScpeyBcbiAgICAgIHF1ZXMuaW5wdXQgPSB0aGlzLnNlbGVjdGVkRmlsZURhdGEgPSBldmVudDtcbiAgICB9ZWxzZXtcbiAgICAgIHF1ZXMuaW5wdXQgPSBldmVudDtcbiAgICB9XG4gICAgLy8gdmFsaWRhdGluZyAgIGVycm9yIG1lc3NhZ2VcbiAgICBpZihxdWVzLkVycm9yX01lc3NhZ2VfX2MgJiYgIXF1ZXMuaW5wdXQpe1xuICAgICAgcXVlcy5lcnJvciA9IG5ldyBFcnJvcldyYXBwZXJcbiAgICB9ZWxzZXtcbiAgICAgIHF1ZXMuZXJyb3IgPSBudWxsOyAgXG4gICAgfVxuICAgIC8vIE9uY2UgdGhlIHJpZ2h0IHZhbHVlIGlzIHN0b3JlZCBpbiBxdWVzLmlucHV0IHN0b3JlIHRoZSBxdWVzICh3aXRoIGlucHV0KSBpbiBzdG9yYWdlU2VydmljZVxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UudXBkYXRlKHF1ZXMpO1xuICB9XG4gIGRlbGV0ZUZpbGUoZmlsZURhdGE6YW55KXtcbiAgICBjb25zb2xlLmxvZygnZmlsZURBVEEnLGZpbGVEYXRhKVxuICB9XG59XG4iLCI8IS0tIEhBIDIwREVDMjMgQm9vayBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG48ZGl2IFtjbGFzc109XCJxYkl0ZW0uaXNTaGVuZ2VsX19jID8gJ2Zvcm0tZ3JvdXAgY29udGVudC1ib3gnIDogJ2Zvcm0tZ3JvdXAnXCIgW3N0eWxlXT1cImJvb2tTdHlsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgICAgICA8IS0tIEhBIDIwREVDMjMgRGlyZWN0aXZlIGFuZCBRdWVzdGlvbiBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG4gICAgICAgIDxkaXYgW2NsYXNzXT1cInFiSXRlbS5pc1NoZW5nZWxfX2MgPyAnJyA6ICdteXQtYWxpZ24zJ1wiXG4gICAgICAgICAgICBbY2xhc3NdPVwicWJJdGVtLmlzU2hlbmdlbF9fYyA/ICdjb2wtbGctJyArIHF1ZXMuU2l6ZV9fYyArICcgcGFkZGluZ25vbmUnIDogJ2NvbC1tZC0nICsgcXVlcy5TaXplX19jICsgJyBwYWRkaW5nbm9uZSdcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXMgb2YgcXVlc3Rpb25zO2xldCBpID0gaW5kZXhcIiBbaWRdPVwicXVlcy5JZFwiIFtkaXJdPVwicXVlcy5sYW5nRGlyZWN0aW9uXCIgW3N0eWxlXT1cInF1ZXM/LlN0eWxlX19jPy5xdWVzdGlvblN0eWxlXCI+XG4gICAgICAgICAgICA8IS0tIFN1YiBRdWVzdGlvbiBMYWJlbCAtLT5cbiAgICAgICAgICAgIDwhLS0gSEEgMjBERUMyMyBMYWJlbCBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgZG93bjI6IHFiSXRlbT8uUHJvZ3Jlc3NfQmFyX19jIH1cIiBbc3R5bGVdPVwicXVlcy5TdHlsZV9fYy5sYWJlbFN0eWxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cInFiSXRlbS5pc1NoZW5nZWxfX2MgPyAnZGlzLWZsZXggc2hlbmdlbC1teXQtZm9udDMgbXl0LWZvbnQ3JyAgOiAnZGlzLWZsZXggbXl0LWZvbnQzIG15dC1mb250NycgXCI+e3sgcXVlcz8uUXVlc3Rpb25fVGV4dF9fYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIERhdGVUaW1lIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0RhdGVUaW1lJ1wiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWRhdGUtcGlja2VyIFttaW5EYXRlXT1cInF1ZXMubWluRGF0ZVwiIFtkYXRlXT1cInF1ZXMuaW5wdXRcIiAoZGF0ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICA8IS0tIERhdGUtLT5cbiAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRGF0ZSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1kYXRlICBbZGF0ZV09XCJxdWVzLmlucHV0XCIgKGRhdGVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1kYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICA8IS0tIFRpbWUtLT5cbiAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnVGltZSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS10aW1lICBbdGltZV09XCJxdWVzLmlucHV0XCIgKHRpbWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS10aW1lPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gVGV4dCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUZXh0J1wiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWlucHV0IFtmcm9tU2hlbmdlbF09XCJxYkl0ZW0uaXNTaGVuZ2VsX19jXCIgW3ZhbHVlXT1cInF1ZXMuaW5wdXRcIiBbbmdDbGFzc1ZhbHVlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICdkaXMtZmxleCBkdC1saW5lIGRhdGUtbGluZSBib29rVGV4dCBib3hvdXRsaW5lIG15dC1mb250MSc6IHFiSXRlbS5Qcm9ncmVzc19CYXJfX2MsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Qm94OiAhcWJJdGVtLlByb2dyZXNzX0Jhcl9fY1xuICAgICAgICAgICAgICAgICAgICB9XCIgW3F1ZXN0aW9uXT1cInF1ZXNcIiBbaWRWYWx1ZV09XCJxdWVzLlRyYWNraW5nX0lEX19jXCIgW2ZvY3VzRXZlbnRdPVwiY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbcGxhY2Vob2xkZXJdPVwicXVlcy5RdWVzdGlvbl9fY1wiIChpbnB1dFZhbHVlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20taW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPCEtLSBmb3IgcGljayBsb2NhdGlvbiAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdMb2NhdGlvbidcIj5cbiAgICAgICAgICAgICAgICA8YXBwLXBpY2stbG9jYXRpb24gW2FkZHJlc3NdPVwicXVlcy5pbnB1dFwiIChsb2NhdGlvblNlbGVjdGVkKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1waWNrLWxvY2F0aW9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gZm9yICB0ZXh0IGFyZWEgICAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUZXh0QXJlYSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS10ZXh0LWFyZWEgW3ZhbHVlXT1cInF1ZXMuaW5wdXRcIiBbcm93c109XCIzXCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbcGxhY2Vob2xkZXJdPVwicXVlcy5RdWVzdGlvbl9fYyBcIlxuICAgICAgICAgICAgICAgICAgICAodGV4dGFyZWFWYWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+PC9hcHAtY3VzdG9tLXRleHQtYXJlYT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEVtYWlsIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0VtYWlsJ1wiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBbKG5nTW9kZWwpXT1cInF1ZXMuaW5wdXRcIiBbaWRdPVwicXVlcy5JZFwiIHJlcXVpcmVkPVwiXCIgKGZvY3VzKT1cImNsZWFyU1FFcnJvcihxdWVzLklkKVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLmJvcmRlci1jb2xvcj1cInt7IHF1ZXMuZXJyb3IgPyAncmVkJyA6ICcnIH19XCIgcGxhY2Vob2xkZXI9XCJ7eyBxdWVzLlF1ZXN0aW9uX19jIH19XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFRhYmxlIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RhYmxlJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tdGFibGUgW3F1ZXN0aW9uXT1cInF1ZXNcIiAodmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKTsgY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLXRhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSBUYWJsZSBBcHBlbmRpeCAtLT5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RhYmxlQXBwZW5kaXgnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLXRhYmxlLWFwcGVuZGl4IFtxdWVzdGlvbl09XCJxdWVzXCIgKHZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcyk7IGNsZWFyU1FFcnJvcihxdWVzLklkKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLXRhYmxlLWFwcGVuZGl4PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPCEtLSBsaXN0IC0tPlxuICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdMaXN0J1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1zZWFyY2gtYm94IFtxdWVzdGlvbl09XCJxdWVzXCIgW2FwaU1ldGFdPVwicXVlcy5TdWJfVGV4dF9fY1wiIFtpZF09XCJxdWVzLklkXCIgW3BsYWNlSG9sZGVyVGV4dF09XCJxdWVzLlF1ZXN0aW9uX19jXCIgIFtzZWxlY3RlZFZhbHVlXT1cInF1ZXMuaW5wdXRcIiAoc2VhcmNoVmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvbGliLXNlYXJjaC1ib3g+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBEcm9wZG93biAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdEcm9wZG93bidcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDwhLS0gSEEgMjBERUMyMyBGb3IgVHJhbnNsYXRpb24gLS0+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tZHJvcGRvd24gW2Zyb21TaGVuZ2VsXT1cInFiSXRlbS5pc1NoZW5nZWxfX2NcIiBbb3B0aW9uc109XCJxdWVzLlF1ZXN0aW9uX09wdGlvbnNfX3IucmVjb3Jkc1wiXG4gICAgICAgICAgICAgICAgICAgIFthcGlNZXRhXT1cInF1ZXMuU3ViX1RleHRfX2NcIiBbaWRdPVwicXVlcy5JZFwiIFtzZWxlY3RlZFZhbHVlXT1cInF1ZXMuc2VsZWN0ZWRWYWx1ZVwiIHBsYWNlaG9sZGVyPVwiLS0te3snc2VsZWN0JyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlfX0tLS1cIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtlcnJvcl09XCJxdWVzLmVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlZmVyZW5jZUZpZWxkXT1cInF1ZXMuUmVmZXJlbmNlX0ZpZWxkX19jXCJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcyk7IGNsZWFyU1FFcnJvcihxdWVzLklkKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZWNrIFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiICpuZ0lmPVwicXVlcz8uaW5wdXQ/Lmxlbmd0aCA+IDBcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBBdHRhY2htZW50IC8gRmlsZXMgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRmlsZSdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtZmlsZS11cGxvYWQgW2xpbWl0RmlsZVVwbG9hZGluZ109XCI1XCIgW2FsbEZpbGVzXT1cInF1ZXMuaW5wdXRcIiBbdGFibGVGaWxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRGaWxlRGF0YSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCIgKGRlbGV0ZWRGaWxlRGF0YSk9XCJkZWxldGVGaWxlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlXT1cInRydWVcIj48L2FwcC1maWxlLXVwbG9hZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1BvcFVwTWVzc2FnZSdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtZGVwZW5kZW50LXRhYmxlIFthbGVydE1lc3NhZ2VdPVwicXVlcy5FcnJvcl9NZXNzYWdlX19jXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtZGVwZW5kZW50LXRhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnTGFiZWwnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1sYWJlbCBbbGFiZWxWYWx1ZV09XCJsYWJlbFZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWxhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIDA4Tk9WMjMgLSBidXR0b24gdHlwZSBxdWVzdGlvbiBhZGRlZCAtLT5cbiAgICAgICAgICAgICA8IS0tIEJ1dHRvbiAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdCdXR0b24nXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1idXR0b24gW2hlaWdodF09XCInNTBweCdcIiAgXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIicxNTBweCdcIiBcbiAgICAgICAgICAgICAgICBbYnV0dG9uVGV4dF09XCJxdWVzPy5RdWVzdGlvbl9fY1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInF1ZXM/LlF1ZXN0aW9uX19jXCJcbiAgICAgICAgICAgICAgICAoYnV0dG9uVmFsdWUpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=