@reusa/ngx-reusa-app-lib 0.0.1322 → 0.0.1324

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/esm2022/lib/components/add-employer/add-employer.component.mjs +196 -132
  2. package/esm2022/lib/components/add-participant/add-participant.component.mjs +29 -24
  3. package/esm2022/lib/components/add-payment/add-payment.component.mjs +45 -31
  4. package/esm2022/lib/components/address/address.component.mjs +97 -46
  5. package/esm2022/lib/components/bank-details/bank-details.component.mjs +139 -75
  6. package/esm2022/lib/components/contact-us/contact-us.component.mjs +42 -28
  7. package/esm2022/lib/components/email-update/email-update.component.mjs +119 -62
  8. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +165 -84
  9. package/esm2022/lib/components/footer/footer.component.mjs +23 -11
  10. package/esm2022/lib/components/header/header.component.mjs +163 -109
  11. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +29 -18
  12. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +22 -16
  13. package/esm2022/lib/components/job-title/job-title.component.mjs +20 -16
  14. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +389 -208
  15. package/esm2022/lib/components/lexis-nexis/lexis-nexis.component.mjs +83 -21
  16. package/esm2022/lib/components/menu/menu.component.mjs +63 -25
  17. package/esm2022/lib/components/mfa/mfa.component.mjs +155 -98
  18. package/esm2022/lib/components/mfa2/mfa2.component.mjs +54 -30
  19. package/esm2022/lib/components/money-expect/money-expect.component.mjs +31 -23
  20. package/esm2022/lib/components/profile/profile.component.mjs +34 -14
  21. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +17 -10
  22. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +80 -27
  23. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +29 -8
  24. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +172 -119
  25. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +122 -41
  26. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +7 -7
  27. package/esm2022/lib/components/search-employer/search-employer.component.mjs +10 -7
  28. package/esm2022/lib/components/security-question/security-question.component.mjs +19 -9
  29. package/esm2022/lib/components/select/select.component.mjs +10 -5
  30. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +72 -52
  31. package/esm2022/lib/components/user-login/user-login.component.mjs +116 -82
  32. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +69 -47
  33. package/esm2022/lib/models/questionnaire/ComboModel.mjs +480 -1
  34. package/esm2022/lib/pages/common/login/login.component.mjs +7 -2
  35. package/esm2022/lib/pages/popovers/language/language.page.mjs +2 -1
  36. package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +2 -2
  37. package/esm2022/lib/validations/AppValidators.mjs +9 -9
  38. package/fesm2022/reusa-ngx-reusa-app-lib.mjs +3103 -1492
  39. package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
  40. package/lib/components/add-employer/add-employer.component.d.ts +22 -73
  41. package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
  42. package/lib/components/add-participant/add-participant.component.d.ts +4 -1
  43. package/lib/components/add-participant/add-participant.component.d.ts.map +1 -1
  44. package/lib/components/add-payment/add-payment.component.d.ts +1 -2
  45. package/lib/components/add-payment/add-payment.component.d.ts.map +1 -1
  46. package/lib/components/address/address.component.d.ts +10 -1
  47. package/lib/components/address/address.component.d.ts.map +1 -1
  48. package/lib/components/bank-details/bank-details.component.d.ts +17 -1
  49. package/lib/components/bank-details/bank-details.component.d.ts.map +1 -1
  50. package/lib/components/contact-us/contact-us.component.d.ts +4 -1
  51. package/lib/components/contact-us/contact-us.component.d.ts.map +1 -1
  52. package/lib/components/email-update/email-update.component.d.ts +6 -1
  53. package/lib/components/email-update/email-update.component.d.ts.map +1 -1
  54. package/lib/components/employer-grid/employer-grid.component.d.ts +6 -24
  55. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
  56. package/lib/components/footer/footer.component.d.ts.map +1 -1
  57. package/lib/components/header/header.component.d.ts +3 -0
  58. package/lib/components/header/header.component.d.ts.map +1 -1
  59. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts +3 -1
  60. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts.map +1 -1
  61. package/lib/components/job-title/job-title.component.d.ts +3 -1
  62. package/lib/components/job-title/job-title.component.d.ts.map +1 -1
  63. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +5 -1
  64. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -1
  65. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts.map +1 -1
  66. package/lib/components/menu/menu.component.d.ts +11 -1
  67. package/lib/components/menu/menu.component.d.ts.map +1 -1
  68. package/lib/components/mfa/mfa.component.d.ts +6 -1
  69. package/lib/components/mfa/mfa.component.d.ts.map +1 -1
  70. package/lib/components/profile/profile.component.d.ts.map +1 -1
  71. package/lib/components/questionnaire/common-success/common-success.page.d.ts +1 -0
  72. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
  73. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  74. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
  75. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts +5 -1
  76. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts.map +1 -1
  77. package/lib/components/user-login/user-login.component.d.ts +7 -1
  78. package/lib/components/user-login/user-login.component.d.ts.map +1 -1
  79. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +7 -1
  80. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
  81. package/lib/models/questionnaire/ComboModel.d.ts +80 -0
  82. package/lib/models/questionnaire/ComboModel.d.ts.map +1 -1
  83. package/lib/pages/common/login/login.component.d.ts.map +1 -1
  84. package/lib/pages/popovers/language/language.page.d.ts.map +1 -1
  85. package/lib/validations/AppValidators.d.ts +8 -8
  86. package/lib/validations/AppValidators.d.ts.map +1 -1
  87. package/package.json +1 -1
@@ -27,11 +27,10 @@ function CommonSuccessPage_app_multi_questionnaire_4_Template(rf, ctx) { if (rf
27
27
  const _r4 = i0.ɵɵgetCurrentView();
28
28
  i0.ɵɵelementStart(0, "app-multi-questionnaire", 5);
29
29
  i0.ɵɵlistener("onComplete", function CommonSuccessPage_app_multi_questionnaire_4_Template_app_multi_questionnaire_onComplete_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.quSuccess()); });
30
- i0.ɵɵpipe(1, "translate");
31
30
  i0.ɵɵelementEnd();
32
31
  } if (rf & 2) {
33
32
  const ctx_r0 = i0.ɵɵnextContext();
34
- i0.ɵɵproperty("qeQueryModels", ctx_r0.qeQueryModels)("showClose", false)("header", i0.ɵɵpipeBind1(1, 4, "Follow up Questions"))("showQuestionNumber", true);
33
+ i0.ɵɵproperty("qeQueryModels", ctx_r0.qeQueryModels)("showClose", false)("header", ctx_r0.popUpHeader)("showQuestionNumber", true);
35
34
  } }
36
35
  function CommonSuccessPage_ion_row_5_Template(rf, ctx) { if (rf & 1) {
37
36
  i0.ɵɵelementStart(0, "ion-row", 6)(1, "ion-col", 7)(2, "ion-label", 8);
@@ -97,7 +96,8 @@ function CommonSuccessPage_div_6_div_3_ion_row_4_Template(rf, ctx) { if (rf & 1)
97
96
  i0.ɵɵelementEnd();
98
97
  i0.ɵɵelementStart(8, "ion-col")(9, "ion-button", 19);
99
98
  i0.ɵɵlistener("click", function CommonSuccessPage_div_6_div_3_ion_row_4_Template_ion_button_click_9_listener() { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r24.submit()); });
100
- i0.ɵɵtext(10, "Submit");
99
+ i0.ɵɵtext(10);
100
+ i0.ɵɵpipe(11, "translate");
101
101
  i0.ɵɵelementEnd()()()()();
102
102
  } if (rf & 2) {
103
103
  const element_r12 = i0.ɵɵnextContext().$implicit;
@@ -106,17 +106,29 @@ function CommonSuccessPage_div_6_div_3_ion_row_4_Template(rf, ctx) { if (rf & 1)
106
106
  i0.ɵɵproperty("innerHTML", ctx_r17.sanitizer.bypassSecurityTrustHtml(element_r12.description), i0.ɵɵsanitizeHtml);
107
107
  i0.ɵɵadvance(3);
108
108
  i0.ɵɵproperty("formControl", ctx_r17.emailAddress);
109
+ i0.ɵɵadvance(3);
110
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 3, "common.submit"));
109
111
  } }
110
112
  function CommonSuccessPage_div_6_div_3_ion_row_5_Template(rf, ctx) { if (rf & 1) {
111
113
  const _r28 = i0.ɵɵgetCurrentView();
112
114
  i0.ɵɵelementStart(0, "ion-row")(1, "ion-col", 17)(2, "div", 20);
113
- i0.ɵɵtext(3, "If you did't get an email, ");
114
- i0.ɵɵelementStart(4, "a", 21);
115
- i0.ɵɵlistener("click", function CommonSuccessPage_div_6_div_3_ion_row_5_Template_a_click_4_listener() { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r27.resendVerificationEmail()); });
116
- i0.ɵɵtext(5, " click here");
115
+ i0.ɵɵtext(3);
116
+ i0.ɵɵpipe(4, "translate");
117
+ i0.ɵɵelementStart(5, "a", 21);
118
+ i0.ɵɵlistener("click", function CommonSuccessPage_div_6_div_3_ion_row_5_Template_a_click_5_listener() { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r27.resendVerificationEmail()); });
119
+ i0.ɵɵtext(6);
120
+ i0.ɵɵpipe(7, "translate");
117
121
  i0.ɵɵelementEnd();
118
- i0.ɵɵtext(6, " and we'll send again.");
122
+ i0.ɵɵtext(8);
123
+ i0.ɵɵpipe(9, "translate");
119
124
  i0.ɵɵelementEnd()()();
125
+ } if (rf & 2) {
126
+ i0.ɵɵadvance(3);
127
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(4, 3, "email.no.email"), " ");
128
+ i0.ɵɵadvance(3);
129
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 5, "email.click.here"), "");
130
+ i0.ɵɵadvance(2);
131
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(9, 7, "email.we.will.send"), "");
120
132
  } }
121
133
  function CommonSuccessPage_div_6_div_3_ion_row_6_Template(rf, ctx) { if (rf & 1) {
122
134
  i0.ɵɵelementStart(0, "ion-row")(1, "ion-col", 17);
@@ -140,7 +152,7 @@ function CommonSuccessPage_div_6_div_3_ion_row_7_Template(rf, ctx) { if (rf & 1)
140
152
  } }
141
153
  function CommonSuccessPage_div_6_div_3_Template(rf, ctx) { if (rf & 1) {
142
154
  i0.ɵɵelementStart(0, "div");
143
- i0.ɵɵtemplate(1, CommonSuccessPage_div_6_div_3_ion_row_1_Template, 3, 1, "ion-row", 4)(2, CommonSuccessPage_div_6_div_3_ion_row_2_Template, 3, 1, "ion-row", 4)(3, CommonSuccessPage_div_6_div_3_ion_row_3_Template, 3, 1, "ion-row", 4)(4, CommonSuccessPage_div_6_div_3_ion_row_4_Template, 11, 2, "ion-row", 4)(5, CommonSuccessPage_div_6_div_3_ion_row_5_Template, 7, 0, "ion-row", 4)(6, CommonSuccessPage_div_6_div_3_ion_row_6_Template, 3, 1, "ion-row", 4)(7, CommonSuccessPage_div_6_div_3_ion_row_7_Template, 3, 1, "ion-row", 4);
155
+ i0.ɵɵtemplate(1, CommonSuccessPage_div_6_div_3_ion_row_1_Template, 3, 1, "ion-row", 4)(2, CommonSuccessPage_div_6_div_3_ion_row_2_Template, 3, 1, "ion-row", 4)(3, CommonSuccessPage_div_6_div_3_ion_row_3_Template, 3, 1, "ion-row", 4)(4, CommonSuccessPage_div_6_div_3_ion_row_4_Template, 12, 5, "ion-row", 4)(5, CommonSuccessPage_div_6_div_3_ion_row_5_Template, 10, 9, "ion-row", 4)(6, CommonSuccessPage_div_6_div_3_ion_row_6_Template, 3, 1, "ion-row", 4)(7, CommonSuccessPage_div_6_div_3_ion_row_7_Template, 3, 1, "ion-row", 4);
144
156
  i0.ɵɵelementEnd();
145
157
  } if (rf & 2) {
146
158
  const element_r12 = ctx.$implicit;
@@ -177,20 +189,41 @@ function CommonSuccessPage_div_6_div_5_ion_col_2_Template(rf, ctx) { if (rf & 1)
177
189
  i0.ɵɵadvance(1);
178
190
  i0.ɵɵproperty("ngIf", element_r31.type === "buttonAddjacentText");
179
191
  } }
192
+ function CommonSuccessPage_div_6_div_5_ion_col_3_div_1_ion_button_1_Template(rf, ctx) { if (rf & 1) {
193
+ const _r43 = i0.ɵɵgetCurrentView();
194
+ i0.ɵɵelementStart(0, "ion-button", 30);
195
+ i0.ɵɵlistener("click", function CommonSuccessPage_div_6_div_5_ion_col_3_div_1_ion_button_1_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r42 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r42.openPage()); });
196
+ i0.ɵɵtext(1);
197
+ i0.ɵɵpipe(2, "translate");
198
+ i0.ɵɵelementEnd();
199
+ } if (rf & 2) {
200
+ i0.ɵɵadvance(1);
201
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "common.submit"), " ");
202
+ } }
203
+ function CommonSuccessPage_div_6_div_5_ion_col_3_div_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
204
+ const _r45 = i0.ɵɵgetCurrentView();
205
+ i0.ɵɵelementStart(0, "ion-button", 30);
206
+ i0.ɵɵlistener("click", function CommonSuccessPage_div_6_div_5_ion_col_3_div_1_ng_template_2_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r45); const ctx_r44 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r44.openPage()); });
207
+ i0.ɵɵtext(1);
208
+ i0.ɵɵelementEnd();
209
+ } if (rf & 2) {
210
+ const element_r31 = i0.ɵɵnextContext(3).$implicit;
211
+ i0.ɵɵadvance(1);
212
+ i0.ɵɵtextInterpolate1(" ", element_r31.description, " ");
213
+ } }
180
214
  function CommonSuccessPage_div_6_div_5_ion_col_3_div_1_Template(rf, ctx) { if (rf & 1) {
181
- const _r40 = i0.ɵɵgetCurrentView();
182
- i0.ɵɵelementStart(0, "div", 27)(1, "ion-button", 28);
183
- i0.ɵɵlistener("click", function CommonSuccessPage_div_6_div_5_ion_col_3_div_1_Template_ion_button_click_1_listener() { i0.ɵɵrestoreView(_r40); const ctx_r39 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r39.openPage()); });
184
- i0.ɵɵtext(2);
185
- i0.ɵɵelementEnd()();
215
+ i0.ɵɵelementStart(0, "div", 27);
216
+ i0.ɵɵtemplate(1, CommonSuccessPage_div_6_div_5_ion_col_3_div_1_ion_button_1_Template, 3, 3, "ion-button", 28)(2, CommonSuccessPage_div_6_div_5_ion_col_3_div_1_ng_template_2_Template, 2, 1, "ng-template", null, 29, i0.ɵɵtemplateRefExtractor);
217
+ i0.ɵɵelementEnd();
186
218
  } if (rf & 2) {
219
+ const _r41 = i0.ɵɵreference(3);
187
220
  const element_r31 = i0.ɵɵnextContext(2).$implicit;
188
- i0.ɵɵadvance(2);
189
- i0.ɵɵtextInterpolate1(" ", element_r31.description, " ");
221
+ i0.ɵɵadvance(1);
222
+ i0.ɵɵproperty("ngIf", element_r31.description === "Submit")("ngIfElse", _r41);
190
223
  } }
191
224
  function CommonSuccessPage_div_6_div_5_ion_col_3_Template(rf, ctx) { if (rf & 1) {
192
225
  i0.ɵɵelementStart(0, "ion-col", 23);
193
- i0.ɵɵtemplate(1, CommonSuccessPage_div_6_div_5_ion_col_3_div_1_Template, 3, 1, "div", 26);
226
+ i0.ɵɵtemplate(1, CommonSuccessPage_div_6_div_5_ion_col_3_div_1_Template, 4, 2, "div", 26);
194
227
  i0.ɵɵelementEnd();
195
228
  } if (rf & 2) {
196
229
  const element_r31 = i0.ɵɵnextContext().$implicit;
@@ -261,6 +294,12 @@ export class CommonSuccessPage extends BasePage {
261
294
  this.statusModel = new StatusModel();
262
295
  }
263
296
  async ngOnInit() {
297
+ if (localStorage.getItem("language") === "es") {
298
+ this.popUpHeader = "Preguntas de seguimiento";
299
+ }
300
+ else {
301
+ this.popUpHeader = "Follow up Questions";
302
+ }
264
303
  this.logger.debug("common-success page - ng init called");
265
304
  this.uuid = await this.storage.get(FbConstants.uuid);
266
305
  this.waitCheckServiceUri = await this.storage.get(FbConstants.waitCheckServiceUri);
@@ -305,7 +344,12 @@ export class CommonSuccessPage extends BasePage {
305
344
  let continueWaiting = res['continueWaiting'];
306
345
  this.waitingMessage = res['waitingMessage'];
307
346
  if (continueWaiting && ++this.callCount >= 15) {
308
- this.waitingMessage = "It's taking longer than usual to process your request. <br/> Do not refresh the page.";
347
+ if (localStorage.getItem("language") === "es") {
348
+ this.waitingMessage = "Está tardando más de lo habitual procesar su solicitud.<br/> No actualice la página.";
349
+ }
350
+ else {
351
+ this.waitingMessage = "It's taking longer than usual to process your request. <br/> Do not refresh the page.";
352
+ }
309
353
  }
310
354
  if (continueWaiting && this.callCount > 25) {
311
355
  this.timerSubscription.unsubscribe();
@@ -315,11 +359,20 @@ export class CommonSuccessPage extends BasePage {
315
359
  else {
316
360
  this.pageToOpen = "landing";
317
361
  }
318
- this.successPageElementArr.next([
319
- { type: 'header', description: "<h1>Oops! could not process your request.</h1>\t\t", indent: 0, fontSize: 0 },
320
- { type: 'subhheader', description: '<h4>Please try again after some time.<h4>\t\t', indent: 0, fontSize: 0 },
321
- { type: 'buttonText', description: 'Home', indent: 0, fontSize: 0 }
322
- ]);
362
+ if (localStorage.getItem("language") === "es") {
363
+ this.successPageElementArr.next([
364
+ { type: 'header', description: "<h1>¡Ups! No se pudo procesar tu solicitud.</h1>\t\t", indent: 0, fontSize: 0 },
365
+ { type: 'subhheader', description: '<h4>Por favor, inténtelo de nuevo después de un tiempo.<h4>\t\t', indent: 0, fontSize: 0 },
366
+ { type: 'buttonText', description: 'Casa', indent: 0, fontSize: 0 }
367
+ ]);
368
+ }
369
+ else {
370
+ this.successPageElementArr.next([
371
+ { type: 'header', description: "<h1>Oops! could not process your request.</h1>\t\t", indent: 0, fontSize: 0 },
372
+ { type: 'subhheader', description: '<h4>Please try again after some time.<h4>\t\t', indent: 0, fontSize: 0 },
373
+ { type: 'buttonText', description: 'Home', indent: 0, fontSize: 0 }
374
+ ]);
375
+ }
323
376
  this.timerSubscription.unsubscribe();
324
377
  return;
325
378
  }
@@ -447,12 +500,12 @@ export class CommonSuccessPage extends BasePage {
447
500
  }
448
501
  }
449
502
  static { this.ɵfac = function CommonSuccessPage_Factory(t) { return new (t || CommonSuccessPage)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.QuestionnaireService), i0.ɵɵdirectiveInject(i3.UntypedFormBuilder), i0.ɵɵdirectiveInject(i4.UtilService), i0.ɵɵdirectiveInject(i5.LoggerService), i0.ɵɵdirectiveInject(i6.ClaimantService), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i7.NavController), i0.ɵɵdirectiveInject(i8.LoginService), i0.ɵɵdirectiveInject(i9.DomSanitizer), i0.ɵɵdirectiveInject(i10.HttpClient), i0.ɵɵdirectiveInject(i11.Storage), i0.ɵɵdirectiveInject(i12.ValidationService)); }; }
450
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CommonSuccessPage, selectors: [["common-success"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 6, consts: [[3, "secondToolbar"], [3, "showHelp", "hideFooter"], [3, "qeQueryModels", "showClose", "header", "showQuestionNumber", "onComplete", 4, "ngIf"], ["class", "ion-padding", 4, "ngIf"], [4, "ngIf"], [3, "qeQueryModels", "showClose", "header", "showQuestionNumber", "onComplete"], [1, "ion-padding"], [1, "ion-text-center"], [1, "box", 2, "color", "var(--ion-color-grey)", "font-size", "24px"], [3, "innerHTML"], ["name", "dots"], [4, "ngFor", "ngForOf"], ["style", "text-align: left;", "style", "color:var(--ion-color-grey);", "style", "padding-left: 25px;", 3, "innerHTML", 4, "ngIf"], [2, "padding-left", "25px", 3, "innerHTML"], ["size", "12", "sizeSm", "12", "sizeXs", "12", "sizeMd", "10", "sizeLg", "8", "sizeXl", "8", "offsetMd", "1", "offsetXl", "2", "offsetLg", "2", 1, "ion-text-center", "ion-padding"], [1, "box", 2, "color", "var(--ion-color-grey)", 3, "innerHTML"], ["size", "12", "sizeSm", "12", "sizeXs", "12", "sizeMd", "10", "sizeLg", "8", "sizeXl", "8", "offsetMd", "1", "offsetXl", "2", "offsetLg", "2", 1, "ion-padding"], ["size", "12", "sizeSm", "12", "sizeXs", "12", "sizeMd", "10", "sizeLg", "8", "sizeXl", "8", "offsetMd", "1", "offsetXl", "2", "offsetLg", "2", 1, "ion-text-justify", "ion-padding"], ["id", "emailAddress", "size", "60", "type", "input", "pInputText", "", 3, "formControl"], ["shape", "round", "type", "submit", 3, "click"], [2, "text-align", "center"], ["href", "javascript:void(0)", 3, "click"], ["class", "ion-text-right ion-padding-end", "size", "12", "sizeSm", "12", "sizeXs", "12", "sizeMd", "10", "sizeLg", "8", "sizeXl", "8", "offsetMd", "1", "offsetXl", "2", "offsetLg", "2", 4, "ngIf"], ["size", "12", "sizeSm", "12", "sizeXs", "12", "sizeMd", "10", "sizeLg", "8", "sizeXl", "8", "offsetMd", "1", "offsetXl", "2", "offsetLg", "2", 1, "ion-text-right", "ion-padding-end"], ["class", "ion-text-right", "style", "color:var(--ion-color-grey);", 4, "ngIf"], [1, "ion-text-right", 2, "color", "var(--ion-color-grey)"], ["class", "ion-text-right", 4, "ngIf"], [1, "ion-text-right"], ["shape", "round", "color", "success", "size", "big", "type", "submit", 3, "click"]], template: function CommonSuccessPage_Template(rf, ctx) { if (rf & 1) {
503
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CommonSuccessPage, selectors: [["common-success"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 6, consts: [[3, "secondToolbar"], [3, "showHelp", "hideFooter"], [3, "qeQueryModels", "showClose", "header", "showQuestionNumber", "onComplete", 4, "ngIf"], ["class", "ion-padding", 4, "ngIf"], [4, "ngIf"], [3, "qeQueryModels", "showClose", "header", "showQuestionNumber", "onComplete"], [1, "ion-padding"], [1, "ion-text-center"], [1, "box", 2, "color", "var(--ion-color-grey)", "font-size", "24px"], [3, "innerHTML"], ["name", "dots"], [4, "ngFor", "ngForOf"], ["style", "text-align: left;", "style", "color:var(--ion-color-grey);", "style", "padding-left: 25px;", 3, "innerHTML", 4, "ngIf"], [2, "padding-left", "25px", 3, "innerHTML"], ["size", "12", "sizeSm", "12", "sizeXs", "12", "sizeMd", "10", "sizeLg", "8", "sizeXl", "8", "offsetMd", "1", "offsetXl", "2", "offsetLg", "2", 1, "ion-text-center", "ion-padding"], [1, "box", 2, "color", "var(--ion-color-grey)", 3, "innerHTML"], ["size", "12", "sizeSm", "12", "sizeXs", "12", "sizeMd", "10", "sizeLg", "8", "sizeXl", "8", "offsetMd", "1", "offsetXl", "2", "offsetLg", "2", 1, "ion-padding"], ["size", "12", "sizeSm", "12", "sizeXs", "12", "sizeMd", "10", "sizeLg", "8", "sizeXl", "8", "offsetMd", "1", "offsetXl", "2", "offsetLg", "2", 1, "ion-text-justify", "ion-padding"], ["id", "emailAddress", "size", "60", "type", "input", "pInputText", "", 3, "formControl"], ["shape", "round", "type", "submit", 3, "click"], [2, "text-align", "center"], ["href", "javascript:void(0)", 3, "click"], ["class", "ion-text-right ion-padding-end", "size", "12", "sizeSm", "12", "sizeXs", "12", "sizeMd", "10", "sizeLg", "8", "sizeXl", "8", "offsetMd", "1", "offsetXl", "2", "offsetLg", "2", 4, "ngIf"], ["size", "12", "sizeSm", "12", "sizeXs", "12", "sizeMd", "10", "sizeLg", "8", "sizeXl", "8", "offsetMd", "1", "offsetXl", "2", "offsetLg", "2", 1, "ion-text-right", "ion-padding-end"], ["class", "ion-text-right", "style", "color:var(--ion-color-grey);", 4, "ngIf"], [1, "ion-text-right", 2, "color", "var(--ion-color-grey)"], ["class", "ion-text-right", 4, "ngIf"], [1, "ion-text-right"], ["shape", "round", "color", "success", "size", "big", "type", "submit", 3, "click", 4, "ngIf", "ngIfElse"], ["defaultButton", ""], ["shape", "round", "color", "success", "size", "big", "type", "submit", 3, "click"]], template: function CommonSuccessPage_Template(rf, ctx) { if (rf & 1) {
451
504
  i0.ɵɵelementStart(0, "ion-header");
452
505
  i0.ɵɵelement(1, "app-header", 0);
453
506
  i0.ɵɵelementEnd();
454
507
  i0.ɵɵelementStart(2, "ion-content")(3, "app-content", 1);
455
- i0.ɵɵtemplate(4, CommonSuccessPage_app_multi_questionnaire_4_Template, 2, 6, "app-multi-questionnaire", 2)(5, CommonSuccessPage_ion_row_5_Template, 6, 1, "ion-row", 3)(6, CommonSuccessPage_div_6_Template, 6, 3, "div", 4);
508
+ i0.ɵɵtemplate(4, CommonSuccessPage_app_multi_questionnaire_4_Template, 1, 4, "app-multi-questionnaire", 2)(5, CommonSuccessPage_ion_row_5_Template, 6, 1, "ion-row", 3)(6, CommonSuccessPage_div_6_Template, 6, 3, "div", 4);
456
509
  i0.ɵɵelementEnd()();
457
510
  } if (rf & 2) {
458
511
  i0.ɵɵadvance(1);
@@ -469,7 +522,7 @@ export class CommonSuccessPage extends BasePage {
469
522
  }
470
523
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CommonSuccessPage, [{
471
524
  type: Component,
472
- args: [{ selector: 'common-success', template: "<ion-header>\r\n <app-header [secondToolbar]=\"false\"></app-header>\r\n</ion-header>\r\n\r\n<ion-content>\r\n <app-content [showHelp]=\"false\" [hideFooter]=\"true\">\r\n <app-multi-questionnaire [qeQueryModels]=\"qeQueryModels\" *ngIf=\"isOpenQe\" [showClose]=\"false\" \r\n (onComplete)=\"quSuccess()\" [header]=\"'Follow up Questions' | translate\" [showQuestionNumber]=\"true\"></app-multi-questionnaire>\r\n\r\n <ion-row class=\"ion-padding\" *ngIf=\"isLoading\">\r\n <ion-col class=\"ion-text-center\">\r\n <ion-label class=\"box\"style=\"color:var(--ion-color-grey); font-size: 24px\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(waitingMessage)\"></div></ion-label>\r\n <br>\r\n <ion-spinner name=\"dots\"></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <div *ngIf=\"elements.getValue() && !isLoading\">\r\n\r\n <div *ngFor=\"let element of elements.getValue(); let i = index\">\r\n <div [innerHTML]=\"element.description\" style=\"text-align: left;\" *ngIf=\"element.type ==='header'\"\r\n style=\"color:var(--ion-color-grey);\" style=\"padding-left: 25px;\">\r\n </div>\r\n </div>\r\n\r\n <ion-grid>\r\n <div *ngFor=\"let element of elements.getValue(); let i = index\">\r\n <ion-row *ngIf=\"element.type ==='subhheader'\">\r\n <ion-col class=\"ion-text-center ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"element.description\" class=\"box\" style=\"margin-bottom: 20px;\"\r\n style=\"color:var(--ion-color-grey);\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='text1'\">\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"element.description\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='text2'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='emailUpdate'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <ion-row> \r\n <ion-col>\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row> \r\n <ion-col> \r\n <input id=\"emailAddress\" size=\"60\" type=\"input\" pInputText [formControl]=\"emailAddress\" />\r\n </ion-col>\r\n <ion-col> \r\n <ion-button shape=\"round\" (click)=\"submit()\" type=\"submit\">Submit</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"element.type ==='resendemail'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div style='text-align:center'>If you did't get an email, \r\n <a href=\"javascript:void(0)\" (click)=\"resendVerificationEmail()\"> click here</a> and we'll send again.</div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"element.type ==='text3'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\"></div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='text4'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\"></div>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-grid>\r\n\r\n\r\n <!--For button-->\r\n <ion-grid>\r\n <div *ngFor=\"let element of elements.getValue(); let i = index\">\r\n <ion-row>\r\n <ion-col *ngIf=\"element.type ==='buttonAddjacentText'\" class=\"ion-text-right ion-padding-end\" size=\"12\"\r\n sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\" sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div class=\"ion-text-right\" style=\"color:var(--ion-color-grey);\"\r\n *ngIf=\"element.type ==='buttonAddjacentText'\">\r\n <h3>{{element.description}}</h3>\r\n </div>\r\n </ion-col>\r\n <ion-col *ngIf=\"element.type ==='buttonText'\" class=\"ion-text-right ion-padding-end\" size=\"12\" sizeSm=\"12\"\r\n sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\" sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div *ngIf=\"element.type ==='buttonText'\" class=\"ion-text-right\">\r\n <ion-button shape=\"round\" (click)=\"openPage()\" color=\"success\" size=\"big\" type=\"submit\">\r\n {{element.description}}\r\n </ion-button>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n </div>\r\n\r\n </ion-grid>\r\n\r\n\r\n\r\n <!--Button-->\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n </app-content>\r\n</ion-content>", styles: [".bottom{position:absolute;bottom:15%;right:5%}.centered{position:fixed;top:30%;left:50%;transform:translate(-50%,-50%)}\n"] }]
525
+ args: [{ selector: 'common-success', template: "<ion-header>\r\n <app-header [secondToolbar]=\"false\"></app-header>\r\n</ion-header>\r\n\r\n<ion-content>\r\n <app-content [showHelp]=\"false\" [hideFooter]=\"true\">\r\n <app-multi-questionnaire [qeQueryModels]=\"qeQueryModels\" *ngIf=\"isOpenQe\" [showClose]=\"false\" \r\n (onComplete)=\"quSuccess()\" [header]=\"popUpHeader\" [showQuestionNumber]=\"true\"></app-multi-questionnaire>\r\n <ion-row class=\"ion-padding\" *ngIf=\"isLoading\">\r\n <ion-col class=\"ion-text-center\">\r\n <ion-label class=\"box\"style=\"color:var(--ion-color-grey); font-size: 24px\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(waitingMessage)\"></div></ion-label>\r\n <br>\r\n <ion-spinner name=\"dots\"></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <div *ngIf=\"elements.getValue() && !isLoading\">\r\n\r\n <div *ngFor=\"let element of elements.getValue(); let i = index\">\r\n <div [innerHTML]=\"element.description\" style=\"text-align: left;\" *ngIf=\"element.type ==='header'\"\r\n style=\"color:var(--ion-color-grey);\" style=\"padding-left: 25px;\">\r\n </div>\r\n </div>\r\n\r\n <ion-grid>\r\n <div *ngFor=\"let element of elements.getValue(); let i = index\">\r\n <ion-row *ngIf=\"element.type ==='subhheader'\">\r\n <ion-col class=\"ion-text-center ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"element.description\" class=\"box\" style=\"margin-bottom: 20px;\"\r\n style=\"color:var(--ion-color-grey);\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='text1'\">\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"element.description\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='text2'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='emailUpdate'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <ion-row> \r\n <ion-col>\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\">\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row> \r\n <ion-col> \r\n <input id=\"emailAddress\" size=\"60\" type=\"input\" pInputText [formControl]=\"emailAddress\" />\r\n </ion-col>\r\n <ion-col> \r\n <ion-button shape=\"round\" (click)=\"submit()\" type=\"submit\">{{'common.submit'| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"element.type ==='resendemail'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div style='text-align:center'>{{'email.no.email'| translate}}\r\n <a href=\"javascript:void(0)\" (click)=\"resendVerificationEmail()\"> {{'email.click.here'| translate}}</a> {{'email.we.will.send'| translate}}</div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"element.type ==='text3'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\"></div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row *ngIf=\"element.type ==='text4'\">\r\n <ion-col class=\"ion-text-justify ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\"\r\n sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(element.description)\"></div>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-grid>\r\n\r\n\r\n <!--For button-->\r\n <ion-grid>\r\n <div *ngFor=\"let element of elements.getValue(); let i = index\">\r\n <ion-row>\r\n <ion-col *ngIf=\"element.type ==='buttonAddjacentText'\" class=\"ion-text-right ion-padding-end\" size=\"12\"\r\n sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\" sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div class=\"ion-text-right\" style=\"color:var(--ion-color-grey);\"\r\n *ngIf=\"element.type ==='buttonAddjacentText'\">\r\n <h3>{{element.description}}</h3>\r\n </div>\r\n </ion-col>\r\n <ion-col *ngIf=\"element.type ==='buttonText'\" class=\"ion-text-right ion-padding-end\" size=\"12\" sizeSm=\"12\"\r\n sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"8\" sizeXl=\"8\" offsetMd=\"1\" offsetXl=\"2\" offsetLg=\"2\">\r\n <div *ngIf=\"element.type ==='buttonText'\" class=\"ion-text-right\">\r\n <ion-button *ngIf=\"element.description === 'Submit'; else defaultButton\" shape=\"round\" (click)=\"openPage()\" color=\"success\" size=\"big\" type=\"submit\">\r\n {{'common.submit' | translate}}\r\n </ion-button>\r\n <ng-template #defaultButton>\r\n <ion-button shape=\"round\" (click)=\"openPage()\" color=\"success\" size=\"big\" type=\"submit\">\r\n {{element.description}}\r\n </ion-button>\r\n </ng-template>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n </div>\r\n\r\n </ion-grid>\r\n\r\n\r\n\r\n <!--Button-->\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n </app-content>\r\n</ion-content>", styles: [".bottom{position:absolute;bottom:15%;right:5%}.centered{position:fixed;top:30%;left:50%;transform:translate(-50%,-50%)}\n"] }]
473
526
  }], () => [{ type: i1.Router }, { type: i2.QuestionnaireService }, { type: i3.UntypedFormBuilder }, { type: i4.UtilService }, { type: i5.LoggerService }, { type: i6.ClaimantService }, { type: i1.Router }, { type: i7.NavController }, { type: i8.LoginService }, { type: i9.DomSanitizer }, { type: i10.HttpClient }, { type: i11.Storage }, { type: i12.ValidationService }], null); })();
474
527
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CommonSuccessPage, { className: "CommonSuccessPage", filePath: "lib\\components\\questionnaire\\common-success\\common-success.page.ts", lineNumber: 28 }); })();
475
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXN1Y2Nlc3MucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2NvbW1vbi1zdWNjZXNzL2NvbW1vbi1zdWNjZXNzLnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9jb21tb24tc3VjY2Vzcy9jb21tb24tc3VjY2Vzcy5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQW1DLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU1uRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDWnpDLGtEQUNvRztJQUFwRyw2TUFBYyxlQUFBLGtCQUFXLENBQUEsSUFBQzs7SUFBMEUsaUJBQTBCOzs7SUFEckcsb0RBQStCLG9CQUFBLHVEQUFBLDRCQUFBOzs7SUFHeEQsa0NBQStDLGlCQUFBLG1CQUFBO0lBR3pDLHlCQUEyRTtJQUFBLGlCQUFZO0lBQ3pGLHFCQUFJLHNCQUFBO0lBRU4saUJBQVUsRUFBQTs7O0lBSEQsZUFBK0Q7SUFBL0QsOEdBQStEOzs7SUFTdEUsMEJBRU07OztJQUZELHFFQUFpQzs7O0lBRHhDLDJCQUFrRTtJQUNoRSwr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R0FBRyxLQUFLLENBQUM7Z0JBQ3RCLElBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFDO29CQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztpQkFDeEU7WUFDSCxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7Z0JBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQ0YsQ0FBQztTQUNIO0lBQ0osQ0FBQztrRkFsUVMsaUJBQWlCO29FQUFqQixpQkFBaUI7WUMzQjlCLGtDQUFZO1lBQ1YsZ0NBQWlEO1lBQ25ELGlCQUFhO1lBRWIsbUNBQWEscUJBQUE7WUFFVCwwR0FDOEgsNkRBQUEscURBQUE7WUE0SGhJLGlCQUFjLEVBQUE7O1lBbElGLGVBQXVCO1lBQXZCLHFDQUF1QjtZQUl0QixlQUFrQjtZQUFsQixnQ0FBa0Isb0JBQUE7WUFDNkIsZUFBYztZQUFkLG1DQUFjO1lBRzFDLGVBQWU7WUFBZixvQ0FBZTtZQVN2QyxlQUF1QztZQUF2QyxnRUFBdUM7OztpRkRTcEMsaUJBQWlCO2NBTDdCLFNBQVM7MkJBQ0UsZ0JBQWdCOztrRkFJZixpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGludGVydmFsLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1Y2Nlc3NQYWdlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL1N1Y2Nlc3NQYWdlRWxlbWVudCc7XHJcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gJy4uLy4uLy4uL3BhZ2VzL0Jhc2VQYWdlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xhaW1hbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2xhaW1hbnQtc2VydmljZS9jbGFpbWFudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgU3RhdHVzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9TdGF0dXNNb2RlbCc7XHJcbmltcG9ydCB7IFBvbGxpbmdTdGF0dXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL1BvbGxpbmdTdGF0dXNNb2RlbCc7XHJcbmltcG9ydCB7IFN0b3JhZ2UgfSBmcm9tICdAaW9uaWMvc3RvcmFnZS1hbmd1bGFyJztcclxuaW1wb3J0IHsgRmJDb25zdGFudHMgfSBmcm9tICcuLi9GYkNvbnN0YW50cyc7XHJcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVRdWVyeU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvUXVlc3Rpb25uYWlyZVF1ZXJ5TW9kZWwnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29tbW9uLXN1Y2Nlc3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tb24tc3VjY2Vzcy5wYWdlLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbW1vbi1zdWNjZXNzLnBhZ2Uuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uU3VjY2Vzc1BhZ2UgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgY2FsbENvdW50IDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgaGVhZGluZyA9IFwiXCI7XHJcbiAgcHVibGljIG1lc3NhZ2UgPSBcIlwiO1xyXG4gIHB1YmxpYyBzaG93TG9hZGVyVGhlbWUgPSBmYWxzZTtcclxuICBwYWdlVG9PcGVuOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHV1aWQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgd2FpdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHdhaXRDaGVja1NlcnZpY2VVcmk6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHVibGljIHdhaXRpbmdNZXNzYWdlID0gXCJQbGVhc2UgV2FpdC4uLlwiO1xyXG4gIHB1YmxpYyBpc0xvYWRpbmcgPSB0cnVlO1xyXG4gIGVsZW1lbnRzOiBCZWhhdmlvclN1YmplY3Q8U3VjY2Vzc1BhZ2VFbGVtZW50W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdWNjZXNzUGFnZUVsZW1lbnRbXT4obnVsbCk7XHJcbiAgcHVibGljIHN1Y2Nlc3NQYWdlRWxlbWVudEFycjogQmVoYXZpb3JTdWJqZWN0PFN1Y2Nlc3NQYWdlRWxlbWVudFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3VjY2Vzc1BhZ2VFbGVtZW50W10+KG51bGwpO1xyXG4gIHB1YmxpYyBzdWNjZXNzRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuXHJcbiAgZHVyYXRpb24gPSA1MDAwOyAvL2RlZmluZXMgbWlsbGlzZWNvbmRzIGFmdGVyIHdoaWNoIGEgbmV3IHJlcXVlc3QgdG8gYmUgc2VudCBvdXRcclxuICBwdWJsaWMgdGltZXJJbnRlcnZhbCA9IGludGVydmFsKHRoaXMuZHVyYXRpb24pO1xyXG4gIHB1YmxpYyBjb3VudERvd24gPSB0aGlzLnRpbWVySW50ZXJ2YWwucGlwZSh0YWtlKDMwKSk7XHJcblxyXG4gIHRpbWVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgY291bnREb3duU3Vic2NyaXB0aW9uIDsgU3Vic2NyaXB0aW9uO1xyXG5cclxuICBxZVF1ZXJ5TW9kZWxzIDogUXVlc3Rpb25uYWlyZVF1ZXJ5TW9kZWxbXTtcclxuICBpc09wZW5RZSA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBxZVN1Y2Nlc3NVcmk6IHN0cmluZztcclxuICBxZVN1Y2Nlc3NXYWl0Q2hlY2tTZXJ2aWNlVXJpOiBzdHJpbmc7XHJcbiAgcWVTdWNjZXNzV2FpdEZvclByb2Nlc3NpbmcgOiBib29sZWFuO1xyXG4gIHN0YXR1c01vZGVsIDogU3RhdHVzTW9kZWwgPSBuZXcgU3RhdHVzTW9kZWwoKTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwdWJsaWMgcXVlc3Rpb25uYWlyZVNlcnZpY2U6IFF1ZXN0aW9ubmFpcmVTZXJ2aWNlLCBwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcclxuICAgIHB1YmxpYyB1dGlsOiBVdGlsU2VydmljZSwgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHB1YmxpYyBjbGFpbWFudFNlcnZpY2U6IENsYWltYW50U2VydmljZSxcclxuICAgIHB1YmxpYyByOiBSb3V0ZXIsIHB1YmxpYyBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLCBwdWJsaWMgbHM6IExvZ2luU2VydmljZSxcclxuICAgIHB1YmxpYyBzYW5pdGl6ZXI6IERvbVNhbml0aXplciwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIHN0b3JhZ2UgOiBTdG9yYWdlLCBcclxuICAgIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2UgOiBWYWxpZGF0aW9uU2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXCJjb21tb24tc3VjY2VzcyBwYWdlIC0gbmcgaW5pdCBjYWxsZWRcIilcclxuICAgIHRoaXMudXVpZCA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoRmJDb25zdGFudHMudXVpZCk7XHJcbiAgICB0aGlzLndhaXRDaGVja1NlcnZpY2VVcmkgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KEZiQ29uc3RhbnRzLndhaXRDaGVja1NlcnZpY2VVcmkpO1xyXG4gICAgdGhpcy5wYWdlVG9PcGVuID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldChGYkNvbnN0YW50cy5wYWdlVG9PcGVuKTtcclxuICAgIHRoaXMud2FpdCA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoRmJDb25zdGFudHMud2FpdEZvclByb2Nlc3NpbmcpO1xyXG5cclxuICAgIHRoaXMuc3VjY2Vzc0Zvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgJ2VtYWlsQWRkcmVzcyc6IFtdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zdWNjZXNzUGFnZUVsZW1lbnRBcnIuc3Vic2NyaWJlKFxyXG4gICAgICByZXMgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuZWxlbWVudHMubmV4dChyZXMpO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLndhaXQpIHtcclxuICAgICAgICB0aGlzLmRvUG9sbGluZ0ZvclJlcXVlc3QodGhpcy51dWlkLCB0aGlzLndhaXRDaGVja1NlcnZpY2VVcmkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIC8vZm9yIG90aGVyIGNhc2VzIHdoZXJlIHN0YXR1cyBlbmQgcG9pbnQgaXMgbm90IHNldC5cclxuICAgICAgdGhpcy5lbGVtZW50cy5uZXh0KGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoRmJDb25zdGFudHMuc3VjY2Vzc1BhZ2VFbGVtZW50KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRpbWVyU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY291bnREb3duU3Vic2NyaXB0aW9uKXtcclxuICAgICAgdGhpcy5jb3VudERvd25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoRmJDb25zdGFudHMuc3VjY2Vzc1BhZ2VFbGVtZW50KTtcclxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoRmJDb25zdGFudHMud2FpdEZvclByb2Nlc3NpbmcpO1xyXG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZShGYkNvbnN0YW50cy53YWl0Q2hlY2tTZXJ2aWNlVXJpKTtcclxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoRmJDb25zdGFudHMucGFnZVRvT3Blbik7XHJcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKEZiQ29uc3RhbnRzLnV1aWQpO1xyXG4gIH1cclxuXHJcbiAgZG9Qb2xsaW5nRm9yUmVxdWVzdCh1dWlkVGVtcDogc3RyaW5nLCB3YWl0Q2hlY2tTZXJ2aWNlVXJpVGVtcDogc3RyaW5nKXtcclxuICAgIGNvbnNvbGUubG9nKCdkbyBQb2xsaW5nIGZvciByZXF1ZXN0IGNhbGxlZCA9ICcsIHdhaXRDaGVja1NlcnZpY2VVcmlUZW1wKTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IHRoaXMudGltZXJJbnRlcnZhbC5waXBlKFxyXG4gICAgICAgIHN0YXJ0V2l0aCgwKSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5yZXRyaXZlUG9sbGluZ1N0YXR1c0ZvclBhZ2UodXVpZFRlbXAsIHdhaXRDaGVja1NlcnZpY2VVcmlUZW1wKSlcclxuICAgICAgKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgbGV0IGNvbnRpbnVlV2FpdGluZyA9IHJlc1snY29udGludWVXYWl0aW5nJ107XHJcbiAgICAgICAgdGhpcy53YWl0aW5nTWVzc2FnZSA9IHJlc1snd2FpdGluZ01lc3NhZ2UnXTtcclxuICAgICAgICBcclxuICAgICAgICBpZihjb250aW51ZVdhaXRpbmcgJiYgKyt0aGlzLmNhbGxDb3VudCA+PSAxNSl7XHJcbiAgICAgICAgICB0aGlzLndhaXRpbmdNZXNzYWdlID0gXCJJdCdzIHRha2luZyBsb25nZXIgdGhhbiB1c3VhbCB0byBwcm9jZXNzIHlvdXIgcmVxdWVzdC4gPGJyLz4gRG8gbm90IHJlZnJlc2ggdGhlIHBhZ2UuXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY29udGludWVXYWl0aW5nICYmIHRoaXMuY2FsbENvdW50ID4gMjUpe1xyXG4gICAgICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZih0aGlzLmxzLmlzTG9nZ2VkSW4oKSl7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZVRvT3BlbiA9IFwid2VsY29tZVwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdlVG9PcGVuID0gXCJsYW5kaW5nXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuc3VjY2Vzc1BhZ2VFbGVtZW50QXJyLm5leHQoXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIHt0eXBlOiAnaGVhZGVyJywgZGVzY3JpcHRpb246IFwiPGgxPk9vcHMhIGNvdWxkIG5vdCBwcm9jZXNzIHlvdXIgcmVxdWVzdC48L2gxPlxcdFxcdFwiLCBpbmRlbnQ6IDAsIGZvbnRTaXplOiAwfSxcclxuICAgICAgICAgICAgICAgIHt0eXBlOiAnc3ViaGhlYWRlcicsIGRlc2NyaXB0aW9uOiAnPGg0PlBsZWFzZSB0cnkgYWdhaW4gYWZ0ZXIgc29tZSB0aW1lLjxoND5cXHRcXHQnLCBpbmRlbnQ6IDAsIGZvbnRTaXplOiAwfSxcclxuICAgICAgICAgICAgICAgIHt0eXBlOiAnYnV0dG9uVGV4dCcsIGRlc2NyaXB0aW9uOiAnSG9tZScsIGluZGVudDogMCwgZm9udFNpemU6IDB9XHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCFjb250aW51ZVdhaXRpbmcpIHtcclxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwic2VuZCBhbm90aGVyIHJlcXVlc3QgdG8gZmV0Y2ggcGFnZSBlbGVtZW50c1wiKTtcclxuICAgICAgICAgIGxldCBtZXNzYWdlU2VydmljZUVwID0gcmVzWydtZXNzYWdlU2VydmljZUVwJ107XHJcbiAgICAgICAgICB0aGlzLndhaXRpbmdNZXNzYWdlID0gcmVzWyd3YWl0aW5nTWVzc2FnZSddO1xyXG4gICAgICAgICAgdGhpcy5mZXRjaFBhZ2VFbGVtZW50cyhtZXNzYWdlU2VydmljZUVwLCB1dWlkVGVtcCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXNwID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnN0YXR1c01vZGVsICA9IHJlc3A7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCIgdGhpcy5zdGF0dXNNb2RlbCBcIiwgdGhpcy5zdGF0dXNNb2RlbCk7XHJcbiAgICAgICAgICAgICAgaWYocmVzcFsnbmF2aWdhdGVJbW1lZGlhdGVseSddKXtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk5leHRQYWdlKHJlc3BbJ3BhZ2VUb09wZW4nXSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmKHJlc3BbJ3Nob3dRZSddKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiT3BlbiBRdWVzdGlvbm5haXJlIG9wdGlvbiBlbmNvdW50ZXJlZFwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucWVTdWNjZXNzV2FpdENoZWNrU2VydmljZVVyaSA9IHRoaXMuc3RhdHVzTW9kZWwucWVTdWNjZXNzV2FpdENoZWNrU2VydmljZVVyaTtcclxuICAgICAgICAgICAgICAgIHRoaXMucWVTdWNjZXNzV2FpdEZvclByb2Nlc3NpbmcgPSB0aGlzLnN0YXR1c01vZGVsLnFlU3VjY2Vzc1dhaXRGb3JQcm9jZXNzaW5nO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5xZVN1Y2Nlc3NVcmkgPSB0aGlzLnN0YXR1c01vZGVsLnFlU3VjY2Vzc1VyaTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMucWVTdWNjZXNzVXJpICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5xZVF1ZXJ5TW9kZWxzID0gcmVzcC5xZVF1ZXJ5TW9kZWxzO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlzT3BlblFlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIkRpcmVjdCBwb2xsaW5nIHRvIG5ldyBwcm9jZXNzXCIpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRvUG9sbGluZ0ZvclJlcXVlc3QodGhpcy51dWlkLCB0aGlzLnFlU3VjY2Vzc1dhaXRDaGVja1NlcnZpY2VVcmkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnZVRvT3BlbiA9IHJlc3BbJ3BhZ2VUb09wZW4nXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc1BhZ2VFbGVtZW50QXJyLm5leHQocmVzcFsnc3VjY2Vzc1BhZ2VFbGVtZW50J10pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgIHRoaXMuY291bnREb3duU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdodHRwIGVycm9yIHJlc3BvbnNlID0gJywgZXJyKTtcclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldHJpdmVQb2xsaW5nU3RhdHVzRm9yUGFnZSh1dWkxMjogc3RyaW5nLCB3YWl0Q2hlY2tTZXJ2aWNlVXJpMTI6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlBvbGxpbmcgc2VydmljZSBVUkwgLSBcIiArIHdhaXRDaGVja1NlcnZpY2VVcmkxMik7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uU2VydmljZS5nZXQ8UG9sbGluZ1N0YXR1c01vZGVsPih3YWl0Q2hlY2tTZXJ2aWNlVXJpMTIgKyB1dWkxMik7XHJcbiAgfVxyXG5cclxuICBmZXRjaFBhZ2VFbGVtZW50cyhtZXNzYWdlU2VydmljZUVwOiBzdHJpbmcsIHV1aTEyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFN0YXR1c01vZGVsPiB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlBhZ2UgZWxlbWVudCBzZXJ2aWNlIFVSTCAtIFwiICsgbWVzc2FnZVNlcnZpY2VFcCk7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uU2VydmljZS5nZXQ8U3RhdHVzTW9kZWw+KG1lc3NhZ2VTZXJ2aWNlRXAgKyB1dWkxMik7XHJcbiAgfVxyXG5cclxuICBnZXQgZW1haWxBZGRyZXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3VjY2Vzc0Zvcm0uY29udHJvbHNbJ2VtYWlsQWRkcmVzcyddO1xyXG4gIH1cclxuXHJcbiAgcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwoKSB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygncmVzZW5kVmVyaWZpY2F0aW9uRW1haWwnKTtcclxuICAgIHRoaXMuc2hvd0xvYWRlclRoZW1lID0gZmFsc2U7XHJcbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLnV1aWQuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMuY2xhaW1hbnRTZXJ2aWNlLnJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsKHBhcmFtcy52YWx1ZU9mKCkpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlclRoZW1lID0gZmFsc2U7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0Vycm9yJywgZXJyKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkZXJUaGVtZSA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIHNldEZvbnRTaXplKGZvbnRzaXplOiBudW1iZXIpOiBvYmplY3Qge1xyXG4gICAgaWYgKGZvbnRzaXplID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdmb250c2l6ZScsIGZvbnRzaXplKTtcclxuICAgIGxldCBzdHlsZU9iaiA9IHtcclxuICAgICAgJ2ZvbnQtc2l6ZSc6IGZvbnRzaXplICsgJ3B4J1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdHlsZU9iaik7XHJcbiAgfVxyXG5cclxuICBvcGVuTmV4dFBhZ2UocGFnZVRvT3Blbil7XHJcbiAgICB3aW5kb3cub3Blbihsb2NhdGlvbi5vcmlnaW4gKyBwYWdlVG9PcGVuLCAnX3NlbGYnKTtcclxuICB9XHJcblxyXG4gIG9wZW5QYWdlKCkge1xyXG5cclxuICAgIGxldCBjdXJyZW50Q29udGV4dFJvb3QgPSB0aGlzLmdldENvbnRleHRSb290KCk7XHJcbiAgICBpZiAodGhpcy5wYWdlVG9PcGVuICYmIHRoaXMucGFnZVRvT3Blbi5zdWJzdHJpbmcoMCwgNCkgIT0gJy9jcC8nICYmIHRoaXMucGFnZVRvT3BlbiAmJiB0aGlzLnBhZ2VUb09wZW4gIT0gJ09wZW5QYWdlJykge1xyXG4gICAgICB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVGb3J3YXJkKFt0aGlzLnBhZ2VUb09wZW5dLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkZW50aWZpZXI6IHRoaXMudXVpZCB9IH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgdXJsOiBzdHJpbmcgPSBcIi9jcC9sYW5kaW5nXCI7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2VUb09wZW4gJiYgdGhpcy5wYWdlVG9PcGVuICE9ICdPcGVuUGFnZScpIHtcclxuICAgICAgICB1cmwgPSB0aGlzLnBhZ2VUb09wZW47XHJcbiAgICAgIH1cclxuICAgICAgd2luZG93Lm9wZW4obG9jYXRpb24ub3JpZ2luICsgdXJsLCAnX3NlbGYnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnZXRDb250ZXh0Um9vdCgpIHtcclxuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDAsIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmRleE9mKFwiL1wiLCAyKSk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKSB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU3VjY2VzcyBjYWxsZWQnLCB0aGlzLmVtYWlsQWRkcmVzcy52YWx1ZSwgJyB1dWlkICcsIHRoaXMudXVpZCk7XHJcbiAgICB0aGlzLmNsYWltYW50U2VydmljZS51cGRhdGVFbWFpbCh0aGlzLmVtYWlsQWRkcmVzcy52YWx1ZSwgdGhpcy51dWlkKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgdGhpcy5zaG93TG9hZGVyVGhlbWUgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnRXJyb3InLCBlcnIpO1xyXG4gICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgIHRoaXMuc2hvd0xvYWRlclRoZW1lID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcXVTdWNjZXNzKCl7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcInFlIHN1Y2Nlc3MgaGVyZVwiKTtcclxuICAgIGlmKHRoaXMuaXNPcGVuUWUpeyAgXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UucG9zdCh0aGlzLnFlU3VjY2Vzc1VyaSwgbnVsbClcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgcmVzID0+IHsgIFxyXG4gICAgICAgICAgICB0aGlzLmlzT3BlblFlID0gZmFsc2U7ICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKHRoaXMucWVTdWNjZXNzV2FpdEZvclByb2Nlc3Npbmcpe1xyXG4gICAgICAgICAgICAgIHRoaXMuZG9Qb2xsaW5nRm9yUmVxdWVzdCh0aGlzLnV1aWQsIHRoaXMucWVTdWNjZXNzV2FpdENoZWNrU2VydmljZVVyaSk7XHJcbiAgICAgICAgICAgIH0gICAgICAgICAgICBcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnRXJyb3InLCBlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG59XHJcbiIsIjxpb24taGVhZGVyPlxyXG4gIDxhcHAtaGVhZGVyIFtzZWNvbmRUb29sYmFyXT1cImZhbHNlXCI+PC9hcHAtaGVhZGVyPlxyXG48L2lvbi1oZWFkZXI+XHJcblxyXG48aW9uLWNvbnRlbnQ+XHJcbiAgPGFwcC1jb250ZW50IFtzaG93SGVscF09XCJmYWxzZVwiIFtoaWRlRm9vdGVyXT1cInRydWVcIj5cclxuICAgIDxhcHAtbXVsdGktcXVlc3Rpb25uYWlyZSBbcWVRdWVyeU1vZGVsc109XCJxZVF1ZXJ5TW9kZWxzXCIgKm5nSWY9XCJpc09wZW5RZVwiIFtzaG93Q2xvc2VdPVwiZmFsc2VcIiBcclxuICAgIChvbkNvbXBsZXRlKT1cInF1U3VjY2VzcygpXCIgW2hlYWRlcl09XCInRm9sbG93IHVwIFF1ZXN0aW9ucycgfCB0cmFuc2xhdGVcIiBbc2hvd1F1ZXN0aW9uTnVtYmVyXT1cInRydWVcIj48L2FwcC1tdWx0aS1xdWVzdGlvbm5haXJlPlxyXG5cclxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLXBhZGRpbmdcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxyXG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgIDxpb24tbGFiZWwgIGNsYXNzPVwiYm94XCJzdHlsZT1cImNvbG9yOnZhcigtLWlvbi1jb2xvci1ncmV5KTsgZm9udC1zaXplOiAyNHB4XCI+XHJcbiAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwic2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHdhaXRpbmdNZXNzYWdlKVwiPjwvZGl2PjwvaW9uLWxhYmVsPlxyXG4gICAgICAgIDxicj5cclxuICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIj48L2lvbi1zcGlubmVyPlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImVsZW1lbnRzLmdldFZhbHVlKCkgJiYgIWlzTG9hZGluZ1wiPlxyXG5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiAgZWxlbWVudHMuZ2V0VmFsdWUoKTsgIGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZWxlbWVudC5kZXNjcmlwdGlvblwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIiAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0naGVhZGVyJ1wiXHJcbiAgICAgICAgICBzdHlsZT1cImNvbG9yOnZhcigtLWlvbi1jb2xvci1ncmV5KTtcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMjVweDtcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiAgZWxlbWVudHMuZ2V0VmFsdWUoKTsgIGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdzdWJoaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciAgaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImVsZW1lbnQuZGVzY3JpcHRpb25cIiBjbGFzcz1cImJveFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweDtcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjp2YXIoLS1pb24tY29sb3ItZ3JleSk7XCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuXHJcbiAgICAgICAgICA8aW9uLXJvdyAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0ndGV4dDEnXCI+XHJcbiAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImVsZW1lbnQuZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSd0ZXh0MidcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZWxlbWVudC5kZXNjcmlwdGlvbilcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdlbWFpbFVwZGF0ZSdcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxpb24tcm93PiAgICBcclxuICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZWxlbWVudC5kZXNjcmlwdGlvbilcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgPGlvbi1yb3c+ICAgIFxyXG4gICAgICAgICAgICAgICA8aW9uLWNvbD4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiZW1haWxBZGRyZXNzXCIgc2l6ZT1cIjYwXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiZW1haWxBZGRyZXNzXCIgLz5cclxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgPGlvbi1jb2w+ICAgICAgIFxyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwic3VibWl0KClcIiB0eXBlPVwic3VibWl0XCI+U3VibWl0PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuXHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdyZXNlbmRlbWFpbCdcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz5JZiB5b3UgZGlkJ3QgZ2V0IGFuIGVtYWlsLCAgXHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsKClcIj4gY2xpY2sgaGVyZTwvYT4gYW5kIHdlJ2xsIHNlbmQgYWdhaW4uPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J3RleHQzJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWp1c3RpZnkgaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cInNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlbGVtZW50LmRlc2NyaXB0aW9uKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J3RleHQ0J1wiPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWp1c3RpZnkgaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cInNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlbGVtZW50LmRlc2NyaXB0aW9uKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWdyaWQ+XHJcblxyXG5cclxuICAgICAgPCEtLUZvciBidXR0b24tLT5cclxuICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgIGVsZW1lbnRzLmdldFZhbHVlKCk7ICBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J2J1dHRvbkFkZGphY2VudFRleHQnXCIgY2xhc3M9XCJpb24tdGV4dC1yaWdodCBpb24tcGFkZGluZy1lbmRcIiBzaXplPVwiMTJcIlxyXG4gICAgICAgICAgICAgIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCIxMFwiIHNpemVMZz1cIjhcIiBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1pb24tY29sb3ItZ3JleSk7XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdidXR0b25BZGRqYWNlbnRUZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgPGgzPnt7ZWxlbWVudC5kZXNjcmlwdGlvbn19PC9oMz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0nYnV0dG9uVGV4dCdcIiBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0IGlvbi1wYWRkaW5nLWVuZFwiIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCIxMFwiIHNpemVMZz1cIjhcIiBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J2J1dHRvblRleHQnXCIgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwib3BlblBhZ2UoKVwiIGNvbG9yPVwic3VjY2Vzc1wiIHNpemU9XCJiaWdcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2VsZW1lbnQuZGVzY3JpcHRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2lvbi1ncmlkPlxyXG5cclxuXHJcblxyXG4gICAgICA8IS0tQnV0dG9uLS0+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG4gIDwvYXBwLWNvbnRlbnQ+XHJcbjwvaW9uLWNvbnRlbnQ+Il19
528
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXN1Y2Nlc3MucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2NvbW1vbi1zdWNjZXNzL2NvbW1vbi1zdWNjZXNzLnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9jb21tb24tc3VjY2Vzcy9jb21tb24tc3VjY2Vzcy5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQW1DLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU1uRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDWnpDLGtEQUM4RTtJQUE5RSw2TUFBYyxlQUFBLGtCQUFXLENBQUEsSUFBQztJQUFvRCxpQkFBMEI7OztJQUQvRSxvREFBK0Isb0JBQUEsOEJBQUEsNEJBQUE7OztJQUV4RCxrQ0FBK0MsaUJBQUEsbUJBQUE7SUFHekMseUJBQTJFO0lBQUEsaUJBQVk7SUFDekYscUJBQUksc0JBQUE7SUFFTixpQkFBVSxFQUFBOzs7SUFIRCxlQUErRDtJQUEvRCw4R0FBK0Q7OztJQVN0RSwwQkFFTTs7O0lBRkQscUVBQWlDOzs7SUFEeEMsMkJBQWtFO0lBQ2hFLCtF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LENBQUMsRUFBRTtnQkFDSixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUM7b0JBQ2pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2lCQUN4RTtZQUNILENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtnQkFDSixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FDRixDQUFDO1NBQ0g7SUFDSixDQUFDO2tGQXRSUyxpQkFBaUI7b0VBQWpCLGlCQUFpQjtZQzNCOUIsa0NBQVk7WUFDVixnQ0FBaUQ7WUFDbkQsaUJBQWE7WUFFYixtQ0FBYSxxQkFBQTtZQUVULDBHQUN3Ryw2REFBQSxxREFBQTtZQWdJMUcsaUJBQWMsRUFBQTs7WUF0SUYsZUFBdUI7WUFBdkIscUNBQXVCO1lBSXRCLGVBQWtCO1lBQWxCLGdDQUFrQixvQkFBQTtZQUM2QixlQUFjO1lBQWQsbUNBQWM7WUFFMUMsZUFBZTtZQUFmLG9DQUFlO1lBU3ZDLGVBQXVDO1lBQXZDLGdFQUF1Qzs7O2lGRFVwQyxpQkFBaUI7Y0FMN0IsU0FBUzsyQkFDRSxnQkFBZ0I7O2tGQUlmLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgaW50ZXJ2YWwsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3VjY2Vzc1BhZ2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvU3VjY2Vzc1BhZ2VFbGVtZW50JztcclxuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9xdWVzdGlvbm5haXJlL3F1ZXN0aW9ubmFpcmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSAnLi4vLi4vLi4vcGFnZXMvQmFzZVBhZ2UnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbGFpbWFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGFpbWFudC1zZXJ2aWNlL2NsYWltYW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBTdGF0dXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL1N0YXR1c01vZGVsJztcclxuaW1wb3J0IHsgUG9sbGluZ1N0YXR1c01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvUG9sbGluZ1N0YXR1c01vZGVsJztcclxuaW1wb3J0IHsgU3RvcmFnZSB9IGZyb20gJ0Bpb25pYy9zdG9yYWdlLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBGYkNvbnN0YW50cyB9IGZyb20gJy4uL0ZiQ29uc3RhbnRzJztcclxuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZVF1ZXJ5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9RdWVzdGlvbm5haXJlUXVlcnlNb2RlbCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcXVlc3Rpb25uYWlyZS92YWxpZGF0aW9uLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb21tb24tc3VjY2VzcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbW1vbi1zdWNjZXNzLnBhZ2UuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29tbW9uLXN1Y2Nlc3MucGFnZS5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25TdWNjZXNzUGFnZSBleHRlbmRzIEJhc2VQYWdlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBjYWxsQ291bnQgOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBoZWFkaW5nID0gXCJcIjtcclxuICBwdWJsaWMgbWVzc2FnZSA9IFwiXCI7XHJcbiAgcHVibGljIHNob3dMb2FkZXJUaGVtZSA9IGZhbHNlO1xyXG4gIHBhZ2VUb09wZW46IHN0cmluZyA9IFwiXCI7XHJcbiAgdXVpZDogc3RyaW5nID0gXCJcIjtcclxuICB3YWl0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgd2FpdENoZWNrU2VydmljZVVyaTogc3RyaW5nID0gXCJcIjtcclxuICBwdWJsaWMgd2FpdGluZ01lc3NhZ2UgPSBcIlBsZWFzZSBXYWl0Li4uXCI7XHJcbiAgcHVibGljIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgZWxlbWVudHM6IEJlaGF2aW9yU3ViamVjdDxTdWNjZXNzUGFnZUVsZW1lbnRbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN1Y2Nlc3NQYWdlRWxlbWVudFtdPihudWxsKTtcclxuICBwdWJsaWMgc3VjY2Vzc1BhZ2VFbGVtZW50QXJyOiBCZWhhdmlvclN1YmplY3Q8U3VjY2Vzc1BhZ2VFbGVtZW50W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdWNjZXNzUGFnZUVsZW1lbnRbXT4obnVsbCk7XHJcbiAgcHVibGljIHN1Y2Nlc3NGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICBwb3BVcEhlYWRlcjogc3RyaW5nO1xyXG5cclxuICBkdXJhdGlvbiA9IDUwMDA7IC8vZGVmaW5lcyBtaWxsaXNlY29uZHMgYWZ0ZXIgd2hpY2ggYSBuZXcgcmVxdWVzdCB0byBiZSBzZW50IG91dFxyXG4gIHB1YmxpYyB0aW1lckludGVydmFsID0gaW50ZXJ2YWwodGhpcy5kdXJhdGlvbik7XHJcbiAgcHVibGljIGNvdW50RG93biA9IHRoaXMudGltZXJJbnRlcnZhbC5waXBlKHRha2UoMzApKTtcclxuXHJcbiAgdGltZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBjb3VudERvd25TdWJzY3JpcHRpb24gOyBTdWJzY3JpcHRpb247XHJcblxyXG4gIHFlUXVlcnlNb2RlbHMgOiBRdWVzdGlvbm5haXJlUXVlcnlNb2RlbFtdO1xyXG4gIGlzT3BlblFlIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHFlU3VjY2Vzc1VyaTogc3RyaW5nO1xyXG4gIHFlU3VjY2Vzc1dhaXRDaGVja1NlcnZpY2VVcmk6IHN0cmluZztcclxuICBxZVN1Y2Nlc3NXYWl0Rm9yUHJvY2Vzc2luZyA6IGJvb2xlYW47XHJcbiAgc3RhdHVzTW9kZWwgOiBTdGF0dXNNb2RlbCA9IG5ldyBTdGF0dXNNb2RlbCgpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBxdWVzdGlvbm5haXJlU2VydmljZTogUXVlc3Rpb25uYWlyZVNlcnZpY2UsIHB1YmxpYyBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSwgcHVibGljIGNsYWltYW50U2VydmljZTogQ2xhaW1hbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIHI6IFJvdXRlciwgcHVibGljIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIsIHB1YmxpYyBsczogTG9naW5TZXJ2aWNlLFxyXG4gICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgc3RvcmFnZSA6IFN0b3JhZ2UsIFxyXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZSA6IFZhbGlkYXRpb25TZXJ2aWNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICB0aGlzLnBvcFVwSGVhZGVyID0gXCJQcmVndW50YXMgZGUgc2VndWltaWVudG9cIjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucG9wVXBIZWFkZXIgPSBcIkZvbGxvdyB1cCBRdWVzdGlvbnNcIjtcclxuICAgIH1cclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiY29tbW9uLXN1Y2Nlc3MgcGFnZSAtIG5nIGluaXQgY2FsbGVkXCIpXHJcbiAgICB0aGlzLnV1aWQgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KEZiQ29uc3RhbnRzLnV1aWQpO1xyXG4gICAgdGhpcy53YWl0Q2hlY2tTZXJ2aWNlVXJpID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldChGYkNvbnN0YW50cy53YWl0Q2hlY2tTZXJ2aWNlVXJpKTtcclxuICAgIHRoaXMucGFnZVRvT3BlbiA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoRmJDb25zdGFudHMucGFnZVRvT3Blbik7XHJcbiAgICB0aGlzLndhaXQgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KEZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nKTtcclxuXHJcbiAgICB0aGlzLnN1Y2Nlc3NGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICdlbWFpbEFkZHJlc3MnOiBbXSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc3VjY2Vzc1BhZ2VFbGVtZW50QXJyLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmVsZW1lbnRzLm5leHQocmVzKTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy53YWl0KSB7XHJcbiAgICAgICAgdGhpcy5kb1BvbGxpbmdGb3JSZXF1ZXN0KHRoaXMudXVpZCwgdGhpcy53YWl0Q2hlY2tTZXJ2aWNlVXJpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAvL2ZvciBvdGhlciBjYXNlcyB3aGVyZSBzdGF0dXMgZW5kIHBvaW50IGlzIG5vdCBzZXQuXHJcbiAgICAgIHRoaXMuZWxlbWVudHMubmV4dChhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KEZiQ29uc3RhbnRzLnN1Y2Nlc3NQYWdlRWxlbWVudCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50aW1lclN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNvdW50RG93blN1YnNjcmlwdGlvbil7XHJcbiAgICAgIHRoaXMuY291bnREb3duU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKEZiQ29uc3RhbnRzLnN1Y2Nlc3NQYWdlRWxlbWVudCk7XHJcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKEZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nKTtcclxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoRmJDb25zdGFudHMud2FpdENoZWNrU2VydmljZVVyaSk7XHJcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKEZiQ29uc3RhbnRzLnBhZ2VUb09wZW4pO1xyXG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZShGYkNvbnN0YW50cy51dWlkKTtcclxuICB9XHJcblxyXG4gIGRvUG9sbGluZ0ZvclJlcXVlc3QodXVpZFRlbXA6IHN0cmluZywgd2FpdENoZWNrU2VydmljZVVyaVRlbXA6IHN0cmluZyl7XHJcbiAgICBjb25zb2xlLmxvZygnZG8gUG9sbGluZyBmb3IgcmVxdWVzdCBjYWxsZWQgPSAnLCB3YWl0Q2hlY2tTZXJ2aWNlVXJpVGVtcCk7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24gPSB0aGlzLnRpbWVySW50ZXJ2YWwucGlwZShcclxuICAgICAgICBzdGFydFdpdGgoMCksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucmV0cml2ZVBvbGxpbmdTdGF0dXNGb3JQYWdlKHV1aWRUZW1wLCB3YWl0Q2hlY2tTZXJ2aWNlVXJpVGVtcCkpXHJcbiAgICAgICkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGxldCBjb250aW51ZVdhaXRpbmcgPSByZXNbJ2NvbnRpbnVlV2FpdGluZyddO1xyXG4gICAgICAgIHRoaXMud2FpdGluZ01lc3NhZ2UgPSByZXNbJ3dhaXRpbmdNZXNzYWdlJ107XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYoY29udGludWVXYWl0aW5nICYmICsrdGhpcy5jYWxsQ291bnQgPj0gMTUpe1xyXG4gICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgdGhpcy53YWl0aW5nTWVzc2FnZSA9IFwiRXN0w6EgdGFyZGFuZG8gbcOhcyBkZSBsbyBoYWJpdHVhbCBwcm9jZXNhciBzdSBzb2xpY2l0dWQuPGJyLz4gTm8gYWN0dWFsaWNlIGxhIHDDoWdpbmEuXCJcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMud2FpdGluZ01lc3NhZ2UgPSBcIkl0J3MgdGFraW5nIGxvbmdlciB0aGFuIHVzdWFsIHRvIHByb2Nlc3MgeW91ciByZXF1ZXN0LiA8YnIvPiBEbyBub3QgcmVmcmVzaCB0aGUgcGFnZS5cIlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjb250aW51ZVdhaXRpbmcgJiYgdGhpcy5jYWxsQ291bnQgPiAyNSl7XHJcbiAgICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKHRoaXMubHMuaXNMb2dnZWRJbigpKXtcclxuICAgICAgICAgICAgdGhpcy5wYWdlVG9PcGVuID0gXCJ3ZWxjb21lXCI7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2VUb09wZW4gPSBcImxhbmRpbmdcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgdGhpcy5zdWNjZXNzUGFnZUVsZW1lbnRBcnIubmV4dChcclxuICAgICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAgIHt0eXBlOiAnaGVhZGVyJywgZGVzY3JpcHRpb246IFwiPGgxPsKhVXBzISBObyBzZSBwdWRvIHByb2Nlc2FyIHR1IHNvbGljaXR1ZC48L2gxPlxcdFxcdFwiLCBpbmRlbnQ6IDAsIGZvbnRTaXplOiAwfSxcclxuICAgICAgICAgICAgICAgICAge3R5cGU6ICdzdWJoaGVhZGVyJywgZGVzY3JpcHRpb246ICc8aDQ+UG9yIGZhdm9yLCBpbnTDqW50ZWxvIGRlIG51ZXZvIGRlc3B1w6lzIGRlIHVuIHRpZW1wby48aDQ+XFx0XFx0JywgaW5kZW50OiAwLCBmb250U2l6ZTogMH0sXHJcbiAgICAgICAgICAgICAgICAgIHt0eXBlOiAnYnV0dG9uVGV4dCcsIGRlc2NyaXB0aW9uOiAnQ2FzYScsIGluZGVudDogMCwgZm9udFNpemU6IDB9XHJcbiAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3NQYWdlRWxlbWVudEFyci5uZXh0KFxyXG4gICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAge3R5cGU6ICdoZWFkZXInLCBkZXNjcmlwdGlvbjogXCI8aDE+T29wcyEgY291bGQgbm90IHByb2Nlc3MgeW91ciByZXF1ZXN0LjwvaDE+XFx0XFx0XCIsIGluZGVudDogMCwgZm9udFNpemU6IDB9LFxyXG4gICAgICAgICAgICAgICAgICB7dHlwZTogJ3N1YmhoZWFkZXInLCBkZXNjcmlwdGlvbjogJzxoND5QbGVhc2UgdHJ5IGFnYWluIGFmdGVyIHNvbWUgdGltZS48aDQ+XFx0XFx0JywgaW5kZW50OiAwLCBmb250U2l6ZTogMH0sXHJcbiAgICAgICAgICAgICAgICAgIHt0eXBlOiAnYnV0dG9uVGV4dCcsIGRlc2NyaXB0aW9uOiAnSG9tZScsIGluZGVudDogMCwgZm9udFNpemU6IDB9XHJcbiAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAoIWNvbnRpbnVlV2FpdGluZykge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJzZW5kIGFub3RoZXIgcmVxdWVzdCB0byBmZXRjaCBwYWdlIGVsZW1lbnRzXCIpO1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2VTZXJ2aWNlRXAgPSByZXNbJ21lc3NhZ2VTZXJ2aWNlRXAnXTtcclxuICAgICAgICAgIHRoaXMud2FpdGluZ01lc3NhZ2UgPSByZXNbJ3dhaXRpbmdNZXNzYWdlJ107XHJcbiAgICAgICAgICB0aGlzLmZldGNoUGFnZUVsZW1lbnRzKG1lc3NhZ2VTZXJ2aWNlRXAsIHV1aWRUZW1wKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIHJlc3AgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RhdHVzTW9kZWwgID0gcmVzcDtcclxuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIiB0aGlzLnN0YXR1c01vZGVsIFwiLCB0aGlzLnN0YXR1c01vZGVsKTtcclxuICAgICAgICAgICAgICBpZihyZXNwWyduYXZpZ2F0ZUltbWVkaWF0ZWx5J10pe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTmV4dFBhZ2UocmVzcFsncGFnZVRvT3BlbiddKTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYocmVzcFsnc2hvd1FlJ10pe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJPcGVuIFF1ZXN0aW9ubmFpcmUgb3B0aW9uIGVuY291bnRlcmVkXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5xZVN1Y2Nlc3NXYWl0Q2hlY2tTZXJ2aWNlVXJpID0gdGhpcy5zdGF0dXNNb2RlbC5xZVN1Y2Nlc3NXYWl0Q2hlY2tTZXJ2aWNlVXJpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5xZVN1Y2Nlc3NXYWl0Rm9yUHJvY2Vzc2luZyA9IHRoaXMuc3RhdHVzTW9kZWwucWVTdWNjZXNzV2FpdEZvclByb2Nlc3Npbmc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnFlU3VjY2Vzc1VyaSA9IHRoaXMuc3RhdHVzTW9kZWwucWVTdWNjZXNzVXJpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5xZVN1Y2Nlc3NVcmkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnFlUXVlcnlNb2RlbHMgPSByZXNwLnFlUXVlcnlNb2RlbHM7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuUWUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiRGlyZWN0IHBvbGxpbmcgdG8gbmV3IHByb2Nlc3NcIik7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZG9Qb2xsaW5nRm9yUmVxdWVzdCh0aGlzLnV1aWQsIHRoaXMucWVTdWNjZXNzV2FpdENoZWNrU2VydmljZVVyaSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlVG9PcGVuID0gcmVzcFsncGFnZVRvT3BlbiddO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzUGFnZUVsZW1lbnRBcnIubmV4dChyZXNwWydzdWNjZXNzUGFnZUVsZW1lbnQnXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgdGhpcy5jb3VudERvd25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2h0dHAgZXJyb3IgcmVzcG9uc2UgPSAnLCBlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmV0cml2ZVBvbGxpbmdTdGF0dXNGb3JQYWdlKHV1aTEyOiBzdHJpbmcsIHdhaXRDaGVja1NlcnZpY2VVcmkxMjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiUG9sbGluZyBzZXJ2aWNlIFVSTCAtIFwiICsgd2FpdENoZWNrU2VydmljZVVyaTEyKTtcclxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldDxQb2xsaW5nU3RhdHVzTW9kZWw+KHdhaXRDaGVja1NlcnZpY2VVcmkxMiArIHV1aTEyKTtcclxuICB9XHJcblxyXG4gIGZldGNoUGFnZUVsZW1lbnRzKG1lc3NhZ2VTZXJ2aWNlRXA6IHN0cmluZywgdXVpMTI6IHN0cmluZyk6IE9ic2VydmFibGU8U3RhdHVzTW9kZWw+IHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiUGFnZSBlbGVtZW50IHNlcnZpY2UgVVJMIC0gXCIgKyBtZXNzYWdlU2VydmljZUVwKTtcclxuICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldDxTdGF0dXNNb2RlbD4obWVzc2FnZVNlcnZpY2VFcCArIHV1aTEyKTtcclxuICB9XHJcblxyXG4gIGdldCBlbWFpbEFkZHJlc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdWNjZXNzRm9ybS5jb250cm9sc1snZW1haWxBZGRyZXNzJ107XHJcbiAgfVxyXG5cclxuICByZXNlbmRWZXJpZmljYXRpb25FbWFpbCgpIHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdyZXNlbmRWZXJpZmljYXRpb25FbWFpbCcpO1xyXG4gICAgdGhpcy5zaG93TG9hZGVyVGhlbWUgPSBmYWxzZTtcclxuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UudXVpZC5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5jbGFpbWFudFNlcnZpY2UucmVzZW5kVmVyaWZpY2F0aW9uRW1haWwocGFyYW1zLnZhbHVlT2YoKSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyVGhlbWUgPSBmYWxzZTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnRXJyb3InLCBlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlclRoZW1lID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0Rm9udFNpemUoZm9udHNpemU6IG51bWJlcik6IG9iamVjdCB7XHJcbiAgICBpZiAoZm9udHNpemUgPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2ZvbnRzaXplJywgZm9udHNpemUpO1xyXG4gICAgbGV0IHN0eWxlT2JqID0ge1xyXG4gICAgICAnZm9udC1zaXplJzogZm9udHNpemUgKyAncHgnXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcclxuICB9XHJcblxyXG4gIG9wZW5OZXh0UGFnZShwYWdlVG9PcGVuKXtcclxuICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIHBhZ2VUb09wZW4sICdfc2VsZicpO1xyXG4gIH1cclxuXHJcbiAgb3BlblBhZ2UoKSB7XHJcblxyXG4gICAgbGV0IGN1cnJlbnRDb250ZXh0Um9vdCA9IHRoaXMuZ2V0Q29udGV4dFJvb3QoKTtcclxuICAgIGlmICh0aGlzLnBhZ2VUb09wZW4gJiYgdGhpcy5wYWdlVG9PcGVuLnN1YnN0cmluZygwLCA0KSAhPSAnL2NwLycgJiYgdGhpcy5wYWdlVG9PcGVuICYmIHRoaXMucGFnZVRvT3BlbiAhPSAnT3BlblBhZ2UnKSB7XHJcbiAgICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZUZvcndhcmQoW3RoaXMucGFnZVRvT3Blbl0sIHsgcXVlcnlQYXJhbXM6IHsgaWRlbnRpZmllcjogdGhpcy51dWlkIH0gfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCB1cmw6IHN0cmluZyA9IFwiL2NwL2xhbmRpbmdcIjtcclxuICAgICAgaWYgKHRoaXMucGFnZVRvT3BlbiAmJiB0aGlzLnBhZ2VUb09wZW4gIT0gJ09wZW5QYWdlJykge1xyXG4gICAgICAgIHVybCA9IHRoaXMucGFnZVRvT3BlbjtcclxuICAgICAgfVxyXG4gICAgICB3aW5kb3cub3Blbihsb2NhdGlvbi5vcmlnaW4gKyB1cmwsICdfc2VsZicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldENvbnRleHRSb290KCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMCwgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLmluZGV4T2YoXCIvXCIsIDIpKTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTdWNjZXNzIGNhbGxlZCcsIHRoaXMuZW1haWxBZGRyZXNzLnZhbHVlLCAnIHV1aWQgJywgdGhpcy51dWlkKTtcclxuICAgIHRoaXMuY2xhaW1hbnRTZXJ2aWNlLnVwZGF0ZUVtYWlsKHRoaXMuZW1haWxBZGRyZXNzLnZhbHVlLCB0aGlzLnV1aWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICB0aGlzLnNob3dMb2FkZXJUaGVtZSA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdFcnJvcicsIGVycik7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5zaG93TG9hZGVyVGhlbWUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBxdVN1Y2Nlc3MoKXtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwicWUgc3VjY2VzcyBoZXJlXCIpO1xyXG4gICAgaWYodGhpcy5pc09wZW5RZSl7ICBcclxuICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5wb3N0KHRoaXMucWVTdWNjZXNzVXJpLCBudWxsKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICByZXMgPT4geyAgXHJcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuUWUgPSBmYWxzZTsgICAgICAgICBcclxuICAgICAgICAgICAgaWYodGhpcy5xZVN1Y2Nlc3NXYWl0Rm9yUHJvY2Vzc2luZyl7XHJcbiAgICAgICAgICAgICAgdGhpcy5kb1BvbGxpbmdGb3JSZXF1ZXN0KHRoaXMudXVpZCwgdGhpcy5xZVN1Y2Nlc3NXYWl0Q2hlY2tTZXJ2aWNlVXJpKTtcclxuICAgICAgICAgICAgfSAgICAgICAgICAgIFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdFcnJvcicsIGVycik7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbn1cclxuIiwiPGlvbi1oZWFkZXI+XHJcbiAgPGFwcC1oZWFkZXIgW3NlY29uZFRvb2xiYXJdPVwiZmFsc2VcIj48L2FwcC1oZWFkZXI+XHJcbjwvaW9uLWhlYWRlcj5cclxuXHJcbjxpb24tY29udGVudD5cclxuICA8YXBwLWNvbnRlbnQgW3Nob3dIZWxwXT1cImZhbHNlXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiPlxyXG4gICAgPGFwcC1tdWx0aS1xdWVzdGlvbm5haXJlIFtxZVF1ZXJ5TW9kZWxzXT1cInFlUXVlcnlNb2RlbHNcIiAqbmdJZj1cImlzT3BlblFlXCIgW3Nob3dDbG9zZV09XCJmYWxzZVwiIFxyXG4gICAgKG9uQ29tcGxldGUpPVwicXVTdWNjZXNzKClcIiBbaGVhZGVyXT1cInBvcFVwSGVhZGVyXCIgW3Nob3dRdWVzdGlvbk51bWJlcl09XCJ0cnVlXCI+PC9hcHAtbXVsdGktcXVlc3Rpb25uYWlyZT5cclxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLXBhZGRpbmdcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxyXG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgIDxpb24tbGFiZWwgIGNsYXNzPVwiYm94XCJzdHlsZT1cImNvbG9yOnZhcigtLWlvbi1jb2xvci1ncmV5KTsgZm9udC1zaXplOiAyNHB4XCI+XHJcbiAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwic2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHdhaXRpbmdNZXNzYWdlKVwiPjwvZGl2PjwvaW9uLWxhYmVsPlxyXG4gICAgICAgIDxicj5cclxuICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIj48L2lvbi1zcGlubmVyPlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImVsZW1lbnRzLmdldFZhbHVlKCkgJiYgIWlzTG9hZGluZ1wiPlxyXG5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiAgZWxlbWVudHMuZ2V0VmFsdWUoKTsgIGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZWxlbWVudC5kZXNjcmlwdGlvblwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIiAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0naGVhZGVyJ1wiXHJcbiAgICAgICAgICBzdHlsZT1cImNvbG9yOnZhcigtLWlvbi1jb2xvci1ncmV5KTtcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMjVweDtcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiAgZWxlbWVudHMuZ2V0VmFsdWUoKTsgIGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdzdWJoaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciAgaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImVsZW1lbnQuZGVzY3JpcHRpb25cIiBjbGFzcz1cImJveFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweDtcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjp2YXIoLS1pb24tY29sb3ItZ3JleSk7XCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuXHJcbiAgICAgICAgICA8aW9uLXJvdyAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0ndGV4dDEnXCI+XHJcbiAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCJcclxuICAgICAgICAgICAgICBzaXplWGw9XCI4XCIgb2Zmc2V0TWQ9XCIxXCIgb2Zmc2V0WGw9XCIyXCIgb2Zmc2V0TGc9XCIyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImVsZW1lbnQuZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSd0ZXh0MidcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZWxlbWVudC5kZXNjcmlwdGlvbilcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdlbWFpbFVwZGF0ZSdcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxpb24tcm93PiAgICBcclxuICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZWxlbWVudC5kZXNjcmlwdGlvbilcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgPGlvbi1yb3c+ICAgIFxyXG4gICAgICAgICAgICAgICA8aW9uLWNvbD4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiZW1haWxBZGRyZXNzXCIgc2l6ZT1cIjYwXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiZW1haWxBZGRyZXNzXCIgLz5cclxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgPGlvbi1jb2w+IFxyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwic3VibWl0KClcIiB0eXBlPVwic3VibWl0XCI+e3snY29tbW9uLnN1Ym1pdCd8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuXHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdyZXNlbmRlbWFpbCdcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz57eydlbWFpbC5uby5lbWFpbCd8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsKClcIj4ge3snZW1haWwuY2xpY2suaGVyZSd8IHRyYW5zbGF0ZX19PC9hPiB7eydlbWFpbC53ZS53aWxsLnNlbmQnfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSd0ZXh0MydcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZWxlbWVudC5kZXNjcmlwdGlvbilcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSd0ZXh0NCdcIj5cclxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1qdXN0aWZ5IGlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiOFwiXHJcbiAgICAgICAgICAgICAgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZWxlbWVudC5kZXNjcmlwdGlvbilcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1ncmlkPlxyXG5cclxuXHJcbiAgICAgIDwhLS1Gb3IgYnV0dG9uLS0+XHJcbiAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mICBlbGVtZW50cy5nZXRWYWx1ZSgpOyAgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdidXR0b25BZGRqYWNlbnRUZXh0J1wiIGNsYXNzPVwiaW9uLXRleHQtcmlnaHQgaW9uLXBhZGRpbmctZW5kXCIgc2l6ZT1cIjEyXCJcclxuICAgICAgICAgICAgICBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCIgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIHN0eWxlPVwiY29sb3I6dmFyKC0taW9uLWNvbG9yLWdyZXkpO1wiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0nYnV0dG9uQWRkamFjZW50VGV4dCdcIj5cclxuICAgICAgICAgICAgICAgIDxoMz57e2VsZW1lbnQuZGVzY3JpcHRpb259fTwvaDM+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09J2J1dHRvblRleHQnXCIgY2xhc3M9XCJpb24tdGV4dC1yaWdodCBpb24tcGFkZGluZy1lbmRcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI4XCIgc2l6ZVhsPVwiOFwiIG9mZnNldE1kPVwiMVwiIG9mZnNldFhsPVwiMlwiIG9mZnNldExnPVwiMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSdidXR0b25UZXh0J1wiIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cImVsZW1lbnQuZGVzY3JpcHRpb24gPT09ICdTdWJtaXQnOyBlbHNlIGRlZmF1bHRCdXR0b25cIiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cIm9wZW5QYWdlKClcIiBjb2xvcj1cInN1Y2Nlc3NcIiBzaXplPVwiYmlnXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3snY29tbW9uLnN1Ym1pdCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRCdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cIm9wZW5QYWdlKClcIiBjb2xvcj1cInN1Y2Nlc3NcIiBzaXplPVwiYmlnXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2VsZW1lbnQuZGVzY3JpcHRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9pb24tZ3JpZD5cclxuXHJcblxyXG5cclxuICAgICAgPCEtLUJ1dHRvbi0tPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuICA8L2FwcC1jb250ZW50PlxyXG48L2lvbi1jb250ZW50PiJdfQ==