@hitsoft/abp.kadooglu 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/README.md +24 -0
  2. package/config/enums/index.d.ts +1 -0
  3. package/config/enums/route-names.d.ts +12 -0
  4. package/config/index.d.ts +5 -0
  5. package/config/kadooglu-config.module.d.ts +8 -0
  6. package/config/providers/hit-providers/hit-carrier-person-route.provider.d.ts +9 -0
  7. package/config/providers/hit-providers/hit-entry-weighing-route.provider.d.ts +9 -0
  8. package/config/providers/hit-providers/hit-factory-entry-route.provider.d.ts +9 -0
  9. package/config/providers/hit-providers/hit-gate-route.provider.d.ts +9 -0
  10. package/config/providers/hit-providers/hit-knt-item-esl-route.provider.d.ts +9 -0
  11. package/config/providers/hit-providers/hit-plate-route.provider.d.ts +9 -0
  12. package/config/providers/hit-providers/hit-route.provider.d.ts +8 -0
  13. package/config/providers/hit-providers/hit-scale-route.provider.d.ts +9 -0
  14. package/config/providers/hit-providers/hit-tanimlamalar-route.provider.d.ts +9 -0
  15. package/config/providers/hit-providers/hit-vehicle-type-route.provider.d.ts +9 -0
  16. package/config/providers/index.d.ts +1 -0
  17. package/config/providers/route.provider.d.ts +8 -0
  18. package/config/public-api.d.ts +3 -0
  19. package/esm2020/config/enums/index.mjs +2 -0
  20. package/esm2020/config/enums/route-names.mjs +2 -0
  21. package/esm2020/config/hitsoft-abp.kadooglu-config.mjs +5 -0
  22. package/esm2020/config/kadooglu-config.module.mjs +40 -0
  23. package/esm2020/config/providers/hit-providers/hit-carrier-person-route.provider.mjs +20 -0
  24. package/esm2020/config/providers/hit-providers/hit-entry-weighing-route.provider.mjs +20 -0
  25. package/esm2020/config/providers/hit-providers/hit-factory-entry-route.provider.mjs +20 -0
  26. package/esm2020/config/providers/hit-providers/hit-gate-route.provider.mjs +20 -0
  27. package/esm2020/config/providers/hit-providers/hit-knt-item-esl-route.provider.mjs +20 -0
  28. package/esm2020/config/providers/hit-providers/hit-plate-route.provider.mjs +20 -0
  29. package/esm2020/config/providers/hit-providers/hit-route.provider.mjs +24 -0
  30. package/esm2020/config/providers/hit-providers/hit-scale-route.provider.mjs +20 -0
  31. package/esm2020/config/providers/hit-providers/hit-tanimlamalar-route.provider.mjs +20 -0
  32. package/esm2020/config/providers/hit-providers/hit-vehicle-type-route.provider.mjs +20 -0
  33. package/esm2020/config/providers/index.mjs +2 -0
  34. package/esm2020/config/providers/route.provider.mjs +24 -0
  35. package/esm2020/config/public-api.mjs +4 -0
  36. package/esm2020/hitsoft-abp.kadooglu.mjs +5 -0
  37. package/esm2020/lib/components/kadooglu.component.mjs +18 -0
  38. package/esm2020/lib/hit-components/hit-carrier-person/hit-carrier-person-form/hit-carrier-person-form.component.mjs +160 -0
  39. package/esm2020/lib/hit-components/hit-carrier-person/hit-carrier-person-list/hit-carrier-person-list.component.mjs +101 -0
  40. package/esm2020/lib/hit-components/hit-carrier-person/hit-carrier-person-routing.module.mjs +21 -0
  41. package/esm2020/lib/hit-components/hit-carrier-person/hit-carrier-person.module.mjs +68 -0
  42. package/esm2020/lib/hit-components/hit-entry-weighing/hit-entry-weighing-form/hit-entry-weighing-form.component.mjs +544 -0
  43. package/esm2020/lib/hit-components/hit-entry-weighing/hit-entry-weighing-list/hit-entry-weighing-list.component.mjs +202 -0
  44. package/esm2020/lib/hit-components/hit-entry-weighing/hit-entry-weighing-routing.module.mjs +24 -0
  45. package/esm2020/lib/hit-components/hit-entry-weighing/hit-entry-weighing.module.mjs +77 -0
  46. package/esm2020/lib/hit-components/hit-factory-entry/hit-factory-entry-form/hit-factory-entry-form.component.mjs +380 -0
  47. package/esm2020/lib/hit-components/hit-factory-entry/hit-factory-entry-list/hit-factory-entry-list.component.mjs +115 -0
  48. package/esm2020/lib/hit-components/hit-factory-entry/hit-factory-entry-routing.module.mjs +21 -0
  49. package/esm2020/lib/hit-components/hit-factory-entry/hit-factory-entry.module.mjs +83 -0
  50. package/esm2020/lib/hit-components/hit-gate/hit-gate-form/hit-gate-form.component.mjs +148 -0
  51. package/esm2020/lib/hit-components/hit-gate/hit-gate-list/hit-gate-list.component.mjs +93 -0
  52. package/esm2020/lib/hit-components/hit-gate/hit-gate-routing.module.mjs +21 -0
  53. package/esm2020/lib/hit-components/hit-gate/hit-gate.module.mjs +71 -0
  54. package/esm2020/lib/hit-components/hit-knt-item-esl/hit-knt-item-esl-form/hit-knt-item-esl-form.component.mjs +140 -0
  55. package/esm2020/lib/hit-components/hit-knt-item-esl/hit-knt-item-esl-list/hit-knt-item-esl-list.component.mjs +78 -0
  56. package/esm2020/lib/hit-components/hit-knt-item-esl/hit-knt-item-esl-routing.module.mjs +21 -0
  57. package/esm2020/lib/hit-components/hit-knt-item-esl/hit-knt-item-esl.module.mjs +68 -0
  58. package/esm2020/lib/hit-components/hit-plate/hit-plate-form/hit-plate-form.component.mjs +102 -0
  59. package/esm2020/lib/hit-components/hit-plate/hit-plate-list/hit-plate-list.component.mjs +101 -0
  60. package/esm2020/lib/hit-components/hit-plate/hit-plate-routing.module.mjs +21 -0
  61. package/esm2020/lib/hit-components/hit-plate/hit-plate.module.mjs +68 -0
  62. package/esm2020/lib/hit-components/hit-scale/hit-scale-form/hit-scale-form.component.mjs +127 -0
  63. package/esm2020/lib/hit-components/hit-scale/hit-scale-list/hit-scale-list.component.mjs +106 -0
  64. package/esm2020/lib/hit-components/hit-scale/hit-scale-routing.module.mjs +21 -0
  65. package/esm2020/lib/hit-components/hit-scale/hit-scale.module.mjs +71 -0
  66. package/esm2020/lib/hit-components/hit-vehicle-type/hit-vehicle-type-form/hit-vehicle-type-form.component.mjs +143 -0
  67. package/esm2020/lib/hit-components/hit-vehicle-type/hit-vehicle-type-list/hit-vehicle-type-list.component.mjs +96 -0
  68. package/esm2020/lib/hit-components/hit-vehicle-type/hit-vehicle-type-routing.module.mjs +21 -0
  69. package/esm2020/lib/hit-components/hit-vehicle-type/hit-vehicle-type.module.mjs +68 -0
  70. package/esm2020/lib/hit-proxy/hit-business-partner/hit-business-partner.service.mjs +22 -0
  71. package/esm2020/lib/hit-proxy/hit-business-partner/models.mjs +2 -0
  72. package/esm2020/lib/hit-proxy/hit-carrier-person/hit-carrier-person.service.mjs +33 -0
  73. package/esm2020/lib/hit-proxy/hit-carrier-person/models.mjs +2 -0
  74. package/esm2020/lib/hit-proxy/hit-entry-weighing/hit-entry-weighing.service.mjs +95 -0
  75. package/esm2020/lib/hit-proxy/hit-entry-weighing/models.mjs +2 -0
  76. package/esm2020/lib/hit-proxy/hit-factory-entry/hit-factory-entry.service.mjs +34 -0
  77. package/esm2020/lib/hit-proxy/hit-factory-entry/models.mjs +2 -0
  78. package/esm2020/lib/hit-proxy/hit-gate/hit-gate.service.mjs +33 -0
  79. package/esm2020/lib/hit-proxy/hit-gate/models.mjs +2 -0
  80. package/esm2020/lib/hit-proxy/hit-item/hit-item.service.mjs +22 -0
  81. package/esm2020/lib/hit-proxy/hit-item/models.mjs +2 -0
  82. package/esm2020/lib/hit-proxy/hit-knt-item-esl/hit-knt-item-esl.service.mjs +33 -0
  83. package/esm2020/lib/hit-proxy/hit-knt-item-esl/models.mjs +2 -0
  84. package/esm2020/lib/hit-proxy/hit-plate/hit-plate.service.mjs +33 -0
  85. package/esm2020/lib/hit-proxy/hit-plate/models.mjs +2 -0
  86. package/esm2020/lib/hit-proxy/hit-purchase-delivery-note/hit-purchase-delivery-note.service.mjs +22 -0
  87. package/esm2020/lib/hit-proxy/hit-purchase-delivery-note/models.mjs +2 -0
  88. package/esm2020/lib/hit-proxy/hit-scale/hit-scale.service.mjs +33 -0
  89. package/esm2020/lib/hit-proxy/hit-scale/models.mjs +2 -0
  90. package/esm2020/lib/hit-proxy/hit-stock-transfer/hit-stock-transfer.service.mjs +22 -0
  91. package/esm2020/lib/hit-proxy/hit-stock-transfer/models.mjs +2 -0
  92. package/esm2020/lib/hit-proxy/hit-user-gate/hit-user-gate.service.mjs +31 -0
  93. package/esm2020/lib/hit-proxy/hit-user-gate/models.mjs +2 -0
  94. package/esm2020/lib/hit-proxy/hit-vehicle-type/hit-vehicle-type.service.mjs +33 -0
  95. package/esm2020/lib/hit-proxy/hit-vehicle-type/models.mjs +2 -0
  96. package/esm2020/lib/hit-proxy/hit-warehouse/hit-warehouse.service.mjs +21 -0
  97. package/esm2020/lib/hit-proxy/hit-warehouse/models.mjs +2 -0
  98. package/esm2020/lib/hit-proxy/models.mjs +2 -0
  99. package/esm2020/lib/kadooglu-routing.module.mjs +41 -0
  100. package/esm2020/lib/kadooglu.module.mjs +49 -0
  101. package/esm2020/lib/services/kadooglu.service.mjs +21 -0
  102. package/esm2020/lib/shared/hit-modal/hit-modal.component.mjs +110 -0
  103. package/esm2020/lib/shared/hit-modal/hit-ui.module.mjs +35 -0
  104. package/esm2020/public-api.mjs +9 -0
  105. package/fesm2015/hitsoft-abp.kadooglu-config.mjs +243 -0
  106. package/fesm2015/hitsoft-abp.kadooglu-config.mjs.map +1 -0
  107. package/fesm2015/hitsoft-abp.kadooglu.mjs +3774 -0
  108. package/fesm2015/hitsoft-abp.kadooglu.mjs.map +1 -0
  109. package/fesm2020/hitsoft-abp.kadooglu-config.mjs +243 -0
  110. package/fesm2020/hitsoft-abp.kadooglu-config.mjs.map +1 -0
  111. package/fesm2020/hitsoft-abp.kadooglu.mjs +3728 -0
  112. package/fesm2020/hitsoft-abp.kadooglu.mjs.map +1 -0
  113. package/index.d.ts +5 -0
  114. package/lib/components/kadooglu.component.d.ts +10 -0
  115. package/lib/hit-components/hit-carrier-person/hit-carrier-person-form/hit-carrier-person-form.component.d.ts +49 -0
  116. package/lib/hit-components/hit-carrier-person/hit-carrier-person-list/hit-carrier-person-list.component.d.ts +30 -0
  117. package/lib/hit-components/hit-carrier-person/hit-carrier-person-routing.module.d.ts +7 -0
  118. package/lib/hit-components/hit-carrier-person/hit-carrier-person.module.d.ts +19 -0
  119. package/lib/hit-components/hit-entry-weighing/hit-entry-weighing-form/hit-entry-weighing-form.component.d.ts +200 -0
  120. package/lib/hit-components/hit-entry-weighing/hit-entry-weighing-list/hit-entry-weighing-list.component.d.ts +46 -0
  121. package/lib/hit-components/hit-entry-weighing/hit-entry-weighing-routing.module.d.ts +7 -0
  122. package/lib/hit-components/hit-entry-weighing/hit-entry-weighing.module.d.ts +19 -0
  123. package/lib/hit-components/hit-factory-entry/hit-factory-entry-form/hit-factory-entry-form.component.d.ts +119 -0
  124. package/lib/hit-components/hit-factory-entry/hit-factory-entry-list/hit-factory-entry-list.component.d.ts +32 -0
  125. package/lib/hit-components/hit-factory-entry/hit-factory-entry-routing.module.d.ts +7 -0
  126. package/lib/hit-components/hit-factory-entry/hit-factory-entry.module.d.ts +19 -0
  127. package/lib/hit-components/hit-gate/hit-gate-form/hit-gate-form.component.d.ts +42 -0
  128. package/lib/hit-components/hit-gate/hit-gate-list/hit-gate-list.component.d.ts +29 -0
  129. package/lib/hit-components/hit-gate/hit-gate-routing.module.d.ts +7 -0
  130. package/lib/hit-components/hit-gate/hit-gate.module.d.ts +19 -0
  131. package/lib/hit-components/hit-knt-item-esl/hit-knt-item-esl-form/hit-knt-item-esl-form.component.d.ts +46 -0
  132. package/lib/hit-components/hit-knt-item-esl/hit-knt-item-esl-list/hit-knt-item-esl-list.component.d.ts +27 -0
  133. package/lib/hit-components/hit-knt-item-esl/hit-knt-item-esl-routing.module.d.ts +7 -0
  134. package/lib/hit-components/hit-knt-item-esl/hit-knt-item-esl.module.d.ts +19 -0
  135. package/lib/hit-components/hit-plate/hit-plate-form/hit-plate-form.component.d.ts +29 -0
  136. package/lib/hit-components/hit-plate/hit-plate-list/hit-plate-list.component.d.ts +30 -0
  137. package/lib/hit-components/hit-plate/hit-plate-routing.module.d.ts +7 -0
  138. package/lib/hit-components/hit-plate/hit-plate.module.d.ts +19 -0
  139. package/lib/hit-components/hit-scale/hit-scale-form/hit-scale-form.component.d.ts +44 -0
  140. package/lib/hit-components/hit-scale/hit-scale-list/hit-scale-list.component.d.ts +41 -0
  141. package/lib/hit-components/hit-scale/hit-scale-routing.module.d.ts +7 -0
  142. package/lib/hit-components/hit-scale/hit-scale.module.d.ts +19 -0
  143. package/lib/hit-components/hit-vehicle-type/hit-vehicle-type-form/hit-vehicle-type-form.component.d.ts +46 -0
  144. package/lib/hit-components/hit-vehicle-type/hit-vehicle-type-list/hit-vehicle-type-list.component.d.ts +29 -0
  145. package/lib/hit-components/hit-vehicle-type/hit-vehicle-type-routing.module.d.ts +7 -0
  146. package/lib/hit-components/hit-vehicle-type/hit-vehicle-type.module.d.ts +19 -0
  147. package/lib/hit-proxy/hit-business-partner/hit-business-partner.service.d.ts +13 -0
  148. package/lib/hit-proxy/hit-business-partner/models.d.ts +5 -0
  149. package/lib/hit-proxy/hit-carrier-person/hit-carrier-person.service.d.ts +17 -0
  150. package/lib/hit-proxy/hit-carrier-person/models.d.ts +22 -0
  151. package/lib/hit-proxy/hit-entry-weighing/hit-entry-weighing.service.d.ts +49 -0
  152. package/lib/hit-proxy/hit-entry-weighing/models.d.ts +107 -0
  153. package/lib/hit-proxy/hit-factory-entry/hit-factory-entry.service.d.ts +17 -0
  154. package/lib/hit-proxy/hit-factory-entry/models.d.ts +40 -0
  155. package/lib/hit-proxy/hit-gate/hit-gate.service.d.ts +17 -0
  156. package/lib/hit-proxy/hit-gate/models.d.ts +10 -0
  157. package/lib/hit-proxy/hit-item/hit-item.service.d.ts +13 -0
  158. package/lib/hit-proxy/hit-item/models.d.ts +4 -0
  159. package/lib/hit-proxy/hit-knt-item-esl/hit-knt-item-esl.service.d.ts +21 -0
  160. package/lib/hit-proxy/hit-knt-item-esl/models.d.ts +16 -0
  161. package/lib/hit-proxy/hit-plate/hit-plate.service.d.ts +17 -0
  162. package/lib/hit-proxy/hit-plate/models.d.ts +14 -0
  163. package/lib/hit-proxy/hit-purchase-delivery-note/hit-purchase-delivery-note.service.d.ts +13 -0
  164. package/lib/hit-proxy/hit-purchase-delivery-note/models.d.ts +9 -0
  165. package/lib/hit-proxy/hit-scale/hit-scale.service.d.ts +17 -0
  166. package/lib/hit-proxy/hit-scale/models.d.ts +20 -0
  167. package/lib/hit-proxy/hit-stock-transfer/hit-stock-transfer.service.d.ts +13 -0
  168. package/lib/hit-proxy/hit-stock-transfer/models.d.ts +15 -0
  169. package/lib/hit-proxy/hit-user-gate/hit-user-gate.service.d.ts +18 -0
  170. package/lib/hit-proxy/hit-user-gate/models.d.ts +7 -0
  171. package/lib/hit-proxy/hit-vehicle-type/hit-vehicle-type.service.d.ts +17 -0
  172. package/lib/hit-proxy/hit-vehicle-type/models.d.ts +18 -0
  173. package/lib/hit-proxy/hit-warehouse/hit-warehouse.service.d.ts +13 -0
  174. package/lib/hit-proxy/hit-warehouse/models.d.ts +4 -0
  175. package/lib/hit-proxy/models.d.ts +8 -0
  176. package/lib/kadooglu-routing.module.d.ts +7 -0
  177. package/lib/kadooglu.module.d.ts +17 -0
  178. package/lib/services/kadooglu.service.d.ts +10 -0
  179. package/lib/shared/hit-modal/hit-modal.component.d.ts +30 -0
  180. package/lib/shared/hit-modal/hit-ui.module.d.ts +11 -0
  181. package/package.json +41 -0
  182. package/public-api.d.ts +4 -0
@@ -0,0 +1,115 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@abp/ng.theme.shared";
4
+ import * as i2 from "../../../hit-proxy/hit-factory-entry/hit-factory-entry.service";
5
+ import * as i3 from "../../../hit-proxy/hit-vehicle-type/hit-vehicle-type.service";
6
+ import * as i4 from "@abp/ng.core";
7
+ import * as i5 from "@angular/common";
8
+ import * as i6 from "@abp/ng.components/page";
9
+ import * as i7 from "devextreme-angular";
10
+ import * as i8 from "devextreme-angular/ui/nested";
11
+ import * as i9 from "devextreme-angular/core";
12
+ import * as i10 from "@ng-bootstrap/ng-bootstrap";
13
+ import * as i11 from "../hit-factory-entry-form/hit-factory-entry-form.component";
14
+ export class HitFactoryEntryListComponent {
15
+ constructor(confirmation, service, vehicleTypeService, localizationService) {
16
+ this.confirmation = confirmation;
17
+ this.service = service;
18
+ this.vehicleTypeService = vehicleTypeService;
19
+ this.localizationService = localizationService;
20
+ this.filteredData = [];
21
+ this.vehicleTypeMap = new Map();
22
+ this.showForm = false;
23
+ this.disabledIdColumn = false;
24
+ this.selectedRecord = null;
25
+ }
26
+ ngOnInit() {
27
+ this.vehicleTypeService.getList().subscribe(types => {
28
+ this.vehicleTypeMap = new Map(types.map(t => [t.code, t.name]));
29
+ });
30
+ this.loadList();
31
+ }
32
+ loadList() {
33
+ this.service.getList().subscribe(data => {
34
+ this.filteredData = data;
35
+ });
36
+ }
37
+ onToolbarPreparing(e) {
38
+ e.toolbarOptions.items.unshift({
39
+ location: 'after',
40
+ widget: 'dxButton',
41
+ options: {
42
+ icon: 'plus',
43
+ text: this.localizationService.instant('Kadooglu::NewRecord'),
44
+ type: 'default',
45
+ onClick: () => this.yeniKayit(),
46
+ },
47
+ });
48
+ }
49
+ yeniKayit() {
50
+ this.selectedRecord = null;
51
+ this.showForm = true;
52
+ }
53
+ duzenle(row) {
54
+ this.selectedRecord = { ...row };
55
+ this.showForm = true;
56
+ }
57
+ sil(row) {
58
+ this.confirmation
59
+ .warn(`"${row.u_Plate}" plakalı kaydı silmek istediğinize emin misiniz?`, '', {
60
+ yesText: 'Evet',
61
+ cancelText: 'Hayır',
62
+ })
63
+ .subscribe(status => {
64
+ if (status === 'confirm') {
65
+ this.service.delete(row.docEntry.toString()).subscribe(() => this.loadList());
66
+ }
67
+ });
68
+ }
69
+ onFormSaved() {
70
+ this.showForm = false;
71
+ this.loadList();
72
+ }
73
+ onFormCancelled() {
74
+ this.showForm = false;
75
+ }
76
+ formatEntryDateTime(dateStr, timeNum) {
77
+ if (!dateStr)
78
+ return '';
79
+ // Tarihi yerel saat olarak parse et (UTC yorumunu önlemek için T00:00 eklenmeden)
80
+ const parts = dateStr.split('T')[0].split('-');
81
+ if (parts.length < 3)
82
+ return dateStr;
83
+ const d = new Date(+parts[0], +parts[1] - 1, +parts[2]);
84
+ if (isNaN(d.getTime()))
85
+ return dateStr;
86
+ if (timeNum != null) {
87
+ d.setHours(Math.floor(timeNum / 100), timeNum % 100, 0, 0);
88
+ }
89
+ const dd = String(d.getDate()).padStart(2, '0');
90
+ const mm = String(d.getMonth() + 1).padStart(2, '0');
91
+ const yyyy = d.getFullYear();
92
+ const hh = String(d.getHours()).padStart(2, '0');
93
+ const min = String(d.getMinutes()).padStart(2, '0');
94
+ return `${dd}.${mm}.${yyyy} ${hh}:${min}`;
95
+ }
96
+ formatPlate(plate) {
97
+ if (!plate)
98
+ return '';
99
+ const p = plate.replace(/\s+/g, '').toUpperCase();
100
+ const match = p.match(/^(\d{2})([A-ZÇĞİÖŞÜ]{1,3})(\d{1,4})$/);
101
+ return match ? `${match[1]} ${match[2]} ${match[3]}` : plate;
102
+ }
103
+ getVehicleTypeName(code) {
104
+ if (!code)
105
+ return '';
106
+ return this.vehicleTypeMap.get(code) ?? code;
107
+ }
108
+ }
109
+ HitFactoryEntryListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFactoryEntryListComponent, deps: [{ token: i1.ConfirmationService }, { token: i2.HitFactoryEntryService }, { token: i3.HitVehicleTypeService }, { token: i4.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
110
+ HitFactoryEntryListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitFactoryEntryListComponent, selector: "lib-hit-factory-entry-list", ngImport: i0, template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col\">\r\n <h3 class=\"page-title\">{{ 'Kadooglu::FactoryEntryTitle' | abpLocalization }}</h3>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\">\r\n\r\n <!-- Grid -->\r\n <dx-data-grid\r\n [dataSource]=\"filteredData\"\r\n [columnAutoWidth]=\"true\"\r\n [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n [rowAlternationEnabled]=\"true\"\r\n keyExpr=\"docEntry\"\r\n (onToolbarPreparing)=\"onToolbarPreparing($event)\"\r\n style=\"height: calc(100vh - 280px);\">\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\r\n <dxo-search-panel [visible]=\"true\" [width]=\"200\" [placeholder]=\"'Kadooglu::Ara' | abpLocalization\"></dxo-search-panel>\r\n\r\n <dxo-pager\r\n [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n [allowedPageSizes]=\"[10, 20, 50]\"\r\n [showPageSizeSelector]=\"true\"\r\n [showNavigationButtons]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\r\n\r\n <dxi-column [fixed]=\"true\" dataField=\"docEntry\" 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\"\r\n aria-haspopup=\"true\" 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)=\"duzenle(row.data)\">\r\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i> {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n\r\n <dxi-column\r\n dataField=\"u_EntryDate\"\r\n caption=\"{{ 'Kadooglu::EntryDateTime' | abpLocalization }}\"\r\n cellTemplate=\"entryDateTemplate\">\r\n </dxi-column>\r\n\r\n <dxi-column dataField=\"u_EntryType\" caption=\"Ara\u00E7 Hareket T\u00FCr\u00FC\"\r\n cellTemplate=\"vehicleTypeTemplate\">\r\n </dxi-column>\r\n <dxi-column dataField=\"u_Plate\" caption=\"{{ 'Kadooglu::Plate' | abpLocalization }}\" cellTemplate=\"plateTemplate\"></dxi-column>\r\n <dxi-column dataField=\"u_DorsePlate\" caption=\"{{ 'Kadooglu::DorsePlate' | abpLocalization }}\" cellTemplate=\"dorsePlateTemplate\"></dxi-column>\r\n <dxi-column dataField=\"u_Driver\" caption=\"{{ 'Kadooglu::Driver' | abpLocalization }}\"></dxi-column>\r\n <dxi-column dataField=\"u_TcNo\" caption=\"{{ 'Kadooglu::TcIdentityNo' | abpLocalization }}\"></dxi-column>\r\n <dxi-column dataField=\"u_CardCode\" caption=\"{{ 'Kadooglu::BusinessPartner' | abpLocalization }}\"></dxi-column>\r\n\r\n <div *dxTemplate=\"let cell of 'vehicleTypeTemplate'\">\r\n {{ getVehicleTypeName(cell.data.u_EntryType) }}\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'entryDateTemplate'\">\r\n {{ formatEntryDateTime(cell.data.u_EntryDate, cell.data.u_EntryTime) }}\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'plateTemplate'\">\r\n <span *ngIf=\"cell.data.u_Plate\" class=\"tr-plate\">\r\n <span class=\"tr-plate-blue\">TR</span>\r\n <span class=\"tr-plate-text\">{{ formatPlate(cell.data.u_Plate) }}</span>\r\n </span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'dorsePlateTemplate'\">\r\n <span *ngIf=\"cell.data.u_DorsePlate\" class=\"tr-plate\">\r\n <span class=\"tr-plate-blue\">TR</span>\r\n <span class=\"tr-plate-text\">{{ formatPlate(cell.data.u_DorsePlate) }}</span>\r\n </span>\r\n </div>\r\n </dx-data-grid>\r\n\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<lib-hit-factory-entry-form\r\n [(visible)]=\"showForm\"\r\n [record]=\"selectedRecord\"\r\n (saved)=\"onFormSaved()\"\r\n (cancelled)=\"onFormCancelled()\">\r\n</lib-hit-factory-entry-form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i6.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i7.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: i8.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: i8.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i8.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i8.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i8.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i8.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "directive", type: i9.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "directive", type: i10.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i10.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i10.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i10.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i11.HitFactoryEntryFormComponent, selector: "lib-hit-factory-entry-form", inputs: ["visible", "record"], outputs: ["visibleChange", "saved", "cancelled"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] });
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFactoryEntryListComponent, decorators: [{
112
+ type: Component,
113
+ args: [{ selector: 'lib-hit-factory-entry-list', template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col\">\r\n <h3 class=\"page-title\">{{ 'Kadooglu::FactoryEntryTitle' | abpLocalization }}</h3>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\">\r\n\r\n <!-- Grid -->\r\n <dx-data-grid\r\n [dataSource]=\"filteredData\"\r\n [columnAutoWidth]=\"true\"\r\n [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n [rowAlternationEnabled]=\"true\"\r\n keyExpr=\"docEntry\"\r\n (onToolbarPreparing)=\"onToolbarPreparing($event)\"\r\n style=\"height: calc(100vh - 280px);\">\r\n\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\r\n <dxo-search-panel [visible]=\"true\" [width]=\"200\" [placeholder]=\"'Kadooglu::Ara' | abpLocalization\"></dxo-search-panel>\r\n\r\n <dxo-pager\r\n [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n [allowedPageSizes]=\"[10, 20, 50]\"\r\n [showPageSizeSelector]=\"true\"\r\n [showNavigationButtons]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\r\n\r\n <dxi-column [fixed]=\"true\" dataField=\"docEntry\" 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\"\r\n aria-haspopup=\"true\" 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)=\"duzenle(row.data)\">\r\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i> {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n\r\n <dxi-column\r\n dataField=\"u_EntryDate\"\r\n caption=\"{{ 'Kadooglu::EntryDateTime' | abpLocalization }}\"\r\n cellTemplate=\"entryDateTemplate\">\r\n </dxi-column>\r\n\r\n <dxi-column dataField=\"u_EntryType\" caption=\"Ara\u00E7 Hareket T\u00FCr\u00FC\"\r\n cellTemplate=\"vehicleTypeTemplate\">\r\n </dxi-column>\r\n <dxi-column dataField=\"u_Plate\" caption=\"{{ 'Kadooglu::Plate' | abpLocalization }}\" cellTemplate=\"plateTemplate\"></dxi-column>\r\n <dxi-column dataField=\"u_DorsePlate\" caption=\"{{ 'Kadooglu::DorsePlate' | abpLocalization }}\" cellTemplate=\"dorsePlateTemplate\"></dxi-column>\r\n <dxi-column dataField=\"u_Driver\" caption=\"{{ 'Kadooglu::Driver' | abpLocalization }}\"></dxi-column>\r\n <dxi-column dataField=\"u_TcNo\" caption=\"{{ 'Kadooglu::TcIdentityNo' | abpLocalization }}\"></dxi-column>\r\n <dxi-column dataField=\"u_CardCode\" caption=\"{{ 'Kadooglu::BusinessPartner' | abpLocalization }}\"></dxi-column>\r\n\r\n <div *dxTemplate=\"let cell of 'vehicleTypeTemplate'\">\r\n {{ getVehicleTypeName(cell.data.u_EntryType) }}\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'entryDateTemplate'\">\r\n {{ formatEntryDateTime(cell.data.u_EntryDate, cell.data.u_EntryTime) }}\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'plateTemplate'\">\r\n <span *ngIf=\"cell.data.u_Plate\" class=\"tr-plate\">\r\n <span class=\"tr-plate-blue\">TR</span>\r\n <span class=\"tr-plate-text\">{{ formatPlate(cell.data.u_Plate) }}</span>\r\n </span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let cell of 'dorsePlateTemplate'\">\r\n <span *ngIf=\"cell.data.u_DorsePlate\" class=\"tr-plate\">\r\n <span class=\"tr-plate-blue\">TR</span>\r\n <span class=\"tr-plate-text\">{{ formatPlate(cell.data.u_DorsePlate) }}</span>\r\n </span>\r\n </div>\r\n </dx-data-grid>\r\n\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n<lib-hit-factory-entry-form\r\n [(visible)]=\"showForm\"\r\n [record]=\"selectedRecord\"\r\n (saved)=\"onFormSaved()\"\r\n (cancelled)=\"onFormCancelled()\">\r\n</lib-hit-factory-entry-form>\r\n" }]
114
+ }], ctorParameters: function () { return [{ type: i1.ConfirmationService }, { type: i2.HitFactoryEntryService }, { type: i3.HitVehicleTypeService }, { type: i4.LocalizationService }]; } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZhY3RvcnktZW50cnktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS9zcmMvbGliL2hpdC1jb21wb25lbnRzL2hpdC1mYWN0b3J5LWVudHJ5L2hpdC1mYWN0b3J5LWVudHJ5LWxpc3QvaGl0LWZhY3RvcnktZW50cnktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS9zcmMvbGliL2hpdC1jb21wb25lbnRzL2hpdC1mYWN0b3J5LWVudHJ5L2hpdC1mYWN0b3J5LWVudHJ5LWxpc3QvaGl0LWZhY3RvcnktZW50cnktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBWWxELE1BQU0sT0FBTyw0QkFBNEI7SUFRdkMsWUFDVSxZQUFpQyxFQUNqQyxPQUErQixFQUMvQixrQkFBeUMsRUFDekMsbUJBQXdDO1FBSHhDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxZQUFPLEdBQVAsT0FBTyxDQUF3QjtRQUMvQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVCO1FBQ3pDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFYbEQsaUJBQVksR0FBbUIsRUFBRSxDQUFDO1FBQ2xDLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFFM0MsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsbUJBQWMsR0FBd0IsSUFBSSxDQUFDO0lBT3hDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsY0FBYyxH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LEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDL0QsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQXdCO1FBQ3pDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDL0MsQ0FBQzs7eUhBckdVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLGtFQ1p6Qyw4NkpBMEdBOzJGRDlGYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IEhpdEZhY3RvcnlFbnRyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9oaXQtcHJveHkvaGl0LWZhY3RvcnktZW50cnkvaGl0LWZhY3RvcnktZW50cnkuc2VydmljZSc7XHJcbmltcG9ydCB7IEZhY3RvcnlFbnRyeSB9IGZyb20gJy4uLy4uLy4uL2hpdC1wcm94eS9oaXQtZmFjdG9yeS1lbnRyeS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBIaXRWZWhpY2xlVHlwZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9oaXQtcHJveHkvaGl0LXZlaGljbGUtdHlwZS9oaXQtdmVoaWNsZS10eXBlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGl0LWZhY3RvcnktZW50cnktbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1mYWN0b3J5LWVudHJ5LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hpdC1mYWN0b3J5LWVudHJ5LWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdEZhY3RvcnlFbnRyeUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGZpbHRlcmVkRGF0YTogRmFjdG9yeUVudHJ5W10gPSBbXTtcclxuICB2ZWhpY2xlVHlwZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblxyXG4gIHNob3dGb3JtID0gZmFsc2U7XHJcbiAgZGlzYWJsZWRJZENvbHVtbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkUmVjb3JkOiBGYWN0b3J5RW50cnkgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgc2VydmljZTogSGl0RmFjdG9yeUVudHJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgdmVoaWNsZVR5cGVTZXJ2aWNlOiBIaXRWZWhpY2xlVHlwZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52ZWhpY2xlVHlwZVNlcnZpY2UuZ2V0TGlzdCgpLnN1YnNjcmliZSh0eXBlcyA9PiB7XHJcbiAgICAgIHRoaXMudmVoaWNsZVR5cGVNYXAgPSBuZXcgTWFwKHR5cGVzLm1hcCh0ID0+IFt0LmNvZGUsIHQubmFtZV0pKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5sb2FkTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgbG9hZExpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0TGlzdCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBkYXRhO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblRvb2xiYXJQcmVwYXJpbmcoZTogYW55KTogdm9pZCB7XHJcbiAgICBlLnRvb2xiYXJPcHRpb25zLml0ZW1zLnVuc2hpZnQoe1xyXG4gICAgICBsb2NhdGlvbjogJ2FmdGVyJyxcclxuICAgICAgd2lkZ2V0OiAnZHhCdXR0b24nLFxyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgaWNvbjogJ3BsdXMnLFxyXG4gICAgICAgIHRleHQ6IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6TmV3UmVjb3JkJyksXHJcbiAgICAgICAgdHlwZTogJ2RlZmF1bHQnLFxyXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHRoaXMueWVuaUtheWl0KCksXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHllbmlLYXlpdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQgPSBudWxsO1xyXG4gICAgdGhpcy5zaG93Rm9ybSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBkdXplbmxlKHJvdzogRmFjdG9yeUVudHJ5KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmVjb3JkID0geyAuLi5yb3cgfTtcclxuICAgIHRoaXMuc2hvd0Zvcm0gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc2lsKHJvdzogRmFjdG9yeUVudHJ5KTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAud2FybihgXCIke3Jvdy51X1BsYXRlfVwiIHBsYWthbMSxIGtheWTEsSBzaWxtZWsgaXN0ZWRpxJ9pbml6ZSBlbWluIG1pc2luaXo/YCwgJycsIHtcclxuICAgICAgICB5ZXNUZXh0OiAnRXZldCcsXHJcbiAgICAgICAgY2FuY2VsVGV4dDogJ0hhecSxcicsXHJcbiAgICAgIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoc3RhdHVzID0+IHtcclxuICAgICAgICBpZiAoc3RhdHVzID09PSAnY29uZmlybScpIHtcclxuICAgICAgICAgIHRoaXMuc2VydmljZS5kZWxldGUocm93LmRvY0VudHJ5LnRvU3RyaW5nKCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvYWRMaXN0KCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkZvcm1TYXZlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcclxuICAgIHRoaXMubG9hZExpc3QoKTtcclxuICB9XHJcblxyXG4gIG9uRm9ybUNhbmNlbGxlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGZvcm1hdEVudHJ5RGF0ZVRpbWUoZGF0ZVN0cjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgdGltZU51bTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWRhdGVTdHIpIHJldHVybiAnJztcclxuICAgIC8vIFRhcmloaSB5ZXJlbCBzYWF0IG9sYXJhayBwYXJzZSBldCAoVVRDIHlvcnVtdW51IMO2bmxlbWVrIGnDp2luIFQwMDowMCBla2xlbm1lZGVuKVxyXG4gICAgY29uc3QgcGFydHMgPSBkYXRlU3RyLnNwbGl0KCdUJylbMF0uc3BsaXQoJy0nKTtcclxuICAgIGlmIChwYXJ0cy5sZW5ndGggPCAzKSByZXR1cm4gZGF0ZVN0cjtcclxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSgrcGFydHNbMF0sICtwYXJ0c1sxXSAtIDEsICtwYXJ0c1syXSk7XHJcbiAgICBpZiAoaXNOYU4oZC5nZXRUaW1lKCkpKSByZXR1cm4gZGF0ZVN0cjtcclxuICAgIGlmICh0aW1lTnVtICE9IG51bGwpIHtcclxuICAgICAgZC5zZXRIb3VycyhNYXRoLmZsb29yKHRpbWVOdW0gLyAxMDApLCB0aW1lTnVtICUgMTAwLCAwLCAwKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGRkICAgPSBTdHJpbmcoZC5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBtbSAgID0gU3RyaW5nKGQuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCB5eXl5ID0gZC5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgaGggICA9IFN0cmluZyhkLmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBtaW4gID0gU3RyaW5nKGQuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgcmV0dXJuIGAke2RkfS4ke21tfS4ke3l5eXl9ICR7aGh9OiR7bWlufWA7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRQbGF0ZShwbGF0ZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXBsYXRlKSByZXR1cm4gJyc7XHJcbiAgICBjb25zdCBwID0gcGxhdGUucmVwbGFjZSgvXFxzKy9nLCAnJykudG9VcHBlckNhc2UoKTtcclxuICAgIGNvbnN0IG1hdGNoID0gcC5tYXRjaCgvXihcXGR7Mn0pKFtBLVrDh8SexLDDlsWew5xdezEsM30pKFxcZHsxLDR9KSQvKTtcclxuICAgIHJldHVybiBtYXRjaCA/IGAke21hdGNoWzFdfSAke21hdGNoWzJdfSAke21hdGNoWzNdfWAgOiBwbGF0ZTtcclxuICB9XHJcblxyXG4gIGdldFZlaGljbGVUeXBlTmFtZShjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFjb2RlKSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gdGhpcy52ZWhpY2xlVHlwZU1hcC5nZXQoY29kZSkgPz8gY29kZTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFticmVhZGNydW1iXT1cImZhbHNlXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwicGFnZS10aXRsZVwiPnt7ICdLYWRvb2dsdTo6RmFjdG9yeUVudHJ5VGl0bGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9oMz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcblxyXG4gICAgICA8IS0tIEdyaWQgLS0+XHJcbiAgICAgIDxkeC1kYXRhLWdyaWRcclxuICAgICAgICBbZGF0YVNvdXJjZV09XCJmaWx0ZXJlZERhdGFcIlxyXG4gICAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxyXG4gICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiXHJcbiAgICAgICAgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBrZXlFeHByPVwiZG9jRW50cnlcIlxyXG4gICAgICAgIChvblRvb2xiYXJQcmVwYXJpbmcpPVwib25Ub29sYmFyUHJlcGFyaW5nKCRldmVudClcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjgwcHgpO1wiPlxyXG5cclxuICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG4gICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsIFt2aXNpYmxlXT1cInRydWVcIiBbd2lkdGhdPVwiMjAwXCIgW3BsYWNlaG9sZGVyXT1cIidLYWRvb2dsdTo6QXJhJyB8IGFicExvY2FsaXphdGlvblwiPjwvZHhvLXNlYXJjaC1wYW5lbD5cclxuXHJcbiAgICAgICAgPGR4by1wYWdlclxyXG4gICAgICAgICAgW3Zpc2libGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbc2hvd0luZm9dPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbYWxsb3dlZFBhZ2VTaXplc109XCJbMTAsIDIwLCA1MF1cIlxyXG4gICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIlxyXG4gICAgICAgICAgW3Nob3dOYXZpZ2F0aW9uQnV0dG9uc109XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keG8tcGFnZXI+XHJcbiAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjEwXCI+PC9keG8tcGFnaW5nPlxyXG5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBbZml4ZWRdPVwidHJ1ZVwiIGRhdGFGaWVsZD1cImRvY0VudHJ5XCIgd2lkdGg9XCIxMjBcIiBbYWxsb3dHcm91cGluZ109XCJmYWxzZVwiIFthbGxvd0ZpbHRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFthbGxvd0hlYWRlckZpbHRlcmluZ109XCJmYWxzZVwiIFthbGxvd0hpZGluZ109XCJmYWxzZVwiIFthbGxvd1Jlb3JkZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiIGNhcHRpb249XCJ7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBuZ2JEcm9wZG93blRvZ2dsZSBbZGlzYWJsZWRdPVwiZGlzYWJsZWRJZENvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZyBtci0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJkdXplbmxlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICAgICAgPGR4aS1jb2x1bW5cclxuICAgICAgICAgIGRhdGFGaWVsZD1cInVfRW50cnlEYXRlXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eyAnS2Fkb29nbHU6OkVudHJ5RGF0ZVRpbWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XCJcclxuICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cImVudHJ5RGF0ZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ1X0VudHJ5VHlwZVwiIGNhcHRpb249XCJBcmHDpyBIYXJla2V0IFTDvHLDvFwiXHJcbiAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJ2ZWhpY2xlVHlwZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInVfUGxhdGVcIiBjYXB0aW9uPVwie3sgJ0thZG9vZ2x1OjpQbGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIiBjZWxsVGVtcGxhdGU9XCJwbGF0ZVRlbXBsYXRlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInVfRG9yc2VQbGF0ZVwiIGNhcHRpb249XCJ7eyAnS2Fkb29nbHU6OkRvcnNlUGxhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgY2VsbFRlbXBsYXRlPVwiZG9yc2VQbGF0ZVRlbXBsYXRlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInVfRHJpdmVyXCIgY2FwdGlvbj1cInt7ICdLYWRvb2dsdTo6RHJpdmVyJyB8IGFicExvY2FsaXphdGlvbiB9fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ1X1RjTm9cIiBjYXB0aW9uPVwie3sgJ0thZG9vZ2x1OjpUY0lkZW50aXR5Tm8nIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInVfQ2FyZENvZGVcIiBjYXB0aW9uPVwie3sgJ0thZG9vZ2x1OjpCdXNpbmVzc1BhcnRuZXInIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+PC9keGktY29sdW1uPlxyXG5cclxuICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGNlbGwgb2YgJ3ZlaGljbGVUeXBlVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICB7eyBnZXRWZWhpY2xlVHlwZU5hbWUoY2VsbC5kYXRhLnVfRW50cnlUeXBlKSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGNlbGwgb2YgJ2VudHJ5RGF0ZVRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAge3sgZm9ybWF0RW50cnlEYXRlVGltZShjZWxsLmRhdGEudV9FbnRyeURhdGUsIGNlbGwuZGF0YS51X0VudHJ5VGltZSkgfX1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsIG9mICdwbGF0ZVRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJjZWxsLmRhdGEudV9QbGF0ZVwiIGNsYXNzPVwidHItcGxhdGVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ci1wbGF0ZS1ibHVlXCI+VFI8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHItcGxhdGUtdGV4dFwiPnt7IGZvcm1hdFBsYXRlKGNlbGwuZGF0YS51X1BsYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsIG9mICdkb3JzZVBsYXRlVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImNlbGwuZGF0YS51X0RvcnNlUGxhdGVcIiBjbGFzcz1cInRyLXBsYXRlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHItcGxhdGUtYmx1ZVwiPlRSPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRyLXBsYXRlLXRleHRcIj57eyBmb3JtYXRQbGF0ZShjZWxsLmRhdGEudV9Eb3JzZVBsYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvYWJwLXBhZ2U+XHJcblxyXG48bGliLWhpdC1mYWN0b3J5LWVudHJ5LWZvcm1cclxuICBbKHZpc2libGUpXT1cInNob3dGb3JtXCJcclxuICBbcmVjb3JkXT1cInNlbGVjdGVkUmVjb3JkXCJcclxuICAoc2F2ZWQpPVwib25Gb3JtU2F2ZWQoKVwiXHJcbiAgKGNhbmNlbGxlZCk9XCJvbkZvcm1DYW5jZWxsZWQoKVwiPlxyXG48L2xpYi1oaXQtZmFjdG9yeS1lbnRyeS1mb3JtPlxyXG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ import { HitFactoryEntryListComponent } from './hit-factory-entry-list/hit-factory-entry-list.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ const routes = [
7
+ { path: '', component: HitFactoryEntryListComponent },
8
+ ];
9
+ export class HitFactoryEntryRoutingModule {
10
+ }
11
+ HitFactoryEntryRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFactoryEntryRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ HitFactoryEntryRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: HitFactoryEntryRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
13
+ HitFactoryEntryRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFactoryEntryRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFactoryEntryRoutingModule, decorators: [{
15
+ type: NgModule,
16
+ args: [{
17
+ imports: [RouterModule.forChild(routes)],
18
+ exports: [RouterModule],
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZhY3RvcnktZW50cnktcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS9zcmMvbGliL2hpdC1jb21wb25lbnRzL2hpdC1mYWN0b3J5LWVudHJ5L2hpdC1mYWN0b3J5LWVudHJ5LXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDOzs7QUFFekcsTUFBTSxNQUFNLEdBQVc7SUFDckIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSw0QkFBNEIsRUFBRTtDQUN0RCxDQUFDO0FBTUYsTUFBTSxPQUFPLDRCQUE0Qjs7eUhBQTVCLDRCQUE0QjswSEFBNUIsNEJBQTRCLHdDQUY3QixZQUFZOzBIQUVYLDRCQUE0QixZQUg3QixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzJGQUVYLDRCQUE0QjtrQkFKeEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBIaXRGYWN0b3J5RW50cnlMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9oaXQtZmFjdG9yeS1lbnRyeS1saXN0L2hpdC1mYWN0b3J5LWVudHJ5LWxpc3QuY29tcG9uZW50JztcclxuXHJcbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xyXG4gIHsgcGF0aDogJycsIGNvbXBvbmVudDogSGl0RmFjdG9yeUVudHJ5TGlzdENvbXBvbmVudCB9LFxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxyXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0RmFjdG9yeUVudHJ5Um91dGluZ01vZHVsZSB7fSJdfQ==
@@ -0,0 +1,83 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { CoreModule } from '@abp/ng.core';
5
+ import { ThemeSharedModule } from '@abp/ng.theme.shared';
6
+ import { PageModule } from '@abp/ng.components/page';
7
+ import { CommercialUiModule } from '@volo/abp.commercial.ng.ui';
8
+ import { HitFactoryEntryRoutingModule } from './hit-factory-entry-routing.module';
9
+ import { HitFactoryEntryListComponent } from './hit-factory-entry-list/hit-factory-entry-list.component';
10
+ import { HitFactoryEntryFormComponent } from './hit-factory-entry-form/hit-factory-entry-form.component';
11
+ import { HitUIModule } from '../../shared/hit-modal/hit-ui.module';
12
+ import { DxDataGridModule, DxDateBoxModule, DxNumberBoxModule, DxSelectBoxModule, DxTextBoxModule, DxTextAreaModule, DxTagBoxModule, DxButtonModule, DxCheckBoxModule, } from 'devextreme-angular';
13
+ import { NgbDropdownModule } from "@ng-bootstrap/ng-bootstrap";
14
+ import * as i0 from "@angular/core";
15
+ export class HitFactoryEntryModule {
16
+ }
17
+ HitFactoryEntryModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFactoryEntryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
+ HitFactoryEntryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: HitFactoryEntryModule, declarations: [HitFactoryEntryListComponent, HitFactoryEntryFormComponent], imports: [CommonModule,
19
+ FormsModule,
20
+ CoreModule,
21
+ ThemeSharedModule,
22
+ PageModule,
23
+ CommercialUiModule,
24
+ HitFactoryEntryRoutingModule,
25
+ HitUIModule,
26
+ DxDataGridModule,
27
+ DxDateBoxModule,
28
+ DxNumberBoxModule,
29
+ DxSelectBoxModule,
30
+ DxTextBoxModule,
31
+ DxTextAreaModule,
32
+ DxTagBoxModule,
33
+ DxButtonModule,
34
+ DxCheckBoxModule,
35
+ NgbDropdownModule] });
36
+ HitFactoryEntryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFactoryEntryModule, imports: [CommonModule,
37
+ FormsModule,
38
+ CoreModule,
39
+ ThemeSharedModule,
40
+ PageModule,
41
+ CommercialUiModule,
42
+ HitFactoryEntryRoutingModule,
43
+ HitUIModule,
44
+ DxDataGridModule,
45
+ DxDateBoxModule,
46
+ DxNumberBoxModule,
47
+ DxSelectBoxModule,
48
+ DxTextBoxModule,
49
+ DxTextAreaModule,
50
+ DxTagBoxModule,
51
+ DxButtonModule,
52
+ DxCheckBoxModule,
53
+ NgbDropdownModule] });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFactoryEntryModule, decorators: [{
55
+ type: NgModule,
56
+ args: [{
57
+ declarations: [HitFactoryEntryListComponent, HitFactoryEntryFormComponent],
58
+ imports: [
59
+ CommonModule,
60
+ FormsModule,
61
+ CoreModule,
62
+ ThemeSharedModule,
63
+ PageModule,
64
+ CommercialUiModule,
65
+ HitFactoryEntryRoutingModule,
66
+ HitUIModule,
67
+ DxDataGridModule,
68
+ DxDateBoxModule,
69
+ DxNumberBoxModule,
70
+ DxSelectBoxModule,
71
+ DxTextBoxModule,
72
+ DxTextAreaModule,
73
+ DxTagBoxModule,
74
+ DxButtonModule,
75
+ DxCheckBoxModule,
76
+ NgbDropdownModule,
77
+ ],
78
+ }]
79
+ }] });
80
+ export function loadHitFactoryEntryModuleAsChild() {
81
+ return Promise.resolve(HitFactoryEntryModule);
82
+ }
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZhY3RvcnktZW50cnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUvc3JjL2xpYi9oaXQtY29tcG9uZW50cy9oaXQtZmFjdG9yeS1lbnRyeS9oaXQtZmFjdG9yeS1lbnRyeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGNBQWMsRUFDZCxnQkFBZ0IsR0FDakIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7QUF5QjdELE1BQU0sT0FBTyxxQkFBcUI7O2tIQUFyQixxQkFBcUI7bUhBQXJCLHFCQUFxQixpQkF0QmpCLDRCQUE0QixFQUFFLDRCQUE0QixhQUVuRSxZQUFZO1FBQ1osV0FBVztRQUNYLFVBQVU7UUFDVixpQkFBaUI7UUFDakIsVUFBVTtRQUNWLGtCQUFrQjtRQUNsQiw0QkFBNEI7UUFDNUIsV0FBVztRQUNYLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLGNBQWM7UUFDZCxjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLGlCQUFpQjttSEFHWixxQkFBcUIsWUFwQjFCLFlBQVk7UUFDWixXQUFXO1FBQ1gsVUFBVTtRQUNWLGlCQUFpQjtRQUNqQixVQUFVO1FBQ1Ysa0JBQWtCO1FBQ2xCLDRCQUE0QjtRQUM1QixXQUFXO1FBQ1gsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsY0FBYztRQUNkLGNBQWM7UUFDZCxnQkFBZ0I7UUFDaEIsaUJBQWlCOzJGQUdaLHFCQUFxQjtrQkF2QmpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsNEJBQTRCLEVBQUUsNEJBQTRCLENBQUM7b0JBQ3hFLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixpQkFBaUI7d0JBQ2pCLFVBQVU7d0JBQ1Ysa0JBQWtCO3dCQUNsQiw0QkFBNEI7d0JBQzVCLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3FCQUNwQjtpQkFDSjs7QUFHRCxNQUFNLFVBQVUsZ0NBQWdDO0lBQzlDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IFRoZW1lU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBQYWdlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL3BhZ2UnO1xyXG5pbXBvcnQgeyBDb21tZXJjaWFsVWlNb2R1bGUgfSBmcm9tICdAdm9sby9hYnAuY29tbWVyY2lhbC5uZy51aSc7XHJcbmltcG9ydCB7IEhpdEZhY3RvcnlFbnRyeVJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2hpdC1mYWN0b3J5LWVudHJ5LXJvdXRpbmcubW9kdWxlJztcclxuaW1wb3J0IHsgSGl0RmFjdG9yeUVudHJ5TGlzdENvbXBvbmVudCB9IGZyb20gJy4vaGl0LWZhY3RvcnktZW50cnktbGlzdC9oaXQtZmFjdG9yeS1lbnRyeS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEhpdEZhY3RvcnlFbnRyeUZvcm1Db21wb25lbnQgfSBmcm9tICcuL2hpdC1mYWN0b3J5LWVudHJ5LWZvcm0vaGl0LWZhY3RvcnktZW50cnktZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIaXRVSU1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9oaXQtbW9kYWwvaGl0LXVpLm1vZHVsZSc7XHJcbmltcG9ydCB7XHJcbiAgRHhEYXRhR3JpZE1vZHVsZSxcclxuICBEeERhdGVCb3hNb2R1bGUsXHJcbiAgRHhOdW1iZXJCb3hNb2R1bGUsXHJcbiAgRHhTZWxlY3RCb3hNb2R1bGUsXHJcbiAgRHhUZXh0Qm94TW9kdWxlLFxyXG4gIER4VGV4dEFyZWFNb2R1bGUsXHJcbiAgRHhUYWdCb3hNb2R1bGUsXHJcbiAgRHhCdXR0b25Nb2R1bGUsXHJcbiAgRHhDaGVja0JveE1vZHVsZSxcclxufSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQge05nYkRyb3Bkb3duTW9kdWxlfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbSGl0RmFjdG9yeUVudHJ5TGlzdENvbXBvbmVudCwgSGl0RmFjdG9yeUVudHJ5Rm9ybUNvbXBvbmVudF0sXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIENvcmVNb2R1bGUsXHJcbiAgICAgICAgVGhlbWVTaGFyZWRNb2R1bGUsXHJcbiAgICAgICAgUGFnZU1vZHVsZSxcclxuICAgICAgICBDb21tZXJjaWFsVWlNb2R1bGUsXHJcbiAgICAgICAgSGl0RmFjdG9yeUVudHJ5Um91dGluZ01vZHVsZSxcclxuICAgICAgICBIaXRVSU1vZHVsZSxcclxuICAgICAgICBEeERhdGFHcmlkTW9kdWxlLFxyXG4gICAgICAgIER4RGF0ZUJveE1vZHVsZSxcclxuICAgICAgICBEeE51bWJlckJveE1vZHVsZSxcclxuICAgICAgICBEeFNlbGVjdEJveE1vZHVsZSxcclxuICAgICAgICBEeFRleHRCb3hNb2R1bGUsXHJcbiAgICAgICAgRHhUZXh0QXJlYU1vZHVsZSxcclxuICAgICAgICBEeFRhZ0JveE1vZHVsZSxcclxuICAgICAgICBEeEJ1dHRvbk1vZHVsZSxcclxuICAgICAgICBEeENoZWNrQm94TW9kdWxlLFxyXG4gICAgICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxyXG4gICAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdEZhY3RvcnlFbnRyeU1vZHVsZSB7fVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRIaXRGYWN0b3J5RW50cnlNb2R1bGVBc0NoaWxkKCkge1xyXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoSGl0RmFjdG9yeUVudHJ5TW9kdWxlKTtcclxufVxyXG5cclxuIl19
@@ -0,0 +1,148 @@
1
+ import { Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { map } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../hit-proxy/hit-gate/hit-gate.service";
5
+ import * as i2 from "@abp/ng.theme.shared";
6
+ import * as i3 from "../../../hit-proxy/hit-user-gate/hit-user-gate.service";
7
+ import * as i4 from "@abp/ng.core";
8
+ import * as i5 from "devextreme-angular";
9
+ import * as i6 from "devextreme-angular/ui/nested";
10
+ import * as i7 from "devextreme-angular/core";
11
+ export class HitGateFormComponent {
12
+ constructor(service, confirmation, userGateService, restService) {
13
+ this.service = service;
14
+ this.confirmation = confirmation;
15
+ this.userGateService = userGateService;
16
+ this.restService = restService;
17
+ this.visible = false;
18
+ this.visibleChange = new EventEmitter();
19
+ this.record = null;
20
+ this.saved = new EventEmitter();
21
+ this.cancelled = new EventEmitter();
22
+ this.code = '';
23
+ this.name = '';
24
+ this.isActive = false;
25
+ this.isLoading = false;
26
+ this.userGates = [];
27
+ this.allAbpUsers = [];
28
+ this.selectedUserIdToAdd = '';
29
+ }
30
+ ngOnInit() {
31
+ this.restService.request({ method: 'GET', url: '/api/identity/users', params: { maxResultCount: 200 } }, { apiName: 'AbpIdentity' }).pipe(map(r => r?.items ?? [])).subscribe(users => {
32
+ this.allAbpUsers = users.map((u) => ({
33
+ id: u.id,
34
+ tenantId: u.tenantId ?? '',
35
+ userName: u.userName,
36
+ }));
37
+ });
38
+ }
39
+ ngOnChanges(changes) {
40
+ if (changes['visible']?.currentValue === true) {
41
+ this.initForm();
42
+ }
43
+ }
44
+ initForm() {
45
+ if (this.record) {
46
+ this.code = this.record.code;
47
+ this.name = this.record.name;
48
+ this.isActive = this.record.u_Active === 'Y';
49
+ this.userGateService.getByGateCode(this.record.code).subscribe(items => {
50
+ this.userGates = items.map(item => ({
51
+ ...item,
52
+ userName: this.allAbpUsers.find(u => u.id === item.u_UserId)?.userName ?? ''
53
+ }));
54
+ });
55
+ }
56
+ else {
57
+ this.code = '';
58
+ this.name = '';
59
+ this.isActive = true;
60
+ this.userGates = [];
61
+ }
62
+ }
63
+ addUser() {
64
+ if (!this.selectedUserIdToAdd)
65
+ return;
66
+ const user = this.allAbpUsers.find(u => u.id === this.selectedUserIdToAdd);
67
+ if (!user)
68
+ return;
69
+ if (this.userGates.some(g => g.u_UserId === user.id))
70
+ return;
71
+ this.userGates = [
72
+ ...this.userGates,
73
+ {
74
+ u_GateCode: this.code,
75
+ u_UserId: user.id,
76
+ u_TenantId: user.tenantId,
77
+ u_IsDefault: 'N',
78
+ userName: user.userName,
79
+ },
80
+ ];
81
+ this.selectedUserIdToAdd = '';
82
+ }
83
+ removeUser(index) {
84
+ this.userGates = this.userGates.filter((_, i) => i !== index);
85
+ }
86
+ setDefault(index) {
87
+ this.userGates = this.userGates.map((g, i) => ({ ...g, u_IsDefault: i === index ? 'Y' : 'N' }));
88
+ }
89
+ save() {
90
+ if (!this.code || !this.name) {
91
+ this.confirmation.warn('Lütfen Kod ve Ad alanlarını doldurunuz.', '', {
92
+ hideYesBtn: true,
93
+ cancelText: 'Kapat',
94
+ dismissible: false,
95
+ });
96
+ return;
97
+ }
98
+ const dto = { code: this.code, name: this.name, u_Active: this.isActive ? 'Y' : 'N' };
99
+ const obs$ = this.record?.code
100
+ ? this.service.update(this.record.code, dto)
101
+ : this.service.create(dto);
102
+ this.isLoading = true;
103
+ obs$.subscribe({
104
+ next: (gate) => {
105
+ const gateCode = gate?.code ?? this.code;
106
+ this.userGateService.saveGateUsers(gateCode, this.userGates).subscribe({
107
+ next: () => {
108
+ this.isLoading = false;
109
+ this.saved.emit();
110
+ },
111
+ error: () => {
112
+ this.isLoading = false;
113
+ },
114
+ });
115
+ },
116
+ error: () => {
117
+ this.isLoading = false;
118
+ },
119
+ });
120
+ }
121
+ onModalVisibleChange(val) {
122
+ this.visible = val;
123
+ this.visibleChange.emit(val);
124
+ if (!val) {
125
+ this.cancelled.emit();
126
+ }
127
+ }
128
+ cancel() {
129
+ this.onModalVisibleChange(false);
130
+ }
131
+ }
132
+ HitGateFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitGateFormComponent, deps: [{ token: i1.HitGateService }, { token: i2.ConfirmationService }, { token: i3.HitUserGateService }, { token: i4.RestService }], target: i0.ɵɵFactoryTarget.Component });
133
+ HitGateFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitGateFormComponent, selector: "lib-hit-gate-form", inputs: { visible: "visible", record: "record" }, outputs: { visibleChange: "visibleChange", saved: "saved", cancelled: "cancelled" }, usesOnChanges: true, ngImport: i0, template: "<abp-modal [visible]=\"visible\" (visibleChange)=\"onModalVisibleChange($event)\" [options]=\"{ size: 'xl', backdrop: 'static' }\">\r\n <ng-template #abpHeader>\r\n <h3>{{ record?.code ? ('AbpUi::Edit' | abpLocalization) : ('Kadooglu::NewRecord' | abpLocalization) }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-door-open me-2\"></i>{{ 'Kadooglu::BasicInfo' | abpLocalization }}\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::Code' | abpLocalization }} <span class=\"text-danger\">*</span></label>\r\n <dx-text-box [(value)]=\"code\" [disabled]=\"!!record?.code\" placeholder=\"Kap\u0131 kodu\" width=\"100%\"></dx-text-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::Name' | abpLocalization }} <span class=\"text-danger\">*</span></label>\r\n <dx-text-box [(value)]=\"name\" placeholder=\"Kap\u0131 ad\u0131\" width=\"100%\"></dx-text-box>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-users me-2\"></i>{{ 'Kadooglu::UserAuthorization' | abpLocalization }}\r\n </div>\r\n\r\n <div class=\"d-flex gap-2 mb-3\">\r\n <dx-select-box\r\n [(value)]=\"selectedUserIdToAdd\"\r\n [dataSource]=\"allAbpUsers\"\r\n displayExpr=\"userName\"\r\n valueExpr=\"id\"\r\n [placeholder]=\"'Kadooglu::SelectUser' | abpLocalization\"\r\n [searchEnabled]=\"true\"\r\n style=\"flex: 1\">\r\n </dx-select-box>\r\n <button type=\"button\" class=\"btn btn-outline-primary btn-sm text-nowrap\" (click)=\"addUser()\">\r\n <i class=\"fa fa-plus me-1\"></i>{{ 'Kadooglu::Add' | abpLocalization }}\r\n </button>\r\n </div>\r\n\r\n <dx-data-grid\r\n [dataSource]=\"userGates\"\r\n [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [noDataText]=\"'Kadooglu::NoUsersAdded' | abpLocalization\">\r\n <dxi-column dataField=\"userName\" caption=\"{{ 'Kadooglu::User' | abpLocalization }}\" [allowEditing]=\"false\"></dxi-column>\r\n <dxi-column dataField=\"u_UserId\" caption=\"{{ 'Kadooglu::UserId' | abpLocalization }}\" [allowEditing]=\"false\" [visible]=\"false\"></dxi-column>\r\n <dxi-column caption=\"{{ 'Kadooglu::Default' | abpLocalization }}\" [width]=\"100\" cellTemplate=\"defaultTemplate\"></dxi-column>\r\n <dxi-column caption=\"{{ 'AbpUi::Delete' | abpLocalization }}\" [width]=\"70\" cellTemplate=\"deleteTemplate\"></dxi-column>\r\n\r\n <div *dxTemplate=\"let d of 'defaultTemplate'\">\r\n <div class=\"text-center\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"d.data.u_IsDefault === 'Y'\"\r\n (change)=\"setDefault(d.rowIndex)\">\r\n </div>\r\n </div>\r\n <div *dxTemplate=\"let d of 'deleteTemplate'\">\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-outline-danger btn-sm\" (click)=\"removeUser(d.rowIndex)\">\r\n <i class=\"fa fa-trash\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </dx-data-grid>\r\n </div>\r\n\r\n <!-- Durum -->\r\n <div class=\"border rounded p-3 mt-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-toggle-on me-2\"></i>{{ 'Kadooglu::Status' | abpLocalization }}\r\n </div>\r\n <dx-check-box [(value)]=\"isActive\" [text]=\"'Kadooglu::IsActive' | abpLocalization\"></dx-check-box>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancel()\">\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-save\" buttonType=\"button\" [loading]=\"isLoading\" (click)=\"save()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n", dependencies: [{ kind: "component", type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "component", type: i5.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: i6.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: "directive", type: i7.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i5.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: i5.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: i5.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "enableThreeStateBehavior", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "enableThreeStateBehaviorChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] });
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitGateFormComponent, decorators: [{
135
+ type: Component,
136
+ args: [{ selector: 'lib-hit-gate-form', template: "<abp-modal [visible]=\"visible\" (visibleChange)=\"onModalVisibleChange($event)\" [options]=\"{ size: 'xl', backdrop: 'static' }\">\r\n <ng-template #abpHeader>\r\n <h3>{{ record?.code ? ('AbpUi::Edit' | abpLocalization) : ('Kadooglu::NewRecord' | abpLocalization) }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-door-open me-2\"></i>{{ 'Kadooglu::BasicInfo' | abpLocalization }}\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::Code' | abpLocalization }} <span class=\"text-danger\">*</span></label>\r\n <dx-text-box [(value)]=\"code\" [disabled]=\"!!record?.code\" placeholder=\"Kap\u0131 kodu\" width=\"100%\"></dx-text-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::Name' | abpLocalization }} <span class=\"text-danger\">*</span></label>\r\n <dx-text-box [(value)]=\"name\" placeholder=\"Kap\u0131 ad\u0131\" width=\"100%\"></dx-text-box>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-users me-2\"></i>{{ 'Kadooglu::UserAuthorization' | abpLocalization }}\r\n </div>\r\n\r\n <div class=\"d-flex gap-2 mb-3\">\r\n <dx-select-box\r\n [(value)]=\"selectedUserIdToAdd\"\r\n [dataSource]=\"allAbpUsers\"\r\n displayExpr=\"userName\"\r\n valueExpr=\"id\"\r\n [placeholder]=\"'Kadooglu::SelectUser' | abpLocalization\"\r\n [searchEnabled]=\"true\"\r\n style=\"flex: 1\">\r\n </dx-select-box>\r\n <button type=\"button\" class=\"btn btn-outline-primary btn-sm text-nowrap\" (click)=\"addUser()\">\r\n <i class=\"fa fa-plus me-1\"></i>{{ 'Kadooglu::Add' | abpLocalization }}\r\n </button>\r\n </div>\r\n\r\n <dx-data-grid\r\n [dataSource]=\"userGates\"\r\n [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [noDataText]=\"'Kadooglu::NoUsersAdded' | abpLocalization\">\r\n <dxi-column dataField=\"userName\" caption=\"{{ 'Kadooglu::User' | abpLocalization }}\" [allowEditing]=\"false\"></dxi-column>\r\n <dxi-column dataField=\"u_UserId\" caption=\"{{ 'Kadooglu::UserId' | abpLocalization }}\" [allowEditing]=\"false\" [visible]=\"false\"></dxi-column>\r\n <dxi-column caption=\"{{ 'Kadooglu::Default' | abpLocalization }}\" [width]=\"100\" cellTemplate=\"defaultTemplate\"></dxi-column>\r\n <dxi-column caption=\"{{ 'AbpUi::Delete' | abpLocalization }}\" [width]=\"70\" cellTemplate=\"deleteTemplate\"></dxi-column>\r\n\r\n <div *dxTemplate=\"let d of 'defaultTemplate'\">\r\n <div class=\"text-center\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"d.data.u_IsDefault === 'Y'\"\r\n (change)=\"setDefault(d.rowIndex)\">\r\n </div>\r\n </div>\r\n <div *dxTemplate=\"let d of 'deleteTemplate'\">\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-outline-danger btn-sm\" (click)=\"removeUser(d.rowIndex)\">\r\n <i class=\"fa fa-trash\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </dx-data-grid>\r\n </div>\r\n\r\n <!-- Durum -->\r\n <div class=\"border rounded p-3 mt-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-toggle-on me-2\"></i>{{ 'Kadooglu::Status' | abpLocalization }}\r\n </div>\r\n <dx-check-box [(value)]=\"isActive\" [text]=\"'Kadooglu::IsActive' | abpLocalization\"></dx-check-box>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancel()\">\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-save\" buttonType=\"button\" [loading]=\"isLoading\" (click)=\"save()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n" }]
137
+ }], ctorParameters: function () { return [{ type: i1.HitGateService }, { type: i2.ConfirmationService }, { type: i3.HitUserGateService }, { type: i4.RestService }]; }, propDecorators: { visible: [{
138
+ type: Input
139
+ }], visibleChange: [{
140
+ type: Output
141
+ }], record: [{
142
+ type: Input
143
+ }], saved: [{
144
+ type: Output
145
+ }], cancelled: [{
146
+ type: Output
147
+ }] } });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWdhdGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS9zcmMvbGliL2hpdC1jb21wb25lbnRzL2hpdC1nYXRlL2hpdC1nYXRlLWZvcm0vaGl0LWdhdGUtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS9zcmMvbGliL2hpdC1jb21wb25lbnRzL2hpdC1nYXRlL2hpdC1nYXRlLWZvcm0vaGl0LWdhdGUtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBT3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQU0zQixNQUFNLE9BQU8sb0JBQW9CO0lBZ0IvQixZQUNVLE9BQXVCLEVBQ3ZCLFlBQWlDLEVBQ2pDLGVBQW1DLEVBQ25DLFdBQXdCO1FBSHhCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7UUFDbkMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFuQnpCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDZixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDN0MsV0FBTSxHQUFnQixJQUFJLENBQUM7UUFDMUIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDakMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0MsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7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QUFPLEdBQUcsR0FBRyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7aUhBcElVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHFOQ3JCakMsNjJJQXlGQTsyRkRwRWEsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLG1CQUFtQjtrTUFJcEIsT0FBTztzQkFBZixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0UsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IEhpdEdhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vaGl0LXByb3h5L2hpdC1nYXRlL2hpdC1nYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHYXRlLCBTYXZlR2F0ZUR0byB9IGZyb20gJy4uLy4uLy4uL2hpdC1wcm94eS9oaXQtZ2F0ZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBIaXRVc2VyR2F0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9oaXQtcHJveHkvaGl0LXVzZXItZ2F0ZS9oaXQtdXNlci1nYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyR2F0ZUl0ZW0gfSBmcm9tICcuLi8uLi8uLi9oaXQtcHJveHkvaGl0LXVzZXItZ2F0ZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGl0LWdhdGUtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1nYXRlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0R2F0ZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgdmlzaWJsZSA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBJbnB1dCgpIHJlY29yZDogR2F0ZSB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBzYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgY2FuY2VsbGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBjb2RlID0gJyc7XHJcbiAgbmFtZSA9ICcnO1xyXG4gIGlzQWN0aXZlID0gZmFsc2U7XHJcbiAgaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIHVzZXJHYXRlczogVXNlckdhdGVJdGVtW10gPSBbXTtcclxuICBhbGxBYnBVc2VyczogeyBpZDogc3RyaW5nOyB0ZW5hbnRJZDogc3RyaW5nOyB1c2VyTmFtZTogc3RyaW5nIH1bXSA9IFtdO1xyXG4gIHNlbGVjdGVkVXNlcklkVG9BZGQgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IEhpdEdhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJHYXRlU2VydmljZTogSGl0VXNlckdhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5yZXF1ZXN0PHZvaWQsIGFueT4oXHJcbiAgICAgIHsgbWV0aG9kOiAnR0VUJywgdXJsOiAnL2FwaS9pZGVudGl0eS91c2VycycsIHBhcmFtczogeyBtYXhSZXN1bHRDb3VudDogMjAwIH0gfSxcclxuICAgICAgeyBhcGlOYW1lOiAnQWJwSWRlbnRpdHknIH1cclxuICAgICkucGlwZShtYXAociA9PiByPy5pdGVtcyA/PyBbXSkpLnN1YnNjcmliZSh1c2VycyA9PiB7XHJcbiAgICAgIHRoaXMuYWxsQWJwVXNlcnMgPSB1c2Vycy5tYXAoKHU6IGFueSkgPT4gKHtcclxuICAgICAgICBpZDogdS5pZCxcclxuICAgICAgICB0ZW5hbnRJZDogdS50ZW5hbnRJZCA/PyAnJyxcclxuICAgICAgICB1c2VyTmFtZTogdS51c2VyTmFtZSxcclxuICAgICAgfSkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sndmlzaWJsZSddPy5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5pbml0Rm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Rm9ybSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlY29yZCkge1xyXG4gICAgICB0aGlzLmNvZGUgPSB0aGlzLnJlY29yZC5jb2RlO1xyXG4gICAgICB0aGlzLm5hbWUgPSB0aGlzLnJlY29yZC5uYW1lO1xyXG4gICAgICB0aGlzLmlzQWN0aXZlID0gdGhpcy5yZWNvcmQudV9BY3RpdmUgPT09ICdZJztcclxuICAgICAgdGhpcy51c2VyR2F0ZVNlcnZpY2UuZ2V0QnlHYXRlQ29kZSh0aGlzLnJlY29yZC5jb2RlKS5zdWJzY3JpYmUoaXRlbXMgPT4ge1xyXG4gICAgICAgIHRoaXMudXNlckdhdGVzID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcclxuICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICB1c2VyTmFtZTogdGhpcy5hbGxBYnBVc2Vycy5maW5kKHUgPT4gdS5pZCA9PT0gaXRlbS51X1VzZXJJZCk/LnVzZXJOYW1lID8/ICcnXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29kZSA9ICcnO1xyXG4gICAgICB0aGlzLm5hbWUgPSAnJztcclxuICAgICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMudXNlckdhdGVzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRVc2VyKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkVXNlcklkVG9BZGQpIHJldHVybjtcclxuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmFsbEFicFVzZXJzLmZpbmQodSA9PiB1LmlkID09PSB0aGlzLnNlbGVjdGVkVXNlcklkVG9BZGQpO1xyXG4gICAgaWYgKCF1c2VyKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy51c2VyR2F0ZXMuc29tZShnID0+IGcudV9Vc2VySWQgPT09IHVzZXIuaWQpKSByZXR1cm47XHJcbiAgICB0aGlzLnVzZXJHYXRlcyA9IFtcclxuICAgICAgLi4udGhpcy51c2VyR2F0ZXMsXHJcbiAgICAgIHtcclxuICAgICAgICB1X0dhdGVDb2RlOiB0aGlzLmNvZGUsXHJcbiAgICAgICAgdV9Vc2VySWQ6IHVzZXIuaWQsXHJcbiAgICAgICAgdV9UZW5hbnRJZDogdXNlci50ZW5hbnRJZCxcclxuICAgICAgICB1X0lzRGVmYXVsdDogJ04nLFxyXG4gICAgICAgIHVzZXJOYW1lOiB1c2VyLnVzZXJOYW1lLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VySWRUb0FkZCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlVXNlcihpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnVzZXJHYXRlcyA9IHRoaXMudXNlckdhdGVzLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnVzZXJHYXRlcyA9IHRoaXMudXNlckdhdGVzLm1hcCgoZywgaSkgPT4gKHsgLi4uZywgdV9Jc0RlZmF1bHQ6IGkgPT09IGluZGV4ID8gJ1knIDogJ04nIH0pKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY29kZSB8fCAhdGhpcy5uYW1lKSB7XHJcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4oJ0zDvHRmZW4gS29kIHZlIEFkIGFsYW5sYXLEsW7EsSBkb2xkdXJ1bnV6LicsICcnLCB7XHJcbiAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkdG86IFNhdmVHYXRlRHRvID0geyBjb2RlOiB0aGlzLmNvZGUsIG5hbWU6IHRoaXMubmFtZSwgdV9BY3RpdmU6IHRoaXMuaXNBY3RpdmUgPyAnWScgOiAnTicgfTtcclxuICAgIGNvbnN0IG9icyQgPSB0aGlzLnJlY29yZD8uY29kZVxyXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUodGhpcy5yZWNvcmQuY29kZSwgZHRvKVxyXG4gICAgICA6IHRoaXMuc2VydmljZS5jcmVhdGUoZHRvKTtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICBvYnMkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChnYXRlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ2F0ZUNvZGUgPSBnYXRlPy5jb2RlID8/IHRoaXMuY29kZTtcclxuICAgICAgICB0aGlzLnVzZXJHYXRlU2VydmljZS5zYXZlR2F0ZVVzZXJzKGdhdGVDb2RlLCB0aGlzLnVzZXJHYXRlcykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zYXZlZC5lbWl0KCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25Nb2RhbFZpc2libGVDaGFuZ2UodmFsOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpc2libGUgPSB2YWw7XHJcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh2YWwpO1xyXG4gICAgaWYgKCF2YWwpIHtcclxuICAgICAgdGhpcy5jYW5jZWxsZWQuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbk1vZGFsVmlzaWJsZUNoYW5nZShmYWxzZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhYnAtbW9kYWwgW3Zpc2libGVdPVwidmlzaWJsZVwiICh2aXNpYmxlQ2hhbmdlKT1cIm9uTW9kYWxWaXNpYmxlQ2hhbmdlKCRldmVudClcIiBbb3B0aW9uc109XCJ7IHNpemU6ICd4bCcsIGJhY2tkcm9wOiAnc3RhdGljJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+e3sgcmVjb3JkPy5jb2RlID8gKCdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24pIDogKCdLYWRvb2dsdTo6TmV3UmVjb3JkJyB8IGFicExvY2FsaXphdGlvbikgfX08L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTMgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBwYi0yIG1iLTMgZnctYm9sZCB0ZXh0LXNlY29uZGFyeVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZG9vci1vcGVuIG1lLTJcIj48L2k+e3sgJ0thZG9vZ2x1OjpCYXNpY0luZm8nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTEgc21hbGwgZnctc2VtaWJvbGQgdGV4dC1tdXRlZFwiPnt7ICdLYWRvb2dsdTo6Q29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX0gPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgIDxkeC10ZXh0LWJveCBbKHZhbHVlKV09XCJjb2RlXCIgW2Rpc2FibGVkXT1cIiEhcmVjb3JkPy5jb2RlXCIgcGxhY2Vob2xkZXI9XCJLYXDEsSBrb2R1XCIgd2lkdGg9XCIxMDAlXCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMSBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+e3sgJ0thZG9vZ2x1OjpOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fSA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgPGR4LXRleHQtYm94IFsodmFsdWUpXT1cIm5hbWVcIiBwbGFjZWhvbGRlcj1cIkthcMSxIGFkxLFcIiB3aWR0aD1cIjEwMCVcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTMgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBwYi0yIG1iLTMgZnctYm9sZCB0ZXh0LXNlY29uZGFyeVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdXNlcnMgbWUtMlwiPjwvaT57eyAnS2Fkb29nbHU6OlVzZXJBdXRob3JpemF0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbWItM1wiPlxyXG4gICAgICAgIDxkeC1zZWxlY3QtYm94XHJcbiAgICAgICAgICBbKHZhbHVlKV09XCJzZWxlY3RlZFVzZXJJZFRvQWRkXCJcclxuICAgICAgICAgIFtkYXRhU291cmNlXT1cImFsbEFicFVzZXJzXCJcclxuICAgICAgICAgIGRpc3BsYXlFeHByPVwidXNlck5hbWVcIlxyXG4gICAgICAgICAgdmFsdWVFeHByPVwiaWRcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLYWRvb2dsdTo6U2VsZWN0VXNlcicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBzdHlsZT1cImZsZXg6IDFcIj5cclxuICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4tc20gdGV4dC1ub3dyYXBcIiAoY2xpY2spPVwiYWRkVXNlcigpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgbWUtMVwiPjwvaT57eyAnS2Fkb29nbHU6OkFkZCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZHgtZGF0YS1ncmlkXHJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwidXNlckdhdGVzXCJcclxuICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcclxuICAgICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIlxyXG4gICAgICAgIFtub0RhdGFUZXh0XT1cIidLYWRvb2dsdTo6Tm9Vc2Vyc0FkZGVkJyB8IGFicExvY2FsaXphdGlvblwiPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInVzZXJOYW1lXCIgY2FwdGlvbj1cInt7ICdLYWRvb2dsdTo6VXNlcicgfCBhYnBMb2NhbGl6YXRpb24gfX1cIiBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInVfVXNlcklkXCIgY2FwdGlvbj1cInt7ICdLYWRvb2dsdTo6VXNlcklkJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIiBbdmlzaWJsZV09XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBjYXB0aW9uPVwie3sgJ0thZG9vZ2x1OjpEZWZhdWx0JyB8IGFicExvY2FsaXphdGlvbiB9fVwiIFt3aWR0aF09XCIxMDBcIiBjZWxsVGVtcGxhdGU9XCJkZWZhdWx0VGVtcGxhdGVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gY2FwdGlvbj1cInt7ICdBYnBVaTo6RGVsZXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVwiIFt3aWR0aF09XCI3MFwiIGNlbGxUZW1wbGF0ZT1cImRlbGV0ZVRlbXBsYXRlXCI+PC9keGktY29sdW1uPlxyXG5cclxuICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGQgb2YgJ2RlZmF1bHRUZW1wbGF0ZSdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImQuZGF0YS51X0lzRGVmYXVsdCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldERlZmF1bHQoZC5yb3dJbmRleClcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZCBvZiAnZGVsZXRlVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIGJ0bi1zbVwiIChjbGljayk9XCJyZW1vdmVVc2VyKGQucm93SW5kZXgpXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIER1cnVtIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyBtdC0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIHBiLTIgbWItMyBmdy1ib2xkIHRleHQtc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10b2dnbGUtb24gbWUtMlwiPjwvaT57eyAnS2Fkb29nbHU6OlN0YXR1cycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkeC1jaGVjay1ib3ggWyh2YWx1ZSldPVwiaXNBY3RpdmVcIiBbdGV4dF09XCInS2Fkb29nbHU6OklzQWN0aXZlJyB8IGFicExvY2FsaXphdGlvblwiPjwvZHgtY2hlY2stYm94PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1zYXZlXCIgYnV0dG9uVHlwZT1cImJ1dHRvblwiIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiIChjbGljayk9XCJzYXZlKClcIj5cclxuICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9hYnAtYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG4iXX0=