@hmcts/ccpay-web-component 5.0.10 → 5.1.0-beta01
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.
- package/bundles/hmcts-ccpay-web-component.umd.js +5092 -8696
- package/bundles/hmcts-ccpay-web-component.umd.js.map +1 -1
- package/bundles/hmcts-ccpay-web-component.umd.min.js +1 -1
- package/bundles/hmcts-ccpay-web-component.umd.min.js.map +1 -1
- package/esm2015/hmcts-ccpay-web-component.js +2 -6
- package/esm2015/lib/components/add-remission/add-remission.component.js +34 -407
- package/esm2015/lib/components/allocate-payments/allocate-payments.component.js +37 -348
- package/esm2015/lib/components/card-details/card-details.component.js +3 -46
- package/esm2015/lib/components/case-transactions/case-transactions.component.js +111 -687
- package/esm2015/lib/components/error-banner/error-banner.component.js +2 -14
- package/esm2015/lib/components/fee-summary/fee-summary.component.js +29 -255
- package/esm2015/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +23 -181
- package/esm2015/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +27 -225
- package/esm2015/lib/components/page-not-found.component.js +2 -6
- package/esm2015/lib/components/payment-list/payment-list.component.js +4 -48
- package/esm2015/lib/components/payment-view/payment-view.component.js +39 -336
- package/esm2015/lib/components/pba-details/pba-details.component.js +3 -15
- package/esm2015/lib/components/pba-payment/pba-payment.component.js +13 -120
- package/esm2015/lib/components/process-refund/process-refund.component.js +16 -178
- package/esm2015/lib/components/processed-payments/processed-payments.component.js +4 -42
- package/esm2015/lib/components/refund-list/refund-list.component.js +9 -77
- package/esm2015/lib/components/refund-status/refund-status.component.js +25 -257
- package/esm2015/lib/components/reports/reports.component.js +21 -212
- package/esm2015/lib/components/service-request/service-request.component.js +36 -370
- package/esm2015/lib/components/status-history/status-history.component.js +4 -44
- package/esm2015/lib/components/table/table.component.js +5 -105
- package/esm2015/lib/components/unprocessed-payments/unprocessed-payments.component.js +12 -184
- package/esm2015/lib/interfaces/AddRemissionRequest.js +1 -28
- package/esm2015/lib/interfaces/AddRetroRemissionRequest.js +1 -15
- package/esm2015/lib/interfaces/AllocatePaymentRequest.js +1 -42
- package/esm2015/lib/interfaces/IAllocationPaymentsRequest.js +1 -26
- package/esm2015/lib/interfaces/IBSPayments.js +2 -45
- package/esm2015/lib/interfaces/ICardDetails.js +2 -21
- package/esm2015/lib/interfaces/IFee.js +2 -53
- package/esm2015/lib/interfaces/IOrderReferenceFee.js +2 -25
- package/esm2015/lib/interfaces/IPatchRefundAction.js +2 -15
- package/esm2015/lib/interfaces/IPayment.js +2 -65
- package/esm2015/lib/interfaces/IPaymentFailure.js +2 -33
- package/esm2015/lib/interfaces/IPaymentGroup.js +2 -19
- package/esm2015/lib/interfaces/IPaymentStatus.js +1 -25
- package/esm2015/lib/interfaces/IPaymentView.js +2 -17
- package/esm2015/lib/interfaces/IPayments.js +2 -13
- package/esm2015/lib/interfaces/IRefundAction.js +2 -15
- package/esm2015/lib/interfaces/IRefundList.js +2 -29
- package/esm2015/lib/interfaces/IRefundReasons.js +2 -19
- package/esm2015/lib/interfaces/IRefundRejectReason.js +2 -15
- package/esm2015/lib/interfaces/IRefundStatus.js +2 -23
- package/esm2015/lib/interfaces/IRefundStatusHistory.js +2 -15
- package/esm2015/lib/interfaces/IRemission.js +2 -25
- package/esm2015/lib/interfaces/IResubmitRefundRequest.js +1 -15
- package/esm2015/lib/interfaces/IStatusHistories.js +2 -19
- package/esm2015/lib/interfaces/IStatusHistory.js +2 -21
- package/esm2015/lib/interfaces/IserviceRequestCardPayment.js +1 -16
- package/esm2015/lib/interfaces/IserviceRequestPbaPayment.js +1 -23
- package/esm2015/lib/interfaces/IssueRefundRequest.js +1 -18
- package/esm2015/lib/interfaces/PayhubAntennaRequest.js +2 -21
- package/esm2015/lib/interfaces/PaymentToPayhubRequest.js +2 -27
- package/esm2015/lib/interfaces/PostIssueRefundRetroRemission.js +1 -12
- package/esm2015/lib/interfaces/PostRefundRetroRemission.js +1 -15
- package/esm2015/lib/interfaces/RefundsRequest.js +1 -15
- package/esm2015/lib/interfaces/UnidentifiedPaymentsRequest.js +1 -20
- package/esm2015/lib/interfaces/UnsolicitedPaymentsRequest.js +1 -29
- package/esm2015/lib/payment-lib.component.js +2 -147
- package/esm2015/lib/payment-lib.module.js +1 -5
- package/esm2015/lib/payment-lib.service.js +2 -45
- package/esm2015/lib/pipes/capitalize.pipe.js +1 -11
- package/esm2015/lib/pipes/ccd-hyphens.pipe.js +1 -12
- package/esm2015/lib/pipes/key-value.pipe.js +1 -11
- package/esm2015/lib/pipes/sanitize-html.pipe.js +1 -20
- package/esm2015/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +9 -102
- package/esm2015/lib/services/card-details/card-details.service.js +2 -39
- package/esm2015/lib/services/case-transactions/case-transactions.service.js +2 -39
- package/esm2015/lib/services/orderslist.service.js +2 -251
- package/esm2015/lib/services/payment-list/payment-list.service.js +2 -42
- package/esm2015/lib/services/payment-view/payment-view.service.js +3 -168
- package/esm2015/lib/services/refunds/refunds.service.js +7 -109
- package/esm2015/lib/services/shared/error-handler.service.js +4 -21
- package/esm2015/lib/services/shared/httpclient/webcomponent.http.client.js +6 -82
- package/esm2015/lib/services/shared/logger/console-logger.service.js +3 -27
- package/esm2015/lib/services/shared/logger/logger.service.js +3 -35
- package/esm2015/lib/services/status-history/status-history.service.js +2 -40
- package/esm2015/lib/services/xl-file/xl-file.service.js +2 -60
- package/esm2015/public_api.js +4 -8
- package/fesm2015/hmcts-ccpay-web-component.js +557 -3558
- package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
- package/hmcts-ccpay-web-component.d.ts +1 -0
- package/hmcts-ccpay-web-component.d.ts.map +1 -0
- package/hmcts-ccpay-web-component.metadata.json +1 -1
- package/lib/components/add-remission/add-remission.component.d.ts +1 -0
- package/lib/components/add-remission/add-remission.component.d.ts.map +1 -0
- package/lib/components/add-remission/add-remission.component.ngfactory.d.ts.map +1 -0
- package/lib/components/add-remission/add-remission.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/allocate-payments/allocate-payments.component.d.ts +1 -0
- package/lib/components/allocate-payments/allocate-payments.component.d.ts.map +1 -0
- package/lib/components/allocate-payments/allocate-payments.component.ngfactory.d.ts.map +1 -0
- package/lib/components/allocate-payments/allocate-payments.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/card-details/card-details.component.css.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/card-details/card-details.component.d.ts +2 -1
- package/lib/components/card-details/card-details.component.d.ts.map +1 -0
- package/lib/components/card-details/card-details.component.ngfactory.d.ts.map +1 -0
- package/lib/components/case-transactions/case-transactions.component.css.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/case-transactions/case-transactions.component.d.ts +2 -1
- package/lib/components/case-transactions/case-transactions.component.d.ts.map +1 -0
- package/lib/components/case-transactions/case-transactions.component.ngfactory.d.ts.map +1 -0
- package/lib/components/error-banner/error-banner.component.d.ts +1 -0
- package/lib/components/error-banner/error-banner.component.d.ts.map +1 -0
- package/lib/components/error-banner/error-banner.component.ngfactory.d.ts.map +1 -0
- package/lib/components/error-banner/error-banner.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/fee-summary/fee-summary.component.d.ts +1 -0
- package/lib/components/fee-summary/fee-summary.component.d.ts.map +1 -0
- package/lib/components/fee-summary/fee-summary.component.ngfactory.d.ts.map +1 -0
- package/lib/components/fee-summary/fee-summary.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.d.ts +1 -0
- package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.d.ts.map +1 -0
- package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.ngfactory.d.ts.map +1 -0
- package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.d.ts +1 -0
- package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.d.ts.map +1 -0
- package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.ngfactory.d.ts.map +1 -0
- package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/page-not-found.component.d.ts +1 -0
- package/lib/components/page-not-found.component.d.ts.map +1 -0
- package/lib/components/page-not-found.component.ngfactory.d.ts.map +1 -0
- package/lib/components/payment-list/payment-list.component.css.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/payment-list/payment-list.component.d.ts +1 -0
- package/lib/components/payment-list/payment-list.component.d.ts.map +1 -0
- package/lib/components/payment-list/payment-list.component.ngfactory.d.ts.map +1 -0
- package/lib/components/payment-view/payment-view.component.css.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/payment-view/payment-view.component.d.ts +3 -2
- package/lib/components/payment-view/payment-view.component.d.ts.map +1 -0
- package/lib/components/payment-view/payment-view.component.ngfactory.d.ts.map +1 -0
- package/lib/components/pba-details/pba-details.component.css.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/pba-details/pba-details.component.d.ts +1 -0
- package/lib/components/pba-details/pba-details.component.d.ts.map +1 -0
- package/lib/components/pba-details/pba-details.component.ngfactory.d.ts.map +1 -0
- package/lib/components/pba-payment/pba-payment.component.d.ts +1 -0
- package/lib/components/pba-payment/pba-payment.component.d.ts.map +1 -0
- package/lib/components/pba-payment/pba-payment.component.ngfactory.d.ts.map +1 -0
- package/lib/components/pba-payment/pba-payment.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/process-refund/process-refund.component.css.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/process-refund/process-refund.component.d.ts +1 -0
- package/lib/components/process-refund/process-refund.component.d.ts.map +1 -0
- package/lib/components/process-refund/process-refund.component.ngfactory.d.ts.map +1 -0
- package/lib/components/processed-payments/processed-payments.component.d.ts +1 -0
- package/lib/components/processed-payments/processed-payments.component.d.ts.map +1 -0
- package/lib/components/processed-payments/processed-payments.component.ngfactory.d.ts.map +1 -0
- package/lib/components/processed-payments/processed-payments.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/refund-list/refund-list.component.css.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/refund-list/refund-list.component.d.ts +1 -0
- package/lib/components/refund-list/refund-list.component.d.ts.map +1 -0
- package/lib/components/refund-list/refund-list.component.ngfactory.d.ts.map +1 -0
- package/lib/components/refund-status/refund-status.component.css.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/refund-status/refund-status.component.d.ts +2 -1
- package/lib/components/refund-status/refund-status.component.d.ts.map +1 -0
- package/lib/components/refund-status/refund-status.component.ngfactory.d.ts.map +1 -0
- package/lib/components/reports/reports.component.d.ts +1 -0
- package/lib/components/reports/reports.component.d.ts.map +1 -0
- package/lib/components/reports/reports.component.ngfactory.d.ts.map +1 -0
- package/lib/components/reports/reports.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/service-request/service-request.component.css.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/service-request/service-request.component.d.ts +1 -0
- package/lib/components/service-request/service-request.component.d.ts.map +1 -0
- package/lib/components/service-request/service-request.component.ngfactory.d.ts.map +1 -0
- package/lib/components/status-history/status-history.component.css.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/status-history/status-history.component.d.ts +1 -0
- package/lib/components/status-history/status-history.component.d.ts.map +1 -0
- package/lib/components/status-history/status-history.component.ngfactory.d.ts.map +1 -0
- package/lib/components/table/table.component.css.shim.ngstyle.d.ts.map +1 -0
- package/lib/components/table/table.component.d.ts +1 -0
- package/lib/components/table/table.component.d.ts.map +1 -0
- package/lib/components/table/table.component.ngfactory.d.ts.map +1 -0
- package/lib/components/unprocessed-payments/unprocessed-payments.component.d.ts +1 -0
- package/lib/components/unprocessed-payments/unprocessed-payments.component.d.ts.map +1 -0
- package/lib/components/unprocessed-payments/unprocessed-payments.component.ngfactory.d.ts.map +1 -0
- package/lib/components/unprocessed-payments/unprocessed-payments.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/lib/interfaces/AddRemissionRequest.d.ts +1 -0
- package/lib/interfaces/AddRemissionRequest.d.ts.map +1 -0
- package/lib/interfaces/AddRetroRemissionRequest.d.ts +1 -0
- package/lib/interfaces/AddRetroRemissionRequest.d.ts.map +1 -0
- package/lib/interfaces/AllocatePaymentRequest.d.ts +1 -0
- package/lib/interfaces/AllocatePaymentRequest.d.ts.map +1 -0
- package/lib/interfaces/IAllocationPaymentsRequest.d.ts +1 -0
- package/lib/interfaces/IAllocationPaymentsRequest.d.ts.map +1 -0
- package/lib/interfaces/IBSPayments.d.ts +1 -0
- package/lib/interfaces/IBSPayments.d.ts.map +1 -0
- package/lib/interfaces/ICardDetails.d.ts +1 -0
- package/lib/interfaces/ICardDetails.d.ts.map +1 -0
- package/lib/interfaces/IFee.d.ts +1 -0
- package/lib/interfaces/IFee.d.ts.map +1 -0
- package/lib/interfaces/IOrderReferenceFee.d.ts +1 -0
- package/lib/interfaces/IOrderReferenceFee.d.ts.map +1 -0
- package/lib/interfaces/IPatchRefundAction.d.ts +1 -0
- package/lib/interfaces/IPatchRefundAction.d.ts.map +1 -0
- package/lib/interfaces/IPayment.d.ts +1 -0
- package/lib/interfaces/IPayment.d.ts.map +1 -0
- package/lib/interfaces/IPaymentFailure.d.ts +1 -0
- package/lib/interfaces/IPaymentFailure.d.ts.map +1 -0
- package/lib/interfaces/IPaymentGroup.d.ts +1 -0
- package/lib/interfaces/IPaymentGroup.d.ts.map +1 -0
- package/lib/interfaces/IPaymentStatus.d.ts +1 -0
- package/lib/interfaces/IPaymentStatus.d.ts.map +1 -0
- package/lib/interfaces/IPaymentView.d.ts +1 -0
- package/lib/interfaces/IPaymentView.d.ts.map +1 -0
- package/lib/interfaces/IPayments.d.ts +1 -0
- package/lib/interfaces/IPayments.d.ts.map +1 -0
- package/lib/interfaces/IRefundAction.d.ts +1 -0
- package/lib/interfaces/IRefundAction.d.ts.map +1 -0
- package/lib/interfaces/IRefundList.d.ts +1 -0
- package/lib/interfaces/IRefundList.d.ts.map +1 -0
- package/lib/interfaces/IRefundReasons.d.ts +1 -0
- package/lib/interfaces/IRefundReasons.d.ts.map +1 -0
- package/lib/interfaces/IRefundRejectReason.d.ts +1 -0
- package/lib/interfaces/IRefundRejectReason.d.ts.map +1 -0
- package/lib/interfaces/IRefundStatus.d.ts +1 -0
- package/lib/interfaces/IRefundStatus.d.ts.map +1 -0
- package/lib/interfaces/IRefundStatusHistory.d.ts +1 -0
- package/lib/interfaces/IRefundStatusHistory.d.ts.map +1 -0
- package/lib/interfaces/IRemission.d.ts +1 -0
- package/lib/interfaces/IRemission.d.ts.map +1 -0
- package/lib/interfaces/IResubmitRefundRequest.d.ts +1 -0
- package/lib/interfaces/IResubmitRefundRequest.d.ts.map +1 -0
- package/lib/interfaces/IStatusHistories.d.ts +1 -0
- package/lib/interfaces/IStatusHistories.d.ts.map +1 -0
- package/lib/interfaces/IStatusHistory.d.ts +1 -0
- package/lib/interfaces/IStatusHistory.d.ts.map +1 -0
- package/lib/interfaces/IserviceRequestCardPayment.d.ts +1 -0
- package/lib/interfaces/IserviceRequestCardPayment.d.ts.map +1 -0
- package/lib/interfaces/IserviceRequestPbaPayment.d.ts +1 -0
- package/lib/interfaces/IserviceRequestPbaPayment.d.ts.map +1 -0
- package/lib/interfaces/IssueRefundRequest.d.ts +1 -0
- package/lib/interfaces/IssueRefundRequest.d.ts.map +1 -0
- package/lib/interfaces/PayhubAntennaRequest.d.ts +1 -0
- package/lib/interfaces/PayhubAntennaRequest.d.ts.map +1 -0
- package/lib/interfaces/PaymentToPayhubRequest.d.ts +1 -0
- package/lib/interfaces/PaymentToPayhubRequest.d.ts.map +1 -0
- package/lib/interfaces/PostIssueRefundRetroRemission.d.ts +1 -0
- package/lib/interfaces/PostIssueRefundRetroRemission.d.ts.map +1 -0
- package/lib/interfaces/PostRefundRetroRemission.d.ts +1 -0
- package/lib/interfaces/PostRefundRetroRemission.d.ts.map +1 -0
- package/lib/interfaces/RefundsRequest.d.ts +1 -0
- package/lib/interfaces/RefundsRequest.d.ts.map +1 -0
- package/lib/interfaces/UnidentifiedPaymentsRequest.d.ts +1 -0
- package/lib/interfaces/UnidentifiedPaymentsRequest.d.ts.map +1 -0
- package/lib/interfaces/UnsolicitedPaymentsRequest.d.ts +1 -0
- package/lib/interfaces/UnsolicitedPaymentsRequest.d.ts.map +1 -0
- package/lib/payment-lib.component.d.ts +1 -0
- package/lib/payment-lib.component.d.ts.map +1 -0
- package/lib/payment-lib.component.ngfactory.d.ts.map +1 -0
- package/lib/payment-lib.module.d.ts +1 -0
- package/lib/payment-lib.module.d.ts.map +1 -0
- package/lib/payment-lib.module.ngfactory.d.ts.map +1 -0
- package/lib/payment-lib.service.d.ts +1 -0
- package/lib/payment-lib.service.d.ts.map +1 -0
- package/lib/payment-lib.service.ngfactory.d.ts.map +1 -0
- package/lib/pipes/capitalize.pipe.d.ts +1 -0
- package/lib/pipes/capitalize.pipe.d.ts.map +1 -0
- package/lib/pipes/capitalize.pipe.ngfactory.d.ts.map +1 -0
- package/lib/pipes/ccd-hyphens.pipe.d.ts +1 -0
- package/lib/pipes/ccd-hyphens.pipe.d.ts.map +1 -0
- package/lib/pipes/ccd-hyphens.pipe.ngfactory.d.ts.map +1 -0
- package/lib/pipes/key-value.pipe.d.ts +1 -0
- package/lib/pipes/key-value.pipe.d.ts.map +1 -0
- package/lib/pipes/key-value.pipe.ngfactory.d.ts.map +1 -0
- package/lib/pipes/sanitize-html.pipe.d.ts +1 -0
- package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -0
- package/lib/pipes/sanitize-html.pipe.ngfactory.d.ts.map +1 -0
- package/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.d.ts +1 -0
- package/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.d.ts.map +1 -0
- package/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.ngfactory.d.ts.map +1 -0
- package/lib/services/card-details/card-details.service.d.ts +1 -0
- package/lib/services/card-details/card-details.service.d.ts.map +1 -0
- package/lib/services/card-details/card-details.service.ngfactory.d.ts.map +1 -0
- package/lib/services/case-transactions/case-transactions.service.d.ts +1 -0
- package/lib/services/case-transactions/case-transactions.service.d.ts.map +1 -0
- package/lib/services/case-transactions/case-transactions.service.ngfactory.d.ts.map +1 -0
- package/lib/services/orderslist.service.d.ts +1 -0
- package/lib/services/orderslist.service.d.ts.map +1 -0
- package/lib/services/orderslist.service.ngfactory.d.ts.map +1 -0
- package/lib/services/payment-list/payment-list.service.d.ts +1 -0
- package/lib/services/payment-list/payment-list.service.d.ts.map +1 -0
- package/lib/services/payment-list/payment-list.service.ngfactory.d.ts.map +1 -0
- package/lib/services/payment-view/payment-view.service.d.ts +1 -0
- package/lib/services/payment-view/payment-view.service.d.ts.map +1 -0
- package/lib/services/payment-view/payment-view.service.ngfactory.d.ts.map +1 -0
- package/lib/services/refunds/refunds.service.d.ts +1 -0
- package/lib/services/refunds/refunds.service.d.ts.map +1 -0
- package/lib/services/refunds/refunds.service.ngfactory.d.ts.map +1 -0
- package/lib/services/shared/error-handler.service.d.ts +2 -1
- package/lib/services/shared/error-handler.service.d.ts.map +1 -0
- package/lib/services/shared/error-handler.service.ngfactory.d.ts.map +1 -0
- package/lib/services/shared/httpclient/webcomponent.http.client.d.ts +1 -0
- package/lib/services/shared/httpclient/webcomponent.http.client.d.ts.map +1 -0
- package/lib/services/shared/httpclient/webcomponent.http.client.ngfactory.d.ts.map +1 -0
- package/lib/services/shared/logger/console-logger.service.d.ts +4 -3
- package/lib/services/shared/logger/console-logger.service.d.ts.map +1 -0
- package/lib/services/shared/logger/console-logger.service.ngfactory.d.ts.map +1 -0
- package/lib/services/shared/logger/logger.service.d.ts +1 -0
- package/lib/services/shared/logger/logger.service.d.ts.map +1 -0
- package/lib/services/shared/logger/logger.service.ngfactory.d.ts.map +1 -0
- package/lib/services/status-history/status-history.service.d.ts +1 -0
- package/lib/services/status-history/status-history.service.d.ts.map +1 -0
- package/lib/services/status-history/status-history.service.ngfactory.d.ts.map +1 -0
- package/lib/services/xl-file/xl-file.service.d.ts +1 -0
- package/lib/services/xl-file/xl-file.service.d.ts.map +1 -0
- package/lib/services/xl-file/xl-file.service.ngfactory.d.ts.map +1 -0
- package/package.json +6 -8
- package/public_api.d.ts +1 -0
- package/public_api.d.ts.map +1 -0
- package/esm5/hmcts-ccpay-web-component.js +0 -48
- package/esm5/lib/components/add-remission/add-remission.component.js +0 -1146
- package/esm5/lib/components/allocate-payments/allocate-payments.component.js +0 -745
- package/esm5/lib/components/card-details/card-details.component.js +0 -77
- package/esm5/lib/components/case-transactions/case-transactions.component.js +0 -1444
- package/esm5/lib/components/error-banner/error-banner.component.js +0 -36
- package/esm5/lib/components/fee-summary/fee-summary.component.js +0 -504
- package/esm5/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +0 -371
- package/esm5/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +0 -474
- package/esm5/lib/components/page-not-found.component.js +0 -17
- package/esm5/lib/components/payment-list/payment-list.component.js +0 -83
- package/esm5/lib/components/payment-view/payment-view.component.js +0 -673
- package/esm5/lib/components/pba-details/pba-details.component.js +0 -36
- package/esm5/lib/components/pba-payment/pba-payment.component.js +0 -269
- package/esm5/lib/components/process-refund/process-refund.component.js +0 -536
- package/esm5/lib/components/processed-payments/processed-payments.component.js +0 -83
- package/esm5/lib/components/refund-list/refund-list.component.js +0 -130
- package/esm5/lib/components/refund-status/refund-status.component.js +0 -554
- package/esm5/lib/components/reports/reports.component.js +0 -515
- package/esm5/lib/components/service-request/service-request.component.js +0 -690
- package/esm5/lib/components/status-history/status-history.component.js +0 -70
- package/esm5/lib/components/table/table.component.js +0 -229
- package/esm5/lib/components/unprocessed-payments/unprocessed-payments.component.js +0 -418
- package/esm5/lib/interfaces/AddRemissionRequest.js +0 -32
- package/esm5/lib/interfaces/AddRetroRemissionRequest.js +0 -19
- package/esm5/lib/interfaces/AllocatePaymentRequest.js +0 -63
- package/esm5/lib/interfaces/IAllocationPaymentsRequest.js +0 -34
- package/esm5/lib/interfaces/IBSPayments.js +0 -45
- package/esm5/lib/interfaces/ICardDetails.js +0 -21
- package/esm5/lib/interfaces/IFee.js +0 -53
- package/esm5/lib/interfaces/IOrderReferenceFee.js +0 -25
- package/esm5/lib/interfaces/IPatchRefundAction.js +0 -15
- package/esm5/lib/interfaces/IPayment.js +0 -65
- package/esm5/lib/interfaces/IPaymentFailure.js +0 -33
- package/esm5/lib/interfaces/IPaymentGroup.js +0 -19
- package/esm5/lib/interfaces/IPaymentStatus.js +0 -31
- package/esm5/lib/interfaces/IPaymentView.js +0 -17
- package/esm5/lib/interfaces/IPayments.js +0 -13
- package/esm5/lib/interfaces/IRefundAction.js +0 -15
- package/esm5/lib/interfaces/IRefundList.js +0 -29
- package/esm5/lib/interfaces/IRefundReasons.js +0 -19
- package/esm5/lib/interfaces/IRefundRejectReason.js +0 -15
- package/esm5/lib/interfaces/IRefundStatus.js +0 -23
- package/esm5/lib/interfaces/IRefundStatusHistory.js +0 -15
- package/esm5/lib/interfaces/IRemission.js +0 -25
- package/esm5/lib/interfaces/IResubmitRefundRequest.js +0 -19
- package/esm5/lib/interfaces/IStatusHistories.js +0 -19
- package/esm5/lib/interfaces/IStatusHistory.js +0 -21
- package/esm5/lib/interfaces/IserviceRequestCardPayment.js +0 -22
- package/esm5/lib/interfaces/IserviceRequestPbaPayment.js +0 -28
- package/esm5/lib/interfaces/IssueRefundRequest.js +0 -22
- package/esm5/lib/interfaces/PayhubAntennaRequest.js +0 -25
- package/esm5/lib/interfaces/PaymentToPayhubRequest.js +0 -34
- package/esm5/lib/interfaces/PostIssueRefundRetroRemission.js +0 -16
- package/esm5/lib/interfaces/PostRefundRetroRemission.js +0 -19
- package/esm5/lib/interfaces/RefundsRequest.js +0 -19
- package/esm5/lib/interfaces/UnidentifiedPaymentsRequest.js +0 -28
- package/esm5/lib/interfaces/UnsolicitedPaymentsRequest.js +0 -37
- package/esm5/lib/payment-lib.component.js +0 -237
- package/esm5/lib/payment-lib.module.js +0 -103
- package/esm5/lib/payment-lib.service.js +0 -111
- package/esm5/lib/pipes/capitalize.pipe.js +0 -32
- package/esm5/lib/pipes/ccd-hyphens.pipe.js +0 -37
- package/esm5/lib/pipes/key-value.pipe.js +0 -37
- package/esm5/lib/pipes/sanitize-html.pipe.js +0 -39
- package/esm5/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +0 -218
- package/esm5/lib/services/card-details/card-details.service.js +0 -76
- package/esm5/lib/services/case-transactions/case-transactions.service.js +0 -76
- package/esm5/lib/services/orderslist.service.js +0 -531
- package/esm5/lib/services/payment-list/payment-list.service.js +0 -80
- package/esm5/lib/services/payment-view/payment-view.service.js +0 -416
- package/esm5/lib/services/refunds/refunds.service.js +0 -256
- package/esm5/lib/services/shared/error-handler.service.js +0 -127
- package/esm5/lib/services/shared/httpclient/webcomponent.http.client.js +0 -167
- package/esm5/lib/services/shared/logger/console-logger.service.js +0 -88
- package/esm5/lib/services/shared/logger/logger.service.js +0 -68
- package/esm5/lib/services/status-history/status-history.service.js +0 -80
- package/esm5/lib/services/xl-file/xl-file.service.js +0 -254
- package/esm5/public_api.js +0 -11
- package/fesm5/hmcts-ccpay-web-component.js +0 -10017
- package/fesm5/hmcts-ccpay-web-component.js.map +0 -1
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
1
|
import { Component, Input } from '@angular/core';
|
|
6
2
|
import { FormBuilder, Validators, FormControl } from '@angular/forms';
|
|
7
3
|
import { PaymentLibComponent } from '../../payment-lib.component';
|
|
@@ -13,15 +9,6 @@ import { AllocatePaymentRequest } from '../../interfaces/AllocatePaymentRequest'
|
|
|
13
9
|
import { IAllocationPaymentsRequest } from '../../interfaces/IAllocationPaymentsRequest';
|
|
14
10
|
import { OrderslistService } from '../../services/orderslist.service';
|
|
15
11
|
export class AllocatePaymentsComponent {
|
|
16
|
-
/**
|
|
17
|
-
* @param {?} errorHandlerService
|
|
18
|
-
* @param {?} caseTransactionsService
|
|
19
|
-
* @param {?} formBuilder
|
|
20
|
-
* @param {?} paymentViewService
|
|
21
|
-
* @param {?} paymentLibComponent
|
|
22
|
-
* @param {?} bulkScaningPaymentService
|
|
23
|
-
* @param {?} OrderslistService
|
|
24
|
-
*/
|
|
25
12
|
constructor(errorHandlerService, caseTransactionsService, formBuilder, paymentViewService, paymentLibComponent, bulkScaningPaymentService, OrderslistService) {
|
|
26
13
|
this.errorHandlerService = errorHandlerService;
|
|
27
14
|
this.caseTransactionsService = caseTransactionsService;
|
|
@@ -95,9 +82,6 @@ export class AllocatePaymentsComponent {
|
|
|
95
82
|
}
|
|
96
83
|
};
|
|
97
84
|
}
|
|
98
|
-
/**
|
|
99
|
-
* @return {?}
|
|
100
|
-
*/
|
|
101
85
|
ngOnInit() {
|
|
102
86
|
this.viewStatus = 'mainForm';
|
|
103
87
|
if (this.paymentLibComponent.paymentGroupReference !== null) {
|
|
@@ -121,107 +105,50 @@ export class AllocatePaymentsComponent {
|
|
|
121
105
|
Validators.pattern('^([a-zA-Z0-9\\s]*)$')
|
|
122
106
|
])),
|
|
123
107
|
});
|
|
124
|
-
this.OrderslistService.getOrdersList().subscribe((
|
|
125
|
-
|
|
126
|
-
* @return {?}
|
|
127
|
-
*/
|
|
128
|
-
(data) => this.orderLevelFees = data.filter((/**
|
|
129
|
-
* @param {?} data
|
|
130
|
-
* @return {?}
|
|
131
|
-
*/
|
|
132
|
-
data => data.orderStatus !== 'Paid'))));
|
|
133
|
-
this.OrderslistService.getCaseType().subscribe((/**
|
|
134
|
-
* @param {?} data
|
|
135
|
-
* @return {?}
|
|
136
|
-
*/
|
|
137
|
-
(data) => this.caseType = data));
|
|
108
|
+
this.OrderslistService.getOrdersList().subscribe((data) => this.orderLevelFees = data.filter(data => data.orderStatus !== 'Paid'));
|
|
109
|
+
this.OrderslistService.getCaseType().subscribe((data) => this.caseType = data);
|
|
138
110
|
this.getUnassignedPayment();
|
|
139
111
|
}
|
|
140
|
-
/**
|
|
141
|
-
* @param {?} paymentGroup
|
|
142
|
-
* @return {?}
|
|
143
|
-
*/
|
|
144
112
|
getGroupOutstandingAmount(paymentGroup) {
|
|
145
113
|
return this.bulkScaningPaymentService.calculateOutStandingAmount(paymentGroup);
|
|
146
114
|
}
|
|
147
|
-
/**
|
|
148
|
-
* @return {?}
|
|
149
|
-
*/
|
|
150
115
|
getPaymentGroupDetails() {
|
|
151
116
|
if (!this.isTurnOff) {
|
|
152
|
-
this.paymentViewService.getPaymentGroupDetails(this.paymentRef).subscribe(
|
|
153
|
-
* @param {?} paymentGroup
|
|
154
|
-
* @return {?}
|
|
155
|
-
*/
|
|
156
|
-
paymentGroup => {
|
|
117
|
+
this.paymentViewService.getPaymentGroupDetails(this.paymentRef).subscribe(paymentGroup => {
|
|
157
118
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false, false, '');
|
|
158
119
|
this.paymentGroup = paymentGroup;
|
|
159
120
|
this.saveAndContinue();
|
|
160
|
-
}
|
|
161
|
-
* @param {?} error
|
|
162
|
-
* @return {?}
|
|
163
|
-
*/
|
|
164
|
-
(error) => {
|
|
121
|
+
}, (error) => {
|
|
165
122
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true, false, '');
|
|
166
|
-
})
|
|
123
|
+
});
|
|
167
124
|
}
|
|
168
125
|
else {
|
|
169
|
-
this.caseTransactionsService.getPaymentGroups(this.ccdCaseNumber).subscribe(
|
|
170
|
-
* @param {?} paymentGroups
|
|
171
|
-
* @return {?}
|
|
172
|
-
*/
|
|
173
|
-
paymentGroups => {
|
|
126
|
+
this.caseTransactionsService.getPaymentGroups(this.ccdCaseNumber).subscribe(paymentGroups => {
|
|
174
127
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false, false, '');
|
|
175
|
-
this.paymentGroups = paymentGroups['payment_groups'].filter(
|
|
176
|
-
|
|
177
|
-
* @return {?}
|
|
178
|
-
*/
|
|
179
|
-
paymentGroup => {
|
|
180
|
-
paymentGroup.fees.forEach((/**
|
|
181
|
-
* @param {?} fee
|
|
182
|
-
* @return {?}
|
|
183
|
-
*/
|
|
184
|
-
fee => {
|
|
128
|
+
this.paymentGroups = paymentGroups['payment_groups'].filter(paymentGroup => {
|
|
129
|
+
paymentGroup.fees.forEach(fee => {
|
|
185
130
|
if (fee.calculated_amount === 0) {
|
|
186
131
|
this.isFeeAmountZero = true;
|
|
187
132
|
}
|
|
188
|
-
})
|
|
189
|
-
|
|
190
|
-
let fstCon = this.getGroupOutstandingAmount((/** @type {?} */ (paymentGroup)));
|
|
191
|
-
/** @type {?} */
|
|
192
|
-
let scndCn = fstCon > 0 || (fstCon == 0 && this.isFeeAmountZero) && paymentGroup.payment_group_reference === this.paymentRef;
|
|
133
|
+
});
|
|
134
|
+
let fstCon = this.getGroupOutstandingAmount(paymentGroup), scndCn = fstCon > 0 || (fstCon == 0 && this.isFeeAmountZero) && paymentGroup.payment_group_reference === this.paymentRef;
|
|
193
135
|
return this.paymentRef ? scndCn : fstCon > 0 || (fstCon == 0 && this.isFeeAmountZero);
|
|
194
|
-
})
|
|
195
|
-
}
|
|
196
|
-
* @param {?} error
|
|
197
|
-
* @return {?}
|
|
198
|
-
*/
|
|
199
|
-
(error) => {
|
|
136
|
+
});
|
|
137
|
+
}, (error) => {
|
|
200
138
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true, false, '');
|
|
201
|
-
})
|
|
139
|
+
});
|
|
202
140
|
}
|
|
203
141
|
}
|
|
204
|
-
/**
|
|
205
|
-
* @param {?} paymentGroup
|
|
206
|
-
* @return {?}
|
|
207
|
-
*/
|
|
208
142
|
selectedPaymentGroup(paymentGroup) {
|
|
209
143
|
this.isContinueButtondisabled = false;
|
|
210
144
|
this.paymentGroup = paymentGroup;
|
|
211
145
|
}
|
|
212
|
-
/**
|
|
213
|
-
* @return {?}
|
|
214
|
-
*/
|
|
215
146
|
gotoCasetransationPage() {
|
|
216
147
|
this.paymentLibComponent.viewName = 'case-transactions';
|
|
217
148
|
this.paymentLibComponent.isTurnOff = this.isTurnOff;
|
|
218
149
|
this.paymentLibComponent.TAKEPAYMENT = true;
|
|
219
150
|
this.paymentLibComponent.ISBSENABLE = true;
|
|
220
151
|
}
|
|
221
|
-
/**
|
|
222
|
-
* @param {?} event
|
|
223
|
-
* @return {?}
|
|
224
|
-
*/
|
|
225
152
|
gotoSummaryPage(event) {
|
|
226
153
|
event.preventDefault();
|
|
227
154
|
this.paymentLibComponent.viewName = 'fee-summary';
|
|
@@ -229,10 +156,6 @@ export class AllocatePaymentsComponent {
|
|
|
229
156
|
this.paymentLibComponent.TAKEPAYMENT = true;
|
|
230
157
|
this.paymentLibComponent.ISBSENABLE = true;
|
|
231
158
|
}
|
|
232
|
-
/**
|
|
233
|
-
* @param {?} event
|
|
234
|
-
* @return {?}
|
|
235
|
-
*/
|
|
236
159
|
cancelAllocatePayment(event) {
|
|
237
160
|
event.preventDefault();
|
|
238
161
|
this.resetForm([false, false, false, false, false, false, false, false], 'all');
|
|
@@ -246,28 +169,11 @@ export class AllocatePaymentsComponent {
|
|
|
246
169
|
this.viewStatus = 'mainForm';
|
|
247
170
|
}
|
|
248
171
|
}
|
|
249
|
-
/**
|
|
250
|
-
* @return {?}
|
|
251
|
-
*/
|
|
252
172
|
confirmAllocatePayement() {
|
|
253
|
-
this.enCookieUserName = document.cookie.split(";").find((
|
|
254
|
-
* @param {?} row
|
|
255
|
-
* @return {?}
|
|
256
|
-
*/
|
|
257
|
-
row => row.includes("user-info"))).split("=")[1].split(";");
|
|
173
|
+
this.enCookieUserName = document.cookie.split(";").find(row => row.includes("user-info")).split("=")[1].split(";");
|
|
258
174
|
this.cookieUserName = JSON.parse(decodeURIComponent(this.enCookieUserName));
|
|
259
|
-
/** @type {?} */
|
|
260
175
|
const fullName = this.cookieUserName['forename'] + ' ' + this.cookieUserName['surname'];
|
|
261
|
-
|
|
262
|
-
const paymentDetailsField = this.overUnderPaymentForm.controls.moreDetails;
|
|
263
|
-
/** @type {?} */
|
|
264
|
-
const paymentFormError = this.overUnderPaymentForm.controls.moreDetails.errors;
|
|
265
|
-
/** @type {?} */
|
|
266
|
-
const userNameField = fullName;
|
|
267
|
-
/** @type {?} */
|
|
268
|
-
const isEmptyCondtion = this.paymentReason && this.paymentExplanation;
|
|
269
|
-
/** @type {?} */
|
|
270
|
-
const isOtherOptionSelected = this.paymentExplanation === 'Other';
|
|
176
|
+
const paymentDetailsField = this.overUnderPaymentForm.controls.moreDetails, paymentFormError = this.overUnderPaymentForm.controls.moreDetails.errors, userNameField = fullName, isEmptyCondtion = this.paymentReason && this.paymentExplanation, isOtherOptionSelected = this.paymentExplanation === 'Other';
|
|
271
177
|
this.resetForm([false, false, false, false, false, false, false, false], 'all');
|
|
272
178
|
if ((!this.isRemainingAmountGtZero && !this.isRemainingAmountLtZero) || isEmptyCondtion && (!isOtherOptionSelected && userNameField.length > 0 || isOtherOptionSelected && userNameField.length > 0 && paymentDetailsField.valid)) {
|
|
273
179
|
this.isConfirmButtondisabled = true;
|
|
@@ -301,11 +207,6 @@ export class AllocatePaymentsComponent {
|
|
|
301
207
|
}
|
|
302
208
|
}
|
|
303
209
|
}
|
|
304
|
-
/**
|
|
305
|
-
* @param {?} vals
|
|
306
|
-
* @param {?} field
|
|
307
|
-
* @return {?}
|
|
308
|
-
*/
|
|
309
210
|
resetForm(vals, field) {
|
|
310
211
|
if (field === 'reason' || field === 'all') {
|
|
311
212
|
this.paymentReasonHasError = vals[0];
|
|
@@ -324,12 +225,8 @@ export class AllocatePaymentsComponent {
|
|
|
324
225
|
this.isUserNameInvalid = vals[7];
|
|
325
226
|
}
|
|
326
227
|
}
|
|
327
|
-
/**
|
|
328
|
-
* @return {?}
|
|
329
|
-
*/
|
|
330
228
|
finalServiceCall() {
|
|
331
229
|
if (!this.isStrategicFixEnable) {
|
|
332
|
-
/** @type {?} */
|
|
333
230
|
let allocatedRequest = {
|
|
334
231
|
reason: this.paymentReason,
|
|
335
232
|
allocation_status: 'Allocated',
|
|
@@ -342,99 +239,57 @@ export class AllocatePaymentsComponent {
|
|
|
342
239
|
case_type: this.caseType,
|
|
343
240
|
user_name: this.userName
|
|
344
241
|
};
|
|
345
|
-
/** @type {?} */
|
|
346
242
|
const postStrategicBody = new AllocatePaymentRequest(this.ccdReference, this.unAllocatedPayment, this.caseType, this.exceptionReference, allocatedRequest);
|
|
347
|
-
this.bulkScaningPaymentService.postBSPaymentStrategic(postStrategicBody, this.paymentGroup.payment_group_reference).subscribe(
|
|
348
|
-
* @param {?} res
|
|
349
|
-
* @return {?}
|
|
350
|
-
*/
|
|
351
|
-
res => {
|
|
243
|
+
this.bulkScaningPaymentService.postBSPaymentStrategic(postStrategicBody, this.paymentGroup.payment_group_reference).subscribe(res => {
|
|
352
244
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false, false, '');
|
|
353
|
-
/** @type {?} */
|
|
354
245
|
let response = JSON.parse(res);
|
|
355
246
|
if (response.success) {
|
|
356
247
|
this.gotoCasetransationPage();
|
|
357
248
|
}
|
|
358
|
-
}
|
|
359
|
-
* @param {?} error
|
|
360
|
-
* @return {?}
|
|
361
|
-
*/
|
|
362
|
-
(error) => {
|
|
249
|
+
}, (error) => {
|
|
363
250
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true, false, '');
|
|
364
251
|
window.scrollTo(0, 0);
|
|
365
252
|
this.isConfirmButtondisabled = false;
|
|
366
|
-
})
|
|
253
|
+
});
|
|
367
254
|
}
|
|
368
255
|
else {
|
|
369
|
-
this.bulkScaningPaymentService.patchBSChangeStatus(this.unAllocatedPayment.dcn_reference, 'PROCESSED').subscribe(
|
|
370
|
-
* @param {?} res1
|
|
371
|
-
* @return {?}
|
|
372
|
-
*/
|
|
373
|
-
res1 => {
|
|
256
|
+
this.bulkScaningPaymentService.patchBSChangeStatus(this.unAllocatedPayment.dcn_reference, 'PROCESSED').subscribe(res1 => {
|
|
374
257
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false, false, '');
|
|
375
|
-
/** @type {?} */
|
|
376
258
|
let response1 = JSON.parse(res1);
|
|
377
259
|
if (response1.success) {
|
|
378
|
-
/** @type {?} */
|
|
379
260
|
const requestBody = new AllocatePaymentRequest(this.ccdReference, this.unAllocatedPayment, this.siteID, this.exceptionReference);
|
|
380
|
-
this.bulkScaningPaymentService.postBSAllocatePayment(requestBody, this.paymentGroup.payment_group_reference).subscribe(
|
|
381
|
-
* @param {?} res2
|
|
382
|
-
* @return {?}
|
|
383
|
-
*/
|
|
384
|
-
res2 => {
|
|
261
|
+
this.bulkScaningPaymentService.postBSAllocatePayment(requestBody, this.paymentGroup.payment_group_reference).subscribe(res2 => {
|
|
385
262
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false, false, '');
|
|
386
|
-
/** @type {?} */
|
|
387
263
|
let response2 = JSON.parse(res2);
|
|
388
|
-
/** @type {?} */
|
|
389
264
|
const reqBody = new IAllocationPaymentsRequest(response2['data'].payment_group_reference, response2['data'].reference, this.paymentReason, this.otherPaymentExplanation, this.userName);
|
|
390
265
|
if (response2.success) {
|
|
391
|
-
this.paymentViewService.postBSAllocationPayments(reqBody).subscribe(
|
|
392
|
-
* @param {?} res3
|
|
393
|
-
* @return {?}
|
|
394
|
-
*/
|
|
395
|
-
res3 => {
|
|
266
|
+
this.paymentViewService.postBSAllocationPayments(reqBody).subscribe(res3 => {
|
|
396
267
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false, false, '');
|
|
397
|
-
/** @type {?} */
|
|
398
268
|
let response3 = JSON.parse(res3);
|
|
399
269
|
if (response3.success) {
|
|
400
270
|
this.gotoCasetransationPage();
|
|
401
271
|
}
|
|
402
|
-
}
|
|
403
|
-
* @param {?} error
|
|
404
|
-
* @return {?}
|
|
405
|
-
*/
|
|
406
|
-
(error) => {
|
|
272
|
+
}, (error) => {
|
|
407
273
|
this.bulkScaningPaymentService.patchBSChangeStatus(this.unAllocatedPayment.dcn_reference, 'COMPLETE').subscribe();
|
|
408
274
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true, false, '');
|
|
409
275
|
window.scrollTo(0, 0);
|
|
410
276
|
this.isConfirmButtondisabled = false;
|
|
411
|
-
})
|
|
277
|
+
});
|
|
412
278
|
}
|
|
413
|
-
}
|
|
414
|
-
* @param {?} error
|
|
415
|
-
* @return {?}
|
|
416
|
-
*/
|
|
417
|
-
(error) => {
|
|
279
|
+
}, (error) => {
|
|
418
280
|
this.bulkScaningPaymentService.patchBSChangeStatus(this.unAllocatedPayment.dcn_reference, 'COMPLETE').subscribe();
|
|
419
281
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true, false, '');
|
|
420
282
|
window.scrollTo(0, 0);
|
|
421
283
|
this.isConfirmButtondisabled = false;
|
|
422
|
-
})
|
|
284
|
+
});
|
|
423
285
|
}
|
|
424
|
-
}
|
|
425
|
-
* @param {?} error
|
|
426
|
-
* @return {?}
|
|
427
|
-
*/
|
|
428
|
-
(error) => {
|
|
286
|
+
}, (error) => {
|
|
429
287
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true, false, '');
|
|
430
288
|
window.scrollTo(0, 0);
|
|
431
289
|
this.isConfirmButtondisabled = false;
|
|
432
|
-
})
|
|
290
|
+
});
|
|
433
291
|
}
|
|
434
292
|
}
|
|
435
|
-
/**
|
|
436
|
-
* @return {?}
|
|
437
|
-
*/
|
|
438
293
|
saveAndContinue() {
|
|
439
294
|
if (this.paymentGroup) {
|
|
440
295
|
this.isMoreDetailsBoxHide = true;
|
|
@@ -444,9 +299,7 @@ export class AllocatePaymentsComponent {
|
|
|
444
299
|
this.overUnderPaymentForm.get('userName').setValue('');
|
|
445
300
|
this.paymentReason = '';
|
|
446
301
|
this.paymentExplanation = '';
|
|
447
|
-
/** @type {?} */
|
|
448
302
|
let GroupOutstandingAmount = this.getGroupOutstandingAmount(this.paymentGroup);
|
|
449
|
-
/** @type {?} */
|
|
450
303
|
const remainingToBeAssigned = this.unAllocatedPayment.amount - GroupOutstandingAmount;
|
|
451
304
|
this.isRemainingAmountGtZero = remainingToBeAssigned > 0;
|
|
452
305
|
this.isRemainingAmountLtZero = remainingToBeAssigned < 0;
|
|
@@ -469,46 +322,21 @@ export class AllocatePaymentsComponent {
|
|
|
469
322
|
}
|
|
470
323
|
}
|
|
471
324
|
}
|
|
472
|
-
/**
|
|
473
|
-
* @return {?}
|
|
474
|
-
*/
|
|
475
325
|
getUnassignedPayment() {
|
|
476
|
-
this.bulkScaningPaymentService.getBSPaymentsByDCN(this.bspaymentdcn).subscribe(
|
|
477
|
-
* @param {?} unassignedPayments
|
|
478
|
-
* @return {?}
|
|
479
|
-
*/
|
|
480
|
-
unassignedPayments => {
|
|
326
|
+
this.bulkScaningPaymentService.getBSPaymentsByDCN(this.bspaymentdcn).subscribe(unassignedPayments => {
|
|
481
327
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false, false, '');
|
|
482
|
-
this.unAllocatedPayment = unassignedPayments['data'].payments.filter(
|
|
483
|
-
* @param {?} payment
|
|
484
|
-
* @return {?}
|
|
485
|
-
*/
|
|
486
|
-
payment => {
|
|
328
|
+
this.unAllocatedPayment = unassignedPayments['data'].payments.filter(payment => {
|
|
487
329
|
return payment && payment.dcn_reference == this.bspaymentdcn;
|
|
488
|
-
})
|
|
330
|
+
})[0];
|
|
489
331
|
this.siteID = unassignedPayments['data'].responsible_service_id;
|
|
490
|
-
|
|
491
|
-
const beCcdNumber = unassignedPayments['data'].ccd_reference;
|
|
492
|
-
/** @type {?} */
|
|
493
|
-
const beExceptionNumber = unassignedPayments['data'].exception_record_reference;
|
|
494
|
-
/** @type {?} */
|
|
495
|
-
const exceptionReference = beCcdNumber ? beCcdNumber === this.ccdCaseNumber ? null : this.ccdCaseNumber : this.ccdCaseNumber;
|
|
332
|
+
const beCcdNumber = unassignedPayments['data'].ccd_reference, beExceptionNumber = unassignedPayments['data'].exception_record_reference, exceptionReference = beCcdNumber ? beCcdNumber === this.ccdCaseNumber ? null : this.ccdCaseNumber : this.ccdCaseNumber;
|
|
496
333
|
this.ccdReference = beCcdNumber ? beCcdNumber : null;
|
|
497
334
|
this.exceptionReference = beExceptionNumber ? beExceptionNumber : exceptionReference;
|
|
498
335
|
this.getPaymentGroupDetails();
|
|
499
|
-
}
|
|
500
|
-
* @param {?} error
|
|
501
|
-
* @return {?}
|
|
502
|
-
*/
|
|
503
|
-
(error) => {
|
|
336
|
+
}, (error) => {
|
|
504
337
|
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true, false, '');
|
|
505
|
-
})
|
|
338
|
+
});
|
|
506
339
|
}
|
|
507
|
-
/**
|
|
508
|
-
* @param {?} key
|
|
509
|
-
* @param {?} type
|
|
510
|
-
* @return {?}
|
|
511
|
-
*/
|
|
512
340
|
selectRadioButton(key, type) {
|
|
513
341
|
this.isMoreDetailsBoxHide = true;
|
|
514
342
|
if (type === 'explanation' && key === 'other') {
|
|
@@ -519,17 +347,10 @@ export class AllocatePaymentsComponent {
|
|
|
519
347
|
this.isMoreDetailsBoxHide = false;
|
|
520
348
|
}
|
|
521
349
|
}
|
|
522
|
-
/**
|
|
523
|
-
* @param {?} orderef
|
|
524
|
-
* @return {?}
|
|
525
|
-
*/
|
|
526
350
|
OrderListSelectEvent(orderef) {
|
|
527
351
|
this.isContinueButtondisabled = false;
|
|
528
352
|
this.recordId = orderef;
|
|
529
353
|
}
|
|
530
|
-
/**
|
|
531
|
-
* @return {?}
|
|
532
|
-
*/
|
|
533
354
|
redirectToOrderFeeSearchPage() {
|
|
534
355
|
// this.paymentLibComponent.bspaymentdcn = null;
|
|
535
356
|
this.paymentLibComponent.paymentGroupReference = this.recordId;
|
|
@@ -540,11 +361,10 @@ export class AllocatePaymentsComponent {
|
|
|
540
361
|
AllocatePaymentsComponent.decorators = [
|
|
541
362
|
{ type: Component, args: [{
|
|
542
363
|
selector: 'app-allocate-payments',
|
|
543
|
-
template: "<div class=\"allocate-payments\">\n <ng-container *ngIf=\"viewStatus === 'mainForm' && !isTurnOff\">\n\n <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a (click)=\"gotoCasetransationPage()\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n </div>\n \n <div class=\"paymentrequest\">\n <h1 class=\"govuk-heading-xl govuk-!-margin-top-3 govuk-!-margin-bottom-4\">Select payment request</h1>\n <p class=\"govuk-!-margin-top-5 casererf\">Case reference: {{ccdReference}}</p>\n </div>\n \n <div *ngFor=\"let orderRef of orderLevelFees; let i of index;\" class=\"multiple-choice unprocessed-payments--radio-button\">\n <input id=\"'orderfee'+i+''\"\n aria-label=\"orderLevelRecord\"\n name=\"orderLevelRecord\"\n \n (click)=\"OrderListSelectEvent(orderRef.orderRefId)\"\n type=\"radio\"\n value=\"{{orderRef.orderTotalFees}}\" />\n <label for=\"radio-inline-1\"> {{orderRef.orderTotalFees | currency :'GBP':'symbol':'1.2-2'}}({{orderRef.orderStatus}})</label>\n </div>\n \n <div class=\"paymentrequest\">\n <button [disabled]=\"isContinueButtondisabled\" type=\"submit\" (click)=\"redirectToOrderFeeSearchPage()\" class=\"button allbtb button--disabled govuk-!-margin-right-1\">\n Continue\n </button>\n </div>\n \n </ng-container>\n\n <div *ngIf=\"viewStatus==='mainForm' && isTurnOff\">\n <input #myInput type='hidden' class='iFrameDrivenImageValue' value='ALLOCATEPAYMENTS'>\n <div class=\"govuk-breadcrumbs\" *ngIf=\"paymentRef\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a href=\"#\" (click)=\"gotoSummaryPage($event)\" class=\"govuk-back-link\">Back</a>\n </li>\n </ol>\n </div>\n <div class=\"govuk-heading-section\">\n <h1 class=\"govuk-heading-xl\">Allocate payment to fee group</h1>\n <h2 class=\"govuk-heading-l\">Amount left to be allocated:\n {{ unAllocatedPayment.amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</h2>\n </div>\n <div class=\"payment-group-section\" *ngFor=\"let paymentGroup of paymentGroups\">\n <h3 class=\"govuk-heading-m\">Group reference: {{paymentGroup.payment_group_reference}}</h3>\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\"></td>\n <td class=\"govuk-table__header\" scope=\"col\">Code</td>\n <td class=\"govuk-table__header\" scope=\"col\">Description</td>\n <td class=\"govuk-table__header\" scope=\"col\">Volume</td>\n <td class=\"govuk-table__header\" scope=\"col\">Fee amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Calculated amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Group amount outstanding</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of paymentGroup.fees; let i = index;\">\n <td class=\"govuk-table__cell govuk-table__cell--col1 govuk-table__custom--col1\"\n [attr.rowspan]=\"paymentGroup.fees.length\" *ngIf=\"i==0\">\n <div class=\"multiple-choice\">\n <input id=\"unpaiedFee-{{i}}\" name=\"unassignedRecord\" type=\"radio\"\n (click)=\"selectedPaymentGroup(paymentGroup)\" />\n <label for=\"unpaiedFee-{{i}}\"></label>\n </div>\n </td>\n <td class=\"govuk-table__cell govuk-table__cell--col1\">{{fee.code}}</td>\n <td class=\"govuk-table__cell govuk-table__cell--col2\"> {{fee.description}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col3\"> {{fee.volume? fee.volume : '-'}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col4\">\n {{ fee.fee_amount | currency:'GBP':'symbol-narrow':'1.2-2' }} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col5\">\n {{fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2' }} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col6 govuk-table__custom--col6\"\n [attr.rowspan]=\"paymentGroup.fees.length\" *ngIf=\"i==0\">\n {{getGroupOutstandingAmount(paymentGroup) | currency:'GBP':'symbol-narrow':'1.2-2' }} </td>\n\n </tr>\n\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.fees.length==0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No payments recorded</td>\n </tbody>\n </table>\n </div>\n <div class=\"govuk-button-group-allocate\">\n <button type=\"button\" class=\"button govuk-!-margin-right-1\" [disabled]=\"isContinueButtondisabled\"\n (click)=\"saveAndContinue()\">\n Continue\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"gotoCasetransationPage()\">\n Cancel\n </button>\n </div>\n </div>\n\n <ng-container *ngIf=\"(viewStatus === 'mainForm' && isTurnOff) || viewStatus === 'allocatePaymentConfirmation'\">\n <ccpay-error-banner *ngIf=\"errorMessage.showError\" [errorMessage]=\"errorMessage\"></ccpay-error-banner>\n <input #myInput type='hidden' class='iFrameDrivenImageValue' value='{{feedbackUrlLabel}}'>\n <h1 class=\"govuk-heading-xl\">Confirm allocation</h1>\n <h2 class=\"govuk-heading-l govuk-heading-l--custom\">\n Amount to be allocated: {{amountForAllocation | currency:'GBP':'symbol-narrow':'1.2-2'}}\n </h2>\n <div class=\"payment-group-section\" *ngIf=\"paymentGroup\">\n <h3 class=\"govuk-heading-m--custom\" *ngIf=\"isTurnOff\">Group reference: {{paymentGroup.payment_group_reference}}\n </h3>\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\">Code</td>\n <td class=\"govuk-table__header\" scope=\"col\">Description</td>\n <td class=\"govuk-table__header\" scope=\"col\">Volume</td>\n <td class=\"govuk-table__header\" scope=\"col\">Fee amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Calculated amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount Due</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of paymentGroup.fees; let i = index;\">\n <td class=\"govuk-table__cell govuk-table__cell--col1\">{{fee.code}}</td>\n <td class=\"govuk-table__cell govuk-table__cell--col2\"> {{fee.description}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col3\"> {{fee.volume? fee.volume : '-'}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col4\">\n {{ fee.fee_amount | currency:'GBP':'symbol-narrow':'1.2-2' }} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col5\">\n {{fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2'}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col6\" [attr.rowspan]=\"paymentGroup.fees.length\"\n *ngIf=\"i==0\"> {{afterFeeAllocateOutstanding | currency:'GBP':'symbol-narrow':'1.2-2'}} </td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.fees.length == 0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No payments recorded</td>\n </tbody>\n </table>\n </div>\n <div class=\"govuk-warning-text\" *ngIf=\"isRemainingAmountGtZero || isRemainingAmountLtZero || remainingAmount === 0\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text govuk-warning-text__custom\">\n <span class=\"govuk-warning-text__assistive\">Warning</span>\n {{paymentSectionLabel.title}} {{ remainingAmount | currency:'GBP':'symbol-narrow':'1.2-2' }}\n </strong>\n </div>\n <div class=\"govuk-form-group\" *ngIf=\"isRemainingAmountGtZero || isRemainingAmountLtZero\">\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"how-contacted-conditional-hint\">\n <span id=\"how-contacted-conditional-hint\" class=\"govuk-hint\"\n [ngClass]=\"{'inline-error-message': paymentReasonHasError}\">\n {{paymentSectionLabel.reason}}\n </span>\n <div\n [ngClass]=\"paymentReasonHasError ? 'govuk-radios govuk-radios--conditional form-group-error' : 'govuk-radios govuk-radios--conditional'\"\n data-module=\"govuk-radios\" *ngIf=\"isRemainingAmountGtZero\">\n <div class=\"govuk-radios__item\" *ngFor=\"let reason of reasonList.overPayment | keyValue\">\n <input class=\"govuk-radios__input\" id=\"{{reason.key}}\" name=\"paymentReason\" type=\"radio\"\n [(ngModel)]=\"paymentReason\" value={{reason.value}}>\n <label class=\"govuk-label govuk-radios__label govuk-font__custom\" for=\"how-contacted-conditional\">\n {{reason.value}}\n </label>\n </div>\n </div>\n <div\n [ngClass]=\"paymentReasonHasError ? 'govuk-radios govuk-radios--conditional form-group-error' : 'govuk-radios govuk-radios--conditional'\"\n data-module=\"govuk-radios\" *ngIf=\"isRemainingAmountLtZero\">\n <div class=\"govuk-radios__item\" *ngFor=\"let reason of reasonList.shortFall | keyValue\">\n <input class=\"govuk-radios__input\" id=\"{{reason.key}}\" name=\"paymentReason\" type=\"radio\"\n [(ngModel)]=\"paymentReason\" value={{reason.value}}>\n <label class=\"govuk-label govuk-radios__label govuk-font__custom\" for=\"how-contacted-conditional\">\n {{reason.value}}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"how-contacted-conditional-hint\">\n <span id=\"how-contacted-conditional-hint\" class=\"govuk-hint\"\n [ngClass]=\"{'inline-error-message': paymentExplanationHasError}\">\n Provide an explanatory note\n </span>\n <div\n [ngClass]=\"paymentExplanationHasError ? 'govuk-radios govuk-radios--conditional form-group-error' : 'govuk-radios govuk-radios--conditional'\"\n data-module=\"govuk-radios\" *ngIf=\"isRemainingAmountGtZero\">\n <div class=\"govuk-radios__item\" *ngFor=\"let explanation of explanationList.overPayment | keyValue\">\n <input class=\"govuk-radios__input\" id=\"{{explanation.key}}\" name=\"paymentExplanation\" type=\"radio\"\n [(ngModel)]=\"paymentExplanation\" value={{explanation.value}}\n (click)=\"selectRadioButton(explanation.key, 'explanation')\">\n <label class=\"govuk-label govuk-radios__label govuk-font__custom\" for=\"how-contacted-conditional\">\n {{explanation.value}}\n </label>\n </div>\n </div>\n <div\n [ngClass]=\"paymentExplanationHasError ? 'govuk-radios govuk-radios--conditional form-group-error' : 'govuk-radios govuk-radios--conditional'\"\n data-module=\"govuk-radios\" *ngIf=\"isRemainingAmountLtZero\">\n <div class=\"govuk-radios__item\" *ngFor=\"let explanation of explanationList.shortFall | keyValue\">\n <input class=\"govuk-radios__input\" id=\"{{explanation.key}}\" name=\"paymentExplanation\" type=\"radio\"\n [(ngModel)]=\"paymentExplanation\" value={{explanation.value}}\n (click)=\"selectRadioButton(explanation.key, 'explanation')\">\n <label class=\"govuk-label govuk-radios__label govuk-font__custom\" for=\"how-contacted-conditional\">\n {{explanation.value}}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n\n <form [formGroup]=\"overUnderPaymentForm\" novalidate>\n <div\n [ngClass]=\"isMoreDetailsBoxHide ? 'govuk-radios__conditional govuk-radios__conditional--hidden' : isPaymentDetailsEmpty || isPaymentDetailsInvalid || paymentDetailsMinHasError || paymentDetailsMaxHasError ? 'govuk-radios__conditional inline-error-border' : 'govuk-radios__conditional'\"\n id=\"conditional-how-contacted-conditional-3\">\n <div class=\"govuk-form-group\">\n <span id=\"more-detail-hint\" class=\"govuk-hint govuk-font__custom\">\n Please enter details\n </span>\n <textarea class=\"govuk-textarea\"\n [ngClass]=\"{'inline-error-class': isPaymentDetailsEmpty || isPaymentDetailsInvalid || paymentDetailsMinHasError || paymentDetailsMaxHasError}\"\n id=\"moreDetails\" name=\"moreDetails\" rows=\"5\" formControlName=\"moreDetails\">\n </textarea>\n <p class=\"inline-error-message\"\n *ngIf=\"isPaymentDetailsEmpty || isPaymentDetailsInvalid || paymentDetailsMinHasError || paymentDetailsMaxHasError\">\n <span *ngIf=\"isPaymentDetailsEmpty\">Enter a explanation</span>\n <span *ngIf=\"isPaymentDetailsInvalid\">Enter a valid explanation</span>\n <span *ngIf=\"paymentDetailsMinHasError\">Explanation should be at least 3 characters.</span>\n <span *ngIf=\"paymentDetailsMaxHasError\">Explanation should be 255 characters or under.</span>\n </p>\n </div>\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" [disabled]=\"isConfirmButtondisabled\"\n [ngClass]=\"isConfirmButtondisabled ? 'button button--disabled' : 'button'\"\n (click)=\"confirmAllocatePayement()\">\n Confirm\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelAllocatePayment($event)\">\n Cancel\n </button>\n </div>\n </form>\n </ng-container>\n</div>",
|
|
544
|
-
styles: [".allocate-payments{margin:20px 0}.allocate-payments .govuk-table__cell--col1,.allocate-payments .govuk-table__cell--col3{width:10%}.allocate-payments .govuk-table__cell--col2,.allocate-payments .govuk-table__cell--col6{width:25%}.allocate-payments .govuk-table__cell--col4,.allocate-payments .govuk-table__cell--col5{width:15%}.allocate-payments .govuk-button-group-allocate{display:flex;justify-content:flex-start}.allocate-payments .govuk-button--secondary{margin-left:10px;background-color
|
|
545
|
-
}] }
|
|
364
|
+
template: "<div class=\"allocate-payments\">\n <ng-container *ngIf=\"viewStatus === 'mainForm' && !isTurnOff\">\n\n <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a (click)=\"gotoCasetransationPage()\" class=\"govuk-back-link govuk-label govuk-body\" href=\"javascript:void(0)\">Back</a>\n </li>\n </ol>\n </div>\n \n <div class=\"paymentrequest\">\n <h1 class=\"govuk-heading-xl govuk-!-margin-top-3 govuk-!-margin-bottom-4\">Select payment request</h1>\n <p class=\"govuk-!-margin-top-5 casererf\">Case reference: {{ccdReference}}</p>\n </div>\n \n <div *ngFor=\"let orderRef of orderLevelFees; let i = index;\" class=\"multiple-choice unprocessed-payments--radio-button\">\n <input id=\"'orderfee'+i+''\"\n aria-label=\"orderLevelRecord\"\n name=\"orderLevelRecord\"\n \n (click)=\"OrderListSelectEvent(orderRef.orderRefId)\"\n type=\"radio\"\n value=\"{{orderRef.orderTotalFees}}\" />\n <label for=\"radio-inline-1\"> {{orderRef.orderTotalFees | currency :'GBP':'symbol':'1.2-2'}}({{orderRef.orderStatus}})</label>\n </div>\n \n <div class=\"paymentrequest\">\n <button [disabled]=\"isContinueButtondisabled\" type=\"submit\" (click)=\"redirectToOrderFeeSearchPage()\" class=\"button allbtb button--disabled govuk-!-margin-right-1\">\n Continue\n </button>\n </div>\n \n </ng-container>\n\n <div *ngIf=\"viewStatus==='mainForm' && isTurnOff\">\n <input #myInput type='hidden' class='iFrameDrivenImageValue' value='ALLOCATEPAYMENTS'>\n <div class=\"govuk-breadcrumbs\" *ngIf=\"paymentRef\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a href=\"javascript:void(0)\" (click)=\"gotoSummaryPage($event)\" class=\"govuk-back-link govuk-body\">Back</a>\n </li>\n </ol>\n </div>\n <div class=\"govuk-heading-section\">\n <h1 class=\"govuk-heading-xl\">Allocate payment to fee group</h1>\n <h2 class=\"govuk-heading-l\">Amount left to be allocated:\n {{ unAllocatedPayment.amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</h2>\n </div>\n <div class=\"payment-group-section\" *ngFor=\"let paymentGroup of paymentGroups\">\n <h3 class=\"govuk-heading-m\">Group reference: {{paymentGroup.payment_group_reference}}</h3>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"col\"></th>\n <th class=\"govuk-table__header\" scope=\"col\">Code</th>\n <th class=\"govuk-table__header\" scope=\"col\">Description</th>\n <th class=\"govuk-table__header\" scope=\"col\">Volume</th>\n <th class=\"govuk-table__header\" scope=\"col\">Fee amount</th>\n <th class=\"govuk-table__header\" scope=\"col\">Calculated amount</th>\n <th class=\"govuk-table__header\" scope=\"col\">Group amount outstanding</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of paymentGroup.fees; let i = index;\">\n <td class=\"govuk-table__cell govuk-table__cell--col1 govuk-table__custom--col1\"\n [attr.rowspan]=\"paymentGroup.fees.length\" *ngIf=\"i==0\">\n <div class=\"multiple-choice\">\n <input id=\"unpaiedFee-{{i}}\" name=\"unassignedRecord\" type=\"radio\"\n (click)=\"selectedPaymentGroup(paymentGroup)\" />\n <label for=\"unpaiedFee-{{i}}\"></label>\n </div>\n </td>\n <td class=\"govuk-table__cell govuk-table__cell--col1\">{{fee.code}}</td>\n <td class=\"govuk-table__cell govuk-table__cell--col2\"> {{fee.description}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col3\"> {{fee.volume? fee.volume : '-'}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col4\">\n {{ fee.fee_amount | currency:'GBP':'symbol-narrow':'1.2-2' }} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col5\">\n {{fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2' }} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col6 govuk-table__custom--col6\"\n [attr.rowspan]=\"paymentGroup.fees.length\" *ngIf=\"i==0\">\n {{getGroupOutstandingAmount(paymentGroup) | currency:'GBP':'symbol-narrow':'1.2-2' }} </td>\n\n </tr>\n\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.fees.length==0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No payments recorded</td>\n </tbody>\n </table>\n </div>\n <div class=\"govuk-button-group-allocate\">\n <button type=\"button\" class=\"button govuk-!-margin-right-1\" [disabled]=\"isContinueButtondisabled\"\n (click)=\"saveAndContinue()\">\n Continue\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"gotoCasetransationPage()\">\n Cancel\n </button>\n </div>\n </div>\n\n <ng-container *ngIf=\"(viewStatus === 'mainForm' && isTurnOff) || viewStatus === 'allocatePaymentConfirmation'\">\n <ccpay-error-banner *ngIf=\"errorMessage.showError\" [errorMessage]=\"errorMessage\"></ccpay-error-banner>\n <input #myInput type='hidden' class='iFrameDrivenImageValue' value='{{feedbackUrlLabel}}'>\n <h1 class=\"govuk-heading-xl\">Confirm allocation</h1>\n <h2 class=\"govuk-heading-l govuk-heading-l--custom\">\n Amount to be allocated: {{amountForAllocation | currency:'GBP':'symbol-narrow':'1.2-2'}}\n </h2>\n <div class=\"payment-group-section\" *ngIf=\"paymentGroup\">\n <h3 class=\"govuk-heading-m--custom\" *ngIf=\"isTurnOff\">Group reference: {{paymentGroup.payment_group_reference}}\n </h3>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"col\">Code</th>\n <th class=\"govuk-table__header\" scope=\"col\">Description</th>\n <th class=\"govuk-table__header\" scope=\"col\">Volume</th>\n <th class=\"govuk-table__header\" scope=\"col\">Fee amount</th>\n <th class=\"govuk-table__header\" scope=\"col\">Calculated amount</th>\n <th class=\"govuk-table__header\" scope=\"col\">Amount Due</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of paymentGroup.fees; let i = index;\">\n <td class=\"govuk-table__cell govuk-table__cell--col1\">{{fee.code}}</td>\n <td class=\"govuk-table__cell govuk-table__cell--col2\"> {{fee.description}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col3\"> {{fee.volume? fee.volume : '-'}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col4\">\n {{ fee.fee_amount | currency:'GBP':'symbol-narrow':'1.2-2' }} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col5\">\n {{fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2'}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col6\" [attr.rowspan]=\"paymentGroup.fees.length\"\n *ngIf=\"i==0\"> {{afterFeeAllocateOutstanding | currency:'GBP':'symbol-narrow':'1.2-2'}} </td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.fees.length == 0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No payments recorded</td>\n </tbody>\n </table>\n </div>\n <div class=\"govuk-warning-text\" *ngIf=\"isRemainingAmountGtZero || isRemainingAmountLtZero || remainingAmount === 0\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text govuk-warning-text__custom\">\n <span class=\"govuk-warning-text__assistive\">Warning</span>\n {{paymentSectionLabel.title}} {{ remainingAmount | currency:'GBP':'symbol-narrow':'1.2-2' }}\n </strong>\n </div>\n <div class=\"govuk-form-group\" *ngIf=\"isRemainingAmountGtZero || isRemainingAmountLtZero\">\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"how-contacted-conditional-hint\">\n <span id=\"how-contacted-conditional-hint\" class=\"govuk-hint\"\n [ngClass]=\"{'inline-error-message': paymentReasonHasError}\">\n {{paymentSectionLabel.reason}}\n </span>\n <div\n [ngClass]=\"paymentReasonHasError ? 'govuk-radios govuk-radios--conditional form-group-error' : 'govuk-radios govuk-radios--conditional'\"\n data-module=\"govuk-radios\" *ngIf=\"isRemainingAmountGtZero\">\n <div class=\"govuk-radios__item\" *ngFor=\"let reason of reasonList.overPayment | keyValue\">\n <input class=\"govuk-radios__input\" id=\"{{reason.key}}\" name=\"paymentReason\" type=\"radio\"\n [(ngModel)]=\"paymentReason\" value={{reason.value}}>\n <label class=\"govuk-label govuk-radios__label govuk-font__custom\" for=\"how-contacted-conditional\">\n {{reason.value}}\n </label>\n </div>\n </div>\n <div\n [ngClass]=\"paymentReasonHasError ? 'govuk-radios govuk-radios--conditional form-group-error' : 'govuk-radios govuk-radios--conditional'\"\n data-module=\"govuk-radios\" *ngIf=\"isRemainingAmountLtZero\">\n <div class=\"govuk-radios__item\" *ngFor=\"let reason of reasonList.shortFall | keyValue\">\n <input class=\"govuk-radios__input\" id=\"{{reason.key}}\" name=\"paymentReason\" type=\"radio\"\n [(ngModel)]=\"paymentReason\" value={{reason.value}}>\n <label class=\"govuk-label govuk-radios__label govuk-font__custom\" for=\"how-contacted-conditional\">\n {{reason.value}}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"how-contacted-conditional-hint\">\n <span id=\"how-contacted-conditional-hint\" class=\"govuk-hint\"\n [ngClass]=\"{'inline-error-message': paymentExplanationHasError}\">\n Provide an explanatory note\n </span>\n <div\n [ngClass]=\"paymentExplanationHasError ? 'govuk-radios govuk-radios--conditional form-group-error' : 'govuk-radios govuk-radios--conditional'\"\n data-module=\"govuk-radios\" *ngIf=\"isRemainingAmountGtZero\">\n <div class=\"govuk-radios__item\" *ngFor=\"let explanation of explanationList.overPayment | keyValue\">\n <input class=\"govuk-radios__input\" id=\"{{explanation.key}}\" name=\"paymentExplanation\" type=\"radio\"\n [(ngModel)]=\"paymentExplanation\" value={{explanation.value}}\n (click)=\"selectRadioButton(explanation.key, 'explanation')\">\n <label class=\"govuk-label govuk-radios__label govuk-font__custom\" for=\"how-contacted-conditional\">\n {{explanation.value}}\n </label>\n </div>\n </div>\n <div\n [ngClass]=\"paymentExplanationHasError ? 'govuk-radios govuk-radios--conditional form-group-error' : 'govuk-radios govuk-radios--conditional'\"\n data-module=\"govuk-radios\" *ngIf=\"isRemainingAmountLtZero\">\n <div class=\"govuk-radios__item\" *ngFor=\"let explanation of explanationList.shortFall | keyValue\">\n <input class=\"govuk-radios__input\" id=\"{{explanation.key}}\" name=\"paymentExplanation\" type=\"radio\"\n [(ngModel)]=\"paymentExplanation\" value={{explanation.value}}\n (click)=\"selectRadioButton(explanation.key, 'explanation')\">\n <label class=\"govuk-label govuk-radios__label govuk-font__custom\" for=\"how-contacted-conditional\">\n {{explanation.value}}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n\n <form [formGroup]=\"overUnderPaymentForm\" novalidate>\n <div\n [ngClass]=\"isMoreDetailsBoxHide ? 'govuk-radios__conditional govuk-radios__conditional--hidden' : isPaymentDetailsEmpty || isPaymentDetailsInvalid || paymentDetailsMinHasError || paymentDetailsMaxHasError ? 'govuk-radios__conditional inline-error-border' : 'govuk-radios__conditional'\"\n id=\"conditional-how-contacted-conditional-3\">\n <div class=\"govuk-form-group\">\n <span id=\"more-detail-hint\" class=\"govuk-hint govuk-font__custom\">\n Please enter details\n </span>\n <textarea class=\"govuk-textarea\"\n [ngClass]=\"{'inline-error-class': isPaymentDetailsEmpty || isPaymentDetailsInvalid || paymentDetailsMinHasError || paymentDetailsMaxHasError}\"\n id=\"moreDetails\" name=\"moreDetails\" rows=\"5\" formControlName=\"moreDetails\">\n </textarea>\n <p class=\"inline-error-message\"\n *ngIf=\"isPaymentDetailsEmpty || isPaymentDetailsInvalid || paymentDetailsMinHasError || paymentDetailsMaxHasError\">\n <span *ngIf=\"isPaymentDetailsEmpty\">Enter a explanation</span>\n <span *ngIf=\"isPaymentDetailsInvalid\">Enter a valid explanation</span>\n <span *ngIf=\"paymentDetailsMinHasError\">Explanation should be at least 3 characters.</span>\n <span *ngIf=\"paymentDetailsMaxHasError\">Explanation should be 255 characters or under.</span>\n </p>\n </div>\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" [disabled]=\"isConfirmButtondisabled\"\n [ngClass]=\"isConfirmButtondisabled ? 'button button--disabled' : 'button'\"\n (click)=\"confirmAllocatePayement()\">\n Confirm\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelAllocatePayment($event)\">\n Cancel\n </button>\n </div>\n </form>\n </ng-container>\n</div>",
|
|
365
|
+
styles: [".allocate-payments{margin:20px 0}.allocate-payments .govuk-table__cell--col1,.allocate-payments .govuk-table__cell--col3{width:10%}.allocate-payments .govuk-table__cell--col2,.allocate-payments .govuk-table__cell--col6{width:25%}.allocate-payments .govuk-table__cell--col4,.allocate-payments .govuk-table__cell--col5{width:15%}.allocate-payments .govuk-button-group-allocate{display:flex;justify-content:flex-start}.allocate-payments .govuk-button--secondary{margin-left:10px;background-color:rgba(179,184,189,.9490196078431372)}.allocate-payments .govuk-custom-warning__message{font-size:30px;position:relative;top:12px;font-weight:700}.allocate-payments .govuk-warning-text-custom{margin-bottom:0!important;padding:10px 0 5px}.allocate-payments .govuk-table__custom--col1{padding-top:0;padding-bottom:20px;padding-left:15px}.allocate-payments .govuk-table__custom--col6{text-align:center}.allocate-payments .govuk-list__custom{padding-left:20px}.allocate-payments .govuk-font__custom,.allocate-payments .govuk-heading-m--custom,.allocate-payments .govuk-hint,.allocate-payments .govuk-label--m,.allocate-payments .govuk-list__custom,.allocate-payments .govuk-radios__item,.allocate-payments .govuk-warning-text__custom{font-size:19px}.allocate-payments .govuk-radios__conditional--hidden{display:none}.allocate-payments .form-group-error{border-left:5px solid #b10e1e;padding-left:15px}.allocate-payments .inline-error-class{outline:3px solid #a71414;outline-offset:0}.allocate-payments .inline-error-message{color:#a71414;font-weight:700;margin-top:10px}.allocate-payments .inline-error-border{border-color:#a71414}.allbtb{margin-top:2em}a:focus{background-color:#fd0;outline:2px solid #fd0}.casererf,.multiple-choice{font-size:19px}.casererf{align-self:flex-end}.paymentrequest{display:flex;flex-direction:row;justify-content:space-between;width:960px}"]
|
|
366
|
+
},] }
|
|
546
367
|
];
|
|
547
|
-
/** @nocollapse */
|
|
548
368
|
AllocatePaymentsComponent.ctorParameters = () => [
|
|
549
369
|
{ type: ErrorHandlerService },
|
|
550
370
|
{ type: CaseTransactionsService },
|
|
@@ -558,135 +378,4 @@ AllocatePaymentsComponent.propDecorators = {
|
|
|
558
378
|
isTurnOff: [{ type: Input }],
|
|
559
379
|
caseType: [{ type: Input }]
|
|
560
380
|
};
|
|
561
|
-
if (false) {
|
|
562
|
-
/** @type {?} */
|
|
563
|
-
AllocatePaymentsComponent.prototype.isTurnOff;
|
|
564
|
-
/** @type {?} */
|
|
565
|
-
AllocatePaymentsComponent.prototype.caseType;
|
|
566
|
-
/** @type {?} */
|
|
567
|
-
AllocatePaymentsComponent.prototype.overUnderPaymentForm;
|
|
568
|
-
/** @type {?} */
|
|
569
|
-
AllocatePaymentsComponent.prototype.viewStatus;
|
|
570
|
-
/** @type {?} */
|
|
571
|
-
AllocatePaymentsComponent.prototype.ccdCaseNumber;
|
|
572
|
-
/** @type {?} */
|
|
573
|
-
AllocatePaymentsComponent.prototype.bspaymentdcn;
|
|
574
|
-
/** @type {?} */
|
|
575
|
-
AllocatePaymentsComponent.prototype.recordId;
|
|
576
|
-
/** @type {?} */
|
|
577
|
-
AllocatePaymentsComponent.prototype.feedbackUrlLabel;
|
|
578
|
-
/** @type {?} */
|
|
579
|
-
AllocatePaymentsComponent.prototype.unAllocatedPayment;
|
|
580
|
-
/** @type {?} */
|
|
581
|
-
AllocatePaymentsComponent.prototype.siteID;
|
|
582
|
-
/** @type {?} */
|
|
583
|
-
AllocatePaymentsComponent.prototype.errorMessage;
|
|
584
|
-
/** @type {?} */
|
|
585
|
-
AllocatePaymentsComponent.prototype.paymentGroup;
|
|
586
|
-
/** @type {?} */
|
|
587
|
-
AllocatePaymentsComponent.prototype.paymentGroups;
|
|
588
|
-
/** @type {?} */
|
|
589
|
-
AllocatePaymentsComponent.prototype.remainingAmount;
|
|
590
|
-
/** @type {?} */
|
|
591
|
-
AllocatePaymentsComponent.prototype.isRemainingAmountGtZero;
|
|
592
|
-
/** @type {?} */
|
|
593
|
-
AllocatePaymentsComponent.prototype.isMoreDetailsBoxHide;
|
|
594
|
-
/** @type {?} */
|
|
595
|
-
AllocatePaymentsComponent.prototype.isRemainingAmountLtZero;
|
|
596
|
-
/** @type {?} */
|
|
597
|
-
AllocatePaymentsComponent.prototype.afterFeeAllocateOutstanding;
|
|
598
|
-
/** @type {?} */
|
|
599
|
-
AllocatePaymentsComponent.prototype.amountForAllocation;
|
|
600
|
-
/** @type {?} */
|
|
601
|
-
AllocatePaymentsComponent.prototype.isConfirmButtondisabled;
|
|
602
|
-
/** @type {?} */
|
|
603
|
-
AllocatePaymentsComponent.prototype.isContinueButtondisabled;
|
|
604
|
-
/** @type {?} */
|
|
605
|
-
AllocatePaymentsComponent.prototype.otherPaymentExplanation;
|
|
606
|
-
/** @type {?} */
|
|
607
|
-
AllocatePaymentsComponent.prototype.selectedOption;
|
|
608
|
-
/** @type {?} */
|
|
609
|
-
AllocatePaymentsComponent.prototype.isFeeAmountZero;
|
|
610
|
-
/** @type {?} */
|
|
611
|
-
AllocatePaymentsComponent.prototype.paymentReasonHasError;
|
|
612
|
-
/** @type {?} */
|
|
613
|
-
AllocatePaymentsComponent.prototype.paymentExplanationHasError;
|
|
614
|
-
/** @type {?} */
|
|
615
|
-
AllocatePaymentsComponent.prototype.isPaymentDetailsEmpty;
|
|
616
|
-
/** @type {?} */
|
|
617
|
-
AllocatePaymentsComponent.prototype.isPaymentDetailsInvalid;
|
|
618
|
-
/** @type {?} */
|
|
619
|
-
AllocatePaymentsComponent.prototype.paymentDetailsMinHasError;
|
|
620
|
-
/** @type {?} */
|
|
621
|
-
AllocatePaymentsComponent.prototype.paymentDetailsMaxHasError;
|
|
622
|
-
/** @type {?} */
|
|
623
|
-
AllocatePaymentsComponent.prototype.isUserNameEmpty;
|
|
624
|
-
/** @type {?} */
|
|
625
|
-
AllocatePaymentsComponent.prototype.isUserNameInvalid;
|
|
626
|
-
/** @type {?} */
|
|
627
|
-
AllocatePaymentsComponent.prototype.ccdReference;
|
|
628
|
-
/** @type {?} */
|
|
629
|
-
AllocatePaymentsComponent.prototype.exceptionReference;
|
|
630
|
-
/** @type {?} */
|
|
631
|
-
AllocatePaymentsComponent.prototype.paymentReason;
|
|
632
|
-
/** @type {?} */
|
|
633
|
-
AllocatePaymentsComponent.prototype.paymentExplanation;
|
|
634
|
-
/** @type {?} */
|
|
635
|
-
AllocatePaymentsComponent.prototype.userName;
|
|
636
|
-
/** @type {?} */
|
|
637
|
-
AllocatePaymentsComponent.prototype.paymentSectionLabel;
|
|
638
|
-
/** @type {?} */
|
|
639
|
-
AllocatePaymentsComponent.prototype.paymentRef;
|
|
640
|
-
/** @type {?} */
|
|
641
|
-
AllocatePaymentsComponent.prototype.isStrategicFixEnable;
|
|
642
|
-
/** @type {?} */
|
|
643
|
-
AllocatePaymentsComponent.prototype.orderLevelFees;
|
|
644
|
-
/** @type {?} */
|
|
645
|
-
AllocatePaymentsComponent.prototype.cookieUserName;
|
|
646
|
-
/** @type {?} */
|
|
647
|
-
AllocatePaymentsComponent.prototype.enCookieUserName;
|
|
648
|
-
/** @type {?} */
|
|
649
|
-
AllocatePaymentsComponent.prototype.userNameField;
|
|
650
|
-
/** @type {?} */
|
|
651
|
-
AllocatePaymentsComponent.prototype.reasonList;
|
|
652
|
-
/** @type {?} */
|
|
653
|
-
AllocatePaymentsComponent.prototype.explanationList;
|
|
654
|
-
/** @type {?} */
|
|
655
|
-
AllocatePaymentsComponent.prototype.refund;
|
|
656
|
-
/**
|
|
657
|
-
* @type {?}
|
|
658
|
-
* @private
|
|
659
|
-
*/
|
|
660
|
-
AllocatePaymentsComponent.prototype.errorHandlerService;
|
|
661
|
-
/**
|
|
662
|
-
* @type {?}
|
|
663
|
-
* @private
|
|
664
|
-
*/
|
|
665
|
-
AllocatePaymentsComponent.prototype.caseTransactionsService;
|
|
666
|
-
/**
|
|
667
|
-
* @type {?}
|
|
668
|
-
* @private
|
|
669
|
-
*/
|
|
670
|
-
AllocatePaymentsComponent.prototype.formBuilder;
|
|
671
|
-
/**
|
|
672
|
-
* @type {?}
|
|
673
|
-
* @private
|
|
674
|
-
*/
|
|
675
|
-
AllocatePaymentsComponent.prototype.paymentViewService;
|
|
676
|
-
/**
|
|
677
|
-
* @type {?}
|
|
678
|
-
* @private
|
|
679
|
-
*/
|
|
680
|
-
AllocatePaymentsComponent.prototype.paymentLibComponent;
|
|
681
|
-
/**
|
|
682
|
-
* @type {?}
|
|
683
|
-
* @private
|
|
684
|
-
*/
|
|
685
|
-
AllocatePaymentsComponent.prototype.bulkScaningPaymentService;
|
|
686
|
-
/**
|
|
687
|
-
* @type {?}
|
|
688
|
-
* @private
|
|
689
|
-
*/
|
|
690
|
-
AllocatePaymentsComponent.prototype.OrderslistService;
|
|
691
|
-
}
|
|
692
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGUtcGF5bWVudHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hbGxvY2F0ZS1wYXltZW50cy9hbGxvY2F0ZS1wYXltZW50cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ25HLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBR2xGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBU3RFLE1BQU0sT0FBTyx5QkFBeUI7Ozs7Ozs7Ozs7SUF1RnBDLFlBQ1EsbUJBQXdDLEVBQ3hDLHVCQUFnRCxFQUNoRCxXQUF3QixFQUN4QixrQkFBc0MsRUFDdEMsbUJBQXdDLEVBQ3hDLHlCQUFvRCxFQUNwRCxpQkFBb0M7UUFOcEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FB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QUNoRCw0REFBd0Q7Ozs7O0lBQ3hELGdEQUFnQzs7Ozs7SUFDaEMsdURBQThDOzs7OztJQUM5Qyx3REFBZ0Q7Ozs7O0lBQ2hELDhEQUE0RDs7Ozs7SUFDNUQsc0RBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBheW1lbnRMaWJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7Q2FzZVRyYW5zYWN0aW9uc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Nhc2UtdHJhbnNhY3Rpb25zL2Nhc2UtdHJhbnNhY3Rpb25zLnNlcnZpY2UnOyBcbmltcG9ydCB7QnVsa1NjYW5pbmdQYXltZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnVsay1zY2FuaW5nLXBheW1lbnQvYnVsay1zY2FuaW5nLXBheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2hhcmVkL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQge0lQYXltZW50R3JvdXB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVBheW1lbnRHcm91cCc7XG5pbXBvcnQge0lCU1BheW1lbnRzfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lCU1BheW1lbnRzJztcbmltcG9ydCB7QWxsb2NhdGVQYXltZW50UmVxdWVzdH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9BbGxvY2F0ZVBheW1lbnRSZXF1ZXN0JztcbmltcG9ydCB7SUFsbG9jYXRpb25QYXltZW50c1JlcXVlc3R9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUFsbG9jYXRpb25QYXltZW50c1JlcXVlc3QnO1xuaW1wb3J0IHsgSU9yZGVyUmVmZXJlbmNlRmVlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JT3JkZXJSZWZlcmVuY2VGZWUnO1xuaW1wb3J0IHsgT3JkZXJzbGlzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFsbG9jYXRlLXBheW1lbnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsbG9jYXRlLXBheW1lbnRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWxsb2NhdGUtcGF5bWVudHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBbGxvY2F0ZVBheW1lbnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgaXNUdXJuT2ZmOiBib29sZWFuO1xuICBASW5wdXQoKSBjYXNlVHlwZTogc3RyaW5nO1xuXG4gIG92ZXJVbmRlclBheW1lbnRGb3JtOiBGb3JtR3JvdXA7XG4gIHZpZXdTdGF0dXM6IHN0cmluZztcbiAgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBic3BheW1lbnRkY246IHN0cmluZztcbiAgcmVjb3JkSWQ6c3RyaW5nO1xuICBmZWVkYmFja1VybExhYmVsOnN0cmluZztcbiAgdW5BbGxvY2F0ZWRQYXltZW50OiBJQlNQYXltZW50cyA9IHtcbiAgICBhbW91bnQ6IDBcbiAgfTtcbiAgc2l0ZUlEOiBzdHJpbmcgPSBudWxsO1xuICBlcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlLCBmYWxzZSwgJycpO1xuICBwYXltZW50R3JvdXA6IElQYXltZW50R3JvdXA7XG4gIHBheW1lbnRHcm91cHM6IElQYXltZW50R3JvdXBbXSA9IFtdO1x0XG4gIHJlbWFpbmluZ0Ftb3VudDogbnVtYmVyO1xuICBpc1JlbWFpbmluZ0Ftb3VudEd0WmVybzogYm9vbGVhbjtcbiAgaXNNb3JlRGV0YWlsc0JveEhpZGU6IGJvb2xlYW4gID0gdHJ1ZTtcbiAgaXNSZW1haW5pbmdBbW91bnRMdFplcm86IGJvb2xlYW47XG4gIGFmdGVyRmVlQWxsb2NhdGVPdXRzdGFuZGluZzogbnVtYmVyO1xuICBhbW91bnRGb3JBbGxvY2F0aW9uOiBudW1iZXI7XG4gIGlzQ29uZmlybUJ1dHRvbmRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGlzQ29udGludWVCdXR0b25kaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gIG90aGVyUGF5bWVudEV4cGxhbmF0aW9uOiBzdHJpbmcgPSBudWxsO1xuICBzZWxlY3RlZE9wdGlvbjogc3RyaW5nID0gbnVsbDtcbiAgaXNGZWVBbW91bnRaZXJvOiBib29sZWFuID0gZmFsc2U7XHRcblxuICBwYXltZW50UmVhc29uSGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGF5bWVudEV4cGxhbmF0aW9uSGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNQYXltZW50RGV0YWlsc0VtcHR5OiBib29sZWFuID0gZmFsc2U7XG4gIGlzUGF5bWVudERldGFpbHNJbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gIHBheW1lbnREZXRhaWxzTWluSGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGF5bWVudERldGFpbHNNYXhIYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1VzZXJOYW1lRW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNVc2VyTmFtZUludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2NkUmVmZXJlbmNlOiBzdHJpbmcgPSBudWxsO1xuICBleGNlcHRpb25SZWZlcmVuY2U6IHN0cmluZyA9IG51bGw7XG4gIHBheW1lbnRSZWFzb246IHN0cmluZyA9IG51bGw7XG4gIHBheW1lbnRFeHBsYW5hdGlvbjogc3RyaW5nID0gbnVsbDtcbiAgdXNlck5hbWU6IHN0cmluZyA9IG51bGw7XG4gIHBheW1lbnRTZWN0aW9uTGFiZWw6IGFueTtcbiAgcGF5bWVudFJlZjogc3RyaW5nID0gbnVsbDtcbiAgaXNTdHJhdGVnaWNGaXhFbmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBvcmRlckxldmVsRmVlczogSU9yZGVyUmVmZXJlbmNlRmVlW10gPSBbXTtcbiAgY29va2llVXNlck5hbWU6IHN0cmluZ1tdID0gW107XG4gIGVuQ29va2llVXNlck5hbWU6IGFueTtcbiAgdXNlck5hbWVGaWVsZDogc3RyaW5nID0gbnVsbDtcblxuICByZWFzb25MaXN0OiB7IFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfT0ge1xuICAgIG92ZXJQYXltZW50OiB7XG4gICAgICBod2ZSZXdhcmQ6ICdIZWxwIHdpdGggRmVlcyAoSFdGKSBhd2FyZGVkLiAgUGxlYXNlIGluY2x1ZGUgdGhlIEhXRiByZWZlcmVuY2UgbnVtYmVyIGluIHRoZSBleHBsYW5hdG9yeSBub3RlJyxcbiAgICAgIHdyb25nRmVlOiAnSW5jb3JyZWN0IHBheW1lbnQgcmVjZWl2ZWQnLFxuICAgICAgbm90SXNzdWVDYXNlOiAnVW5hYmxlIHRvIGlzc3VlIGNhc2UnLFxuICAgICAgb3RoZXJEZWR1Y3Rpb246ICdPdGhlcidcbiAgICB9LFxuICAgIHNob3J0RmFsbDoge1xuICAgICAgaGVscFdpdGhGZWU6ICdIZWxwIHdpdGggRmVlcyAoSFdGKSBhcHBsaWNhdGlvbiBkZWNsaW5lZCcsXG4gICAgICB3cm9uZ0ZlZTogJ0luY29ycmVjdCBwYXltZW50IHJlY2VpdmVkJyxcbiAgICAgIG90aGVyOiAnT3RoZXInXG4gICAgfVxuICB9XG4gIGV4cGxhbmF0aW9uTGlzdCA9IHtcbiAgICBvdmVyUGF5bWVudDoge1xuICAgICAgcmVmZXJSZWZ1bmQ6ICdEZXRhaWxzIGluIGNhc2Ugbm90ZXMuICBSZWZ1bmQgZHVlJyxcbiAgICAgIG5vUmVmdW5kOiAnRGV0YWlscyBpbiBjYXNlIG5vdGVzLiBObyByZWZ1bmQgZHVlJyxcbiAgICAgIG5vQ2FzZTogJ05vIGNhc2UgY3JlYXRlZC4gIFJlZnVuZCBkdWUnLFxuICAgICAgb3RoZXI6ICdPdGhlcidcbiAgICB9LFxuICAgIHNob3J0RmFsbDoge1xuICAgICAgaG9sZENhc2U6ICdJIGhhdmUgcHV0IGEgc3RvcCBvbiB0aGUgY2FzZSBhbmQgY29udGFjdGVkIHRoZSBhcHBsaWNhbnQgcmVxdWVzdGluZyB0aGUgYmFsYW5jZSBvZiBwYXltZW50JyxcbiAgICAgIGhlbGRDYXNlOiAnSSBoYXZlIHB1dCBhIHN0b3Agb24gdGhlIGNhc2UuICBUaGUgYXBwbGljYW50IG5lZWRzIHRvIGJlIGNvbnRhY3RlZCB0byByZXF1ZXN0IHRoZSBiYWxhbmNlIG9mIHBheW1lbnQnLFxuICAgICAgb3RoZXI6ICdPdGhlcidcbiAgICB9XG4gIH1cblxuICByZWZ1bmQgPSB7XG4gICAgcmVhc29uOiB7XG4gICAgICBkdXBsaWNhdGU6ICdEdXBsaWNhdGUgcGF5bWVudCcsXG4gICAgICBodW1hbmVycm9yOiAnSHVtYW4gZXJyb3InLFxuICAgICAgY2FzZVdpdGhkcmF3bjogJ0Nhc2Ugd2l0aGRyYXduJyxcbiAgICAgIG90aGVyOiAnT3RoZXInXG4gICAgfVxuICB9XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgcHJpdmF0ZSBlcnJvckhhbmRsZXJTZXJ2aWNlOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICBwcml2YXRlIGNhc2VUcmFuc2FjdGlvbnNTZXJ2aWNlOiBDYXNlVHJhbnNhY3Rpb25zU2VydmljZSxcbiAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gIHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UsXG4gIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkNvbXBvbmVudCxcbiAgcHJpdmF0ZSBidWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlOiBCdWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLFxuICBwcml2YXRlIE9yZGVyc2xpc3RTZXJ2aWNlOiBPcmRlcnNsaXN0U2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW5Gb3JtJztcbiAgICBpZiAodGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRHcm91cFJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2FsbG9jYXRlUGF5bWVudENvbmZpcm1hdGlvbic7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5ic3BheW1lbnRkY24gPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuYnNwYXltZW50ZGNuO1xuICAgIHRoaXMucGF5bWVudFJlZiA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50R3JvdXBSZWZlcmVuY2U7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5TRUxFQ1RFRF9PUFRJT047XG4gICAgdGhpcy5pc1N0cmF0ZWdpY0ZpeEVuYWJsZSA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1NGRU5BQkxFO1xuICAgIHRoaXMuaXNUdXJuT2ZmID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzVHVybk9mZjtcbiAgICB0aGlzLm92ZXJVbmRlclBheW1lbnRGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBtb3JlRGV0YWlsczogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSxcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU1KSxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeKFthLXpBLVowLTlcXFxccyxcXFxcLl0qKSQnKVxuICAgICAgXSkpLFxuICAgICAgdXNlck5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeKFthLXpBLVowLTlcXFxcc10qKSQnKVxuICAgICAgXSkpLFxuICAgIH0pO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0T3JkZXJzTGlzdCgpLnN1YnNjcmliZSggKGRhdGEpID0+XG4gICAgdGhpcy5vcmRlckxldmVsRmVlcyA9IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5vcmRlclN0YXR1cyAhPT0gJ1BhaWQnKSk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRDYXNlVHlwZSgpLnN1YnNjcmliZSggKGRhdGEpID0+IHRoaXMuY2FzZVR5cGUgPSBkYXRhKTtcbiAgICB0aGlzLmdldFVuYXNzaWduZWRQYXltZW50KCk7XG4gIH1cbiAgZ2V0R3JvdXBPdXRzdGFuZGluZ0Ftb3VudChwYXltZW50R3JvdXA6IElQYXltZW50R3JvdXApOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UuY2FsY3VsYXRlT3V0U3RhbmRpbmdBbW91bnQocGF5bWVudEdyb3VwKTtcbiAgfVxuXG4gIGdldFBheW1lbnRHcm91cERldGFpbHMoKXtcblxuICAgIGlmKCF0aGlzLmlzVHVybk9mZil7XG4gICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRQYXltZW50R3JvdXBEZXRhaWxzKHRoaXMucGF5bWVudFJlZikuc3Vic2NyaWJlKFxuICAgICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSwgZmFsc2UsICcnKTtcbiAgICAgICAgICB0aGlzLnBheW1lbnRHcm91cCAgPSBwYXltZW50R3JvdXA7XG4gICAgICAgICAgdGhpcy5zYXZlQW5kQ29udGludWUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UodHJ1ZSwgZmFsc2UsICcnKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9ZWxzZSB7XG4gICAgICB0aGlzLmNhc2VUcmFuc2FjdGlvbnNTZXJ2aWNlLmdldFBheW1lbnRHcm91cHModGhpcy5jY2RDYXNlTnVtYmVyKS5zdWJzY3JpYmUoXG4gICAgICAgIHBheW1lbnRHcm91cHMgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSwgZmFsc2UsICcnKTtcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXBzID0gcGF5bWVudEdyb3Vwc1sncGF5bWVudF9ncm91cHMnXS5maWx0ZXIocGF5bWVudEdyb3VwID0+IHtcbiAgICAgICAgICAgIHBheW1lbnRHcm91cC5mZWVzLmZvckVhY2goZmVlID0+IHtcbiAgICAgICAgICAgICAgaWYoZmVlLmNhbGN1bGF0ZWRfYW1vdW50ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZlZUFtb3VudFplcm8gPSB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGV0IGZzdENvbiA9IHRoaXMuZ2V0R3JvdXBPdXRzdGFuZGluZ0Ftb3VudCg8SVBheW1lbnRHcm91cD5wYXltZW50R3JvdXApLFxuICAgICAgICAgICAgc2NuZENuID0gZnN0Q29uID4gMCB8fCAoZnN0Q29uID09IDAgJiYgdGhpcy5pc0ZlZUFtb3VudFplcm8pICYmIHBheW1lbnRHcm91cC5wYXltZW50X2dyb3VwX3JlZmVyZW5jZSA9PT0gdGhpcy5wYXltZW50UmVmO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGF5bWVudFJlZiA/ICBzY25kQ24gOiBmc3RDb24gPiAwIHx8IChmc3RDb24gPT0gMCAmJiB0aGlzLmlzRmVlQW1vdW50WmVybyk7XG4gICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCBmYWxzZSwgJycpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICB9XG5cbiAgc2VsZWN0ZWRQYXltZW50R3JvdXAocGF5bWVudEdyb3VwOiBJUGF5bWVudEdyb3VwKSB7XHRcbiAgICB0aGlzLmlzQ29udGludWVCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1x0XG4gICAgdGhpcy5wYXltZW50R3JvdXAgPSBwYXltZW50R3JvdXA7XHRcbiAgfVx0XG5cbiAgZ290b0Nhc2V0cmFuc2F0aW9uUGFnZSgpIHtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnY2FzZS10cmFuc2FjdGlvbnMnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1R1cm5PZmYgPSB0aGlzLmlzVHVybk9mZjtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gdHJ1ZTtcbiAgfVxuXG4gIGdvdG9TdW1tYXJ5UGFnZShldmVudDogYW55KSB7IFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2ZlZS1zdW1tYXJ5JztcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNUdXJuT2ZmID0gdGhpcy5pc1R1cm5PZmY7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHRydWU7XG4gIH1cblxuICBjYW5jZWxBbGxvY2F0ZVBheW1lbnQoZXZlbnQ6IGFueSl7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ2FsbCcpO1xuICAgIGlmKCF0aGlzLmlzVHVybk9mZil7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnZmVlLXN1bW1hcnknO1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzVHVybk9mZiA9IHRoaXMuaXNUdXJuT2ZmO1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UID0gdHJ1ZTtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW5Gb3JtJztcdFxuICAgIH1cbiAgfVxuICBjb25maXJtQWxsb2NhdGVQYXllbWVudCgpe1xuICAgIHRoaXMuZW5Db29raWVVc2VyTmFtZSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdChcIjtcIikuZmluZChyb3cgPT4gcm93LmluY2x1ZGVzKFwidXNlci1pbmZvXCIpKS5zcGxpdChcIj1cIilbMV0uc3BsaXQoXCI7XCIpO1xuICAgIHRoaXMuY29va2llVXNlck5hbWUgPSBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudCh0aGlzLmVuQ29va2llVXNlck5hbWUpKTtcbiAgICBcbiAgICBjb25zdCBmdWxsTmFtZSA9IHRoaXMuY29va2llVXNlck5hbWVbJ2ZvcmVuYW1lJ10gKyAnICcgKyB0aGlzLmNvb2tpZVVzZXJOYW1lWydzdXJuYW1lJ107XG5cbiAgICBjb25zdCBwYXltZW50RGV0YWlsc0ZpZWxkID0gdGhpcy5vdmVyVW5kZXJQYXltZW50Rm9ybS5jb250cm9scy5tb3JlRGV0YWlscyxcbiAgICAgIHBheW1lbnRGb3JtRXJyb3IgPSB0aGlzLm92ZXJVbmRlclBheW1lbnRGb3JtLmNvbnRyb2xzLm1vcmVEZXRhaWxzLmVycm9ycyxcbiAgICAgIHVzZXJOYW1lRmllbGQgPSBmdWxsTmFtZSxcbiAgICAgIGlzRW1wdHlDb25kdGlvbiA9IHRoaXMucGF5bWVudFJlYXNvbiAmJiB0aGlzLnBheW1lbnRFeHBsYW5hdGlvbixcbiAgICAgIGlzT3RoZXJPcHRpb25TZWxlY3RlZCA9IHRoaXMucGF5bWVudEV4cGxhbmF0aW9uID09PSAnT3RoZXInO1xuXG4gICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdhbGwnKTtcbiAgICBpZiAoICghdGhpcy5pc1JlbWFpbmluZ0Ftb3VudEd0WmVybyAmJiAhdGhpcy5pc1JlbWFpbmluZ0Ftb3VudEx0WmVybykgfHwgaXNFbXB0eUNvbmR0aW9uICYmICghaXNPdGhlck9wdGlvblNlbGVjdGVkICYmIHVzZXJOYW1lRmllbGQubGVuZ3RoID4gMCB8fCBpc090aGVyT3B0aW9uU2VsZWN0ZWQgJiYgdXNlck5hbWVGaWVsZC5sZW5ndGggPiAwICYmIHBheW1lbnREZXRhaWxzRmllbGQudmFsaWQpKSB7XG4gICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMub3RoZXJQYXltZW50RXhwbGFuYXRpb24gPSB0aGlzLnBheW1lbnRFeHBsYW5hdGlvbiA9PT0gJ090aGVyJyA/IHBheW1lbnREZXRhaWxzRmllbGQudmFsdWUgOiB0aGlzLnBheW1lbnRFeHBsYW5hdGlvbjtcbiAgICAgIHRoaXMudXNlck5hbWUgPSB1c2VyTmFtZUZpZWxkO1xuICAgICAgdGhpcy5maW5hbFNlcnZpY2VDYWxsKCk7XG4gICAgfWVsc2Uge1xuICAgICAgaWYoIXRoaXMucGF5bWVudFJlYXNvbikge1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybShbdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2VdLCAncmVhc29uJyk7XG4gICAgICB9XG4gICAgICBpZighdGhpcy5wYXltZW50RXhwbGFuYXRpb24pIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ2V4cGxhbmF0aW9uJyk7XG4gICAgICB9XG4gICAgICBpZih0aGlzLnBheW1lbnRFeHBsYW5hdGlvbiAmJiBpc090aGVyT3B0aW9uU2VsZWN0ZWQpIHtcbiAgICAgICAgaWYocGF5bWVudERldGFpbHNGaWVsZC52YWx1ZSA9PSAnJyApIHtcbiAgICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2VdLCAnb3RoZXInKTtcbiAgICAgICAgfVxuICAgICAgICBpZihwYXltZW50RGV0YWlsc0ZpZWxkLnZhbHVlICE9ICcnICYmIHBheW1lbnREZXRhaWxzRmllbGQuaW52YWxpZCApIHtcbiAgICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2VdLCAnb3RoZXInKTtcbiAgICAgICAgfVxuICAgICAgICBpZihwYXltZW50Rm9ybUVycm9yICYmIHBheW1lbnRGb3JtRXJyb3IubWlubGVuZ3RoICYmIHBheW1lbnRGb3JtRXJyb3IubWlubGVuZ3RoLmFjdHVhbExlbmd0aCA8IDMgKSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ290aGVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYocGF5bWVudEZvcm1FcnJvciAmJiBwYXltZW50Rm9ybUVycm9yLm1heGxlbmd0aCAmJiBwYXltZW50Rm9ybUVycm9yLm1heGxlbmd0aC5hY3R1YWxMZW5ndGggPiAyNTUgKSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXSwgJ290aGVyJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKHVzZXJOYW1lRmllbGQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZV0sICd1c2VybmFtZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXNldEZvcm0odmFscywgZmllbGQpIHtcbiAgICBpZihmaWVsZD09PSdyZWFzb24nIHx8IGZpZWxkPT09J2FsbCcpIHtcbiAgICAgIHRoaXMucGF5bWVudFJlYXNvbkhhc0Vycm9yID0gdmFsc1swXTtcbiAgICB9XG4gICAgaWYoZmllbGQ9PT0nZXhwbGFuYXRpb24nIHx8IGZpZWxkPT09J2FsbCcpIHtcbiAgICAgIHRoaXMucGF5bWVudEV4cGxhbmF0aW9uSGFzRXJyb3IgPSB2YWxzWzFdO1xuICAgIH1cbiAgICBpZihmaWVsZD09PSdvdGhlcicgfHwgZmllbGQ9PT0nYWxsJykge1xuICAgICAgdGhpcy5pc1BheW1lbnREZXRhaWxzRW1wdHkgPSB2YWxzWzJdO1xuICAgICAgdGhpcy5pc1BheW1lbnREZXRhaWxzSW52YWxpZCA9IHZhbHNbM107XG4gICAgICB0aGlzLnBheW1lbnREZXRhaWxzTWluSGFzRXJyb3IgPSB2YWxzWzRdO1xuICAgICAgdGhpcy5wYXltZW50RGV0YWlsc01heEhhc0Vycm9yID0gdmFsc1s1XTtcbiAgICB9XG4gICAgaWYoZmllbGQ9PT0ndXNlcm5hbWUnIHx8IGZpZWxkPT09J2FsbCcpIHtcbiAgICAgIHRoaXMuaXNVc2VyTmFtZUVtcHR5ID0gdmFsc1s2XTtcbiAgICAgIHRoaXMuaXNVc2VyTmFtZUludmFsaWQgPSB2YWxzWzddO1xuICAgIH1cbiAgfVxuICBmaW5hbFNlcnZpY2VDYWxsKCkge1xuICAgIGlmKCF0aGlzLmlzU3RyYXRlZ2ljRml4RW5hYmxlKSB7XG4gICAgICBsZXQgYWxsb2NhdGVkUmVxdWVzdCA9IHtcbiAgICAgICAgcmVhc29uOiB0aGlzLnBheW1lbnRSZWFzb24sXG4gICAgICAgIGFsbG9jYXRpb25fc3RhdHVzOidBbGxvY2F0ZWQnLFxuICAgICAgICBleHBsYW5hdGlvbjogdGhpcy5vdGhlclBheW1lbnRFeHBsYW5hdGlvbixcbiAgICAgICAgcGF5bWVudF9hbGxvY2F0aW9uX3N0YXR1czoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICBuYW1lOiAnQWxsb2NhdGVkJ1xuICAgICAgICB9LFxuICAgICAgICBwYXltZW50X2dyb3VwX3JlZmVyZW5jZTogdGhpcy5wYXltZW50R3JvdXAucGF5bWVudF9ncm91cF9yZWZlcmVuY2UsXG4gICAgICAgIGNhc2VfdHlwZTogdGhpcy5jYXNlVHlwZSxcbiAgICAgICAgdXNlcl9uYW1lOiB0aGlzLnVzZXJOYW1lXG4gICAgICB9XG4gICAgICBjb25zdCBwb3N0U3RyYXRlZ2ljQm9keSA9IG5ldyBBbGxvY2F0ZVBheW1lbnRSZXF1ZXN0XG4gICAgICAodGhpcy5jY2RSZWZlcmVuY2UsIHRoaXMudW5BbGxvY2F0ZWRQYXltZW50LCB0aGlzLmNhc2VUeXBlLCB0aGlzLmV4Y2VwdGlvblJlZmVyZW5jZSwgYWxsb2NhdGVkUmVxdWVzdCk7XG4gICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucG9zdEJTUGF5bWVudFN0cmF0ZWdpYyhwb3N0U3RyYXRlZ2ljQm9keSAsIHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRfZ3JvdXBfcmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlLCBmYWxzZSwgJycpO1xuICAgICAgICAgIGxldCByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzKTtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICB0aGlzLmdvdG9DYXNldHJhbnNhdGlvblBhZ2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKHRydWUsIGZhbHNlLCAnJyk7XG4gICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICAgICAgICAgIHRoaXMuaXNDb25maXJtQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICB9IGVsc2Uge1xuICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5wYXRjaEJTQ2hhbmdlU3RhdHVzKHRoaXMudW5BbGxvY2F0ZWRQYXltZW50LmRjbl9yZWZlcmVuY2UsICdQUk9DRVNTRUQnKS5zdWJzY3JpYmUoXG4gICAgICByZXMxID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlLCBmYWxzZSwgJycpO1xuICAgICAgICBsZXQgcmVzcG9uc2UxID0gSlNPTi5wYXJzZShyZXMxKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlMS5zdWNjZXNzKSB7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSBuZXcgQWxsb2NhdGVQYXltZW50UmVxdWVzdFxuICAgICAgICAgICh0aGlzLmNjZFJlZmVyZW5jZSwgdGhpcy51bkFsbG9jYXRlZFBheW1lbnQsIHRoaXMuc2l0ZUlELCB0aGlzLmV4Y2VwdGlvblJlZmVyZW5jZSk7XG4gICAgICAgICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLnBvc3RCU0FsbG9jYXRlUGF5bWVudChyZXF1ZXN0Qm9keSwgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudF9ncm91cF9yZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgICAgICAgIHJlczIgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UoZmFsc2UsIGZhbHNlLCAnJyk7XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZTIgPSBKU09OLnBhcnNlKHJlczIpO1xuICAgICAgICAgICAgICBjb25zdCByZXFCb2R5ID0gbmV3IElBbGxvY2F0aW9uUGF5bWVudHNSZXF1ZXN0XG4gICAgICAgICAgICAgIChyZXNwb25zZTJbJ2RhdGEnXS5wYXltZW50X2dyb3VwX3JlZmVyZW5jZSwgcmVzcG9uc2UyWydkYXRhJ10ucmVmZXJlbmNlLCB0aGlzLnBheW1lbnRSZWFzb24sIHRoaXMub3RoZXJQYXltZW50RXhwbGFuYXRpb24sIHRoaXMudXNlck5hbWUpO1xuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UyLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5wb3N0QlNBbGxvY2F0aW9uUGF5bWVudHMocmVxQm9keSkuc3Vic2NyaWJlKFxuICBcbiAgICAgICAgICAgICAgICByZXMzID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSwgZmFsc2UsICcnKTtcbiAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZTMgPSBKU09OLnBhcnNlKHJlczMpO1xuICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlMy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgdGhpcy5nb3RvQ2FzZXRyYW5zYXRpb25QYWdlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLnBhdGNoQlNDaGFuZ2VTdGF0dXModGhpcy51bkFsbG9jYXRlZFBheW1lbnQuZGNuX3JlZmVyZW5jZSwgJ0NPTVBMRVRFJykuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UodHJ1ZSwgZmFsc2UsICcnKTtcbiAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb25maXJtQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5wYXRjaEJTQ2hhbmdlU3RhdHVzKHRoaXMudW5BbGxvY2F0ZWRQYXltZW50LmRjbl9yZWZlcmVuY2UsICdDT01QTEVURScpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UodHJ1ZSwgZmFsc2UsICcnKTtcbiAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICAgICAgICAgICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UodHJ1ZSwgZmFsc2UsICcnKTtcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICAgICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTsgIFxuICB9XG4gIH1cblxuICBzYXZlQW5kQ29udGludWUoKXtcbiAgICBpZih0aGlzLnBheW1lbnRHcm91cCkge1xuICAgICAgdGhpcy5pc01vcmVEZXRhaWxzQm94SGlkZSA9IHRydWU7XG4gICAgICB0aGlzLm92ZXJVbmRlclBheW1lbnRGb3JtLmdldCgnbW9yZURldGFpbHMnKS5yZXNldCgpO1xuICAgICAgdGhpcy5vdmVyVW5kZXJQYXltZW50Rm9ybS5nZXQoJ21vcmVEZXRhaWxzJykuc2V0VmFsdWUoJycpO1xuICAgICAgdGhpcy5vdmVyVW5kZXJQYXltZW50Rm9ybS5nZXQoJ3VzZXJOYW1lJykucmVzZXQoKTtcbiAgICAgIHRoaXMub3ZlclVuZGVyUGF5bWVudEZvcm0uZ2V0KCd1c2VyTmFtZScpLnNldFZhbHVlKCcnKTtcbiAgICAgIHRoaXMucGF5bWVudFJlYXNvbiA9ICcnO1xuICAgICAgdGhpcy5wYXltZW50RXhwbGFuYXRpb24gPSAnJztcbiAgICAgIGxldCBHcm91cE91dHN0YW5kaW5nQW1vdW50ID0gdGhpcy5nZXRHcm91cE91dHN0YW5kaW5nQW1vdW50KHRoaXMucGF5bWVudEdyb3VwKTtcbiAgICAgIGNvbnN0IHJlbWFpbmluZ1RvQmVBc3NpZ25lZCA9IHRoaXMudW5BbGxvY2F0ZWRQYXltZW50LmFtb3VudCAtIEdyb3VwT3V0c3RhbmRpbmdBbW91bnQ7XG4gICAgICB0aGlzLmlzUmVtYWluaW5nQW1vdW50R3RaZXJvID0gcmVtYWluaW5nVG9CZUFzc2lnbmVkID4gMDtcbiAgICAgIHRoaXMuaXNSZW1haW5pbmdBbW91bnRMdFplcm8gPSByZW1haW5pbmdUb0JlQXNzaWduZWQgPCAwO1xuICAgICAgdGhpcy5wYXltZW50U2VjdGlvbkxhYmVsID0gdGhpcy5pc1JlbWFpbmluZ0Ftb3VudEd0WmVybyA/IHsgXG4gICAgICAgICAgdGl0bGU6ICdUaGVyZSBpcyBhbiBPdmVyIHBheW1lbnQgb2YnLFxuICAgICAgICAgIHJlYXNvbjogJ1Byb3ZpZGUgYSByZWFzb24uIFRoaXMgd2lsbCBiZSB1c2VkIGluIHRoZSBSZWZ1bmQgcHJvY2Vzcy4nLFxuICAgICAgICB9OiB0aGlzLmlzUmVtYWluaW5nQW1vdW50THRaZXJvID8geyBcbiAgICAgICAgICB0aXRsZTogJ1RoZXJlIGlzIGFuIFVuZGVyIHBheW1lbnQgb2YnLFxuICAgICAgICAgIHJlYXNvbjogJ1Byb3ZpZGUgYSByZWFzb24nLFxuICAgICAgICB9OiB7IFxuICAgICAgICAgIHRpdGxlOidBbW91bnQgbGVmdCB0byBiZSBhbGxvY2F0ZWQnLFxuICAgICAgICAgIHJlYXNvbjonJyxcbiAgICAgICAgfTtcbiAgICAgIHRoaXMuZmVlZGJhY2tVcmxMYWJlbCA9IHRoaXMuaXNSZW1haW5pbmdBbW91bnRHdFplcm8gPyAnQ09ORklSTUFMTE9DQVRJT05fU1VSUExVUycgOiB0aGlzLmlzUmVtYWluaW5nQW1vdW50THRaZXJvID8gJ0NPTkZJUk1BTExPQ0FUSU9OX1NIT1JURkFMTCcgOiAnQ09ORklSTUFMTE9DQVRJT04nO1xuICAgICAgdGhpcy5yZW1haW5pbmdBbW91bnQgPSAgdGhpcy5pc1JlbWFpbmluZ0Ftb3VudEd0WmVybyA/IHJlbWFpbmluZ1RvQmVBc3NpZ25lZCA6IHRoaXMuaXNSZW1haW5pbmdBbW91bnRMdFplcm8gPyByZW1haW5pbmdUb0JlQXNzaWduZWQgKiAtMSA6IDA7XG4gICAgICB0aGlzLmFmdGVyRmVlQWxsb2NhdGVPdXRzdGFuZGluZyA9IHJlbWFpbmluZ1RvQmVBc3NpZ25lZCA+PSAwID8gMCA6IChyZW1haW5pbmdUb0JlQXNzaWduZWQgKiAtMSk7XG4gICAgICB0aGlzLmFtb3VudEZvckFsbG9jYXRpb24gPSBHcm91cE91dHN0YW5kaW5nQW1vdW50ID49IHRoaXMudW5BbGxvY2F0ZWRQYXltZW50LmFtb3VudCA/IHRoaXMudW5BbGxvY2F0ZWRQYXltZW50LmFtb3VudCA6IEdyb3VwT3V0c3RhbmRpbmdBbW91bnQ7XG4gICAgICBpZih0aGlzLmlzVHVybk9mZil7XG4gICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICdhbGxvY2F0ZVBheW1lbnRDb25maXJtYXRpb24nO1x0XG4gICAgICB9XG4gICAgfVxuICB9XG4gICBnZXRVbmFzc2lnbmVkUGF5bWVudCgpIHtcbiAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UuZ2V0QlNQYXltZW50c0J5RENOKHRoaXMuYnNwYXltZW50ZGNuKS5zdWJzY3JpYmUoXG4gICAgICB1bmFzc2lnbmVkUGF5bWVudHMgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UoZmFsc2UsIGZhbHNlLCAnJyk7XG4gICAgICAgIHRoaXMudW5BbGxvY2F0ZWRQYXltZW50ID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10ucGF5bWVudHMuZmlsdGVyKHBheW1lbnQgPT4ge1xuICAgICAgICAgIHJldHVybiBwYXltZW50ICYmIHBheW1lbnQuZGNuX3JlZmVyZW5jZSA9PSB0aGlzLmJzcGF5bWVudGRjbjtcbiAgICAgICAgfSlbMF07XG4gICAgICAgIHRoaXMuc2l0ZUlEID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10ucmVzcG9uc2libGVfc2VydmljZV9pZDtcbiAgICAgICAgY29uc3QgYmVDY2ROdW1iZXIgPSB1bmFzc2lnbmVkUGF5bWVudHNbJ2RhdGEnXS5jY2RfcmVmZXJlbmNlLFxuICAgICAgICBiZUV4Y2VwdGlvbk51bWJlciA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLmV4Y2VwdGlvbl9yZWNvcmRfcmVmZXJlbmNlLFxuICAgICAgICBleGNlcHRpb25SZWZlcmVuY2UgPSBiZUNjZE51bWJlciA/IGJlQ2NkTnVtYmVyID09PSB0aGlzLmNjZENhc2VOdW1iZXIgPyBudWxsIDogdGhpcy5jY2RDYXNlTnVtYmVyIDogdGhpcy5jY2RDYXNlTnVtYmVyO1xuICAgICAgIHRoaXMuY2NkUmVmZXJlbmNlID0gYmVDY2ROdW1iZXIgPyBiZUNjZE51bWJlciA6IG51bGw7XG4gICAgICAgdGhpcy5leGNlcHRpb25SZWZlcmVuY2UgPSBiZUV4Y2VwdGlvbk51bWJlciA/IGJlRXhjZXB0aW9uTnVtYmVyIDogZXhjZXB0aW9uUmVmZXJlbmNlO1xuICAgICAgIHRoaXMuZ2V0UGF5bWVudEdyb3VwRGV0YWlscygpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCBmYWxzZSwgJycpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgc2VsZWN0UmFkaW9CdXR0b24oa2V5LCB0eXBlKSB7XG4gICAgdGhpcy5pc01vcmVEZXRhaWxzQm94SGlkZSA9IHRydWU7XG4gICAgaWYoIHR5cGUgPT09ICdleHBsYW5hdGlvbicgJiYga2V5ID09PSAnb3RoZXInICl7XG4gICAgICB0aGlzLmlzUGF5bWVudERldGFpbHNFbXB0eSA9IGZhbHNlO1xuICAgICAgdGhpcy5pc1BheW1lbnREZXRhaWxzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgdGhpcy5wYXltZW50RGV0YWlsc01pbkhhc0Vycm9yID0gZmFsc2U7XG4gICAgICB0aGlzLnBheW1lbnREZXRhaWxzTWF4SGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNNb3JlRGV0YWlsc0JveEhpZGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgT3JkZXJMaXN0U2VsZWN0RXZlbnQob3JkZXJlZjogYW55KXtcbiAgICB0aGlzLmlzQ29udGludWVCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMucmVjb3JkSWQ9IG9yZGVyZWY7XG4gIH1cblxuICByZWRpcmVjdFRvT3JkZXJGZWVTZWFyY2hQYWdlKCkge1xuICAgIC8vIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5ic3BheW1lbnRkY24gPSBudWxsO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50R3JvdXBSZWZlcmVuY2UgPSB0aGlzLnJlY29yZElkO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1R1cm5PZmYgPSB0aGlzLmlzVHVybk9mZjtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnZmVlLXN1bW1hcnknO1xufVxufVxuIl19
|
|
381
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGUtcGF5bWVudHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF5bWVudC1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FsbG9jYXRlLXBheW1lbnRzL2FsbG9jYXRlLXBheW1lbnRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNuRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUdsRixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUV2RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQVN0RSxNQUFNLE9BQU8seUJBQXlCO0lBdUZwQyxZQUNRLG1CQUF3QyxFQUN4Qyx1QkFBZ0QsRUFDaEQsV0FBd0IsRUFDeEIsa0JBQXNDLEVBQ3RDLG1CQUF3QyxFQUN4Qyx5QkFBb0QsRUFDcEQsaUJBQW9DO1FBTnBDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4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R0FBRyxhQUFhLENBQUM7SUFDdEQsQ0FBQzs7O1lBamFBLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQywydGNBQWlEOzthQUVsRDs7O1lBZFEsbUJBQW1CO1lBRnBCLHVCQUF1QjtZQUh0QixXQUFXO1lBRVgsa0JBQWtCO1lBRGxCLG1CQUFtQjtZQUdwQix5QkFBeUI7WUFPeEIsaUJBQWlCOzs7d0JBVXZCLEtBQUs7dUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQYXltZW50TGliQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGF5bWVudC1saWIuY29tcG9uZW50JztcbmltcG9ydCB7IFBheW1lbnRWaWV3U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BheW1lbnQtdmlldy9wYXltZW50LXZpZXcuc2VydmljZSc7XG5pbXBvcnQge0Nhc2VUcmFuc2FjdGlvbnNTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXNlLXRyYW5zYWN0aW9ucy9jYXNlLXRyYW5zYWN0aW9ucy5zZXJ2aWNlJzsgXG5pbXBvcnQge0J1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2J1bGstc2NhbmluZy1wYXltZW50L2J1bGstc2NhbmluZy1wYXltZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NoYXJlZC9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtJUGF5bWVudEdyb3VwfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQYXltZW50R3JvdXAnO1xuaW1wb3J0IHtJQlNQYXltZW50c30gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JQlNQYXltZW50cyc7XG5pbXBvcnQge0FsbG9jYXRlUGF5bWVudFJlcXVlc3R9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvQWxsb2NhdGVQYXltZW50UmVxdWVzdCc7XG5pbXBvcnQge0lBbGxvY2F0aW9uUGF5bWVudHNSZXF1ZXN0fSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lBbGxvY2F0aW9uUGF5bWVudHNSZXF1ZXN0JztcbmltcG9ydCB7IElPcmRlclJlZmVyZW5jZUZlZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSU9yZGVyUmVmZXJlbmNlRmVlJztcbmltcG9ydCB7IE9yZGVyc2xpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3JkZXJzbGlzdC5zZXJ2aWNlJztcblxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hbGxvY2F0ZS1wYXltZW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGxvY2F0ZS1wYXltZW50cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FsbG9jYXRlLXBheW1lbnRzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWxsb2NhdGVQYXltZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGlzVHVybk9mZjogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FzZVR5cGU6IHN0cmluZztcblxuICBvdmVyVW5kZXJQYXltZW50Rm9ybTogRm9ybUdyb3VwO1xuICB2aWV3U3RhdHVzOiBzdHJpbmc7XG4gIGNjZENhc2VOdW1iZXI6IHN0cmluZztcbiAgYnNwYXltZW50ZGNuOiBzdHJpbmc7XG4gIHJlY29yZElkOnN0cmluZztcbiAgZmVlZGJhY2tVcmxMYWJlbDpzdHJpbmc7XG4gIHVuQWxsb2NhdGVkUGF5bWVudDogSUJTUGF5bWVudHMgPSB7XG4gICAgYW1vdW50OiAwXG4gIH07XG4gIHNpdGVJRDogc3RyaW5nID0gbnVsbDtcbiAgZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSwgZmFsc2UsICcnKTtcbiAgcGF5bWVudEdyb3VwOiBJUGF5bWVudEdyb3VwO1xuICBwYXltZW50R3JvdXBzOiBJUGF5bWVudEdyb3VwW10gPSBbXTtcdFxuICByZW1haW5pbmdBbW91bnQ6IG51bWJlcjtcbiAgaXNSZW1haW5pbmdBbW91bnRHdFplcm86IGJvb2xlYW47XG4gIGlzTW9yZURldGFpbHNCb3hIaWRlOiBib29sZWFuICA9IHRydWU7XG4gIGlzUmVtYWluaW5nQW1vdW50THRaZXJvOiBib29sZWFuO1xuICBhZnRlckZlZUFsbG9jYXRlT3V0c3RhbmRpbmc6IG51bWJlcjtcbiAgYW1vdW50Rm9yQWxsb2NhdGlvbjogbnVtYmVyO1xuICBpc0NvbmZpcm1CdXR0b25kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0NvbnRpbnVlQnV0dG9uZGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBvdGhlclBheW1lbnRFeHBsYW5hdGlvbjogc3RyaW5nID0gbnVsbDtcbiAgc2VsZWN0ZWRPcHRpb246IHN0cmluZyA9IG51bGw7XG4gIGlzRmVlQW1vdW50WmVybzogYm9vbGVhbiA9IGZhbHNlO1x0XG5cbiAgcGF5bWVudFJlYXNvbkhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHBheW1lbnRFeHBsYW5hdGlvbkhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUGF5bWVudERldGFpbHNFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1BheW1lbnREZXRhaWxzSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwYXltZW50RGV0YWlsc01pbkhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHBheW1lbnREZXRhaWxzTWF4SGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNVc2VyTmFtZUVtcHR5OiBib29sZWFuID0gZmFsc2U7XG4gIGlzVXNlck5hbWVJbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gIGNjZFJlZmVyZW5jZTogc3RyaW5nID0gbnVsbDtcbiAgZXhjZXB0aW9uUmVmZXJlbmNlOiBzdHJpbmcgPSBudWxsO1xuICBwYXltZW50UmVhc29uOiBzdHJpbmcgPSBudWxsO1xuICBwYXltZW50RXhwbGFuYXRpb246IHN0cmluZyA9IG51bGw7XG4gIHVzZXJOYW1lOiBzdHJpbmcgPSBudWxsO1xuICBwYXltZW50U2VjdGlvbkxhYmVsOiBhbnk7XG4gIHBheW1lbnRSZWY6IHN0cmluZyA9IG51bGw7XG4gIGlzU3RyYXRlZ2ljRml4RW5hYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgb3JkZXJMZXZlbEZlZXM6IElPcmRlclJlZmVyZW5jZUZlZVtdID0gW107XG4gIGNvb2tpZVVzZXJOYW1lOiBzdHJpbmdbXSA9IFtdO1xuICBlbkNvb2tpZVVzZXJOYW1lOiBhbnk7XG4gIHVzZXJOYW1lRmllbGQ6IHN0cmluZyA9IG51bGw7XG5cbiAgcmVhc29uTGlzdDogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH09IHtcbiAgICBvdmVyUGF5bWVudDoge1xuICAgICAgaHdmUmV3YXJkOiAnSGVscCB3aXRoIEZlZXMgKEhXRikgYXdhcmRlZC4gIFBsZWFzZSBpbmNsdWRlIHRoZSBIV0YgcmVmZXJlbmNlIG51bWJlciBpbiB0aGUgZXhwbGFuYXRvcnkgbm90ZScsXG4gICAgICB3cm9uZ0ZlZTogJ0luY29ycmVjdCBwYXltZW50IHJlY2VpdmVkJyxcbiAgICAgIG5vdElzc3VlQ2FzZTogJ1VuYWJsZSB0byBpc3N1ZSBjYXNlJyxcbiAgICAgIG90aGVyRGVkdWN0aW9uOiAnT3RoZXInXG4gICAgfSxcbiAgICBzaG9ydEZhbGw6IHtcbiAgICAgIGhlbHBXaXRoRmVlOiAnSGVscCB3aXRoIEZlZXMgKEhXRikgYXBwbGljYXRpb24gZGVjbGluZWQnLFxuICAgICAgd3JvbmdGZWU6ICdJbmNvcnJlY3QgcGF5bWVudCByZWNlaXZlZCcsXG4gICAgICBvdGhlcjogJ090aGVyJ1xuICAgIH1cbiAgfVxuICBleHBsYW5hdGlvbkxpc3QgPSB7XG4gICAgb3ZlclBheW1lbnQ6IHtcbiAgICAgIHJlZmVyUmVmdW5kOiAnRGV0YWlscyBpbiBjYXNlIG5vdGVzLiAgUmVmdW5kIGR1ZScsXG4gICAgICBub1JlZnVuZDogJ0RldGFpbHMgaW4gY2FzZSBub3Rlcy4gTm8gcmVmdW5kIGR1ZScsXG4gICAgICBub0Nhc2U6ICdObyBjYXNlIGNyZWF0ZWQuICBSZWZ1bmQgZHVlJyxcbiAgICAgIG90aGVyOiAnT3RoZXInXG4gICAgfSxcbiAgICBzaG9ydEZhbGw6IHtcbiAgICAgIGhvbGRDYXNlOiAnSSBoYXZlIHB1dCBhIHN0b3Agb24gdGhlIGNhc2UgYW5kIGNvbnRhY3RlZCB0aGUgYXBwbGljYW50IHJlcXVlc3RpbmcgdGhlIGJhbGFuY2Ugb2YgcGF5bWVudCcsXG4gICAgICBoZWxkQ2FzZTogJ0kgaGF2ZSBwdXQgYSBzdG9wIG9uIHRoZSBjYXNlLiAgVGhlIGFwcGxpY2FudCBuZWVkcyB0byBiZSBjb250YWN0ZWQgdG8gcmVxdWVzdCB0aGUgYmFsYW5jZSBvZiBwYXltZW50JyxcbiAgICAgIG90aGVyOiAnT3RoZXInXG4gICAgfVxuICB9XG5cbiAgcmVmdW5kID0ge1xuICAgIHJlYXNvbjoge1xuICAgICAgZHVwbGljYXRlOiAnRHVwbGljYXRlIHBheW1lbnQnLFxuICAgICAgaHVtYW5lcnJvcjogJ0h1bWFuIGVycm9yJyxcbiAgICAgIGNhc2VXaXRoZHJhd246ICdDYXNlIHdpdGhkcmF3bicsXG4gICAgICBvdGhlcjogJ090aGVyJ1xuICAgIH1cbiAgfVxuXG5cbiAgY29uc3RydWN0b3IoXG4gIHByaXZhdGUgZXJyb3JIYW5kbGVyU2VydmljZTogRXJyb3JIYW5kbGVyU2VydmljZSxcbiAgcHJpdmF0ZSBjYXNlVHJhbnNhY3Rpb25zU2VydmljZTogQ2FzZVRyYW5zYWN0aW9uc1NlcnZpY2UsXG4gIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlLFxuICBwcml2YXRlIHBheW1lbnRMaWJDb21wb25lbnQ6IFBheW1lbnRMaWJDb21wb25lbnQsXG4gIHByaXZhdGUgYnVsa1NjYW5pbmdQYXltZW50U2VydmljZTogQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSxcbiAgcHJpdmF0ZSBPcmRlcnNsaXN0U2VydmljZTogT3JkZXJzbGlzdFNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdtYWluRm9ybSc7XG4gICAgaWYgKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50R3JvdXBSZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudmlld1N0YXR1cyA9ICdhbGxvY2F0ZVBheW1lbnRDb25maXJtYXRpb24nO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmNjZENhc2VOdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSO1xuICAgIHRoaXMuYnNwYXltZW50ZGNuID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmJzcGF5bWVudGRjbjtcbiAgICB0aGlzLnBheW1lbnRSZWYgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudEdyb3VwUmVmZXJlbmNlO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuU0VMRUNURURfT1BUSU9OO1xuICAgIHRoaXMuaXNTdHJhdGVnaWNGaXhFbmFibGUgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNTRkVOQUJMRTtcbiAgICB0aGlzLmlzVHVybk9mZiA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1R1cm5PZmY7XG4gICAgdGhpcy5vdmVyVW5kZXJQYXltZW50Rm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgbW9yZURldGFpbHM6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NSksXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXihbYS16QS1aMC05XFxcXHMsXFxcXC5dKikkJylcbiAgICAgIF0pKSxcbiAgICAgIHVzZXJOYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXihbYS16QS1aMC05XFxcXHNdKikkJylcbiAgICAgIF0pKSxcbiAgICB9KTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldE9yZGVyc0xpc3QoKS5zdWJzY3JpYmUoIChkYXRhKSA9PlxuICAgIHRoaXMub3JkZXJMZXZlbEZlZXMgPSBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEub3JkZXJTdGF0dXMgIT09ICdQYWlkJykpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0Q2FzZVR5cGUoKS5zdWJzY3JpYmUoIChkYXRhKSA9PiB0aGlzLmNhc2VUeXBlID0gZGF0YSk7XG4gICAgdGhpcy5nZXRVbmFzc2lnbmVkUGF5bWVudCgpO1xuICB9XG4gIGdldEdyb3VwT3V0c3RhbmRpbmdBbW91bnQocGF5bWVudEdyb3VwOiBJUGF5bWVudEdyb3VwKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLmNhbGN1bGF0ZU91dFN0YW5kaW5nQW1vdW50KHBheW1lbnRHcm91cCk7XG4gIH1cblxuICBnZXRQYXltZW50R3JvdXBEZXRhaWxzKCl7XG5cbiAgICBpZighdGhpcy5pc1R1cm5PZmYpe1xuICAgICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZ2V0UGF5bWVudEdyb3VwRGV0YWlscyh0aGlzLnBheW1lbnRSZWYpLnN1YnNjcmliZShcbiAgICAgICAgcGF5bWVudEdyb3VwID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UoZmFsc2UsIGZhbHNlLCAnJyk7XG4gICAgICAgICAgdGhpcy5wYXltZW50R3JvdXAgID0gcGF5bWVudEdyb3VwO1xuICAgICAgICAgIHRoaXMuc2F2ZUFuZENvbnRpbnVlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKHRydWUsIGZhbHNlLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfWVsc2Uge1xuICAgICAgdGhpcy5jYXNlVHJhbnNhY3Rpb25zU2VydmljZS5nZXRQYXltZW50R3JvdXBzKHRoaXMuY2NkQ2FzZU51bWJlcikuc3Vic2NyaWJlKFxuICAgICAgICBwYXltZW50R3JvdXBzID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UoZmFsc2UsIGZhbHNlLCAnJyk7XG4gICAgICAgIHRoaXMucGF5bWVudEdyb3VwcyA9IHBheW1lbnRHcm91cHNbJ3BheW1lbnRfZ3JvdXBzJ10uZmlsdGVyKHBheW1lbnRHcm91cCA9PiB7XG4gICAgICAgICAgICBwYXltZW50R3JvdXAuZmVlcy5mb3JFYWNoKGZlZSA9PiB7XG4gICAgICAgICAgICAgIGlmKGZlZS5jYWxjdWxhdGVkX2Ftb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNGZWVBbW91bnRaZXJvID0gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxldCBmc3RDb24gPSB0aGlzLmdldEdyb3VwT3V0c3RhbmRpbmdBbW91bnQoPElQYXltZW50R3JvdXA+cGF5bWVudEdyb3VwKSxcbiAgICAgICAgICAgIHNjbmRDbiA9IGZzdENvbiA+IDAgfHwgKGZzdENvbiA9PSAwICYmIHRoaXMuaXNGZWVBbW91bnRaZXJvKSAmJiBwYXltZW50R3JvdXAucGF5bWVudF9ncm91cF9yZWZlcmVuY2UgPT09IHRoaXMucGF5bWVudFJlZjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBheW1lbnRSZWYgPyAgc2NuZENuIDogZnN0Q29uID4gMCB8fCAoZnN0Q29uID09IDAgJiYgdGhpcy5pc0ZlZUFtb3VudFplcm8pO1xuICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UodHJ1ZSwgZmFsc2UsICcnKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgfVxuXG4gIHNlbGVjdGVkUGF5bWVudEdyb3VwKHBheW1lbnRHcm91cDogSVBheW1lbnRHcm91cCkge1x0XG4gICAgdGhpcy5pc0NvbnRpbnVlQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcdFxuICAgIHRoaXMucGF5bWVudEdyb3VwID0gcGF5bWVudEdyb3VwO1x0XG4gIH1cdFxuXG4gIGdvdG9DYXNldHJhbnNhdGlvblBhZ2UoKSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNUdXJuT2ZmID0gdGhpcy5pc1R1cm5PZmY7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHRydWU7XG4gIH1cblxuICBnb3RvU3VtbWFyeVBhZ2UoZXZlbnQ6IGFueSkgeyBcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdmZWUtc3VtbWFyeSc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzVHVybk9mZiA9IHRoaXMuaXNUdXJuT2ZmO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSB0cnVlO1xuICB9XG5cbiAgY2FuY2VsQWxsb2NhdGVQYXltZW50KGV2ZW50OiBhbnkpe1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdhbGwnKTtcbiAgICBpZighdGhpcy5pc1R1cm5PZmYpe1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2ZlZS1zdW1tYXJ5JztcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1R1cm5PZmYgPSB0aGlzLmlzVHVybk9mZjtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9IHRydWU7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlld1N0YXR1cyA9ICdtYWluRm9ybSc7XHRcbiAgICB9XG4gIH1cbiAgY29uZmlybUFsbG9jYXRlUGF5ZW1lbnQoKXtcbiAgICB0aGlzLmVuQ29va2llVXNlck5hbWUgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoXCI7XCIpLmZpbmQocm93ID0+IHJvdy5pbmNsdWRlcyhcInVzZXItaW5mb1wiKSkuc3BsaXQoXCI9XCIpWzFdLnNwbGl0KFwiO1wiKTtcbiAgICB0aGlzLmNvb2tpZVVzZXJOYW1lID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQodGhpcy5lbkNvb2tpZVVzZXJOYW1lKSk7XG4gICAgXG4gICAgY29uc3QgZnVsbE5hbWUgPSB0aGlzLmNvb2tpZVVzZXJOYW1lWydmb3JlbmFtZSddICsgJyAnICsgdGhpcy5jb29raWVVc2VyTmFtZVsnc3VybmFtZSddO1xuXG4gICAgY29uc3QgcGF5bWVudERldGFpbHNGaWVsZCA9IHRoaXMub3ZlclVuZGVyUGF5bWVudEZvcm0uY29udHJvbHMubW9yZURldGFpbHMsXG4gICAgICBwYXltZW50Rm9ybUVycm9yID0gdGhpcy5vdmVyVW5kZXJQYXltZW50Rm9ybS5jb250cm9scy5tb3JlRGV0YWlscy5lcnJvcnMsXG4gICAgICB1c2VyTmFtZUZpZWxkID0gZnVsbE5hbWUsXG4gICAgICBpc0VtcHR5Q29uZHRpb24gPSB0aGlzLnBheW1lbnRSZWFzb24gJiYgdGhpcy5wYXltZW50RXhwbGFuYXRpb24sXG4gICAgICBpc090aGVyT3B0aW9uU2VsZWN0ZWQgPSB0aGlzLnBheW1lbnRFeHBsYW5hdGlvbiA9PT0gJ090aGVyJztcblxuICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2VdLCAnYWxsJyk7XG4gICAgaWYgKCAoIXRoaXMuaXNSZW1haW5pbmdBbW91bnRHdFplcm8gJiYgIXRoaXMuaXNSZW1haW5pbmdBbW91bnRMdFplcm8pIHx8IGlzRW1wdHlDb25kdGlvbiAmJiAoIWlzT3RoZXJPcHRpb25TZWxlY3RlZCAmJiB1c2VyTmFtZUZpZWxkLmxlbmd0aCA+IDAgfHwgaXNPdGhlck9wdGlvblNlbGVjdGVkICYmIHVzZXJOYW1lRmllbGQubGVuZ3RoID4gMCAmJiBwYXltZW50RGV0YWlsc0ZpZWxkLnZhbGlkKSkge1xuICAgICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLm90aGVyUGF5bWVudEV4cGxhbmF0aW9uID0gdGhpcy5wYXltZW50RXhwbGFuYXRpb24gPT09ICdPdGhlcicgPyBwYXltZW50RGV0YWlsc0ZpZWxkLnZhbHVlIDogdGhpcy5wYXltZW50RXhwbGFuYXRpb247XG4gICAgICB0aGlzLnVzZXJOYW1lID0gdXNlck5hbWVGaWVsZDtcbiAgICAgIHRoaXMuZmluYWxTZXJ2aWNlQ2FsbCgpO1xuICAgIH1lbHNlIHtcbiAgICAgIGlmKCF0aGlzLnBheW1lbnRSZWFzb24pIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oW3RydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ3JlYXNvbicpO1xuICAgICAgfVxuICAgICAgaWYoIXRoaXMucGF5bWVudEV4cGxhbmF0aW9uKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdleHBsYW5hdGlvbicpO1xuICAgICAgfVxuICAgICAgaWYodGhpcy5wYXltZW50RXhwbGFuYXRpb24gJiYgaXNPdGhlck9wdGlvblNlbGVjdGVkKSB7XG4gICAgICAgIGlmKHBheW1lbnREZXRhaWxzRmllbGQudmFsdWUgPT0gJycgKSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ290aGVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYocGF5bWVudERldGFpbHNGaWVsZC52YWx1ZSAhPSAnJyAmJiBwYXltZW50RGV0YWlsc0ZpZWxkLmludmFsaWQgKSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ290aGVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYocGF5bWVudEZvcm1FcnJvciAmJiBwYXltZW50Rm9ybUVycm9yLm1pbmxlbmd0aCAmJiBwYXltZW50Rm9ybUVycm9yLm1pbmxlbmd0aC5hY3R1YWxMZW5ndGggPCAzICkge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdvdGhlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmKHBheW1lbnRGb3JtRXJyb3IgJiYgcGF5bWVudEZvcm1FcnJvci5tYXhsZW5ndGggJiYgcGF5bWVudEZvcm1FcnJvci5tYXhsZW5ndGguYWN0dWFsTGVuZ3RoID4gMjU1ICkge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZV0sICdvdGhlcicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZih1c2VyTmFtZUZpZWxkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2VdLCAndXNlcm5hbWUnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmVzZXRGb3JtKHZhbHMsIGZpZWxkKSB7XG4gICAgaWYoZmllbGQ9PT0ncmVhc29uJyB8fCBmaWVsZD09PSdhbGwnKSB7XG4gICAgICB0aGlzLnBheW1lbnRSZWFzb25IYXNFcnJvciA9IHZhbHNbMF07XG4gICAgfVxuICAgIGlmKGZpZWxkPT09J2V4cGxhbmF0aW9uJyB8fCBmaWVsZD09PSdhbGwnKSB7XG4gICAgICB0aGlzLnBheW1lbnRFeHBsYW5hdGlvbkhhc0Vycm9yID0gdmFsc1sxXTtcbiAgICB9XG4gICAgaWYoZmllbGQ9PT0nb3RoZXInIHx8IGZpZWxkPT09J2FsbCcpIHtcbiAgICAgIHRoaXMuaXNQYXltZW50RGV0YWlsc0VtcHR5ID0gdmFsc1syXTtcbiAgICAgIHRoaXMuaXNQYXltZW50RGV0YWlsc0ludmFsaWQgPSB2YWxzWzNdO1xuICAgICAgdGhpcy5wYXltZW50RGV0YWlsc01pbkhhc0Vycm9yID0gdmFsc1s0XTtcbiAgICAgIHRoaXMucGF5bWVudERldGFpbHNNYXhIYXNFcnJvciA9IHZhbHNbNV07XG4gICAgfVxuICAgIGlmKGZpZWxkPT09J3VzZXJuYW1lJyB8fCBmaWVsZD09PSdhbGwnKSB7XG4gICAgICB0aGlzLmlzVXNlck5hbWVFbXB0eSA9IHZhbHNbNl07XG4gICAgICB0aGlzLmlzVXNlck5hbWVJbnZhbGlkID0gdmFsc1s3XTtcbiAgICB9XG4gIH1cbiAgZmluYWxTZXJ2aWNlQ2FsbCgpIHtcbiAgICBpZighdGhpcy5pc1N0cmF0ZWdpY0ZpeEVuYWJsZSkge1xuICAgICAgbGV0IGFsbG9jYXRlZFJlcXVlc3QgPSB7XG4gICAgICAgIHJlYXNvbjogdGhpcy5wYXltZW50UmVhc29uLFxuICAgICAgICBhbGxvY2F0aW9uX3N0YXR1czonQWxsb2NhdGVkJyxcbiAgICAgICAgZXhwbGFuYXRpb246IHRoaXMub3RoZXJQYXltZW50RXhwbGFuYXRpb24sXG4gICAgICAgIHBheW1lbnRfYWxsb2NhdGlvbl9zdGF0dXM6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgbmFtZTogJ0FsbG9jYXRlZCdcbiAgICAgICAgfSxcbiAgICAgICAgcGF5bWVudF9ncm91cF9yZWZlcmVuY2U6IHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRfZ3JvdXBfcmVmZXJlbmNlLFxuICAgICAgICBjYXNlX3R5cGU6IHRoaXMuY2FzZVR5cGUsXG4gICAgICAgIHVzZXJfbmFtZTogdGhpcy51c2VyTmFtZVxuICAgICAgfVxuICAgICAgY29uc3QgcG9zdFN0cmF0ZWdpY0JvZHkgPSBuZXcgQWxsb2NhdGVQYXltZW50UmVxdWVzdFxuICAgICAgKHRoaXMuY2NkUmVmZXJlbmNlLCB0aGlzLnVuQWxsb2NhdGVkUGF5bWVudCwgdGhpcy5jYXNlVHlwZSwgdGhpcy5leGNlcHRpb25SZWZlcmVuY2UsIGFsbG9jYXRlZFJlcXVlc3QpO1xuICAgICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLnBvc3RCU1BheW1lbnRTdHJhdGVnaWMocG9zdFN0cmF0ZWdpY0JvZHkgLCB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50X2dyb3VwX3JlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSwgZmFsc2UsICcnKTtcbiAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBKU09OLnBhcnNlKHJlcyk7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgdGhpcy5nb3RvQ2FzZXRyYW5zYXRpb25QYWdlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCBmYWxzZSwgJycpO1xuICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgfSBlbHNlIHtcbiAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucGF0Y2hCU0NoYW5nZVN0YXR1cyh0aGlzLnVuQWxsb2NhdGVkUGF5bWVudC5kY25fcmVmZXJlbmNlLCAnUFJPQ0VTU0VEJykuc3Vic2NyaWJlKFxuICAgICAgcmVzMSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSwgZmFsc2UsICcnKTtcbiAgICAgICAgbGV0IHJlc3BvbnNlMSA9IEpTT04ucGFyc2UocmVzMSk7XG4gICAgICAgIGlmIChyZXNwb25zZTEuc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0gbmV3IEFsbG9jYXRlUGF5bWVudFJlcXVlc3RcbiAgICAgICAgICAodGhpcy5jY2RSZWZlcmVuY2UsIHRoaXMudW5BbGxvY2F0ZWRQYXltZW50LCB0aGlzLnNpdGVJRCwgdGhpcy5leGNlcHRpb25SZWZlcmVuY2UpO1xuICAgICAgICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5wb3N0QlNBbGxvY2F0ZVBheW1lbnQocmVxdWVzdEJvZHksIHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRfZ3JvdXBfcmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICByZXMyID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlLCBmYWxzZSwgJycpO1xuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UyID0gSlNPTi5wYXJzZShyZXMyKTtcbiAgICAgICAgICAgICAgY29uc3QgcmVxQm9keSA9IG5ldyBJQWxsb2NhdGlvblBheW1lbnRzUmVxdWVzdFxuICAgICAgICAgICAgICAocmVzcG9uc2UyWydkYXRhJ10ucGF5bWVudF9ncm91cF9yZWZlcmVuY2UsIHJlc3BvbnNlMlsnZGF0YSddLnJlZmVyZW5jZSwgdGhpcy5wYXltZW50UmVhc29uLCB0aGlzLm90aGVyUGF5bWVudEV4cGxhbmF0aW9uLCB0aGlzLnVzZXJOYW1lKTtcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlMi5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UucG9zdEJTQWxsb2NhdGlvblBheW1lbnRzKHJlcUJvZHkpLnN1YnNjcmliZShcbiAgXG4gICAgICAgICAgICAgICAgcmVzMyA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UoZmFsc2UsIGZhbHNlLCAnJyk7XG4gICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UzID0gSlNPTi5wYXJzZShyZXMzKTtcbiAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZTMuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgIHRoaXMuZ290b0Nhc2V0cmFuc2F0aW9uUGFnZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5wYXRjaEJTQ2hhbmdlU3RhdHVzKHRoaXMudW5BbGxvY2F0ZWRQYXltZW50LmRjbl9yZWZlcmVuY2UsICdDT01QTEVURScpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKHRydWUsIGZhbHNlLCAnJyk7XG4gICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucGF0Y2hCU0NoYW5nZVN0YXR1cyh0aGlzLnVuQWxsb2NhdGVkUGF5bWVudC5kY25fcmVmZXJlbmNlLCAnQ09NUExFVEUnKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKHRydWUsIGZhbHNlLCAnJyk7XG4gICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKHRydWUsIGZhbHNlLCAnJyk7XG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7ICBcbiAgfVxuICB9XG5cbiAgc2F2ZUFuZENvbnRpbnVlKCl7XG4gICAgaWYodGhpcy5wYXltZW50R3JvdXApIHtcbiAgICAgIHRoaXMuaXNNb3JlRGV0YWlsc0JveEhpZGUgPSB0cnVlO1xuICAgICAgdGhpcy5vdmVyVW5kZXJQYXltZW50Rm9ybS5nZXQoJ21vcmVEZXRhaWxzJykucmVzZXQoKTtcbiAgICAgIHRoaXMub3ZlclVuZGVyUGF5bWVudEZvcm0uZ2V0KCdtb3JlRGV0YWlscycpLnNldFZhbHVlKCcnKTtcbiAgICAgIHRoaXMub3ZlclVuZGVyUGF5bWVudEZvcm0uZ2V0KCd1c2VyTmFtZScpLnJlc2V0KCk7XG4gICAgICB0aGlzLm92ZXJVbmRlclBheW1lbnRGb3JtLmdldCgndXNlck5hbWUnKS5zZXRWYWx1ZSgnJyk7XG4gICAgICB0aGlzLnBheW1lbnRSZWFzb24gPSAnJztcbiAgICAgIHRoaXMucGF5bWVudEV4cGxhbmF0aW9uID0gJyc7XG4gICAgICBsZXQgR3JvdXBPdXRzdGFuZGluZ0Ftb3VudCA9IHRoaXMuZ2V0R3JvdXBPdXRzdGFuZGluZ0Ftb3VudCh0aGlzLnBheW1lbnRHcm91cCk7XG4gICAgICBjb25zdCByZW1haW5pbmdUb0JlQXNzaWduZWQgPSB0aGlzLnVuQWxsb2NhdGVkUGF5bWVudC5hbW91bnQgLSBHcm91cE91dHN0YW5kaW5nQW1vdW50O1xuICAgICAgdGhpcy5pc1JlbWFpbmluZ0Ftb3VudEd0WmVybyA9IHJlbWFpbmluZ1RvQmVBc3NpZ25lZCA+IDA7XG4gICAgICB0aGlzLmlzUmVtYWluaW5nQW1vdW50THRaZXJvID0gcmVtYWluaW5nVG9CZUFzc2lnbmVkIDwgMDtcbiAgICAgIHRoaXMucGF5bWVudFNlY3Rpb25MYWJlbCA9IHRoaXMuaXNSZW1haW5pbmdBbW91bnRHdFplcm8gPyB7IFxuICAgICAgICAgIHRpdGxlOiAnVGhlcmUgaXMgYW4gT3ZlciBwYXltZW50IG9mJyxcbiAgICAgICAgICByZWFzb246ICdQcm92aWRlIGEgcmVhc29uLiBUaGlzIHdpbGwgYmUgdXNlZCBpbiB0aGUgUmVmdW5kIHByb2Nlc3MuJyxcbiAgICAgICAgfTogdGhpcy5pc1JlbWFpbmluZ0Ftb3VudEx0WmVybyA/IHsgXG4gICAgICAgICAgdGl0bGU6ICdUaGVyZSBpcyBhbiBVbmRlciBwYXltZW50IG9mJyxcbiAgICAgICAgICByZWFzb246ICdQcm92aWRlIGEgcmVhc29uJyxcbiAgICAgICAgfTogeyBcbiAgICAgICAgICB0aXRsZTonQW1vdW50IGxlZnQgdG8gYmUgYWxsb2NhdGVkJyxcbiAgICAgICAgICByZWFzb246JycsXG4gICAgICAgIH07XG4gICAgICB0aGlzLmZlZWRiYWNrVXJsTGFiZWwgPSB0aGlzLmlzUmVtYWluaW5nQW1vdW50R3RaZXJvID8gJ0NPTkZJUk1BTExPQ0FUSU9OX1NVUlBMVVMnIDogdGhpcy5pc1JlbWFpbmluZ0Ftb3VudEx0WmVybyA/ICdDT05GSVJNQUxMT0NBVElPTl9TSE9SVEZBTEwnIDogJ0NPTkZJUk1BTExPQ0FUSU9OJztcbiAgICAgIHRoaXMucmVtYWluaW5nQW1vdW50ID0gIHRoaXMuaXNSZW1haW5pbmdBbW91bnRHdFplcm8gPyByZW1haW5pbmdUb0JlQXNzaWduZWQgOiB0aGlzLmlzUmVtYWluaW5nQW1vdW50THRaZXJvID8gcmVtYWluaW5nVG9CZUFzc2lnbmVkICogLTEgOiAwO1xuICAgICAgdGhpcy5hZnRlckZlZUFsbG9jYXRlT3V0c3RhbmRpbmcgPSByZW1haW5pbmdUb0JlQXNzaWduZWQgPj0gMCA/IDAgOiAocmVtYWluaW5nVG9CZUFzc2lnbmVkICogLTEpO1xuICAgICAgdGhpcy5hbW91bnRGb3JBbGxvY2F0aW9uID0gR3JvdXBPdXRzdGFuZGluZ0Ftb3VudCA+PSB0aGlzLnVuQWxsb2NhdGVkUGF5bWVudC5hbW91bnQgPyB0aGlzLnVuQWxsb2NhdGVkUGF5bWVudC5hbW91bnQgOiBHcm91cE91dHN0YW5kaW5nQW1vdW50O1xuICAgICAgaWYodGhpcy5pc1R1cm5PZmYpe1xuICAgICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnYWxsb2NhdGVQYXltZW50Q29uZmlybWF0aW9uJztcdFxuICAgICAgfVxuICAgIH1cbiAgfVxuICAgZ2V0VW5hc3NpZ25lZFBheW1lbnQoKSB7XG4gICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLmdldEJTUGF5bWVudHNCeURDTih0aGlzLmJzcGF5bWVudGRjbikuc3Vic2NyaWJlKFxuICAgICAgdW5hc3NpZ25lZFBheW1lbnRzID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlLCBmYWxzZSwgJycpO1xuICAgICAgICB0aGlzLnVuQWxsb2NhdGVkUGF5bWVudCA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnBheW1lbnRzLmZpbHRlcihwYXltZW50ID0+IHtcbiAgICAgICAgICByZXR1cm4gcGF5bWVudCAmJiBwYXltZW50LmRjbl9yZWZlcmVuY2UgPT0gdGhpcy5ic3BheW1lbnRkY247XG4gICAgICAgIH0pWzBdO1xuICAgICAgICB0aGlzLnNpdGVJRCA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnJlc3BvbnNpYmxlX3NlcnZpY2VfaWQ7XG4gICAgICAgIGNvbnN0IGJlQ2NkTnVtYmVyID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10uY2NkX3JlZmVyZW5jZSxcbiAgICAgICAgYmVFeGNlcHRpb25OdW1iZXIgPSB1bmFzc2lnbmVkUGF5bWVudHNbJ2RhdGEnXS5leGNlcHRpb25fcmVjb3JkX3JlZmVyZW5jZSxcbiAgICAgICAgZXhjZXB0aW9uUmVmZXJlbmNlID0gYmVDY2ROdW1iZXIgPyBiZUNjZE51bWJlciA9PT0gdGhpcy5jY2RDYXNlTnVtYmVyID8gbnVsbCA6IHRoaXMuY2NkQ2FzZU51bWJlciA6IHRoaXMuY2NkQ2FzZU51bWJlcjtcbiAgICAgICB0aGlzLmNjZFJlZmVyZW5jZSA9IGJlQ2NkTnVtYmVyID8gYmVDY2ROdW1iZXIgOiBudWxsO1xuICAgICAgIHRoaXMuZXhjZXB0aW9uUmVmZXJlbmNlID0gYmVFeGNlcHRpb25OdW1iZXIgPyBiZUV4Y2VwdGlvbk51bWJlciA6IGV4Y2VwdGlvblJlZmVyZW5jZTtcbiAgICAgICB0aGlzLmdldFBheW1lbnRHcm91cERldGFpbHMoKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UodHJ1ZSwgZmFsc2UsICcnKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG4gIHNlbGVjdFJhZGlvQnV0dG9uKGtleSwgdHlwZSkge1xuICAgIHRoaXMuaXNNb3JlRGV0YWlsc0JveEhpZGUgPSB0cnVlO1xuICAgIGlmKCB0eXBlID09PSAnZXhwbGFuYXRpb24nICYmIGtleSA9PT0gJ290aGVyJyApe1xuICAgICAgdGhpcy5pc1BheW1lbnREZXRhaWxzRW1wdHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNQYXltZW50RGV0YWlsc0ludmFsaWQgPSBmYWxzZTtcbiAgICAgIHRoaXMucGF5bWVudERldGFpbHNNaW5IYXNFcnJvciA9IGZhbHNlO1xuICAgICAgdGhpcy5wYXltZW50RGV0YWlsc01heEhhc0Vycm9yID0gZmFsc2U7XG4gICAgICB0aGlzLmlzTW9yZURldGFpbHNCb3hIaWRlID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIE9yZGVyTGlzdFNlbGVjdEV2ZW50KG9yZGVyZWY6IGFueSl7XG4gICAgdGhpcy5pc0NvbnRpbnVlQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlY29yZElkPSBvcmRlcmVmO1xuICB9XG5cbiAgcmVkaXJlY3RUb09yZGVyRmVlU2VhcmNoUGFnZSgpIHtcbiAgICAvLyB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuYnNwYXltZW50ZGNuID0gbnVsbDtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudEdyb3VwUmVmZXJlbmNlID0gdGhpcy5yZWNvcmRJZDtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNUdXJuT2ZmID0gdGhpcy5pc1R1cm5PZmY7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2ZlZS1zdW1tYXJ5Jztcbn1cbn1cbiJdfQ==
|