ax-common-ui-lib 1.0.1-beta.34.9-testing02 → 1.0.1-beta.34.9-testing04

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.
@@ -24,12 +24,12 @@ import * as i9 from "@angular/forms";
24
24
  import * as i10 from "../../../../../ghost-loader/ghost-loader.component";
25
25
  import * as i11 from "../../axo-percentage.pipe";
26
26
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_td_1_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵelement(0, "td", 20);
27
+ i0.ɵɵelement(0, "td", 22);
28
28
  } if (rf & 2) {
29
29
  const ctx_r21 = i0.ɵɵnextContext(6);
30
30
  i0.ɵɵstyleProp("border", ctx_r21.tabularReport.tableStyle.border.width + "px" + " " + ctx_r21.tabularReport.tableStyle.border.borderStyle + " " + ctx_r21.tabularReport.tableStyle.border.color);
31
31
  } }
32
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
32
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
33
33
  i0.ɵɵelementContainerStart(0);
34
34
  i0.ɵɵelementStart(1, "span");
35
35
  i0.ɵɵtext(2);
@@ -43,7 +43,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
43
43
  i0.ɵɵadvance(2);
44
44
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 1, ctx_r40.moment(data_r24 + "Z"), ctx_r40.tabularReport.matrix.attributes[ctx_r40.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
45
45
  } }
46
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
46
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
47
47
  i0.ɵɵelementContainerStart(0);
48
48
  i0.ɵɵelementStart(1, "span");
49
49
  i0.ɵɵtext(2);
@@ -54,7 +54,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
54
54
  i0.ɵɵadvance(2);
55
55
  i0.ɵɵtextInterpolate(data_r24);
56
56
  } }
57
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
57
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
58
58
  i0.ɵɵelementStart(0, "span");
59
59
  i0.ɵɵtext(1);
60
60
  i0.ɵɵpipe(2, "date");
@@ -66,16 +66,16 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
66
66
  i0.ɵɵadvance(1);
67
67
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r48.moment(data_r24, "hh:mm:ss"), ctx_r48.tabularReport.matrix.attributes[ctx_r48.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
68
68
  } }
69
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
69
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
70
70
  i0.ɵɵelementContainerStart(0);
71
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
71
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
72
72
  i0.ɵɵelementContainerEnd();
73
73
  } if (rf & 2) {
74
74
  const data_r24 = i0.ɵɵnextContext(4).$implicit;
75
75
  i0.ɵɵadvance(1);
76
76
  i0.ɵɵproperty("ngIf", data_r24);
77
77
  } }
78
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
78
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
79
79
  i0.ɵɵelementStart(0, "span");
80
80
  i0.ɵɵtext(1);
81
81
  i0.ɵɵpipe(2, "date");
@@ -87,9 +87,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
87
87
  i0.ɵɵadvance(1);
88
88
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, data_r24, ctx_r52.tabularReport.matrix.attributes[ctx_r52.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
89
89
  } }
90
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
90
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
91
91
  i0.ɵɵelementContainerStart(0);
92
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
92
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
93
93
  i0.ɵɵelementContainerEnd();
94
94
  } if (rf & 2) {
95
95
  const m_r18 = i0.ɵɵnextContext(6).index;
@@ -97,7 +97,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
97
97
  i0.ɵɵadvance(1);
98
98
  i0.ɵɵproperty("ngIf", ctx_r43.tabularReport.matrix.attributes[ctx_r43.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date");
99
99
  } }
100
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
100
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
101
101
  i0.ɵɵelementContainerStart(0);
102
102
  i0.ɵɵtext(1);
103
103
  i0.ɵɵelementContainerEnd();
@@ -106,13 +106,13 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
106
106
  i0.ɵɵadvance(1);
107
107
  i0.ɵɵtextInterpolate1(" ", data_r24, " ");
108
108
  } }
109
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
109
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
110
110
  i0.ɵɵelementStart(0, "span");
111
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
112
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
113
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
114
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
115
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
111
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
112
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
113
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
114
+ i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
115
+ i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
116
116
  i0.ɵɵelementEnd();
117
117
  } if (rf & 2) {
118
118
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -128,7 +128,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
128
128
  i0.ɵɵadvance(1);
129
129
  i0.ɵɵproperty("ngIf", ctx_r31.tabularReport.matrix.attributes[ctx_r31.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date_range");
130
130
  } }
131
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
131
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
132
132
  i0.ɵɵelementStart(0, "span");
133
133
  i0.ɵɵtext(1);
134
134
  i0.ɵɵelementEnd();
@@ -137,7 +137,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
137
137
  i0.ɵɵadvance(1);
138
138
  i0.ɵɵtextInterpolate1(" ", data_r24, " ");
139
139
  } }
140
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
140
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
141
141
  i0.ɵɵelementStart(0, "span");
142
142
  i0.ɵɵtext(1);
143
143
  i0.ɵɵpipe(2, "currency");
@@ -149,7 +149,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
149
149
  i0.ɵɵadvance(1);
150
150
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r61.tabularReport.matrix.attributes[ctx_r61.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
151
151
  } }
152
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
152
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
153
153
  i0.ɵɵelementStart(0, "span");
154
154
  i0.ɵɵtext(1);
155
155
  i0.ɵɵpipe(2, "axoPercentage");
@@ -161,7 +161,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
161
161
  i0.ɵɵadvance(1);
162
162
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r62.tabularReport.matrix.attributes[ctx_r62.tabularReport.rowGrouping.length + m_r18].series, "column"));
163
163
  } }
164
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
164
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
165
165
  i0.ɵɵelementStart(0, "span");
166
166
  i0.ɵɵtext(1);
167
167
  i0.ɵɵelementEnd();
@@ -170,11 +170,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
170
170
  i0.ɵɵadvance(1);
171
171
  i0.ɵɵtextInterpolate(data_r24);
172
172
  } }
173
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
173
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
174
174
  i0.ɵɵelementStart(0, "span");
175
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_span_2_span_1_Template, 3, 5, "span", 6);
176
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_span_2_span_2_Template, 3, 5, "span", 6);
177
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_span_2_span_3_Template, 2, 1, "span", 6);
175
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_1_Template, 3, 5, "span", 6);
176
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_2_Template, 3, 5, "span", 6);
177
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_3_Template, 2, 1, "span", 6);
178
178
  i0.ɵɵelementEnd();
179
179
  } if (rf & 2) {
180
180
  const m_r18 = i0.ɵɵnextContext(6).index;
@@ -186,10 +186,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
186
186
  i0.ɵɵadvance(1);
187
187
  i0.ɵɵproperty("ngIf", !ctx_r59.tabularReport.matrix.attributes[ctx_r59.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r59.tabularReport.matrix.attributes[ctx_r59.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
188
188
  } }
189
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
189
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
190
190
  i0.ɵɵelementStart(0, "span");
191
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_span_1_Template, 2, 1, "span", 6);
192
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_span_2_Template, 4, 3, "span", 6);
191
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_1_Template, 2, 1, "span", 6);
192
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_Template, 4, 3, "span", 6);
193
193
  i0.ɵɵelementEnd();
194
194
  } if (rf & 2) {
195
195
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -199,11 +199,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
199
199
  i0.ɵɵadvance(1);
200
200
  i0.ɵɵproperty("ngIf", ctx_r32.tabularReport.matrix.attributes[ctx_r32.tabularReport.rowGrouping.length + m_r18].widgetSubType === "numeric");
201
201
  } }
202
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
202
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
203
203
  const _r73 = i0.ɵɵgetCurrentView();
204
204
  i0.ɵɵelementStart(0, "span");
205
- i0.ɵɵelementStart(1, "span", 28);
206
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r73); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r71 = i0.ɵɵnextContext(6); return ctx_r71.redirect($event, data_r24); });
205
+ i0.ɵɵelementStart(1, "span", 30);
206
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r73); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r71 = i0.ɵɵnextContext(6); return ctx_r71.redirect($event, data_r24); });
207
207
  i0.ɵɵtext(2);
208
208
  i0.ɵɵelementEnd();
209
209
  i0.ɵɵelementEnd();
@@ -215,11 +215,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
215
215
  i0.ɵɵadvance(1);
216
216
  i0.ɵɵtextInterpolate(data_r24);
217
217
  } }
218
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_5_Template(rf, ctx) { if (rf & 1) {
218
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_5_Template(rf, ctx) { if (rf & 1) {
219
219
  const _r76 = i0.ɵɵgetCurrentView();
220
220
  i0.ɵɵelementStart(0, "span");
221
- i0.ɵɵelementStart(1, "span", 28);
222
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r76); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r75 = i0.ɵɵnextContext(6); return ctx_r75.redirect($event, ctx_r75.x1ImageMediaUrl + data_r24); });
221
+ i0.ɵɵelementStart(1, "span", 30);
222
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r76); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r75 = i0.ɵɵnextContext(6); return ctx_r75.redirect($event, ctx_r75.x1ImageMediaUrl + data_r24); });
223
223
  i0.ɵɵtext(2);
224
224
  i0.ɵɵelementEnd();
225
225
  i0.ɵɵelementEnd();
@@ -231,11 +231,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
231
231
  i0.ɵɵadvance(1);
232
232
  i0.ɵɵtextInterpolate(data_r24);
233
233
  } }
234
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_6_Template(rf, ctx) { if (rf & 1) {
234
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_6_Template(rf, ctx) { if (rf & 1) {
235
235
  const _r80 = i0.ɵɵgetCurrentView();
236
236
  i0.ɵɵelementStart(0, "span");
237
- i0.ɵɵelementStart(1, "span", 28);
238
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r80); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r79 = i0.ɵɵnextContext(6); return ctx_r79.redirect($event, ctx_r79.x1ImageMediaUrl + data_r24); });
237
+ i0.ɵɵelementStart(1, "span", 30);
238
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r80); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r79 = i0.ɵɵnextContext(6); return ctx_r79.redirect($event, ctx_r79.x1ImageMediaUrl + data_r24); });
239
239
  i0.ɵɵtext(2);
240
240
  i0.ɵɵelementEnd();
241
241
  i0.ɵɵelementEnd();
@@ -247,11 +247,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
247
247
  i0.ɵɵadvance(1);
248
248
  i0.ɵɵtextInterpolate(data_r24);
249
249
  } }
250
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_7_Template(rf, ctx) { if (rf & 1) {
250
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_7_Template(rf, ctx) { if (rf & 1) {
251
251
  const _r84 = i0.ɵɵgetCurrentView();
252
252
  i0.ɵɵelementStart(0, "span");
253
- i0.ɵɵelementStart(1, "span", 28);
254
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r84); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r83 = i0.ɵɵnextContext(6); return ctx_r83.redirect($event, ctx_r83.x1ImageMediaUrl + data_r24); });
253
+ i0.ɵɵelementStart(1, "span", 30);
254
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r84); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r83 = i0.ɵɵnextContext(6); return ctx_r83.redirect($event, ctx_r83.x1ImageMediaUrl + data_r24); });
255
255
  i0.ɵɵtext(2);
256
256
  i0.ɵɵelementEnd();
257
257
  i0.ɵɵelementEnd();
@@ -263,11 +263,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
263
263
  i0.ɵɵadvance(1);
264
264
  i0.ɵɵtextInterpolate(data_r24);
265
265
  } }
266
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_8_Template(rf, ctx) { if (rf & 1) {
266
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_8_Template(rf, ctx) { if (rf & 1) {
267
267
  const _r88 = i0.ɵɵgetCurrentView();
268
268
  i0.ɵɵelementStart(0, "span");
269
- i0.ɵɵelementStart(1, "span", 28);
270
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r88); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r87 = i0.ɵɵnextContext(6); return ctx_r87.redirect($event, ctx_r87.x1ImageMediaUrl + data_r24); });
269
+ i0.ɵɵelementStart(1, "span", 30);
270
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r88); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r87 = i0.ɵɵnextContext(6); return ctx_r87.redirect($event, ctx_r87.x1ImageMediaUrl + data_r24); });
271
271
  i0.ɵɵtext(2);
272
272
  i0.ɵɵelementEnd();
273
273
  i0.ɵɵelementEnd();
@@ -279,11 +279,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
279
279
  i0.ɵɵadvance(1);
280
280
  i0.ɵɵtextInterpolate(data_r24);
281
281
  } }
282
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_9_Template(rf, ctx) { if (rf & 1) {
282
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_9_Template(rf, ctx) { if (rf & 1) {
283
283
  const _r92 = i0.ɵɵgetCurrentView();
284
284
  i0.ɵɵelementStart(0, "span");
285
- i0.ɵɵelementStart(1, "span", 28);
286
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r92); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r91 = i0.ɵɵnextContext(6); return ctx_r91.redirect($event, ctx_r91.x1ImageMediaUrl + data_r24); });
285
+ i0.ɵɵelementStart(1, "span", 30);
286
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r92); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r91 = i0.ɵɵnextContext(6); return ctx_r91.redirect($event, ctx_r91.x1ImageMediaUrl + data_r24); });
287
287
  i0.ɵɵtext(2);
288
288
  i0.ɵɵelementEnd();
289
289
  i0.ɵɵelementEnd();
@@ -295,7 +295,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
295
295
  i0.ɵɵadvance(1);
296
296
  i0.ɵɵtextInterpolate(data_r24);
297
297
  } }
298
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_10_Template(rf, ctx) { if (rf & 1) {
298
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_10_Template(rf, ctx) { if (rf & 1) {
299
299
  i0.ɵɵelementStart(0, "span");
300
300
  i0.ɵɵtext(1);
301
301
  i0.ɵɵelementEnd();
@@ -304,18 +304,18 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
304
304
  i0.ɵɵadvance(1);
305
305
  i0.ɵɵtextInterpolate(data_r24);
306
306
  } }
307
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
307
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
308
308
  i0.ɵɵelementContainerStart(0);
309
- i0.ɵɵelementStart(1, "div", 25);
310
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_2_Template, 6, 5, "span", 26);
311
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_3_Template, 3, 2, "span", 26);
312
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_4_Template, 3, 2, "span", 26);
313
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_5_Template, 3, 2, "span", 26);
314
- i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_6_Template, 3, 2, "span", 26);
315
- i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_7_Template, 3, 2, "span", 26);
316
- i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_8_Template, 3, 2, "span", 26);
317
- i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_9_Template, 3, 2, "span", 26);
318
- i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_span_10_Template, 2, 1, "span", 27);
309
+ i0.ɵɵelementStart(1, "div", 27);
310
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_Template, 6, 5, "span", 28);
311
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_Template, 3, 2, "span", 28);
312
+ i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_4_Template, 3, 2, "span", 28);
313
+ i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_5_Template, 3, 2, "span", 28);
314
+ i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_6_Template, 3, 2, "span", 28);
315
+ i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_7_Template, 3, 2, "span", 28);
316
+ i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_8_Template, 3, 2, "span", 28);
317
+ i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_9_Template, 3, 2, "span", 28);
318
+ i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_10_Template, 2, 1, "span", 29);
319
319
  i0.ɵɵelementEnd();
320
320
  i0.ɵɵelementContainerEnd();
321
321
  } if (rf & 2) {
@@ -340,7 +340,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
340
340
  i0.ɵɵadvance(1);
341
341
  i0.ɵɵproperty("ngSwitchCase", "imagecapture-widget");
342
342
  } }
343
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
343
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
344
344
  i0.ɵɵelementStart(0, "span");
345
345
  i0.ɵɵtext(1);
346
346
  i0.ɵɵpipe(2, "currency");
@@ -351,7 +351,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
351
351
  i0.ɵɵadvance(1);
352
352
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r99.tabularReport.matrix.attributes[ctx_r99.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
353
353
  } }
354
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
354
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
355
355
  i0.ɵɵelementStart(0, "span");
356
356
  i0.ɵɵtext(1);
357
357
  i0.ɵɵpipe(2, "axoPercentage");
@@ -362,7 +362,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
362
362
  i0.ɵɵadvance(1);
363
363
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r100.tabularReport.matrix.attributes[ctx_r100.tabularReport.rowGrouping.length + m_r18].series, "detail"));
364
364
  } }
365
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
365
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
366
366
  i0.ɵɵelementStart(0, "span");
367
367
  i0.ɵɵtext(1);
368
368
  i0.ɵɵelementEnd();
@@ -370,11 +370,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
370
370
  i0.ɵɵadvance(1);
371
371
  i0.ɵɵtextInterpolate(0);
372
372
  } }
373
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
373
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
374
374
  i0.ɵɵelementStart(0, "span");
375
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_span_1_span_1_Template, 3, 5, "span", 6);
376
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_span_1_span_2_Template, 3, 5, "span", 6);
377
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_span_1_span_3_Template, 2, 1, "span", 6);
375
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_1_Template, 3, 5, "span", 6);
376
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_2_Template, 3, 5, "span", 6);
377
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_3_Template, 2, 1, "span", 6);
378
378
  i0.ɵɵelementEnd();
379
379
  } if (rf & 2) {
380
380
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -386,15 +386,15 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
386
386
  i0.ɵɵadvance(1);
387
387
  i0.ɵɵproperty("ngIf", !ctx_r97.tabularReport.matrix.attributes[ctx_r97.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r97.tabularReport.matrix.attributes[ctx_r97.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
388
388
  } }
389
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
389
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
390
390
  i0.ɵɵelementStart(0, "span");
391
391
  i0.ɵɵtext(1, "-");
392
392
  i0.ɵɵelementEnd();
393
393
  } }
394
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_Template(rf, ctx) { if (rf & 1) {
394
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_Template(rf, ctx) { if (rf & 1) {
395
395
  i0.ɵɵelementStart(0, "span");
396
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_span_1_Template, 4, 3, "span", 6);
397
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_span_2_Template, 2, 0, "span", 6);
396
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_Template, 4, 3, "span", 6);
397
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_2_Template, 2, 0, "span", 6);
398
398
  i0.ɵɵelementEnd();
399
399
  } if (rf & 2) {
400
400
  const m_r18 = i0.ɵɵnextContext(4).index;
@@ -404,12 +404,12 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
404
404
  i0.ɵɵadvance(1);
405
405
  i0.ɵɵproperty("ngIf", ctx_r30.tabularReport.matrix.attributes[ctx_r30.tabularReport.rowGrouping.length + m_r18].widgetSubType !== "numeric");
406
406
  } }
407
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_Template(rf, ctx) { if (rf & 1) {
407
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_Template(rf, ctx) { if (rf & 1) {
408
408
  const _r108 = i0.ɵɵgetCurrentView();
409
- i0.ɵɵelementStart(0, "td", 24);
410
- i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_Template_td_contextmenu_0_listener($event) { i0.ɵɵrestoreView(_r108); const data_r24 = i0.ɵɵnextContext().$implicit; const _attr_r16 = i0.ɵɵnextContext(2).$implicit; const ctx_r106 = i0.ɵɵnextContext(4); return ctx_r106.drillThroughContext($event, _attr_r16, _attr_r16.series.indexOf(data_r24)); });
411
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_ng_container_1_Template, 11, 9, "ng-container", 6);
412
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_span_2_Template, 3, 2, "span", 6);
409
+ i0.ɵɵelementStart(0, "td", 26);
410
+ i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_Template_td_contextmenu_0_listener($event) { i0.ɵɵrestoreView(_r108); const data_r24 = i0.ɵɵnextContext().$implicit; const _attr_r16 = i0.ɵɵnextContext(2).$implicit; const ctx_r106 = i0.ɵɵnextContext(4); return ctx_r106.drillThroughContext($event, _attr_r16, _attr_r16.series.indexOf(data_r24)); });
411
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_Template, 11, 9, "ng-container", 6);
412
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_Template, 3, 2, "span", 6);
413
413
  i0.ɵɵelementEnd();
414
414
  } if (rf & 2) {
415
415
  const data_r24 = i0.ɵɵnextContext().$implicit;
@@ -421,7 +421,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
421
421
  i0.ɵɵadvance(1);
422
422
  i0.ɵɵproperty("ngIf", !data_r24);
423
423
  } }
424
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
424
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
425
425
  i0.ɵɵelementContainerStart(0);
426
426
  i0.ɵɵelementStart(1, "span");
427
427
  i0.ɵɵtext(2);
@@ -435,7 +435,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
435
435
  i0.ɵɵadvance(2);
436
436
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 1, ctx_r122.moment(data_r24 + "Z"), ctx_r122.tabularReport.matrix.attributes[ctx_r122.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
437
437
  } }
438
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
438
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
439
439
  i0.ɵɵelementContainerStart(0);
440
440
  i0.ɵɵelementStart(1, "span");
441
441
  i0.ɵɵtext(2);
@@ -446,7 +446,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
446
446
  i0.ɵɵadvance(2);
447
447
  i0.ɵɵtextInterpolate(data_r24);
448
448
  } }
449
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
449
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
450
450
  i0.ɵɵelementStart(0, "span");
451
451
  i0.ɵɵtext(1);
452
452
  i0.ɵɵpipe(2, "date");
@@ -458,16 +458,16 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
458
458
  i0.ɵɵadvance(1);
459
459
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r130.moment(data_r24, "hh:mm:ss"), ctx_r130.tabularReport.matrix.attributes[ctx_r130.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
460
460
  } }
461
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
461
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
462
462
  i0.ɵɵelementContainerStart(0);
463
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
463
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
464
464
  i0.ɵɵelementContainerEnd();
465
465
  } if (rf & 2) {
466
466
  const data_r24 = i0.ɵɵnextContext(4).$implicit;
467
467
  i0.ɵɵadvance(1);
468
468
  i0.ɵɵproperty("ngIf", data_r24);
469
469
  } }
470
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
470
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
471
471
  i0.ɵɵelementStart(0, "span");
472
472
  i0.ɵɵtext(1);
473
473
  i0.ɵɵpipe(2, "date");
@@ -479,9 +479,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
479
479
  i0.ɵɵadvance(1);
480
480
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, data_r24, ctx_r134.tabularReport.matrix.attributes[ctx_r134.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
481
481
  } }
482
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
482
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
483
483
  i0.ɵɵelementContainerStart(0);
484
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
484
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
485
485
  i0.ɵɵelementContainerEnd();
486
486
  } if (rf & 2) {
487
487
  const m_r18 = i0.ɵɵnextContext(6).index;
@@ -489,7 +489,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
489
489
  i0.ɵɵadvance(1);
490
490
  i0.ɵɵproperty("ngIf", ctx_r125.tabularReport.matrix.attributes[ctx_r125.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date");
491
491
  } }
492
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
492
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
493
493
  i0.ɵɵelementContainerStart(0);
494
494
  i0.ɵɵtext(1);
495
495
  i0.ɵɵelementContainerEnd();
@@ -498,13 +498,13 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
498
498
  i0.ɵɵadvance(1);
499
499
  i0.ɵɵtextInterpolate1(" ", data_r24, " ");
500
500
  } }
501
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
501
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
502
502
  i0.ɵɵelementStart(0, "span");
503
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
504
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
505
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
506
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
507
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
503
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
504
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
505
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
506
+ i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
507
+ i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
508
508
  i0.ɵɵelementEnd();
509
509
  } if (rf & 2) {
510
510
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -520,7 +520,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
520
520
  i0.ɵɵadvance(1);
521
521
  i0.ɵɵproperty("ngIf", ctx_r113.tabularReport.matrix.attributes[ctx_r113.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date_range");
522
522
  } }
523
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
523
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
524
524
  i0.ɵɵelementStart(0, "span");
525
525
  i0.ɵɵtext(1);
526
526
  i0.ɵɵelementEnd();
@@ -529,7 +529,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
529
529
  i0.ɵɵadvance(1);
530
530
  i0.ɵɵtextInterpolate1(" ", data_r24, " ");
531
531
  } }
532
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
532
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
533
533
  i0.ɵɵelementStart(0, "span");
534
534
  i0.ɵɵtext(1);
535
535
  i0.ɵɵpipe(2, "currency");
@@ -541,7 +541,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
541
541
  i0.ɵɵadvance(1);
542
542
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r143.tabularReport.matrix.attributes[ctx_r143.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
543
543
  } }
544
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
544
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
545
545
  i0.ɵɵelementStart(0, "span");
546
546
  i0.ɵɵtext(1);
547
547
  i0.ɵɵpipe(2, "axoPercentage");
@@ -553,7 +553,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
553
553
  i0.ɵɵadvance(1);
554
554
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r144.tabularReport.matrix.attributes[ctx_r144.tabularReport.rowGrouping.length + m_r18].series, "column"));
555
555
  } }
556
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
556
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
557
557
  i0.ɵɵelementStart(0, "span");
558
558
  i0.ɵɵtext(1);
559
559
  i0.ɵɵelementEnd();
@@ -562,11 +562,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
562
562
  i0.ɵɵadvance(1);
563
563
  i0.ɵɵtextInterpolate(data_r24);
564
564
  } }
565
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
565
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
566
566
  i0.ɵɵelementStart(0, "span");
567
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_span_2_span_1_Template, 3, 5, "span", 6);
568
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_span_2_span_2_Template, 3, 5, "span", 6);
569
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_span_2_span_3_Template, 2, 1, "span", 6);
567
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_1_Template, 3, 5, "span", 6);
568
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_2_Template, 3, 5, "span", 6);
569
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_3_Template, 2, 1, "span", 6);
570
570
  i0.ɵɵelementEnd();
571
571
  } if (rf & 2) {
572
572
  const m_r18 = i0.ɵɵnextContext(6).index;
@@ -578,10 +578,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
578
578
  i0.ɵɵadvance(1);
579
579
  i0.ɵɵproperty("ngIf", !ctx_r141.tabularReport.matrix.attributes[ctx_r141.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r141.tabularReport.matrix.attributes[ctx_r141.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
580
580
  } }
581
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
581
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
582
582
  i0.ɵɵelementStart(0, "span");
583
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_span_1_Template, 2, 1, "span", 6);
584
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_span_2_Template, 4, 3, "span", 6);
583
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_1_Template, 2, 1, "span", 6);
584
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_Template, 4, 3, "span", 6);
585
585
  i0.ɵɵelementEnd();
586
586
  } if (rf & 2) {
587
587
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -591,11 +591,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
591
591
  i0.ɵɵadvance(1);
592
592
  i0.ɵɵproperty("ngIf", ctx_r114.tabularReport.matrix.attributes[ctx_r114.tabularReport.rowGrouping.length + m_r18].widgetSubType === "numeric");
593
593
  } }
594
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
594
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
595
595
  const _r155 = i0.ɵɵgetCurrentView();
596
596
  i0.ɵɵelementStart(0, "span");
597
- i0.ɵɵelementStart(1, "span", 28);
598
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r155); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r153 = i0.ɵɵnextContext(6); return ctx_r153.redirect($event, data_r24); });
597
+ i0.ɵɵelementStart(1, "span", 30);
598
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r155); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r153 = i0.ɵɵnextContext(6); return ctx_r153.redirect($event, data_r24); });
599
599
  i0.ɵɵtext(2);
600
600
  i0.ɵɵelementEnd();
601
601
  i0.ɵɵelementEnd();
@@ -607,11 +607,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
607
607
  i0.ɵɵadvance(1);
608
608
  i0.ɵɵtextInterpolate(data_r24);
609
609
  } }
610
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_5_Template(rf, ctx) { if (rf & 1) {
610
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_5_Template(rf, ctx) { if (rf & 1) {
611
611
  const _r158 = i0.ɵɵgetCurrentView();
612
612
  i0.ɵɵelementStart(0, "span");
613
- i0.ɵɵelementStart(1, "span", 28);
614
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r158); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r157 = i0.ɵɵnextContext(6); return ctx_r157.redirect($event, ctx_r157.x1ImageMediaUrl + data_r24); });
613
+ i0.ɵɵelementStart(1, "span", 30);
614
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r158); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r157 = i0.ɵɵnextContext(6); return ctx_r157.redirect($event, ctx_r157.x1ImageMediaUrl + data_r24); });
615
615
  i0.ɵɵtext(2);
616
616
  i0.ɵɵelementEnd();
617
617
  i0.ɵɵelementEnd();
@@ -623,11 +623,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
623
623
  i0.ɵɵadvance(1);
624
624
  i0.ɵɵtextInterpolate(data_r24);
625
625
  } }
626
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_6_Template(rf, ctx) { if (rf & 1) {
626
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_6_Template(rf, ctx) { if (rf & 1) {
627
627
  const _r162 = i0.ɵɵgetCurrentView();
628
628
  i0.ɵɵelementStart(0, "span");
629
- i0.ɵɵelementStart(1, "span", 28);
630
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r162); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r161 = i0.ɵɵnextContext(6); return ctx_r161.redirect($event, ctx_r161.x1ImageMediaUrl + data_r24); });
629
+ i0.ɵɵelementStart(1, "span", 30);
630
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r162); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r161 = i0.ɵɵnextContext(6); return ctx_r161.redirect($event, ctx_r161.x1ImageMediaUrl + data_r24); });
631
631
  i0.ɵɵtext(2);
632
632
  i0.ɵɵelementEnd();
633
633
  i0.ɵɵelementEnd();
@@ -639,11 +639,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
639
639
  i0.ɵɵadvance(1);
640
640
  i0.ɵɵtextInterpolate(data_r24);
641
641
  } }
642
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_7_Template(rf, ctx) { if (rf & 1) {
642
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_7_Template(rf, ctx) { if (rf & 1) {
643
643
  const _r166 = i0.ɵɵgetCurrentView();
644
644
  i0.ɵɵelementStart(0, "span");
645
- i0.ɵɵelementStart(1, "span", 28);
646
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r166); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r165 = i0.ɵɵnextContext(6); return ctx_r165.redirect($event, ctx_r165.x1ImageMediaUrl + data_r24); });
645
+ i0.ɵɵelementStart(1, "span", 30);
646
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r166); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r165 = i0.ɵɵnextContext(6); return ctx_r165.redirect($event, ctx_r165.x1ImageMediaUrl + data_r24); });
647
647
  i0.ɵɵtext(2);
648
648
  i0.ɵɵelementEnd();
649
649
  i0.ɵɵelementEnd();
@@ -655,11 +655,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
655
655
  i0.ɵɵadvance(1);
656
656
  i0.ɵɵtextInterpolate(data_r24);
657
657
  } }
658
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_8_Template(rf, ctx) { if (rf & 1) {
658
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_8_Template(rf, ctx) { if (rf & 1) {
659
659
  const _r170 = i0.ɵɵgetCurrentView();
660
660
  i0.ɵɵelementStart(0, "span");
661
- i0.ɵɵelementStart(1, "span", 28);
662
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r170); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r169 = i0.ɵɵnextContext(6); return ctx_r169.redirect($event, ctx_r169.x1ImageMediaUrl + data_r24); });
661
+ i0.ɵɵelementStart(1, "span", 30);
662
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r170); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r169 = i0.ɵɵnextContext(6); return ctx_r169.redirect($event, ctx_r169.x1ImageMediaUrl + data_r24); });
663
663
  i0.ɵɵtext(2);
664
664
  i0.ɵɵelementEnd();
665
665
  i0.ɵɵelementEnd();
@@ -671,11 +671,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
671
671
  i0.ɵɵadvance(1);
672
672
  i0.ɵɵtextInterpolate(data_r24);
673
673
  } }
674
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_9_Template(rf, ctx) { if (rf & 1) {
674
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_9_Template(rf, ctx) { if (rf & 1) {
675
675
  const _r174 = i0.ɵɵgetCurrentView();
676
676
  i0.ɵɵelementStart(0, "span");
677
- i0.ɵɵelementStart(1, "span", 28);
678
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r174); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r173 = i0.ɵɵnextContext(6); return ctx_r173.redirect($event, ctx_r173.x1ImageMediaUrl + data_r24); });
677
+ i0.ɵɵelementStart(1, "span", 30);
678
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r174); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r173 = i0.ɵɵnextContext(6); return ctx_r173.redirect($event, ctx_r173.x1ImageMediaUrl + data_r24); });
679
679
  i0.ɵɵtext(2);
680
680
  i0.ɵɵelementEnd();
681
681
  i0.ɵɵelementEnd();
@@ -687,7 +687,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
687
687
  i0.ɵɵadvance(1);
688
688
  i0.ɵɵtextInterpolate(data_r24);
689
689
  } }
690
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_10_Template(rf, ctx) { if (rf & 1) {
690
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_10_Template(rf, ctx) { if (rf & 1) {
691
691
  i0.ɵɵelementStart(0, "span");
692
692
  i0.ɵɵtext(1);
693
693
  i0.ɵɵelementEnd();
@@ -696,18 +696,18 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
696
696
  i0.ɵɵadvance(1);
697
697
  i0.ɵɵtextInterpolate(data_r24);
698
698
  } }
699
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
699
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
700
700
  i0.ɵɵelementContainerStart(0);
701
- i0.ɵɵelementStart(1, "div", 25);
702
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_2_Template, 6, 5, "span", 26);
703
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_3_Template, 3, 2, "span", 26);
704
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_4_Template, 3, 2, "span", 26);
705
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_5_Template, 3, 2, "span", 26);
706
- i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_6_Template, 3, 2, "span", 26);
707
- i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_7_Template, 3, 2, "span", 26);
708
- i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_8_Template, 3, 2, "span", 26);
709
- i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_9_Template, 3, 2, "span", 26);
710
- i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_span_10_Template, 2, 1, "span", 27);
701
+ i0.ɵɵelementStart(1, "div", 27);
702
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_Template, 6, 5, "span", 28);
703
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_Template, 3, 2, "span", 28);
704
+ i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_4_Template, 3, 2, "span", 28);
705
+ i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_5_Template, 3, 2, "span", 28);
706
+ i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_6_Template, 3, 2, "span", 28);
707
+ i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_7_Template, 3, 2, "span", 28);
708
+ i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_8_Template, 3, 2, "span", 28);
709
+ i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_9_Template, 3, 2, "span", 28);
710
+ i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_10_Template, 2, 1, "span", 29);
711
711
  i0.ɵɵelementEnd();
712
712
  i0.ɵɵelementContainerEnd();
713
713
  } if (rf & 2) {
@@ -732,7 +732,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
732
732
  i0.ɵɵadvance(1);
733
733
  i0.ɵɵproperty("ngSwitchCase", "imagecapture-widget");
734
734
  } }
735
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
735
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
736
736
  i0.ɵɵelementStart(0, "span");
737
737
  i0.ɵɵtext(1);
738
738
  i0.ɵɵpipe(2, "currency");
@@ -743,7 +743,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
743
743
  i0.ɵɵadvance(1);
744
744
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r181.tabularReport.matrix.attributes[ctx_r181.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
745
745
  } }
746
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
746
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
747
747
  i0.ɵɵelementStart(0, "span");
748
748
  i0.ɵɵtext(1);
749
749
  i0.ɵɵpipe(2, "axoPercentage");
@@ -754,7 +754,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
754
754
  i0.ɵɵadvance(1);
755
755
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r182.tabularReport.matrix.attributes[ctx_r182.tabularReport.rowGrouping.length + m_r18].series, "detail"));
756
756
  } }
757
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
757
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
758
758
  i0.ɵɵelementStart(0, "span");
759
759
  i0.ɵɵtext(1);
760
760
  i0.ɵɵelementEnd();
@@ -762,11 +762,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
762
762
  i0.ɵɵadvance(1);
763
763
  i0.ɵɵtextInterpolate(0);
764
764
  } }
765
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
765
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
766
766
  i0.ɵɵelementStart(0, "span");
767
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_span_1_span_1_Template, 3, 5, "span", 6);
768
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_span_1_span_2_Template, 3, 5, "span", 6);
769
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_span_1_span_3_Template, 2, 1, "span", 6);
767
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_1_Template, 3, 5, "span", 6);
768
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_2_Template, 3, 5, "span", 6);
769
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_3_Template, 2, 1, "span", 6);
770
770
  i0.ɵɵelementEnd();
771
771
  } if (rf & 2) {
772
772
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -778,15 +778,15 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
778
778
  i0.ɵɵadvance(1);
779
779
  i0.ɵɵproperty("ngIf", !ctx_r179.tabularReport.matrix.attributes[ctx_r179.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r179.tabularReport.matrix.attributes[ctx_r179.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
780
780
  } }
781
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
781
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
782
782
  i0.ɵɵelementStart(0, "span");
783
783
  i0.ɵɵtext(1, "-");
784
784
  i0.ɵɵelementEnd();
785
785
  } }
786
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_Template(rf, ctx) { if (rf & 1) {
786
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_Template(rf, ctx) { if (rf & 1) {
787
787
  i0.ɵɵelementStart(0, "span");
788
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_span_1_Template, 4, 3, "span", 6);
789
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_span_2_Template, 2, 0, "span", 6);
788
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_Template, 4, 3, "span", 6);
789
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_2_Template, 2, 0, "span", 6);
790
790
  i0.ɵɵelementEnd();
791
791
  } if (rf & 2) {
792
792
  const m_r18 = i0.ɵɵnextContext(4).index;
@@ -796,10 +796,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
796
796
  i0.ɵɵadvance(1);
797
797
  i0.ɵɵproperty("ngIf", ctx_r112.tabularReport.matrix.attributes[ctx_r112.tabularReport.rowGrouping.length + m_r18].widgetSubType !== "numeric");
798
798
  } }
799
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_Template(rf, ctx) { if (rf & 1) {
800
- i0.ɵɵelementStart(0, "td", 29);
801
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_ng_container_1_Template, 11, 9, "ng-container", 6);
802
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_span_2_Template, 3, 2, "span", 6);
799
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_Template(rf, ctx) { if (rf & 1) {
800
+ i0.ɵɵelementStart(0, "td", 31);
801
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_Template, 11, 9, "ng-container", 6);
802
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_Template, 3, 2, "span", 6);
803
803
  i0.ɵɵelementEnd();
804
804
  } if (rf & 2) {
805
805
  const data_r24 = i0.ɵɵnextContext().$implicit;
@@ -811,7 +811,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
811
811
  i0.ɵɵadvance(1);
812
812
  i0.ɵɵproperty("ngIf", !data_r24);
813
813
  } }
814
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
814
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
815
815
  i0.ɵɵelementContainerStart(0);
816
816
  i0.ɵɵelementStart(1, "span");
817
817
  i0.ɵɵtext(2);
@@ -825,7 +825,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
825
825
  i0.ɵɵadvance(2);
826
826
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 1, ctx_r200.moment(data_r24 + "Z"), ctx_r200.tabularReport.matrix.attributes[ctx_r200.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
827
827
  } }
828
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
828
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
829
829
  i0.ɵɵelementContainerStart(0);
830
830
  i0.ɵɵelementStart(1, "span");
831
831
  i0.ɵɵtext(2);
@@ -836,7 +836,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
836
836
  i0.ɵɵadvance(2);
837
837
  i0.ɵɵtextInterpolate(data_r24);
838
838
  } }
839
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
839
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
840
840
  i0.ɵɵelementStart(0, "span");
841
841
  i0.ɵɵtext(1);
842
842
  i0.ɵɵpipe(2, "date");
@@ -848,16 +848,16 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
848
848
  i0.ɵɵadvance(1);
849
849
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r208.moment(data_r24, "hh:mm:ss"), ctx_r208.tabularReport.matrix.attributes[ctx_r208.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
850
850
  } }
851
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
851
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
852
852
  i0.ɵɵelementContainerStart(0);
853
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
853
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
854
854
  i0.ɵɵelementContainerEnd();
855
855
  } if (rf & 2) {
856
856
  const data_r24 = i0.ɵɵnextContext(4).$implicit;
857
857
  i0.ɵɵadvance(1);
858
858
  i0.ɵɵproperty("ngIf", data_r24);
859
859
  } }
860
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
860
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
861
861
  i0.ɵɵelementStart(0, "span");
862
862
  i0.ɵɵtext(1);
863
863
  i0.ɵɵpipe(2, "date");
@@ -869,9 +869,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
869
869
  i0.ɵɵadvance(1);
870
870
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, data_r24, ctx_r212.tabularReport.matrix.attributes[ctx_r212.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
871
871
  } }
872
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
872
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
873
873
  i0.ɵɵelementContainerStart(0);
874
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
874
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
875
875
  i0.ɵɵelementContainerEnd();
876
876
  } if (rf & 2) {
877
877
  const m_r18 = i0.ɵɵnextContext(6).index;
@@ -879,7 +879,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
879
879
  i0.ɵɵadvance(1);
880
880
  i0.ɵɵproperty("ngIf", ctx_r203.tabularReport.matrix.attributes[ctx_r203.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date");
881
881
  } }
882
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
882
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
883
883
  i0.ɵɵelementContainerStart(0);
884
884
  i0.ɵɵtext(1);
885
885
  i0.ɵɵelementContainerEnd();
@@ -888,13 +888,13 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
888
888
  i0.ɵɵadvance(1);
889
889
  i0.ɵɵtextInterpolate1(" ", data_r24, " ");
890
890
  } }
891
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
891
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
892
892
  i0.ɵɵelementStart(0, "span");
893
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
894
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
895
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
896
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
897
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
893
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
894
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
895
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
896
+ i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
897
+ i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
898
898
  i0.ɵɵelementEnd();
899
899
  } if (rf & 2) {
900
900
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -910,7 +910,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
910
910
  i0.ɵɵadvance(1);
911
911
  i0.ɵɵproperty("ngIf", ctx_r191.tabularReport.matrix.attributes[ctx_r191.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date_range");
912
912
  } }
913
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
913
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
914
914
  i0.ɵɵelementStart(0, "span");
915
915
  i0.ɵɵtext(1);
916
916
  i0.ɵɵelementEnd();
@@ -919,7 +919,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
919
919
  i0.ɵɵadvance(1);
920
920
  i0.ɵɵtextInterpolate1(" ", data_r24, " ");
921
921
  } }
922
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
922
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
923
923
  i0.ɵɵelementStart(0, "span");
924
924
  i0.ɵɵtext(1);
925
925
  i0.ɵɵpipe(2, "currency");
@@ -931,7 +931,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
931
931
  i0.ɵɵadvance(1);
932
932
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r221.tabularReport.matrix.attributes[ctx_r221.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
933
933
  } }
934
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
934
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
935
935
  i0.ɵɵelementStart(0, "span");
936
936
  i0.ɵɵtext(1);
937
937
  i0.ɵɵpipe(2, "axoPercentage");
@@ -943,7 +943,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
943
943
  i0.ɵɵadvance(1);
944
944
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r222.tabularReport.matrix.attributes[ctx_r222.tabularReport.rowGrouping.length + m_r18].series, "column"));
945
945
  } }
946
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
946
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
947
947
  i0.ɵɵelementStart(0, "span");
948
948
  i0.ɵɵtext(1);
949
949
  i0.ɵɵelementEnd();
@@ -952,11 +952,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
952
952
  i0.ɵɵadvance(1);
953
953
  i0.ɵɵtextInterpolate(data_r24);
954
954
  } }
955
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
955
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
956
956
  i0.ɵɵelementStart(0, "span");
957
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_span_2_span_1_Template, 3, 5, "span", 6);
958
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_span_2_span_2_Template, 3, 5, "span", 6);
959
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_span_2_span_3_Template, 2, 1, "span", 6);
957
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_1_Template, 3, 5, "span", 6);
958
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_2_Template, 3, 5, "span", 6);
959
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_3_Template, 2, 1, "span", 6);
960
960
  i0.ɵɵelementEnd();
961
961
  } if (rf & 2) {
962
962
  const m_r18 = i0.ɵɵnextContext(6).index;
@@ -968,10 +968,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
968
968
  i0.ɵɵadvance(1);
969
969
  i0.ɵɵproperty("ngIf", !ctx_r219.tabularReport.matrix.attributes[ctx_r219.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r219.tabularReport.matrix.attributes[ctx_r219.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
970
970
  } }
971
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
971
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
972
972
  i0.ɵɵelementStart(0, "span");
973
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_span_1_Template, 2, 1, "span", 6);
974
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_span_2_Template, 4, 3, "span", 6);
973
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_1_Template, 2, 1, "span", 6);
974
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_Template, 4, 3, "span", 6);
975
975
  i0.ɵɵelementEnd();
976
976
  } if (rf & 2) {
977
977
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -981,11 +981,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
981
981
  i0.ɵɵadvance(1);
982
982
  i0.ɵɵproperty("ngIf", ctx_r192.tabularReport.matrix.attributes[ctx_r192.tabularReport.rowGrouping.length + m_r18].widgetSubType === "numeric");
983
983
  } }
984
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
984
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
985
985
  const _r233 = i0.ɵɵgetCurrentView();
986
986
  i0.ɵɵelementStart(0, "span");
987
- i0.ɵɵelementStart(1, "span", 28);
988
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r233); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r231 = i0.ɵɵnextContext(6); return ctx_r231.redirect($event, data_r24); });
987
+ i0.ɵɵelementStart(1, "span", 30);
988
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r233); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r231 = i0.ɵɵnextContext(6); return ctx_r231.redirect($event, data_r24); });
989
989
  i0.ɵɵtext(2);
990
990
  i0.ɵɵelementEnd();
991
991
  i0.ɵɵelementEnd();
@@ -997,11 +997,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
997
997
  i0.ɵɵadvance(1);
998
998
  i0.ɵɵtextInterpolate(data_r24);
999
999
  } }
1000
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_5_Template(rf, ctx) { if (rf & 1) {
1000
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_5_Template(rf, ctx) { if (rf & 1) {
1001
1001
  const _r236 = i0.ɵɵgetCurrentView();
1002
1002
  i0.ɵɵelementStart(0, "span");
1003
- i0.ɵɵelementStart(1, "span", 28);
1004
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r236); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r235 = i0.ɵɵnextContext(6); return ctx_r235.redirect($event, ctx_r235.x1ImageMediaUrl + data_r24); });
1003
+ i0.ɵɵelementStart(1, "span", 30);
1004
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r236); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r235 = i0.ɵɵnextContext(6); return ctx_r235.redirect($event, ctx_r235.x1ImageMediaUrl + data_r24); });
1005
1005
  i0.ɵɵtext(2);
1006
1006
  i0.ɵɵelementEnd();
1007
1007
  i0.ɵɵelementEnd();
@@ -1013,11 +1013,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1013
1013
  i0.ɵɵadvance(1);
1014
1014
  i0.ɵɵtextInterpolate(data_r24);
1015
1015
  } }
1016
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_6_Template(rf, ctx) { if (rf & 1) {
1016
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_6_Template(rf, ctx) { if (rf & 1) {
1017
1017
  const _r240 = i0.ɵɵgetCurrentView();
1018
1018
  i0.ɵɵelementStart(0, "span");
1019
- i0.ɵɵelementStart(1, "span", 28);
1020
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r240); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r239 = i0.ɵɵnextContext(6); return ctx_r239.redirect($event, ctx_r239.x1ImageMediaUrl + data_r24); });
1019
+ i0.ɵɵelementStart(1, "span", 30);
1020
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r240); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r239 = i0.ɵɵnextContext(6); return ctx_r239.redirect($event, ctx_r239.x1ImageMediaUrl + data_r24); });
1021
1021
  i0.ɵɵtext(2);
1022
1022
  i0.ɵɵelementEnd();
1023
1023
  i0.ɵɵelementEnd();
@@ -1029,11 +1029,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1029
1029
  i0.ɵɵadvance(1);
1030
1030
  i0.ɵɵtextInterpolate(data_r24);
1031
1031
  } }
1032
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_7_Template(rf, ctx) { if (rf & 1) {
1032
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_7_Template(rf, ctx) { if (rf & 1) {
1033
1033
  const _r244 = i0.ɵɵgetCurrentView();
1034
1034
  i0.ɵɵelementStart(0, "span");
1035
- i0.ɵɵelementStart(1, "span", 28);
1036
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r244); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r243 = i0.ɵɵnextContext(6); return ctx_r243.redirect($event, ctx_r243.x1ImageMediaUrl + data_r24); });
1035
+ i0.ɵɵelementStart(1, "span", 30);
1036
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r244); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r243 = i0.ɵɵnextContext(6); return ctx_r243.redirect($event, ctx_r243.x1ImageMediaUrl + data_r24); });
1037
1037
  i0.ɵɵtext(2);
1038
1038
  i0.ɵɵelementEnd();
1039
1039
  i0.ɵɵelementEnd();
@@ -1045,11 +1045,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1045
1045
  i0.ɵɵadvance(1);
1046
1046
  i0.ɵɵtextInterpolate(data_r24);
1047
1047
  } }
1048
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_8_Template(rf, ctx) { if (rf & 1) {
1048
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_8_Template(rf, ctx) { if (rf & 1) {
1049
1049
  const _r248 = i0.ɵɵgetCurrentView();
1050
1050
  i0.ɵɵelementStart(0, "span");
1051
- i0.ɵɵelementStart(1, "span", 28);
1052
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r248); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r247 = i0.ɵɵnextContext(6); return ctx_r247.redirect($event, ctx_r247.x1ImageMediaUrl + data_r24); });
1051
+ i0.ɵɵelementStart(1, "span", 30);
1052
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r248); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r247 = i0.ɵɵnextContext(6); return ctx_r247.redirect($event, ctx_r247.x1ImageMediaUrl + data_r24); });
1053
1053
  i0.ɵɵtext(2);
1054
1054
  i0.ɵɵelementEnd();
1055
1055
  i0.ɵɵelementEnd();
@@ -1061,11 +1061,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1061
1061
  i0.ɵɵadvance(1);
1062
1062
  i0.ɵɵtextInterpolate(data_r24);
1063
1063
  } }
1064
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_9_Template(rf, ctx) { if (rf & 1) {
1064
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_9_Template(rf, ctx) { if (rf & 1) {
1065
1065
  const _r252 = i0.ɵɵgetCurrentView();
1066
1066
  i0.ɵɵelementStart(0, "span");
1067
- i0.ɵɵelementStart(1, "span", 28);
1068
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r252); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r251 = i0.ɵɵnextContext(6); return ctx_r251.redirect($event, ctx_r251.x1ImageMediaUrl + data_r24); });
1067
+ i0.ɵɵelementStart(1, "span", 30);
1068
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r252); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r251 = i0.ɵɵnextContext(6); return ctx_r251.redirect($event, ctx_r251.x1ImageMediaUrl + data_r24); });
1069
1069
  i0.ɵɵtext(2);
1070
1070
  i0.ɵɵelementEnd();
1071
1071
  i0.ɵɵelementEnd();
@@ -1077,7 +1077,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1077
1077
  i0.ɵɵadvance(1);
1078
1078
  i0.ɵɵtextInterpolate(data_r24);
1079
1079
  } }
1080
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_10_Template(rf, ctx) { if (rf & 1) {
1080
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_10_Template(rf, ctx) { if (rf & 1) {
1081
1081
  i0.ɵɵelementStart(0, "span");
1082
1082
  i0.ɵɵtext(1);
1083
1083
  i0.ɵɵelementEnd();
@@ -1086,18 +1086,18 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1086
1086
  i0.ɵɵadvance(1);
1087
1087
  i0.ɵɵtextInterpolate(data_r24);
1088
1088
  } }
1089
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
1089
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
1090
1090
  i0.ɵɵelementContainerStart(0);
1091
- i0.ɵɵelementStart(1, "div", 25);
1092
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_2_Template, 6, 5, "span", 26);
1093
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_3_Template, 3, 2, "span", 26);
1094
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_4_Template, 3, 2, "span", 26);
1095
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_5_Template, 3, 2, "span", 26);
1096
- i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_6_Template, 3, 2, "span", 26);
1097
- i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_7_Template, 3, 2, "span", 26);
1098
- i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_8_Template, 3, 2, "span", 26);
1099
- i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_9_Template, 3, 2, "span", 26);
1100
- i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_span_10_Template, 2, 1, "span", 27);
1091
+ i0.ɵɵelementStart(1, "div", 27);
1092
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_Template, 6, 5, "span", 28);
1093
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_Template, 3, 2, "span", 28);
1094
+ i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_4_Template, 3, 2, "span", 28);
1095
+ i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_5_Template, 3, 2, "span", 28);
1096
+ i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_6_Template, 3, 2, "span", 28);
1097
+ i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_7_Template, 3, 2, "span", 28);
1098
+ i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_8_Template, 3, 2, "span", 28);
1099
+ i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_9_Template, 3, 2, "span", 28);
1100
+ i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_10_Template, 2, 1, "span", 29);
1101
1101
  i0.ɵɵelementEnd();
1102
1102
  i0.ɵɵelementContainerEnd();
1103
1103
  } if (rf & 2) {
@@ -1122,7 +1122,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1122
1122
  i0.ɵɵadvance(1);
1123
1123
  i0.ɵɵproperty("ngSwitchCase", "imagecapture-widget");
1124
1124
  } }
1125
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
1125
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
1126
1126
  i0.ɵɵelementStart(0, "span");
1127
1127
  i0.ɵɵtext(1);
1128
1128
  i0.ɵɵpipe(2, "currency");
@@ -1133,7 +1133,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1133
1133
  i0.ɵɵadvance(1);
1134
1134
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r259.tabularReport.matrix.attributes[ctx_r259.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
1135
1135
  } }
1136
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
1136
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
1137
1137
  i0.ɵɵelementStart(0, "span");
1138
1138
  i0.ɵɵtext(1);
1139
1139
  i0.ɵɵpipe(2, "axoPercentage");
@@ -1144,7 +1144,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1144
1144
  i0.ɵɵadvance(1);
1145
1145
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r260.tabularReport.matrix.attributes[ctx_r260.tabularReport.rowGrouping.length + m_r18].series, "detail"));
1146
1146
  } }
1147
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
1147
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
1148
1148
  i0.ɵɵelementStart(0, "span");
1149
1149
  i0.ɵɵtext(1);
1150
1150
  i0.ɵɵelementEnd();
@@ -1152,11 +1152,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1152
1152
  i0.ɵɵadvance(1);
1153
1153
  i0.ɵɵtextInterpolate(0);
1154
1154
  } }
1155
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
1155
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
1156
1156
  i0.ɵɵelementStart(0, "span");
1157
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_span_1_span_1_Template, 3, 5, "span", 6);
1158
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_span_1_span_2_Template, 3, 5, "span", 6);
1159
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_span_1_span_3_Template, 2, 1, "span", 6);
1157
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_1_Template, 3, 5, "span", 6);
1158
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_2_Template, 3, 5, "span", 6);
1159
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_3_Template, 2, 1, "span", 6);
1160
1160
  i0.ɵɵelementEnd();
1161
1161
  } if (rf & 2) {
1162
1162
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -1168,15 +1168,15 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1168
1168
  i0.ɵɵadvance(1);
1169
1169
  i0.ɵɵproperty("ngIf", !ctx_r257.tabularReport.matrix.attributes[ctx_r257.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r257.tabularReport.matrix.attributes[ctx_r257.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
1170
1170
  } }
1171
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
1171
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
1172
1172
  i0.ɵɵelementStart(0, "span");
1173
1173
  i0.ɵɵtext(1, "-");
1174
1174
  i0.ɵɵelementEnd();
1175
1175
  } }
1176
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_Template(rf, ctx) { if (rf & 1) {
1176
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_Template(rf, ctx) { if (rf & 1) {
1177
1177
  i0.ɵɵelementStart(0, "span");
1178
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_span_1_Template, 4, 3, "span", 6);
1179
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_span_2_Template, 2, 0, "span", 6);
1178
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_Template, 4, 3, "span", 6);
1179
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_2_Template, 2, 0, "span", 6);
1180
1180
  i0.ɵɵelementEnd();
1181
1181
  } if (rf & 2) {
1182
1182
  const m_r18 = i0.ɵɵnextContext(4).index;
@@ -1186,10 +1186,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1186
1186
  i0.ɵɵadvance(1);
1187
1187
  i0.ɵɵproperty("ngIf", ctx_r190.tabularReport.matrix.attributes[ctx_r190.tabularReport.rowGrouping.length + m_r18].widgetSubType !== "numeric");
1188
1188
  } }
1189
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_Template(rf, ctx) { if (rf & 1) {
1190
- i0.ɵɵelementStart(0, "td", 29);
1191
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_ng_container_1_Template, 11, 9, "ng-container", 6);
1192
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_span_2_Template, 3, 2, "span", 6);
1189
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_Template(rf, ctx) { if (rf & 1) {
1190
+ i0.ɵɵelementStart(0, "td", 31);
1191
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_Template, 11, 9, "ng-container", 6);
1192
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_Template, 3, 2, "span", 6);
1193
1193
  i0.ɵɵelementEnd();
1194
1194
  } if (rf & 2) {
1195
1195
  const data_r24 = i0.ɵɵnextContext().$implicit;
@@ -1201,11 +1201,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1201
1201
  i0.ɵɵadvance(1);
1202
1202
  i0.ɵɵproperty("ngIf", !data_r24);
1203
1203
  } }
1204
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
1204
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
1205
1205
  i0.ɵɵelementContainerStart(0);
1206
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_1_Template, 3, 13, "td", 21);
1207
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_2_Template, 3, 13, "td", 22);
1208
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_td_3_Template, 3, 13, "td", 23);
1206
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_Template, 3, 13, "td", 23);
1207
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_Template, 3, 13, "td", 24);
1208
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_Template, 3, 13, "td", 25);
1209
1209
  i0.ɵɵelementContainerEnd();
1210
1210
  } if (rf & 2) {
1211
1211
  const ctx_r22 = i0.ɵɵnextContext(6);
@@ -1216,8 +1216,8 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
1216
1216
  i0.ɵɵadvance(1);
1217
1217
  i0.ɵɵproperty("ngIf", ctx_r22.tabularReport.colGrouping.length > 1 && ctx_r22.tabularReport.integerArray.length === 0);
1218
1218
  } }
1219
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_td_5_Template(rf, ctx) { if (rf & 1) {
1220
- i0.ɵɵelementStart(0, "td", 29);
1219
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_td_7_Template(rf, ctx) { if (rf & 1) {
1220
+ i0.ɵɵelementStart(0, "td", 31);
1221
1221
  i0.ɵɵtext(1, " Total ");
1222
1222
  i0.ɵɵelementEnd();
1223
1223
  } if (rf & 2) {
@@ -1231,10 +1231,14 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Temp
1231
1231
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_td_1_Template, 1, 2, "td", 17);
1232
1232
  i0.ɵɵelementStart(2, "th", 18);
1233
1233
  i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Template_th_contextmenu_2_listener($event) { i0.ɵɵrestoreView(_r268); const ctx_r267 = i0.ɵɵnextContext(5); return ctx_r267.onContextMenu($event, ctx_r267.i); });
1234
- i0.ɵɵtext(3);
1234
+ i0.ɵɵelementStart(3, "div", 19);
1235
+ i0.ɵɵelementStart(4, "span", 20);
1236
+ i0.ɵɵtext(5);
1237
+ i0.ɵɵelementEnd();
1238
+ i0.ɵɵelementEnd();
1235
1239
  i0.ɵɵelementEnd();
1236
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_4_Template, 4, 3, "ng-container", 15);
1237
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_td_5_Template, 2, 9, "td", 19);
1240
+ i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_Template, 4, 3, "ng-container", 15);
1241
+ i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_td_7_Template, 2, 9, "td", 21);
1238
1242
  i0.ɵɵelementEnd();
1239
1243
  } if (rf & 2) {
1240
1244
  const _attr_r16 = i0.ɵɵnextContext().$implicit;
@@ -1242,9 +1246,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Temp
1242
1246
  i0.ɵɵadvance(1);
1243
1247
  i0.ɵɵproperty("ngIf", ctx_r19.tabularReport.rowGrouping.length === 2);
1244
1248
  i0.ɵɵadvance(1);
1245
- i0.ɵɵstyleProp("color", ctx_r19.tabularReport.tableStyle.header.font.color)("font-family", ctx_r19.tabularReport.tableStyle.header.font.family)("color", ctx_r19.tabularReport.tableStyle.header.font.color)("background", ctx_r19.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r19.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r19.tabularReport.tableStyle.border.width + "px" + " " + ctx_r19.tabularReport.tableStyle.border.borderStyle + " " + ctx_r19.tabularReport.tableStyle.border.color)("text-align", ctx_r19.attr.alignment);
1249
+ i0.ɵɵstyleProp("color", ctx_r19.tabularReport.tableStyle.header.font.color)("font-family", ctx_r19.tabularReport.tableStyle.header.font.family)("color", ctx_r19.tabularReport.tableStyle.header.font.color)("background", ctx_r19.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r19.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r19.tabularReport.tableStyle.border.width + "px" + " " + ctx_r19.tabularReport.tableStyle.border.borderStyle + " " + ctx_r19.tabularReport.tableStyle.border.color)("text-align", _attr_r16.alignment);
1246
1250
  i0.ɵɵproperty("id", ctx_r19.th);
1247
- i0.ɵɵadvance(1);
1251
+ i0.ɵɵadvance(3);
1248
1252
  i0.ɵɵtextInterpolate(_attr_r16.label);
1249
1253
  i0.ɵɵadvance(1);
1250
1254
  i0.ɵɵproperty("ngForOf", _attr_r16.uniqueSeries);
@@ -1252,12 +1256,12 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Temp
1252
1256
  i0.ɵɵproperty("ngIf", ctx_r19.tabularReport.showGrandTotal);
1253
1257
  } }
1254
1258
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_1_Template(rf, ctx) { if (rf & 1) {
1255
- i0.ɵɵelement(0, "td", 20);
1259
+ i0.ɵɵelement(0, "td", 22);
1256
1260
  } if (rf & 2) {
1257
1261
  const ctx_r270 = i0.ɵɵnextContext(6);
1258
1262
  i0.ɵɵstyleProp("border", ctx_r270.tabularReport.tableStyle.border.width + "px" + " " + ctx_r270.tabularReport.tableStyle.border.borderStyle + " " + ctx_r270.tabularReport.tableStyle.border.color);
1259
1263
  } }
1260
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
1264
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
1261
1265
  i0.ɵɵelementContainerStart(0);
1262
1266
  i0.ɵɵelementStart(1, "span");
1263
1267
  i0.ɵɵtext(2);
@@ -1271,7 +1275,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1271
1275
  i0.ɵɵadvance(2);
1272
1276
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 1, ctx_r288.moment(data_r275 + "Z"), ctx_r288.tabularReport.matrix.attributes[ctx_r288.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
1273
1277
  } }
1274
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
1278
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
1275
1279
  i0.ɵɵelementContainerStart(0);
1276
1280
  i0.ɵɵelementStart(1, "span");
1277
1281
  i0.ɵɵtext(2);
@@ -1282,7 +1286,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1282
1286
  i0.ɵɵadvance(2);
1283
1287
  i0.ɵɵtextInterpolate(data_r275);
1284
1288
  } }
1285
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
1289
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
1286
1290
  i0.ɵɵelementStart(0, "span");
1287
1291
  i0.ɵɵtext(1);
1288
1292
  i0.ɵɵpipe(2, "date");
@@ -1294,16 +1298,16 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1294
1298
  i0.ɵɵadvance(1);
1295
1299
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r296.moment(data_r275, "hh:mm:ss"), ctx_r296.tabularReport.matrix.attributes[ctx_r296.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
1296
1300
  } }
1297
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
1301
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
1298
1302
  i0.ɵɵelementContainerStart(0);
1299
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
1303
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
1300
1304
  i0.ɵɵelementContainerEnd();
1301
1305
  } if (rf & 2) {
1302
1306
  const data_r275 = i0.ɵɵnextContext(3).$implicit;
1303
1307
  i0.ɵɵadvance(1);
1304
1308
  i0.ɵɵproperty("ngIf", data_r275);
1305
1309
  } }
1306
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
1310
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
1307
1311
  i0.ɵɵelementStart(0, "span");
1308
1312
  i0.ɵɵtext(1);
1309
1313
  i0.ɵɵpipe(2, "date");
@@ -1315,9 +1319,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1315
1319
  i0.ɵɵadvance(1);
1316
1320
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, data_r275, ctx_r300.tabularReport.matrix.attributes[ctx_r300.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
1317
1321
  } }
1318
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
1322
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
1319
1323
  i0.ɵɵelementContainerStart(0);
1320
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
1324
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
1321
1325
  i0.ɵɵelementContainerEnd();
1322
1326
  } if (rf & 2) {
1323
1327
  const m_r18 = i0.ɵɵnextContext(6).index;
@@ -1325,7 +1329,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1325
1329
  i0.ɵɵadvance(1);
1326
1330
  i0.ɵɵproperty("ngIf", ctx_r291.tabularReport.matrix.attributes[ctx_r291.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date");
1327
1331
  } }
1328
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
1332
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
1329
1333
  i0.ɵɵelementContainerStart(0);
1330
1334
  i0.ɵɵtext(1);
1331
1335
  i0.ɵɵelementContainerEnd();
@@ -1334,13 +1338,13 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1334
1338
  i0.ɵɵadvance(1);
1335
1339
  i0.ɵɵtextInterpolate1(" ", data_r275, " ");
1336
1340
  } }
1337
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_Template(rf, ctx) { if (rf & 1) {
1341
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_Template(rf, ctx) { if (rf & 1) {
1338
1342
  i0.ɵɵelementStart(0, "span");
1339
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
1340
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
1341
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
1342
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
1343
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
1343
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
1344
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
1345
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
1346
+ i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
1347
+ i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
1344
1348
  i0.ɵɵelementEnd();
1345
1349
  } if (rf & 2) {
1346
1350
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -1356,7 +1360,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1356
1360
  i0.ɵɵadvance(1);
1357
1361
  i0.ɵɵproperty("ngIf", ctx_r279.tabularReport.matrix.attributes[ctx_r279.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date_range");
1358
1362
  } }
1359
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
1363
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
1360
1364
  i0.ɵɵelementStart(0, "span");
1361
1365
  i0.ɵɵtext(1);
1362
1366
  i0.ɵɵelementEnd();
@@ -1365,7 +1369,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1365
1369
  i0.ɵɵadvance(1);
1366
1370
  i0.ɵɵtextInterpolate1(" ", data_r275, " ");
1367
1371
  } }
1368
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
1372
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
1369
1373
  i0.ɵɵelementStart(0, "span");
1370
1374
  i0.ɵɵtext(1);
1371
1375
  i0.ɵɵpipe(2, "currency");
@@ -1377,7 +1381,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1377
1381
  i0.ɵɵadvance(1);
1378
1382
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r275, ctx_r309.tabularReport.matrix.attributes[ctx_r309.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
1379
1383
  } }
1380
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
1384
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
1381
1385
  i0.ɵɵelementStart(0, "span");
1382
1386
  i0.ɵɵtext(1);
1383
1387
  i0.ɵɵpipe(2, "axoPercentage");
@@ -1389,7 +1393,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1389
1393
  i0.ɵɵadvance(1);
1390
1394
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r275, ctx_r310.tabularReport.matrix.attributes[ctx_r310.tabularReport.rowGrouping.length + m_r18].series, "column"));
1391
1395
  } }
1392
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
1396
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
1393
1397
  i0.ɵɵelementStart(0, "span");
1394
1398
  i0.ɵɵtext(1);
1395
1399
  i0.ɵɵelementEnd();
@@ -1398,11 +1402,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1398
1402
  i0.ɵɵadvance(1);
1399
1403
  i0.ɵɵtextInterpolate(data_r275);
1400
1404
  } }
1401
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
1405
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
1402
1406
  i0.ɵɵelementStart(0, "span");
1403
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_span_2_span_1_Template, 3, 5, "span", 6);
1404
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_span_2_span_2_Template, 3, 5, "span", 6);
1405
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_span_2_span_3_Template, 2, 1, "span", 6);
1407
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_1_Template, 3, 5, "span", 6);
1408
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_2_Template, 3, 5, "span", 6);
1409
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_3_Template, 2, 1, "span", 6);
1406
1410
  i0.ɵɵelementEnd();
1407
1411
  } if (rf & 2) {
1408
1412
  const m_r18 = i0.ɵɵnextContext(6).index;
@@ -1414,10 +1418,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1414
1418
  i0.ɵɵadvance(1);
1415
1419
  i0.ɵɵproperty("ngIf", !ctx_r307.tabularReport.matrix.attributes[ctx_r307.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r307.tabularReport.matrix.attributes[ctx_r307.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
1416
1420
  } }
1417
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_Template(rf, ctx) { if (rf & 1) {
1421
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_Template(rf, ctx) { if (rf & 1) {
1418
1422
  i0.ɵɵelementStart(0, "span");
1419
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_span_1_Template, 2, 1, "span", 6);
1420
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_span_2_Template, 4, 3, "span", 6);
1423
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_1_Template, 2, 1, "span", 6);
1424
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_Template, 4, 3, "span", 6);
1421
1425
  i0.ɵɵelementEnd();
1422
1426
  } if (rf & 2) {
1423
1427
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -1427,11 +1431,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1427
1431
  i0.ɵɵadvance(1);
1428
1432
  i0.ɵɵproperty("ngIf", ctx_r280.tabularReport.matrix.attributes[ctx_r280.tabularReport.rowGrouping.length + m_r18].widgetSubType === "numeric");
1429
1433
  } }
1430
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_4_Template(rf, ctx) { if (rf & 1) {
1434
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_4_Template(rf, ctx) { if (rf & 1) {
1431
1435
  const _r321 = i0.ɵɵgetCurrentView();
1432
1436
  i0.ɵɵelementStart(0, "span");
1433
- i0.ɵɵelementStart(1, "span", 28);
1434
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r321); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r319 = i0.ɵɵnextContext(7); return ctx_r319.redirect($event, data_r275); });
1437
+ i0.ɵɵelementStart(1, "span", 30);
1438
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r321); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r319 = i0.ɵɵnextContext(7); return ctx_r319.redirect($event, data_r275); });
1435
1439
  i0.ɵɵtext(2);
1436
1440
  i0.ɵɵelementEnd();
1437
1441
  i0.ɵɵelementEnd();
@@ -1443,11 +1447,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1443
1447
  i0.ɵɵadvance(1);
1444
1448
  i0.ɵɵtextInterpolate(data_r275);
1445
1449
  } }
1446
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_5_Template(rf, ctx) { if (rf & 1) {
1450
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_5_Template(rf, ctx) { if (rf & 1) {
1447
1451
  const _r324 = i0.ɵɵgetCurrentView();
1448
1452
  i0.ɵɵelementStart(0, "span");
1449
- i0.ɵɵelementStart(1, "span", 28);
1450
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r324); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r323 = i0.ɵɵnextContext(7); return ctx_r323.redirect($event, ctx_r323.x1ImageMediaUrl + data_r275); });
1453
+ i0.ɵɵelementStart(1, "span", 30);
1454
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r324); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r323 = i0.ɵɵnextContext(7); return ctx_r323.redirect($event, ctx_r323.x1ImageMediaUrl + data_r275); });
1451
1455
  i0.ɵɵtext(2);
1452
1456
  i0.ɵɵelementEnd();
1453
1457
  i0.ɵɵelementEnd();
@@ -1459,11 +1463,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1459
1463
  i0.ɵɵadvance(1);
1460
1464
  i0.ɵɵtextInterpolate(data_r275);
1461
1465
  } }
1462
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_6_Template(rf, ctx) { if (rf & 1) {
1466
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_6_Template(rf, ctx) { if (rf & 1) {
1463
1467
  const _r328 = i0.ɵɵgetCurrentView();
1464
1468
  i0.ɵɵelementStart(0, "span");
1465
- i0.ɵɵelementStart(1, "span", 28);
1466
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r328); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r327 = i0.ɵɵnextContext(7); return ctx_r327.redirect($event, ctx_r327.x1ImageMediaUrl + data_r275); });
1469
+ i0.ɵɵelementStart(1, "span", 30);
1470
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r328); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r327 = i0.ɵɵnextContext(7); return ctx_r327.redirect($event, ctx_r327.x1ImageMediaUrl + data_r275); });
1467
1471
  i0.ɵɵtext(2);
1468
1472
  i0.ɵɵelementEnd();
1469
1473
  i0.ɵɵelementEnd();
@@ -1475,11 +1479,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1475
1479
  i0.ɵɵadvance(1);
1476
1480
  i0.ɵɵtextInterpolate(data_r275);
1477
1481
  } }
1478
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_7_Template(rf, ctx) { if (rf & 1) {
1482
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_7_Template(rf, ctx) { if (rf & 1) {
1479
1483
  const _r332 = i0.ɵɵgetCurrentView();
1480
1484
  i0.ɵɵelementStart(0, "span");
1481
- i0.ɵɵelementStart(1, "span", 28);
1482
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r332); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r331 = i0.ɵɵnextContext(7); return ctx_r331.redirect($event, ctx_r331.x1ImageMediaUrl + data_r275); });
1485
+ i0.ɵɵelementStart(1, "span", 30);
1486
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r332); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r331 = i0.ɵɵnextContext(7); return ctx_r331.redirect($event, ctx_r331.x1ImageMediaUrl + data_r275); });
1483
1487
  i0.ɵɵtext(2);
1484
1488
  i0.ɵɵelementEnd();
1485
1489
  i0.ɵɵelementEnd();
@@ -1491,11 +1495,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1491
1495
  i0.ɵɵadvance(1);
1492
1496
  i0.ɵɵtextInterpolate(data_r275);
1493
1497
  } }
1494
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_8_Template(rf, ctx) { if (rf & 1) {
1498
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_8_Template(rf, ctx) { if (rf & 1) {
1495
1499
  const _r336 = i0.ɵɵgetCurrentView();
1496
1500
  i0.ɵɵelementStart(0, "span");
1497
- i0.ɵɵelementStart(1, "span", 28);
1498
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r336); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r335 = i0.ɵɵnextContext(7); return ctx_r335.redirect($event, ctx_r335.x1ImageMediaUrl + data_r275); });
1501
+ i0.ɵɵelementStart(1, "span", 30);
1502
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r336); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r335 = i0.ɵɵnextContext(7); return ctx_r335.redirect($event, ctx_r335.x1ImageMediaUrl + data_r275); });
1499
1503
  i0.ɵɵtext(2);
1500
1504
  i0.ɵɵelementEnd();
1501
1505
  i0.ɵɵelementEnd();
@@ -1507,11 +1511,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1507
1511
  i0.ɵɵadvance(1);
1508
1512
  i0.ɵɵtextInterpolate(data_r275);
1509
1513
  } }
1510
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_9_Template(rf, ctx) { if (rf & 1) {
1514
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_9_Template(rf, ctx) { if (rf & 1) {
1511
1515
  const _r340 = i0.ɵɵgetCurrentView();
1512
1516
  i0.ɵɵelementStart(0, "span");
1513
- i0.ɵɵelementStart(1, "span", 28);
1514
- i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r340); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r339 = i0.ɵɵnextContext(7); return ctx_r339.redirect($event, ctx_r339.x1ImageMediaUrl + data_r275); });
1517
+ i0.ɵɵelementStart(1, "span", 30);
1518
+ i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r340); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r339 = i0.ɵɵnextContext(7); return ctx_r339.redirect($event, ctx_r339.x1ImageMediaUrl + data_r275); });
1515
1519
  i0.ɵɵtext(2);
1516
1520
  i0.ɵɵelementEnd();
1517
1521
  i0.ɵɵelementEnd();
@@ -1523,7 +1527,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1523
1527
  i0.ɵɵadvance(1);
1524
1528
  i0.ɵɵtextInterpolate(data_r275);
1525
1529
  } }
1526
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_10_Template(rf, ctx) { if (rf & 1) {
1530
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_10_Template(rf, ctx) { if (rf & 1) {
1527
1531
  i0.ɵɵelementStart(0, "span");
1528
1532
  i0.ɵɵtext(1);
1529
1533
  i0.ɵɵelementEnd();
@@ -1532,18 +1536,18 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1532
1536
  i0.ɵɵadvance(1);
1533
1537
  i0.ɵɵtextInterpolate(data_r275);
1534
1538
  } }
1535
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
1539
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
1536
1540
  i0.ɵɵelementContainerStart(0);
1537
- i0.ɵɵelementStart(1, "div", 25);
1538
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_2_Template, 6, 5, "span", 26);
1539
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_3_Template, 3, 2, "span", 26);
1540
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_4_Template, 3, 2, "span", 26);
1541
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_5_Template, 3, 2, "span", 26);
1542
- i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_6_Template, 3, 2, "span", 26);
1543
- i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_7_Template, 3, 2, "span", 26);
1544
- i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_8_Template, 3, 2, "span", 26);
1545
- i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_9_Template, 3, 2, "span", 26);
1546
- i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_span_10_Template, 2, 1, "span", 27);
1541
+ i0.ɵɵelementStart(1, "div", 27);
1542
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_Template, 6, 5, "span", 28);
1543
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_Template, 3, 2, "span", 28);
1544
+ i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_4_Template, 3, 2, "span", 28);
1545
+ i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_5_Template, 3, 2, "span", 28);
1546
+ i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_6_Template, 3, 2, "span", 28);
1547
+ i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_7_Template, 3, 2, "span", 28);
1548
+ i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_8_Template, 3, 2, "span", 28);
1549
+ i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_9_Template, 3, 2, "span", 28);
1550
+ i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_10_Template, 2, 1, "span", 29);
1547
1551
  i0.ɵɵelementEnd();
1548
1552
  i0.ɵɵelementContainerEnd();
1549
1553
  } if (rf & 2) {
@@ -1568,7 +1572,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1568
1572
  i0.ɵɵadvance(1);
1569
1573
  i0.ɵɵproperty("ngSwitchCase", "imagecapture-widget");
1570
1574
  } }
1571
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
1575
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
1572
1576
  i0.ɵɵelementStart(0, "span");
1573
1577
  i0.ɵɵtext(1);
1574
1578
  i0.ɵɵpipe(2, "currency");
@@ -1579,7 +1583,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1579
1583
  i0.ɵɵadvance(1);
1580
1584
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r347.tabularReport.matrix.attributes[ctx_r347.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
1581
1585
  } }
1582
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
1586
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
1583
1587
  i0.ɵɵelementStart(0, "span");
1584
1588
  i0.ɵɵtext(1);
1585
1589
  i0.ɵɵpipe(2, "axoPercentage");
@@ -1590,7 +1594,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1590
1594
  i0.ɵɵadvance(1);
1591
1595
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r348.tabularReport.matrix.attributes[ctx_r348.tabularReport.rowGrouping.length + m_r18].series, "detail"));
1592
1596
  } }
1593
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
1597
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
1594
1598
  i0.ɵɵelementStart(0, "span");
1595
1599
  i0.ɵɵtext(1);
1596
1600
  i0.ɵɵelementEnd();
@@ -1598,11 +1602,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1598
1602
  i0.ɵɵadvance(1);
1599
1603
  i0.ɵɵtextInterpolate(0);
1600
1604
  } }
1601
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
1605
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
1602
1606
  i0.ɵɵelementStart(0, "span");
1603
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_span_1_span_1_Template, 3, 5, "span", 6);
1604
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_span_1_span_2_Template, 3, 5, "span", 6);
1605
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_span_1_span_3_Template, 2, 1, "span", 6);
1607
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_1_Template, 3, 5, "span", 6);
1608
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_2_Template, 3, 5, "span", 6);
1609
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_3_Template, 2, 1, "span", 6);
1606
1610
  i0.ɵɵelementEnd();
1607
1611
  } if (rf & 2) {
1608
1612
  const m_r18 = i0.ɵɵnextContext(5).index;
@@ -1614,15 +1618,15 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1614
1618
  i0.ɵɵadvance(1);
1615
1619
  i0.ɵɵproperty("ngIf", !ctx_r345.tabularReport.matrix.attributes[ctx_r345.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r345.tabularReport.matrix.attributes[ctx_r345.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
1616
1620
  } }
1617
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
1621
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
1618
1622
  i0.ɵɵelementStart(0, "span");
1619
1623
  i0.ɵɵtext(1, "-");
1620
1624
  i0.ɵɵelementEnd();
1621
1625
  } }
1622
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
1626
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
1623
1627
  i0.ɵɵelementStart(0, "span");
1624
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_span_1_Template, 4, 3, "span", 6);
1625
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_span_2_Template, 2, 0, "span", 6);
1628
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_Template, 4, 3, "span", 6);
1629
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_2_Template, 2, 0, "span", 6);
1626
1630
  i0.ɵɵelementEnd();
1627
1631
  } if (rf & 2) {
1628
1632
  const m_r18 = i0.ɵɵnextContext(4).index;
@@ -1632,13 +1636,13 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1632
1636
  i0.ɵɵadvance(1);
1633
1637
  i0.ɵɵproperty("ngIf", ctx_r278.tabularReport.matrix.attributes[ctx_r278.tabularReport.rowGrouping.length + m_r18].widgetSubType !== "numeric");
1634
1638
  } }
1635
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
1639
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
1636
1640
  const _r356 = i0.ɵɵgetCurrentView();
1637
1641
  i0.ɵɵelementContainerStart(0);
1638
- i0.ɵɵelementStart(1, "td", 24);
1639
- i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_Template_td_contextmenu_1_listener($event) { i0.ɵɵrestoreView(_r356); const _attr_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r354 = i0.ɵɵnextContext(4); return ctx_r354.drillThroughContext($event, _attr_r16, ctx_r354.i); });
1640
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_ng_container_2_Template, 11, 9, "ng-container", 6);
1641
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_span_3_Template, 3, 2, "span", 6);
1642
+ i0.ɵɵelementStart(1, "td", 26);
1643
+ i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_Template_td_contextmenu_1_listener($event) { i0.ɵɵrestoreView(_r356); const _attr_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r354 = i0.ɵɵnextContext(4); return ctx_r354.drillThroughContext($event, _attr_r16, ctx_r354.i); });
1644
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_Template, 11, 9, "ng-container", 6);
1645
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_Template, 3, 2, "span", 6);
1642
1646
  i0.ɵɵelementEnd();
1643
1647
  i0.ɵɵelementContainerEnd();
1644
1648
  } if (rf & 2) {
@@ -1652,9 +1656,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1652
1656
  i0.ɵɵadvance(1);
1653
1657
  i0.ɵɵproperty("ngIf", !data_r275);
1654
1658
  } }
1655
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {
1659
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_Template(rf, ctx) { if (rf & 1) {
1656
1660
  i0.ɵɵelementContainerStart(0);
1657
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_ng_container_1_Template, 4, 13, "ng-container", 15);
1661
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_Template, 4, 13, "ng-container", 15);
1658
1662
  i0.ɵɵelementContainerEnd();
1659
1663
  } if (rf & 2) {
1660
1664
  const series_r273 = ctx.$implicit;
@@ -1662,8 +1666,8 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
1662
1666
  i0.ɵɵadvance(1);
1663
1667
  i0.ɵɵproperty("ngForOf", ctx_r271.tabularReport.secondColData.get(series_r273));
1664
1668
  } }
1665
- function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_5_Template(rf, ctx) { if (rf & 1) {
1666
- i0.ɵɵelementStart(0, "td", 29);
1669
+ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_7_Template(rf, ctx) { if (rf & 1) {
1670
+ i0.ɵɵelementStart(0, "td", 31);
1667
1671
  i0.ɵɵtext(1, "-");
1668
1672
  i0.ɵɵelementEnd();
1669
1673
  } if (rf & 2) {
@@ -1674,11 +1678,15 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_5
1674
1678
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_Template(rf, ctx) { if (rf & 1) {
1675
1679
  i0.ɵɵelementStart(0, "tr");
1676
1680
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_1_Template, 1, 2, "td", 17);
1677
- i0.ɵɵelementStart(2, "th", 30);
1678
- i0.ɵɵtext(3);
1681
+ i0.ɵɵelementStart(2, "th", 32);
1682
+ i0.ɵɵelementStart(3, "div", 19);
1683
+ i0.ɵɵelementStart(4, "span", 20);
1684
+ i0.ɵɵtext(5);
1685
+ i0.ɵɵelementEnd();
1686
+ i0.ɵɵelementEnd();
1679
1687
  i0.ɵɵelementEnd();
1680
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_4_Template, 2, 1, "ng-container", 15);
1681
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_5_Template, 2, 9, "td", 19);
1688
+ i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_Template, 2, 1, "ng-container", 15);
1689
+ i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_7_Template, 2, 9, "td", 21);
1682
1690
  i0.ɵɵelementEnd();
1683
1691
  } if (rf & 2) {
1684
1692
  const _attr_r16 = i0.ɵɵnextContext().$implicit;
@@ -1686,9 +1694,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_Temp
1686
1694
  i0.ɵɵadvance(1);
1687
1695
  i0.ɵɵproperty("ngIf", ctx_r20.tabularReport.rowGrouping.length === 2);
1688
1696
  i0.ɵɵadvance(1);
1689
- i0.ɵɵstyleProp("color", ctx_r20.tabularReport.tableStyle.header.font.color)("font-family", ctx_r20.tabularReport.tableStyle.header.font.family)("background", ctx_r20.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r20.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r20.tabularReport.tableStyle.border.width + "px" + " " + ctx_r20.tabularReport.tableStyle.border.borderStyle + " " + ctx_r20.tabularReport.tableStyle.border.color)("text-align", ctx_r20.attr.alignment);
1697
+ i0.ɵɵstyleProp("color", ctx_r20.tabularReport.tableStyle.header.font.color)("font-family", ctx_r20.tabularReport.tableStyle.header.font.family)("background", ctx_r20.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r20.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r20.tabularReport.tableStyle.border.width + "px" + " " + ctx_r20.tabularReport.tableStyle.border.borderStyle + " " + ctx_r20.tabularReport.tableStyle.border.color)("text-align", _attr_r16.alignment);
1690
1698
  i0.ɵɵproperty("id", ctx_r20.th);
1691
- i0.ɵɵadvance(1);
1699
+ i0.ɵɵadvance(3);
1692
1700
  i0.ɵɵtextInterpolate(_attr_r16.label);
1693
1701
  i0.ɵɵadvance(1);
1694
1702
  i0.ɵɵproperty("ngForOf", ctx_r20.tabularReport.colGrouping[0].uniqueSeries);
@@ -1698,8 +1706,8 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_Temp
1698
1706
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
1699
1707
  i0.ɵɵelementContainerStart(0);
1700
1708
  i0.ɵɵelementContainerStart(1);
1701
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Template, 6, 19, "tr", 6);
1702
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_Template, 6, 17, "tr", 6);
1709
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Template, 8, 19, "tr", 6);
1710
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_Template, 8, 17, "tr", 6);
1703
1711
  i0.ɵɵelementContainerEnd();
1704
1712
  i0.ɵɵelementContainerEnd();
1705
1713
  } if (rf & 2) {
@@ -1714,8 +1722,8 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_3_Template(
1714
1722
  i0.ɵɵelementContainerStart(0);
1715
1723
  i0.ɵɵelementStart(1, "th", 18);
1716
1724
  i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_3_Template_th_contextmenu_1_listener($event) { i0.ɵɵrestoreView(_r362); const ctx_r361 = i0.ɵɵnextContext(4); return ctx_r361.onContextMenu($event, ctx_r361.i); });
1717
- i0.ɵɵelementStart(2, "div", 31);
1718
- i0.ɵɵelementStart(3, "span", 32);
1725
+ i0.ɵɵelementStart(2, "div", 19);
1726
+ i0.ɵɵelementStart(3, "span", 20);
1719
1727
  i0.ɵɵtext(4);
1720
1728
  i0.ɵɵelementEnd();
1721
1729
  i0.ɵɵelementEnd();
@@ -1732,9 +1740,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_3_Template(
1732
1740
  } }
1733
1741
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
1734
1742
  i0.ɵɵelementContainerStart(0);
1735
- i0.ɵɵelementStart(1, "th", 30);
1736
- i0.ɵɵelementStart(2, "span");
1737
- i0.ɵɵtext(3);
1743
+ i0.ɵɵelementStart(1, "th", 32);
1744
+ i0.ɵɵelementStart(2, "div", 19);
1745
+ i0.ɵɵelementStart(3, "span", 20);
1746
+ i0.ɵɵtext(4);
1747
+ i0.ɵɵelementEnd();
1738
1748
  i0.ɵɵelementEnd();
1739
1749
  i0.ɵɵelementEnd();
1740
1750
  i0.ɵɵelementContainerEnd();
@@ -1744,22 +1754,26 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_ng_contai
1744
1754
  i0.ɵɵadvance(1);
1745
1755
  i0.ɵɵstyleProp("color", ctx_r365.tabularReport.tableStyle.header.font.color)("font-family", ctx_r365.tabularReport.tableStyle.header.font.family)("color", ctx_r365.tabularReport.tableStyle.header.font.color)("background", ctx_r365.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r365.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r365.tabularReport.tableStyle.border.width + "px" + " " + ctx_r365.tabularReport.tableStyle.border.borderStyle + " " + ctx_r365.tabularReport.tableStyle.border.color)("text-align", attr_r367.alignment);
1746
1756
  i0.ɵɵproperty("id", ctx_r365.th);
1747
- i0.ɵɵadvance(2);
1757
+ i0.ɵɵadvance(3);
1748
1758
  i0.ɵɵtextInterpolate(attr_r367);
1749
1759
  } }
1750
1760
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_th_2_Template(rf, ctx) { if (rf & 1) {
1751
- i0.ɵɵelementStart(0, "th", 30);
1752
- i0.ɵɵtext(1, " Count ");
1761
+ i0.ɵɵelementStart(0, "th", 32);
1762
+ i0.ɵɵelementStart(1, "div", 19);
1763
+ i0.ɵɵelementStart(2, "span", 20);
1764
+ i0.ɵɵtext(3, "Count");
1765
+ i0.ɵɵelementEnd();
1766
+ i0.ɵɵelementEnd();
1753
1767
  i0.ɵɵelementEnd();
1754
1768
  } if (rf & 2) {
1755
1769
  const ctx_r366 = i0.ɵɵnextContext(5);
1756
- i0.ɵɵstyleProp("color", ctx_r366.tabularReport.tableStyle.header.font.color)("font-family", ctx_r366.tabularReport.tableStyle.header.font.family)("color", ctx_r366.tabularReport.tableStyle.header.font.color)("background", ctx_r366.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r366.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r366.tabularReport.tableStyle.border.width + "px" + " " + ctx_r366.tabularReport.tableStyle.border.borderStyle + " " + ctx_r366.tabularReport.tableStyle.border.color)("text-align", ctx_r366.attr.alignment);
1770
+ i0.ɵɵstyleProp("color", ctx_r366.tabularReport.tableStyle.header.font.color)("font-family", ctx_r366.tabularReport.tableStyle.header.font.family)("color", ctx_r366.tabularReport.tableStyle.header.font.color)("background", ctx_r366.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r366.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r366.tabularReport.tableStyle.border.width + "px" + " " + ctx_r366.tabularReport.tableStyle.border.borderStyle + " " + ctx_r366.tabularReport.tableStyle.border.color);
1757
1771
  i0.ɵɵproperty("id", ctx_r366.th);
1758
1772
  } }
1759
1773
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
1760
1774
  i0.ɵɵelementContainerStart(0);
1761
- i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_ng_container_1_Template, 4, 16, "ng-container", 15);
1762
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_th_2_Template, 2, 15, "th", 33);
1775
+ i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_ng_container_1_Template, 5, 16, "ng-container", 15);
1776
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_th_2_Template, 4, 13, "th", 33);
1763
1777
  i0.ɵɵelementContainerEnd();
1764
1778
  } if (rf & 2) {
1765
1779
  const ctx_r12 = i0.ɵɵnextContext(4);
@@ -1785,7 +1799,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_5_ng_contai
1785
1799
  i0.ɵɵtextInterpolate(attr_r371);
1786
1800
  } }
1787
1801
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_5_td_2_Template(rf, ctx) { if (rf & 1) {
1788
- i0.ɵɵelementStart(0, "td", 20);
1802
+ i0.ɵɵelementStart(0, "td", 22);
1789
1803
  i0.ɵɵtext(1, " Count ");
1790
1804
  i0.ɵɵelementEnd();
1791
1805
  } if (rf & 2) {
@@ -2013,7 +2027,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2013
2027
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_6_Template(rf, ctx) { if (rf & 1) {
2014
2028
  const _r445 = i0.ɵɵgetCurrentView();
2015
2029
  i0.ɵɵelementStart(0, "span");
2016
- i0.ɵɵelementStart(1, "span", 28);
2030
+ i0.ɵɵelementStart(1, "span", 30);
2017
2031
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r445); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r443 = i0.ɵɵnextContext(5); return ctx_r443.redirect($event, _attr_r383.series[i_r375]); });
2018
2032
  i0.ɵɵtext(2);
2019
2033
  i0.ɵɵelementEnd();
@@ -2030,7 +2044,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2030
2044
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_7_Template(rf, ctx) { if (rf & 1) {
2031
2045
  const _r450 = i0.ɵɵgetCurrentView();
2032
2046
  i0.ɵɵelementStart(0, "span");
2033
- i0.ɵɵelementStart(1, "span", 28);
2047
+ i0.ɵɵelementStart(1, "span", 30);
2034
2048
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r450); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r449 = i0.ɵɵnextContext(5); return ctx_r449.redirect($event, ctx_r449.x1ImageMediaUrl + _attr_r383.series[i_r375]); });
2035
2049
  i0.ɵɵtext(2);
2036
2050
  i0.ɵɵelementEnd();
@@ -2047,7 +2061,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2047
2061
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_8_Template(rf, ctx) { if (rf & 1) {
2048
2062
  const _r456 = i0.ɵɵgetCurrentView();
2049
2063
  i0.ɵɵelementStart(0, "span");
2050
- i0.ɵɵelementStart(1, "span", 28);
2064
+ i0.ɵɵelementStart(1, "span", 30);
2051
2065
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r456); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r455 = i0.ɵɵnextContext(5); return ctx_r455.redirect($event, ctx_r455.x1ImageMediaUrl + _attr_r383.series[i_r375]); });
2052
2066
  i0.ɵɵtext(2);
2053
2067
  i0.ɵɵelementEnd();
@@ -2064,7 +2078,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2064
2078
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_9_Template(rf, ctx) { if (rf & 1) {
2065
2079
  const _r462 = i0.ɵɵgetCurrentView();
2066
2080
  i0.ɵɵelementStart(0, "span");
2067
- i0.ɵɵelementStart(1, "span", 28);
2081
+ i0.ɵɵelementStart(1, "span", 30);
2068
2082
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r462); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r461 = i0.ɵɵnextContext(5); return ctx_r461.redirect($event, ctx_r461.x1ImageMediaUrl + _attr_r383.series[i_r375]); });
2069
2083
  i0.ɵɵtext(2);
2070
2084
  i0.ɵɵelementEnd();
@@ -2081,7 +2095,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2081
2095
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_10_Template(rf, ctx) { if (rf & 1) {
2082
2096
  const _r468 = i0.ɵɵgetCurrentView();
2083
2097
  i0.ɵɵelementStart(0, "span");
2084
- i0.ɵɵelementStart(1, "span", 28);
2098
+ i0.ɵɵelementStart(1, "span", 30);
2085
2099
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_10_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r468); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r467 = i0.ɵɵnextContext(5); return ctx_r467.redirect($event, ctx_r467.x1ImageMediaUrl + _attr_r383.series[i_r375]); });
2086
2100
  i0.ɵɵtext(2);
2087
2101
  i0.ɵɵelementEnd();
@@ -2098,7 +2112,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2098
2112
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_11_Template(rf, ctx) { if (rf & 1) {
2099
2113
  const _r474 = i0.ɵɵgetCurrentView();
2100
2114
  i0.ɵɵelementStart(0, "span");
2101
- i0.ɵɵelementStart(1, "span", 28);
2115
+ i0.ɵɵelementStart(1, "span", 30);
2102
2116
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_11_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r474); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r473 = i0.ɵɵnextContext(5); return ctx_r473.redirect($event, ctx_r473.x1ImageMediaUrl + _attr_r383.series[i_r375]); });
2103
2117
  i0.ɵɵtext(2);
2104
2118
  i0.ɵɵelementEnd();
@@ -2132,17 +2146,17 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2132
2146
  i0.ɵɵelementStart(0, "td", 38);
2133
2147
  i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_Template_td_contextmenu_0_listener($event) { i0.ɵɵrestoreView(_r483); const _attr_r383 = i0.ɵɵnextContext().$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r481 = i0.ɵɵnextContext(5); return ctx_r481.drillThroughContext($event, _attr_r383, i_r375); });
2134
2148
  i0.ɵɵtext(1);
2135
- i0.ɵɵelementStart(2, "div", 25);
2136
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_3_Template, 4, 3, "span", 26);
2137
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_4_Template, 5, 4, "span", 26);
2138
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_5_Template, 3, 2, "span", 26);
2139
- i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_6_Template, 3, 2, "span", 26);
2140
- i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_7_Template, 3, 2, "span", 26);
2141
- i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_8_Template, 3, 2, "span", 26);
2142
- i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_9_Template, 3, 2, "span", 26);
2143
- i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_10_Template, 3, 2, "span", 26);
2144
- i0.ɵɵtemplate(11, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_11_Template, 3, 2, "span", 26);
2145
- i0.ɵɵtemplate(12, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_12_Template, 2, 1, "span", 27);
2149
+ i0.ɵɵelementStart(2, "div", 27);
2150
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_3_Template, 4, 3, "span", 28);
2151
+ i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_4_Template, 5, 4, "span", 28);
2152
+ i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_5_Template, 3, 2, "span", 28);
2153
+ i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_6_Template, 3, 2, "span", 28);
2154
+ i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_7_Template, 3, 2, "span", 28);
2155
+ i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_8_Template, 3, 2, "span", 28);
2156
+ i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_9_Template, 3, 2, "span", 28);
2157
+ i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_10_Template, 3, 2, "span", 28);
2158
+ i0.ɵɵtemplate(11, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_11_Template, 3, 2, "span", 28);
2159
+ i0.ɵɵtemplate(12, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_12_Template, 2, 1, "span", 29);
2146
2160
  i0.ɵɵtemplate(13, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_13_Template, 2, 0, "span", 6);
2147
2161
  i0.ɵɵelementEnd();
2148
2162
  i0.ɵɵelementEnd();
@@ -2397,7 +2411,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2397
2411
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_5_Template(rf, ctx) { if (rf & 1) {
2398
2412
  const _r551 = i0.ɵɵgetCurrentView();
2399
2413
  i0.ɵɵelementStart(0, "span");
2400
- i0.ɵɵelementStart(1, "span", 28);
2414
+ i0.ɵɵelementStart(1, "span", 30);
2401
2415
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r551); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r549 = i0.ɵɵnextContext(5); return ctx_r549.redirect($event, _attr_r488.series[i_r375]); });
2402
2416
  i0.ɵɵtext(2);
2403
2417
  i0.ɵɵelementEnd();
@@ -2414,7 +2428,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2414
2428
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_6_Template(rf, ctx) { if (rf & 1) {
2415
2429
  const _r556 = i0.ɵɵgetCurrentView();
2416
2430
  i0.ɵɵelementStart(0, "span");
2417
- i0.ɵɵelementStart(1, "span", 28);
2431
+ i0.ɵɵelementStart(1, "span", 30);
2418
2432
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r556); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r555 = i0.ɵɵnextContext(5); return ctx_r555.redirect($event, ctx_r555.x1ImageMediaUrl + _attr_r488.series[i_r375]); });
2419
2433
  i0.ɵɵtext(2);
2420
2434
  i0.ɵɵelementEnd();
@@ -2431,7 +2445,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2431
2445
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_7_Template(rf, ctx) { if (rf & 1) {
2432
2446
  const _r562 = i0.ɵɵgetCurrentView();
2433
2447
  i0.ɵɵelementStart(0, "span");
2434
- i0.ɵɵelementStart(1, "span", 28);
2448
+ i0.ɵɵelementStart(1, "span", 30);
2435
2449
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r562); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r561 = i0.ɵɵnextContext(5); return ctx_r561.redirect($event, ctx_r561.x1ImageMediaUrl + _attr_r488.series[i_r375]); });
2436
2450
  i0.ɵɵtext(2);
2437
2451
  i0.ɵɵelementEnd();
@@ -2448,7 +2462,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2448
2462
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_8_Template(rf, ctx) { if (rf & 1) {
2449
2463
  const _r568 = i0.ɵɵgetCurrentView();
2450
2464
  i0.ɵɵelementStart(0, "span");
2451
- i0.ɵɵelementStart(1, "span", 28);
2465
+ i0.ɵɵelementStart(1, "span", 30);
2452
2466
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r568); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r567 = i0.ɵɵnextContext(5); return ctx_r567.redirect($event, ctx_r567.x1ImageMediaUrl + _attr_r488.series[i_r375]); });
2453
2467
  i0.ɵɵtext(2);
2454
2468
  i0.ɵɵelementEnd();
@@ -2465,7 +2479,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2465
2479
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_9_Template(rf, ctx) { if (rf & 1) {
2466
2480
  const _r574 = i0.ɵɵgetCurrentView();
2467
2481
  i0.ɵɵelementStart(0, "span");
2468
- i0.ɵɵelementStart(1, "span", 28);
2482
+ i0.ɵɵelementStart(1, "span", 30);
2469
2483
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r574); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r573 = i0.ɵɵnextContext(5); return ctx_r573.redirect($event, ctx_r573.x1ImageMediaUrl + _attr_r488.series[i_r375]); });
2470
2484
  i0.ɵɵtext(2);
2471
2485
  i0.ɵɵelementEnd();
@@ -2482,7 +2496,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2482
2496
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_10_Template(rf, ctx) { if (rf & 1) {
2483
2497
  const _r580 = i0.ɵɵgetCurrentView();
2484
2498
  i0.ɵɵelementStart(0, "span");
2485
- i0.ɵɵelementStart(1, "span", 28);
2499
+ i0.ɵɵelementStart(1, "span", 30);
2486
2500
  i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_10_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r580); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r579 = i0.ɵɵnextContext(5); return ctx_r579.redirect($event, ctx_r579.x1ImageMediaUrl + _attr_r488.series[i_r375]); });
2487
2501
  i0.ɵɵtext(2);
2488
2502
  i0.ɵɵelementEnd();
@@ -2525,17 +2539,17 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2525
2539
  const _r591 = i0.ɵɵgetCurrentView();
2526
2540
  i0.ɵɵelementStart(0, "td", 40);
2527
2541
  i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_Template_td_contextmenu_0_listener($event) { i0.ɵɵrestoreView(_r591); const _attr_r488 = i0.ɵɵnextContext().$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r589 = i0.ɵɵnextContext(5); return ctx_r589.drillThroughContext($event, _attr_r488, i_r375); });
2528
- i0.ɵɵelementStart(1, "div", 25);
2529
- i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_2_Template, 4, 3, "span", 26);
2530
- i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_3_Template, 5, 4, "span", 26);
2531
- i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_4_Template, 3, 2, "span", 26);
2532
- i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_5_Template, 3, 2, "span", 26);
2533
- i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_6_Template, 3, 2, "span", 26);
2534
- i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_7_Template, 3, 2, "span", 26);
2535
- i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_8_Template, 3, 2, "span", 26);
2536
- i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_9_Template, 3, 2, "span", 26);
2537
- i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_10_Template, 3, 2, "span", 26);
2538
- i0.ɵɵtemplate(11, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_11_Template, 2, 1, "span", 27);
2542
+ i0.ɵɵelementStart(1, "div", 27);
2543
+ i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_2_Template, 4, 3, "span", 28);
2544
+ i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_3_Template, 5, 4, "span", 28);
2545
+ i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_4_Template, 3, 2, "span", 28);
2546
+ i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_5_Template, 3, 2, "span", 28);
2547
+ i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_6_Template, 3, 2, "span", 28);
2548
+ i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_7_Template, 3, 2, "span", 28);
2549
+ i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_8_Template, 3, 2, "span", 28);
2550
+ i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_9_Template, 3, 2, "span", 28);
2551
+ i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_10_Template, 3, 2, "span", 28);
2552
+ i0.ɵɵtemplate(11, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_11_Template, 2, 1, "span", 29);
2539
2553
  i0.ɵɵtemplate(12, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_12_Template, 2, 0, "span", 6);
2540
2554
  i0.ɵɵtemplate(13, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_13_Template, 2, 1, "span", 6);
2541
2555
  i0.ɵɵelementEnd();
@@ -2618,7 +2632,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2618
2632
  } }
2619
2633
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
2620
2634
  i0.ɵɵelementContainerStart(0);
2621
- i0.ɵɵelementStart(1, "td", 20);
2635
+ i0.ɵɵelementStart(1, "td", 22);
2622
2636
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_1_span_2_Template, 3, 5, "span", 6);
2623
2637
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_1_span_3_Template, 3, 6, "span", 6);
2624
2638
  i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_1_span_4_Template, 2, 1, "span", 6);
@@ -2669,7 +2683,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2669
2683
  i0.ɵɵtextInterpolate(data_r607);
2670
2684
  } }
2671
2685
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_2_td_1_Template(rf, ctx) { if (rf & 1) {
2672
- i0.ɵɵelementStart(0, "td", 20);
2686
+ i0.ɵɵelementStart(0, "td", 22);
2673
2687
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_2_td_1_span_1_Template, 3, 5, "span", 6);
2674
2688
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_2_td_1_span_2_Template, 3, 6, "span", 6);
2675
2689
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_2_td_1_span_3_Template, 2, 1, "span", 6);
@@ -2750,7 +2764,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2750
2764
  i0.ɵɵtextInterpolate(data_r620);
2751
2765
  } }
2752
2766
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_td_1_Template(rf, ctx) { if (rf & 1) {
2753
- i0.ɵɵelementStart(0, "td", 20);
2767
+ i0.ɵɵelementStart(0, "td", 22);
2754
2768
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_td_1_span_1_Template, 3, 5, "span", 6);
2755
2769
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_td_1_span_2_Template, 3, 6, "span", 6);
2756
2770
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_td_1_span_3_Template, 2, 1, "span", 6);
@@ -2771,7 +2785,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2771
2785
  } }
2772
2786
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
2773
2787
  i0.ɵɵelementContainerStart(0);
2774
- i0.ɵɵelementStart(1, "td", 20);
2788
+ i0.ɵɵelementStart(1, "td", 22);
2775
2789
  i0.ɵɵtext(2);
2776
2790
  i0.ɵɵelementEnd();
2777
2791
  i0.ɵɵelementContainerEnd();
@@ -2826,7 +2840,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2826
2840
  i0.ɵɵtextInterpolate(data_r636);
2827
2841
  } }
2828
2842
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_3_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
2829
- i0.ɵɵelementStart(0, "td", 20);
2843
+ i0.ɵɵelementStart(0, "td", 22);
2830
2844
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_3_ng_container_1_td_1_span_1_Template, 3, 5, "span", 6);
2831
2845
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_3_ng_container_1_td_1_span_2_Template, 3, 6, "span", 6);
2832
2846
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_3_ng_container_1_td_1_span_3_Template, 2, 1, "span", 6);
@@ -2853,7 +2867,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2853
2867
  i0.ɵɵproperty("ngForOf", ctx_r633.tabularReport.sideTotal.get(i_r375));
2854
2868
  } }
2855
2869
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_3_td_2_Template(rf, ctx) { if (rf & 1) {
2856
- i0.ɵɵelementStart(0, "td", 20);
2870
+ i0.ɵɵelementStart(0, "td", 22);
2857
2871
  i0.ɵɵtext(1);
2858
2872
  i0.ɵɵelementEnd();
2859
2873
  } if (rf & 2) {
@@ -2893,7 +2907,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2893
2907
  i0.ɵɵproperty("ngIf", ctx_r381.tabularReport.showGrandTotal);
2894
2908
  } }
2895
2909
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
2896
- i0.ɵɵelementStart(0, "td", 20);
2910
+ i0.ɵɵelementStart(0, "td", 22);
2897
2911
  i0.ɵɵelementStart(1, "span");
2898
2912
  i0.ɵɵtext(2, "Subtotal");
2899
2913
  i0.ɵɵelementEnd();
@@ -2904,7 +2918,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
2904
2918
  i0.ɵɵstyleProp("border", ctx_r655.tabularReport.tableStyle.border.width + "px" + " " + ctx_r655.tabularReport.tableStyle.border.borderStyle + " " + ctx_r655.tabularReport.tableStyle.border.color)("background", ctx_r655.tabularReport.tableStyle.subFooter.backgroundColor)("font-family", ctx_r655.tabularReport.tableStyle.subFooter.font.family)("font-size", ctx_r655.tabularReport.tableStyle.subFooter.font.size, "px")("color", ctx_r655.tabularReport.tableStyle.subFooter.font.color)("border", ctx_r655.tabularReport.tableStyle.border.width + "px" + " " + ctx_r655.tabularReport.tableStyle.border.borderStyle + " " + ctx_r655.tabularReport.tableStyle.border.color)("text-align", _attr_r652.alignment);
2905
2919
  } }
2906
2920
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_1_td_2_Template(rf, ctx) { if (rf & 1) {
2907
- i0.ɵɵelementStart(0, "td", 20);
2921
+ i0.ɵɵelementStart(0, "td", 22);
2908
2922
  i0.ɵɵtext(1, "-");
2909
2923
  i0.ɵɵelementEnd();
2910
2924
  } if (rf & 2) {
@@ -3033,7 +3047,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
3033
3047
  } }
3034
3048
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_2_Template(rf, ctx) { if (rf & 1) {
3035
3049
  i0.ɵɵelementContainerStart(0);
3036
- i0.ɵɵelementStart(1, "td", 20);
3050
+ i0.ɵɵelementStart(1, "td", 22);
3037
3051
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_2_ng_container_2_Template, 4, 3, "ng-container", 6);
3038
3052
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_2_ng_container_3_Template, 5, 4, "ng-container", 6);
3039
3053
  i0.ɵɵelementEnd();
@@ -3048,7 +3062,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
3048
3062
  i0.ɵɵproperty("ngIf", ctx_r649.tabularReport.rowCount);
3049
3063
  } }
3050
3064
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_3_td_1_Template(rf, ctx) { if (rf & 1) {
3051
- i0.ɵɵelementStart(0, "td", 20);
3065
+ i0.ɵɵelementStart(0, "td", 22);
3052
3066
  i0.ɵɵtext(1);
3053
3067
  i0.ɵɵelementEnd();
3054
3068
  } if (rf & 2) {
@@ -3101,7 +3115,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
3101
3115
  i0.ɵɵtextInterpolate(data_r683);
3102
3116
  } }
3103
3117
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_4_td_1_Template(rf, ctx) { if (rf & 1) {
3104
- i0.ɵɵelementStart(0, "td", 20);
3118
+ i0.ɵɵelementStart(0, "td", 22);
3105
3119
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_4_td_1_span_1_Template, 3, 5, "span", 6);
3106
3120
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_4_td_1_span_2_Template, 3, 6, "span", 6);
3107
3121
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_4_td_1_span_3_Template, 2, 1, "span", 6);
@@ -3118,7 +3132,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
3118
3132
  i0.ɵɵproperty("ngIf", !ctx_r681.tabularReport.matrix.attributes[ctx_r681.tabularReport.integerIndexing[m_r684]].valueFormatting.percentage && !ctx_r681.tabularReport.matrix.attributes[ctx_r681.tabularReport.integerIndexing[m_r684]].valueFormatting.currency);
3119
3133
  } }
3120
3134
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_4_td_2_Template(rf, ctx) { if (rf & 1) {
3121
- i0.ɵɵelementStart(0, "td", 20);
3135
+ i0.ɵɵelementStart(0, "td", 22);
3122
3136
  i0.ɵɵtext(1);
3123
3137
  i0.ɵɵelementEnd();
3124
3138
  } if (rf & 2) {
@@ -3237,7 +3251,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3237
3251
  } }
3238
3252
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
3239
3253
  i0.ɵɵelementContainerStart(0);
3240
- i0.ɵɵelementStart(1, "td", 20);
3254
+ i0.ɵɵelementStart(1, "td", 22);
3241
3255
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_1_span_2_Template, 3, 5, "span", 6);
3242
3256
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_1_span_3_Template, 3, 6, "span", 6);
3243
3257
  i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_1_span_4_Template, 2, 1, "span", 6);
@@ -3288,7 +3302,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3288
3302
  i0.ɵɵtextInterpolate(data_r714);
3289
3303
  } }
3290
3304
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_2_td_1_Template(rf, ctx) { if (rf & 1) {
3291
- i0.ɵɵelementStart(0, "td", 20);
3305
+ i0.ɵɵelementStart(0, "td", 22);
3292
3306
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_2_td_1_span_1_Template, 3, 5, "span", 6);
3293
3307
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_2_td_1_span_2_Template, 3, 6, "span", 6);
3294
3308
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_2_td_1_span_3_Template, 2, 1, "span", 6);
@@ -3370,7 +3384,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3370
3384
  } }
3371
3385
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
3372
3386
  i0.ɵɵelementContainerStart(0);
3373
- i0.ɵɵelementStart(1, "td", 20);
3387
+ i0.ɵɵelementStart(1, "td", 22);
3374
3388
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_1_span_2_Template, 3, 5, "span", 6);
3375
3389
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_1_span_3_Template, 3, 6, "span", 6);
3376
3390
  i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_1_span_4_Template, 2, 1, "span", 6);
@@ -3393,7 +3407,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3393
3407
  } }
3394
3408
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
3395
3409
  i0.ɵɵelementContainerStart(0);
3396
- i0.ɵɵelementStart(1, "td", 20);
3410
+ i0.ɵɵelementStart(1, "td", 22);
3397
3411
  i0.ɵɵtext(2);
3398
3412
  i0.ɵɵelementEnd();
3399
3413
  i0.ɵɵelementContainerEnd();
@@ -3448,7 +3462,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3448
3462
  i0.ɵɵtextInterpolate(data_r741);
3449
3463
  } }
3450
3464
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_td_1_Template(rf, ctx) { if (rf & 1) {
3451
- i0.ɵɵelementStart(0, "td", 20);
3465
+ i0.ɵɵelementStart(0, "td", 22);
3452
3466
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_td_1_span_1_Template, 3, 5, "span", 6);
3453
3467
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_td_1_span_2_Template, 3, 6, "span", 6);
3454
3468
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_td_1_span_3_Template, 2, 1, "span", 6);
@@ -3467,7 +3481,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3467
3481
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_Template(rf, ctx) { if (rf & 1) {
3468
3482
  i0.ɵɵelementContainerStart(0);
3469
3483
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_td_1_Template, 4, 13, "td", 48);
3470
- i0.ɵɵelementStart(2, "td", 20);
3484
+ i0.ɵɵelementStart(2, "td", 22);
3471
3485
  i0.ɵɵtext(3);
3472
3486
  i0.ɵɵelementEnd();
3473
3487
  i0.ɵɵelementContainerEnd();
@@ -3530,7 +3544,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3530
3544
  i0.ɵɵtextInterpolate(data_r755);
3531
3545
  } }
3532
3546
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_td_1_Template(rf, ctx) { if (rf & 1) {
3533
- i0.ɵɵelementStart(0, "td", 20);
3547
+ i0.ɵɵelementStart(0, "td", 22);
3534
3548
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_td_1_span_1_Template, 3, 5, "span", 6);
3535
3549
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_td_1_span_2_Template, 3, 6, "span", 6);
3536
3550
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_td_1_span_3_Template, 2, 1, "span", 6);
@@ -3579,7 +3593,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3579
3593
  i0.ɵɵtextInterpolate(data_r764);
3580
3594
  } }
3581
3595
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_ng_container_2_td_1_Template(rf, ctx) { if (rf & 1) {
3582
- i0.ɵɵelementStart(0, "td", 20);
3596
+ i0.ɵɵelementStart(0, "td", 22);
3583
3597
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_ng_container_2_td_1_span_1_Template, 3, 5, "span", 6);
3584
3598
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_ng_container_2_td_1_span_2_Template, 3, 6, "span", 6);
3585
3599
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_ng_container_2_td_1_span_3_Template, 2, 1, "span", 6);
@@ -3660,7 +3674,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3660
3674
  i0.ɵɵtextInterpolate(data_r777);
3661
3675
  } }
3662
3676
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_td_1_Template(rf, ctx) { if (rf & 1) {
3663
- i0.ɵɵelementStart(0, "td", 20);
3677
+ i0.ɵɵelementStart(0, "td", 22);
3664
3678
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_td_1_span_1_Template, 3, 5, "span", 6);
3665
3679
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_td_1_span_2_Template, 3, 6, "span", 6);
3666
3680
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_td_1_span_3_Template, 2, 1, "span", 6);
@@ -3681,7 +3695,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3681
3695
  } }
3682
3696
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
3683
3697
  i0.ɵɵelementContainerStart(0);
3684
- i0.ɵɵelementStart(1, "td", 20);
3698
+ i0.ɵɵelementStart(1, "td", 22);
3685
3699
  i0.ɵɵtext(2);
3686
3700
  i0.ɵɵelementEnd();
3687
3701
  i0.ɵɵelementContainerEnd();
@@ -3736,7 +3750,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3736
3750
  i0.ɵɵtextInterpolate(data_r791);
3737
3751
  } }
3738
3752
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_td_1_Template(rf, ctx) { if (rf & 1) {
3739
- i0.ɵɵelementStart(0, "td", 20);
3753
+ i0.ɵɵelementStart(0, "td", 22);
3740
3754
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_td_1_span_1_Template, 3, 5, "span", 6);
3741
3755
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_td_1_span_2_Template, 3, 6, "span", 6);
3742
3756
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_td_1_span_3_Template, 2, 1, "span", 6);
@@ -3755,7 +3769,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3755
3769
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_Template(rf, ctx) { if (rf & 1) {
3756
3770
  i0.ɵɵelementContainerStart(0);
3757
3771
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_td_1_Template, 4, 13, "td", 48);
3758
- i0.ɵɵelementStart(2, "td", 20);
3772
+ i0.ɵɵelementStart(2, "td", 22);
3759
3773
  i0.ɵɵtext(3);
3760
3774
  i0.ɵɵelementEnd();
3761
3775
  i0.ɵɵelementContainerEnd();
@@ -3787,7 +3801,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
3787
3801
  } }
3788
3802
  function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_Template(rf, ctx) { if (rf & 1) {
3789
3803
  i0.ɵɵelementStart(0, "tr");
3790
- i0.ɵɵelementStart(1, "td", 20);
3804
+ i0.ɵɵelementStart(1, "td", 22);
3791
3805
  i0.ɵɵtext(2, "SubTotal");
3792
3806
  i0.ɵɵelementEnd();
3793
3807
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_Template, 3, 2, "ng-container", 6);
@@ -3874,7 +3888,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_Template(rf, ctx) { if (
3874
3888
  i0.ɵɵproperty("ngIf", ctx_r8.tabularReport.rowGrouping.length === 1);
3875
3889
  } }
3876
3890
  function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_td_3_Template(rf, ctx) { if (rf & 1) {
3877
- i0.ɵɵelementStart(0, "td", 20);
3891
+ i0.ɵɵelementStart(0, "td", 22);
3878
3892
  i0.ɵɵtext(1, " - ");
3879
3893
  i0.ɵɵelementEnd();
3880
3894
  } if (rf & 2) {
@@ -3923,7 +3937,7 @@ function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_4_td_1
3923
3937
  i0.ɵɵtextInterpolate(total_r810);
3924
3938
  } }
3925
3939
  function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_4_td_1_Template(rf, ctx) { if (rf & 1) {
3926
- i0.ɵɵelementStart(0, "td", 20);
3940
+ i0.ɵɵelementStart(0, "td", 22);
3927
3941
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_4_td_1_span_1_Template, 3, 5, "span", 6);
3928
3942
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_4_td_1_span_2_Template, 3, 6, "span", 6);
3929
3943
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_4_td_1_span_3_Template, 2, 1, "span", 6);
@@ -3993,7 +4007,7 @@ function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_c
3993
4007
  i0.ɵɵtextInterpolate(total_r823);
3994
4008
  } }
3995
4009
  function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
3996
- i0.ɵɵelementStart(0, "td", 20);
4010
+ i0.ɵɵelementStart(0, "td", 22);
3997
4011
  i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_container_1_td_1_span_1_Template, 3, 5, "span", 6);
3998
4012
  i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_container_1_td_1_span_2_Template, 3, 6, "span", 6);
3999
4013
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_container_1_td_1_span_3_Template, 2, 1, "span", 6);
@@ -4022,7 +4036,7 @@ function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_c
4022
4036
  i0.ɵɵproperty("ngForOf", ctx_r820.tabularReport.grandTotal2);
4023
4037
  } }
4024
4038
  function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_container_2_td_1_Template(rf, ctx) { if (rf & 1) {
4025
- i0.ɵɵelementStart(0, "td", 20);
4039
+ i0.ɵɵelementStart(0, "td", 22);
4026
4040
  i0.ɵɵelementStart(1, "span");
4027
4041
  i0.ɵɵtext(2);
4028
4042
  i0.ɵɵelementEnd();
@@ -4057,7 +4071,7 @@ function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_Temp
4057
4071
  } }
4058
4072
  function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_Template(rf, ctx) { if (rf & 1) {
4059
4073
  i0.ɵɵelementStart(0, "tr");
4060
- i0.ɵɵelementStart(1, "td", 20);
4074
+ i0.ɵɵelementStart(1, "td", 22);
4061
4075
  i0.ɵɵtext(2, " Grand Total");
4062
4076
  i0.ɵɵelementEnd();
4063
4077
  i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_td_3_Template, 2, 2, "td", 17);
@@ -4415,7 +4429,7 @@ ColumnGroupViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Co
4415
4429
  } if (rf & 2) {
4416
4430
  let _t;
4417
4431
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contextMenu = _t.first);
4418
- } }, inputs: { tabularReport: "tabularReport", isEditable: "isEditable", x1ImageMediaUrl: "x1ImageMediaUrl", screenType: "screenType", drillThroughParentType: "drillThroughParentType", drillThroughFilterInput: "drillThroughFilterInput", parentRef: "parentRef", reportId: "reportId" }, features: [i0.ɵɵNgOnChangesFeature], decls: 10, vars: 8, consts: [["class", "column-grouping-table-container customscroll", 4, "ngIf"], [2, "visibility", "hidden", "position", "fixed", 3, "matMenuTriggerFor"], ["contextMenu", "matMenu"], ["id", "table-menu"], ["matMenuContent", ""], ["Aggregate", "matMenu"], [4, "ngIf"], ["class", "loader-spinner", 4, "ngIf"], [1, "column-grouping-table-container", "customscroll"], ["cdkDropListGroup", "", "style", "width:100%", 3, "border", "ngClass", "click", 4, "ngIf"], ["class", "flex justify-center items-center flex-col zero-records", 4, "ngIf"], ["cdkDropListGroup", "", 2, "width", "100%", 3, "ngClass", "click"], [3, "ngClass", 4, "ngIf"], [3, "background", "font-family", "font-size", "color", 4, "ngIf"], [3, "ngClass"], [4, "ngFor", "ngForOf"], ["cdkDropList", "", "cdkDropListOrientation", "horizontal", 1, "example-list", 3, "cdkDropListDropped"], ["class", "px-1.5\tpy-1.5", 3, "border", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "id", "contextmenu"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "border", "font-family", "background", "font-size", 4, "ngIf"], [1, "px-1.5", "py-1.5"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "color", "background", "border", "contextmenu", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "color", "background", "border", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "background", "color", "border", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "colSpan", "contextmenu"], [3, "ngSwitch"], [4, "ngSwitchCase"], [4, "ngSwitchDefault"], [1, "url", 3, "title", "click"], [1, "px-1.5", "py-1.5", 3, "colSpan"], [1, "px-1.5", "py-1.5", 3, "id"], [1, "tabular-report-tabel-th"], [1, "tabular-report-table-text"], ["class", "px-1.5\tpy-1.5", 3, "id", "color", "font-family", "background", "font-size", "border", "text-align", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "border", "font-family", "background", "font-size", 4, "ngIf"], ["colGrouping", "", 1, "px-1.5", "py-1.5"], [3, "ngStyle"], ["class", "px-1.5\tpy-1.5", 3, "font-family", "font-size", "color", "border", "text-align", "rowSpan", "background", "contextmenu", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "rowSpan", "contextmenu"], ["class", "px-1.5\tpy-1.5", 3, "font-family", "font-size", "background", "color", "border", "text-align", "contextmenu", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "contextmenu"], ["class", "px-1.5\tpy-1.5", 3, "background", "font-family", "font-size", "border", "color", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "border", "font-family", "background", "font-size", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "background", "font-family", "font-size", "border", "color", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "background", "font-family", "font-size", "color", "border", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "border", "background", "font-family", "font-size", "color", "text-align", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "border", "background", "font-family", "font-size", "color", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "border", "background", "font-family", "font-size", "color", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "font-family", "font-size", "color", "background", "border", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "border", "font-family", "background", 4, "ngFor", "ngForOf"], [1, "flex", "justify-center", "items-center", "flex-col", "zero-records"], ["mat-menu-item", "", 3, "matMenuTriggerFor", 4, "ngIf"], ["mat-menu-item", "", 3, "click"], ["mat-menu-item", "", 3, "click", 4, "ngIf"], ["mat-menu-item", "", 3, "matMenuTriggerFor"], [1, "aggregate-fun", 3, "ngModel", "ngModelChange", "change", "click"], ["_attr.widgetSubType", "", "", "", "", "date_range", "||", "", 1, "aggregate-fun", 3, "ngModel", "ngModelChange", "change", "click"], [1, "loader-spinner"], [3, "elementType"]], template: function ColumnGroupViewComponent_Template(rf, ctx) { if (rf & 1) {
4432
+ } }, inputs: { tabularReport: "tabularReport", isEditable: "isEditable", x1ImageMediaUrl: "x1ImageMediaUrl", screenType: "screenType", drillThroughParentType: "drillThroughParentType", drillThroughFilterInput: "drillThroughFilterInput", parentRef: "parentRef", reportId: "reportId" }, features: [i0.ɵɵNgOnChangesFeature], decls: 10, vars: 8, consts: [["class", "column-grouping-table-container customscroll", 4, "ngIf"], [2, "visibility", "hidden", "position", "fixed", 3, "matMenuTriggerFor"], ["contextMenu", "matMenu"], ["id", "table-menu"], ["matMenuContent", ""], ["Aggregate", "matMenu"], [4, "ngIf"], ["class", "loader-spinner", 4, "ngIf"], [1, "column-grouping-table-container", "customscroll"], ["cdkDropListGroup", "", "style", "width:100%", 3, "border", "ngClass", "click", 4, "ngIf"], ["class", "flex justify-center items-center flex-col zero-records", 4, "ngIf"], ["cdkDropListGroup", "", 2, "width", "100%", 3, "ngClass", "click"], [3, "ngClass", 4, "ngIf"], [3, "background", "font-family", "font-size", "color", 4, "ngIf"], [3, "ngClass"], [4, "ngFor", "ngForOf"], ["cdkDropList", "", "cdkDropListOrientation", "horizontal", 1, "example-list", 3, "cdkDropListDropped"], ["class", "px-1.5\tpy-1.5", 3, "border", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "id", "contextmenu"], [1, "tabular-report-tabel-th"], [1, "tabular-report-table-text"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "border", "font-family", "background", "font-size", 4, "ngIf"], [1, "px-1.5", "py-1.5"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "color", "background", "border", "contextmenu", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "color", "background", "border", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "background", "color", "border", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "colSpan", "contextmenu"], [3, "ngSwitch"], [4, "ngSwitchCase"], [4, "ngSwitchDefault"], [1, "url", 3, "title", "click"], [1, "px-1.5", "py-1.5", 3, "colSpan"], [1, "px-1.5", "py-1.5", 3, "id"], ["class", "px-1.5\tpy-1.5", 3, "id", "color", "font-family", "background", "font-size", "border", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "border", "font-family", "background", "font-size", 4, "ngIf"], ["colGrouping", "", 1, "px-1.5", "py-1.5"], [3, "ngStyle"], ["class", "px-1.5\tpy-1.5", 3, "font-family", "font-size", "color", "border", "text-align", "rowSpan", "background", "contextmenu", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "rowSpan", "contextmenu"], ["class", "px-1.5\tpy-1.5", 3, "font-family", "font-size", "background", "color", "border", "text-align", "contextmenu", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "contextmenu"], ["class", "px-1.5\tpy-1.5", 3, "background", "font-family", "font-size", "border", "color", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "border", "font-family", "background", "font-size", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "background", "font-family", "font-size", "border", "color", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "background", "font-family", "font-size", "color", "border", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "border", "background", "font-family", "font-size", "color", "text-align", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "border", "background", "font-family", "font-size", "color", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "border", "background", "font-family", "font-size", "color", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "font-family", "font-size", "color", "background", "border", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "border", "font-family", "background", 4, "ngFor", "ngForOf"], [1, "flex", "justify-center", "items-center", "flex-col", "zero-records"], ["mat-menu-item", "", 3, "matMenuTriggerFor", 4, "ngIf"], ["mat-menu-item", "", 3, "click"], ["mat-menu-item", "", 3, "click", 4, "ngIf"], ["mat-menu-item", "", 3, "matMenuTriggerFor"], [1, "aggregate-fun", 3, "ngModel", "ngModelChange", "change", "click"], ["_attr.widgetSubType", "", "", "", "", "date_range", "||", "", 1, "aggregate-fun", 3, "ngModel", "ngModelChange", "change", "click"], [1, "loader-spinner"], [3, "elementType"]], template: function ColumnGroupViewComponent_Template(rf, ctx) { if (rf & 1) {
4419
4433
  i0.ɵɵtemplate(0, ColumnGroupViewComponent_div_0_Template, 3, 2, "div", 0);
4420
4434
  i0.ɵɵelement(1, "div", 1);
4421
4435
  i0.ɵɵelementStart(2, "mat-menu", null, 2);
@@ -4440,7 +4454,7 @@ ColumnGroupViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Co
4440
4454
  } }, directives: [i5.NgIf, i6.MatMenuTrigger, i6.MatMenu, i6.MatMenuContent, i7.CdkDropListGroup, i5.NgClass, i5.NgForOf, i7.CdkDropList, i5.NgSwitch, i5.NgSwitchCase, i5.NgSwitchDefault, i5.NgStyle, i6.MatMenuItem, i8.MatCheckbox, i9.NgControlStatus, i9.NgModel, i10.GhostLoaderComponent], pipes: [i5.DatePipe, i5.CurrencyPipe, i11.AxoPercentagePipe], styles: ["lib-column-group-view{display:block;height:calc(100% - 6.7rem);min-height:calc(100% - 6.7rem);max-height:calc(100% - 6.7rem)}.tabular-report-tabel-th{display:flex}.tabular-report-tabel-th .mat-icon{max-height:10px;min-height:10px;font-size:10px}.tabular-report-tabel-th .tabular-report-table-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabular-report-tabel-th button{width:24px}.zero-records{height:calc(100% - 2.4rem);max-width:100%;position:sticky;left:0}.column-grouping-table-container{min-height:100%;max-height:100%;height:100%;width:100%;padding-top:0;padding-left:14px;padding-right:14px;z-index:99;bottom:1rem}.column-grouping-table-container table{width:99.5%!important;height:auto;border:none!important}.column-grouping-table-container table .thead{position:sticky;top:1px}.column-grouping-table-container table .thead th{position:relative;background-color:#f2f8ff;border-top:none!important;border-bottom:none!important;padding:0}.column-grouping-table-container table .thead th .resize-holder{cursor:col-resize!important;width:20px;height:100%;position:absolute;right:-10px;top:0;z-index:1}.column-grouping-table-container table .thead th:last-child{border-right:none!important}.column-grouping-table-container table .thead th:first-child{border-left:none!important}.column-grouping-table-container table .thead .sr-head{position:absolute;justify-content:center;inset:0;display:flex;align-items:center}.column-grouping-table-container table tbody td{padding-left:4px;padding-right:4px}.url:hover{color:#00f}.loader-spinner{justify-content:center;display:flex;position:sticky;top:50%;vertical-align:middle;margin:0}\n"], encapsulation: 2 });
4441
4455
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ColumnGroupViewComponent, [{
4442
4456
  type: Component,
4443
- args: [{ selector: 'lib-column-group-view', encapsulation: ViewEncapsulation.None, template: "<div class=\"column-grouping-table-container customscroll\" *ngIf='tabularReport.matrix.attributes[0].series.length!==0 && tabularReport.isDataLoaded'>\n <table\n (click)=\"tableSelect($event)\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n *ngIf=tabularReport cdkDropListGroup style=\"width:100%\" [ngClass]=\"{'mt-1': tabularReport.matrix.attributes.length>0 && tabularReport.matrix.attributes[0].series.length===0}\">\n <caption></caption>\n <tbody [ngClass]=\"{'shadow':tabularReport.tableStyle.border.shadow.enable}\"\n *ngIf=\"tabularReport.matrix.attributes.length>0\"\n >\n <ng-container *ngFor=\"let _attr of tabularReport.colGrouping; even as isEven;let m = index\">\n <ng-container>\n <tr *ngIf=\"m===0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowGrouping.length===2\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n ></td>\n <th [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"onContextMenu($event,i)\"\n [style.text-align]='attr.alignment'\n\n >{{_attr.label}}</th>\n\n <!-- to show single column grouping unique series -->\n <ng-container *ngFor='let data of _attr.uniqueSeries;let i= index'>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length===1\"\n [colSpan]=tabularReport.rowCount?tabularReport.colData.get(data)+1:tabularReport.colData.get(data)\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, _attr.series.indexOf(data))\">\n\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span >{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n\n </td>\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length>1 && tabularReport.integerArray.length>0\"\n [colSpan]=tabularReport.rowCount?tabularReport.colData.get(data)+tabularReport.secondColData.get(data).length:tabularReport.colData.get(data)\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span >{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length>1 && tabularReport.integerArray.length===0\"\n [colSpan]=\"tabularReport.secondColData.get(data).length\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >\n\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n\n </ng-container>\n <!-- grand total header -->\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.showGrandTotal\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n\n >\n Total\n </td>\n\n </tr>\n\n\n <tr *ngIf=\"m===1\">\n <!-- to show double column grouping header with series data -->\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowGrouping.length===2\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n ></td>\n <th [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='attr.alignment'\n >{{_attr.label}}</th>\n <ng-container *ngFor=\"let series of tabularReport.colGrouping[0].uniqueSeries \">\n\n <ng-container *ngFor=\"let data of tabularReport.secondColData.get(series) let x=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n <ng-container *ngIf=\"data\">\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n </ng-container>\n\n\n </ng-container>\n <td *ngIf=\"tabularReport.showGrandTotal\"\n class=\"px-1.5\tpy-1.5\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\">-</td>\n </tr>\n </ng-container>\n </ng-container>\n <tr cdkDropList cdkDropListOrientation=\"horizontal\" class=\"example-list\" (cdkDropListDropped)=\"drop($event)\">\n <!-- column headers -->\n <ng-container *ngFor=\"let attr of tabularReport.rowGrouping; even as isEven;let m = index\">\n <th\n [id]=\"th\"\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"onContextMenu($event,i)\"\n [style.text-align]='attr.alignment'\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">{{attr.label}}</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n </ng-container>\n\n <!-- to show integer column headers -->\n <ng-container *ngFor=\"let data of tabularReport.cloneDataCount; let m=index\" >\n <ng-container *ngFor=\"let attr of tabularReport.integerArray;let i=index\">\n <th\n [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='attr.alignment'\n >\n <span>{{attr}}</span>\n </th>\n </ng-container>\n <!-- row count header -->\n <th *ngIf=\"tabularReport.rowCount\"\n [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='attr.alignment'\n >\n Count\n </th>\n </ng-container>\n <!-- horizontal grand total headers -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <ng-container *ngFor=\"let attr of tabularReport.integerArray;let i=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n colGrouping\n\n >\n <span>{{attr}}</span>\n </td>\n </ng-container>\n <td *ngIf=\"tabularReport.rowCount\"\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n\n >\n Count\n </td>\n </ng-container>\n </tr>\n\n <ng-container *ngIf=\"tabularReport.rowGrouping.length>1\">\n <ng-container *ngFor=\"let data of tabularReport.matrix.attributes[0].series;let i = index; even as isEven; let data1\">\n <tr\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [ngStyle]=\"{ background: isEven ? tabularReport.tableStyle.rowStyle.oddColor: tabularReport.tableStyle.rowStyle.evenColor}\"\n [style.border]=\"tabularReport.tableStyle.border.width + ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n\n >\n <!-- series data -->\n <ng-container *ngFor=\"let _attr of tabularReport.matrix.attributes; even as isEven;let m = index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\" _attr.rowSpan && !_attr.cplSpan && _attr.cloneSeries && _attr.cloneSeries[i]!=='repeated' && m!==1\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n [rowSpan]='_attr.cloneGroupData[i]'\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n {{indexing(_attr.groupData[i],i)}}\n <div [ngSwitch]=\"_attr.widgetType\">\n <!-- when data type is number -->\n <span *ngSwitchCase=\"'int-widget'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"_attr.widgetSubType==='date_range' || _attr.widgetSubType==='datetime' || _attr.widgetSubType==='both'\">\n <span>{{moment(_attr.series[i]+'Z')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.series[i] && _attr.widgetSubType==='timestamp'\">\n <span >{{_attr.series[i]|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='time'\">\n <span *ngIf=\"_attr.series[i] \">{{moment(_attr.series[i],'hh:mm:ss')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='date'\">\n <span *ngIf=\"_attr.series[i] && _attr.widgetSubType==='date'\">{{_attr.series[i]|date:_attr.valueFormatting.date }}</span> </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"_attr.widgetSubType==='decimal'|| _attr.widgetSubType==='text' || _attr.widgetSubType==='string'\">\n {{_attr.series[i]}}\n </span>\n <span *ngIf=\"_attr.widgetSubType==='numeric'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n </span>\n\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- default case -->\n <span *ngSwitchDefault>{{_attr.series[i]}}</span>\n <!-- when series data is empty -->\n <span *ngIf='!_attr.series[i]'>-</span>\n\n </div>\n\n </td>\n </ng-container>\n <!-- when two rows grouped -->\n <ng-container *ngFor=\"let _attr of tabularReport.matrix.attributes; even as isEven;let m = index\">\n <ng-container>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\" tabularReport.rowGrouping.length>1 && m>0 && _attr.rowSpan && _attr.cloneSeries[i]!=='repeated'\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n <div [ngSwitch]=\"_attr.widgetType\">\n <!-- when data type is number -->\n <span *ngSwitchCase=\"'int-widget'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"_attr.widgetSubType==='datetime' || _attr.widgetSubType==='both'\">\n <span>{{moment(_attr.series[i]+'Z')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.series[i] && _attr.widgetSubType==='timestamp'\">\n <span >{{_attr.series[i]|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='time'\">\n <span *ngIf=\"_attr.series[i] \">{{moment(_attr.series[i],'hh:mm:ss')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='date'\">\n <span *ngIf=\"_attr.series[i] && _attr.widgetSubType==='date'\">{{moment(_attr.series[i],'YYYY-MM-dd')|date:_attr.valueFormatting.date }}</span> </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"_attr.widgetSubType==='decimal'|| _attr.widgetSubType==='text' || _attr.widgetSubType==='string' || _attr.widgetSubType==='date_range'\">\n {{_attr.series[i]}}\n </span>\n <span *ngIf=\"_attr.widgetSubType==='numeric'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n </span>\n\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- default case -->\n <span *ngSwitchDefault>{{_attr.series[i]}}</span>\n <!-- when series data is empty -->\n <span *ngIf='!_attr.series[i]'>-</span>\n\n <span *ngIf='_attr.series[i]'> ({{_attr.cloneGroupData[i]}})</span>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <!-- when rowCount is off -->\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of map.get(i); let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n\n\n <!-- to show side grand total -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i); let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n </ng-container>\n <!-- to show data with row count -->\n <ng-container *ngIf='tabularReport.rowCount'>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.dataRender.get(i) ;let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n\n\n </td>\n\n <ng-container *ngIf=\"tabularReport.integerArray.length===0 \">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <ng-container *ngIf=\"tabularReport.sideTotal.get(i) && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.totalRowCount.get(i) && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n >{{tabularReport.totalRowCount.get(i)}}</td>\n </ng-container>\n\n </ng-container>\n </tr>\n <!-- subtotal -->\n <tr *ngIf='tabularReport.subTotal && (attrGlobal===i) '>\n <ng-container *ngFor=\"let _attr of tabularReport.rowGrouping; even as isEven;let m = index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"m===0\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n >\n <span>Subtotal</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"m===1\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >-</td>\n </ng-container>\n\n <ng-container *ngFor=\"let data of tabularReport.colSubTotal.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n </ng-container>\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.countsSubTotal.get(i)\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{data}}\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideSubTotal.get(i) let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowCount\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.countSTotal.get(i)}}\n </td>\n </ng-container>\n </tr>\n </ng-container>\n\n </ng-container>\n\n\n <!-- when single row grouping is applied -->\n <ng-container *ngIf=\"tabularReport.rowGrouping.length===1\">\n <ng-container *ngFor=\"let data of tabularReport.matrix.attributes[0].uniqueSeries;let i = index; even as isEven; let data1\">\n <tr>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, tabularReport.matrix.attributes[0], i)\"\n >\n <span>{{data}}</span>\n <span *ngIf='!data'>-</span>\n </td>\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of map.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i); let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of tabularReport.dataRender.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class='px-1.5\tpy-1.5'\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.totalRowCount.get(i)}}\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <!-- when subtotal toggle is on -->\n <tr *ngIf=\"tabularReport.subTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >SubTotal</td>\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of map.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span></td>\n\n <!-- to show side grand total -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n </ng-container>\n <!-- to show row count -->\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.dataRender.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span></td>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.totalRowCount.get(i)}}\n </td>\n </ng-container>\n </ng-container>\n </tr>\n </ng-container>\n\n </ng-container>\n </tbody>\n <!-- Table footer for grand total -->\n <tfoot *ngIf=\"tabularReport.matrix.attributes.length>0\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n >\n <tr *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\">\n Grand Total</td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf='tabularReport.rowGrouping.length>1'\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n -\n </td>\n\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <td *ngFor=\"let total of tabularReport.grandTotal;let m=index\"\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.gTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency \">{{ total | currency:tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.gTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.percentage\">{{total| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.gTotalIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency\">{{total}}</span>\n <span *ngIf=\"!tabularReport.gTotalIntegerIndexing[m]\">{{total}}</span>\n </td>\n </ng-container>\n <!-- when row count toggle is on -->\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <ng-container *ngIf=\"tabularReport.integerArray.length>0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let total of tabularReport.grandTotal2;let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.countTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency \">{{ total | currency:tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.percentage\">{{total| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countTotalIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency\">{{total}}</span>\n <span *ngIf=\"!tabularReport.countTotalIntegerIndexing[m]\">{{total}}</span>\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let total of tabularReport.countsTotal;let i=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span>{{total}}</span>\n\n </td>\n\n </ng-container>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n <div class=\"flex justify-center items-center flex-col zero-records\" *ngIf=\"(tabularReport.matrix.attributes.length>0 && tabularReport.matrix.attributes[0].series.length===0)\">\n No records available\n </div>\n</div>\n\n<div style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\"\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"contextMenu\">\n</div>\n\n<!-- Mat Menu trigger for table columns-->\n<mat-menu #contextMenu=\"matMenu\">\n <div id=\"table-menu\">\n <ng-template matMenuContent let-item=\"reportData\">\n <button *ngIf=\"tabularReport.matrix.attributes.length>0 \"mat-menu-item [matMenuTriggerFor]=\"Aggregate\">Aggregate</button>\n <button mat-menu-item (click)=\"moveColumnLeft($event)\">Move Left</button>\n <button mat-menu-item (click)=\"moveColumnRight($event)\">Move Right</button>\n <button *ngIf=\"screenTypes.dashboardBuilder === screenType\" mat-menu-item (click)=\"removeFromDashboard()\">Remove From Dashboard</button>\n </ng-template>\n </div>\n</mat-menu>\n<!-- --------------------------------------------------------------------------- -->\n\n\n\n<!-- Mat menu trigger for Aggregation-->\n<mat-menu #Aggregate=\"matMenu\">\n <ng-template matMenuContent *ngIf='tabularReport.matrix.attributes.length>0'>\n <section>\n <p>\n <mat-checkbox class=\"aggregate-fun\" [(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showSum'\n (change)=\"sumAggregation($event)\" (click)=\"$event.stopPropagation()\">sum</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\" [(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showAvg'_attr.widgetSubType==='date_range' ||\n (change)=\"averageAggregation($event)\" (click)=\"$event.stopPropagation()\">Average</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\"[(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showMax'\n (change)=\"maxAggregation($event)\" (click)=\"$event.stopPropagation()\">Max</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\"[(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showMin'\n (change)=\"minAggregation($event)\"(click)=\"$event.stopPropagation()\">Min</mat-checkbox>\n </p>\n </section>\n </ng-template>\n</mat-menu>\n\n<div *ngIf=\"!tabularReport.isDataLoaded && tabularReport.matrix.attributes.length!==0\" class=\"loader-spinner\">\n <app-ghost-loader [elementType]=\"GhostLoaderType.TabularChartLoader\" ></app-ghost-loader>\n</div>\n<!-- <div *ngIf=\"!tabularReport.isDataLoaded && tabularReport.matrix.attributes.length!==0\" class=\"loader-spinner\"> -->\n <!-- <mat-spinner [diameter]=\"40\"></mat-spinner></div> -->\n", styles: ["lib-column-group-view{display:block;height:calc(100% - 6.7rem);min-height:calc(100% - 6.7rem);max-height:calc(100% - 6.7rem)}.tabular-report-tabel-th{display:flex}.tabular-report-tabel-th .mat-icon{max-height:10px;min-height:10px;font-size:10px}.tabular-report-tabel-th .tabular-report-table-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabular-report-tabel-th button{width:24px}.zero-records{height:calc(100% - 2.4rem);max-width:100%;position:sticky;left:0}.column-grouping-table-container{min-height:100%;max-height:100%;height:100%;width:100%;padding-top:0;padding-left:14px;padding-right:14px;z-index:99;bottom:1rem}.column-grouping-table-container table{width:99.5%!important;height:auto;border:none!important}.column-grouping-table-container table .thead{position:sticky;top:1px}.column-grouping-table-container table .thead th{position:relative;background-color:#f2f8ff;border-top:none!important;border-bottom:none!important;padding:0}.column-grouping-table-container table .thead th .resize-holder{cursor:col-resize!important;width:20px;height:100%;position:absolute;right:-10px;top:0;z-index:1}.column-grouping-table-container table .thead th:last-child{border-right:none!important}.column-grouping-table-container table .thead th:first-child{border-left:none!important}.column-grouping-table-container table .thead .sr-head{position:absolute;justify-content:center;inset:0;display:flex;align-items:center}.column-grouping-table-container table tbody td{padding-left:4px;padding-right:4px}.url:hover{color:#00f}.loader-spinner{justify-content:center;display:flex;position:sticky;top:50%;vertical-align:middle;margin:0}\n"] }]
4457
+ args: [{ selector: 'lib-column-group-view', encapsulation: ViewEncapsulation.None, template: "<div class=\"column-grouping-table-container customscroll\" *ngIf='tabularReport.matrix.attributes[0].series.length!==0 && tabularReport.isDataLoaded'>\n <table\n (click)=\"tableSelect($event)\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n *ngIf=tabularReport cdkDropListGroup style=\"width:100%\" [ngClass]=\"{'mt-1': tabularReport.matrix.attributes.length>0 && tabularReport.matrix.attributes[0].series.length===0}\">\n <caption></caption>\n <tbody [ngClass]=\"{'shadow':tabularReport.tableStyle.border.shadow.enable}\"\n *ngIf=\"tabularReport.matrix.attributes.length>0\"\n >\n <ng-container *ngFor=\"let _attr of tabularReport.colGrouping; even as isEven;let m = index\">\n <ng-container>\n <tr *ngIf=\"m===0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowGrouping.length===2\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n ></td>\n <th [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"onContextMenu($event,i)\"\n [style.text-align]='_attr.alignment'\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">{{_attr.label}}</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n\n <!-- to show single column grouping unique series -->\n <ng-container *ngFor='let data of _attr.uniqueSeries;let i= index'>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length===1\"\n [colSpan]=tabularReport.rowCount?tabularReport.colData.get(data)+1:tabularReport.colData.get(data)\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, _attr.series.indexOf(data))\">\n\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span >{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n\n </td>\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length>1 && tabularReport.integerArray.length>0\"\n [colSpan]=tabularReport.rowCount?tabularReport.colData.get(data)+tabularReport.secondColData.get(data).length:tabularReport.colData.get(data)\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span >{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length>1 && tabularReport.integerArray.length===0\"\n [colSpan]=\"tabularReport.secondColData.get(data).length\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >\n\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n\n </ng-container>\n <!-- grand total header -->\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.showGrandTotal\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n\n >\n Total\n </td>\n\n </tr>\n\n\n <tr *ngIf=\"m===1\">\n <!-- to show double column grouping header with series data -->\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowGrouping.length===2\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n ></td>\n <th [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">{{_attr.label}}</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n <ng-container *ngFor=\"let series of tabularReport.colGrouping[0].uniqueSeries \">\n\n <ng-container *ngFor=\"let data of tabularReport.secondColData.get(series) let x=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n <ng-container *ngIf=\"data\">\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n </ng-container>\n\n\n </ng-container>\n <td *ngIf=\"tabularReport.showGrandTotal\"\n class=\"px-1.5\tpy-1.5\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\">-</td>\n </tr>\n </ng-container>\n </ng-container>\n <tr cdkDropList cdkDropListOrientation=\"horizontal\" class=\"example-list\" (cdkDropListDropped)=\"drop($event)\">\n <!-- column headers -->\n <ng-container *ngFor=\"let attr of tabularReport.rowGrouping; even as isEven;let m = index\">\n <th\n [id]=\"th\"\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"onContextMenu($event,i)\"\n [style.text-align]='attr.alignment'\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">{{attr.label}}</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n </ng-container>\n\n <!-- to show integer column headers -->\n <ng-container *ngFor=\"let data of tabularReport.cloneDataCount; let m=index\" >\n <ng-container *ngFor=\"let attr of tabularReport.integerArray;let i=index\">\n <th\n [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='attr.alignment'\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">{{attr}}</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n </ng-container>\n <!-- row count header -->\n <th *ngIf=\"tabularReport.rowCount\"\n [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">Count</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n </ng-container>\n <!-- horizontal grand total headers -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <ng-container *ngFor=\"let attr of tabularReport.integerArray;let i=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n colGrouping\n\n >\n <span>{{attr}}</span>\n </td>\n </ng-container>\n <td *ngIf=\"tabularReport.rowCount\"\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n\n >\n Count\n </td>\n </ng-container>\n </tr>\n\n <ng-container *ngIf=\"tabularReport.rowGrouping.length>1\">\n <ng-container *ngFor=\"let data of tabularReport.matrix.attributes[0].series;let i = index; even as isEven; let data1\">\n <tr\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [ngStyle]=\"{ background: isEven ? tabularReport.tableStyle.rowStyle.oddColor: tabularReport.tableStyle.rowStyle.evenColor}\"\n [style.border]=\"tabularReport.tableStyle.border.width + ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n\n >\n <!-- series data -->\n <ng-container *ngFor=\"let _attr of tabularReport.matrix.attributes; even as isEven;let m = index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\" _attr.rowSpan && !_attr.cplSpan && _attr.cloneSeries && _attr.cloneSeries[i]!=='repeated' && m!==1\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n [rowSpan]='_attr.cloneGroupData[i]'\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n {{indexing(_attr.groupData[i],i)}}\n <div [ngSwitch]=\"_attr.widgetType\">\n <!-- when data type is number -->\n <span *ngSwitchCase=\"'int-widget'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"_attr.widgetSubType==='date_range' || _attr.widgetSubType==='datetime' || _attr.widgetSubType==='both'\">\n <span>{{moment(_attr.series[i]+'Z')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.series[i] && _attr.widgetSubType==='timestamp'\">\n <span >{{_attr.series[i]|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='time'\">\n <span *ngIf=\"_attr.series[i] \">{{moment(_attr.series[i],'hh:mm:ss')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='date'\">\n <span *ngIf=\"_attr.series[i] && _attr.widgetSubType==='date'\">{{_attr.series[i]|date:_attr.valueFormatting.date }}</span> </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"_attr.widgetSubType==='decimal'|| _attr.widgetSubType==='text' || _attr.widgetSubType==='string'\">\n {{_attr.series[i]}}\n </span>\n <span *ngIf=\"_attr.widgetSubType==='numeric'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n </span>\n\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- default case -->\n <span *ngSwitchDefault>{{_attr.series[i]}}</span>\n <!-- when series data is empty -->\n <span *ngIf='!_attr.series[i]'>-</span>\n\n </div>\n\n </td>\n </ng-container>\n <!-- when two rows grouped -->\n <ng-container *ngFor=\"let _attr of tabularReport.matrix.attributes; even as isEven;let m = index\">\n <ng-container>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\" tabularReport.rowGrouping.length>1 && m>0 && _attr.rowSpan && _attr.cloneSeries[i]!=='repeated'\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n <div [ngSwitch]=\"_attr.widgetType\">\n <!-- when data type is number -->\n <span *ngSwitchCase=\"'int-widget'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"_attr.widgetSubType==='datetime' || _attr.widgetSubType==='both'\">\n <span>{{moment(_attr.series[i]+'Z')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.series[i] && _attr.widgetSubType==='timestamp'\">\n <span >{{_attr.series[i]|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='time'\">\n <span *ngIf=\"_attr.series[i] \">{{moment(_attr.series[i],'hh:mm:ss')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='date'\">\n <span *ngIf=\"_attr.series[i] && _attr.widgetSubType==='date'\">{{moment(_attr.series[i],'YYYY-MM-dd')|date:_attr.valueFormatting.date }}</span> </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"_attr.widgetSubType==='decimal'|| _attr.widgetSubType==='text' || _attr.widgetSubType==='string' || _attr.widgetSubType==='date_range'\">\n {{_attr.series[i]}}\n </span>\n <span *ngIf=\"_attr.widgetSubType==='numeric'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n </span>\n\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- default case -->\n <span *ngSwitchDefault>{{_attr.series[i]}}</span>\n <!-- when series data is empty -->\n <span *ngIf='!_attr.series[i]'>-</span>\n\n <span *ngIf='_attr.series[i]'> ({{_attr.cloneGroupData[i]}})</span>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <!-- when rowCount is off -->\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of map.get(i); let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n\n\n <!-- to show side grand total -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i); let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n </ng-container>\n <!-- to show data with row count -->\n <ng-container *ngIf='tabularReport.rowCount'>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.dataRender.get(i) ;let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n\n\n </td>\n\n <ng-container *ngIf=\"tabularReport.integerArray.length===0 \">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <ng-container *ngIf=\"tabularReport.sideTotal.get(i) && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.totalRowCount.get(i) && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n >{{tabularReport.totalRowCount.get(i)}}</td>\n </ng-container>\n\n </ng-container>\n </tr>\n <!-- subtotal -->\n <tr *ngIf='tabularReport.subTotal && (attrGlobal===i) '>\n <ng-container *ngFor=\"let _attr of tabularReport.rowGrouping; even as isEven;let m = index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"m===0\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n >\n <span>Subtotal</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"m===1\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >-</td>\n </ng-container>\n\n <ng-container *ngFor=\"let data of tabularReport.colSubTotal.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n </ng-container>\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.countsSubTotal.get(i)\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{data}}\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideSubTotal.get(i) let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowCount\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.countSTotal.get(i)}}\n </td>\n </ng-container>\n </tr>\n </ng-container>\n\n </ng-container>\n\n\n <!-- when single row grouping is applied -->\n <ng-container *ngIf=\"tabularReport.rowGrouping.length===1\">\n <ng-container *ngFor=\"let data of tabularReport.matrix.attributes[0].uniqueSeries;let i = index; even as isEven; let data1\">\n <tr>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, tabularReport.matrix.attributes[0], i)\"\n >\n <span>{{data}}</span>\n <span *ngIf='!data'>-</span>\n </td>\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of map.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i); let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of tabularReport.dataRender.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class='px-1.5\tpy-1.5'\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.totalRowCount.get(i)}}\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <!-- when subtotal toggle is on -->\n <tr *ngIf=\"tabularReport.subTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >SubTotal</td>\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of map.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span></td>\n\n <!-- to show side grand total -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n </ng-container>\n <!-- to show row count -->\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.dataRender.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span></td>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.totalRowCount.get(i)}}\n </td>\n </ng-container>\n </ng-container>\n </tr>\n </ng-container>\n\n </ng-container>\n </tbody>\n <!-- Table footer for grand total -->\n <tfoot *ngIf=\"tabularReport.matrix.attributes.length>0\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n >\n <tr *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\">\n Grand Total</td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf='tabularReport.rowGrouping.length>1'\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n -\n </td>\n\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <td *ngFor=\"let total of tabularReport.grandTotal;let m=index\"\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.gTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency \">{{ total | currency:tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.gTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.percentage\">{{total| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.gTotalIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency\">{{total}}</span>\n <span *ngIf=\"!tabularReport.gTotalIntegerIndexing[m]\">{{total}}</span>\n </td>\n </ng-container>\n <!-- when row count toggle is on -->\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <ng-container *ngIf=\"tabularReport.integerArray.length>0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let total of tabularReport.grandTotal2;let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.countTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency \">{{ total | currency:tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.percentage\">{{total| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countTotalIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency\">{{total}}</span>\n <span *ngIf=\"!tabularReport.countTotalIntegerIndexing[m]\">{{total}}</span>\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let total of tabularReport.countsTotal;let i=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span>{{total}}</span>\n\n </td>\n\n </ng-container>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n <div class=\"flex justify-center items-center flex-col zero-records\" *ngIf=\"(tabularReport.matrix.attributes.length>0 && tabularReport.matrix.attributes[0].series.length===0)\">\n No records available\n </div>\n</div>\n\n<div style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\"\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"contextMenu\">\n</div>\n\n<!-- Mat Menu trigger for table columns-->\n<mat-menu #contextMenu=\"matMenu\">\n <div id=\"table-menu\">\n <ng-template matMenuContent let-item=\"reportData\">\n <button *ngIf=\"tabularReport.matrix.attributes.length>0 \"mat-menu-item [matMenuTriggerFor]=\"Aggregate\">Aggregate</button>\n <button mat-menu-item (click)=\"moveColumnLeft($event)\">Move Left</button>\n <button mat-menu-item (click)=\"moveColumnRight($event)\">Move Right</button>\n <button *ngIf=\"screenTypes.dashboardBuilder === screenType\" mat-menu-item (click)=\"removeFromDashboard()\">Remove From Dashboard</button>\n </ng-template>\n </div>\n</mat-menu>\n<!-- --------------------------------------------------------------------------- -->\n\n\n\n<!-- Mat menu trigger for Aggregation-->\n<mat-menu #Aggregate=\"matMenu\">\n <ng-template matMenuContent *ngIf='tabularReport.matrix.attributes.length>0'>\n <section>\n <p>\n <mat-checkbox class=\"aggregate-fun\" [(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showSum'\n (change)=\"sumAggregation($event)\" (click)=\"$event.stopPropagation()\">sum</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\" [(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showAvg'_attr.widgetSubType==='date_range' ||\n (change)=\"averageAggregation($event)\" (click)=\"$event.stopPropagation()\">Average</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\"[(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showMax'\n (change)=\"maxAggregation($event)\" (click)=\"$event.stopPropagation()\">Max</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\"[(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showMin'\n (change)=\"minAggregation($event)\"(click)=\"$event.stopPropagation()\">Min</mat-checkbox>\n </p>\n </section>\n </ng-template>\n</mat-menu>\n\n<div *ngIf=\"!tabularReport.isDataLoaded && tabularReport.matrix.attributes.length!==0\" class=\"loader-spinner\">\n <app-ghost-loader [elementType]=\"GhostLoaderType.TabularChartLoader\" ></app-ghost-loader>\n</div>\n<!-- <div *ngIf=\"!tabularReport.isDataLoaded && tabularReport.matrix.attributes.length!==0\" class=\"loader-spinner\"> -->\n <!-- <mat-spinner [diameter]=\"40\"></mat-spinner></div> -->\n", styles: ["lib-column-group-view{display:block;height:calc(100% - 6.7rem);min-height:calc(100% - 6.7rem);max-height:calc(100% - 6.7rem)}.tabular-report-tabel-th{display:flex}.tabular-report-tabel-th .mat-icon{max-height:10px;min-height:10px;font-size:10px}.tabular-report-tabel-th .tabular-report-table-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabular-report-tabel-th button{width:24px}.zero-records{height:calc(100% - 2.4rem);max-width:100%;position:sticky;left:0}.column-grouping-table-container{min-height:100%;max-height:100%;height:100%;width:100%;padding-top:0;padding-left:14px;padding-right:14px;z-index:99;bottom:1rem}.column-grouping-table-container table{width:99.5%!important;height:auto;border:none!important}.column-grouping-table-container table .thead{position:sticky;top:1px}.column-grouping-table-container table .thead th{position:relative;background-color:#f2f8ff;border-top:none!important;border-bottom:none!important;padding:0}.column-grouping-table-container table .thead th .resize-holder{cursor:col-resize!important;width:20px;height:100%;position:absolute;right:-10px;top:0;z-index:1}.column-grouping-table-container table .thead th:last-child{border-right:none!important}.column-grouping-table-container table .thead th:first-child{border-left:none!important}.column-grouping-table-container table .thead .sr-head{position:absolute;justify-content:center;inset:0;display:flex;align-items:center}.column-grouping-table-container table tbody td{padding-left:4px;padding-right:4px}.url:hover{color:#00f}.loader-spinner{justify-content:center;display:flex;position:sticky;top:50%;vertical-align:middle;margin:0}\n"] }]
4444
4458
  }], function () { return [{ type: i1.ReportBuilderMasterService }, { type: i2.FieldsListService }, { type: i3.TabularReportService }, { type: i4.DashboardBuilderService }]; }, { tabularReport: [{
4445
4459
  type: Input
4446
4460
  }], isEditable: [{
@@ -4461,4 +4475,4 @@ ColumnGroupViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Co
4461
4475
  type: ViewChild,
4462
4476
  args: [MatMenuTrigger]
4463
4477
  }] }); })();
4464
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWdyb3VwLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9lbmxpZ2h0ZW4tbGliL3JlcG9ydC90YWJ1bGFyLXJlcG9ydC90YWJ1bGFyL2NvbHVtbi1ncm91cC12aWV3L2NvbHVtbi1ncm91cC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9heC1jb21tb24tdWktbGliL3NyYy9saWIvZW5saWdodGVuLWxpYi9yZXBvcnQvdGFidWxhci1yZXBvcnQvdGFidWxhci9jb2x1bW4tZ3JvdXAtdmlldy9jb2x1bW4tZ3JvdXAtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUd0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JB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bUJBQW1CLENBQUMsS0FBaUIsRUFBRSxTQUF3QixFQUFFLENBQVM7UUFDeEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7O2dHQWxQVSx3QkFBd0I7MkVBQXhCLHdCQUF3Qjt1QkFXeEIsY0FBYzs7Ozs7UUNsQzNCLHlFQXdwQ007UUFFTix5QkFFTTtRQUdOLHlDQUFpQztRQUMvQiw4QkFBcUI7UUFDbkIseUZBS2M7UUFDaEIsaUJBQU07UUFDUixpQkFBVztRQU1YLHlDQUErQjtRQUM3Qix5RUFtQmM7UUFDaEIsaUJBQVc7UUFFWCx5RUFFTTs7O1FBdnNDcUQsbUhBQXdGO1FBMHBDbEcsZUFBb0M7UUFBcEMsaURBQW9DLGtDQUFBO1FBQy9DLHVDQUFpQztRQW9CeEMsZUFBOEM7UUFBOUMscUVBQThDO1FBc0J2RSxlQUErRTtRQUEvRSwwR0FBK0U7O3VGRDlxQ3hFLHdCQUF3QjtjQU5wQyxTQUFTOzJCQUNFLHVCQUF1QixpQkFHbkIsaUJBQWlCLENBQUMsSUFBSTtzTEFLM0IsYUFBYTtrQkFBckIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLHNCQUFzQjtrQkFBOUIsS0FBSztZQUNHLHVCQUF1QjtrQkFBL0IsS0FBSztZQUNHLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBR04sV0FBVztrQkFGVixTQUFTO21CQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgRWxlbWVudHNEdG8gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21tb24tZHRvL2VsZW1lbnRzLWR0byc7XG5pbXBvcnQgeyBSZXBvcnRCdWlsZGVyTWFzdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3JlcG9ydC1idWlsZGVyLW1hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYnVsYXJSZXBvcnQgfSBmcm9tICcuLi8uLi90YWJ1bGFyLXJlcG9ydCc7XG5pbXBvcnQgeyBUYWJ1bGFyUmVwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3RhYnVsYXItcmVwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRmllbGRzTGlzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9maWVsZC1saXN0LWxpYi9maWVsZHMtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbW1vbi11dGlscy9yZXBvcnQnO1xuaW1wb3J0IHsgQXR0cmlidXRlRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL2ZpZWxkcy9hdHRyaWJ1dGUtZGF0YSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Rhc2hib2FyZC1saWIvZGFzaGJvYXJkLWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTY3JlZW5UeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZW5saWdodGVuLWxpYi9maWx0ZXJzL2NvbmRpdGlvbi10eXBlJztcbmltcG9ydCB7IFRhYnVsYXJDb21wb25lbnQgfSBmcm9tICcuLi90YWJ1bGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBeEZpbHRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2ZpbHRlcnMvYXgtZmlsdGVyJztcbmltcG9ydCB7IEdob3N0TG9hZGVyVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2dob3N0LWxvYWRlci9naG9zdC1sb2FkZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNvbHVtbi1ncm91cC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi1ncm91cC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLWdyb3VwLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjpWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtbkdyb3VwVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuXG4gIEBJbnB1dCgpIHRhYnVsYXJSZXBvcnQ6IFRhYnVsYXJSZXBvcnQ7XG4gIEBJbnB1dCgpIGlzRWRpdGFibGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHgxSW1hZ2VNZWRpYVVybDogc3RyaW5nO1xuICBASW5wdXQoKSBzY3JlZW5UeXBlOiBTY3JlZW5UeXBlO1xuICBASW5wdXQoKSBkcmlsbFRocm91Z2hQYXJlbnRUeXBlOiBTY3JlZW5UeXBlO1xuICBASW5wdXQoKSBkcmlsbFRocm91Z2hGaWx0ZXJJbnB1dDogQXhGaWx0ZXI7XG4gIEBJbnB1dCgpIHBhcmVudFJlZjogVGFidWxhckNvbXBvbmVudDtcbiAgQElucHV0KCkgcmVwb3J0SWQ6IG51bWJlcjtcbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcilcblxuICBjb250ZXh0TWVudTogTWF0TWVudVRyaWdnZXI7XG4gIGNvbHVtbkRhdGE6IGFueTtcbiAgY29udGV4dE1lbnVQb3NpdGlvbiA9IHsgeDogJzBweCcsIHk6ICcwcHgnIH07XG4gIGN1cnJlbnRJbmRleDogbnVtYmVyO1xuICBfYXZnOiBib29sZWFuID0gZmFsc2U7XG4gIF9tYXg6IGJvb2xlYW4gPSBmYWxzZTtcbiAgX21pbjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93U3VtOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dNYXg6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd01pbjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93QXZnOiBib29sZWFuID0gZmFsc2U7XG4gIG1vbWVudDogYW55ID0gbW9tZW50O1xuICBpc0RpcnR5OiBib29sZWFuO1xuICByZXBvcnQ6IFJlcG9ydDtcbiAgYXR0ckdsb2JhbDogbnVtYmVyO1xuICBjb3VudDogbnVtYmVyO1xuICBjdDogbnVtYmVyO1xuICBjb2xTZXJpZXM6IG51bWJlcjtcbiAgYXR0cmlidXRlRGF0YUNsb25lOiBBcnJheTxBdHRyaWJ1dGVEYXRhPiA9IFtdO1xuICBtYXA6IE1hcDxudW1iZXIsIGFueT47XG4gIGlzRGF0YUxvYWRlZCA9IGZhbHNlO1xuICBmQ29sRGF0YTogQXJyYXk8c3RyaW5nPjtcbiAgR2hvc3RMb2FkZXJUeXBlID0gR2hvc3RMb2FkZXJUeXBlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yZXBvcnRCdWlsZGVyTWFzdGVyU2VydmljZTogUmVwb3J0QnVpbGRlck1hc3RlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZmllbGRzTGlzdFNlcnZpY2U6IEZpZWxkc0xpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3RhYnVsYXJSZXBvcnRTZXJ2aWNlOiBUYWJ1bGFyUmVwb3J0U2VydmljZSxcbiAgICBwcml2YXRlIF9kYXNoYm9hcmRCdWlsZGVyU2VydmljZTogRGFzaGJvYXJkQnVpbGRlclNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gdGhpcy50YWJ1bGFyUmVwb3J0PXRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLmNvbHVtbkRhdGEodGhpcy50YWJ1bGFyUmVwb3J0KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVwb3J0ID0gdGhpcy5fcmVwb3J0QnVpbGRlck1hc3RlclNlcnZpY2UucmVwb3J0O1xuXG4gICAgdGhpcy50YWJ1bGFyUmVwb3J0ID0gdGhpcy5fdGFidWxhclJlcG9ydFNlcnZpY2UuY29sdW1uRGF0YSh0aGlzLnRhYnVsYXJSZXBvcnQpO1xuXG4gICAgdGhpcy50YWJ1bGFyUmVwb3J0LmlzRGF0YUxvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZ2V0TWF0cml4RGltZW5zaW9uKCk7XG5cbiAgICB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS5kYXRhUmVuZGVyLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMubWFwID0gdmFsdWU7XG4gICAgICB0aGlzLnRhYnVsYXJSZXBvcnQuZmlyc3RDb2xEYXRhID0gdmFsdWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRNYXRyaXhEaW1lbnNpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkYXRhID0gbmV3IEVsZW1lbnRzRHRvKHRoaXMudGFidWxhclJlcG9ydCk7XG4gICAgICBkYXRhLnJlcG9ydElkID0gdGhpcy5yZXBvcnRJZDtcbiAgICAgIGRhdGEudHlwZSA9ICd0YWJ1bGFyLXJlcG9ydCc7XG4gICAgICBkYXRhLm9yZGVyQnkgPSB0aGlzLnRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmc7XG4gICAgICBkYXRhLnBhZ2VJbmRleCA9IDA7XG4gICAgICBkYXRhLnBhZ2VTaXplID0gMDtcbiAgICAgIGRhdGEucGFnZUxlbmd0aD0wO1xuICAgICAgaWYgKHRoaXMuZHJpbGxUaHJvdWdoUGFyZW50VHlwZSA9PSBTY3JlZW5UeXBlLmRhc2hib2FyZEJ1aWxkZXIgfHwgdGhpcy5kcmlsbFRocm91Z2hQYXJlbnRUeXBlID09IFNjcmVlblR5cGUuY29udGFpbmVyRGFzaGJvYXJkKSB7XG4gICAgICAgIGRhdGEuYXBpVHlwZSA9ICdkYXNoYm9hcmQnO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2NyZWVuVHlwZSA9PT0gU2NyZWVuVHlwZS5kcmlsbFRocm91Z2gpIHtcbiAgICAgICAgZGF0YS5maWx0ZXJzLmdsb2JhbEZpbHRlcnMuYmFzaWMucHVzaCh0aGlzLmRyaWxsVGhyb3VnaEZpbHRlcklucHV0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2ZpZWxkc0xpc3RTZXJ2aWNlLmdldE1hdHJpeERhdGEoZGF0YSkudGhlbigoZW50aXRpZXNBdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgaWYgKGVudGl0aWVzQXR0cmlidXRlICE9IG51bGwpIHtcbiAgICAgICAgICBlbnRpdGllc0F0dHJpYnV0ZS5tYXRyaXguYXR0cmlidXRlcy5zaG93U3VtID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMgPSBlbnRpdGllc0F0dHJpYnV0ZS5tYXRyaXguYXR0cmlidXRlcztcbiAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQgPSB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS5ncm91cERhdGEodGhpcy50YWJ1bGFyUmVwb3J0KTtcbiAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQuY29sR3JvdXBpbmcuZm9yRWFjaCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQgPSB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS5uZXdEYXRhKHRoaXMudGFidWxhclJlcG9ydCwgYXR0cmlidXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQgPSB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS5kYXRhRmFjdG9yeSh0aGlzLnRhYnVsYXJSZXBvcnQpO1xuICAgICAgICAgIGlmICh0aGlzLnRhYnVsYXJSZXBvcnQucm93Q291bnQgJiYgdGhpcy50YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGggPiAwKSB7IHRoaXMudGFidWxhclJlcG9ydCA9IHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLnJvd0NvdW50RGF0YSh0aGlzLnRhYnVsYXJSZXBvcnQpOyB9XG4gICAgICAgICAgdGhpcy50YWJ1bGFyUmVwb3J0LmlzRGF0YUxvYWRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0RhdGFMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmlzRGF0YUxvYWRlZCA9IHRydWU7XG4gICAgdGhpcy50YWJ1bGFyUmVwb3J0LmlzRGF0YUxvYWRlZCA9IHRydWU7XG4gIH1cblxuXG4gIC8vIGNvbnRleHQgbWVudSBmb3IgdGFibGUgY29sdW1uc1xuICBvbkNvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyLCBhdHRyOiBBdHRyaWJ1dGVEYXRhKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5jdXJyZW50SW5kZXggPSBpbmRleDtcbiAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24ueCA9IGV2ZW50LmNsaWVudFggKyAncHgnO1xuICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi55ID0gZXZlbnQuY2xpZW50WSArICdweCc7XG4gICAgdGhpcy5jb250ZXh0TWVudS5tZW51RGF0YSA9IHsgJ2F0dHInOiBhdHRyIH07XG4gICAgdGhpcy5jb250ZXh0TWVudS5tZW51LmZvY3VzRmlyc3RJdGVtKCdtb3VzZScpO1xuICAgIHRoaXMuY29udGV4dE1lbnUub3Blbk1lbnUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0byByZXR1cm5zIHN1bSBvZiByb3dzXG4gICAqXG4gICAqL1xuICBzdW0oc2VyaWVzOiBBcnJheTxzdHJpbmc+KTogbnVtYmVyIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAoY29uc3QgZGF0YSBvZiBzZXJpZXMpIHtcbiAgICAgIHRvdGFsICs9IE51bWJlcihkYXRhKTtcbiAgICB9XG4gICAgdGhpcy5yZXBvcnQuaXNEaXJ0eSA9IHRydWU7XG4gICAgcmV0dXJuIHRvdGFsO1xuICB9XG4gIC8qKlxuICAgKiB0byByZXR1cm5zIGF2ZXJhZ2Ugb2Ygcm93c1xuICAgKlxuICAgKi9cbiAgYXZnKHNlcmllczogQXJyYXk8c3RyaW5nPik6IG51bWJlciB7XG4gICAgbGV0IHRvdGFsID0gMDtcbiAgICBmb3IgKGNvbnN0IGRhdGEgb2Ygc2VyaWVzKSB7XG4gICAgICB0b3RhbCArPSBOdW1iZXIoZGF0YSk7XG4gICAgfVxuICAgIHRoaXMucmVwb3J0LmlzRGlydHkgPSB0cnVlO1xuICAgIHJldHVybiB0b3RhbCAvIHNlcmllcy5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogdG8gcmV0dXJucyBtYXhpbXVtIHZhbHVlIG9mIHJvd3NcbiAgICpcbiAgICovXG4gIG1heChzZXJpZXM6IEFycmF5PHN0cmluZz4pOiBudW1iZXIge1xuICAgIGNvbnN0IGEgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGRhdGEgb2Ygc2VyaWVzKSB7XG4gICAgICBhLnB1c2goTnVtYmVyKGRhdGEpKTtcbiAgICB9XG4gICAgdGhpcy5yZXBvcnQuaXNEaXJ0eSA9IHRydWU7XG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLmEpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRvIHJldHVybnMgbWluaW11bSB2YWx1ZSBvZiByb3dzXG4gICAqXG4gICAqL1xuICBtaW4oc2VyaWVzOiBBcnJheTxzdHJpbmc+KTogbnVtYmVyIHtcbiAgICBjb25zdCBhID0gW107XG4gICAgZm9yIChjb25zdCBkYXRhIG9mIHNlcmllcykge1xuICAgICAgYS5wdXNoKE51bWJlcihkYXRhKSk7XG4gICAgfVxuICAgIHRoaXMucmVwb3J0LmlzRGlydHkgPSB0cnVlO1xuICAgIHJldHVybiBNYXRoLm1pbiguLi5hKTtcbiAgfVxuXG4gIC8qKipcbiAgICogT24gY2hhcnQgY29udGV4dCAgY2xpY2sgZm9yIHN1bSBhZ2dyZWdhdGlvblxuICAgKi9cbiAgc3VtQWdncmVnYXRpb24ob2I6IE1hdENoZWNrYm94Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5zaG93U3VtID0gb2IuY2hlY2tlZDtcbiAgfVxuICAvKioqXG4gICAqIE9uIGNoYXJ0IGNvbnRleHQgIGNsaWNrIGZvciBhdmcgYWdncmVnYXRpb25cbiAgICovXG4gIGF2ZXJhZ2VBZ2dyZWdhdGlvbihvYjogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dBdmcgPSBvYi5jaGVja2VkO1xuICB9XG4gIC8qKipcbiAgICogT24gY2hhcnQgY29udGV4dCAgY2xpY2sgZm9yIG1heCBhZ2dyZWdhdGlvblxuICAgKi9cbiAgbWF4QWdncmVnYXRpb24ob2I6IE1hdENoZWNrYm94Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5zaG93TWF4ID0gb2IuY2hlY2tlZDtcbiAgfVxuICAvKioqXG4gICAqIE9uIGNoYXJ0IGNvbnRleHQgIGNsaWNrIGZvciBtaW4gYWdncmVnYXRpb25cbiAgICovXG4gIG1pbkFnZ3JlZ2F0aW9uKG9iOiBNYXRDaGVja2JveENoYW5nZSk6IHZvaWQge1xuICAgIHRoaXMuc2hvd01pbiA9IG9iLmNoZWNrZWQ7XG4gIH1cblxuXG4gIC8qKlxuICAgKiB0byBzZXQgaXNEaXJ0eSBhZnRlciBjaGFuZ2VzIGluIHRhYnVsYXIgcmVwb3J0IGZpbHRlclxuICAgKlxuICAgKi9cbiAgZGlydHlGbG93Q2hlY2tFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlcG9ydC5pc0RpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKnVzZWQgdG8gY3JlYXRlIGEgcm93IGZvciBzdWJ0b3RhbFxuICpcbiAqQHBhcmFtIG51bWJlclxuICpAcGFyYW0gbnVtYmVyXG4gKi9cbiAgaW5kZXhpbmcoY291bnRfOiBudW1iZXIsIGk6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3QgPSBjb3VudF87XG4gICAgaWYgKGNvdW50XyA9PT0gMSkge1xuICAgICAgdGhpcy5jb3VudCA9IDE7XG4gICAgICB0aGlzLmF0dHJHbG9iYWwgPSBpO1xuICAgIH1cbiAgICBpZiAoY291bnRfID4gMSkge1xuICAgICAgdGhpcy5hdHRyR2xvYmFsID0gKGNvdW50XyArIGkpIC0gMTtcbiAgICB9XG5cbiAgfVxuICAvKipcbiAgICogd2lsbCBlbWl0IHRhYmxlIHByb3BlcnRpZXMgb24gdGFibGUgY2xpY2sgdFxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHRhYmxlU2VsZWN0KGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS50YWJsZUNsaWNrRXZlbnQodGhpcy50YWJ1bGFyUmVwb3J0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0byByZWRpcmVjdCBtZWRpYSB1cmxcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSB1cmxcbiAgICovXG4gIHJlZGlyZWN0KGV2ZW50OiBLZXlib2FyZEV2ZW50LCB1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUZyb21EYXNoYm9hcmQoKTogdm9pZCB7XG4gICAgdGhpcy5fZGFzaGJvYXJkQnVpbGRlclNlcnZpY2UuZGVsZXRlRWxlbWVudC5lbWl0KHRoaXMudGFidWxhclJlcG9ydCk7XG4gIH1cblxuICBkcmlsbFRocm91Z2hDb250ZXh0KGV2ZW50OiBNb3VzZUV2ZW50LCBhdHRyaWJ1dGU6IEF0dHJpYnV0ZURhdGEsIGk6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFyZW50UmVmLmRyaWxsVGhyb3VnaENvbnRleHQoZXZlbnQsIGF0dHJpYnV0ZSwgYXR0cmlidXRlLnNlcmllcy5pbmRleE9mKGF0dHJpYnV0ZS51bmlxdWVTZXJpZXNbaV0pKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbHVtbi1ncm91cGluZy10YWJsZS1jb250YWluZXIgY3VzdG9tc2Nyb2xsXCIgKm5nSWY9J3RhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0uc2VyaWVzLmxlbmd0aCE9PTAgJiYgdGFidWxhclJlcG9ydC5pc0RhdGFMb2FkZWQnPlxuICA8dGFibGVcbiAgICAoY2xpY2spPVwidGFibGVTZWxlY3QoJGV2ZW50KVwiXG4gICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICpuZ0lmPXRhYnVsYXJSZXBvcnQgY2RrRHJvcExpc3RHcm91cCBzdHlsZT1cIndpZHRoOjEwMCVcIiBbbmdDbGFzc109XCJ7J210LTEnOiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aD4wICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0uc2VyaWVzLmxlbmd0aD09PTB9XCI+XG4gICAgPGNhcHRpb24+PC9jYXB0aW9uPlxuICAgIDx0Ym9keSAgW25nQ2xhc3NdPVwieydzaGFkb3cnOnRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuc2hhZG93LmVuYWJsZX1cIlxuICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aD4wXCJcbiAgICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IF9hdHRyIG9mIHRhYnVsYXJSZXBvcnQuY29sR3JvdXBpbmc7IGV2ZW4gYXMgaXNFdmVuO2xldCBtID0gaW5kZXhcIj5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICA8dHIgKm5nSWY9XCJtPT09MFwiPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGg9PT0yXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgID48L3RkPlxuICAgICAgICAgICAgPHRoIFtpZF09dGhcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uQ29udGV4dE1lbnUoJGV2ZW50LGkpXCJcbiAgICAgICAgICAgIFtzdHlsZS50ZXh0LWFsaWduXT0nYXR0ci5hbGlnbm1lbnQnXG5cbiAgICAgICAgICAgID57e19hdHRyLmxhYmVsfX08L3RoPlxuXG4gICAgICAgICAgICA8IS0tIHRvIHNob3cgc2luZ2xlIGNvbHVtbiBncm91cGluZyB1bmlxdWUgc2VyaWVzIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9J2xldCBkYXRhIG9mIF9hdHRyLnVuaXF1ZVNlcmllcztsZXQgaT0gaW5kZXgnPlxuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY29sR3JvdXBpbmcubGVuZ3RoPT09MVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbFNwYW5dPXRhYnVsYXJSZXBvcnQucm93Q291bnQ/dGFidWxhclJlcG9ydC5jb2xEYXRhLmdldChkYXRhKSsxOnRhYnVsYXJSZXBvcnQuY29sRGF0YS5nZXQoZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIF9hdHRyLCBfYXR0ci5zZXJpZXMuaW5kZXhPZihkYXRhKSlcIj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgIFtuZ1N3aXRjaF09XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIGRhdGV0aW1lIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZXBpY2tlci13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGV0aW1lJyB8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nYm90aCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3ttb21lbnQoZGF0YSsnWicpfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YSBcIj57e21vbWVudChkYXRhLCdoaDptbTpzcycpfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPnt7ZGF0YXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlX3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGF9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgdGV4dCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRib3gtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkZWNpbWFsJ3x8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0ZXh0JyB8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGF9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHdlYiBsaW5rICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2h5cGVybGluay13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCxkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBzaWduYXR1cmUgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInd2V0c2lnbmF0dXJlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHZpZGVvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3ZpZGVvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGF1ZGlvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2F1ZGlvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidmaWxldXBsb2FkLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaW1hZ2VjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGRlZmF1bHQgY2FzZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3tkYXRhfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPSchZGF0YSc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyAgMCB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3swIHwgIGF4b1BlcmNlbnRhZ2U6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS5zZXJpZXM6ICdkZXRhaWwnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57ezB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gc2VyaWVzIGRhdGEgaXMgZW1wdHkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlIT09J251bWVyaWMnXCI+LTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY29sR3JvdXBpbmcubGVuZ3RoPjEgJiYgdGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPjBcIlxuICAgICAgICAgICAgICAgICAgICBbY29sU3Bhbl09dGFidWxhclJlcG9ydC5yb3dDb3VudD90YWJ1bGFyUmVwb3J0LmNvbERhdGEuZ2V0KGRhdGEpK3RhYnVsYXJSZXBvcnQuc2Vjb25kQ29sRGF0YS5nZXQoZGF0YSkubGVuZ3RoOnRhYnVsYXJSZXBvcnQuY29sRGF0YS5nZXQoZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBbbmdTd2l0Y2hdPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZXBpY2tlci13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRldGltZScgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2JvdGgnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+e3ttb21lbnQoZGF0YSsnWicpfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGltZXN0YW1wJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEgXCI+e3ttb21lbnQoZGF0YSwnaGg6bW06c3MnKXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj57e2RhdGF8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlX3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIHRleHQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGV4dGJveC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkZWNpbWFsJ3x8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0ZXh0JyB8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS5zZXJpZXM6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHdlYiBsaW5rICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidoeXBlcmxpbmstd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LGRhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgc2lnbmF0dXJlIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3ZpZGVvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGF1ZGlvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhdWRpb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaW1hZ2VjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGRlZmF1bHQgY2FzZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj0nIWRhdGEnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyAgMCB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7MCB8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnZGV0YWlsJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7MH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIHNlcmllcyBkYXRhIGlzIGVtcHR5IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGUhPT0nbnVtZXJpYydcIj4tPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY29sR3JvdXBpbmcubGVuZ3RoPjEgJiYgdGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPT09MFwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xTcGFuXT1cInRhYnVsYXJSZXBvcnQuc2Vjb25kQ29sRGF0YS5nZXQoZGF0YSkubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBbbmdTd2l0Y2hdPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZXBpY2tlci13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRldGltZScgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2JvdGgnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21vbWVudChkYXRhKydaJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0aW1lc3RhbXAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEgXCI+e3ttb21lbnQoZGF0YSwnaGg6bW06c3MnKXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj57e2RhdGF8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlX3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIHRleHQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGV4dGJveC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkZWNpbWFsJ3x8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0ZXh0JyB8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS5zZXJpZXM6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHdlYiBsaW5rICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidoeXBlcmxpbmstd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LGRhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgc2lnbmF0dXJlIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3ZpZGVvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGF1ZGlvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhdWRpb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaW1hZ2VjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGRlZmF1bHQgY2FzZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj0nIWRhdGEnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyAgMCB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7MCB8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnZGV0YWlsJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7MH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIHNlcmllcyBkYXRhIGlzIGVtcHR5IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGUhPT0nbnVtZXJpYydcIj4tPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8IS0tIGdyYW5kIHRvdGFsIGhlYWRlciAtLT5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQuc2hvd0dyYW5kVG90YWxcIlxuICAgICAgICAgICAgW2NvbFNwYW5dPXRhYnVsYXJSZXBvcnQucm93Q291bnQ/dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoKzE6dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFRvdGFsXG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgIDwvdHI+XG5cblxuICAgICAgICA8dHIgKm5nSWY9XCJtPT09MVwiPlxuICAgICAgICAgIDwhLS0gdG8gc2hvdyBkb3VibGUgY29sdW1uIGdyb3VwaW5nIGhlYWRlciB3aXRoIHNlcmllcyBkYXRhIC0tPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGg9PT0yXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgPjwvdGQ+XG4gICAgICAgICAgPHRoIFtpZF09dGhcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09J2F0dHIuYWxpZ25tZW50J1xuICAgICAgICAgID57e19hdHRyLmxhYmVsfX08L3RoPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlcmllcyBvZiB0YWJ1bGFyUmVwb3J0LmNvbEdyb3VwaW5nWzBdLnVuaXF1ZVNlcmllcyBcIj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNlY29uZENvbERhdGEuZ2V0KHNlcmllcykgbGV0IHg9aW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICBbY29sU3Bhbl09dGFidWxhclJlcG9ydC5yb3dDb3VudD90YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGgrMTp0YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGhcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIF9hdHRyLCBpKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiAgW25nU3dpdGNoXT1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlcGlja2VyLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdib3RoJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21vbWVudChkYXRhKydaJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhIFwiPnt7bW9tZW50KGRhdGEsJ2hoOm1tOnNzJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3tkYXRhfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGVfcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyB0ZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGV4dGJveC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RlY2ltYWwnfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RleHQnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS5zZXJpZXM6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgd2ViIGxpbmsgIC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LGRhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHNpZ25hdHVyZSB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndmlkZW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgYXVkaW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYXVkaW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidpbWFnZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZGVmYXVsdCBjYXNlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFkYXRhJz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7ICAwIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57ezAgfCAgYXhvUGVyY2VudGFnZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnNlcmllczogJ2RldGFpbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7MH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBzZXJpZXMgZGF0YSBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGUhPT0nbnVtZXJpYydcIj4tPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW2NvbFNwYW5dPXRhYnVsYXJSZXBvcnQucm93Q291bnQ/dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoKzE6dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiPi08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0ciBjZGtEcm9wTGlzdCBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiIGNsYXNzPVwiZXhhbXBsZS1saXN0XCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgPCEtLSBjb2x1bW4gaGVhZGVycyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0ciBvZiB0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nOyBldmVuIGFzIGlzRXZlbjtsZXQgbSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICBbaWRdPVwidGhcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvbkNvbnRleHRNZW51KCRldmVudCxpKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdhdHRyLmFsaWdubWVudCdcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmVsLXRoXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmxlLXRleHRcIj57e2F0dHIubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ29udGV4dE1lbnUoJGV2ZW50LGkpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRhYi1kb3duLWFycm93XCIgc3ZnSWNvbj1cImhlcm9pY29uc19vdXRsaW5lOmNoZXZyb24tZG93blwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSB0byBzaG93IGludGVnZXIgY29sdW1uIGhlYWRlcnMgIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuY2xvbmVEYXRhQ291bnQ7IGxldCBtPWluZGV4XCIgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyIG9mIHRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5O2xldCBpPWluZGV4XCI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgIFtpZF09dGhcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdhdHRyLmFsaWdubWVudCdcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj57e2F0dHJ9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPCEtLSByb3cgY291bnQgaGVhZGVyIC0tPlxuICAgICAgICAgIDx0aCAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIlxuICAgICAgICAgIFtpZF09dGhcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09J2F0dHIuYWxpZ25tZW50J1xuICAgICAgICAgID5cbiAgICAgICAgICAgIENvdW50XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwhLS0gaG9yaXpvbnRhbCBncmFuZCB0b3RhbCBoZWFkZXJzIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyIG9mIHRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5O2xldCBpPWluZGV4XCI+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgY29sR3JvdXBpbmdcblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3thdHRyfX08L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0ZCAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIlxuICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG5cbiAgICAgICAgPlxuICAgICAgICAgIENvdW50XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aD4xXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0uc2VyaWVzO2xldCBpID0gaW5kZXg7IGV2ZW4gYXMgaXNFdmVuOyBsZXQgZGF0YTFcIj5cbiAgICAgICAgPHRyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogaXNFdmVuID8gdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnJvd1N0eWxlLm9kZENvbG9yOiB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUucm93U3R5bGUuZXZlbkNvbG9yfVwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoICsgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG5cbiAgICAgICAgICA+XG4gICAgICAgICAgPCEtLSAgc2VyaWVzIGRhdGEgIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IF9hdHRyIG9mIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXM7IGV2ZW4gYXMgaXNFdmVuO2xldCBtID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdJZj1cIiBfYXR0ci5yb3dTcGFuICYmICFfYXR0ci5jcGxTcGFuICYmIF9hdHRyLmNsb25lU2VyaWVzICYmIF9hdHRyLmNsb25lU2VyaWVzW2ldIT09J3JlcGVhdGVkJyAmJiBtIT09MVwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdfYXR0ci5hbGlnbm1lbnQnXG4gICAgICAgICAgICBbcm93U3Bhbl09J19hdHRyLmNsb25lR3JvdXBEYXRhW2ldJ1xuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIF9hdHRyLCBpKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICB7e2luZGV4aW5nKF9hdHRyLmdyb3VwRGF0YVtpXSxpKX19XG4gICAgICAgICAgICA8ZGl2ICBbbmdTd2l0Y2hdPVwiX2F0dHIud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIG51bWJlciAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidpbnQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IF9hdHRyLnNlcmllc1tpXSB8ICBjdXJyZW5jeTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e19hdHRyLnNlcmllc1tpXXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFfYXR0ci52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlcGlja2VyLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGVfcmFuZ2UnIHx8IF9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IF9hdHRyLndpZGdldFN1YlR5cGU9PT0nYm90aCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3ttb21lbnQoX2F0dHIuc2VyaWVzW2ldKydaJyl8ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2F0dHIuc2VyaWVzW2ldICYmICBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gPnt7X2F0dHIuc2VyaWVzW2ldfGRhdGU6X2F0dHIudmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0ndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci5zZXJpZXNbaV0gXCI+e3ttb21lbnQoX2F0dHIuc2VyaWVzW2ldLCdoaDptbTpzcycpfGRhdGU6X2F0dHIudmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci5zZXJpZXNbaV0gJiYgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPnt7X2F0dHIuc2VyaWVzW2ldfGRhdGU6X2F0dHIudmFsdWVGb3JtYXR0aW5nLmRhdGUgfX08L3NwYW4+ICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIHRleHQgLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0ZXh0Ym94LXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RlY2ltYWwnfHwgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSd0ZXh0JyB8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICAgICAge3tfYXR0ci5zZXJpZXNbaV19fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdudW1lcmljJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IF9hdHRyLnNlcmllc1tpXSB8ICBjdXJyZW5jeTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e19hdHRyLnNlcmllc1tpXXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFfYXR0ci52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB3ZWIgbGluayAgLS0+XG4gICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2h5cGVybGluay13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQsX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgc2lnbmF0dXJlIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3ZpZGVvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGF1ZGlvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhdWRpb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaW1hZ2VjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDwhLS0gZGVmYXVsdCBjYXNlIC0tPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIHdoZW4gc2VyaWVzIGRhdGEgaXMgZW1wdHkgLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFfYXR0ci5zZXJpZXNbaV0nPi08L3NwYW4+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwhLS0gd2hlbiB0d28gcm93cyBncm91cGVkIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBfYXR0ciBvZiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzOyBldmVuIGFzIGlzRXZlbjtsZXQgbSA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aD4xICYmIG0+MCAmJiBfYXR0ci5yb3dTcGFuICYmIF9hdHRyLmNsb25lU2VyaWVzW2ldIT09J3JlcGVhdGVkJ1wiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdfYXR0ci5hbGlnbm1lbnQnXG4gICAgICAgICAgKGNvbnRleHRtZW51KT1cImRyaWxsVGhyb3VnaENvbnRleHQoJGV2ZW50LCBfYXR0ciwgaSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8ZGl2ICBbbmdTd2l0Y2hdPVwiX2F0dHIud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyBudW1iZXIgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ludC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IF9hdHRyLnNlcmllc1tpXSB8ICBjdXJyZW5jeTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIF9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tfYXR0ci5zZXJpZXNbaV18ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICFfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIGRhdGV0aW1lIC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVwaWNrZXItd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGV0aW1lJyB8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J2JvdGgnXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e21vbWVudChfYXR0ci5zZXJpZXNbaV0rJ1onKXxkYXRlOl9hdHRyLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLnNlcmllc1tpXSAmJiAgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSd0aW1lc3RhbXAnXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiA+e3tfYXR0ci5zZXJpZXNbaV18ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLnNlcmllc1tpXSBcIj57e21vbWVudChfYXR0ci5zZXJpZXNbaV0sJ2hoOm1tOnNzJyl8ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLnNlcmllc1tpXSAmJiBfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3ttb21lbnQoX2F0dHIuc2VyaWVzW2ldLCdZWVlZLU1NLWRkJyl8ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZSB9fTwvc3Bhbj4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyB0ZXh0IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRib3gtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RlY2ltYWwnfHwgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSd0ZXh0JyB8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3N0cmluZycgfHwgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdkYXRlX3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAge3tfYXR0ci5zZXJpZXNbaV19fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IF9hdHRyLnNlcmllc1tpXSB8ICBjdXJyZW5jeTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIF9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tfYXR0ci5zZXJpZXNbaV18ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICFfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHdlYiBsaW5rICAtLT5cbiAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2h5cGVybGluay13aWRnZXQnXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LF9hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgc2lnbmF0dXJlIHdpZGdldCAtLT5cbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInd2V0c2lnbmF0dXJlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHZpZGVvIHdpZGdldCAtLT5cbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndmlkZW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgYXVkaW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhdWRpb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidmaWxldXBsb2FkLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidpbWFnZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IGNhc2UgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPCEtLSB3aGVuIHNlcmllcyBkYXRhIGlzIGVtcHR5IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj0nIV9hdHRyLnNlcmllc1tpXSc+LTwvc3Bhbj5cblxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9J19hdHRyLnNlcmllc1tpXSc+ICh7e19hdHRyLmNsb25lR3JvdXBEYXRhW2ldfX0pPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIHdoZW4gcm93Q291bnQgaXMgb2ZmIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgbWFwLmdldChpKTsgbGV0IG09aW5kZXhcIj5cbiAgICAgICAgPHRkXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuc2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICA+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgIDwhLS0gdG8gc2hvdyBzaWRlIGdyYW5kIHRvdGFsIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbCAgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1sxXS5jbG9uZVNlcmllc1tpXSE9PSdyZXBlYXRlZCdcIiA+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5zaWRlVG90YWwuZ2V0KGkpOyBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5jb2xvclwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPCEtLSB0byBzaG93IGRhdGEgd2l0aCByb3cgY291bnQgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj0ndGFidWxhclJlcG9ydC5yb3dDb3VudCc+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5kYXRhUmVuZGVyLmdldChpKSA7bGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuc2l6ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXVwiPnt7ZGF0YX19PC9zcGFuPlxuXG5cbiAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPT09MCBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5jb3VudHNEYXRhLmdldChpKVwiPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID4ge3tkYXRhfX08L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaWRlVG90YWwuZ2V0KGkpICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMV0uY2xvbmVTZXJpZXNbaV0hPT0ncmVwZWF0ZWQnXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5zaWRlVG90YWwuZ2V0KGkpIGxldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQudG90YWxSb3dDb3VudC5nZXQoaSkgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1sxXS5jbG9uZVNlcmllc1tpXSE9PSdyZXBlYXRlZCdcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgID57e3RhYnVsYXJSZXBvcnQudG90YWxSb3dDb3VudC5nZXQoaSl9fTwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdHI+XG4gICAgICA8IS0tIHN1YnRvdGFsIC0tPlxuICAgICAgICA8dHIgKm5nSWY9J3RhYnVsYXJSZXBvcnQuc3ViVG90YWwgICYmIChhdHRyR2xvYmFsPT09aSkgJz5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBfYXR0ciBvZiB0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nOyBldmVuIGFzIGlzRXZlbjtsZXQgbSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgKm5nSWY9XCJtPT09MFwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS50ZXh0LWFsaWduXT0nX2F0dHIuYWxpZ25tZW50J1xuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj5TdWJ0b3RhbDwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgKm5nSWY9XCJtPT09MVwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICA+LTwvdGQ+XG4gICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5jb2xTdWJUb3RhbC5nZXQoaSkgbGV0IG09aW5kZXhcIj5cbiAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPT09MFwiPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmNvdW50c1N1YlRvdGFsLmdldChpKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuc2lkZVN1YlRvdGFsLmdldChpKSBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e3RhYnVsYXJSZXBvcnQuY291bnRTVG90YWwuZ2V0KGkpfX1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgIDwhLS0gd2hlbiBzaW5nbGUgcm93IGdyb3VwaW5nIGlzIGFwcGxpZWQgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoPT09MVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzWzBdLnVuaXF1ZVNlcmllcztsZXQgaSA9IGluZGV4OyBldmVuIGFzIGlzRXZlbjsgbGV0IGRhdGExXCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0sIGkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPSchZGF0YSc+LTwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFidWxhclJlcG9ydC5yb3dDb3VudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBtYXAuZ2V0KGkpIGxldCBtPWluZGV4XCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuc2hvd0dyYW5kVG90YWxcIiA+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5zaWRlVG90YWwuZ2V0KGkpOyBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5kYXRhUmVuZGVyLmdldChpKSBsZXQgbT1pbmRleFwiPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXCI+e3tkYXRhfX08L3NwYW4+XG5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGg9PT0wXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5jb3VudHNEYXRhLmdldChpKVwiPlxuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgICA+IHt7ZGF0YX19PC90ZD5cblxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCIgPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9J3B4LTEuNVx0cHktMS41J1xuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e3RhYnVsYXJSZXBvcnQudG90YWxSb3dDb3VudC5nZXQoaSl9fVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPCEtLSB3aGVuIHN1YnRvdGFsIHRvZ2dsZSBpcyBvbiAtLT5cbiAgICAgICAgPHRyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zdWJUb3RhbFwiPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIiAgICAgICAgICA+U3ViVG90YWw8L3RkPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIG1hcC5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICA+XG5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+PC90ZD5cblxuICAgICAgICAgICAgPCEtLSB0byBzaG93IHNpZGUgZ3JhbmQgdG90YWwgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiID5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPCEtLSB0byBzaG93IHJvdyBjb3VudCAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuZGF0YVJlbmRlci5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXCI+e3tkYXRhfX08L3NwYW4+PC90ZD5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD09PTBcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuY291bnRzRGF0YS5nZXQoaSlcIj5cbiAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgPiB7e2RhdGF9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5zaWRlVG90YWwuZ2V0KGkpIGxldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e3RhYnVsYXJSZXBvcnQudG90YWxSb3dDb3VudC5nZXQoaSl9fVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3Rib2R5PlxuICAgIDwhLS0gIFRhYmxlIGZvb3RlciBmb3IgZ3JhbmQgdG90YWwgLS0+XG4gICAgPHRmb290ICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcy5sZW5ndGg+MFwiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgPlxuICAgICAgPHRyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiPlxuICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCI+XG4gICAgICAgICAgR3JhbmQgVG90YWw8L3RkPlxuICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAqbmdJZj0ndGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGg+MSdcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgIC1cbiAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFidWxhclJlcG9ydC5yb3dDb3VudFwiPlxuICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IHRvdGFsIG9mIHRhYnVsYXJSZXBvcnQuZ3JhbmRUb3RhbDtsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5nVG90YWxJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IHRvdGFsIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5nVG90YWxJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7dG90YWx8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5nVG90YWxJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7dG90YWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXVwiPnt7dG90YWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIHdoZW4gcm93IGNvdW50IHRvZ2dsZSBpcyBvbiAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dDb3VudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD4wXCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0b3RhbCBvZiB0YWJ1bGFyUmVwb3J0LmdyYW5kVG90YWwyO2xldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IHRvdGFsIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e3RvdGFsfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50VG90YWxJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3t0b3RhbH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmNvdW50VG90YWxJbnRlZ2VySW5kZXhpbmdbbV1cIj57e3RvdGFsfX08L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD09PTBcIj5cblxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0b3RhbCBvZiB0YWJ1bGFyUmVwb3J0LmNvdW50c1RvdGFsO2xldCBpPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7dG90YWx9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RyPlxuICAgIDwvdGZvb3Q+XG4gIDwvdGFibGU+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBmbGV4LWNvbCB6ZXJvLXJlY29yZHNcIiAqbmdJZj1cIih0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aD4wICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0uc2VyaWVzLmxlbmd0aD09PTApXCI+XG4gICAgTm8gcmVjb3JkcyBhdmFpbGFibGVcbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGZpeGVkXCIgW3N0eWxlLmxlZnRdPVwiY29udGV4dE1lbnVQb3NpdGlvbi54XCJcbiAgW3N0eWxlLnRvcF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnlcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29udGV4dE1lbnVcIj5cbjwvZGl2PlxuXG48IS0tIE1hdCBNZW51IHRyaWdnZXIgZm9yIHRhYmxlIGNvbHVtbnMtLT5cbjxtYXQtbWVudSAjY29udGV4dE1lbnU9XCJtYXRNZW51XCI+XG4gIDxkaXYgaWQ9XCJ0YWJsZS1tZW51XCI+XG4gICAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50IGxldC1pdGVtPVwicmVwb3J0RGF0YVwiPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoPjAgXCJtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJBZ2dyZWdhdGVcIj5BZ2dyZWdhdGU8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwibW92ZUNvbHVtbkxlZnQoJGV2ZW50KVwiPk1vdmUgTGVmdDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJtb3ZlQ29sdW1uUmlnaHQoJGV2ZW50KVwiPk1vdmUgUmlnaHQ8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJzY3JlZW5UeXBlcy5kYXNoYm9hcmRCdWlsZGVyID09PSBzY3JlZW5UeXBlXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicmVtb3ZlRnJvbURhc2hib2FyZCgpXCI+UmVtb3ZlIEZyb20gRGFzaGJvYXJkPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L21hdC1tZW51PlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG5cblxuXG48IS0tIE1hdCBtZW51IHRyaWdnZXIgZm9yICBBZ2dyZWdhdGlvbi0tPlxuPG1hdC1tZW51ICNBZ2dyZWdhdGU9XCJtYXRNZW51XCI+XG4gIDxuZy10ZW1wbGF0ZSBtYXRNZW51Q29udGVudCAqbmdJZj0ndGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcy5sZW5ndGg+MCc+XG4gICAgPHNlY3Rpb24+XG4gICAgICA8cD5cbiAgICAgICAgPG1hdC1jaGVja2JveCAgY2xhc3M9XCJhZ2dyZWdhdGUtZnVuXCIgWyhuZ01vZGVsKV09J3RhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbY3VycmVudEluZGV4XS5hZ2dyZWdhdGUuc2hvd1N1bSdcbiAgICAgICAgICAoY2hhbmdlKT1cInN1bUFnZ3JlZ2F0aW9uKCRldmVudClcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+c3VtPC9tYXQtY2hlY2tib3g+XG4gICAgICA8L3A+XG4gICAgICA8cD5cbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImFnZ3JlZ2F0ZS1mdW5cIiBbKG5nTW9kZWwpXT0ndGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1tjdXJyZW50SW5kZXhdLmFnZ3JlZ2F0ZS5zaG93QXZnJ19hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZV9yYW5nZScgfHxcbiAgICAgICAgICAoY2hhbmdlKT1cImF2ZXJhZ2VBZ2dyZWdhdGlvbigkZXZlbnQpXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPkF2ZXJhZ2U8L21hdC1jaGVja2JveD5cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwiYWdncmVnYXRlLWZ1blwiWyhuZ01vZGVsKV09J3RhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbY3VycmVudEluZGV4XS5hZ2dyZWdhdGUuc2hvd01heCdcbiAgICAgICAgICAoY2hhbmdlKT1cIm1heEFnZ3JlZ2F0aW9uKCRldmVudClcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+TWF4PC9tYXQtY2hlY2tib3g+XG4gICAgICA8L3A+XG4gICAgICA8cD5cbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImFnZ3JlZ2F0ZS1mdW5cIlsobmdNb2RlbCldPSd0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW2N1cnJlbnRJbmRleF0uYWdncmVnYXRlLnNob3dNaW4nXG4gICAgICAgICAgKGNoYW5nZSk9XCJtaW5BZ2dyZWdhdGlvbigkZXZlbnQpXCIoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+TWluPC9tYXQtY2hlY2tib3g+XG4gICAgICA8L3A+XG4gICAgPC9zZWN0aW9uPlxuICA8L25nLXRlbXBsYXRlPlxuPC9tYXQtbWVudT5cblxuPGRpdiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmlzRGF0YUxvYWRlZCAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aCE9PTBcIiBjbGFzcz1cImxvYWRlci1zcGlubmVyXCI+XG4gIDxhcHAtZ2hvc3QtbG9hZGVyIFtlbGVtZW50VHlwZV09XCJHaG9zdExvYWRlclR5cGUuVGFidWxhckNoYXJ0TG9hZGVyXCIgPjwvYXBwLWdob3N0LWxvYWRlcj5cbjwvZGl2PlxuPCEtLSA8ZGl2ICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoIT09MFwiIGNsYXNzPVwibG9hZGVyLXNwaW5uZXJcIj4gLS0+XG4gIDwhLS0gPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCI0MFwiPjwvbWF0LXNwaW5uZXI+PC9kaXY+IC0tPlxuIl19
4478
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWdyb3VwLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9lbmxpZ2h0ZW4tbGliL3JlcG9ydC90YWJ1bGFyLXJlcG9ydC90YWJ1bGFyL2NvbHVtbi1ncm91cC12aWV3L2NvbHVtbi1ncm91cC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9heC1jb21tb24tdWktbGliL3NyYy9saWIvZW5saWdodGVuLWxpYi9yZXBvcnQvdGFidWxhci1yZXBvcnQvdGFidWxhci9jb2x1bW4tZ3JvdXAtdmlldy9jb2x1bW4tZ3JvdXAtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUd0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JB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O2tCQUZWLFNBQVM7bUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBFbGVtZW50c0R0byB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbW1vbi1kdG8vZWxlbWVudHMtZHRvJztcbmltcG9ydCB7IFJlcG9ydEJ1aWxkZXJNYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcmVwb3J0LWJ1aWxkZXItbWFzdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFidWxhclJlcG9ydCB9IGZyb20gJy4uLy4uL3RhYnVsYXItcmVwb3J0JztcbmltcG9ydCB7IFRhYnVsYXJSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGFidWxhci1yZXBvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZHNMaXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ZpZWxkLWxpc3QtbGliL2ZpZWxkcy1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tbW9uLXV0aWxzL3JlcG9ydCc7XG5pbXBvcnQgeyBBdHRyaWJ1dGVEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzL2F0dHJpYnV0ZS1kYXRhJztcbmltcG9ydCB7IERhc2hib2FyZEJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGFzaGJvYXJkLWxpYi9kYXNoYm9hcmQtYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNjcmVlblR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9lbmxpZ2h0ZW4tbGliL2ZpbHRlcnMvY29uZGl0aW9uLXR5cGUnO1xuaW1wb3J0IHsgVGFidWxhckNvbXBvbmVudCB9IGZyb20gJy4uL3RhYnVsYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEF4RmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmlsdGVycy9heC1maWx0ZXInO1xuaW1wb3J0IHsgR2hvc3RMb2FkZXJUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZ2hvc3QtbG9hZGVyL2dob3N0LWxvYWRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY29sdW1uLWdyb3VwLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLWdyb3VwLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2x1bW4tZ3JvdXAtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOlZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uR3JvdXBWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG5cbiAgQElucHV0KCkgdGFidWxhclJlcG9ydDogVGFidWxhclJlcG9ydDtcbiAgQElucHV0KCkgaXNFZGl0YWJsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgeDFJbWFnZU1lZGlhVXJsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNjcmVlblR5cGU6IFNjcmVlblR5cGU7XG4gIEBJbnB1dCgpIGRyaWxsVGhyb3VnaFBhcmVudFR5cGU6IFNjcmVlblR5cGU7XG4gIEBJbnB1dCgpIGRyaWxsVGhyb3VnaEZpbHRlcklucHV0OiBBeEZpbHRlcjtcbiAgQElucHV0KCkgcGFyZW50UmVmOiBUYWJ1bGFyQ29tcG9uZW50O1xuICBASW5wdXQoKSByZXBvcnRJZDogbnVtYmVyO1xuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyKVxuXG4gIGNvbnRleHRNZW51OiBNYXRNZW51VHJpZ2dlcjtcbiAgY29sdW1uRGF0YTogYW55O1xuICBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAnMHB4JywgeTogJzBweCcgfTtcbiAgY3VycmVudEluZGV4OiBudW1iZXI7XG4gIF9hdmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgX21heDogYm9vbGVhbiA9IGZhbHNlO1xuICBfbWluOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dTdW06IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd01heDogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93TWluOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dBdmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbW9tZW50OiBhbnkgPSBtb21lbnQ7XG4gIGlzRGlydHk6IGJvb2xlYW47XG4gIHJlcG9ydDogUmVwb3J0O1xuICBhdHRyR2xvYmFsOiBudW1iZXI7XG4gIGNvdW50OiBudW1iZXI7XG4gIGN0OiBudW1iZXI7XG4gIGNvbFNlcmllczogbnVtYmVyO1xuICBhdHRyaWJ1dGVEYXRhQ2xvbmU6IEFycmF5PEF0dHJpYnV0ZURhdGE+ID0gW107XG4gIG1hcDogTWFwPG51bWJlciwgYW55PjtcbiAgaXNEYXRhTG9hZGVkID0gZmFsc2U7XG4gIGZDb2xEYXRhOiBBcnJheTxzdHJpbmc+O1xuICBHaG9zdExvYWRlclR5cGUgPSBHaG9zdExvYWRlclR5cGU7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3JlcG9ydEJ1aWxkZXJNYXN0ZXJTZXJ2aWNlOiBSZXBvcnRCdWlsZGVyTWFzdGVyU2VydmljZSxcbiAgICBwcml2YXRlIF9maWVsZHNMaXN0U2VydmljZTogRmllbGRzTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfdGFidWxhclJlcG9ydFNlcnZpY2U6IFRhYnVsYXJSZXBvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2Rhc2hib2FyZEJ1aWxkZXJTZXJ2aWNlOiBEYXNoYm9hcmRCdWlsZGVyU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyB0aGlzLnRhYnVsYXJSZXBvcnQ9dGhpcy5fdGFidWxhclJlcG9ydFNlcnZpY2UuY29sdW1uRGF0YSh0aGlzLnRhYnVsYXJSZXBvcnQpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXBvcnQgPSB0aGlzLl9yZXBvcnRCdWlsZGVyTWFzdGVyU2VydmljZS5yZXBvcnQ7XG5cbiAgICB0aGlzLnRhYnVsYXJSZXBvcnQgPSB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS5jb2x1bW5EYXRhKHRoaXMudGFidWxhclJlcG9ydCk7XG5cbiAgICB0aGlzLnRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkID0gZmFsc2U7XG4gICAgdGhpcy5nZXRNYXRyaXhEaW1lbnNpb24oKTtcblxuICAgIHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLmRhdGFSZW5kZXIuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy5tYXAgPSB2YWx1ZTtcbiAgICAgIHRoaXMudGFidWxhclJlcG9ydC5maXJzdENvbERhdGEgPSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE1hdHJpeERpbWVuc2lvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBuZXcgRWxlbWVudHNEdG8odGhpcy50YWJ1bGFyUmVwb3J0KTtcbiAgICAgIGRhdGEucmVwb3J0SWQgPSB0aGlzLnJlcG9ydElkO1xuICAgICAgZGF0YS50eXBlID0gJ3RhYnVsYXItcmVwb3J0JztcbiAgICAgIGRhdGEub3JkZXJCeSA9IHRoaXMudGFidWxhclJlcG9ydC5yb3dHcm91cGluZztcbiAgICAgIGRhdGEucGFnZUluZGV4ID0gMDtcbiAgICAgIGRhdGEucGFnZVNpemUgPSAwO1xuICAgICAgZGF0YS5wYWdlTGVuZ3RoPTA7XG4gICAgICBpZiAodGhpcy5kcmlsbFRocm91Z2hQYXJlbnRUeXBlID09IFNjcmVlblR5cGUuZGFzaGJvYXJkQnVpbGRlciB8fCB0aGlzLmRyaWxsVGhyb3VnaFBhcmVudFR5cGUgPT0gU2NyZWVuVHlwZS5jb250YWluZXJEYXNoYm9hcmQpIHtcbiAgICAgICAgZGF0YS5hcGlUeXBlID0gJ2Rhc2hib2FyZCc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zY3JlZW5UeXBlID09PSBTY3JlZW5UeXBlLmRyaWxsVGhyb3VnaCkge1xuICAgICAgICBkYXRhLmZpbHRlcnMuZ2xvYmFsRmlsdGVycy5iYXNpYy5wdXNoKHRoaXMuZHJpbGxUaHJvdWdoRmlsdGVySW5wdXQpO1xuICAgICAgfVxuICAgICAgdGhpcy5fZmllbGRzTGlzdFNlcnZpY2UuZ2V0TWF0cml4RGF0YShkYXRhKS50aGVuKChlbnRpdGllc0F0dHJpYnV0ZSkgPT4ge1xuICAgICAgICBpZiAoZW50aXRpZXNBdHRyaWJ1dGUgIT0gbnVsbCkge1xuICAgICAgICAgIGVudGl0aWVzQXR0cmlidXRlLm1hdHJpeC5hdHRyaWJ1dGVzLnNob3dTdW0gPSB0cnVlO1xuICAgICAgICAgIHRoaXMudGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcyA9IGVudGl0aWVzQXR0cmlidXRlLm1hdHJpeC5hdHRyaWJ1dGVzO1xuICAgICAgICAgIHRoaXMudGFidWxhclJlcG9ydCA9IHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLmdyb3VwRGF0YSh0aGlzLnRhYnVsYXJSZXBvcnQpO1xuICAgICAgICAgIHRoaXMudGFidWxhclJlcG9ydC5jb2xHcm91cGluZy5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFidWxhclJlcG9ydCA9IHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLm5ld0RhdGEodGhpcy50YWJ1bGFyUmVwb3J0LCBhdHRyaWJ1dGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMudGFidWxhclJlcG9ydCA9IHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLmRhdGFGYWN0b3J5KHRoaXMudGFidWxhclJlcG9ydCk7XG4gICAgICAgICAgaWYgKHRoaXMudGFidWxhclJlcG9ydC5yb3dDb3VudCAmJiB0aGlzLnRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aCA+IDApIHsgdGhpcy50YWJ1bGFyUmVwb3J0ID0gdGhpcy5fdGFidWxhclJlcG9ydFNlcnZpY2Uucm93Q291bnREYXRhKHRoaXMudGFidWxhclJlcG9ydCk7IH1cbiAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzRGF0YUxvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMudGFidWxhclJlcG9ydC5pc0RhdGFMb2FkZWQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNEYXRhTG9hZGVkID0gdHJ1ZTtcbiAgICB0aGlzLnRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkID0gdHJ1ZTtcbiAgfVxuXG5cbiAgLy8gY29udGV4dCBtZW51IGZvciB0YWJsZSBjb2x1bW5zXG4gIG9uQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIsIGF0dHI6IEF0dHJpYnV0ZURhdGEpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNFZGl0YWJsZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi54ID0gZXZlbnQuY2xpZW50WCArICdweCc7XG4gICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnkgPSBldmVudC5jbGllbnRZICsgJ3B4JztcbiAgICB0aGlzLmNvbnRleHRNZW51Lm1lbnVEYXRhID0geyAnYXR0cic6IGF0dHIgfTtcbiAgICB0aGlzLmNvbnRleHRNZW51Lm1lbnUuZm9jdXNGaXJzdEl0ZW0oJ21vdXNlJyk7XG4gICAgdGhpcy5jb250ZXh0TWVudS5vcGVuTWVudSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRvIHJldHVybnMgc3VtIG9mIHJvd3NcbiAgICpcbiAgICovXG4gIHN1bShzZXJpZXM6IEFycmF5PHN0cmluZz4pOiBudW1iZXIge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChjb25zdCBkYXRhIG9mIHNlcmllcykge1xuICAgICAgdG90YWwgKz0gTnVtYmVyKGRhdGEpO1xuICAgIH1cbiAgICB0aGlzLnJlcG9ydC5pc0RpcnR5ID0gdHJ1ZTtcbiAgICByZXR1cm4gdG90YWw7XG4gIH1cbiAgLyoqXG4gICAqIHRvIHJldHVybnMgYXZlcmFnZSBvZiByb3dzXG4gICAqXG4gICAqL1xuICBhdmcoc2VyaWVzOiBBcnJheTxzdHJpbmc+KTogbnVtYmVyIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAoY29uc3QgZGF0YSBvZiBzZXJpZXMpIHtcbiAgICAgIHRvdGFsICs9IE51bWJlcihkYXRhKTtcbiAgICB9XG4gICAgdGhpcy5yZXBvcnQuaXNEaXJ0eSA9IHRydWU7XG4gICAgcmV0dXJuIHRvdGFsIC8gc2VyaWVzLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiB0byByZXR1cm5zIG1heGltdW0gdmFsdWUgb2Ygcm93c1xuICAgKlxuICAgKi9cbiAgbWF4KHNlcmllczogQXJyYXk8c3RyaW5nPik6IG51bWJlciB7XG4gICAgY29uc3QgYSA9IFtdO1xuICAgIGZvciAoY29uc3QgZGF0YSBvZiBzZXJpZXMpIHtcbiAgICAgIGEucHVzaChOdW1iZXIoZGF0YSkpO1xuICAgIH1cbiAgICB0aGlzLnJlcG9ydC5pc0RpcnR5ID0gdHJ1ZTtcbiAgICByZXR1cm4gTWF0aC5tYXgoLi4uYSk7XG4gIH1cblxuICAvKipcbiAgICogdG8gcmV0dXJucyBtaW5pbXVtIHZhbHVlIG9mIHJvd3NcbiAgICpcbiAgICovXG4gIG1pbihzZXJpZXM6IEFycmF5PHN0cmluZz4pOiBudW1iZXIge1xuICAgIGNvbnN0IGEgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGRhdGEgb2Ygc2VyaWVzKSB7XG4gICAgICBhLnB1c2goTnVtYmVyKGRhdGEpKTtcbiAgICB9XG4gICAgdGhpcy5yZXBvcnQuaXNEaXJ0eSA9IHRydWU7XG4gICAgcmV0dXJuIE1hdGgubWluKC4uLmEpO1xuICB9XG5cbiAgLyoqKlxuICAgKiBPbiBjaGFydCBjb250ZXh0ICBjbGljayBmb3Igc3VtIGFnZ3JlZ2F0aW9uXG4gICAqL1xuICBzdW1BZ2dyZWdhdGlvbihvYjogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dTdW0gPSBvYi5jaGVja2VkO1xuICB9XG4gIC8qKipcbiAgICogT24gY2hhcnQgY29udGV4dCAgY2xpY2sgZm9yIGF2ZyBhZ2dyZWdhdGlvblxuICAgKi9cbiAgYXZlcmFnZUFnZ3JlZ2F0aW9uKG9iOiBNYXRDaGVja2JveENoYW5nZSk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0F2ZyA9IG9iLmNoZWNrZWQ7XG4gIH1cbiAgLyoqKlxuICAgKiBPbiBjaGFydCBjb250ZXh0ICBjbGljayBmb3IgbWF4IGFnZ3JlZ2F0aW9uXG4gICAqL1xuICBtYXhBZ2dyZWdhdGlvbihvYjogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dNYXggPSBvYi5jaGVja2VkO1xuICB9XG4gIC8qKipcbiAgICogT24gY2hhcnQgY29udGV4dCAgY2xpY2sgZm9yIG1pbiBhZ2dyZWdhdGlvblxuICAgKi9cbiAgbWluQWdncmVnYXRpb24ob2I6IE1hdENoZWNrYm94Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5zaG93TWluID0gb2IuY2hlY2tlZDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIHRvIHNldCBpc0RpcnR5IGFmdGVyIGNoYW5nZXMgaW4gdGFidWxhciByZXBvcnQgZmlsdGVyXG4gICAqXG4gICAqL1xuICBkaXJ0eUZsb3dDaGVja0V2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMucmVwb3J0LmlzRGlydHkgPSB0cnVlO1xuICB9XG5cbiAgLyoqdXNlZCB0byBjcmVhdGUgYSByb3cgZm9yIHN1YnRvdGFsXG4gKlxuICpAcGFyYW0gbnVtYmVyXG4gKkBwYXJhbSBudW1iZXJcbiAqL1xuICBpbmRleGluZyhjb3VudF86IG51bWJlciwgaTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jdCA9IGNvdW50XztcbiAgICBpZiAoY291bnRfID09PSAxKSB7XG4gICAgICB0aGlzLmNvdW50ID0gMTtcbiAgICAgIHRoaXMuYXR0ckdsb2JhbCA9IGk7XG4gICAgfVxuICAgIGlmIChjb3VudF8gPiAxKSB7XG4gICAgICB0aGlzLmF0dHJHbG9iYWwgPSAoY291bnRfICsgaSkgLSAxO1xuICAgIH1cblxuICB9XG4gIC8qKlxuICAgKiB3aWxsIGVtaXQgdGFibGUgcHJvcGVydGllcyBvbiB0YWJsZSBjbGljayB0XG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgdGFibGVTZWxlY3QoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLnRhYmxlQ2xpY2tFdmVudCh0aGlzLnRhYnVsYXJSZXBvcnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRvIHJlZGlyZWN0IG1lZGlhIHVybFxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICogQHBhcmFtIHVybFxuICAgKi9cbiAgcmVkaXJlY3QoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkge1xuICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRnJvbURhc2hib2FyZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9kYXNoYm9hcmRCdWlsZGVyU2VydmljZS5kZWxldGVFbGVtZW50LmVtaXQodGhpcy50YWJ1bGFyUmVwb3J0KTtcbiAgfVxuXG4gIGRyaWxsVGhyb3VnaENvbnRleHQoZXZlbnQ6IE1vdXNlRXZlbnQsIGF0dHJpYnV0ZTogQXR0cmlidXRlRGF0YSwgaTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYXJlbnRSZWYuZHJpbGxUaHJvdWdoQ29udGV4dChldmVudCwgYXR0cmlidXRlLCBhdHRyaWJ1dGUuc2VyaWVzLmluZGV4T2YoYXR0cmlidXRlLnVuaXF1ZVNlcmllc1tpXSkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sdW1uLWdyb3VwaW5nLXRhYmxlLWNvbnRhaW5lciBjdXN0b21zY3JvbGxcIiAqbmdJZj0ndGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1swXS5zZXJpZXMubGVuZ3RoIT09MCAmJiB0YWJ1bGFyUmVwb3J0LmlzRGF0YUxvYWRlZCc+XG4gIDx0YWJsZVxuICAgIChjbGljayk9XCJ0YWJsZVNlbGVjdCgkZXZlbnQpXCJcbiAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgKm5nSWY9dGFidWxhclJlcG9ydCBjZGtEcm9wTGlzdEdyb3VwIHN0eWxlPVwid2lkdGg6MTAwJVwiIFtuZ0NsYXNzXT1cInsnbXQtMSc6IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoPjAgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1swXS5zZXJpZXMubGVuZ3RoPT09MH1cIj5cbiAgICA8Y2FwdGlvbj48L2NhcHRpb24+XG4gICAgPHRib2R5ICBbbmdDbGFzc109XCJ7J3NoYWRvdyc6dGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5zaGFkb3cuZW5hYmxlfVwiXG4gICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoPjBcIlxuICAgICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgX2F0dHIgb2YgdGFidWxhclJlcG9ydC5jb2xHcm91cGluZzsgZXZlbiBhcyBpc0V2ZW47bGV0IG0gPSBpbmRleFwiPlxuICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgIDx0ciAqbmdJZj1cIm09PT0wXCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aD09PTJcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgPjwvdGQ+XG4gICAgICAgICAgICA8dGggW2lkXT10aFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25Db250ZXh0TWVudSgkZXZlbnQsaSlcIlxuICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdfYXR0ci5hbGlnbm1lbnQnXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJ1bGFyLXJlcG9ydC10YWJlbC10aFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFidWxhci1yZXBvcnQtdGFibGUtdGV4dFwiPnt7X2F0dHIubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNvbnRleHRNZW51KCRldmVudCxpKVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGFiLWRvd24tYXJyb3dcIiBzdmdJY29uPVwiaGVyb2ljb25zX291dGxpbmU6Y2hldnJvbi1kb3duXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgPCEtLSB0byBzaG93IHNpbmdsZSBjb2x1bW4gZ3JvdXBpbmcgdW5pcXVlIHNlcmllcyAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPSdsZXQgZGF0YSBvZiBfYXR0ci51bmlxdWVTZXJpZXM7bGV0IGk9IGluZGV4Jz5cbiAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvbEdyb3VwaW5nLmxlbmd0aD09PTFcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb2xTcGFuXT10YWJ1bGFyUmVwb3J0LnJvd0NvdW50P3RhYnVsYXJSZXBvcnQuY29sRGF0YS5nZXQoZGF0YSkrMTp0YWJ1bGFyUmVwb3J0LmNvbERhdGEuZ2V0KGRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNvbnRleHRtZW51KT1cImRyaWxsVGhyb3VnaENvbnRleHQoJGV2ZW50LCBfYXR0ciwgX2F0dHIuc2VyaWVzLmluZGV4T2YoZGF0YSkpXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBbbmdTd2l0Y2hdPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyBkYXRldGltZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVwaWNrZXItd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRldGltZScgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2JvdGgnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7bW9tZW50KGRhdGErJ1onKXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0aW1lc3RhbXAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEgXCI+e3ttb21lbnQoZGF0YSwnaGg6bW06c3MnKXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj57e2RhdGF8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZV9yYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIHRleHQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0ZXh0Ym94LXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGVjaW1hbCd8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGV4dCcgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdudW1lcmljJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnNlcmllczogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB3ZWIgbGluayAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidoeXBlcmxpbmstd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQsZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgc2lnbmF0dXJlIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3dldHNpZ25hdHVyZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB2aWRlbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid2aWRlb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBhdWRpbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhdWRpb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZmlsZXVwbG9hZC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IGNhc2UgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj0nIWRhdGEnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdudW1lcmljJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgIDAgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7MCB8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnZGV0YWlsJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3swfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIHNlcmllcyBkYXRhIGlzIGVtcHR5IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZSE9PSdudW1lcmljJ1wiPi08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvbEdyb3VwaW5nLmxlbmd0aD4xICYmIHRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD4wXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbFNwYW5dPXRhYnVsYXJSZXBvcnQucm93Q291bnQ/dGFidWxhclJlcG9ydC5jb2xEYXRhLmdldChkYXRhKSt0YWJ1bGFyUmVwb3J0LnNlY29uZENvbERhdGEuZ2V0KGRhdGEpLmxlbmd0aDp0YWJ1bGFyUmVwb3J0LmNvbERhdGEuZ2V0KGRhdGEpXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCIgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAgW25nU3dpdGNoXT1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIGRhdGV0aW1lIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVwaWNrZXItd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdib3RoJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPnt7bW9tZW50KGRhdGErJ1onKXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhIFwiPnt7bW9tZW50KGRhdGEsJ2hoOm1tOnNzJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3tkYXRhfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZV9yYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyB0ZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRib3gtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGVjaW1hbCd8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGV4dCcgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdudW1lcmljJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB3ZWIgbGluayAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCxkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHNpZ25hdHVyZSB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInd2V0c2lnbmF0dXJlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHZpZGVvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid2aWRlb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBhdWRpbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYXVkaW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidmaWxldXBsb2FkLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IGNhc2UgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFkYXRhJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgIDAgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57ezAgfCAgYXhvUGVyY2VudGFnZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnNlcmllczogJ2RldGFpbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57ezB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBzZXJpZXMgZGF0YSBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlIT09J251bWVyaWMnXCI+LTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvbEdyb3VwaW5nLmxlbmd0aD4xICYmIHRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD09PTBcIlxuICAgICAgICAgICAgICAgICAgICBbY29sU3Bhbl09XCJ0YWJ1bGFyUmVwb3J0LnNlY29uZENvbERhdGEuZ2V0KGRhdGEpLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCIgICAgICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAgW25nU3dpdGNoXT1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIGRhdGV0aW1lIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVwaWNrZXItd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdib3RoJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3ttb21lbnQoZGF0YSsnWicpfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGltZXN0YW1wJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhIFwiPnt7bW9tZW50KGRhdGEsJ2hoOm1tOnNzJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3tkYXRhfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZV9yYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyB0ZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRib3gtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGVjaW1hbCd8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGV4dCcgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdudW1lcmljJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB3ZWIgbGluayAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCxkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHNpZ25hdHVyZSB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInd2V0c2lnbmF0dXJlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHZpZGVvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid2aWRlb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBhdWRpbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYXVkaW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidmaWxldXBsb2FkLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IGNhc2UgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFkYXRhJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgIDAgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57ezAgfCAgYXhvUGVyY2VudGFnZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnNlcmllczogJ2RldGFpbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57ezB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBzZXJpZXMgZGF0YSBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlIT09J251bWVyaWMnXCI+LTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPCEtLSBncmFuZCB0b3RhbCBoZWFkZXIgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCJcbiAgICAgICAgICAgIFtjb2xTcGFuXT10YWJ1bGFyUmVwb3J0LnJvd0NvdW50P3RhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aCsxOnRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aFxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBUb3RhbFxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICA8L3RyPlxuXG5cbiAgICAgICAgPHRyICpuZ0lmPVwibT09PTFcIj5cbiAgICAgICAgICA8IS0tIHRvIHNob3cgZG91YmxlIGNvbHVtbiBncm91cGluZyBoZWFkZXIgd2l0aCBzZXJpZXMgZGF0YSAtLT5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoPT09MlwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgID48L3RkPlxuICAgICAgICAgIDx0aCBbaWRdPXRoXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdfYXR0ci5hbGlnbm1lbnQnXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmVsLXRoXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFidWxhci1yZXBvcnQtdGFibGUtdGV4dFwiPnt7X2F0dHIubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25Db250ZXh0TWVudSgkZXZlbnQsaSlcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0YWItZG93bi1hcnJvd1wiIHN2Z0ljb249XCJoZXJvaWNvbnNfb3V0bGluZTpjaGV2cm9uLWRvd25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlcmllcyBvZiB0YWJ1bGFyUmVwb3J0LmNvbEdyb3VwaW5nWzBdLnVuaXF1ZVNlcmllcyBcIj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNlY29uZENvbERhdGEuZ2V0KHNlcmllcykgbGV0IHg9aW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICBbY29sU3Bhbl09dGFidWxhclJlcG9ydC5yb3dDb3VudD90YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGgrMTp0YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGhcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIF9hdHRyLCBpKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiAgW25nU3dpdGNoXT1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlcGlja2VyLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdib3RoJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21vbWVudChkYXRhKydaJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhIFwiPnt7bW9tZW50KGRhdGEsJ2hoOm1tOnNzJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3tkYXRhfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGVfcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyB0ZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGV4dGJveC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RlY2ltYWwnfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RleHQnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS5zZXJpZXM6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgd2ViIGxpbmsgIC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LGRhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHNpZ25hdHVyZSB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndmlkZW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgYXVkaW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYXVkaW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidpbWFnZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZGVmYXVsdCBjYXNlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFkYXRhJz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7ICAwIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57ezAgfCAgYXhvUGVyY2VudGFnZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnNlcmllczogJ2RldGFpbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7MH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBzZXJpZXMgZGF0YSBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGUhPT0nbnVtZXJpYydcIj4tPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW2NvbFNwYW5dPXRhYnVsYXJSZXBvcnQucm93Q291bnQ/dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoKzE6dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiPi08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0ciBjZGtEcm9wTGlzdCBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiIGNsYXNzPVwiZXhhbXBsZS1saXN0XCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgPCEtLSBjb2x1bW4gaGVhZGVycyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0ciBvZiB0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nOyBldmVuIGFzIGlzRXZlbjtsZXQgbSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICBbaWRdPVwidGhcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvbkNvbnRleHRNZW51KCRldmVudCxpKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdhdHRyLmFsaWdubWVudCdcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmVsLXRoXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmxlLXRleHRcIj57e2F0dHIubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ29udGV4dE1lbnUoJGV2ZW50LGkpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRhYi1kb3duLWFycm93XCIgc3ZnSWNvbj1cImhlcm9pY29uc19vdXRsaW5lOmNoZXZyb24tZG93blwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSB0byBzaG93IGludGVnZXIgY29sdW1uIGhlYWRlcnMgIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuY2xvbmVEYXRhQ291bnQ7IGxldCBtPWluZGV4XCIgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyIG9mIHRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5O2xldCBpPWluZGV4XCI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgIFtpZF09dGhcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdhdHRyLmFsaWdubWVudCdcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFidWxhci1yZXBvcnQtdGFiZWwtdGhcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmxlLXRleHRcIj57e2F0dHJ9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNvbnRleHRNZW51KCRldmVudCxpKVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGFiLWRvd24tYXJyb3dcIiBzdmdJY29uPVwiaGVyb2ljb25zX291dGxpbmU6Y2hldnJvbi1kb3duXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIHJvdyBjb3VudCBoZWFkZXIgLS0+XG4gICAgICAgICAgPHRoICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dDb3VudFwiXG4gICAgICAgICAgW2lkXT10aFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFidWxhci1yZXBvcnQtdGFiZWwtdGhcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFidWxhci1yZXBvcnQtdGFibGUtdGV4dFwiPkNvdW50PC9zcGFuPlxuICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25Db250ZXh0TWVudSgkZXZlbnQsaSlcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGFiLWRvd24tYXJyb3dcIiBzdmdJY29uPVwiaGVyb2ljb25zX291dGxpbmU6Y2hldnJvbi1kb3duXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSBob3Jpem9udGFsIGdyYW5kIHRvdGFsIGhlYWRlcnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF0dHIgb2YgdGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXk7bGV0IGk9aW5kZXhcIj5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICBjb2xHcm91cGluZ1xuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57e2F0dHJ9fTwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHRkICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dDb3VudFwiXG4gICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcblxuICAgICAgICA+XG4gICAgICAgICAgQ291bnRcbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90cj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoPjFcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1swXS5zZXJpZXM7bGV0IGkgPSBpbmRleDsgZXZlbiBhcyBpc0V2ZW47IGxldCBkYXRhMVwiPlxuICAgICAgICA8dHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBpc0V2ZW4gPyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUucm93U3R5bGUub2RkQ29sb3I6IHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5yb3dTdHlsZS5ldmVuQ29sb3J9XCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGggKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcblxuICAgICAgICAgID5cbiAgICAgICAgICA8IS0tICBzZXJpZXMgZGF0YSAgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgX2F0dHIgb2YgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlczsgZXZlbiBhcyBpc0V2ZW47bGV0IG0gPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICpuZ0lmPVwiIF9hdHRyLnJvd1NwYW4gJiYgIV9hdHRyLmNwbFNwYW4gJiYgX2F0dHIuY2xvbmVTZXJpZXMgJiYgX2F0dHIuY2xvbmVTZXJpZXNbaV0hPT0ncmVwZWF0ZWQnICYmIG0hPT0xXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09J19hdHRyLmFsaWdubWVudCdcbiAgICAgICAgICAgIFtyb3dTcGFuXT0nX2F0dHIuY2xvbmVHcm91cERhdGFbaV0nXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJkcmlsbFRocm91Z2hDb250ZXh0KCRldmVudCwgX2F0dHIsIGkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIHt7aW5kZXhpbmcoX2F0dHIuZ3JvdXBEYXRhW2ldLGkpfX1cbiAgICAgICAgICAgIDxkaXYgIFtuZ1N3aXRjaF09XCJfYXR0ci53aWRnZXRUeXBlXCI+XG4gICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgbnVtYmVyIC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ludC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgX2F0dHIuc2VyaWVzW2ldIHwgIGN1cnJlbmN5Ol9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiBfYXR0ci52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7X2F0dHIuc2VyaWVzW2ldfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICFfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyBkYXRldGltZSAtLT5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVwaWNrZXItd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZV9yYW5nZScgfHwgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdkYXRldGltZScgfHwgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdib3RoJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21vbWVudChfYXR0ci5zZXJpZXNbaV0rJ1onKXxkYXRlOl9hdHRyLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfYXR0ci5zZXJpZXNbaV0gJiYgIF9hdHRyLndpZGdldFN1YlR5cGU9PT0ndGltZXN0YW1wJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiA+e3tfYXR0ci5zZXJpZXNbaV18ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2F0dHIud2lkZ2V0U3ViVHlwZT09PSd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLnNlcmllc1tpXSBcIj57e21vbWVudChfYXR0ci5zZXJpZXNbaV0sJ2hoOm1tOnNzJyl8ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLnNlcmllc1tpXSAmJiBfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3tfYXR0ci5zZXJpZXNbaV18ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZSB9fTwvc3Bhbj4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgdGV4dCAtLT5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRib3gtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGVjaW1hbCd8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3RleHQnIHx8IF9hdHRyLndpZGdldFN1YlR5cGU9PT0nc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICB7e19hdHRyLnNlcmllc1tpXX19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgX2F0dHIuc2VyaWVzW2ldIHwgIGN1cnJlbmN5Ol9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiBfYXR0ci52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7X2F0dHIuc2VyaWVzW2ldfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICFfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHdlYiBsaW5rICAtLT5cbiAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCxfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBzaWduYXR1cmUgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3dldHNpZ25hdHVyZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB2aWRlbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndmlkZW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgYXVkaW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2F1ZGlvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZmlsZXVwbG9hZC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidpbWFnZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IGNhc2UgLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBzZXJpZXMgZGF0YSBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj0nIV9hdHRyLnNlcmllc1tpXSc+LTwvc3Bhbj5cblxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSB3aGVuIHR3byByb3dzIGdyb3VwZWQgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IF9hdHRyIG9mIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXM7IGV2ZW4gYXMgaXNFdmVuO2xldCBtID0gaW5kZXhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoPjEgJiYgbT4wICYmIF9hdHRyLnJvd1NwYW4gJiYgX2F0dHIuY2xvbmVTZXJpZXNbaV0hPT0ncmVwZWF0ZWQnXCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09J19hdHRyLmFsaWdubWVudCdcbiAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIF9hdHRyLCBpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDxkaXYgIFtuZ1N3aXRjaF09XCJfYXR0ci53aWRnZXRUeXBlXCI+XG4gICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIG51bWJlciAtLT5cbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaW50LXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgX2F0dHIuc2VyaWVzW2ldIHwgIGN1cnJlbmN5Ol9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e19hdHRyLnNlcmllc1tpXXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZXBpY2tlci13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IF9hdHRyLndpZGdldFN1YlR5cGU9PT0nYm90aCdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7bW9tZW50KF9hdHRyLnNlcmllc1tpXSsnWicpfGRhdGU6X2F0dHIudmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2F0dHIuc2VyaWVzW2ldICYmICBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuID57e19hdHRyLnNlcmllc1tpXXxkYXRlOl9hdHRyLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0ndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIuc2VyaWVzW2ldIFwiPnt7bW9tZW50KF9hdHRyLnNlcmllc1tpXSwnaGg6bW06c3MnKXxkYXRlOl9hdHRyLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIuc2VyaWVzW2ldICYmIF9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj57e21vbWVudChfYXR0ci5zZXJpZXNbaV0sJ1lZWVktTU0tZGQnKXxkYXRlOl9hdHRyLnZhbHVlRm9ybWF0dGluZy5kYXRlIH19PC9zcGFuPiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIHRleHQgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGV4dGJveC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGVjaW1hbCd8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3RleHQnIHx8IF9hdHRyLndpZGdldFN1YlR5cGU9PT0nc3RyaW5nJyB8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGVfcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgICB7e19hdHRyLnNlcmllc1tpXX19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgX2F0dHIuc2VyaWVzW2ldIHwgIGN1cnJlbmN5Ol9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e19hdHRyLnNlcmllc1tpXXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgd2ViIGxpbmsgIC0tPlxuICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQsX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBzaWduYXR1cmUgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid2aWRlb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBhdWRpbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2F1ZGlvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8IS0tIGRlZmF1bHQgY2FzZSAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICA8IS0tIHdoZW4gc2VyaWVzIGRhdGEgaXMgZW1wdHkgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPSchX2F0dHIuc2VyaWVzW2ldJz4tPC9zcGFuPlxuXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj0nX2F0dHIuc2VyaWVzW2ldJz4gKHt7X2F0dHIuY2xvbmVHcm91cERhdGFbaV19fSk8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gd2hlbiByb3dDb3VudCBpcyBvZmYgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBtYXAuZ2V0KGkpOyBsZXQgbT1pbmRleFwiPlxuICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5zaXplXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG5cbiAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgPCEtLSB0byBzaG93IHNpZGUgZ3JhbmQgdG90YWwgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsICAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzWzFdLmNsb25lU2VyaWVzW2ldIT09J3JlcGVhdGVkJ1wiID5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSk7IGxldCBtPWluZGV4XCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIHRvIHNob3cgZGF0YSB3aXRoIHJvdyBjb3VudCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPSd0YWJ1bGFyUmVwb3J0LnJvd0NvdW50Jz5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmRhdGFSZW5kZXIuZ2V0KGkpIDtsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5zaXplXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXCI+e3tkYXRhfX08L3NwYW4+XG5cblxuICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGg9PT0wIFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmNvdW50c0RhdGEuZ2V0KGkpXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPiB7e2RhdGF9fTwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCIgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSkgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1sxXS5jbG9uZVNlcmllc1tpXSE9PSdyZXBlYXRlZCdcIj5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICpuZ0lmPVwidGFidWxhclJlcG9ydC50b3RhbFJvd0NvdW50LmdldChpKSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzWzFdLmNsb25lU2VyaWVzW2ldIT09J3JlcGVhdGVkJ1wiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgPnt7dGFidWxhclJlcG9ydC50b3RhbFJvd0NvdW50LmdldChpKX19PC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90cj5cbiAgICAgIDwhLS0gc3VidG90YWwgLS0+XG4gICAgICAgIDx0ciAqbmdJZj0ndGFidWxhclJlcG9ydC5zdWJUb3RhbCAgJiYgKGF0dHJHbG9iYWw9PT1pKSAnPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IF9hdHRyIG9mIHRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmc7IGV2ZW4gYXMgaXNFdmVuO2xldCBtID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdJZj1cIm09PT0wXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdfYXR0ci5hbGlnbm1lbnQnXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuPlN1YnRvdGFsPC9zcGFuPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdJZj1cIm09PT0xXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgID4tPC90ZD5cbiAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmNvbFN1YlRvdGFsLmdldChpKSBsZXQgbT1pbmRleFwiPlxuICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1cIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGg9PT0wXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuY291bnRzU3ViVG90YWwuZ2V0KGkpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5zaWRlU3ViVG90YWwuZ2V0KGkpIGxldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dDb3VudFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7dGFidWxhclJlcG9ydC5jb3VudFNUb3RhbC5nZXQoaSl9fVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPCEtLSB3aGVuIHNpbmdsZSByb3cgZ3JvdXBpbmcgaXMgYXBwbGllZCAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGg9PT0xXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0udW5pcXVlU2VyaWVzO2xldCBpID0gaW5kZXg7IGV2ZW4gYXMgaXNFdmVuOyBsZXQgZGF0YTFcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgIChjb250ZXh0bWVudSk9XCJkcmlsbFRocm91Z2hDb250ZXh0KCRldmVudCwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1swXSwgaSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFkYXRhJz4tPC9zcGFuPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIG1hcC5nZXQoaSkgbGV0IG09aW5kZXhcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiID5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSk7IGxldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dDb3VudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmRhdGFSZW5kZXIuZ2V0KGkpIGxldCBtPWluZGV4XCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1cIj57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD09PTBcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmNvdW50c0RhdGEuZ2V0KGkpXCI+XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAgID4ge3tkYXRhfX08L3RkPlxuXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuc2hvd0dyYW5kVG90YWxcIiA+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz0ncHgtMS41XHRweS0xLjUnXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuc2lkZVRvdGFsLmdldChpKSBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7dGFidWxhclJlcG9ydC50b3RhbFJvd0NvdW50LmdldChpKX19XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8IS0tIHdoZW4gc3VidG90YWwgdG9nZ2xlIGlzIG9uIC0tPlxuICAgICAgICA8dHIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnN1YlRvdGFsXCI+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiICAgICAgICAgID5TdWJUb3RhbDwvdGQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgbWFwLmdldChpKSBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgID5cblxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj48L3RkPlxuXG4gICAgICAgICAgICA8IS0tIHRvIHNob3cgc2lkZSBncmFuZCB0b3RhbCAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCIgPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuc2lkZVRvdGFsLmdldChpKSBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8IS0tIHRvIHNob3cgcm93IGNvdW50IC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5kYXRhUmVuZGVyLmdldChpKSBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1cIj57e2RhdGF9fTwvc3Bhbj48L3RkPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPT09MFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5jb3VudHNEYXRhLmdldChpKVwiPlxuICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgICAgICA+IHt7ZGF0YX19PC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuc2hvd0dyYW5kVG90YWxcIj5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG5cbiAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7dGFidWxhclJlcG9ydC50b3RhbFJvd0NvdW50LmdldChpKX19XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG4gICAgPCEtLSAgVGFibGUgZm9vdGVyIGZvciBncmFuZCB0b3RhbCAtLT5cbiAgICA8dGZvb3QgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aD4wXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5jb2xvclwiXG4gICAgICA+XG4gICAgICA8dHIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCI+XG4gICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIj5cbiAgICAgICAgICBHcmFuZCBUb3RhbDwvdGQ+XG4gICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICpuZ0lmPSd0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aD4xJ1xuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgLVxuICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgdG90YWwgb2YgdGFidWxhclJlcG9ydC5ncmFuZFRvdGFsO2xldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgdG90YWwgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5nVG90YWxJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3t0b3RhbHwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3t0b3RhbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dXCI+e3t0b3RhbH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwhLS0gd2hlbiByb3cgY291bnQgdG9nZ2xlIGlzIG9uIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPjBcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRvdGFsIG9mIHRhYnVsYXJSZXBvcnQuZ3JhbmRUb3RhbDI7bGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgdG90YWwgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50VG90YWxJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7dG90YWx8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e3RvdGFsfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXVwiPnt7dG90YWx9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPT09MFwiPlxuXG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRvdGFsIG9mIHRhYnVsYXJSZXBvcnQuY291bnRzVG90YWw7bGV0IGk9aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3t0b3RhbH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgPC90Zm9vdD5cbiAgPC90YWJsZT5cbiAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGZsZXgtY29sIHplcm8tcmVjb3Jkc1wiICpuZ0lmPVwiKHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoPjAgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1swXS5zZXJpZXMubGVuZ3RoPT09MClcIj5cbiAgICBObyByZWNvcmRzIGF2YWlsYWJsZVxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuOyBwb3NpdGlvbjogZml4ZWRcIiBbc3R5bGUubGVmdF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnhcIlxuICBbc3R5bGUudG9wXT1cImNvbnRleHRNZW51UG9zaXRpb24ueVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb250ZXh0TWVudVwiPlxuPC9kaXY+XG5cbjwhLS0gTWF0IE1lbnUgdHJpZ2dlciBmb3IgdGFibGUgY29sdW1ucy0tPlxuPG1hdC1tZW51ICNjb250ZXh0TWVudT1cIm1hdE1lbnVcIj5cbiAgPGRpdiBpZD1cInRhYmxlLW1lbnVcIj5cbiAgICA8bmctdGVtcGxhdGUgbWF0TWVudUNvbnRlbnQgbGV0LWl0ZW09XCJyZXBvcnREYXRhXCI+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcy5sZW5ndGg+MCBcIm1hdC1tZW51LWl0ZW0gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIkFnZ3JlZ2F0ZVwiPkFnZ3JlZ2F0ZTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJtb3ZlQ29sdW1uTGVmdCgkZXZlbnQpXCI+TW92ZSBMZWZ0PC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm1vdmVDb2x1bW5SaWdodCgkZXZlbnQpXCI+TW92ZSBSaWdodDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInNjcmVlblR5cGVzLmRhc2hib2FyZEJ1aWxkZXIgPT09IHNjcmVlblR5cGVcIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJyZW1vdmVGcm9tRGFzaGJvYXJkKClcIj5SZW1vdmUgRnJvbSBEYXNoYm9hcmQ8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cblxuXG5cbjwhLS0gTWF0IG1lbnUgdHJpZ2dlciBmb3IgIEFnZ3JlZ2F0aW9uLS0+XG48bWF0LW1lbnUgI0FnZ3JlZ2F0ZT1cIm1hdE1lbnVcIj5cbiAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50ICpuZ0lmPSd0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aD4wJz5cbiAgICA8c2VjdGlvbj5cbiAgICAgIDxwPlxuICAgICAgICA8bWF0LWNoZWNrYm94ICBjbGFzcz1cImFnZ3JlZ2F0ZS1mdW5cIiBbKG5nTW9kZWwpXT0ndGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1tjdXJyZW50SW5kZXhdLmFnZ3JlZ2F0ZS5zaG93U3VtJ1xuICAgICAgICAgIChjaGFuZ2UpPVwic3VtQWdncmVnYXRpb24oJGV2ZW50KVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5zdW08L21hdC1jaGVja2JveD5cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwiYWdncmVnYXRlLWZ1blwiIFsobmdNb2RlbCldPSd0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW2N1cnJlbnRJbmRleF0uYWdncmVnYXRlLnNob3dBdmcnX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdkYXRlX3JhbmdlJyB8fFxuICAgICAgICAgIChjaGFuZ2UpPVwiYXZlcmFnZUFnZ3JlZ2F0aW9uKCRldmVudClcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+QXZlcmFnZTwvbWF0LWNoZWNrYm94PlxuICAgICAgPC9wPlxuICAgICAgPHA+XG4gICAgICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJhZ2dyZWdhdGUtZnVuXCJbKG5nTW9kZWwpXT0ndGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1tjdXJyZW50SW5kZXhdLmFnZ3JlZ2F0ZS5zaG93TWF4J1xuICAgICAgICAgIChjaGFuZ2UpPVwibWF4QWdncmVnYXRpb24oJGV2ZW50KVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5NYXg8L21hdC1jaGVja2JveD5cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwiYWdncmVnYXRlLWZ1blwiWyhuZ01vZGVsKV09J3RhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbY3VycmVudEluZGV4XS5hZ2dyZWdhdGUuc2hvd01pbidcbiAgICAgICAgICAoY2hhbmdlKT1cIm1pbkFnZ3JlZ2F0aW9uKCRldmVudClcIihjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5NaW48L21hdC1jaGVja2JveD5cbiAgICAgIDwvcD5cbiAgICA8L3NlY3Rpb24+XG4gIDwvbmctdGVtcGxhdGU+XG48L21hdC1tZW51PlxuXG48ZGl2ICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoIT09MFwiIGNsYXNzPVwibG9hZGVyLXNwaW5uZXJcIj5cbiAgPGFwcC1naG9zdC1sb2FkZXIgW2VsZW1lbnRUeXBlXT1cIkdob3N0TG9hZGVyVHlwZS5UYWJ1bGFyQ2hhcnRMb2FkZXJcIiA+PC9hcHAtZ2hvc3QtbG9hZGVyPlxuPC9kaXY+XG48IS0tIDxkaXYgKm5nSWY9XCIhdGFidWxhclJlcG9ydC5pc0RhdGFMb2FkZWQgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcy5sZW5ndGghPT0wXCIgY2xhc3M9XCJsb2FkZXItc3Bpbm5lclwiPiAtLT5cbiAgPCEtLSA8bWF0LXNwaW5uZXIgW2RpYW1ldGVyXT1cIjQwXCI+PC9tYXQtc3Bpbm5lcj48L2Rpdj4gLS0+XG4iXX0=