@hitsoft/e-donusum 1.0.65 → 1.0.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/hit-auto-send-rules/hit-auto-send-rule.component.mjs +18 -3
- package/esm2020/lib/components/hit-document-serial/hit-document-serial.component.mjs +12 -5
- package/esm2020/lib/components/hit-failed-despatches/hit-failed-despatch.component.mjs +3 -3
- package/esm2020/lib/components/hit-xslt-rules/hit-xslt-rule.component.mjs +18 -3
- package/esm2020/lib/document-serials/document-serial/components/document-serial.component.mjs +5 -4
- package/esm2020/lib/proxy/document-serials/document-serial.service.mjs +2 -2
- package/esm2020/lib/proxy/document-serials/models.mjs +1 -1
- package/fesm2015/hitsoft-e-donusum.mjs +51 -13
- package/fesm2015/hitsoft-e-donusum.mjs.map +1 -1
- package/fesm2020/hitsoft-e-donusum.mjs +51 -13
- package/fesm2020/hitsoft-e-donusum.mjs.map +1 -1
- package/lib/components/hit-auto-send-rules/hit-auto-send-rule.component.d.ts +1 -0
- package/lib/components/hit-xslt-rules/hit-xslt-rule.component.d.ts +1 -0
- package/lib/proxy/document-serials/models.d.ts +4 -0
- package/package.json +1 -1
|
@@ -119,6 +119,13 @@ export class HitAutoSendRuleComponent {
|
|
|
119
119
|
let autoSendRuleReq = this.form.value;
|
|
120
120
|
let autoSendRuleScenariosReq = [];
|
|
121
121
|
let autoSendRuleDocTypesReq = [];
|
|
122
|
+
if (!isNullOrEmpty(autoSendRuleReq.noteQueryHTML)) {
|
|
123
|
+
const countExist = this.checkCountContains(autoSendRuleReq.noteQueryHTML);
|
|
124
|
+
if (!countExist) {
|
|
125
|
+
this.toasterService.error("Otomatik işlem kural tanımlarında count kullanımı zorunludur.");
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
122
129
|
this.dxScenarioInstance.instance.getVisibleRows().filter(i => i.isSelected == true).forEach(element => {
|
|
123
130
|
autoSendRuleScenariosReq.push({
|
|
124
131
|
autoSendRuleId: this.selected?.id,
|
|
@@ -207,6 +214,11 @@ export class HitAutoSendRuleComponent {
|
|
|
207
214
|
this.toasterService.error("Seçili tablo ile sorguda başlanılan tablo aynı olmalı.");
|
|
208
215
|
return;
|
|
209
216
|
}
|
|
217
|
+
const countExist = this.checkCountContains(noteQuery);
|
|
218
|
+
if (!countExist) {
|
|
219
|
+
this.toasterService.error("Otomatik işlem kural tanımlarında count kullanımı zorunludur.");
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
210
222
|
let params = noteQuery.match(/(BelgeKey|BelgeDetayKey|MuhatapKey|MuhatapGrupKey)/g);
|
|
211
223
|
if (!isNullOrUndefined(params)) {
|
|
212
224
|
this.paramsDataSource = [];
|
|
@@ -272,12 +284,15 @@ export class HitAutoSendRuleComponent {
|
|
|
272
284
|
}
|
|
273
285
|
return false;
|
|
274
286
|
}
|
|
287
|
+
checkCountContains(query) {
|
|
288
|
+
return /count\s*\(/i.test(query);
|
|
289
|
+
}
|
|
275
290
|
}
|
|
276
291
|
HitAutoSendRuleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitAutoSendRuleComponent, deps: [{ token: i1.ListService }, { token: i1.TrackByService }, { token: i2.HitAutoSendRulesService }, { token: i3.ConfirmationService }, { token: i3.ToasterService }, { token: i4.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: i5.HitNoteRulesService }, { token: i6.HitDocumentSerialService }, { token: i7.HitAutoSendRuleDocTypesService }, { token: i8.HitAutoSendRuleScenariosService }], target: i0.ɵɵFactoryTarget.Component });
|
|
277
|
-
HitAutoSendRuleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitAutoSendRuleComponent, selector: "lib-auto-send-rule", host: { listeners: { "document:keydown": "handleKeyDown($event)" } }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], viewQueries: [{ propertyName: "dxAutoSendRuleInstance", first: true, predicate: ["dxAutoSendRuleInstance"], descendants: true }, { propertyName: "dxScenarioInstance", first: true, predicate: ["dxScenarioInstance"], descendants: true }, { propertyName: "dxDocTypeInstance", first: true, predicate: ["dxDocTypeInstance"], descendants: true }, { propertyName: "dxParamInstance", first: true, predicate: ["dxParamInstance"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'eDonusum::AutoSendRules' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <button *abpPermission=\"'eDonusum.AutoSendRules.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::NewAutoSendRule' | 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 #dxAutoSendRuleInstance [dataSource]=\"autoSendRuleDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\"\r\n [columnHidingEnabled]=\"true\" 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 }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"autoSendRule.ruleName\" caption=\"{{'eDonusum::RuleName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.orderNo\" caption=\"{{'eDonusum::OrderNo'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.documentSerialId\"\r\n caption=\"{{'eDonusum::DocumentSerial'|abpLocalization}}\"><dxo-lookup [dataSource]=\"serialCodesForLookup\"\r\n valueExpr=\"id\" displayExpr=\"code\">\r\n </dxo-lookup></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.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::NewAutoSendRule') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"auto-send-rule\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <dx-tab-panel [animationEnabled]=\"true\" [swipeEnabled]=\"true\" [loop]=\"true\" #tabPanel>\r\n <dxi-item title=\"{{ 'eDonusum::RuleInfo' | 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=\"auto-send-rule-rule-name\">\r\n {{ 'eDonusum::RuleName' | abpLocalization }} *\r\n </label>\r\n\r\n <dx-text-box id=\"auto-send-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=\"auto-send-rule-order-no\">\r\n {{ 'eDonusum::OrderNo' | abpLocalization }}\r\n </label>\r\n\r\n <input type=\"number\" [min]=\"0\" id=\"auto-send-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=\"auto-send-rule-order-no\">\r\n {{ 'eDonusum::AutoSendRuleType' | abpLocalization }}\r\n </label>\r\n <dx-select-box id=\"auto-send-rule-serial-type\" formControlName=\"serialType\"\r\n (onValueChanged)=\"serialTypeChanged()\" class=\"form-control\" displayExpr=\"displayName\"\r\n valueExpr=\"id\" [dataSource]=\"autoSendTypesDataSource\" [value]=\"autoSendTypesDataSource[0].id\"\r\n 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=\"xslt-rule-xslt-format\">\r\n {{ 'eDonusum::DocumentSerial' | abpLocalization }}\r\n </label>\r\n\r\n <dx-drop-down-box [(value)]=\"documentSerialGridBoxValue\" [(opened)]=\"isDocumentSerialGridBoxOpened\"\r\n valueExpr=\"id\" [deferRendering]=\"false\" [displayExpr]=\"documentSerialGridBox_displayExpr\"\r\n placeholder=\"{{ 'eDonusum::SelectAValue' | abpLocalization }}\" [showClearButton]=\"false\"\r\n [dataSource]=\"serialCodes\" formControlName=\"documentSerialId\"\r\n (onOptionChanged)=\"onDocumentSerialGridBoxOptionChanged($event)\">\r\n <dx-data-grid [dataSource]=\"serialCodes\" [hoverStateEnabled]=\"true\" [height]=\"250\"\r\n [(selectedRowKeys)]=\"documentSerialGridBoxValue\" [remoteOperations]=\"true\">\r\n <dxi-column dataField=\"code\" caption=\"Code\"></dxi-column>\r\n <dxi-column dataField=\"name\" caption=\"Name\"></dxi-column>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-scrolling mode=\"infinite\"></dxo-scrolling>\r\n <dxo-paging [enabled]=\"true\" [pageSize]=\"10\"></dxo-paging>\r\n </dx-data-grid>\r\n </dx-drop-down-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=\"xslt-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 <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::AutoSendSelection' | abpLocalization }}\r\n </label>\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"auto-send-rule-is-auto-send\" formControlName=\"isAutoSend\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"auto-send-rule-is-auto-send\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsAutoSend' | abpLocalization }}\r\n </label>\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=\"xslt-rule-note-query\">\r\n {{ 'eDonusum::RuleQuery' | abpLocalization }}\r\n </label>\r\n <dx-html-editor #dxHtmlEditor class=\"form-control\" id=\"auto-send-rule-note-query-html\"\r\n [height]=\"100\" 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\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"auto-send-rule-desc\">\r\n {{ 'eDonusum::Desc' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"auto-send-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=\"auto-send-rule-is-passive\" formControlName=\"isPassive\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"auto-send-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\" (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=\"xslt-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: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.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: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i3.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.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: "component", type: i12.DxDropDownBoxComponent, selector: "dx-drop-down-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "contentTemplate", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValueFormatter", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "label", "labelMode", "maxLength", "name", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showDropDownButton", "stylingMode", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width"], outputs: ["onChange", "onClosed", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "contentTemplateChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueFormatterChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "labelChange", "labelModeChange", "maxLengthChange", "nameChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showDropDownButtonChange", "stylingModeChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
292
|
+
HitAutoSendRuleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitAutoSendRuleComponent, selector: "lib-auto-send-rule", host: { listeners: { "document:keydown": "handleKeyDown($event)" } }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], viewQueries: [{ propertyName: "dxAutoSendRuleInstance", first: true, predicate: ["dxAutoSendRuleInstance"], descendants: true }, { propertyName: "dxScenarioInstance", first: true, predicate: ["dxScenarioInstance"], descendants: true }, { propertyName: "dxDocTypeInstance", first: true, predicate: ["dxDocTypeInstance"], descendants: true }, { propertyName: "dxParamInstance", first: true, predicate: ["dxParamInstance"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'eDonusum::AutoSendRules' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <button *abpPermission=\"'eDonusum.AutoSendRules.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::NewAutoSendRule' | 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 #dxAutoSendRuleInstance [dataSource]=\"autoSendRuleDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\"\r\n [columnHidingEnabled]=\"true\" 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 }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"autoSendRule.ruleName\" caption=\"{{'eDonusum::RuleName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.orderNo\" caption=\"{{'eDonusum::OrderNo'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.documentSerialId\"\r\n caption=\"{{'eDonusum::DocumentSerial'|abpLocalization}}\"><dxo-lookup [dataSource]=\"serialCodesForLookup\"\r\n valueExpr=\"id\" displayExpr=\"code\">\r\n </dxo-lookup></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.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::NewAutoSendRule') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"auto-send-rule\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <dx-tab-panel [animationEnabled]=\"true\" [swipeEnabled]=\"true\" [loop]=\"true\" #tabPanel>\r\n <dxi-item title=\"{{ 'eDonusum::RuleInfo' | 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=\"auto-send-rule-rule-name\">\r\n {{ 'eDonusum::RuleName' | abpLocalization }} *\r\n </label>\r\n\r\n <dx-text-box id=\"auto-send-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=\"auto-send-rule-order-no\">\r\n {{ 'eDonusum::OrderNo' | abpLocalization }}\r\n </label>\r\n\r\n <input type=\"number\" [min]=\"0\" id=\"auto-send-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=\"auto-send-rule-order-no\">\r\n {{ 'eDonusum::AutoSendRuleType' | abpLocalization }}\r\n </label>\r\n <dx-select-box id=\"auto-send-rule-serial-type\" formControlName=\"serialType\"\r\n (onValueChanged)=\"serialTypeChanged()\" class=\"form-control\" displayExpr=\"displayName\"\r\n valueExpr=\"id\" [dataSource]=\"autoSendTypesDataSource\" [value]=\"autoSendTypesDataSource[0].id\"\r\n 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=\"xslt-rule-xslt-format\">\r\n {{ 'eDonusum::DocumentSerial' | abpLocalization }}\r\n </label>\r\n\r\n <dx-drop-down-box [(value)]=\"documentSerialGridBoxValue\" [(opened)]=\"isDocumentSerialGridBoxOpened\"\r\n valueExpr=\"id\" [deferRendering]=\"false\" [displayExpr]=\"documentSerialGridBox_displayExpr\"\r\n placeholder=\"{{ 'eDonusum::SelectAValue' | abpLocalization }}\" [showClearButton]=\"false\"\r\n [dataSource]=\"serialCodes\" formControlName=\"documentSerialId\"\r\n (onOptionChanged)=\"onDocumentSerialGridBoxOptionChanged($event)\">\r\n <dx-data-grid [dataSource]=\"serialCodes\" [hoverStateEnabled]=\"true\" [height]=\"250\"\r\n [(selectedRowKeys)]=\"documentSerialGridBoxValue\" [remoteOperations]=\"true\">\r\n <dxi-column dataField=\"code\" caption=\"Code\"></dxi-column>\r\n <dxi-column dataField=\"name\" caption=\"Name\"></dxi-column>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-scrolling mode=\"infinite\"></dxo-scrolling>\r\n <dxo-paging [enabled]=\"true\" [pageSize]=\"10\"></dxo-paging>\r\n </dx-data-grid>\r\n </dx-drop-down-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=\"xslt-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 <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::AutoSendSelection' | abpLocalization }}\r\n </label>\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"auto-send-rule-is-auto-send\" formControlName=\"isAutoSend\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"auto-send-rule-is-auto-send\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsAutoSend' | abpLocalization }}\r\n </label>\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=\"xslt-rule-note-query\">\r\n {{ 'eDonusum::RuleQuery' | abpLocalization }}\r\n </label>\r\n <dx-html-editor #dxHtmlEditor class=\"form-control\" id=\"auto-send-rule-note-query-html\"\r\n [height]=\"100\" 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\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"auto-send-rule-desc\">\r\n {{ 'eDonusum::Desc' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"auto-send-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=\"auto-send-rule-is-passive\" formControlName=\"isPassive\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"auto-send-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 class=\"row\">\r\n <h4>Otomatik i\u015Flem kural sorgular\u0131nda COUNT kullan\u0131m\u0131 zorunludur.</h4>\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\" (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=\"xslt-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: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.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: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i3.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.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: "component", type: i12.DxDropDownBoxComponent, selector: "dx-drop-down-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "contentTemplate", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValueFormatter", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "label", "labelMode", "maxLength", "name", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showDropDownButton", "stylingMode", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width"], outputs: ["onChange", "onClosed", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "contentTemplateChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueFormatterChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "labelChange", "labelModeChange", "maxLengthChange", "nameChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showDropDownButtonChange", "stylingModeChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
278
293
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitAutoSendRuleComponent, decorators: [{
|
|
279
294
|
type: Component,
|
|
280
|
-
args: [{ selector: 'lib-auto-send-rule', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<abp-page [title]=\"'eDonusum::AutoSendRules' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <button *abpPermission=\"'eDonusum.AutoSendRules.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::NewAutoSendRule' | 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 #dxAutoSendRuleInstance [dataSource]=\"autoSendRuleDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\"\r\n [columnHidingEnabled]=\"true\" 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 }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"autoSendRule.ruleName\" caption=\"{{'eDonusum::RuleName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.orderNo\" caption=\"{{'eDonusum::OrderNo'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.documentSerialId\"\r\n caption=\"{{'eDonusum::DocumentSerial'|abpLocalization}}\"><dxo-lookup [dataSource]=\"serialCodesForLookup\"\r\n valueExpr=\"id\" displayExpr=\"code\">\r\n </dxo-lookup></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.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::NewAutoSendRule') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"auto-send-rule\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <dx-tab-panel [animationEnabled]=\"true\" [swipeEnabled]=\"true\" [loop]=\"true\" #tabPanel>\r\n <dxi-item title=\"{{ 'eDonusum::RuleInfo' | 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=\"auto-send-rule-rule-name\">\r\n {{ 'eDonusum::RuleName' | abpLocalization }} *\r\n </label>\r\n\r\n <dx-text-box id=\"auto-send-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=\"auto-send-rule-order-no\">\r\n {{ 'eDonusum::OrderNo' | abpLocalization }}\r\n </label>\r\n\r\n <input type=\"number\" [min]=\"0\" id=\"auto-send-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=\"auto-send-rule-order-no\">\r\n {{ 'eDonusum::AutoSendRuleType' | abpLocalization }}\r\n </label>\r\n <dx-select-box id=\"auto-send-rule-serial-type\" formControlName=\"serialType\"\r\n (onValueChanged)=\"serialTypeChanged()\" class=\"form-control\" displayExpr=\"displayName\"\r\n valueExpr=\"id\" [dataSource]=\"autoSendTypesDataSource\" [value]=\"autoSendTypesDataSource[0].id\"\r\n 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=\"xslt-rule-xslt-format\">\r\n {{ 'eDonusum::DocumentSerial' | abpLocalization }}\r\n </label>\r\n\r\n <dx-drop-down-box [(value)]=\"documentSerialGridBoxValue\" [(opened)]=\"isDocumentSerialGridBoxOpened\"\r\n valueExpr=\"id\" [deferRendering]=\"false\" [displayExpr]=\"documentSerialGridBox_displayExpr\"\r\n placeholder=\"{{ 'eDonusum::SelectAValue' | abpLocalization }}\" [showClearButton]=\"false\"\r\n [dataSource]=\"serialCodes\" formControlName=\"documentSerialId\"\r\n (onOptionChanged)=\"onDocumentSerialGridBoxOptionChanged($event)\">\r\n <dx-data-grid [dataSource]=\"serialCodes\" [hoverStateEnabled]=\"true\" [height]=\"250\"\r\n [(selectedRowKeys)]=\"documentSerialGridBoxValue\" [remoteOperations]=\"true\">\r\n <dxi-column dataField=\"code\" caption=\"Code\"></dxi-column>\r\n <dxi-column dataField=\"name\" caption=\"Name\"></dxi-column>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-scrolling mode=\"infinite\"></dxo-scrolling>\r\n <dxo-paging [enabled]=\"true\" [pageSize]=\"10\"></dxo-paging>\r\n </dx-data-grid>\r\n </dx-drop-down-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=\"xslt-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 <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::AutoSendSelection' | abpLocalization }}\r\n </label>\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"auto-send-rule-is-auto-send\" formControlName=\"isAutoSend\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"auto-send-rule-is-auto-send\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsAutoSend' | abpLocalization }}\r\n </label>\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=\"xslt-rule-note-query\">\r\n {{ 'eDonusum::RuleQuery' | abpLocalization }}\r\n </label>\r\n <dx-html-editor #dxHtmlEditor class=\"form-control\" id=\"auto-send-rule-note-query-html\"\r\n [height]=\"100\" 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\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"auto-send-rule-desc\">\r\n {{ 'eDonusum::Desc' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"auto-send-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=\"auto-send-rule-is-passive\" formControlName=\"isPassive\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"auto-send-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\" (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=\"xslt-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>" }]
|
|
295
|
+
args: [{ selector: 'lib-auto-send-rule', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<abp-page [title]=\"'eDonusum::AutoSendRules' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"text-lg-end pt-2\">\r\n <button *abpPermission=\"'eDonusum.AutoSendRules.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::NewAutoSendRule' | 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 #dxAutoSendRuleInstance [dataSource]=\"autoSendRuleDataSource\" [showRowLines]=\"true\"\r\n [showBorders]=\"true\" [remoteOperations]=\"true\" [hoverStateEnabled]=\"true\" [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\" columnResizingMode=\"widget\" [allowColumnReordering]=\"true\" [columnAutoWidth]=\"true\"\r\n [columnHidingEnabled]=\"true\" 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 }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n <dxi-column dataField=\"autoSendRule.ruleName\" caption=\"{{'eDonusum::RuleName'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.orderNo\" caption=\"{{'eDonusum::OrderNo'|abpLocalization}}\"></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.documentSerialId\"\r\n caption=\"{{'eDonusum::DocumentSerial'|abpLocalization}}\"><dxo-lookup [dataSource]=\"serialCodesForLookup\"\r\n valueExpr=\"id\" displayExpr=\"code\">\r\n </dxo-lookup></dxi-column>\r\n <dxi-column dataField=\"autoSendRule.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::NewAutoSendRule') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" id=\"auto-send-rule\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <dx-tab-panel [animationEnabled]=\"true\" [swipeEnabled]=\"true\" [loop]=\"true\" #tabPanel>\r\n <dxi-item title=\"{{ 'eDonusum::RuleInfo' | 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=\"auto-send-rule-rule-name\">\r\n {{ 'eDonusum::RuleName' | abpLocalization }} *\r\n </label>\r\n\r\n <dx-text-box id=\"auto-send-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=\"auto-send-rule-order-no\">\r\n {{ 'eDonusum::OrderNo' | abpLocalization }}\r\n </label>\r\n\r\n <input type=\"number\" [min]=\"0\" id=\"auto-send-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=\"auto-send-rule-order-no\">\r\n {{ 'eDonusum::AutoSendRuleType' | abpLocalization }}\r\n </label>\r\n <dx-select-box id=\"auto-send-rule-serial-type\" formControlName=\"serialType\"\r\n (onValueChanged)=\"serialTypeChanged()\" class=\"form-control\" displayExpr=\"displayName\"\r\n valueExpr=\"id\" [dataSource]=\"autoSendTypesDataSource\" [value]=\"autoSendTypesDataSource[0].id\"\r\n 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=\"xslt-rule-xslt-format\">\r\n {{ 'eDonusum::DocumentSerial' | abpLocalization }}\r\n </label>\r\n\r\n <dx-drop-down-box [(value)]=\"documentSerialGridBoxValue\" [(opened)]=\"isDocumentSerialGridBoxOpened\"\r\n valueExpr=\"id\" [deferRendering]=\"false\" [displayExpr]=\"documentSerialGridBox_displayExpr\"\r\n placeholder=\"{{ 'eDonusum::SelectAValue' | abpLocalization }}\" [showClearButton]=\"false\"\r\n [dataSource]=\"serialCodes\" formControlName=\"documentSerialId\"\r\n (onOptionChanged)=\"onDocumentSerialGridBoxOptionChanged($event)\">\r\n <dx-data-grid [dataSource]=\"serialCodes\" [hoverStateEnabled]=\"true\" [height]=\"250\"\r\n [(selectedRowKeys)]=\"documentSerialGridBoxValue\" [remoteOperations]=\"true\">\r\n <dxi-column dataField=\"code\" caption=\"Code\"></dxi-column>\r\n <dxi-column dataField=\"name\" caption=\"Name\"></dxi-column>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-scrolling mode=\"infinite\"></dxo-scrolling>\r\n <dxo-paging [enabled]=\"true\" [pageSize]=\"10\"></dxo-paging>\r\n </dx-data-grid>\r\n </dx-drop-down-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=\"xslt-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 <label class=\"form-label\" for=\"note-rule-rule-type\">\r\n {{ 'eDonusum::AutoSendSelection' | abpLocalization }}\r\n </label>\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"auto-send-rule-is-auto-send\" formControlName=\"isAutoSend\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"auto-send-rule-is-auto-send\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsAutoSend' | abpLocalization }}\r\n </label>\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=\"xslt-rule-note-query\">\r\n {{ 'eDonusum::RuleQuery' | abpLocalization }}\r\n </label>\r\n <dx-html-editor #dxHtmlEditor class=\"form-control\" id=\"auto-send-rule-note-query-html\"\r\n [height]=\"100\" 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\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"auto-send-rule-desc\">\r\n {{ 'eDonusum::Desc' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"auto-send-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=\"auto-send-rule-is-passive\" formControlName=\"isPassive\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"auto-send-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 class=\"row\">\r\n <h4>Otomatik i\u015Flem kural sorgular\u0131nda COUNT kullan\u0131m\u0131 zorunludur.</h4>\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\" (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=\"xslt-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>" }]
|
|
281
296
|
}], ctorParameters: function () { return [{ type: i1.ListService }, { type: i1.TrackByService }, { type: i2.HitAutoSendRulesService }, { type: i3.ConfirmationService }, { type: i3.ToasterService }, { type: i4.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: i5.HitNoteRulesService }, { type: i6.HitDocumentSerialService }, { type: i7.HitAutoSendRuleDocTypesService }, { type: i8.HitAutoSendRuleScenariosService }]; }, propDecorators: { dxAutoSendRuleInstance: [{
|
|
282
297
|
type: ViewChild,
|
|
283
298
|
args: ['dxAutoSendRuleInstance', { static: false }]
|
|
@@ -294,4 +309,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
294
309
|
type: HostListener,
|
|
295
310
|
args: ['document:keydown', ['$event']]
|
|
296
311
|
}] } });
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWF1dG8tc2VuZC1ydWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWF1dG8tc2VuZC1ydWxlcy9oaXQtYXV0by1zZW5kLXJ1bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtYXV0by1zZW5kLXJ1bGVzL2hpdC1hdXRvLXNlbmQtcnVsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQU8sYUFBYSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBa0MsTUFBTSxjQUFjLENBQUM7QUFDbEgsT0FBTyxFQUFFLFlBQVksRUFBdUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUE2QixNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQm5GLE1BQU0sT0FBTyx3QkFBd0I7SUFtQ2pDLFlBQ29CLElBQWlCLEVBQ2pCLEtBQXFCLEVBQ3JCLE9BQWdDLEVBQ3hDLFlBQWlDLEVBQ3hCLGNBQThCLEVBQ3ZDLEVBQWUsRUFDZixHQUFzQixFQUNiLGdCQUFxQyxFQUNyQyxxQkFBK0MsRUFDL0MsMkJBQTJELEVBQzNELDRCQUE2RDtRQVY5RCxTQUFJ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LFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXdUL0MsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQLCBpc051bGxPckVtcHR5LCBpc051bGxPclVuZGVmaW5lZCwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvLCBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBYc2x0Rm9ybWF0RHRvLCBYc2x0Rm9ybWF0U2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3h5L3hzbHQtZm9ybWF0cyc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQsIER4SHRtbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcbmltcG9ydCB7IGZpbmFsaXplLCB0YXAsIGZpbHRlciwgc3dpdGNoTWFwLCBSZXBsYXlTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEhpdFhzbHRGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC14c2x0LWZvcm1hdHMvaGl0LXhzbHQtZm9ybWF0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250ZW50TWFzdGVySW5wdXREdG8gfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWNvbnRlbnQtbWFzdGVyL21vZGVscyc7XHJcbmltcG9ydCB7IE5vdGVSdWxlQ3JlYXRlRHRvIH0gZnJvbSAnLi4vLi4vcHJveHkvbm90ZS1ydWxlcyc7XHJcbmltcG9ydCB7IEhpdFNjZW5hcmlvVHlwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1zY2VuYXJpby10eXBlcy9oaXQtc2NlbmFyaW8tdHlwZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0RG9jdW1lbnRUeXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWRvY3VtZW50LXR5cGVzL2hpdC1kb2N1bWVudC10eXBlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXROb3RlUnVsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1ub3RlLXJ1bGVzL2hpdC1ub3RlLXJ1bGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dG9TZW5kUnVsZUNyZWF0ZUR0bywgQXV0b1NlbmRSdWxlRHRvLCBBdXRvU2VuZFJ1bGVXaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8gfSBmcm9tICcuLi8uLi9wcm94eS9hdXRvLXNlbmQtcnVsZXMnO1xyXG5pbXBvcnQgeyBIaXRBdXRvU2VuZFJ1bGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtYXV0by1zZW5kLXJ1bGVzL2hpdC1hdXRvLXNlbmQtcnVsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0QXV0b1NlbmRSdWxlRG9jVHlwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1hdXRvLXNlbmQtcnVsZS1kb2MtdHlwZXMvaGl0LWF1dG8tc2VuZC1ydWxlLWRvYy10eXBlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRBdXRvU2VuZFJ1bGVTY2VuYXJpb3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1hdXRvLXNlbmQtcnVsZS1zY2VuYXJpb3MvaGl0LWF1dG8tc2VuZC1ydWxlLXNjZW5hcmlvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRvU2VuZFJ1bGVDcmVhdGVPclVwZGF0ZUR0bywgUHJldmlld0F1dG9TZW5kUnVsZVJlcXVlc3REdG8gfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWF1dG8tc2VuZC1ydWxlcy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBIaXREb2N1bWVudFNlcmlhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWRvY3VtZW50LXNlcmlhbHMvaGl0LWRvY3VtZW50LXNlcmlhbC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItYXV0by1zZW5kLXJ1bGUnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gICAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9oaXQtYXV0by1zZW5kLXJ1bGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVzOiBbXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBIaXRBdXRvU2VuZFJ1bGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnZHhBdXRvU2VuZFJ1bGVJbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeEF1dG9TZW5kUnVsZUluc3RhbmNlOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeFNjZW5hcmlvSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhTY2VuYXJpb0luc3RhbmNlOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeERvY1R5cGVJbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeERvY1R5cGVJbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudFxyXG4gICAgQFZpZXdDaGlsZCgnZHhQYXJhbUluc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4UGFyYW1JbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudFxyXG5cclxuICAgIGF1dG9TZW5kUnVsZURhdGFTb3VyY2U6IGFueVxyXG4gICAgZG9jVHlwZURhdGFTb3VyY2U6IGFueVxyXG4gICAgc2NlbmFyaW9EYXRhU291cmNlOiBhbnlcclxuXHJcbiAgICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBlbnRlclByZXNzZWQgPSBmYWxzZTtcclxuXHJcbiAgICBpc01vZGFsQnVzeSA9IGZhbHNlO1xyXG4gICAgaXNNb2RhbE9wZW4gPSBmYWxzZTtcclxuXHJcbiAgICBodG1sTWVudGlvbkRhdGFTb3VyY2UgPSBbXTtcclxuICAgIHRhYmxlc0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGF1dG9TZW5kVHlwZXNEYXRhU291cmNlID0gW107XHJcblxyXG4gICAgZG9jdW1lbnRTZXJpYWxHcmlkQm94VmFsdWU6IGFueTtcclxuICAgIGlzRG9jdW1lbnRTZXJpYWxHcmlkQm94T3BlbmVkOiBib29sZWFuO1xyXG4gICAgc2VyaWFsQ29kZXM6IGFueTtcclxuICAgIHNlcmlhbENvZGVzRm9yTG9va3VwOiBhbnk7XHJcblxyXG4gICAgc2VsZWN0ZWQ/OiBBdXRvU2VuZFJ1bGVEdG87XHJcbiAgICBzZWxlY3RlZERvY1R5cGVzID0gW11cclxuICAgIHNlbGVjdGVkU2NlbmFyaW9zID0gW11cclxuXHJcbiAgICBwcmV2aWV3RGF0YVNvdXJjZTogW10gPSBbXTtcclxuICAgIHBhcmFtc0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGlzUGFyYW1ldGVybGVzcyA9IGZhbHNlO1xyXG4gICAgaXNNb2RhbEJ1c3lQcmV2aWV3ID0gZmFsc2U7XHJcbiAgICBpc01vZGFsT3BlblByZXZpZXcgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogSGl0QXV0b1NlbmRSdWxlc1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbm90ZVJ1bGVzU2VydmljZTogSGl0Tm90ZVJ1bGVzU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VyaWFsU2VydmljZTogSGl0RG9jdW1lbnRTZXJpYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0b1NlbmRSdWxlRG9jVHlwZXNTZXJ2aWNlOiBIaXRBdXRvU2VuZFJ1bGVEb2NUeXBlc1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRvU2VuZFJ1bGVTY2VuYXJpb3NTZXJ2aWNlOiBIaXRBdXRvU2VuZFJ1bGVTY2VuYXJpb3NTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLmRvY3VtZW50U2VyaWFsR3JpZEJveF9kaXNwbGF5RXhwciA9IHRoaXMuZG9jdW1lbnRTZXJpYWxHcmlkQm94X2Rpc3BsYXlFeHByLmJpbmQodGhpcylcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLmF1dG9TZW5kUnVsZURhdGFTb3VyY2UgPSB0aGlzLnNlcnZpY2UuTG9hZEF1dG9TZW5kUnVsZXM7XHJcbiAgICAgICAgdGhpcy5zY2VuYXJpb0RhdGFTb3VyY2UgPSB0aGlzLnNlcnZpY2UuTG9hZFNjZW5hcmlvcztcclxuICAgICAgICB0aGlzLmRvY1R5cGVEYXRhU291cmNlID0gdGhpcy5zZXJ2aWNlLkxvYWREb2NUeXBlcztcclxuICAgICAgICB0aGlzLnNlcmlhbENvZGVzID0gdGhpcy5kb2N1bWVudFNlcmlhbFNlcnZpY2UuTG9hZERvY3VtZW50U2VyaWFsc0J5VHlwZSgwKTtcclxuICAgICAgICB0aGlzLnNlcmlhbENvZGVzRm9yTG9va3VwID0gdGhpcy5kb2N1bWVudFNlcmlhbFNlcnZpY2UuTG9hZERvY3VtZW50U2VyaWFscztcclxuICAgICAgICB0aGlzLm5vdGVSdWxlc1NlcnZpY2UuZ2V0VGFibGVOYW1lcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZXNEYXRhU291cmNlLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGVsZW1lbnQuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGVsZW1lbnQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogXCIvYXNzZXRzL2ltYWdlcy90YWJsZS1pY29uLnBuZ1wiXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5odG1sTWVudGlvbkRhdGFTb3VyY2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogZWxlbWVudC5kaXNwbGF5TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5pZCxcclxuICAgICAgICAgICAgICAgICAgICBpY29uOiBcIi9hc3NldHMvaW1hZ2VzL3RhYmxlLWljb24ucG5nXCJcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFBhcmFtTmFtZXMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIGxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaHRtbE1lbnRpb25EYXRhU291cmNlLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGVsZW1lbnQuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGVsZW1lbnQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogXCIvYXNzZXRzL2ltYWdlcy9rZXktaWNvbi5wbmdcIlxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRUeXBlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hdXRvU2VuZFR5cGVzRGF0YVNvdXJjZSA9IGxpc3Q7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRGb3JtKCkge1xyXG4gICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgICAgcnVsZU5hbWUsXHJcbiAgICAgICAgICAgIHNlcmlhbFR5cGUsXHJcbiAgICAgICAgICAgIGRvY3VtZW50LFxyXG4gICAgICAgICAgICBvcmRlck5vLFxyXG4gICAgICAgICAgICBub3RlUXVlcnksXHJcbiAgICAgICAgICAgIGlzUGFzc2l2ZSxcclxuICAgICAgICAgICAgaXNBdXRvU2VuZCxcclxuICAgICAgICAgICAgZGVzYyxcclxuICAgICAgICAgICAgbm90ZVF1ZXJ5SFRNTCxcclxuICAgICAgICAgICAgZG9jdW1lbnRTZXJpYWxJZCxcclxuICAgICAgICB9ID0gdGhpcy5zZWxlY3RlZCB8fCB7fTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIHJ1bGVOYW1lOiBbcnVsZU5hbWUgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgICAgICAgc2VyaWFsVHlwZTogW3NlcmlhbFR5cGUgPz8gMCwgW11dLFxyXG4gICAgICAgICAgICBkb2N1bWVudDogW2RvY3VtZW50ID8/IG51bGwsIFtdXSxcclxuICAgICAgICAgICAgb3JkZXJObzogW29yZGVyTm8gPz8gMCwgW11dLFxyXG4gICAgICAgICAgICBub3RlUXVlcnk6IFtub3RlUXVlcnkgPz8gbnVsbCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwNDgpXV0sXHJcbiAgICAgICAgICAgIGlzUGFzc2l2ZTogW2lzUGFzc2l2ZSA/PyBmYWxzZSwgW11dLFxyXG4gICAgICAgICAgICBpc0F1dG9TZW5kOiBbaXNBdXRvU2VuZCA/PyBmYWxzZSwgW11dLFxyXG4gICAgICAgICAgICBkZXNjOiBbZGVzYyA/PyBudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTEyKV1dLFxyXG4gICAgICAgICAgICBub3RlUXVlcnlIVE1MOiBbbm90ZVF1ZXJ5SFRNTCA/PyBudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjA0OCldXSxcclxuICAgICAgICAgICAgZG9jdW1lbnRTZXJpYWxJZDogW2RvY3VtZW50U2VyaWFsSWQgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLmZvcm0uY29udHJvbHMuc2VyaWFsVHlwZS52YWx1ZSkpXHJcbiAgICAgICAgICAgIHRoaXMuc2VyaWFsQ29kZXMgPSB0aGlzLmRvY3VtZW50U2VyaWFsU2VydmljZS5Mb2FkRG9jdW1lbnRTZXJpYWxzQnlUeXBlKHRoaXMuZm9ybS5jb250cm9scy5zZXJpYWxUeXBlLnZhbHVlKVxyXG4gICAgfVxyXG5cclxuICAgIGhpZGVGb3JtKCkge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93Rm9ybSgpIHtcclxuICAgICAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHN1Ym1pdEZvcm0oKSB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgaWYgKHRoaXMuZW50ZXJQcmVzc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW50ZXJQcmVzc2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBsZXQgYXV0b1NlbmRSdWxlUmVxID0gdGhpcy5mb3JtLnZhbHVlIGFzIEF1dG9TZW5kUnVsZUNyZWF0ZU9yVXBkYXRlRHRvXHJcbiAgICAgICAgbGV0IGF1dG9TZW5kUnVsZVNjZW5hcmlvc1JlcSA9IFtdO1xyXG4gICAgICAgIGxldCBhdXRvU2VuZFJ1bGVEb2NUeXBlc1JlcSA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmR4U2NlbmFyaW9JbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpLmZpbHRlcihpID0+IGkuaXNTZWxlY3RlZCA9PSB0cnVlKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBhdXRvU2VuZFJ1bGVTY2VuYXJpb3NSZXEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBhdXRvU2VuZFJ1bGVJZDogdGhpcy5zZWxlY3RlZD8uaWQsXHJcbiAgICAgICAgICAgICAgICBzY2VuYXJpbzogZWxlbWVudC5kYXRhLmlkXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5keERvY1R5cGVJbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpLmZpbHRlcihpID0+IGkuaXNTZWxlY3RlZCA9PSB0cnVlKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBhdXRvU2VuZFJ1bGVEb2NUeXBlc1JlcS5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGF1dG9TZW5kUnVsZUlkOiB0aGlzLnNlbGVjdGVkPy5pZCxcclxuICAgICAgICAgICAgICAgIGRvY1R5cGU6IGVsZW1lbnQuZGF0YS5pZFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGF1dG9TZW5kUnVsZVJlcS5jb25jdXJyZW5jeVN0YW1wID0gdGhpcy5zZWxlY3RlZD8uY29uY3VycmVuY3lTdGFtcDtcclxuICAgICAgICBhdXRvU2VuZFJ1bGVSZXEuaWQgPSB0aGlzLnNlbGVjdGVkPy5pZFxyXG5cclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5zZWxlY3RlZFxyXG4gICAgICAgICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUodGhpcy5zZWxlY3RlZC5pZCwge1xyXG4gICAgICAgICAgICAgICAgYXV0b1NlbmRSdWxlOiBhdXRvU2VuZFJ1bGVSZXEsXHJcbiAgICAgICAgICAgICAgICBhdXRvU2VuZFJ1bGVEb2NUeXBlczogYXV0b1NlbmRSdWxlRG9jVHlwZXNSZXEsXHJcbiAgICAgICAgICAgICAgICBhdXRvU2VuZFJ1bGVTY2VuYXJpb3M6IGF1dG9TZW5kUnVsZVNjZW5hcmlvc1JlcVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICA6IHRoaXMuc2VydmljZS5jcmVhdGUoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1NlbmRSdWxlOiBhdXRvU2VuZFJ1bGVSZXEsXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1NlbmRSdWxlRG9jVHlwZXM6IGF1dG9TZW5kUnVsZURvY1R5cGVzUmVxLFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9TZW5kUnVsZVNjZW5hcmlvczogYXV0b1NlbmRSdWxlU2NlbmFyaW9zUmVxXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pc01vZGFsQnVzeSA9IHRydWU7XHJcblxyXG4gICAgICAgIHJlcXVlc3RcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiAodGhpcy5pc01vZGFsQnVzeSA9IGZhbHNlKSksXHJcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5oaWRlRm9ybSgpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5keEF1dG9TZW5kUnVsZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlKCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJpYWxHcmlkQm94VmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREb2NUeXBlcyA9IFtdXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNjZW5hcmlvcyA9IFtdXHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShyZWNvcmQ6IEF1dG9TZW5kUnVsZVdpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0bykge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSByZWNvcmQuYXV0b1NlbmRSdWxlO1xyXG5cclxuICAgICAgICB0aGlzLmF1dG9TZW5kUnVsZVNjZW5hcmlvc1NlcnZpY2UuZ2V0U2VsZWN0ZWRTY2VuYXJpb3ModGhpcy5zZWxlY3RlZC5pZCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkU2NlbmFyaW9zID0gbGlzdC5tYXAoaSA9PiBpLnNjZW5hcmlvKTtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmF1dG9TZW5kUnVsZURvY1R5cGVzU2VydmljZS5nZXRTZWxlY3RlZERvY1R5cGVzKHRoaXMuc2VsZWN0ZWQuaWQpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERvY1R5cGVzID0gbGlzdC5tYXAoaSA9PiBpLmRvY1R5cGUpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGUocmVjb3JkOiBBdXRvU2VuZFJ1bGVXaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8pIHtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAgICAgICAud2FybignZURvbnVzdW06OkRlbGV0ZUNvbmZpcm1hdGlvbk1lc3NhZ2UnLCAnZURvbnVzdW06OkFyZVlvdVN1cmUnLCB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlTG9jYWxpemF0aW9uUGFyYW1zOiBbXSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIoc3RhdHVzID0+IHN0YXR1cyA9PT0gQ29uZmlybWF0aW9uLlN0YXR1cy5jb25maXJtKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnNlcnZpY2UuZGVsZXRlKHJlY29yZC5hdXRvU2VuZFJ1bGUuaWQpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5keEF1dG9TZW5kUnVsZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZG9jdW1lbnRTZXJpYWxHcmlkQm94X2Rpc3BsYXlFeHByKGl0ZW0pIHtcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZG9jdW1lbnRTZXJpYWxJZC5zZXRWYWx1ZShpdGVtLmlkLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgcmV0dXJuIGAke2l0ZW0uY29kZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRG9jdW1lbnRTZXJpYWxHcmlkQm94T3B0aW9uQ2hhbmdlZChlKSB7XHJcblxyXG4gICAgICAgIGlmIChlLm5hbWUgPT09ICd2YWx1ZScpIHtcclxuICAgICAgICAgICAgdGhpcy5pc0RvY3VtZW50U2VyaWFsR3JpZEJveE9wZW5lZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNlcmlhbFR5cGVDaGFuZ2VkKCkge1xyXG4gICAgICAgIHRoaXMuc2VyaWFsQ29kZXMgPSB0aGlzLmRvY3VtZW50U2VyaWFsU2VydmljZS5Mb2FkRG9jdW1lbnRTZXJpYWxzQnlUeXBlKHRoaXMuZm9ybS5jb250cm9scy5zZXJpYWxUeXBlLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmRvY3VtZW50U2VyaWFsR3JpZEJveFZhbHVlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZG9jdW1lbnRTZXJpYWxJZC5zZXRWYWx1ZShudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBwcmV2aWV3UXVlcnkoKSB7XHJcblxyXG4gICAgICAgIGxldCBhdXRvU2VuZFJ1bGVSZXEgPSB0aGlzLmZvcm0udmFsdWUgYXMgTm90ZVJ1bGVDcmVhdGVEdG9cclxuICAgICAgICB0aGlzLnByZXZpZXdEYXRhU291cmNlID0gW107XHJcbiAgICAgICAgdGhpcy5wYXJhbXNEYXRhU291cmNlID0gW107XHJcblxyXG4gICAgICAgIGlmIChpc051bGxPckVtcHR5KGF1dG9TZW5kUnVsZVJlcS5ub3RlUXVlcnlIVE1MKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oJ1Nvcmd1IGJ1bHVuYW1hZMSxLicpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBub3RlUXVlcnkgPSB0aGlzLnN0cmlwSFRNTChhdXRvU2VuZFJ1bGVSZXEubm90ZVF1ZXJ5SFRNTCk7XHJcblxyXG4gICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLmZvcm0uY29udHJvbHMuZG9jdW1lbnQudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybignVGFibG8gc2XDp2luaXouJylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdGFibGVOYW1lID0gdGhpcy5jaGVja1RhYmxlQWZ0ZXJGcm9tKG5vdGVRdWVyeSk7XHJcblxyXG4gICAgICAgIGlmICghdGFibGVOYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJTZcOnaWxpIHRhYmxvIGlsZSBzb3JndWRhIGJhxZ9sYW7EsWxhbiB0YWJsbyBheW7EsSBvbG1hbMSxLlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5vdGVRdWVyeS5tYXRjaCgvKEJlbGdlS2V5fEJlbGdlRGV0YXlLZXl8TXVoYXRhcEtleXxNdWhhdGFwR3J1cEtleSkvZyk7XHJcblxyXG4gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQocGFyYW1zKSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmFtc0RhdGFTb3VyY2UgPSBbXTtcclxuICAgICAgICAgICAgcGFyYW1zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmFtc0RhdGFTb3VyY2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lOiBlbGVtZW50LnJlcGxhY2UoXCI6XCIsIFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWU6IFwiXCJcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXNOdWxsT3JFbXB0eSh0aGlzLnBhcmFtc0RhdGFTb3VyY2UpIHx8IHRoaXMucGFyYW1zRGF0YVNvdXJjZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oJ2VEb251c3VtOjpRdWVyeVByZXZpZXdJc1ByZXBhcmluZycpXHJcbiAgICAgICAgICAgIHRoaXMuaXNQYXJhbWV0ZXJsZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ydW5RdWVyeSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1BhcmFtZXRlcmxlc3MgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW5QcmV2aWV3ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBydW5RdWVyeSgpIHtcclxuXHJcbiAgICAgICAgbGV0IHBhcmFtVmFsdWVzID0gW107XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc1BhcmFtZXRlcmxlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKCdlRG9udXN1bTo6UXVlcnlQcmV2aWV3SXNQcmVwYXJpbmcnKVxyXG5cclxuICAgICAgICAgICAgdGhpcy5keFBhcmFtSW5zdGFuY2UuaW5zdGFuY2UuZ2V0VmlzaWJsZVJvd3MoKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1WYWx1ZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lOiBlbGVtZW50LmRhdGEucGFyYW1OYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWU6IGVsZW1lbnQuZGF0YS5wYXJhbVZhbHVlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBhdXRvU2VuZFJ1bGVSZXEgPSB0aGlzLmZvcm0udmFsdWUgYXMgQXV0b1NlbmRSdWxlQ3JlYXRlRHRvXHJcblxyXG4gICAgICAgIGxldCByZXF1ZXN0RHRvOiBQcmV2aWV3QXV0b1NlbmRSdWxlUmVxdWVzdER0byA9IHtcclxuICAgICAgICAgICAgYXV0b1NlbmRSdWxlOiBhdXRvU2VuZFJ1bGVSZXEsXHJcbiAgICAgICAgICAgIHJ1bGVQYXJhbWV0ZXJzOiBwYXJhbVZhbHVlc1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnByZXZpZXdSdWxlUmVzdWx0KHJlcXVlc3REdG8pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpZXdEYXRhU291cmNlID0gcmVzdWx0LnZhbHVlXHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3RGF0YVNvdXJjZS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKCdlRG9udXN1bTo6UXVlcnlQcmV2aWV3SXNSZWFkeScpXHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybignZURvbnVzdW06OlF1ZXJ5UHJldmlld05vUmVzdWx0JylcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgICAgICAgdGhpcy5lbnRlclByZXNzZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdHJpcEhUTUwoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgc3RyaXBwZWRIdG1sID0gaW5wdXQucmVwbGFjZShcIjwvcD48cD5cIiwgXCIgXCIpO1xyXG4gICAgICAgIHJldHVybiBzdHJpcHBlZEh0bWwucmVwbGFjZSgvQC9nLCAnJykucmVwbGFjZSgvPC4qPz4vZywgJycpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrVGFibGVBZnRlckZyb20ocXVlcnk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gL0ZST01cXHMrKFtAXFx3XSspL2k7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVGFibGVOYW1lID0gdGhpcy50YWJsZXNEYXRhU291cmNlLmZpbHRlcihpID0+IGkuaWQgPT0gdGhpcy5mb3JtLmNvbnRyb2xzLmRvY3VtZW50LnZhbHVlKVswXS50ZXh0XHJcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBxdWVyeS5tYXRjaChyZWdleCk7XHJcblxyXG4gICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaFsxXSkge1xyXG4gICAgICAgICAgICBjb25zdCB0YWJsZU5hbWUgPSBtYXRjaFsxXTtcclxuICAgICAgICAgICAgaWYgKHRhYmxlTmFtZSA9PT0gKFwiQFwiICsgc2VsZWN0ZWRUYWJsZU5hbWUpIHx8IHRhYmxlTmFtZSA9PT0gc2VsZWN0ZWRUYWJsZU5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbn0iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidlRG9udXN1bTo6QXV0b1NlbmRSdWxlcycgfCBhYnBMb2NhbGl6YXRpb25cIj5cclxuICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uQXV0b1NlbmRSdWxlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNyZWF0ZSgpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpOZXdBdXRvU2VuZFJ1bGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhBdXRvU2VuZFJ1bGVJbnN0YW5jZSBbZGF0YVNvdXJjZV09XCJhdXRvU2VuZFJ1bGVEYXRhU291cmNlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcclxuICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwidHJ1ZVwiIHN0eWxlPVwiaGVpZ2h0OiA3NXZoO1wiPlxyXG4gICAgICAgIDxkeG8tcGFnZXIgW3Zpc2libGVdPVwidHJ1ZVwiIFtzaG93SW5mb109XCJ0cnVlXCIgW2FsbG93ZWRQYWdlU2l6ZXNdPVwiWzUwLDEwMCwyMDBdXCIgW3Nob3dOYXZpZ2F0aW9uQnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgIFtzaG93UGFnZVNpemVTZWxlY3Rvcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keG8tcGFnZXI+XHJcbiAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjUwXCI+PC9keG8tcGFnaW5nPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWNob29zZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbZW5hYmxlZF09XCJ0cnVlXCIgbW9kZT1cInNlbGVjdFwiPjwvZHhvLWNvbHVtbi1jaG9vc2VyPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICA8ZHhvLWdyb3VwLXBhbmVsIFt2aXNpYmxlXT1cInRydWVcIiBbYWxsb3dDb2x1bW5EcmFnZ2luZ109XCJ0cnVlXCI+PC9keG8tZ3JvdXAtcGFuZWw+XHJcbiAgICAgICAgPGR4by1ncm91cGluZyAjZXhwYW5kIFthdXRvRXhwYW5kQWxsXT1cImZhbHNlXCIgW2FsbG93Q29sbGFwc2luZ109XCJ0cnVlXCJcclxuICAgICAgICAgIFtjb250ZXh0TWVudUVuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWdyb3VwaW5nPlxyXG4gICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCIgW2FsbG93RXhwb3J0U2VsZWN0ZWREYXRhXT1cImZhbHNlXCI+PC9keG8tZXhwb3J0PlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICA8ZHhvLWZpbHRlci1idWlsZGVyIFthbGxvd0hpZXJhcmNoaWNhbEZpZWxkc109XCJ0cnVlXCI+PC9keG8tZmlsdGVyLWJ1aWxkZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1wYW5lbD5cclxuICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgIDxkeGktY29sdW1uIFtmaXhlZF09XCJ0cnVlXCIgZGF0YUZpZWxkPVwiaWRcIiB3aWR0aD1cIjEyMFwiIFthbGxvd0dyb3VwaW5nXT1cImZhbHNlXCIgW2FsbG93RmlsdGVyaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgIFthbGxvd0hlYWRlckZpbHRlcmluZ109XCJmYWxzZVwiIFthbGxvd0hpZGluZ109XCJmYWxzZVwiIFthbGxvd1Jlb3JkZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgY2VsbFRlbXBsYXRlPVwib3BlcmF0aW9uVGVtcGxhdGVcIiBjYXB0aW9uPVwie3sgJ0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVwiPlxyXG4gICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ29wZXJhdGlvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZHJvcGRvd24tdG9nZ2xlXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlIFtkaXNhYmxlZF09XCJkaXNhYmxlZElkQ29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZyBtci0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAge3sgJ0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInVwZGF0ZShyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJkZWxldGUocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdBYnBVaTo6RGVsZXRlJyB8IGFicExvY2FsaXphdGlvblxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImF1dG9TZW5kUnVsZS5ydWxlTmFtZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UnVsZU5hbWUnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImF1dG9TZW5kUnVsZS5vcmRlck5vXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpPcmRlck5vJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJhdXRvU2VuZFJ1bGUuZG9jdW1lbnRTZXJpYWxJZFwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY3VtZW50U2VyaWFsJ3xhYnBMb2NhbGl6YXRpb259fVwiPjxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cInNlcmlhbENvZGVzRm9yTG9va3VwXCJcclxuICAgICAgICAgICAgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImNvZGVcIj5cclxuICAgICAgICAgIDwvZHhvLWxvb2t1cD48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYXV0b1NlbmRSdWxlLmlzUGFzc2l2ZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SXNQYXNzaXZlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9hYnAtcGFnZT5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNNb2RhbEJ1c3lcIiBbKHZpc2libGUpXT1cImlzTW9kYWxPcGVuXCIgW29wdGlvbnNdPVwieyBzaXplOiAnbGcnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAge3sgKHNlbGVjdGVkID8gJ0FicFVpOjpFZGl0JyA6ICdlRG9udXN1bTo6TmV3QXV0b1NlbmRSdWxlJykgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgaWQ9XCJhdXRvLXNlbmQtcnVsZVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIiB2YWxpZGF0ZU9uU3VibWl0PlxyXG4gICAgICA8ZHgtdGFiLXBhbmVsIFthbmltYXRpb25FbmFibGVkXT1cInRydWVcIiBbc3dpcGVFbmFibGVkXT1cInRydWVcIiBbbG9vcF09XCJ0cnVlXCIgI3RhYlBhbmVsPlxyXG4gICAgICAgIDxkeGktaXRlbSB0aXRsZT1cInt7ICdlRG9udXN1bTo6UnVsZUluZm8nIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgaWNvbj1cImZhcyBmYS1maWxlLWFsdFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBmYWRlLWluLXRvcFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6MjBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJhdXRvLXNlbmQtcnVsZS1ydWxlLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UnVsZU5hbWUnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJhdXRvLXNlbmQtcnVsZS1ydWxlLW5hbWVcIiBbZGlzYWJsZWRdPVwiaXNVcGRhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJydWxlTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIGF1dG9mb2N1cz48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJhdXRvLXNlbmQtcnVsZS1vcmRlci1ub1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpPcmRlck5vJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgaWQ9XCJhdXRvLXNlbmQtcnVsZS1vcmRlci1ub1wiIGZvcm1Db250cm9sTmFtZT1cIm9yZGVyTm9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiYXV0by1zZW5kLXJ1bGUtb3JkZXItbm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QXV0b1NlbmRSdWxlVHlwZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwiYXV0by1zZW5kLXJ1bGUtc2VyaWFsLXR5cGVcIiBmb3JtQ29udHJvbE5hbWU9XCJzZXJpYWxUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJzZXJpYWxUeXBlQ2hhbmdlZCgpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cImlkXCIgW2RhdGFTb3VyY2VdPVwiYXV0b1NlbmRUeXBlc0RhdGFTb3VyY2VcIiBbdmFsdWVdPVwiYXV0b1NlbmRUeXBlc0RhdGFTb3VyY2VbMF0uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZURvbnVzdW06OlBpY2snIHwgYWJwTG9jYWxpemF0aW9uIH19Li5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInhzbHQtcnVsZS14c2x0LWZvcm1hdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpEb2N1bWVudFNlcmlhbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHgtZHJvcC1kb3duLWJveCBbKHZhbHVlKV09XCJkb2N1bWVudFNlcmlhbEdyaWRCb3hWYWx1ZVwiIFsob3BlbmVkKV09XCJpc0RvY3VtZW50U2VyaWFsR3JpZEJveE9wZW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJpZFwiIFtkZWZlclJlbmRlcmluZ109XCJmYWxzZVwiIFtkaXNwbGF5RXhwcl09XCJkb2N1bWVudFNlcmlhbEdyaWRCb3hfZGlzcGxheUV4cHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZURvbnVzdW06OlNlbGVjdEFWYWx1ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIiBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInNlcmlhbENvZGVzXCIgZm9ybUNvbnRyb2xOYW1lPVwiZG9jdW1lbnRTZXJpYWxJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAob25PcHRpb25DaGFuZ2VkKT1cIm9uRG9jdW1lbnRTZXJpYWxHcmlkQm94T3B0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIFtkYXRhU291cmNlXT1cInNlcmlhbENvZGVzXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbaGVpZ2h0XT1cIjI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb3dLZXlzKV09XCJkb2N1bWVudFNlcmlhbEdyaWRCb3hWYWx1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY29kZVwiIGNhcHRpb249XCJDb2RlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJuYW1lXCIgY2FwdGlvbj1cIk5hbWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zZWxlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImluZmluaXRlXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbZW5hYmxlZF09XCJ0cnVlXCIgW3BhZ2VTaXplXT1cIjEwXCI+PC9keG8tcGFnaW5nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keC1kcm9wLWRvd24tYm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwibm90ZS1ydWxlLXJ1bGUtdHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpEb2N1bWVudCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cInhzbHQtcnVsZS1kb2N1bWVudFwiIFtkaXNhYmxlZF09XCJpc1VwZGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImRvY3VtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJkb2N1bWVudENoYW5nZWQoKVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZGlzcGxheUV4cHI9XCJ0ZXh0XCIgdmFsdWVFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwidGFibGVzRGF0YVNvdXJjZVwiIHBsYWNlaG9sZGVyPVwie3sgJ2VEb251c3VtOjpQaWNrJyB8IGFicExvY2FsaXphdGlvbiB9fS4uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5vdGUtcnVsZS1ydWxlLXR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QXV0b1NlbmRTZWxlY3Rpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImF1dG8tc2VuZC1ydWxlLWlzLWF1dG8tc2VuZFwiIGZvcm1Db250cm9sTmFtZT1cImlzQXV0b1NlbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImF1dG8tc2VuZC1ydWxlLWlzLWF1dG8tc2VuZFwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJc0F1dG9TZW5kJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJ4c2x0LXJ1bGUtbm90ZS1xdWVyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpSdWxlUXVlcnknIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZHgtaHRtbC1lZGl0b3IgI2R4SHRtbEVkaXRvciBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYXV0by1zZW5kLXJ1bGUtbm90ZS1xdWVyeS1odG1sXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTAwXCIgbWF4bGVuZ3RoPVwiNDA5NlwiIGZvcm1Db250cm9sTmFtZT1cIm5vdGVRdWVyeUhUTUxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkeGktbWVudGlvbiB2YWx1ZUV4cHI9XCJ0ZXh0XCIgZGlzcGxheUV4cHI9XCJ0ZXh0XCIgc2VhcmNoRXhwcj1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJodG1sTWVudGlvbkRhdGFTb3VyY2VcIj48L2R4aS1tZW50aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZHgtaHRtbC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJhdXRvLXNlbmQtcnVsZS1kZXNjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRlc2MnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiYXV0by1zZW5kLXJ1bGUtZGVzY1wiIGZvcm1Db250cm9sTmFtZT1cImRlc2NcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjUxMlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwiYXV0by1zZW5kLXJ1bGUtaXMtcGFzc2l2ZVwiIGZvcm1Db250cm9sTmFtZT1cImlzUGFzc2l2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYXV0by1zZW5kLXJ1bGUtaXMtcGFzc2l2ZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpJc1Bhc3NpdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1pdGVtPlxyXG4gICAgICAgIDxkeGktaXRlbSB0aXRsZT1cInt7ICdlRG9udXN1bTo6U2NlbmFyaW9zJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIGljb249XCJmYXMgZmEtcGVuY2lsLWFsdFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBmYWRlLWluLXRvcFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6MjBweDsgbWFyZ2luLWJvdHRvbToyMHB4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgI2R4U2NlbmFyaW9JbnN0YW5jZSBbZGF0YVNvdXJjZV09XCJzY2VuYXJpb0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIiBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCIgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTB2aDtcIiBrZXlFeHByPVwiaWRcIiBbKHNlbGVjdGVkUm93S2V5cyldPVwic2VsZWN0ZWRTY2VuYXJpb3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwibXVsdGlwbGVcIiBzZWxlY3RBbGxNb2RlPVwicGFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZHhvLXNlbGVjdGlvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkaXNwbGF5TmFtZVwiIGNhcHRpb249XCJ7eyAnZURvbnVzdW06Ok5hbWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZHhpLWl0ZW0+XHJcbiAgICAgICAgPGR4aS1pdGVtIHRpdGxlPVwie3sgJ2VEb251c3VtOjpEb2NUeXBlcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIiBpY29uPVwiZmFzIGZhLWVudmVsb3BlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjIwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhEb2NUeXBlSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiZG9jVHlwZURhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIiBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCIgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTB2aDtcIiBrZXlFeHByPVwiaWRcIiBbKHNlbGVjdGVkUm93S2V5cyldPVwic2VsZWN0ZWREb2NUeXBlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJtdWx0aXBsZVwiIHNlbGVjdEFsbE1vZGU9XCJwYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRpc3BsYXlOYW1lXCIgY2FwdGlvbj1cInt7ICdlRG9udXN1bTo6TmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktaXRlbT5cclxuICAgICAgPC9keC10YWItcGFuZWw+XHJcblxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJwcmV2aWV3UXVlcnkoKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlByZXZpZXdRdWVyeScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPCEtLSA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIGJ1dHRvblR5cGU9XCJzdWJtaXRcIiBmb3JtTmFtZT1cIm5vdGUtcnVsZVwiPlxyXG4gICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2FicC1idXR0b24+IC0tPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIGZvcm1OYW1lPVwieHNsdC1ydWxlXCIgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiPlxyXG4gICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNNb2RhbEJ1c3lQcmV2aWV3XCIgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlblByZXZpZXdcIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAoc2VsZWN0ZWQgPyAnQWJwVWk6OkVkaXQnIDogJ2VEb251c3VtOjpQcmV2aWV3UXVlcnknKSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8Zm9ybSBpZD1cIm5vdGUtcnVsZS1wcmV2aWV3XCI+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWlzUGFyYW1ldGVybGVzc1wiPlxyXG4gICAgICAgIDxoMz57eyAnZURvbnVzdW06OlBhcmFtZXRlcnMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9oMz5cclxuICAgICAgICA8aHI+XHJcbiAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhQYXJhbUluc3RhbmNlIFtkYXRhU291cmNlXT1cInBhcmFtc0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIiBzdHlsZT1cImhlaWdodDogNDB2aDtcIj5cclxuXHJcbiAgICAgICAgICA8ZHhvLWVkaXRpbmcgbW9kZT1cImNlbGxcIiBbdXNlSWNvbnNdPVwiZmFsc2VcIiBbYWxsb3dVcGRhdGluZ109XCJ0cnVlXCIgW2FsbG93QWRkaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2FsbG93RGVsZXRpbmddPVwiZmFsc2VcIj5cclxuICAgICAgICAgIDwvZHhvLWVkaXRpbmc+XHJcblxyXG4gICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG5cclxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhcmFtTmFtZVwiIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlBhcmFtTmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwYXJhbVZhbHVlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpQYXJhbVZhbHVlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICA8YnI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBzdHlsZT1cImZsb2F0OiByaWdodDtcIiAoY2xpY2spPVwicnVuUXVlcnkoKVwiPlxyXG4gICAgICAgICAge3sgJ2VEb251c3VtOjpSdW5RdWVyeScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnI+PGJyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxoMz57eyAnZURvbnVzdW06OlF1ZXJ5UmVzdWx0JyB8IGFicExvY2FsaXphdGlvbiB9fTwvaDM+XHJcbiAgICAgIDxocj5cclxuICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhQcmV2aWV3IFtkYXRhU291cmNlXT1cInByZXZpZXdEYXRhU291cmNlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxyXG4gICAgICAgIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA2MHZoO1wiPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuXHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcblxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuXHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG5cclxuICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcblxyXG4gICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuXHJcbiAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPiJdfQ==
|
|
312
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWF1dG8tc2VuZC1ydWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWF1dG8tc2VuZC1ydWxlcy9oaXQtYXV0by1zZW5kLXJ1bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtYXV0by1zZW5kLXJ1bGVzL2hpdC1hdXRvLXNlbmQtcnVsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQU8sYUFBYSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBa0MsTUFBTSxjQUFjLENBQUM7QUFDbEgsT0FBTyxFQUFFLFlBQVksRUFBdUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUE2QixNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQm5GLE1BQU0sT0FBTyx3QkFBd0I7SUFtQ2pDLFlBQ29CLElBQWlCLEVBQ2pCLEtBQXFCLEVBQ3JCLE9BQWdDLEVBQ3hDLFlBQWlDLEVBQ3hCLGNBQThCLEVBQ3ZDLEVBQWUsRUFDZixHQUFzQixFQUNiLGdCQUFxQyxFQUNyQyxxQkFBK0MsRUFDL0MsMkJBQTJELEVBQzNELDRCQUE2RDtRQVY5RCxTQUFJ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QUF3QixtSEFMdEIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxxZEN6QmhGLDYrbUJBd1dZOzJGRDFVQyx3QkFBd0I7a0JBUnBDLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUNiLHVCQUF1QixDQUFDLE9BQU8sYUFDckMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztrY0FNcEIsc0JBQXNCO3NCQUE3RSxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRixrQkFBa0I7c0JBQXJFLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNDLGlCQUFpQjtzQkFBbkUsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0EsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBeVUvQyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAsIGlzTnVsbE9yRW1wdHksIGlzTnVsbE9yVW5kZWZpbmVkLCBMaXN0U2VydmljZSwgUGFnZWRSZXN1bHREdG8sIFRyYWNrQnlTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFhzbHRGb3JtYXREdG8sIFhzbHRGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJveHkveHNsdC1mb3JtYXRzJztcclxuaW1wb3J0IHsgRHhEYXRhR3JpZENvbXBvbmVudCwgRHhIdG1sRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcclxuaW1wb3J0IHsgZmluYWxpemUsIHRhcCwgZmlsdGVyLCBzd2l0Y2hNYXAsIFJlcGxheVN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSGl0WHNsdEZvcm1hdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LXhzbHQtZm9ybWF0cy9oaXQteHNsdC1mb3JtYXQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRlbnRNYXN0ZXJJbnB1dER0byB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtY29udGVudC1tYXN0ZXIvbW9kZWxzJztcclxuaW1wb3J0IHsgTm90ZVJ1bGVDcmVhdGVEdG8gfSBmcm9tICcuLi8uLi9wcm94eS9ub3RlLXJ1bGVzJztcclxuaW1wb3J0IHsgSGl0U2NlbmFyaW9UeXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LXNjZW5hcmlvLXR5cGVzL2hpdC1zY2VuYXJpby10eXBlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXREb2N1bWVudFR5cGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZG9jdW1lbnQtdHlwZXMvaGl0LWRvY3VtZW50LXR5cGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEhpdE5vdGVSdWxlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LW5vdGUtcnVsZXMvaGl0LW5vdGUtcnVsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0b1NlbmRSdWxlQ3JlYXRlRHRvLCBBdXRvU2VuZFJ1bGVEdG8sIEF1dG9TZW5kUnVsZVdpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0byB9IGZyb20gJy4uLy4uL3Byb3h5L2F1dG8tc2VuZC1ydWxlcyc7XHJcbmltcG9ydCB7IEhpdEF1dG9TZW5kUnVsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1hdXRvLXNlbmQtcnVsZXMvaGl0LWF1dG8tc2VuZC1ydWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRBdXRvU2VuZFJ1bGVEb2NUeXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWF1dG8tc2VuZC1ydWxlLWRvYy10eXBlcy9oaXQtYXV0by1zZW5kLXJ1bGUtZG9jLXR5cGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEhpdEF1dG9TZW5kUnVsZVNjZW5hcmlvc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWF1dG8tc2VuZC1ydWxlLXNjZW5hcmlvcy9oaXQtYXV0by1zZW5kLXJ1bGUtc2NlbmFyaW8uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dG9TZW5kUnVsZUNyZWF0ZU9yVXBkYXRlRHRvLCBQcmV2aWV3QXV0b1NlbmRSdWxlUmVxdWVzdER0byB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtYXV0by1zZW5kLXJ1bGVzL21vZGVscyc7XHJcbmltcG9ydCB7IEhpdERvY3VtZW50U2VyaWFsU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZG9jdW1lbnQtc2VyaWFscy9oaXQtZG9jdW1lbnQtc2VyaWFsLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1hdXRvLXNlbmQtcnVsZScsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgICBwcm92aWRlcnM6IFtMaXN0U2VydmljZSwgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH1dLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2hpdC1hdXRvLXNlbmQtcnVsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZXM6IFtdLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEhpdEF1dG9TZW5kUnVsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdkeEF1dG9TZW5kUnVsZUluc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4QXV0b1NlbmRSdWxlSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4U2NlbmFyaW9JbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeFNjZW5hcmlvSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4RG9jVHlwZUluc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4RG9jVHlwZUluc3RhbmNlOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeFBhcmFtSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhQYXJhbUluc3RhbmNlOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcblxyXG4gICAgYXV0b1NlbmRSdWxlRGF0YVNvdXJjZTogYW55XHJcbiAgICBkb2NUeXBlRGF0YVNvdXJjZTogYW55XHJcbiAgICBzY2VuYXJpb0RhdGFTb3VyY2U6IGFueVxyXG5cclxuICAgIGZvcm06IEZvcm1Hcm91cDtcclxuICAgIGVudGVyUHJlc3NlZCA9IGZhbHNlO1xyXG5cclxuICAgIGlzTW9kYWxCdXN5ID0gZmFsc2U7XHJcbiAgICBpc01vZGFsT3BlbiA9IGZhbHNlO1xyXG5cclxuICAgIGh0bWxNZW50aW9uRGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgdGFibGVzRGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgYXV0b1NlbmRUeXBlc0RhdGFTb3VyY2UgPSBbXTtcclxuXHJcbiAgICBkb2N1bWVudFNlcmlhbEdyaWRCb3hWYWx1ZTogYW55O1xyXG4gICAgaXNEb2N1bWVudFNlcmlhbEdyaWRCb3hPcGVuZWQ6IGJvb2xlYW47XHJcbiAgICBzZXJpYWxDb2RlczogYW55O1xyXG4gICAgc2VyaWFsQ29kZXNGb3JMb29rdXA6IGFueTtcclxuXHJcbiAgICBzZWxlY3RlZD86IEF1dG9TZW5kUnVsZUR0bztcclxuICAgIHNlbGVjdGVkRG9jVHlwZXMgPSBbXVxyXG4gICAgc2VsZWN0ZWRTY2VuYXJpb3MgPSBbXVxyXG5cclxuICAgIHByZXZpZXdEYXRhU291cmNlOiBbXSA9IFtdO1xyXG4gICAgcGFyYW1zRGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgaXNQYXJhbWV0ZXJsZXNzID0gZmFsc2U7XHJcbiAgICBpc01vZGFsQnVzeVByZXZpZXcgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxPcGVuUHJldmlldyA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBsaXN0OiBMaXN0U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdHJhY2s6IFRyYWNrQnlTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBIaXRBdXRvU2VuZFJ1bGVzU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBub3RlUnVsZXNTZXJ2aWNlOiBIaXROb3RlUnVsZXNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJpYWxTZXJ2aWNlOiBIaXREb2N1bWVudFNlcmlhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRvU2VuZFJ1bGVEb2NUeXBlc1NlcnZpY2U6IEhpdEF1dG9TZW5kUnVsZURvY1R5cGVzU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dG9TZW5kUnVsZVNjZW5hcmlvc1NlcnZpY2U6IEhpdEF1dG9TZW5kUnVsZVNjZW5hcmlvc1NlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJpYWxHcmlkQm94X2Rpc3BsYXlFeHByID0gdGhpcy5kb2N1bWVudFNlcmlhbEdyaWRCb3hfZGlzcGxheUV4cHIuYmluZCh0aGlzKVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuYXV0b1NlbmRSdWxlRGF0YVNvdXJjZSA9IHRoaXMuc2VydmljZS5Mb2FkQXV0b1NlbmRSdWxlcztcclxuICAgICAgICB0aGlzLnNjZW5hcmlvRGF0YVNvdXJjZSA9IHRoaXMuc2VydmljZS5Mb2FkU2NlbmFyaW9zO1xyXG4gICAgICAgIHRoaXMuZG9jVHlwZURhdGFTb3VyY2UgPSB0aGlzLnNlcnZpY2UuTG9hZERvY1R5cGVzO1xyXG4gICAgICAgIHRoaXMuc2VyaWFsQ29kZXMgPSB0aGlzLmRvY3VtZW50U2VyaWFsU2VydmljZS5Mb2FkRG9jdW1lbnRTZXJpYWxzQnlUeXBlKDApO1xyXG4gICAgICAgIHRoaXMuc2VyaWFsQ29kZXNGb3JMb29rdXAgPSB0aGlzLmRvY3VtZW50U2VyaWFsU2VydmljZS5Mb2FkRG9jdW1lbnRTZXJpYWxzO1xyXG4gICAgICAgIHRoaXMubm90ZVJ1bGVzU2VydmljZS5nZXRUYWJsZU5hbWVzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICBsaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlc0RhdGFTb3VyY2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogZWxlbWVudC5kaXNwbGF5TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5pZCxcclxuICAgICAgICAgICAgICAgICAgICBpY29uOiBcIi9hc3NldHMvaW1hZ2VzL3RhYmxlLWljb24ucG5nXCJcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLmh0bWxNZW50aW9uRGF0YVNvdXJjZS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlbGVtZW50LmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGljb246IFwiL2Fzc2V0cy9pbWFnZXMvdGFibGUtaWNvbi5wbmdcIlxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0UGFyYW1OYW1lcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5odG1sTWVudGlvbkRhdGFTb3VyY2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogZWxlbWVudC5kaXNwbGF5TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5pZCxcclxuICAgICAgICAgICAgICAgICAgICBpY29uOiBcIi9hc3NldHMvaW1hZ2VzL2tleS1pY29uLnBuZ1wiXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFR5cGVzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmF1dG9TZW5kVHlwZXNEYXRhU291cmNlID0gbGlzdDtcclxuICAgICAgICB9KVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBidWlsZEZvcm0oKSB7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICBydWxlTmFtZSxcclxuICAgICAgICAgICAgc2VyaWFsVHlwZSxcclxuICAgICAgICAgICAgZG9jdW1lbnQsXHJcbiAgICAgICAgICAgIG9yZGVyTm8sXHJcbiAgICAgICAgICAgIG5vdGVRdWVyeSxcclxuICAgICAgICAgICAgaXNQYXNzaXZlLFxyXG4gICAgICAgICAgICBpc0F1dG9TZW5kLFxyXG4gICAgICAgICAgICBkZXNjLFxyXG4gICAgICAgICAgICBub3RlUXVlcnlIVE1MLFxyXG4gICAgICAgICAgICBkb2N1bWVudFNlcmlhbElkLFxyXG4gICAgICAgIH0gPSB0aGlzLnNlbGVjdGVkIHx8IHt9O1xyXG5cclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgcnVsZU5hbWU6IFtydWxlTmFtZSA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICAgICAgICBzZXJpYWxUeXBlOiBbc2VyaWFsVHlwZSA/PyAwLCBbXV0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50OiBbZG9jdW1lbnQgPz8gbnVsbCwgW11dLFxyXG4gICAgICAgICAgICBvcmRlck5vOiBbb3JkZXJObyA/PyAwLCBbXV0sXHJcbiAgICAgICAgICAgIG5vdGVRdWVyeTogW25vdGVRdWVyeSA/PyBudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjA0OCldXSxcclxuICAgICAgICAgICAgaXNQYXNzaXZlOiBbaXNQYXNzaXZlID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgICAgICAgIGlzQXV0b1NlbmQ6IFtpc0F1dG9TZW5kID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgICAgICAgIGRlc2M6IFtkZXNjID8/IG51bGwsIFtWYWxpZGF0b3JzLm1heExlbmd0aCg1MTIpXV0sXHJcbiAgICAgICAgICAgIG5vdGVRdWVyeUhUTUw6IFtub3RlUXVlcnlIVE1MID8/IG51bGwsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgyMDQ4KV1dLFxyXG4gICAgICAgICAgICBkb2N1bWVudFNlcmlhbElkOiBbZG9jdW1lbnRTZXJpYWxJZCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuZm9ybS5jb250cm9scy5zZXJpYWxUeXBlLnZhbHVlKSlcclxuICAgICAgICAgICAgdGhpcy5zZXJpYWxDb2RlcyA9IHRoaXMuZG9jdW1lbnRTZXJpYWxTZXJ2aWNlLkxvYWREb2N1bWVudFNlcmlhbHNCeVR5cGUodGhpcy5mb3JtLmNvbnRyb2xzLnNlcmlhbFR5cGUudmFsdWUpXHJcbiAgICB9XHJcblxyXG4gICAgaGlkZUZvcm0oKSB7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dGb3JtKCkge1xyXG4gICAgICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3VibWl0Rm9ybSgpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICBpZiAodGhpcy5lbnRlclByZXNzZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5lbnRlclByZXNzZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSByZXR1cm47XHJcblxyXG4gICAgICAgIGxldCBhdXRvU2VuZFJ1bGVSZXEgPSB0aGlzLmZvcm0udmFsdWUgYXMgQXV0b1NlbmRSdWxlQ3JlYXRlT3JVcGRhdGVEdG9cclxuICAgICAgICBsZXQgYXV0b1NlbmRSdWxlU2NlbmFyaW9zUmVxID0gW107XHJcbiAgICAgICAgbGV0IGF1dG9TZW5kUnVsZURvY1R5cGVzUmVxID0gW107XHJcblxyXG4gICAgICAgIGlmICghaXNOdWxsT3JFbXB0eShhdXRvU2VuZFJ1bGVSZXEubm90ZVF1ZXJ5SFRNTCkpIHtcclxuICAgICAgICAgICAgY29uc3QgY291bnRFeGlzdCA9IHRoaXMuY2hlY2tDb3VudENvbnRhaW5zKGF1dG9TZW5kUnVsZVJlcS5ub3RlUXVlcnlIVE1MKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghY291bnRFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIk90b21hdGlrIGnFn2xlbSBrdXJhbCB0YW7EsW1sYXLEsW5kYSBjb3VudCBrdWxsYW7EsW3EsSB6b3J1bmx1ZHVyLlwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5keFNjZW5hcmlvSW5zdGFuY2UuaW5zdGFuY2UuZ2V0VmlzaWJsZVJvd3MoKS5maWx0ZXIoaSA9PiBpLmlzU2VsZWN0ZWQgPT0gdHJ1ZSkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgYXV0b1NlbmRSdWxlU2NlbmFyaW9zUmVxLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgYXV0b1NlbmRSdWxlSWQ6IHRoaXMuc2VsZWN0ZWQ/LmlkLFxyXG4gICAgICAgICAgICAgICAgc2NlbmFyaW86IGVsZW1lbnQuZGF0YS5pZFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZHhEb2NUeXBlSW5zdGFuY2UuaW5zdGFuY2UuZ2V0VmlzaWJsZVJvd3MoKS5maWx0ZXIoaSA9PiBpLmlzU2VsZWN0ZWQgPT0gdHJ1ZSkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgYXV0b1NlbmRSdWxlRG9jVHlwZXNSZXEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBhdXRvU2VuZFJ1bGVJZDogdGhpcy5zZWxlY3RlZD8uaWQsXHJcbiAgICAgICAgICAgICAgICBkb2NUeXBlOiBlbGVtZW50LmRhdGEuaWRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBhdXRvU2VuZFJ1bGVSZXEuY29uY3VycmVuY3lTdGFtcCA9IHRoaXMuc2VsZWN0ZWQ/LmNvbmN1cnJlbmN5U3RhbXA7XHJcbiAgICAgICAgYXV0b1NlbmRSdWxlUmVxLmlkID0gdGhpcy5zZWxlY3RlZD8uaWRcclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuc2VsZWN0ZWRcclxuICAgICAgICAgICAgPyB0aGlzLnNlcnZpY2UudXBkYXRlKHRoaXMuc2VsZWN0ZWQuaWQsIHtcclxuICAgICAgICAgICAgICAgIGF1dG9TZW5kUnVsZTogYXV0b1NlbmRSdWxlUmVxLFxyXG4gICAgICAgICAgICAgICAgYXV0b1NlbmRSdWxlRG9jVHlwZXM6IGF1dG9TZW5kUnVsZURvY1R5cGVzUmVxLFxyXG4gICAgICAgICAgICAgICAgYXV0b1NlbmRSdWxlU2NlbmFyaW9zOiBhdXRvU2VuZFJ1bGVTY2VuYXJpb3NSZXFcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgOiB0aGlzLnNlcnZpY2UuY3JlYXRlKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9TZW5kUnVsZTogYXV0b1NlbmRSdWxlUmVxLFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9TZW5kUnVsZURvY1R5cGVzOiBhdXRvU2VuZFJ1bGVEb2NUeXBlc1JlcSxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvU2VuZFJ1bGVTY2VuYXJpb3M6IGF1dG9TZW5kUnVsZVNjZW5hcmlvc1JlcVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3kgPSB0cnVlO1xyXG5cclxuICAgICAgICByZXF1ZXN0XHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gKHRoaXMuaXNNb2RhbEJ1c3kgPSBmYWxzZSkpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuaGlkZUZvcm0oKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhBdXRvU2VuZFJ1bGVJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZSgpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgICB0aGlzLmRvY3VtZW50U2VyaWFsR3JpZEJveFZhbHVlID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRG9jVHlwZXMgPSBbXVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTY2VuYXJpb3MgPSBbXVxyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUocmVjb3JkOiBBdXRvU2VuZFJ1bGVXaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gcmVjb3JkLmF1dG9TZW5kUnVsZTtcclxuXHJcbiAgICAgICAgdGhpcy5hdXRvU2VuZFJ1bGVTY2VuYXJpb3NTZXJ2aWNlLmdldFNlbGVjdGVkU2NlbmFyaW9zKHRoaXMuc2VsZWN0ZWQuaWQpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNjZW5hcmlvcyA9IGxpc3QubWFwKGkgPT4gaS5zY2VuYXJpbyk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5hdXRvU2VuZFJ1bGVEb2NUeXBlc1NlcnZpY2UuZ2V0U2VsZWN0ZWREb2NUeXBlcyh0aGlzLnNlbGVjdGVkLmlkKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREb2NUeXBlcyA9IGxpc3QubWFwKGkgPT4gaS5kb2NUeXBlKTtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLnNob3dGb3JtKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlKHJlY29yZDogQXV0b1NlbmRSdWxlV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvKSB7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25cclxuICAgICAgICAgICAgLndhcm4oJ2VEb251c3VtOjpEZWxldGVDb25maXJtYXRpb25NZXNzYWdlJywgJ2VEb251c3VtOjpBcmVZb3VTdXJlJywge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZUxvY2FsaXphdGlvblBhcmFtczogW10sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyKHN0YXR1cyA9PiBzdGF0dXMgPT09IENvbmZpcm1hdGlvbi5TdGF0dXMuY29uZmlybSksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zZXJ2aWNlLmRlbGV0ZShyZWNvcmQuYXV0b1NlbmRSdWxlLmlkKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhBdXRvU2VuZFJ1bGVJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGRvY3VtZW50U2VyaWFsR3JpZEJveF9kaXNwbGF5RXhwcihpdGVtKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmRvY3VtZW50U2VyaWFsSWQuc2V0VmFsdWUoaXRlbS5pZC50b1N0cmluZygpKVxyXG4gICAgICAgIHJldHVybiBgJHtpdGVtLmNvZGV9YDtcclxuICAgIH1cclxuXHJcbiAgICBvbkRvY3VtZW50U2VyaWFsR3JpZEJveE9wdGlvbkNoYW5nZWQoZSkge1xyXG5cclxuICAgICAgICBpZiAoZS5uYW1lID09PSAndmFsdWUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEb2N1bWVudFNlcmlhbEdyaWRCb3hPcGVuZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXJpYWxUeXBlQ2hhbmdlZCgpIHtcclxuICAgICAgICB0aGlzLnNlcmlhbENvZGVzID0gdGhpcy5kb2N1bWVudFNlcmlhbFNlcnZpY2UuTG9hZERvY3VtZW50U2VyaWFsc0J5VHlwZSh0aGlzLmZvcm0uY29udHJvbHMuc2VyaWFsVHlwZS52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcmlhbEdyaWRCb3hWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmRvY3VtZW50U2VyaWFsSWQuc2V0VmFsdWUobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJldmlld1F1ZXJ5KCkge1xyXG5cclxuICAgICAgICBsZXQgYXV0b1NlbmRSdWxlUmVxID0gdGhpcy5mb3JtLnZhbHVlIGFzIE5vdGVSdWxlQ3JlYXRlRHRvXHJcbiAgICAgICAgdGhpcy5wcmV2aWV3RGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgICAgIHRoaXMucGFyYW1zRGF0YVNvdXJjZSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoaXNOdWxsT3JFbXB0eShhdXRvU2VuZFJ1bGVSZXEubm90ZVF1ZXJ5SFRNTCkpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKCdTb3JndSBidWx1bmFtYWTEsS4nKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbm90ZVF1ZXJ5ID0gdGhpcy5zdHJpcEhUTUwoYXV0b1NlbmRSdWxlUmVxLm5vdGVRdWVyeUhUTUwpO1xyXG5cclxuICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5mb3JtLmNvbnRyb2xzLmRvY3VtZW50LnZhbHVlKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLndhcm4oJ1RhYmxvIHNlw6dpbml6LicpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHRhYmxlTmFtZSA9IHRoaXMuY2hlY2tUYWJsZUFmdGVyRnJvbShub3RlUXVlcnkpO1xyXG5cclxuICAgICAgICBpZiAoIXRhYmxlTmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiU2XDp2lsaSB0YWJsbyBpbGUgc29yZ3VkYSBiYcWfbGFuxLFsYW4gdGFibG8gYXluxLEgb2xtYWzEsS5cIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNvdW50RXhpc3QgPSB0aGlzLmNoZWNrQ291bnRDb250YWlucyhub3RlUXVlcnkpO1xyXG5cclxuICAgICAgICBpZiAoIWNvdW50RXhpc3QpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIk90b21hdGlrIGnFn2xlbSBrdXJhbCB0YW7EsW1sYXLEsW5kYSBjb3VudCBrdWxsYW7EsW3EsSB6b3J1bmx1ZHVyLlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGxldCBwYXJhbXMgPSBub3RlUXVlcnkubWF0Y2goLyhCZWxnZUtleXxCZWxnZURldGF5S2V5fE11aGF0YXBLZXl8TXVoYXRhcEdydXBLZXkpL2cpO1xyXG5cclxuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHBhcmFtcykpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbXNEYXRhU291cmNlID0gW107XHJcbiAgICAgICAgICAgIHBhcmFtcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJhbXNEYXRhU291cmNlLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZTogZWxlbWVudC5yZXBsYWNlKFwiOlwiLCBcIlwiKSxcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlOiBcIlwiXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGlzTnVsbE9yRW1wdHkodGhpcy5wYXJhbXNEYXRhU291cmNlKSB8fCB0aGlzLnBhcmFtc0RhdGFTb3VyY2UubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKCdlRG9udXN1bTo6UXVlcnlQcmV2aWV3SXNQcmVwYXJpbmcnKVxyXG4gICAgICAgICAgICB0aGlzLmlzUGFyYW1ldGVybGVzcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucnVuUXVlcnkoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNQYXJhbWV0ZXJsZXNzID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzTW9kYWxPcGVuUHJldmlldyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcnVuUXVlcnkoKSB7XHJcblxyXG4gICAgICAgIGxldCBwYXJhbVZhbHVlcyA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNQYXJhbWV0ZXJsZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbygnZURvbnVzdW06OlF1ZXJ5UHJldmlld0lzUHJlcGFyaW5nJylcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHhQYXJhbUluc3RhbmNlLmluc3RhbmNlLmdldFZpc2libGVSb3dzKCkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIHBhcmFtVmFsdWVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZTogZWxlbWVudC5kYXRhLnBhcmFtTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlOiBlbGVtZW50LmRhdGEucGFyYW1WYWx1ZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYXV0b1NlbmRSdWxlUmVxID0gdGhpcy5mb3JtLnZhbHVlIGFzIEF1dG9TZW5kUnVsZUNyZWF0ZUR0b1xyXG5cclxuICAgICAgICBsZXQgcmVxdWVzdER0bzogUHJldmlld0F1dG9TZW5kUnVsZVJlcXVlc3REdG8gPSB7XHJcbiAgICAgICAgICAgIGF1dG9TZW5kUnVsZTogYXV0b1NlbmRSdWxlUmVxLFxyXG4gICAgICAgICAgICBydWxlUGFyYW1ldGVyczogcGFyYW1WYWx1ZXNcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5wcmV2aWV3UnVsZVJlc3VsdChyZXF1ZXN0RHRvKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wcmV2aWV3RGF0YVNvdXJjZSA9IHJlc3VsdC52YWx1ZVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMucHJldmlld0RhdGFTb3VyY2UubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcygnZURvbnVzdW06OlF1ZXJ5UHJldmlld0lzUmVhZHknKVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLndhcm4oJ2VEb251c3VtOjpRdWVyeVByZXZpZXdOb1Jlc3VsdCcpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICAgIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW50ZXJQcmVzc2VkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RyaXBIVE1MKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHN0cmlwcGVkSHRtbCA9IGlucHV0LnJlcGxhY2UoXCI8L3A+PHA+XCIsIFwiIFwiKTtcclxuICAgICAgICByZXR1cm4gc3RyaXBwZWRIdG1sLnJlcGxhY2UoL0AvZywgJycpLnJlcGxhY2UoLzwuKj8+L2csICcnKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja1RhYmxlQWZ0ZXJGcm9tKHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCByZWdleCA9IC9GUk9NXFxzKyhbQFxcd10rKS9pO1xyXG5cclxuICAgICAgICBjb25zdCBzZWxlY3RlZFRhYmxlTmFtZSA9IHRoaXMudGFibGVzRGF0YVNvdXJjZS5maWx0ZXIoaSA9PiBpLmlkID09IHRoaXMuZm9ybS5jb250cm9scy5kb2N1bWVudC52YWx1ZSlbMF0udGV4dFxyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gcXVlcnkubWF0Y2gocmVnZXgpO1xyXG5cclxuICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0pIHtcclxuICAgICAgICAgICAgY29uc3QgdGFibGVOYW1lID0gbWF0Y2hbMV07XHJcbiAgICAgICAgICAgIGlmICh0YWJsZU5hbWUgPT09IChcIkBcIiArIHNlbGVjdGVkVGFibGVOYW1lKSB8fCB0YWJsZU5hbWUgPT09IHNlbGVjdGVkVGFibGVOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tDb3VudENvbnRhaW5zKHF1ZXJ5OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gL2NvdW50XFxzKlxcKC9pLnRlc3QocXVlcnkpO1xyXG4gICAgfVxyXG5cclxufSIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ2VEb251c3VtOjpBdXRvU2VuZFJ1bGVzJyB8IGFicExvY2FsaXphdGlvblwiPlxyXG4gIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHQtbGctZW5kIHB0LTJcIj5cclxuICAgICAgPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5BdXRvU2VuZFJ1bGVzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwiY3JlYXRlKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06Ok5ld0F1dG9TZW5kUnVsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeEF1dG9TZW5kUnVsZUluc3RhbmNlIFtkYXRhU291cmNlXT1cImF1dG9TZW5kUnVsZURhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCJcclxuICAgICAgICBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCIgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJ0cnVlXCIgc3R5bGU9XCJoZWlnaHQ6IDc1dmg7XCI+XHJcbiAgICAgICAgPGR4by1wYWdlciBbdmlzaWJsZV09XCJ0cnVlXCIgW3Nob3dJbmZvXT1cInRydWVcIiBbYWxsb3dlZFBhZ2VTaXplc109XCJbNTAsMTAwLDIwMF1cIiBbc2hvd05hdmlnYXRpb25CdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4by1wYWdlcj5cclxuICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiNTBcIj48L2R4by1wYWdpbmc+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tY2hvb3NlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFtlbmFibGVkXT1cInRydWVcIiBtb2RlPVwic2VsZWN0XCI+PC9keG8tY29sdW1uLWNob29zZXI+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZ3JvdXAtcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiIFthbGxvd0NvbHVtbkRyYWdnaW5nXT1cInRydWVcIj48L2R4by1ncm91cC1wYW5lbD5cclxuICAgICAgICA8ZHhvLWdyb3VwaW5nICNleHBhbmQgW2F1dG9FeHBhbmRBbGxdPVwiZmFsc2VcIiBbYWxsb3dDb2xsYXBzaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgW2NvbnRleHRNZW51RW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZ3JvdXBpbmc+XHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBbYWxsb3dFeHBvcnRTZWxlY3RlZERhdGFdPVwiZmFsc2VcIj48L2R4by1leHBvcnQ+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLWJ1aWxkZXIgW2FsbG93SGllcmFyY2hpY2FsRmllbGRzXT1cInRydWVcIj48L2R4by1maWx0ZXItYnVpbGRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1wYW5lbCBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXBhbmVsPlxyXG4gICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gW2ZpeGVkXT1cInRydWVcIiBkYXRhRmllbGQ9XCJpZFwiIHdpZHRoPVwiMTIwXCIgW2FsbG93R3JvdXBpbmddPVwiZmFsc2VcIiBbYWxsb3dGaWx0ZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCIgW2FsbG93SGlkaW5nXT1cImZhbHNlXCIgW2FsbG93UmVvcmRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiIGNhcHRpb249XCJ7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+XHJcbiAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnb3BlcmF0aW9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGUgW2Rpc2FibGVkXT1cImRpc2FibGVkSWRDb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1yLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwidXBkYXRlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImRlbGV0ZShyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9uXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYXV0b1NlbmRSdWxlLnJ1bGVOYW1lXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSdWxlTmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYXV0b1NlbmRSdWxlLm9yZGVyTm9cIiBjYXB0aW9uPVwie3snZURvbnVzdW06Ok9yZGVyTm8nfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImF1dG9TZW5kUnVsZS5kb2N1bWVudFNlcmlhbElkXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jdW1lbnRTZXJpYWwnfGFicExvY2FsaXphdGlvbn19XCI+PGR4by1sb29rdXAgW2RhdGFTb3VyY2VdPVwic2VyaWFsQ29kZXNGb3JMb29rdXBcIlxyXG4gICAgICAgICAgICB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiY29kZVwiPlxyXG4gICAgICAgICAgPC9keG8tbG9va3VwPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJhdXRvU2VuZFJ1bGUuaXNQYXNzaXZlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJc1Bhc3NpdmUnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeVwiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5cIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAoc2VsZWN0ZWQgPyAnQWJwVWk6OkVkaXQnIDogJ2VEb251c3VtOjpOZXdBdXRvU2VuZFJ1bGUnKSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBpZD1cImF1dG8tc2VuZC1ydWxlXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiIHZhbGlkYXRlT25TdWJtaXQ+XHJcbiAgICAgIDxkeC10YWItcGFuZWwgW2FuaW1hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiIFtzd2lwZUVuYWJsZWRdPVwidHJ1ZVwiIFtsb29wXT1cInRydWVcIiAjdGFiUGFuZWw+XHJcbiAgICAgICAgPGR4aS1pdGVtIHRpdGxlPVwie3sgJ2VEb251c3VtOjpSdWxlSW5mbycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIiBpY29uPVwiZmFzIGZhLWZpbGUtYWx0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDoyMHB4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImF1dG8tc2VuZC1ydWxlLXJ1bGUtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpSdWxlTmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImF1dG8tc2VuZC1ydWxlLXJ1bGUtbmFtZVwiIFtkaXNhYmxlZF09XCJpc1VwZGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInJ1bGVOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgYXV0b2ZvY3VzPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImF1dG8tc2VuZC1ydWxlLW9yZGVyLW5vXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok9yZGVyTm8nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBbbWluXT1cIjBcIiBpZD1cImF1dG8tc2VuZC1ydWxlLW9yZGVyLW5vXCIgZm9ybUNvbnRyb2xOYW1lPVwib3JkZXJOb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJhdXRvLXNlbmQtcnVsZS1vcmRlci1ub1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpBdXRvU2VuZFJ1bGVUeXBlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJhdXRvLXNlbmQtcnVsZS1zZXJpYWwtdHlwZVwiIGZvcm1Db250cm9sTmFtZT1cInNlcmlhbFR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cInNlcmlhbFR5cGVDaGFuZ2VkKClcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWVFeHByPVwiaWRcIiBbZGF0YVNvdXJjZV09XCJhdXRvU2VuZFR5cGVzRGF0YVNvdXJjZVwiIFt2YWx1ZV09XCJhdXRvU2VuZFR5cGVzRGF0YVNvdXJjZVswXS5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlRG9udXN1bTo6UGljaycgfCBhYnBMb2NhbGl6YXRpb24gfX0uLlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwieHNsdC1ydWxlLXhzbHQtZm9ybWF0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRvY3VtZW50U2VyaWFsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeC1kcm9wLWRvd24tYm94IFsodmFsdWUpXT1cImRvY3VtZW50U2VyaWFsR3JpZEJveFZhbHVlXCIgWyhvcGVuZWQpXT1cImlzRG9jdW1lbnRTZXJpYWxHcmlkQm94T3BlbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cImlkXCIgW2RlZmVyUmVuZGVyaW5nXT1cImZhbHNlXCIgW2Rpc3BsYXlFeHByXT1cImRvY3VtZW50U2VyaWFsR3JpZEJveF9kaXNwbGF5RXhwclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlRG9udXN1bTo6U2VsZWN0QVZhbHVlJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwic2VyaWFsQ29kZXNcIiBmb3JtQ29udHJvbE5hbWU9XCJkb2N1bWVudFNlcmlhbElkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChvbk9wdGlvbkNoYW5nZWQpPVwib25Eb2N1bWVudFNlcmlhbEdyaWRCb3hPcHRpb25DaGFuZ2VkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2RhdGFTb3VyY2VdPVwic2VyaWFsQ29kZXNcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtoZWlnaHRdPVwiMjUwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvd0tleXMpXT1cImRvY3VtZW50U2VyaWFsR3JpZEJveFZhbHVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjb2RlXCIgY2FwdGlvbj1cIkNvZGVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIm5hbWVcIiBjYXB0aW9uPVwiTmFtZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNlbGVjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaW5maW5pdGVcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtlbmFibGVkXT1cInRydWVcIiBbcGFnZVNpemVdPVwiMTBcIj48L2R4by1wYWdpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4LWRyb3AtZG93bi1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJub3RlLXJ1bGUtcnVsZS10eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRvY3VtZW50JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwieHNsdC1ydWxlLWRvY3VtZW50XCIgW2Rpc2FibGVkXT1cImlzVXBkYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZG9jdW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImRvY3VtZW50Q2hhbmdlZCgpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cInRleHRcIiB2YWx1ZUV4cHI9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZXNEYXRhU291cmNlXCIgcGxhY2Vob2xkZXI9XCJ7eyAnZURvbnVzdW06OlBpY2snIHwgYWJwTG9jYWxpemF0aW9uIH19Li5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwibm90ZS1ydWxlLXJ1bGUtdHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpBdXRvU2VuZFNlbGVjdGlvbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwiYXV0by1zZW5kLXJ1bGUtaXMtYXV0by1zZW5kXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNBdXRvU2VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYXV0by1zZW5kLXJ1bGUtaXMtYXV0by1zZW5kXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OklzQXV0b1NlbmQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInhzbHQtcnVsZS1ub3RlLXF1ZXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlJ1bGVRdWVyeScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeC1odG1sLWVkaXRvciAjZHhIdG1sRWRpdG9yIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJhdXRvLXNlbmQtcnVsZS1ub3RlLXF1ZXJ5LWh0bWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCIxMDBcIiBtYXhsZW5ndGg9XCI0MDk2XCIgZm9ybUNvbnRyb2xOYW1lPVwibm90ZVF1ZXJ5SFRNTFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGR4aS1tZW50aW9uIHZhbHVlRXhwcj1cInRleHRcIiBkaXNwbGF5RXhwcj1cInRleHRcIiBzZWFyY2hFeHByPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImh0bWxNZW50aW9uRGF0YVNvdXJjZVwiPjwvZHhpLW1lbnRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keC1odG1sLWVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImF1dG8tc2VuZC1ydWxlLWRlc2NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RGVzYycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJhdXRvLXNlbmQtcnVsZS1kZXNjXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNTEyXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJhdXRvLXNlbmQtcnVsZS1pcy1wYXNzaXZlXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNQYXNzaXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhdXRvLXNlbmQtcnVsZS1pcy1wYXNzaXZlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OklzUGFzc2l2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8aDQ+T3RvbWF0aWsgacWfbGVtIGt1cmFsIHNvcmd1bGFyxLFuZGEgQ09VTlQga3VsbGFuxLFtxLEgem9ydW5sdWR1ci48L2g0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZHhpLWl0ZW0+XHJcbiAgICAgICAgPGR4aS1pdGVtIHRpdGxlPVwie3sgJ2VEb251c3VtOjpTY2VuYXJpb3MnIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgaWNvbj1cImZhcyBmYS1wZW5jaWwtYWx0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjIwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhTY2VuYXJpb0luc3RhbmNlIFtkYXRhU291cmNlXT1cInNjZW5hcmlvRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiIGtleUV4cHI9XCJpZFwiIFsoc2VsZWN0ZWRSb3dLZXlzKV09XCJzZWxlY3RlZFNjZW5hcmlvc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJtdWx0aXBsZVwiIHNlbGVjdEFsbE1vZGU9XCJwYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRpc3BsYXlOYW1lXCIgY2FwdGlvbj1cInt7ICdlRG9udXN1bTo6TmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktaXRlbT5cclxuICAgICAgICA8ZHhpLWl0ZW0gdGl0bGU9XCJ7eyAnZURvbnVzdW06OkRvY1R5cGVzJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIGljb249XCJmYXMgZmEtZW52ZWxvcGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZmFkZS1pbi10b3BcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOjIwcHg7IG1hcmdpbi1ib3R0b206MjBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeERvY1R5cGVJbnN0YW5jZSBbZGF0YVNvdXJjZV09XCJkb2NUeXBlRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiIGtleUV4cHI9XCJpZFwiIFsoc2VsZWN0ZWRSb3dLZXlzKV09XCJzZWxlY3RlZERvY1R5cGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4by1zZWxlY3Rpb24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGlzcGxheU5hbWVcIiBjYXB0aW9uPVwie3sgJ2VEb251c3VtOjpOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1pdGVtPlxyXG4gICAgICA8L2R4LXRhYi1wYW5lbD5cclxuXHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cInByZXZpZXdRdWVyeSgpXCI+XHJcbiAgICAgIHt7ICdlRG9udXN1bTo6UHJldmlld1F1ZXJ5JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8IS0tIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgYnV0dG9uVHlwZT1cInN1Ym1pdFwiIGZvcm1OYW1lPVwibm90ZS1ydWxlXCI+XHJcbiAgICAgIHt7ICdBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYWJwLWJ1dHRvbj4gLS0+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgZm9ybU5hbWU9XCJ4c2x0LXJ1bGVcIiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCI+XHJcbiAgICAgIHt7ICdBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeVByZXZpZXdcIiBbKHZpc2libGUpXT1cImlzTW9kYWxPcGVuUHJldmlld1wiIFtvcHRpb25zXT1cInsgc2l6ZTogJ2xnJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+XHJcbiAgICAgIHt7IChzZWxlY3RlZCA/ICdBYnBVaTo6RWRpdCcgOiAnZURvbnVzdW06OlByZXZpZXdRdWVyeScpIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIGlkPVwibm90ZS1ydWxlLXByZXZpZXdcIj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNQYXJhbWV0ZXJsZXNzXCI+XHJcbiAgICAgICAgPGgzPnt7ICdlRG9udXN1bTo6UGFyYW1ldGVycycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2gzPlxyXG4gICAgICAgIDxocj5cclxuICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeFBhcmFtSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwicGFyYW1zRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCJcclxuICAgICAgICAgIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIiBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIlxyXG4gICAgICAgICAgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwidHJ1ZVwiIHN0eWxlPVwiaGVpZ2h0OiA0MHZoO1wiPlxyXG5cclxuICAgICAgICAgIDxkeG8tZWRpdGluZyBtb2RlPVwiY2VsbFwiIFt1c2VJY29uc109XCJmYWxzZVwiIFthbGxvd1VwZGF0aW5nXT1cInRydWVcIiBbYWxsb3dBZGRpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbYWxsb3dEZWxldGluZ109XCJmYWxzZVwiPlxyXG4gICAgICAgICAgPC9keG8tZWRpdGluZz5cclxuXHJcbiAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcblxyXG4gICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGFyYW1OYW1lXCIgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UGFyYW1OYW1lJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhcmFtVmFsdWVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlBhcmFtVmFsdWUnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgIDxicj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0O1wiIChjbGljayk9XCJydW5RdWVyeSgpXCI+XHJcbiAgICAgICAgICB7eyAnZURvbnVzdW06OlJ1blF1ZXJ5JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxicj48YnI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGgzPnt7ICdlRG9udXN1bTo6UXVlcnlSZXN1bHQnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9oMz5cclxuICAgICAgPGhyPlxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeFByZXZpZXcgW2RhdGFTb3VyY2VdPVwicHJldmlld0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDYwdmg7XCI+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG5cclxuICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuXHJcbiAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG5cclxuICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcblxyXG4gICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuXHJcbiAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG5cclxuICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+Il19
|