ezlibrary_v2 2.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 (118) hide show
  1. package/README.md +24 -0
  2. package/esm2020/ezlibrary_v2.mjs +5 -0
  3. package/esm2020/lib/admin-service/admin-service.service.mjs +34 -0
  4. package/esm2020/lib/analysis-search/analysis-search.component.mjs +1077 -0
  5. package/esm2020/lib/assort-service/assort-service.service.mjs +28 -0
  6. package/esm2020/lib/attribute-definition/attribute-definition.component.mjs +225 -0
  7. package/esm2020/lib/auth/auth.guard.mjs +37 -0
  8. package/esm2020/lib/bi-service/bi.service.mjs +57 -0
  9. package/esm2020/lib/call-info/callinfo.component.mjs +125 -0
  10. package/esm2020/lib/comman-service/comman-service.service.mjs +678 -0
  11. package/esm2020/lib/comman-service/share-data-service.service.mjs +23 -0
  12. package/esm2020/lib/contact-search/contact-search.component.mjs +690 -0
  13. package/esm2020/lib/contact-service/contact-service.service.mjs +45 -0
  14. package/esm2020/lib/ez-lib.component.mjs +26 -0
  15. package/esm2020/lib/ez-lib.module.mjs +232 -0
  16. package/esm2020/lib/ez-lib.service.mjs +14 -0
  17. package/esm2020/lib/ezheader/header.component.mjs +400 -0
  18. package/esm2020/lib/file-upload/fileupload.component.mjs +918 -0
  19. package/esm2020/lib/file-upload-log/file-upload-log.component.mjs +169 -0
  20. package/esm2020/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.mjs +14 -0
  21. package/esm2020/lib/fileupload-module/fileupload-routing.module.mjs +28 -0
  22. package/esm2020/lib/fileupload-module/fileupload.module.mjs +80 -0
  23. package/esm2020/lib/footer/footer.component.mjs +18 -0
  24. package/esm2020/lib/globle/common-pdf.service.mjs +28 -0
  25. package/esm2020/lib/globle/globle-env.service.mjs +45 -0
  26. package/esm2020/lib/globle/memo-report.service.mjs +2798 -0
  27. package/esm2020/lib/globle/shared-services.service.mjs +25 -0
  28. package/esm2020/lib/globle/upload-service.service.mjs +63 -0
  29. package/esm2020/lib/header/header.component.mjs +172 -0
  30. package/esm2020/lib/invalid/invalid.component.mjs +70 -0
  31. package/esm2020/lib/logout/logout.component.mjs +104 -0
  32. package/esm2020/lib/menu-right/menu-right.component.mjs +258 -0
  33. package/esm2020/lib/pipes/number-with-commas.pipe.mjs +24 -0
  34. package/esm2020/lib/pipes/order-by-pipe.pipe.mjs +17 -0
  35. package/esm2020/lib/pipes/selectedCount.mjs +19 -0
  36. package/esm2020/lib/pipes/sum.pipe.mjs +17 -0
  37. package/esm2020/lib/pkt-data/pkt-data.component.mjs +1109 -0
  38. package/esm2020/lib/pricing-service/pricing.service.mjs +64 -0
  39. package/esm2020/lib/qa-analysis/qa-analysis.component.mjs +1028 -0
  40. package/esm2020/lib/report-format/report-format.component.mjs +403 -0
  41. package/esm2020/lib/sessionend/session-end.guard.mjs +27 -0
  42. package/esm2020/lib/stock-service/lazyload.service.mjs +21 -0
  43. package/esm2020/lib/stock-service/stock-service.service.mjs +58 -0
  44. package/esm2020/lib/system-module/subform/subform.component.mjs +2817 -0
  45. package/esm2020/lib/system-module/system/system.component.mjs +970 -0
  46. package/esm2020/lib/system-module/system-service/system-service.service.mjs +83 -0
  47. package/esm2020/lib/system-module/system-service/upload-file.service.mjs +83 -0
  48. package/esm2020/lib/utility/app-no-dbl-click.directive.mjs +24 -0
  49. package/esm2020/lib/utility/constants.mjs +5 -0
  50. package/esm2020/lib/utility/contact-table-search.pipe.mjs +25 -0
  51. package/esm2020/lib/utility/formate-num-field.pipe.mjs +19 -0
  52. package/esm2020/lib/utility/search-pipe.pipe.mjs +26 -0
  53. package/esm2020/lib/utility/selective-preloading-strategy.mjs +23 -0
  54. package/esm2020/lib/utility/table-search.pipe.mjs +25 -0
  55. package/esm2020/lib/utility/tranform.directive.mjs +27 -0
  56. package/esm2020/lib/websearch-history/websearch-history.component.mjs +273 -0
  57. package/esm2020/public-api.mjs +59 -0
  58. package/ezlibrary_v2.d.ts +5 -0
  59. package/fesm2015/ezlibrary_v2.mjs +15300 -0
  60. package/fesm2015/ezlibrary_v2.mjs.map +1 -0
  61. package/fesm2020/ezlibrary_v2.mjs +15291 -0
  62. package/fesm2020/ezlibrary_v2.mjs.map +1 -0
  63. package/lib/admin-service/admin-service.service.d.ts +13 -0
  64. package/lib/analysis-search/analysis-search.component.d.ts +118 -0
  65. package/lib/assort-service/assort-service.service.d.ts +12 -0
  66. package/lib/attribute-definition/attribute-definition.component.d.ts +43 -0
  67. package/lib/auth/auth.guard.d.ts +14 -0
  68. package/lib/bi-service/bi.service.d.ts +16 -0
  69. package/lib/call-info/callinfo.component.d.ts +26 -0
  70. package/lib/comman-service/comman-service.service.d.ts +106 -0
  71. package/lib/comman-service/share-data-service.service.d.ts +10 -0
  72. package/lib/contact-search/contact-search.component.d.ts +111 -0
  73. package/lib/contact-service/contact-service.service.d.ts +15 -0
  74. package/lib/ez-lib.component.d.ts +8 -0
  75. package/lib/ez-lib.module.d.ts +43 -0
  76. package/lib/ez-lib.service.d.ts +6 -0
  77. package/lib/ezheader/header.component.d.ts +57 -0
  78. package/lib/file-upload/fileupload.component.d.ts +127 -0
  79. package/lib/file-upload-log/file-upload-log.component.d.ts +49 -0
  80. package/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.d.ts +8 -0
  81. package/lib/fileupload-module/fileupload-routing.module.d.ts +7 -0
  82. package/lib/fileupload-module/fileupload.module.d.ts +15 -0
  83. package/lib/footer/footer.component.d.ts +9 -0
  84. package/lib/globle/common-pdf.service.d.ts +9 -0
  85. package/lib/globle/globle-env.service.d.ts +16 -0
  86. package/lib/globle/memo-report.service.d.ts +107 -0
  87. package/lib/globle/shared-services.service.d.ts +12 -0
  88. package/lib/globle/upload-service.service.d.ts +16 -0
  89. package/lib/header/header.component.d.ts +41 -0
  90. package/lib/invalid/invalid.component.d.ts +12 -0
  91. package/lib/logout/logout.component.d.ts +19 -0
  92. package/lib/menu-right/menu-right.component.d.ts +43 -0
  93. package/lib/pipes/number-with-commas.pipe.d.ts +7 -0
  94. package/lib/pipes/order-by-pipe.pipe.d.ts +7 -0
  95. package/lib/pipes/selectedCount.d.ts +7 -0
  96. package/lib/pipes/sum.pipe.d.ts +7 -0
  97. package/lib/pkt-data/pkt-data.component.d.ts +184 -0
  98. package/lib/pricing-service/pricing.service.d.ts +16 -0
  99. package/lib/qa-analysis/qa-analysis.component.d.ts +95 -0
  100. package/lib/report-format/report-format.component.d.ts +74 -0
  101. package/lib/sessionend/session-end.guard.d.ts +10 -0
  102. package/lib/stock-service/lazyload.service.d.ts +7 -0
  103. package/lib/stock-service/stock-service.service.d.ts +15 -0
  104. package/lib/system-module/subform/subform.component.d.ts +222 -0
  105. package/lib/system-module/system/system.component.d.ts +109 -0
  106. package/lib/system-module/system-service/system-service.service.d.ts +23 -0
  107. package/lib/system-module/system-service/upload-file.service.d.ts +12 -0
  108. package/lib/utility/app-no-dbl-click.directive.d.ts +7 -0
  109. package/lib/utility/constants.d.ts +4 -0
  110. package/lib/utility/contact-table-search.pipe.d.ts +7 -0
  111. package/lib/utility/formate-num-field.pipe.d.ts +7 -0
  112. package/lib/utility/search-pipe.pipe.d.ts +7 -0
  113. package/lib/utility/selective-preloading-strategy.d.ts +9 -0
  114. package/lib/utility/table-search.pipe.d.ts +7 -0
  115. package/lib/utility/tranform.directive.d.ts +10 -0
  116. package/lib/websearch-history/websearch-history.component.d.ts +56 -0
  117. package/package.json +31 -0
  118. package/public-api.d.ts +54 -0
@@ -0,0 +1,28 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Cookie } from 'ng2-cookies/ng2-cookies';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common/http";
5
+ import * as i2 from "../globle/globle-env.service";
6
+ export class AssortServiceService {
7
+ constructor(http, glbEnv) {
8
+ this.http = http;
9
+ this.glbEnv = glbEnv;
10
+ }
11
+ load(reqObj, headers, url) {
12
+ return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), headers)
13
+ .toPromise()
14
+ .then((response) => response);
15
+ }
16
+ getCookies() {
17
+ return Cookie.get('_logid');
18
+ }
19
+ }
20
+ AssortServiceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AssortServiceService, deps: [{ token: i1.HttpClient }, { token: i2.GlobleEnvService }], target: i0.ɵɵFactoryTarget.Injectable });
21
+ AssortServiceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AssortServiceService, providedIn: 'root' });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AssortServiceService, decorators: [{
23
+ type: Injectable,
24
+ args: [{
25
+ providedIn: 'root'
26
+ }]
27
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.GlobleEnvService }]; } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb3J0LXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6LWxpYi9zcmMvbGliL2Fzc29ydC1zZXJ2aWNlL2Fzc29ydC1zZXJ2aWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUszQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFLakQsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixZQUNVLElBQWdCLEVBQ2pCLE1BQXdCO1FBRHZCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDakIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7SUFDN0IsQ0FBQztJQUVMLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUc7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7YUFDOUUsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDOztrSEFmVSxvQkFBb0I7c0hBQXBCLG9CQUFvQixjQUZuQixNQUFNOzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbi8vIGltcG9ydCB7IEdsb2JsZUVudlNlcnZpY2UgfSBmcm9tICdlei9lei9zcmMvYXBwL2dsb2JsZS9nbG9ibGUtZW52LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9ibGVFbnZTZXJ2aWNlIH0gZnJvbSAnLi4vZ2xvYmxlL2dsb2JsZS1lbnYuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBDb29raWUgfSBmcm9tICduZzItY29va2llcy9uZzItY29va2llcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NvcnRTZXJ2aWNlU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHVibGljIGdsYkVudjogR2xvYmxlRW52U2VydmljZSxcclxuICApIHsgfVxyXG5cclxuICBsb2FkKHJlcU9iaiwgaGVhZGVycywgdXJsKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArIHVybCwgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSwgaGVhZGVycylcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29va2llcygpIHtcclxuICAgIHJldHVybiBDb29raWUuZ2V0KCdfbG9naWQnKTtcclxuICB9XHJcbiAgXHJcbn1cclxuIl19
@@ -0,0 +1,225 @@
1
+ import { Component } from '@angular/core';
2
+ // import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';
3
+ import { FormArray } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ import * as i2 from "./../pricing-service/pricing.service";
7
+ import * as i3 from "../comman-service/comman-service.service";
8
+ import * as i4 from "@angular/forms";
9
+ import * as i5 from "@ng-select/ng-select";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "../utility/app-no-dbl-click.directive";
12
+ export class AttributeDefinitionComponent {
13
+ constructor(router, route,
14
+ // private flashMessagesService: FlashMessagesService,
15
+ // private spinnerService: Ng4LoadingSpinnerService,
16
+ ps, cs, fb) {
17
+ this.router = router;
18
+ this.route = route;
19
+ this.ps = ps;
20
+ this.cs = cs;
21
+ this.fb = fb;
22
+ this.priceDefination = [];
23
+ }
24
+ //load page defination
25
+ getPageDefination() {
26
+ // this.spinnerService.show();
27
+ let reqObj = {};
28
+ reqObj['formNme'] = 'priceGroupForm';
29
+ reqObj['grpIdn'] = this.route.snapshot.params['id'];
30
+ this.ps.data(reqObj, 'loadData', 'pricing/load')
31
+ .subscribe(response => {
32
+ if (response.status == 'SUCCESS') {
33
+ console.log(response);
34
+ let res = response.result;
35
+ let pageDefination = res.pageDefination;
36
+ // this.spinnerService.hide();
37
+ this.priceDefination = [...res.priceDefination];
38
+ this.btnAction = res.pageDefination.action;
39
+ this.addNew = pageDefination.button[0];
40
+ this.pageInfo = res.pageDefination;
41
+ this.attibutes = res.attrStructureDtl.map(option => ({
42
+ sort: option.sort,
43
+ label: option.print + ' ' + '(' + option.attr + ')',
44
+ type: option.dataType,
45
+ value: option.attr,
46
+ prpList: option.prpList
47
+ }));
48
+ // this.pkf = response.pageInfo.primary_key_field;
49
+ // this.datalist = response.dataList;
50
+ // this.actions = response.actions;
51
+ // this.navigation = response.navigation;
52
+ // this.spinnerService.hide();
53
+ }
54
+ else {
55
+ console.log(response);
56
+ // this.spinnerService.hide();
57
+ // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });
58
+ }
59
+ }, error => {
60
+ console.log(error);
61
+ // this.spinnerService.hide();
62
+ // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });
63
+ });
64
+ }
65
+ ngOnInit() {
66
+ console.log("response");
67
+ this.myFormmm = this.fb.group({
68
+ attr: '',
69
+ display: '',
70
+ sort: '',
71
+ values: this.fb.array([]),
72
+ grid: '',
73
+ status: ''
74
+ });
75
+ this.getPageDefination();
76
+ this.myFormmm.valueChanges.subscribe(console.log);
77
+ }
78
+ get fromToForms() {
79
+ return this.myFormmm.get('values');
80
+ }
81
+ get attr() {
82
+ return this.myFormmm.get('attr');
83
+ }
84
+ get disType() {
85
+ return this.myFormmm.get('display').value;
86
+ }
87
+ addFromTo() {
88
+ const values = this.fb.group({
89
+ srt_frm: [],
90
+ srt_to: []
91
+ });
92
+ this.fromToForms.push(values);
93
+ }
94
+ deletePhone(i) {
95
+ // this.fromToForms.setValue()
96
+ this.fromToForms.removeAt(i);
97
+ }
98
+ getAttriBute(val) {
99
+ let attrval;
100
+ if (val == null) {
101
+ attrval = this.attr.value;
102
+ }
103
+ else {
104
+ attrval = val;
105
+ }
106
+ this.attibutes.forEach(element => {
107
+ if (element.value == attrval) {
108
+ console.log(element);
109
+ this.type = element.type;
110
+ if (element.type == 'c') {
111
+ this.frmPrps = element.prpList;
112
+ this.toPrps = element.prpList;
113
+ }
114
+ }
115
+ });
116
+ }
117
+ userAction(obj, call, actionObj) {
118
+ console.log(obj, call, actionObj);
119
+ this.currObj = null;
120
+ this.currObj = obj;
121
+ this.getAttriBute(obj.attr);
122
+ let fromvalueList = [];
123
+ let valuelst = obj.values || [];
124
+ valuelst.forEach(element => {
125
+ let valCon = this.fb.group({
126
+ "srt_frm": element.srt_frm,
127
+ "srt_to": element.srt_to
128
+ });
129
+ fromvalueList.push(valCon);
130
+ });
131
+ // let values = (obj.values|| []).map((x) => this.fb.group(x))
132
+ if (call == 'edit') {
133
+ document.getElementById('datamdbtn').click();
134
+ this.btnName = 'Edit';
135
+ this.myFormmm = this.fb.group({
136
+ attr: obj.attr,
137
+ display: obj.display,
138
+ sort: obj.sort,
139
+ values: new FormArray(fromvalueList),
140
+ grid: obj.grid,
141
+ status: obj.status
142
+ });
143
+ }
144
+ else if (call == 'delete') {
145
+ document.getElementById('deletebtn').click();
146
+ }
147
+ }
148
+ setBtnAdd() {
149
+ this.btnName = 'Add';
150
+ this.myFormmm = this.fb.group({
151
+ attr: '',
152
+ display: '',
153
+ sort: '',
154
+ values: this.fb.array([]),
155
+ grid: '',
156
+ status: ''
157
+ });
158
+ }
159
+ deleteData() {
160
+ // this.spinnerService.show();
161
+ let reqObj = {};
162
+ reqObj['formNme'] = 'priceGroupDefinition';
163
+ reqObj['trnsType'] = 'DELETE';
164
+ reqObj['attr'] = this.currObj.attr;
165
+ reqObj['grpIdn'] = this.route.snapshot.params['id'];
166
+ console.log(reqObj);
167
+ this.ps.data(reqObj, 'savePriceGroupDef', 'pricing/load')
168
+ .subscribe(response => {
169
+ if (response.status == 'SUCCESS') {
170
+ console.log(response);
171
+ let res = response.result;
172
+ // let index = this.priceDefination.indexOf(this.currObj);
173
+ // this.priceDefination.splice(index, 1);
174
+ this.getPageDefination();
175
+ document.getElementById('deleteCloseMd').click();
176
+ // this.spinnerService.hide();
177
+ }
178
+ else {
179
+ // this.spinnerService.hide();
180
+ // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });
181
+ }
182
+ }, error => {
183
+ // this.spinnerService.hide();
184
+ // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });
185
+ });
186
+ }
187
+ onSubmit() {
188
+ // this.spinnerService.show();
189
+ let formsVal = this.myFormmm.value;
190
+ let reqObj = {};
191
+ reqObj['formNme'] = 'priceGroupDefinition';
192
+ reqObj['trnsType'] = this.btnName == 'Add' ? 'ADD' : 'EDIT'; //this.currObj != null ? 'EDIT' : 'ADD';
193
+ formsVal['status'] = '1';
194
+ reqObj['dataTrnsDtl'] = formsVal;
195
+ reqObj['grpIdn'] = this.route.snapshot.params['id'];
196
+ if (this.currObj != null) {
197
+ reqObj['attr'] = formsVal['attr'];
198
+ }
199
+ console.log(JSON.stringify(reqObj));
200
+ this.ps.data(reqObj, 'savePriceGroupDef', 'pricing/load')
201
+ .subscribe(response => {
202
+ if (response.status == 'SUCCESS') {
203
+ console.log(response);
204
+ let res = response.result;
205
+ document.getElementById('closeMd').click();
206
+ this.getPageDefination();
207
+ // this.spinnerService.hide();
208
+ }
209
+ else {
210
+ // this.spinnerService.hide();
211
+ // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });
212
+ }
213
+ }, error => {
214
+ // this.spinnerService.hide();
215
+ // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });
216
+ });
217
+ }
218
+ }
219
+ AttributeDefinitionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AttributeDefinitionComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.PricingService }, { token: i3.CommanServiceService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
220
+ AttributeDefinitionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AttributeDefinitionComponent, selector: "app-attribute-definition", ngImport: i0, template: "<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">\r\n <span class=\"fa fa-chevron-left cp\" (click)=\"cs.pageBck();\"> Back</span>&nbsp;&nbsp;&nbsp; {{pageInfo?.title}}\r\n <span class=\"f-12\">({{cs.cDate | date:'medium'}})</span>\r\n </h3>\r\n <button type=\"button\" id=\"addBtn\" class=\"btn btn-info pull-right\" *ngIf=\"addNew?.is_compulsory == 1\" (click)=\"f.reset();\" data-toggle=\"modal\"\r\n data-target=\"#datamodal\" (click)=\"setBtnAdd()\">{{addNew?.form_field_title}}</button>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\">\r\n <!-- <div class=\"content-frame-left\" *ngIf=\"navigation.length > 0\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <div class=\"list-group border-bottom\">\r\n <a href=\"javascript:void(0)\" class=\"list-group-item\" [ngClass]=\"{'active' :i == cLink}\" *ngFor=\"let nav of navigation;let i=index\"\r\n (click)=\"navigationFun(nav,i);\">{{nav.form_field_title}} </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"content-frame-body\" style=\"margin-left:0;\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-8\"></div>\r\n <div class=\"col-sm-4\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search &nbsp;&nbsp;</label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div> -->\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-left\">\r\n <div class=\"form-group\">\r\n <label for=\"ddlPagesize\">Page Size &nbsp; &nbsp;</label>\r\n <select class=\"form-control\" name=\"pageSize\" [(ngModel)]=\"pageSize\">\r\n <!-- (change)=\"onPageSizeChange(pageSize)\" -->\r\n <option value=\"All\">All</option>\r\n <option value=\"10\">10</option>\r\n <option value=\"25\">25</option>\r\n <option value=\"50\">50</option>\r\n <option value=\"100\">100</option>\r\n </select>\r\n </div>\r\n </form>\r\n <button class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\" data-toggle=\"tooltip\"\r\n data-placement=\"right\" title=\"Refresh\" (click)=\"ngOnInit();\">\r\n <span class=\"fa fa-refresh\"></span>\r\n </button>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search &nbsp;&nbsp;</label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-bordered table-hover table-hover-cells\">\r\n <thead>\r\n <tr>\r\n <th class=\"align-center\">SR No</th>\r\n <th class=\"align-center\">Action</th>\r\n <th class=\"align-center\">Attribute</th>\r\n <th class=\"align-center\">Grid</th>\r\n <th class=\"align-center\">Display</th>\r\n <th class=\"align-center\">Sort</th>\r\n <th class=\"align-center\">Date</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let priceDef of priceDefination;let i = index\">\r\n <!-- | searchPipe:searchF | orderBy: order:reverse:'case-insensitive' | paginate: { itemsPerPage: pageSize, currentPage: p }; let i = index; -->\r\n <td class=\"align-center\">{{i + 1}}</td>\r\n <td class=\"align-center\">\r\n <div class=\"btn-group\">\r\n <a href=\"#\" data-toggle=\"dropdown\" class=\"btn btn-info dropdown-toggle\">Action\r\n <span class=\"caret\"></span>\r\n </a>\r\n <ul class=\"dropdown-menu\" role=\"menu\">\r\n <li *ngFor=\"let action of btnAction\">\r\n <a href=\"javascript:void(0)\" (click)=\"userAction(priceDef,action.form_field_typ,action);\">\r\n {{action.form_field_title}}\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </td>\r\n <td class=\"align-center\">{{priceDef.attr}}</td>\r\n <td class=\"align-center\">{{priceDef.grid}}</td>\r\n <td class=\"align-center\">{{priceDef.display}}</td>\r\n <td class=\"align-center\">{{priceDef.sort}}</td>\r\n <td class=\"align-center\">{{priceDef.start_dt}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!-- <pagination-controls (pageChange)=\"p = $event\" class=\"pull-right\"></pagination-controls> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"datamodal\" role=\"dialog\" aria-labelledby=\"defModalHead\" aria-hidden=\"true\" data-backdrop=\"static\"\r\n data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <form class=\"form-horizontal\" [formGroup]=\"myFormmm\" #f=\"ngForm\" > \r\n <!-- ng-submit=\"onSubmit()\" -->\r\n <!-- (ngSubmit)=\"onSubmit(f,submitBtn)\" -->\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" id=\"closeMd\">\r\n <!-- (click)=\"closeNull();\" -->\r\n <span aria-hidden=\"true\">&times;</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"defModalHead\">Add Group</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <!-- {{myFormmm.value | json}} -->\r\n <div class=\"col-md-12\">\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Attribute\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <ng-select style=\"z-index: 5;\" [options]=\"attibutes\" formControlName=\"attr\" (selected)=\"getAttriBute(null)\">\r\n </ng-select>\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Display\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"grid\">\r\n <option value=\"\">Select</option>\r\n <option value=\"group\">Group</option>\r\n <option value=\"side\">Side</option>\r\n <option value=\"head\">Head</option>\r\n </select>\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Type\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"display\">\r\n <option value=\"\">Select</option>\r\n <option value=\"range\">Range</option>\r\n <option value=\"plusminus\">With plus minus</option>\r\n <option value=\"woplusminus\">Without plus minus </option>\r\n <option value=\"userdefined\">User Defined </option>\r\n\r\n </select>\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div formArrayName=\"values\" *ngIf=\"disType == 'userdefined'\">\r\n <div class=\"form-group\">\r\n <div class=\"col-md-2\"></div>\r\n <div class=\"col-md-4\" style=\"text-align: center\"><label class=\"control-label\">From</label></div>\r\n <div class=\"col-md-4\" style=\"text-align: center\"><label class=\"control-label\">To</label></div>\r\n </div>\r\n <div class=\"form-group\">\r\n <div *ngFor=\"let value of fromToForms.controls;let i = index\" class=\"row\" style=\"margin-top: 5px;\"\r\n [formGroupName]=\"i\">\r\n <div class=\"col-md-2\"></div>\r\n <div *ngIf=\"type == 't'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_frm\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_to\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"type == 'n'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_frm\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_to\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"type == 'c'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"srt_frm\" >\r\n <option *ngFor=\"let prp of frmPrps\" [value]=\"prp.sort\">{{prp.print}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"srt_to\">\r\n <option *ngFor=\"let prp of toPrps\" [value]=\"prp.sort\">{{prp.print}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"type == 'd'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"date\" class=\"form-control\" formControlName=\"srt_frm\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"date\" class=\"form-control\" formControlName=\"srt_to\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2\" style=\"text-align:center\">\r\n <button class=\"w-100 btn btn-danger\" (click)=\"deletePhone(i);\"><i class=\"fa fa-times\"\r\n aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" style=\"text-align:center;\">\r\n <a class=\"btn btn-success\" (click)=\"addFromTo();\">Add More</a>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Sort\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <input class=\"form-control\" formControlName=\"sort\" />\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-success\" appAppNoDblClick (click)=\"onSubmit()\">{{btnName}}</button>\r\n <button type=\"reset\" class=\"btn btn-danger\">Reset</button>\r\n <!-- (click)=\"reset(f)\" -->\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"deletemodal\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\" data-backdrop=\"static\"\r\n data-keyboard=\"false\">\r\n <div class=\"modal-dialog modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" id=\"deleteCloseMd\">\r\n <!-- (click)=\"closeNull();\" #deleteclsbtn -->\r\n <span aria-hidden=\"true\">&times;</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Warning</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n Are you sure want to delete?\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-danger\" (click)=\"deleteData();\" data-dismiss=\"modal\">Delete</button>\r\n <!-- (click)=\"deleteDataList();\" -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button id=\"deletebtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#deletemodal\"></button>\r\n <button id=\"datamdbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#datamodal\"></button>\r\n <button id=\"clsMd\" [hidden]=\"true\" data-dismiss=\"modal\" data-target=\"#datamodal\"></button>\r\n <button id=\"popdatamdbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#popdatamodal\"></button>\r\n <button id=\"popResmodalbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#popResmodal\"></button>\r\n</div>", styles: [""], components: [{ type: i5.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i7.AppNoDblClickDirective, selector: "[appAppNoDblClick]" }], pipes: { "date": i6.DatePipe } });
221
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AttributeDefinitionComponent, decorators: [{
222
+ type: Component,
223
+ args: [{ selector: 'app-attribute-definition', template: "<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">\r\n <span class=\"fa fa-chevron-left cp\" (click)=\"cs.pageBck();\"> Back</span>&nbsp;&nbsp;&nbsp; {{pageInfo?.title}}\r\n <span class=\"f-12\">({{cs.cDate | date:'medium'}})</span>\r\n </h3>\r\n <button type=\"button\" id=\"addBtn\" class=\"btn btn-info pull-right\" *ngIf=\"addNew?.is_compulsory == 1\" (click)=\"f.reset();\" data-toggle=\"modal\"\r\n data-target=\"#datamodal\" (click)=\"setBtnAdd()\">{{addNew?.form_field_title}}</button>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\">\r\n <!-- <div class=\"content-frame-left\" *ngIf=\"navigation.length > 0\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <div class=\"list-group border-bottom\">\r\n <a href=\"javascript:void(0)\" class=\"list-group-item\" [ngClass]=\"{'active' :i == cLink}\" *ngFor=\"let nav of navigation;let i=index\"\r\n (click)=\"navigationFun(nav,i);\">{{nav.form_field_title}} </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"content-frame-body\" style=\"margin-left:0;\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-8\"></div>\r\n <div class=\"col-sm-4\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search &nbsp;&nbsp;</label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div> -->\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-left\">\r\n <div class=\"form-group\">\r\n <label for=\"ddlPagesize\">Page Size &nbsp; &nbsp;</label>\r\n <select class=\"form-control\" name=\"pageSize\" [(ngModel)]=\"pageSize\">\r\n <!-- (change)=\"onPageSizeChange(pageSize)\" -->\r\n <option value=\"All\">All</option>\r\n <option value=\"10\">10</option>\r\n <option value=\"25\">25</option>\r\n <option value=\"50\">50</option>\r\n <option value=\"100\">100</option>\r\n </select>\r\n </div>\r\n </form>\r\n <button class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\" data-toggle=\"tooltip\"\r\n data-placement=\"right\" title=\"Refresh\" (click)=\"ngOnInit();\">\r\n <span class=\"fa fa-refresh\"></span>\r\n </button>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search &nbsp;&nbsp;</label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-bordered table-hover table-hover-cells\">\r\n <thead>\r\n <tr>\r\n <th class=\"align-center\">SR No</th>\r\n <th class=\"align-center\">Action</th>\r\n <th class=\"align-center\">Attribute</th>\r\n <th class=\"align-center\">Grid</th>\r\n <th class=\"align-center\">Display</th>\r\n <th class=\"align-center\">Sort</th>\r\n <th class=\"align-center\">Date</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let priceDef of priceDefination;let i = index\">\r\n <!-- | searchPipe:searchF | orderBy: order:reverse:'case-insensitive' | paginate: { itemsPerPage: pageSize, currentPage: p }; let i = index; -->\r\n <td class=\"align-center\">{{i + 1}}</td>\r\n <td class=\"align-center\">\r\n <div class=\"btn-group\">\r\n <a href=\"#\" data-toggle=\"dropdown\" class=\"btn btn-info dropdown-toggle\">Action\r\n <span class=\"caret\"></span>\r\n </a>\r\n <ul class=\"dropdown-menu\" role=\"menu\">\r\n <li *ngFor=\"let action of btnAction\">\r\n <a href=\"javascript:void(0)\" (click)=\"userAction(priceDef,action.form_field_typ,action);\">\r\n {{action.form_field_title}}\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </td>\r\n <td class=\"align-center\">{{priceDef.attr}}</td>\r\n <td class=\"align-center\">{{priceDef.grid}}</td>\r\n <td class=\"align-center\">{{priceDef.display}}</td>\r\n <td class=\"align-center\">{{priceDef.sort}}</td>\r\n <td class=\"align-center\">{{priceDef.start_dt}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!-- <pagination-controls (pageChange)=\"p = $event\" class=\"pull-right\"></pagination-controls> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"datamodal\" role=\"dialog\" aria-labelledby=\"defModalHead\" aria-hidden=\"true\" data-backdrop=\"static\"\r\n data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <form class=\"form-horizontal\" [formGroup]=\"myFormmm\" #f=\"ngForm\" > \r\n <!-- ng-submit=\"onSubmit()\" -->\r\n <!-- (ngSubmit)=\"onSubmit(f,submitBtn)\" -->\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" id=\"closeMd\">\r\n <!-- (click)=\"closeNull();\" -->\r\n <span aria-hidden=\"true\">&times;</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"defModalHead\">Add Group</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <!-- {{myFormmm.value | json}} -->\r\n <div class=\"col-md-12\">\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Attribute\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <ng-select style=\"z-index: 5;\" [options]=\"attibutes\" formControlName=\"attr\" (selected)=\"getAttriBute(null)\">\r\n </ng-select>\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Display\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"grid\">\r\n <option value=\"\">Select</option>\r\n <option value=\"group\">Group</option>\r\n <option value=\"side\">Side</option>\r\n <option value=\"head\">Head</option>\r\n </select>\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Type\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"display\">\r\n <option value=\"\">Select</option>\r\n <option value=\"range\">Range</option>\r\n <option value=\"plusminus\">With plus minus</option>\r\n <option value=\"woplusminus\">Without plus minus </option>\r\n <option value=\"userdefined\">User Defined </option>\r\n\r\n </select>\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div formArrayName=\"values\" *ngIf=\"disType == 'userdefined'\">\r\n <div class=\"form-group\">\r\n <div class=\"col-md-2\"></div>\r\n <div class=\"col-md-4\" style=\"text-align: center\"><label class=\"control-label\">From</label></div>\r\n <div class=\"col-md-4\" style=\"text-align: center\"><label class=\"control-label\">To</label></div>\r\n </div>\r\n <div class=\"form-group\">\r\n <div *ngFor=\"let value of fromToForms.controls;let i = index\" class=\"row\" style=\"margin-top: 5px;\"\r\n [formGroupName]=\"i\">\r\n <div class=\"col-md-2\"></div>\r\n <div *ngIf=\"type == 't'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_frm\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_to\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"type == 'n'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_frm\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_to\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"type == 'c'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"srt_frm\" >\r\n <option *ngFor=\"let prp of frmPrps\" [value]=\"prp.sort\">{{prp.print}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"srt_to\">\r\n <option *ngFor=\"let prp of toPrps\" [value]=\"prp.sort\">{{prp.print}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"type == 'd'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"date\" class=\"form-control\" formControlName=\"srt_frm\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"date\" class=\"form-control\" formControlName=\"srt_to\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2\" style=\"text-align:center\">\r\n <button class=\"w-100 btn btn-danger\" (click)=\"deletePhone(i);\"><i class=\"fa fa-times\"\r\n aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" style=\"text-align:center;\">\r\n <a class=\"btn btn-success\" (click)=\"addFromTo();\">Add More</a>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Sort\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <input class=\"form-control\" formControlName=\"sort\" />\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-success\" appAppNoDblClick (click)=\"onSubmit()\">{{btnName}}</button>\r\n <button type=\"reset\" class=\"btn btn-danger\">Reset</button>\r\n <!-- (click)=\"reset(f)\" -->\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"deletemodal\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\" data-backdrop=\"static\"\r\n data-keyboard=\"false\">\r\n <div class=\"modal-dialog modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" id=\"deleteCloseMd\">\r\n <!-- (click)=\"closeNull();\" #deleteclsbtn -->\r\n <span aria-hidden=\"true\">&times;</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Warning</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n Are you sure want to delete?\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-danger\" (click)=\"deleteData();\" data-dismiss=\"modal\">Delete</button>\r\n <!-- (click)=\"deleteDataList();\" -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button id=\"deletebtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#deletemodal\"></button>\r\n <button id=\"datamdbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#datamodal\"></button>\r\n <button id=\"clsMd\" [hidden]=\"true\" data-dismiss=\"modal\" data-target=\"#datamodal\"></button>\r\n <button id=\"popdatamdbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#popdatamodal\"></button>\r\n <button id=\"popResmodalbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#popResmodal\"></button>\r\n</div>", styles: [""] }]
224
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.PricingService }, { type: i3.CommanServiceService }, { type: i4.FormBuilder }]; } });
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWRlZmluaXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXotbGliL3NyYy9saWIvYXR0cmlidXRlLWRlZmluaXRpb24vYXR0cmlidXRlLWRlZmluaXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXotbGliL3NyYy9saWIvYXR0cmlidXRlLWRlZmluaXRpb24vYXR0cmlidXRlLWRlZmluaXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxrRUFBa0U7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBMEIsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBUW5FLE1BQU0sT0FBTyw0QkFBNEI7SUFJdkMsWUFDUyxNQUFjLEVBQ2IsS0FBcUI7SUFDN0Isc0RBQXNEO0lBQ3RELG9EQUFvRDtJQUM1QyxFQUFrQixFQUNuQixFQUF3QixFQUN2QixFQUFlO1FBTmhCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDYixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUdyQixPQUFFLEdBQUYsRUFBRSxDQUFnQjtRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQUN2QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBTXpCLG9CQUFlLEdBQVEsRUFBRSxDQUFDO0lBTHRCLENBQUM7SUFXTCx1QkFBdUI7SUFDdkIsaUJBQWlCO1FBQ2YsOEJBQThCO1FBQzlCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFDckMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMs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QUU7Z0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6Qiw4QkFBOEI7YUFDL0I7aUJBQU07Z0JBQ0wsOEJBQThCO2dCQUM5QixpR0FBaUc7YUFDbEc7UUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDVCw4QkFBOEI7WUFDOUIsc0ZBQXNGO1FBQ3hGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7MEhBcE9VLDRCQUE0Qjs4R0FBNUIsNEJBQTRCLGdFQ2Z6Qyxnd2xCQXNWTTs0RkR2VU8sNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hblNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFByaWNpbmdTZXJ2aWNlIH0gZnJvbSAnLi8uLi9wcmljaW5nLXNlcnZpY2UvcHJpY2luZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbi8vIGltcG9ydCB7IEZsYXNoTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhcjItZmxhc2gtbWVzc2FnZXMnO1xyXG5pbXBvcnQgeyBDb29raWUgfSBmcm9tICduZzItY29va2llcy9uZzItY29va2llcyc7XHJcbi8vIGltcG9ydCB7IE5nNExvYWRpbmdTcGlubmVyU2VydmljZSB9IGZyb20gJ25nNC1sb2FkaW5nLXNwaW5uZXInO1xyXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWF0dHJpYnV0ZS1kZWZpbml0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXR0cmlidXRlLWRlZmluaXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F0dHJpYnV0ZS1kZWZpbml0aW9uLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlRGVmaW5pdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIG15Rm9ybW1tOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAvLyBwcml2YXRlIGZsYXNoTWVzc2FnZXNTZXJ2aWNlOiBGbGFzaE1lc3NhZ2VzU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgc3Bpbm5lclNlcnZpY2U6IE5nNExvYWRpbmdTcGlubmVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcHM6IFByaWNpbmdTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNzOiBDb21tYW5TZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXHJcbiAgKSB7IH1cclxuXHJcbiAgYWRkTmV3O1xyXG4gIHBhZ2VJbmZvO1xyXG4gIGF0dGlidXRlcztcclxuICBwcmljZURlZmluYXRpb246IGFueSA9IFtdO1xyXG4gIGF0dHJpYnV0ZTtcclxuICBidG5BY3Rpb247XHJcbiAgcGFnZVNpemU7XHJcbiAgc2VhcmNoRjtcclxuICBidG5OYW1lO1xyXG4gIC8vbG9hZCBwYWdlIGRlZmluYXRpb24gXHJcbiAgZ2V0UGFnZURlZmluYXRpb24oKSB7XHJcbiAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ3ByaWNlR3JvdXBGb3JtJztcclxuICAgIHJlcU9ialsnZ3JwSWRuJ10gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXTtcclxuICAgIHRoaXMucHMuZGF0YShyZXFPYmosICdsb2FkRGF0YScsICdwcmljaW5nL2xvYWQnKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgICAgbGV0IHJlcyA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgIGxldCBwYWdlRGVmaW5hdGlvbiA9IHJlcy5wYWdlRGVmaW5hdGlvbjtcclxuICAgICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy5wcmljZURlZmluYXRpb24gPSBbLi4ucmVzLnByaWNlRGVmaW5hdGlvbl07XHJcbiAgICAgICAgICB0aGlzLmJ0bkFjdGlvbiA9IHJlcy5wYWdlRGVmaW5hdGlvbi5hY3Rpb247XHJcbiAgICAgICAgICB0aGlzLmFkZE5ldyA9IHBhZ2VEZWZpbmF0aW9uLmJ1dHRvblswXTtcclxuICAgICAgICAgIHRoaXMucGFnZUluZm8gPSByZXMucGFnZURlZmluYXRpb247XHJcbiAgICAgICAgICB0aGlzLmF0dGlidXRlcyA9IHJlcy5hdHRyU3RydWN0dXJlRHRsLm1hcChvcHRpb24gPT4gKHtcclxuICAgICAgICAgICAgc29ydDogb3B0aW9uLnNvcnQsXHJcbiAgICAgICAgICAgIGxhYmVsOiBvcHRpb24ucHJpbnQgKyAnICcgKyAnKCcgKyBvcHRpb24uYXR0ciArICcpJyxcclxuICAgICAgICAgICAgdHlwZTogb3B0aW9uLmRhdGFUeXBlLFxyXG4gICAgICAgICAgICB2YWx1ZTogb3B0aW9uLmF0dHIsXHJcbiAgICAgICAgICAgIHBycExpc3Q6IG9wdGlvbi5wcnBMaXN0XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAvLyB0aGlzLnBrZiA9IHJlc3BvbnNlLnBhZ2VJbmZvLnByaW1hcnlfa2V5X2ZpZWxkO1xyXG4gICAgICAgICAgLy8gdGhpcy5kYXRhbGlzdCA9IHJlc3BvbnNlLmRhdGFMaXN0O1xyXG4gICAgICAgICAgLy8gdGhpcy5hY3Rpb25zID0gcmVzcG9uc2UuYWN0aW9ucztcclxuICAgICAgICAgIC8vIHRoaXMubmF2aWdhdGlvbiA9IHJlc3BvbnNlLm5hdmlnYXRpb247XHJcbiAgICAgICAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhlcnJvciwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcInJlc3BvbnNlXCIpO1xyXG4gICAgdGhpcy5teUZvcm1tbSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBhdHRyOiAnJyxcclxuICAgICAgZGlzcGxheTogJycsXHJcbiAgICAgIHNvcnQ6ICcnLFxyXG4gICAgICB2YWx1ZXM6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgICBncmlkOiAnJyxcclxuICAgICAgc3RhdHVzOiAnJ1xyXG4gICAgfSlcclxuICAgIHRoaXMuZ2V0UGFnZURlZmluYXRpb24oKTtcclxuICAgIHRoaXMubXlGb3JtbW0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjb25zb2xlLmxvZyk7XHJcbiAgfVxyXG5cclxuICBnZXQgZnJvbVRvRm9ybXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5teUZvcm1tbS5nZXQoJ3ZhbHVlcycpIGFzIEZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldCBhdHRyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubXlGb3JtbW0uZ2V0KCdhdHRyJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzVHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm15Rm9ybW1tLmdldCgnZGlzcGxheScpLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgYWRkRnJvbVRvKCkge1xyXG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHNydF9mcm06IFtdLFxyXG4gICAgICBzcnRfdG86IFtdXHJcbiAgICB9KVxyXG4gICAgdGhpcy5mcm9tVG9Gb3Jtcy5wdXNoKHZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVQaG9uZShpKSB7XHJcbiAgICAvLyB0aGlzLmZyb21Ub0Zvcm1zLnNldFZhbHVlKClcclxuICAgIHRoaXMuZnJvbVRvRm9ybXMucmVtb3ZlQXQoaSk7XHJcbiAgfVxyXG5cclxuICB0eXBlO1xyXG4gIGZybVBycHM7XHJcbiAgdG9QcnBzO1xyXG5cclxuICBnZXRBdHRyaUJ1dGUodmFsKSB7XHJcbiAgICBsZXQgYXR0cnZhbDtcclxuICAgIGlmICh2YWwgPT0gbnVsbCkge1xyXG4gICAgICBhdHRydmFsID0gdGhpcy5hdHRyLnZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXR0cnZhbCA9IHZhbDtcclxuICAgIH1cclxuICAgIHRoaXMuYXR0aWJ1dGVzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50LnZhbHVlID09IGF0dHJ2YWwpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlbGVtZW50KTtcclxuICAgICAgICB0aGlzLnR5cGUgPSBlbGVtZW50LnR5cGU7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PSAnYycpIHtcclxuICAgICAgICAgIHRoaXMuZnJtUHJwcyA9IGVsZW1lbnQucHJwTGlzdDtcclxuICAgICAgICAgIHRoaXMudG9QcnBzID0gZWxlbWVudC5wcnBMaXN0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGN1cnJPYmo7XHJcblxyXG4gIHVzZXJBY3Rpb24ob2JqLCBjYWxsLCBhY3Rpb25PYmopIHtcclxuICAgIGNvbnNvbGUubG9nKG9iaiwgY2FsbCwgYWN0aW9uT2JqKTtcclxuICAgIHRoaXMuY3Vyck9iaiA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJPYmogPSBvYmo7XHJcbiAgICB0aGlzLmdldEF0dHJpQnV0ZShvYmouYXR0cik7XHJcbiAgICBsZXQgZnJvbXZhbHVlTGlzdDogYW55PVtdO1xyXG4gICAgbGV0IHZhbHVlbHN0ID0gb2JqLnZhbHVlc3x8W107XHJcbiAgICB2YWx1ZWxzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBsZXQgdmFsQ29uPSAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgXCJzcnRfZnJtXCI6ZWxlbWVudC5zcnRfZnJtLFxyXG4gICAgICAgIFwic3J0X3RvXCI6ZWxlbWVudC5zcnRfdG9cclxuICAgICAgfSk7XHJcbiAgICAgIGZyb212YWx1ZUxpc3QucHVzaCh2YWxDb24pO1xyXG4gIH0pO1xyXG4gIC8vIGxldCB2YWx1ZXMgPSAob2JqLnZhbHVlc3x8IFtdKS5tYXAoKHgpID0+IHRoaXMuZmIuZ3JvdXAoeCkpXHJcbiAgICBpZiAoY2FsbCA9PSAnZWRpdCcpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFtZGJ0bicpLmNsaWNrKCk7XHJcbiAgICAgIHRoaXMuYnRuTmFtZSA9ICdFZGl0JztcclxuICAgICAgdGhpcy5teUZvcm1tbSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIGF0dHI6IG9iai5hdHRyLFxyXG4gICAgICAgIGRpc3BsYXk6IG9iai5kaXNwbGF5LFxyXG4gICAgICAgIHNvcnQ6IG9iai5zb3J0LFxyXG4gICAgICAgIHZhbHVlczogbmV3IEZvcm1BcnJheShmcm9tdmFsdWVMaXN0KSxcclxuICAgICAgICBncmlkOiBvYmouZ3JpZCxcclxuICAgICAgICBzdGF0dXM6IG9iai5zdGF0dXNcclxuICAgICAgfSlcclxuICAgICAgXHJcblxyXG4gICAgfSBlbHNlIGlmIChjYWxsID09ICdkZWxldGUnKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZWxldGVidG4nKS5jbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRCdG5BZGQoKSB7XHJcbiAgICB0aGlzLmJ0bk5hbWUgPSAnQWRkJztcclxuICAgIHRoaXMubXlGb3JtbW0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgYXR0cjogJycsXHJcbiAgICAgIGRpc3BsYXk6ICcnLFxyXG4gICAgICBzb3J0OiAnJyxcclxuICAgICAgdmFsdWVzOiB0aGlzLmZiLmFycmF5KFtdKSxcclxuICAgICAgZ3JpZDogJycsXHJcbiAgICAgIHN0YXR1czogJydcclxuICAgIH0pXHJcbiAgfVxyXG4gIGRlbGV0ZURhdGEoKSB7XHJcbiAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ3ByaWNlR3JvdXBEZWZpbml0aW9uJztcclxuICAgIHJlcU9ialsndHJuc1R5cGUnXSA9ICdERUxFVEUnO1xyXG4gICAgcmVxT2JqWydhdHRyJ10gPSB0aGlzLmN1cnJPYmouYXR0cjtcclxuICAgIHJlcU9ialsnZ3JwSWRuJ10gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXTtcclxuICAgIGNvbnNvbGUubG9nKHJlcU9iaik7XHJcbiAgICB0aGlzLnBzLmRhdGEocmVxT2JqLCAnc2F2ZVByaWNlR3JvdXBEZWYnLCAncHJpY2luZy9sb2FkJylcclxuICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcclxuICAgICAgICAgIGxldCByZXMgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgICAvLyBsZXQgaW5kZXggPSB0aGlzLnByaWNlRGVmaW5hdGlvbi5pbmRleE9mKHRoaXMuY3Vyck9iaik7XHJcbiAgICAgICAgICAvLyB0aGlzLnByaWNlRGVmaW5hdGlvbi5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgdGhpcy5nZXRQYWdlRGVmaW5hdGlvbigpO1xyXG4gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlbGV0ZUNsb3NlTWQnKS5jbGljaygpO1xyXG4gICAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KHJlc3BvbnNlLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhlcnJvciwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCBmb3Jtc1ZhbCA9IHRoaXMubXlGb3JtbW0udmFsdWU7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdwcmljZUdyb3VwRGVmaW5pdGlvbic7XHJcbiAgICByZXFPYmpbJ3RybnNUeXBlJ10gPSB0aGlzLmJ0bk5hbWUgPT0gJ0FkZCcgPyAnQUREJyA6ICdFRElUJzsvL3RoaXMuY3Vyck9iaiAhPSBudWxsID8gJ0VESVQnIDogJ0FERCc7XHJcbiAgICBmb3Jtc1ZhbFsnc3RhdHVzJ10gPSAnMSc7XHJcbiAgICByZXFPYmpbJ2RhdGFUcm5zRHRsJ10gPSBmb3Jtc1ZhbDtcclxuICAgIHJlcU9ialsnZ3JwSWRuJ10gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXTtcclxuICAgIGlmICh0aGlzLmN1cnJPYmogIT0gbnVsbCkge1xyXG4gICAgICByZXFPYmpbJ2F0dHInXSA9IGZvcm1zVmFsWydhdHRyJ107XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgIHRoaXMucHMuZGF0YShyZXFPYmosICdzYXZlUHJpY2VHcm91cERlZicsICdwcmljaW5nL2xvYWQnKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgICAgbGV0IHJlcyA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbG9zZU1kJykuY2xpY2soKTtcclxuICAgICAgICAgIHRoaXMuZ2V0UGFnZURlZmluYXRpb24oKTtcclxuICAgICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhyZXNwb25zZS5tZXNzYWdlLCB7IGNzc0NsYXNzOiAnYWxlcnQtZGFuZ2VyJywgdGltZW91dDogMzAwMCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coZXJyb3IsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtdFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZ1wiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0IGNwXCIgKGNsaWNrKT1cImNzLnBhZ2VCY2soKTtcIj4gQmFjazwvc3Bhbj4mbmJzcDsmbmJzcDsmbmJzcDsge3twYWdlSW5mbz8udGl0bGV9fVxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZi0xMlwiPih7e2NzLmNEYXRlIHwgZGF0ZTonbWVkaXVtJ319KTwvc3Bhbj5cclxuICAgICAgPC9oMz5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJhZGRCdG5cIiBjbGFzcz1cImJ0biBidG4taW5mbyBwdWxsLXJpZ2h0XCIgKm5nSWY9XCJhZGROZXc/LmlzX2NvbXB1bHNvcnkgPT0gMVwiIChjbGljayk9XCJmLnJlc2V0KCk7XCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiXHJcbiAgICAgICAgZGF0YS10YXJnZXQ9XCIjZGF0YW1vZGFsXCIgKGNsaWNrKT1cInNldEJ0bkFkZCgpXCI+e3thZGROZXc/LmZvcm1fZmllbGRfdGl0bGV9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZnJhbWVcIj5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbnRlbnQtZnJhbWUtbGVmdFwiICpuZ0lmPVwibmF2aWdhdGlvbi5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwIGJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnIDppID09IGNMaW5rfVwiICpuZ0Zvcj1cImxldCBuYXYgb2YgbmF2aWdhdGlvbjtsZXQgaT1pbmRleFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRpb25GdW4obmF2LGkpO1wiPnt7bmF2LmZvcm1fZmllbGRfdGl0bGV9fSA8L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mcmFtZS1ib2R5XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDowO1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLThcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgcHVsbC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJleGFtcGxlSW5wdXROYW1lMlwiPlNlYXJjaCAmbmJzcDsmbmJzcDs8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJleGFtcGxlSW5wdXROYW1lMlwiIG5hbWU9XCJzY2h0eHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lIHB1bGwtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRkbFBhZ2VzaXplXCI+UGFnZSBTaXplICZuYnNwOyAmbmJzcDs8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInBhZ2VTaXplXCIgWyhuZ01vZGVsKV09XCJwYWdlU2l6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSAoY2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemUpXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxMFwiPjEwPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjI1XCI+MjU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNTBcIj41MDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxMDBcIj4xMDA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIHN0eWxlPVwicGFkZGluZzogNHB4IDE1cHggNHB4IDIwcHg7bWFyZ2luLWxlZnQ6IDEwcHg7XCIgZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtcGxhY2VtZW50PVwicmlnaHRcIiB0aXRsZT1cIlJlZnJlc2hcIiAoY2xpY2spPVwibmdPbkluaXQoKTtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtcmVmcmVzaFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgcHVsbC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4YW1wbGVJbnB1dE5hbWUyXCI+U2VhcmNoICZuYnNwOyZuYnNwOzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJleGFtcGxlSW5wdXROYW1lMlwiIG5hbWU9XCJzY2h0eHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEZcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgdGFibGUtaG92ZXIgdGFibGUtaG92ZXItY2VsbHNcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImFsaWduLWNlbnRlclwiPlNSIE5vPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYWxpZ24tY2VudGVyXCI+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYWxpZ24tY2VudGVyXCI+QXR0cmlidXRlPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYWxpZ24tY2VudGVyXCI+R3JpZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImFsaWduLWNlbnRlclwiPkRpc3BsYXk8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJhbGlnbi1jZW50ZXJcIj5Tb3J0PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYWxpZ24tY2VudGVyXCI+RGF0ZTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwcmljZURlZiBvZiBwcmljZURlZmluYXRpb247bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIHwgc2VhcmNoUGlwZTpzZWFyY2hGIHwgb3JkZXJCeTogb3JkZXI6cmV2ZXJzZTonY2FzZS1pbnNlbnNpdGl2ZScgfCBwYWdpbmF0ZTogeyBpdGVtc1BlclBhZ2U6IHBhZ2VTaXplLCBjdXJyZW50UGFnZTogcCB9OyBsZXQgaSA9IGluZGV4OyAtLT5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWxpZ24tY2VudGVyXCI+e3tpICsgMX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgY2xhc3M9XCJidG4gYnRuLWluZm8gZHJvcGRvd24tdG9nZ2xlXCI+QWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZXRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYnRuQWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJ1c2VyQWN0aW9uKHByaWNlRGVmLGFjdGlvbi5mb3JtX2ZpZWxkX3R5cCxhY3Rpb24pO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3thY3Rpb24uZm9ybV9maWVsZF90aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWxpZ24tY2VudGVyXCI+e3twcmljZURlZi5hdHRyfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhbGlnbi1jZW50ZXJcIj57e3ByaWNlRGVmLmdyaWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFsaWduLWNlbnRlclwiPnt7cHJpY2VEZWYuZGlzcGxheX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWxpZ24tY2VudGVyXCI+e3twcmljZURlZi5zb3J0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhbGlnbi1jZW50ZXJcIj57e3ByaWNlRGVmLnN0YXJ0X2R0fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIDxwYWdpbmF0aW9uLWNvbnRyb2xzIChwYWdlQ2hhbmdlKT1cInAgPSAkZXZlbnRcIiBjbGFzcz1cInB1bGwtcmlnaHRcIj48L3BhZ2luYXRpb24tY29udHJvbHM+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cImRhdGFtb2RhbFwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJkZWZNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCJcclxuICAgIGRhdGEta2V5Ym9hcmQ9XCJmYWxzZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgW2Zvcm1Hcm91cF09XCJteUZvcm1tbVwiICNmPVwibmdGb3JtXCIgID4gXHJcbiAgICAgICAgICA8IS0tIG5nLXN1Ym1pdD1cIm9uU3VibWl0KClcIiAtLT5cclxuICAgICAgICAgIDwhLS0gKG5nU3VibWl0KT1cIm9uU3VibWl0KGYsc3VibWl0QnRuKVwiICAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgaWQ9XCJjbG9zZU1kXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSAoY2xpY2spPVwiY2xvc2VOdWxsKCk7XCIgIC0tPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZGVmTW9kYWxIZWFkXCI+QWRkIEdyb3VwPC9oND5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDwhLS0ge3tteUZvcm1tbS52YWx1ZSB8IGpzb259fSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+QXR0cmlidXRlXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3Qgc3R5bGU9XCJ6LWluZGV4OiA1O1wiIFtvcHRpb25zXT1cImF0dGlidXRlc1wiIGZvcm1Db250cm9sTmFtZT1cImF0dHJcIiAoc2VsZWN0ZWQpPVwiZ2V0QXR0cmlCdXRlKG51bGwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJ0ZXh0SW5wdXQuaW52YWxpZCAmJiAodGV4dElucHV0LmRpcnR5IHx8IHRleHRJbnB1dC50b3VjaGVkKVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIGNhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGV4dElucHV0LmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRleHRJbnB1dC5lcnJvcnMubWlubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IG11c3QgYmUgYXQgbGVhc3Qge3tmbC5mb3JtX2ZpZWxkX21pbl9sZW5ndGh9fSBjaGFyYWN0ZXJzIGxvbmcuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0ZXh0SW5wdXQuZXJyb3JzLm1heGxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBNYXhtaW11bSBsaW1pdCB7e2ZsLmZvcm1fZmllbGRfbWF4X2xlbmd0aH19IGNoYXJhY3RlcnMgbG9uZy5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj5EaXNwbGF5XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3Q8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdyb3VwXCI+R3JvdXA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNpZGVcIj5TaWRlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJoZWFkXCI+SGVhZDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwidGV4dElucHV0LmludmFsaWQgJiYgKHRleHRJbnB1dC5kaXJ0eSB8fCB0ZXh0SW5wdXQudG91Y2hlZClcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBjYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGV4dElucHV0LmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRleHRJbnB1dC5lcnJvcnMubWlubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tmbC5mb3JtX2ZpZWxkX3RpdGxlfX0gbXVzdCBiZSBhdCBsZWFzdCB7e2ZsLmZvcm1fZmllbGRfbWluX2xlbmd0aH19IGNoYXJhY3RlcnMgbG9uZy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0ZXh0SW5wdXQuZXJyb3JzLm1heGxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IE1heG1pbXVtIGxpbWl0IHt7ZmwuZm9ybV9maWVsZF9tYXhfbGVuZ3RofX0gY2hhcmFjdGVycyBsb25nLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj5UeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3Q8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInJhbmdlXCI+UmFuZ2U8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInBsdXNtaW51c1wiPldpdGggcGx1cyBtaW51czwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwid29wbHVzbWludXNcIj5XaXRob3V0IHBsdXMgbWludXMgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ1c2VyZGVmaW5lZFwiPlVzZXIgRGVmaW5lZCA8L29wdGlvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJ0ZXh0SW5wdXQuaW52YWxpZCAmJiAodGV4dElucHV0LmRpcnR5IHx8IHRleHRJbnB1dC50b3VjaGVkKVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIGNhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRleHRJbnB1dC5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0ZXh0SW5wdXQuZXJyb3JzLm1pbmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tmbC5mb3JtX2ZpZWxkX3RpdGxlfX0gbXVzdCBiZSBhdCBsZWFzdCB7e2ZsLmZvcm1fZmllbGRfbWluX2xlbmd0aH19IGNoYXJhY3RlcnMgbG9uZy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGV4dElucHV0LmVycm9ycy5tYXhsZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IE1heG1pbXVtIGxpbWl0IHt7ZmwuZm9ybV9maWVsZF9tYXhfbGVuZ3RofX0gY2hhcmFjdGVycyBsb25nLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICBmb3JtQXJyYXlOYW1lPVwidmFsdWVzXCIgICpuZ0lmPVwiZGlzVHlwZSA9PSAndXNlcmRlZmluZWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj48bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCI+RnJvbTwvbGFiZWw+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj48bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCI+VG88L2xhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBmcm9tVG9Gb3Jtcy5jb250cm9scztsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDVweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PSAndCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInNydF9mcm1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInNydF90b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PSAnbidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInNydF9mcm1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInNydF90b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PSAnYydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwic3J0X2ZybVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgcHJwIG9mIGZybVBycHNcIiBbdmFsdWVdPVwicHJwLnNvcnRcIj57e3BycC5wcmludH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInNydF90b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBwcnAgb2YgdG9QcnBzXCIgW3ZhbHVlXT1cInBycC5zb3J0XCI+e3twcnAucHJpbnR9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PSAnZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInNydF9mcm1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInNydF90b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIiBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3LTEwMCBidG4gYnRuLWRhbmdlclwiIChjbGljayk9XCJkZWxldGVQaG9uZShpKTtcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIChjbGljayk9XCJhZGRGcm9tVG8oKTtcIj5BZGQgTW9yZTwvYT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj5Tb3J0XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInNvcnRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cInRleHRJbnB1dC5pbnZhbGlkICYmICh0ZXh0SW5wdXQuZGlydHkgfHwgdGV4dElucHV0LnRvdWNoZWQpXCIgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgY2FcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0ZXh0SW5wdXQuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGV4dElucHV0LmVycm9ycy5taW5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tmbC5mb3JtX2ZpZWxkX3RpdGxlfX0gbXVzdCBiZSBhdCBsZWFzdCB7e2ZsLmZvcm1fZmllbGRfbWluX2xlbmd0aH19IGNoYXJhY3RlcnMgbG9uZy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRleHRJbnB1dC5lcnJvcnMubWF4bGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IE1heG1pbXVtIGxpbWl0IHt7ZmwuZm9ybV9maWVsZF9tYXhfbGVuZ3RofX0gY2hhcmFjdGVycyBsb25nLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIGFwcEFwcE5vRGJsQ2xpY2sgKGNsaWNrKT1cIm9uU3VibWl0KClcIj57e2J0bk5hbWV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJyZXNldFwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIj5SZXNldDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8IS0tIChjbGljayk9XCJyZXNldChmKVwiIC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cImRlbGV0ZW1vZGFsXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cInNtYWxsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiXHJcbiAgICBkYXRhLWtleWJvYXJkPVwiZmFsc2VcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtc21cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBpZD1cImRlbGV0ZUNsb3NlTWRcIj5cclxuICAgICAgICAgICAgPCEtLSAoY2xpY2spPVwiY2xvc2VOdWxsKCk7XCIgI2RlbGV0ZWNsc2J0biAtLT5cclxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzbWFsbE1vZGFsSGVhZFwiPldhcm5pbmc8L2g0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICBBcmUgeW91IHN1cmUgd2FudCB0byBkZWxldGU/XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cImRlbGV0ZURhdGEoKTtcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkRlbGV0ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgPCEtLSAoY2xpY2spPVwiZGVsZXRlRGF0YUxpc3QoKTtcIiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGJ1dHRvbiBpZD1cImRlbGV0ZWJ0blwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNkZWxldGVtb2RhbFwiPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gaWQ9XCJkYXRhbWRidG5cIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjZGF0YW1vZGFsXCI+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBpZD1cImNsc01kXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNkYXRhbW9kYWxcIj48L2J1dHRvbj5cclxuICA8YnV0dG9uIGlkPVwicG9wZGF0YW1kYnRuXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI3BvcGRhdGFtb2RhbFwiPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gaWQ9XCJwb3BSZXNtb2RhbGJ0blwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNwb3BSZXNtb2RhbFwiPjwvYnV0dG9uPlxyXG48L2Rpdj4iXX0=
@@ -0,0 +1,37 @@
1
+ import { Cookie } from 'ng2-cookies/ng2-cookies';
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ // import { FlashMessagesService } from 'angular2-flash-messages';
6
+ export class AuthGuard {
7
+ constructor(route, ac, router) {
8
+ this.route = route;
9
+ this.ac = ac;
10
+ this.router = router;
11
+ this.userLoggedIn = false;
12
+ }
13
+ canActivate() {
14
+ // let logIdn = localStorage.getItem('logIdn');
15
+ // let ds = localStorage.getItem('DS');
16
+ if (Cookie.get('_ck') != null) {
17
+ return true;
18
+ }
19
+ else {
20
+ // this.redirectToLoginPage(ds);
21
+ return false;
22
+ }
23
+ }
24
+ redirectToLoginPage(ds) {
25
+ // this.flashMessagesService.show('Invalid access to application', { cssClass: 'alert-danger', timeout: 3000 });
26
+ this.route.navigate(['/login/', ds]);
27
+ }
28
+ }
29
+ AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AuthGuard, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
30
+ AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AuthGuard, providedIn: 'root' });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AuthGuard, decorators: [{
32
+ type: Injectable,
33
+ args: [{
34
+ providedIn: 'root'
35
+ }]
36
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i1.Router }]; } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6LWxpYi9zcmMvbGliL2F1dGgvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRzNDLGtFQUFrRTtBQU1sRSxNQUFNLE9BQU8sU0FBUztJQUVwQixZQUNVLEtBQWEsRUFDYixFQUFrQixFQUNsQixNQUFhO1FBRmIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLE9BQUUsR0FBRixFQUFFLENBQWdCO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQU87UUFNdkIsaUJBQVksR0FBVyxLQUFLLENBQUM7SUFGN0IsQ0FBQztJQUlELFdBQVc7UUFDVCwrQ0FBK0M7UUFDL0MsdUNBQXVDO1FBQ3ZDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDN0IsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNO1lBQ0wsaUNBQWlDO1lBQ2pDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsRUFBRTtRQUNwQixnSEFBZ0g7UUFDaEgsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDOzt1R0EzQlUsU0FBUzsyR0FBVCxTQUFTLGNBSFIsTUFBTTs0RkFHUCxTQUFTO2tCQUpyQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvb2tpZSB9IGZyb20gJ25nMi1jb29raWVzL25nMi1jb29raWVzJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSxOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG4vLyBpbXBvcnQgeyBGbGFzaE1lc3NhZ2VzU2VydmljZSB9IGZyb20gJ2FuZ3VsYXIyLWZsYXNoLW1lc3NhZ2VzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XHJcbiAgY1VybFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBhYzogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJvdXRlcjpSb3V0ZXIsXHJcbiAgICAvLyBwcml2YXRlIGZsYXNoTWVzc2FnZXNTZXJ2aWNlOiBGbGFzaE1lc3NhZ2VzU2VydmljZVxyXG4gICkgeyBcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgdXNlckxvZ2dlZEluOmJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY2FuQWN0aXZhdGUoKXtcclxuICAgIC8vIGxldCBsb2dJZG4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbG9nSWRuJyk7XHJcbiAgICAvLyBsZXQgZHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnRFMnKTtcclxuICAgIGlmIChDb29raWUuZ2V0KCdfY2snKSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5yZWRpcmVjdFRvTG9naW5QYWdlKGRzKTsgXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gXHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvTG9naW5QYWdlKGRzKSB7XHJcbiAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coJ0ludmFsaWQgYWNjZXNzIHRvIGFwcGxpY2F0aW9uJywgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFsnL2xvZ2luLycsIGRzXSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,57 @@
1
+ // import { RequestOptions } from '@angular/http';
2
+ import { HttpHeaders } from '@angular/common/http';
3
+ import { Cookie } from 'ng2-cookies/ng2-cookies';
4
+ import { Injectable } from '@angular/core';
5
+ import { catchError } from 'rxjs/operators';
6
+ import { pipe, throwError } from 'rxjs';
7
+ import { map } from 'rxjs/operators';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common/http";
10
+ import * as i2 from "../globle/globle-env.service";
11
+ import * as i3 from "@angular/router";
12
+ export class BiService {
13
+ constructor(http, glbEnv,
14
+ // private _spinnerService: Ng4LoadingSpinnerService,
15
+ // private _flashMessagesService: FlashMessagesService,
16
+ router, route) {
17
+ this.http = http;
18
+ this.glbEnv = glbEnv;
19
+ this.router = router;
20
+ this.route = route;
21
+ this.header = {};
22
+ }
23
+ data(reqObj, method, url) {
24
+ // this._spinnerService.show();
25
+ if (localStorage.getItem('mdlKey') != null) {
26
+ let cUrl = this.router.url;
27
+ let mdlk = JSON.parse(localStorage.getItem('mdlKey'));
28
+ this.header = {
29
+ 'clientkey': Cookie.get('_ck'),
30
+ 'Content-Type': 'application/json',
31
+ 'modulekey': mdlk[cUrl.split('/')[1]],
32
+ 'loginid': Cookie.get('_logid'),
33
+ 'source': 'qs',
34
+ 'method': method
35
+ };
36
+ }
37
+ console.log(JSON.stringify(this.header));
38
+ // let options: any = new RequestOptions({ headers: this.header });
39
+ let options = new HttpHeaders({ headers: this.header });
40
+ return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), options);
41
+ pipe(map((res) => res));
42
+ pipe(catchError((error) => {
43
+ // this._spinnerService.hide();
44
+ // this._flashMessagesService.show(error.message, { cssClass: 'alert-danger', timeout: 3000 });
45
+ return throwError(error);
46
+ }));
47
+ }
48
+ }
49
+ BiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BiService, deps: [{ token: i1.HttpClient }, { token: i2.GlobleEnvService }, { token: i3.Router }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
50
+ BiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BiService, providedIn: 'root' });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BiService, decorators: [{
52
+ type: Injectable,
53
+ args: [{
54
+ providedIn: 'root'
55
+ }]
56
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.GlobleEnvService }, { type: i3.Router }, { type: i3.ActivatedRoute }]; } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6LWxpYi9zcmMvbGliL2JpLXNlcnZpY2UvYmkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrREFBa0Q7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU1qRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQWMsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBS3JDLE1BQU0sT0FBTyxTQUFTO0lBRXBCLFlBQ1UsSUFBZ0IsRUFDaEIsTUFBd0I7SUFDaEMscURBQXFEO0lBQ3JELHVEQUF1RDtJQUMvQyxNQUFjLEVBQ2QsS0FBcUI7UUFMckIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUd4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFHdkIsV0FBTSxHQUFRLEVBQUUsQ0FBQztJQUZyQixDQUFDO0lBSUwsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRztRQUN0QiwrQkFBK0I7UUFDL0IsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUMxQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUMzQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHO2dCQUNaLFdBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDOUIsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7Z0JBQy9CLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFFBQVEsRUFBRSxNQUFNO2FBQ2pCLENBQUM7U0FDSDtRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxQyxtRUFBbUU7UUFDbkUsSUFBSSxPQUFPLEdBQVEsSUFBSSxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUMvRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN4QiwrQkFBK0I7WUFDL0IsK0ZBQStGO1lBQy9GLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDOzt1R0FyQ1UsU0FBUzsyR0FBVCxTQUFTLGNBRlIsTUFBTTs0RkFFUCxTQUFTO2tCQUhyQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCB7IFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvaHR0cCc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb29raWUgfSBmcm9tICduZzItY29va2llcy9uZzItY29va2llcyc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG4vLyBpbXBvcnQgeyBGbGFzaE1lc3NhZ2VzU2VydmljZSB9IGZyb20gJ2FuZ3VsYXIyLWZsYXNoLW1lc3NhZ2VzJztcclxuLy8gaW1wb3J0IHsgTmc0TG9hZGluZ1NwaW5uZXJTZXJ2aWNlIH0gZnJvbSAnbmc0LWxvYWRpbmctc3Bpbm5lcic7XHJcbmltcG9ydCB7IEdsb2JsZUVudlNlcnZpY2UgfSBmcm9tICcuLi9nbG9ibGUvZ2xvYmxlLWVudi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBwaXBlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJpU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBnbGJFbnY6IEdsb2JsZUVudlNlcnZpY2UsXHJcbiAgICAvLyBwcml2YXRlIF9zcGlubmVyU2VydmljZTogTmc0TG9hZGluZ1NwaW5uZXJTZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSBfZmxhc2hNZXNzYWdlc1NlcnZpY2U6IEZsYXNoTWVzc2FnZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXHJcbiAgKSB7IH1cclxuXHJcbiAgcHJpdmF0ZSBoZWFkZXI6IGFueSA9IHt9O1xyXG5cclxuICBkYXRhKHJlcU9iaiwgbWV0aG9kLCB1cmwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gdGhpcy5fc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZGxLZXknKSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBjVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgICBsZXQgbWRsayA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21kbEtleScpKTtcclxuICAgICAgdGhpcy5oZWFkZXIgPSB7XHJcbiAgICAgICAgJ2NsaWVudGtleSc6IENvb2tpZS5nZXQoJ19jaycpLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgJ21vZHVsZWtleSc6IG1kbGtbY1VybC5zcGxpdCgnLycpWzFdXSxcclxuICAgICAgICAnbG9naW5pZCc6IENvb2tpZS5nZXQoJ19sb2dpZCcpLFxyXG4gICAgICAgICdzb3VyY2UnOiAncXMnLFxyXG4gICAgICAgICdtZXRob2QnOiBtZXRob2RcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KCB0aGlzLmhlYWRlcikpO1xyXG4gICAgLy8gbGV0IG9wdGlvbnM6IGFueSA9IG5ldyBSZXF1ZXN0T3B0aW9ucyh7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH0pO1xyXG4gICAgbGV0IG9wdGlvbnM6IGFueSA9IG5ldyBIdHRwSGVhZGVycyh7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyB1cmwsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIG9wdGlvbnMpXHJcbiAgICAgIHBpcGUobWFwKChyZXM6IGFueSkgPT4gcmVzKSlcclxuICAgICAgcGlwZShjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMuX3NwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAvLyB0aGlzLl9mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KGVycm9yLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxufVxyXG4iXX0=