@hmcts/ccpay-web-component 5.0.8-beta05 → 5.0.8-beta11

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 (171) hide show
  1. package/bundles/hmcts-ccpay-web-component.umd.js +972 -7133
  2. package/bundles/hmcts-ccpay-web-component.umd.js.map +1 -1
  3. package/bundles/hmcts-ccpay-web-component.umd.min.js +2 -2
  4. package/bundles/hmcts-ccpay-web-component.umd.min.js.map +1 -1
  5. package/esm2015/hmcts-ccpay-web-component.js +2 -7
  6. package/esm2015/lib/components/add-remission/add-remission.component.js +43 -408
  7. package/esm2015/lib/components/allocate-payments/allocate-payments.component.js +46 -349
  8. package/esm2015/lib/components/card-details/card-details.component.js +7 -47
  9. package/esm2015/lib/components/case-transactions/case-transactions.component.js +112 -687
  10. package/esm2015/lib/components/error-banner/error-banner.component.js +2 -15
  11. package/esm2015/lib/components/fee-summary/fee-summary.component.js +36 -255
  12. package/esm2015/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +29 -182
  13. package/esm2015/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +33 -226
  14. package/esm2015/lib/components/page-not-found.component.js +2 -7
  15. package/esm2015/lib/components/payment-list/payment-list.component.js +7 -48
  16. package/esm2015/lib/components/payment-view/payment-view.component.js +44 -336
  17. package/esm2015/lib/components/pba-details/pba-details.component.js +2 -15
  18. package/esm2015/lib/components/pba-payment/pba-payment.component.js +15 -119
  19. package/esm2015/lib/components/process-refund/process-refund.component.js +23 -178
  20. package/esm2015/lib/components/processed-payments/processed-payments.component.js +6 -41
  21. package/esm2015/lib/components/refund-list/refund-list.component.js +12 -78
  22. package/esm2015/lib/components/refund-status/refund-status.component.js +30 -255
  23. package/esm2015/lib/components/reports/reports.component.js +28 -213
  24. package/esm2015/lib/components/service-request/service-request.component.js +40 -369
  25. package/esm2015/lib/components/status-history/status-history.component.js +7 -44
  26. package/esm2015/lib/components/table/table.component.js +13 -107
  27. package/esm2015/lib/components/unprocessed-payments/unprocessed-payments.component.js +18 -184
  28. package/esm2015/lib/interfaces/AddRemissionRequest.js +1 -29
  29. package/esm2015/lib/interfaces/AddRetroRemissionRequest.js +1 -16
  30. package/esm2015/lib/interfaces/AllocatePaymentRequest.js +1 -43
  31. package/esm2015/lib/interfaces/IAllocationPaymentsRequest.js +1 -27
  32. package/esm2015/lib/interfaces/IBSPayments.js +1 -46
  33. package/esm2015/lib/interfaces/ICardDetails.js +1 -22
  34. package/esm2015/lib/interfaces/IFee.js +1 -54
  35. package/esm2015/lib/interfaces/IOrderReferenceFee.js +1 -26
  36. package/esm2015/lib/interfaces/IPatchRefundAction.js +1 -16
  37. package/esm2015/lib/interfaces/IPayment.js +1 -66
  38. package/esm2015/lib/interfaces/IPaymentFailure.js +1 -34
  39. package/esm2015/lib/interfaces/IPaymentGroup.js +1 -20
  40. package/esm2015/lib/interfaces/IPaymentStatus.js +1 -26
  41. package/esm2015/lib/interfaces/IPaymentView.js +1 -18
  42. package/esm2015/lib/interfaces/IPayments.js +1 -14
  43. package/esm2015/lib/interfaces/IRefundAction.js +1 -16
  44. package/esm2015/lib/interfaces/IRefundList.js +1 -30
  45. package/esm2015/lib/interfaces/IRefundReasons.js +1 -20
  46. package/esm2015/lib/interfaces/IRefundRejectReason.js +1 -16
  47. package/esm2015/lib/interfaces/IRefundStatus.js +1 -24
  48. package/esm2015/lib/interfaces/IRefundStatusHistory.js +1 -16
  49. package/esm2015/lib/interfaces/IRemission.js +1 -26
  50. package/esm2015/lib/interfaces/IResubmitRefundRequest.js +1 -16
  51. package/esm2015/lib/interfaces/IStatusHistories.js +1 -20
  52. package/esm2015/lib/interfaces/IStatusHistory.js +1 -22
  53. package/esm2015/lib/interfaces/IserviceRequestCardPayment.js +1 -17
  54. package/esm2015/lib/interfaces/IserviceRequestPbaPayment.js +1 -24
  55. package/esm2015/lib/interfaces/IssueRefundRequest.js +1 -19
  56. package/esm2015/lib/interfaces/PayhubAntennaRequest.js +2 -22
  57. package/esm2015/lib/interfaces/PaymentToPayhubRequest.js +2 -28
  58. package/esm2015/lib/interfaces/PostIssueRefundRetroRemission.js +1 -13
  59. package/esm2015/lib/interfaces/PostRefundRetroRemission.js +1 -16
  60. package/esm2015/lib/interfaces/RefundsRequest.js +1 -16
  61. package/esm2015/lib/interfaces/UnidentifiedPaymentsRequest.js +1 -21
  62. package/esm2015/lib/interfaces/UnsolicitedPaymentsRequest.js +1 -30
  63. package/esm2015/lib/payment-lib.component.js +8 -149
  64. package/esm2015/lib/payment-lib.module.js +1 -6
  65. package/esm2015/lib/payment-lib.service.js +2 -46
  66. package/esm2015/lib/pipes/capitalize.pipe.js +1 -12
  67. package/esm2015/lib/pipes/ccd-hyphens.pipe.js +1 -13
  68. package/esm2015/lib/pipes/key-value.pipe.js +1 -12
  69. package/esm2015/lib/pipes/sanitize-html.pipe.js +5 -22
  70. package/esm2015/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +15 -103
  71. package/esm2015/lib/services/card-details/card-details.service.js +8 -40
  72. package/esm2015/lib/services/case-transactions/case-transactions.service.js +8 -40
  73. package/esm2015/lib/services/orderslist.service.js +2 -252
  74. package/esm2015/lib/services/payment-list/payment-list.service.js +8 -43
  75. package/esm2015/lib/services/payment-view/payment-view.service.js +11 -170
  76. package/esm2015/lib/services/refunds/refunds.service.js +14 -110
  77. package/esm2015/lib/services/shared/error-handler.service.js +2 -20
  78. package/esm2015/lib/services/shared/httpclient/webcomponent.http.client.js +10 -83
  79. package/esm2015/lib/services/shared/logger/console-logger.service.js +3 -28
  80. package/esm2015/lib/services/shared/logger/logger.service.js +3 -36
  81. package/esm2015/lib/services/status-history/status-history.service.js +8 -41
  82. package/esm2015/lib/services/xl-file/xl-file.service.js +2 -61
  83. package/esm2015/public_api.js +4 -9
  84. package/esm5/hmcts-ccpay-web-component.js +2 -7
  85. package/esm5/lib/components/add-remission/add-remission.component.js +65 -506
  86. package/esm5/lib/components/allocate-payments/allocate-payments.component.js +63 -411
  87. package/esm5/lib/components/card-details/card-details.component.js +10 -49
  88. package/esm5/lib/components/case-transactions/case-transactions.component.js +149 -842
  89. package/esm5/lib/components/error-banner/error-banner.component.js +3 -19
  90. package/esm5/lib/components/fee-summary/fee-summary.component.js +51 -310
  91. package/esm5/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +38 -216
  92. package/esm5/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +44 -270
  93. package/esm5/lib/components/page-not-found.component.js +2 -7
  94. package/esm5/lib/components/payment-list/payment-list.component.js +9 -55
  95. package/esm5/lib/components/payment-view/payment-view.component.js +69 -419
  96. package/esm5/lib/components/pba-details/pba-details.component.js +3 -19
  97. package/esm5/lib/components/pba-payment/pba-payment.component.js +21 -141
  98. package/esm5/lib/components/process-refund/process-refund.component.js +32 -262
  99. package/esm5/lib/components/processed-payments/processed-payments.component.js +9 -53
  100. package/esm5/lib/components/refund-list/refund-list.component.js +13 -79
  101. package/esm5/lib/components/refund-status/refund-status.component.js +46 -322
  102. package/esm5/lib/components/reports/reports.component.js +41 -268
  103. package/esm5/lib/components/service-request/service-request.component.js +58 -439
  104. package/esm5/lib/components/status-history/status-history.component.js +8 -44
  105. package/esm5/lib/components/table/table.component.js +21 -143
  106. package/esm5/lib/components/unprocessed-payments/unprocessed-payments.component.js +31 -242
  107. package/esm5/lib/interfaces/AddRemissionRequest.js +1 -22
  108. package/esm5/lib/interfaces/AddRetroRemissionRequest.js +1 -12
  109. package/esm5/lib/interfaces/AllocatePaymentRequest.js +1 -36
  110. package/esm5/lib/interfaces/IAllocationPaymentsRequest.js +1 -20
  111. package/esm5/lib/interfaces/IBSPayments.js +1 -46
  112. package/esm5/lib/interfaces/ICardDetails.js +1 -22
  113. package/esm5/lib/interfaces/IFee.js +1 -54
  114. package/esm5/lib/interfaces/IOrderReferenceFee.js +1 -26
  115. package/esm5/lib/interfaces/IPatchRefundAction.js +1 -16
  116. package/esm5/lib/interfaces/IPayment.js +1 -66
  117. package/esm5/lib/interfaces/IPaymentFailure.js +1 -34
  118. package/esm5/lib/interfaces/IPaymentGroup.js +1 -20
  119. package/esm5/lib/interfaces/IPaymentStatus.js +1 -26
  120. package/esm5/lib/interfaces/IPaymentView.js +1 -18
  121. package/esm5/lib/interfaces/IPayments.js +1 -14
  122. package/esm5/lib/interfaces/IRefundAction.js +1 -16
  123. package/esm5/lib/interfaces/IRefundList.js +1 -30
  124. package/esm5/lib/interfaces/IRefundReasons.js +1 -20
  125. package/esm5/lib/interfaces/IRefundRejectReason.js +1 -16
  126. package/esm5/lib/interfaces/IRefundStatus.js +1 -24
  127. package/esm5/lib/interfaces/IRefundStatusHistory.js +1 -16
  128. package/esm5/lib/interfaces/IRemission.js +1 -26
  129. package/esm5/lib/interfaces/IResubmitRefundRequest.js +1 -12
  130. package/esm5/lib/interfaces/IStatusHistories.js +1 -20
  131. package/esm5/lib/interfaces/IStatusHistory.js +1 -22
  132. package/esm5/lib/interfaces/IserviceRequestCardPayment.js +1 -14
  133. package/esm5/lib/interfaces/IserviceRequestPbaPayment.js +1 -18
  134. package/esm5/lib/interfaces/IssueRefundRequest.js +1 -14
  135. package/esm5/lib/interfaces/PayhubAntennaRequest.js +2 -17
  136. package/esm5/lib/interfaces/PaymentToPayhubRequest.js +2 -23
  137. package/esm5/lib/interfaces/PostIssueRefundRetroRemission.js +1 -10
  138. package/esm5/lib/interfaces/PostRefundRetroRemission.js +1 -12
  139. package/esm5/lib/interfaces/RefundsRequest.js +1 -12
  140. package/esm5/lib/interfaces/UnidentifiedPaymentsRequest.js +1 -16
  141. package/esm5/lib/interfaces/UnsolicitedPaymentsRequest.js +1 -22
  142. package/esm5/lib/payment-lib.component.js +10 -152
  143. package/esm5/lib/payment-lib.module.js +1 -6
  144. package/esm5/lib/payment-lib.service.js +10 -82
  145. package/esm5/lib/pipes/capitalize.pipe.js +2 -18
  146. package/esm5/lib/pipes/ccd-hyphens.pipe.js +2 -19
  147. package/esm5/lib/pipes/key-value.pipe.js +2 -17
  148. package/esm5/lib/pipes/sanitize-html.pipe.js +6 -24
  149. package/esm5/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +24 -148
  150. package/esm5/lib/services/card-details/card-details.service.js +9 -39
  151. package/esm5/lib/services/case-transactions/case-transactions.service.js +9 -39
  152. package/esm5/lib/services/orderslist.service.js +38 -414
  153. package/esm5/lib/services/payment-list/payment-list.service.js +9 -43
  154. package/esm5/lib/services/payment-view/payment-view.service.js +36 -302
  155. package/esm5/lib/services/refunds/refunds.service.js +25 -159
  156. package/esm5/lib/services/shared/error-handler.service.js +4 -32
  157. package/esm5/lib/services/shared/httpclient/webcomponent.http.client.js +16 -117
  158. package/esm5/lib/services/shared/logger/console-logger.service.js +10 -40
  159. package/esm5/lib/services/shared/logger/logger.service.js +5 -49
  160. package/esm5/lib/services/status-history/status-history.service.js +9 -41
  161. package/esm5/lib/services/xl-file/xl-file.service.js +10 -111
  162. package/esm5/public_api.js +4 -9
  163. package/fesm2015/hmcts-ccpay-web-component.js +626 -5699
  164. package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
  165. package/fesm5/hmcts-ccpay-web-component.js +972 -7137
  166. package/fesm5/hmcts-ccpay-web-component.js.map +1 -1
  167. package/hmcts-ccpay-web-component.metadata.json +1 -1
  168. package/lib/components/card-details/card-details.component.d.ts +1 -1
  169. package/lib/components/payment-view/payment-view.component.d.ts +2 -2
  170. package/lib/services/shared/logger/console-logger.service.d.ts +3 -3
  171. package/package.json +2 -2
@@ -1,10 +1,5 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: lib/components/mark-unidentified-payment/mark-unidentified-payment.component.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
1
  import { Component, Input } from '@angular/core';
7
- import { FormBuilder, Validators, FormControl } from '@angular/forms';
2
+ import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
8
3
  import { PaymentLibComponent } from '../../payment-lib.component';
9
4
  import { PaymentViewService } from '../../services/payment-view/payment-view.service';
10
5
  import { BulkScaningPaymentService } from '../../services/bulk-scaning-payment/bulk-scaning-payment.service';
@@ -27,13 +22,7 @@ var MarkUnidentifiedPaymentComponent = /** @class */ (function () {
27
22
  this.exceptionReference = null;
28
23
  this.isStrategicFixEnable = true;
29
24
  }
30
- /**
31
- * @return {?}
32
- */
33
- MarkUnidentifiedPaymentComponent.prototype.ngOnInit = /**
34
- * @return {?}
35
- */
36
- function () {
25
+ MarkUnidentifiedPaymentComponent.prototype.ngOnInit = function () {
37
26
  this.viewStatus = 'mainForm';
38
27
  this.ccdCaseNumber = this.paymentLibComponent.CCD_CASE_NUMBER;
39
28
  this.bspaymentdcn = this.paymentLibComponent.bspaymentdcn;
@@ -48,66 +37,27 @@ var MarkUnidentifiedPaymentComponent = /** @class */ (function () {
48
37
  ]))
49
38
  });
50
39
  };
51
- /**
52
- * @return {?}
53
- */
54
- MarkUnidentifiedPaymentComponent.prototype.getUnassignedPayment = /**
55
- * @return {?}
56
- */
57
- function () {
40
+ MarkUnidentifiedPaymentComponent.prototype.getUnassignedPayment = function () {
58
41
  var _this = this;
59
- this.bulkScaningPaymentService.getBSPaymentsByDCN(this.bspaymentdcn).subscribe((/**
60
- * @param {?} unassignedPayments
61
- * @return {?}
62
- */
63
- function (unassignedPayments) {
42
+ this.bulkScaningPaymentService.getBSPaymentsByDCN(this.bspaymentdcn).subscribe(function (unassignedPayments) {
64
43
  _this.errorMessage = _this.getErrorMessage(false);
65
- _this.unassignedRecord = unassignedPayments['data'].payments.filter((/**
66
- * @param {?} payment
67
- * @return {?}
68
- */
69
- function (payment) {
44
+ _this.unassignedRecord = unassignedPayments['data'].payments.filter(function (payment) {
70
45
  return payment && payment.dcn_reference == _this.bspaymentdcn;
71
- }))[0];
46
+ })[0];
72
47
  _this.siteID = unassignedPayments['data'].responsible_service_id;
73
- /** @type {?} */
74
- var beCcdNumber = unassignedPayments['data'].ccd_reference;
75
- /** @type {?} */
76
- var beExceptionNumber = unassignedPayments['data'].exception_record_reference;
77
- /** @type {?} */
78
- var exceptionReference = beCcdNumber ? beCcdNumber === _this.ccdCaseNumber ? null : _this.ccdCaseNumber : _this.ccdCaseNumber;
48
+ var beCcdNumber = unassignedPayments['data'].ccd_reference, beExceptionNumber = unassignedPayments['data'].exception_record_reference, exceptionReference = beCcdNumber ? beCcdNumber === _this.ccdCaseNumber ? null : _this.ccdCaseNumber : _this.ccdCaseNumber;
79
49
  _this.ccdReference = beCcdNumber ? beCcdNumber : null;
80
50
  _this.exceptionReference = beExceptionNumber ? beExceptionNumber : exceptionReference;
81
- }), (/**
82
- * @param {?} error
83
- * @return {?}
84
- */
85
- function (error) {
51
+ }, function (error) {
86
52
  _this.errorMessage = _this.getErrorMessage(true);
87
- }));
53
+ });
88
54
  };
89
- /**
90
- * @param {?} method
91
- * @return {?}
92
- */
93
- MarkUnidentifiedPaymentComponent.prototype.trimUnderscore = /**
94
- * @param {?} method
95
- * @return {?}
96
- */
97
- function (method) {
55
+ MarkUnidentifiedPaymentComponent.prototype.trimUnderscore = function (method) {
98
56
  return this.bulkScaningPaymentService.removeUnwantedString(method, ' ');
99
57
  };
100
- /**
101
- * @return {?}
102
- */
103
- MarkUnidentifiedPaymentComponent.prototype.saveAndContinue = /**
104
- * @return {?}
105
- */
106
- function () {
58
+ MarkUnidentifiedPaymentComponent.prototype.saveAndContinue = function () {
107
59
  this.resetForm([false, false, false, false]);
108
- /** @type {?} */
109
60
  var investicationField = this.markPaymentUnidentifiedForm.controls.investicationDetail;
110
- /** @type {?} */
111
61
  var formerror = investicationField.errors;
112
62
  if (this.markPaymentUnidentifiedForm.dirty && this.markPaymentUnidentifiedForm.valid) {
113
63
  this.investigationComment = this.markPaymentUnidentifiedForm.controls.investicationDetail.value;
@@ -128,33 +78,17 @@ var MarkUnidentifiedPaymentComponent = /** @class */ (function () {
128
78
  }
129
79
  }
130
80
  };
131
- /**
132
- * @param {?} val
133
- * @return {?}
134
- */
135
- MarkUnidentifiedPaymentComponent.prototype.resetForm = /**
136
- * @param {?} val
137
- * @return {?}
138
- */
139
- function (val) {
81
+ MarkUnidentifiedPaymentComponent.prototype.resetForm = function (val) {
140
82
  this.isInvesticationDetailEmpty = val[0];
141
83
  this.investicationDetailHasError = val[1];
142
84
  this.investicationDetailMinHasError = val[2];
143
85
  this.investicationDetailMaxHasError = val[3];
144
86
  };
145
- /**
146
- * @return {?}
147
- */
148
- MarkUnidentifiedPaymentComponent.prototype.confirmPayments = /**
149
- * @return {?}
150
- */
151
- function () {
87
+ MarkUnidentifiedPaymentComponent.prototype.confirmPayments = function () {
152
88
  var _this = this;
153
89
  this.isConfirmButtondisabled = true;
154
- /** @type {?} */
155
90
  var reason = this.markPaymentUnidentifiedForm.get('investicationDetail').value;
156
91
  if (!this.isStrategicFixEnable) {
157
- /** @type {?} */
158
92
  var allocatedRequest = {
159
93
  allocation_status: 'Unidentified',
160
94
  payment_allocation_status: {
@@ -164,97 +98,50 @@ var MarkUnidentifiedPaymentComponent = /** @class */ (function () {
164
98
  unidentified_reason: reason,
165
99
  user_id: this.caseType,
166
100
  };
167
- /** @type {?} */
168
101
  var postStrategicBody = new AllocatePaymentRequest(this.ccdReference, this.unassignedRecord, this.caseType, this.exceptionReference, allocatedRequest);
169
- this.bulkScaningPaymentService.postBSWoPGStrategic(postStrategicBody).subscribe((/**
170
- * @param {?} res
171
- * @return {?}
172
- */
173
- function (res) {
102
+ this.bulkScaningPaymentService.postBSWoPGStrategic(postStrategicBody).subscribe(function (res) {
174
103
  _this.errorMessage = _this.getErrorMessage(false);
175
- /** @type {?} */
176
104
  var response = JSON.parse(res);
177
105
  if (response.success) {
178
106
  _this.gotoCasetransationPage();
179
107
  }
180
- }), (/**
181
- * @param {?} error
182
- * @return {?}
183
- */
184
- function (error) {
108
+ }, function (error) {
185
109
  _this.errorMessage = _this.getErrorMessage(true);
186
110
  _this.isConfirmButtondisabled = false;
187
- }));
111
+ });
188
112
  }
189
113
  else {
190
- this.bulkScaningPaymentService.patchBSChangeStatus(this.unassignedRecord.dcn_reference, 'PROCESSED').subscribe((/**
191
- * @param {?} res1
192
- * @return {?}
193
- */
194
- function (res1) {
114
+ this.bulkScaningPaymentService.patchBSChangeStatus(this.unassignedRecord.dcn_reference, 'PROCESSED').subscribe(function (res1) {
195
115
  _this.errorMessage = _this.getErrorMessage(false);
196
- /** @type {?} */
197
116
  var requestBody = new AllocatePaymentRequest(_this.ccdReference, _this.unassignedRecord, _this.siteID, _this.exceptionReference);
198
- _this.paymentViewService.postBSPayments(requestBody).subscribe((/**
199
- * @param {?} res2
200
- * @return {?}
201
- */
202
- function (res2) {
117
+ _this.paymentViewService.postBSPayments(requestBody).subscribe(function (res2) {
203
118
  _this.errorMessage = _this.getErrorMessage(false);
204
- /** @type {?} */
205
- var response2 = JSON.parse(res2);
206
- /** @type {?} */
207
- var reqBody = new UnidentifiedPaymentsRequest(response2['data'].payment_group_reference, response2['data'].reference, reason);
119
+ var response2 = JSON.parse(res2), reqBody = new UnidentifiedPaymentsRequest(response2['data'].payment_group_reference, response2['data'].reference, reason);
208
120
  if (response2.success) {
209
- _this.paymentViewService.postBSUnidentifiedPayments(reqBody).subscribe((/**
210
- * @param {?} res3
211
- * @return {?}
212
- */
213
- function (res3) {
121
+ _this.paymentViewService.postBSUnidentifiedPayments(reqBody).subscribe(function (res3) {
214
122
  _this.errorMessage = _this.getErrorMessage(false);
215
- /** @type {?} */
216
123
  var response3 = JSON.parse(res3);
217
124
  if (response3.success) {
218
125
  _this.gotoCasetransationPage();
219
126
  }
220
- }), (/**
221
- * @param {?} error
222
- * @return {?}
223
- */
224
- function (error) {
127
+ }, function (error) {
225
128
  _this.bulkScaningPaymentService.patchBSChangeStatus(_this.unassignedRecord.dcn_reference, 'COMPLETE').subscribe();
226
129
  _this.errorMessage = _this.getErrorMessage(true);
227
130
  _this.isConfirmButtondisabled = false;
228
- }));
131
+ });
229
132
  }
230
- }), (/**
231
- * @param {?} error
232
- * @return {?}
233
- */
234
- function (error) {
133
+ }, function (error) {
235
134
  _this.bulkScaningPaymentService.patchBSChangeStatus(_this.unassignedRecord.dcn_reference, 'COMPLETE').subscribe();
236
135
  _this.errorMessage = _this.getErrorMessage(true);
237
136
  _this.isConfirmButtondisabled = false;
238
- }));
239
- }), (/**
240
- * @param {?} error
241
- * @return {?}
242
- */
243
- function (error) {
137
+ });
138
+ }, function (error) {
244
139
  _this.errorMessage = _this.getErrorMessage(true);
245
140
  _this.isConfirmButtondisabled = false;
246
- }));
141
+ });
247
142
  }
248
143
  };
249
- /**
250
- * @param {?=} type
251
- * @return {?}
252
- */
253
- MarkUnidentifiedPaymentComponent.prototype.cancelMarkUnidentifiedPayments = /**
254
- * @param {?=} type
255
- * @return {?}
256
- */
257
- function (type) {
144
+ MarkUnidentifiedPaymentComponent.prototype.cancelMarkUnidentifiedPayments = function (type) {
258
145
  if (type && type === 'cancel') {
259
146
  if (this.markPaymentUnidentifiedForm.get('investicationDetail').value !== "") {
260
147
  this.viewStatus = 'unidentifiedCancelConfirm';
@@ -267,40 +154,31 @@ var MarkUnidentifiedPaymentComponent = /** @class */ (function () {
267
154
  this.viewStatus = 'mainForm';
268
155
  }
269
156
  };
270
- /**
271
- * @return {?}
272
- */
273
- MarkUnidentifiedPaymentComponent.prototype.gotoCasetransationPage = /**
274
- * @return {?}
275
- */
276
- function () {
157
+ MarkUnidentifiedPaymentComponent.prototype.gotoCasetransationPage = function () {
277
158
  this.paymentLibComponent.viewName = 'case-transactions';
278
159
  this.paymentLibComponent.TAKEPAYMENT = true;
279
160
  this.paymentLibComponent.ISBSENABLE = true;
280
161
  };
281
- /**
282
- * @param {?} isErrorExist
283
- * @return {?}
284
- */
285
- MarkUnidentifiedPaymentComponent.prototype.getErrorMessage = /**
286
- * @param {?} isErrorExist
287
- * @return {?}
288
- */
289
- function (isErrorExist) {
162
+ MarkUnidentifiedPaymentComponent.prototype.getErrorMessage = function (isErrorExist) {
290
163
  return {
291
164
  title: "There is a problem with the service",
292
165
  body: "Try again later",
293
166
  showError: isErrorExist
294
167
  };
295
168
  };
169
+ MarkUnidentifiedPaymentComponent.ctorParameters = function () { return [
170
+ { type: FormBuilder },
171
+ { type: PaymentViewService },
172
+ { type: PaymentLibComponent },
173
+ { type: BulkScaningPaymentService }
174
+ ]; };
296
175
  MarkUnidentifiedPaymentComponent.decorators = [
297
176
  { type: Component, args: [{
298
177
  selector: 'app-mark-unidentified-payment',
299
- template: "<div class=\"mkpay-unidentified\" >\n <div *ngIf=\"viewStatus === 'mainForm'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='MARKUNIDENTIFIED'>\n <h1 class=\"heading-large\">Mark payment as unidentified</h1>\n\n <div class=\"govuk-grid-column-full govuk-!-padding-bottom-3\">\n <hr class=\"govuk-section-break govuk-section-break--visible\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Payment asset number (DCN)</td>\n <td class=\"govuk-table__header\" scope=\"col\">Banked date</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Method</td>\n \n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell\">{{unassignedRecord.dcn_reference}}</td>\n <td class=\"govuk-table__cell\"> {{unassignedRecord.date_banked | date:'dd MMM yyyy'}}</td>\n <td class=\"govuk-table__cell\"> {{unassignedRecord.amount | currency :'GBP':'symbol':'1.2-2'}}</td>\n <td class=\"capitalize govuk-table__cell\"> {{trimUnderscore(unassignedRecord.payment_method) | lowercase}} </td>\n </tr>\n </tbody>\n </table>\n </div>\n <form [formGroup]=\"markPaymentUnidentifiedForm\" novalidate>\n <div class=\"govuk-form-group\">\n <p class=\"unidentifiedSubText\">\n Give a reason for marking this payment as unidentified.\n <br/>\n Include any investigations you've made.\n </p>\n <label class=\"heading-small\" for=\"investicationDetail\">\n\n </label>\n <textarea class=\"form-control form-control-3-4\" [ngClass]=\"{'inline-error-class': isInvesticationDetailEmpty || investicationDetailHasError || investicationDetailMinHasError || investicationDetailMaxHasError}\" name=\"investicationDetail\" id=\"investicationDetail\" rows=\"5\" formControlName=\"investicationDetail\">\n </textarea>\n <p class=\"inline-error-message\" *ngIf=\"isInvesticationDetailEmpty || investicationDetailHasError || investicationDetailMinHasError || investicationDetailMaxHasError\">\n <span *ngIf=\"isInvesticationDetailEmpty\">Enter a reason for marking this payment as unidentified.</span>\n <span *ngIf=\"investicationDetailHasError\">Enter a vaild reason</span>\n <span *ngIf=\"investicationDetailMinHasError\">Reason should be at least 3 characters.</span>\n <span *ngIf=\"investicationDetailMaxHasError\">Reason should be 255 characters or under.</span>\n </p>\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" class=\"button\" (click)=\"saveAndContinue()\">\n Continue\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnidentifiedPayments('cancel')\">\n Cancel\n </button>\n </div>\n </form>\n </div>\n <ng-container *ngIf=\"viewStatus === 'unidentifiedContinueConfirm'\">\n <ccpay-error-banner *ngIf=\"errorMessage.showError\" [errorMessage]=\"errorMessage\"></ccpay-error-banner>\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='UNIDENTIFIEDCONFIRMATION'>\n <div class=\"govuk-warning-text\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">Warning</span>\n <h1 class=\"heading-small\"> Are you sure you want to mark this payment as unidentified? </h1>\n \n </strong>\n\n <div class=\"govuk-grid-column-full govuk-!-padding-bottom-3\">\n <hr class=\"govuk-section-break govuk-section-break--visible\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Investigations</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell\">{{investigationComment}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" class=\"button\" [disabled]=\"isConfirmButtondisabled\" (click)=\"confirmPayments()\">\n Confirm\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnidentifiedPayments()\">\n Cancel\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"viewStatus === 'unidentifiedCancelConfirm'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='CANCELUNIDENTIFIED'>\n <div class=\"govuk-warning-text\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">Warning</span>\n Are you sure you want to cancel?\n </strong>\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" class=\"button\" (click)=\"gotoCasetransationPage()\">\n Yes\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnidentifiedPayments()\">\n No\n </button>\n </div>\n </ng-container>\n</div>\n",
178
+ template: "<div class=\"mkpay-unidentified\" >\n <div *ngIf=\"viewStatus === 'mainForm'\">\n <input #myInput type='hidden' class='iFrameDrivenImageValue' value='MARKUNIDENTIFIED'>\n <h1 class=\"heading-large\">Mark payment as unidentified</h1>\n\n <div class=\"govuk-grid-column-full govuk-!-padding-bottom-3\">\n <hr class=\"govuk-section-break govuk-section-break--visible\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Payment asset number (DCN)</td>\n <td class=\"govuk-table__header\" scope=\"col\">Banked date</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Method</td>\n \n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell\">{{unassignedRecord.dcn_reference}}</td>\n <td class=\"govuk-table__cell\"> {{unassignedRecord.date_banked | date:'dd MMM yyyy'}}</td>\n <td class=\"govuk-table__cell\"> {{unassignedRecord.amount | currency :'GBP':'symbol':'1.2-2'}}</td>\n <td class=\"capitalize govuk-table__cell\"> {{trimUnderscore(unassignedRecord.payment_method) | lowercase}} </td>\n </tr>\n </tbody>\n </table>\n </div>\n <form [formGroup]=\"markPaymentUnidentifiedForm\" novalidate>\n <div class=\"govuk-form-group\">\n <p class=\"unidentifiedSubText\">\n Give a reason for marking this payment as unidentified.\n <br/>\n Include any investigations you've made.\n </p>\n <label class=\"heading-small\" for=\"investicationDetail\">\n\n </label>\n <textarea class=\"form-control form-control-3-4\" [ngClass]=\"{'inline-error-class': isInvesticationDetailEmpty || investicationDetailHasError || investicationDetailMinHasError || investicationDetailMaxHasError}\" name=\"investicationDetail\" id=\"investicationDetail\" rows=\"5\" formControlName=\"investicationDetail\">\n </textarea>\n <p class=\"inline-error-message\" *ngIf=\"isInvesticationDetailEmpty || investicationDetailHasError || investicationDetailMinHasError || investicationDetailMaxHasError\">\n <span *ngIf=\"isInvesticationDetailEmpty\">Enter a reason for marking this payment as unidentified.</span>\n <span *ngIf=\"investicationDetailHasError\">Enter a vaild reason</span>\n <span *ngIf=\"investicationDetailMinHasError\">Reason should be at least 3 characters.</span>\n <span *ngIf=\"investicationDetailMaxHasError\">Reason should be 255 characters or under.</span>\n </p>\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" class=\"button\" (click)=\"saveAndContinue()\">\n Continue\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnidentifiedPayments('cancel')\">\n Cancel\n </button>\n </div>\n </form>\n </div>\n <ng-container *ngIf=\"viewStatus === 'unidentifiedContinueConfirm'\">\n <ccpay-error-banner *ngIf=\"errorMessage.showError\" [errorMessage]=\"errorMessage\"></ccpay-error-banner>\n <input #myInput type='hidden' class='iFrameDrivenImageValue' value='UNIDENTIFIEDCONFIRMATION'>\n <div class=\"govuk-warning-text\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">Warning</span>\n <h1 class=\"heading-small\"> Are you sure you want to mark this payment as unidentified? </h1>\n \n </strong>\n\n <div class=\"govuk-grid-column-full govuk-!-padding-bottom-3\">\n <hr class=\"govuk-section-break govuk-section-break--visible\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Investigations</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell\">{{investigationComment}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" class=\"button\" [disabled]=\"isConfirmButtondisabled\" (click)=\"confirmPayments()\">\n Confirm\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnidentifiedPayments()\">\n Cancel\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"viewStatus === 'unidentifiedCancelConfirm'\">\n <input #myInput type='hidden' class='iFrameDrivenImageValue' value='CANCELUNIDENTIFIED'>\n <div class=\"govuk-warning-text\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">Warning</span>\n Are you sure you want to cancel?\n </strong>\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" class=\"button\" (click)=\"gotoCasetransationPage()\">\n Yes\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnidentifiedPayments()\">\n No\n </button>\n </div>\n </ng-container>\n</div>\n",
300
179
  styles: [".mkpay-unidentified{margin:10px 0 20px}.mkpay-unidentified .govuk-button--group .govuk-button--secondary{margin-left:10px;background-color:#b3b8bdf2}.mkpay-unidentified .inline-error-class{outline:#a71414 solid 3px;outline-offset:0}.mkpay-unidentified .inline-error-message{color:#a71414;font-weight:700;margin-top:10px}.govuk-grid-column-full{padding:0}.unidentifiedSubText{line-height:45px}.govuk-warning-text__text{font-size:19px}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}"]
301
- }] }
180
+ },] }
302
181
  ];
303
- /** @nocollapse */
304
182
  MarkUnidentifiedPaymentComponent.ctorParameters = function () { return [
305
183
  { type: FormBuilder },
306
184
  { type: PaymentViewService },
@@ -313,60 +191,4 @@ var MarkUnidentifiedPaymentComponent = /** @class */ (function () {
313
191
  return MarkUnidentifiedPaymentComponent;
314
192
  }());
315
193
  export { MarkUnidentifiedPaymentComponent };
316
- if (false) {
317
- /** @type {?} */
318
- MarkUnidentifiedPaymentComponent.prototype.caseType;
319
- /** @type {?} */
320
- MarkUnidentifiedPaymentComponent.prototype.markPaymentUnidentifiedForm;
321
- /** @type {?} */
322
- MarkUnidentifiedPaymentComponent.prototype.viewStatus;
323
- /** @type {?} */
324
- MarkUnidentifiedPaymentComponent.prototype.ccdCaseNumber;
325
- /** @type {?} */
326
- MarkUnidentifiedPaymentComponent.prototype.bspaymentdcn;
327
- /** @type {?} */
328
- MarkUnidentifiedPaymentComponent.prototype.isInvesticationDetailEmpty;
329
- /** @type {?} */
330
- MarkUnidentifiedPaymentComponent.prototype.investicationDetailHasError;
331
- /** @type {?} */
332
- MarkUnidentifiedPaymentComponent.prototype.investicationDetailMinHasError;
333
- /** @type {?} */
334
- MarkUnidentifiedPaymentComponent.prototype.investicationDetailMaxHasError;
335
- /** @type {?} */
336
- MarkUnidentifiedPaymentComponent.prototype.errorMessage;
337
- /** @type {?} */
338
- MarkUnidentifiedPaymentComponent.prototype.unassignedRecord;
339
- /** @type {?} */
340
- MarkUnidentifiedPaymentComponent.prototype.siteID;
341
- /** @type {?} */
342
- MarkUnidentifiedPaymentComponent.prototype.investigationComment;
343
- /** @type {?} */
344
- MarkUnidentifiedPaymentComponent.prototype.isConfirmButtondisabled;
345
- /** @type {?} */
346
- MarkUnidentifiedPaymentComponent.prototype.ccdReference;
347
- /** @type {?} */
348
- MarkUnidentifiedPaymentComponent.prototype.exceptionReference;
349
- /** @type {?} */
350
- MarkUnidentifiedPaymentComponent.prototype.isStrategicFixEnable;
351
- /**
352
- * @type {?}
353
- * @private
354
- */
355
- MarkUnidentifiedPaymentComponent.prototype.formBuilder;
356
- /**
357
- * @type {?}
358
- * @private
359
- */
360
- MarkUnidentifiedPaymentComponent.prototype.paymentViewService;
361
- /**
362
- * @type {?}
363
- * @private
364
- */
365
- MarkUnidentifiedPaymentComponent.prototype.paymentLibComponent;
366
- /**
367
- * @type {?}
368
- * @private
369
- */
370
- MarkUnidentifiedPaymentComponent.prototype.bulkScaningPaymentService;
371
- }
372
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay11bmlkZW50aWZpZWQtcGF5bWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL21hcmstdW5pZGVudGlmaWVkLXBheW1lbnQvbWFyay11bmlkZW50aWZpZWQtcGF5bWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQztBQUUzRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVqRjtJQXdCRSwwQ0FBb0IsV0FBd0IsRUFDcEMsa0JBQXNDLEVBQ3RDLG1CQUF3QyxFQUN4Qyx5QkFBb0Q7UUFIeEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDcEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFoQjVELCtCQUEwQixHQUFZLEtBQUssQ0FBQztRQUM1QyxnQ0FBMkIsR0FBWSxLQUFLLENBQUM7UUFDN0MsbUNBQThCLEdBQVksS0FBSyxDQUFDO1FBQ2hELG1DQUE4QixHQUFZLEtBQUssQ0FBQztRQUNoRCxpQkFBWSxHQUFHLElBQUksQ0FBQyxlQUFl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QW1CO2dCQUVwQix5QkFBeUI7OzsyQkFXOUIsS0FBSzs7SUF3TFIsdUNBQUM7Q0FBQSxBQTlMRCxJQThMQztTQXpMWSxnQ0FBZ0M7OztJQUMzQyxvREFBMEI7O0lBQzFCLHVFQUF1Qzs7SUFDdkMsc0RBQW1COztJQUNuQix5REFBc0I7O0lBQ3RCLHdEQUFxQjs7SUFDckIsc0VBQTRDOztJQUM1Qyx1RUFBNkM7O0lBQzdDLDBFQUFnRDs7SUFDaEQsMEVBQWdEOztJQUNoRCx3REFBMkM7O0lBQzNDLDREQUE2Qjs7SUFDN0Isa0RBQXNCOztJQUN0QixnRUFBNkI7O0lBQzdCLG1FQUF3Qzs7SUFDeEMsd0RBQTRCOztJQUM1Qiw4REFBa0M7O0lBQ2xDLGdFQUFxQzs7Ozs7SUFFekIsdURBQWdDOzs7OztJQUM1Qyw4REFBOEM7Ozs7O0lBQzlDLCtEQUFnRDs7Ozs7SUFDaEQscUVBQTREIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBheW1lbnRMaWJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7QnVsa1NjYW5pbmdQYXltZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnVsay1zY2FuaW5nLXBheW1lbnQvYnVsay1zY2FuaW5nLXBheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBJQlNQYXltZW50cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUJTUGF5bWVudHMnO1xuaW1wb3J0IHsgVW5pZGVudGlmaWVkUGF5bWVudHNSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9VbmlkZW50aWZpZWRQYXltZW50c1JlcXVlc3QnO1xuaW1wb3J0IHsgQWxsb2NhdGVQYXltZW50UmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvQWxsb2NhdGVQYXltZW50UmVxdWVzdCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tYXJrLXVuaWRlbnRpZmllZC1wYXltZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcmstdW5pZGVudGlmaWVkLXBheW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXJrLXVuaWRlbnRpZmllZC1wYXltZW50LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTWFya1VuaWRlbnRpZmllZFBheW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBjYXNlVHlwZTogc3RyaW5nO1xuICBtYXJrUGF5bWVudFVuaWRlbnRpZmllZEZvcm06IEZvcm1Hcm91cDtcbiAgdmlld1N0YXR1czogc3RyaW5nO1xuICBjY2RDYXNlTnVtYmVyOiBzdHJpbmc7XG4gIGJzcGF5bWVudGRjbjogc3RyaW5nO1xuICBpc0ludmVzdGljYXRpb25EZXRhaWxFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBpbnZlc3RpY2F0aW9uRGV0YWlsSGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW52ZXN0aWNhdGlvbkRldGFpbE1pbkhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGludmVzdGljYXRpb25EZXRhaWxNYXhIYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBlcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShmYWxzZSk7XG4gIHVuYXNzaWduZWRSZWNvcmQ6SUJTUGF5bWVudHM7XG4gIHNpdGVJRDogc3RyaW5nID0gbnVsbDtcbiAgaW52ZXN0aWdhdGlvbkNvbW1lbnQ6IHN0cmluZztcbiAgaXNDb25maXJtQnV0dG9uZGlzYWJsZWQ6Qm9vbGVhbiA9IGZhbHNlO1xuICBjY2RSZWZlcmVuY2U6IHN0cmluZyA9IG51bGw7XG4gIGV4Y2VwdGlvblJlZmVyZW5jZTogc3RyaW5nID0gbnVsbDtcbiAgaXNTdHJhdGVnaWNGaXhFbmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlLFxuICBwcml2YXRlIHBheW1lbnRMaWJDb21wb25lbnQ6IFBheW1lbnRMaWJDb21wb25lbnQsXG4gIHByaXZhdGUgYnVsa1NjYW5pbmdQYXltZW50U2VydmljZTogQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW5Gb3JtJztcbiAgICB0aGlzLmNjZENhc2VOdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSO1xuICAgIHRoaXMuYnNwYXltZW50ZGNuID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmJzcGF5bWVudGRjbjtcbiAgICB0aGlzLmlzU3RyYXRlZ2ljRml4RW5hYmxlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTU0ZFTkFCTEU7XG4gICAgdGhpcy5nZXRVbmFzc2lnbmVkUGF5bWVudCgpO1xuXG4gICAgdGhpcy5tYXJrUGF5bWVudFVuaWRlbnRpZmllZEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGludmVzdGljYXRpb25EZXRhaWw6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NSksXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXihbYS16QS1aMC05XFxcXHMsXFxcXC5dKikkJylcbiAgICAgIF0pKVxuICAgIH0pO1xuICB9XG4gZ2V0VW5hc3NpZ25lZFBheW1lbnQoKSB7XG4gICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLmdldEJTUGF5bWVudHNCeURDTih0aGlzLmJzcGF5bWVudGRjbikuc3Vic2NyaWJlKFxuICAgICAgdW5hc3NpZ25lZFBheW1lbnRzID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIHRoaXMudW5hc3NpZ25lZFJlY29yZCA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnBheW1lbnRzLmZpbHRlcihwYXltZW50ID0+IHtcbiAgICAgICAgICByZXR1cm4gcGF5bWVudCAmJiBwYXltZW50LmRjbl9yZWZlcmVuY2UgPT0gdGhpcy5ic3BheW1lbnRkY247XG4gICAgICAgIH0pWzBdO1xuICAgICAgICB0aGlzLnNpdGVJRCA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnJlc3BvbnNpYmxlX3NlcnZpY2VfaWQ7XG4gICAgICAgIGNvbnN0IGJlQ2NkTnVtYmVyID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10uY2NkX3JlZmVyZW5jZSxcbiAgICAgICAgICBiZUV4Y2VwdGlvbk51bWJlciA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLmV4Y2VwdGlvbl9yZWNvcmRfcmVmZXJlbmNlLFxuICAgICAgICAgIGV4Y2VwdGlvblJlZmVyZW5jZSA9IGJlQ2NkTnVtYmVyID8gYmVDY2ROdW1iZXIgPT09IHRoaXMuY2NkQ2FzZU51bWJlciA/IG51bGwgOiB0aGlzLmNjZENhc2VOdW1iZXIgOiB0aGlzLmNjZENhc2VOdW1iZXI7XG4gICAgICAgIHRoaXMuY2NkUmVmZXJlbmNlID0gYmVDY2ROdW1iZXIgPyBiZUNjZE51bWJlciA6IG51bGw7XG4gICAgICAgIHRoaXMuZXhjZXB0aW9uUmVmZXJlbmNlID0gYmVFeGNlcHRpb25OdW1iZXIgPyBiZUV4Y2VwdGlvbk51bWJlciA6IGV4Y2VwdGlvblJlZmVyZW5jZTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgdHJpbVVuZGVyc2NvcmUobWV0aG9kOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucmVtb3ZlVW53YW50ZWRTdHJpbmcobWV0aG9kLCcgJyk7XG4gIH1cbiBzYXZlQW5kQ29udGludWUoKSB7XG4gIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0pO1xuICBjb25zdCBpbnZlc3RpY2F0aW9uRmllbGQgPSB0aGlzLm1hcmtQYXltZW50VW5pZGVudGlmaWVkRm9ybS5jb250cm9scy5pbnZlc3RpY2F0aW9uRGV0YWlsO1xuICBjb25zdCBmb3JtZXJyb3IgPSBpbnZlc3RpY2F0aW9uRmllbGQuZXJyb3JzO1xuICAgIGlmICh0aGlzLm1hcmtQYXltZW50VW5pZGVudGlmaWVkRm9ybS5kaXJ0eSAmJiB0aGlzLm1hcmtQYXltZW50VW5pZGVudGlmaWVkRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5pbnZlc3RpZ2F0aW9uQ29tbWVudCA9IHRoaXMubWFya1BheW1lbnRVbmlkZW50aWZpZWRGb3JtLmNvbnRyb2xzLmludmVzdGljYXRpb25EZXRhaWwudmFsdWU7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAndW5pZGVudGlmaWVkQ29udGludWVDb25maXJtJztcbiAgICB9ZWxzZSB7XG4gICAgICBpZihpbnZlc3RpY2F0aW9uRmllbGQudmFsdWUgPT0gJycgKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFt0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSk7XG4gICAgICB9XG4gICAgICBpZihpbnZlc3RpY2F0aW9uRmllbGQudmFsdWUgIT0gJycgJiYgaW52ZXN0aWNhdGlvbkZpZWxkLmludmFsaWQgKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXSk7XG4gICAgICB9XG4gICAgICBpZihmb3JtZXJyb3IgJiYgZm9ybWVycm9yLm1pbmxlbmd0aCAmJiBmb3JtZXJyb3IubWlubGVuZ3RoLmFjdHVhbExlbmd0aCA8IDMgKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlXSk7XG4gICAgICB9XG4gICAgICBpZihmb3JtZXJyb3IgJiYgZm9ybWVycm9yLm1heGxlbmd0aCAmJiBmb3JtZXJyb3IubWF4bGVuZ3RoLmFjdHVhbExlbmd0aCA+IDI1NSApIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWVdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmVzZXRGb3JtKHZhbCkge1xuICAgICAgdGhpcy5pc0ludmVzdGljYXRpb25EZXRhaWxFbXB0eSA9IHZhbFswXTtcbiAgICAgIHRoaXMuaW52ZXN0aWNhdGlvbkRldGFpbEhhc0Vycm9yID0gdmFsWzFdO1xuICAgICAgdGhpcy5pbnZlc3RpY2F0aW9uRGV0YWlsTWluSGFzRXJyb3IgPSB2YWxbMl07XG4gICAgICB0aGlzLmludmVzdGljYXRpb25EZXRhaWxNYXhIYXNFcnJvciA9IHZhbFszXTtcbiAgfVxuICBjb25maXJtUGF5bWVudHMoKSB7XG4gICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IHRydWU7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5tYXJrUGF5bWVudFVuaWRlbnRpZmllZEZvcm0uZ2V0KCdpbnZlc3RpY2F0aW9uRGV0YWlsJykudmFsdWU7XG5cbiAgICBpZighdGhpcy5pc1N0cmF0ZWdpY0ZpeEVuYWJsZSkge1xuICAgICAgbGV0IGFsbG9jYXRlZFJlcXVlc3QgPSB7XG4gICAgICAgIGFsbG9jYXRpb25fc3RhdHVzOidVbmlkZW50aWZpZWQnLFxuICAgICAgICBwYXltZW50X2FsbG9jYXRpb25fc3RhdHVzOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgIG5hbWU6ICdVbmlkZW50aWZpZWQnXG4gICAgICAgIH0sXG4gICAgICAgIHVuaWRlbnRpZmllZF9yZWFzb246IHJlYXNvbixcbiAgICAgICAgdXNlcl9pZDogdGhpcy5jYXNlVHlwZSxcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvc3RTdHJhdGVnaWNCb2R5ID0gbmV3IEFsbG9jYXRlUGF5bWVudFJlcXVlc3RcbiAgICAgICh0aGlzLmNjZFJlZmVyZW5jZSwgdGhpcy51bmFzc2lnbmVkUmVjb3JkLCB0aGlzLmNhc2VUeXBlLCB0aGlzLmV4Y2VwdGlvblJlZmVyZW5jZSwgYWxsb2NhdGVkUmVxdWVzdCk7XG4gICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucG9zdEJTV29QR1N0cmF0ZWdpYyhwb3N0U3RyYXRlZ2ljQm9keSkuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgIGxldCByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzKTtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgIHRoaXMuZ290b0Nhc2V0cmFuc2F0aW9uUGFnZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgICAgIHRoaXMuaXNDb25maXJtQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucGF0Y2hCU0NoYW5nZVN0YXR1cyh0aGlzLnVuYXNzaWduZWRSZWNvcmQuZGNuX3JlZmVyZW5jZSwgJ1BST0NFU1NFRCcpLnN1YnNjcmliZShcbiAgICAgICAgICByZXMxID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSBuZXcgQWxsb2NhdGVQYXltZW50UmVxdWVzdFxuICAgICAgICAgICAgKHRoaXMuY2NkUmVmZXJlbmNlLCB0aGlzLnVuYXNzaWduZWRSZWNvcmQsIHRoaXMuc2l0ZUlELCB0aGlzLmV4Y2VwdGlvblJlZmVyZW5jZSlcbiAgICAgICAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLnBvc3RCU1BheW1lbnRzKHJlcXVlc3RCb2R5KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIHJlczIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlMiA9IEpTT04ucGFyc2UocmVzMiksXG4gICAgICAgICAgICAgICAgICByZXFCb2R5ID0gbmV3IFVuaWRlbnRpZmllZFBheW1lbnRzUmVxdWVzdFxuICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlMlsnZGF0YSddLnBheW1lbnRfZ3JvdXBfcmVmZXJlbmNlLCByZXNwb25zZTJbJ2RhdGEnXS5yZWZlcmVuY2UsIHJlYXNvbik7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlMi5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5wb3N0QlNVbmlkZW50aWZpZWRQYXltZW50cyhyZXFCb2R5KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIHJlczMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlMyA9IEpTT04ucGFyc2UocmVzMyk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlMy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdvdG9DYXNldHJhbnNhdGlvblBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLnBhdGNoQlNDaGFuZ2VTdGF0dXModGhpcy51bmFzc2lnbmVkUmVjb3JkLmRjbl9yZWZlcmVuY2UsICdDT01QTEVURScpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucGF0Y2hCU0NoYW5nZVN0YXR1cyh0aGlzLnVuYXNzaWduZWRSZWNvcmQuZGNuX3JlZmVyZW5jZSwgJ0NPTVBMRVRFJykuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuaXNDb25maXJtQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gIH1cbiAgY2FuY2VsTWFya1VuaWRlbnRpZmllZFBheW1lbnRzKHR5cGU/OnN0cmluZyl7XG4gICAgaWYodHlwZSAmJiB0eXBlID09PSAnY2FuY2VsJykge1xuICAgICAgICBpZih0aGlzLm1hcmtQYXltZW50VW5pZGVudGlmaWVkRm9ybS5nZXQoJ2ludmVzdGljYXRpb25EZXRhaWwnKS52YWx1ZSE9PVwiXCIpe1xuICAgICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICd1bmlkZW50aWZpZWRDYW5jZWxDb25maXJtJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmdvdG9DYXNldHJhbnNhdGlvblBhZ2UoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnbWFpbkZvcm0nO1xuICAgIH1cbiAgfVxuXG4gIGdvdG9DYXNldHJhbnNhdGlvblBhZ2UoKSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gdHJ1ZTtcbiAgfVxuICBnZXRFcnJvck1lc3NhZ2UoaXNFcnJvckV4aXN0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiBcIlRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBzZXJ2aWNlXCIsXG4gICAgICBib2R5OiBcIlRyeSBhZ2FpbiBsYXRlclwiLFxuICAgICAgc2hvd0Vycm9yOiBpc0Vycm9yRXhpc3RcbiAgICB9O1xuICB9XG59XG4iXX0=
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay11bmlkZW50aWZpZWQtcGF5bWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL21hcmstdW5pZGVudGlmaWVkLXBheW1lbnQvbWFyay11bmlkZW50aWZpZWQtcGF5bWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBRTNHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRWpGO0lBd0JFLDBDQUFvQixXQUF3QixFQUNwQyxrQkFBc0MsRUFDdEMsbUJBQXdDLEVBQ3hDLHlCQUFvRDtRQUh4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNwQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQWhCNUQsK0JBQTBCLEdBQVksS0FBSyxDQUFDO1FBQzVDLGdDQUEyQixHQUFZLEtBQUssQ0FBQztRQUM3QyxtQ0FBOEIsR0FBWSxLQUFLLENBQUM7UUFDaEQsbUNBQThCLEdBQVksS0FBSyxDQUFDO1FBQ2hELGlCQUFZLEdBQUcsSUFBSSxDQUFD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d29MQUF5RDs7aUJBRTFEOzs7Z0JBWlEsV0FBVztnQkFFWCxrQkFBa0I7Z0JBRGxCLG1CQUFtQjtnQkFFcEIseUJBQXlCOzs7MkJBVzlCLEtBQUs7O0lBd0xSLHVDQUFDO0NBQUEsQUE5TEQsSUE4TEM7U0F6TFksZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBheW1lbnRMaWJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7QnVsa1NjYW5pbmdQYXltZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnVsay1zY2FuaW5nLXBheW1lbnQvYnVsay1zY2FuaW5nLXBheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBJQlNQYXltZW50cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUJTUGF5bWVudHMnO1xuaW1wb3J0IHsgVW5pZGVudGlmaWVkUGF5bWVudHNSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9VbmlkZW50aWZpZWRQYXltZW50c1JlcXVlc3QnO1xuaW1wb3J0IHsgQWxsb2NhdGVQYXltZW50UmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvQWxsb2NhdGVQYXltZW50UmVxdWVzdCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tYXJrLXVuaWRlbnRpZmllZC1wYXltZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcmstdW5pZGVudGlmaWVkLXBheW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXJrLXVuaWRlbnRpZmllZC1wYXltZW50LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTWFya1VuaWRlbnRpZmllZFBheW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBjYXNlVHlwZTogc3RyaW5nO1xuICBtYXJrUGF5bWVudFVuaWRlbnRpZmllZEZvcm06IEZvcm1Hcm91cDtcbiAgdmlld1N0YXR1czogc3RyaW5nO1xuICBjY2RDYXNlTnVtYmVyOiBzdHJpbmc7XG4gIGJzcGF5bWVudGRjbjogc3RyaW5nO1xuICBpc0ludmVzdGljYXRpb25EZXRhaWxFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBpbnZlc3RpY2F0aW9uRGV0YWlsSGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW52ZXN0aWNhdGlvbkRldGFpbE1pbkhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGludmVzdGljYXRpb25EZXRhaWxNYXhIYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBlcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShmYWxzZSk7XG4gIHVuYXNzaWduZWRSZWNvcmQ6SUJTUGF5bWVudHM7XG4gIHNpdGVJRDogc3RyaW5nID0gbnVsbDtcbiAgaW52ZXN0aWdhdGlvbkNvbW1lbnQ6IHN0cmluZztcbiAgaXNDb25maXJtQnV0dG9uZGlzYWJsZWQ6Qm9vbGVhbiA9IGZhbHNlO1xuICBjY2RSZWZlcmVuY2U6IHN0cmluZyA9IG51bGw7XG4gIGV4Y2VwdGlvblJlZmVyZW5jZTogc3RyaW5nID0gbnVsbDtcbiAgaXNTdHJhdGVnaWNGaXhFbmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlLFxuICBwcml2YXRlIHBheW1lbnRMaWJDb21wb25lbnQ6IFBheW1lbnRMaWJDb21wb25lbnQsXG4gIHByaXZhdGUgYnVsa1NjYW5pbmdQYXltZW50U2VydmljZTogQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW5Gb3JtJztcbiAgICB0aGlzLmNjZENhc2VOdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSO1xuICAgIHRoaXMuYnNwYXltZW50ZGNuID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmJzcGF5bWVudGRjbjtcbiAgICB0aGlzLmlzU3RyYXRlZ2ljRml4RW5hYmxlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTU0ZFTkFCTEU7XG4gICAgdGhpcy5nZXRVbmFzc2lnbmVkUGF5bWVudCgpO1xuXG4gICAgdGhpcy5tYXJrUGF5bWVudFVuaWRlbnRpZmllZEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGludmVzdGljYXRpb25EZXRhaWw6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NSksXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXihbYS16QS1aMC05XFxcXHMsXFxcXC5dKikkJylcbiAgICAgIF0pKVxuICAgIH0pO1xuICB9XG4gZ2V0VW5hc3NpZ25lZFBheW1lbnQoKSB7XG4gICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLmdldEJTUGF5bWVudHNCeURDTih0aGlzLmJzcGF5bWVudGRjbikuc3Vic2NyaWJlKFxuICAgICAgdW5hc3NpZ25lZFBheW1lbnRzID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIHRoaXMudW5hc3NpZ25lZFJlY29yZCA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnBheW1lbnRzLmZpbHRlcihwYXltZW50ID0+IHtcbiAgICAgICAgICByZXR1cm4gcGF5bWVudCAmJiBwYXltZW50LmRjbl9yZWZlcmVuY2UgPT0gdGhpcy5ic3BheW1lbnRkY247XG4gICAgICAgIH0pWzBdO1xuICAgICAgICB0aGlzLnNpdGVJRCA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnJlc3BvbnNpYmxlX3NlcnZpY2VfaWQ7XG4gICAgICAgIGNvbnN0IGJlQ2NkTnVtYmVyID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10uY2NkX3JlZmVyZW5jZSxcbiAgICAgICAgICBiZUV4Y2VwdGlvbk51bWJlciA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLmV4Y2VwdGlvbl9yZWNvcmRfcmVmZXJlbmNlLFxuICAgICAgICAgIGV4Y2VwdGlvblJlZmVyZW5jZSA9IGJlQ2NkTnVtYmVyID8gYmVDY2ROdW1iZXIgPT09IHRoaXMuY2NkQ2FzZU51bWJlciA/IG51bGwgOiB0aGlzLmNjZENhc2VOdW1iZXIgOiB0aGlzLmNjZENhc2VOdW1iZXI7XG4gICAgICAgIHRoaXMuY2NkUmVmZXJlbmNlID0gYmVDY2ROdW1iZXIgPyBiZUNjZE51bWJlciA6IG51bGw7XG4gICAgICAgIHRoaXMuZXhjZXB0aW9uUmVmZXJlbmNlID0gYmVFeGNlcHRpb25OdW1iZXIgPyBiZUV4Y2VwdGlvbk51bWJlciA6IGV4Y2VwdGlvblJlZmVyZW5jZTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgdHJpbVVuZGVyc2NvcmUobWV0aG9kOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucmVtb3ZlVW53YW50ZWRTdHJpbmcobWV0aG9kLCcgJyk7XG4gIH1cbiBzYXZlQW5kQ29udGludWUoKSB7XG4gIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0pO1xuICBjb25zdCBpbnZlc3RpY2F0aW9uRmllbGQgPSB0aGlzLm1hcmtQYXltZW50VW5pZGVudGlmaWVkRm9ybS5jb250cm9scy5pbnZlc3RpY2F0aW9uRGV0YWlsO1xuICBjb25zdCBmb3JtZXJyb3IgPSBpbnZlc3RpY2F0aW9uRmllbGQuZXJyb3JzO1xuICAgIGlmICh0aGlzLm1hcmtQYXltZW50VW5pZGVudGlmaWVkRm9ybS5kaXJ0eSAmJiB0aGlzLm1hcmtQYXltZW50VW5pZGVudGlmaWVkRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5pbnZlc3RpZ2F0aW9uQ29tbWVudCA9IHRoaXMubWFya1BheW1lbnRVbmlkZW50aWZpZWRGb3JtLmNvbnRyb2xzLmludmVzdGljYXRpb25EZXRhaWwudmFsdWU7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAndW5pZGVudGlmaWVkQ29udGludWVDb25maXJtJztcbiAgICB9ZWxzZSB7XG4gICAgICBpZihpbnZlc3RpY2F0aW9uRmllbGQudmFsdWUgPT0gJycgKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFt0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSk7XG4gICAgICB9XG4gICAgICBpZihpbnZlc3RpY2F0aW9uRmllbGQudmFsdWUgIT0gJycgJiYgaW52ZXN0aWNhdGlvbkZpZWxkLmludmFsaWQgKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXSk7XG4gICAgICB9XG4gICAgICBpZihmb3JtZXJyb3IgJiYgZm9ybWVycm9yLm1pbmxlbmd0aCAmJiBmb3JtZXJyb3IubWlubGVuZ3RoLmFjdHVhbExlbmd0aCA8IDMgKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlXSk7XG4gICAgICB9XG4gICAgICBpZihmb3JtZXJyb3IgJiYgZm9ybWVycm9yLm1heGxlbmd0aCAmJiBmb3JtZXJyb3IubWF4bGVuZ3RoLmFjdHVhbExlbmd0aCA+IDI1NSApIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWVdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmVzZXRGb3JtKHZhbCkge1xuICAgICAgdGhpcy5pc0ludmVzdGljYXRpb25EZXRhaWxFbXB0eSA9IHZhbFswXTtcbiAgICAgIHRoaXMuaW52ZXN0aWNhdGlvbkRldGFpbEhhc0Vycm9yID0gdmFsWzFdO1xuICAgICAgdGhpcy5pbnZlc3RpY2F0aW9uRGV0YWlsTWluSGFzRXJyb3IgPSB2YWxbMl07XG4gICAgICB0aGlzLmludmVzdGljYXRpb25EZXRhaWxNYXhIYXNFcnJvciA9IHZhbFszXTtcbiAgfVxuICBjb25maXJtUGF5bWVudHMoKSB7XG4gICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IHRydWU7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5tYXJrUGF5bWVudFVuaWRlbnRpZmllZEZvcm0uZ2V0KCdpbnZlc3RpY2F0aW9uRGV0YWlsJykudmFsdWU7XG5cbiAgICBpZighdGhpcy5pc1N0cmF0ZWdpY0ZpeEVuYWJsZSkge1xuICAgICAgbGV0IGFsbG9jYXRlZFJlcXVlc3QgPSB7XG4gICAgICAgIGFsbG9jYXRpb25fc3RhdHVzOidVbmlkZW50aWZpZWQnLFxuICAgICAgICBwYXltZW50X2FsbG9jYXRpb25fc3RhdHVzOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgIG5hbWU6ICdVbmlkZW50aWZpZWQnXG4gICAgICAgIH0sXG4gICAgICAgIHVuaWRlbnRpZmllZF9yZWFzb246IHJlYXNvbixcbiAgICAgICAgdXNlcl9pZDogdGhpcy5jYXNlVHlwZSxcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvc3RTdHJhdGVnaWNCb2R5ID0gbmV3IEFsbG9jYXRlUGF5bWVudFJlcXVlc3RcbiAgICAgICh0aGlzLmNjZFJlZmVyZW5jZSwgdGhpcy51bmFzc2lnbmVkUmVjb3JkLCB0aGlzLmNhc2VUeXBlLCB0aGlzLmV4Y2VwdGlvblJlZmVyZW5jZSwgYWxsb2NhdGVkUmVxdWVzdCk7XG4gICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucG9zdEJTV29QR1N0cmF0ZWdpYyhwb3N0U3RyYXRlZ2ljQm9keSkuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgIGxldCByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzKTtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgIHRoaXMuZ290b0Nhc2V0cmFuc2F0aW9uUGFnZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgICAgIHRoaXMuaXNDb25maXJtQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucGF0Y2hCU0NoYW5nZVN0YXR1cyh0aGlzLnVuYXNzaWduZWRSZWNvcmQuZGNuX3JlZmVyZW5jZSwgJ1BST0NFU1NFRCcpLnN1YnNjcmliZShcbiAgICAgICAgICByZXMxID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSBuZXcgQWxsb2NhdGVQYXltZW50UmVxdWVzdFxuICAgICAgICAgICAgKHRoaXMuY2NkUmVmZXJlbmNlLCB0aGlzLnVuYXNzaWduZWRSZWNvcmQsIHRoaXMuc2l0ZUlELCB0aGlzLmV4Y2VwdGlvblJlZmVyZW5jZSlcbiAgICAgICAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLnBvc3RCU1BheW1lbnRzKHJlcXVlc3RCb2R5KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIHJlczIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlMiA9IEpTT04ucGFyc2UocmVzMiksXG4gICAgICAgICAgICAgICAgICByZXFCb2R5ID0gbmV3IFVuaWRlbnRpZmllZFBheW1lbnRzUmVxdWVzdFxuICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlMlsnZGF0YSddLnBheW1lbnRfZ3JvdXBfcmVmZXJlbmNlLCByZXNwb25zZTJbJ2RhdGEnXS5yZWZlcmVuY2UsIHJlYXNvbik7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlMi5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5wb3N0QlNVbmlkZW50aWZpZWRQYXltZW50cyhyZXFCb2R5KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIHJlczMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlMyA9IEpTT04ucGFyc2UocmVzMyk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlMy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdvdG9DYXNldHJhbnNhdGlvblBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLnBhdGNoQlNDaGFuZ2VTdGF0dXModGhpcy51bmFzc2lnbmVkUmVjb3JkLmRjbl9yZWZlcmVuY2UsICdDT01QTEVURScpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucGF0Y2hCU0NoYW5nZVN0YXR1cyh0aGlzLnVuYXNzaWduZWRSZWNvcmQuZGNuX3JlZmVyZW5jZSwgJ0NPTVBMRVRFJykuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuaXNDb25maXJtQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gIH1cbiAgY2FuY2VsTWFya1VuaWRlbnRpZmllZFBheW1lbnRzKHR5cGU/OnN0cmluZyl7XG4gICAgaWYodHlwZSAmJiB0eXBlID09PSAnY2FuY2VsJykge1xuICAgICAgICBpZih0aGlzLm1hcmtQYXltZW50VW5pZGVudGlmaWVkRm9ybS5nZXQoJ2ludmVzdGljYXRpb25EZXRhaWwnKS52YWx1ZSE9PVwiXCIpe1xuICAgICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICd1bmlkZW50aWZpZWRDYW5jZWxDb25maXJtJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmdvdG9DYXNldHJhbnNhdGlvblBhZ2UoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnbWFpbkZvcm0nO1xuICAgIH1cbiAgfVxuXG4gIGdvdG9DYXNldHJhbnNhdGlvblBhZ2UoKSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gdHJ1ZTtcbiAgfVxuICBnZXRFcnJvck1lc3NhZ2UoaXNFcnJvckV4aXN0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiBcIlRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBzZXJ2aWNlXCIsXG4gICAgICBib2R5OiBcIlRyeSBhZ2FpbiBsYXRlclwiLFxuICAgICAgc2hvd0Vycm9yOiBpc0Vycm9yRXhpc3RcbiAgICB9O1xuICB9XG59XG4iXX0=