@hitsoft/e-donusum 100.1.26-Edo-Test → 100.1.28-Edo-Test

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 (59) hide show
  1. package/esm2020/lib/components/hit-auto-send-rules/hit-auto-send-rule.component.mjs +16 -13
  2. package/esm2020/lib/components/hit-branches/hit-branch.component.mjs +13 -10
  3. package/esm2020/lib/components/hit-business-partner-groups/hit-business-partner-group.component.mjs +13 -10
  4. package/esm2020/lib/components/hit-business-partners/hit-business-partner.component.mjs +14 -11
  5. package/esm2020/lib/components/hit-despatches/hit-despatch.component.mjs +15 -12
  6. package/esm2020/lib/components/hit-document-serial/hit-document-serial.component.mjs +17 -14
  7. package/esm2020/lib/components/hit-failed-connector-despatches/hit-failed-connector-despatch.component.mjs +13 -10
  8. package/esm2020/lib/components/hit-failed-connector-invoices/hit-failed-connector-invoice.component.mjs +13 -10
  9. package/esm2020/lib/components/hit-failed-connector-producer-receipts/hit-failed-connector-producer-receipt.component.mjs +13 -10
  10. package/esm2020/lib/components/hit-failed-despatches/hit-failed-despatch.component.mjs +15 -12
  11. package/esm2020/lib/components/hit-failed-invoices/hit-failed-invoice.component.mjs +15 -12
  12. package/esm2020/lib/components/hit-failed-producer-receipts/hit-failed-producer-receipt.component.mjs +15 -12
  13. package/esm2020/lib/components/hit-gib-partner-pk-alls/hit-gib-partner-pk-all.component.mjs +13 -10
  14. package/esm2020/lib/components/hit-gib-partner-pks/hit-gib-partner-pk.component.mjs +18 -15
  15. package/esm2020/lib/components/hit-inbound-despatches/hit-inbound-despatch.component.mjs +16 -13
  16. package/esm2020/lib/components/hit-inbound-invoices/hit-inbound-invoice.component.mjs +71 -26
  17. package/esm2020/lib/components/hit-invoices/hit-invoice.component.mjs +24 -13
  18. package/esm2020/lib/components/hit-invoices-sent/hit-invoice-sent.component.mjs +15 -12
  19. package/esm2020/lib/components/hit-note-rules/hit-note-rule.component.mjs +16 -13
  20. package/esm2020/lib/components/hit-producer-receipts/hit-producer-receipt.component.mjs +16 -13
  21. package/esm2020/lib/components/hit-xslt-formats/hit-xslt-format.component.mjs +16 -13
  22. package/esm2020/lib/components/hit-xslt-rules/hit-xslt-rule.component.mjs +16 -13
  23. package/esm2020/lib/hit-proxy/grid-states/grid-state.service.mjs +86 -0
  24. package/esm2020/lib/hit-proxy/hit-inbound-invoices/hit-inbound-invoice.service.mjs +6 -1
  25. package/esm2020/lib/hit-proxy/hit-inbound-invoices/models.mjs +1 -1
  26. package/esm2020/lib/proxy/despatches/models.mjs +1 -1
  27. package/esm2020/lib/proxy/invoices/models.mjs +1 -1
  28. package/fesm2015/hitsoft-e-donusum.mjs +342 -153
  29. package/fesm2015/hitsoft-e-donusum.mjs.map +1 -1
  30. package/fesm2020/hitsoft-e-donusum.mjs +315 -134
  31. package/fesm2020/hitsoft-e-donusum.mjs.map +1 -1
  32. package/lib/components/hit-auto-send-rules/hit-auto-send-rule.component.d.ts +4 -1
  33. package/lib/components/hit-branches/hit-branch.component.d.ts +4 -1
  34. package/lib/components/hit-business-partner-groups/hit-business-partner-group.component.d.ts +4 -1
  35. package/lib/components/hit-business-partners/hit-business-partner.component.d.ts +4 -1
  36. package/lib/components/hit-despatches/hit-despatch.component.d.ts +4 -1
  37. package/lib/components/hit-document-serial/hit-document-serial.component.d.ts +4 -1
  38. package/lib/components/hit-failed-connector-despatches/hit-failed-connector-despatch.component.d.ts +4 -1
  39. package/lib/components/hit-failed-connector-invoices/hit-failed-connector-invoice.component.d.ts +4 -1
  40. package/lib/components/hit-failed-connector-producer-receipts/hit-failed-connector-producer-receipt.component.d.ts +4 -1
  41. package/lib/components/hit-failed-despatches/hit-failed-despatch.component.d.ts +4 -1
  42. package/lib/components/hit-failed-invoices/hit-failed-invoice.component.d.ts +4 -1
  43. package/lib/components/hit-failed-producer-receipts/hit-failed-producer-receipt.component.d.ts +4 -1
  44. package/lib/components/hit-gib-partner-pk-alls/hit-gib-partner-pk-all.component.d.ts +4 -1
  45. package/lib/components/hit-gib-partner-pks/hit-gib-partner-pk.component.d.ts +4 -1
  46. package/lib/components/hit-inbound-despatches/hit-inbound-despatch.component.d.ts +4 -1
  47. package/lib/components/hit-inbound-invoices/hit-inbound-invoice.component.d.ts +6 -1
  48. package/lib/components/hit-invoices/hit-invoice.component.d.ts +6 -1
  49. package/lib/components/hit-invoices-sent/hit-invoice-sent.component.d.ts +4 -1
  50. package/lib/components/hit-note-rules/hit-note-rule.component.d.ts +4 -1
  51. package/lib/components/hit-producer-receipts/hit-producer-receipt.component.d.ts +4 -1
  52. package/lib/components/hit-xslt-formats/hit-xslt-format.component.d.ts +4 -1
  53. package/lib/components/hit-xslt-rules/hit-xslt-rule.component.d.ts +4 -1
  54. package/lib/hit-proxy/grid-states/grid-state.service.d.ts +39 -0
  55. package/lib/hit-proxy/hit-inbound-invoices/hit-inbound-invoice.service.d.ts +1 -0
  56. package/lib/hit-proxy/hit-inbound-invoices/models.d.ts +2 -0
  57. package/lib/proxy/despatches/models.d.ts +1 -0
  58. package/lib/proxy/invoices/models.d.ts +2 -0
  59. package/package.json +1 -1
@@ -13,15 +13,16 @@ import * as i4 from "../../hit-proxy/hit-note-rule-doc-types/hit-note-rule-doc-t
13
13
  import * as i5 from "../../hit-proxy/hit-note-rule-scenarios/hit-note-rule-scenario.service";
14
14
  import * as i6 from "@abp/ng.theme.shared";
15
15
  import * as i7 from "@angular/forms";
16
- import * as i8 from "@angular/common";
17
- import * as i9 from "@ngx-validate/core";
18
- import * as i10 from "@ng-bootstrap/ng-bootstrap";
19
- import * as i11 from "devextreme-angular";
20
- import * as i12 from "devextreme-angular/ui/nested";
21
- import * as i13 from "devextreme-angular/core";
22
- import * as i14 from "@abp/ng.components/page";
16
+ import * as i8 from "../../hit-proxy/grid-states/grid-state.service";
17
+ import * as i9 from "@angular/common";
18
+ import * as i10 from "@ngx-validate/core";
19
+ import * as i11 from "@ng-bootstrap/ng-bootstrap";
20
+ import * as i12 from "devextreme-angular";
21
+ import * as i13 from "devextreme-angular/ui/nested";
22
+ import * as i14 from "devextreme-angular/core";
23
+ import * as i15 from "@abp/ng.components/page";
23
24
  export class HitNoteRuleComponent {
24
- constructor(list, service, hitNoteRuleService, hitNoteRuleDocTypeService, hitNoteRuleScenarioService, toasterService, confirmation, fb) {
25
+ constructor(list, service, hitNoteRuleService, hitNoteRuleDocTypeService, hitNoteRuleScenarioService, toasterService, confirmation, fb, gridStateService) {
25
26
  this.list = list;
26
27
  this.service = service;
27
28
  this.hitNoteRuleService = hitNoteRuleService;
@@ -30,6 +31,7 @@ export class HitNoteRuleComponent {
30
31
  this.toasterService = toasterService;
31
32
  this.confirmation = confirmation;
32
33
  this.fb = fb;
34
+ this.gridStateService = gridStateService;
33
35
  this.isQueryable = true;
34
36
  this.isStatic = false;
35
37
  this.enterPressed = false;
@@ -48,6 +50,7 @@ export class HitNoteRuleComponent {
48
50
  this.isUpdate = false;
49
51
  }
50
52
  ngOnInit() {
53
+ this.gridState = this.gridStateService.build('note-rules');
51
54
  this.noteRuleDataSource = this.hitNoteRuleService.LoadNoteRules;
52
55
  this.scenarioDataSource = this.hitNoteRuleService.LoadScenarios;
53
56
  this.docTypeDataSource = this.hitNoteRuleService.LoadDocTypes;
@@ -305,12 +308,12 @@ export class HitNoteRuleComponent {
305
308
  return false;
306
309
  }
307
310
  }
308
- HitNoteRuleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitNoteRuleComponent, deps: [{ token: i1.ListService }, { token: i2.NoteRuleService }, { token: i3.HitNoteRulesService }, { token: i4.HitNoteRuleDocTypesService }, { token: i5.HitNoteRuleScenariosService }, { token: i6.ToasterService }, { token: i6.ConfirmationService }, { token: i7.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
309
- HitNoteRuleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitNoteRuleComponent, selector: "lib-note-rule", host: { listeners: { "document:keydown": "handleKeyDown($event)" } }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], viewQueries: [{ propertyName: "dxNoteRuleInstance", first: true, predicate: ["dxNoteRuleInstance"], descendants: true }, { propertyName: "dxDocTypeInstance", first: true, predicate: ["dxDocTypeInstance"], descendants: true }, { propertyName: "dxScenarioInstance", first: true, predicate: ["dxScenarioInstance"], descendants: true }, { propertyName: "dxParamInstance", first: true, predicate: ["dxParamInstance"], descendants: true }, { propertyName: "dxHtmlEditor", first: true, predicate: ["dxHtmlEditor"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'eDonusum::NoteRules' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <button *abpPermission=\"'eDonusum.NoteRules.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n (click)=\"create()\">\r\n <i class=\"fa fa-plus me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::NewNoteRule' | abpLocalization }}\r\n </button>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxNoteRuleInstance [dataSource]=\"noteRuleDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 75vh;\">\r\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[50,100,200]\" [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\r\n <dxo-grouping #expand [autoExpandAll]=\"false\" [allowCollapsing]=\"true\"\r\n [contextMenuEnabled]=\"true\"></dxo-grouping>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-filter-builder [allowHierarchicalFields]=\"true\"></dxo-filter-builder>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem (click)=\"update(row.data)\">\r\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i> {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"delete(row.data)\">\r\n <i class=\"fa fa-trash\" aria-hidden=\"true\"></i> {{ 'AbpUi::Delete' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"ruleName\" caption=\"{{'eDonusum::RuleName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"ruleType\" caption=\"{{'eDonusum::RuleType'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"ruleTypesDataSource\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"descType\" caption=\"{{'eDonusum::DescType'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"descTypesDataSource\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"orderNo\" caption=\"{{'eDonusum::OrderNo'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"isPassive\" caption=\"{{'eDonusum::IsPassive'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [busy]=\"isModalBusy\" [(visible)]=\"isModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::NewNoteRule') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"note-rule\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <dx-tab-panel [animationEnabled]=\"true\" [swipeEnabled]=\"true\" [loop]=\"true\" #tabPanel>\r\n <dxi-item title=\"{{ 'eDonusum::QueryInfo' | abpLocalization }}\" icon=\"fas fa-file-alt\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-name\">\r\n {{ 'eDonusum::RuleName' | abpLocalization }} *\r\n </label>\r\n\r\n <dx-text-box id=\"note-rule-rule-name\" [disabled]=\"isUpdate\" formControlName=\"ruleName\"\r\n class=\"form-control\" maxlength=\"256\" autofocus></dx-text-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-order-no\">\r\n {{ 'eDonusum::OrderNo' | abpLocalization }}\r\n </label>\r\n\r\n <input type=\"number\" [min]=\"0\" id=\"note-rule-order-no\" formControlName=\"orderNo\"\r\n class=\"form-control\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::RuleType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"note-rule-rule-type\" [disabled]=\"isUpdate\" formControlName=\"ruleType\"\r\n (onValueChanged)=\"ruleTypeChanged()\" class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"ruleTypesDataSource\" placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-desc-type\">\r\n {{ 'eDonusum::DescType' | abpLocalization }}\r\n </label>\r\n <dx-select-box id=\"note-rule-desc-type\" [disabled]=\"isUpdate\" formControlName=\"descType\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\" [dataSource]=\"descTypesDataSource\"\r\n placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::Document' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"note-rule-document\" [disabled]=\"isUpdate\" formControlName=\"document\"\r\n (onValueChanged)=\"documentChanged()\" class=\"form-control\" displayExpr=\"text\" valueExpr=\"id\"\r\n [dataSource]=\"tablesDataSource\" placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-first-desc\">\r\n {{ 'eDonusum::FirstDesc' | abpLocalization }}\r\n </label>\r\n <dx-text-area class=\"form-control\" id=\"note-rule-first-desc\" [height]=\"70\"\r\n formControlName=\"firstDesc\" maxlength=\"4096\" style=\"resize: none;\">\r\n </dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"isQueryable\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-note-query\">\r\n {{ 'eDonusum::NoteQuery' | abpLocalization }}\r\n </label>\r\n <dx-html-editor #dxHtmlEditor class=\"form-control\" id=\"note-rule-note-query-html\" [height]=\"100\"\r\n maxlength=\"4096\" formControlName=\"noteQueryHTML\">\r\n <dxi-mention valueExpr=\"text\" displayExpr=\"text\" searchExpr=\"text\"\r\n [dataSource]=\"htmlMentionDataSource\"></dxi-mention>\r\n </dx-html-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"isStatic\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-fix-desc\">\r\n {{ 'eDonusum::FixDesc' | abpLocalization }}\r\n </label>\r\n\r\n <dx-text-area id=\"note-rule-fix-desc\" formControlName=\"fixDesc\" class=\"form-control\"\r\n [height]=\"100\"></dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-last-desc\">\r\n {{ 'eDonusum::LastDesc' | abpLocalization }}\r\n </label>\r\n\r\n <dx-text-area class=\"form-control\" id=\"note-rule-last-desc\" [height]=\"70\" formControlName=\"lastDesc\"\r\n maxlength=\"4096\" style=\"resize: none;\">\r\n </dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-desc\">\r\n {{ 'eDonusum::Desc' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"note-rule-desc\" formControlName=\"desc\" class=\"form-control\" maxlength=\"512\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"note-rule-is-bold\" formControlName=\"isBold\" class=\"form-check-input\" />\r\n\r\n <label for=\"note-rule-is-bold\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsBold' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"note-rule-is-passive\" formControlName=\"isPassive\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"note-rule-is-passive\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPassive' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n <dxi-item title=\"{{ 'eDonusum::Scenarios' | abpLocalization }}\" icon=\"fas fa-pencil-alt\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px; margin-bottom:20px\">\r\n <div class=\"col\">\r\n <dx-data-grid #dxScenarioInstance [dataSource]=\"scenarioDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\" columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 50vh;\" keyExpr=\"id\" [(selectedRowKeys)]=\"selectedScenarios\">\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\">\r\n </dxo-selection>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"displayName\" caption=\"{{ 'eDonusum::Name' | abpLocalization }}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n <dxi-item title=\"{{ 'eDonusum::DocTypes' | abpLocalization }}\" icon=\"fas fa-envelope\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px; margin-bottom:20px\">\r\n <div class=\"col\">\r\n <dx-data-grid #dxDocTypeInstance [dataSource]=\"docTypeDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\" columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 50vh;\" keyExpr=\"id\" [(selectedRowKeys)]=\"selectedDocTypes\">\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\">\r\n </dxo-selection>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"displayName\" caption=\"{{ 'eDonusum::Name' | abpLocalization }}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n </dx-tab-panel>\r\n\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-secondary\" *ngIf=\"isQueryable\" (click)=\"previewQuery()\">\r\n {{ 'eDonusum::PreviewQuery' | abpLocalization }}\r\n </button>\r\n <!-- <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"note-rule\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button> -->\r\n <button type=\"button\" iconClass=\"fa fa-check\" class=\"btn btn-primary\" formName=\"note-rule\" (click)=\"submitForm()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-modal [busy]=\"isModalBusyPreview\" [(visible)]=\"isModalOpenPreview\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::PreviewQuery') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form id=\"note-rule-preview\">\r\n\r\n <div *ngIf=\"!isParameterless\">\r\n <h3>{{ 'eDonusum::Parameters' | abpLocalization }}</h3>\r\n <hr>\r\n <dx-data-grid #dxParamInstance [dataSource]=\"paramsDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\"\r\n [columnHidingEnabled]=\"true\" style=\"height: 40vh;\">\r\n\r\n <dxo-editing mode=\"cell\" [useIcons]=\"false\" [allowUpdating]=\"true\" [allowAdding]=\"false\"\r\n [allowDeleting]=\"false\">\r\n </dxo-editing>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"paramName\" [allowEditing]=\"false\"\r\n caption=\"{{'eDonusum::ParamName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"paramValue\" caption=\"{{'eDonusum::ParamValue'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n <br>\r\n <button type=\"button\" class=\"btn btn-primary\" style=\"float: right;\" (click)=\"runQuery()\">\r\n {{ 'eDonusum::RunQuery' | abpLocalization }}\r\n </button>\r\n <br><br>\r\n </div>\r\n\r\n <h3>{{ 'eDonusum::QueryResult' | abpLocalization }}</h3>\r\n <hr>\r\n <dx-data-grid #dxPreview [dataSource]=\"previewDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 60vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n </dx-data-grid>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>", dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i7.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i7.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "component", type: i6.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i10.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i10.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i10.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i10.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i11.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i12.DxoColumnChooserComponent, selector: "dxo-column-chooser", inputs: ["allowSearch", "emptyPanelText", "enabled", "height", "mode", "searchTimeout", "sortOrder", "title", "width"] }, { kind: "component", type: i12.DxoColumnFixingComponent, selector: "dxo-column-fixing", inputs: ["enabled", "texts"] }, { kind: "component", type: i12.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i12.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i12.DxoLookupComponent, selector: "dxo-lookup", inputs: ["allowClearing", "calculateCellValue", "dataSource", "displayExpr", "valueExpr"] }, { kind: "component", type: i12.DxoEditingComponent, selector: "dxo-editing", inputs: ["allowAdding", "allowDeleting", "allowUpdating", "changes", "confirmDelete", "editColumnName", "editRowKey", "form", "mode", "newRowPosition", "popup", "refreshMode", "selectTextOnEditStart", "startEditAction", "texts", "useIcons", "allowAddShape", "allowChangeConnection", "allowChangeConnectorPoints", "allowChangeConnectorText", "allowChangeShapeText", "allowDeleteConnector", "allowDeleteShape", "allowMoveShape", "allowResizeShape", "allowDependencyAdding", "allowDependencyDeleting", "allowResourceAdding", "allowResourceDeleting", "allowResourceUpdating", "allowTaskAdding", "allowTaskDeleting", "allowTaskResourceUpdating", "allowTaskUpdating", "enabled", "allowDragging", "allowResizing", "allowTimeZoneEditing"], outputs: ["changesChange", "editColumnNameChange", "editRowKeyChange"] }, { kind: "component", type: i12.DxiItemComponent, selector: "dxi-item", inputs: ["disabled", "html", "icon", "template", "text", "title", "titleTemplate", "visible", "onClick", "stylingMode", "type", "baseSize", "box", "ratio", "shrink", "elementAttr", "hint", "beginGroup", "closeMenuOnClick", "items", "selectable", "selected", "colSpan", "cssClass", "dataField", "editorOptions", "editorType", "helpText", "isRequired", "itemType", "label", "name", "validationRules", "visibleIndex", "alignItemLabels", "caption", "colCount", "colCountByScreen", "tabPanelOptions", "tabs", "badge", "tabTemplate", "buttonOptions", "horizontalAlignment", "verticalAlignment", "locateInMenu", "location", "menuItemTemplate", "options", "showText", "widget", "height", "width", "imageAlt", "imageSrc", "acceptedValues", "formatName", "formatValues", "key", "showChevron", "heightRatio", "widthRatio", "expanded", "hasItems", "id", "parentId"] }, { kind: "component", type: i12.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i12.DxoFilterBuilderComponent, selector: "dxo-filter-builder", inputs: ["accessKey", "activeStateEnabled", "allowHierarchicalFields", "customOperations", "disabled", "elementAttr", "fields", "filterOperationDescriptions", "focusStateEnabled", "groupOperationDescriptions", "groupOperations", "height", "hint", "hoverStateEnabled", "maxGroupLevel", "onContentReady", "onDisposing", "onEditorPrepared", "onEditorPreparing", "onInitialized", "onOptionChanged", "onValueChanged", "rtlEnabled", "tabIndex", "value", "visible", "width"], outputs: ["valueChange"] }, { kind: "component", type: i12.DxoFilterPanelComponent, selector: "dxo-filter-panel", inputs: ["customizeText", "filterEnabled", "texts", "visible"], outputs: ["filterEnabledChange"] }, { kind: "component", type: i12.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i12.DxoGroupingComponent, selector: "dxo-grouping", inputs: ["allowCollapsing", "autoExpandAll", "contextMenuEnabled", "expandMode", "texts"] }, { kind: "component", type: i12.DxoGroupPanelComponent, selector: "dxo-group-panel", inputs: ["allowColumnDragging", "emptyPanelText", "visible"], outputs: ["visibleChange"] }, { kind: "component", type: i12.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i12.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i12.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i12.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i12.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "directive", type: i13.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i11.DxTextAreaComponent, selector: "dx-text-area", inputs: ["accessKey", "activeStateEnabled", "autoResizeEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "maxHeight", "maxLength", "minHeight", "name", "placeholder", "readOnly", "rtlEnabled", "spellcheck", "stylingMode", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "autoResizeEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maxHeightChange", "maxLengthChange", "minHeightChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i11.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i11.DxHtmlEditorComponent, selector: "dx-html-editor", inputs: ["accessKey", "activeStateEnabled", "allowSoftLineBreak", "customizeModules", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "imageUpload", "isValid", "mediaResizing", "mentions", "name", "placeholder", "readOnly", "rtlEnabled", "stylingMode", "tabIndex", "tableContextMenu", "tableResizing", "toolbar", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueType", "variables", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onFocusIn", "onFocusOut", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "allowSoftLineBreakChange", "customizeModulesChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "imageUploadChange", "isValidChange", "mediaResizingChange", "mentionsChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "tableContextMenuChange", "tableResizingChange", "toolbarChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueTypeChange", "variablesChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i12.DxiMentionComponent, selector: "dxi-mention", inputs: ["dataSource", "displayExpr", "itemTemplate", "marker", "minSearchLength", "searchExpr", "searchTimeout", "template", "valueExpr"] }, { kind: "component", type: i11.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i11.DxTabPanelComponent, selector: "dx-tab-panel", inputs: ["accessKey", "activeStateEnabled", "animationEnabled", "dataSource", "deferRendering", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "itemHoldTimeout", "items", "itemTemplate", "itemTitleTemplate", "loop", "noDataText", "repaintChangesOnly", "rtlEnabled", "scrollByContent", "scrollingEnabled", "selectedIndex", "selectedItem", "showNavButtons", "swipeEnabled", "tabIndex", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onItemClick", "onItemContextMenu", "onItemHold", "onItemRendered", "onOptionChanged", "onSelectionChanged", "onTitleClick", "onTitleHold", "onTitleRendered", "accessKeyChange", "activeStateEnabledChange", "animationEnabledChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "itemHoldTimeoutChange", "itemsChange", "itemTemplateChange", "itemTitleTemplateChange", "loopChange", "noDataTextChange", "repaintChangesOnlyChange", "rtlEnabledChange", "scrollByContentChange", "scrollingEnabledChange", "selectedIndexChange", "selectedItemChange", "showNavButtonsChange", "swipeEnabledChange", "tabIndexChange", "visibleChange", "widthChange"] }, { kind: "component", type: i14.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i14.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
311
+ HitNoteRuleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitNoteRuleComponent, deps: [{ token: i1.ListService }, { token: i2.NoteRuleService }, { token: i3.HitNoteRulesService }, { token: i4.HitNoteRuleDocTypesService }, { token: i5.HitNoteRuleScenariosService }, { token: i6.ToasterService }, { token: i6.ConfirmationService }, { token: i7.FormBuilder }, { token: i8.GridStateService }], target: i0.ɵɵFactoryTarget.Component });
312
+ HitNoteRuleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitNoteRuleComponent, selector: "lib-note-rule", host: { listeners: { "document:keydown": "handleKeyDown($event)" } }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], viewQueries: [{ propertyName: "dxNoteRuleInstance", first: true, predicate: ["dxNoteRuleInstance"], descendants: true }, { propertyName: "dxDocTypeInstance", first: true, predicate: ["dxDocTypeInstance"], descendants: true }, { propertyName: "dxScenarioInstance", first: true, predicate: ["dxScenarioInstance"], descendants: true }, { propertyName: "dxParamInstance", first: true, predicate: ["dxParamInstance"], descendants: true }, { propertyName: "dxHtmlEditor", first: true, predicate: ["dxHtmlEditor"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'eDonusum::NoteRules' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <button *abpPermission=\"'eDonusum.NoteRules.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n (click)=\"create()\">\r\n <i class=\"fa fa-plus me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::NewNoteRule' | abpLocalization }}\r\n </button>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxNoteRuleInstance [dataSource]=\"noteRuleDataSource\" [stateStoring]=\"gridState\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 75vh;\">\r\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[50,100,200]\" [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\r\n <dxo-grouping #expand [autoExpandAll]=\"false\" [allowCollapsing]=\"true\"\r\n [contextMenuEnabled]=\"true\"></dxo-grouping>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-filter-builder [allowHierarchicalFields]=\"true\"></dxo-filter-builder>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem (click)=\"update(row.data)\">\r\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i> {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"delete(row.data)\">\r\n <i class=\"fa fa-trash\" aria-hidden=\"true\"></i> {{ 'AbpUi::Delete' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"ruleName\" caption=\"{{'eDonusum::RuleName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"ruleType\" caption=\"{{'eDonusum::RuleType'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"ruleTypesDataSource\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"descType\" caption=\"{{'eDonusum::DescType'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"descTypesDataSource\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"orderNo\" caption=\"{{'eDonusum::OrderNo'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"isPassive\" caption=\"{{'eDonusum::IsPassive'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [busy]=\"isModalBusy\" [(visible)]=\"isModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::NewNoteRule') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"note-rule\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <dx-tab-panel [animationEnabled]=\"true\" [swipeEnabled]=\"true\" [loop]=\"true\" #tabPanel>\r\n <dxi-item title=\"{{ 'eDonusum::QueryInfo' | abpLocalization }}\" icon=\"fas fa-file-alt\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-name\">\r\n {{ 'eDonusum::RuleName' | abpLocalization }} *\r\n </label>\r\n\r\n <dx-text-box id=\"note-rule-rule-name\" [disabled]=\"isUpdate\" formControlName=\"ruleName\"\r\n class=\"form-control\" maxlength=\"256\" autofocus></dx-text-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-order-no\">\r\n {{ 'eDonusum::OrderNo' | abpLocalization }}\r\n </label>\r\n\r\n <input type=\"number\" [min]=\"0\" id=\"note-rule-order-no\" formControlName=\"orderNo\"\r\n class=\"form-control\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::RuleType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"note-rule-rule-type\" [disabled]=\"isUpdate\" formControlName=\"ruleType\"\r\n (onValueChanged)=\"ruleTypeChanged()\" class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"ruleTypesDataSource\" placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-desc-type\">\r\n {{ 'eDonusum::DescType' | abpLocalization }}\r\n </label>\r\n <dx-select-box id=\"note-rule-desc-type\" [disabled]=\"isUpdate\" formControlName=\"descType\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\" [dataSource]=\"descTypesDataSource\"\r\n placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::Document' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"note-rule-document\" [disabled]=\"isUpdate\" formControlName=\"document\"\r\n (onValueChanged)=\"documentChanged()\" class=\"form-control\" displayExpr=\"text\" valueExpr=\"id\"\r\n [dataSource]=\"tablesDataSource\" placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-first-desc\">\r\n {{ 'eDonusum::FirstDesc' | abpLocalization }}\r\n </label>\r\n <dx-text-area class=\"form-control\" id=\"note-rule-first-desc\" [height]=\"70\"\r\n formControlName=\"firstDesc\" maxlength=\"4096\" style=\"resize: none;\">\r\n </dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"isQueryable\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-note-query\">\r\n {{ 'eDonusum::NoteQuery' | abpLocalization }}\r\n </label>\r\n <dx-html-editor #dxHtmlEditor class=\"form-control\" id=\"note-rule-note-query-html\" [height]=\"100\"\r\n maxlength=\"4096\" formControlName=\"noteQueryHTML\">\r\n <dxi-mention valueExpr=\"text\" displayExpr=\"text\" searchExpr=\"text\"\r\n [dataSource]=\"htmlMentionDataSource\"></dxi-mention>\r\n </dx-html-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"isStatic\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-fix-desc\">\r\n {{ 'eDonusum::FixDesc' | abpLocalization }}\r\n </label>\r\n\r\n <dx-text-area id=\"note-rule-fix-desc\" formControlName=\"fixDesc\" class=\"form-control\"\r\n [height]=\"100\"></dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-last-desc\">\r\n {{ 'eDonusum::LastDesc' | abpLocalization }}\r\n </label>\r\n\r\n <dx-text-area class=\"form-control\" id=\"note-rule-last-desc\" [height]=\"70\" formControlName=\"lastDesc\"\r\n maxlength=\"4096\" style=\"resize: none;\">\r\n </dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-desc\">\r\n {{ 'eDonusum::Desc' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"note-rule-desc\" formControlName=\"desc\" class=\"form-control\" maxlength=\"512\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"note-rule-is-bold\" formControlName=\"isBold\" class=\"form-check-input\" />\r\n\r\n <label for=\"note-rule-is-bold\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsBold' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"note-rule-is-passive\" formControlName=\"isPassive\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"note-rule-is-passive\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPassive' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n <dxi-item title=\"{{ 'eDonusum::Scenarios' | abpLocalization }}\" icon=\"fas fa-pencil-alt\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px; margin-bottom:20px\">\r\n <div class=\"col\">\r\n <dx-data-grid #dxScenarioInstance [dataSource]=\"scenarioDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\" columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 50vh;\" keyExpr=\"id\" [(selectedRowKeys)]=\"selectedScenarios\">\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\">\r\n </dxo-selection>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"displayName\" caption=\"{{ 'eDonusum::Name' | abpLocalization }}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n <dxi-item title=\"{{ 'eDonusum::DocTypes' | abpLocalization }}\" icon=\"fas fa-envelope\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px; margin-bottom:20px\">\r\n <div class=\"col\">\r\n <dx-data-grid #dxDocTypeInstance [dataSource]=\"docTypeDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\" columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 50vh;\" keyExpr=\"id\" [(selectedRowKeys)]=\"selectedDocTypes\">\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\">\r\n </dxo-selection>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"displayName\" caption=\"{{ 'eDonusum::Name' | abpLocalization }}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n </dx-tab-panel>\r\n\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-secondary\" *ngIf=\"isQueryable\" (click)=\"previewQuery()\">\r\n {{ 'eDonusum::PreviewQuery' | abpLocalization }}\r\n </button>\r\n <!-- <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"note-rule\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button> -->\r\n <button type=\"button\" iconClass=\"fa fa-check\" class=\"btn btn-primary\" formName=\"note-rule\" (click)=\"submitForm()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-modal [busy]=\"isModalBusyPreview\" [(visible)]=\"isModalOpenPreview\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::PreviewQuery') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form id=\"note-rule-preview\">\r\n\r\n <div *ngIf=\"!isParameterless\">\r\n <h3>{{ 'eDonusum::Parameters' | abpLocalization }}</h3>\r\n <hr>\r\n <dx-data-grid #dxParamInstance [dataSource]=\"paramsDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\"\r\n [columnHidingEnabled]=\"true\" style=\"height: 40vh;\">\r\n\r\n <dxo-editing mode=\"cell\" [useIcons]=\"false\" [allowUpdating]=\"true\" [allowAdding]=\"false\"\r\n [allowDeleting]=\"false\">\r\n </dxo-editing>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"paramName\" [allowEditing]=\"false\"\r\n caption=\"{{'eDonusum::ParamName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"paramValue\" caption=\"{{'eDonusum::ParamValue'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n <br>\r\n <button type=\"button\" class=\"btn btn-primary\" style=\"float: right;\" (click)=\"runQuery()\">\r\n {{ 'eDonusum::RunQuery' | abpLocalization }}\r\n </button>\r\n <br><br>\r\n </div>\r\n\r\n <h3>{{ 'eDonusum::QueryResult' | abpLocalization }}</h3>\r\n <hr>\r\n <dx-data-grid #dxPreview [dataSource]=\"previewDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 60vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n </dx-data-grid>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>", dependencies: [{ kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i7.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i7.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "component", type: i6.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i10.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i10.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i11.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i11.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i11.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i11.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i12.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i13.DxoColumnChooserComponent, selector: "dxo-column-chooser", inputs: ["allowSearch", "emptyPanelText", "enabled", "height", "mode", "searchTimeout", "sortOrder", "title", "width"] }, { kind: "component", type: i13.DxoColumnFixingComponent, selector: "dxo-column-fixing", inputs: ["enabled", "texts"] }, { kind: "component", type: i13.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i13.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i13.DxoLookupComponent, selector: "dxo-lookup", inputs: ["allowClearing", "calculateCellValue", "dataSource", "displayExpr", "valueExpr"] }, { kind: "component", type: i13.DxoEditingComponent, selector: "dxo-editing", inputs: ["allowAdding", "allowDeleting", "allowUpdating", "changes", "confirmDelete", "editColumnName", "editRowKey", "form", "mode", "newRowPosition", "popup", "refreshMode", "selectTextOnEditStart", "startEditAction", "texts", "useIcons", "allowAddShape", "allowChangeConnection", "allowChangeConnectorPoints", "allowChangeConnectorText", "allowChangeShapeText", "allowDeleteConnector", "allowDeleteShape", "allowMoveShape", "allowResizeShape", "allowDependencyAdding", "allowDependencyDeleting", "allowResourceAdding", "allowResourceDeleting", "allowResourceUpdating", "allowTaskAdding", "allowTaskDeleting", "allowTaskResourceUpdating", "allowTaskUpdating", "enabled", "allowDragging", "allowResizing", "allowTimeZoneEditing"], outputs: ["changesChange", "editColumnNameChange", "editRowKeyChange"] }, { kind: "component", type: i13.DxiItemComponent, selector: "dxi-item", inputs: ["disabled", "html", "icon", "template", "text", "title", "titleTemplate", "visible", "onClick", "stylingMode", "type", "baseSize", "box", "ratio", "shrink", "elementAttr", "hint", "beginGroup", "closeMenuOnClick", "items", "selectable", "selected", "colSpan", "cssClass", "dataField", "editorOptions", "editorType", "helpText", "isRequired", "itemType", "label", "name", "validationRules", "visibleIndex", "alignItemLabels", "caption", "colCount", "colCountByScreen", "tabPanelOptions", "tabs", "badge", "tabTemplate", "buttonOptions", "horizontalAlignment", "verticalAlignment", "locateInMenu", "location", "menuItemTemplate", "options", "showText", "widget", "height", "width", "imageAlt", "imageSrc", "acceptedValues", "formatName", "formatValues", "key", "showChevron", "heightRatio", "widthRatio", "expanded", "hasItems", "id", "parentId"] }, { kind: "component", type: i13.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i13.DxoFilterBuilderComponent, selector: "dxo-filter-builder", inputs: ["accessKey", "activeStateEnabled", "allowHierarchicalFields", "customOperations", "disabled", "elementAttr", "fields", "filterOperationDescriptions", "focusStateEnabled", "groupOperationDescriptions", "groupOperations", "height", "hint", "hoverStateEnabled", "maxGroupLevel", "onContentReady", "onDisposing", "onEditorPrepared", "onEditorPreparing", "onInitialized", "onOptionChanged", "onValueChanged", "rtlEnabled", "tabIndex", "value", "visible", "width"], outputs: ["valueChange"] }, { kind: "component", type: i13.DxoFilterPanelComponent, selector: "dxo-filter-panel", inputs: ["customizeText", "filterEnabled", "texts", "visible"], outputs: ["filterEnabledChange"] }, { kind: "component", type: i13.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i13.DxoGroupingComponent, selector: "dxo-grouping", inputs: ["allowCollapsing", "autoExpandAll", "contextMenuEnabled", "expandMode", "texts"] }, { kind: "component", type: i13.DxoGroupPanelComponent, selector: "dxo-group-panel", inputs: ["allowColumnDragging", "emptyPanelText", "visible"], outputs: ["visibleChange"] }, { kind: "component", type: i13.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i13.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i13.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i13.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i13.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "directive", type: i14.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i12.DxTextAreaComponent, selector: "dx-text-area", inputs: ["accessKey", "activeStateEnabled", "autoResizeEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "maxHeight", "maxLength", "minHeight", "name", "placeholder", "readOnly", "rtlEnabled", "spellcheck", "stylingMode", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "autoResizeEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maxHeightChange", "maxLengthChange", "minHeightChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i12.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i12.DxHtmlEditorComponent, selector: "dx-html-editor", inputs: ["accessKey", "activeStateEnabled", "allowSoftLineBreak", "customizeModules", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "imageUpload", "isValid", "mediaResizing", "mentions", "name", "placeholder", "readOnly", "rtlEnabled", "stylingMode", "tabIndex", "tableContextMenu", "tableResizing", "toolbar", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueType", "variables", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onFocusIn", "onFocusOut", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "allowSoftLineBreakChange", "customizeModulesChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "imageUploadChange", "isValidChange", "mediaResizingChange", "mentionsChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "tableContextMenuChange", "tableResizingChange", "toolbarChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueTypeChange", "variablesChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i13.DxiMentionComponent, selector: "dxi-mention", inputs: ["dataSource", "displayExpr", "itemTemplate", "marker", "minSearchLength", "searchExpr", "searchTimeout", "template", "valueExpr"] }, { kind: "component", type: i12.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i12.DxTabPanelComponent, selector: "dx-tab-panel", inputs: ["accessKey", "activeStateEnabled", "animationEnabled", "dataSource", "deferRendering", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "itemHoldTimeout", "items", "itemTemplate", "itemTitleTemplate", "loop", "noDataText", "repaintChangesOnly", "rtlEnabled", "scrollByContent", "scrollingEnabled", "selectedIndex", "selectedItem", "showNavButtons", "swipeEnabled", "tabIndex", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onItemClick", "onItemContextMenu", "onItemHold", "onItemRendered", "onOptionChanged", "onSelectionChanged", "onTitleClick", "onTitleHold", "onTitleRendered", "accessKeyChange", "activeStateEnabledChange", "animationEnabledChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "itemHoldTimeoutChange", "itemsChange", "itemTemplateChange", "itemTitleTemplateChange", "loopChange", "noDataTextChange", "repaintChangesOnlyChange", "rtlEnabledChange", "scrollByContentChange", "scrollingEnabledChange", "selectedIndexChange", "selectedItemChange", "showNavButtonsChange", "swipeEnabledChange", "tabIndexChange", "visibleChange", "widthChange"] }, { kind: "component", type: i15.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i15.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
310
313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitNoteRuleComponent, decorators: [{
311
314
  type: Component,
312
- args: [{ selector: 'lib-note-rule', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<abp-page [title]=\"'eDonusum::NoteRules' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <button *abpPermission=\"'eDonusum.NoteRules.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n (click)=\"create()\">\r\n <i class=\"fa fa-plus me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::NewNoteRule' | abpLocalization }}\r\n </button>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxNoteRuleInstance [dataSource]=\"noteRuleDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 75vh;\">\r\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[50,100,200]\" [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\r\n <dxo-grouping #expand [autoExpandAll]=\"false\" [allowCollapsing]=\"true\"\r\n [contextMenuEnabled]=\"true\"></dxo-grouping>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-filter-builder [allowHierarchicalFields]=\"true\"></dxo-filter-builder>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem (click)=\"update(row.data)\">\r\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i> {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"delete(row.data)\">\r\n <i class=\"fa fa-trash\" aria-hidden=\"true\"></i> {{ 'AbpUi::Delete' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"ruleName\" caption=\"{{'eDonusum::RuleName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"ruleType\" caption=\"{{'eDonusum::RuleType'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"ruleTypesDataSource\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"descType\" caption=\"{{'eDonusum::DescType'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"descTypesDataSource\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"orderNo\" caption=\"{{'eDonusum::OrderNo'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"isPassive\" caption=\"{{'eDonusum::IsPassive'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [busy]=\"isModalBusy\" [(visible)]=\"isModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::NewNoteRule') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"note-rule\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <dx-tab-panel [animationEnabled]=\"true\" [swipeEnabled]=\"true\" [loop]=\"true\" #tabPanel>\r\n <dxi-item title=\"{{ 'eDonusum::QueryInfo' | abpLocalization }}\" icon=\"fas fa-file-alt\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-name\">\r\n {{ 'eDonusum::RuleName' | abpLocalization }} *\r\n </label>\r\n\r\n <dx-text-box id=\"note-rule-rule-name\" [disabled]=\"isUpdate\" formControlName=\"ruleName\"\r\n class=\"form-control\" maxlength=\"256\" autofocus></dx-text-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-order-no\">\r\n {{ 'eDonusum::OrderNo' | abpLocalization }}\r\n </label>\r\n\r\n <input type=\"number\" [min]=\"0\" id=\"note-rule-order-no\" formControlName=\"orderNo\"\r\n class=\"form-control\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::RuleType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"note-rule-rule-type\" [disabled]=\"isUpdate\" formControlName=\"ruleType\"\r\n (onValueChanged)=\"ruleTypeChanged()\" class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"ruleTypesDataSource\" placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-desc-type\">\r\n {{ 'eDonusum::DescType' | abpLocalization }}\r\n </label>\r\n <dx-select-box id=\"note-rule-desc-type\" [disabled]=\"isUpdate\" formControlName=\"descType\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\" [dataSource]=\"descTypesDataSource\"\r\n placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::Document' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"note-rule-document\" [disabled]=\"isUpdate\" formControlName=\"document\"\r\n (onValueChanged)=\"documentChanged()\" class=\"form-control\" displayExpr=\"text\" valueExpr=\"id\"\r\n [dataSource]=\"tablesDataSource\" placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-first-desc\">\r\n {{ 'eDonusum::FirstDesc' | abpLocalization }}\r\n </label>\r\n <dx-text-area class=\"form-control\" id=\"note-rule-first-desc\" [height]=\"70\"\r\n formControlName=\"firstDesc\" maxlength=\"4096\" style=\"resize: none;\">\r\n </dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"isQueryable\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-note-query\">\r\n {{ 'eDonusum::NoteQuery' | abpLocalization }}\r\n </label>\r\n <dx-html-editor #dxHtmlEditor class=\"form-control\" id=\"note-rule-note-query-html\" [height]=\"100\"\r\n maxlength=\"4096\" formControlName=\"noteQueryHTML\">\r\n <dxi-mention valueExpr=\"text\" displayExpr=\"text\" searchExpr=\"text\"\r\n [dataSource]=\"htmlMentionDataSource\"></dxi-mention>\r\n </dx-html-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"isStatic\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-fix-desc\">\r\n {{ 'eDonusum::FixDesc' | abpLocalization }}\r\n </label>\r\n\r\n <dx-text-area id=\"note-rule-fix-desc\" formControlName=\"fixDesc\" class=\"form-control\"\r\n [height]=\"100\"></dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-last-desc\">\r\n {{ 'eDonusum::LastDesc' | abpLocalization }}\r\n </label>\r\n\r\n <dx-text-area class=\"form-control\" id=\"note-rule-last-desc\" [height]=\"70\" formControlName=\"lastDesc\"\r\n maxlength=\"4096\" style=\"resize: none;\">\r\n </dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-desc\">\r\n {{ 'eDonusum::Desc' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"note-rule-desc\" formControlName=\"desc\" class=\"form-control\" maxlength=\"512\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"note-rule-is-bold\" formControlName=\"isBold\" class=\"form-check-input\" />\r\n\r\n <label for=\"note-rule-is-bold\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsBold' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"note-rule-is-passive\" formControlName=\"isPassive\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"note-rule-is-passive\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPassive' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n <dxi-item title=\"{{ 'eDonusum::Scenarios' | abpLocalization }}\" icon=\"fas fa-pencil-alt\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px; margin-bottom:20px\">\r\n <div class=\"col\">\r\n <dx-data-grid #dxScenarioInstance [dataSource]=\"scenarioDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\" columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 50vh;\" keyExpr=\"id\" [(selectedRowKeys)]=\"selectedScenarios\">\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\">\r\n </dxo-selection>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"displayName\" caption=\"{{ 'eDonusum::Name' | abpLocalization }}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n <dxi-item title=\"{{ 'eDonusum::DocTypes' | abpLocalization }}\" icon=\"fas fa-envelope\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px; margin-bottom:20px\">\r\n <div class=\"col\">\r\n <dx-data-grid #dxDocTypeInstance [dataSource]=\"docTypeDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\" columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 50vh;\" keyExpr=\"id\" [(selectedRowKeys)]=\"selectedDocTypes\">\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\">\r\n </dxo-selection>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"displayName\" caption=\"{{ 'eDonusum::Name' | abpLocalization }}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n </dx-tab-panel>\r\n\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-secondary\" *ngIf=\"isQueryable\" (click)=\"previewQuery()\">\r\n {{ 'eDonusum::PreviewQuery' | abpLocalization }}\r\n </button>\r\n <!-- <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"note-rule\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button> -->\r\n <button type=\"button\" iconClass=\"fa fa-check\" class=\"btn btn-primary\" formName=\"note-rule\" (click)=\"submitForm()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-modal [busy]=\"isModalBusyPreview\" [(visible)]=\"isModalOpenPreview\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::PreviewQuery') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form id=\"note-rule-preview\">\r\n\r\n <div *ngIf=\"!isParameterless\">\r\n <h3>{{ 'eDonusum::Parameters' | abpLocalization }}</h3>\r\n <hr>\r\n <dx-data-grid #dxParamInstance [dataSource]=\"paramsDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\"\r\n [columnHidingEnabled]=\"true\" style=\"height: 40vh;\">\r\n\r\n <dxo-editing mode=\"cell\" [useIcons]=\"false\" [allowUpdating]=\"true\" [allowAdding]=\"false\"\r\n [allowDeleting]=\"false\">\r\n </dxo-editing>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"paramName\" [allowEditing]=\"false\"\r\n caption=\"{{'eDonusum::ParamName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"paramValue\" caption=\"{{'eDonusum::ParamValue'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n <br>\r\n <button type=\"button\" class=\"btn btn-primary\" style=\"float: right;\" (click)=\"runQuery()\">\r\n {{ 'eDonusum::RunQuery' | abpLocalization }}\r\n </button>\r\n <br><br>\r\n </div>\r\n\r\n <h3>{{ 'eDonusum::QueryResult' | abpLocalization }}</h3>\r\n <hr>\r\n <dx-data-grid #dxPreview [dataSource]=\"previewDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 60vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n </dx-data-grid>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>" }]
313
- }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.NoteRuleService }, { type: i3.HitNoteRulesService }, { type: i4.HitNoteRuleDocTypesService }, { type: i5.HitNoteRuleScenariosService }, { type: i6.ToasterService }, { type: i6.ConfirmationService }, { type: i7.FormBuilder }]; }, propDecorators: { dxNoteRuleInstance: [{
315
+ args: [{ selector: 'lib-note-rule', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<abp-page [title]=\"'eDonusum::NoteRules' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <button *abpPermission=\"'eDonusum.NoteRules.Create'\" class=\"btn btn-primary btn-sm\" type=\"button\"\r\n (click)=\"create()\">\r\n <i class=\"fa fa-plus me-1\" aria-hidden=\"true\"></i>\r\n {{ 'eDonusum::NewNoteRule' | abpLocalization }}\r\n </button>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <dx-data-grid #dxNoteRuleInstance [dataSource]=\"noteRuleDataSource\" [stateStoring]=\"gridState\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 75vh;\">\r\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [allowedPageSizes]=\"[50,100,200]\" [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-column-chooser [allowSearch]=\"true\" [enabled]=\"true\" mode=\"select\"></dxo-column-chooser>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-group-panel [visible]=\"true\" [allowColumnDragging]=\"true\"></dxo-group-panel>\r\n <dxo-grouping #expand [autoExpandAll]=\"false\" [allowCollapsing]=\"true\"\r\n [contextMenuEnabled]=\"true\"></dxo-grouping>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-export [enabled]=\"true\" [allowExportSelectedData]=\"false\"></dxo-export>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-filter-builder [allowHierarchicalFields]=\"true\"></dxo-filter-builder>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxi-column [fixed]=\"true\" dataField=\"id\" width=\"120\" [allowGrouping]=\"false\" [allowFiltering]=\"false\"\r\n [allowHeaderFiltering]=\"false\" [allowHiding]=\"false\" [allowReordering]=\"false\"\r\n cellTemplate=\"operationTemplate\" caption=\"{{ 'AbpUi::Actions' | abpLocalization }}\">\r\n <div *dxTemplate=\"let row of 'operationTemplate'\">\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n ngbDropdownToggle [disabled]=\"disabledIdColumn\">\r\n <i class=\"fa fa-cog mr-1\" aria-hidden=\"true\"></i>\r\n {{ 'AbpUi::Actions' | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem (click)=\"update(row.data)\">\r\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i> {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n <button ngbDropdownItem (click)=\"delete(row.data)\">\r\n <i class=\"fa fa-trash\" aria-hidden=\"true\"></i> {{ 'AbpUi::Delete' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"ruleName\" caption=\"{{'eDonusum::RuleName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"ruleType\" caption=\"{{'eDonusum::RuleType'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"ruleTypesDataSource\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"descType\" caption=\"{{'eDonusum::DescType'|abpLocalization}}\">\r\n <dxo-lookup [dataSource]=\"descTypesDataSource\" valueExpr=\"id\" displayExpr=\"displayName\">\r\n </dxo-lookup>\r\n </dxi-column>\r\n <dxi-column dataField=\"orderNo\" caption=\"{{'eDonusum::OrderNo'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"isPassive\" caption=\"{{'eDonusum::IsPassive'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<abp-modal [busy]=\"isModalBusy\" [(visible)]=\"isModalOpen\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::NewNoteRule') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"note-rule\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <dx-tab-panel [animationEnabled]=\"true\" [swipeEnabled]=\"true\" [loop]=\"true\" #tabPanel>\r\n <dxi-item title=\"{{ 'eDonusum::QueryInfo' | abpLocalization }}\" icon=\"fas fa-file-alt\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-name\">\r\n {{ 'eDonusum::RuleName' | abpLocalization }} *\r\n </label>\r\n\r\n <dx-text-box id=\"note-rule-rule-name\" [disabled]=\"isUpdate\" formControlName=\"ruleName\"\r\n class=\"form-control\" maxlength=\"256\" autofocus></dx-text-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-order-no\">\r\n {{ 'eDonusum::OrderNo' | abpLocalization }}\r\n </label>\r\n\r\n <input type=\"number\" [min]=\"0\" id=\"note-rule-order-no\" formControlName=\"orderNo\"\r\n class=\"form-control\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::RuleType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"note-rule-rule-type\" [disabled]=\"isUpdate\" formControlName=\"ruleType\"\r\n (onValueChanged)=\"ruleTypeChanged()\" class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"ruleTypesDataSource\" placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-desc-type\">\r\n {{ 'eDonusum::DescType' | abpLocalization }}\r\n </label>\r\n <dx-select-box id=\"note-rule-desc-type\" [disabled]=\"isUpdate\" formControlName=\"descType\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\" [dataSource]=\"descTypesDataSource\"\r\n placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::Document' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"note-rule-document\" [disabled]=\"isUpdate\" formControlName=\"document\"\r\n (onValueChanged)=\"documentChanged()\" class=\"form-control\" displayExpr=\"text\" valueExpr=\"id\"\r\n [dataSource]=\"tablesDataSource\" placeholder=\"{{ 'eDonusum::Pick' | abpLocalization }}..\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-first-desc\">\r\n {{ 'eDonusum::FirstDesc' | abpLocalization }}\r\n </label>\r\n <dx-text-area class=\"form-control\" id=\"note-rule-first-desc\" [height]=\"70\"\r\n formControlName=\"firstDesc\" maxlength=\"4096\" style=\"resize: none;\">\r\n </dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"isQueryable\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-note-query\">\r\n {{ 'eDonusum::NoteQuery' | abpLocalization }}\r\n </label>\r\n <dx-html-editor #dxHtmlEditor class=\"form-control\" id=\"note-rule-note-query-html\" [height]=\"100\"\r\n maxlength=\"4096\" formControlName=\"noteQueryHTML\">\r\n <dxi-mention valueExpr=\"text\" displayExpr=\"text\" searchExpr=\"text\"\r\n [dataSource]=\"htmlMentionDataSource\"></dxi-mention>\r\n </dx-html-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"isStatic\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-fix-desc\">\r\n {{ 'eDonusum::FixDesc' | abpLocalization }}\r\n </label>\r\n\r\n <dx-text-area id=\"note-rule-fix-desc\" formControlName=\"fixDesc\" class=\"form-control\"\r\n [height]=\"100\"></dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-last-desc\">\r\n {{ 'eDonusum::LastDesc' | abpLocalization }}\r\n </label>\r\n\r\n <dx-text-area class=\"form-control\" id=\"note-rule-last-desc\" [height]=\"70\" formControlName=\"lastDesc\"\r\n maxlength=\"4096\" style=\"resize: none;\">\r\n </dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"note-rule-desc\">\r\n {{ 'eDonusum::Desc' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"note-rule-desc\" formControlName=\"desc\" class=\"form-control\" maxlength=\"512\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"note-rule-is-bold\" formControlName=\"isBold\" class=\"form-check-input\" />\r\n\r\n <label for=\"note-rule-is-bold\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsBold' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"note-rule-is-passive\" formControlName=\"isPassive\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"note-rule-is-passive\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPassive' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n <dxi-item title=\"{{ 'eDonusum::Scenarios' | abpLocalization }}\" icon=\"fas fa-pencil-alt\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px; margin-bottom:20px\">\r\n <div class=\"col\">\r\n <dx-data-grid #dxScenarioInstance [dataSource]=\"scenarioDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\" columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 50vh;\" keyExpr=\"id\" [(selectedRowKeys)]=\"selectedScenarios\">\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\">\r\n </dxo-selection>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"displayName\" caption=\"{{ 'eDonusum::Name' | abpLocalization }}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n <dxi-item title=\"{{ 'eDonusum::DocTypes' | abpLocalization }}\" icon=\"fas fa-envelope\">\r\n <div class=\"container-fluid\">\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\" style=\"margin-top:20px; margin-bottom:20px\">\r\n <div class=\"col\">\r\n <dx-data-grid #dxDocTypeInstance [dataSource]=\"docTypeDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\" columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 50vh;\" keyExpr=\"id\" [(selectedRowKeys)]=\"selectedDocTypes\">\r\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\">\r\n </dxo-selection>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"displayName\" caption=\"{{ 'eDonusum::Name' | abpLocalization }}\"></dxi-column>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-item>\r\n </dx-tab-panel>\r\n\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-secondary\" *ngIf=\"isQueryable\" (click)=\"previewQuery()\">\r\n {{ 'eDonusum::PreviewQuery' | abpLocalization }}\r\n </button>\r\n <!-- <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"note-rule\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button> -->\r\n <button type=\"button\" iconClass=\"fa fa-check\" class=\"btn btn-primary\" formName=\"note-rule\" (click)=\"submitForm()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-modal [busy]=\"isModalBusyPreview\" [(visible)]=\"isModalOpenPreview\" [options]=\"{ size: 'lg' }\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected ? 'AbpUi::Edit' : 'eDonusum::PreviewQuery') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form id=\"note-rule-preview\">\r\n\r\n <div *ngIf=\"!isParameterless\">\r\n <h3>{{ 'eDonusum::Parameters' | abpLocalization }}</h3>\r\n <hr>\r\n <dx-data-grid #dxParamInstance [dataSource]=\"paramsDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\"\r\n [columnHidingEnabled]=\"true\" style=\"height: 40vh;\">\r\n\r\n <dxo-editing mode=\"cell\" [useIcons]=\"false\" [allowUpdating]=\"true\" [allowAdding]=\"false\"\r\n [allowDeleting]=\"false\">\r\n </dxo-editing>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n <dxi-column dataField=\"paramName\" [allowEditing]=\"false\"\r\n caption=\"{{'eDonusum::ParamName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"paramValue\" caption=\"{{'eDonusum::ParamValue'|abpLocalization}}\"></dxi-column>\r\n </dx-data-grid>\r\n <br>\r\n <button type=\"button\" class=\"btn btn-primary\" style=\"float: right;\" (click)=\"runQuery()\">\r\n {{ 'eDonusum::RunQuery' | abpLocalization }}\r\n </button>\r\n <br><br>\r\n </div>\r\n\r\n <h3>{{ 'eDonusum::QueryResult' | abpLocalization }}</h3>\r\n <hr>\r\n <dx-data-grid #dxPreview [dataSource]=\"previewDataSource\" [showRowLines]=\"true\" [showBorders]=\"true\"\r\n [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\" [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\" [columnHidingEnabled]=\"true\"\r\n style=\"height: 60vh;\">\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n\r\n <dxo-column-fixing [enabled]=\"true\"></dxo-column-fixing>\r\n\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n\r\n </dx-data-grid>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n</abp-modal>" }]
316
+ }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.NoteRuleService }, { type: i3.HitNoteRulesService }, { type: i4.HitNoteRuleDocTypesService }, { type: i5.HitNoteRuleScenariosService }, { type: i6.ToasterService }, { type: i6.ConfirmationService }, { type: i7.FormBuilder }, { type: i8.GridStateService }]; }, propDecorators: { dxNoteRuleInstance: [{
314
317
  type: ViewChild,
315
318
  args: ['dxNoteRuleInstance', { static: false }]
316
319
  }], dxDocTypeInstance: [{
@@ -329,4 +332,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
329
332
  type: HostListener,
330
333
  args: ['document:keydown', ['$event']]
331
334
  }] } });
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LW5vdGUtcnVsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1ub3RlLXJ1bGVzL2hpdC1ub3RlLXJ1bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtbm90ZS1ydWxlcy9oaXQtbm90ZS1ydWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsWUFBWSxFQUF1QyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWdCeEQsTUFBTSxPQUFPLG9CQUFvQjtJQXFDN0IsWUFDb0IsSUFBaUIsRUFDakIsT0FBd0IsRUFDdkIsa0JBQXVDLEVBQ3ZDLHlCQUFxRCxFQUNyRCwwQkFBdUQsRUFDdkQsY0FBOEIsRUFDdkMsWUFBaUMsRUFDakMsRUFBZTtRQVBQLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDdkIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFxQjtRQUN2Qyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTRCO1FBQ3JELCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNkI7UUFDdkQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ3ZDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBckMzQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUd2QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFJdEIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLHlCQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMxQiwwQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFFM0Isc0JBQWlCLEdBQU8sRUFBRSxDQUFDO1FBQzNCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRzNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFZYixDQUFDO0lBRUwsUUFBUTtRQUNKLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDO1FBRTlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO29CQUN2QixJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVc7b0JBQ3pCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDZCxJQUFJLEVBQUUsK0JBQStCO2lCQUN4QyxDQUFDLENBQUE7Z0JBQ0YsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQztvQkFDNUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxXQUFXO29CQUN6QixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQ2QsSUFBSSxFQUFFLCtCQUErQjtpQkFDeEMsQ0FBQyxDQUFBO1lBQ04sQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQztvQkFDNUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxXQUFXO29CQUN6QixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQ2QsSUFBSSxFQUFFLDZCQUE2QjtpQkFDdEMsQ0FBQyxDQUFBO1lBQ04sQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxFQUNGLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLE9BQU8sRUFDUCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFNBQVMsRUFDVCxhQUFhLEVBQ2IsT0FBTyxFQUNQLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxFQUNKLFFBQVEsRUFDWCxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ3hCLFFBQVEsQ0FBQztRQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdEIsUUFBUSxFQUFFLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlFLFFBQVEsRUFBRSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUMxRCxRQUFRLEVBQUUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDMUQsUUFBUSxFQUFFLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELE9BQU8sRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsU0FBUyxFQUFFLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbEMsUUFBUSxFQUFFLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7WUFDaEMsU0FBUyxFQUFFLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbEMsYUFBYSxFQUFFLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7WUFDMUMsT0FBTyxFQUFFLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7WUFDOUIsTUFBTSxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDN0IsU0FBUyxFQUFFLENBQUMsU0FBUyxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDbkMsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNwRCxDQUFDLENBQUM7UUFDSCxRQUFRLENBQUM7UUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO2FBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBQztZQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN4QjthQUNHO1lBQ0EsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7U0FDekI7SUFFTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQVk7UUFFUixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZFLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBMEIsQ0FBQTtZQUN0RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7WUFFM0IsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFMUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLCtFQUErRSxDQUFDLENBQUM7b0JBQzNHLE9BQU87aUJBQ1Y7YUFDSjtZQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV0RCxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7Z0JBQ3BGLE9BQU87YUFDVjtZQUVELElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUUxRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7d0JBQ3ZCLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7d0JBQ25DLFVBQVUsRUFBRSxFQUFFO3FCQUNqQixDQUFDLENBQUE7Z0JBQ04sQ0FBQyxDQUFDLENBQUE7YUFDTDtZQUVELElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUMzRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO2dCQUM3RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ25CO2lCQUNJO2dCQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2FBQ2hDO1lBRUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztTQUNsQzthQUNJO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsNENBQTRDLENBQUMsQ0FBQTtTQUN6RTtJQUVMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN6QjthQUNJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDeEI7YUFDRztZQUNBLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsUUFBUTtRQUVKLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUVyQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO1lBRTdELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDN0QsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDYixTQUFTLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTO29CQUNqQyxVQUFVLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVO2lCQUN0QyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQTtTQUNMO1FBRUQsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUEwQixDQUFBO1FBRXRELElBQUksVUFBVSxHQUEyQjtZQUNyQyxRQUFRLEVBQUUsV0FBVztZQUNyQixVQUFVLEVBQUUsV0FBVztTQUMxQixDQUFBO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQTtZQUVyQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQTs7Z0JBRTVELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUE7UUFDbEUsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBR0QsYUFBYSxDQUFDLEtBQW9CO1FBQzlCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUVOLElBQUcsSUFBSSxDQUFDLFlBQVksRUFBQztZQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFOUIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFrQyxDQUFBO1FBQzlELElBQUksb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQzlCLElBQUksbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEcsb0JBQW9CLENBQUMsSUFBSSxDQUFDO2dCQUN0QixVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUM3QixRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2FBQzVCLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNqRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQzdCLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7YUFDM0IsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxDQUFDLENBQUE7UUFFRixXQUFXLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQztRQUMvRCxXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFBO1FBRWxDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRO1lBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUMvQyxTQUFTLEVBQUUsV0FBVztnQkFDdEIsaUJBQWlCLEVBQUUsb0JBQW9CO2dCQUN2QyxnQkFBZ0IsRUFBRSxtQkFBbUI7YUFDeEMsQ0FBQztZQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUM1QjtnQkFDSSxTQUFTLEVBQUUsV0FBVztnQkFDdEIsaUJBQWlCLEVBQUUsb0JBQW9CO2dCQUN2QyxnQkFBZ0IsRUFBRSxtQkFBbUI7YUFDeEMsQ0FBQyxDQUFDO1FBRVgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFeEIsT0FBTzthQUNGLElBQUksQ0FDRCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQzFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDN0I7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBbUI7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsMEJBQTBCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMseUJBQXlCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFtQjtRQUN0QixJQUFJLENBQUMsWUFBWTthQUNaLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxzQkFBc0IsRUFBRTtZQUNqRSx5QkFBeUIsRUFBRSxFQUFFO1NBQ2hDLENBQUM7YUFDRCxJQUFJLENBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ3hELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUM3RDthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ25CLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYTtRQUM3QixNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQztRQUNqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDOUcsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksU0FBUyxLQUFLLENBQUMsR0FBRyxHQUFHLGlCQUFpQixDQUFDLElBQUksU0FBUyxLQUFLLGlCQUFpQixFQUFFO2dCQUM1RSxPQUFPLElBQUksQ0FBQTthQUNkO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFFeEIsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQzs7WUFFWixPQUFPLEtBQUssQ0FBQztJQUNyQixDQUFDOztpSEF2WFEsb0JBQW9CO3FHQUFwQixvQkFBb0IsOEdBSmxCLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsNGlCQ3BCaEYsa2lvQkErWFk7MkZEdldDLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDSSxlQUFlLG1CQUNSLHVCQUF1QixDQUFDLE9BQU8sYUFDckMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQzs4VUFLeEIsa0JBQWtCO3NCQUFyRSxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDQyxpQkFBaUI7c0JBQW5FLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNHLGtCQUFrQjtzQkFBckUsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0QsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0QsWUFBWTtzQkFBekQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXlQNUMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQLCBpc051bGxPckVtcHR5LCBpc051bGxPclVuZGVmaW5lZCwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgTm90ZVJ1bGVDcmVhdGVEdG8sIE5vdGVSdWxlRHRvLCBOb3RlUnVsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm94eS9ub3RlLXJ1bGVzJztcclxuaW1wb3J0IHsgRHhEYXRhR3JpZENvbXBvbmVudCwgRHhIdG1sRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcclxuaW1wb3J0IHsgZmluYWxpemUsIHRhcCwgZmlsdGVyLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSGl0Tm90ZVJ1bGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtbm90ZS1ydWxlcy9oaXQtbm90ZS1ydWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgZHhIdG1sRWRpdG9yIGZyb20gJ2RldmV4dHJlbWUvdWkvaHRtbF9lZGl0b3InO1xyXG5pbXBvcnQgeyBIaXROb3RlUnVsZUNyZWF0ZUR0bywgTm90ZVJ1bGVDcmVhdGVPclVwZGF0ZUR0bywgUHJldmlld1F1ZXJ5UmVxdWVzdER0byB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtbm90ZS1ydWxlcy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBOb3RlUnVsZURvY1R5cGVDcmVhdGVEdG8gfSBmcm9tICcuLi8uLi9wcm94eS9ub3RlLXJ1bGUtZG9jLXR5cGVzJztcclxuaW1wb3J0IHsgTm90ZVJ1bGVTY2VuYXJpb0NyZWF0ZUR0byB9IGZyb20gJy4uLy4uL3Byb3h5L25vdGUtcnVsZS1zY2VuYXJpb3MnO1xyXG5pbXBvcnQgeyBIaXROb3RlUnVsZURvY1R5cGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtbm90ZS1ydWxlLWRvYy10eXBlcy9oaXQtbm90ZS1ydWxlLWRvYy10eXBlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXROb3RlUnVsZVNjZW5hcmlvc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LW5vdGUtcnVsZS1zY2VuYXJpb3MvaGl0LW5vdGUtcnVsZS1zY2VuYXJpby5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItbm90ZS1ydWxlJyxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICAgIHByb3ZpZGVyczogW0xpc3RTZXJ2aWNlLCB7IHByb3ZpZGU6IE5nYkRhdGVBZGFwdGVyLCB1c2VDbGFzczogRGF0ZUFkYXB0ZXIgfV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vaGl0LW5vdGUtcnVsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0Tm90ZVJ1bGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnZHhOb3RlUnVsZUluc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4Tm90ZVJ1bGVJbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudFxyXG4gICAgQFZpZXdDaGlsZCgnZHhEb2NUeXBlSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhEb2NUeXBlSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4U2NlbmFyaW9JbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeFNjZW5hcmlvSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4UGFyYW1JbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeFBhcmFtSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4SHRtbEVkaXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBkeEh0bWxFZGl0b3I6IGR4SHRtbEVkaXRvcjtcclxuXHJcbiAgICBub3RlUnVsZURhdGFTb3VyY2U6IGFueVxyXG4gICAgaXNRdWVyeWFibGUgPSB0cnVlO1xyXG4gICAgaXNTdGF0aWMgPSBmYWxzZTtcclxuXHJcbiAgICBlbnRlclByZXNzZWQgPSBmYWxzZTtcclxuXHJcbiAgICBzY2VuYXJpb0RhdGFTb3VyY2U6IGFueVxyXG4gICAgc2VsZWN0ZWRTY2VuYXJpb3MgPSBbXTtcclxuXHJcbiAgICBkb2NUeXBlRGF0YVNvdXJjZTogYW55XHJcbiAgICBzZWxlY3RlZERvY1R5cGVzID0gW107XHJcblxyXG4gICAgcnVsZVR5cGVzRGF0YVNvdXJjZTogYW55O1xyXG4gICAgZGVzY1R5cGVzRGF0YVNvdXJjZTogYW55O1xyXG4gICAgdGFibGVzRGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgcGFyYW1OYW1lc0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGh0bWxNZW50aW9uRGF0YVNvdXJjZSA9IFtdO1xyXG5cclxuICAgIHByZXZpZXdEYXRhU291cmNlOiBbXSA9IFtdO1xyXG4gICAgcGFyYW1zRGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgaXNQYXJhbWV0ZXJsZXNzID0gZmFsc2U7XHJcbiAgICBpc01vZGFsQnVzeVByZXZpZXcgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxPcGVuUHJldmlldyA9IGZhbHNlO1xyXG5cclxuICAgIGZvcm06IEZvcm1Hcm91cDtcclxuICAgIGlzTW9kYWxCdXN5ID0gZmFsc2U7XHJcbiAgICBpc01vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgaXNVcGRhdGUgPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkPzogTm90ZVJ1bGVEdG87XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBOb3RlUnVsZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBoaXROb3RlUnVsZVNlcnZpY2U6IEhpdE5vdGVSdWxlc1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBoaXROb3RlUnVsZURvY1R5cGVTZXJ2aWNlOiBIaXROb3RlUnVsZURvY1R5cGVzU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhpdE5vdGVSdWxlU2NlbmFyaW9TZXJ2aWNlOiBIaXROb3RlUnVsZVNjZW5hcmlvc1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcclxuICAgICkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5ub3RlUnVsZURhdGFTb3VyY2UgPSB0aGlzLmhpdE5vdGVSdWxlU2VydmljZS5Mb2FkTm90ZVJ1bGVzO1xyXG4gICAgICAgIHRoaXMuc2NlbmFyaW9EYXRhU291cmNlID0gdGhpcy5oaXROb3RlUnVsZVNlcnZpY2UuTG9hZFNjZW5hcmlvcztcclxuICAgICAgICB0aGlzLmRvY1R5cGVEYXRhU291cmNlID0gdGhpcy5oaXROb3RlUnVsZVNlcnZpY2UuTG9hZERvY1R5cGVzO1xyXG5cclxuICAgICAgICB0aGlzLmhpdE5vdGVSdWxlU2VydmljZS5nZXRSdWxlVHlwZXMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucnVsZVR5cGVzRGF0YVNvdXJjZSA9IGxpc3Q7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucnVsZVR5cGVzRGF0YVNvdXJjZSk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5oaXROb3RlUnVsZVNlcnZpY2UuZ2V0RGVzY1R5cGVzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRlc2NUeXBlc0RhdGFTb3VyY2UgPSBsaXN0O1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuaGl0Tm90ZVJ1bGVTZXJ2aWNlLmdldFRhYmxlTmFtZXMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIGxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVzRGF0YVNvdXJjZS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlbGVtZW50LmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGljb246IFwiL2Fzc2V0cy9pbWFnZXMvdGFibGUtaWNvbi5wbmdcIlxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHRoaXMuaHRtbE1lbnRpb25EYXRhU291cmNlLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGVsZW1lbnQuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGVsZW1lbnQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogXCIvYXNzZXRzL2ltYWdlcy90YWJsZS1pY29uLnBuZ1wiXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuaGl0Tm90ZVJ1bGVTZXJ2aWNlLmdldFBhcmFtTmFtZXMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIGxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaHRtbE1lbnRpb25EYXRhU291cmNlLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGVsZW1lbnQuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGVsZW1lbnQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogXCIvYXNzZXRzL2ltYWdlcy9rZXktaWNvbi5wbmdcIlxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkRm9ybSgpIHtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgIHJ1bGVOYW1lLFxyXG4gICAgICAgICAgICBydWxlVHlwZSxcclxuICAgICAgICAgICAgZGVzY1R5cGUsXHJcbiAgICAgICAgICAgIG9yZGVyTm8sXHJcbiAgICAgICAgICAgIGZpcnN0RGVzYyxcclxuICAgICAgICAgICAgbGFzdERlc2MsXHJcbiAgICAgICAgICAgIG5vdGVRdWVyeSxcclxuICAgICAgICAgICAgbm90ZVF1ZXJ5SFRNTCxcclxuICAgICAgICAgICAgZml4RGVzYyxcclxuICAgICAgICAgICAgaXNCb2xkLFxyXG4gICAgICAgICAgICBpc1Bhc3NpdmUsXHJcbiAgICAgICAgICAgIGRlc2MsXHJcbiAgICAgICAgICAgIGRvY3VtZW50XHJcbiAgICAgICAgfSA9IHRoaXMuc2VsZWN0ZWQgfHwge307XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIHJ1bGVOYW1lOiBbcnVsZU5hbWUgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgICAgICAgcnVsZVR5cGU6IFtydWxlVHlwZSA/PyB0aGlzLnJ1bGVUeXBlc0RhdGFTb3VyY2VbMF0uaWQsIFtdXSxcclxuICAgICAgICAgICAgZGVzY1R5cGU6IFtkZXNjVHlwZSA/PyB0aGlzLmRlc2NUeXBlc0RhdGFTb3VyY2VbMF0uaWQsIFtdXSxcclxuICAgICAgICAgICAgZG9jdW1lbnQ6IFtkb2N1bWVudCA/PyB0aGlzLnRhYmxlc0RhdGFTb3VyY2VbMF0uaWQsIFtdXSxcclxuICAgICAgICAgICAgb3JkZXJObzogW29yZGVyTm8gPz8gMCwgW1ZhbGlkYXRvcnMubWluKDApXV0sXHJcbiAgICAgICAgICAgIGZpcnN0RGVzYzogW2ZpcnN0RGVzYyA/PyBudWxsLCBbXV0sXHJcbiAgICAgICAgICAgIGxhc3REZXNjOiBbbGFzdERlc2MgPz8gbnVsbCwgW11dLFxyXG4gICAgICAgICAgICBub3RlUXVlcnk6IFtub3RlUXVlcnkgPz8gbnVsbCwgW11dLFxyXG4gICAgICAgICAgICBub3RlUXVlcnlIVE1MOiBbbm90ZVF1ZXJ5SFRNTCA/PyBudWxsLCBbXV0sXHJcbiAgICAgICAgICAgIGZpeERlc2M6IFtmaXhEZXNjID8/IG51bGwsIFtdXSxcclxuICAgICAgICAgICAgaXNCb2xkOiBbaXNCb2xkID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgICAgICAgIGlzUGFzc2l2ZTogW2lzUGFzc2l2ZSA/PyBmYWxzZSwgW11dLFxyXG4gICAgICAgICAgICBkZXNjOiBbZGVzYyA/PyBudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTEyKV1dLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm0uY29udHJvbHMucnVsZVR5cGUudmFsdWUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzUXVlcnlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5pc1N0YXRpYyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmZvcm0uY29udHJvbHMucnVsZVR5cGUudmFsdWUgPT0gMSl7XHJcbiAgICAgICAgICAgIHRoaXMuaXNRdWVyeWFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5pc1N0YXRpYyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuaXNRdWVyeWFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5pc1N0YXRpYyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgaGlkZUZvcm0oKSB7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dGb3JtKCkge1xyXG4gICAgICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJldmlld1F1ZXJ5KCkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLmlzUXVlcnlhYmxlICYmICFpc051bGxPckVtcHR5KHRoaXMuZm9ybS5jb250cm9scy5ydWxlTmFtZS52YWx1ZSkpIHtcclxuICAgICAgICAgICAgbGV0IG5vdGVSdWxlUmVxID0gdGhpcy5mb3JtLnZhbHVlIGFzIE5vdGVSdWxlQ3JlYXRlRHRvXHJcbiAgICAgICAgICAgIHRoaXMucHJldmlld0RhdGFTb3VyY2UgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbXNEYXRhU291cmNlID0gW107XHJcblxyXG4gICAgICAgICAgICBsZXQgbm90ZVF1ZXJ5ID0gdGhpcy5zdHJpcEhUTUwobm90ZVJ1bGVSZXEubm90ZVF1ZXJ5SFRNTCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzLmRlc2NUeXBlLnZhbHVlID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tMaW5lUXVlcnkobm90ZVF1ZXJ5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJTZcOnaWxpIGHDp8Sxa2xhbWEgdMO8csO8IGnDp2luIHNvcmd1IGnDp2VyaXNpbmRlIEJlbGdlRGV0YXlLZXkgYnVsdW5tYWsgem9ydW5kYWTEsXIuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgdGFibGVOYW1lID0gdGhpcy5jaGVja1RhYmxlQWZ0ZXJGcm9tKG5vdGVRdWVyeSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRhYmxlTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIlNlw6dpbGkgdGFibG8gaWxlIHNvcmd1ZGEgYmHFn2xhbsSxbGFuIHRhYmxvIGF5bsSxIG9sbWFsxLEuXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgcGFyYW1zID0gbm90ZVF1ZXJ5Lm1hdGNoKC8oQmVsZ2VLZXl8QmVsZ2VEZXRheUtleSkvZyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHBhcmFtcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zRGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXNEYXRhU291cmNlLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWU6IGVsZW1lbnQucmVwbGFjZShcIjpcIiwgXCJcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWU6IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzTnVsbE9yRW1wdHkodGhpcy5wYXJhbXNEYXRhU291cmNlKSB8fCB0aGlzLnBhcmFtc0RhdGFTb3VyY2UubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbygnZURvbnVzdW06OlF1ZXJ5UHJldmlld0lzUHJlcGFyaW5nJylcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNQYXJhbWV0ZXJsZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucnVuUXVlcnkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNQYXJhbWV0ZXJsZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNNb2RhbE9wZW5QcmV2aWV3ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbygnZURvbnVzdW06OlF1ZXJ5UHJldmlld09ubHlVc2luZ0J5UXVlcnlEZXNjJylcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJ1bGVUeXBlQ2hhbmdlZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzLnJ1bGVUeXBlLnZhbHVlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc1F1ZXJ5YWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGF0aWMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5mb3JtLmNvbnRyb2xzLnJ1bGVUeXBlLnZhbHVlID09IDEpe1xyXG4gICAgICAgICAgICB0aGlzLmlzUXVlcnlhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGF0aWMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLmlzUXVlcnlhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGF0aWMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm5vdGVRdWVyeUhUTUwuc2V0VmFsdWUoXCJcIik7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm5vdGVRdWVyeS5zZXRWYWx1ZShcIlwiKTtcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZml4RGVzYy5zZXRWYWx1ZShcIlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBkb2N1bWVudENoYW5nZWQoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm5vdGVRdWVyeUhUTUwuc2V0VmFsdWUoXCJcIik7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm5vdGVRdWVyeS5zZXRWYWx1ZShcIlwiKTtcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZml4RGVzYy5zZXRWYWx1ZShcIlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBydW5RdWVyeSgpIHtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgcGFyYW1WYWx1ZXMgPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzUGFyYW1ldGVybGVzcykge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oJ2VEb251c3VtOjpRdWVyeVByZXZpZXdJc1ByZXBhcmluZycpXHJcblxyXG4gICAgICAgICAgICB0aGlzLmR4UGFyYW1JbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbVZhbHVlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWU6IGVsZW1lbnQuZGF0YS5wYXJhbU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZTogZWxlbWVudC5kYXRhLnBhcmFtVmFsdWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG5vdGVSdWxlUmVxID0gdGhpcy5mb3JtLnZhbHVlIGFzIE5vdGVSdWxlQ3JlYXRlRHRvXHJcblxyXG4gICAgICAgIGxldCByZXF1ZXN0RHRvOiBQcmV2aWV3UXVlcnlSZXF1ZXN0RHRvID0ge1xyXG4gICAgICAgICAgICBub3RlUnVsZTogbm90ZVJ1bGVSZXEsXHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHBhcmFtVmFsdWVzXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmhpdE5vdGVSdWxlU2VydmljZS5wcmV2aWV3UXVlcnlSZXN1bHQocmVxdWVzdER0bykuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucHJldmlld0RhdGFTb3VyY2UgPSByZXN1bHQudmFsdWVcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZpZXdEYXRhU291cmNlLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoJ2VEb251c3VtOjpRdWVyeVByZXZpZXdJc1JlYWR5JylcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS53YXJuKCdlRG9udXN1bTo6UXVlcnlQcmV2aWV3Tm9SZXN1bHQnKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICB0aGlzLmVudGVyUHJlc3NlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN1Ym1pdEZvcm0oKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYodGhpcy5lbnRlclByZXNzZWQpe1xyXG4gICAgICAgICAgICB0aGlzLmVudGVyUHJlc3NlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSByZXR1cm47XHJcblxyXG4gICAgICAgIGxldCBub3RlUnVsZVJlcSA9IHRoaXMuZm9ybS52YWx1ZSBhcyBOb3RlUnVsZUNyZWF0ZU9yVXBkYXRlRHRvXHJcbiAgICAgICAgbGV0IG5vdGVSdWxlU2NlbmFyaW9zUmVxID0gW107XHJcbiAgICAgICAgbGV0IG5vdGVSdWxlRG9jVHlwZXNSZXEgPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5keFNjZW5hcmlvSW5zdGFuY2UuaW5zdGFuY2UuZ2V0VmlzaWJsZVJvd3MoKS5maWx0ZXIoaSA9PiBpLmlzU2VsZWN0ZWQgPT0gdHJ1ZSkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgbm90ZVJ1bGVTY2VuYXJpb3NSZXEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBub3RlUnVsZUlkOiB0aGlzLnNlbGVjdGVkPy5pZCxcclxuICAgICAgICAgICAgICAgIHNjZW5hcmlvOiBlbGVtZW50LmRhdGEuaWRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmR4RG9jVHlwZUluc3RhbmNlLmluc3RhbmNlLmdldFZpc2libGVSb3dzKCkuZmlsdGVyKGkgPT4gaS5pc1NlbGVjdGVkID09IHRydWUpLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIG5vdGVSdWxlRG9jVHlwZXNSZXEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBub3RlUnVsZUlkOiB0aGlzLnNlbGVjdGVkPy5pZCxcclxuICAgICAgICAgICAgICAgIGRvY1R5cGU6IGVsZW1lbnQuZGF0YS5pZFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIG5vdGVSdWxlUmVxLmNvbmN1cnJlbmN5U3RhbXAgPSB0aGlzLnNlbGVjdGVkPy5jb25jdXJyZW5jeVN0YW1wO1xyXG4gICAgICAgIG5vdGVSdWxlUmVxLmlkID0gdGhpcy5zZWxlY3RlZD8uaWRcclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuc2VsZWN0ZWRcclxuICAgICAgICAgICAgPyB0aGlzLmhpdE5vdGVSdWxlU2VydmljZS51cGRhdGUodGhpcy5zZWxlY3RlZC5pZCwge1xyXG4gICAgICAgICAgICAgICAgbm90ZVJ1bGVzOiBub3RlUnVsZVJlcSxcclxuICAgICAgICAgICAgICAgIG5vdGVSdWxlU2NlbmFyaW9zOiBub3RlUnVsZVNjZW5hcmlvc1JlcSxcclxuICAgICAgICAgICAgICAgIG5vdGVSdWxlRG9jVHlwZXM6IG5vdGVSdWxlRG9jVHlwZXNSZXFcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgOiB0aGlzLmhpdE5vdGVSdWxlU2VydmljZS5jcmVhdGUoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZVJ1bGVzOiBub3RlUnVsZVJlcSxcclxuICAgICAgICAgICAgICAgICAgICBub3RlUnVsZVNjZW5hcmlvczogbm90ZVJ1bGVTY2VuYXJpb3NSZXEsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZVJ1bGVEb2NUeXBlczogbm90ZVJ1bGVEb2NUeXBlc1JlcVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3kgPSB0cnVlO1xyXG5cclxuICAgICAgICByZXF1ZXN0XHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gKHRoaXMuaXNNb2RhbEJ1c3kgPSBmYWxzZSkpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuaGlkZUZvcm0oKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhOb3RlUnVsZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlKCkge1xyXG4gICAgICAgIHRoaXMuaXNVcGRhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMucHJldmlld0RhdGFTb3VyY2UgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU2NlbmFyaW9zID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERvY1R5cGVzID0gW107XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShyZWNvcmQ6IE5vdGVSdWxlRHRvKSB7XHJcbiAgICAgICAgdGhpcy5pc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHJlY29yZDtcclxuICAgICAgICB0aGlzLnByZXZpZXdEYXRhU291cmNlID0gW107XHJcbiAgICAgICAgdGhpcy5oaXROb3RlUnVsZVNjZW5hcmlvU2VydmljZS5nZXRTZWxlY3RlZFNjZW5hcmlvcyh0aGlzLnNlbGVjdGVkLmlkKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTY2VuYXJpb3MgPSBsaXN0Lm1hcChpID0+IGkuc2NlbmFyaW8pO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuaGl0Tm90ZVJ1bGVEb2NUeXBlU2VydmljZS5nZXRTZWxlY3RlZERvY1R5cGVzKHRoaXMuc2VsZWN0ZWQuaWQpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERvY1R5cGVzID0gbGlzdC5tYXAoaSA9PiBpLmRvY1R5cGUpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGUocmVjb3JkOiBOb3RlUnVsZUR0bykge1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uXHJcbiAgICAgICAgICAgIC53YXJuKCdlRG9udXN1bTo6RGVsZXRlQ29uZmlybWF0aW9uTWVzc2FnZScsICdlRG9udXN1bTo6QXJlWW91U3VyZScsIHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VMb2NhbGl6YXRpb25QYXJhbXM6IFtdLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGZpbHRlcihzdGF0dXMgPT4gc3RhdHVzID09PSBDb25maXJtYXRpb24uU3RhdHVzLmNvbmZpcm0pLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuaGl0Tm90ZVJ1bGVTZXJ2aWNlLmRlbGV0ZShyZWNvcmQuaWQpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5keE5vdGVSdWxlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBzdHJpcEhUTUwoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgc3RyaXBwZWRIdG1sID0gaW5wdXQucmVwbGFjZShcIjwvcD48cD5cIiwgXCIgXCIpO1xyXG4gICAgICAgIHJldHVybiBzdHJpcHBlZEh0bWwucmVwbGFjZSgvQC9nLCAnJykucmVwbGFjZSgvPC4qPz4vZywgJycpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrVGFibGVBZnRlckZyb20ocXVlcnk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gL0ZST01cXHMrKFtAXFx3XSspL2k7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUYWJsZU5hbWUgPSB0aGlzLnRhYmxlc0RhdGFTb3VyY2UuZmlsdGVyKGkgPT4gaS5pZCA9PSB0aGlzLmZvcm0uY29udHJvbHMuZG9jdW1lbnQudmFsdWUpWzBdLnRleHRcclxuICAgICAgICBjb25zdCBtYXRjaCA9IHF1ZXJ5Lm1hdGNoKHJlZ2V4KTtcclxuXHJcbiAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlTmFtZSA9IG1hdGNoWzFdO1xyXG4gICAgICAgICAgICBpZiAodGFibGVOYW1lID09PSAoXCJAXCIgKyBzZWxlY3RlZFRhYmxlTmFtZSkgfHwgdGFibGVOYW1lID09PSBzZWxlY3RlZFRhYmxlTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrTGluZVF1ZXJ5KHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYgKHF1ZXJ5LmluY2x1ZGVzKFwiQmVsZ2VEZXRheUtleVwiKSlcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCInZURvbnVzdW06Ok5vdGVSdWxlcycgfCBhYnBMb2NhbGl6YXRpb25cIj5cclxuICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uTm90ZVJ1bGVzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwiY3JlYXRlKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06Ok5ld05vdGVSdWxlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvYWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgIDxkeC1kYXRhLWdyaWQgI2R4Tm90ZVJ1bGVJbnN0YW5jZSBbZGF0YVNvdXJjZV09XCJub3RlUnVsZURhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDc1dmg7XCI+XHJcbiAgICAgICAgPGR4by1wYWdlciBbdmlzaWJsZV09XCJ0cnVlXCIgW3Nob3dJbmZvXT1cInRydWVcIiBbYWxsb3dlZFBhZ2VTaXplc109XCJbNTAsMTAwLDIwMF1cIiBbc2hvd05hdmlnYXRpb25CdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4by1wYWdlcj5cclxuICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiNTBcIj48L2R4by1wYWdpbmc+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tY2hvb3NlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFtlbmFibGVkXT1cInRydWVcIiBtb2RlPVwic2VsZWN0XCI+PC9keG8tY29sdW1uLWNob29zZXI+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZ3JvdXAtcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiIFthbGxvd0NvbHVtbkRyYWdnaW5nXT1cInRydWVcIj48L2R4by1ncm91cC1wYW5lbD5cclxuICAgICAgICA8ZHhvLWdyb3VwaW5nICNleHBhbmQgW2F1dG9FeHBhbmRBbGxdPVwiZmFsc2VcIiBbYWxsb3dDb2xsYXBzaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgW2NvbnRleHRNZW51RW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZ3JvdXBpbmc+XHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBbYWxsb3dFeHBvcnRTZWxlY3RlZERhdGFdPVwiZmFsc2VcIj48L2R4by1leHBvcnQ+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLWJ1aWxkZXIgW2FsbG93SGllcmFyY2hpY2FsRmllbGRzXT1cInRydWVcIj48L2R4by1maWx0ZXItYnVpbGRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1wYW5lbCBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXBhbmVsPlxyXG4gICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gW2ZpeGVkXT1cInRydWVcIiBkYXRhRmllbGQ9XCJpZFwiIHdpZHRoPVwiMTIwXCIgW2FsbG93R3JvdXBpbmddPVwiZmFsc2VcIiBbYWxsb3dGaWx0ZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCIgW2FsbG93SGlkaW5nXT1cImZhbHNlXCIgW2FsbG93UmVvcmRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiIGNhcHRpb249XCJ7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+XHJcbiAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnb3BlcmF0aW9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGUgW2Rpc2FibGVkXT1cImRpc2FibGVkSWRDb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1yLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwidXBkYXRlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImRlbGV0ZShyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicnVsZU5hbWVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlJ1bGVOYW1lJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJydWxlVHlwZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UnVsZVR5cGUnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJydWxlVHlwZXNEYXRhU291cmNlXCIgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCI+XHJcbiAgICAgICAgICA8L2R4by1sb29rdXA+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRlc2NUeXBlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEZXNjVHlwZSd8YWJwTG9jYWxpemF0aW9ufX1cIj5cclxuICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImRlc2NUeXBlc0RhdGFTb3VyY2VcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIj5cclxuICAgICAgICAgIDwvZHhvLWxvb2t1cD5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwib3JkZXJOb1wiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6T3JkZXJObyd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXNQYXNzaXZlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJc1Bhc3NpdmUnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeVwiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5cIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAoc2VsZWN0ZWQgPyAnQWJwVWk6OkVkaXQnIDogJ2VEb251c3VtOjpOZXdOb3RlUnVsZScpIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGlkPVwibm90ZS1ydWxlXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiIHZhbGlkYXRlT25TdWJtaXQ+XHJcbiAgICAgIDxkeC10YWItcGFuZWwgW2FuaW1hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiIFtzd2lwZUVuYWJsZWRdPVwidHJ1ZVwiIFtsb29wXT1cInRydWVcIiAjdGFiUGFuZWw+XHJcbiAgICAgICAgPGR4aS1pdGVtIHRpdGxlPVwie3sgJ2VEb251c3VtOjpRdWVyeUluZm8nIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgaWNvbj1cImZhcyBmYS1maWxlLWFsdFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBmYWRlLWluLXRvcFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6MjBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJub3RlLXJ1bGUtcnVsZS1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlJ1bGVOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwibm90ZS1ydWxlLXJ1bGUtbmFtZVwiIFtkaXNhYmxlZF09XCJpc1VwZGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInJ1bGVOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgYXV0b2ZvY3VzPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5vdGUtcnVsZS1vcmRlci1ub1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpPcmRlck5vJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgaWQ9XCJub3RlLXJ1bGUtb3JkZXItbm9cIiBmb3JtQ29udHJvbE5hbWU9XCJvcmRlck5vXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5vdGUtcnVsZS1ydWxlLXR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UnVsZVR5cGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJub3RlLXJ1bGUtcnVsZS10eXBlXCIgW2Rpc2FibGVkXT1cImlzVXBkYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwicnVsZVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cInJ1bGVUeXBlQ2hhbmdlZCgpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCIgdmFsdWVFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwicnVsZVR5cGVzRGF0YVNvdXJjZVwiIHBsYWNlaG9sZGVyPVwie3sgJ2VEb251c3VtOjpQaWNrJyB8IGFicExvY2FsaXphdGlvbiB9fS4uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJub3RlLXJ1bGUtZGVzYy10eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRlc2NUeXBlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJub3RlLXJ1bGUtZGVzYy10eXBlXCIgW2Rpc2FibGVkXT1cImlzVXBkYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY1R5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCIgdmFsdWVFeHByPVwiaWRcIiBbZGF0YVNvdXJjZV09XCJkZXNjVHlwZXNEYXRhU291cmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2VEb251c3VtOjpQaWNrJyB8IGFicExvY2FsaXphdGlvbiB9fS4uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwibm90ZS1ydWxlLXJ1bGUtdHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpEb2N1bWVudCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cIm5vdGUtcnVsZS1kb2N1bWVudFwiIFtkaXNhYmxlZF09XCJpc1VwZGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImRvY3VtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJkb2N1bWVudENoYW5nZWQoKVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZGlzcGxheUV4cHI9XCJ0ZXh0XCIgdmFsdWVFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwidGFibGVzRGF0YVNvdXJjZVwiIHBsYWNlaG9sZGVyPVwie3sgJ2VEb251c3VtOjpQaWNrJyB8IGFicExvY2FsaXphdGlvbiB9fS4uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJub3RlLXJ1bGUtZmlyc3QtZGVzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpGaXJzdERlc2MnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1hcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJub3RlLXJ1bGUtZmlyc3QtZGVzY1wiIFtoZWlnaHRdPVwiNzBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZmlyc3REZXNjXCIgbWF4bGVuZ3RoPVwiNDA5NlwiIHN0eWxlPVwicmVzaXplOiBub25lO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZHgtdGV4dC1hcmVhPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImlzUXVlcnlhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5vdGUtcnVsZS1ub3RlLXF1ZXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok5vdGVRdWVyeScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeC1odG1sLWVkaXRvciAjZHhIdG1sRWRpdG9yIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJub3RlLXJ1bGUtbm90ZS1xdWVyeS1odG1sXCIgW2hlaWdodF09XCIxMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNDA5NlwiIGZvcm1Db250cm9sTmFtZT1cIm5vdGVRdWVyeUhUTUxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkeGktbWVudGlvbiB2YWx1ZUV4cHI9XCJ0ZXh0XCIgZGlzcGxheUV4cHI9XCJ0ZXh0XCIgc2VhcmNoRXhwcj1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJodG1sTWVudGlvbkRhdGFTb3VyY2VcIj48L2R4aS1tZW50aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZHgtaHRtbC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiaXNTdGF0aWNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwibm90ZS1ydWxlLWZpeC1kZXNjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkZpeERlc2MnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYXJlYSBpZD1cIm5vdGUtcnVsZS1maXgtZGVzY1wiIGZvcm1Db250cm9sTmFtZT1cImZpeERlc2NcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjEwMFwiPjwvZHgtdGV4dC1hcmVhPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwibm90ZS1ydWxlLWxhc3QtZGVzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpMYXN0RGVzYycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1hcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJub3RlLXJ1bGUtbGFzdC1kZXNjXCIgW2hlaWdodF09XCI3MFwiIGZvcm1Db250cm9sTmFtZT1cImxhc3REZXNjXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjQwOTZcIiBzdHlsZT1cInJlc2l6ZTogbm9uZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4LXRleHQtYXJlYT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5vdGUtcnVsZS1kZXNjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRlc2MnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwibm90ZS1ydWxlLWRlc2NcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCI1MTJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cIm5vdGUtcnVsZS1pcy1ib2xkXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNCb2xkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm5vdGUtcnVsZS1pcy1ib2xkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OklzQm9sZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwibm90ZS1ydWxlLWlzLXBhc3NpdmVcIiBmb3JtQ29udHJvbE5hbWU9XCJpc1Bhc3NpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm5vdGUtcnVsZS1pcy1wYXNzaXZlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OklzUGFzc2l2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZHhpLWl0ZW0+XHJcbiAgICAgICAgPGR4aS1pdGVtIHRpdGxlPVwie3sgJ2VEb251c3VtOjpTY2VuYXJpb3MnIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgaWNvbj1cImZhcyBmYS1wZW5jaWwtYWx0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjIwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhTY2VuYXJpb0luc3RhbmNlIFtkYXRhU291cmNlXT1cInNjZW5hcmlvRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiIGtleUV4cHI9XCJpZFwiIFsoc2VsZWN0ZWRSb3dLZXlzKV09XCJzZWxlY3RlZFNjZW5hcmlvc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJtdWx0aXBsZVwiIHNlbGVjdEFsbE1vZGU9XCJwYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRpc3BsYXlOYW1lXCIgY2FwdGlvbj1cInt7ICdlRG9udXN1bTo6TmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktaXRlbT5cclxuICAgICAgICA8ZHhpLWl0ZW0gdGl0bGU9XCJ7eyAnZURvbnVzdW06OkRvY1R5cGVzJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIGljb249XCJmYXMgZmEtZW52ZWxvcGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZmFkZS1pbi10b3BcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOjIwcHg7IG1hcmdpbi1ib3R0b206MjBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeERvY1R5cGVJbnN0YW5jZSBbZGF0YVNvdXJjZV09XCJkb2NUeXBlRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiIGtleUV4cHI9XCJpZFwiIFsoc2VsZWN0ZWRSb3dLZXlzKV09XCJzZWxlY3RlZERvY1R5cGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4by1zZWxlY3Rpb24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGlzcGxheU5hbWVcIiBjYXB0aW9uPVwie3sgJ2VEb251c3VtOjpOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1pdGVtPlxyXG4gICAgICA8L2R4LXRhYi1wYW5lbD5cclxuXHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKm5nSWY9XCJpc1F1ZXJ5YWJsZVwiIChjbGljayk9XCJwcmV2aWV3UXVlcnkoKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlByZXZpZXdRdWVyeScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPCEtLSA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIGJ1dHRvblR5cGU9XCJzdWJtaXRcIiBmb3JtTmFtZT1cIm5vdGUtcnVsZVwiPlxyXG4gICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2FicC1idXR0b24+IC0tPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIGZvcm1OYW1lPVwibm90ZS1ydWxlXCIgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiPlxyXG4gICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNNb2RhbEJ1c3lQcmV2aWV3XCIgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlblByZXZpZXdcIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAoc2VsZWN0ZWQgPyAnQWJwVWk6OkVkaXQnIDogJ2VEb251c3VtOjpQcmV2aWV3UXVlcnknKSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8Zm9ybSBpZD1cIm5vdGUtcnVsZS1wcmV2aWV3XCI+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWlzUGFyYW1ldGVybGVzc1wiPlxyXG4gICAgICAgIDxoMz57eyAnZURvbnVzdW06OlBhcmFtZXRlcnMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9oMz5cclxuICAgICAgICA8aHI+XHJcbiAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhQYXJhbUluc3RhbmNlIFtkYXRhU291cmNlXT1cInBhcmFtc0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIiBzdHlsZT1cImhlaWdodDogNDB2aDtcIj5cclxuXHJcbiAgICAgICAgICA8ZHhvLWVkaXRpbmcgbW9kZT1cImNlbGxcIiBbdXNlSWNvbnNdPVwiZmFsc2VcIiBbYWxsb3dVcGRhdGluZ109XCJ0cnVlXCIgW2FsbG93QWRkaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2FsbG93RGVsZXRpbmddPVwiZmFsc2VcIj5cclxuICAgICAgICAgIDwvZHhvLWVkaXRpbmc+XHJcblxyXG4gICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG5cclxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhcmFtTmFtZVwiIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlBhcmFtTmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwYXJhbVZhbHVlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpQYXJhbVZhbHVlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICA8YnI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBzdHlsZT1cImZsb2F0OiByaWdodDtcIiAoY2xpY2spPVwicnVuUXVlcnkoKVwiPlxyXG4gICAgICAgICAge3sgJ2VEb251c3VtOjpSdW5RdWVyeScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnI+PGJyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxoMz57eyAnZURvbnVzdW06OlF1ZXJ5UmVzdWx0JyB8IGFicExvY2FsaXphdGlvbiB9fTwvaDM+XHJcbiAgICAgIDxocj5cclxuICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhQcmV2aWV3IFtkYXRhU291cmNlXT1cInByZXZpZXdEYXRhU291cmNlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxyXG4gICAgICAgIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA2MHZoO1wiPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuXHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcblxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuXHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG5cclxuICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcblxyXG4gICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuXHJcbiAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPiJdfQ==
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LW5vdGUtcnVsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1ub3RlLXJ1bGVzL2hpdC1ub3RlLXJ1bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtbm90ZS1ydWxlcy9oaXQtbm90ZS1ydWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsWUFBWSxFQUF1QyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQnhELE1BQU0sT0FBTyxvQkFBb0I7SUFzQzdCLFlBQ29CLElBQWlCLEVBQ2pCLE9BQXdCLEVBQ3ZCLGtCQUF1QyxFQUN2Qyx5QkFBcUQsRUFDckQsMEJBQXVELEVBQ3ZELGNBQThCLEVBQ3ZDLFlBQWlDLEVBQ2pDLEVBQWUsRUFDTixnQkFBa0M7UUFSbkMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN2Qix1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RSxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRyxrQkFBa0I7c0JBQXJFLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNELGVBQWU7c0JBQS9ELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNELFlBQVk7c0JBQXpELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkE0UDVDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgaXNOdWxsT3JFbXB0eSwgaXNOdWxsT3JVbmRlZmluZWQsIExpc3RTZXJ2aWNlLCBQYWdlZFJlc3VsdER0byB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IE5vdGVSdWxlQ3JlYXRlRHRvLCBOb3RlUnVsZUR0bywgTm90ZVJ1bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJveHkvbm90ZS1ydWxlcyc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQsIER4SHRtbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcbmltcG9ydCB7IGZpbmFsaXplLCB0YXAsIGZpbHRlciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEhpdE5vdGVSdWxlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LW5vdGUtcnVsZXMvaGl0LW5vdGUtcnVsZS5zZXJ2aWNlJztcclxuaW1wb3J0IGR4SHRtbEVkaXRvciBmcm9tICdkZXZleHRyZW1lL3VpL2h0bWxfZWRpdG9yJztcclxuaW1wb3J0IHsgSGl0Tm90ZVJ1bGVDcmVhdGVEdG8sIE5vdGVSdWxlQ3JlYXRlT3JVcGRhdGVEdG8sIFByZXZpZXdRdWVyeVJlcXVlc3REdG8gfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LW5vdGUtcnVsZXMvbW9kZWxzJztcclxuaW1wb3J0IHsgTm90ZVJ1bGVEb2NUeXBlQ3JlYXRlRHRvIH0gZnJvbSAnLi4vLi4vcHJveHkvbm90ZS1ydWxlLWRvYy10eXBlcyc7XHJcbmltcG9ydCB7IE5vdGVSdWxlU2NlbmFyaW9DcmVhdGVEdG8gfSBmcm9tICcuLi8uLi9wcm94eS9ub3RlLXJ1bGUtc2NlbmFyaW9zJztcclxuaW1wb3J0IHsgSGl0Tm90ZVJ1bGVEb2NUeXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LW5vdGUtcnVsZS1kb2MtdHlwZXMvaGl0LW5vdGUtcnVsZS1kb2MtdHlwZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0Tm90ZVJ1bGVTY2VuYXJpb3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1ub3RlLXJ1bGUtc2NlbmFyaW9zL2hpdC1ub3RlLXJ1bGUtc2NlbmFyaW8uc2VydmljZSc7XHJcbmltcG9ydCB7IEdyaWRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvZ3JpZC1zdGF0ZXMvZ3JpZC1zdGF0ZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItbm90ZS1ydWxlJyxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICAgIHByb3ZpZGVyczogW0xpc3RTZXJ2aWNlLCB7IHByb3ZpZGU6IE5nYkRhdGVBZGFwdGVyLCB1c2VDbGFzczogRGF0ZUFkYXB0ZXIgfV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vaGl0LW5vdGUtcnVsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0Tm90ZVJ1bGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnZHhOb3RlUnVsZUluc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4Tm90ZVJ1bGVJbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudFxyXG4gICAgQFZpZXdDaGlsZCgnZHhEb2NUeXBlSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhEb2NUeXBlSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4U2NlbmFyaW9JbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeFNjZW5hcmlvSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4UGFyYW1JbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeFBhcmFtSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4SHRtbEVkaXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBkeEh0bWxFZGl0b3I6IGR4SHRtbEVkaXRvcjtcclxuXHJcbiAgICBub3RlUnVsZURhdGFTb3VyY2U6IGFueVxyXG4gICAgZ3JpZFN0YXRlOiBhbnlcclxuICAgIGlzUXVlcnlhYmxlID0gdHJ1ZTtcclxuICAgIGlzU3RhdGljID0gZmFsc2U7XHJcblxyXG4gICAgZW50ZXJQcmVzc2VkID0gZmFsc2U7XHJcblxyXG4gICAgc2NlbmFyaW9EYXRhU291cmNlOiBhbnlcclxuICAgIHNlbGVjdGVkU2NlbmFyaW9zID0gW107XHJcblxyXG4gICAgZG9jVHlwZURhdGFTb3VyY2U6IGFueVxyXG4gICAgc2VsZWN0ZWREb2NUeXBlcyA9IFtdO1xyXG5cclxuICAgIHJ1bGVUeXBlc0RhdGFTb3VyY2U6IGFueTtcclxuICAgIGRlc2NUeXBlc0RhdGFTb3VyY2U6IGFueTtcclxuICAgIHRhYmxlc0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIHBhcmFtTmFtZXNEYXRhU291cmNlID0gW107XHJcbiAgICBodG1sTWVudGlvbkRhdGFTb3VyY2UgPSBbXTtcclxuXHJcbiAgICBwcmV2aWV3RGF0YVNvdXJjZTogW10gPSBbXTtcclxuICAgIHBhcmFtc0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGlzUGFyYW1ldGVybGVzcyA9IGZhbHNlO1xyXG4gICAgaXNNb2RhbEJ1c3lQcmV2aWV3ID0gZmFsc2U7XHJcbiAgICBpc01vZGFsT3BlblByZXZpZXcgPSBmYWxzZTtcclxuXHJcbiAgICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBpc01vZGFsQnVzeSA9IGZhbHNlO1xyXG4gICAgaXNNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgIGlzVXBkYXRlID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZD86IE5vdGVSdWxlRHRvO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBsaXN0OiBMaXN0U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogTm90ZVJ1bGVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0Tm90ZVJ1bGVTZXJ2aWNlOiBIaXROb3RlUnVsZXNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0Tm90ZVJ1bGVEb2NUeXBlU2VydmljZTogSGl0Tm90ZVJ1bGVEb2NUeXBlc1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBoaXROb3RlUnVsZVNjZW5hcmlvU2VydmljZTogSGl0Tm90ZVJ1bGVTY2VuYXJpb3NTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RlclNlcnZpY2U6IFRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ3JpZFN0YXRlU2VydmljZTogR3JpZFN0YXRlU2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmdyaWRTdGF0ZSA9IHRoaXMuZ3JpZFN0YXRlU2VydmljZS5idWlsZCgnbm90ZS1ydWxlcycpO1xyXG4gICAgICAgIHRoaXMubm90ZVJ1bGVEYXRhU291cmNlID0gdGhpcy5oaXROb3RlUnVsZVNlcnZpY2UuTG9hZE5vdGVSdWxlcztcclxuICAgICAgICB0aGlzLnNjZW5hcmlvRGF0YVNvdXJjZSA9IHRoaXMuaGl0Tm90ZVJ1bGVTZXJ2aWNlLkxvYWRTY2VuYXJpb3M7XHJcbiAgICAgICAgdGhpcy5kb2NUeXBlRGF0YVNvdXJjZSA9IHRoaXMuaGl0Tm90ZVJ1bGVTZXJ2aWNlLkxvYWREb2NUeXBlcztcclxuXHJcbiAgICAgICAgdGhpcy5oaXROb3RlUnVsZVNlcnZpY2UuZ2V0UnVsZVR5cGVzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJ1bGVUeXBlc0RhdGFTb3VyY2UgPSBsaXN0O1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJ1bGVUeXBlc0RhdGFTb3VyY2UpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuaGl0Tm90ZVJ1bGVTZXJ2aWNlLmdldERlc2NUeXBlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXNjVHlwZXNEYXRhU291cmNlID0gbGlzdDtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmhpdE5vdGVSdWxlU2VydmljZS5nZXRUYWJsZU5hbWVzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICBsaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlc0RhdGFTb3VyY2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogZWxlbWVudC5kaXNwbGF5TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5pZCxcclxuICAgICAgICAgICAgICAgICAgICBpY29uOiBcIi9hc3NldHMvaW1hZ2VzL3RhYmxlLWljb24ucG5nXCJcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLmh0bWxNZW50aW9uRGF0YVNvdXJjZS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlbGVtZW50LmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGljb246IFwiL2Fzc2V0cy9pbWFnZXMvdGFibGUtaWNvbi5wbmdcIlxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmhpdE5vdGVSdWxlU2VydmljZS5nZXRQYXJhbU5hbWVzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICBsaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmh0bWxNZW50aW9uRGF0YVNvdXJjZS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlbGVtZW50LmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGljb246IFwiL2Fzc2V0cy9pbWFnZXMva2V5LWljb24ucG5nXCJcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBidWlsZEZvcm0oKSB7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICBydWxlTmFtZSxcclxuICAgICAgICAgICAgcnVsZVR5cGUsXHJcbiAgICAgICAgICAgIGRlc2NUeXBlLFxyXG4gICAgICAgICAgICBvcmRlck5vLFxyXG4gICAgICAgICAgICBmaXJzdERlc2MsXHJcbiAgICAgICAgICAgIGxhc3REZXNjLFxyXG4gICAgICAgICAgICBub3RlUXVlcnksXHJcbiAgICAgICAgICAgIG5vdGVRdWVyeUhUTUwsXHJcbiAgICAgICAgICAgIGZpeERlc2MsXHJcbiAgICAgICAgICAgIGlzQm9sZCxcclxuICAgICAgICAgICAgaXNQYXNzaXZlLFxyXG4gICAgICAgICAgICBkZXNjLFxyXG4gICAgICAgICAgICBkb2N1bWVudFxyXG4gICAgICAgIH0gPSB0aGlzLnNlbGVjdGVkIHx8IHt9O1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBydWxlTmFtZTogW3J1bGVOYW1lID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgICAgICAgIHJ1bGVUeXBlOiBbcnVsZVR5cGUgPz8gdGhpcy5ydWxlVHlwZXNEYXRhU291cmNlWzBdLmlkLCBbXV0sXHJcbiAgICAgICAgICAgIGRlc2NUeXBlOiBbZGVzY1R5cGUgPz8gdGhpcy5kZXNjVHlwZXNEYXRhU291cmNlWzBdLmlkLCBbXV0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50OiBbZG9jdW1lbnQgPz8gdGhpcy50YWJsZXNEYXRhU291cmNlWzBdLmlkLCBbXV0sXHJcbiAgICAgICAgICAgIG9yZGVyTm86IFtvcmRlck5vID8/IDAsIFtWYWxpZGF0b3JzLm1pbigwKV1dLFxyXG4gICAgICAgICAgICBmaXJzdERlc2M6IFtmaXJzdERlc2MgPz8gbnVsbCwgW11dLFxyXG4gICAgICAgICAgICBsYXN0RGVzYzogW2xhc3REZXNjID8/IG51bGwsIFtdXSxcclxuICAgICAgICAgICAgbm90ZVF1ZXJ5OiBbbm90ZVF1ZXJ5ID8/IG51bGwsIFtdXSxcclxuICAgICAgICAgICAgbm90ZVF1ZXJ5SFRNTDogW25vdGVRdWVyeUhUTUwgPz8gbnVsbCwgW11dLFxyXG4gICAgICAgICAgICBmaXhEZXNjOiBbZml4RGVzYyA/PyBudWxsLCBbXV0sXHJcbiAgICAgICAgICAgIGlzQm9sZDogW2lzQm9sZCA/PyBmYWxzZSwgW11dLFxyXG4gICAgICAgICAgICBpc1Bhc3NpdmU6IFtpc1Bhc3NpdmUgPz8gZmFsc2UsIFtdXSxcclxuICAgICAgICAgICAgZGVzYzogW2Rlc2MgPz8gbnVsbCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUxMildXSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzLnJ1bGVUeXBlLnZhbHVlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc1F1ZXJ5YWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGF0aWMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5mb3JtLmNvbnRyb2xzLnJ1bGVUeXBlLnZhbHVlID09IDEpe1xyXG4gICAgICAgICAgICB0aGlzLmlzUXVlcnlhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGF0aWMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLmlzUXVlcnlhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGF0aWMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGhpZGVGb3JtKCkge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93Rm9ybSgpIHtcclxuICAgICAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByZXZpZXdRdWVyeSgpIHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5pc1F1ZXJ5YWJsZSAmJiAhaXNOdWxsT3JFbXB0eSh0aGlzLmZvcm0uY29udHJvbHMucnVsZU5hbWUudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGxldCBub3RlUnVsZVJlcSA9IHRoaXMuZm9ybS52YWx1ZSBhcyBOb3RlUnVsZUNyZWF0ZUR0b1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpZXdEYXRhU291cmNlID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1zRGF0YVNvdXJjZSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgbGV0IG5vdGVRdWVyeSA9IHRoaXMuc3RyaXBIVE1MKG5vdGVSdWxlUmVxLm5vdGVRdWVyeUhUTUwpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9scy5kZXNjVHlwZS52YWx1ZSA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrTGluZVF1ZXJ5KG5vdGVRdWVyeSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiU2XDp2lsaSBhw6fEsWtsYW1hIHTDvHLDvCBpw6dpbiBzb3JndSBpw6dlcmlzaW5kZSBCZWxnZURldGF5S2V5IGJ1bHVubWFrIHpvcnVuZGFkxLFyLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlTmFtZSA9IHRoaXMuY2hlY2tUYWJsZUFmdGVyRnJvbShub3RlUXVlcnkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0YWJsZU5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJTZcOnaWxpIHRhYmxvIGlsZSBzb3JndWRhIGJhxZ9sYW7EsWxhbiB0YWJsbyBheW7EsSBvbG1hbMSxLlwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IG5vdGVRdWVyeS5tYXRjaCgvKEJlbGdlS2V5fEJlbGdlRGV0YXlLZXkpL2cpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChwYXJhbXMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmFtc0RhdGFTb3VyY2UgPSBbXTtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zRGF0YVNvdXJjZS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lOiBlbGVtZW50LnJlcGxhY2UoXCI6XCIsIFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc051bGxPckVtcHR5KHRoaXMucGFyYW1zRGF0YVNvdXJjZSkgfHwgdGhpcy5wYXJhbXNEYXRhU291cmNlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oJ2VEb251c3VtOjpRdWVyeVByZXZpZXdJc1ByZXBhcmluZycpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzUGFyYW1ldGVybGVzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJ1blF1ZXJ5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzUGFyYW1ldGVybGVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuUHJldmlldyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oJ2VEb251c3VtOjpRdWVyeVByZXZpZXdPbmx5VXNpbmdCeVF1ZXJ5RGVzYycpXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBydWxlVHlwZUNoYW5nZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9scy5ydWxlVHlwZS52YWx1ZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNRdWVyeWFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RhdGljID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZm9ybS5jb250cm9scy5ydWxlVHlwZS52YWx1ZSA9PSAxKXtcclxuICAgICAgICAgICAgdGhpcy5pc1F1ZXJ5YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RhdGljID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5pc1F1ZXJ5YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RhdGljID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5ub3RlUXVlcnlIVE1MLnNldFZhbHVlKFwiXCIpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5ub3RlUXVlcnkuc2V0VmFsdWUoXCJcIik7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZpeERlc2Muc2V0VmFsdWUoXCJcIik7XHJcbiAgICB9XHJcblxyXG4gICAgZG9jdW1lbnRDaGFuZ2VkKCkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5ub3RlUXVlcnlIVE1MLnNldFZhbHVlKFwiXCIpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5ub3RlUXVlcnkuc2V0VmFsdWUoXCJcIik7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZpeERlc2Muc2V0VmFsdWUoXCJcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcnVuUXVlcnkoKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHBhcmFtVmFsdWVzID0gW107XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc1BhcmFtZXRlcmxlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKCdlRG9udXN1bTo6UXVlcnlQcmV2aWV3SXNQcmVwYXJpbmcnKVxyXG5cclxuICAgICAgICAgICAgdGhpcy5keFBhcmFtSW5zdGFuY2UuaW5zdGFuY2UuZ2V0VmlzaWJsZVJvd3MoKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1WYWx1ZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lOiBlbGVtZW50LmRhdGEucGFyYW1OYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWU6IGVsZW1lbnQuZGF0YS5wYXJhbVZhbHVlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBub3RlUnVsZVJlcSA9IHRoaXMuZm9ybS52YWx1ZSBhcyBOb3RlUnVsZUNyZWF0ZUR0b1xyXG5cclxuICAgICAgICBsZXQgcmVxdWVzdER0bzogUHJldmlld1F1ZXJ5UmVxdWVzdER0byA9IHtcclxuICAgICAgICAgICAgbm90ZVJ1bGU6IG5vdGVSdWxlUmVxLFxyXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiBwYXJhbVZhbHVlc1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5oaXROb3RlUnVsZVNlcnZpY2UucHJldmlld1F1ZXJ5UmVzdWx0KHJlcXVlc3REdG8pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpZXdEYXRhU291cmNlID0gcmVzdWx0LnZhbHVlXHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3RGF0YVNvdXJjZS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKCdlRG9udXN1bTo6UXVlcnlQcmV2aWV3SXNSZWFkeScpXHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybignZURvbnVzdW06OlF1ZXJ5UHJldmlld05vUmVzdWx0JylcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgICAgICAgdGhpcy5lbnRlclByZXNzZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdWJtaXRGb3JtKCkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKHRoaXMuZW50ZXJQcmVzc2VkKXtcclxuICAgICAgICAgICAgdGhpcy5lbnRlclByZXNzZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gXHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBsZXQgbm90ZVJ1bGVSZXEgPSB0aGlzLmZvcm0udmFsdWUgYXMgTm90ZVJ1bGVDcmVhdGVPclVwZGF0ZUR0b1xyXG4gICAgICAgIGxldCBub3RlUnVsZVNjZW5hcmlvc1JlcSA9IFtdO1xyXG4gICAgICAgIGxldCBub3RlUnVsZURvY1R5cGVzUmVxID0gW107XHJcblxyXG4gICAgICAgIHRoaXMuZHhTY2VuYXJpb0luc3RhbmNlLmluc3RhbmNlLmdldFZpc2libGVSb3dzKCkuZmlsdGVyKGkgPT4gaS5pc1NlbGVjdGVkID09IHRydWUpLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIG5vdGVSdWxlU2NlbmFyaW9zUmVxLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbm90ZVJ1bGVJZDogdGhpcy5zZWxlY3RlZD8uaWQsXHJcbiAgICAgICAgICAgICAgICBzY2VuYXJpbzogZWxlbWVudC5kYXRhLmlkXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5keERvY1R5cGVJbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpLmZpbHRlcihpID0+IGkuaXNTZWxlY3RlZCA9PSB0cnVlKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBub3RlUnVsZURvY1R5cGVzUmVxLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbm90ZVJ1bGVJZDogdGhpcy5zZWxlY3RlZD8uaWQsXHJcbiAgICAgICAgICAgICAgICBkb2NUeXBlOiBlbGVtZW50LmRhdGEuaWRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBub3RlUnVsZVJlcS5jb25jdXJyZW5jeVN0YW1wID0gdGhpcy5zZWxlY3RlZD8uY29uY3VycmVuY3lTdGFtcDtcclxuICAgICAgICBub3RlUnVsZVJlcS5pZCA9IHRoaXMuc2VsZWN0ZWQ/LmlkXHJcblxyXG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnNlbGVjdGVkXHJcbiAgICAgICAgICAgID8gdGhpcy5oaXROb3RlUnVsZVNlcnZpY2UudXBkYXRlKHRoaXMuc2VsZWN0ZWQuaWQsIHtcclxuICAgICAgICAgICAgICAgIG5vdGVSdWxlczogbm90ZVJ1bGVSZXEsXHJcbiAgICAgICAgICAgICAgICBub3RlUnVsZVNjZW5hcmlvczogbm90ZVJ1bGVTY2VuYXJpb3NSZXEsXHJcbiAgICAgICAgICAgICAgICBub3RlUnVsZURvY1R5cGVzOiBub3RlUnVsZURvY1R5cGVzUmVxXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIDogdGhpcy5oaXROb3RlUnVsZVNlcnZpY2UuY3JlYXRlKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vdGVSdWxlczogbm90ZVJ1bGVSZXEsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZVJ1bGVTY2VuYXJpb3M6IG5vdGVSdWxlU2NlbmFyaW9zUmVxLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGVSdWxlRG9jVHlwZXM6IG5vdGVSdWxlRG9jVHlwZXNSZXFcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmlzTW9kYWxCdXN5ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmVxdWVzdFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+ICh0aGlzLmlzTW9kYWxCdXN5ID0gZmFsc2UpKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmhpZGVGb3JtKCkpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmR4Tm90ZVJ1bGVJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZSgpIHtcclxuICAgICAgICB0aGlzLmlzVXBkYXRlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnByZXZpZXdEYXRhU291cmNlID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNjZW5hcmlvcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREb2NUeXBlcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUocmVjb3JkOiBOb3RlUnVsZUR0bykge1xyXG4gICAgICAgIHRoaXMuaXNVcGRhdGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSByZWNvcmQ7XHJcbiAgICAgICAgdGhpcy5wcmV2aWV3RGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgICAgIHRoaXMuaGl0Tm90ZVJ1bGVTY2VuYXJpb1NlcnZpY2UuZ2V0U2VsZWN0ZWRTY2VuYXJpb3ModGhpcy5zZWxlY3RlZC5pZCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkU2NlbmFyaW9zID0gbGlzdC5tYXAoaSA9PiBpLnNjZW5hcmlvKTtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmhpdE5vdGVSdWxlRG9jVHlwZVNlcnZpY2UuZ2V0U2VsZWN0ZWREb2NUeXBlcyh0aGlzLnNlbGVjdGVkLmlkKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREb2NUeXBlcyA9IGxpc3QubWFwKGkgPT4gaS5kb2NUeXBlKTtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLnNob3dGb3JtKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlKHJlY29yZDogTm90ZVJ1bGVEdG8pIHtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAgICAgICAud2FybignZURvbnVzdW06OkRlbGV0ZUNvbmZpcm1hdGlvbk1lc3NhZ2UnLCAnZURvbnVzdW06OkFyZVlvdVN1cmUnLCB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlTG9jYWxpemF0aW9uUGFyYW1zOiBbXSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIoc3RhdHVzID0+IHN0YXR1cyA9PT0gQ29uZmlybWF0aW9uLlN0YXR1cy5jb25maXJtKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmhpdE5vdGVSdWxlU2VydmljZS5kZWxldGUocmVjb3JkLmlkKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhOb3RlUnVsZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RyaXBIVE1MKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHN0cmlwcGVkSHRtbCA9IGlucHV0LnJlcGxhY2UoXCI8L3A+PHA+XCIsIFwiIFwiKTtcclxuICAgICAgICByZXR1cm4gc3RyaXBwZWRIdG1sLnJlcGxhY2UoL0AvZywgJycpLnJlcGxhY2UoLzwuKj8+L2csICcnKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja1RhYmxlQWZ0ZXJGcm9tKHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCByZWdleCA9IC9GUk9NXFxzKyhbQFxcd10rKS9pO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVGFibGVOYW1lID0gdGhpcy50YWJsZXNEYXRhU291cmNlLmZpbHRlcihpID0+IGkuaWQgPT0gdGhpcy5mb3JtLmNvbnRyb2xzLmRvY3VtZW50LnZhbHVlKVswXS50ZXh0XHJcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBxdWVyeS5tYXRjaChyZWdleCk7XHJcblxyXG4gICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaFsxXSkge1xyXG4gICAgICAgICAgICBjb25zdCB0YWJsZU5hbWUgPSBtYXRjaFsxXTtcclxuICAgICAgICAgICAgaWYgKHRhYmxlTmFtZSA9PT0gKFwiQFwiICsgc2VsZWN0ZWRUYWJsZU5hbWUpIHx8IHRhYmxlTmFtZSA9PT0gc2VsZWN0ZWRUYWJsZU5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0xpbmVRdWVyeShxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGlmIChxdWVyeS5pbmNsdWRlcyhcIkJlbGdlRGV0YXlLZXlcIikpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ2VEb251c3VtOjpOb3RlUnVsZXMnIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZy1lbmQgcHQtMlwiPlxyXG4gICAgICA8YnV0dG9uICphYnBQZXJtaXNzaW9uPVwiJ2VEb251c3VtLk5vdGVSdWxlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNyZWF0ZSgpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpOZXdOb3RlUnVsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeE5vdGVSdWxlSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwibm90ZVJ1bGVEYXRhU291cmNlXCIgW3N0YXRlU3RvcmluZ109XCJncmlkU3RhdGVcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDc1dmg7XCI+XHJcbiAgICAgICAgPGR4by1wYWdlciBbdmlzaWJsZV09XCJ0cnVlXCIgW3Nob3dJbmZvXT1cInRydWVcIiBbYWxsb3dlZFBhZ2VTaXplc109XCJbNTAsMTAwLDIwMF1cIiBbc2hvd05hdmlnYXRpb25CdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4by1wYWdlcj5cclxuICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiNTBcIj48L2R4by1wYWdpbmc+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tY2hvb3NlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFtlbmFibGVkXT1cInRydWVcIiBtb2RlPVwic2VsZWN0XCI+PC9keG8tY29sdW1uLWNob29zZXI+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZ3JvdXAtcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiIFthbGxvd0NvbHVtbkRyYWdnaW5nXT1cInRydWVcIj48L2R4by1ncm91cC1wYW5lbD5cclxuICAgICAgICA8ZHhvLWdyb3VwaW5nICNleHBhbmQgW2F1dG9FeHBhbmRBbGxdPVwiZmFsc2VcIiBbYWxsb3dDb2xsYXBzaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgW2NvbnRleHRNZW51RW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZ3JvdXBpbmc+XHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBbYWxsb3dFeHBvcnRTZWxlY3RlZERhdGFdPVwiZmFsc2VcIj48L2R4by1leHBvcnQ+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLWJ1aWxkZXIgW2FsbG93SGllcmFyY2hpY2FsRmllbGRzXT1cInRydWVcIj48L2R4by1maWx0ZXItYnVpbGRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1wYW5lbCBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXBhbmVsPlxyXG4gICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gW2ZpeGVkXT1cInRydWVcIiBkYXRhRmllbGQ9XCJpZFwiIHdpZHRoPVwiMTIwXCIgW2FsbG93R3JvdXBpbmddPVwiZmFsc2VcIiBbYWxsb3dGaWx0ZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCIgW2FsbG93SGlkaW5nXT1cImZhbHNlXCIgW2FsbG93UmVvcmRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiIGNhcHRpb249XCJ7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+XHJcbiAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnb3BlcmF0aW9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGUgW2Rpc2FibGVkXT1cImRpc2FibGVkSWRDb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1yLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwidXBkYXRlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImRlbGV0ZShyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicnVsZU5hbWVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlJ1bGVOYW1lJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJydWxlVHlwZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UnVsZVR5cGUnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJydWxlVHlwZXNEYXRhU291cmNlXCIgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCI+XHJcbiAgICAgICAgICA8L2R4by1sb29rdXA+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRlc2NUeXBlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEZXNjVHlwZSd8YWJwTG9jYWxpemF0aW9ufX1cIj5cclxuICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImRlc2NUeXBlc0RhdGFTb3VyY2VcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIj5cclxuICAgICAgICAgIDwvZHhvLWxvb2t1cD5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwib3JkZXJOb1wiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6T3JkZXJObyd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXNQYXNzaXZlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJc1Bhc3NpdmUnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeVwiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5cIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAoc2VsZWN0ZWQgPyAnQWJwVWk6OkVkaXQnIDogJ2VEb251c3VtOjpOZXdOb3RlUnVsZScpIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGlkPVwibm90ZS1ydWxlXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiIHZhbGlkYXRlT25TdWJtaXQ+XHJcbiAgICAgIDxkeC10YWItcGFuZWwgW2FuaW1hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiIFtzd2lwZUVuYWJsZWRdPVwidHJ1ZVwiIFtsb29wXT1cInRydWVcIiAjdGFiUGFuZWw+XHJcbiAgICAgICAgPGR4aS1pdGVtIHRpdGxlPVwie3sgJ2VEb251c3VtOjpRdWVyeUluZm8nIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgaWNvbj1cImZhcyBmYS1maWxlLWFsdFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBmYWRlLWluLXRvcFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6MjBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJub3RlLXJ1bGUtcnVsZS1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlJ1bGVOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwibm90ZS1ydWxlLXJ1bGUtbmFtZVwiIFtkaXNhYmxlZF09XCJpc1VwZGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInJ1bGVOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgYXV0b2ZvY3VzPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5vdGUtcnVsZS1vcmRlci1ub1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpPcmRlck5vJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgaWQ9XCJub3RlLXJ1bGUtb3JkZXItbm9cIiBmb3JtQ29udHJvbE5hbWU9XCJvcmRlck5vXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5vdGUtcnVsZS1ydWxlLXR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UnVsZVR5cGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJub3RlLXJ1bGUtcnVsZS10eXBlXCIgW2Rpc2FibGVkXT1cImlzVXBkYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwicnVsZVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cInJ1bGVUeXBlQ2hhbmdlZCgpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCIgdmFsdWVFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwicnVsZVR5cGVzRGF0YVNvdXJjZVwiIHBsYWNlaG9sZGVyPVwie3sgJ2VEb251c3VtOjpQaWNrJyB8IGFicExvY2FsaXphdGlvbiB9fS4uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJub3RlLXJ1bGUtZGVzYy10eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRlc2NUeXBlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJub3RlLXJ1bGUtZGVzYy10eXBlXCIgW2Rpc2FibGVkXT1cImlzVXBkYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY1R5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCIgdmFsdWVFeHByPVwiaWRcIiBbZGF0YVNvdXJjZV09XCJkZXNjVHlwZXNEYXRhU291cmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2VEb251c3VtOjpQaWNrJyB8IGFicExvY2FsaXphdGlvbiB9fS4uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwibm90ZS1ydWxlLXJ1bGUtdHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpEb2N1bWVudCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cIm5vdGUtcnVsZS1kb2N1bWVudFwiIFtkaXNhYmxlZF09XCJpc1VwZGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImRvY3VtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJkb2N1bWVudENoYW5nZWQoKVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZGlzcGxheUV4cHI9XCJ0ZXh0XCIgdmFsdWVFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwidGFibGVzRGF0YVNvdXJjZVwiIHBsYWNlaG9sZGVyPVwie3sgJ2VEb251c3VtOjpQaWNrJyB8IGFicExvY2FsaXphdGlvbiB9fS4uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJub3RlLXJ1bGUtZmlyc3QtZGVzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpGaXJzdERlc2MnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1hcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJub3RlLXJ1bGUtZmlyc3QtZGVzY1wiIFtoZWlnaHRdPVwiNzBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZmlyc3REZXNjXCIgbWF4bGVuZ3RoPVwiNDA5NlwiIHN0eWxlPVwicmVzaXplOiBub25lO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZHgtdGV4dC1hcmVhPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImlzUXVlcnlhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5vdGUtcnVsZS1ub3RlLXF1ZXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok5vdGVRdWVyeScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeC1odG1sLWVkaXRvciAjZHhIdG1sRWRpdG9yIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJub3RlLXJ1bGUtbm90ZS1xdWVyeS1odG1sXCIgW2hlaWdodF09XCIxMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNDA5NlwiIGZvcm1Db250cm9sTmFtZT1cIm5vdGVRdWVyeUhUTUxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkeGktbWVudGlvbiB2YWx1ZUV4cHI9XCJ0ZXh0XCIgZGlzcGxheUV4cHI9XCJ0ZXh0XCIgc2VhcmNoRXhwcj1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJodG1sTWVudGlvbkRhdGFTb3VyY2VcIj48L2R4aS1tZW50aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZHgtaHRtbC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiaXNTdGF0aWNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwibm90ZS1ydWxlLWZpeC1kZXNjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkZpeERlc2MnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYXJlYSBpZD1cIm5vdGUtcnVsZS1maXgtZGVzY1wiIGZvcm1Db250cm9sTmFtZT1cImZpeERlc2NcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjEwMFwiPjwvZHgtdGV4dC1hcmVhPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwibm90ZS1ydWxlLWxhc3QtZGVzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpMYXN0RGVzYycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1hcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJub3RlLXJ1bGUtbGFzdC1kZXNjXCIgW2hlaWdodF09XCI3MFwiIGZvcm1Db250cm9sTmFtZT1cImxhc3REZXNjXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjQwOTZcIiBzdHlsZT1cInJlc2l6ZTogbm9uZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4LXRleHQtYXJlYT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5vdGUtcnVsZS1kZXNjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRlc2MnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwibm90ZS1ydWxlLWRlc2NcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCI1MTJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cIm5vdGUtcnVsZS1pcy1ib2xkXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNCb2xkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm5vdGUtcnVsZS1pcy1ib2xkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OklzQm9sZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwibm90ZS1ydWxlLWlzLXBhc3NpdmVcIiBmb3JtQ29udHJvbE5hbWU9XCJpc1Bhc3NpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm5vdGUtcnVsZS1pcy1wYXNzaXZlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OklzUGFzc2l2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZHhpLWl0ZW0+XHJcbiAgICAgICAgPGR4aS1pdGVtIHRpdGxlPVwie3sgJ2VEb251c3VtOjpTY2VuYXJpb3MnIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgaWNvbj1cImZhcyBmYS1wZW5jaWwtYWx0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjIwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhTY2VuYXJpb0luc3RhbmNlIFtkYXRhU291cmNlXT1cInNjZW5hcmlvRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiIGtleUV4cHI9XCJpZFwiIFsoc2VsZWN0ZWRSb3dLZXlzKV09XCJzZWxlY3RlZFNjZW5hcmlvc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJtdWx0aXBsZVwiIHNlbGVjdEFsbE1vZGU9XCJwYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRpc3BsYXlOYW1lXCIgY2FwdGlvbj1cInt7ICdlRG9udXN1bTo6TmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktaXRlbT5cclxuICAgICAgICA8ZHhpLWl0ZW0gdGl0bGU9XCJ7eyAnZURvbnVzdW06OkRvY1R5cGVzJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIGljb249XCJmYXMgZmEtZW52ZWxvcGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZmFkZS1pbi10b3BcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOjIwcHg7IG1hcmdpbi1ib3R0b206MjBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeERvY1R5cGVJbnN0YW5jZSBbZGF0YVNvdXJjZV09XCJkb2NUeXBlRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiIGtleUV4cHI9XCJpZFwiIFsoc2VsZWN0ZWRSb3dLZXlzKV09XCJzZWxlY3RlZERvY1R5cGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4by1zZWxlY3Rpb24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGlzcGxheU5hbWVcIiBjYXB0aW9uPVwie3sgJ2VEb251c3VtOjpOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1pdGVtPlxyXG4gICAgICA8L2R4LXRhYi1wYW5lbD5cclxuXHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKm5nSWY9XCJpc1F1ZXJ5YWJsZVwiIChjbGljayk9XCJwcmV2aWV3UXVlcnkoKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlByZXZpZXdRdWVyeScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPCEtLSA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIGJ1dHRvblR5cGU9XCJzdWJtaXRcIiBmb3JtTmFtZT1cIm5vdGUtcnVsZVwiPlxyXG4gICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2FicC1idXR0b24+IC0tPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIGZvcm1OYW1lPVwibm90ZS1ydWxlXCIgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiPlxyXG4gICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNNb2RhbEJ1c3lQcmV2aWV3XCIgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlblByZXZpZXdcIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAoc2VsZWN0ZWQgPyAnQWJwVWk6OkVkaXQnIDogJ2VEb251c3VtOjpQcmV2aWV3UXVlcnknKSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8Zm9ybSBpZD1cIm5vdGUtcnVsZS1wcmV2aWV3XCI+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWlzUGFyYW1ldGVybGVzc1wiPlxyXG4gICAgICAgIDxoMz57eyAnZURvbnVzdW06OlBhcmFtZXRlcnMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9oMz5cclxuICAgICAgICA8aHI+XHJcbiAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhQYXJhbUluc3RhbmNlIFtkYXRhU291cmNlXT1cInBhcmFtc0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIiBzdHlsZT1cImhlaWdodDogNDB2aDtcIj5cclxuXHJcbiAgICAgICAgICA8ZHhvLWVkaXRpbmcgbW9kZT1cImNlbGxcIiBbdXNlSWNvbnNdPVwiZmFsc2VcIiBbYWxsb3dVcGRhdGluZ109XCJ0cnVlXCIgW2FsbG93QWRkaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2FsbG93RGVsZXRpbmddPVwiZmFsc2VcIj5cclxuICAgICAgICAgIDwvZHhvLWVkaXRpbmc+XHJcblxyXG4gICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG5cclxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhcmFtTmFtZVwiIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlBhcmFtTmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwYXJhbVZhbHVlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpQYXJhbVZhbHVlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICA8YnI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBzdHlsZT1cImZsb2F0OiByaWdodDtcIiAoY2xpY2spPVwicnVuUXVlcnkoKVwiPlxyXG4gICAgICAgICAge3sgJ2VEb251c3VtOjpSdW5RdWVyeScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnI+PGJyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxoMz57eyAnZURvbnVzdW06OlF1ZXJ5UmVzdWx0JyB8IGFicExvY2FsaXphdGlvbiB9fTwvaDM+XHJcbiAgICAgIDxocj5cclxuICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhQcmV2aWV3IFtkYXRhU291cmNlXT1cInByZXZpZXdEYXRhU291cmNlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxyXG4gICAgICAgIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA2MHZoO1wiPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuXHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcblxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuXHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG5cclxuICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcblxyXG4gICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuXHJcbiAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPiJdfQ==