@hmcts/ccpay-web-component 5.0.1-beta88 → 5.0.1-beta93

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 (76) hide show
  1. package/bundles/hmcts-ccpay-web-component.umd.js +702 -377
  2. package/bundles/hmcts-ccpay-web-component.umd.js.map +1 -1
  3. package/bundles/hmcts-ccpay-web-component.umd.min.js +1 -1
  4. package/bundles/hmcts-ccpay-web-component.umd.min.js.map +1 -1
  5. package/esm2015/hmcts-ccpay-web-component.js +5 -4
  6. package/esm2015/lib/components/add-remission/add-remission.component.js +84 -39
  7. package/esm2015/lib/components/case-transactions/case-transactions.component.js +4 -32
  8. package/esm2015/lib/components/contact-details/contact-details.component.js +346 -0
  9. package/esm2015/lib/components/payment-view/payment-view.component.js +4 -3
  10. package/esm2015/lib/components/process-refund/process-refund.component.js +3 -8
  11. package/esm2015/lib/components/refund-status/refund-status.component.js +141 -26
  12. package/esm2015/lib/components/service-request/service-request.component.js +9 -28
  13. package/esm2015/lib/interfaces/IPutNotificationRequest.js +25 -0
  14. package/esm2015/lib/interfaces/IRefundContactDetails.js +25 -0
  15. package/esm2015/lib/interfaces/IRefundsNotifications.js +21 -0
  16. package/esm2015/lib/interfaces/PostIssueRefundRetroRemission.js +6 -2
  17. package/esm2015/lib/interfaces/PostRefundRetroRemission.js +6 -2
  18. package/esm2015/lib/payment-lib.component.js +8 -6
  19. package/esm2015/lib/payment-lib.module.js +5 -3
  20. package/esm2015/lib/payment-lib.service.js +16 -1
  21. package/esm2015/lib/services/notification/notification.service.js +85 -0
  22. package/esm2015/lib/services/payment-view/payment-view.service.js +1 -29
  23. package/esm2015/lib/services/refunds/refunds.service.js +10 -1
  24. package/esm2015/lib/services/shared/error-handler.service.js +10 -19
  25. package/esm5/hmcts-ccpay-web-component.js +5 -4
  26. package/esm5/lib/components/add-remission/add-remission.component.js +102 -39
  27. package/esm5/lib/components/case-transactions/case-transactions.component.js +4 -38
  28. package/esm5/lib/components/contact-details/contact-details.component.js +370 -0
  29. package/esm5/lib/components/payment-view/payment-view.component.js +4 -3
  30. package/esm5/lib/components/process-refund/process-refund.component.js +3 -8
  31. package/esm5/lib/components/refund-status/refund-status.component.js +168 -24
  32. package/esm5/lib/components/service-request/service-request.component.js +9 -32
  33. package/esm5/lib/interfaces/IPutNotificationRequest.js +23 -0
  34. package/esm5/lib/interfaces/IRefundContactDetails.js +25 -0
  35. package/esm5/lib/interfaces/IRefundsNotifications.js +21 -0
  36. package/esm5/lib/interfaces/PostIssueRefundRetroRemission.js +5 -2
  37. package/esm5/lib/interfaces/PostRefundRetroRemission.js +5 -2
  38. package/esm5/lib/payment-lib.component.js +7 -4
  39. package/esm5/lib/payment-lib.module.js +5 -3
  40. package/esm5/lib/payment-lib.service.js +23 -1
  41. package/esm5/lib/services/notification/notification.service.js +89 -0
  42. package/esm5/lib/services/payment-view/payment-view.service.js +1 -42
  43. package/esm5/lib/services/refunds/refunds.service.js +16 -1
  44. package/esm5/lib/services/shared/error-handler.service.js +10 -19
  45. package/fesm2015/hmcts-ccpay-web-component.js +617 -346
  46. package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
  47. package/fesm5/hmcts-ccpay-web-component.js +695 -375
  48. package/fesm5/hmcts-ccpay-web-component.js.map +1 -1
  49. package/hmcts-ccpay-web-component.d.ts +4 -3
  50. package/hmcts-ccpay-web-component.metadata.json +1 -1
  51. package/lib/components/add-remission/add-remission.component.d.ts +8 -3
  52. package/lib/components/case-transactions/case-transactions.component.d.ts +0 -5
  53. package/lib/components/contact-details/contact-details.component.d.ts +41 -0
  54. package/lib/components/process-refund/process-refund.component.d.ts +0 -1
  55. package/lib/components/refund-status/refund-status.component.d.ts +19 -5
  56. package/lib/components/service-request/service-request.component.d.ts +0 -2
  57. package/lib/interfaces/IPutNotificationRequest.d.ts +6 -0
  58. package/lib/interfaces/IRefundContactDetails.d.ts +9 -0
  59. package/lib/interfaces/IRefundsNotifications.d.ts +16 -0
  60. package/lib/interfaces/PostIssueRefundRetroRemission.d.ts +3 -1
  61. package/lib/interfaces/PostRefundRetroRemission.d.ts +3 -1
  62. package/lib/payment-lib.component.d.ts +1 -2
  63. package/lib/payment-lib.service.d.ts +3 -0
  64. package/lib/services/notification/notification.service.d.ts +15 -0
  65. package/lib/services/payment-view/payment-view.service.d.ts +0 -5
  66. package/lib/services/refunds/refunds.service.d.ts +2 -0
  67. package/package.json +1 -1
  68. package/esm2015/lib/components/pba-payment/pba-payment.component.js +0 -199
  69. package/esm2015/lib/interfaces/IserviceRequestCardPayment.js +0 -23
  70. package/esm2015/lib/interfaces/IserviceRequestPbaPayment.js +0 -28
  71. package/esm5/lib/components/pba-payment/pba-payment.component.js +0 -216
  72. package/esm5/lib/interfaces/IserviceRequestCardPayment.js +0 -22
  73. package/esm5/lib/interfaces/IserviceRequestPbaPayment.js +0 -25
  74. package/lib/components/pba-payment/pba-payment.component.d.ts +0 -27
  75. package/lib/interfaces/IserviceRequestCardPayment.d.ts +0 -6
  76. package/lib/interfaces/IserviceRequestPbaPayment.d.ts +0 -7
@@ -7,6 +7,7 @@ import { PaymentLibComponent } from '../../payment-lib.component';
7
7
  import { IPayment } from '../../interfaces/IPayment';
8
8
  import { RefundsService } from '../../services/refunds/refunds.service';
9
9
  import { IRefundReasons } from '../../interfaces/IRefundReasons';
10
+ import { IRefundContactDetails } from '../../interfaces/IRefundContactDetails';
10
11
  import { ChangeDetectorRef } from '@angular/core';
11
12
  import { IRemission } from '../../interfaces/IRemission';
12
13
  import { OrderslistService } from '../../services/orderslist.service';
@@ -19,7 +20,6 @@ export declare class AddRemissionComponent implements OnInit {
19
20
  private cd;
20
21
  private OrderslistService;
21
22
  fee: IFee;
22
- fees: any[];
23
23
  payment: IPayment;
24
24
  remission: IRemission;
25
25
  ccdCaseNumber: string;
@@ -61,6 +61,7 @@ export declare class AddRemissionComponent implements OnInit {
61
61
  other: string;
62
62
  };
63
63
  };
64
+ contactDetailsObj: IRefundContactDetails;
64
65
  remissionForm: FormGroup;
65
66
  hasErrors: boolean;
66
67
  viewStatus: string;
@@ -100,7 +101,6 @@ export declare class AddRemissionComponent implements OnInit {
100
101
  pattern2: string;
101
102
  sendOrderDetail: any[];
102
103
  sendOrderRef: string;
103
- paymentReference: string;
104
104
  component: {
105
105
  account_number: string;
106
106
  amount: number;
@@ -128,18 +128,23 @@ export declare class AddRemissionComponent implements OnInit {
128
128
  addRemissionCode(): void;
129
129
  gotoAddRetroRemissionCodePage(): void;
130
130
  gotoCheckRetroRemissionPage(payment: IPayment): void;
131
+ gotoAmountRetroRemission(): void;
131
132
  gotoProcessRetroRemissionPage(): void;
133
+ gotoProcessRetroRemission(): void;
132
134
  confirmRetroRemission(): void;
133
135
  processRefund(): void;
134
136
  gotoIssueRefundConfirmation(payment: IPayment): void;
135
137
  gotoIssueRefundPage(): void;
136
- gotoIssuePage(): void;
138
+ gotoContactDetailsPage(): void;
137
139
  changeIssueRefundReason(): void;
138
140
  confirmIssueRefund(): void;
139
141
  confirmRetroRefund(): void;
140
142
  selectRadioButton(key: any, value: any): void;
141
143
  selectchange(args: any): void;
144
+ getContactDetails(obj: IRefundContactDetails, type: any): void;
142
145
  gotoServiceRequestPage(event: any): void;
146
+ gotoAddressPage(): void;
147
+ gotoRemissionSuccess(event: Event): void;
143
148
  gotoCasetransationPage(): void;
144
149
  gotoCasetransationPageCancelBtnClicked(event: Event): void;
145
150
  resetOrderData(): void;
@@ -67,7 +67,6 @@ export declare class CaseTransactionsComponent implements OnInit {
67
67
  isAddRemissionEnable: boolean;
68
68
  orderRemissionDetails: any[];
69
69
  orderLevelFees: IOrderReferenceFee[];
70
- ispaymentGroupApisuccess: boolean;
71
70
  cpoDetails: any;
72
71
  orderRef: string;
73
72
  orderStatus: string;
@@ -87,8 +86,6 @@ export declare class CaseTransactionsComponent implements OnInit {
87
86
  isAddRemissionBtnEnabled: boolean;
88
87
  isRefundRemissionBtnEnable: boolean;
89
88
  allowedRolesToAccessRefund: string[];
90
- isEligible4PBAPayment: string[];
91
- currentDate: Date;
92
89
  isFromServiceRequestPage: boolean;
93
90
  navigationpage: string;
94
91
  remissionFeeAmt: number;
@@ -125,7 +122,5 @@ export declare class CaseTransactionsComponent implements OnInit {
125
122
  chkIssueRefundBtnEnable(payment: IPayment): boolean;
126
123
  chkIsRefundRemissionBtnEnable(): boolean;
127
124
  check4AllowedRoles2AccessRefund: () => boolean;
128
- check4AllowedRoles2AccessPBApayment: () => boolean;
129
125
  allowFurtherAccessAfter4Days: (payment: IPayment) => boolean;
130
- loadPBAAccountPage(orderRef: IPayment): void;
131
126
  }
@@ -0,0 +1,41 @@
1
+ import { OnInit, EventEmitter } from '@angular/core';
2
+ import { FormBuilder, FormGroup } from '@angular/forms';
3
+ import { PaymentLibComponent } from '../../payment-lib.component';
4
+ export declare class ContactDetailsComponent implements OnInit {
5
+ private formBuilder;
6
+ private paymentLibComponent;
7
+ isEditOperation: boolean;
8
+ addressObj: any;
9
+ assignContactDetails: EventEmitter<any>;
10
+ redirectToIssueRefund: EventEmitter<any>;
11
+ pageTitle: string;
12
+ errorMessage: string;
13
+ isEmailSAddressClicked: boolean;
14
+ isPostcodeClicked: boolean;
15
+ isManualAddressClicked: boolean;
16
+ emailAddressForm: FormGroup;
17
+ postCodeForm: FormGroup;
18
+ manualAddressForm: FormGroup;
19
+ isEmailEmpty: boolean;
20
+ emailHasError: boolean;
21
+ isPostcodeEmpty: boolean;
22
+ postcodeHasError: boolean;
23
+ isaddressLine1Empty: boolean;
24
+ addressLine1HasError: boolean;
25
+ addressLine2HasError: boolean;
26
+ isTownOrCityEmpty: boolean;
27
+ townOrCityHasError: boolean;
28
+ isCountyEmpty: boolean;
29
+ countyHasError: boolean;
30
+ isMPostcodeEmpty: boolean;
31
+ mpostcodeHasError: boolean;
32
+ isCountryEmpty: boolean;
33
+ constructor(formBuilder: FormBuilder, paymentLibComponent: PaymentLibComponent);
34
+ ngOnInit(): void;
35
+ setEditDetails(): void;
36
+ selectContactOption(type: any, isLinkedClied: any): void;
37
+ finalFormSubmit(): void;
38
+ postcodeValidation(): void;
39
+ redirection(event: any): void;
40
+ resetForm(val: any, field: any): void;
41
+ }
@@ -41,7 +41,6 @@ export declare class ProcessRefundComponent implements OnInit {
41
41
  successMsg: string;
42
42
  navigationpage: string;
43
43
  ccdCaseNumber: string;
44
- isFromRefundListPage: boolean;
45
44
  isConfirmButtondisabled: boolean;
46
45
  constructor(RefundsService: RefundsService, formBuilder: FormBuilder, OrderslistService: OrderslistService, paymentLibComponent: PaymentLibComponent, router: Router, activeRoute: ActivatedRoute);
47
46
  ngOnInit(): void;
@@ -1,18 +1,18 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { RefundsService } from '../../services/refunds/refunds.service';
3
+ import { NotificationService } from '../../services/notification/notification.service';
3
4
  import { FormBuilder, FormGroup } from '@angular/forms';
4
5
  import { IRefundList } from '../../interfaces/IRefundList';
5
- import { PaymentViewService } from '../../services/payment-view/payment-view.service';
6
- import { Router } from '@angular/router';
6
+ import { IRefundsNotifications } from '../../interfaces/IRefundsNotifications';
7
7
  import { OrderslistService } from '../../services/orderslist.service';
8
+ import { IRefundContactDetails } from '../../interfaces/IRefundContactDetails';
8
9
  import { IRefundStatus } from '../../interfaces/IRefundStatus';
9
10
  import { PaymentLibComponent } from '../../payment-lib.component';
10
11
  export declare class RefundStatusComponent implements OnInit {
11
12
  private formBuilder;
12
13
  private refundService;
14
+ private notificationService;
13
15
  private paymentLibComponent;
14
- private paymentViewService;
15
- private router;
16
16
  private OrderslistService;
17
17
  LOGGEDINUSERROLES: string[];
18
18
  isOldPcipalOff: boolean;
@@ -22,6 +22,8 @@ export declare class RefundStatusComponent implements OnInit {
22
22
  refundStatusForm: FormGroup;
23
23
  selectedRefundReason: string;
24
24
  rejectedRefundList: IRefundList[];
25
+ notificationList: IRefundsNotifications;
26
+ notification: IRefundsNotifications;
25
27
  approvalStatus: string;
26
28
  rejectStatus: string;
27
29
  errorMessage: any;
@@ -38,6 +40,11 @@ export declare class RefundStatusComponent implements OnInit {
38
40
  refundHasError: boolean;
39
41
  refundReasons: any[];
40
42
  refundStatusHistories: IRefundStatus[];
43
+ refundNotifications: IRefundStatus[];
44
+ isResendOperationSuccess: boolean;
45
+ isEditDetailsClicked: boolean;
46
+ isEditAddressDeatilsClicked: boolean;
47
+ addressDetails: IRefundContactDetails;
41
48
  refundReference: string;
42
49
  refundAmount: string;
43
50
  refundCode: string;
@@ -49,10 +56,11 @@ export declare class RefundStatusComponent implements OnInit {
49
56
  isProcessRefund: boolean;
50
57
  changedAmount: number;
51
58
  allowedRolesToAccessRefund: string[];
52
- constructor(formBuilder: FormBuilder, refundService: RefundsService, paymentLibComponent: PaymentLibComponent, paymentViewService: PaymentViewService, router: Router, OrderslistService: OrderslistService);
59
+ constructor(formBuilder: FormBuilder, refundService: RefundsService, notificationService: NotificationService, paymentLibComponent: PaymentLibComponent, OrderslistService: OrderslistService);
53
60
  ngOnInit(): void;
54
61
  check4AllowedRoles2AccessRefund: () => boolean;
55
62
  getRefundsStatusHistoryList(): void;
63
+ getRefundsNotification(): void;
56
64
  goToRefundView(refundlist: IRefundList, navigationpage: string): void;
57
65
  loadCaseTransactionPage(): void;
58
66
  loadRefundListPage(): void;
@@ -66,5 +74,11 @@ export declare class RefundStatusComponent implements OnInit {
66
74
  getRefundListReason(refundListReason: any): void;
67
75
  getRefundAmount(amount: number): void;
68
76
  gotoReviewRefundConfirmationPage(): void;
77
+ gotoEditAddressDetails(note: IRefundsNotifications): void;
78
+ getContactDetails(obj: IRefundContactDetails): void;
79
+ gotoEditDetailsPage(): void;
80
+ submitEditDetail(): void;
81
+ putResend(notification: IRefundsNotifications): void;
82
+ gotoCasetransationPageCancelBtnClicked(obj: any): void;
69
83
  goToRefundProcessComponent(refundReference: string, refundList: IRefundList): void;
70
84
  }
@@ -27,7 +27,6 @@ export declare class ServiceRequestComponent implements OnInit {
27
27
  orderRemissionTotal: number;
28
28
  takePayment: boolean;
29
29
  ccdCaseNumber: boolean;
30
- isServiceRequest: string;
31
30
  servicerequest: string;
32
31
  excReference: string;
33
32
  paymentGroups: any[];
@@ -98,7 +97,6 @@ export declare class ServiceRequestComponent implements OnInit {
98
97
  check4AllowedRoles2AccessRefund: () => boolean;
99
98
  allowFurtherAccessAfter4Days: (payment: IPayment) => boolean;
100
99
  issueRefund(payment: IPayment): void;
101
- goToServiceRequestPage(event: any): void;
102
100
  goToPayementView(paymentGroupReference: string, paymentReference: string, paymentMethod: string): void;
103
101
  goToPaymentViewComponent(paymentGroup: any): void;
104
102
  resetOrderData(): void;
@@ -0,0 +1,6 @@
1
+ import { IRefundContactDetails } from './IRefundContactDetails';
2
+ export declare class IPutNotificationRequest {
3
+ recipient_email_address?: string;
4
+ recipient_postal_address?: IRefundContactDetails;
5
+ constructor(contactDetails: any, notificationType: string);
6
+ }
@@ -0,0 +1,9 @@
1
+ export interface IRefundContactDetails {
2
+ address_line?: string;
3
+ city?: string;
4
+ country?: string;
5
+ county?: string;
6
+ email?: string;
7
+ notification_type?: string;
8
+ postal_code?: string;
9
+ }
@@ -0,0 +1,16 @@
1
+ export interface IRefundsNotifications {
2
+ contact_details: {
3
+ address_line: string;
4
+ city: string;
5
+ country: string;
6
+ county: string;
7
+ date_created: string;
8
+ date_updated: string;
9
+ email: string;
10
+ postal_code: string;
11
+ };
12
+ date_created: string;
13
+ date_updated: string;
14
+ notification_type: string;
15
+ reference: string;
16
+ }
@@ -1,4 +1,6 @@
1
+ import { IRefundContactDetails } from './IRefundContactDetails';
1
2
  export declare class PostIssueRefundRetroRemission {
2
3
  remissionReference: string;
3
- constructor(remissionReference: string);
4
+ contact_details: IRefundContactDetails;
5
+ constructor(remissionReference: string, contactDeatils: any);
4
6
  }
@@ -1,5 +1,7 @@
1
+ import { IRefundContactDetails } from './IRefundContactDetails';
1
2
  export declare class PostRefundRetroRemission {
2
3
  payment_reference: string;
3
4
  refund_reason: string;
4
- constructor(payment_reference: string, refund_reason: string);
5
+ contact_details: IRefundContactDetails;
6
+ constructor(payment_reference: string, refund_reason: string, contactDeatils: any);
5
7
  }
@@ -2,7 +2,6 @@ import { ChangeDetectorRef, OnInit } from '@angular/core';
2
2
  import { PaymentLibService } from './payment-lib.service';
3
3
  import { IBSPayments } from './interfaces/IBSPayments';
4
4
  import { OrderslistService } from './services/orderslist.service';
5
- import { IPayment } from './interfaces/IPayment';
6
5
  export declare class PaymentLibComponent implements OnInit {
7
6
  private paymentLibService;
8
7
  private cd;
@@ -10,6 +9,7 @@ export declare class PaymentLibComponent implements OnInit {
10
9
  API_ROOT: string;
11
10
  BULKSCAN_API_ROOT: string;
12
11
  REFUNDS_API_ROOT: string;
12
+ NOTIFICATION_API_ROOT: string;
13
13
  CCD_CASE_NUMBER: string;
14
14
  EXC_REFERENCE: string;
15
15
  PAYMENT_METHOD: string;
@@ -51,7 +51,6 @@ export declare class PaymentLibComponent implements OnInit {
51
51
  isFromRefundStatusPage: boolean;
52
52
  iscancelClicked: boolean;
53
53
  isFromPaymentDetailPage: boolean;
54
- pbaPayOrderRef: IPayment;
55
54
  isTakePayment: boolean;
56
55
  orderDetail: any[];
57
56
  orderRef: string;
@@ -2,6 +2,7 @@ export declare class PaymentLibService {
2
2
  API_ROOT: string;
3
3
  BULKSCAN_API_ROOT: string;
4
4
  REFUNDS_API_ROOT: string;
5
+ NOTIFICATION_API_ROOT: string;
5
6
  constructor();
6
7
  setApiRootUrl(apiRoot: string): void;
7
8
  getApiRootUrl(): string;
@@ -9,4 +10,6 @@ export declare class PaymentLibService {
9
10
  getBulkScanApiRootUrl(): string;
10
11
  setRefundndsApiRootUrl(refundsapiRoot: string): void;
11
12
  getRefundsApiRootUrl(): string;
13
+ setNoticationApiRootUrl(notificationapiRoot: string): void;
14
+ getNoticationApiRootUrl(): string;
12
15
  }
@@ -0,0 +1,15 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { ErrorHandlerService } from '../shared/error-handler.service';
3
+ import { WebComponentHttpClient } from '../shared/httpclient/webcomponent.http.client';
4
+ import { PaymentLibService } from '../../payment-lib.service';
5
+ import { Observable } from 'rxjs/Observable';
6
+ import { IRefundsNotifications } from '../../interfaces/IRefundsNotifications';
7
+ export declare class NotificationService {
8
+ private http;
9
+ private https;
10
+ private errorHandlerService;
11
+ private paymentLibService;
12
+ constructor(http: HttpClient, https: WebComponentHttpClient, errorHandlerService: ErrorHandlerService, paymentLibService: PaymentLibService);
13
+ getRefundNotification(reference: string): Observable<IRefundsNotifications>;
14
+ getAddressByPostcode(postcode: string): Observable<any>;
15
+ }
@@ -15,8 +15,6 @@ import { AllocatePaymentRequest } from '../../interfaces/AllocatePaymentRequest'
15
15
  import { IAllocationPaymentsRequest } from '../../interfaces/IAllocationPaymentsRequest';
16
16
  import { IOrderReferenceFee } from '../../interfaces/IOrderReferenceFee';
17
17
  import { BehaviorSubject } from 'rxjs';
18
- import { IserviceRequestPbaPayment } from '../../interfaces/IserviceRequestPbaPayment';
19
- import { IserviceRequestCardPayment } from '../../interfaces/IserviceRequestCardPayment';
20
18
  import { AddRetroRemissionRequest } from '../../interfaces/AddRetroRemissionRequest';
21
19
  import { PostRefundRetroRemission } from '../../interfaces/PostRefundRetroRemission';
22
20
  import { PostIssueRefundRetroRemission } from '../../interfaces/PostIssueRefundRetroRemission';
@@ -32,9 +30,6 @@ export declare class PaymentViewService {
32
30
  getPaymentDetails(paymentReference: string, paymentMethod: string): Observable<IPayment>;
33
31
  getPaymentGroupDetails(paymentGroupReference: string): Observable<IPaymentGroup>;
34
32
  getApportionPaymentDetails(paymentReference: string): Observable<IPaymentGroup>;
35
- getPBAaccountDetails(): Observable<any>;
36
- postWays2PayCardPayment(serviceRef: string, body: IserviceRequestCardPayment): Observable<any>;
37
- postPBAaccountPayment(serviceRef: string, body: IserviceRequestPbaPayment): Observable<any>;
38
33
  postBSPayments(body: AllocatePaymentRequest): Observable<any>;
39
34
  postBSUnidentifiedPayments(body: UnidentifiedPaymentsRequest): Observable<any>;
40
35
  postBSUnsolicitedPayments(body: UnsolicitedPaymentsRequest): Observable<any>;
@@ -9,6 +9,7 @@ import { IPatchRefundAction } from '../../interfaces/IPatchRefundAction';
9
9
  import { IRefundList } from '../../interfaces/IRefundList';
10
10
  import { IssueRefundRequest } from '../../interfaces/IssueRefundRequest';
11
11
  import { IResubmitRefundRequest } from '../../interfaces/IResubmitRefundRequest';
12
+ import { IPutNotificationRequest } from '../../interfaces/IPutNotificationRequest';
12
13
  export declare class RefundsService {
13
14
  private http;
14
15
  private https;
@@ -25,6 +26,7 @@ export declare class RefundsService {
25
26
  getRefundStatusList(ccdCaseNumber: string): Observable<IRefundList[]>;
26
27
  getUserDetails(): Observable<any>;
27
28
  postIssueRefund(body: IssueRefundRequest): Observable<any>;
29
+ putResendOrEdit(body: IPutNotificationRequest, refundRef: string, notificationType: string): Observable<any>;
28
30
  patchResubmitRefund(body: IResubmitRefundRequest, refund_reference: string): Observable<any>;
29
31
  addHeaders(options: any): any;
30
32
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hmcts/ccpay-web-component",
3
- "version": "5.0.1-beta88",
3
+ "version": "5.0.1-beta93",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -1,199 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { Component, Input } from '@angular/core';
6
- import { PaymentViewService } from '../../services/payment-view/payment-view.service';
7
- import { PaymentLibComponent } from '../../payment-lib.component';
8
- import { IserviceRequestCardPayment } from '../../interfaces/IserviceRequestCardPayment';
9
- import { IserviceRequestPbaPayment } from '../../interfaces/IserviceRequestPbaPayment';
10
- /** @type {?} */
11
- const BS_ENABLE_FLAG = 'bulk-scan-enabling-fe';
12
- export class PbaPaymentComponent {
13
- /**
14
- * @param {?} paymentLibComponent
15
- * @param {?} paymentViewService
16
- */
17
- constructor(paymentLibComponent, paymentViewService) {
18
- this.paymentLibComponent = paymentLibComponent;
19
- this.paymentViewService = paymentViewService;
20
- this.isCardPaymentSuccess = true;
21
- this.isInSufficiantFund = false;
22
- this.isPBAAccountNotExist = false;
23
- this.isPBAServerError = false;
24
- this.isGetPBAAccountSucceed = false;
25
- this.selectedPbaAccount = '';
26
- this.pbaAccountRef = '';
27
- this.isContinueButtondisabled = true;
28
- this.isPBAAccountPaymentSuccess = false;
29
- }
30
- /**
31
- * @return {?}
32
- */
33
- ngOnInit() {
34
- this.pbaPayOrderRef = this.paymentLibComponent.pbaPayOrderRef;
35
- this.viewStatus = 'pba-payment';
36
- this.errorMsg = null;
37
- this.paymentViewService.getPBAaccountDetails()
38
- .subscribe((/**
39
- * @param {?} result
40
- * @return {?}
41
- */
42
- result => {
43
- this.isGetPBAAccountSucceed = true;
44
- this.pbaAccountList = result.organisationEntityResponse.paymentAccount;
45
- }), (/**
46
- * @param {?} error
47
- * @return {?}
48
- */
49
- error => {
50
- this.errorMsg = error;
51
- }));
52
- }
53
- /**
54
- * @param {?} args
55
- * @return {?}
56
- */
57
- selectpbaaccount(args) {
58
- if (args.currentTarget.id === 'pbaAccountNumber') {
59
- this.selectedPbaAccount = args.target.value;
60
- }
61
- if (args.currentTarget.id === 'pbaAccountRef') {
62
- this.pbaAccountRef = args.target.value;
63
- }
64
- if (this.selectedPbaAccount !== '' && this.pbaAccountRef !== "") {
65
- this.isContinueButtondisabled = false;
66
- }
67
- else {
68
- this.isContinueButtondisabled = true;
69
- }
70
- }
71
- /**
72
- * @return {?}
73
- */
74
- saveAndContinue() {
75
- this.isInSufficiantFund = false;
76
- this.isPBAAccountNotExist = false;
77
- this.isPBAServerError = false;
78
- this.isPBAAccountPaymentSuccess = false;
79
- if (this.pbaAccountList.indexOf(this.selectedPbaAccount) !== -1) {
80
- /** @type {?} */
81
- const requestBody = new IserviceRequestPbaPayment(this.selectedPbaAccount, this.pbaPayOrderRef.orderTotalFees, this.pbaAccountRef);
82
- this.paymentViewService.postPBAaccountPayment(this.pbaPayOrderRef.orderRefId, requestBody)
83
- .subscribe((/**
84
- * @param {?} r
85
- * @return {?}
86
- */
87
- r => {
88
- this.pbaAccountrPaymentResult = JSON.parse(r).data;
89
- this.isPBAAccountPaymentSuccess = true;
90
- }), (/**
91
- * @param {?} e
92
- * @return {?}
93
- */
94
- e => {
95
- if (e.status == '402') {
96
- this.isInSufficiantFund = true;
97
- }
98
- else if (e.status == '410' || e.status == '412') {
99
- this.isPBAAccountNotExist = true;
100
- }
101
- else {
102
- this.isPBAServerError = true;
103
- }
104
- }));
105
- }
106
- else {
107
- this.isPBAServerError = true;
108
- }
109
- }
110
- /**
111
- * @return {?}
112
- */
113
- cardPayment() {
114
- this.isCardPaymentSuccess = true;
115
- /** @type {?} */
116
- const requestBody = new IserviceRequestCardPayment(this.pbaPayOrderRef.orderTotalFees);
117
- this.paymentViewService.postWays2PayCardPayment(this.pbaPayOrderRef.orderRefId, requestBody)
118
- .subscribe((/**
119
- * @param {?} result
120
- * @return {?}
121
- */
122
- result => {
123
- /** @type {?} */
124
- const paymentUrl = JSON.parse(result).next_url;
125
- window.location.href = paymentUrl;
126
- }), (/**
127
- * @param {?} error
128
- * @return {?}
129
- */
130
- error => {
131
- this.isCardPaymentSuccess = false;
132
- }));
133
- }
134
- /**
135
- * @return {?}
136
- */
137
- gotoCasetransationPage() {
138
- this.paymentLibComponent.viewName = 'case-transactions';
139
- this.paymentLibComponent.TAKEPAYMENT = false;
140
- this.paymentLibComponent.ISBSENABLE = true;
141
- this.paymentLibComponent.isFromServiceRequestPage = true;
142
- }
143
- }
144
- PbaPaymentComponent.decorators = [
145
- { type: Component, args: [{
146
- selector: 'ccpay-pba-payment',
147
- template: "<ng-container *ngIf=\"viewStatus === 'pba-payment'\">\n\n <div class=\"govuk-breadcrumbs\" *ngIf=\"!errorMsg && !isPBAAccountPaymentSuccess && !isCardPaymentSuccess\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a href=\"javascript:void(0)\" (click)=\"gotoCasetransationPage()\" class=\"govuk-back-link pba-payments-16-font\">Back</a>\n </li>\n </ol>\n </div>\n <div class=\"pba-payment\" *ngIf=\"(pbaAccountList?.length > 0 || errorMsg) && !isInSufficiantFund && !isPBAAccountNotExist && !isPBAServerError && !isPBAAccountPaymentSuccess && isCardPaymentSuccess\">\n \n <div *ngIf=\"errorMsg\" class=\"govuk-error-summary pba-payments-error-box--size\" aria-labelledby=\"error-summary-title\" >\n <h2 class=\"govuk-error-summary__title govuk-error-summary__title-custom pba-payments-24-font\" id=\"error-summary-title\">\n There is a problem\n </h2>\n <div class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li class=\"pba-payments-error-16-font\">\n Your PBA account cannot be found.\n </li>\n <li class=\"pba-payments-error-16-font\">\n If you know your organisation has a PBA, try again.\n </li>\n <li class=\"pba-payments-error-16-font\">\n You can also pay by credit or debit card.\n </li>\n </ul>\n </div>\n </div>\n <h1 class=\"heading-medium margin-top-10-px\">Pay fee using Payment by Account (PBA)</h1>\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label pba-payments-govuk__label pba-payments-19-font\">\n Amount to pay \n </label>\n <span class=\"pba-payments-19-font\">{{pbaPayOrderRef.orderTotalFees | currency :'GBP':'symbol':'1.2-2'}}</span>\n </div>\n\n <div class=\"govuk-form-group pba-payments-select-box--size\" *ngIf=\"!errorMsg\">\n <label class=\"govuk-label pba-payments-govuk__label pba-payments-19-font\" for=\"pbaAccountNumber\">\n Select a PBA \n </label>\n <select class=\"form-control short-input\" id=\"pbaAccountNumber\" (change)=\"selectpbaaccount($event)\">\n <option value=\"\" selected='selected'>Select option</option>\n <option *ngFor=\"let pbaAccount of pbaAccountList;\" value=\"{{pbaAccount}}\">{{pbaAccount}}</option>\n </select>\n </div>\n <div class=\"govuk-form-group\" *ngIf=\"!errorMsg && selectedPbaAccount\">\n <label class=\"govuk-label pba-payments-govuk__label pba-payments-24-font\" for=\"pbaAccountNumber\">\n Enter a reference for your PBA account statements \n </label>\n <div id=\"event-name-hint\" class=\"govuk-hint pba-payments-19-font pba-payment-width\">\n This should be your own unique reference to identify the case. It will appear on your statements.\n </div>\n <input class=\"govuk-input pba-payments-ref-box--size pba-payments-19-font\" id=\"pbaAccountRef\" (change)=\"selectpbaaccount($event)\" name=\"pbaAccountRef\" type=\"text\" aria-describedby=\"pbaAccountRef-hint\">\n </div>\n <div class=\"govuk-button--group\" *ngIf=\"errorMsg\">\n <button type=\"button\" class=\"button pba-payments-19-font govuk-button--secondary pba-payments-margin-10\" (click)=\"gotoCasetransationPage()\">\n View Service Request\n </button>\n <button type=\"submit\" class=\"button pba-payments-19-font pba-payments-20-margin\" (click)=\"cardPayment()\">\n Pay by card\n </button>\n </div>\n <div class=\"govuk-button--group\" *ngIf=\"!errorMsg\">\n <button type=\"submit\" [disabled]=\"isContinueButtondisabled\" class=\"button pba-payments-19-font pba-payments-20-margin\" (click)=\"saveAndContinue()\">\n Continue\n </button>\n </div>\n </div>\n<ng-container *ngIf=\"pbaAccountList?.length <= 0 && !errorMsg && isGetPBAAccountSucceed && isCardPaymentSuccess\">\n <div class=\"govuk-width-container\">\n <main class=\"govuk-main-wrapper govuk-main-wrapper--l\" id=\"main-content\" role=\"main\">\n <div class=\"govuk-grid-row\">\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 <h2 class=\"warning-heading-m\">You don\u2019t have a registered PBA.</h2>\n </strong>\n </div>\n <div class=\"pba-payments-margin-top-10\">\n <h2 class=\"heading-medium\">Pay by credit or debit card</h2>\n <p class=\"govuk-body pba-payments-19-font\">\n We recommend that you apply to get a new PBA to pay for fees.\n </p>\n <p class=\"govuk-bod ypba-payments-19-font\">\n you can also pay by credit or debit card if you need to pay now\n </p>\n <p class=\"govuk-body\">\n <button type=\"submit\" (click)=\"cardPayment()\" class=\"button pba-payments-19-font pba-payments-20-margin\">\n Pay by card\n </button>\n </p>\n \n </div>\n <div class=\"pba-payments-margin-top-10\">\n <h2 class=\"heading-medium\">Register an existing PBA with MyHMCTS</h2>\n <p class=\"govuk-body pba-payments-19-font\">\n You may find it easier in future to pay by PBA, your organisation administrator will need to \n email <a href=\"mailto: MyHMCTSsupport@justice.gov.uk\">MyHMCTSsupport@justice.gov.uk</a> to ask for your PBA to be registered with your \n MyHMCTS account. You should include your organisation name and PBA number.\n </p>\n <p class=\"govuk-body pba-payments-19-font\">\n It can then take up to 3 days for your account to be updated. You\u2019ll need to start your claim \n again to pay the fee.\n </p>\n </div>\n <div class=\"pba-payments-margin-top-10\">\n <h2 class=\"heading-medium\">Apply to get a new PBA </h2>\n <p class=\"govuk-body pba-payments-19-font\">\n You\u2019ll need to provide details for you and your organisation, including the required credit\n limit for your account.\n </p>\n <p class=\"govuk-body pba-payments-19-font\">\n Once your account has been registered, you\u2019ll need to start your claim again to pay the fee.\n </p>\n <p class=\"govuk-body pba-payments-19-font\">\n Read more information on <a target=\"_blank\" href=\"https://www.gov.uk/guidance/hmcts-payment-by-account-for-online-services\">registering for PBA</a>.\n </p>\n </div>\n </div>\n </main>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isInSufficiantFund && isCardPaymentSuccess\">\n <div class=\"govuk-width-container\">\n <main class=\"govuk-main-wrapper govuk-main-wrapper--l\" id=\"main-content\" role=\"main\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-error-summary pba-payments-error-box--size\" aria-labelledby=\"error-summary-title\">\n <h2 class=\"govuk-error-summary__title govuk-error-summary__title-custom pba-payments-24-font\" id=\"error-summary-title\">\n There is a problem\n </h2>\n <div class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li class=\"pba-payments-error-16-font\">\n You don't have enough funds in your PBA account to pay for this fee.\n </li>\n <li class=\"pba-payments-error-16-font\">\n If you have already topped up your PBA account, wait up to 24 hours for the new balance to become available.\n </li>\n </ul>\n </div>\n </div>\n <div class=\"pba-payments-margin-top-10\">\n <h2 class=\"heading-medium\">Should you need any further advice</h2>\n <p class=\"govuk-body pba-payments-19-font\">\n Email <a href=\"mailto:MiddleOffice.DDservices@liberata.com\">MiddleOffice.DDservices@liberata.com</a>or call <a href=\"tel:01633-652-125\">01633 652 125</a> (option 3) to try to fix the issue.\n </p>\n <p class=\"govuk-body pba-payments-19-font\">\n you can also pay by credit or debit card.\n </p>\n <div class=\"govuk-button--group\">\n <button type=\"button\" class=\"button pba-payments-19-font govuk-button--secondary pba-payments-margin-10\" (click)=\"gotoCasetransationPage()\">\n View Service Request\n </button>\n <button type=\"submit\" class=\"button pba-payments-19-font pba-payments-20-margin\" (click)=\"cardPayment()\">\n Pay by card\n </button>\n </div>\n </div>\n </div>\n </main>\n </div>\n</ng-container>\n<ng-container *ngIf=\"isPBAAccountNotExist && isCardPaymentSuccess\">\n <div class=\"govuk-width-container\">\n <main class=\"govuk-main-wrapper govuk-main-wrapper--l\" id=\"main-content\" role=\"main\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-error-summary pba-payments-error-box--size\" aria-labelledby=\"error-summary-title\">\n <h2 class=\"govuk-error-summary__title govuk-error-summary__title-custom pba-payments-24-font\" id=\"error-summary-title\">\n There is a problem\n </h2>\n <div class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li class=\"pba-payments-error-16-font\">\n Your PBA account ({{selectedPbaAccount}}) no longer exists.\n </li>\n </ul>\n </div>\n </div>\n <div class=\"pba-payments-margin-top-10\">\n <h2 class=\"heading-medium\">Should you need any further advice</h2>\n <p class=\"govuk-body pba-payments-19-font govuk-body-width\">\n Email <a href=\"mailto:MiddleOffice.DDservices@liberata.com\">MiddleOffice.DDservices@liberata.com</a>or call <a href=\"tel:01633-652-125\">01633 652 125</a> (option 3) to try to fix the issue.\n </p>\n <p class=\"govuk-body pba-payments-19-font\">\n you can also pay by credit or debit card.\n </p>\n <div class=\"govuk-button--group\">\n <button type=\"button\" class=\"button pba-payments-19-font govuk-button--secondary pba-payments-margin-10\" (click)=\"gotoCasetransationPage()\">\n View Service Request\n </button>\n <button type=\"submit\" class=\"button pba-payments-19-font pba-payments-20-margin\" (click)=\"cardPayment()\">\n Pay by card\n </button>\n </div>\n </div>\n </div>\n </main>\n </div>\n</ng-container>\n<ng-container *ngIf=\"isPBAServerError && isCardPaymentSuccess\">\n <div class=\"govuk-width-container\">\n <main class=\"govuk-main-wrapper govuk-main-wrapper--l\" id=\"main-content\" role=\"main\">\n <div class=\"govuk-grid-row\">\n <div class=\"pba-payments-margin-top-10\">\n <h2 class=\"pba-payments-heading-lg\">Sorry, there is a problem with the service</h2>\n <p class=\"govuk-body pba-payments-19-font\">\n Try again later.\n </p>\n <p class=\"govuk-body pba-payments-19-font\">\n you can also pay by credit or debit card.\n </p>\n <div class=\"govuk-button--group\">\n <button type=\"button\" class=\"button pba-payments-19-font govuk-button--secondary pba-payments-margin-10\" (click)=\"gotoCasetransationPage()\">\n View Service Request\n </button>\n <button type=\"submit\" class=\"button pba-payments-19-font pba-payments-20-margin\" (click)=\"cardPayment()\">\n Pay by card\n </button>\n </div>\n </div>\n </div>\n </main>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isPBAAccountPaymentSuccess && isCardPaymentSuccess\">\n <div class=\"govuk-width-container\">\n <main class=\"govuk-main-wrapper govuk-main-wrapper--l\" id=\"main-content\" role=\"main\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-panel govuk-panel--confirmation pba-payments--confirmation\">\n <h1 class=\"govuk-panel__title pba-payments--title\">\n Payment successful\n </h1>\n <div class=\"govuk-panel__body pba-payments__body\">\n Your payment reference is <br><strong>{{pbaAccountrPaymentResult.payment_reference}}</strong>\n </div>\n </div>\n <p class=\"govuk-body pba-payments-19-font\">\n <a href=\"javascript:void(0)\" (click)=\"gotoCasetransationPage()\">View service requests</a>\n </p>\n </div>\n </main>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!isCardPaymentSuccess\">\n <div class=\"govuk-width-container\">\n <main class=\"govuk-main-wrapper govuk-main-wrapper--l\" id=\"main-content\" role=\"main\">\n <div class=\"govuk-grid-row\">\n <div class=\"pba-payments-margin-top-10\">\n <h2 class=\"pba-payments-heading-lg\">Sorry, there is a problem with the service</h2>\n <p class=\"govuk-body pba-payments-19-font\">\n Try again later.\n </p>\n <!-- <p class=\"govuk-body pba-payments-19-font\">\n you can also <a href=\"javascript:void(0)\" (click)=\"cardPayment()\" >pay by credit or debit card</a>.\n </p> -->\n <p class=\"govuk-body pba-payments-19-font\">\n <a href=\"javascript:void(0)\" (click)=\"gotoCasetransationPage()\">View service requests</a>\n </p>\n </div>\n </div>\n </main>\n </div>\n</ng-container>\n</ng-container>\n\n\n\n",
148
- styles: [".pba-payments-govuk__label{font-weight:700;line-height:1.31578947}.pba-payments-19-font{font-size:19px}.pba-payments-16-font{font-size:16px}.pba-payments-24-font{font-size:24px}.pba-payments-20-margin{margin-bottom:20px}.pba-payments-select-box--size{width:40%}.pba-payments-error-box--size{width:80%}.pba-payments-ref-box--size{width:60%}.pba-payments-error-16-font{font-size:16px;line-height:34px}.pba-payments-margin-10{margin-right:10px}.pba-payments-margin-top-10{margin-top:15px}.pba-payments-heading-lg{font-size:40px;font-weight:700;line-height:72px}.pba-payments--confirmation{background:#00703c!important}.pba-payments__body{font-size:36px!important}.pba-payments--title{font-size:48px!important}.warning-heading-m{font-size:29px;font-weight:700}.pba-payment-width{width:75%}.margin-top-10-px{margin-top:10px}.govuk-error-summary:focus{outline:#fd0 solid 3px}.govuk-body-width{width:650px}"]
149
- }] }
150
- ];
151
- /** @nocollapse */
152
- PbaPaymentComponent.ctorParameters = () => [
153
- { type: PaymentLibComponent },
154
- { type: PaymentViewService }
155
- ];
156
- PbaPaymentComponent.propDecorators = {
157
- pbaPayOrderRef: [{ type: Input }]
158
- };
159
- if (false) {
160
- /** @type {?} */
161
- PbaPaymentComponent.prototype.pbaPayOrderRef;
162
- /** @type {?} */
163
- PbaPaymentComponent.prototype.viewStatus;
164
- /** @type {?} */
165
- PbaPaymentComponent.prototype.pbaAccountList;
166
- /** @type {?} */
167
- PbaPaymentComponent.prototype.errorMsg;
168
- /** @type {?} */
169
- PbaPaymentComponent.prototype.isCardPaymentSuccess;
170
- /** @type {?} */
171
- PbaPaymentComponent.prototype.isInSufficiantFund;
172
- /** @type {?} */
173
- PbaPaymentComponent.prototype.isPBAAccountNotExist;
174
- /** @type {?} */
175
- PbaPaymentComponent.prototype.isPBAServerError;
176
- /** @type {?} */
177
- PbaPaymentComponent.prototype.isGetPBAAccountSucceed;
178
- /** @type {?} */
179
- PbaPaymentComponent.prototype.selectedPbaAccount;
180
- /** @type {?} */
181
- PbaPaymentComponent.prototype.pbaAccountRef;
182
- /** @type {?} */
183
- PbaPaymentComponent.prototype.isContinueButtondisabled;
184
- /** @type {?} */
185
- PbaPaymentComponent.prototype.isPBAAccountPaymentSuccess;
186
- /** @type {?} */
187
- PbaPaymentComponent.prototype.pbaAccountrPaymentResult;
188
- /**
189
- * @type {?}
190
- * @private
191
- */
192
- PbaPaymentComponent.prototype.paymentLibComponent;
193
- /**
194
- * @type {?}
195
- * @private
196
- */
197
- PbaPaymentComponent.prototype.paymentViewService;
198
- }
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGJhLXBheW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wYmEtcGF5bWVudC9wYmEtcGF5bWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztNQUVqRixjQUFjLEdBQUcsdUJBQXVCO0FBTzlDLE1BQU0sT0FBTyxtQkFBbUI7Ozs7O0lBaUI5QixZQUFxQixtQkFBd0MsRUFDbkQsa0JBQXNDO1FBRDNCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDbkQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWJoRCx5QkFBb0IsR0FBWSxJQUFJLENBQUM7UUFDckMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUN0QyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsMkJBQXNCLEdBQVksS0FBSyxDQUFDO1FBQ3hDLHVCQUFrQixHQUFXLEVBQUUsQ0FBQztRQUNoQyxrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUUzQiw2QkFBd0IsR0FBWSxJQUFJLENBQUM7UUFDekMsK0JBQTBCLEdBQVksS0FBSyxDQUFDO0lBSU8sQ0FBQzs7OztJQUVwRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDO1FB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QUMzRCxpREFBOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IFBheW1lbnRMaWJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXNlcnZpY2VSZXF1ZXN0Q2FyZFBheW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lzZXJ2aWNlUmVxdWVzdENhcmRQYXltZW50JztcbmltcG9ydCB7IElzZXJ2aWNlUmVxdWVzdFBiYVBheW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lzZXJ2aWNlUmVxdWVzdFBiYVBheW1lbnQnO1xuXG5jb25zdCBCU19FTkFCTEVfRkxBRyA9ICdidWxrLXNjYW4tZW5hYmxpbmctZmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY3BheS1wYmEtcGF5bWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYmEtcGF5bWVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BiYS1wYXltZW50LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGJhUGF5bWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHBiYVBheU9yZGVyUmVmOiBhbnk7XG4gIHZpZXdTdGF0dXM6IHN0cmluZztcbiAgcGJhQWNjb3VudExpc3Q6IHN0cmluZ1tdO1xuICBlcnJvck1zZzogYW55O1xuICBpc0NhcmRQYXltZW50U3VjY2VzczogYm9vbGVhbiA9IHRydWU7XG4gIGlzSW5TdWZmaWNpYW50RnVuZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1BCQUFjY291bnROb3RFeGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1BCQVNlcnZlckVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGlzR2V0UEJBQWNjb3VudFN1Y2NlZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRQYmFBY2NvdW50OiBzdHJpbmcgPSAnJztcbiAgcGJhQWNjb3VudFJlZjogc3RyaW5nID0gJyc7XG5cbiAgaXNDb250aW51ZUJ1dHRvbmRpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNQQkFBY2NvdW50UGF5bWVudFN1Y2Nlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGJhQWNjb3VudHJQYXltZW50UmVzdWx0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSAgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkNvbXBvbmVudCxcbiAgICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucGJhUGF5T3JkZXJSZWYgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGJhUGF5T3JkZXJSZWY7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ3BiYS1wYXltZW50JztcbiAgICB0aGlzLmVycm9yTXNnID0gbnVsbDtcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRQQkFhY2NvdW50RGV0YWlscygpXG4gICAgLnN1YnNjcmliZShcbiAgICAgIHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMuaXNHZXRQQkFBY2NvdW50U3VjY2VlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucGJhQWNjb3VudExpc3QgPSByZXN1bHQub3JnYW5pc2F0aW9uRW50aXR5UmVzcG9uc2UucGF5bWVudEFjY291bnQ7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTXNnID0gZXJyb3I7XG4gICAgICB9XG4gICAgKTtcblxuICB9XG4gIHNlbGVjdHBiYWFjY291bnQoYXJncykge1xuICAgIGlmKGFyZ3MuY3VycmVudFRhcmdldC5pZCA9PT0gJ3BiYUFjY291bnROdW1iZXInKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUGJhQWNjb3VudCA9IGFyZ3MudGFyZ2V0LnZhbHVlOyBcbiAgICB9XG4gICAgaWYoYXJncy5jdXJyZW50VGFyZ2V0LmlkID09PSAncGJhQWNjb3VudFJlZicpIHtcbiAgICAgIHRoaXMucGJhQWNjb3VudFJlZiA9IGFyZ3MudGFyZ2V0LnZhbHVlOyBcbiAgICB9XG4gICAgaWYodGhpcy5zZWxlY3RlZFBiYUFjY291bnQgIT09ICcnICYmIHRoaXMucGJhQWNjb3VudFJlZiAhPT0gXCJcIikge1xuICAgICAgdGhpcy5pc0NvbnRpbnVlQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0NvbnRpbnVlQnV0dG9uZGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBzYXZlQW5kQ29udGludWUoKSB7XG4gICAgdGhpcy5pc0luU3VmZmljaWFudEZ1bmQgPSBmYWxzZTtcbiAgICB0aGlzLmlzUEJBQWNjb3VudE5vdEV4aXN0ID0gZmFsc2U7XG4gICAgdGhpcy5pc1BCQVNlcnZlckVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5pc1BCQUFjY291bnRQYXltZW50U3VjY2VzcyA9IGZhbHNlO1xuICAgIGlmICggdGhpcy5wYmFBY2NvdW50TGlzdC5pbmRleE9mKHRoaXMuc2VsZWN0ZWRQYmFBY2NvdW50KSAhPT0gLTEgKSB7XG4gICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IG5ldyBJc2VydmljZVJlcXVlc3RQYmFQYXltZW50KFxuICAgICAgICB0aGlzLnNlbGVjdGVkUGJhQWNjb3VudCwgdGhpcy5wYmFQYXlPcmRlclJlZi5vcmRlclRvdGFsRmVlcywgdGhpcy5wYmFBY2NvdW50UmVmKTtcbiAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLnBvc3RQQkFhY2NvdW50UGF5bWVudCh0aGlzLnBiYVBheU9yZGVyUmVmLm9yZGVyUmVmSWQsIHJlcXVlc3RCb2R5KVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgciA9PiB7XG4gICAgICAgICAgdGhpcy5wYmFBY2NvdW50clBheW1lbnRSZXN1bHQgPSBKU09OLnBhcnNlKHIpLmRhdGE7XG4gICAgICAgICAgdGhpcy5pc1BCQUFjY291bnRQYXltZW50U3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGUgPT4ge1xuICAgICAgICAgIGlmKGUuc3RhdHVzID09ICc0MDInKSB7XG4gICAgICAgICAgICB0aGlzLmlzSW5TdWZmaWNpYW50RnVuZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmKGUuc3RhdHVzID09ICc0MTAnIHx8IGUuc3RhdHVzID09ICc0MTInKSB7XG4gICAgICAgICAgICB0aGlzLmlzUEJBQWNjb3VudE5vdEV4aXN0ID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1BCQVNlcnZlckVycm9yID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNQQkFTZXJ2ZXJFcnJvciA9IHRydWU7XG4gICAgfVxuICB9XG4gIGNhcmRQYXltZW50KCkge1xuICAgIHRoaXMuaXNDYXJkUGF5bWVudFN1Y2Nlc3MgPSB0cnVlO1xuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0gbmV3IElzZXJ2aWNlUmVxdWVzdENhcmRQYXltZW50IChcbiAgICAgIHRoaXMucGJhUGF5T3JkZXJSZWYub3JkZXJUb3RhbEZlZXMpO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLnBvc3RXYXlzMlBheUNhcmRQYXltZW50KHRoaXMucGJhUGF5T3JkZXJSZWYub3JkZXJSZWZJZCwgcmVxdWVzdEJvZHkpXG4gICAgLnN1YnNjcmliZShcbiAgICAgIHJlc3VsdCA9PiB7XG4gICAgICAgIGNvbnN0IHBheW1lbnRVcmwgPSBKU09OLnBhcnNlKHJlc3VsdCkubmV4dF91cmw7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcGF5bWVudFVybDtcbiAgICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIHRoaXMuaXNDYXJkUGF5bWVudFN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuXG4gIH1cbiAgZ290b0Nhc2V0cmFuc2F0aW9uUGFnZSgpIHtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnY2FzZS10cmFuc2FjdGlvbnMnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9IGZhbHNlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdHJ1ZTtcbiAgfVxufVxuIl19