@xsolla/payment-client-core 0.2.37 → 0.2.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/esm2022/lib/core/payment/config/config.service.mjs +1 -1
  2. package/esm2022/lib/core/payment/credit-card-payment-methods-id.variable.mjs +2 -1
  3. package/esm2022/lib/core/payment/field-names.enum.mjs +2 -1
  4. package/esm2022/lib/core/payment/form/converters/card-expiration/card-expiration.converter.mjs +39 -0
  5. package/esm2022/lib/core/payment/form/converters/converter.abstract.mjs +4 -1
  6. package/esm2022/lib/core/payment/form/converters/converters-map.mjs +3 -1
  7. package/esm2022/lib/core/payment/form/form.module.mjs +4 -1
  8. package/esm2022/lib/core/payment/form/validators/card-expiration-date-validator/card-expiration-date.validator.mjs +61 -0
  9. package/esm2022/lib/core/payment/initialize/initialize.service.mjs +8 -4
  10. package/esm2022/lib/core/payment/payment-configuration.interface.mjs +2 -0
  11. package/esm2022/lib/core/payment/payment-settings/payment-settings-request-params.interface.mjs +2 -0
  12. package/esm2022/lib/core/payment/payment-settings/payment-settings.service.mjs +20 -0
  13. package/esm2022/lib/core/payment/payment.service.mjs +6 -6
  14. package/esm2022/lib/core/payment/submit/request/submit-request.class.mjs +15 -3
  15. package/esm2022/lib/core/payment/submit/submit.service.mjs +9 -5
  16. package/esm2022/lib/core/payment/sync/request/sync-request.class.mjs +6 -5
  17. package/esm2022/lib/core/payment/sync/sync.service.mjs +12 -5
  18. package/esm2022/lib/core/payment/xps-api-part-request.abstract.mjs +6 -1
  19. package/esm2022/lib/core-library.service.mjs +1 -1
  20. package/fesm2022/xsolla-payment-client-core.mjs +188 -40
  21. package/fesm2022/xsolla-payment-client-core.mjs.map +1 -1
  22. package/lib/core/payment/config/config.service.d.ts +2 -2
  23. package/lib/core/payment/credit-card-payment-methods-id.variable.d.ts +1 -1
  24. package/lib/core/payment/field-names.enum.d.ts +1 -0
  25. package/lib/core/payment/form/converters/card-expiration/card-expiration.converter.d.ts +17 -0
  26. package/lib/core/payment/form/validators/card-expiration-date-validator/card-expiration-date.validator.d.ts +10 -0
  27. package/lib/core/payment/initialize/initialize.service.d.ts +5 -3
  28. package/lib/core/payment/payment-configuration.interface.d.ts +22 -0
  29. package/lib/core/payment/payment-settings/payment-settings-request-params.interface.d.ts +4 -0
  30. package/lib/core/payment/payment-settings/payment-settings.service.d.ts +8 -0
  31. package/lib/core/payment/payment.service.d.ts +2 -2
  32. package/lib/core/payment/submit/request/submit-request.class.d.ts +1 -0
  33. package/lib/core/payment/submit/submit.service.d.ts +5 -2
  34. package/lib/core/payment/sync/request/sync-request.class.d.ts +2 -1
  35. package/lib/core/payment/sync/sync.service.d.ts +6 -2
  36. package/lib/core/payment/xps-api-part-request.abstract.d.ts +4 -1
  37. package/lib/core-library.service.d.ts +2 -2
  38. package/package.json +1 -1
  39. package/xsolla-payment-client-core-0.2.39.tgz +0 -0
  40. package/esm2022/lib/core/payment/payment-config.interface.mjs +0 -2
  41. package/lib/core/payment/payment-config.interface.d.ts +0 -8
  42. package/xsolla-payment-client-core-0.2.37.tgz +0 -0
@@ -160,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
160
160
  providedIn: 'root',
161
161
  }]
162
162
  }], ctorParameters: () => [{ type: i1.SettingsService }, { type: i2.CountryService }, { type: i3.PaymentMethodsService }, { type: i4.SavedMethodsService }, { type: i5.UserBalanceService }, { type: i6.PaymentConfigService }, { type: i7.PaymentService }, { type: i8.DeviceFingerPrintService }, { type: i9.FinanceDetailsService }, { type: i10.LegalService }, { type: i11.StatusService }, { type: i12.NextActionService }, { type: i13.CreditCardService }, { type: i14.CreditCardStateService }, { type: i15.FormMessagesService }, { type: i16.EditSavedMethodsService }, { type: i17.UserBehaviourAnalyticsService }, { type: i18.PerformanceService }, { type: i19.CombinedPaymentMethodsService }, { type: i20.CountriesApiService }, { type: i21.SendInstructionService }] });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1saWJyYXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS1saWJyYXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1RDNDLE1BQU0sT0FBTyxrQkFBa0I7SUFzQjdCLFlBQ21CLGVBQWdDLEVBQ2hDLGNBQThCLEVBQzlCLHFCQUE0QyxFQUM1QyxtQkFBd0MsRUFDeEMsa0JBQXNDLEVBQ3RDLG9CQUEwQyxFQUMxQyxjQUE4QixFQUM5Qix3QkFBa0QsRUFDbEQscUJBQTRDLEVBQzVDLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGlCQUFvQyxFQUNwQyxpQkFBb0MsRUFDcEMsc0JBQThDLEVBQzlDLG1CQUF3QyxFQUN4Qyx1QkFBZ0QsRUFDaEQsNkJBQTRELEVBQzVELGtCQUFzQyxFQUN0Qyw2QkFBNEQsRUFDNUQsbUJBQXdDLEVBQ3hDLHNCQUE4QztRQXBCOUMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNw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QUFjLENBQUMsaUJBQWlCLENBQUM7SUFDL0MsQ0FBQzs4R0FwTFUsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEluaXRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9jb3JlL3NldHRpbmdzL2NvbmZpZ3VyYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vY29yZS9zZXR0aW5ncy9zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENvdW50cnlTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL2NvdW50cnkvY291bnRyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFBheW1lbnRNZXRob2RzU2VydmljZSB9IGZyb20gJy4vY29yZS9wYXltZW50LW1ldGhvZHMvcGF5bWVudC1tZXRob2RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGF5bWVudE1ldGhvZCB9IGZyb20gJy4vY29yZS9wYXltZW50LW1ldGhvZHMvcGF5bWVudC1tZXRob2QuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNhdmVkTWV0aG9kc1NlcnZpY2UgfSBmcm9tICcuL2NvcmUvc2F2ZWQtbWV0aG9kcy9zYXZlZC1tZXRob2RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRNZXRob2QgfSBmcm9tICcuL2NvcmUvc2F2ZWQtbWV0aG9kcy9zYXZlZC1tZXRob2QuaW50ZXJmYWNlJztcbmltcG9ydCB7IFVzZXJCYWxhbmNlUmVzcG9uc2UgfSBmcm9tICcuL2NvcmUvdXNlci1iYWxhbmNlL3VzZXItYmFsYW5jZS1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBVc2VyQmFsYW5jZVNlcnZpY2UgfSBmcm9tICcuL2NvcmUvdXNlci1iYWxhbmNlL3VzZXItYmFsYW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBheW1lbnRDb25maWcgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9wYXltZW50LWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGF5bWVudFNlcnZpY2UgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9wYXltZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGF5bWVudCB9IGZyb20gJy4vY29yZS9wYXltZW50L3BheW1lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IERldmljZUZpbmdlclByaW50U2VydmljZSB9IGZyb20gJy4vY29yZS9kZXZpY2UtZmluZ2VyLXByaW50L2RldmljZS1maW5nZXItcHJpbnQuc2VydmljZSc7XG5pbXBvcnQgeyBMZWdhbFNlcnZpY2UgfSBmcm9tICcuL2NvcmUvbGVnYWwvbGVnYWwuc2VydmljZSc7XG5pbXBvcnQgeyBMZWdhbENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4vY29yZS9sZWdhbC9sZWdhbC5jb21wb25lbnQuY29uZmlnJztcbmltcG9ydCB7IE5leHRBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvYWN0aW9ucy9uZXh0LWFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbmFuY2VEZXRhaWxzU2VydmljZSB9IGZyb20gJy4vY29yZS9wYXltZW50L2ZpbmFuY2UtZGV0YWlscy9maW5hbmNlLWRldGFpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBQYXltZW50Q29uZmlnU2VydmljZSB9IGZyb20gJy4vY29yZS9wYXltZW50L2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9zdGF0dXMvc3RhdHVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvc3RhdHVzL3N0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IENyZWRpdENhcmRTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL2NyZWRpdC1jYXJkL2NyZWRpdC1jYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlZGl0Q2FyZFR5cGVzIH0gZnJvbSAnLi9jb3JlL2NyZWRpdC1jYXJkL2NyZWRpdC1jYXJkLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgQ3JlZGl0Q2FyZCB9IGZyb20gJy4vY29yZS9jcmVkaXQtY2FyZC9jcmVkaXQtY2FyZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW5wdXRFdmVudE5hbWUgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9mb3JtL2lucHV0LWV2ZW50LmVudW0nO1xuaW1wb3J0IHsgQ3JlZGl0Q2FyZFN0YXRlU2VydmljZSB9IGZyb20gJy4vY29yZS9wYXltZW50L2NyZWRpdC1jYXJkLXN0YXRlL2NyZWRpdC1jYXJkLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ3JlZGl0Q2FyZFN0YXRlIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvY3JlZGl0LWNhcmQtc3RhdGUvY3JlZGl0LWNhcmQtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4vY29yZS9wYXltZW50L2Zvcm0vZm9ybS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmluYW5jZURldGFpbHMgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9maW5hbmNlLWRldGFpbHMvZmluYW5jZS1kZXRhaWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOZXh0QWN0aW9uIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvYWN0aW9ucy9uZXh0LWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFsYW5jZSB9IGZyb20gJy4vY29yZS9zZXR0aW5ncy9iYWxhbmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvZm9ybS1tZXNzYWdlcy9mb3JtLW1lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRpdFNhdmVkTWV0aG9kc1NlcnZpY2UgfSBmcm9tICcuL2NvcmUvZWRpdC1zYXZlZC1tZXRob2RzL2VkaXQtc2F2ZWQtbWV0aG9kcy5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1Db250cm9sU3RhdHVzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2RrUGF5bWVudFN5c3RlbXMgfSBmcm9tICcuL2NvcmUvc2RrLXBheW1lbnQtc3lzdGVtcy9zZGstcGF5bWVudC1zeXN0ZW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtUmVzcG9uc2UgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9mb3JtLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBVc2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4vY29yZS91c2VyLWJlaGF2aW91ci1hbmFseXRpY3MvdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdXNlckJlaGF2aW91ckV2ZW50VHlwZXMgfSBmcm9tICcuL2NvcmUvdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzL3VzZXItYmVoYXZpb3VyLWV2ZW50L3VzZXItYmVoYXZpb3VyLWV2ZW50LXR5cGVzJztcbmltcG9ydCB7IFNlbmRFdmVudE1ldGhvZE9wdGlvbnNJbnRlcmZhY2UgfSBmcm9tICcuL2NvcmUvdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzL3VzZXItYmVoYXZpb3VyLWFuYWx5dGljcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGVyZm9ybWFuY2VTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmllbGROYW1lcyB9IGZyb20gJy4vY29yZS9wYXltZW50L2ZpZWxkLW5hbWVzLmVudW0nO1xuaW1wb3J0IHsgQ29tYmluZWRQYXltZW50TWV0aG9kcyB9IGZyb20gJy4vY29yZS9jb21iaW5lZC1wYXltZW50LW1ldGhvZHMvY29tYmluZWQtcGF5bWVudC1tZXRob2RzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21iaW5lZFBheW1lbnRNZXRob2RzU2VydmljZSB9IGZyb20gJy4vY29yZS9jb21iaW5lZC1wYXltZW50LW1ldGhvZHMvY29tYmluZWQtcGF5bWVudC1tZXRob2RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ291bnRyaWVzQXBpU2VydmljZSB9IGZyb20gJy4vY29yZS9jb3VudHJpZXMtYXBpL2NvdW50cmllcy1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBDb3VudHJ5UmVzcG9uc2UgfSBmcm9tICcuL2NvcmUvY291bnRyaWVzLWFwaS9jb3VudHJ5LXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDYXNoUGF5bWVudERhdGEgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9jYXNoLXBheW1lbnQtZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VuZEluc3RydWN0aW9uU2VydmljZSB9IGZyb20gJy4vY29yZS94c29sbGEtbnVtYmVyL2FwaS9zZW5kLWluc3RydWN0aW9uL3NlbmQtaW5zdHJ1Y3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTZW5kSW5zdHJ1Y3Rpb25SZXNwb25zZUludGVyZmFjZSB9IGZyb20gJy4vY29yZS94c29sbGEtbnVtYmVyL2FwaS9zZW5kLWluc3RydWN0aW9uL3Jlc3BvbnNlL3NlbmQtaW5zdHJ1Y3Rpb24tcmVzcG9uc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlbmRJbnN0cnVjdGlvblBhcmFtZXRlcnNJbnRlcmZhY2UgfSBmcm9tICcuL2NvcmUveHNvbGxhLW51bWJlci9hcGkvc2VuZC1pbnN0cnVjdGlvbi9zZW5kLWluc3RydWN0aW9uLXBhcmFtZXRlcnMuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENvcmVMaWJyYXJ5U2VydmljZSB7XG4gIHB1YmxpYyBwYXltZW50TWV0aG9kcyA9IHtcbiAgICBnZXRMaXN0OiBhc3luYyAoaXNTYXZlTWV0aG9kTW9kZT86IGJvb2xlYW4pOiBQcm9taXNlPFBheW1lbnRNZXRob2RbXT4gPT5cbiAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTZXJ2aWNlLmdldExpc3QoaXNTYXZlTWV0aG9kTW9kZSksXG5cbiAgICBnZXRRdWlja01ldGhvZHM6IGFzeW5jICgpOiBQcm9taXNlPFBheW1lbnRNZXRob2RbXT4gPT5cbiAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTZXJ2aWNlLmdldFF1aWNrTWV0aG9kcygpLFxuICAgIGdldFNhdmVkTWV0aG9kczogYXN5bmMgKCk6IFByb21pc2U8U2F2ZWRNZXRob2RbXT4gPT5cbiAgICAgIHRoaXMuc2F2ZWRNZXRob2RzU2VydmljZS5nZXRMaXN0KCksXG4gICAgZ2V0Q29tYmluZWRQYXltZW50TWV0aG9kczogYXN5bmMgKCk6IFByb21pc2U8Q29tYmluZWRQYXltZW50TWV0aG9kcz4gPT5cbiAgICAgIHRoaXMuY29tYmluZWRQYXltZW50TWV0aG9kc1NlcnZpY2UuZ2V0Q29tYmluZWRQYXltZW50TWV0aG9kcygpLFxuICAgIGdldFVzZXJCYWxhbmNlOiBhc3luYyAoKTogUHJvbWlzZTxVc2VyQmFsYW5jZVJlc3BvbnNlPiA9PlxuICAgICAgdGhpcy51c2VyQmFsYW5jZVNlcnZpY2UuZ2V0VXNlckJhbGFuY2UoKSxcbiAgICBkZWxldGVTYXZlZE1ldGhvZDogYXN5bmMgKGlkOiBudW1iZXIsIHR5cGU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT5cbiAgICAgIHRoaXMuZWRpdFNhdmVkTWV0aG9kc1NlcnZpY2UuZGVsZXRlU2F2ZWRNZXRob2RSZXF1ZXN0KGlkLCB0eXBlKSxcbiAgfTtcblxuICBwdWJsaWMgc2RrUGF5bWVudFN5c3RlbXM6IFNka1BheW1lbnRTeXN0ZW1zID0ge1xuICAgIGdldEluaXRpYWxEYXRhOiAoKSA9PlxuICAgICAgdGhpcy5wYXltZW50U2VydmljZS5nZXRJbml0aWFsRGF0YUZvclNka1BheW1lbnRTeXN0ZW1zKCksXG4gIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3VudHJ5U2VydmljZTogQ291bnRyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXltZW50TWV0aG9kc1NlcnZpY2U6IFBheW1lbnRNZXRob2RzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNhdmVkTWV0aG9kc1NlcnZpY2U6IFNhdmVkTWV0aG9kc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyQmFsYW5jZVNlcnZpY2U6IFVzZXJCYWxhbmNlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnRDb25maWdTZXJ2aWNlOiBQYXltZW50Q29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnRTZXJ2aWNlOiBQYXltZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRldmljZUZpbmdlclByaW50U2VydmljZTogRGV2aWNlRmluZ2VyUHJpbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmluYW5jZURldGFpbHNTZXJ2aWNlOiBGaW5hbmNlRGV0YWlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsZWdhbFNlcnZpY2U6IExlZ2FsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXR1c1NlcnZpY2U6IFN0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZXh0QWN0aW9uU2VydmljZTogTmV4dEFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmVkaXRDYXJkU2VydmljZTogQ3JlZGl0Q2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmVkaXRDYXJkU3RhdGVTZXJ2aWNlOiBDcmVkaXRDYXJkU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybU1lc3NhZ2VzU2VydmljZTogRm9ybU1lc3NhZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVkaXRTYXZlZE1ldGhvZHNTZXJ2aWNlOiBFZGl0U2F2ZWRNZXRob2RzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlOiBVc2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBlcmZvcm1hbmNlU2VydmljZTogUGVyZm9ybWFuY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tYmluZWRQYXltZW50TWV0aG9kc1NlcnZpY2U6IENvbWJpbmVkUGF5bWVudE1ldGhvZHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY291bnRyaWVzQXBpU2VydmljZTogQ291bnRyaWVzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlbmRJbnN0cnVjdGlvblNlcnZpY2U6IFNlbmRJbnN0cnVjdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBpbml0KGNvbmZpZ3VyYXRpb246IEluaXRDb25maWd1cmF0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zZXR0aW5nc1NlcnZpY2UuaW5pdChjb25maWd1cmF0aW9uKTtcbiAgICB0aGlzLnBlcmZvcm1hbmNlU2VydmljZS5pbml0KCk7XG4gICAgdGhpcy51c2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZS5pbml0KCk7XG4gICAgdGhpcy5kZXZpY2VGaW5nZXJQcmludFNlcnZpY2UuaW5pdCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0YXR1cyh1cmw/OiBzdHJpbmcpOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLnN0YXR1c1NlcnZpY2UuZ2V0U3RhdHVzV2l0aFVybFNlYXJjaFBhcmFtcyh1cmwpO1xuICB9XG5cbiAgcHVibGljIHNlbmRBbmFseXRpY3MoXG4gICAgYWN0aW9uOiBzdHJpbmcsXG4gICAgdHlwZToga2V5b2YgdHlwZW9mIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLFxuICAgIG9wdGlvbnM/OiBTZW5kRXZlbnRNZXRob2RPcHRpb25zSW50ZXJmYWNlXG4gICk6IHZvaWQge1xuICAgIHRoaXMudXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2Uuc2VuZChhY3Rpb24sIHR5cGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGdldFFyQ29kZUluaXRpYWxEYXRhKCk6IHtcbiAgICBxckNvZGU6IHN0cmluZztcbiAgICBwaWQ6IG51bWJlciB8IG51bGw7XG4gIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBxckNvZGU6IHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0UXJDb2RlKCksXG4gICAgICBwaWQ6IHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0UGlkKCksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNoUGF5bWVudERhdGEoKTogQ2FzaFBheW1lbnREYXRhIHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50U2VydmljZS5nZXRDYXNoUGF5bWVudERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZW5kWHNvbGxhTnVtYmVyV2l0aEVtYWlsKFxuICAgIHBhcmFtczogU2VuZEluc3RydWN0aW9uUGFyYW1ldGVyc0ludGVyZmFjZVxuICApOiBQcm9taXNlPFNlbmRJbnN0cnVjdGlvblJlc3BvbnNlSW50ZXJmYWNlPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VuZEluc3RydWN0aW9uU2VydmljZS5zZW5kSW5zdHJ1Y3Rpb25XaXRoRW1haWwocGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZW5kWHNvbGxhTnVtYmVyV2l0aFNtcyhcbiAgICBwYXJhbXM6IFNlbmRJbnN0cnVjdGlvblBhcmFtZXRlcnNJbnRlcmZhY2VcbiAgKTogUHJvbWlzZTxTZW5kSW5zdHJ1Y3Rpb25SZXNwb25zZUludGVyZmFjZT4ge1xuICAgIHJldHVybiB0aGlzLnNlbmRJbnN0cnVjdGlvblNlcnZpY2Uuc2VuZEluc3RydWN0aW9uV2l0aFNtcyhwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENvdW50cmllcygpOiBQcm9taXNlPENvdW50cnlSZXNwb25zZVsnY291bnRyeUxpc3QnXT4ge1xuICAgIHJldHVybiB0aGlzLmNvdW50cmllc0FwaVNlcnZpY2UucmVxdWVzdCgpO1xuICB9XG5cbiAgcHVibGljIHNldENvdW50cnkoY291bnRyeTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb3VudHJ5U2VydmljZS5zZXRDb3VudHJ5KGNvdW50cnkpO1xuICB9XG5cbiAgcHVibGljIGdldENvdW50cnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudHJ5U2VydmljZS5nZXRDb3VudHJ5KCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlUGF5bWVudChjb25maWc6IFBheW1lbnRDb25maWcpOiBQYXltZW50IHtcbiAgICBjb25zdCBlbnJpY2hlZENvbmZpZyA9IHRoaXMucGF5bWVudENvbmZpZ1NlcnZpY2UuZW5yaWNoKGNvbmZpZyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5pdGlhbGl6ZTogYXN5bmMgKCkgPT4gdGhpcy5wYXltZW50U2VydmljZS5pbml0aWFsaXplKGVucmljaGVkQ29uZmlnKSxcbiAgICAgIHN1Ym1pdDogYXN5bmMgKCkgPT4gdGhpcy5wYXltZW50U2VydmljZS5zdWJtaXQoKSxcbiAgICAgIGdldEZpZWxkczogKCkgPT4gdGhpcy5wYXltZW50U2VydmljZS5nZXRGaWVsZHMoKSxcbiAgICAgIGdldFBpZDogKCkgPT4gdGhpcy5wYXltZW50U2VydmljZS5nZXRQaWQoKSxcbiAgICAgIGdldFN1Ym1pdEJ1dHRvblRleHQ6ICgpID0+IHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0U3VibWl0QnV0dG9uVGV4dCgpLFxuICAgICAgdmFsaWRhdGU6IGFzeW5jIChmaWVsZDogRmllbGQpID0+IHRoaXMucGF5bWVudFNlcnZpY2UudmFsaWRhdGUoZmllbGQpLFxuICAgICAgZ2V0RmluYW5jZURldGFpbHM6ICgpID0+IHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0RmluYW5jZURldGFpbHMoKSxcbiAgICAgIHJ1blRocmVlRHM6ICgpID0+IHRoaXMucGF5bWVudFNlcnZpY2UucnVuVGhyZWVEcygpLFxuICAgICAgZ2V0U3RhdHVzOiBhc3luYyAoKSA9PiB0aGlzLnBheW1lbnRTZXJ2aWNlLmdldFN0YXR1cygpLFxuICAgICAgbGlzdGVuRmluYWxTdGF0dXM6IGFzeW5jICgpID0+IHRoaXMucGF5bWVudFNlcnZpY2UubGlzdGVuRmluYWxTdGF0dXMoKSxcbiAgICAgIGZpbmFuY2VEZXRhaWxzVXBkYXRlcyQ6IHRoaXMuZmluYW5jZURldGFpbHNTZXJ2aWNlLmRhdGEkLFxuICAgICAgZm9ybToge1xuICAgICAgICBmaWVsZHNTdGF0dXMkOiB0aGlzLnBheW1lbnRTZXJ2aWNlLmZvcm1GaWVsZHNTdGF0dXMkLFxuICAgICAgICBnZXRDb250cm9sQ29uZmlnOiAoZmllbGQ6IEZpZWxkKSA9PlxuICAgICAgICAgIHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0RmllbGRDb25maWcoZmllbGQpLFxuICAgICAgICBjaGFuZ2VGaWVsZFZhbHVlOiAobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgICAgIHRoaXMucGF5bWVudFNlcnZpY2UuY2hhbmdlRmllbGRWYWx1ZShuYW1lLCB2YWx1ZSksXG4gICAgICAgIGNoYW5nZUZpZWxkU3RhdGU6IChuYW1lOiBzdHJpbmcsIHN0YXRlOiBJbnB1dEV2ZW50TmFtZSkgPT5cbiAgICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmNoYW5nZUZpZWxkU3RhdGUobmFtZSwgc3RhdGUpLFxuICAgICAgICB1cGRhdGVGaWVsZEZvcm1TdGF0ZTogKGZpZWxkTmFtZTogc3RyaW5nLCBmb3JtU3RhdGU6IEZvcm1TdGF0ZSkgPT5cbiAgICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLnVwZGF0ZUZpZWxkRm9ybVN0YXRlKGZpZWxkTmFtZSwgZm9ybVN0YXRlKSxcbiAgICAgICAgZ2V0RmllbGRGb3JtU3RhdGU6IChmaWVsZE5hbWU6IEZpZWxkTmFtZXMpID0+XG4gICAgICAgICAgdGhpcy5wYXltZW50U2VydmljZS5nZXRGaWVsZEZvcm1TdGF0ZShmaWVsZE5hbWUpLFxuICAgICAgICBmb3JtTWVzc2FnZXMkOiB0aGlzLmZvcm1NZXNzYWdlc1NlcnZpY2UuZGF0YSQsXG4gICAgICAgIGdldEZvcm1TdGF0dXM6ICgpID0+IHRoaXMucGF5bWVudFNlcnZpY2UuZm9ybT8uc3RhdHVzLFxuICAgICAgICBnZXRDb250cm9sU3RhdHVzOiAobmFtZTogRmllbGROYW1lcykgPT5cbiAgICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmdldENvbnRyb2xTdGF0dXMobmFtZSksXG4gICAgICB9LFxuICAgICAgYWRkRXh0cmFGaWVsZDogKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQgPT5cbiAgICAgICAgdGhpcy5wYXltZW50U2VydmljZS5hZGRFeHRyYUZpZWxkKG5hbWUsIHZhbHVlKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldENyZWRpdENhcmRTZXJ2aWNlKCk6IENyZWRpdENhcmQge1xuICAgIHJldHVybiB7XG4gICAgICBnZXRUeXBlQnlOdW1iZXI6IChjYXJkTnVtYmVyOiBzdHJpbmcpID0+XG4gICAgICAgIHRoaXMuY3JlZGl0Q2FyZFNlcnZpY2UuZ2V0VHlwZUJ5TnVtYmVyKGNhcmROdW1iZXIpLFxuICAgICAgZ2V0Q3JlZGl0Q2FyZFNldHRpbmdzOiAoY2FyZFR5cGU6IENyZWRpdENhcmRUeXBlcykgPT5cbiAgICAgICAgdGhpcy5jcmVkaXRDYXJkU2VydmljZS5nZXRDcmVkaXRDYXJkU2V0dGluZ3MoY2FyZFR5cGUpLFxuICAgICAgY2FyZFR5cGVVcGRhdGVzJDogdGhpcy5jcmVkaXRDYXJkU3RhdGVTZXJ2aWNlLmRhdGEkLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZsb3dVcGRhdGVzJCgpOiBPYnNlcnZhYmxlPE5leHRBY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5uZXh0QWN0aW9uU2VydmljZS5mbG93VXBkYXRlcyQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbmFuY2VEZXRhaWxzVXBkYXRlcyQoKTogT2JzZXJ2YWJsZTxGaW5hbmNlRGV0YWlscz4ge1xuICAgIHJldHVybiB0aGlzLmZpbmFuY2VEZXRhaWxzU2VydmljZS5kYXRhJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2FyZFR5cGVVcGRhdGVzJCgpOiBPYnNlcnZhYmxlPENyZWRpdENhcmRTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLmNyZWRpdENhcmRTdGF0ZVNlcnZpY2UuZGF0YSQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGVnYWxDb21wb25lbnRDb25maWcoKTogTGVnYWxDb21wb25lbnRDb25maWcge1xuICAgIHJldHVybiB0aGlzLmxlZ2FsU2VydmljZS5nZXRMZWdhbENvbXBvbmVudENvbmZpZygpO1xuICB9XG5cbiAgcHVibGljIGdldFVzZXJCYWxhbmNlVmFsdWUoKTogQmFsYW5jZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnVzZXJCYWxhbmNlU2VydmljZS5nZXRVc2VyQmFsYW5jZVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBheW1lbnRGb3JtJCgpOiBPYnNlcnZhYmxlPEZvcm1Db250cm9sU3RhdHVzIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnBheW1lbnRTZXJ2aWNlLnBheW1lbnRGb3JtJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9ybVJlc3BvbnNlJCgpOiBPYnNlcnZhYmxlPEZvcm1SZXNwb25zZSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50U2VydmljZS5mb3JtUmVzcG9uc2UkO1xuICB9XG5cbiAgcHVibGljIGdldCBmb3JtUmVzcG9uc2VWYWx1ZSgpOiBGb3JtUmVzcG9uc2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50U2VydmljZS5mb3JtUmVzcG9uc2VWYWx1ZTtcbiAgfVxufVxuIl19
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1saWJyYXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS1saWJyYXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1RDNDLE1BQU0sT0FBTyxrQkFBa0I7SUFzQjdCLFlBQ21CLGVBQWdDLEVBQ2hDLGNBQThCLEVBQzlCLHFCQUE0QyxFQUM1QyxtQkFBd0MsRUFDeEMsa0JBQXNDLEVBQ3RDLG9CQUEwQyxFQUMxQyxjQUE4QixFQUM5Qix3QkFBa0QsRUFDbEQscUJBQTRDLEVBQzVDLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGlCQUFvQyxFQUNwQyxpQkFBb0MsRUFDcEMsc0JBQThDLEVBQzlDLG1CQUF3QyxFQUN4Qyx1QkFBZ0QsRUFDaEQsNkJBQTRELEVBQzVELGtCQUFzQyxFQUN0Qyw2QkFBNEQsRUFDNUQsbUJBQXdDLEVBQ3hDLHNCQUE4QztRQXBCOUMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNw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QUFjLENBQUMsaUJBQWlCLENBQUM7SUFDL0MsQ0FBQzs4R0FwTFUsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEluaXRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9jb3JlL3NldHRpbmdzL2NvbmZpZ3VyYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vY29yZS9zZXR0aW5ncy9zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENvdW50cnlTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL2NvdW50cnkvY291bnRyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFBheW1lbnRNZXRob2RzU2VydmljZSB9IGZyb20gJy4vY29yZS9wYXltZW50LW1ldGhvZHMvcGF5bWVudC1tZXRob2RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGF5bWVudE1ldGhvZCB9IGZyb20gJy4vY29yZS9wYXltZW50LW1ldGhvZHMvcGF5bWVudC1tZXRob2QuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNhdmVkTWV0aG9kc1NlcnZpY2UgfSBmcm9tICcuL2NvcmUvc2F2ZWQtbWV0aG9kcy9zYXZlZC1tZXRob2RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRNZXRob2QgfSBmcm9tICcuL2NvcmUvc2F2ZWQtbWV0aG9kcy9zYXZlZC1tZXRob2QuaW50ZXJmYWNlJztcbmltcG9ydCB7IFVzZXJCYWxhbmNlUmVzcG9uc2UgfSBmcm9tICcuL2NvcmUvdXNlci1iYWxhbmNlL3VzZXItYmFsYW5jZS1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBVc2VyQmFsYW5jZVNlcnZpY2UgfSBmcm9tICcuL2NvcmUvdXNlci1iYWxhbmNlL3VzZXItYmFsYW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBheW1lbnRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvcGF5bWVudC1jb25maWd1cmF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQYXltZW50U2VydmljZSB9IGZyb20gJy4vY29yZS9wYXltZW50L3BheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBQYXltZW50IH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvcGF5bWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGV2aWNlRmluZ2VyUHJpbnRTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL2RldmljZS1maW5nZXItcHJpbnQvZGV2aWNlLWZpbmdlci1wcmludC5zZXJ2aWNlJztcbmltcG9ydCB7IExlZ2FsU2VydmljZSB9IGZyb20gJy4vY29yZS9sZWdhbC9sZWdhbC5zZXJ2aWNlJztcbmltcG9ydCB7IExlZ2FsQ29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi9jb3JlL2xlZ2FsL2xlZ2FsLmNvbXBvbmVudC5jb25maWcnO1xuaW1wb3J0IHsgTmV4dEFjdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9hY3Rpb25zL25leHQtYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmluYW5jZURldGFpbHNTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvZmluYW5jZS1kZXRhaWxzL2ZpbmFuY2UtZGV0YWlscy5zZXJ2aWNlJztcbmltcG9ydCB7IFBheW1lbnRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gJy4vY29yZS9wYXltZW50L3N0YXR1cy9zdGF0dXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN0YXR1c1NlcnZpY2UgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9zdGF0dXMvc3RhdHVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlZGl0Q2FyZFNlcnZpY2UgfSBmcm9tICcuL2NvcmUvY3JlZGl0LWNhcmQvY3JlZGl0LWNhcmQuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVkaXRDYXJkVHlwZXMgfSBmcm9tICcuL2NvcmUvY3JlZGl0LWNhcmQvY3JlZGl0LWNhcmQtdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBDcmVkaXRDYXJkIH0gZnJvbSAnLi9jb3JlL2NyZWRpdC1jYXJkL2NyZWRpdC1jYXJkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJbnB1dEV2ZW50TmFtZSB9IGZyb20gJy4vY29yZS9wYXltZW50L2Zvcm0vaW5wdXQtZXZlbnQuZW51bSc7XG5pbXBvcnQgeyBDcmVkaXRDYXJkU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvY3JlZGl0LWNhcmQtc3RhdGUvY3JlZGl0LWNhcmQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDcmVkaXRDYXJkU3RhdGUgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9jcmVkaXQtY2FyZC1zdGF0ZS9jcmVkaXQtY2FyZC1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvZm9ybS9mb3JtLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaW5hbmNlRGV0YWlscyB9IGZyb20gJy4vY29yZS9wYXltZW50L2ZpbmFuY2UtZGV0YWlscy9maW5hbmNlLWRldGFpbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IE5leHRBY3Rpb24gfSBmcm9tICcuL2NvcmUvcGF5bWVudC9hY3Rpb25zL25leHQtYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWxhbmNlIH0gZnJvbSAnLi9jb3JlL3NldHRpbmdzL2JhbGFuY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZvcm1NZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuL2NvcmUvcGF5bWVudC9mb3JtLW1lc3NhZ2VzL2Zvcm0tbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0U2F2ZWRNZXRob2RzU2VydmljZSB9IGZyb20gJy4vY29yZS9lZGl0LXNhdmVkLW1ldGhvZHMvZWRpdC1zYXZlZC1tZXRob2RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xTdGF0dXMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTZGtQYXltZW50U3lzdGVtcyB9IGZyb20gJy4vY29yZS9zZGstcGF5bWVudC1zeXN0ZW1zL3Nkay1wYXltZW50LXN5c3RlbXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZvcm1SZXNwb25zZSB9IGZyb20gJy4vY29yZS9wYXltZW50L2Zvcm0tcmVzcG9uc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL3VzZXItYmVoYXZpb3VyLWFuYWx5dGljcy91c2VyLWJlaGF2aW91ci1hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyB1c2VyQmVoYXZpb3VyRXZlbnRUeXBlcyB9IGZyb20gJy4vY29yZS91c2VyLWJlaGF2aW91ci1hbmFseXRpY3MvdXNlci1iZWhhdmlvdXItZXZlbnQvdXNlci1iZWhhdmlvdXItZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgU2VuZEV2ZW50TWV0aG9kT3B0aW9uc0ludGVyZmFjZSB9IGZyb20gJy4vY29yZS91c2VyLWJlaGF2aW91ci1hbmFseXRpY3MvdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQZXJmb3JtYW5jZVNlcnZpY2UgfSBmcm9tICcuL2NvcmUvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZE5hbWVzIH0gZnJvbSAnLi9jb3JlL3BheW1lbnQvZmllbGQtbmFtZXMuZW51bSc7XG5pbXBvcnQgeyBDb21iaW5lZFBheW1lbnRNZXRob2RzIH0gZnJvbSAnLi9jb3JlL2NvbWJpbmVkLXBheW1lbnQtbWV0aG9kcy9jb21iaW5lZC1wYXltZW50LW1ldGhvZHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbWJpbmVkUGF5bWVudE1ldGhvZHNTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL2NvbWJpbmVkLXBheW1lbnQtbWV0aG9kcy9jb21iaW5lZC1wYXltZW50LW1ldGhvZHMuc2VydmljZSc7XG5pbXBvcnQgeyBDb3VudHJpZXNBcGlTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL2NvdW50cmllcy1hcGkvY291bnRyaWVzLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IENvdW50cnlSZXNwb25zZSB9IGZyb20gJy4vY29yZS9jb3VudHJpZXMtYXBpL2NvdW50cnktcmVzcG9uc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IENhc2hQYXltZW50RGF0YSB9IGZyb20gJy4vY29yZS9wYXltZW50L2Nhc2gtcGF5bWVudC1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZW5kSW5zdHJ1Y3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL3hzb2xsYS1udW1iZXIvYXBpL3NlbmQtaW5zdHJ1Y3Rpb24vc2VuZC1pbnN0cnVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbmRJbnN0cnVjdGlvblJlc3BvbnNlSW50ZXJmYWNlIH0gZnJvbSAnLi9jb3JlL3hzb2xsYS1udW1iZXIvYXBpL3NlbmQtaW5zdHJ1Y3Rpb24vcmVzcG9uc2Uvc2VuZC1pbnN0cnVjdGlvbi1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VuZEluc3RydWN0aW9uUGFyYW1ldGVyc0ludGVyZmFjZSB9IGZyb20gJy4vY29yZS94c29sbGEtbnVtYmVyL2FwaS9zZW5kLWluc3RydWN0aW9uL3NlbmQtaW5zdHJ1Y3Rpb24tcGFyYW1ldGVycy5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29yZUxpYnJhcnlTZXJ2aWNlIHtcbiAgcHVibGljIHBheW1lbnRNZXRob2RzID0ge1xuICAgIGdldExpc3Q6IGFzeW5jIChpc1NhdmVNZXRob2RNb2RlPzogYm9vbGVhbik6IFByb21pc2U8UGF5bWVudE1ldGhvZFtdPiA9PlxuICAgICAgdGhpcy5wYXltZW50TWV0aG9kc1NlcnZpY2UuZ2V0TGlzdChpc1NhdmVNZXRob2RNb2RlKSxcblxuICAgIGdldFF1aWNrTWV0aG9kczogYXN5bmMgKCk6IFByb21pc2U8UGF5bWVudE1ldGhvZFtdPiA9PlxuICAgICAgdGhpcy5wYXltZW50TWV0aG9kc1NlcnZpY2UuZ2V0UXVpY2tNZXRob2RzKCksXG4gICAgZ2V0U2F2ZWRNZXRob2RzOiBhc3luYyAoKTogUHJvbWlzZTxTYXZlZE1ldGhvZFtdPiA9PlxuICAgICAgdGhpcy5zYXZlZE1ldGhvZHNTZXJ2aWNlLmdldExpc3QoKSxcbiAgICBnZXRDb21iaW5lZFBheW1lbnRNZXRob2RzOiBhc3luYyAoKTogUHJvbWlzZTxDb21iaW5lZFBheW1lbnRNZXRob2RzPiA9PlxuICAgICAgdGhpcy5jb21iaW5lZFBheW1lbnRNZXRob2RzU2VydmljZS5nZXRDb21iaW5lZFBheW1lbnRNZXRob2RzKCksXG4gICAgZ2V0VXNlckJhbGFuY2U6IGFzeW5jICgpOiBQcm9taXNlPFVzZXJCYWxhbmNlUmVzcG9uc2U+ID0+XG4gICAgICB0aGlzLnVzZXJCYWxhbmNlU2VydmljZS5nZXRVc2VyQmFsYW5jZSgpLFxuICAgIGRlbGV0ZVNhdmVkTWV0aG9kOiBhc3luYyAoaWQ6IG51bWJlciwgdHlwZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiA9PlxuICAgICAgdGhpcy5lZGl0U2F2ZWRNZXRob2RzU2VydmljZS5kZWxldGVTYXZlZE1ldGhvZFJlcXVlc3QoaWQsIHR5cGUpLFxuICB9O1xuXG4gIHB1YmxpYyBzZGtQYXltZW50U3lzdGVtczogU2RrUGF5bWVudFN5c3RlbXMgPSB7XG4gICAgZ2V0SW5pdGlhbERhdGE6ICgpID0+XG4gICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmdldEluaXRpYWxEYXRhRm9yU2RrUGF5bWVudFN5c3RlbXMoKSxcbiAgfTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvdW50cnlTZXJ2aWNlOiBDb3VudHJ5U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnRNZXRob2RzU2VydmljZTogUGF5bWVudE1ldGhvZHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2F2ZWRNZXRob2RzU2VydmljZTogU2F2ZWRNZXRob2RzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJCYWxhbmNlU2VydmljZTogVXNlckJhbGFuY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGF5bWVudENvbmZpZ1NlcnZpY2U6IFBheW1lbnRDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGF5bWVudFNlcnZpY2U6IFBheW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGV2aWNlRmluZ2VyUHJpbnRTZXJ2aWNlOiBEZXZpY2VGaW5nZXJQcmludFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaW5hbmNlRGV0YWlsc1NlcnZpY2U6IEZpbmFuY2VEZXRhaWxzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxlZ2FsU2VydmljZTogTGVnYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdHVzU2VydmljZTogU3RhdHVzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5leHRBY3Rpb25TZXJ2aWNlOiBOZXh0QWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZWRpdENhcmRTZXJ2aWNlOiBDcmVkaXRDYXJkU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZWRpdENhcmRTdGF0ZVNlcnZpY2U6IENyZWRpdENhcmRTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtTWVzc2FnZXNTZXJ2aWNlOiBGb3JtTWVzc2FnZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWRpdFNhdmVkTWV0aG9kc1NlcnZpY2U6IEVkaXRTYXZlZE1ldGhvZHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2U6IFVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVyZm9ybWFuY2VTZXJ2aWNlOiBQZXJmb3JtYW5jZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21iaW5lZFBheW1lbnRNZXRob2RzU2VydmljZTogQ29tYmluZWRQYXltZW50TWV0aG9kc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3VudHJpZXNBcGlTZXJ2aWNlOiBDb3VudHJpZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VuZEluc3RydWN0aW9uU2VydmljZTogU2VuZEluc3RydWN0aW9uU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGluaXQoY29uZmlndXJhdGlvbjogSW5pdENvbmZpZ3VyYXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNldHRpbmdzU2VydmljZS5pbml0KGNvbmZpZ3VyYXRpb24pO1xuICAgIHRoaXMucGVyZm9ybWFuY2VTZXJ2aWNlLmluaXQoKTtcbiAgICB0aGlzLnVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlLmluaXQoKTtcbiAgICB0aGlzLmRldmljZUZpbmdlclByaW50U2VydmljZS5pbml0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RhdHVzKHVybD86IHN0cmluZyk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzU2VydmljZS5nZXRTdGF0dXNXaXRoVXJsU2VhcmNoUGFyYW1zKHVybCk7XG4gIH1cblxuICBwdWJsaWMgc2VuZEFuYWx5dGljcyhcbiAgICBhY3Rpb246IHN0cmluZyxcbiAgICB0eXBlOiBrZXlvZiB0eXBlb2YgdXNlckJlaGF2aW91ckV2ZW50VHlwZXMsXG4gICAgb3B0aW9ucz86IFNlbmRFdmVudE1ldGhvZE9wdGlvbnNJbnRlcmZhY2VcbiAgKTogdm9pZCB7XG4gICAgdGhpcy51c2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZS5zZW5kKGFjdGlvbiwgdHlwZSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UXJDb2RlSW5pdGlhbERhdGEoKToge1xuICAgIHFyQ29kZTogc3RyaW5nO1xuICAgIHBpZDogbnVtYmVyIHwgbnVsbDtcbiAgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHFyQ29kZTogdGhpcy5wYXltZW50U2VydmljZS5nZXRRckNvZGUoKSxcbiAgICAgIHBpZDogdGhpcy5wYXltZW50U2VydmljZS5nZXRQaWQoKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldENhc2hQYXltZW50RGF0YSgpOiBDYXNoUGF5bWVudERhdGEge1xuICAgIHJldHVybiB0aGlzLnBheW1lbnRTZXJ2aWNlLmdldENhc2hQYXltZW50RGF0YSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlbmRYc29sbGFOdW1iZXJXaXRoRW1haWwoXG4gICAgcGFyYW1zOiBTZW5kSW5zdHJ1Y3Rpb25QYXJhbWV0ZXJzSW50ZXJmYWNlXG4gICk6IFByb21pc2U8U2VuZEluc3RydWN0aW9uUmVzcG9uc2VJbnRlcmZhY2U+IHtcbiAgICByZXR1cm4gdGhpcy5zZW5kSW5zdHJ1Y3Rpb25TZXJ2aWNlLnNlbmRJbnN0cnVjdGlvbldpdGhFbWFpbChwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlbmRYc29sbGFOdW1iZXJXaXRoU21zKFxuICAgIHBhcmFtczogU2VuZEluc3RydWN0aW9uUGFyYW1ldGVyc0ludGVyZmFjZVxuICApOiBQcm9taXNlPFNlbmRJbnN0cnVjdGlvblJlc3BvbnNlSW50ZXJmYWNlPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VuZEluc3RydWN0aW9uU2VydmljZS5zZW5kSW5zdHJ1Y3Rpb25XaXRoU21zKHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q291bnRyaWVzKCk6IFByb21pc2U8Q291bnRyeVJlc3BvbnNlWydjb3VudHJ5TGlzdCddPiB7XG4gICAgcmV0dXJuIHRoaXMuY291bnRyaWVzQXBpU2VydmljZS5yZXF1ZXN0KCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q291bnRyeShjb3VudHJ5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvdW50cnlTZXJ2aWNlLnNldENvdW50cnkoY291bnRyeSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvdW50cnlTZXJ2aWNlLmdldENvdW50cnkoKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVQYXltZW50KGNvbmZpZzogUGF5bWVudENvbmZpZ3VyYXRpb24pOiBQYXltZW50IHtcbiAgICBjb25zdCBlbnJpY2hlZENvbmZpZyA9IHRoaXMucGF5bWVudENvbmZpZ1NlcnZpY2UuZW5yaWNoKGNvbmZpZyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5pdGlhbGl6ZTogYXN5bmMgKCkgPT4gdGhpcy5wYXltZW50U2VydmljZS5pbml0aWFsaXplKGVucmljaGVkQ29uZmlnKSxcbiAgICAgIHN1Ym1pdDogYXN5bmMgKCkgPT4gdGhpcy5wYXltZW50U2VydmljZS5zdWJtaXQoKSxcbiAgICAgIGdldEZpZWxkczogKCkgPT4gdGhpcy5wYXltZW50U2VydmljZS5nZXRGaWVsZHMoKSxcbiAgICAgIGdldFBpZDogKCkgPT4gdGhpcy5wYXltZW50U2VydmljZS5nZXRQaWQoKSxcbiAgICAgIGdldFN1Ym1pdEJ1dHRvblRleHQ6ICgpID0+IHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0U3VibWl0QnV0dG9uVGV4dCgpLFxuICAgICAgdmFsaWRhdGU6IGFzeW5jIChmaWVsZDogRmllbGQpID0+IHRoaXMucGF5bWVudFNlcnZpY2UudmFsaWRhdGUoZmllbGQpLFxuICAgICAgZ2V0RmluYW5jZURldGFpbHM6ICgpID0+IHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0RmluYW5jZURldGFpbHMoKSxcbiAgICAgIHJ1blRocmVlRHM6ICgpID0+IHRoaXMucGF5bWVudFNlcnZpY2UucnVuVGhyZWVEcygpLFxuICAgICAgZ2V0U3RhdHVzOiBhc3luYyAoKSA9PiB0aGlzLnBheW1lbnRTZXJ2aWNlLmdldFN0YXR1cygpLFxuICAgICAgbGlzdGVuRmluYWxTdGF0dXM6IGFzeW5jICgpID0+IHRoaXMucGF5bWVudFNlcnZpY2UubGlzdGVuRmluYWxTdGF0dXMoKSxcbiAgICAgIGZpbmFuY2VEZXRhaWxzVXBkYXRlcyQ6IHRoaXMuZmluYW5jZURldGFpbHNTZXJ2aWNlLmRhdGEkLFxuICAgICAgZm9ybToge1xuICAgICAgICBmaWVsZHNTdGF0dXMkOiB0aGlzLnBheW1lbnRTZXJ2aWNlLmZvcm1GaWVsZHNTdGF0dXMkLFxuICAgICAgICBnZXRDb250cm9sQ29uZmlnOiAoZmllbGQ6IEZpZWxkKSA9PlxuICAgICAgICAgIHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0RmllbGRDb25maWcoZmllbGQpLFxuICAgICAgICBjaGFuZ2VGaWVsZFZhbHVlOiAobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgICAgIHRoaXMucGF5bWVudFNlcnZpY2UuY2hhbmdlRmllbGRWYWx1ZShuYW1lLCB2YWx1ZSksXG4gICAgICAgIGNoYW5nZUZpZWxkU3RhdGU6IChuYW1lOiBzdHJpbmcsIHN0YXRlOiBJbnB1dEV2ZW50TmFtZSkgPT5cbiAgICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmNoYW5nZUZpZWxkU3RhdGUobmFtZSwgc3RhdGUpLFxuICAgICAgICB1cGRhdGVGaWVsZEZvcm1TdGF0ZTogKGZpZWxkTmFtZTogc3RyaW5nLCBmb3JtU3RhdGU6IEZvcm1TdGF0ZSkgPT5cbiAgICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLnVwZGF0ZUZpZWxkRm9ybVN0YXRlKGZpZWxkTmFtZSwgZm9ybVN0YXRlKSxcbiAgICAgICAgZ2V0RmllbGRGb3JtU3RhdGU6IChmaWVsZE5hbWU6IEZpZWxkTmFtZXMpID0+XG4gICAgICAgICAgdGhpcy5wYXltZW50U2VydmljZS5nZXRGaWVsZEZvcm1TdGF0ZShmaWVsZE5hbWUpLFxuICAgICAgICBmb3JtTWVzc2FnZXMkOiB0aGlzLmZvcm1NZXNzYWdlc1NlcnZpY2UuZGF0YSQsXG4gICAgICAgIGdldEZvcm1TdGF0dXM6ICgpID0+IHRoaXMucGF5bWVudFNlcnZpY2UuZm9ybT8uc3RhdHVzLFxuICAgICAgICBnZXRDb250cm9sU3RhdHVzOiAobmFtZTogRmllbGROYW1lcykgPT5cbiAgICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmdldENvbnRyb2xTdGF0dXMobmFtZSksXG4gICAgICB9LFxuICAgICAgYWRkRXh0cmFGaWVsZDogKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQgPT5cbiAgICAgICAgdGhpcy5wYXltZW50U2VydmljZS5hZGRFeHRyYUZpZWxkKG5hbWUsIHZhbHVlKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldENyZWRpdENhcmRTZXJ2aWNlKCk6IENyZWRpdENhcmQge1xuICAgIHJldHVybiB7XG4gICAgICBnZXRUeXBlQnlOdW1iZXI6IChjYXJkTnVtYmVyOiBzdHJpbmcpID0+XG4gICAgICAgIHRoaXMuY3JlZGl0Q2FyZFNlcnZpY2UuZ2V0VHlwZUJ5TnVtYmVyKGNhcmROdW1iZXIpLFxuICAgICAgZ2V0Q3JlZGl0Q2FyZFNldHRpbmdzOiAoY2FyZFR5cGU6IENyZWRpdENhcmRUeXBlcykgPT5cbiAgICAgICAgdGhpcy5jcmVkaXRDYXJkU2VydmljZS5nZXRDcmVkaXRDYXJkU2V0dGluZ3MoY2FyZFR5cGUpLFxuICAgICAgY2FyZFR5cGVVcGRhdGVzJDogdGhpcy5jcmVkaXRDYXJkU3RhdGVTZXJ2aWNlLmRhdGEkLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZsb3dVcGRhdGVzJCgpOiBPYnNlcnZhYmxlPE5leHRBY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5uZXh0QWN0aW9uU2VydmljZS5mbG93VXBkYXRlcyQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbmFuY2VEZXRhaWxzVXBkYXRlcyQoKTogT2JzZXJ2YWJsZTxGaW5hbmNlRGV0YWlscz4ge1xuICAgIHJldHVybiB0aGlzLmZpbmFuY2VEZXRhaWxzU2VydmljZS5kYXRhJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2FyZFR5cGVVcGRhdGVzJCgpOiBPYnNlcnZhYmxlPENyZWRpdENhcmRTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLmNyZWRpdENhcmRTdGF0ZVNlcnZpY2UuZGF0YSQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGVnYWxDb21wb25lbnRDb25maWcoKTogTGVnYWxDb21wb25lbnRDb25maWcge1xuICAgIHJldHVybiB0aGlzLmxlZ2FsU2VydmljZS5nZXRMZWdhbENvbXBvbmVudENvbmZpZygpO1xuICB9XG5cbiAgcHVibGljIGdldFVzZXJCYWxhbmNlVmFsdWUoKTogQmFsYW5jZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnVzZXJCYWxhbmNlU2VydmljZS5nZXRVc2VyQmFsYW5jZVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBheW1lbnRGb3JtJCgpOiBPYnNlcnZhYmxlPEZvcm1Db250cm9sU3RhdHVzIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnBheW1lbnRTZXJ2aWNlLnBheW1lbnRGb3JtJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9ybVJlc3BvbnNlJCgpOiBPYnNlcnZhYmxlPEZvcm1SZXNwb25zZSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50U2VydmljZS5mb3JtUmVzcG9uc2UkO1xuICB9XG5cbiAgcHVibGljIGdldCBmb3JtUmVzcG9uc2VWYWx1ZSgpOiBGb3JtUmVzcG9uc2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50U2VydmljZS5mb3JtUmVzcG9uc2VWYWx1ZTtcbiAgfVxufVxuIl19
@@ -528,6 +528,7 @@ var FieldNames;
528
528
  FieldNames["birthDate"] = "birth_date";
529
529
  FieldNames["cardMonth"] = "card_month";
530
530
  FieldNames["cardYear"] = "card_year";
531
+ FieldNames["cardExpire"] = "card_expire";
531
532
  FieldNames["cardNumber"] = "card_number";
532
533
  FieldNames["cardholdername"] = "cardholdername";
533
534
  FieldNames["city"] = "city";
@@ -707,6 +708,7 @@ const userBehaviourEventTypes = {
707
708
 
708
709
  const masterCardAndVisaPaymentMethodId = 26;
709
710
  const maestroPaymentMethodId = 490;
711
+ // eslint-disable-next-line @typescript-eslint/no-magic-numbers
710
712
  const creditCardPaymentMethodId = 1380;
711
713
  const americanExpressMethodId = 714;
712
714
  const specialCards = [
@@ -2624,8 +2626,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
2624
2626
  }]
2625
2627
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: EventBuilderService }, { type: SettingsService }] });
2626
2628
 
2629
+ class PaymentSettingsService {
2630
+ getPaymentSettingsParams(config) {
2631
+ return {
2632
+ ...(config?.paymentMethodSettings?.useSingleExpirationDateField
2633
+ ? { useSingleExpirationDateField: "1" /* XpsBoolean.true */ }
2634
+ : {}),
2635
+ };
2636
+ }
2637
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PaymentSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2638
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PaymentSettingsService, providedIn: 'root' }); }
2639
+ }
2640
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PaymentSettingsService, decorators: [{
2641
+ type: Injectable,
2642
+ args: [{
2643
+ providedIn: 'root',
2644
+ }]
2645
+ }] });
2646
+
2627
2647
  class InitializeService {
2628
- constructor(responseFactory, xpsApiService, settingsService, countryService, nextActionService, xpsResponseErrorsMappingService, encryptCreditCardService, showErrorsActionCreator, userBehaviourAnalyticsService) {
2648
+ constructor(responseFactory, xpsApiService, settingsService, countryService, nextActionService, xpsResponseErrorsMappingService, encryptCreditCardService, showErrorsActionCreator, userBehaviourAnalyticsService, paymentSettingsService) {
2629
2649
  this.responseFactory = responseFactory;
2630
2650
  this.xpsApiService = xpsApiService;
2631
2651
  this.settingsService = settingsService;
@@ -2635,8 +2655,10 @@ class InitializeService {
2635
2655
  this.encryptCreditCardService = encryptCreditCardService;
2636
2656
  this.showErrorsActionCreator = showErrorsActionCreator;
2637
2657
  this.userBehaviourAnalyticsService = userBehaviourAnalyticsService;
2658
+ this.paymentSettingsService = paymentSettingsService;
2638
2659
  }
2639
2660
  async request(config) {
2661
+ const paymentSettingsParams = this.paymentSettingsService.getPaymentSettingsParams(config);
2640
2662
  const requestParams = {
2641
2663
  access_token: this.settingsService.token,
2642
2664
  pid: String(config.paymentMethodId),
@@ -2648,6 +2670,7 @@ class InitializeService {
2648
2670
  save_payment_account_only: config.savePaymentMethod
2649
2671
  ? "1" /* XpsBoolean.true */
2650
2672
  : "0" /* XpsBoolean.false */,
2673
+ ...paymentSettingsParams,
2651
2674
  };
2652
2675
  if (config.savedMethodId) {
2653
2676
  requestParams.saved_method_id = config.savedMethodId;
@@ -2682,7 +2705,7 @@ class InitializeService {
2682
2705
  }
2683
2706
  this.encryptCreditCardService.setPublicKey(atob(publicKeyField.value));
2684
2707
  }
2685
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: InitializeService, deps: [{ token: initializeResponseFactoryToken }, { token: XpsApiService }, { token: SettingsService }, { token: CountryService }, { token: NextActionService }, { token: XpsResponseErrorsMappingService }, { token: EncryptCreditCardService }, { token: ShowErrorsActionCreator }, { token: UserBehaviourAnalyticsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2708
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: InitializeService, deps: [{ token: initializeResponseFactoryToken }, { token: XpsApiService }, { token: SettingsService }, { token: CountryService }, { token: NextActionService }, { token: XpsResponseErrorsMappingService }, { token: EncryptCreditCardService }, { token: ShowErrorsActionCreator }, { token: UserBehaviourAnalyticsService }, { token: PaymentSettingsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2686
2709
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: InitializeService, providedIn: 'root' }); }
2687
2710
  }
2688
2711
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: InitializeService, decorators: [{
@@ -2693,7 +2716,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
2693
2716
  }], ctorParameters: () => [{ type: undefined, decorators: [{
2694
2717
  type: Inject,
2695
2718
  args: [initializeResponseFactoryToken]
2696
- }] }, { type: XpsApiService }, { type: SettingsService }, { type: CountryService }, { type: NextActionService }, { type: XpsResponseErrorsMappingService }, { type: EncryptCreditCardService }, { type: ShowErrorsActionCreator }, { type: UserBehaviourAnalyticsService }] });
2719
+ }] }, { type: XpsApiService }, { type: SettingsService }, { type: CountryService }, { type: NextActionService }, { type: XpsResponseErrorsMappingService }, { type: EncryptCreditCardService }, { type: ShowErrorsActionCreator }, { type: UserBehaviourAnalyticsService }, { type: PaymentSettingsService }] });
2697
2720
 
2698
2721
  class XpsApiPartRequest {
2699
2722
  addXpsParameters(parameters) {
@@ -2701,6 +2724,11 @@ class XpsApiPartRequest {
2701
2724
  this[`xps_${key}`] = parameters[key];
2702
2725
  }
2703
2726
  }
2727
+ addParameters(parameters) {
2728
+ for (const key in parameters) {
2729
+ this[key] = parameters[key];
2730
+ }
2731
+ }
2704
2732
  }
2705
2733
 
2706
2734
  class TokenError extends AppError {
@@ -2712,10 +2740,11 @@ class TokenError extends AppError {
2712
2740
  class SubmitRequest extends XpsApiPartRequest {
2713
2741
  constructor(parameters) {
2714
2742
  super();
2715
- const { token, fields, form, dfpHash } = parameters;
2743
+ const { token, fields, form, dfpHash, ...restParameters } = parameters;
2716
2744
  if (token === null) {
2717
2745
  throw new TokenError();
2718
2746
  }
2747
+ this.addParameters(restParameters);
2719
2748
  this.access_token = token;
2720
2749
  if (dfpHash) {
2721
2750
  this.xps_dfp_hash = dfpHash;
@@ -2723,11 +2752,21 @@ class SubmitRequest extends XpsApiPartRequest {
2723
2752
  this.addXpsParameters(this.getFieldsValues(fields, form));
2724
2753
  }
2725
2754
  getFieldsValues(fields, form) {
2726
- return fields.reduce((xpsParams, field) => {
2755
+ const fieldValues = fields.reduce((xpsParams, field) => {
2727
2756
  const formControl = form.get(field.name);
2728
2757
  xpsParams[field.name] = formControl ? formControl.value : field?.value;
2729
2758
  return xpsParams;
2730
2759
  }, {});
2760
+ return this.splitCreditCardExpiration(fieldValues);
2761
+ }
2762
+ splitCreditCardExpiration(fieldsValues) {
2763
+ const creditCardExpiration = fieldsValues[FieldNames.cardExpire];
2764
+ if (creditCardExpiration) {
2765
+ const [month, year] = creditCardExpiration.split('/');
2766
+ fieldsValues['card_month'] = month;
2767
+ fieldsValues['card_year'] = year;
2768
+ }
2769
+ return fieldsValues;
2731
2770
  }
2732
2771
  }
2733
2772
 
@@ -2808,7 +2847,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
2808
2847
  }], ctorParameters: () => [{ type: SettingsService }] });
2809
2848
 
2810
2849
  class SubmitService {
2811
- constructor(requestFactory, responseFactory, settingsService, deviceFingerPrintService, xpsApiService, xpsResponseErrorsMappingService, encryptCreditCardService, userBehaviourAnalyticsService) {
2850
+ constructor(requestFactory, responseFactory, settingsService, deviceFingerPrintService, xpsApiService, xpsResponseErrorsMappingService, encryptCreditCardService, userBehaviourAnalyticsService, paymentSettingsService) {
2812
2851
  this.requestFactory = requestFactory;
2813
2852
  this.responseFactory = responseFactory;
2814
2853
  this.settingsService = settingsService;
@@ -2817,21 +2856,24 @@ class SubmitService {
2817
2856
  this.xpsResponseErrorsMappingService = xpsResponseErrorsMappingService;
2818
2857
  this.encryptCreditCardService = encryptCreditCardService;
2819
2858
  this.userBehaviourAnalyticsService = userBehaviourAnalyticsService;
2859
+ this.paymentSettingsService = paymentSettingsService;
2820
2860
  }
2821
2861
  // NB: Never add 'async' statement for this method!
2822
2862
  // 'Async' statement wraps current promise into another.
2823
2863
  // In this way two promises become unequal, that can broke XPS API requests logic.
2824
2864
  // eslint-disable-next-line @typescript-eslint/promise-function-async
2825
- request(fields, form) {
2865
+ request(fields, form, config) {
2826
2866
  return (this.deviceFingerPrintService
2827
2867
  .getHash()
2828
2868
  // eslint-disable-next-line @typescript-eslint/promise-function-async
2829
2869
  .then((dfpHash) => {
2870
+ const paymentSettingsParams = this.paymentSettingsService.getPaymentSettingsParams(config);
2830
2871
  const requestParams = this.requestFactory({
2831
2872
  token: this.settingsService.token,
2832
2873
  fields,
2833
2874
  form,
2834
2875
  dfpHash,
2876
+ ...paymentSettingsParams,
2835
2877
  });
2836
2878
  const encryptedRequest = this.encryptCreditCardService.encryptCreditCard(requestParams);
2837
2879
  return this.xpsApiService
@@ -2858,7 +2900,7 @@ class SubmitService {
2858
2900
  fields: Object.keys(xpsResponse.form).map((key) => xpsResponse.form[key]),
2859
2901
  });
2860
2902
  }
2861
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SubmitService, deps: [{ token: submitRequestFactoryToken }, { token: submitResponseFactoryToken }, { token: SettingsService }, { token: DeviceFingerPrintService }, { token: XpsApiService }, { token: XpsResponseErrorsMappingService }, { token: EncryptCreditCardService }, { token: UserBehaviourAnalyticsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2903
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SubmitService, deps: [{ token: submitRequestFactoryToken }, { token: submitResponseFactoryToken }, { token: SettingsService }, { token: DeviceFingerPrintService }, { token: XpsApiService }, { token: XpsResponseErrorsMappingService }, { token: EncryptCreditCardService }, { token: UserBehaviourAnalyticsService }, { token: PaymentSettingsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2862
2904
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SubmitService, providedIn: 'root' }); }
2863
2905
  }
2864
2906
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SubmitService, decorators: [{
@@ -2870,7 +2912,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
2870
2912
  }] }, { type: undefined, decorators: [{
2871
2913
  type: Inject,
2872
2914
  args: [submitResponseFactoryToken]
2873
- }] }, { type: SettingsService }, { type: DeviceFingerPrintService }, { type: XpsApiService }, { type: XpsResponseErrorsMappingService }, { type: EncryptCreditCardService }, { type: UserBehaviourAnalyticsService }] });
2915
+ }] }, { type: SettingsService }, { type: DeviceFingerPrintService }, { type: XpsApiService }, { type: XpsResponseErrorsMappingService }, { type: EncryptCreditCardService }, { type: UserBehaviourAnalyticsService }, { type: PaymentSettingsService }] });
2874
2916
 
2875
2917
  class EmitDataService {
2876
2918
  constructor() {
@@ -2884,14 +2926,15 @@ class EmitDataService {
2884
2926
 
2885
2927
  /* eslint-disable @typescript-eslint/naming-convention */
2886
2928
  class SyncRequest extends XpsApiPartRequest {
2887
- constructor(parameters) {
2929
+ constructor({ token, changedField, fields, form, ...parameters }) {
2888
2930
  super();
2889
2931
  this.xps_fix_command = 'calculate';
2890
- this.access_token = parameters.token;
2891
- const fieldsValues = this.getFieldsValues(parameters.changedField, parameters.fields, parameters.form);
2932
+ this.access_token = token;
2933
+ const fieldsValues = this.getFieldsValues(changedField, fields, form);
2934
+ this.addParameters(parameters);
2892
2935
  this.addXpsParameters({
2893
2936
  ...fieldsValues,
2894
- change_element: parameters.changedField.name,
2937
+ change_element: changedField.name,
2895
2938
  });
2896
2939
  }
2897
2940
  getFieldsValues(changedField, fields, form) {
@@ -2942,7 +2985,7 @@ const syncResponseFactoryProvider = {
2942
2985
  };
2943
2986
 
2944
2987
  class SyncService extends EmitDataService {
2945
- constructor(requestFactory, responseFactory, xpsApiService, nextActionService, settingsService, xpsResponseErrorsMappingService, encryptCreditCardService, showErrorsActionCreator, userBehaviourAnalyticsService) {
2988
+ constructor(requestFactory, responseFactory, xpsApiService, nextActionService, settingsService, xpsResponseErrorsMappingService, encryptCreditCardService, showErrorsActionCreator, userBehaviourAnalyticsService, paymentSettingsService) {
2946
2989
  super();
2947
2990
  this.requestFactory = requestFactory;
2948
2991
  this.responseFactory = responseFactory;
@@ -2953,8 +2996,10 @@ class SyncService extends EmitDataService {
2953
2996
  this.encryptCreditCardService = encryptCreditCardService;
2954
2997
  this.showErrorsActionCreator = showErrorsActionCreator;
2955
2998
  this.userBehaviourAnalyticsService = userBehaviourAnalyticsService;
2999
+ this.paymentSettingsService = paymentSettingsService;
2956
3000
  this.prevFieldSyncStates = {};
2957
3001
  this.form = new UntypedFormGroup({});
3002
+ this.paymentConfiguration = null;
2958
3003
  this.fields = [];
2959
3004
  this.fieldSyncTimers = {};
2960
3005
  this.fieldAsyncValidation = new Subject();
@@ -2962,15 +3007,17 @@ class SyncService extends EmitDataService {
2962
3007
  get fieldAsyncValidation$() {
2963
3008
  return this.fieldAsyncValidation.asObservable();
2964
3009
  }
2965
- setup(form, fields) {
3010
+ setup(form, fields, config) {
2966
3011
  this.reset();
2967
3012
  this.form = form;
2968
3013
  this.fields = fields;
3014
+ this.paymentConfiguration = config;
2969
3015
  }
2970
3016
  reset() {
2971
3017
  this.prevFieldSyncStates = {};
2972
3018
  this.form = new UntypedFormGroup({});
2973
3019
  this.fields = [];
3020
+ this.paymentConfiguration = null;
2974
3021
  }
2975
3022
  async validate(field, delay = Number('750')) {
2976
3023
  if (!this.isReadyField(field)) {
@@ -3020,11 +3067,13 @@ class SyncService extends EmitDataService {
3020
3067
  return control?.errors ?? null;
3021
3068
  }
3022
3069
  async request(field) {
3070
+ const paymentSettingsParams = this.paymentSettingsService.getPaymentSettingsParams(this.paymentConfiguration);
3023
3071
  const requestParams = this.requestFactory({
3024
3072
  token: this.settingsService.token,
3025
3073
  changedField: field,
3026
3074
  fields: this.fields,
3027
3075
  form: this.form,
3076
+ ...paymentSettingsParams,
3028
3077
  });
3029
3078
  const encryptedRequest = this.encryptCreditCardService.encryptCreditCard(requestParams);
3030
3079
  return this.xpsApiService
@@ -3066,7 +3115,7 @@ class SyncService extends EmitDataService {
3066
3115
  }
3067
3116
  this.fieldSyncTimers[field.name] = timerId;
3068
3117
  }
3069
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SyncService, deps: [{ token: syncRequestFactoryToken }, { token: syncResponseFactoryToken }, { token: XpsApiService }, { token: NextActionService }, { token: SettingsService }, { token: XpsResponseErrorsMappingService }, { token: EncryptCreditCardService }, { token: ShowErrorsActionCreator }, { token: UserBehaviourAnalyticsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SyncService, deps: [{ token: syncRequestFactoryToken }, { token: syncResponseFactoryToken }, { token: XpsApiService }, { token: NextActionService }, { token: SettingsService }, { token: XpsResponseErrorsMappingService }, { token: EncryptCreditCardService }, { token: ShowErrorsActionCreator }, { token: UserBehaviourAnalyticsService }, { token: PaymentSettingsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3070
3119
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SyncService, providedIn: 'root' }); }
3071
3120
  }
3072
3121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SyncService, decorators: [{
@@ -3080,7 +3129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
3080
3129
  }] }, { type: undefined, decorators: [{
3081
3130
  type: Inject,
3082
3131
  args: [syncResponseFactoryToken]
3083
- }] }, { type: XpsApiService }, { type: NextActionService }, { type: SettingsService }, { type: XpsResponseErrorsMappingService }, { type: EncryptCreditCardService }, { type: ShowErrorsActionCreator }, { type: UserBehaviourAnalyticsService }] });
3132
+ }] }, { type: XpsApiService }, { type: NextActionService }, { type: SettingsService }, { type: XpsResponseErrorsMappingService }, { type: EncryptCreditCardService }, { type: ShowErrorsActionCreator }, { type: UserBehaviourAnalyticsService }, { type: PaymentSettingsService }] });
3084
3133
 
3085
3134
  function convert(validator, message) {
3086
3135
  return (control) => {
@@ -3115,6 +3164,9 @@ class Converter {
3115
3164
  if (formState?.disabled) {
3116
3165
  config.disabled = true;
3117
3166
  }
3167
+ if (field.value) {
3168
+ config.initialValue = field.value;
3169
+ }
3118
3170
  return config;
3119
3171
  }
3120
3172
  convertToFormControl(field) {
@@ -3406,15 +3458,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
3406
3458
  type: Injectable
3407
3459
  }], ctorParameters: () => [{ type: SyncService }, { type: CreditCardMinLengthValidator }, { type: CreditCardMinLengthValidator }] });
3408
3460
 
3409
- const maxMonths = 12;
3410
- const getMinMonth = (parsedYear) => {
3461
+ const maxMonths$1 = 12;
3462
+ const getMinMonth$1 = (parsedYear) => {
3411
3463
  let minMonth = 1;
3412
3464
  const year = parsedYear ? Number('20' + parsedYear) : null;
3413
3465
  const today = new Date();
3414
3466
  minMonth = year === today.getFullYear() ? today.getMonth() + 1 : 1;
3415
3467
  return minMonth;
3416
3468
  };
3417
- const sendErrMessage$1 = (fn) => ({
3469
+ const sendErrMessage$2 = (fn) => ({
3418
3470
  cardMonthExpiration: {
3419
3471
  message: fn,
3420
3472
  },
@@ -3424,20 +3476,20 @@ function cardMonthValidator(formState) {
3424
3476
  const { value } = control;
3425
3477
  if (typeof value !== 'string')
3426
3478
  return null;
3427
- const minMonth = getMinMonth(formState?.cardYearValue ?? null);
3479
+ const minMonth = getMinMonth$1(formState?.cardYearValue ?? null);
3428
3480
  const twoDigitsRegex = new RegExp(/^\d{2}$/);
3429
3481
  const fieldCommonLength = 2;
3430
3482
  if (value.length !== fieldCommonLength) {
3431
- return sendErrMessage$1(`Enter ${fieldCommonLength} characters`);
3483
+ return sendErrMessage$2(`Enter ${fieldCommonLength} characters`);
3432
3484
  }
3433
3485
  if (!twoDigitsRegex.test(value)) {
3434
- return sendErrMessage$1(`Enter a valid expiration month`);
3486
+ return sendErrMessage$2(`Enter a valid expiration month`);
3435
3487
  }
3436
3488
  if (Number(value) < minMonth) {
3437
- return sendErrMessage$1(`Enter a month greater than or equal to ${minMonth}`);
3489
+ return sendErrMessage$2(`Enter a month greater than or equal to ${minMonth}`);
3438
3490
  }
3439
- if (Number(value) > maxMonths) {
3440
- return sendErrMessage$1(`Enter a month less than or equal to ${maxMonths}`);
3491
+ if (Number(value) > maxMonths$1) {
3492
+ return sendErrMessage$2(`Enter a month less than or equal to ${maxMonths$1}`);
3441
3493
  }
3442
3494
  return null;
3443
3495
  };
@@ -3866,36 +3918,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
3866
3918
  type: Injectable
3867
3919
  }], ctorParameters: () => [{ type: SyncService }] });
3868
3920
 
3869
- const sendErrMessage = (fn) => ({
3921
+ const sendErrMessage$1 = (fn) => ({
3870
3922
  cardYearExpiration: {
3871
3923
  message: fn,
3872
3924
  },
3873
3925
  });
3874
- const getLastCharactersInYear = (str = new Date().getFullYear().toString()) => {
3926
+ const getLastCharactersInYear$1 = (str = new Date().getFullYear().toString()) => {
3875
3927
  // for getting last characters in year; need to check in future
3876
3928
  return str.slice(str.length - 2);
3877
3929
  };
3878
3930
  // Карта выдается максимум на 50 лет
3879
- const maxYearsCount = 50;
3931
+ const maxYearsCount$1 = 50;
3880
3932
  function cardYearValidator(control) {
3881
3933
  const { value } = control;
3882
3934
  if (typeof value !== 'string')
3883
3935
  return null;
3884
- const minYear = parseInt(getLastCharactersInYear(), 10);
3936
+ const minYear = parseInt(getLastCharactersInYear$1(), 10);
3885
3937
  const twoDigitsRegex = new RegExp(/^\d{2}$/);
3886
3938
  const fieldCommonLength = 2;
3887
3939
  if (value.length !== fieldCommonLength) {
3888
- return sendErrMessage(`Enter ${fieldCommonLength} characters`);
3940
+ return sendErrMessage$1(`Enter ${fieldCommonLength} characters`);
3889
3941
  }
3890
3942
  if (!twoDigitsRegex.test(value)) {
3891
- return sendErrMessage(`Enter a valid expiration year`);
3943
+ return sendErrMessage$1(`Enter a valid expiration year`);
3892
3944
  }
3893
3945
  if (Number(value) < minYear) {
3894
- return sendErrMessage(`Enter a year greater than or equal to ${minYear}`);
3946
+ return sendErrMessage$1(`Enter a year greater than or equal to ${minYear}`);
3895
3947
  }
3896
- const maxValidYear = minYear + maxYearsCount;
3948
+ const maxValidYear = minYear + maxYearsCount$1;
3897
3949
  if (Number(value) > maxValidYear) {
3898
- return sendErrMessage(`Enter a year less than or equal to ${maxValidYear}`);
3950
+ return sendErrMessage$1(`Enter a year less than or equal to ${maxValidYear}`);
3899
3951
  }
3900
3952
  return null;
3901
3953
  }
@@ -3981,11 +4033,105 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
3981
4033
  type: Injectable
3982
4034
  }], ctorParameters: () => [{ type: SyncService }] });
3983
4035
 
4036
+ const getMinMonth = (parsedYear) => {
4037
+ let minMonth = 1;
4038
+ if (parsedYear) {
4039
+ const year = parsedYear ? Number('20' + parsedYear) : null;
4040
+ const today = new Date();
4041
+ minMonth = year === today.getFullYear() ? today.getMonth() + 1 : 1;
4042
+ }
4043
+ return minMonth;
4044
+ };
4045
+ const sendErrMessage = (fn) => ({
4046
+ rewritableError: {
4047
+ message: fn,
4048
+ },
4049
+ });
4050
+ const getLastCharactersInYear = (str = new Date().getFullYear().toString()) => {
4051
+ // for getting last characters in year; need to check in future
4052
+ return str.slice(str.length - 2);
4053
+ };
4054
+ const sliceMmYy = (value) => {
4055
+ const sliceIndex = 2;
4056
+ const month = value.slice(0, sliceIndex);
4057
+ const year = value.slice(-sliceIndex);
4058
+ return { month, year };
4059
+ };
4060
+ const maxYearsCount = 50;
4061
+ function cardExpValidator(control) {
4062
+ const { value } = control;
4063
+ if (typeof value !== 'string')
4064
+ return null;
4065
+ const { month, year } = sliceMmYy(value);
4066
+ const minMonth = getMinMonth(year);
4067
+ const minYear = parseInt(getLastCharactersInYear(), 10);
4068
+ const twoDigitsRegex = new RegExp(/^\d{2}$/);
4069
+ const fieldCommonLength = 4;
4070
+ const trickyFieldLength = fieldCommonLength + 1;
4071
+ if (value.length !== trickyFieldLength) {
4072
+ return sendErrMessage(`Enter ${fieldCommonLength} characters`);
4073
+ }
4074
+ if (!twoDigitsRegex.test(month)) {
4075
+ return sendErrMessage('Enter a valid expiration month');
4076
+ }
4077
+ if (Number(month) < minMonth) {
4078
+ return sendErrMessage(`Enter a month greater than or equal to ${minMonth}`);
4079
+ }
4080
+ if (Number(month) > maxMonths) {
4081
+ return sendErrMessage(`Enter a month less than or equal to ${maxMonths}`);
4082
+ }
4083
+ if (!twoDigitsRegex.test(year)) {
4084
+ return sendErrMessage(`Enter a valid expiration year`);
4085
+ }
4086
+ if (Number(year) < minYear) {
4087
+ return sendErrMessage(`Enter a year greater than or equal to ${minYear}`);
4088
+ }
4089
+ const maxValidYear = minYear + maxYearsCount;
4090
+ if (Number(year) > maxValidYear) {
4091
+ return sendErrMessage(`Enter a year less than or equal to ${maxValidYear}`);
4092
+ }
4093
+ return null;
4094
+ }
4095
+
4096
+ const maxMonths = 12;
4097
+ class CardExpirationConverter extends Converter {
4098
+ constructor(syncService) {
4099
+ super(syncService);
4100
+ }
4101
+ getValidators(field) {
4102
+ return super.getValidators(field).concat([cardExpValidator]);
4103
+ }
4104
+ createControlConfig(field, formState) {
4105
+ const config = this.createDefaultControlConfig(TextControlConfig, field);
4106
+ config.maskConfig = {
4107
+ mask: '99/99',
4108
+ guide: false,
4109
+ };
4110
+ config.inputMode = 'numeric';
4111
+ config.placeholder = 'MM/YY';
4112
+ config.title = 'MM/YY';
4113
+ config.disabled = formState?.disabled ?? false;
4114
+ return config;
4115
+ }
4116
+ getAutocomplete() {
4117
+ return 'cc-exp';
4118
+ }
4119
+ getDataType() {
4120
+ return 'text';
4121
+ }
4122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CardExpirationConverter, deps: [{ token: SyncService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4123
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CardExpirationConverter }); }
4124
+ }
4125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CardExpirationConverter, decorators: [{
4126
+ type: Injectable
4127
+ }], ctorParameters: () => [{ type: SyncService }] });
4128
+
3984
4129
  const convertersMapToken = new InjectionToken('ConvertersTokensMap');
3985
4130
  const convertersMap = {
3986
4131
  card_number: CardNumberConverter,
3987
4132
  card_month: CardMonthConverter,
3988
4133
  card_year: CardYearConverter,
4134
+ card_expire: CardExpirationConverter,
3989
4135
  cvv: CvvConverter,
3990
4136
  extra_cvv: CvvConverter,
3991
4137
  zip: ZipConverter,
@@ -6492,7 +6638,7 @@ class PaymentService {
6492
6638
  this.fields = this.getFields();
6493
6639
  this.form = this.formService.createForm(this.fields);
6494
6640
  this.updatePidConfig();
6495
- this.setupSyncService(this.form, this.fields);
6641
+ this.setupSyncService(this.form, this.fields, config);
6496
6642
  this.listenFormStatusChanges(this.form);
6497
6643
  const isNeedAutoSubmit = this.canAutoSubmit();
6498
6644
  if (isNeedAutoSubmit) {
@@ -6519,7 +6665,7 @@ class PaymentService {
6519
6665
  return;
6520
6666
  }
6521
6667
  this.isSavingMethodMode = this.fields.some(({ name, value }) => name === 'savePsAccountOnly' && value === "1" /* XpsBoolean.true */);
6522
- const submitResponse = await this.submitService.request(this.fields, this.form);
6668
+ const submitResponse = await this.submitService.request(this.fields, this.form, this.config);
6523
6669
  this.data = submitResponse;
6524
6670
  this.emitFormResponse(this.data);
6525
6671
  if (!this.isSavingMethodMode) {
@@ -6534,7 +6680,7 @@ class PaymentService {
6534
6680
  }
6535
6681
  this.fields = this.getFields();
6536
6682
  this.form = this.formService.createForm(this.fields);
6537
- this.syncService.setup(this.form, this.fields);
6683
+ this.syncService.setup(this.form, this.fields, this.config);
6538
6684
  return this.nextActionService.getNextAction(submitResponse);
6539
6685
  }
6540
6686
  getFields() {
@@ -6740,8 +6886,8 @@ class PaymentService {
6740
6886
  emitFormMessages(messages) {
6741
6887
  this.formMessagesService.emitOnResponse(messages);
6742
6888
  }
6743
- setupSyncService(form, fields) {
6744
- this.syncService.setup(form, fields);
6889
+ setupSyncService(form, fields, config) {
6890
+ this.syncService.setup(form, fields, config);
6745
6891
  this.syncService.data$
6746
6892
  .pipe(takeUntil(this.destroy$))
6747
6893
  .subscribe((response) => {
@@ -7611,6 +7757,7 @@ class FormModule {
7611
7757
  CardNumberConverter,
7612
7758
  CardMonthConverter,
7613
7759
  CardYearConverter,
7760
+ CardExpirationConverter,
7614
7761
  CvvConverter,
7615
7762
  CvvConverter,
7616
7763
  ZipConverter,
@@ -7645,6 +7792,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
7645
7792
  CardNumberConverter,
7646
7793
  CardMonthConverter,
7647
7794
  CardYearConverter,
7795
+ CardExpirationConverter,
7648
7796
  CvvConverter,
7649
7797
  CvvConverter,
7650
7798
  ZipConverter,