@xsolla/payment-client-core 0.1.21 → 0.2.0

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 (88) hide show
  1. package/esm2020/lib/core/extended-window.interface.mjs +1 -1
  2. package/esm2020/lib/core/payment/actions/action.interface.mjs +1 -1
  3. package/esm2020/lib/core/payment/actions/check-status/check-status.action.class.mjs +19 -11
  4. package/esm2020/lib/core/payment/actions/check-status/check-status.action.type.mjs +1 -1
  5. package/esm2020/lib/core/payment/actions/next-action.interface.mjs +1 -1
  6. package/esm2020/lib/core/payment/actions/next-action.service.mjs +12 -11
  7. package/esm2020/lib/core/payment/actions/next-actions.mjs +15 -13
  8. package/esm2020/lib/core/payment/actions/redirect/pay-station4-url.const.mjs +3 -0
  9. package/esm2020/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.mjs +7 -0
  10. package/esm2020/lib/core/payment/actions/redirect/ps4-pages/pages-routes.const.mjs +9 -0
  11. package/esm2020/lib/core/payment/actions/redirect/redirect.action.class.mjs +51 -11
  12. package/esm2020/lib/core/payment/actions/show-errors/show-errors.action.class.mjs +18 -5
  13. package/esm2020/lib/core/payment/actions/show-fields/show-fields.action.class.mjs +26 -8
  14. package/esm2020/lib/core/payment/actions/special-button/special-button.action.class.mjs +41 -0
  15. package/esm2020/lib/core/payment/actions/special-button/special-button.action.type.mjs +2 -0
  16. package/esm2020/lib/core/payment/actions/status-updated/status-updated.action.class.mjs +26 -11
  17. package/esm2020/lib/core/payment/actions/three-ds/three-ds.action.class.mjs +19 -4
  18. package/esm2020/lib/core/payment/initialize/initialize.service.mjs +7 -6
  19. package/esm2020/lib/core/payment/payment.service.mjs +20 -4
  20. package/esm2020/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.mjs +11 -6
  21. package/esm2020/lib/core/payment/status/status.service.mjs +7 -6
  22. package/esm2020/lib/core/payment/sync/sync.service.mjs +7 -6
  23. package/esm2020/lib/core/payment/three-ds/three-ds.service.mjs +10 -8
  24. package/esm2020/lib/core/payment/xps-checkout.mjs +2 -0
  25. package/esm2020/lib/core/sdk-payment-systems/google-pay/google-pay-checkout.interface.mjs +2 -0
  26. package/esm2020/lib/core/sdk-payment-systems/google-pay/google-pay-init-params.interface.mjs +2 -0
  27. package/esm2020/lib/core/sdk-payment-systems/google-pay/google-pay-library.interface.mjs +2 -0
  28. package/esm2020/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +205 -0
  29. package/esm2020/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.mjs +84 -0
  30. package/esm2020/lib/core/sdk-payment-systems/sdk-payment-methods.const.mjs +2 -0
  31. package/esm2020/lib/core/sdk-payment-systems/sdk-payment-systems-initial-data.interface.mjs +2 -0
  32. package/esm2020/lib/core/sdk-payment-systems/sdk-payment-systems.interface.mjs +2 -0
  33. package/esm2020/lib/core-library.module.mjs +1 -1
  34. package/esm2020/lib/core-library.service.mjs +25 -4
  35. package/fesm2015/xsolla-payment-client-core.mjs +570 -162
  36. package/fesm2015/xsolla-payment-client-core.mjs.map +1 -1
  37. package/fesm2020/xsolla-payment-client-core.mjs +561 -160
  38. package/fesm2020/xsolla-payment-client-core.mjs.map +1 -1
  39. package/lib/core/extended-window.interface.d.ts +4 -1
  40. package/lib/core/payment/actions/action.interface.d.ts +7 -0
  41. package/lib/core/payment/actions/check-status/check-status.action.class.d.ts +8 -5
  42. package/lib/core/payment/actions/check-status/check-status.action.type.d.ts +1 -10
  43. package/lib/core/payment/actions/next-action.interface.d.ts +2 -1
  44. package/lib/core/payment/actions/next-action.service.d.ts +3 -1
  45. package/lib/core/payment/actions/next-actions.d.ts +4 -4
  46. package/lib/core/payment/actions/redirect/pay-station4-url.const.d.ts +2 -0
  47. package/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.d.ts +6 -0
  48. package/lib/core/payment/actions/redirect/ps4-pages/pages-routes.const.d.ts +1 -0
  49. package/lib/core/payment/actions/redirect/redirect.action.class.d.ts +14 -6
  50. package/lib/core/payment/actions/show-errors/show-errors.action.class.d.ts +9 -4
  51. package/lib/core/payment/actions/show-fields/show-fields.action.class.d.ts +8 -5
  52. package/lib/core/payment/actions/special-button/special-button.action.class.d.ts +14 -0
  53. package/lib/core/payment/actions/special-button/special-button.action.type.d.ts +10 -0
  54. package/lib/core/payment/actions/status-updated/status-updated.action.class.d.ts +12 -5
  55. package/lib/core/payment/actions/three-ds/three-ds.action.class.d.ts +8 -5
  56. package/lib/core/payment/initialize/initialize.service.d.ts +3 -1
  57. package/lib/core/payment/payment.service.d.ts +7 -1
  58. package/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.d.ts +3 -1
  59. package/lib/core/payment/status/status.service.d.ts +3 -1
  60. package/lib/core/payment/sync/sync.service.d.ts +3 -1
  61. package/lib/core/payment/three-ds/three-ds.service.d.ts +5 -1
  62. package/lib/core/payment/xps-checkout.d.ts +17 -0
  63. package/lib/core/sdk-payment-systems/google-pay/google-pay-checkout.interface.d.ts +17 -0
  64. package/lib/core/sdk-payment-systems/google-pay/google-pay-init-params.interface.d.ts +4 -0
  65. package/lib/core/sdk-payment-systems/google-pay/google-pay-library.interface.d.ts +83 -0
  66. package/lib/core/sdk-payment-systems/google-pay/google-pay.service.d.ts +37 -0
  67. package/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.d.ts +20 -0
  68. package/lib/core/sdk-payment-systems/sdk-payment-methods.const.d.ts +1 -0
  69. package/lib/core/sdk-payment-systems/sdk-payment-systems-initial-data.interface.d.ts +6 -0
  70. package/lib/core/sdk-payment-systems/sdk-payment-systems.interface.d.ts +21 -0
  71. package/lib/core-library.service.d.ts +7 -1
  72. package/package.json +1 -1
  73. package/xsolla-payment-client-core-0.2.0.tgz +0 -0
  74. package/esm2020/lib/core/payment/actions/action-factory-value.interface.mjs +0 -2
  75. package/esm2020/lib/core/payment/actions/check-status/check-status.action.token.mjs +0 -14
  76. package/esm2020/lib/core/payment/actions/redirect/redirect.action.token.mjs +0 -16
  77. package/esm2020/lib/core/payment/actions/show-errors/show-errors.action.token.mjs +0 -13
  78. package/esm2020/lib/core/payment/actions/show-fields/show-fields.action.token.mjs +0 -15
  79. package/esm2020/lib/core/payment/actions/status-updated/status-updated.action.token.mjs +0 -11
  80. package/esm2020/lib/core/payment/actions/three-ds/three-ds.action.token.mjs +0 -11
  81. package/lib/core/payment/actions/action-factory-value.interface.d.ts +0 -6
  82. package/lib/core/payment/actions/check-status/check-status.action.token.d.ts +0 -4
  83. package/lib/core/payment/actions/redirect/redirect.action.token.d.ts +0 -4
  84. package/lib/core/payment/actions/show-errors/show-errors.action.token.d.ts +0 -4
  85. package/lib/core/payment/actions/show-fields/show-fields.action.token.d.ts +0 -4
  86. package/lib/core/payment/actions/status-updated/status-updated.action.token.d.ts +0 -4
  87. package/lib/core/payment/actions/three-ds/three-ds.action.token.d.ts +0 -4
  88. package/xsolla-payment-client-core-0.1.21.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"xsolla-payment-client-core.mjs","sources":["../../../packages/payment-client-core/src/lib/core/payment/form/masks-functions.map.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/app-error.class.ts","../../../packages/payment-client-core/src/lib/core/settings/empty-utils-response.error.ts","../../../packages/payment-client-core/src/lib/core/window.token.ts","../../../packages/payment-client-core/src/lib/core/http/secure-api/api-url.const.ts","../../../packages/payment-client-core/src/lib/core/http/secure-api/secure-api.service.ts","../../../packages/payment-client-core/src/lib/core/settings/settings.service.ts","../../../packages/payment-client-core/src/lib/core/country/country.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/response-error.class.ts","../../../packages/payment-client-core/src/lib/core/boolean-number.enum.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods.service.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods-response.class.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods-response.token.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods.service.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance-response.class.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance-response.token.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance.service.ts","../../../packages/payment-client-core/src/lib/core/url/url.service.ts","../../../packages/payment-client-core/src/lib/core/payment/config/config.service.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-comand.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/field-names.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/submit-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/response/initialize-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/is-submit-response.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/input-event.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-errors/show-errors.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/response/initialize-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/credit-card-payment-methods-id.variable.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api/xps-api.service.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-fields/show-fields.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-fields/show-fields.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/check-status/check-status.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/check-status/check-status.action.token.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/terminal-error.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-groups.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/response/status-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/status-updated/status-updated.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/status-updated/status-updated.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/redirect.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/redirect.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-errors/show-errors.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/three-ds/three-ds.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/three-ds/three-ds.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/next-actions.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/next-action.service.ts","../../../packages/payment-client-core/src/lib/core/errors-mapping/card-number-sanction-error-codes.const.ts","../../../packages/payment-client-core/src/lib/core/errors-mapping/field-special-errors-map.const.ts","../../../packages/payment-client-core/src/lib/shared/pipes/unescape-html/unescape-html.pipe.ts","../../../packages/payment-client-core/src/lib/core/errors-mapping/xps-response-errors-mapping.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/elk-error-types.enum.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/tagged-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/encrypt-card-error.ts","../../../packages/payment-client-core/src/lib/core/credit-card/four-block-mask.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/credit-card-types.enum.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/visa.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/mastercard.ts","../../../packages/payment-client-core/src/lib/core/credit-card/default-mask.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/maestro.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/american-express.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/diners-clubs.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/discover.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/jcb.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/dankort.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/hipercard.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/elo.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/aura.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/naranja.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/mir.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/china-union-pay.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/default-card.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/postepay.ts","../../../packages/payment-client-core/src/lib/core/credit-card/ordered-cards-settings.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/credit-cards-map.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/credit-card.service.ts","../../../packages/payment-client-core/src/lib/core/encrypt-credit-card/encrypt-credit-card.service.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/initialize.service.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api-part-request.abstract.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/token-error.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/request/submit-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/request/submit-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/submit-response.token.ts","../../../packages/payment-client-core/src/lib/core/device-finger-print/device-finger-print.service.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/submit.service.ts","../../../packages/payment-client-core/src/lib/core/payment/emit-data.service.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/request/sync-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/request/sync-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/response/sync-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/response/sync-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/control-config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/text-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/convert.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/email/email-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/required/required.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/converter.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/email/email.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/restricted-value/restricted-value.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/zip/zip.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/is-empty-input-value.function.ts","../../../packages/payment-client-core/src/lib/core/type-guards/is-string.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/card-number/card-number-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/card-number/card-number.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/card-month/card-month.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/card-month/card-month.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cvv/cvv.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/birth-date/birth-date.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/birth-date/birth-date.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cardholder-name/cardholder-name.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cpf-name/cpf-name-regex.variable.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cpf-name/cpf-name.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cpf-number/cpf-number.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/street-number/street-number.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/text/text.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/checkbox/checkbox-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/checkbox/checkbox.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/search-select/search-select-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/select/select.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/pin/pin.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/radio-control/radio-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/radio-group/radio-group.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/pricepoint/pricepoint.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/coupon/coupon-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/coupon/coupon-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/coupon/coupon.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/card-year/card-year.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/card-year/card-year.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/phone-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/min-length-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/max-length-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/phone-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/phone.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/converters-map.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/control-config.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form/form.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-search-param.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/required-status-search-params.const.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-search-params.map.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api-part.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/request/status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/request/status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/response/status-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-request.service.ts","../../../packages/payment-client-core/src/lib/core/type-guards/is-null.function.ts","../../../packages/payment-client-core/src/lib/core/type-guards/is-undefined.function.ts","../../../packages/payment-client-core/src/lib/core/session/session.service.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/price.helpers.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/summary/default-image-patterns.const.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/vat-details-key.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/summary/sales-tax-details-key.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/status/fields-with-currency.ts","../../../packages/payment-client-core/src/lib/core/country/country-iso-code.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/status/status-finance-details-adapter.service.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/finance-details.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/request/check-status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/request/check-status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/response/check-status-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/response/check-status-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/check-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/websocket-status/websocket-status.enum.ts","../../../packages/payment-client-core/src/lib/core/web-socket/web-socket-client-type.enum.ts","../../../packages/payment-client-core/src/lib/core/web-socket/nchan-web-socket.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/ws-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/elk/elk-logger.service.ts","../../../packages/payment-client-core/src/lib/core/web-socket/centrifugo-web-socket.service.ts","../../../packages/payment-client-core/src/lib/core/web-socket/web-socket.factory.ts","../../../packages/payment-client-core/src/lib/core/payment/status/websocket-status/websocket-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/listen-status/listen-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/title-class.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/save-payment-method-status/save-payment-method-status.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-response.error.ts","../../../packages/payment-client-core/src/lib/core/payment/status/save-payment-method-status/api/saved-payment-account-changes.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/credit-card-state/credit-card-state.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/three-ds-status-websocket-types.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/status-types.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/status-three-ds.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/notify-dfp-status/notify-dfp-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/reinsurance-check/reinsurance-check.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/three-ds-20/three-ds20.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/three-ds.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form-messages/form-messages.service.ts","../../../packages/payment-client-core/src/lib/core/payment/payment.service.ts","../../../packages/payment-client-core/src/lib/core/legal/refund-policy.service.ts","../../../packages/payment-client-core/src/lib/core/legal/secure-connection.service.ts","../../../packages/payment-client-core/src/lib/core/legal/disclaimer.service.ts","../../../packages/payment-client-core/src/lib/core/legal/legal.service.ts","../../../packages/payment-client-core/src/lib/core/edit-saved-methods/edit-saved-methods.service.ts","../../../packages/payment-client-core/src/lib/core-library.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/http-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/http-interceptor/http-exceptions.interceptor.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/validators.module.ts","../../../packages/payment-client-core/src/lib/core/payment/form/form.module.ts","../../../packages/payment-client-core/src/lib/shared/pipes/pipes.module.ts","../../../packages/payment-client-core/src/lib/core-library.module.ts","../../../packages/payment-client-core/src/public-api.ts","../../../packages/payment-client-core/src/xsolla-payment-client-core.ts"],"sourcesContent":["export const masksFunctionsMap: { [fieldNameOrType: string]: () => string } = {\n zip: () => {\n const zipLength = 5;\n return new Array(zipLength).fill('9').join('');\n },\n};\n","export class AppError extends Error {\n public constructor(message: string) {\n super(message);\n }\n}\n","import { AppError } from '../exceptions-handling/errors/app-error.class';\n\nexport class EmptyUtilsResponseError extends AppError {\n public constructor() {\n super('Utils response is empty or not requested. Check your token.');\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ExtendedWindow } from './extended-window.interface';\n\nexport const windowToken: InjectionToken<ExtendedWindow> = new InjectionToken(\n 'window'\n);\n","export const defaultApiUrl = 'https://secure.xsolla.com/paystation2/api/';\nexport const sandboxApiUrl =\n 'https://sandbox-secure.xsolla.com/paystation2/api/';\n","import { Observable } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { windowToken } from '../../window.token';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { RequestOptions } from './options.interface';\nimport { defaultApiUrl, sandboxApiUrl } from './api-url.const';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureApiClient {\n private isSandboxMode = false;\n\n public constructor(\n private readonly httpClient: HttpClient,\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public setSandboxMode(isSandboxMode: boolean): void {\n this.isSandboxMode = isSandboxMode;\n }\n\n public get<T>(url: string, options?: RequestOptions): Observable<T> {\n return this.httpClient.get<T>(`${this.baseUrl}${url}`, options);\n }\n\n public post<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.post<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public patch<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.patch<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public put<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.put<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public delete<T>(url: string, options?: RequestOptions): Observable<T> {\n return this.httpClient.delete<T>(`${this.baseUrl}${url}`, options);\n }\n\n public get baseUrl(): string {\n let predefinedBaseUrl: string | null = null;\n\n try {\n predefinedBaseUrl = this.window.localStorage.getItem('devApiUrl');\n } catch (e: unknown) {\n console.warn('localStorage is not available');\n }\n\n if (predefinedBaseUrl) {\n return predefinedBaseUrl;\n }\n\n return this.isSandboxMode ? sandboxApiUrl : defaultApiUrl;\n }\n}\n","import { firstValueFrom } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { HttpParams } from '@angular/common/http';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { DeepReadonly } from '../deep-readonly.type';\nimport { InitConfiguration } from './configuration.interface';\nimport { EmptyUtilsResponseError } from './empty-utils-response.error';\nimport { User } from './user.interface';\nimport { Settings } from './settings.interface';\nimport { Purchase } from './purchase.interface';\nimport { Project } from './project.interface';\nimport { UtilsResponse } from './utils-response.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SettingsService {\n public get project(): DeepReadonly<Project> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.project;\n }\n\n public get purchase(): DeepReadonly<Purchase> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.purchase;\n }\n\n public get settings(): DeepReadonly<Settings> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n if (this.response?.purchase_external_id) {\n return {\n ...this.response.settings,\n purchase_external_id: this.response.purchase_external_id,\n };\n }\n\n return this.response?.settings;\n }\n\n public get user(): DeepReadonly<User> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.user;\n }\n\n public get utilsResponse(): DeepReadonly<UtilsResponse> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response;\n }\n\n public get isEmpty(): boolean {\n return !this.response;\n }\n\n public get token(): string {\n return this._token;\n }\n\n public get hasResponse(): boolean {\n return !!this.response;\n }\n\n public isInitialized = false;\n\n private response!: DeepReadonly<UtilsResponse> | undefined;\n\n private _token = '';\n\n private sandboxMode = false;\n\n public constructor(private readonly secureApi: SecureApiClient) {}\n\n public async init(configuration: InitConfiguration): Promise<void> {\n if (!configuration.token) {\n return Promise.reject('token is missing');\n }\n\n this._token = configuration.token;\n this.sandboxMode = !!configuration.sandbox;\n\n await this.sendRequest(this.token);\n\n this.isInitialized = true;\n }\n\n public isSandboxMode(): boolean {\n return this.sandboxMode;\n }\n\n private async sendRequest(token: string): Promise<void> {\n const params = new HttpParams().set('access_token', token);\n\n this.secureApi.setSandboxMode(this.isSandboxMode());\n\n this.response = await firstValueFrom(\n this.secureApi.get<UtilsResponse>('utils', { params })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CountryService {\n private userDefinedCountry: string | null = null;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public setCountry(country: string): void {\n this.userDefinedCountry = country;\n }\n\n public getCountry(): string {\n return this.userDefinedCountry ?? this.getTokenCountry();\n }\n\n private getTokenCountry(): string {\n return this.settingsService.user.country.value;\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class ResponseError extends AppError {\n public constructor(message?: string) {\n super('Response failed' + (message ? `: \"${message}\".` : '.'));\n }\n}\n","export enum BooleanNumber {\n false = 0,\n true = 1,\n}\n","import { BooleanNumber } from '../boolean-number.enum';\nimport { PaymentMethodApi } from './payment-method-api.interface';\nimport { PaymentMethod } from './payment-method.interface';\nimport { PaymentMethodsApi } from './payment-methods-api.interface';\n\nexport class PaymentMethodsResponse {\n public readonly top: PaymentMethod[];\n public readonly especial: PaymentMethod[];\n public readonly remained: PaymentMethod[];\n public readonly remainedCount: { total: number; visible: number };\n\n public constructor(paymentMethods: PaymentMethodsApi) {\n this.especial = paymentMethods.especial.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.top = paymentMethods.top.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.remained = paymentMethods.remained.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.remainedCount = {\n total: paymentMethods.remained_count.total,\n visible: paymentMethods.remained_count.visible,\n };\n }\n\n private mapPaymentMethod(method: PaymentMethodApi): PaymentMethod {\n return {\n id: method.id,\n rank: method.rank,\n name: method.name,\n aliases: method.aliases,\n categories: method.cat,\n isVisible: method.is_visible,\n recommended: method.recommended === BooleanNumber.true,\n enabledSaveAccount: method.enabled_save_account,\n iconName: method.switch_icon_name,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { PaymentMethodsResponse } from './payment-methods-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof PaymentMethodsResponse>;\n\nexport type PaymentMethodsResponseFactory = (\n ...args: ResponseParameters\n) => PaymentMethodsResponse;\n\nexport const paymentMethodsResponseFactoryToken: InjectionToken<PaymentMethodsResponseFactory> =\n new InjectionToken<PaymentMethodsResponseFactory>('PaymentMethodsResponse');\n\nexport const paymentMethodsResponseFactoryProvider: ValueProvider = {\n provide: paymentMethodsResponseFactoryToken,\n useValue: (...args: ResponseParameters) =>\n new PaymentMethodsResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { CountryService } from '../country/country.service';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { PaymentMethod } from './payment-method.interface';\nimport { PaymentMethodsRequestParams } from './payment-methods-request-params.interface';\nimport { PaymentMethodsResponse } from './payment-methods-response.class';\nimport { PaymentMethodsResponseApi } from './payment-methods-response.interface';\nimport {\n PaymentMethodsResponseFactory,\n paymentMethodsResponseFactoryToken,\n} from './payment-methods-response.token';\nimport { XpsBoolean } from '../xps-boolean.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentMethodsService {\n private readonly apiRoute = 'remained_payment_methods';\n\n private readonly cache = new Map<string, Promise<PaymentMethodsResponse>>();\n\n public constructor(\n @Inject(paymentMethodsResponseFactoryToken)\n private readonly responseFactory: PaymentMethodsResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getList(isSaveMethodMode?: boolean): Promise<PaymentMethod[]> {\n const response = await this.request(isSaveMethodMode);\n\n if (this.isFixedPaymentMethod) {\n return this.filterMethodsByFixedPaymentMethod(response.remained);\n }\n\n return response.remained;\n }\n\n public async getQuickMethods(): Promise<PaymentMethod[]> {\n const response = await this.request();\n return response.especial;\n }\n\n private async request(\n isSaveMethodMode?: boolean\n ): Promise<PaymentMethodsResponse> {\n const requestParams: PaymentMethodsRequestParams = {\n access_token: this.settingsService.token,\n country: this.countryService.getCountry(),\n save_payment_account_only: isSaveMethodMode\n ? XpsBoolean.true\n : XpsBoolean.false,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<PaymentMethodsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n map((response) => this.responseFactory(response.payment_methods))\n )\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n\n private filterMethodsByFixedPaymentMethod(\n methods: PaymentMethod[]\n ): PaymentMethod[] {\n const fixedPid = this.settingsService.purchase?.payment_system?.id;\n const paymentMethod = methods.find((method) => method.id === fixedPid);\n\n return paymentMethod ? [paymentMethod] : [];\n }\n\n private get isFixedPaymentMethod(): boolean {\n return !!this.settingsService.purchase?.payment_system?.id;\n }\n}\n","import { SavedMethodsResponseApi } from './saved-methods-response.interface';\nimport { SavedMethodApi } from './saved-method-api.interface';\nimport { SavedMethod } from './saved-method.interface';\n\nexport class SavedMethodsResponse {\n public readonly list: SavedMethod[];\n\n public constructor(savedMethods: SavedMethodsResponseApi) {\n this.list = savedMethods.list.map((method) => this.mapSavedMethod(method));\n }\n\n private mapSavedMethod(method: SavedMethodApi): SavedMethod {\n return {\n currency: method.currency,\n form: method.form,\n id: method.id,\n isSelected: method.isSelected,\n isBabkaPay: method.is_babka_pay,\n name: method.name,\n pid: method.pid,\n psName: method.psName,\n recurrentType: method.recurrent_type,\n replaced: method.replaced,\n type: method.type,\n cardExpiryDate: method.card_expiry_date,\n iconName: method.switch_icon_name,\n partner: method.partner,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SavedMethodsResponse } from './saved-methods-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof SavedMethodsResponse>;\n\nexport type SavedMethodsResponseFactory = (\n ...args: ResponseParameters\n) => SavedMethodsResponse;\n\nexport const savedMethodsResponseFactoryToken: InjectionToken<SavedMethodsResponseFactory> =\n new InjectionToken<SavedMethodsResponseFactory>('SavedMethodsResponse');\n\nexport const savedMethodsResponseFactoryProvider: ValueProvider = {\n provide: savedMethodsResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new SavedMethodsResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { SavedMethodsRequestParams } from './saved-methods-request-params.interface';\nimport { SavedMethodsResponseApi } from './saved-methods-response.interface';\nimport {\n SavedMethodsResponseFactory,\n savedMethodsResponseFactoryToken,\n} from './saved-methods-response.token';\nimport { SavedMethodsResponse } from './saved-methods-response.class';\nimport { SavedMethod } from './saved-method.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SavedMethodsService {\n private readonly apiRoute = 'savedmethods';\n\n private readonly cache = new Map<string, Promise<SavedMethodsResponse>>();\n\n public constructor(\n @Inject(savedMethodsResponseFactoryToken)\n private readonly responseFactory: SavedMethodsResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getList(needResetCache = false): Promise<SavedMethod[]> {\n if (needResetCache) {\n this.cache.clear();\n }\n\n const response = await this.request();\n return response.list;\n }\n\n private async request(): Promise<SavedMethodsResponse> {\n const requestParams: SavedMethodsRequestParams = {\n access_token: this.settingsService.token,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<SavedMethodsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(map((response) => this.responseFactory(response)))\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { UserBalanceApi } from './user-balance-api.interface';\n\nexport class UserBalanceResponse {\n public readonly isEnoughUserBalance: boolean;\n public readonly isEnoughUserRecurrentBalance: boolean;\n\n public constructor(userBalance: UserBalanceApi) {\n this.isEnoughUserBalance = userBalance.is_enough_user_balance ?? false;\n this.isEnoughUserRecurrentBalance =\n userBalance.is_enough_user_recurrent_balance ?? false;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { UserBalanceResponse } from './user-balance-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof UserBalanceResponse>;\n\nexport type UserBalanceResponseFactory = (\n ...args: ResponseParameters\n) => UserBalanceResponse;\n\nexport const userBalanceResponseFactoryToken: InjectionToken<UserBalanceResponseFactory> =\n new InjectionToken<UserBalanceResponseFactory>('UserBalanceResponse');\n\nexport const userBalanceResponseFactoryProvider: ValueProvider = {\n provide: userBalanceResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new UserBalanceResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport {\n UserBalanceResponseFactory,\n userBalanceResponseFactoryToken,\n} from './user-balance-response.token';\nimport { UserBalanceResponse } from './user-balance-response.class';\nimport { UserBalanceRequestParams } from './user-balance-request-params.interface';\nimport { UserBalanceApi } from './user-balance-api.interface';\nimport { Balance } from '../settings/balance.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserBalanceService {\n private readonly apiRoute = 'balance/sufficiency';\n\n private readonly cache = new Map<string, Promise<UserBalanceResponse>>();\n\n public constructor(\n @Inject(userBalanceResponseFactoryToken)\n private readonly responseFactory: UserBalanceResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getUserBalance(): Promise<UserBalanceResponse> {\n return this.request();\n }\n\n public getUserBalanceValue(): Balance | null {\n return this.settingsService.user.user_balance;\n }\n\n private async request(): Promise<UserBalanceResponse> {\n const requestParams: UserBalanceRequestParams = {\n access_token: this.settingsService.token,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<UserBalanceApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(map((response) => this.responseFactory(response)))\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SearchParams } from './search-params.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UrlService {\n public addSearchParams(url: string, params: SearchParams = {}): string {\n if (!url) {\n return '';\n }\n\n const urlObject = new URL(url);\n for (const [key, value] of Object.entries(params)) {\n urlObject.searchParams.set(key, value);\n }\n\n return urlObject.toString();\n }\n\n public getSearchParams(url: string): SearchParams {\n if (!url) {\n return {};\n }\n\n const urlObject = new URL(url);\n const searchParams: SearchParams = {};\n\n for (const [key, value] of urlObject.searchParams) {\n searchParams[key] = value;\n }\n\n return searchParams;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../../settings/settings.service';\nimport { UrlService } from '../../url/url.service';\nimport { PaymentConfig } from '../payment-config.interface';\nimport { XpsBoolean } from '../../xps-boolean.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentConfigService {\n public constructor(\n private readonly urlService: UrlService,\n private readonly settingsService: SettingsService\n ) {}\n\n public enrich(config: PaymentConfig): PaymentConfig {\n if (!config.returnUrl) {\n throw new Error('URL is not provided in payment config');\n }\n\n return {\n ...config,\n returnUrl: this.enrichReturnUrl(\n config.returnUrl,\n !!config.savePaymentMethod\n ),\n };\n }\n\n private enrichReturnUrl(\n returnUrl: string,\n savePaymentMethod: boolean\n ): string {\n const enrichedUrl = this.urlService.addSearchParams(returnUrl, {\n token: this.settingsService.token,\n isSavePaymentAccount: savePaymentMethod\n ? XpsBoolean.true\n : XpsBoolean.false,\n });\n return enrichedUrl;\n }\n}\n","export enum XpsCommand {\n form = 'form',\n check = 'check',\n status = 'status',\n checkout = 'checkout',\n account = 'account',\n create = 'create',\n}\n","export enum FieldNames {\n address1 = 'address1',\n address2 = 'address2',\n address = 'address',\n allowRecurrentSubscription = 'allowRecurrentSubscription',\n allowSubscription = 'allowSubscription',\n apt = 'apt',\n availableCardTypes = 'available_card_types',\n bank = 'bank',\n birthDate = 'birth_date',\n cardMonth = 'card_month',\n cardYear = 'card_year',\n cardNumber = 'card_number',\n cardholdername = 'cardholdername',\n city = 'city',\n couponCode = 'couponCode',\n cpfName = 'cpf_name',\n cpfNumber = 'cpf_number',\n cvv = 'cvv',\n description = 'description',\n email = 'email',\n psEmail = 'psEmail',\n euCheck = 'eu_check',\n extraCvv = 'extra_cvv',\n extraCardNumber = 'extra_card_number',\n extraCardType = 'extra_card_type',\n fName = 'f_name',\n installments = 'installments',\n lName = 'l_name',\n needInstallments = 'needInstallments',\n personId = 'person_id',\n personIdAr = 'person_id_ar',\n personIdCo = 'person_id_co',\n phone = 'phone',\n purchaseDescription = 'purchaseDescription',\n recurrentType = 'recurrent_type',\n rockstarTaxes = 'rockstar_taxes',\n state = 'state',\n street = 'street',\n streetNumber = 'street_number',\n take2Taxes = 'take2_taxes',\n termsAndConditions = 'termsAndConditions',\n termsAndConditionsAtariPp = 'termsAndConditionsAtariPP',\n termsAndConditionsAtariTc = 'termsAndConditionsAtariTC',\n termsAndConditionsHtcEula = 'termsAndConditionsHtcEula',\n termsAndConditionsRobloxEula = 'termsAndConditionsRobloxEula',\n termsAndConditionsRolandEula = 'termsAndConditionsRolandEula',\n termsAndConditionsDeusLoVultEula = 'termsAndConditionsDeusLoVultEula',\n termsAndConditionsOnzenga = 'termsAndConditionsOnzenga',\n xsollaTipsAmount = 'xsollaTipsAmount',\n zip = 'zip',\n allowSave = 'allowSave',\n koreaLimitsInstruction = 'korea_limits_instruction',\n tokenApplePay = 'token_applepay',\n fixInvoice = 'fix_invoice',\n fixPid = 'fix_pid',\n signature = 'signature',\n qr = 'qr',\n sum = 'sum',\n out = 'out',\n tinkoffDisclaimer = 'ps.tinkoff.disclaimer',\n}\n","import { XpsResponse } from '../../xps-response.interface';\nimport { Field } from '../../field.interface';\nimport { Invoice } from '../../invoice.interface';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { FieldNames } from '../../field-names.enum';\n\nexport class SubmitResponse {\n public readonly parameters: XpsResponse;\n public readonly fields: Field[];\n public onlineBanking?: {\n url: string;\n };\n public readonly data?: unknown;\n public isNeedRedirect: boolean;\n\n public buyData: XpsResponse['buyData'];\n\n public signature?: string;\n public fixInvoice?: string;\n public hasFatalErrors?: boolean;\n public userSession?: Invoice;\n public pid: XpsResponse['pid'];\n public errors: XpsResponse['errors'];\n public summary: XpsResponse['summary'];\n public title: string;\n public currentCommand: XpsCommand | null;\n public messages: XpsResponse['messages'];\n\n public constructor(\n parameters: XpsResponse,\n public readonly responseNumber: number = 0\n ) {\n /* Todo split into properties */\n this.parameters = parameters;\n this.fields = Object.keys(parameters.form).map(\n (key: string): Field => parameters.form[key]\n );\n\n if (parameters.onlineBanking) {\n this.onlineBanking = {\n url: parameters.onlineBanking.value,\n };\n }\n\n this.isNeedRedirect =\n parameters.currentCommand === XpsCommand.account ||\n (parameters.currentCommand === XpsCommand.checkout &&\n Boolean(parameters.checkout));\n\n this.buyData = parameters.buyData;\n\n this.fixInvoice = this.fields.find(\n (field: Field) => field.name === FieldNames.fixInvoice\n )?.value;\n\n this.signature = this.fields.find(\n (field: Field) => field.name === FieldNames.signature\n )?.value;\n\n this.hasFatalErrors = parameters.textAll?.fatal;\n\n this.userSession = parameters.userSession;\n this.pid = parameters.pid;\n this.errors = parameters.errors;\n this.summary = parameters.summary;\n this.title = parameters.title;\n this.currentCommand = parameters.currentCommand;\n this.messages = parameters.messages;\n }\n}\n","import { Field } from '../../field.interface';\nimport { PaymentForm } from '../../payment-form.interface';\nimport { XpsResponse, XpsStatus } from '../../xps-response.interface';\n\nexport class InitializeResponse {\n public readonly paymentForm: PaymentForm | null = null;\n\n public constructor(response: XpsResponse) {\n this.paymentForm = this.extractPaymentForm(response);\n }\n\n private extractPaymentForm(response: XpsResponse): PaymentForm | null {\n if (!response) {\n return null;\n }\n\n return {\n totalAmount: response.buyData.sum,\n currency: response.buyData.currency,\n fields: Object.keys(response.form).map(\n (key: string): Field => (response as XpsResponse).form[key]\n ),\n taxDisclaimer: response.taxDisclaimer,\n number: response.number,\n barcode: response.barcode,\n instruction: response.instruction,\n offers: response.offers,\n error: response.error,\n errors: response.errors,\n restrictions: response.restrictions,\n info: response.info,\n buyData: response.buyData,\n pid: response.pid,\n messages: response.messages ?? [],\n title: response.title,\n summary: response.summary,\n skipForm: response.skipForm,\n isSavedMethodPayment: !!response.form?.saved_method_id,\n couponCode: response.form?.couponCode?.value || '',\n publicId: response.public_id,\n skipCheckout: response.skipCheckout,\n koreaNotification: response.form.korea_limits_instruction,\n isCheckout: response.isCheckout,\n categories: response.categories,\n hasFatalErrors: response.textAll?.fatal,\n userSession: response.userSession,\n statusText: (response.status as XpsStatus)?.statusData?.stateText ?? null,\n country: response.country ? response.country.iso : null,\n };\n }\n}\n","import { SubmitResponse } from './submit-response.class';\n\nexport const isSubmitResponse = (value: unknown): value is SubmitResponse => {\n return value instanceof SubmitResponse;\n};\n","export enum InputEventName {\n blur = 'blur',\n focus = 'focus',\n}\n","import { XpsError } from '../../xps-error.interface';\nimport { Action } from '../action.interface';\nimport {\n ShowErrorsActionData,\n ShowErrorsActionType,\n} from './show-errors.action.type';\n\nexport class ShowErrorsAction implements Action {\n public type: ShowErrorsActionType = 'show_errors';\n public data!: ShowErrorsActionData;\n\n public constructor(errors: XpsError[]) {\n this.data = {\n errors,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { InitializeResponse } from './initialize-response.class';\n\nexport type ResponseParameters = ConstructorParameters<\n typeof InitializeResponse\n>;\n\nexport type InitializeResponseFactory = (\n ...args: ResponseParameters\n) => InitializeResponse;\n\nexport const initializeResponseFactoryToken: InjectionToken<InitializeResponseFactory> =\n new InjectionToken<InitializeResponseFactory>('InitializeResponse');\n\nexport const initializeResponseFactoryProvider: ValueProvider = {\n provide: initializeResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new InitializeResponse(...args),\n};\n","export const masterCardAndVisaPaymentMethodId = 26;\nexport const maestroPaymentMethodId = 490;\nexport const creditCardPaymentMethodId = 1380;\nexport const americanExpressMethodId = 714;\n\nexport const specialCards: number[] = [\n maestroPaymentMethodId,\n masterCardAndVisaPaymentMethodId,\n americanExpressMethodId,\n];\n\nexport const cardsWith3ds: number[] = [\n masterCardAndVisaPaymentMethodId,\n maestroPaymentMethodId,\n creditCardPaymentMethodId,\n];\n","import { lastValueFrom } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SecureApiClient } from '../../http/secure-api/secure-api.service';\nimport { XpsBoolean } from '../../xps-boolean.enum';\nimport { windowToken } from '../../window.token';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { SettingsService } from '../../settings/settings.service';\nimport { XpsRequest } from '../xps-request.interface';\nimport { XpsResponse } from '../xps-response.interface';\nimport { XpsRequestParams } from '../xps-request-params.interface';\nimport { cardsWith3ds } from '../credit-card-payment-methods-id.variable';\nimport { CountryService } from '../../country/country.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class XpsApiService {\n private readonly directPaymentApiRoute = 'directpayment';\n\n public constructor(\n @Inject(windowToken)\n private readonly window: ExtendedWindow,\n private readonly secureApiClient: SecureApiClient,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService\n ) {}\n\n public async directPaymentRequest(\n parameters: XpsRequest\n ): Promise<XpsResponse> {\n const pid =\n parameters.pid?.toString() ??\n (parameters.xps_fix_pid as string | undefined) ??\n '';\n const paymentWithSavedMethod =\n parameters.paymentWithSavedMethod ??\n (parameters.xps_paymentWithSavedMethod as string | undefined) ??\n '';\n\n const requestParams = {\n ...this.collectAnalyticsParameters(pid, paymentWithSavedMethod),\n ...this.collectUserSessionId(),\n country: this.countryService.getCountry(),\n ...parameters,\n };\n\n return lastValueFrom(\n this.secureApiClient.post<XpsResponse>(\n this.directPaymentApiRoute,\n new URLSearchParams({ ...requestParams } as unknown as {\n [key: string]: string;\n }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n );\n }\n\n private collectAnalyticsParameters(\n paymentMethodId?: string,\n paymentWithSavedMethod?: XpsBoolean | string\n ): {\n [key: string]: unknown;\n } {\n const parameters: XpsRequestParams = {};\n\n parameters.paymentWithSavedMethod = paymentWithSavedMethod\n ? paymentWithSavedMethod\n : XpsBoolean.false;\n\n if (!paymentMethodId) {\n return parameters;\n }\n\n /* If payment method with 3DSecure */\n if (cardsWith3ds.includes(Number(paymentMethodId))) {\n parameters.container3DS = JSON.stringify({\n browserjavaenabled: this.window.navigator.javaEnabled(),\n browserlanguage: this.window.navigator.language,\n browsercolordepth: this.window.screen.colorDepth,\n browserscreenheight: this.window.screen.availHeight,\n browserscreenwidth: this.window.screen.availWidth,\n browsertz: new Date().getTimezoneOffset(),\n browserappname: this.window.navigator.appName,\n browserlocaltime: new Date().toString(),\n browserplatform: this.window.navigator.platform || '',\n browsercookiesenabled: this.window.navigator.cookieEnabled,\n });\n }\n\n return parameters;\n }\n\n private collectUserSessionId(): XpsRequestParams {\n const parameters: XpsRequestParams = {};\n\n parameters.xps_idUserSession = this.settingsService.user.session_id ?? '';\n parameters.user_session_id = this.settingsService.user.session_id ?? '';\n\n return parameters;\n }\n}\n","import { Action } from '../action.interface';\nimport {\n ShowFieldsActionData,\n ShowFieldsActionType,\n} from './show-fields.action.type';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsBoolean } from '../../../xps-boolean.enum';\n\nexport class ShowFieldsAction implements Action {\n public type: ShowFieldsActionType = 'show_fields';\n public data: ShowFieldsActionData = {\n fields: [],\n errors: [],\n messages: [],\n order: {},\n };\n\n public constructor(submitResponse: SubmitResponse) {\n this.data.fields = submitResponse.fields.filter(\n (field) => field?.isVisible === XpsBoolean.true\n );\n this.data.errors = submitResponse.errors;\n this.data.messages = submitResponse.messages;\n this.data.order = submitResponse.summary;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ShowFieldsAction } from './show-fields.action.class';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsCommand } from '../../xps-comand.enum';\n\ntype RequestParameters = ConstructorParameters<typeof ShowFieldsAction>;\n\nexport const showFieldsActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('ShowFieldsAction');\n\nexport const showFieldsActionFactoryProvider: ValueProvider = {\n provide: showFieldsActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new ShowFieldsAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return (\n response.currentCommand === XpsCommand.check ||\n response.currentCommand === XpsCommand.form\n );\n },\n },\n};\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { Action } from '../action.interface';\nimport {\n CheckStatusActionData,\n CheckStatusActionType,\n} from './check-status.action.type';\n\nexport class CheckStatusAction implements Action {\n public type: CheckStatusActionType = 'check_status';\n public data!: CheckStatusActionData;\n\n public constructor(submitResponse: SubmitResponse) {\n this.data = {\n invoice: parseInt(submitResponse.parameters.form.fix_invoice?.value),\n signature: submitResponse.parameters.form.signature?.value,\n locale: submitResponse.parameters.form.locale?.value,\n testPs: submitResponse.parameters.form.testPs?.value,\n testXsolla: submitResponse.parameters.form.testXsolla?.value,\n testProject: submitResponse.parameters.form.testProject?.value,\n userReturnStatus: submitResponse.parameters.form.userReturnStatus?.value,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { CheckStatusAction } from './check-status.action.class';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsCommand } from '../../xps-comand.enum';\n\ntype RequestParameters = ConstructorParameters<typeof CheckStatusAction>;\n\nexport const checkStatusActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('CheckStatusAction');\n\nexport const checkStatusActionFactoryProvider: ValueProvider = {\n provide: checkStatusActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new CheckStatusAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return response.currentCommand === XpsCommand.status;\n },\n },\n};\n","import { AppError } from './app-error.class';\n\nexport class TerminalError extends AppError {\n public code!: string;\n\n public constructor(message: string, code: string) {\n super(message);\n\n this.code = code;\n }\n}\n","export enum StatusGroups {\n troubled = 'troubled',\n done = 'done',\n invoice = 'invoice',\n}\n","export enum StatusEnum {\n created = 'created',\n awaiting = 'awaiting',\n processing = 'processing',\n authorized = 'authorized',\n held = 'held',\n done = 'done',\n error = 'error',\n canceled = 'canceled',\n}\n","import { Status } from '../../status.interface';\nimport { XpsResponse, XpsStatus } from '../../../xps-response.interface';\nimport { TerminalError } from '../../../../exceptions-handling/errors/terminal-error.class';\nimport { StatusGroups } from '../../status-groups';\nimport { StatusEnum } from '../../status.enum';\n\nexport class StatusResponse {\n public readonly status!: Status;\n private readonly error?: { code: string; message: string };\n public constructor(parameters: {\n status: XpsStatus | null;\n errors: XpsResponse['errors'];\n form?: XpsResponse['form'];\n }) {\n if (parameters.errors?.[0]) {\n this.error = {\n code: parameters.errors[0].code.toString(),\n message: parameters.errors[0].message,\n };\n }\n\n if (!parameters.status) {\n throw new TerminalError(\n this.error?.message ?? '',\n this.error?.code.toString() ?? ''\n );\n }\n\n this.status = {\n statusState: parameters.status.statusData.stateText,\n email: parameters.status.statusData.email,\n webSocketUrl: parameters.status.statusData.webSocketChannelUrl,\n webSocketChannelName: parameters.status.statusData.webSocketChannelName,\n webSocketClientType: parameters.status.statusData.webSocketClientType,\n financeInfo: parameters.status.text.info,\n discount: parameters.status.text.info.discount\n ? Math.abs(\n Number.parseFloat(parameters.status.text.info.discount?.value ?? '')\n )\n : null,\n isCancelUser: parameters.status.isCancelUser,\n postMessageStatus: parameters.status.isCancelUser\n ? StatusGroups.troubled\n : parameters.status.group,\n virtualCurrencyAmount: parameters.status.statusData.out,\n backUrlSettings: {\n backUrl: parameters.status.text.backurl,\n backUrlAction: parameters.status.text.backurl_action,\n backUrlCaption: parameters.status.text.backurl_caption,\n returnRegion: parameters.status.return_region,\n },\n additionalBackButton: this.getAdditionalBackButton(parameters.status),\n group: parameters.status.group,\n needToCheck: parameters.status.needToCheck,\n autoRedirect: parameters.status.autoredirect,\n statusMessage: parameters.status.text.state,\n userId: parameters.status.statusData.v1,\n invoice: parameters.status.statusData.invoice,\n pid: parameters.status.statusData.pid,\n projectAmount: this.getProjectAmount(parameters.status),\n titleClass: parameters.status.title_class,\n paymentCountryIso: parameters.status.statusData.payment_country_iso,\n order: parameters.status.text.order,\n };\n\n if (parameters.form) {\n this.status.userReturnStatus = this.getUserReturnStatus(parameters.form);\n }\n\n if (\n this.status.statusState === StatusEnum.done ||\n this.status.statusState === StatusEnum.authorized\n ) {\n this.status.isSuccess = true;\n }\n\n if (\n this.status.statusState === StatusEnum.canceled ||\n this.status.isCancelUser\n ) {\n this.status.isCanceled = true;\n }\n }\n\n private getUserReturnStatus(form: XpsResponse['form']): string | undefined {\n const value = form['fix_userReturnStatus']?.value;\n if (value === 'undefined') return undefined;\n\n return value;\n }\n\n private getProjectAmount(status: XpsStatus): Status['projectAmount'] {\n if (!status.statusData.projectAmount) {\n return;\n }\n\n const [amount, currency] = status.statusData.projectAmount.split(' ');\n return {\n amount,\n currency,\n };\n }\n\n private getAdditionalBackButton(\n status: XpsStatus\n ): Status['additionalBackButton'] {\n if (!status.text.is_additional_back_url_enabled) {\n return {\n link: '',\n action: '',\n label: '',\n region: '',\n isEnabled: false,\n };\n }\n\n return {\n link: status.text.additional_back_url_link ?? '',\n action: status.text.additional_back_url_action ?? '',\n label: status.text.additional_back_url_label ?? '',\n region: status.additional_button_return_region ?? '',\n isEnabled: status.text.is_additional_back_url_enabled,\n };\n }\n}\n","import { Action } from '../action.interface';\nimport {\n StatusUpdatedActionData,\n StatusUpdatedActionType,\n} from './status-updated.action.type';\nimport { StatusResponse } from '../../status/status-request/response/status-response.class';\nimport { Status } from '../../status/status.interface';\nimport { SavePaymentMethodStatus } from '../../status/save-payment-method-status/save-payment-method-status.enum';\n\nexport class StatusUpdatedAction implements Action {\n public type: StatusUpdatedActionType = 'status_updated';\n public data!: StatusUpdatedActionData;\n\n public constructor(\n statusResponse: StatusResponse | Status,\n isSavePaymentMethodMode = false,\n savePaymentMethodStatus?: SavePaymentMethodStatus\n ) {\n let status: Status;\n\n if (statusResponse instanceof StatusResponse) {\n status = statusResponse.status;\n } else {\n status = statusResponse;\n }\n this.data = {\n statusState: status.statusState,\n invoice: status.invoice,\n isSuccess: status.isSuccess,\n isCanceled: status.isCanceled,\n group: status.group,\n isSavePaymentMethodMode,\n savePaymentMethodStatus,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { StatusUpdatedAction } from './status-updated.action.class';\n\ntype RequestParameters = ConstructorParameters<typeof StatusUpdatedAction>;\n\nexport const statusUpdatedActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('StatusUpdatedAction');\n\nexport const statusUpdatedActionFactoryProvider: ValueProvider = {\n provide: statusUpdatedActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new StatusUpdatedAction(...args),\n isSuitable: () => false,\n },\n};\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { Action } from '../action.interface';\nimport { RedirectActionData, RedirectActionType } from './redirect.action.type';\n\nexport class RedirectAction implements Action {\n public type: RedirectActionType = 'redirect';\n public data!: RedirectActionData;\n\n public constructor(submitResponse: SubmitResponse) {\n this.data = {\n fields: submitResponse.fields,\n errors: submitResponse.errors,\n messages: submitResponse.messages,\n order: submitResponse.summary,\n invoiceId: submitResponse.fixInvoice,\n redirect: this.getRedirect(submitResponse),\n };\n }\n\n private getRedirect(\n submitResponse: SubmitResponse\n ): RedirectActionData['redirect'] {\n return {\n redirectUrl: submitResponse.parameters.checkout.action,\n data: submitResponse.parameters.checkout.data,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { RedirectAction } from './redirect.action.class';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsCommand } from '../../xps-comand.enum';\n\ntype RequestParameters = ConstructorParameters<typeof RedirectAction>;\n\nexport const redirectActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('RedirectAction');\n\nexport const redirectActionFactoryProvider: ValueProvider = {\n provide: redirectActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new RedirectAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return (\n response.currentCommand === XpsCommand.account ||\n (response.currentCommand === XpsCommand.checkout &&\n Boolean(response.parameters.checkout))\n );\n },\n },\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ShowErrorsAction } from './show-errors.action.class';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\n\ntype RequestParameters = ConstructorParameters<typeof ShowErrorsAction>;\n\nexport const showErrorsActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('ShowErrorsAction');\n\nexport const showErrorsActionFactoryProvider: ValueProvider = {\n provide: showErrorsActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new ShowErrorsAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return Boolean(response.errors?.length);\n },\n },\n};\n","import { Action } from '../action.interface';\nimport { ThreeDsActionData, ThreeDsActionType } from './three-ds.action.type';\nimport { StatusChallenge } from '../../three-ds/three-ds-20/status-update.interface';\n\nexport class ThreeDsAction implements Action {\n public type: ThreeDsActionType = '3DS';\n public data!: ThreeDsActionData;\n\n public constructor(statusUpdate: StatusChallenge) {\n this.data = statusUpdate;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { ThreeDsAction } from './three-ds.action.class';\n\ntype RequestParameters = ConstructorParameters<typeof ThreeDsAction>;\n\nexport const threeDsActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('ThreeDsAction');\n\nexport const threeDsActionFactoryProvider: ValueProvider = {\n provide: threeDsActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new ThreeDsAction(...args),\n isSuitable: () => false,\n },\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { Action } from './action.interface';\nimport { showFieldsActionFactoryProvider } from './show-fields/show-fields.action.token';\nimport { checkStatusActionFactoryProvider } from './check-status/check-status.action.token';\nimport { statusUpdatedActionFactoryProvider } from './status-updated/status-updated.action.token';\nimport { redirectActionFactoryProvider } from './redirect/redirect.action.token';\nimport { showErrorsActionFactoryProvider } from './show-errors/show-errors.action.token';\nimport { threeDsActionFactoryProvider } from './three-ds/three-ds.action.token';\n\nexport type NextActionTokens = ValueProvider[];\n\nexport const nextActionsToken = new InjectionToken<Action>('Action');\n\nexport const nextActions: NextActionTokens = [\n showFieldsActionFactoryProvider,\n checkStatusActionFactoryProvider,\n redirectActionFactoryProvider,\n];\n\nexport const flowUpdateNextActions: NextActionTokens = [\n statusUpdatedActionFactoryProvider,\n showErrorsActionFactoryProvider,\n threeDsActionFactoryProvider,\n];\n","import { Inject, Injectable, Injector, ValueProvider } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { NextAction } from './next-action.interface';\nimport { SubmitResponse } from '../submit/response/submit-response.class';\nimport { nextActionsToken, NextActionTokens } from './next-actions';\nimport { Action } from './action.interface';\nimport { ActionFactoryValue } from './action-factory-value.interface';\nimport { ShowErrorsAction } from './show-errors/show-errors.action.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NextActionService {\n private readonly flowUpdatesSubject = new Subject<NextAction>();\n\n private readonly nextActionsList: ActionFactoryValue[] = [];\n\n public get flowUpdates$(): Observable<NextAction> {\n return this.flowUpdatesSubject.asObservable();\n }\n\n public constructor(\n @Inject(nextActionsToken)\n private readonly nextActionTokens: NextActionTokens,\n private readonly injector: Injector\n ) {\n this.fillNextActionsList();\n }\n\n public getNextAction(submitResponse: SubmitResponse): NextAction | null {\n if (submitResponse.errors?.length) {\n this.emitFlowUpdates(new ShowErrorsAction(submitResponse.errors));\n }\n\n if (!submitResponse.currentCommand) {\n return null;\n }\n\n const nextActionFactory = this.findNextAction(submitResponse);\n\n if (nextActionFactory) {\n return nextActionFactory(submitResponse) as NextAction;\n }\n\n throw new Error('Next action is undefined.');\n }\n\n public emitFlowUpdates(action: NextAction): void {\n this.flowUpdatesSubject.next(action);\n }\n\n private fillNextActionsList(): void {\n this.nextActionTokens.forEach((nextAction: ValueProvider) => {\n const item = this.injector.get<ActionFactoryValue>(nextAction.provide);\n this.nextActionsList.push(item);\n });\n }\n\n private findNextAction(\n submitResponse: SubmitResponse\n ): ((...args: unknown[]) => Action) | undefined {\n const actionType = this.nextActionsList.find(\n (nextAction: ActionFactoryValue) => {\n return nextAction.isSuitable(submitResponse);\n }\n );\n\n if (!actionType) {\n return;\n }\n return actionType.factory;\n }\n}\n","/* eslint-disable @typescript-eslint/no-magic-numbers */\nexport const cardNumberSanctionErrorCodes = [\n 2034, 2035, 5027, 5024, 5025, 2036,\n];\n","import { FieldNames } from '../payment/field-names.enum';\nimport { cardNumberSanctionErrorCodes } from './card-number-sanction-error-codes.const';\n\nexport const fieldSpecialErrorsMap = [\n {\n errorCodes: new Set(cardNumberSanctionErrorCodes),\n fieldName: FieldNames.cardNumber,\n },\n];\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'unescapeHtml',\n})\nexport class UnescapeHtmlPipe implements PipeTransform {\n public transform(html?: string): string {\n if (!html) {\n return '';\n }\n\n if (html.includes('&gt')) {\n const messageDocument = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n return messageDocument?.documentElement?.textContent ?? '';\n }\n\n return html;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UnescapeHtmlPipe } from '../../shared/pipes/unescape-html/unescape-html.pipe';\nimport { XpsError } from '../payment/xps-error.interface';\nimport { XpsResponse } from '../payment/xps-response.interface';\nimport { fieldSpecialErrorsMap } from './field-special-errors-map.const';\n\n@Injectable({ providedIn: 'root' })\nexport class XpsResponseErrorsMappingService {\n public constructor(private readonly unescapeHtmlPipe: UnescapeHtmlPipe) {}\n\n public mapErrors(response: XpsResponse): XpsResponse {\n if (!response.errors?.length) {\n return response;\n }\n\n let mappedErrors = this.mapFieldSpecialErrors(response.errors);\n mappedErrors = this.unescapeErrorsText(mappedErrors);\n\n return {\n ...response,\n errors: mappedErrors,\n };\n }\n\n private mapFieldSpecialErrors(errors: XpsError[]): XpsError[] {\n return errors.map((error) => {\n if (!error.element_name) {\n const errorMap = fieldSpecialErrorsMap.find((map) =>\n map.errorCodes.has(error.code)\n );\n\n if (errorMap) {\n return {\n ...error,\n element_name: errorMap.fieldName,\n };\n }\n }\n\n return error;\n });\n }\n\n private unescapeErrorsText(errors: XpsError[]): XpsError[] {\n return errors.map((error) => {\n if (!error.message) {\n return error;\n }\n\n return {\n ...error,\n message: this.unescapeHtmlPipe.transform(error.message),\n };\n });\n }\n}\n","export enum ErrorTags {\n APP = 'appError',\n HTTP = 'httpError',\n JS = 'jsError',\n WS = 'webSocket',\n ENCRYPT = 'encrypt',\n APPLEPAY = 'applepay',\n HEADLESS_UI = 'headlessUi',\n GOOGLEPAY = 'googlepay',\n PAYTM = 'paytm',\n}\n","import { ErrorTags } from './elk-error-types.enum';\nimport { AdditionalInfo } from '../elk/additional-info.interface';\n\nexport class TaggedError extends Error {\n public childTag!: ErrorTags;\n public trace!: string;\n public tags: ErrorTags[] = [];\n public additionalInfo!: AdditionalInfo;\n\n private readonly parentTag: ErrorTags = ErrorTags.HEADLESS_UI;\n\n public constructor(message: string, tags?: ErrorTags[]) {\n super(message);\n\n this.tags = this.childTag\n ? [this.parentTag, this.childTag]\n : [this.parentTag];\n\n if (tags) {\n const newTags = tags.filter(\n (t, i, arr) => !this.tags.includes(t) && arr.indexOf(t) == i\n );\n this.tags = [...this.tags, ...newTags];\n }\n }\n}\n","import { TaggedError } from './tagged-error.class';\nimport { ErrorTags } from './elk-error-types.enum';\n\nexport class EncryptCreditCardError extends TaggedError {\n public constructor(message: string, tags?: ErrorTags[]) {\n tags = tags ? [...tags, ErrorTags.ENCRYPT] : [ErrorTags.ENCRYPT];\n\n super(message, tags);\n }\n}\n","export const fourBlockMask = '9999 9999 9999 9999';\n","export enum CreditCardTypes {\n DEFAULT = '0',\n VISA = '1',\n MASTERCARD = '2',\n MAESTRO = '3',\n AMERICAN_EXPRESS = '4',\n DINERS_CLUBS = '5',\n DISCOVER = '6',\n JCB = '9',\n DANKORT = '11',\n HIPERCARD = '12',\n ELO = '13',\n AURA = '14',\n NARANJA = '15',\n MIR = '16',\n CHINA_UNION_PAY = '17',\n POSTEPAY = '18',\n}\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const visa: CreditCardSettings = {\n id: CreditCardTypes.VISA,\n minLength: 13,\n maxLength: 16,\n iconName: 'visa',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n return number.startsWith('4');\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const mastercard: CreditCardSettings = {\n id: CreditCardTypes.MASTERCARD,\n minLength: 16,\n maxLength: 16,\n iconName: 'mastercard',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n const subLength = 6;\n const cardNumberSub = number.substring(0, subLength);\n return (\n new RegExp(/^5[1-5]/).test(number) ||\n (cardNumberSub >= '222100' && cardNumberSub <= '272099')\n );\n },\n};\n","export const defaultMask = '9999 9999 9999 9999 999';\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const maestro: CreditCardSettings = {\n id: CreditCardTypes.MAESTRO,\n minLength: 12,\n maxLength: 19,\n iconName: 'maestro',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(\n /^(5018)|^(5020)|^(5038)|^(5893)|^(6304)|^(6759)|^(6761)|^(6762)|^(6763)|^(0604)|^(6706)|^(6771)|^(6709)/\n ).test(number);\n },\n maxCvvLength: 3,\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const americanExpress: CreditCardSettings = {\n id: CreditCardTypes.AMERICAN_EXPRESS,\n minLength: 15,\n maxLength: 15,\n iconName: 'american-express',\n mask: '9999 999999 99999',\n checkNumber(number: string): boolean {\n return new RegExp(/^(34)|^(37)/).test(number);\n },\n maxCvvLength: 4,\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const dinersClubs: CreditCardSettings = {\n id: CreditCardTypes.DINERS_CLUBS,\n minLength: 14,\n maxLength: 14,\n iconName: 'dinersclub',\n mask: '9999 9999 9999 99',\n checkNumber(number: string): boolean {\n const regex = /^(36[0-9]|3(?:0[0-59]|[68][0-9])[0-9])/;\n return regex.test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\nimport { defaultMask } from '../default-mask.const';\n\nexport const discover: CreditCardSettings = {\n id: CreditCardTypes.DISCOVER,\n minLength: 16,\n maxLength: 19,\n iconName: 'discover',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(\n /^(6011)|^(622(1(2[6-9]|[3-9][0-9])|[2-8][0-9]{2}|9([01][0-9]|2[0-5])))|^(64[4-9])|^65/\n ).test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const jcb: CreditCardSettings = {\n id: CreditCardTypes.JCB,\n minLength: 15,\n maxLength: 16,\n iconName: 'jcb',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n return new RegExp(/^35(2[89]|[3-8][0-9])/).test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const dankort: CreditCardSettings = {\n id: CreditCardTypes.DANKORT,\n minLength: 16,\n maxLength: 16,\n iconName: 'dankort',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n const subLength = 4;\n const cardNumberSub = number.substring(0, subLength);\n return cardNumberSub === '5019';\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const hipercard: CreditCardSettings = {\n id: CreditCardTypes.HIPERCARD,\n minLength: 13,\n maxLength: 19,\n iconName: 'hipercard',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(/^((606282|637095|637568)[0-9]|38[0-9]{14,17})/).test(\n number\n );\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\nimport { defaultMask } from '../default-mask.const';\n\nexport const elo: CreditCardSettings = {\n id: CreditCardTypes.ELO,\n minLength: 16,\n maxLength: 19,\n iconName: 'elo',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(\n /^(40117[8-9]|431274|438935|451416|457393|45763[1-2]|506(699|7[0-6][0-9]|77[0-8])|509\\d{3}|504175|627780|636297|636368|65003[1-3]|6500(3[5-9]|4[0-9]|5[0-1])|6504(0[5-9]|[1-3][0-9])|650(4[8-9][0-9]|5[0-2][0-9]|53[0-8])|6505(4[1-9]|[5-8][0-9]|9[0-8])|6507(0[0-9]|1[0-8])|65072[0-7]|6509(0[1-9]|1[0-9]|20)|6516(5[2-9]|[6-7][0-9])|6550([0-1][0-9]|2[1-9]|[3-4][0-9]|5[0-8]))/\n ).test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const aura: CreditCardSettings = {\n id: CreditCardTypes.AURA,\n minLength: 16,\n maxLength: 19,\n iconName: 'aura',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n const subLength = 8;\n const cardNumberSub = number.substring(0, subLength);\n return ['50786000', '50786018', '50786019'].includes(cardNumberSub);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const naranja: CreditCardSettings = {\n id: CreditCardTypes.NARANJA,\n minLength: 12,\n maxLength: 19,\n iconName: 'naranja',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n const subLength = 6;\n const cardNumberSub = number.substring(0, subLength);\n return cardNumberSub === '589562';\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const mir: CreditCardSettings = {\n id: CreditCardTypes.MIR,\n minLength: 16,\n maxLength: 16,\n iconName: 'mir',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n const subLength = 4;\n const cardNumberSub = number.substring(0, subLength);\n return cardNumberSub >= '2200' && cardNumberSub <= '2204';\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const chinaUnionPay: CreditCardSettings = {\n id: CreditCardTypes.CHINA_UNION_PAY,\n minLength: 16,\n maxLength: 19,\n iconName: 'unionpay',\n mask: '999 9999 9999 99999999',\n checkNumber(number: string): boolean {\n return number.startsWith('62');\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\nimport { defaultMask } from '../default-mask.const';\n\nexport const defaultCard: CreditCardSettings = {\n id: CreditCardTypes.DEFAULT,\n minLength: 12,\n maxLength: 19,\n iconName: null,\n mask: defaultMask,\n checkNumber(): boolean {\n return false;\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const postePay: CreditCardSettings = {\n id: CreditCardTypes.POSTEPAY,\n minLength: 12,\n maxLength: 19,\n iconName: 'poste_pay',\n mask: '9999 9999 9999 9999 999',\n checkNumber(number: string): boolean {\n const regex =\n /^(5018)|^(5020)|^(5038)|^(5893)|^(6304)|^(6759)|^(6761)|^(6762)|^(6763)|^(0604)|^(6706)|^(6771)|^(6709)/;\n return regex.test(number);\n },\n};\n","import { visa } from './types/visa';\nimport { mastercard } from './types/mastercard';\nimport { maestro } from './types/maestro';\nimport { americanExpress } from './types/american-express';\nimport { dinersClubs } from './types/diners-clubs';\nimport { discover } from './types/discover';\nimport { jcb } from './types/jcb';\nimport { dankort } from './types/dankort';\nimport { hipercard } from './types/hipercard';\nimport { elo } from './types/elo';\nimport { aura } from './types/aura';\nimport { naranja } from './types/naranja';\nimport { mir } from './types/mir';\nimport { chinaUnionPay } from './types/china-union-pay';\nimport { defaultCard } from './types/default-card';\nimport { CreditCardSettings } from './credit-card-settings.interface';\nimport { postePay } from './types/postepay';\n\n/**\n * order does matter\n * settings with more specific pattern should be placed above\n * Example:\n * - 12*\n * - 12\n * - 1\n * \"12*\" pattern should be checked first, otherwise pattern \"1\" will be taken\n * before \"12*\" checked\n */\nexport const orderedCardSettings: CreditCardSettings[] = [\n aura,\n naranja,\n maestro,\n postePay,\n elo,\n discover,\n dankort,\n hipercard,\n mir,\n jcb,\n dinersClubs,\n americanExpress,\n mastercard,\n chinaUnionPay,\n visa,\n defaultCard,\n];\n","import { CreditCardTypes } from './credit-card-types.enum';\nimport { visa } from './types/visa';\nimport { mastercard } from './types/mastercard';\nimport { maestro } from './types/maestro';\nimport { americanExpress } from './types/american-express';\nimport { dinersClubs } from './types/diners-clubs';\nimport { discover } from './types/discover';\nimport { jcb } from './types/jcb';\nimport { dankort } from './types/dankort';\nimport { hipercard } from './types/hipercard';\nimport { elo } from './types/elo';\nimport { aura } from './types/aura';\nimport { naranja } from './types/naranja';\nimport { mir } from './types/mir';\nimport { chinaUnionPay } from './types/china-union-pay';\nimport { defaultCard } from './types/default-card';\nimport { CreditCardSettings } from './credit-card-settings.interface';\nimport { postePay } from './types/postepay';\n\nexport const creditCardsMap: {\n [key in CreditCardTypes]: CreditCardSettings;\n} = {\n [CreditCardTypes.DEFAULT]: defaultCard,\n [CreditCardTypes.VISA]: visa,\n [CreditCardTypes.MASTERCARD]: mastercard,\n [CreditCardTypes.MAESTRO]: maestro,\n [CreditCardTypes.AMERICAN_EXPRESS]: americanExpress,\n [CreditCardTypes.DINERS_CLUBS]: dinersClubs,\n [CreditCardTypes.DISCOVER]: discover,\n [CreditCardTypes.JCB]: jcb,\n [CreditCardTypes.DANKORT]: dankort,\n [CreditCardTypes.HIPERCARD]: hipercard,\n [CreditCardTypes.ELO]: elo,\n [CreditCardTypes.AURA]: aura,\n [CreditCardTypes.NARANJA]: naranja,\n [CreditCardTypes.MIR]: mir,\n [CreditCardTypes.CHINA_UNION_PAY]: chinaUnionPay,\n [CreditCardTypes.POSTEPAY]: postePay,\n};\n","import { Injectable } from '@angular/core';\nimport { CreditCardTypes } from './credit-card-types.enum';\nimport { orderedCardSettings } from './ordered-cards-settings.const';\nimport { CreditCardSettings } from './credit-card-settings.interface';\nimport { creditCardsMap } from './credit-cards-map.const';\nimport { defaultCard } from './types/default-card';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CreditCardService {\n public getBinNumber(cardNumber: string): string {\n const binNumberLength = 6;\n return cardNumber.replace(/\\s+/g, '').substring(0, binNumberLength);\n }\n\n public getAccountSuffix(cardNumber: string): string {\n const accountSuffixLength = 4;\n return cardNumber\n .replace(/\\s+/g, '')\n .substring(cardNumber.length - accountSuffixLength);\n }\n\n public getTypeByNumber(cardNumber: string): CreditCardTypes {\n cardNumber = cardNumber.replace(/\\s+/g, '');\n\n const cardSettings = orderedCardSettings.find((settings) => {\n const isNumberMatched = settings.checkNumber(cardNumber);\n return isNumberMatched ? settings.id : false;\n });\n\n return cardSettings ? cardSettings.id : defaultCard.id;\n }\n\n public getCreditCardSettings(cardType: CreditCardTypes): CreditCardSettings {\n const creditCard = creditCardsMap[cardType];\n\n if (!creditCard) {\n return defaultCard;\n }\n\n return creditCard;\n }\n}\n","import JSEncrypt from 'jsencrypt';\nimport { Injectable } from '@angular/core';\nimport { EncryptCreditCardError } from '../exceptions-handling/errors/encrypt-card-error';\nimport { XpsApiPartRequest } from '../payment/xps-api-part-request.abstract';\nimport { CreditCardService } from '../credit-card/credit-card.service';\nimport { EncryptedCard } from './encrypted-card.interface';\nimport { OpenCard } from './open-card.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class EncryptCreditCardService {\n private readonly jsEncrypt!: JSEncrypt;\n\n private readonly secureFieldNames: Array<`xps_${string}`> = [\n 'xps_card_number',\n 'xps_cvv',\n 'xps_extra_cvv',\n 'xps_card_year',\n 'xps_card_month',\n ];\n\n public constructor(private readonly creditCardService: CreditCardService) {\n this.jsEncrypt = new JSEncrypt();\n }\n\n public setPublicKey(publicKey: string): void {\n this.jsEncrypt.setPublicKey(publicKey);\n }\n\n public encryptCreditCard<T extends XpsApiPartRequest>(\n request: XpsApiPartRequest\n ): T {\n if (request.xps_card_number) {\n const openCard: OpenCard = this.createOpenCard(request);\n request.xps_open_card = JSON.stringify(openCard);\n }\n\n const encryptedCard: EncryptedCard = this.createEncryptedCard(request);\n\n if (!request.xps_encrypted_card && JSON.stringify(encryptedCard) !== '{}') {\n request.xps_encrypted_card = this.encrypt(JSON.stringify(encryptedCard));\n }\n\n this.secureFieldNames.forEach((secureFieldName: `xps_${string}`) => {\n delete request[secureFieldName];\n });\n\n return request as T;\n }\n\n private encrypt(value: string): string {\n if (!this.jsEncrypt?.getPublicKey()) {\n throw new EncryptCreditCardError('Empty public key');\n }\n\n const encryptedValue = this.jsEncrypt.encrypt(value);\n\n if (!encryptedValue) {\n throw new EncryptCreditCardError(\n 'Encryption returns false instead of encrypted string'\n );\n }\n\n return encryptedValue;\n }\n\n private createEncryptedCard(request: XpsApiPartRequest): EncryptedCard {\n const encryptedCard: EncryptedCard = {\n card_number: request.xps_card_number as string,\n card_year: request.xps_card_year as string,\n card_month: request.xps_card_month as string,\n cvv: request.xps_cvv as string,\n };\n\n if (request.xps_extra_cvv) {\n encryptedCard.cvv = request.xps_extra_cvv as string;\n }\n\n return encryptedCard;\n }\n\n private createOpenCard(request: XpsApiPartRequest): OpenCard {\n return {\n card_bin: this.creditCardService.getBinNumber(\n request.xps_card_number as string\n ),\n card_suffix: this.creditCardService.getAccountSuffix(\n request.xps_card_number as string\n ),\n card_year: request.xps_card_year as string,\n card_month: request.xps_card_month as string,\n };\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { CountryService } from '../../country/country.service';\nimport { ResponseError } from '../../exceptions-handling/errors/response-error.class';\nimport { EncryptCreditCardService } from '../../encrypt-credit-card/encrypt-credit-card.service';\nimport { SettingsService } from '../../settings/settings.service';\nimport { PaymentConfig } from '../payment-config.interface';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ShowErrorsAction } from '../actions/show-errors/show-errors.action.class';\nimport { XpsApiService } from '../xps-api/xps-api.service';\nimport { Field } from '../field.interface';\nimport { PaymentForm } from '../payment-form.interface';\nimport {\n InitializeResponseFactory,\n initializeResponseFactoryToken,\n} from './response/initialize-response.token';\nimport { InitializeResponse } from './response/initialize-response.class';\nimport { InitializeRequestParams } from './initialize-request-params.interface';\nimport { XpsResponseErrorsMappingService } from '../../errors-mapping/xps-response-errors-mapping.service';\nimport { XpsBoolean } from '../../xps-boolean.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InitializeService {\n // TODO PAYMENTS-15743: replace with new refer id for headless core\n private readonly ps4ReferId = '22';\n\n public constructor(\n @Inject(initializeResponseFactoryToken)\n protected readonly responseFactory: InitializeResponseFactory,\n private readonly xpsApiService: XpsApiService,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly nextActionService: NextActionService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n private readonly encryptCreditCardService: EncryptCreditCardService\n ) {}\n\n public async request(config: PaymentConfig): Promise<InitializeResponse> {\n const requestParams: InitializeRequestParams = {\n access_token: this.settingsService.token,\n pid: String(config.paymentMethodId),\n refer: this.ps4ReferId,\n country: this.countryService.getCountry(),\n returnUrl: config.returnUrl,\n paymentWithSavedMethod:\n config.paymentWithSavedMethod === true\n ? XpsBoolean.true\n : XpsBoolean.false,\n save_payment_account_only: config.savePaymentMethod\n ? XpsBoolean.true\n : XpsBoolean.false,\n };\n\n if (config.savedMethodId) {\n requestParams.saved_method_id = config.savedMethodId;\n }\n\n return this.xpsApiService\n .directPaymentRequest(requestParams)\n .then((xpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n const initializeResponse = this.responseFactory(response);\n\n if (initializeResponse.paymentForm?.errors?.length) {\n this.nextActionService.emitFlowUpdates(\n new ShowErrorsAction(initializeResponse.paymentForm.errors)\n );\n }\n\n if (initializeResponse.paymentForm) {\n this.setCreditCardEncryptKey(initializeResponse.paymentForm);\n }\n\n return initializeResponse;\n })\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n }\n\n private setCreditCardEncryptKey(paymentForm: PaymentForm): void {\n const publicKeyField: Field | undefined = paymentForm.fields.find(\n (field: Field) => field.name === 'public_key'\n );\n\n if (!publicKeyField) {\n return;\n }\n\n this.encryptCreditCardService.setPublicKey(atob(publicKeyField.value));\n }\n}\n","export abstract class XpsApiPartRequest {\n [fieldName: `xps_${string}`]: unknown;\n\n protected addXpsParameters(parameters: { [key: string]: unknown }): void {\n for (const key in parameters) {\n this[`xps_${key}`] = parameters[key];\n }\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class TokenError extends AppError {\n public constructor() {\n super('XPS API needs token.');\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { XpsApiPartRequest } from '../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../exceptions-handling/errors/token-error.class';\n\nexport class SubmitRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_dfp_hash?: string;\n\n public constructor(parameters: {\n token: string | null;\n fields: Field[];\n form: UntypedFormGroup;\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n dfpHash: string | null;\n }) {\n super();\n\n const { token, fields, form, dfpHash } = parameters;\n\n if (token === null) {\n throw new TokenError();\n }\n\n this.access_token = token;\n\n if (dfpHash) {\n this.xps_dfp_hash = dfpHash;\n }\n\n this.addXpsParameters(this.getFieldsValues(fields, form));\n }\n\n private getFieldsValues(\n fields: Field[],\n form: UntypedFormGroup\n ): { [key: string]: unknown } {\n return fields.reduce(\n (xpsParams: { [key: string]: string }, field: Field) => {\n const formControl: AbstractControl | null = form.get(field.name);\n\n xpsParams[field.name] = formControl ? formControl.value : field?.value;\n\n return xpsParams;\n },\n {}\n );\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SubmitRequest } from './submit-request.class';\n\nexport type SubmitRequestParameters = ConstructorParameters<\n typeof SubmitRequest\n>;\n\nexport type SubmitRequestFactory = (\n ...args: SubmitRequestParameters\n) => SubmitRequest;\n\nexport const submitRequestFactoryToken: InjectionToken<SubmitRequestFactory> =\n new InjectionToken<SubmitRequestFactory>('SubmitRequest');\n\nexport const submitRequestFactoryProvider: ValueProvider = {\n provide: submitRequestFactoryToken,\n useValue: (...args: SubmitRequestParameters) => new SubmitRequest(...args),\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SubmitResponse } from './submit-response.class';\n\nexport type SubmitResponseParameters = ConstructorParameters<\n typeof SubmitResponse\n>;\n\nexport type SubmitResponseFactory = (\n ...args: SubmitResponseParameters\n) => SubmitResponse;\n\nexport const submitResponseFactoryToken: InjectionToken<SubmitResponseFactory> =\n new InjectionToken<SubmitResponseFactory>('SubmitResponse');\n\nexport const submitResponseFactoryProvider: ValueProvider = {\n provide: submitResponseFactoryToken,\n useValue: (...args: SubmitResponseParameters) => new SubmitResponse(...args),\n};\n","import type XsollaAntifraudFingerprint from '@xsolla/antifraud-fingerprint';\nimport { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\nimport { Hash } from './hash.type';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DeviceFingerPrintService {\n private hash!: Promise<string>;\n private antifraudFingerprintLibrary!: Promise<\n typeof XsollaAntifraudFingerprint\n >;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public init(): void {\n if (!this.settingsService.isInitialized) {\n return;\n }\n this.antifraudFingerprintLibrary = this.loadAntifraudFingerprintLibrary();\n this.hash = this.buildHash();\n }\n\n public async getHash(): Promise<string> {\n return this.hash;\n }\n\n private async loadAntifraudFingerprintLibrary(): Promise<\n typeof XsollaAntifraudFingerprint\n > {\n const library = await import('@xsolla/antifraud-fingerprint');\n\n return library.AntifraudFingerprint as typeof XsollaAntifraudFingerprint;\n }\n\n private async buildHash(): Promise<string> {\n const hash: Hash = await this.generate();\n return JSON.stringify(hash);\n }\n\n private async generate(): Promise<Hash | null> {\n const fingerprint = await this.makeAntifraudFingerprint();\n if (!fingerprint) {\n return null;\n }\n\n await fingerprint.dispatch().catch((err) => console.log(err));\n\n const afsHash = await fingerprint.hash();\n\n return { '301': afsHash };\n }\n\n private async makeAntifraudFingerprint(): Promise<XsollaAntifraudFingerprint | null> {\n if (!this.settingsService.token) {\n return null;\n }\n\n const antifraudFingerprint: typeof XsollaAntifraudFingerprint = await this\n .antifraudFingerprintLibrary;\n\n try {\n return new antifraudFingerprint({\n api: {\n url: 'https://afs.xsolla.com/dfp/api/v1/',\n token: this.settingsService.token,\n timeout: 3000,\n },\n retry: {\n num: 1,\n timeout: 500,\n },\n });\n } catch (error: unknown) {\n return null;\n }\n }\n}\n","import { Field } from '../field.interface';\nimport { Inject, Injectable } from '@angular/core';\nimport {\n SubmitRequestFactory,\n submitRequestFactoryToken,\n} from './request/submit-request.token';\nimport {\n SubmitResponseFactory,\n submitResponseFactoryToken,\n} from './response/submit-response.token';\nimport { SettingsService } from '../../settings/settings.service';\nimport { SubmitResponse } from './response/submit-response.class';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DeviceFingerPrintService } from '../../device-finger-print/device-finger-print.service';\nimport { ResponseError } from '../../exceptions-handling/errors/response-error.class';\nimport { XpsResponse } from '../xps-response.interface';\nimport { XpsApiService } from '../xps-api/xps-api.service';\nimport { EncryptCreditCardService } from '../../encrypt-credit-card/encrypt-credit-card.service';\nimport { SubmitRequest } from './request/submit-request.class';\nimport { XpsResponseErrorsMappingService } from '../../errors-mapping/xps-response-errors-mapping.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SubmitService {\n public constructor(\n @Inject(submitRequestFactoryToken)\n private readonly requestFactory: SubmitRequestFactory,\n @Inject(submitResponseFactoryToken)\n private readonly responseFactory: SubmitResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly deviceFingerPrintService: DeviceFingerPrintService,\n private readonly xpsApiService: XpsApiService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n private readonly encryptCreditCardService: EncryptCreditCardService\n ) {}\n\n // NB: Never add 'async' statement for this method!\n // 'Async' statement wraps current promise into another.\n // In this way two promises become unequal, that can broke XPS API requests logic.\n\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n public request(\n fields: Field[],\n form: UntypedFormGroup\n ): Promise<SubmitResponse> {\n return (\n this.deviceFingerPrintService\n .getHash()\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n .then((dfpHash) => {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n fields,\n form,\n dfpHash,\n });\n\n const encryptedRequest =\n this.encryptCreditCardService.encryptCreditCard<SubmitRequest>(\n requestParams\n );\n\n return this.xpsApiService\n .directPaymentRequest(encryptedRequest)\n .then((xpsResponse: XpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n return this.responseFactory(response);\n })\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n })\n );\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\nexport abstract class EmitDataService<Data> {\n public data$: Observable<Data>;\n\n private readonly dataSubject = new Subject<Data>();\n\n public constructor() {\n this.data$ = this.dataSubject.asObservable();\n }\n\n public emit(data: Data): void {\n this.dataSubject.next(data);\n }\n}\n","import { UntypedFormGroup } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { XpsApiPartRequest } from '../../xps-api-part-request.abstract';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class SyncRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'calculate';\n\n public constructor(parameters: {\n token: string;\n changedField: Field;\n fields: Field[];\n form: UntypedFormGroup;\n }) {\n super();\n\n this.access_token = parameters.token;\n\n const fieldsValues = this.getFieldsValues(\n parameters.changedField,\n parameters.fields,\n parameters.form\n );\n\n this.addXpsParameters({\n ...fieldsValues,\n change_element: parameters.changedField.name,\n });\n }\n\n private getFieldsValues(\n changedField: Field,\n fields: Field[],\n form: UntypedFormGroup\n ): { [key: string]: unknown } {\n const fieldsMap = this.getFieldsMap(fields);\n return changedField?.javascript?.change.params.reduce(\n (xpsParams: { [key: string]: string }, fieldName: string) => {\n const formControl = form.get(fieldName);\n const field: Field | undefined = fieldsMap.get(fieldName);\n\n if (formControl || field) {\n xpsParams[fieldName] = formControl?.value ?? field?.value;\n }\n\n return xpsParams;\n },\n {}\n );\n }\n\n private getFieldsMap(fields: Field[]): Map<string, Field> {\n const map = new Map<string, Field>();\n fields.forEach((field) => map.set(field.name, field));\n return map;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SyncRequest } from './sync-request.class';\n\nexport type SyncRequestParameters = ConstructorParameters<typeof SyncRequest>;\n\nexport type SyncRequestFactory = (\n ...args: SyncRequestParameters\n) => SyncRequest;\n\nexport const syncRequestFactoryToken: InjectionToken<SyncRequestFactory> =\n new InjectionToken<SyncRequestFactory>('SyncRequest');\n\nexport const syncRequestFactoryProvider: ValueProvider = {\n provide: syncRequestFactoryToken,\n useValue: (...args: SyncRequestParameters) => new SyncRequest(...args),\n};\n","import { ValidationErrors } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { XpsResponse } from '../../xps-response.interface';\n\nexport class SyncResponse {\n public readonly error: ValidationErrors | null = null;\n public readonly fields: Field[];\n public readonly parameters: XpsResponse;\n\n public constructor(changedField: Field, response: XpsResponse) {\n const fieldError = response?.errors?.find(\n (error) => error.element_name === changedField.name\n );\n\n if (fieldError) {\n this.error = {\n asyncError: {\n code: fieldError.code,\n message: fieldError.message,\n },\n };\n }\n\n this.fields = Object.keys(response.form).map(\n (key: string): Field => response.form[key]\n );\n\n this.parameters = response;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SyncResponse } from './sync-response.class';\n\nexport type SyncResponseParameters = ConstructorParameters<typeof SyncResponse>;\n\nexport type SyncResponseFactory = (\n ...args: SyncResponseParameters\n) => SyncResponse;\n\nexport const syncResponseFactoryToken: InjectionToken<SyncResponseFactory> =\n new InjectionToken<SyncResponseFactory>('SyncResponse');\n\nexport const syncResponseFactoryProvider: ValueProvider = {\n provide: syncResponseFactoryToken,\n useValue: (...args: SyncResponseParameters) => new SyncResponse(...args),\n};\n","import { Inject, Injectable } from '@angular/core';\nimport { UntypedFormGroup, ValidationErrors } from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport { SettingsService } from '../../settings/settings.service';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { Field } from '../field.interface';\nimport { XpsResponse } from '../xps-response.interface';\nimport { FieldSyncState } from './field-sync-state.interface';\nimport {\n SyncRequestFactory,\n syncRequestFactoryToken,\n} from './request/sync-request.token';\nimport { SyncResponse } from './response/sync-response.class';\nimport {\n SyncResponseFactory,\n syncResponseFactoryToken,\n} from './response/sync-response.token';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ShowErrorsAction } from '../actions/show-errors/show-errors.action.class';\nimport { XpsApiService } from '../xps-api/xps-api.service';\nimport { FieldAsyncValidation } from './field-async-validation.interface';\nimport { EncryptCreditCardService } from '../../encrypt-credit-card/encrypt-credit-card.service';\nimport { SyncRequest } from './request/sync-request.class';\nimport { XpsResponseErrorsMappingService } from '../../errors-mapping/xps-response-errors-mapping.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SyncService extends EmitDataService<XpsResponse> {\n private prevFieldSyncStates: { [fieldName: string]: FieldSyncState } = {};\n private form: UntypedFormGroup = new UntypedFormGroup({});\n private fields: Field[] = [];\n private fieldSyncTimers: { [fieldName: string]: number } = {};\n private readonly fieldAsyncValidation = new Subject<FieldAsyncValidation>();\n\n public constructor(\n @Inject(syncRequestFactoryToken)\n private readonly requestFactory: SyncRequestFactory,\n @Inject(syncResponseFactoryToken)\n private readonly responseFactory: SyncResponseFactory,\n private readonly xpsApiService: XpsApiService,\n private readonly nextActionService: NextActionService,\n private readonly settingsService: SettingsService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n private readonly encryptCreditCardService: EncryptCreditCardService\n ) {\n super();\n }\n\n public get fieldAsyncValidation$(): Observable<FieldAsyncValidation> {\n return this.fieldAsyncValidation.asObservable();\n }\n\n public setup(form: UntypedFormGroup, fields: Field[]): void {\n this.reset();\n\n this.form = form;\n this.fields = fields;\n }\n\n public reset(): void {\n this.prevFieldSyncStates = {};\n this.form = new UntypedFormGroup({});\n this.fields = [];\n }\n\n public async validate(\n field: Field,\n delay = Number('750')\n ): Promise<ValidationErrors | null> {\n if (!this.isReadyField(field)) {\n return Promise.resolve(null);\n }\n\n const control = this.form.get(field.name);\n const value = control?.value;\n const prevFieldState = this.getPrevFieldSyncState(field);\n\n const isInitialValue = value === field.value && !prevFieldState;\n\n if (isInitialValue) {\n return Promise.resolve(null);\n }\n\n if (prevFieldState && value === prevFieldState.value) {\n return Promise.resolve(prevFieldState.result).then((response) => {\n return response?.error ?? null;\n });\n }\n\n const updateFieldState = async (): Promise<\n string | ValidationErrors | null\n > => {\n const requestPromise = this.request(field);\n\n this.setPrevFieldSyncState(field, value, requestPromise);\n\n return requestPromise.then((response: SyncResponse) => {\n this.fieldAsyncValidation.next({\n value,\n field,\n response,\n });\n\n return response.error ?? null;\n });\n };\n\n return new Promise((resolve) => {\n if (delay) {\n const timerId = setTimeout(() => {\n if (value !== control?.value) {\n return resolve(null);\n }\n\n void updateFieldState().then(\n (errors: ValidationErrors | null | string) =>\n resolve(errors as ValidationErrors)\n );\n }, delay);\n\n this.resetFieldSyncTimer(field, Number(timerId));\n } else {\n void updateFieldState().then(\n (errors: ValidationErrors | null | string) =>\n resolve(errors as ValidationErrors)\n );\n }\n });\n }\n\n public getSyncValidationErrors(field: Field): ValidationErrors | null {\n const control = this.form.get(field.name);\n return control?.errors ?? null;\n }\n\n protected async request(field: Field): Promise<SyncResponse> {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n changedField: field,\n fields: this.fields,\n form: this.form,\n });\n\n const encryptedRequest =\n this.encryptCreditCardService.encryptCreditCard<SyncRequest>(\n requestParams\n );\n\n return this.xpsApiService\n .directPaymentRequest(encryptedRequest)\n .then((xpsResponse: XpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n\n this.emitFormErrors(response);\n this.emit(response);\n return this.responseFactory(field, response);\n });\n }\n\n private isReadyField(field: Field): boolean {\n const isSyncEnabled = !!field.javascript?.change;\n const isExistsInForm = !!this.form?.get(field.name);\n\n return isSyncEnabled && isExistsInForm;\n }\n\n private getPrevFieldSyncState(field: Field): FieldSyncState {\n return this.prevFieldSyncStates[field.name];\n }\n\n private setPrevFieldSyncState(\n field: Field,\n value: unknown,\n result: Promise<SyncResponse>\n ): void {\n this.prevFieldSyncStates[field.name] = { value, result };\n }\n\n private emitFormErrors(response: XpsResponse): void {\n const formErrors = response.errors?.filter((error) => !error.element_name);\n\n if (formErrors?.length) {\n this.nextActionService.emitFlowUpdates(new ShowErrorsAction(formErrors));\n }\n }\n\n private resetFieldSyncTimer(field: Field, timerId: number): void {\n const prevTimerId: number = this.fieldSyncTimers[field.name];\n\n if (prevTimerId) {\n clearTimeout(prevTimerId);\n }\n\n this.fieldSyncTimers[field.name] = timerId;\n }\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { ControlType } from './control-type.type';\n\nexport class ControlConfig {\n [option: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n public controlType!: ControlType | string;\n public name!: string;\n public title?: string | null | SafeHtml;\n public shouldHideUserInput?: boolean | null = false;\n}\n","import { ControlConfig } from './control-config';\n\nexport class TextControlConfig extends ControlConfig {\n public controlType = 'text';\n public dataType?: string;\n public maxLength?: number;\n public placeholder?: string;\n public autocomplete?: string;\n public icon?: string;\n public description?: string;\n public inputMode?: string;\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { ValidatorFn as ConvertedValidatorFn } from './validator-fn.type';\nimport { ValidationErrors as ConvertedValidationErrors } from './validation-errors.interface';\nimport { ValidationError as ConvertedValidationError } from './validation-error.interface';\n\nexport function convert(\n validator: ValidatorFn,\n message: string\n): ConvertedValidatorFn {\n return (control: AbstractControl): ConvertedValidationErrors | null => {\n const errors: ValidationErrors | null = validator(control);\n\n if (!errors) {\n return errors;\n }\n\n const firstErrorKey: string = Object.keys(errors)[0];\n const firstError: ConvertedValidationError = errors[firstErrorKey];\n const error =\n typeof firstError === 'object' && firstError !== null ? firstError : {};\n error.message = message;\n\n errors[firstErrorKey] = error;\n\n return errors as ConvertedValidationErrors;\n };\n}\n","import { Validators } from '@angular/forms';\nimport { convert } from '../convert.function';\nimport { ValidatorFn } from '../validator-fn.type';\n\nconst emailRegexp =\n /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-line\n\nexport function convertedEmailValidator(): ValidatorFn {\n return convert(Validators.pattern(emailRegexp), 'Enter a valid email');\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { convert } from '../convert.function';\n\nexport function convertedRequiredValidator(): ValidatorFn {\n return convert(Validators.required, 'Required');\n}\n","import { UntypedFormControl, Validators } from '@angular/forms';\nimport { XpsBoolean } from '../../../xps-boolean.enum';\nimport { Field } from '../../field.interface';\nimport { SyncService } from '../../sync/sync.service';\nimport { CommonControlConfig } from '../common-control-config.interface';\nimport { ControlConfig } from '../controls/control-config';\nimport { FormState } from '../form-state.interface';\nimport { convert } from '../validators/convert.function';\nimport { convertedRequiredValidator } from '../validators/required/required.validator';\nimport { ValidatorFn } from '../validators/validator-fn.type';\nimport { AsyncValidatorFn } from '../validators/async-validator-fn.type';\n\nexport abstract class Converter {\n protected constructor(protected syncService: SyncService) {}\n\n public convertToConfig(field: Field, formState?: FormState): ControlConfig {\n const config = this.createControlConfig(field, formState);\n\n if (formState?.disabled) {\n config.disabled = true;\n }\n\n return config;\n }\n\n public convertToFormControl(field: Field): UntypedFormControl {\n return new UntypedFormControl(\n this.getValue(field),\n this.getValidators(field),\n this.getAsyncValidators(field)\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getValidators(field: Field, formState?: FormState): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n\n if (field.isMandatory === XpsBoolean.true) {\n validators.push(convertedRequiredValidator());\n }\n\n if (field.regex) {\n const match = /^\\/(.*)\\/([gim]*)$/.exec(field.regex);\n\n if (match) {\n const pattern = new RegExp(match[1], match[2]);\n const errorMessage = field.validation_error_msg\n ? field.validation_error_msg\n : 'Enter valid data';\n validators.push(convert(Validators.pattern(pattern), errorMessage));\n }\n }\n\n return validators;\n }\n\n public getAsyncValidators(\n field: Field\n ): AsyncValidatorFn | AsyncValidatorFn[] | null {\n return async () => this.syncService.validate(field);\n }\n\n public createDefaultControlConfig<T extends { [key: string]: unknown }>(\n controlConfigClass: new () => T,\n field: Field\n ): T {\n const config = new controlConfigClass();\n\n this.copyCommonOptions(config, field);\n\n return config;\n }\n\n public getValue(field: Field): string {\n return field.value;\n }\n\n protected abstract createControlConfig(\n field: Field,\n formState?: FormState\n ): ControlConfig;\n\n protected getDataType(): string {\n return 'text';\n }\n\n protected getAutocomplete(): string {\n return 'off';\n }\n\n protected shouldHideUserInput(): boolean {\n return false;\n }\n\n private getCommonControlConfig(field: Field): CommonControlConfig {\n return {\n name: field.name,\n title: field.title,\n labelHint: field.label_hint,\n dataType: this.getDataType(),\n readonly: field.isReadonly === XpsBoolean.true,\n placeholder: field.example,\n autocomplete: this.getAutocomplete(),\n };\n }\n\n private copyCommonOptions<Target extends { [key: string]: unknown }>(\n target: Target,\n field: Field\n ): void {\n const commonControlConfig = this.getCommonControlConfig(field);\n\n Object.keys(commonControlConfig).forEach((sourceKey: string) => {\n if (!(sourceKey in target)) {\n (target as { [key: string]: unknown })[sourceKey] = (\n commonControlConfig as unknown as { [key: string]: unknown }\n )[sourceKey];\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convertedEmailValidator } from '../../validators/email/email-validator';\nimport { ValidatorFn } from '../../validators/validator-fn.type';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class EmailConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super.getValidators(field).concat([convertedEmailValidator()]);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.autocomplete = 'email';\n config.icon = 'mail';\n\n return config;\n }\n\n protected getDataType(): string {\n return 'email';\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationErrors } from '../validation-errors.interface';\nimport { ValidatorFn } from '../validator-fn.type';\n\nexport const restrictedValueValidator = (\n restrictedValue: unknown\n): ValidatorFn => {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n return value !== restrictedValue ? null : { valueAllowed: false };\n };\n};\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { CountryService } from '../../../../country/country.service';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { restrictedValueValidator } from '../../validators/restricted-value/restricted-value.validator';\nimport { Converter } from '../converter.abstract';\nimport { masksFunctionsMap } from '../../masks-functions.map';\nimport { MaskConfig } from '../../mask-config.interface';\n\n@Injectable()\nexport class ZipConverter extends Converter {\n private readonly minLength = 3;\n private readonly maxLength = 10;\n private readonly usCountryLength = 5;\n\n public constructor(\n syncService: SyncService,\n private readonly countryService: CountryService\n ) {\n super(syncService);\n }\n\n private get isUsCountry(): boolean {\n return this.countryService.getCountry() === 'US';\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const minLength = this.isUsCountry ? this.usCountryLength : this.minLength;\n const maxLength = this.isUsCountry ? this.usCountryLength : this.maxLength;\n const validators: ValidatorFn[] = super\n .getValidators(field)\n .concat([\n convert(\n Validators.minLength(minLength),\n `Enter at least ${minLength} characters`\n ),\n\n convert(\n Validators.maxLength(maxLength),\n `Enter no more than ${maxLength} characters`\n ),\n ]);\n\n if (this.isUsCountry) {\n validators.push(\n convert(restrictedValueValidator('00000'), 'Enter a valid ZIP code')\n );\n }\n\n return validators;\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n config.icon = 'location';\n\n if (this.isUsCountry) {\n config.maskConfig = {\n guide: false,\n unmaskModelValue: true,\n showMask: true,\n } as MaskConfig;\n config.inputMode = 'numeric';\n\n if (masksFunctionsMap['zip']) {\n (config.maskConfig as MaskConfig).mask = masksFunctionsMap['zip'];\n }\n } else {\n config.maxLength = this.maxLength;\n }\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'postal-code';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","export function isEmptyInputValue(value: string | null | undefined): boolean {\n return value == null || value.length === 0;\n}\n","export function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n","import { isEmptyInputValue } from '../is-empty-input-value.function';\nimport { ValidatorFn } from '../validator-fn.type';\nimport { ValidationErrors } from '../validation-errors.interface';\nimport { isString } from '../../../../type-guards/is-string.function';\n\n/**\n * Checks number match Luhn algorithm.\n * Based on http://en.wikipedia.org/wiki/Luhn.\n */\nexport const luhnFormulaValidator: ValidatorFn = ({ value }) => {\n if (isEmptyInputValue(value) || !isString(value)) {\n return null;\n }\n\n const error: ValidationErrors = {\n rewritableError: {\n message: `Enter a valid card number`,\n },\n };\n\n if (/[^0-9 -]+/.test(value)) {\n // accept only spaces, digits and dashes\n return error;\n }\n\n let resultSum = 0;\n let digit = 0;\n let isEven = false;\n\n const modBase = 10;\n const digitRadix = 10;\n const maxNumber = 9;\n const digits = value.replace(/\\D/g, '');\n\n // Checks if number match Luhn algorithm\n // based on http://en.wikipedia.org/wiki/Luhn\n for (let index = digits.length - 1; index >= 0; index--) {\n const char = digits.charAt(index);\n digit = parseInt(char, digitRadix);\n\n if (isEven && (digit *= 2) > maxNumber) {\n digit -= maxNumber;\n }\n\n resultSum += digit;\n isEven = !isEven;\n }\n\n return resultSum % modBase === 0 ? null : error;\n};\n","import { SafeHtml } from '@angular/platform-browser';\nimport { ControlConfig } from '../control-config';\nimport { CreditCardTypes } from '../../../../credit-card/credit-card-types.enum';\n\nexport class CardNumberConfig extends ControlConfig {\n public controlType = 'card-number';\n public placeholder?: string | SafeHtml | null;\n public icon?: string;\n public availableCardTypes: CreditCardTypes[] = [];\n public activeCardType?: CreditCardTypes;\n public customError = '';\n}\n","import { isEmptyInputValue } from '../is-empty-input-value.function';\nimport { Injectable } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { isString } from '../../../../type-guards/is-string.function';\nimport { CreditCardService } from '../../../../credit-card/credit-card.service';\n\n@Injectable()\nexport class CreditCardMinLengthValidator {\n public constructor(private readonly creditService: CreditCardService) {}\n\n public validate = (field: { value: string }): ValidationErrors | null => {\n if (isEmptyInputValue(field.value) || !isString(field.value)) {\n return null;\n }\n\n const length = field.value.length;\n\n const cardType = this.creditService.getTypeByNumber(field.value);\n\n const { minLength } = this.creditService.getCreditCardSettings(cardType);\n\n return length < minLength\n ? {\n rewritableError: {\n message: `Enter at least ${minLength} characters`,\n number: minLength,\n },\n }\n : null;\n };\n}\n","import { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { CreditCardMinLengthValidator } from '../../validators/credit-card-length/credit-card-min-length.validator';\nimport { Field } from '../../../field.interface';\nimport { ValidatorFn } from '@angular/forms';\nimport { luhnFormulaValidator } from '../../validators/luhn-formula-validator/luhn-formula.validator';\nimport { FormState } from '../../form-state.interface';\nimport { CardNumberConfig } from '../../controls/card-number/card-number-control.config';\nimport { CreditCardTypes } from '../../../../credit-card/credit-card-types.enum';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CardNumberConverter extends Converter {\n public constructor(\n syncService: SyncService,\n private readonly maxLengthValidator: CreditCardMinLengthValidator,\n private readonly minLengthValidator: CreditCardMinLengthValidator\n ) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super\n .getValidators(field)\n .concat([\n luhnFormulaValidator,\n this.minLengthValidator.validate,\n this.maxLengthValidator.validate,\n ]);\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): CardNumberConfig {\n const config = this.createDefaultControlConfig(CardNumberConfig, field);\n\n config.placeholder = config.title;\n\n config.availableCardTypes =\n (formState?.availableCardTypes as CreditCardTypes[]) ?? [];\n\n config.activeCardType = formState?.activeCardType as CreditCardTypes;\n\n config.customError = formState?.customError as string;\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-number';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationErrors } from '../validation-errors.interface';\nimport { FormState } from '../../form-state.interface';\nimport { ValidatorFn } from '../validator-fn.type';\n\nexport const maxMonths = 12;\nexport const getMinMonth = (parsedYear: string): number => {\n let minMonth = 1;\n\n const year = parsedYear ? Number('20' + parsedYear) : null;\n const today = new Date();\n minMonth = year === today.getFullYear() ? today.getMonth() + 1 : 1;\n\n return minMonth;\n};\n\nconst sendErrMessage = (fn: unknown): ValidationErrors =>\n ({\n cardMonthExpiration: {\n message: fn,\n },\n } as ValidationErrors);\n\nexport function cardMonthValidator(formState?: FormState): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const { value } = control;\n\n if (typeof value !== 'string') return null;\n\n const minMonth = getMinMonth((formState?.cardYearValue as string) ?? null);\n\n const twoDigitsRegex = new RegExp(/^\\d{2}$/);\n const fieldCommonLength = 2;\n\n if (value.length !== fieldCommonLength) {\n return sendErrMessage(`Enter ${fieldCommonLength} characters`);\n }\n\n if (!twoDigitsRegex.test(value)) {\n return sendErrMessage(`Enter a valid expiration month`);\n }\n\n if (Number(value) < minMonth) {\n return sendErrMessage(\n `Enter a month greater than or equal to ${minMonth}`\n );\n }\n\n if (Number(value) > maxMonths) {\n return sendErrMessage(`Enter a month less than or equal to ${maxMonths}`);\n }\n\n return null;\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { ValidatorFn } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { FormState } from '../../form-state.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { cardMonthValidator } from '../../validators/card-month/card-month.validator';\n\n@Injectable()\nexport class CardMonthConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field, formState: FormState): ValidatorFn[] {\n return super.getValidators(field).concat([cardMonthValidator(formState)]);\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '99',\n guide: false,\n };\n config.inputMode = 'numeric';\n\n config.placeholder = `MM`;\n\n config.title = `MM`;\n\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-exp-month';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { FormState } from '../../form-state.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { FieldNames } from '../../../field-names.enum';\nimport { CvvFormState } from './cvv-form-state.interface';\nimport { convert } from '../../validators/convert.function';\nimport { CreditCardTypes } from '../../../../credit-card/credit-card-types.enum';\n\n@Injectable()\nexport class CvvConverter extends Converter {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n private maxFieldLength = 4;\n\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field, formState?: CvvFormState): ValidatorFn[] {\n const validators: ValidatorFn[] = super.getValidators(field);\n const activeCardType = formState ? formState.activeCardType : null;\n const getPatternValidator = (pattern: RegExp): ValidatorFn =>\n convert(Validators.pattern(pattern), `Enter a valid CVV/CVC`);\n\n switch (activeCardType) {\n case CreditCardTypes.AMERICAN_EXPRESS: {\n this.maxFieldLength = 4;\n validators.push(getPatternValidator(/^\\d{4}$/));\n break;\n }\n case CreditCardTypes.MAESTRO: {\n this.maxFieldLength = 3;\n validators.push(getPatternValidator(/^\\d{0,3}$/));\n break;\n }\n default: {\n this.maxFieldLength = 3;\n validators.push(getPatternValidator(/^\\d{3}$/));\n }\n }\n\n return validators;\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: () => new Array(this.maxFieldLength).fill('9').join(''),\n unmaskModelValue: false,\n guide: false,\n };\n\n config.tooltip = {\n text: 'The code is on the back of your card',\n image: 'cvv',\n parentField: FieldNames.cvv,\n position: 'input',\n analyticsAction: 'show-cvv-tooltip',\n };\n\n config.inputMode = 'numeric';\n config.shouldHideUserInput = this.shouldHideUserInput();\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-csc';\n }\n\n protected getDataType(): string {\n return 'password';\n }\n\n protected shouldHideUserInput(): boolean {\n return true;\n }\n}\n","import { ValidatorFn, ValidationErrors } from '@angular/forms';\nimport { isEmptyInputValue } from '../is-empty-input-value.function';\n\nexport const birthdateValidator: ValidatorFn = ({ value }) => {\n if (isEmptyInputValue(value) || typeof value !== 'string') {\n return null;\n }\n\n const error: ValidationErrors = {\n invalidBirthDate: {\n message: `Enter a valid birth date`,\n },\n };\n const dateArr = value.split('/');\n const datePartsCount = 3;\n const dayIndex = 0;\n const monthIndex = 1;\n const yearIndex = 2;\n const maxMonths = 12;\n const maxDays = 31;\n const minAge = 16;\n const maxAge = 120;\n\n if (dateArr.length < datePartsCount) {\n return null;\n }\n\n if (+dateArr[monthIndex] > maxMonths || +dateArr[dayIndex] > maxDays) {\n return error;\n }\n\n const currentDate = new Date(\n +dateArr[yearIndex],\n +dateArr[monthIndex],\n +dateArr[dayIndex]\n );\n const nowDate = new Date();\n\n if (\n isNaN(currentDate.getFullYear()) ||\n nowDate.getFullYear() - currentDate.getFullYear() <= minAge ||\n nowDate.getFullYear() - currentDate.getFullYear() > maxAge\n ) {\n return error;\n } else {\n return null;\n }\n};\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { Converter } from '../converter.abstract';\nimport { birthdateValidator } from '../../validators/birth-date/birth-date.validator';\n\n@Injectable()\nexport class BirthDateConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super\n .getValidators(field)\n .concat([\n convert(\n Validators.pattern(/^[0-9]{1,2}\\/[0-9]{1,2}\\/[0-9]{4}$/),\n `Enter a valid birth date`\n ),\n birthdateValidator,\n ]);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '99/99/9999',\n unmaskModelValue: false,\n guide: false,\n };\n\n config.placeholder = `DD/MM/YYYY`;\n\n config.inputMode = 'numeric';\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class CardholderNameConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n\n protected getAutocomplete(): string {\n return 'cc-name';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","export const cpfNameRegex =\n /^[a-zA-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ.'-]{2,50}(?: [a-zA-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ.'-]{2,50}){1,8}$/i; // tslint:disable-line\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { Converter } from '../converter.abstract';\nimport { cpfNameRegex } from './cpf-name-regex.variable';\n\n@Injectable()\nexport class CpfNameConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super\n .getValidators(field)\n .concat([\n convert(Validators.pattern(cpfNameRegex), `Enter a valid name`),\n ]);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.tooltip = {\n text: `Where to find your name`,\n image: 'cpf-name',\n };\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class CpfNumberConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '999.999.999-99',\n unmaskModelValue: true,\n guide: false,\n };\n\n config.inputMode = 'numeric';\n\n config.placeholder = '000.000.000-00';\n\n config.tooltip = {\n text: `Where to find your registration number`,\n image: 'cpf-number',\n };\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { StreetNumberFormState } from './street-number-from-state.interface';\nimport { ValidatorFn } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { restrictedValueValidator } from '../../validators/restricted-value/restricted-value.validator';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class StreetNumberConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(\n field: Field,\n formState?: StreetNumberFormState\n ): ValidatorFn[] {\n const validators: ValidatorFn[] = super.getValidators(field);\n\n if (formState?.country === 'BL') {\n validators.push(\n convert(restrictedValueValidator('0'), `Enter a valid building number`)\n );\n }\n\n return validators;\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class TextConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n}\n","import { ControlConfig } from '../control-config';\nimport { XpsBoolean } from '../../../../xps-boolean.enum';\n\nexport class CheckboxControlConfig extends ControlConfig {\n public controlType = 'checkbox';\n public initValue!: XpsBoolean;\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { XpsBoolean } from '../../../../xps-boolean.enum';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { ValidatorFn } from '../../validators/validator-fn.type';\nimport { convert } from '../../validators/convert.function';\nimport { restrictedValueValidator } from '../../validators/restricted-value/restricted-value.validator';\nimport { CheckboxControlConfig } from '../../controls/checkbox/checkbox-control.config';\n\n@Injectable()\nexport class CheckboxConverter extends Converter {\n protected readonly checkedValue = XpsBoolean.true;\n protected readonly uncheckedValue = XpsBoolean.false;\n\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n\n if (field.isMandatory === this.checkedValue) {\n validators.push(\n convert(\n restrictedValueValidator(this.uncheckedValue),\n 'validation_message_required_checkbox'\n )\n );\n }\n\n return validators;\n }\n\n protected createControlConfig(field: Field): CheckboxControlConfig {\n const config = this.createDefaultControlConfig(\n CheckboxControlConfig,\n field\n );\n\n config.placeholder = config.title;\n config.initValue = field.value as XpsBoolean;\n\n return config;\n }\n}\n","import { ControlConfig } from '../control-config';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { SearchSelectOption } from './search-select-option.interface';\nimport { SelectOption } from './select-option.interface';\n\nexport class SearchSelectControlConfig extends ControlConfig {\n public controlType = 'search-select';\n public name!: string;\n public title?: string | SafeHtml;\n public options?: SelectOption[] | SearchSelectOption[];\n public hasSearch?: boolean;\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { SearchSelectControlConfig } from '../../controls/search-select/search-select-control.config';\nimport { Field } from '../../../field.interface';\nimport { SelectOption } from '../../controls/search-select/select-option.interface';\n\n@Injectable()\nexport class SelectConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): SearchSelectControlConfig {\n const config = this.createDefaultControlConfig(\n SearchSelectControlConfig,\n field\n );\n config.options = field.options as SelectOption[];\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\n\n@Injectable()\nexport class PinConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n}\n","import { RadioOption } from './radio-option.interface';\nimport { ControlConfig } from '../control-config';\n\nexport class RadioControlConfig extends ControlConfig {\n public controlType = 'radio';\n public options: RadioOption[] = [];\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { RadioControlConfig } from '../../controls/radio-control/radio-control.config';\nimport { RadioOption } from '../../controls/radio-control/radio-option.interface';\n\n@Injectable()\nexport class RadioGroupConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): RadioControlConfig {\n const config = this.createDefaultControlConfig(RadioControlConfig, field);\n\n config.options = field.options as RadioOption[];\n return config;\n }\n}\n","import { ValidatorFn } from '@angular/forms';\nimport { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\n\n@Injectable()\nexport class PricepointConverter extends Converter {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n private readonly maxFieldLength = 30;\n\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super.getValidators(field);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: () => new Array(this.maxFieldLength).fill('9').join(``),\n unmaskModelValue: false,\n guide: false,\n };\n\n config.placeholder = field.title;\n config.inputMode = 'numeric';\n\n return config;\n }\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { ControlConfig } from '../control-config';\n\nexport class CouponControlConfig extends ControlConfig {\n public controlType = 'coupon';\n public dataType?: string;\n public placeholder?: string | SafeHtml | null;\n public autocomplete?: string;\n}\n","import { Validators } from '@angular/forms';\nimport { ValidatorFn } from '../validator-fn.type';\nimport { convert } from '../convert.function';\n\nexport function couponValidator(\n message = `Enter a valid promo code`\n): ValidatorFn {\n return convert(Validators.pattern(/^[0-9a-z_-]+$/i), message);\n}\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { CouponControlConfig } from '../../controls/coupon/coupon-control.config';\nimport { couponValidator } from '../../validators/coupon/coupon-validator';\n\n@Injectable()\nexport class CouponConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(): ValidatorFn[] {\n return [couponValidator()];\n }\n\n protected createControlConfig(field: Field): CouponControlConfig {\n const config = this.createDefaultControlConfig(CouponControlConfig, field);\n\n config.placeholder = `Enter promo code`;\n\n return config;\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationErrors } from '../validation-errors.interface';\n\nconst sendErrMessage = (fn: unknown): ValidationErrors =>\n ({\n cardYearExpiration: {\n message: fn,\n },\n } as ValidationErrors);\n\nexport const getLastCharactersInYear = (\n str: string = new Date().getFullYear().toString()\n): string => {\n // for getting last characters in year; need to check in future\n return str.slice(str.length - 2);\n};\n\n// Карта выдается максимум на 50 лет\nexport const maxYearsCount = 50;\n\nexport function cardYearValidator(\n control: AbstractControl\n): ValidationErrors | null {\n const { value } = control;\n\n if (typeof value !== 'string') return null;\n\n const minYear = parseInt(getLastCharactersInYear(), 10);\n\n const twoDigitsRegex = new RegExp(/^\\d{2}$/);\n\n const fieldCommonLength = 2;\n\n if (value.length !== fieldCommonLength) {\n return sendErrMessage(`Enter ${fieldCommonLength} characters`);\n }\n\n if (!twoDigitsRegex.test(value)) {\n return sendErrMessage(`Enter a valid expiration year`);\n }\n\n if (Number(value) < minYear) {\n return sendErrMessage(`Enter a year greater than or equal to ${minYear}`);\n }\n\n const maxValidYear = minYear + maxYearsCount;\n\n if (Number(value) > maxValidYear) {\n return sendErrMessage(`Enter a year less than or equal to ${maxValidYear}`);\n }\n\n return null;\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { ValidatorFn } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { FormState } from '../../form-state.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { cardYearValidator } from '../../validators/card-year/card-year.validator';\n\n@Injectable()\nexport class CardYearConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super.getValidators(field).concat([cardYearValidator]);\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '99',\n guide: false,\n };\n config.inputMode = 'numeric';\n\n config.placeholder = `YY`;\n\n config.title = `YY`;\n\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-exp-year';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","import { Validators } from '@angular/forms';\nimport { ValidatorFn } from './validator-fn.type';\nimport { convert } from './convert.function';\n\nexport function phoneValidator(): ValidatorFn {\n return convert(Validators.pattern(/^\\d*$/), 'Enter a valid phone');\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { convert } from './convert.function';\n\nexport function minLengthValidator(minLength: number): ValidatorFn {\n return convert(\n Validators.minLength(minLength),\n `Enter at least ${minLength} characters`\n );\n}\n","import { Validators } from '@angular/forms';\nimport { ValidatorFn } from './validator-fn.type';\nimport { convert } from './convert.function';\nexport function maxLengthValidator(maxLength: number): ValidatorFn {\n return convert(\n Validators.maxLength(maxLength),\n `Enter no more than ${maxLength} characters`\n );\n}\n","import { ControlConfig } from './control-config';\n\nexport class PhoneControlConfig extends ControlConfig {\n public controlType = 'phone';\n public placeholder?: string;\n public icon?: string;\n}\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { Converter } from './converter.abstract';\nimport { SyncService } from '../../sync/sync.service';\nimport { Field } from '../../field.interface';\nimport { phoneValidator } from '../validators/phone-validator';\nimport { minLengthValidator } from '../validators/min-length-validator';\nimport { maxLengthValidator } from '../validators/max-length-validator';\nimport { PhoneControlConfig } from '../controls/phone-control.config';\nimport { convertedRequiredValidator } from '../validators/required/required.validator';\n\n@Injectable()\nexport class PhoneConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const minLength = 10;\n const maxLength = 15;\n\n return super\n .getValidators(field)\n .concat([\n convertedRequiredValidator(),\n phoneValidator(),\n minLengthValidator(minLength),\n maxLengthValidator(maxLength),\n ]);\n }\n\n protected createControlConfig(field: Field): PhoneControlConfig {\n const config = this.createDefaultControlConfig(PhoneControlConfig, field);\n config.inputMode = 'numeric';\n return config;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ConvertersMap } from './converters-map.interface';\nimport { EmailConverter } from './email/email.converter';\nimport { ZipConverter } from './zip/zip.converter';\nimport { CardNumberConverter } from './card-number/card-number.converter';\nimport { CardMonthConverter } from './card-month/card-month.converter';\nimport { CvvConverter } from './cvv/cvv.converter';\nimport { BirthDateConverter } from './birth-date/birth-date.converter';\nimport { CardholderNameConverter } from './cardholder-name/cardholder-name.converter';\nimport { CpfNameConverter } from './cpf-name/cpf-name.converter';\nimport { CpfNumberConverter } from './cpf-number/cpf-number.converter';\nimport { StreetNumberConverter } from './street-number/street-number.converter';\nimport { TextConverter } from './text/text.converter';\nimport { CheckboxConverter } from './checkbox/checkbox.converter';\nimport { SelectConverter } from './select/select.converter';\nimport { PinConverter } from './pin/pin.converter';\nimport { RadioGroupConverter } from './radio-group/radio-group.converter';\nimport { PricepointConverter } from './pricepoint/pricepoint.converter';\nimport { CouponConverter } from './coupon/coupon.converter';\nimport { CardYearConverter } from './card-year/card-year.converter';\nimport { PhoneConverter } from './phone.converter';\n\nexport const convertersMapToken = new InjectionToken<ConvertersMap>(\n 'ConvertersTokensMap'\n);\n\nexport const convertersMap: ConvertersMap = {\n card_number: CardNumberConverter,\n card_month: CardMonthConverter,\n card_year: CardYearConverter,\n cvv: CvvConverter,\n extra_cvv: CvvConverter,\n zip: ZipConverter,\n cardholdername: CardholderNameConverter,\n cpf_number: CpfNumberConverter,\n cpf_name: CpfNameConverter,\n birth_date: BirthDateConverter,\n text: TextConverter,\n check: CheckboxConverter,\n select: SelectConverter,\n pin: PinConverter,\n radiogroup: RadioGroupConverter,\n email: EmailConverter,\n psEmail: EmailConverter,\n bazitemail: EmailConverter,\n street_number: StreetNumberConverter,\n sum: PricepointConverter,\n out: PricepointConverter,\n couponCode: CouponConverter,\n phone: PhoneConverter,\n};\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { Converter } from '../converters/converter.abstract';\nimport { convertersMapToken } from '../converters/converters-map';\nimport { ConvertersMap } from '../converters/converters-map.interface';\nimport { ControlConfig } from './control-config';\n\n@Injectable()\nexport class ControlConfigService {\n public constructor(\n @Inject(convertersMapToken)\n private readonly convertersMap: ConvertersMap,\n private readonly injector: Injector\n ) {}\n\n public getFormControl(field: Field): UntypedFormControl | null {\n const converter = this.getConverter(field);\n\n if (!converter) {\n return null;\n }\n\n return converter.convertToFormControl(field);\n }\n\n public getConfig(field: Field): ControlConfig | null {\n const converter = this.getConverter(field);\n\n if (!converter) {\n return null;\n }\n\n return converter.convertToConfig(field);\n }\n\n public getConverter(field: Field | null): Converter | null {\n if (!field) {\n return null;\n }\n\n const sanitizedName = field.name.replace(/^fix_/i, '');\n let converter = this.convertersMap[sanitizedName];\n\n if (!converter) {\n converter = this.convertersMap[field.type];\n }\n\n if (!converter) {\n return null;\n }\n\n return this.injector.get<Converter>(converter);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { XpsBoolean } from '../../xps-boolean.enum';\nimport { Field } from '../field.interface';\nimport { ControlConfigService } from './controls/control-config.service';\nimport { FieldFormStates } from './field-form-states.interface';\nimport { FormState } from './form-state.interface';\n\n@Injectable()\nexport class FormService {\n public fieldFormStates: FieldFormStates = {};\n\n public constructor(\n protected readonly controlConfigService: ControlConfigService\n ) {}\n\n public createForm(fields: Field[]): UntypedFormGroup {\n const controls: { [name: string]: UntypedFormControl } =\n this.getVisibleFields(fields).reduce(\n (result: { [key: string]: UntypedFormControl }, field: Field) => {\n const formControl: UntypedFormControl | null =\n this.controlConfigService.getFormControl(field);\n\n if (formControl) {\n result[field.name] = formControl;\n }\n\n return result;\n },\n {}\n );\n\n return new UntypedFormGroup(controls);\n }\n\n public updateFieldFormState(\n form: UntypedFormGroup,\n fields: Field[],\n fieldName: string,\n formState: FormState\n ): void {\n const field = fields.find(\n (fieldItem: Field) => fieldItem.name === fieldName\n );\n\n if (!field) {\n return;\n }\n\n const converter = this.controlConfigService.getConverter(field);\n const control = form.controls[fieldName];\n\n if (!control) {\n return;\n }\n\n this.fieldFormStates[fieldName] = {\n ...this.fieldFormStates[fieldName],\n ...formState,\n };\n control.setValidators(\n converter?.getValidators(field, this.fieldFormStates[fieldName]) ?? []\n );\n control.updateValueAndValidity();\n }\n\n private getVisibleFields(fields: Field[]): Field[] {\n return fields.filter(({ isVisible }) => isVisible === XpsBoolean.true);\n }\n}\n","export enum StatusSearchParam {\n token = 'token',\n pid = 'fix_pid',\n invoice = 'fix_invoice',\n signature = 'signature',\n locale = 'locale',\n testProject = 'fix_testProject',\n testPs = 'fix_testPs',\n testXsolla = 'fix_testXsolla',\n userReturnStatus = 'fix_userReturnStatus',\n isSavePaymentAccount = 'isSavePaymentAccount',\n}\n","import { StatusSearchParam } from './status-search-param.enum';\n\nexport const requiredStatusSearchParams = [\n StatusSearchParam.token,\n StatusSearchParam.locale,\n StatusSearchParam.signature,\n StatusSearchParam.pid,\n StatusSearchParam.invoice,\n];\n","import { StatusRequestParams } from './status-request-params.interface';\nimport { StatusSearchParam } from './status-search-param.enum';\n\ntype SearchParamConverter = (value: string) => string | number;\n\ninterface StatusSearchParamSettings {\n key: keyof StatusRequestParams;\n converter: SearchParamConverter;\n}\n\nconst stringConverter: SearchParamConverter = (value: string): string => value;\nconst numberConverter: SearchParamConverter = (value: string): number => {\n const numberValue = Number(value);\n return isNaN(numberValue) ? 0 : numberValue;\n};\n\nexport const statusSearchParamsMap = new Map<\n StatusSearchParam,\n StatusSearchParamSettings\n>([\n [\n StatusSearchParam.token,\n {\n key: 'token',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.signature,\n {\n key: 'signature',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.locale,\n {\n key: 'locale',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.userReturnStatus,\n {\n key: 'userReturnStatus',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.pid,\n {\n key: 'pid',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.invoice,\n {\n key: 'invoice',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testProject,\n {\n key: 'testProject',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testPs,\n {\n key: 'testPs',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testXsolla,\n {\n key: 'testXsolla',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.isSavePaymentAccount,\n {\n key: 'isSavePaymentAccount',\n converter: stringConverter,\n },\n ],\n]);\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport abstract class XpsApiPart<Response> {\n public get response$(): Observable<Response> {\n return this.response\n .asObservable()\n .pipe(\n filter<Response | null, Response>(\n (response: Response | null): response is Response => response !== null\n )\n );\n }\n\n private readonly response: BehaviorSubject<Response | null> =\n new BehaviorSubject<Response | null>(null);\n\n public emitResponse(response: Response | null): void {\n this.response.next(response);\n }\n\n public get currentValue(): Response | null {\n return this.response.getValue();\n }\n\n protected abstract request(\n ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n ): void | Promise<Response | void> | Promise<Response> | Observable<Response>;\n}\n","import { XpsApiPartRequest } from '../../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\nimport { StatusRequestParams } from '../status-request-params.interface';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class StatusRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'status';\n public readonly xps_fix_invoice: number;\n public readonly xps_fix_pid: number;\n public readonly xps_signature: string;\n public readonly xps_locale: string;\n public readonly xps_fix_testProject: number | undefined;\n public readonly xps_fix_testPs: number | undefined;\n public readonly xps_fix_testXsolla: number | undefined;\n public readonly xps_fix_userReturnStatus: string | undefined;\n\n public constructor(parameters: StatusRequestParams) {\n super();\n\n if (!parameters.token) {\n throw new TokenError();\n }\n\n this.access_token = parameters.token;\n this.xps_fix_invoice = parameters.invoice;\n this.xps_fix_pid = parameters.pid;\n this.xps_signature = parameters.signature;\n this.xps_fix_testProject = parameters.testProject;\n this.xps_fix_testPs = parameters.testPs;\n this.xps_fix_testXsolla = parameters.testXsolla;\n this.xps_fix_userReturnStatus = parameters.userReturnStatus;\n this.xps_locale = parameters.locale;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusRequest } from './status-request.class';\n\nexport type StatusRequestParameters = ConstructorParameters<\n typeof StatusRequest\n>;\n\nexport type StatusRequestFactory = (\n ...args: StatusRequestParameters\n) => StatusRequest;\n\nexport const statusRequestFactoryToken: InjectionToken<StatusRequestFactory> =\n new InjectionToken<StatusRequestFactory>('StatusRequest');\n\nexport const statusRequestFactoryProvider: ValueProvider = {\n provide: statusRequestFactoryToken,\n useValue: (...args: StatusRequestParameters) => new StatusRequest(...args),\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusResponse } from './status-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof StatusResponse>;\n\nexport type StatusResponseFactory = (\n ...args: ResponseParameters\n) => StatusResponse;\n\nexport const statusResponseFactoryToken: InjectionToken<StatusResponseFactory> =\n new InjectionToken<StatusResponseFactory>('StatusResponse');\n\nexport const statusResponseFactoryProvider: ValueProvider = {\n provide: statusResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new StatusResponse(...args),\n};\n","import { lastValueFrom } from 'rxjs';\nimport { Injectable, Inject } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { XpsResponse, XpsStatus } from '../../xps-response.interface';\nimport { SettingsService } from '../../../settings/settings.service';\nimport { TerminalError } from '../../../exceptions-handling/errors/terminal-error.class';\nimport { SecureApiClient } from '../../../http/secure-api/secure-api.service';\nimport { XpsApiPart } from '../../xps-api-part.abstract';\nimport {\n StatusRequestFactory,\n statusRequestFactoryToken,\n} from './request/status-request.token';\nimport {\n StatusResponseFactory,\n statusResponseFactoryToken,\n} from './response/status-response.token';\nimport { StatusRequestParams } from './status-request-params.interface';\nimport { StatusResponse } from './response/status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusRequestService extends XpsApiPart<StatusResponse> {\n private readonly apiRoute = 'directpayment';\n private requestParams!: StatusRequestParams;\n public constructor(\n private readonly secureApiClient: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(statusRequestFactoryToken)\n private readonly requestFactory: StatusRequestFactory,\n @Inject(statusResponseFactoryToken)\n private readonly responseFactory: StatusResponseFactory\n ) {\n super();\n }\n\n public setRequestParams(params: StatusRequestParams): void {\n this.requestParams = {\n locale: params.locale,\n testProject: params.testProject,\n testPs: params.testPs,\n testXsolla: params.testXsolla,\n userReturnStatus: params.userReturnStatus,\n invoice: params.invoice,\n pid: params.pid,\n signature: params.signature,\n };\n }\n\n public request(): void {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n ...this.requestParams,\n });\n\n lastValueFrom(\n this.secureApiClient.post<XpsResponse>(\n this.apiRoute,\n new URLSearchParams(\n requestParams as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then((response: XpsResponse) => {\n const statusResponse = this.responseFactory({\n status: response.status as XpsStatus | null,\n errors: response.errors,\n form: response.form,\n });\n\n this.emitResponse(statusResponse);\n })\n .catch((e: TerminalError) => {\n throw new TerminalError(e.message, e.code);\n });\n }\n}\n","export function isNull(value: unknown): value is null {\n return value === null;\n}\n","export function isUndefined(value: unknown): value is undefined {\n return typeof value === 'undefined';\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ExtendedWindow } from '../extended-window.interface';\nimport { SettingsService } from '../settings/settings.service';\nimport { isNull } from '../type-guards/is-null.function';\nimport { isUndefined } from '../type-guards/is-undefined.function';\nimport { windowToken } from '../window.token';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SessionService {\n private cache: { [key: string]: unknown } = {};\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow,\n private readonly settingsService: SettingsService\n ) {}\n\n /**\n * @param {string} key must be uniq entire all app\n * @param {unknown} value can be anything\n */\n public set(key: string, value: unknown): void {\n this.cache[key] = value;\n\n try {\n this.window.sessionStorage.setItem(\n this.getStorageKey(key),\n JSON.stringify(value)\n );\n } catch (error: unknown) {\n console.warn('Session storage not available.');\n }\n }\n\n public get<T>(key: string): T | null {\n const cacheValue: unknown = this.cache[key];\n\n if (!isUndefined(cacheValue)) {\n return cacheValue as T;\n }\n\n try {\n const storageValue = this.window.sessionStorage.getItem(\n this.getStorageKey(key)\n );\n\n if (isNull(storageValue)) {\n return null;\n }\n\n return JSON.parse(storageValue) as T;\n } catch (error: unknown) {\n return null;\n }\n }\n\n private getStorageKey(key: string): string {\n return `${key}${this.settingsService.token}`;\n }\n}\n","import { Price } from './price.interface';\n\nexport function extractMoneyCurrency<T>(\n money: (T & { amount?: null | number; currency?: string }) | undefined,\n allowZero = true\n): Price {\n return {\n amount: money?.amount ?? (allowZero ? 0 : null),\n currency: money?.currency ?? '',\n };\n}\n\nexport function createPriceOrUndefined(\n amount: number | undefined | null,\n currency: string | undefined\n): Price | undefined {\n return amount !== undefined && amount !== null && currency !== undefined\n ? {\n amount,\n currency,\n }\n : undefined;\n}\n","/**\n * default image for purchase item is set on Publisher Account side.\n * for purchase checkout items the image url is converted into base64 string.\n * to determine default image fixed templates are used\n */\nexport const defaultImagePatterns = [\n /^data:image\\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAAAAADmVT4XAAACMUlEQVR4Ae3YgYqdMBSE4fP/,\n /virtual_item_default_image/,\n];\n","export enum VatDetailsKey {\n vat = 'vat',\n vatPercent = 'vat-percent',\n vatIncluding = 'vat-including',\n vatPercentIncluding = 'vat-percent-including',\n\n vatIndia = 'vat-india',\n vatIndiaPercent = 'vat-india-percent',\n vatIndiaIncluding = 'vat-india-including',\n vatIndiaPercentIncluding = 'vat-india-percent-including',\n\n vatGhana = 'vat-ghana',\n vatGhanaIncluding = 'vat-ghana-including',\n}\n","export enum SalesTaxDetailsKey {\n salesTax = 'sales-tax',\n salesTaxPercent = 'sales-tax-percent',\n salesTaxIncluding = 'sales-tax-including',\n}\n","import { Injectable } from '@angular/core';\nimport { XpsSummary } from '../../xps-summary.interface';\nimport { XpsFinance } from '../../xps-finance.interface';\nimport { XpsPurchase } from '../../xps-purchase.interface';\nimport { CartItem } from '../cart-item.interface';\nimport { CartSummary } from '../cart-summary.interface';\nimport { createPriceOrUndefined, extractMoneyCurrency } from '../price.helpers';\nimport { defaultImagePatterns } from './default-image-patterns.const';\nimport { Price } from '../price.interface';\nimport { CartLine } from '../cart-line.interface';\nimport { FinanceDetails } from '../finance-details.interface';\nimport { VatDetailsKey } from '../vat-details-key.enum';\nimport { SalesTaxDetailsKey } from './sales-tax-details-key.enum';\n\n@Injectable({ providedIn: 'root' })\nexport class SummaryFinanceDetailsAdapterService {\n public getFinanceDetails(summary: XpsSummary): FinanceDetails {\n const { purchase, finance } = summary;\n return {\n purchase: purchase,\n finance: finance,\n cartItems: this.getCartItems(purchase, finance),\n cartSummary: this.getCartSummary(finance),\n paymentCountry: this.getPaymentCountry(finance),\n };\n }\n\n private shouldShowZeroIndirectTaxRate(finance: XpsFinance | null): boolean {\n return !!(finance?.vat?.visible ?? finance?.vat_user?.visible);\n }\n\n private isSalesTaxes(finance: XpsFinance | null): boolean {\n return !!(finance?.sales_tax?.amount ?? finance?.sales_tax_user?.amount);\n }\n\n private getCartItems(\n purchase: XpsPurchase,\n finance: XpsFinance | null\n ): CartItem[] {\n const checkouts: CartItem[] | undefined = purchase.checkout_items?.map(\n (item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: item.name,\n price: extractMoneyCurrency(item, false),\n priceBeforeDiscount: createPriceOrUndefined(\n item.amount_before_discount,\n item.currency\n ),\n quantity: item.quantity,\n description: item.description,\n tax: this.getTaxForItem(finance, item.indirect_tax_rate),\n isBonus: item.is_bonus,\n };\n }\n );\n\n const virtualCurrencies: CartItem[] | undefined =\n purchase.virtual_currency?.map((item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: `${item.quantity} ${item.name}`,\n price: extractMoneyCurrency(item),\n description: item.description,\n isBonus: item.is_bonus,\n };\n });\n\n const virtualItems: CartItem[] | undefined = purchase.virtual_items?.map(\n (item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: item.name,\n price: extractMoneyCurrency(item),\n description: item.description,\n quantity: item.quantity,\n isBonus: item.is_bonus,\n };\n }\n );\n\n let checkoutArray: CartItem[] | undefined = undefined;\n if (purchase.checkout) {\n checkoutArray = [\n {\n key: 'checkout',\n title: purchase.checkout.description,\n price: extractMoneyCurrency(purchase.checkout),\n isBonus: purchase.checkout.is_bonus ?? false,\n },\n ];\n }\n\n return [\n ...(checkouts ?? []),\n ...(virtualCurrencies ?? []),\n ...(virtualItems ?? []),\n ...(checkoutArray ?? []),\n ];\n }\n\n private getCartSummary(finance: XpsFinance | null): CartSummary {\n return {\n subtotal: {\n title: 'Subtotal',\n money: createPriceOrUndefined(\n finance?.sub_total?.amount,\n finance?.sub_total?.currency\n ),\n },\n subtotalPayment: {\n title: '',\n money: createPriceOrUndefined(\n finance?.sub_total?.payment_amount,\n finance?.sub_total?.payment_currency\n ),\n },\n total: {\n title: 'Total',\n money: extractMoneyCurrency(finance?.total),\n },\n totalDetails: this.getTaxesForTotalDetails(finance),\n subtotalDetails: [\n ...this.getSubtotalDetails(finance),\n ...this.getTaxesForSubtotalDetails(finance),\n ],\n };\n }\n\n private getPaymentCountry(finance: XpsFinance | null): string {\n return finance?.payment_country?.iso ?? '';\n }\n\n private getTaxForItem(\n finance: XpsFinance | null,\n indirectTaxRate?: number\n ): CartLine | null {\n if (\n indirectTaxRate ||\n (this.shouldShowZeroIndirectTaxRate(finance) && indirectTaxRate === 0)\n ) {\n if (this.isSalesTaxes(finance)) {\n return {\n key: SalesTaxDetailsKey.salesTaxPercent,\n content: `Sales tax ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n\n if (this.isIndia(finance)) {\n return {\n key: VatDetailsKey.vatIndiaPercent,\n content: `GST ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n\n if (this.isGhana(finance)) {\n return {\n key: VatDetailsKey.vatGhana,\n content: 'VAT, NHIL, GETFund Levy, and Covid-19 Levy',\n rate: indirectTaxRate,\n };\n }\n\n return {\n key: VatDetailsKey.vatPercent,\n content: `VAT ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n return null;\n }\n\n private getSubtotalDetails(finance: XpsFinance | null): CartLine[] {\n if (!finance) {\n return [];\n }\n\n // subtotal details fields\n const subtotalDetailsSorting = [\n {\n key: 'discount',\n responseKey: 'discount',\n title: 'Discount',\n },\n {\n key: 'fee',\n responseKey: 'fee',\n title: 'Payment system fee',\n },\n {\n key: 'user-balance',\n responseKey: 'user_balance',\n title: 'Balance',\n },\n ];\n\n return subtotalDetailsSorting.map((sorting) => {\n const field = (finance as unknown as { [key: string]: unknown })[\n sorting.responseKey\n ] as Price;\n\n if (field) {\n return {\n key: sorting.key,\n title: sorting.title,\n money: {\n amount:\n sorting.key === 'discount' && field.amount\n ? -field.amount\n : field.amount,\n currency: field.currency,\n },\n };\n }\n return sorting;\n });\n }\n\n private getTaxesForSubtotalDetails(finance: XpsFinance | null): CartLine[] {\n const ret = [];\n\n // subtotal. VAT %p\n if (\n finance?.vat_user &&\n (finance?.vat_user?.amount ?? finance?.vat_user?.visible)\n ) {\n ret.push({\n key: this.getVatNotIncludingKeyForDetails(finance),\n title: this.getVatLabelForSubtotalDetails(finance),\n money: extractMoneyCurrency(finance?.vat_user),\n });\n }\n\n if (finance?.sales_tax_user?.amount) {\n ret.push({\n key: SalesTaxDetailsKey.salesTax,\n title: 'Sales tax',\n money: extractMoneyCurrency(finance?.sales_tax_user),\n });\n }\n\n return ret;\n }\n\n private getVatLabelForSubtotalDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return `GST ${finance?.vat_user?.percent ?? ''}%`;\n }\n\n if (this.isGhana(finance)) {\n return `VAT, NHIL, GETFund Levy, and Covid-19 Levy`;\n }\n\n return `VAT ${finance?.vat_user?.percent ?? ''}%`;\n }\n\n private getTaxesForTotalDetails(finance: XpsFinance | null): CartLine[] {\n const ret = [];\n\n // for totalDetails. VAT\n if (\n (finance?.vat?.amount || finance?.vat?.visible) &&\n !finance?.vat_user?.amount\n ) {\n ret.push({\n key: this.getVatIncludingKeyForDetails(finance),\n title: this.getVatLabelForTotalDetails(finance),\n money: extractMoneyCurrency(finance?.vat),\n });\n }\n\n if (finance?.sales_tax?.amount && !finance?.sales_tax_user?.amount) {\n ret.push({\n key: SalesTaxDetailsKey.salesTaxIncluding,\n title: 'Sales tax included',\n money: extractMoneyCurrency(finance?.sales_tax),\n });\n }\n\n return ret;\n }\n\n private getVatNotIncludingKeyForDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return VatDetailsKey.vatIndiaPercent;\n }\n\n if (this.isGhana(finance)) {\n return VatDetailsKey.vatGhana;\n }\n\n return VatDetailsKey.vatPercent;\n }\n\n private getVatIncludingKeyForDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return VatDetailsKey.vatIndiaPercentIncluding;\n }\n\n if (this.isGhana(finance)) {\n return VatDetailsKey.vatGhanaIncluding;\n }\n\n return VatDetailsKey.vatPercentIncluding;\n }\n\n private getVatLabelForTotalDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return `Including ${finance?.vat.percent ?? ''}% GST`;\n }\n\n if (this.isGhana(finance)) {\n return 'Including VAT, NHIL, GETFund Levy, and Covid-19 Levy';\n }\n\n return `Including ${finance?.vat.percent ?? ''}% VAT`;\n }\n\n private isIndia(finance: XpsFinance | null): boolean {\n return finance?.payment_country.iso === 'IN';\n }\n\n private isGhana(finance: XpsFinance | null): boolean {\n return finance?.payment_country.iso === 'GH';\n }\n\n private isDefaultImage(url: string): boolean {\n return defaultImagePatterns.some((regex) => regex.test(url));\n }\n}\n","export const fieldsWithCurrency = new Set([\n 'sum',\n 'commissionUserVatPrc',\n 'salesTaxCommission',\n 'vatUserNotIncluded',\n 'xsollaTipsAmount',\n 'paymentSystemFee',\n 'discount',\n 'userWallet',\n 'subtotal',\n 'subtotalSummaryBeforeConversion',\n 'grandTotal',\n 'subtotalBeforeDiscount',\n 'redeemedPoints',\n]);\n","export enum CountryIsoCode {\n India = 'IN',\n Ghana = 'GH',\n}\n","import { Injectable } from '@angular/core';\nimport { StatusFinanceInfo } from '../../status/status-finance-info.interface';\nimport { Status } from '../../status/status.interface';\nimport { FinanceDetails } from '../finance-details.interface';\nimport { FinanceInfoWithAmountAndCurrency } from './finance-info.interface';\nimport { FinanceInfoField } from '../../status/finance-info-field.interface';\nimport { fieldsWithCurrency } from './fields-with-currency';\nimport { CartLine } from '../cart-line.interface';\nimport { extractMoneyCurrency } from '../price.helpers';\nimport { FieldWithAmountAndCurrency } from './field-with-amount-and-currency.interface';\nimport { CartSummary } from '../cart-summary.interface';\nimport { CountryIsoCode } from '../../../country/country-iso-code.enum';\nimport { VatDetailsKey } from '../vat-details-key.enum';\nimport { XpsPurchase } from '../../xps-purchase.interface';\nimport { CartItem } from '../cart-item.interface';\nimport { XpsFinance } from '../../xps-finance.interface';\nimport { StatusOrder } from '../../status/status-order.interface';\nimport { SummaryFinanceDetailsAdapterService } from '../summary/summary-finance-details-adapter.service';\nimport { StatusEnum } from '../../status/status.enum';\n\n@Injectable({ providedIn: 'root' })\nexport class StatusFinanceDetailsAdapterService {\n public constructor(\n private readonly summarFinanceDetailsAdapterService: SummaryFinanceDetailsAdapterService\n ) {}\n\n public getFinanceDetails(\n status: Status,\n purchase: XpsPurchase | null\n ): FinanceDetails {\n const financeInfo = this.fillFinanceInfo(status.financeInfo);\n const country = status.paymentCountryIso;\n const order = status.order ?? null;\n\n const summaryFinance = this.convertStatusFinanceToSummaryFinance(\n purchase,\n order,\n country\n );\n\n return {\n purchase,\n finance: summaryFinance,\n cartItems: this.getCartItems(purchase, summaryFinance),\n cartSummary: this.getCartSummary(status, financeInfo, country),\n paymentCountry: country,\n };\n }\n\n private fillFinanceInfo(\n financeInfo: StatusFinanceInfo\n ): FinanceInfoWithAmountAndCurrency {\n return Object.keys(financeInfo).reduce(\n (\n financeInfoWithAmountAndCurrency: FinanceInfoWithAmountAndCurrency,\n key: string\n ) => {\n const field: FinanceInfoField = financeInfo[key];\n\n if (field?.key && fieldsWithCurrency.has(field?.key)) {\n this.addAmountAndCurrencyToField(field);\n }\n return { ...financeInfoWithAmountAndCurrency, [key]: field };\n },\n {}\n );\n }\n\n private addAmountAndCurrencyToField(field: {\n key?: string;\n pref?: string;\n value?: string;\n amount?: number;\n currency?: string;\n }): void {\n const amountAndCurrency = /(^[-\\d.]+) ([A-Z]{3})$/;\n const currencyParts = field.value?.trim().match(amountAndCurrency);\n\n if (currencyParts) {\n const amountPosition = 1;\n const currencyPosition = 2;\n field.amount = Number(currencyParts[amountPosition]);\n field.currency = currencyParts[currencyPosition];\n }\n }\n\n private getCartItems(\n purchase: XpsPurchase | null,\n summaryFinance: XpsFinance | null\n ): CartItem[] | null {\n if (!purchase) {\n return null;\n }\n\n const financeDetails =\n this.summarFinanceDetailsAdapterService.getFinanceDetails({\n purchase,\n finance: summaryFinance,\n });\n\n return financeDetails.cartItems;\n }\n\n private convertStatusFinanceToSummaryFinance(\n purchase: XpsPurchase | null,\n order: StatusOrder | null,\n country: string\n ): XpsFinance | null {\n if (!order || !purchase?.checkout_items?.length) {\n return null;\n }\n\n const finance = {\n payment_country: {\n iso: country,\n },\n } as XpsFinance;\n\n const firstCheckoutItem = purchase?.checkout_items[0];\n const firstCheckoutItemAmount = firstCheckoutItem?.amount ?? 0;\n const oneHundredPercent = 100;\n const taxAmount =\n (firstCheckoutItemAmount * firstCheckoutItem?.indirect_tax_rate) /\n oneHundredPercent;\n\n if (order.contained_taxes?.sales_tax) {\n finance.sales_tax = {\n amount: taxAmount,\n percent: firstCheckoutItem?.indirect_tax_rate,\n currency: purchase?.checkout?.currency ?? '',\n };\n }\n\n if (order.contained_taxes?.user_vat) {\n finance.vat = {\n amount: taxAmount,\n percent: firstCheckoutItem?.indirect_tax_rate,\n currency: purchase?.checkout?.currency ?? '',\n visible: true,\n };\n }\n\n return finance;\n }\n\n private getCartSummary(\n status: Status,\n financeInfo: FinanceInfoWithAmountAndCurrency,\n country: string\n ): CartSummary {\n const cart: CartSummary = {\n total: this.getTotal(financeInfo),\n totalDetails: this.getTotalDetails(financeInfo, country),\n subtotalDetails: [\n ...this.getSubtotalDetails(financeInfo),\n ...this.getTaxesForSubtotalDetails(financeInfo, country),\n ],\n transactionDetails: this.getTransactionDetails(status, financeInfo),\n subtotal: this.getInitialCurrencySubtotal(financeInfo) ?? null,\n subtotalPayment: this.getSubtotalPayment(financeInfo) ?? null,\n };\n\n return cart;\n }\n\n private getTotal(financeInfo: FinanceInfoWithAmountAndCurrency): CartLine {\n return {\n title: 'Total',\n money: extractMoneyCurrency(\n financeInfo.sum as FieldWithAmountAndCurrency\n ),\n };\n }\n\n private getSubtotalPayment(\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine | null {\n if (!financeInfo?.subtotal) {\n return null;\n }\n\n return {\n title: 'Subtotal',\n money: extractMoneyCurrency(\n financeInfo.subtotal as FieldWithAmountAndCurrency\n ),\n };\n }\n\n private getInitialCurrencySubtotal(\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine | null {\n if (!financeInfo?.subtotalSummaryBeforeConversion) {\n return null;\n }\n\n return {\n title: '',\n money: extractMoneyCurrency(financeInfo.subtotalSummaryBeforeConversion),\n };\n }\n\n private getTotalDetails(\n financeInfo: FinanceInfoWithAmountAndCurrency,\n country: string\n ): CartLine[] {\n const totalDetails: CartLine[] = [];\n\n const salesTaxCommissionField = financeInfo[\n 'salesTaxCommission'\n ] as FieldWithAmountAndCurrency;\n if (salesTaxCommissionField) {\n totalDetails.push({\n title: salesTaxCommissionField.pref,\n money: {\n amount: salesTaxCommissionField.amount ?? null,\n currency: salesTaxCommissionField.currency ?? '',\n },\n });\n }\n\n const commissionUserVatPrcField = financeInfo[\n 'commissionUserVatPrc'\n ] as FieldWithAmountAndCurrency;\n\n if (commissionUserVatPrcField?.pref) {\n const percents = this.getPercents(commissionUserVatPrcField.pref);\n\n totalDetails.push({\n key: this.getVatIncludingKeyDetails(percents, country),\n title: this.geVatIncludingTitleDetails(percents, country),\n money: {\n amount: commissionUserVatPrcField.amount ?? null,\n currency: commissionUserVatPrcField.currency ?? '',\n },\n });\n }\n return totalDetails;\n }\n\n private getSubtotalDetails(\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine[] {\n const subtotalDetailsSorting = [\n {\n key: 'discount',\n responseKey: 'discount',\n title: 'Discount',\n },\n {\n key: 'fee',\n responseKey: 'paymentSystemFee',\n title: 'Payment system fee',\n },\n {\n key: 'user-balance',\n responseKey: 'userWallet',\n title: 'Balance',\n },\n ];\n\n const redeemedPoints = financeInfo['redeemedPoints'];\n\n if (redeemedPoints?.pref) {\n subtotalDetailsSorting.push({\n key: 'redeem-points',\n responseKey: 'redeemedPoints',\n title: redeemedPoints.pref,\n });\n }\n\n return subtotalDetailsSorting.reduce(\n (\n subTotalDetails: CartLine[],\n sorting: { responseKey: string; title: string }\n ) => {\n const field = financeInfo[\n sorting.responseKey\n ] as FieldWithAmountAndCurrency;\n if (field) {\n subTotalDetails.push({\n title: sorting.title,\n money: {\n amount: field.amount ?? null,\n currency: field.currency ?? '',\n },\n });\n }\n return subTotalDetails;\n },\n []\n );\n }\n\n private getTaxesForSubtotalDetails(\n financeInfo: FinanceInfoWithAmountAndCurrency,\n country: string\n ): CartLine[] {\n const taxesForSubtotalDetails: CartLine[] = [];\n const vatUserNotIncludedField = financeInfo[\n 'vatUserNotIncluded'\n ] as FieldWithAmountAndCurrency;\n if (vatUserNotIncludedField?.pref) {\n const percents = this.getPercents(vatUserNotIncludedField.pref);\n taxesForSubtotalDetails.push({\n key: this.getVatNotIncludingKeyDetails(percents, country),\n title: this.getVatNotIncludingTitleDetails(percents, country),\n money: {\n amount: vatUserNotIncludedField.amount ?? null,\n currency: vatUserNotIncludedField.currency ?? '',\n },\n });\n }\n\n return taxesForSubtotalDetails;\n }\n\n private getVatNotIncludingKeyDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents ? VatDetailsKey.vatIndiaPercent : VatDetailsKey.vatIndia;\n }\n\n if (this.isGhana(country)) {\n return VatDetailsKey.vatGhana;\n }\n\n return percents ? VatDetailsKey.vatPercent : VatDetailsKey.vat;\n }\n\n private getVatNotIncludingTitleDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents ? `GST ${percents}%` : 'GST';\n }\n\n if (this.isGhana(country)) {\n return 'VAT, NHIL, GETFund Levy, and Covid-19 Levy';\n }\n\n return percents ? `VAT ${percents}%` : 'VAT';\n }\n\n private getVatIncludingKeyDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents\n ? VatDetailsKey.vatIndiaPercentIncluding\n : VatDetailsKey.vatIndiaIncluding;\n }\n\n if (this.isGhana(country)) {\n return VatDetailsKey.vatGhanaIncluding;\n }\n\n return percents\n ? VatDetailsKey.vatPercentIncluding\n : VatDetailsKey.vatIncluding;\n }\n\n private geVatIncludingTitleDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents ? `Including ${percents}% GST` : 'Including GST';\n }\n\n if (this.isGhana(country)) {\n return 'Including VAT, NHIL, GETFund Levy, and Covid-19 Levy';\n }\n\n return percents ? `Including ${percents}% VAT` : `Including VAT`;\n }\n\n private isGhana(country: string): boolean {\n return country === CountryIsoCode.Ghana;\n }\n\n private isIndia(country: string): boolean {\n return country === CountryIsoCode.India;\n }\n\n private getTransactionDetails(\n status: Status,\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine[] {\n const transactionDetails: CartLine[] = [];\n if (financeInfo.invoice?.value) {\n transactionDetails.push({\n key: 'invoice',\n title: 'Transaction',\n content: financeInfo.invoice.value,\n });\n }\n\n const isCompleted =\n status.isCancelUser ||\n (status.statusState !== StatusEnum.processing &&\n status.statusState !== StatusEnum.created &&\n status.statusState !== StatusEnum.held);\n if (isCompleted && financeInfo.time?.value) {\n transactionDetails.push({\n key: 'time',\n title: 'Date',\n content: financeInfo.time.value,\n isDateLine: true,\n });\n }\n return transactionDetails;\n }\n\n private getPercents(value: string): string | null {\n const percentsTemplate = /(\\d+(.\\d+)?)/;\n const percentsMatchResult = percentsTemplate.exec(value);\n\n if (!percentsMatchResult) {\n return null;\n }\n\n return percentsMatchResult[0];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { Status } from '../status/status.interface';\nimport { XpsSummary } from '../xps-summary.interface';\nimport { FinanceDetails } from './finance-details.interface';\nimport { StatusFinanceDetailsAdapterService } from './status/status-finance-details-adapter.service';\nimport { SummaryFinanceDetailsAdapterService } from './summary/summary-finance-details-adapter.service';\nimport { SessionService } from '../../session/session.service';\nimport { XpsPurchase } from '../xps-purchase.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class FinanceDetailsService extends EmitDataService<FinanceDetails> {\n private readonly purchaseSessionKey = 'purchase';\n\n public constructor(\n private readonly sessionService: SessionService,\n private readonly summaryFinanceDetailsAdapterService: SummaryFinanceDetailsAdapterService,\n private readonly statusFinanceDetailsAdapterService: StatusFinanceDetailsAdapterService\n ) {\n super();\n }\n\n public emitWithSummary(summary?: XpsSummary): void {\n if (summary) {\n const financeDetails =\n this.summaryFinanceDetailsAdapterService.getFinanceDetails(summary);\n\n if (financeDetails.purchase) {\n this.sessionService.set(\n this.purchaseSessionKey,\n financeDetails.purchase\n );\n }\n\n super.emit(financeDetails);\n }\n }\n\n public emitWithStatus(status?: Status): void {\n if (status) {\n const purchase = this.sessionService.get<XpsPurchase>(\n this.purchaseSessionKey\n );\n const financeDetails =\n this.statusFinanceDetailsAdapterService.getFinanceDetails(\n status,\n purchase\n );\n super.emit(financeDetails);\n }\n }\n}\n","import { XpsApiPartRequest } from '../../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class CheckStatusRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'status';\n public readonly invoice: number;\n public readonly section = 'getstatus';\n\n public constructor(token: string | null, invoice: number) {\n super();\n\n if (token === null) {\n throw new TokenError();\n }\n\n this.access_token = token;\n this.invoice = invoice;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { CheckStatusRequest } from './check-status-request.class';\n\nexport type CheckStatusRequestParameters = ConstructorParameters<\n typeof CheckStatusRequest\n>;\n\nexport type CheckStatusRequestFactory = (\n ...args: CheckStatusRequestParameters\n) => CheckStatusRequest;\n\nexport const checkStatusRequestFactoryToken: InjectionToken<CheckStatusRequestFactory> =\n new InjectionToken<CheckStatusRequestFactory>('CheckStatusRequest');\n\nexport const checkStatusRequestFactoryProvider: ValueProvider = {\n provide: checkStatusRequestFactoryToken,\n useValue: (...args: CheckStatusRequestParameters) =>\n new CheckStatusRequest(...args),\n};\n","import { Properties } from '../../../../properties.type';\nimport { StatusEnum } from '../../status.enum';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class CheckStatusResponse {\n public readonly status?: StatusEnum;\n public readonly final?: boolean;\n public readonly isPaymentAccountAttached?: boolean;\n\n public constructor(parameters: Properties<CheckStatusResponse>) {\n this.status = parameters.status;\n this.final = parameters.final;\n this.isPaymentAccountAttached = parameters.isPaymentAccountAttached;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { CheckStatusResponse } from './check-status-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof CheckStatusResponse>;\n\nexport type CheckStatusResponseFactory = (\n ...args: ResponseParameters\n) => CheckStatusResponse;\n\nexport const checkStatusResponseFactoryToken: InjectionToken<CheckStatusResponseFactory> =\n new InjectionToken<CheckStatusResponseFactory>('CheckStatusResponse');\n\nexport const checkStatusResponseFactoryProvider: ValueProvider = {\n provide: checkStatusResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new CheckStatusResponse(...args),\n};\n","import { Inject, Injectable } from '@angular/core';\nimport { SettingsService } from '../../../settings/settings.service';\nimport { XpsResponse } from '../../xps-response.interface';\nimport { StatusEnum } from '../status.enum';\nimport { ResponseError } from '../../../exceptions-handling/errors/response-error.class';\nimport {\n CheckStatusRequestFactory,\n checkStatusRequestFactoryToken,\n} from './request/check-status-request.token';\nimport {\n CheckStatusResponseFactory,\n checkStatusResponseFactoryToken,\n} from './response/check-status-response.token';\nimport { XpsApiPart } from '../../xps-api-part.abstract';\nimport { XpsApiService } from '../../xps-api/xps-api.service';\nimport { CheckStatusResponse } from './response/check-status-response.class';\nimport { XpsResponseErrorsMappingService } from '../../../errors-mapping/xps-response-errors-mapping.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CheckStatusService extends XpsApiPart<CheckStatusResponse> {\n private invoice!: number;\n\n public constructor(\n private readonly xpsApiService: XpsApiService,\n private readonly settingsService: SettingsService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n @Inject(checkStatusRequestFactoryToken)\n private readonly requestFactory: CheckStatusRequestFactory,\n @Inject(checkStatusResponseFactoryToken)\n private readonly responseFactory: CheckStatusResponseFactory\n ) {\n super();\n }\n\n public setRequestParams(invoice: number): void {\n this.invoice = invoice;\n }\n\n public request(): void {\n const requestParams = this.requestFactory(\n this.settingsService.token,\n this.invoice\n );\n\n this.xpsApiService\n .directPaymentRequest(requestParams)\n .then((xpsResponse: XpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n const checkStatusResponse = this.responseFactory({\n status: response.status as StatusEnum,\n final: response.final,\n isPaymentAccountAttached: response.is_payment_account_attached,\n });\n\n this.emitResponse(checkStatusResponse);\n })\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n }\n}\n","export enum WebSocketStatus {\n statusChanged = 'status_changed',\n troubledStatus = 'troubled_status',\n}\n","export enum WebSocketClientType {\n nchan = 'nchan',\n centrifugo = 'centrifugo',\n}\n","import { Observable, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NchanWebSocketService implements WebSocketClient {\n public static readonly reconnectionTimeoutIncrementFactor = 2;\n\n public url!: string;\n\n public type = WebSocketClientType.nchan;\n\n private static readonly timeoutsMs = {\n reconnection: 1500,\n reconnectionMaxDeviation: 1500,\n };\n\n private openPromise: Promise<unknown> | undefined;\n\n private reconnectionTimeoutMs!: number;\n private reconnectionTimerId: ReturnType<typeof setTimeout> | null = null;\n\n private readonly openConnectionTimerId: number | undefined;\n\n private connection!: WebSocket;\n\n private readonly incomingMessages$: Subject<MessageEvent> =\n new Subject<MessageEvent>();\n private readonly successfulReconnectionEventsProxy$: Subject<void> =\n new Subject<void>();\n\n public async open(): Promise<unknown> {\n if (this.openPromise && !this.isClosed()) {\n return this.openPromise;\n }\n\n this.openPromise = this.createConnection()\n .catch(async () => {\n return this.waitWhileNotReconnect();\n })\n .then(() => {\n this.connection.onclose = async () => this.open();\n });\n\n return this.openPromise;\n }\n\n public close(): void {\n this.clearReconnectionTimer();\n\n if (this.isClosed()) {\n return;\n }\n\n this.connection.onclose = null;\n this.connection.close();\n }\n\n public get messages$(): Observable<string> {\n return this.incomingMessages$\n .asObservable()\n .pipe(map((event: MessageEvent<string>) => event.data));\n }\n\n public subscribeOnSuccessfulReconnection(next?: () => void): Subscription {\n return this.successfulReconnectionEventsProxy$\n .asObservable()\n .subscribe(next);\n }\n\n private isClosed(): boolean {\n if (!this.connection) {\n return true;\n }\n\n return [this.connection.CLOSED, this.connection.CLOSING].includes(\n this.connection.readyState\n );\n }\n\n private clearReconnectionTimer(): void {\n if (this.reconnectionTimerId) {\n clearTimeout(this.reconnectionTimerId);\n this.reconnectionTimerId = null;\n }\n }\n\n private setFirstReconnectionTimeout(): void {\n const min =\n NchanWebSocketService.timeoutsMs.reconnection -\n NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n const max =\n NchanWebSocketService.timeoutsMs.reconnection +\n NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n this.reconnectionTimeoutMs =\n Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n private incrementReconnectionTimeout(): void {\n this.reconnectionTimeoutMs =\n this.reconnectionTimeoutMs *\n NchanWebSocketService.reconnectionTimeoutIncrementFactor;\n }\n\n private async createConnection(): Promise<unknown> {\n this.connection = new WebSocket(this.url);\n this.connection.onmessage = this.incomingMessages$.next.bind(\n this.incomingMessages$\n );\n\n return new Promise<void>((resolve, reject) => {\n this.connection.onopen = () => {\n clearTimeout(this.openConnectionTimerId);\n resolve();\n };\n\n this.connection.onclose = () => {\n reject();\n };\n });\n }\n\n private async reconnect(): Promise<boolean> {\n this.clearReconnectionTimer();\n\n return new Promise((resolve) => {\n this.reconnectionTimerId = setTimeout(() => {\n this.createConnection()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n this.incrementReconnectionTimeout();\n }, this.reconnectionTimeoutMs);\n });\n }\n\n private async waitWhileNotReconnect(): Promise<void> {\n this.clearReconnectionTimer();\n this.setFirstReconnectionTimeout();\n\n let isConnected = false;\n\n while (!isConnected) {\n isConnected = await this.reconnect();\n }\n\n this.successfulReconnectionEventsProxy$.next();\n }\n}\n","import { ErrorTags } from './elk-error-types.enum';\n\nimport { TaggedError } from './tagged-error.class';\n\nexport class WsError extends TaggedError {\n public constructor(message: string, channelName: string, tags?: ErrorTags[]) {\n tags = tags ? [...tags, ErrorTags.WS] : [ErrorTags.WS];\n\n const messageWithChannel = `${message}. ChannelName - ${channelName}`;\n\n super(messageWithChannel, tags);\n }\n}\n","import type StackTrace from 'stacktrace-js';\nimport { firstValueFrom } from 'rxjs';\nimport {\n ErrorHandler,\n Inject,\n Injectable,\n isDevMode,\n NgZone,\n} from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { windowToken } from '../../window.token';\nimport { SettingsService } from '../../settings/settings.service';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { TaggedError } from '../errors/tagged-error.class';\nimport { ErrorTags } from '../errors/elk-error-types.enum';\nimport { AdditionalInfo } from './additional-info.interface';\nimport { ErrorWithoutMetaFields } from './error-without-meta-fields.interface';\nimport { LogMessage } from './log-message.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ElkLoggerService implements ErrorHandler {\n private readonly stackTrace: Promise<typeof StackTrace>;\n private readonly vendors: RegExp = new RegExp(\n 'node_modules\\\\/(@angular|zone).*.js$'\n );\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow,\n private readonly settingsService: SettingsService,\n private readonly http: HttpClient,\n private readonly ngZone: NgZone\n ) {\n this.stackTrace = this.loadStackTrace();\n }\n\n public handleError(error: Error): void {\n this.ngZone.runOutsideAngular(() => {\n if (isDevMode()) {\n console.error(error);\n return;\n }\n\n this.parseError(error).catch(console.log);\n });\n }\n\n public log(\n message: string,\n tags: ErrorTags[],\n extra?: { [key: string]: unknown }\n ): void {\n const logTags = [ErrorTags.HEADLESS_UI, ...tags];\n\n if (isDevMode()) {\n console.log(message, tags);\n return;\n }\n\n const logMessage: LogMessage = {\n additionalInfo: this.getAdditionalInfo(),\n extra,\n message,\n };\n\n this.sendLog(logMessage, logTags);\n }\n\n private async parseError(error: Error): Promise<TaggedError> {\n const errorObj =\n error instanceof TaggedError\n ? error\n : new TaggedError(error.message || error.toString());\n\n errorObj.trace = await this.getErrorTrace(errorObj);\n errorObj.additionalInfo = this.getAdditionalInfo();\n\n const { tags } = errorObj;\n\n const cleanError = this.removeErrorMetaFields(errorObj);\n\n this.sendLog(cleanError, tags);\n return errorObj;\n }\n\n private async loadStackTrace(): Promise<typeof StackTrace> {\n const library = await import('stacktrace-js');\n return library.default;\n }\n\n private async getErrorTrace(error: Error): Promise<string> {\n const stackTrace = await this.stackTrace;\n\n const stackFramesArr = await stackTrace.fromError(error);\n\n const filteredFramesArr = stackFramesArr.filter(\n ({ fileName }) => fileName && !this.vendors.test(fileName)\n );\n\n return filteredFramesArr\n .map((stackFrame) => stackFrame.toString())\n .join('\\n');\n }\n\n private getAdditionalInfo(): AdditionalInfo {\n const extractUrlHost = (url: string): string =>\n url.replace(/^https?:\\/\\/([^/?#]+).*$/i, '$1');\n\n return {\n location: {\n url: this.window.location.href,\n },\n project: {\n id: this.settingsService.project.id,\n },\n referrer: {\n url: this.window.document.referrer,\n },\n viewport: {\n width: this.window.document.documentElement.clientWidth,\n height: this.window.document.documentElement.clientHeight,\n },\n cdn_address: this.settingsService.settings.cdnUrl\n ? extractUrlHost(this.settingsService.settings.cdnUrl)\n : 'none',\n country: this.settingsService.user.country.value,\n local: this.settingsService.user.country.localized_name,\n };\n }\n\n private removeErrorMetaFields(error: TaggedError): ErrorWithoutMetaFields {\n const metaPropList = [\n 'parentTag',\n 'childTag',\n 'RESTRICTED_KEYS_REGEXP',\n 'tags',\n ];\n\n Object.keys(error).forEach((key) => {\n if (metaPropList.includes(key)) delete error[key as keyof TaggedError];\n });\n\n // implementing own 'message' property from prototype\n return { ...error, message: error.message };\n }\n\n private sendLog(\n message: ErrorWithoutMetaFields | LogMessage,\n tags: ErrorTags[]\n ): void {\n const url = `https://logs-01.xsolla.com/tag/${tags.join(',')}`;\n\n firstValueFrom(\n this.http.post(url, message, {\n headers: new HttpHeaders().set('Content-Type', 'text/plain'),\n responseType: 'text',\n })\n ).catch((err) => console.error('Elk Logger: request error', err));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport type {\n Centrifuge,\n DisconnectedContext,\n PublicationContext,\n Subscription as CentrifugeSubscription,\n} from 'centrifuge';\nimport { StreamPosition, SubscriptionOptions } from 'centrifuge/build/types';\nimport { ElkLoggerService } from '../exceptions-handling/elk/elk-logger.service';\nimport { WsError } from '../exceptions-handling/errors/ws-error.class';\nimport { ErrorTags } from '../exceptions-handling/errors/elk-error-types.enum';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CentrifugoWebSocketService implements WebSocketClient {\n public static readonly reconnectionTimeoutIncrementFactor = 2;\n\n public type = WebSocketClientType.centrifugo;\n\n private static readonly timeoutsMs = {\n reconnection: 1000,\n reconnectionMaxDeviation: 1000,\n };\n\n private reconnectionTimeoutMs!: number;\n private reconnectionTimerId: ReturnType<typeof setTimeout> | null = null;\n\n private readonly openConnectionTimerId: number | undefined;\n\n private connection!: Centrifuge;\n private subscription!: CentrifugeSubscription;\n private subscriptionPosition?: StreamPosition;\n private isConnectionOpen = false;\n private isConnecting = false;\n private url!: string;\n private channel!: string;\n private prevSubscribedChannel?: string;\n\n private readonly incomingMessages$: Subject<PublicationContext> =\n new Subject<PublicationContext>();\n\n private readonly successfulReconnectionEventsProxy$: Subject<void> =\n new Subject<void>();\n\n public constructor(private readonly elkLoggerService: ElkLoggerService) {}\n\n public async open(url: string, channel: string): Promise<void> {\n if (url === this.url && channel === this.channel) {\n return;\n }\n\n try {\n this.url = url;\n this.channel = channel;\n await this.createConnection(url, channel);\n } catch (error: unknown) {\n // @ts-expect-error error is unknown\n const message = (error?.message || error) as string;\n const unknownError = new WsError(\n `unknown websocket error: ${message}`,\n channel\n );\n\n this.elkLoggerService.handleError(unknownError);\n }\n }\n\n public close(): void {\n this.clearReconnectionTimer();\n\n if (!this.isConnectionOpen) {\n return;\n }\n\n this.connection.disconnect();\n }\n\n public get messages$(): Observable<string> {\n return (\n this.incomingMessages$\n .asObservable()\n // event don't respect type from argument, it's weird\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n .pipe(map((event) => event.data))\n );\n }\n\n public subscribeOnSuccessfulReconnection(next?: () => void): Subscription {\n return this.successfulReconnectionEventsProxy$\n .asObservable()\n .subscribe(next);\n }\n\n private clearReconnectionTimer(): void {\n if (this.reconnectionTimerId) {\n clearTimeout(this.reconnectionTimerId);\n this.reconnectionTimerId = null;\n }\n }\n\n private setFirstReconnectionTimeout(): void {\n const min =\n CentrifugoWebSocketService.timeoutsMs.reconnection -\n CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n const max =\n CentrifugoWebSocketService.timeoutsMs.reconnection +\n CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n this.reconnectionTimeoutMs =\n Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n private incrementReconnectionTimeout(): void {\n this.reconnectionTimeoutMs =\n this.reconnectionTimeoutMs *\n CentrifugoWebSocketService.reconnectionTimeoutIncrementFactor;\n }\n\n private async getCentrifugoClient(): Promise<typeof Centrifuge> {\n return import('centrifuge').then((module) => module.Centrifuge);\n }\n\n private async createConnection(\n url?: string,\n channel?: string\n ): Promise<void> {\n if (this.isConnectionOpen || this.isConnecting) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const CentrifugeClient = await this.getCentrifugoClient();\n\n const websocketUrl = url ?? this.url;\n const websocketChannel = channel ?? this.channel;\n\n this.connection = new CentrifugeClient(websocketUrl, {\n debug: true,\n maxReconnectDelay: 1500,\n maxServerPingDelay: 1000,\n });\n\n return new Promise<void>((resolve, reject) => {\n this.connection\n .on('connecting', () => {\n this.isConnecting = true;\n })\n .on('connected', () => {\n this.onConnect();\n resolve();\n })\n .on('disconnected', (ctx) => {\n this.onDisconnect(ctx, websocketChannel);\n reject();\n })\n .on('error', (ctx) => {\n const message = `code ${ctx.error.code} - ${ctx.error.message}`;\n\n this.elkLoggerService.log(\n `connection error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n })\n .connect();\n\n this.subscription = this.connection.newSubscription(\n websocketChannel,\n this.getSubscriptionOptions(websocketChannel)\n );\n\n this.subscription\n .on('subscribed', (ctx) => {\n this.subscriptionPosition = ctx.streamPosition;\n this.prevSubscribedChannel = websocketChannel;\n })\n .on('publication', (ctx) => {\n const message = ctx.data as string;\n\n this.elkLoggerService.log(\n `websocket message received: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n\n this.incomingMessages$.next(ctx);\n })\n .on('error', (ctx) => {\n const message = `code ${ctx.error.code} - ${ctx.error.message}`;\n\n this.elkLoggerService.log(\n `subscription error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n })\n .subscribe();\n });\n }\n\n private onConnect(): void {\n clearTimeout(this.openConnectionTimerId);\n this.isConnecting = false;\n this.isConnectionOpen = true;\n }\n\n private onDisconnect(\n ctx: DisconnectedContext,\n websocketChannel: string\n ): void {\n this.isConnecting = false;\n this.isConnectionOpen = false;\n\n /* If connection error, cause any connection error isn't 0 */\n if (ctx.code !== 0) {\n const message = `code ${ctx.code} - ${ctx.reason}`;\n\n this.elkLoggerService.log(\n `disconnected error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n\n (async () => {\n await this.waitWhileNotReconnect();\n })();\n }\n }\n\n private async reconnect(): Promise<boolean> {\n this.clearReconnectionTimer();\n\n return new Promise((resolve) => {\n this.reconnectionTimerId = setTimeout(() => {\n this.createConnection()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n this.incrementReconnectionTimeout();\n }, this.reconnectionTimeoutMs);\n });\n }\n\n private async waitWhileNotReconnect(): Promise<void> {\n this.clearReconnectionTimer();\n this.setFirstReconnectionTimeout();\n\n let isConnected = false;\n\n const beforeTimer = performance.now();\n\n while (!isConnected) {\n isConnected = await this.reconnect();\n }\n\n const afterTimer = performance.now();\n\n const timerDuration = afterTimer - beforeTimer;\n\n this.elkLoggerService.log(\n `fallback to reconnection timer: duration ${timerDuration}ms`,\n [ErrorTags.WS],\n {\n channel: this.channel,\n }\n );\n\n this.successfulReconnectionEventsProxy$.next();\n }\n\n private getSubscriptionOptions(\n websocketChannel: string\n ): Partial<SubscriptionOptions> {\n const options: Partial<SubscriptionOptions> = {\n recoverable: true,\n };\n\n if (\n websocketChannel === this.prevSubscribedChannel &&\n this.subscriptionPosition\n ) {\n options.since = this.subscriptionPosition;\n }\n\n return options;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NchanWebSocketService } from './nchan-web-socket.service';\nimport { CentrifugoWebSocketService } from './centrifugo-web-socket.service';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n// @todo: remove this factory and switch to centrifugo client after centrifugo issues resolved\n@Injectable({\n providedIn: 'root',\n})\nexport class WebSocketFactory {\n public constructor(\n private readonly nchanWebSocket: NchanWebSocketService,\n private readonly centrifugoWebSocket: CentrifugoWebSocketService\n ) {}\n\n public createWebSocketClient(\n url: string,\n clientType: WebSocketClientType\n ): WebSocketClient {\n if (clientType === WebSocketClientType.centrifugo) {\n return this.centrifugoWebSocket;\n }\n\n this.nchanWebSocket.url = url;\n\n return this.nchanWebSocket;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { WebSocketFactory } from '../../../web-socket/web-socket.factory';\nimport { WebSocketClient } from '../../../web-socket/web-socket.interface';\nimport { WebSocketClientType } from '../../../web-socket/web-socket-client-type.enum';\nimport { WebSocketStatus } from './websocket-status.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WebsocketStatusService {\n private webSocketSubscription: Subscription | undefined;\n private webSocketReconnectionSubscription: Subscription | undefined;\n private readonly reinsuranceCheckStatus: {\n timeoutId: ReturnType<typeof setTimeout> | null;\n readonly timeoutMs: number;\n } = {\n timeoutId: null,\n timeoutMs: 180000,\n };\n\n private readonly needCheckStatusSubject = new Subject<void>();\n private readonly statusChangedSubject = new Subject<void>();\n\n private webSocketClient: WebSocketClient | null = null;\n\n public get needCheckStatus$(): Observable<void> {\n return this.needCheckStatusSubject.asObservable();\n }\n public get statusChanged$(): Observable<void> {\n return this.statusChangedSubject.asObservable();\n }\n\n public constructor(private readonly webSocketFactory: WebSocketFactory) {}\n\n public async checkStatusWithWebSocket(\n webSocketUrl: string,\n webSocketChannelName: string,\n webSocketClientType: WebSocketClientType\n ): Promise<void> {\n this.webSocketClient = this.webSocketFactory.createWebSocketClient(\n webSocketUrl,\n webSocketClientType\n );\n\n await this.webSocketClient.open(webSocketUrl, webSocketChannelName);\n\n this.webSocketSubscription?.unsubscribe();\n this.webSocketSubscription = this.webSocketClient.messages$.subscribe(\n (message) => this.statusProcessing(message)\n );\n\n this.webSocketReconnectionSubscription =\n this.webSocketClient.subscribeOnSuccessfulReconnection(() => {\n this.needCheckStatusSubject.next();\n });\n this.needCheckStatusSubject.next();\n this.startReinsuranceCheckTimeout();\n }\n\n public closeWebSocket(): void {\n this.removeSubscription();\n this.webSocketClient?.close();\n this.clearReinsuranceCheckTimeout();\n }\n\n public startReinsuranceCheckTimeout(): void {\n this.clearReinsuranceCheckTimeout();\n this.reinsuranceCheckStatus.timeoutId = setTimeout(() => {\n this.needCheckStatusSubject.next();\n }, this.reinsuranceCheckStatus.timeoutMs);\n }\n\n private clearReinsuranceCheckTimeout(): void {\n if (this.reinsuranceCheckStatus.timeoutId) {\n clearTimeout(this.reinsuranceCheckStatus.timeoutId);\n this.reinsuranceCheckStatus.timeoutId = null;\n }\n }\n\n private statusProcessing(message: string): void {\n if (message === WebSocketStatus.statusChanged) {\n this.statusChangedSubject.next();\n this.closeWebSocket();\n this.clearReinsuranceCheckTimeout();\n }\n if (message === WebSocketStatus.troubledStatus) {\n this.clearReinsuranceCheckTimeout();\n this.closeWebSocket();\n }\n }\n\n private removeSubscription(): void {\n this.webSocketSubscription?.unsubscribe();\n this.webSocketReconnectionSubscription?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { filter, Observable, Subject, takeUntil } from 'rxjs';\nimport { StatusRequestService } from '../status-request/status-request.service';\nimport { CheckStatusService } from '../check-status/check-status.service';\nimport { WebsocketStatusService } from '../websocket-status/websocket-status.service';\nimport { StatusSettings } from '../status-settings.interface';\nimport { StatusEnum } from '../status.enum';\nimport { StatusUpdated } from '../status-updated.interface';\nimport { StatusResponse } from '../status-request/response/status-response.class';\nimport { CheckStatusResponse } from '../check-status/response/check-status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ListenStatusService {\n public isListening = false;\n\n private readonly websocketOpenedSubject = new Subject<StatusSettings>();\n private readonly statusUpdatedSubject = new Subject<StatusUpdated>();\n private readonly statusDoneSubject = new Subject<StatusSettings>();\n private destroy$ = new Subject<void>();\n\n public get websocketOpened$(): Observable<StatusSettings> {\n return this.websocketOpenedSubject.asObservable();\n }\n\n public get statusUpdated$(): Observable<StatusUpdated> {\n return this.statusUpdatedSubject.asObservable();\n }\n\n public constructor(\n private readonly statusService: StatusRequestService,\n private readonly checkStatusService: CheckStatusService,\n private readonly websocketStatusService: WebsocketStatusService\n ) {}\n\n public listen(invoice: number): Observable<StatusSettings> {\n if (this.isListening) {\n this.stopListening();\n }\n\n this.destroy$ = new Subject<void>();\n this.isListening = true;\n\n this.subscribeStatusUpdate(invoice);\n this.subscribeCheckStatusUpdate();\n this.subscribeWebsocketEvent();\n\n this.checkStatusService.setRequestParams(invoice);\n\n return this.statusDoneSubject.asObservable();\n }\n\n public stopListening(): void {\n this.isListening = false;\n this.websocketStatusService.closeWebSocket();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private subscribeStatusUpdate(invoice: number): void {\n this.statusService.response$\n .pipe(\n filter((statusResponse) => {\n return statusResponse?.status?.invoice === Number(invoice);\n }),\n takeUntil(this.destroy$)\n )\n .subscribe((statusResponse: StatusResponse | null) => {\n if (!statusResponse?.status) {\n return;\n }\n\n const statusSettings = {\n statusState: statusResponse.status.statusState,\n isCancelUser: statusResponse.status.isCancelUser,\n needWebSocket: statusResponse.status.needToCheck,\n backUrlSettings: statusResponse.status.backUrlSettings,\n autoRedirect: statusResponse.status.autoRedirect,\n webSocketUrl: statusResponse.status.webSocketUrl,\n webSocketChannelName: statusResponse.status.webSocketChannelName,\n webSocketClientType: statusResponse.status.webSocketClientType,\n };\n\n this.statusUpdatedSubject.next({\n statusResponse: statusResponse,\n statusSettings: statusSettings,\n });\n\n if (statusSettings.needWebSocket) {\n this.openWebsocket(statusSettings);\n return;\n }\n\n this.stopListening();\n this.statusDoneSubject.next(statusSettings);\n });\n }\n\n private subscribeCheckStatusUpdate(): void {\n this.checkStatusService.response$\n .pipe(takeUntil(this.destroy$))\n .subscribe((checkStatusResponse: CheckStatusResponse | null) => {\n if (!checkStatusResponse?.status) return;\n\n if (checkStatusResponse.status === StatusEnum.done) {\n this.statusService.request();\n this.websocketStatusService.closeWebSocket();\n return;\n }\n\n if (checkStatusResponse.final === false) {\n this.websocketStatusService.startReinsuranceCheckTimeout();\n return;\n }\n });\n }\n\n private subscribeWebsocketEvent(): void {\n this.websocketStatusService.needCheckStatus$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.checkStatusService.request());\n\n this.websocketStatusService.statusChanged$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.statusService.request());\n }\n\n private openWebsocket(statusSettings: StatusSettings): void {\n void this.websocketStatusService.checkStatusWithWebSocket(\n statusSettings.webSocketUrl,\n statusSettings.webSocketChannelName,\n statusSettings.webSocketClientType\n );\n this.websocketOpenedSubject.next(statusSettings);\n }\n}\n","export enum TitleClass {\n done = 'done',\n cancel = 'cancel',\n cancelUser = 'canceluser',\n}\n","export enum SavePaymentMethodStatus {\n success = 'success',\n failed = 'failed',\n}\n","import { AppError } from '../exceptions-handling/errors/app-error.class';\n\nexport class XpsResponseError extends AppError {\n public constructor(message?: string) {\n super('XPS response failed' + (message ? `: \"${message}\".` : '.'));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { lastValueFrom, Observable, Subject } from 'rxjs';\nimport { HttpHeaders } from '@angular/common/http';\nimport { tap } from 'rxjs/operators';\nimport { SavedPaymentAccountChanges } from './saved-payment-account-changes.interface';\nimport { SettingsService } from '../../../../settings/settings.service';\nimport { SecureApiClient } from '../../../../http/secure-api/secure-api.service';\nimport { XpsResponseError } from '../../../xps-response.error';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SavedPaymentAccountChangesService {\n private readonly apiRoute = 'savedmethods/newaccountinfo';\n private readonly response = new Subject<SavedPaymentAccountChanges | null>();\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public get response$(): Observable<SavedPaymentAccountChanges | null> {\n return this.response.asObservable();\n }\n\n public async request(invoice: number): Promise<SavedPaymentAccountChanges> {\n const requestParameters = {\n access_token: this.settingsService.token,\n invoice_id: invoice,\n };\n\n return lastValueFrom(\n this.secureApi\n .post<SavedPaymentAccountChanges>(\n this.apiRoute,\n new URLSearchParams(\n requestParameters as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n tap((value: SavedPaymentAccountChanges) => {\n this.response.next(value);\n })\n )\n ).catch((error: Error) => {\n throw new XpsResponseError(error.message);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { StatusRequestParams } from '../status-request/status-request-params.interface';\nimport { Status } from '../status.interface';\nimport { firstValueFrom, Subscription } from 'rxjs';\nimport { StatusRequestService } from '../status-request/status-request.service';\nimport { StatusUpdatedAction } from '../../actions/status-updated/status-updated.action.class';\nimport { ListenStatusService } from '../listen-status/listen-status.service';\nimport { SavedPaymentAccountChanges } from './api/saved-payment-account-changes.interface';\nimport { SavedPaymentAccountChangesService } from './api/saved-payment-account-changes.service';\nimport { TitleClass } from '../title-class.enum';\nimport { NextActionService } from '../../actions/next-action.service';\nimport { StatusEnum } from '../status.enum';\nimport { SavePaymentMethodStatus } from './save-payment-method-status.enum';\nimport { CheckStatusService } from '../check-status/check-status.service';\nimport { CheckStatusResponse } from '../check-status/response/check-status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SavePaymentMethodStatusService {\n private savePaymentMethodStatus?: SavePaymentMethodStatus;\n private listenStatusSubscription!: Subscription;\n private statusChecked = false;\n private accountData?: SavedPaymentAccountChanges;\n private status?: Status | null;\n\n public constructor(\n private readonly statusRequestService: StatusRequestService,\n private readonly listenStatusService: ListenStatusService,\n private readonly savedPaymentAccountChangesService: SavedPaymentAccountChangesService,\n private readonly nextActionService: NextActionService,\n private readonly checkStatusService: CheckStatusService\n ) {}\n public async getStatus(params: StatusRequestParams): Promise<Status> {\n if (!this.accountData || !this.status) {\n this.statusRequestService.setRequestParams(params);\n this.statusRequestService.request();\n\n const statusResponse = await firstValueFrom(\n this.statusRequestService.response$\n );\n\n this.status = statusResponse.status;\n this.status.isSavePaymentAccount = true;\n\n this.accountData = await this.getPaymentAccountData(params.invoice);\n }\n\n if (\n this.savingFailedOrCancel(this.status) ||\n (this.accountData && this.savingSuccessful(this.accountData, this.status))\n ) {\n return this.status;\n }\n\n if (!this.statusChecked) {\n this.checkStatus(params);\n this.status.statusState = StatusEnum.processing;\n return this.status;\n }\n\n this.statusChecked = false;\n this.status.statusState = StatusEnum.error;\n const outStatus = { ...this.status };\n this.status = null;\n return outStatus;\n }\n\n private checkStatus(params: StatusRequestParams): void {\n if (!this.statusChecked) {\n this.statusChecked = true;\n }\n this.startWaitingStatusUpdates(params.invoice);\n this.statusRequestService.request();\n }\n\n private savingFailedOrCancel(status?: Status | null): boolean {\n return (\n status?.titleClass === TitleClass.cancel ||\n status?.titleClass === TitleClass.cancelUser\n );\n }\n\n private savingSuccessful(\n accountData: SavedPaymentAccountChanges,\n status?: Status | null,\n checkStatus?: CheckStatusResponse\n ): boolean {\n return !!(\n status?.titleClass === TitleClass.done &&\n (accountData?.new_account || checkStatus?.isPaymentAccountAttached)\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n private getPaymentAccountData(\n invoice: number\n ): Promise<SavedPaymentAccountChanges> {\n return this.savedPaymentAccountChangesService.request(invoice);\n }\n\n private startWaitingStatusUpdates(invoice: number): void {\n if (this.listenStatusSubscription) {\n this.listenStatusSubscription.unsubscribe();\n this.listenStatusService.stopListening();\n }\n\n this.listenStatusService.listen(invoice);\n\n this.listenStatusSubscription =\n this.listenStatusService.statusUpdated$.subscribe(\n ({ statusResponse }) => {\n if (!statusResponse?.status) {\n return;\n }\n this.status = statusResponse.status;\n\n void firstValueFrom(this.checkStatusService.response$).then(\n (checkStatusResponse) => {\n if (checkStatusResponse?.final && statusResponse.status) {\n this.loadNewPaymentAccountData(\n statusResponse.status,\n checkStatusResponse\n );\n }\n }\n );\n }\n );\n }\n\n private loadNewPaymentAccountData(\n status: Status,\n checkStatus: CheckStatusResponse\n ): void {\n if (!status.invoice) {\n return;\n }\n void this.getPaymentAccountData(status.invoice).then(\n (accountChanges: SavedPaymentAccountChanges) => {\n if (accountChanges) {\n this.accountData = accountChanges;\n this.handleSavingStatus(status, accountChanges, checkStatus);\n }\n }\n );\n }\n\n private handleSavingStatus(\n status: Status,\n account: SavedPaymentAccountChanges,\n checkStatus: CheckStatusResponse\n ): void {\n if (this.savingSuccessful(account, status, checkStatus)) {\n this.savePaymentMethodStatus = SavePaymentMethodStatus.success;\n } else {\n this.savePaymentMethodStatus = SavePaymentMethodStatus.failed;\n }\n\n this.listenStatusService.stopListening();\n this.listenStatusSubscription.unsubscribe();\n\n const isSavePaymentMethod = true;\n\n this.nextActionService.emitFlowUpdates(\n new StatusUpdatedAction(\n status,\n isSavePaymentMethod,\n this.savePaymentMethodStatus\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { firstValueFrom, skip } from 'rxjs';\nimport { StatusRequestService } from './status-request/status-request.service';\nimport { StatusRequestParams } from './status-request/status-request-params.interface';\nimport { ListenStatusService } from './listen-status/listen-status.service';\nimport { Status } from './status.interface';\nimport { NextActionService } from '../actions/next-action.service';\nimport { StatusUpdatedAction } from '../actions/status-updated/status-updated.action.class';\nimport { UrlService } from '../../url/url.service';\nimport { requiredStatusSearchParams } from './status-request/required-status-search-params.const';\nimport { statusSearchParamsMap } from './status-request/status-search-params.map';\nimport { FinanceDetailsService } from '../finance-details/finance-details.service';\nimport { SavePaymentMethodStatusService } from './save-payment-method-status/save-payment-method-status.service';\nimport { XpsBoolean } from '../../xps-boolean.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusService {\n public constructor(\n private readonly urlService: UrlService,\n private readonly statusRequestService: StatusRequestService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly listenStatusService: ListenStatusService,\n private readonly nextActionService: NextActionService,\n private readonly savePaymentMethodStatusService: SavePaymentMethodStatusService\n ) {}\n\n public async getStatus(params: StatusRequestParams): Promise<Status> {\n const isSavePaymentMethodMode =\n params?.isSavePaymentAccount === XpsBoolean.true;\n if (isSavePaymentMethodMode) {\n return this.savePaymentMethodStatusService.getStatus(params);\n }\n\n this.statusRequestService.setRequestParams(params);\n\n this.startWaitingStatusUpdates(params.invoice);\n\n this.statusRequestService.request();\n\n const statusResponse = await firstValueFrom(\n this.statusRequestService.response$\n );\n\n this.financeDetailsService.emitWithStatus(statusResponse.status);\n\n return statusResponse.status;\n }\n\n public async getStatusWithUrlSearchParams(url?: string): Promise<Status> {\n const searchParams = this.getRequestParamsFromUrl(url);\n\n if (!searchParams) {\n throw new Error('No required search params to get status');\n }\n\n return this.getStatus(searchParams);\n }\n\n private getRequestParamsFromUrl(url?: string): StatusRequestParams | null {\n const searchParams = this.urlService.getSearchParams(url ?? '');\n const keys = new Set(Object.keys(searchParams));\n\n if (\n requiredStatusSearchParams.some((requiredKey) => !keys.has(requiredKey))\n ) {\n return null;\n }\n\n const params: { [key: string]: string | number } = {};\n statusSearchParamsMap.forEach((settings, key) => {\n params[settings.key] = settings.converter(searchParams[key]);\n });\n\n return params as unknown as StatusRequestParams;\n }\n\n private startWaitingStatusUpdates(invoice: number): void {\n this.listenStatusService.listen(invoice);\n\n this.listenStatusService.statusUpdated$\n .pipe(skip(1))\n .subscribe(({ statusResponse }) => {\n this.financeDetailsService.emitWithStatus(statusResponse.status);\n this.nextActionService.emitFlowUpdates(\n new StatusUpdatedAction(statusResponse)\n );\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { CreditCardState } from './credit-card-state.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CreditCardStateService extends EmitDataService<CreditCardState> {}\n","export enum ThreeDsStatusWebSocketTypes {\n status3DS_changed = 'status3DS_changed',\n}\n","export enum ThreeDsStatusTypes {\n completed = 'completed',\n challenge = 'challenge',\n collectDfp = 'collect_dfp',\n}\n","export class StatusThreeDsRequest {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly access_token: string;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly threeDSTrXid: string;\n\n public constructor(token: string, threeDsId: string) {\n this.access_token = token;\n this.threeDSTrXid = threeDsId;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusThreeDsRequest } from './status-three-ds-request.class';\n\nexport type StatusThreeDsRequestParameters = ConstructorParameters<\n typeof StatusThreeDsRequest\n>;\n\nexport type StatusThreeDsRequestFactory = (\n ...args: StatusThreeDsRequestParameters\n) => StatusThreeDsRequest;\n\nexport const statusThreeDsRequestFactoryToken: InjectionToken<StatusThreeDsRequestFactory> =\n new InjectionToken<StatusThreeDsRequestFactory>('StatusThreeDsRequest');\n\nexport const statusThreeDsRequestFactoryProvider: ValueProvider = {\n provide: statusThreeDsRequestFactoryToken,\n useValue: (...args: StatusThreeDsRequestParameters) =>\n new StatusThreeDsRequest(...args),\n};\n","import { ThreeDsCheckoutForm } from '../three-ds-checkout-form.interface';\nimport { Properties } from '../../../../../properties.type';\n\nexport class StatusThreeDsResponse {\n public readonly status: string;\n public readonly checkoutForm?: ThreeDsCheckoutForm;\n\n public constructor(params: Properties<StatusThreeDsResponse>) {\n this.status = params.status;\n this.checkoutForm = params.checkoutForm;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusThreeDsResponse } from './status-three-ds-response.class';\n\nexport type StatusThreeDsResponseParameters = ConstructorParameters<\n typeof StatusThreeDsResponse\n>;\n\nexport type StatusThreeDsResponseFactory = (\n ...args: StatusThreeDsResponseParameters\n) => StatusThreeDsResponse;\n\nexport const statusThreeDsResponseFactoryToken: InjectionToken<StatusThreeDsResponseFactory> =\n new InjectionToken<StatusThreeDsResponseFactory>('StatusThreeDsResponse');\n\nexport const statusThreeDsResponseFactoryProvider: ValueProvider = {\n provide: statusThreeDsResponseFactoryToken,\n useValue: (...args: StatusThreeDsResponseParameters) =>\n new StatusThreeDsResponse(...args),\n};\n","import { lastValueFrom, Observable, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SecureApiClient } from '../../../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../../../settings/settings.service';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\nimport { XpsResponseError } from '../../../xps-response.error';\nimport { ThreeDsForm } from '../../three-ds-form.interface';\nimport { StatusThreeDsResponseApi } from './status-three-ds-response.interface';\nimport {\n StatusThreeDsRequestFactory,\n statusThreeDsRequestFactoryToken,\n} from './request/status-three-ds-request.token';\nimport {\n StatusThreeDsResponseFactory,\n statusThreeDsResponseFactoryToken,\n} from './response/status-three-ds-response.token';\nimport { StatusThreeDsResponse } from './response/status-three-ds-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusThreeDsService {\n public get response$(): Observable<StatusThreeDsResponse | null> {\n return this.response.asObservable();\n }\n\n private readonly apiRoute = 'secure3d/check';\n private readonly response = new Subject<StatusThreeDsResponse | null>();\n\n public constructor(\n private readonly secureApi: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(statusThreeDsRequestFactoryToken)\n private readonly requestFactory: StatusThreeDsRequestFactory,\n @Inject(statusThreeDsResponseFactoryToken)\n private readonly responseFactory: StatusThreeDsResponseFactory\n ) {}\n\n public request(data: ThreeDsForm): void {\n const token = this.settingsService.token;\n\n if (!token) {\n throw new TokenError();\n }\n const requestParams = this.requestFactory(token, data.threeDSTrXid);\n\n void lastValueFrom(\n this.secureApi\n .post<StatusThreeDsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n map((response) => {\n const statusResponse = this.responseFactory({\n status: response.secure3d.status,\n checkoutForm: response.secure3d.checkout_form,\n });\n\n this.response.next(statusResponse);\n })\n )\n ).catch((error: Error) => {\n throw new XpsResponseError(error.message);\n });\n }\n}\n","export class NotifyDfpStatusRequest {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly access_token: string;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly threeDSTrXid: string;\n\n public readonly secure3dCompind: 'Y' | 'N';\n\n public constructor(params: {\n token: string;\n threeDsTrXid: string;\n isCompind: boolean;\n }) {\n this.access_token = params.token;\n this.threeDSTrXid = params.threeDsTrXid;\n this.secure3dCompind = params.isCompind ? 'Y' : 'N';\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { NotifyDfpStatusRequest } from './notify-dfp-status-request.class';\n\nexport type NotifyDfpStatusRequestParameters = ConstructorParameters<\n typeof NotifyDfpStatusRequest\n>;\n\nexport type NotifyDfpStatusRequestFactory = (\n ...args: NotifyDfpStatusRequestParameters\n) => NotifyDfpStatusRequest;\n\nexport const notifyDfpStatusRequestFactoryToken: InjectionToken<NotifyDfpStatusRequestFactory> =\n new InjectionToken<NotifyDfpStatusRequestFactory>('NotifyDfpStatusRequest');\n\nexport const notifyDfpStatusRequestFactoryProvider: ValueProvider = {\n provide: notifyDfpStatusRequestFactoryToken,\n useValue: (...args: NotifyDfpStatusRequestParameters) =>\n new NotifyDfpStatusRequest(...args),\n};\n","import { lastValueFrom } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SecureApiClient } from '../../../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../../../settings/settings.service';\nimport {\n NotifyDfpStatusRequestFactory,\n notifyDfpStatusRequestFactoryToken,\n} from './request/notify-dfp-status-request.token';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\nimport { XpsResponseError } from '../../../xps-response.error';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotifyDfpStatusService {\n private readonly apiRouteComplete = 'secure3d/notify';\n\n public constructor(\n private readonly secureApi: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(notifyDfpStatusRequestFactoryToken)\n private readonly requestFactory: NotifyDfpStatusRequestFactory\n ) {}\n\n /*\n * isCompind is a flag of dfp expired state\n */\n public request(threeDsId: string, isCompind: boolean): void {\n const token = this.settingsService.token;\n\n if (!token) {\n throw new TokenError();\n }\n\n const requestParams = this.requestFactory({\n token: token,\n threeDsTrXid: threeDsId,\n isCompind,\n });\n\n lastValueFrom(\n this.secureApi.post(\n this.apiRouteComplete,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n ).catch((error: Error) => {\n throw new XpsResponseError(error.message);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { windowToken } from '../../../window.token';\nimport { ExtendedWindow } from '../../../extended-window.interface';\nimport { NotifyDfpStatusService } from '../api/notify-dfp-status/notify-dfp-status.service';\nimport { ThreeDsForm } from '../three-ds-form.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DfpCollectService {\n private readonly iframeName = 'iframeDFP';\n private readonly formName = 'formDFP';\n\n public constructor(\n @Inject(windowToken)\n private readonly window: ExtendedWindow,\n private readonly notifyDfpStatusService: NotifyDfpStatusService\n ) {}\n\n public collectDfpStatus(threeDsForm: ThreeDsForm): void {\n if (threeDsForm.waitCallback) {\n this.openIframeWithPostRequest(threeDsForm, false);\n } else {\n this.openIframeWithPostRequest(threeDsForm, true);\n }\n }\n\n /*\n * This method create invisible iframe with required params and after that it submit form in iframe\n * */\n private openIframeWithPostRequest(\n threeDsForm: ThreeDsForm,\n isNeedNotifyAfterLoad: boolean\n ): void {\n const iFrameElement = this.window.document.getElementById(this.iframeName);\n if (!iFrameElement) {\n this.createIframe(isNeedNotifyAfterLoad, threeDsForm.threeDSTrXid);\n this.postFormToIframe(\n threeDsForm.threeDSMethod,\n threeDsForm.threeDSMethodData\n );\n }\n }\n\n /*\n * isNeedNotifyAfterLoad is need to send notification of dft to server\n * */\n private createIframe(\n isNeedNotifyAfterLoad: boolean,\n threeDsTrXid: string\n ): void {\n const attributes: { [key: string]: string } = {\n name: this.iframeName,\n id: this.iframeName,\n src: 'javascript:false',\n style: 'display:none',\n };\n\n const iFrame = this.window.document.createElement('iframe');\n this.setAttributes(iFrame, attributes);\n this.window.document.body.appendChild(iFrame);\n\n if (isNeedNotifyAfterLoad) {\n (\n this.window.document.getElementById(\n this.iframeName\n ) as HTMLIFrameElement\n ).onload = () => {\n this.notifyDfpStatusService.request(threeDsTrXid, true);\n };\n }\n }\n\n /*\n * This method will submit form in our iframe. Form will be created, if it's don't exist\n * */\n private postFormToIframe(url: string, threeDsMethod: string): void {\n let form = this.window.document.getElementById(\n this.formName\n ) as HTMLFormElement;\n\n if (!form) {\n form = this.createForm();\n this.window.document.body.appendChild(form);\n }\n\n form.setAttribute('action', url);\n form.setAttribute('target', this.iframeName);\n form.appendChild(this.createInput('threeDSMethodData', threeDsMethod));\n\n form.submit();\n }\n\n /*\n * This method will create invisible form with required params\n */\n private createForm(): HTMLFormElement {\n const form = this.window.document.createElement('form');\n const initAttributes: { [key: string]: string } = {\n name: this.formName,\n id: this.formName,\n style: 'display:none',\n method: 'POST',\n enctype: 'application/x-www-form-urlencoded',\n };\n\n this.setAttributes(form, initAttributes);\n\n return form;\n }\n\n private createInput(name: string, value: string): HTMLInputElement {\n const input = this.window.document.createElement('input');\n input.type = 'hidden';\n input.name = name;\n input.value = value;\n return input;\n }\n\n /*\n * This method will set attributes to form/iframe\n * */\n private setAttributes(\n element: HTMLElement,\n attributes: { [key: string]: string }\n ): void {\n Object.keys(attributes).forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Timer, Timers } from './timer.interface';\nimport { windowToken } from '../../../window.token';\nimport { ExtendedWindow } from '../../../extended-window.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReinsuranceCheckService {\n private timers: Timers = {};\n\n public constructor(\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public addTimer(timer: Timer): void {\n if (!timer) {\n return;\n }\n\n this.removeTimer(timer.id);\n\n this.timers[timer.id] = timer;\n\n const timerInStorage = this.timers[timer.id] as unknown as Timer;\n\n this.window.setTimeout(() => {\n timerInStorage.callback();\n\n this.timers[timer.id] = null;\n }, timerInStorage.timeoutMs);\n }\n\n public removeTimer(id: string): void {\n const timerInStorage = this.timers[id];\n\n if (!timerInStorage) {\n return;\n }\n\n this.window.clearTimeout(timerInStorage.timeoutRef);\n this.timers[id] = null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { WebSocketFactory } from '../../../web-socket/web-socket.factory';\nimport { WebSocketClient } from '../../../web-socket/web-socket.interface';\nimport { StatusThreeDsService } from '../api/status-three-ds/status-three-ds.service';\nimport { NotifyDfpStatusService } from '../api/notify-dfp-status/notify-dfp-status.service';\nimport { ThreeDsStatusWebSocketTypes } from '../three-ds-status-websocket-types.enum';\nimport { ThreeDsForm } from '../three-ds-form.interface';\nimport { ThreeDsStatusTypes } from '../api/status-three-ds/status-types.enum';\nimport { DfpCollectService } from '../dfp-collect/dfp-collect.service';\nimport { ReinsuranceCheckService } from '../reinsurance-check/reinsurance-check.service';\nimport { StatusUpdate } from './status-update.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThreeDs20Service {\n public get statusUpdates$(): Observable<StatusUpdate> {\n return this.statusUpdates.asObservable();\n }\n\n private webSocketSubscription: Subscription | undefined;\n private webSocketReconnectionSubscription: Subscription | undefined;\n private webSocketClient: WebSocketClient | null = null;\n\n private readonly statusUpdates = new Subject<StatusUpdate>();\n\n private statusRequestSubscription: Subscription | null = null;\n\n private readonly notifyDfpTimerId = 'notify-dfp';\n private readonly notifyDfpTimeoutMs = 10000;\n\n private readonly statusThreeDsTimerId = 'status-three-ds';\n private readonly statusThreeDsTimeoutMs = 180000;\n\n public constructor(\n private readonly statusThreeDsService: StatusThreeDsService,\n private readonly notifyDfpStatusService: NotifyDfpStatusService,\n private readonly webSocketFactory: WebSocketFactory,\n private readonly dfpCollectService: DfpCollectService,\n private readonly reinsuranceCheckService: ReinsuranceCheckService\n ) {}\n\n public async checkThreeDs20(threeDsForm: ThreeDsForm | null): Promise<void> {\n if (!threeDsForm) {\n return;\n }\n\n this.reinsuranceCheckService.addTimer({\n id: this.notifyDfpTimerId,\n timeoutMs: this.notifyDfpTimeoutMs,\n callback: () => {\n this.notifyDfpStatusService.request(threeDsForm.threeDSTrXid, false);\n },\n });\n\n this.webSocketClient = this.webSocketFactory.createWebSocketClient(\n threeDsForm.webSocketChannelUrl,\n threeDsForm.webSocketClientType\n );\n\n await this.webSocketClient.open(\n threeDsForm.webSocketChannelUrl,\n threeDsForm.webSocketClientType\n );\n this.webSocketSubscription?.unsubscribe();\n\n this.webSocketSubscription = this.webSocketClient.messages$.subscribe(\n (message) => {\n if (message !== ThreeDsStatusWebSocketTypes.status3DS_changed) {\n return;\n }\n\n this.statusThreeDsService.request(threeDsForm);\n }\n );\n\n this.webSocketReconnectionSubscription?.unsubscribe();\n this.webSocketReconnectionSubscription =\n this.webSocketClient.subscribeOnSuccessfulReconnection(() => {\n this.statusThreeDsService.request(threeDsForm);\n });\n\n this.handleThreeDsUpdates(threeDsForm);\n this.statusThreeDsService.request(threeDsForm);\n\n this.reinsuranceCheckService.addTimer({\n id: this.statusThreeDsTimerId,\n timeoutMs: this.statusThreeDsTimeoutMs,\n callback: () => {\n this.statusThreeDsService.request(threeDsForm);\n },\n });\n }\n\n private handleThreeDsUpdates(threeDsForm: ThreeDsForm): void {\n this.statusRequestSubscription?.unsubscribe();\n this.statusRequestSubscription =\n this.statusThreeDsService.response$.subscribe((threeDsStatus) => {\n if (!threeDsStatus) {\n return;\n }\n\n if (threeDsStatus.status === ThreeDsStatusTypes.completed) {\n this.stopReinsuranceMethods();\n this.statusUpdates.next({\n type: 'complete',\n data: {\n statusUrl: threeDsForm.statusUrl,\n },\n });\n return;\n }\n\n if (\n threeDsStatus.status === ThreeDsStatusTypes.challenge &&\n threeDsStatus.checkoutForm\n ) {\n this.stopReinsuranceMethods();\n this.statusUpdates.next({\n type: 'challenge',\n data: threeDsStatus.checkoutForm,\n });\n }\n\n if (threeDsStatus.status === ThreeDsStatusTypes.collectDfp) {\n this.dfpCollectService.collectDfpStatus(threeDsForm);\n }\n });\n }\n\n private stopReinsuranceMethods(): void {\n this.reinsuranceCheckService.removeTimer(this.notifyDfpTimerId);\n this.reinsuranceCheckService.removeTimer(this.statusThreeDsTimerId);\n this.webSocketClient?.close();\n this.statusRequestSubscription?.unsubscribe();\n }\n}\n","import { Subscription } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ThreeDs20Service } from './three-ds-20/three-ds20.service';\nimport { ThreeDsAction } from '../actions/three-ds/three-ds.action.class';\nimport { CheckStatusAction } from '../actions/check-status/check-status.action.class';\nimport { SubmitResponse } from '../submit/response/submit-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThreeDsService {\n private statusSubscription: Subscription | null = null;\n\n public constructor(\n private readonly threeDs20Service: ThreeDs20Service,\n private readonly nextActionService: NextActionService\n ) {}\n\n public checkThreeDs(params: SubmitResponse): void {\n /*\n At this moment we support only 3ds 2.0 version.\n 3ds 1.0 currently working by our redirect logic (Redirect NextAction).\n If in future we will get new version of 3ds, we should add 3ds determination logic to this service\n */\n void this.threeDs20Service.checkThreeDs20(params.parameters.threeDSForm);\n\n this.statusSubscription?.unsubscribe();\n this.statusSubscription = this.threeDs20Service.statusUpdates$.subscribe(\n (statusUpdate) => {\n if (statusUpdate.type === 'complete') {\n return this.nextActionService.emitFlowUpdates(\n new CheckStatusAction(params)\n );\n }\n\n this.nextActionService.emitFlowUpdates(new ThreeDsAction(statusUpdate));\n }\n );\n }\n\n public stopChecking(): void {\n this.statusSubscription?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { XpsMessage } from '../xps-message.interface';\nimport { UnescapeHtmlPipe } from '../../../shared/pipes/unescape-html/unescape-html.pipe';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormMessagesService extends EmitDataService<string[]> {\n public constructor(private readonly unescapeHtmlPipe: UnescapeHtmlPipe) {\n super();\n }\n public emitOnResponse(messages?: XpsMessage[]): void {\n if (!messages) {\n return;\n }\n const mapInfoMessages = (infoMessage: XpsMessage): string =>\n this.unescapeHtmlPipe.transform(infoMessage.message);\n\n super.emit(messages.map(mapInfoMessages));\n }\n}\n","import { BehaviorSubject, Observable, Subject, filter, takeUntil } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { SubmitResponse } from './submit/response/submit-response.class';\nimport { FormService } from './form/form.service';\nimport { InitializeResponse } from './initialize/response/initialize-response.class';\nimport { InitializeService } from './initialize/initialize.service';\nimport { Status } from './status/status.interface';\nimport { SubmitService } from './submit/submit.service';\nimport { SyncService } from './sync/sync.service';\nimport { StatusService } from './status/status.service';\nimport { NextActionService } from './actions/next-action.service';\nimport { ControlConfig } from './form/controls/control-config';\nimport { ControlConfigService } from './form/controls/control-config.service';\nimport { FinanceDetails } from './finance-details/finance-details.interface';\nimport { FinanceDetailsService } from './finance-details/finance-details.service';\nimport { NextAction } from './actions/next-action.interface';\nimport { XpsSummary } from './xps-summary.interface';\nimport { Field } from './field.interface';\nimport { PaymentConfig } from './payment-config.interface';\nimport { isSubmitResponse } from './submit/response/is-submit-response.function';\nimport { XpsBoolean } from '../xps-boolean.enum';\nimport { StatusRequestParams } from './status/status-request/status-request-params.interface';\nimport { ValidationErrors } from './form/validators/validation-errors.interface';\nimport { InputEventName } from './form/input-event.enum';\nimport { FormFieldsStatus } from './form/form-fields-status.interface';\nimport { ThreeDsService } from './three-ds/three-ds.service';\nimport { XpsCommand } from './xps-comand.enum';\nimport { CreditCardStateService } from './credit-card-state/credit-card-state.service';\nimport { FieldNames } from './field-names.enum';\nimport { FormState } from './form/form-state.interface';\nimport { FormMessagesService } from './form-messages/form-messages.service';\nimport { XpsMessage } from './xps-message.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentService {\n public form: UntypedFormGroup | null = null;\n\n public get formFieldsStatus$(): Observable<FormFieldsStatus> {\n return this.formFieldsStatusSubject.asObservable().pipe(filter(Boolean));\n }\n\n private data: InitializeResponse | SubmitResponse | null = null;\n private financeDetails: FinanceDetails | null = null;\n private focusFieldName: string | null = null;\n private fields: Field[] = [];\n private config!: PaymentConfig;\n\n private destroy$ = new Subject<void>();\n private formDestroy$ = new Subject<void>();\n private readonly formFieldsStatusSubject =\n new BehaviorSubject<FormFieldsStatus | null>(null);\n\n private isSavingMethodMode = false;\n\n public constructor(\n private readonly initializeService: InitializeService,\n private readonly submitService: SubmitService,\n private readonly syncService: SyncService,\n private readonly formService: FormService,\n private readonly statusService: StatusService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly creditCardStateService: CreditCardStateService,\n private readonly nextActionService: NextActionService,\n private readonly controlConfigService: ControlConfigService,\n private readonly threeDsService: ThreeDsService,\n private readonly formMessagesService: FormMessagesService\n ) {}\n\n public async initialize(config: PaymentConfig): Promise<Field[]> {\n this.destroy$ = new Subject<void>();\n this.formDestroy$ = new Subject<void>();\n\n this.listenFinanceDetails();\n\n this.config = config;\n this.data = await this.initializeService.request(config);\n\n this.fields = this.getFields();\n this.form = this.formService.createForm(this.fields);\n\n this.updatePidConfig();\n this.setupSyncService(this.form, this.fields);\n this.listenFormStatusChanges(this.form);\n\n this.emitFinanceDetails(this.data.paymentForm?.summary);\n this.emitFormFieldsStatus(this.form);\n this.emitFormMessages(this.data.paymentForm?.messages);\n\n return this.fields.filter(\n (field: Field) => field?.isVisible === XpsBoolean.true\n );\n }\n\n public async submit(): Promise<NextAction | null | void> {\n if (!this.form) {\n throw new Error('form is empty!');\n }\n\n if (!this.form.valid) {\n this.form.markAllAsTouched();\n this.emitFormFieldsStatus(this.form);\n return;\n }\n\n this.isSavingMethodMode = this.fields.some(\n ({ name, value }) =>\n name === 'savePsAccountOnly' && value === XpsBoolean.true\n );\n const submitResponse = await this.submitService.request(\n this.fields,\n this.form\n );\n\n this.data = submitResponse;\n\n if (!this.isSavingMethodMode) {\n this.emitFinanceDetails(submitResponse.summary);\n }\n this.emitFormMessages(submitResponse.messages);\n\n // Handle 3ds flow\n if (submitResponse.currentCommand === XpsCommand.create) {\n this.runThreeDs();\n return;\n }\n\n this.fields = this.getFields();\n this.form = this.formService.createForm(this.fields);\n\n this.syncService.setup(this.form, this.fields);\n\n return this.nextActionService.getNextAction(submitResponse);\n }\n\n public getFields(): Field[] {\n if (this.data instanceof SubmitResponse) {\n return this.data.fields ?? [];\n }\n\n return this.data?.paymentForm?.fields ?? [];\n }\n\n public getPid(): number | null {\n if (this.data instanceof SubmitResponse) {\n return (\n Number(\n this.data.fields.find((field) => field.name === 'fix_pid')?.value\n ) || null\n );\n }\n\n if (this.data instanceof InitializeResponse) {\n return (\n Number(\n this.data.paymentForm?.fields.find(\n (field) => field.name === 'fix_pid'\n )?.value\n ) || null\n );\n }\n\n return null;\n }\n\n public async validate(field: Field): Promise<ValidationErrors | null> {\n const syncErrors = this.syncService.getSyncValidationErrors(field);\n\n if (syncErrors) {\n return Promise.resolve(syncErrors);\n }\n\n return this.syncService.validate(field);\n }\n\n public runThreeDs(): void {\n if (!isSubmitResponse(this.data)) {\n throw new Error('Should submit form first');\n }\n\n this.threeDsService.checkThreeDs(this.data);\n }\n\n public getFinanceDetails(): FinanceDetails | null {\n return this.financeDetails;\n }\n\n public updateFieldFormState(fieldName: string, formState: FormState): void {\n if (this.form) {\n this.formService.updateFieldFormState(\n this.form,\n this.fields,\n fieldName,\n formState\n );\n }\n }\n\n public async getStatus(): Promise<Status> {\n if (!isSubmitResponse(this.data)) {\n throw new Error('Should submit form first');\n }\n\n const params: StatusRequestParams = {\n pid: this.config.paymentMethodId,\n invoice: parseInt(this.data.fixInvoice ?? ''),\n signature: this.data.signature ?? '',\n locale:\n this.data.fields.find((field) => field.name === 'locale')?.value ??\n 'en',\n isSavePaymentAccount: this.isSavingMethodMode\n ? XpsBoolean.true\n : XpsBoolean.false,\n };\n return this.statusService.getStatus(params);\n }\n\n public getFieldConfig(field: Field): ControlConfig | null {\n return this.controlConfigService.getConfig(field);\n }\n\n public changeFieldValue(name: string, value: string): void {\n const formControl = this.form?.get(name);\n formControl?.setValue(value);\n }\n\n public changeFieldState(name: string, state: InputEventName): void {\n const formControl = this.form?.get(name);\n\n if (!this.form || !formControl) {\n return;\n }\n\n switch (state) {\n case InputEventName.blur: {\n formControl.markAsTouched();\n this.focusFieldName = null;\n break;\n }\n case InputEventName.focus: {\n formControl.markAsUntouched();\n this.focusFieldName = name;\n break;\n }\n }\n\n this.emitFormFieldsStatus(this.form);\n }\n\n public destroy(): void {\n this.data = null;\n this.financeDetails = null;\n this.form = null;\n this.fields = [];\n this.formDestroy$.next();\n this.destroy$.next();\n\n this.threeDsService.stopChecking();\n }\n\n private emitFinanceDetails(summary?: XpsSummary): void {\n this.financeDetailsService.emitWithSummary(summary);\n }\n\n private emitCreditCardState(idCardType: string): void {\n this.creditCardStateService.emit({ idCardType });\n }\n\n private emitFormFieldsStatus(form: UntypedFormGroup): void {\n const formFieldsStatus: FormFieldsStatus = {};\n\n Object.keys(form.controls).forEach((name) => {\n const control = form.controls[name];\n formFieldsStatus[name] = {\n name: name,\n validationStatus: control.status,\n errors: control.errors,\n isFocused: this.focusFieldName === name,\n isTouched: control.touched,\n };\n });\n\n this.formFieldsStatusSubject.next(formFieldsStatus);\n }\n\n private emitFormMessages(messages?: XpsMessage[]): void {\n this.formMessagesService.emitOnResponse(messages);\n }\n\n private setupSyncService(form: UntypedFormGroup, fields: Field[]): void {\n this.syncService.setup(form, fields);\n this.syncService.data$\n .pipe(takeUntil(this.destroy$))\n .subscribe((response) => {\n this.emitFinanceDetails(response.summary);\n this.emitFormMessages(response.messages);\n });\n\n this.syncService.fieldAsyncValidation$\n .pipe(takeUntil(this.destroy$))\n .subscribe((fieldAsyncValidation) => {\n switch (fieldAsyncValidation.field.name) {\n case FieldNames.cardNumber:\n this.emitCreditCardState(\n fieldAsyncValidation.response.parameters.idCardType\n );\n }\n });\n }\n\n private listenFinanceDetails(): void {\n this.financeDetailsService.data$\n .pipe(takeUntil(this.destroy$))\n .subscribe((financeDetails) => (this.financeDetails = financeDetails));\n }\n\n private listenFormStatusChanges(form: UntypedFormGroup): void {\n form.statusChanges\n .pipe(takeUntil(this.formDestroy$))\n .subscribe(() => this.emitFormFieldsStatus(form));\n }\n\n /*\n * in case the form pid changes despite the one passed during initialization\n * */\n private updatePidConfig(): void {\n const currentPid = this.getPid();\n if (currentPid) {\n this.config.paymentMethodId = currentPid;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../../core/settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RefundPolicyService {\n public readonly defaultVersionId = 2;\n public readonly defaultUrl = 'https://xsolla.com/refund-policy-ps';\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public get url(): string {\n if (!this.settingsService.token) {\n return 'https://xsolla.com/refundpolicy/en-us';\n }\n const language = this.settingsService.user.local ?? 'en';\n const versionId =\n this.settingsService.project.refundPolicySettings?.policy_version_id ??\n this.defaultVersionId;\n const countryIso = this.settingsService.user.country.value ?? '';\n const projectId = this.settingsService.project.id;\n return `${this.defaultUrl}?policy_version_id=${versionId}&language=${language}&country=${countryIso}&project_id=${projectId}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureConnectionService {\n public get isWhiteLabel(): boolean {\n return !!this.settingsService.settings?.white_label;\n }\n public get secureConnectionUrl(): string | undefined {\n this.setSecureConnectionUrl();\n return this._secureConnectionUrl;\n }\n\n public readonly secureConnectionApi = 'https://verify.xsolla.com/?url=';\n\n private _secureConnectionUrl?: string;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n private setSecureConnectionUrl(): void {\n const projectUrl = this.settingsService.project?.projectUrl;\n\n if (projectUrl) {\n this._secureConnectionUrl = `${\n this.secureConnectionApi\n }${encodeURIComponent(projectUrl)}`;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DisclaimerService {\n public readonly disclaimer = 'disclaimer';\n}\n","import { Injectable } from '@angular/core';\nimport { LegalComponentConfig } from './legal.component.config';\nimport { SettingsService } from '../settings/settings.service';\nimport { RefundPolicyService } from './refund-policy.service';\nimport { SecureConnectionService } from './secure-connection.service';\nimport { DisclaimerService } from './disclaimer.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LegalService {\n public readonly sctlPolicyUrl = 'https://xsolla.com/sctl';\n\n private get isJapanUser(): boolean {\n return this.settingsService.user?.local === 'ja';\n }\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly refundPolicyService: RefundPolicyService,\n private readonly secureConnectionService: SecureConnectionService,\n private readonly disclaimerService: DisclaimerService\n ) {}\n\n public getLegalComponentConfig(): LegalComponentConfig {\n return {\n isJapanUser: this.isJapanUser,\n refundPolicyUrl: this.refundPolicyService.url,\n sctlPolicyUrl: this.sctlPolicyUrl,\n secureConnection: {\n secureConnectionUrl: this.secureConnectionService.secureConnectionUrl,\n isWhiteLabel: this.secureConnectionService.isWhiteLabel,\n },\n disclaimer: this.disclaimerService.disclaimer,\n };\n }\n}\n","import { lastValueFrom } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SettingsService } from '../settings/settings.service';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SavedMethodsService } from '../saved-methods/saved-methods.service';\nimport { DeleteMethodResponse } from './delete-method-response.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EditSavedMethodsService {\n private readonly deleteRoute = 'savedmethods/delete';\n\n public constructor(\n private readonly savedMethodsService: SavedMethodsService,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async deleteSavedMethodRequest(\n id: number,\n type: string\n ): Promise<boolean> {\n const token = this.settingsService.token;\n\n const parameters: {\n access_token: string;\n id: number;\n type: string;\n } = {\n access_token: token,\n id,\n type,\n };\n\n return lastValueFrom(\n this.secureApi.post<DeleteMethodResponse>(\n this.deleteRoute,\n new URLSearchParams(parameters as unknown as { [key: string]: string }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then(async () => {\n await this.savedMethodsService.getList(true);\n return true;\n })\n .catch(() => {\n return false;\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InitConfiguration } from './core/settings/configuration.interface';\nimport { SettingsService } from './core/settings/settings.service';\nimport { CountryService } from './core/country/country.service';\nimport { PaymentMethodsService } from './core/payment-methods/payment-methods.service';\nimport { PaymentMethod } from './core/payment-methods/payment-method.interface';\nimport { SavedMethodsService } from './core/saved-methods/saved-methods.service';\nimport { SavedMethod } from './core/saved-methods/saved-method.interface';\nimport { UserBalanceResponse } from './core/user-balance/user-balance-response.class';\nimport { UserBalanceService } from './core/user-balance/user-balance.service';\nimport { PaymentConfig } from './core/payment/payment-config.interface';\nimport { PaymentService } from './core/payment/payment.service';\nimport { Payment } from './core/payment/payment.interface';\nimport { Field } from './core/payment/field.interface';\nimport { DeviceFingerPrintService } from './core/device-finger-print/device-finger-print.service';\nimport { LegalService } from './core/legal/legal.service';\nimport { LegalComponentConfig } from './core/legal/legal.component.config';\nimport { NextActionService } from './core/payment/actions/next-action.service';\nimport { FinanceDetailsService } from './core/payment/finance-details/finance-details.service';\nimport { masksFunctionsMap } from './core/payment/form/masks-functions.map';\nimport { PaymentConfigService } from './core/payment/config/config.service';\nimport { Status } from './core/payment/status/status.interface';\nimport { StatusService } from './core/payment/status/status.service';\nimport { CreditCardService } from './core/credit-card/credit-card.service';\nimport { CreditCardTypes } from './core/credit-card/credit-card-types.enum';\nimport { CreditCard } from './core/credit-card/credit-card.interface';\nimport { InputEventName } from './core/payment/form/input-event.enum';\nimport { CreditCardStateService } from './core/payment/credit-card-state/credit-card-state.service';\nimport { Observable } from 'rxjs';\nimport { CreditCardState } from './core/payment/credit-card-state/credit-card-state.interface';\nimport { FormState } from './core/payment/form/form-state.interface';\nimport { FinanceDetails } from './core/payment/finance-details/finance-details.interface';\nimport { NextAction } from './core/payment/actions/next-action.interface';\nimport { Balance } from './core/settings/balance.interface';\nimport { FormMessagesService } from './core/payment/form-messages/form-messages.service';\nimport { EditSavedMethodsService } from './core/edit-saved-methods/edit-saved-methods.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreLibraryService {\n public paymentMethods = {\n getList: async (isSaveMethodMode?: boolean): Promise<PaymentMethod[]> =>\n this.paymentMethodsService.getList(isSaveMethodMode),\n\n getQuickMethods: async (): Promise<PaymentMethod[]> =>\n this.paymentMethodsService.getQuickMethods(),\n getSavedMethods: async (): Promise<SavedMethod[]> =>\n this.savedMethodsService.getList(),\n getUserBalance: async (): Promise<UserBalanceResponse> =>\n this.userBalanceService.getUserBalance(),\n deleteSavedMethod: async (id: number, type: string): Promise<boolean> =>\n this.editSavedMethodsService.deleteSavedMethodRequest(id, type),\n };\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly paymentMethodsService: PaymentMethodsService,\n private readonly savedMethodsService: SavedMethodsService,\n private readonly userBalanceService: UserBalanceService,\n private readonly paymentConfigService: PaymentConfigService,\n private readonly paymentService: PaymentService,\n private readonly deviceFingerPrintService: DeviceFingerPrintService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly legalService: LegalService,\n private readonly statusService: StatusService,\n private readonly nextActionService: NextActionService,\n private readonly creditCardService: CreditCardService,\n private readonly creditCardStateService: CreditCardStateService,\n private readonly formMessagesService: FormMessagesService,\n private readonly editSavedMethodsService: EditSavedMethodsService\n ) {}\n\n public async init(configuration: InitConfiguration): Promise<void> {\n await this.settingsService.init(configuration);\n this.deviceFingerPrintService.init();\n }\n\n public async getStatus(url?: string): Promise<Status> {\n return this.statusService.getStatusWithUrlSearchParams(url);\n }\n\n public setCountry(country: string): void {\n this.countryService.setCountry(country);\n }\n\n public getCountry(): string {\n return this.countryService.getCountry();\n }\n\n public createPayment(config: PaymentConfig): Payment {\n const enrichedConfig = this.paymentConfigService.enrich(config);\n\n return {\n initialize: async () => this.paymentService.initialize(enrichedConfig),\n submit: async () => this.paymentService.submit(),\n getFields: () => this.paymentService.getFields(),\n getPid: () => this.paymentService.getPid(),\n validate: async (field: Field) => this.paymentService.validate(field),\n getFinanceDetails: () => this.paymentService.getFinanceDetails(),\n runThreeDs: () => this.paymentService.runThreeDs(),\n getStatus: async () => this.paymentService.getStatus(),\n financeDetailsUpdates$: this.financeDetailsService.data$,\n form: {\n fieldsStatus$: this.paymentService.formFieldsStatus$,\n getControlConfig: (field: Field) =>\n this.paymentService.getFieldConfig(field),\n changeFieldValue: (name: string, value: string) =>\n this.paymentService.changeFieldValue(name, value),\n changeFieldState: (name: string, state: InputEventName) =>\n this.paymentService.changeFieldState(name, state),\n updateFieldFormState: (fieldName: string, formState: FormState) =>\n this.paymentService.updateFieldFormState(fieldName, formState),\n formMessages$: this.formMessagesService.data$,\n getFormStatus: () => this.paymentService.form?.status,\n },\n };\n }\n\n public getCreditCardService(): CreditCard {\n return {\n getTypeByNumber: (cardNumber: string) =>\n this.creditCardService.getTypeByNumber(cardNumber),\n getCreditCardSettings: (cardType: CreditCardTypes) =>\n this.creditCardService.getCreditCardSettings(cardType),\n cardTypeUpdates$: this.creditCardStateService.data$,\n };\n }\n\n public get flowUpdates$(): Observable<NextAction> {\n return this.nextActionService.flowUpdates$;\n }\n\n public get financeDetailsUpdates$(): Observable<FinanceDetails> {\n return this.financeDetailsService.data$;\n }\n\n public get cardTypeUpdates$(): Observable<CreditCardState> {\n return this.creditCardStateService.data$;\n }\n\n public getLegalComponentConfig(): LegalComponentConfig {\n return this.legalService.getLegalComponentConfig();\n }\n\n public getFieldMask(field: Field): undefined | (() => string) {\n const sanitizedName = field.name.replace(/^fix_/i, '');\n return masksFunctionsMap[sanitizedName];\n }\n\n public getUserBalanceValue(): Balance | null {\n return this.userBalanceService.getUserBalanceValue();\n }\n}\n","import { HttpErrorResponse, HttpRequest } from '@angular/common/http';\nimport { AppError } from './app-error.class';\nimport { HttpErrorData } from '../http-interceptor/http-error-data.interface';\nimport { HttpErrorResponseData } from '../http-interceptor/http-error-response-data.interface';\n\nexport class HttpError extends AppError {\n private readonly RESTRICTED_KEYS_REGEXP = new RegExp(\n '.*(card_number|number|cvv|cvn|month|year|cardholdername|client_data|dfp|password).*',\n 'i'\n );\n private readonly httpErrorData!: HttpErrorData;\n\n public constructor(error: HttpErrorResponse, req: HttpRequest<unknown>) {\n super(error.message);\n\n this.httpErrorData = {\n request: {\n url: req.url,\n method: req.method,\n headers: req.headers,\n },\n response: {\n status: error.status,\n headers: error.headers,\n },\n };\n\n if (req.body) {\n this.httpErrorData.request.data = this.cleanPersonalData(\n req.body as { [key: string]: unknown }\n );\n }\n\n if (error.statusText) {\n const errorData = error.error as HttpErrorResponseData;\n\n this.httpErrorData.response.data = {\n statusText: error.statusText,\n errors: errorData?.errors ?? [],\n };\n }\n }\n\n public getHttpErrorData(): HttpErrorData {\n return this.httpErrorData;\n }\n\n private cleanPersonalData(data: { [key: string]: unknown }): {\n [key: string]: unknown;\n } {\n return Object.entries(data).reduce((acc, [key, val]) => {\n return {\n ...acc,\n [key]: this.RESTRICTED_KEYS_REGEXP.test(key) ? '***' : val,\n };\n }, {});\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\n\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpError } from '../errors/http-error.class';\n@Injectable()\nexport class HttpExceptionsInterceptor implements HttpInterceptor {\n public constructor(public router: Router) {}\n\n public intercept(\n req: HttpRequest<unknown>,\n next: HttpHandler\n ): Observable<HttpEvent<unknown>> {\n return next.handle(req).pipe(\n catchError((error: HttpErrorResponse) => {\n return throwError(() => new HttpError(error, req));\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CreditCardMinLengthValidator } from './credit-card-length/credit-card-min-length.validator';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n providers: [CreditCardMinLengthValidator],\n})\nexport class ValidatorsModule {}\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ControlConfigService } from './controls/control-config.service';\nimport { convertersMap, convertersMapToken } from './converters/converters-map';\nimport { EmailConverter } from './converters/email/email.converter';\nimport { ZipConverter } from './converters/zip/zip.converter';\nimport { FormService } from './form.service';\nimport { CardNumberConverter } from './converters/card-number/card-number.converter';\nimport { CardMonthConverter } from './converters/card-month/card-month.converter';\nimport { CvvConverter } from './converters/cvv/cvv.converter';\nimport { ValidatorsModule } from './validators/validators.module';\nimport { BirthDateConverter } from './converters/birth-date/birth-date.converter';\nimport { CardholderNameConverter } from './converters/cardholder-name/cardholder-name.converter';\nimport { CpfNameConverter } from './converters/cpf-name/cpf-name.converter';\nimport { CpfNumberConverter } from './converters/cpf-number/cpf-number.converter';\nimport { StreetNumberConverter } from './converters/street-number/street-number.converter';\nimport { TextConverter } from './converters/text/text.converter';\nimport { CardYearConverter } from './converters/card-year/card-year.converter';\nimport { CheckboxConverter } from './converters/checkbox/checkbox.converter';\nimport { SelectConverter } from './converters/select/select.converter';\nimport { PinConverter } from './converters/pin/pin.converter';\nimport { RadioGroupConverter } from './converters/radio-group/radio-group.converter';\nimport { PricepointConverter } from './converters/pricepoint/pricepoint.converter';\nimport { CouponConverter } from './converters/coupon/coupon.converter';\nimport { PhoneConverter } from './converters/phone.converter';\n\n@NgModule({\n imports: [ReactiveFormsModule, ValidatorsModule],\n providers: [\n FormService,\n ControlConfigService,\n CardNumberConverter,\n CardMonthConverter,\n CardYearConverter,\n CvvConverter,\n CvvConverter,\n ZipConverter,\n CardholderNameConverter,\n CpfNumberConverter,\n CpfNameConverter,\n BirthDateConverter,\n TextConverter,\n CheckboxConverter,\n SelectConverter,\n PinConverter,\n RadioGroupConverter,\n EmailConverter,\n EmailConverter,\n EmailConverter,\n StreetNumberConverter,\n PricepointConverter,\n PricepointConverter,\n CouponConverter,\n TextConverter,\n PhoneConverter,\n { provide: convertersMapToken, useValue: convertersMap },\n ],\n})\nexport class FormModule {}\n","import { NgModule } from '@angular/core';\nimport { UnescapeHtmlPipe } from './unescape-html/unescape-html.pipe';\n\n@NgModule({\n declarations: [UnescapeHtmlPipe],\n providers: [UnescapeHtmlPipe],\n exports: [UnescapeHtmlPipe],\n})\nexport class PipesModule {}\n","import { NgModule, ValueProvider } from '@angular/core';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { HttpExceptionsInterceptor } from './core/exceptions-handling/http-interceptor/http-exceptions.interceptor';\nimport { windowToken } from './core/window.token';\nimport { paymentMethodsResponseFactoryProvider } from './core/payment-methods/payment-methods-response.token';\nimport { savedMethodsResponseFactoryProvider } from './core/saved-methods/saved-methods-response.token';\nimport { userBalanceResponseFactoryProvider } from './core/user-balance/user-balance-response.token';\nimport { initializeResponseFactoryProvider } from './core/payment/initialize/response/initialize-response.token';\nimport { submitRequestFactoryProvider } from './core/payment/submit/request/submit-request.token';\nimport { submitResponseFactoryProvider } from './core/payment/submit/response/submit-response.token';\nimport {\n flowUpdateNextActions,\n nextActions,\n nextActionsToken,\n} from './core/payment/actions/next-actions';\nimport { syncRequestFactoryProvider } from './core/payment/sync/request/sync-request.token';\nimport { syncResponseFactoryProvider } from './core/payment/sync/response/sync-response.token';\nimport { FormModule } from './core/payment/form/form.module';\nimport { statusRequestFactoryProvider } from './core/payment/status/status-request/request/status-request.token';\nimport { statusResponseFactoryProvider } from './core/payment/status/status-request/response/status-response.token';\nimport { checkStatusRequestFactoryProvider } from './core/payment/status/check-status/request/check-status-request.token';\nimport { checkStatusResponseFactoryProvider } from './core/payment/status/check-status/response/check-status-response.token';\nimport { statusThreeDsRequestFactoryProvider } from './core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.token';\nimport { statusThreeDsResponseFactoryProvider } from './core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.token';\nimport { notifyDfpStatusRequestFactoryProvider } from './core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.token';\nimport { PipesModule } from './shared/pipes/pipes.module';\n\n@NgModule({\n imports: [HttpClientModule, FormModule, PipesModule],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpExceptionsInterceptor,\n multi: true,\n },\n { provide: windowToken, useValue: window },\n paymentMethodsResponseFactoryProvider,\n savedMethodsResponseFactoryProvider,\n userBalanceResponseFactoryProvider,\n initializeResponseFactoryProvider,\n submitRequestFactoryProvider,\n submitResponseFactoryProvider,\n syncRequestFactoryProvider,\n syncResponseFactoryProvider,\n statusRequestFactoryProvider,\n statusResponseFactoryProvider,\n checkStatusRequestFactoryProvider,\n checkStatusResponseFactoryProvider,\n statusThreeDsRequestFactoryProvider,\n statusThreeDsResponseFactoryProvider,\n notifyDfpStatusRequestFactoryProvider,\n {\n provide: nextActionsToken,\n useValue: nextActions,\n },\n ...(nextActions as ValueProvider[]),\n ...(flowUpdateNextActions as ValueProvider[]),\n ],\n})\nexport class CoreLibraryModule {}\n","/*\n * Public API Surface of core-library\n */\n\nexport * from './lib/core-library.service';\nexport * from './lib/core-library.module';\nexport * from './lib/core/legal/legal.component.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SecureApiClient","i1.SettingsService","i2.CountryService","i3.SecureApiClient","i2.SecureApiClient","i1.UrlService","i2.SettingsService","i3.CountryService","i1.UnescapeHtmlPipe","i1.CreditCardService","i1.XpsApiService","i4.NextActionService","i5.XpsResponseErrorsMappingService","i6.EncryptCreditCardService","i2.DeviceFingerPrintService","i3.XpsApiService","i4.XpsResponseErrorsMappingService","i5.EncryptCreditCardService","i2.NextActionService","i3.SettingsService","i1.SyncService","i2.CreditCardMinLengthValidator","sendErrMessage","i1.ControlConfigService","i1.SummaryFinanceDetailsAdapterService","i1.SessionService","i2.SummaryFinanceDetailsAdapterService","i3.StatusFinanceDetailsAdapterService","i3.XpsResponseErrorsMappingService","map","i2","i1.ElkLoggerService","i1.NchanWebSocketService","i2.CentrifugoWebSocketService","i1.WebSocketFactory","filter","i1.StatusRequestService","i2.CheckStatusService","i3.WebsocketStatusService","i2.ListenStatusService","i3.SavedPaymentAccountChangesService","i5.CheckStatusService","i2.StatusRequestService","i3.FinanceDetailsService","i4.ListenStatusService","i5.NextActionService","i6.SavePaymentMethodStatusService","i1.NotifyDfpStatusService","i1.StatusThreeDsService","i2.NotifyDfpStatusService","i3.WebSocketFactory","i4.DfpCollectService","i5.ReinsuranceCheckService","i1.ThreeDs20Service","i1.InitializeService","i2.SubmitService","i3.SyncService","i4.FormService","i5.StatusService","i6.FinanceDetailsService","i7.CreditCardStateService","i8.NextActionService","i9.ControlConfigService","i10.ThreeDsService","i11.FormMessagesService","i2.RefundPolicyService","i3.SecureConnectionService","i4.DisclaimerService","i1.SavedMethodsService","i3.PaymentMethodsService","i4.SavedMethodsService","i5.UserBalanceService","i6.PaymentConfigService","i7.PaymentService","i8.DeviceFingerPrintService","i9.FinanceDetailsService","i10.LegalService","i11.StatusService","i12.NextActionService","i13.CreditCardService","i14.CreditCardStateService","i15.FormMessagesService","i16.EditSavedMethodsService","i1"],"mappings":";;;;;;;;;;;AAAO,MAAM,iBAAiB,GAAgD;IAC5E,GAAG,EAAE,MAAK;QACR,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,QAAA,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAChD;CACF;;ACLK,MAAO,QAAS,SAAQ,KAAK,CAAA;AACjC,IAAA,WAAA,CAAmB,OAAe,EAAA;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;KAChB;AACF;;ACFK,MAAO,uBAAwB,SAAQ,QAAQ,CAAA;AACnD,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,6DAA6D,CAAC,CAAC;KACtE;AACF;;ACHM,MAAM,WAAW,GAAmC,IAAI,cAAc,CAC3E,QAAQ,CACT;;ACLM,MAAM,aAAa,GAAG,4CAA4C,CAAC;AACnE,MAAM,aAAa,GACxB,oDAAoD;;MCSzC,eAAe,CAAA;IAG1B,WACmB,CAAA,UAAsB,EAEtB,MAAsB,EAAA;QAFtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAEtB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QALjC,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;KAM1B;AAEG,IAAA,cAAc,CAAC,aAAsB,EAAA;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACpC;IAEM,GAAG,CAAI,GAAW,EAAE,OAAwB,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,CAAG,EAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA,CAAE,EAAE,OAAO,CAAC,CAAC;KACjE;AAEM,IAAA,IAAI,CACT,GAAW,EACX,IAAoB,EACpB,OAAwB,EAAA;AAExB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAI,GAAG,IAAI,CAAC,OAAO,CAAA,EAAG,GAAG,CAAE,CAAA,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACxE;AAEM,IAAA,KAAK,CACV,GAAW,EACX,IAAoB,EACpB,OAAwB,EAAA;AAExB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAI,GAAG,IAAI,CAAC,OAAO,CAAA,EAAG,GAAG,CAAE,CAAA,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACzE;AAEM,IAAA,GAAG,CACR,GAAW,EACX,IAAoB,EACpB,OAAwB,EAAA;AAExB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,GAAG,IAAI,CAAC,OAAO,CAAA,EAAG,GAAG,CAAE,CAAA,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACvE;IAEM,MAAM,CAAI,GAAW,EAAE,OAAwB,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAI,CAAG,EAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA,CAAE,EAAE,OAAO,CAAC,CAAC;KACpE;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,IAAI,iBAAiB,GAAkB,IAAI,CAAC;QAE5C,IAAI;YACF,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACnE,SAAA;AAAC,QAAA,OAAO,CAAU,EAAE;AACnB,YAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;AAC/C,SAAA;AAED,QAAA,IAAI,iBAAiB,EAAE;AACrB,YAAA,OAAO,iBAAiB,CAAC;AAC1B,SAAA;QAED,OAAO,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,aAAa,CAAC;KAC3D;;AA3DU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,4CAKhB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AALV,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAMI,MAAM;2BAAC,WAAW,CAAA;;;MCAV,eAAe,CAAA;AAC1B,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,IAAI,uBAAuB,EAAE,CAAC;AACrC,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;KAC9B;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,IAAI,uBAAuB,EAAE,CAAC;AACrC,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAC/B;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,IAAI,uBAAuB,EAAE,CAAC;AACrC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAE;YACvC,OAAO;AACL,gBAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;AACzB,gBAAA,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,oBAAoB;aACzD,CAAC;AACH,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAChC;AAED,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,IAAI,uBAAuB,EAAE,CAAC;AACrC,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;KAC3B;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,IAAI,uBAAuB,EAAE,CAAC;AACrC,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;KACvB;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;KACxB;AAUD,IAAA,WAAA,CAAoC,SAA0B,EAAA;QAA1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;QARvD,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QAIrB,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;QAEZ,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;KAEsC;IAE3D,MAAM,IAAI,CAAC,aAAgC,EAAA;AAChD,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACxB,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3C,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC;QAE3C,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC3B;IAEM,aAAa,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAEO,MAAM,WAAW,CAAC,KAAa,EAAA;AACrC,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAE3D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AAEpD,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,cAAc,CAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAgB,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CACvD,CAAC;KACH;;4GA/FU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCTY,cAAc,CAAA;AAGzB,IAAA,WAAA,CAAoC,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAF5D,IAAkB,CAAA,kBAAA,GAAkB,IAAI,CAAC;KAEuB;AAEjE,IAAA,UAAU,CAAC,OAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;KACnC;IAEM,UAAU,GAAA;QACf,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1D;IAEO,eAAe,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAChD;;2GAfU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACHK,MAAO,aAAc,SAAQ,QAAQ,CAAA;AACzC,IAAA,WAAA,CAAmB,OAAgB,EAAA;AACjC,QAAA,KAAK,CAAC,iBAAiB,IAAI,OAAO,GAAG,CAAM,GAAA,EAAA,OAAO,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;KAChE;AACF;;ACND,IAAY,aAGX,CAAA;AAHD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACV,CAAC,EAHW,aAAa,KAAb,aAAa,GAGxB,EAAA,CAAA,CAAA;;MCEY,sBAAsB,CAAA;AAMjC,IAAA,WAAA,CAAmB,cAAiC,EAAA;QAClD,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KACjD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAC9B,CAAC;QACF,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,KACvC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAC9B,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KACjD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAC9B,CAAC;QACF,IAAI,CAAC,aAAa,GAAG;AACnB,YAAA,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,KAAK;AAC1C,YAAA,OAAO,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO;SAC/C,CAAC;KACH;AAEO,IAAA,gBAAgB,CAAC,MAAwB,EAAA;QAC/C,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,MAAM,CAAC,GAAG;YACtB,SAAS,EAAE,MAAM,CAAC,UAAU;AAC5B,YAAA,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,aAAa,CAAC,IAAI;YACtD,kBAAkB,EAAE,MAAM,CAAC,oBAAoB;YAC/C,QAAQ,EAAE,MAAM,CAAC,gBAAgB;SAClC,CAAC;KACH;AACF;;AC/BM,MAAM,kCAAkC,GAC7C,IAAI,cAAc,CAAgC,wBAAwB,CAAC,CAAC;AAEvE,MAAM,qCAAqC,GAAkB;AAClE,IAAA,OAAO,EAAE,kCAAkC;AAC3C,IAAA,QAAQ,EAAE,CAAC,GAAG,IAAwB,KACpC,IAAI,sBAAsB,CAAC,GAAG,IAAI,CAAC;CACtC;;MCIY,qBAAqB,CAAA;AAKhC,IAAA,WAAA,CAEmB,eAA8C,EAC9C,eAAgC,EAChC,cAA8B,EAC9B,SAA0B,EAAA;QAH1B,IAAe,CAAA,eAAA,GAAf,eAAe,CAA+B;QAC9C,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;QAT5B,IAAQ,CAAA,QAAA,GAAG,0BAA0B,CAAC;AAEtC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAA2C,CAAC;KAQxE;IAEG,MAAM,OAAO,CAAC,gBAA0B,EAAA;QAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,OAAO,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClE,SAAA;QAED,OAAO,QAAQ,CAAC,QAAQ,CAAC;KAC1B;AAEM,IAAA,MAAM,eAAe,GAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAC,QAAQ,CAAC;KAC1B;IAEO,MAAM,OAAO,CACnB,gBAA0B,EAAA;AAE1B,QAAA,MAAM,aAAa,GAAgC;AACjD,YAAA,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;AACxC,YAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AACzC,YAAA,yBAAyB,EAAE,gBAAgB;kBACxC,GAAA;AACD,kBAAkB,GAAA;SACrB,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,QAAQ,EACR,aAAa,CACX,IAAI,CAAC,SAAS;AACX,iBAAA,IAAI,CACH,IAAI,CAAC,QAAQ,EACb,IAAI,eAAe,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,EACzC;gBACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAC5B,cAAc,EACd,kDAAkD,CACnD;AACD,gBAAA,YAAY,EAAE,MAAM;aACrB,CACF;iBACA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAClE,CACJ,CAAC,KAAK,CAAC,CAAC,KAAY,KAAI;AACvB,gBAAA,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aACxC,CAAC,CACH,CAAC;AACH,SAAA;;QAGD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KACjC;AAEO,IAAA,iCAAiC,CACvC,OAAwB,EAAA;QAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,CAAC;AACnE,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAEvE,OAAO,aAAa,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;KAC7C;AAED,IAAA,IAAY,oBAAoB,GAAA;QAC9B,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,CAAC;KAC5D;;AAhFU,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAMtB,kCAAkC,EAAA,EAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AANjC,qBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAOI,MAAM;2BAAC,kCAAkC,CAAA;;;MCtBjC,oBAAoB,CAAA;AAG/B,IAAA,WAAA,CAAmB,YAAqC,EAAA;QACtD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;KAC5E;AAEO,IAAA,cAAc,CAAC,MAAsB,EAAA;QAC3C,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,YAAY;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,cAAc;YACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,cAAc,EAAE,MAAM,CAAC,gBAAgB;YACvC,QAAQ,EAAE,MAAM,CAAC,gBAAgB;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;KACH;AACF;;ACpBM,MAAM,gCAAgC,GAC3C,IAAI,cAAc,CAA8B,sBAAsB,CAAC,CAAC;AAEnE,MAAM,mCAAmC,GAAkB;AAChE,IAAA,OAAO,EAAE,gCAAgC;AACzC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAAwB,KAAK,IAAI,oBAAoB,CAAC,GAAG,IAAI,CAAC;CAC7E;;MCGY,mBAAmB,CAAA;AAK9B,IAAA,WAAA,CAEmB,eAA4C,EAC5C,eAAgC,EAChC,SAA0B,EAAA;QAF1B,IAAe,CAAA,eAAA,GAAf,eAAe,CAA6B;QAC5C,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;QAR5B,IAAQ,CAAA,QAAA,GAAG,cAAc,CAAC;AAE1B,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAyC,CAAC;KAOtE;AAEG,IAAA,MAAM,OAAO,CAAC,cAAc,GAAG,KAAK,EAAA;AACzC,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACpB,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAC,IAAI,CAAC;KACtB;AAEO,IAAA,MAAM,OAAO,GAAA;AACnB,QAAA,MAAM,aAAa,GAA8B;AAC/C,YAAA,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;SACzC,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,QAAQ,EACR,aAAa,CACX,IAAI,CAAC,SAAS;AACX,iBAAA,IAAI,CACH,IAAI,CAAC,QAAQ,EACb,IAAI,eAAe,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,EACzC;gBACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAC5B,cAAc,EACd,kDAAkD,CACnD;AACD,gBAAA,YAAY,EAAE,MAAM;aACrB,CACF;iBACA,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC3D,CAAC,KAAK,CAAC,CAAC,KAAY,KAAI;AACvB,gBAAA,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aACxC,CAAC,CACH,CAAC;AACH,SAAA;;QAGD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KACjC;;AApDU,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAMpB,gCAAgC,EAAA,EAAA,EAAA,KAAA,EAAAF,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAN/B,mBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAOI,MAAM;2BAAC,gCAAgC,CAAA;;;MCtB/B,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAAmB,WAA2B,EAAA;QAC5C,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,sBAAsB,IAAI,KAAK,CAAC;AACvE,QAAA,IAAI,CAAC,4BAA4B;AAC/B,YAAA,WAAW,CAAC,gCAAgC,IAAI,KAAK,CAAC;KACzD;AACF;;ACFM,MAAM,+BAA+B,GAC1C,IAAI,cAAc,CAA6B,qBAAqB,CAAC,CAAC;AAEjE,MAAM,kCAAkC,GAAkB;AAC/D,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAAwB,KAAK,IAAI,mBAAmB,CAAC,GAAG,IAAI,CAAC;CAC5E;;MCGY,kBAAkB,CAAA;AAK7B,IAAA,WAAA,CAEmB,eAA2C,EAC3C,eAAgC,EAChC,SAA0B,EAAA;QAF1B,IAAe,CAAA,eAAA,GAAf,eAAe,CAA4B;QAC3C,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;QAR5B,IAAQ,CAAA,QAAA,GAAG,qBAAqB,CAAC;AAEjC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAwC,CAAC;KAOrE;AAEG,IAAA,MAAM,cAAc,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACvB;IAEM,mBAAmB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;KAC/C;AAEO,IAAA,MAAM,OAAO,GAAA;AACnB,QAAA,MAAM,aAAa,GAA6B;AAC9C,YAAA,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;SACzC,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,QAAQ,EACR,aAAa,CACX,IAAI,CAAC,SAAS;AACX,iBAAA,IAAI,CACH,IAAI,CAAC,QAAQ,EACb,IAAI,eAAe,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,EACzC;gBACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAC5B,cAAc,EACd,kDAAkD,CACnD;AACD,gBAAA,YAAY,EAAE,MAAM;aACrB,CACF;iBACA,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC3D,CAAC,KAAK,CAAC,CAAC,KAAY,KAAI;AACvB,gBAAA,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aACxC,CAAC,CACH,CAAC;AACH,SAAA;;QAGD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KACjC;;AAnDU,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAMnB,+BAA+B,EAAA,EAAA,EAAA,KAAA,EAAAH,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAN9B,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAOI,MAAM;2BAAC,+BAA+B,CAAA;;;MClB9B,UAAU,CAAA;AACd,IAAA,eAAe,CAAC,GAAW,EAAE,MAAA,GAAuB,EAAE,EAAA;QAC3D,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACjD,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC7B;AAEM,IAAA,eAAe,CAAC,GAAW,EAAA;QAChC,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,YAAY,GAAiB,EAAE,CAAC;QAEtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,YAAY,EAAE;AACjD,YAAA,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC3B,SAAA;AAED,QAAA,OAAO,YAAY,CAAC;KACrB;;uGA3BU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCIY,oBAAoB,CAAA;IAC/B,WACmB,CAAA,UAAsB,EACtB,eAAgC,EAAA;QADhC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KAC/C;AAEG,IAAA,MAAM,CAAC,MAAqB,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC1D,SAAA;QAED,OAAO;AACL,YAAA,GAAG,MAAM;AACT,YAAA,SAAS,EAAE,IAAI,CAAC,eAAe,CAC7B,MAAM,CAAC,SAAS,EAChB,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAC3B;SACF,CAAC;KACH;IAEO,eAAe,CACrB,SAAiB,EACjB,iBAA0B,EAAA;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,EAAE;AAC7D,YAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;AACjC,YAAA,oBAAoB,EAAE,iBAAiB;kBACpC,GAAA;AACD,kBAAkB,GAAA;AACrB,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,WAAW,CAAC;KACpB;;iHA/BU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACRD,IAAY,UAOX,CAAA;AAPD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EAPW,UAAU,KAAV,UAAU,GAOrB,EAAA,CAAA,CAAA;;ACPD,IAAY,UA6DX,CAAA;AA7DD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,4BAAA,CAAA,GAAA,4BAAyD,CAAA;AACzD,IAAA,UAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACvC,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,sBAA2C,CAAA;AAC3C,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC1B,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjC,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;AACpB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;AACpB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,mBAAqC,CAAA;AACrC,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,iBAAiC,CAAA;AACjC,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,QAAgB,CAAA;AAChB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,QAAgB,CAAA;AAChB,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,cAA2B,CAAA;AAC3B,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,cAA2B,CAAA;AAC3B,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAC3C,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC,CAAA;AAChC,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC,CAAA;AAChC,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,eAA8B,CAAA;AAC9B,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC1B,IAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,UAAA,CAAA,2BAAA,CAAA,GAAA,2BAAuD,CAAA;AACvD,IAAA,UAAA,CAAA,2BAAA,CAAA,GAAA,2BAAuD,CAAA;AACvD,IAAA,UAAA,CAAA,2BAAA,CAAA,GAAA,2BAAuD,CAAA;AACvD,IAAA,UAAA,CAAA,8BAAA,CAAA,GAAA,8BAA6D,CAAA;AAC7D,IAAA,UAAA,CAAA,8BAAA,CAAA,GAAA,8BAA6D,CAAA;AAC7D,IAAA,UAAA,CAAA,kCAAA,CAAA,GAAA,kCAAqE,CAAA;AACrE,IAAA,UAAA,CAAA,2BAAA,CAAA,GAAA,2BAAuD,CAAA;AACvD,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,UAAA,CAAA,wBAAA,CAAA,GAAA,0BAAmD,CAAA;AACnD,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC,CAAA;AAChC,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC1B,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,SAAkB,CAAA;AAClB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,mBAAA,CAAA,GAAA,uBAA2C,CAAA;AAC7C,CAAC,EA7DW,UAAU,KAAV,UAAU,GA6DrB,EAAA,CAAA,CAAA;;MCvDY,cAAc,CAAA;IAsBzB,WACE,CAAA,UAAuB,EACP,cAAA,GAAyB,CAAC,EAAA;QAA1B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAY;;AAG1C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAC5C,CAAC,GAAW,KAAY,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAC7C,CAAC;QAEF,IAAI,UAAU,CAAC,aAAa,EAAE;YAC5B,IAAI,CAAC,aAAa,GAAG;AACnB,gBAAA,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,KAAK;aACpC,CAAC;AACH,SAAA;AAED,QAAA,IAAI,CAAC,cAAc;AACjB,YAAA,UAAU,CAAC,cAAc,KAAK,UAAU,CAAC,OAAO;AAChD,iBAAC,UAAU,CAAC,cAAc,KAAK,UAAU,CAAC,QAAQ;AAChD,oBAAA,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AAElC,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAElC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAChC,CAAC,KAAY,KAAK,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,UAAU,CACvD,EAAE,KAAK,CAAC;QAET,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC/B,CAAC,KAAY,KAAK,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,SAAS,CACtD,EAAE,KAAK,CAAC;QAET,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;AAEhD,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;AAC1C,QAAA,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;AAChD,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;KACrC;AACF;;MCjEY,kBAAkB,CAAA;AAG7B,IAAA,WAAA,CAAmB,QAAqB,EAAA;QAFxB,IAAW,CAAA,WAAA,GAAuB,IAAI,CAAC;QAGrD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KACtD;AAEO,IAAA,kBAAkB,CAAC,QAAqB,EAAA;QAC9C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,OAAO;AACL,YAAA,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG;AACjC,YAAA,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ;YACnC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CACpC,CAAC,GAAW,KAAa,QAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAC5D;YACD,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,GAAG,EAAE,QAAQ,CAAC,GAAG;AACjB,YAAA,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;YACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC3B,YAAA,oBAAoB,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe;YACtD,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;YAClD,QAAQ,EAAE,QAAQ,CAAC,SAAS;YAC5B,YAAY,EAAE,QAAQ,CAAC,YAAY;AACnC,YAAA,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,wBAAwB;YACzD,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;AAC/B,YAAA,cAAc,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK;YACvC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,UAAU,EAAG,QAAQ,CAAC,MAAoB,EAAE,UAAU,EAAE,SAAS,IAAI,IAAI;AACzE,YAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI;SACxD,CAAC;KACH;AACF;;AChDM,MAAM,gBAAgB,GAAG,CAAC,KAAc,KAA6B;IAC1E,OAAO,KAAK,YAAY,cAAc,CAAC;AACzC,CAAC;;ACJD,IAAY,cAGX,CAAA;AAHD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;MCIY,gBAAgB,CAAA;AAI3B,IAAA,WAAA,CAAmB,MAAkB,EAAA;QAH9B,IAAI,CAAA,IAAA,GAAyB,aAAa,CAAC;QAIhD,IAAI,CAAC,IAAI,GAAG;YACV,MAAM;SACP,CAAC;KACH;AACF;;ACLM,MAAM,8BAA8B,GACzC,IAAI,cAAc,CAA4B,oBAAoB,CAAC,CAAC;AAE/D,MAAM,iCAAiC,GAAkB;AAC9D,IAAA,OAAO,EAAE,8BAA8B;AACvC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAAwB,KAAK,IAAI,kBAAkB,CAAC,GAAG,IAAI,CAAC;CAC3E;;ACjBM,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAC5C,MAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,MAAM,YAAY,GAAa;IACpC,sBAAsB;IACtB,gCAAgC;IAChC,uBAAuB;CACxB,CAAC;AAEK,MAAM,YAAY,GAAa;IACpC,gCAAgC;IAChC,sBAAsB;IACtB,yBAAyB;CAC1B;;MCEY,aAAa,CAAA;AAGxB,IAAA,WAAA,CAEmB,MAAsB,EACtB,eAAgC,EAChC,eAAgC,EAChC,cAA8B,EAAA;QAH9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QACtB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAPhC,IAAqB,CAAA,qBAAA,GAAG,eAAe,CAAC;KAQrD;IAEG,MAAM,oBAAoB,CAC/B,UAAsB,EAAA;AAEtB,QAAA,MAAM,GAAG,GACP,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE;AACzB,YAAA,UAAU,CAAC,WAAkC;AAC9C,YAAA,EAAE,CAAC;AACL,QAAA,MAAM,sBAAsB,GAC1B,UAAU,CAAC,sBAAsB;AAChC,YAAA,UAAU,CAAC,0BAAiD;AAC7D,YAAA,EAAE,CAAC;AAEL,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,sBAAsB,CAAC;YAC/D,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAC9B,YAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AACzC,YAAA,GAAG,UAAU;SACd,CAAC;QAEF,OAAO,aAAa,CAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,IAAI,CAAC,qBAAqB,EAC1B,IAAI,eAAe,CAAC,EAAE,GAAG,aAAa,EAErC,CAAC,EACF;YACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAC5B,cAAc,EACd,kDAAkD,CACnD;AACD,YAAA,YAAY,EAAE,MAAM;AACrB,SAAA,CACF,CACF,CAAC;KACH;IAEO,0BAA0B,CAChC,eAAwB,EACxB,sBAA4C,EAAA;QAI5C,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,UAAU,CAAC,sBAAsB,GAAG,sBAAsB;AACxD,cAAE,sBAAsB;AACxB,yCAAmB;QAErB,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,OAAO,UAAU,CAAC;AACnB,SAAA;;QAGD,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE;AAClD,YAAA,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;gBACvC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;AACvD,gBAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ;AAC/C,gBAAA,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;AAChD,gBAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW;AACnD,gBAAA,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;AACjD,gBAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE;AACzC,gBAAA,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO;AAC7C,gBAAA,gBAAgB,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;gBACvC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE;AACrD,gBAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa;AAC3D,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;IAEO,oBAAoB,GAAA;QAC1B,MAAM,UAAU,GAAqB,EAAE,CAAC;AAExC,QAAA,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;AAC1E,QAAA,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;AAExE,QAAA,OAAO,UAAU,CAAC;KACnB;;AAzFU,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBAId,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAN,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAJV,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAKI,MAAM;2BAAC,WAAW,CAAA;;;MCbV,gBAAgB,CAAA;AAS3B,IAAA,WAAA,CAAmB,cAA8B,EAAA;QAR1C,IAAI,CAAA,IAAA,GAAyB,aAAa,CAAC;AAC3C,QAAA,IAAA,CAAA,IAAI,GAAyB;AAClC,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,KAAK,EAAE,EAAE;SACV,CAAC;QAGA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAC7C,CAAC,KAAK,KAAK,KAAK,EAAE,SAAS,KAAoB,GAAA,uBAChD,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC;KAC1C;AACF;;ACjBM,MAAM,4BAA4B,GACvC,IAAI,cAAc,CAAqB,kBAAkB,CAAC,CAAC;AAEtD,MAAM,+BAA+B,GAAkB;AAC5D,IAAA,OAAO,EAAE,4BAA4B;AACrC,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE,CAAC,GAAG,IAAuB,KAAK,IAAI,gBAAgB,CAAC,GAAG,IAAI,CAAC;AACtE,QAAA,UAAU,EAAE,CAAC,QAAwB,KAAa;AAChD,YAAA,QACE,QAAQ,CAAC,cAAc,KAAK,UAAU,CAAC,KAAK;AAC5C,gBAAA,QAAQ,CAAC,cAAc,KAAK,UAAU,CAAC,IAAI,EAC3C;SACH;AACF,KAAA;CACF;;MCfY,iBAAiB,CAAA;AAI5B,IAAA,WAAA,CAAmB,cAA8B,EAAA;QAH1C,IAAI,CAAA,IAAA,GAA0B,cAAc,CAAC;QAIlD,IAAI,CAAC,IAAI,GAAG;AACV,YAAA,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;YACpE,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK;YAC1D,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK;YACpD,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK;YACpD,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK;YAC5D,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK;YAC9D,gBAAgB,EAAE,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK;SACzE,CAAC;KACH;AACF;;ACdM,MAAM,6BAA6B,GACxC,IAAI,cAAc,CAAqB,mBAAmB,CAAC,CAAC;AAEvD,MAAM,gCAAgC,GAAkB;AAC7D,IAAA,OAAO,EAAE,6BAA6B;AACtC,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE,CAAC,GAAG,IAAuB,KAAK,IAAI,iBAAiB,CAAC,GAAG,IAAI,CAAC;AACvE,QAAA,UAAU,EAAE,CAAC,QAAwB,KAAa;AAChD,YAAA,OAAO,QAAQ,CAAC,cAAc,KAAK,UAAU,CAAC,MAAM,CAAC;SACtD;AACF,KAAA;CACF;;ACjBK,MAAO,aAAc,SAAQ,QAAQ,CAAA;IAGzC,WAAmB,CAAA,OAAe,EAAE,IAAY,EAAA;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC;AAEf,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;AACF;;ACVD,IAAY,YAIX,CAAA;AAJD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAJW,YAAY,KAAZ,YAAY,GAIvB,EAAA,CAAA,CAAA;;ACJD,IAAY,UASX,CAAA;AATD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EATW,UAAU,KAAV,UAAU,GASrB,EAAA,CAAA,CAAA;;MCHY,cAAc,CAAA;AAGzB,IAAA,WAAA,CAAmB,UAIlB,EAAA;AACC,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YAC1B,IAAI,CAAC,KAAK,GAAG;gBACX,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC1C,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO;aACtC,CAAC;AACH,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACtB,MAAM,IAAI,aAAa,CACrB,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,EACzB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAClC,CAAC;AACH,SAAA;QAED,IAAI,CAAC,MAAM,GAAG;AACZ,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS;AACnD,YAAA,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK;AACzC,YAAA,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB;AAC9D,YAAA,oBAAoB,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB;AACvE,YAAA,mBAAmB,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB;AACrE,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;YACxC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;kBAC1C,IAAI,CAAC,GAAG,CACN,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CACrE;AACH,kBAAE,IAAI;AACR,YAAA,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY;AAC5C,YAAA,iBAAiB,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY;kBAC7C,YAAY,CAAC,QAAQ;AACvB,kBAAE,UAAU,CAAC,MAAM,CAAC,KAAK;AAC3B,YAAA,qBAAqB,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG;AACvD,YAAA,eAAe,EAAE;AACf,gBAAA,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;AACvC,gBAAA,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc;AACpD,gBAAA,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe;AACtD,gBAAA,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,aAAa;AAC9C,aAAA;YACD,oBAAoB,EAAE,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC;AACrE,YAAA,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK;AAC9B,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW;AAC1C,YAAA,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY;AAC5C,YAAA,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;AAC3C,YAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvC,YAAA,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO;AAC7C,YAAA,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG;YACrC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC;AACvD,YAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW;AACzC,YAAA,iBAAiB,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB;AACnE,YAAA,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;SACpC,CAAC;QAEF,IAAI,UAAU,CAAC,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1E,SAAA;QAED,IACE,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,CAAC,IAAI;YAC3C,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,CAAC,UAAU,EACjD;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9B,SAAA;QAED,IACE,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,CAAC,QAAQ;AAC/C,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EACxB;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B,SAAA;KACF;AAEO,IAAA,mBAAmB,CAAC,IAAyB,EAAA;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC;QAClD,IAAI,KAAK,KAAK,WAAW;AAAE,YAAA,OAAO,SAAS,CAAC;AAE5C,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,gBAAgB,CAAC,MAAiB,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE;YACpC,OAAO;AACR,SAAA;AAED,QAAA,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtE,OAAO;YACL,MAAM;YACN,QAAQ;SACT,CAAC;KACH;AAEO,IAAA,uBAAuB,CAC7B,MAAiB,EAAA;AAEjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;YAC/C,OAAO;AACL,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,SAAS,EAAE,KAAK;aACjB,CAAC;AACH,SAAA;QAED,OAAO;AACL,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,EAAE;AAChD,YAAA,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,EAAE;AACpD,YAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,EAAE;AAClD,YAAA,MAAM,EAAE,MAAM,CAAC,+BAA+B,IAAI,EAAE;AACpD,YAAA,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,8BAA8B;SACtD,CAAC;KACH;AACF;;MCnHY,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CACE,cAAuC,EACvC,uBAAuB,GAAG,KAAK,EAC/B,uBAAiD,EAAA;QAN5C,IAAI,CAAA,IAAA,GAA4B,gBAAgB,CAAC;AAQtD,QAAA,IAAI,MAAc,CAAC;QAEnB,IAAI,cAAc,YAAY,cAAc,EAAE;AAC5C,YAAA,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;AAChC,SAAA;AAAM,aAAA;YACL,MAAM,GAAG,cAAc,CAAC;AACzB,SAAA;QACD,IAAI,CAAC,IAAI,GAAG;YACV,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,uBAAuB;YACvB,uBAAuB;SACxB,CAAC;KACH;AACF;;AC7BM,MAAM,+BAA+B,GAC1C,IAAI,cAAc,CAAqB,qBAAqB,CAAC,CAAC;AAEzD,MAAM,kCAAkC,GAAkB;AAC/D,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE,CAAC,GAAG,IAAuB,KAAK,IAAI,mBAAmB,CAAC,GAAG,IAAI,CAAC;AACzE,QAAA,UAAU,EAAE,MAAM,KAAK;AACxB,KAAA;CACF;;MCXY,cAAc,CAAA;AAIzB,IAAA,WAAA,CAAmB,cAA8B,EAAA;QAH1C,IAAI,CAAA,IAAA,GAAuB,UAAU,CAAC;QAI3C,IAAI,CAAC,IAAI,GAAG;YACV,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,KAAK,EAAE,cAAc,CAAC,OAAO;YAC7B,SAAS,EAAE,cAAc,CAAC,UAAU;AACpC,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;SAC3C,CAAC;KACH;AAEO,IAAA,WAAW,CACjB,cAA8B,EAAA;QAE9B,OAAO;AACL,YAAA,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM;AACtD,YAAA,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI;SAC9C,CAAC;KACH;AACF;;ACnBM,MAAM,0BAA0B,GACrC,IAAI,cAAc,CAAqB,gBAAgB,CAAC,CAAC;AAEpD,MAAM,6BAA6B,GAAkB;AAC1D,IAAA,OAAO,EAAE,0BAA0B;AACnC,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE,CAAC,GAAG,IAAuB,KAAK,IAAI,cAAc,CAAC,GAAG,IAAI,CAAC;AACpE,QAAA,UAAU,EAAE,CAAC,QAAwB,KAAa;AAChD,YAAA,QACE,QAAQ,CAAC,cAAc,KAAK,UAAU,CAAC,OAAO;AAC9C,iBAAC,QAAQ,CAAC,cAAc,KAAK,UAAU,CAAC,QAAQ;oBAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EACxC;SACH;AACF,KAAA;CACF;;AChBM,MAAM,4BAA4B,GACvC,IAAI,cAAc,CAAqB,kBAAkB,CAAC,CAAC;AAEtD,MAAM,+BAA+B,GAAkB;AAC5D,IAAA,OAAO,EAAE,4BAA4B;AACrC,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE,CAAC,GAAG,IAAuB,KAAK,IAAI,gBAAgB,CAAC,GAAG,IAAI,CAAC;AACtE,QAAA,UAAU,EAAE,CAAC,QAAwB,KAAa;YAChD,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACzC;AACF,KAAA;CACF;;MCdY,aAAa,CAAA;AAIxB,IAAA,WAAA,CAAmB,YAA6B,EAAA;QAHzC,IAAI,CAAA,IAAA,GAAsB,KAAK,CAAC;AAIrC,QAAA,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;KAC1B;AACF;;ACLM,MAAM,yBAAyB,GACpC,IAAI,cAAc,CAAqB,eAAe,CAAC,CAAC;AAEnD,MAAM,4BAA4B,GAAkB;AACzD,IAAA,OAAO,EAAE,yBAAyB;AAClC,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE,CAAC,GAAG,IAAuB,KAAK,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC;AACnE,QAAA,UAAU,EAAE,MAAM,KAAK;AACxB,KAAA;CACF;;ACJM,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAS,QAAQ,CAAC,CAAC;AAE9D,MAAM,WAAW,GAAqB;IAC3C,+BAA+B;IAC/B,gCAAgC;IAChC,6BAA6B;CAC9B,CAAC;AAEK,MAAM,qBAAqB,GAAqB;IACrD,kCAAkC;IAClC,+BAA+B;IAC/B,4BAA4B;CAC7B;;MCXY,iBAAiB,CAAA;AAK5B,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC/C;IAED,WAEmB,CAAA,gBAAkC,EAClC,QAAkB,EAAA;QADlB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAXpB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAc,CAAC;QAE/C,IAAe,CAAA,eAAA,GAAyB,EAAE,CAAC;QAW1D,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAEM,IAAA,aAAa,CAAC,cAA8B,EAAA;AACjD,QAAA,IAAI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;YACjC,IAAI,CAAC,eAAe,CAAC,IAAI,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAE9D,QAAA,IAAI,iBAAiB,EAAE;AACrB,YAAA,OAAO,iBAAiB,CAAC,cAAc,CAAe,CAAC;AACxD,SAAA;AAED,QAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;KAC9C;AAEM,IAAA,eAAe,CAAC,MAAkB,EAAA;AACvC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACtC;IAEO,mBAAmB,GAAA;QACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,UAAyB,KAAI;AAC1D,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAqB,UAAU,CAAC,OAAO,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,cAAc,CACpB,cAA8B,EAAA;QAE9B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAC1C,CAAC,UAA8B,KAAI;AACjC,YAAA,OAAO,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAC/C,SAAC,CACF,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;AACR,SAAA;QACD,OAAO,UAAU,CAAC,OAAO,CAAC;KAC3B;;AA3DU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAUlB,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAVf,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAWI,MAAM;2BAAC,gBAAgB,CAAA;;;ACtB5B;AACO,MAAM,4BAA4B,GAAG;IAC1C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACnC;;ACAM,MAAM,qBAAqB,GAAG;AACnC,IAAA;AACE,QAAA,UAAU,EAAE,IAAI,GAAG,CAAC,4BAA4B,CAAC;QACjD,SAAS,EAAE,UAAU,CAAC,UAAU;AACjC,KAAA;CACF;;MCHY,gBAAgB,CAAA;AACpB,IAAA,SAAS,CAAC,IAAa,EAAA;QAC5B,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,MAAM,eAAe,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CACrD,IAAI,EACJ,WAAW,CACZ,CAAC;AACF,YAAA,OAAO,eAAe,EAAE,eAAe,EAAE,WAAW,IAAI,EAAE,CAAC;AAC5D,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;6GAfU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2GAAhB,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACrB,iBAAA,CAAA;;;MCGY,+BAA+B,CAAA;AAC1C,IAAA,WAAA,CAAoC,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;KAAI;AAEnE,IAAA,SAAS,CAAC,QAAqB,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE;AAC5B,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAA;QAED,IAAI,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/D,QAAA,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAErD,OAAO;AACL,YAAA,GAAG,QAAQ;AACX,YAAA,MAAM,EAAE,YAAY;SACrB,CAAC;KACH;AAEO,IAAA,qBAAqB,CAAC,MAAkB,EAAA;AAC9C,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AAC1B,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;gBACvB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,KAC9C,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAC/B,CAAC;AAEF,gBAAA,IAAI,QAAQ,EAAE;oBACZ,OAAO;AACL,wBAAA,GAAG,KAAK;wBACR,YAAY,EAAE,QAAQ,CAAC,SAAS;qBACjC,CAAC;AACH,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,kBAAkB,CAAC,MAAkB,EAAA;AAC3C,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AAC1B,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAClB,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;YAED,OAAO;AACL,gBAAA,GAAG,KAAK;gBACR,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;aACxD,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;;4HA/CU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA/B,+BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cADlB,MAAM,EAAA,CAAA,CAAA;2FACnB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACNlC,IAAY,SAUX,CAAA;AAVD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,UAAgB,CAAA;AAChB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,WAAkB,CAAA;AAClB,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,SAAc,CAAA;AACd,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,WAAgB,CAAA;AAChB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,YAA0B,CAAA;AAC1B,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAVW,SAAS,KAAT,SAAS,GAUpB,EAAA,CAAA,CAAA;;ACPK,MAAO,WAAY,SAAQ,KAAK,CAAA;IAQpC,WAAmB,CAAA,OAAe,EAAE,IAAkB,EAAA;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;QANV,IAAI,CAAA,IAAA,GAAgB,EAAE,CAAC;AAGb,QAAA,IAAA,CAAA,SAAS,GAAc,SAAS,CAAC,WAAW,CAAC;AAK5D,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ;cACrB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;AACjC,cAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAErB,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CACzB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAC7D,CAAC;AACF,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;AACxC,SAAA;KACF;AACF;;ACtBK,MAAO,sBAAuB,SAAQ,WAAW,CAAA;IACrD,WAAmB,CAAA,OAAe,EAAE,IAAkB,EAAA;QACpD,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAEjE,QAAA,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACtB;AACF;;ACTM,MAAM,aAAa,GAAG,qBAAqB;;ACAlD,IAAY,eAiBX,CAAA;AAjBD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,GAAa,CAAA;AACb,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,GAAU,CAAA;AACV,IAAA,eAAA,CAAA,YAAA,CAAA,GAAA,GAAgB,CAAA;AAChB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,GAAa,CAAA;AACb,IAAA,eAAA,CAAA,kBAAA,CAAA,GAAA,GAAsB,CAAA;AACtB,IAAA,eAAA,CAAA,cAAA,CAAA,GAAA,GAAkB,CAAA;AAClB,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,GAAc,CAAA;AACd,IAAA,eAAA,CAAA,KAAA,CAAA,GAAA,GAAS,CAAA;AACT,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,IAAc,CAAA;AACd,IAAA,eAAA,CAAA,WAAA,CAAA,GAAA,IAAgB,CAAA;AAChB,IAAA,eAAA,CAAA,KAAA,CAAA,GAAA,IAAU,CAAA;AACV,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,IAAW,CAAA;AACX,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,IAAc,CAAA;AACd,IAAA,eAAA,CAAA,KAAA,CAAA,GAAA,IAAU,CAAA;AACV,IAAA,eAAA,CAAA,iBAAA,CAAA,GAAA,IAAsB,CAAA;AACtB,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,IAAe,CAAA;AACjB,CAAC,EAjBW,eAAe,KAAf,eAAe,GAiB1B,EAAA,CAAA,CAAA;;ACbM,MAAM,IAAI,GAAuB;IACtC,EAAE,EAAE,eAAe,CAAC,IAAI;AACxB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,WAAW,CAAC,MAAc,EAAA;AACxB,QAAA,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KAC/B;CACF;;ACTM,MAAM,UAAU,GAAuB;IAC5C,EAAE,EAAE,eAAe,CAAC,UAAU;AAC9B,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,MAAM,SAAS,GAAG,CAAC,CAAC;QACpB,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACrD,QACE,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;aACjC,aAAa,IAAI,QAAQ,IAAI,aAAa,IAAI,QAAQ,CAAC,EACxD;KACH;CACF;;AClBM,MAAM,WAAW,GAAG,yBAAyB;;ACI7C,MAAM,OAAO,GAAuB;IACzC,EAAE,EAAE,eAAe,CAAC,OAAO;AAC3B,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,OAAO,IAAI,MAAM,CACf,yGAAyG,CAC1G,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChB;AACD,IAAA,YAAY,EAAE,CAAC;CAChB;;ACbM,MAAM,eAAe,GAAuB;IACjD,EAAE,EAAE,eAAe,CAAC,gBAAgB;AACpC,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,kBAAkB;AAC5B,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/C;AACD,IAAA,YAAY,EAAE,CAAC;CAChB;;ACVM,MAAM,WAAW,GAAuB;IAC7C,EAAE,EAAE,eAAe,CAAC,YAAY;AAChC,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,MAAM,KAAK,GAAG,wCAAwC,CAAC;AACvD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3B;CACF;;ACTM,MAAM,QAAQ,GAAuB;IAC1C,EAAE,EAAE,eAAe,CAAC,QAAQ;AAC5B,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,OAAO,IAAI,MAAM,CACf,uFAAuF,CACxF,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChB;CACF;;ACXM,MAAM,GAAG,GAAuB;IACrC,EAAE,EAAE,eAAe,CAAC,GAAG;AACvB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,OAAO,IAAI,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACzD;CACF;;ACTM,MAAM,OAAO,GAAuB;IACzC,EAAE,EAAE,eAAe,CAAC,OAAO;AAC3B,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,MAAM,SAAS,GAAG,CAAC,CAAC;QACpB,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO,aAAa,KAAK,MAAM,CAAC;KACjC;CACF;;ACXM,MAAM,SAAS,GAAuB;IAC3C,EAAE,EAAE,eAAe,CAAC,SAAS;AAC7B,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,OAAO,IAAI,MAAM,CAAC,+CAA+C,CAAC,CAAC,IAAI,CACrE,MAAM,CACP,CAAC;KACH;CACF;;ACXM,MAAM,GAAG,GAAuB;IACrC,EAAE,EAAE,eAAe,CAAC,GAAG;AACvB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,OAAO,IAAI,MAAM,CACf,kXAAkX,CACnX,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChB;CACF;;ACXM,MAAM,IAAI,GAAuB;IACtC,EAAE,EAAE,eAAe,CAAC,IAAI;AACxB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,MAAM,SAAS,GAAG,CAAC,CAAC;QACpB,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACrD,QAAA,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;KACrE;CACF;;ACXM,MAAM,OAAO,GAAuB;IACzC,EAAE,EAAE,eAAe,CAAC,OAAO;AAC3B,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,MAAM,SAAS,GAAG,CAAC,CAAC;QACpB,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO,aAAa,KAAK,QAAQ,CAAC;KACnC;CACF;;ACXM,MAAM,GAAG,GAAuB;IACrC,EAAE,EAAE,eAAe,CAAC,GAAG;AACvB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,MAAM,SAAS,GAAG,CAAC,CAAC;QACpB,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACrD,QAAA,OAAO,aAAa,IAAI,MAAM,IAAI,aAAa,IAAI,MAAM,CAAC;KAC3D;CACF;;ACZM,MAAM,aAAa,GAAuB;IAC/C,EAAE,EAAE,eAAe,CAAC,eAAe;AACnC,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,IAAI,EAAE,wBAAwB;AAC9B,IAAA,WAAW,CAAC,MAAc,EAAA;AACxB,QAAA,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAChC;CACF;;ACRM,MAAM,WAAW,GAAuB;IAC7C,EAAE,EAAE,eAAe,CAAC,OAAO;AAC3B,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,IAAI,EAAE,WAAW;IACjB,WAAW,GAAA;AACT,QAAA,OAAO,KAAK,CAAC;KACd;CACF;;ACVM,MAAM,QAAQ,GAAuB;IAC1C,EAAE,EAAE,eAAe,CAAC,QAAQ;AAC5B,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,IAAI,EAAE,yBAAyB;AAC/B,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,MAAM,KAAK,GACT,yGAAyG,CAAC;AAC5G,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3B;CACF;;ACID;;;;;;;;;AASG;AACI,MAAM,mBAAmB,GAAyB;IACvD,IAAI;IACJ,OAAO;IACP,OAAO;IACP,QAAQ;IACR,GAAG;IACH,QAAQ;IACR,OAAO;IACP,SAAS;IACT,GAAG;IACH,GAAG;IACH,WAAW;IACX,eAAe;IACf,UAAU;IACV,aAAa;IACb,IAAI;IACJ,WAAW;CACZ;;AC1BM,MAAM,cAAc,GAEvB;AACF,IAAA,CAAC,eAAe,CAAC,OAAO,GAAG,WAAW;AACtC,IAAA,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI;AAC5B,IAAA,CAAC,eAAe,CAAC,UAAU,GAAG,UAAU;AACxC,IAAA,CAAC,eAAe,CAAC,OAAO,GAAG,OAAO;AAClC,IAAA,CAAC,eAAe,CAAC,gBAAgB,GAAG,eAAe;AACnD,IAAA,CAAC,eAAe,CAAC,YAAY,GAAG,WAAW;AAC3C,IAAA,CAAC,eAAe,CAAC,QAAQ,GAAG,QAAQ;AACpC,IAAA,CAAC,eAAe,CAAC,GAAG,GAAG,GAAG;AAC1B,IAAA,CAAC,eAAe,CAAC,OAAO,GAAG,OAAO;AAClC,IAAA,CAAC,eAAe,CAAC,SAAS,GAAG,SAAS;AACtC,IAAA,CAAC,eAAe,CAAC,GAAG,GAAG,GAAG;AAC1B,IAAA,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI;AAC5B,IAAA,CAAC,eAAe,CAAC,OAAO,GAAG,OAAO;AAClC,IAAA,CAAC,eAAe,CAAC,GAAG,GAAG,GAAG;AAC1B,IAAA,CAAC,eAAe,CAAC,eAAe,GAAG,aAAa;AAChD,IAAA,CAAC,eAAe,CAAC,QAAQ,GAAG,QAAQ;CACrC;;MC5BY,iBAAiB,CAAA;AACrB,IAAA,YAAY,CAAC,UAAkB,EAAA;QACpC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,QAAA,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;KACrE;AAEM,IAAA,gBAAgB,CAAC,UAAkB,EAAA;QACxC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,QAAA,OAAO,UAAU;AACd,aAAA,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACnB,aAAA,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC;KACvD;AAEM,IAAA,eAAe,CAAC,UAAkB,EAAA;QACvC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAE5C,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;YACzD,MAAM,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACzD,OAAO,eAAe,GAAG,QAAQ,CAAC,EAAE,GAAG,KAAK,CAAC;AAC/C,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,YAAY,GAAG,YAAY,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;KACxD;AAEM,IAAA,qBAAqB,CAAC,QAAyB,EAAA;AACpD,QAAA,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,OAAO,WAAW,CAAC;AACpB,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;;8GAhCU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCAY,wBAAwB,CAAA;AAWnC,IAAA,WAAA,CAAoC,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AARvD,QAAA,IAAA,CAAA,gBAAgB,GAA2B;YAC1D,iBAAiB;YACjB,SAAS;YACT,eAAe;YACf,eAAe;YACf,gBAAgB;SACjB,CAAC;AAGA,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;KAClC;AAEM,IAAA,YAAY,CAAC,SAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;KACxC;AAEM,IAAA,iBAAiB,CACtB,OAA0B,EAAA;QAE1B,IAAI,OAAO,CAAC,eAAe,EAAE;YAC3B,MAAM,QAAQ,GAAa,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACxD,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClD,SAAA;QAED,MAAM,aAAa,GAAkB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAEvE,QAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;AACzE,YAAA,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1E,SAAA;QAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAgC,KAAI;AACjE,YAAA,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,OAAY,CAAC;KACrB;AAEO,IAAA,OAAO,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE;AACnC,YAAA,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;AACtD,SAAA;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAErD,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,MAAM,IAAI,sBAAsB,CAC9B,sDAAsD,CACvD,CAAC;AACH,SAAA;AAED,QAAA,OAAO,cAAc,CAAC;KACvB;AAEO,IAAA,mBAAmB,CAAC,OAA0B,EAAA;AACpD,QAAA,MAAM,aAAa,GAAkB;YACnC,WAAW,EAAE,OAAO,CAAC,eAAyB;YAC9C,SAAS,EAAE,OAAO,CAAC,aAAuB;YAC1C,UAAU,EAAE,OAAO,CAAC,cAAwB;YAC5C,GAAG,EAAE,OAAO,CAAC,OAAiB;SAC/B,CAAC;QAEF,IAAI,OAAO,CAAC,aAAa,EAAE;AACzB,YAAA,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,aAAuB,CAAC;AACrD,SAAA;AAED,QAAA,OAAO,aAAa,CAAC;KACtB;AAEO,IAAA,cAAc,CAAC,OAA0B,EAAA;QAC/C,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAC3C,OAAO,CAAC,eAAyB,CAClC;YACD,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAClD,OAAO,CAAC,eAAyB,CAClC;YACD,SAAS,EAAE,OAAO,CAAC,aAAuB;YAC1C,UAAU,EAAE,OAAO,CAAC,cAAwB;SAC7C,CAAC;KACH;;qHAlFU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA,CAAA;2FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCerB,iBAAiB,CAAA;AAI5B,IAAA,WAAA,CAEqB,eAA0C,EAC5C,aAA4B,EAC5B,eAAgC,EAChC,cAA8B,EAC9B,iBAAoC,EACpC,+BAAgE,EAChE,wBAAkD,EAAA;QANhD,IAAe,CAAA,eAAA,GAAf,eAAe,CAA2B;QAC5C,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAA+B,CAAA,+BAAA,GAA/B,+BAA+B,CAAiC;QAChE,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;;QAVpD,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;KAW/B;IAEG,MAAM,OAAO,CAAC,MAAqB,EAAA;AACxC,QAAA,MAAM,aAAa,GAA4B;AAC7C,YAAA,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;AACxC,YAAA,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;YACnC,KAAK,EAAE,IAAI,CAAC,UAAU;AACtB,YAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;YACzC,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3B,YAAA,sBAAsB,EACpB,MAAM,CAAC,sBAAsB,KAAK,IAAI;kBACnC,GAAA;AACD,kBAAkB,GAAA;YACtB,yBAAyB,EAAE,MAAM,CAAC,iBAAiB;kBAChD,GAAA;AACD,kBAAkB,GAAA;SACrB,CAAC;QAEF,IAAI,MAAM,CAAC,aAAa,EAAE;AACxB,YAAA,aAAa,CAAC,eAAe,GAAG,MAAM,CAAC,aAAa,CAAC;AACtD,SAAA;QAED,OAAO,IAAI,CAAC,aAAa;aACtB,oBAAoB,CAAC,aAAa,CAAC;AACnC,aAAA,IAAI,CAAC,CAAC,WAAW,KAAI;YACpB,MAAM,QAAQ,GACZ,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC9D,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAE1D,YAAA,IAAI,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;AAClD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpC,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAC5D,CAAC;AACH,aAAA;YAED,IAAI,kBAAkB,CAAC,WAAW,EAAE;AAClC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAC9D,aAAA;AAED,YAAA,OAAO,kBAAkB,CAAC;AAC5B,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,KAAY,KAAI;AACtB,YAAA,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,uBAAuB,CAAC,WAAwB,EAAA;AACtD,QAAA,MAAM,cAAc,GAAsB,WAAW,CAAC,MAAM,CAAC,IAAI,CAC/D,CAAC,KAAY,KAAK,KAAK,CAAC,IAAI,KAAK,YAAY,CAC9C,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;KACxE;;AArEU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAKlB,8BAA8B,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAL7B,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAMI,MAAM;2BAAC,8BAA8B,CAAA;;;MC5BpB,iBAAiB,CAAA;AAG3B,IAAA,gBAAgB,CAAC,UAAsC,EAAA;AAC/D,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC5B,IAAI,CAAC,CAAO,IAAA,EAAA,GAAG,CAAE,CAAA,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AACtC,SAAA;KACF;AACF;;ACNK,MAAO,UAAW,SAAQ,QAAQ,CAAA;AACtC,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,sBAAsB,CAAC,CAAC;KAC/B;AACF;;ACAK,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AAIlD,IAAA,WAAA,CAAmB,UAMlB,EAAA;AACC,QAAA,KAAK,EAAE,CAAC;QAER,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;QAEpD,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,MAAM,IAAI,UAAU,EAAE,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAE1B,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;KAC3D;IAEO,eAAe,CACrB,MAAe,EACf,IAAsB,EAAA;QAEtB,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,SAAoC,EAAE,KAAY,KAAI;YACrD,MAAM,WAAW,GAA2B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAEjE,YAAA,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC;AAEvE,YAAA,OAAO,SAAS,CAAC;SAClB,EACD,EAAE,CACH,CAAC;KACH;AACF;;ACtCM,MAAM,yBAAyB,GACpC,IAAI,cAAc,CAAuB,eAAe,CAAC,CAAC;AAErD,MAAM,4BAA4B,GAAkB;AACzD,IAAA,OAAO,EAAE,yBAAyB;AAClC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAA6B,KAAK,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC;CAC3E;;ACNM,MAAM,0BAA0B,GACrC,IAAI,cAAc,CAAwB,gBAAgB,CAAC,CAAC;AAEvD,MAAM,6BAA6B,GAAkB;AAC1D,IAAA,OAAO,EAAE,0BAA0B;AACnC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAA8B,KAAK,IAAI,cAAc,CAAC,GAAG,IAAI,CAAC;CAC7E;;MCTY,wBAAwB,CAAA;AAMnC,IAAA,WAAA,CAAoC,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KAAI;IAEjE,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;YACvC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;AAC1E,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;KAC9B;AAEM,IAAA,MAAM,OAAO,GAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AAEO,IAAA,MAAM,+BAA+B,GAAA;AAG3C,QAAA,MAAM,OAAO,GAAG,MAAM,OAAO,+BAA+B,CAAC,CAAC;QAE9D,OAAO,OAAO,CAAC,oBAAyD,CAAC;KAC1E;AAEO,IAAA,MAAM,SAAS,GAAA;AACrB,QAAA,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC7B;AAEO,IAAA,MAAM,QAAQ,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC1D,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,QAAA,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;AAEzC,QAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;KAC3B;AAEO,IAAA,MAAM,wBAAwB,GAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC/B,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,MAAM,oBAAoB,GAAsC,MAAM,IAAI;AACvE,aAAA,2BAA2B,CAAC;QAE/B,IAAI;YACF,OAAO,IAAI,oBAAoB,CAAC;AAC9B,gBAAA,GAAG,EAAE;AACH,oBAAA,GAAG,EAAE,oCAAoC;AACzC,oBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;AACjC,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA;AACD,gBAAA,KAAK,EAAE;AACL,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,OAAO,EAAE,GAAG;AACb,iBAAA;AACF,aAAA,CAAC,CAAC;AACJ,SAAA;AAAC,QAAA,OAAO,KAAc,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;KACF;;qHArEU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,MAAM,EAAA,CAAA,CAAA;2FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCeY,aAAa,CAAA;AACxB,IAAA,WAAA,CAEmB,cAAoC,EAEpC,eAAsC,EACtC,eAAgC,EAChC,wBAAkD,EAClD,aAA4B,EAC5B,+BAAgE,EAChE,wBAAkD,EAAA;QAPlD,IAAc,CAAA,cAAA,GAAd,cAAc,CAAsB;QAEpC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAuB;QACtC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;QAClD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAA+B,CAAA,+BAAA,GAA/B,+BAA+B,CAAiC;QAChE,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;KACjE;;;;;IAOG,OAAO,CACZ,MAAe,EACf,IAAsB,EAAA;QAEtB,QACE,IAAI,CAAC,wBAAwB;AAC1B,aAAA,OAAO,EAAE;;AAET,aAAA,IAAI,CAAC,CAAC,OAAO,KAAI;AAChB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;AACxC,gBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;gBACjC,MAAM;gBACN,IAAI;gBACJ,OAAO;AACR,aAAA,CAAC,CAAC;YAEH,MAAM,gBAAgB,GACpB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAC7C,aAAa,CACd,CAAC;YAEJ,OAAO,IAAI,CAAC,aAAa;iBACtB,oBAAoB,CAAC,gBAAgB,CAAC;AACtC,iBAAA,IAAI,CAAC,CAAC,WAAwB,KAAI;gBACjC,MAAM,QAAQ,GACZ,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC9D,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACxC,aAAC,CAAC;AACD,iBAAA,KAAK,CAAC,CAAC,KAAY,KAAI;AACtB,gBAAA,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,aAAC,CAAC,CAAC;SACN,CAAC,EACJ;KACH;;0GAnDU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAEd,yBAAyB,EAAA,EAAA,EAAA,KAAA,EAEzB,0BAA0B,EAAA,EAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAJzB,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA,CAAA;2FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;0BAG7B,MAAM;2BAAC,yBAAyB,CAAA;;0BAEhC,MAAM;2BAAC,0BAA0B,CAAA;;;MCxBhB,eAAe,CAAA;AAKnC,IAAA,WAAA,GAAA;AAFiB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAQ,CAAC;QAGjD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KAC9C;AAEM,IAAA,IAAI,CAAC,IAAU,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;AACF;;ACVD;AACM,MAAO,WAAY,SAAQ,iBAAiB,CAAA;AAIhD,IAAA,WAAA,CAAmB,UAKlB,EAAA;AACC,QAAA,KAAK,EAAE,CAAC;QARM,IAAe,CAAA,eAAA,GAAG,WAAW,CAAC;AAU5C,QAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC;AAErC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CACvC,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,IAAI,CAChB,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC;AACpB,YAAA,GAAG,YAAY;AACf,YAAA,cAAc,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI;AAC7C,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,eAAe,CACrB,YAAmB,EACnB,MAAe,EACf,IAAsB,EAAA;QAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC5C,QAAA,OAAO,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CACnD,CAAC,SAAoC,EAAE,SAAiB,KAAI;YAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,KAAK,GAAsB,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE1D,IAAI,WAAW,IAAI,KAAK,EAAE;gBACxB,SAAS,CAAC,SAAS,CAAC,GAAG,WAAW,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,CAAC;AAC3D,aAAA;AAED,YAAA,OAAO,SAAS,CAAC;SAClB,EACD,EAAE,CACH,CAAC;KACH;AAEO,IAAA,YAAY,CAAC,MAAe,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiB,CAAC;AACrC,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACtD,QAAA,OAAO,GAAG,CAAC;KACZ;AACF;;AChDM,MAAM,uBAAuB,GAClC,IAAI,cAAc,CAAqB,aAAa,CAAC,CAAC;AAEjD,MAAM,0BAA0B,GAAkB;AACvD,IAAA,OAAO,EAAE,uBAAuB;AAChC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAA2B,KAAK,IAAI,WAAW,CAAC,GAAG,IAAI,CAAC;CACvE;;MCXY,YAAY,CAAA;IAKvB,WAAmB,CAAA,YAAmB,EAAE,QAAqB,EAAA;QAJ7C,IAAK,CAAA,KAAA,GAA4B,IAAI,CAAC;QAKpD,MAAM,UAAU,GAAG,QAAQ,EAAE,MAAM,EAAE,IAAI,CACvC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,KAAK,YAAY,CAAC,IAAI,CACpD,CAAC;AAEF,QAAA,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,KAAK,GAAG;AACX,gBAAA,UAAU,EAAE;oBACV,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,OAAO,EAAE,UAAU,CAAC,OAAO;AAC5B,iBAAA;aACF,CAAC;AACH,SAAA;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAC1C,CAAC,GAAW,KAAY,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAC3C,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;KAC5B;AACF;;ACpBM,MAAM,wBAAwB,GACnC,IAAI,cAAc,CAAsB,cAAc,CAAC,CAAC;AAEnD,MAAM,2BAA2B,GAAkB;AACxD,IAAA,OAAO,EAAE,wBAAwB;AACjC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAA4B,KAAK,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC;CACzE;;ACaK,MAAO,WAAY,SAAQ,eAA4B,CAAA;AAO3D,IAAA,WAAA,CAEmB,cAAkC,EAElC,eAAoC,EACpC,aAA4B,EAC5B,iBAAoC,EACpC,eAAgC,EAChC,+BAAgE,EAChE,wBAAkD,EAAA;AAEnE,QAAA,KAAK,EAAE,CAAC;QATS,IAAc,CAAA,cAAA,GAAd,cAAc,CAAoB;QAElC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAqB;QACpC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAA+B,CAAA,+BAAA,GAA/B,+BAA+B,CAAiC;QAChE,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;QAf7D,IAAmB,CAAA,mBAAA,GAA4C,EAAE,CAAC;AAClE,QAAA,IAAA,CAAA,IAAI,GAAqB,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAClD,IAAM,CAAA,MAAA,GAAY,EAAE,CAAC;QACrB,IAAe,CAAA,eAAA,GAAoC,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAwB,CAAC;KAc3E;AAED,IAAA,IAAW,qBAAqB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;KACjD;IAEM,KAAK,CAAC,IAAsB,EAAE,MAAe,EAAA;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;AAEb,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;KAClB;IAEM,MAAM,QAAQ,CACnB,KAAY,EACZ,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAA;AAErB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,cAAc,GAAG,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC;AAEhE,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAA;AAED,QAAA,IAAI,cAAc,IAAI,KAAK,KAAK,cAAc,CAAC,KAAK,EAAE;AACpD,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;AAC9D,gBAAA,OAAO,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC;AACjC,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,gBAAgB,GAAG,YAErB;YACF,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE3C,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAEzD,YAAA,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,QAAsB,KAAI;AACpD,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;oBAC7B,KAAK;oBACL,KAAK;oBACL,QAAQ;AACT,iBAAA,CAAC,CAAC;AAEH,gBAAA,OAAO,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC;AAChC,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;AAEF,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;AAC9B,oBAAA,IAAI,KAAK,KAAK,OAAO,EAAE,KAAK,EAAE;AAC5B,wBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACtB,qBAAA;AAED,oBAAA,KAAK,gBAAgB,EAAE,CAAC,IAAI,CAC1B,CAAC,MAAwC,KACvC,OAAO,CAAC,MAA0B,CAAC,CACtC,CAAC;iBACH,EAAE,KAAK,CAAC,CAAC;gBAEV,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAClD,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,gBAAgB,EAAE,CAAC,IAAI,CAC1B,CAAC,MAAwC,KACvC,OAAO,CAAC,MAA0B,CAAC,CACtC,CAAC;AACH,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,uBAAuB,CAAC,KAAY,EAAA;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,OAAO,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC;KAChC;IAES,MAAM,OAAO,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;AACxC,YAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;AACjC,YAAA,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB,SAAA,CAAC,CAAC;QAEH,MAAM,gBAAgB,GACpB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAC7C,aAAa,CACd,CAAC;QAEJ,OAAO,IAAI,CAAC,aAAa;aACtB,oBAAoB,CAAC,gBAAgB,CAAC;AACtC,aAAA,IAAI,CAAC,CAAC,WAAwB,KAAI;YACjC,MAAM,QAAQ,GACZ,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAE9D,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC/C,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,YAAY,CAAC,KAAY,EAAA;QAC/B,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC;AACjD,QAAA,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpD,OAAO,aAAa,IAAI,cAAc,CAAC;KACxC;AAEO,IAAA,qBAAqB,CAAC,KAAY,EAAA;QACxC,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC7C;AAEO,IAAA,qBAAqB,CAC3B,KAAY,EACZ,KAAc,EACd,MAA6B,EAAA;AAE7B,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;KAC1D;AAEO,IAAA,cAAc,CAAC,QAAqB,EAAA;AAC1C,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAE3E,IAAI,UAAU,EAAE,MAAM,EAAE;YACtB,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1E,SAAA;KACF;IAEO,mBAAmB,CAAC,KAAY,EAAE,OAAe,EAAA;QACvD,MAAM,WAAW,GAAW,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAE7D,QAAA,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,WAAW,CAAC,CAAC;AAC3B,SAAA;QAED,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;KAC5C;;wGAxKU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAQZ,uBAAuB,EAAA,EAAA,EAAA,KAAA,EAEvB,wBAAwB,EAAA,EAAA,EAAA,KAAA,EAAAP,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAVvB,WAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BASI,MAAM;2BAAC,uBAAuB,CAAA;;0BAE9B,MAAM;2BAAC,wBAAwB,CAAA;;;MCnCvB,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;QAKS,IAAmB,CAAA,mBAAA,GAAoB,KAAK,CAAC;KACrD;AAAA;;ACPK,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AAApD,IAAA,WAAA,GAAA;;QACS,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC;KAQ7B;AAAA;;ACNe,SAAA,OAAO,CACrB,SAAsB,EACtB,OAAe,EAAA;IAEf,OAAO,CAAC,OAAwB,KAAsC;AACpE,QAAA,MAAM,MAAM,GAA4B,SAAS,CAAC,OAAO,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;QAED,MAAM,aAAa,GAAW,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,QAAA,MAAM,UAAU,GAA6B,MAAM,CAAC,aAAa,CAAC,CAAC;AACnE,QAAA,MAAM,KAAK,GACT,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,GAAG,UAAU,GAAG,EAAE,CAAC;AAC1E,QAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAExB,QAAA,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;AAE9B,QAAA,OAAO,MAAmC,CAAC;AAC7C,KAAC,CAAC;AACJ;;ACtBA,MAAM,WAAW,GACf,y4BAAy4B,CAAC;SAE53B,uBAAuB,GAAA;IACrC,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC,CAAC;AACzE;;SCNgB,0BAA0B,GAAA;IACxC,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAClD;;MCOsB,SAAS,CAAA;AAC7B,IAAA,WAAA,CAAgC,WAAwB,EAAA;QAAxB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAAI;IAErD,eAAe,CAAC,KAAY,EAAE,SAAqB,EAAA;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAE1D,IAAI,SAAS,EAAE,QAAQ,EAAE;AACvB,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAEM,IAAA,oBAAoB,CAAC,KAAY,EAAA;QACtC,OAAO,IAAI,kBAAkB,CAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EACzB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAC/B,CAAC;KACH;;IAGM,aAAa,CAAC,KAAY,EAAE,SAAqB,EAAA;QACtD,MAAM,UAAU,GAAkB,EAAE,CAAC;AAErC,QAAA,IAAI,KAAK,CAAC,WAAW,KAAA,GAAA,wBAAsB;AACzC,YAAA,UAAU,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAC/C,SAAA;QAED,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAErD,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,oBAAoB;sBAC3C,KAAK,CAAC,oBAAoB;sBAC1B,kBAAkB,CAAC;AACvB,gBAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AACrE,aAAA;AACF,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AAEM,IAAA,kBAAkB,CACvB,KAAY,EAAA;AAEZ,QAAA,OAAO,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACrD;IAEM,0BAA0B,CAC/B,kBAA+B,EAC/B,KAAY,EAAA;AAEZ,QAAA,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAExC,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEtC,QAAA,OAAO,MAAM,CAAC;KACf;AAEM,IAAA,QAAQ,CAAC,KAAY,EAAA;QAC1B,OAAO,KAAK,CAAC,KAAK,CAAC;KACpB;IAOS,WAAW,GAAA;AACnB,QAAA,OAAO,MAAM,CAAC;KACf;IAES,eAAe,GAAA;AACvB,QAAA,OAAO,KAAK,CAAC;KACd;IAES,mBAAmB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,sBAAsB,CAAC,KAAY,EAAA;QACzC,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,UAAU;AAC3B,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;AAC5B,YAAA,QAAQ,EAAE,KAAK,CAAC,UAAU,KAAoB,GAAA;YAC9C,WAAW,EAAE,KAAK,CAAC,OAAO;AAC1B,YAAA,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;SACrC,CAAC;KACH;IAEO,iBAAiB,CACvB,MAAc,EACd,KAAY,EAAA;QAEZ,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE/D,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,SAAiB,KAAI;AAC7D,YAAA,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,EAAE;gBACzB,MAAqC,CAAC,SAAS,CAAC,GAC/C,mBACD,CAAC,SAAS,CAAC,CAAC;AACd,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AACF;;AC/GK,MAAO,cAAe,SAAQ,SAAS,CAAA;AAC3C,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AAEM,IAAA,aAAa,CAAC,KAAY,EAAA;AAC/B,QAAA,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;KACvE;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AAEzE,QAAA,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC;AAC9B,QAAA,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;AAErB,QAAA,OAAO,MAAM,CAAC;KACf;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,OAAO,CAAC;KAChB;;2GApBU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACJJ,MAAM,wBAAwB,GAAG,CACtC,eAAwB,KACT;AACf,IAAA,OAAO,CAAC,EAAE,KAAK,EAAmB,KAA6B;AAC7D,QAAA,OAAO,KAAK,KAAK,eAAe,GAAG,IAAI,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACpE,KAAC,CAAC;AACJ,CAAC;;ACGK,MAAO,YAAa,SAAQ,SAAS,CAAA;IAKzC,WACE,CAAA,WAAwB,EACP,cAA8B,EAAA;QAE/C,KAAK,CAAC,WAAW,CAAC,CAAC;QAFF,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QANhC,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;QACd,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;QACf,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;KAOpC;AAED,IAAA,IAAY,WAAW,GAAA;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC;KAClD;AAEM,IAAA,aAAa,CAAC,KAAY,EAAA;AAC/B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;AAC3E,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3E,MAAM,UAAU,GAAkB,KAAK;aACpC,aAAa,CAAC,KAAK,CAAC;AACpB,aAAA,MAAM,CAAC;YACN,OAAO,CACL,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAC/B,CAAA,eAAA,EAAkB,SAAS,CAAA,WAAA,CAAa,CACzC;YAED,OAAO,CACL,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAC/B,CAAA,mBAAA,EAAsB,SAAS,CAAA,WAAA,CAAa,CAC7C;AACF,SAAA,CAAC,CAAC;QAEL,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,UAAU,CAAC,IAAI,CACb,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAC,CACrE,CAAC;AACH,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACzE,QAAA,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;QAEzB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,CAAC,UAAU,GAAG;AAClB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,gBAAgB,EAAE,IAAI;AACtB,gBAAA,QAAQ,EAAE,IAAI;aACD,CAAC;AAChB,YAAA,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AAE7B,YAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;gBAC3B,MAAM,CAAC,UAAyB,CAAC,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACnE,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACnC,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;IAES,eAAe,GAAA;AACvB,QAAA,OAAO,aAAa,CAAC;KACtB;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,MAAM,CAAC;KACf;;yGAtEU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;ACZL,SAAU,iBAAiB,CAAC,KAAgC,EAAA;IAChE,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7C;;ACFM,SAAU,QAAQ,CAAC,KAAc,EAAA;AACrC,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC;;ACGA;;;AAGG;AACI,MAAM,oBAAoB,GAAgB,CAAC,EAAE,KAAK,EAAE,KAAI;IAC7D,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAChD,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,MAAM,KAAK,GAAqB;AAC9B,QAAA,eAAe,EAAE;AACf,YAAA,OAAO,EAAE,CAA2B,yBAAA,CAAA;AACrC,SAAA;KACF,CAAC;AAEF,IAAA,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;;AAE3B,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;IAED,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,CAAC,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;;;AAIxC,IAAA,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEnC,IAAI,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,SAAS,EAAE;YACtC,KAAK,IAAI,SAAS,CAAC;AACpB,SAAA;QAED,SAAS,IAAI,KAAK,CAAC;QACnB,MAAM,GAAG,CAAC,MAAM,CAAC;AAClB,KAAA;AAED,IAAA,OAAO,SAAS,GAAG,OAAO,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAClD,CAAC;;AC7CK,MAAO,gBAAiB,SAAQ,aAAa,CAAA;AAAnD,IAAA,WAAA,GAAA;;QACS,IAAW,CAAA,WAAA,GAAG,aAAa,CAAC;QAG5B,IAAkB,CAAA,kBAAA,GAAsB,EAAE,CAAC;QAE3C,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;KACzB;AAAA;;MCJY,4BAA4B,CAAA;AACvC,IAAA,WAAA,CAAoC,aAAgC,EAAA;QAAhC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAmB;AAE7D,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAwB,KAA6B;AACtE,YAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC5D,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AAED,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AAElC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAEjE,YAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAEzE,OAAO,MAAM,GAAG,SAAS;AACvB,kBAAE;AACE,oBAAA,eAAe,EAAE;wBACf,OAAO,EAAE,CAAkB,eAAA,EAAA,SAAS,CAAa,WAAA,CAAA;AACjD,wBAAA,MAAM,EAAE,SAAS;AAClB,qBAAA;AACF,iBAAA;kBACD,IAAI,CAAC;AACX,SAAC,CAAC;KArBsE;;yHAD7D,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAO,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6HAA5B,4BAA4B,EAAA,CAAA,CAAA;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;;;ACML,MAAO,mBAAoB,SAAQ,SAAS,CAAA;AAChD,IAAA,WAAA,CACE,WAAwB,EACP,kBAAgD,EAChD,kBAAgD,EAAA;QAEjE,KAAK,CAAC,WAAW,CAAC,CAAC;QAHF,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAA8B;QAChD,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAA8B;KAGlE;AAEM,IAAA,aAAa,CAAC,KAAY,EAAA;AAC/B,QAAA,OAAO,KAAK;aACT,aAAa,CAAC,KAAK,CAAC;AACpB,aAAA,MAAM,CAAC;YACN,oBAAoB;YACpB,IAAI,CAAC,kBAAkB,CAAC,QAAQ;YAChC,IAAI,CAAC,kBAAkB,CAAC,QAAQ;AACjC,SAAA,CAAC,CAAC;KACN;IAES,mBAAmB,CAC3B,KAAY,EACZ,SAAoB,EAAA;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAExE,QAAA,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAElC,QAAA,MAAM,CAAC,kBAAkB;AACtB,YAAA,SAAS,EAAE,kBAAwC,IAAI,EAAE,CAAC;AAE7D,QAAA,MAAM,CAAC,cAAc,GAAG,SAAS,EAAE,cAAiC,CAAC;AAErE,QAAA,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,WAAqB,CAAC;QACtD,MAAM,CAAC,QAAQ,GAAG,SAAS,EAAE,QAAQ,IAAI,KAAK,CAAC;AAE/C,QAAA,OAAO,MAAM,CAAC;KACf;IAES,eAAe,GAAA;AACvB,QAAA,OAAO,WAAW,CAAC;KACpB;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,MAAM,CAAC;KACf;;gHA5CU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACNJ,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,WAAW,GAAG,CAAC,UAAkB,KAAY;IACxD,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB,IAAA,MAAM,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;AAC3D,IAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,QAAQ,GAAG,IAAI,KAAK,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAEnE,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAMC,gBAAc,GAAG,CAAC,EAAW,MAChC;AACC,IAAA,mBAAmB,EAAE;AACnB,QAAA,OAAO,EAAE,EAAE;AACZ,KAAA;AACmB,CAAA,CAAA,CAAC;AAEnB,SAAU,kBAAkB,CAAC,SAAqB,EAAA;IACtD,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,IAAI,CAAC;QAE3C,MAAM,QAAQ,GAAG,WAAW,CAAE,SAAS,EAAE,aAAwB,IAAI,IAAI,CAAC,CAAC;AAE3E,QAAA,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB,EAAE;AACtC,YAAA,OAAOA,gBAAc,CAAC,CAAA,MAAA,EAAS,iBAAiB,CAAA,WAAA,CAAa,CAAC,CAAC;AAChE,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,OAAOA,gBAAc,CAAC,CAAgC,8BAAA,CAAA,CAAC,CAAC;AACzD,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,EAAE;AAC5B,YAAA,OAAOA,gBAAc,CACnB,CAAA,uCAAA,EAA0C,QAAQ,CAAA,CAAE,CACrD,CAAC;AACH,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,EAAE;AAC7B,YAAA,OAAOA,gBAAc,CAAC,CAAA,oCAAA,EAAuC,SAAS,CAAA,CAAE,CAAC,CAAC;AAC3E,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;AACd,KAAC,CAAC;AACJ;;AC5CM,MAAO,kBAAmB,SAAQ,SAAS,CAAA;AAC/C,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;IAEM,aAAa,CAAC,KAAY,EAAE,SAAoB,EAAA;AACrD,QAAA,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAC3E;IAES,mBAAmB,CAC3B,KAAY,EACZ,SAAoB,EAAA;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAEzE,MAAM,CAAC,UAAU,GAAG;AAClB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,KAAK;SACb,CAAC;AACF,QAAA,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AAE7B,QAAA,MAAM,CAAC,WAAW,GAAG,CAAA,EAAA,CAAI,CAAC;AAE1B,QAAA,MAAM,CAAC,KAAK,GAAG,CAAA,EAAA,CAAI,CAAC;QAEpB,MAAM,CAAC,QAAQ,GAAG,SAAS,EAAE,QAAQ,IAAI,KAAK,CAAC;AAE/C,QAAA,OAAO,MAAM,CAAC;KACf;IAES,eAAe,GAAA;AACvB,QAAA,OAAO,cAAc,CAAC;KACvB;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,MAAM,CAAC;KACf;;+GApCU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACIL,MAAO,YAAa,SAAQ,SAAS,CAAA;AAIzC,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;;QAHb,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;KAI1B;IAEM,aAAa,CAAC,KAAY,EAAE,SAAwB,EAAA;QACzD,MAAM,UAAU,GAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7D,QAAA,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC;AACnE,QAAA,MAAM,mBAAmB,GAAG,CAAC,OAAe,KAC1C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA,qBAAA,CAAuB,CAAC,CAAC;AAEhE,QAAA,QAAQ,cAAc;AACpB,YAAA,KAAK,eAAe,CAAC,gBAAgB,EAAE;AACrC,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBACxB,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;gBAChD,MAAM;AACP,aAAA;AACD,YAAA,KAAK,eAAe,CAAC,OAAO,EAAE;AAC5B,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBACxB,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;gBAClD,MAAM;AACP,aAAA;AACD,YAAA,SAAS;AACP,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBACxB,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;IAES,mBAAmB,CAC3B,KAAY,EACZ,SAAoB,EAAA;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAEzE,MAAM,CAAC,UAAU,GAAG;YAClB,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7D,YAAA,gBAAgB,EAAE,KAAK;AACvB,YAAA,KAAK,EAAE,KAAK;SACb,CAAC;QAEF,MAAM,CAAC,OAAO,GAAG;AACf,YAAA,IAAI,EAAE,sCAAsC;AAC5C,YAAA,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,UAAU,CAAC,GAAG;AAC3B,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,eAAe,EAAE,kBAAkB;SACpC,CAAC;AAEF,QAAA,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AAC7B,QAAA,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACxD,MAAM,CAAC,QAAQ,GAAG,SAAS,EAAE,QAAQ,IAAI,KAAK,CAAC;AAE/C,QAAA,OAAO,MAAM,CAAC;KACf;IAES,eAAe,GAAA;AACvB,QAAA,OAAO,QAAQ,CAAC;KACjB;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,UAAU,CAAC;KACnB;IAES,mBAAmB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC;KACb;;yGAvEU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;ACTJ,MAAM,kBAAkB,GAAgB,CAAC,EAAE,KAAK,EAAE,KAAI;IAC3D,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACzD,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,MAAM,KAAK,GAAqB;AAC9B,QAAA,gBAAgB,EAAE;AAChB,YAAA,OAAO,EAAE,CAA0B,wBAAA,CAAA;AACpC,SAAA;KACF,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,cAAc,GAAG,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAM,UAAU,GAAG,CAAC,CAAC;IACrB,MAAM,SAAS,GAAG,CAAC,CAAC;IACpB,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,MAAM,GAAG,GAAG,CAAC;AAEnB,IAAA,IAAI,OAAO,CAAC,MAAM,GAAG,cAAc,EAAE;AACnC,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,EAAE;AACpE,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;IAED,MAAM,WAAW,GAAG,IAAI,IAAI,CAC1B,CAAC,OAAO,CAAC,SAAS,CAAC,EACnB,CAAC,OAAO,CAAC,UAAU,CAAC,EACpB,CAAC,OAAO,CAAC,QAAQ,CAAC,CACnB,CAAC;AACF,IAAA,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;AAE3B,IAAA,IACE,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,MAAM;QAC3D,OAAO,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,MAAM,EAC1D;AACA,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACH,CAAC;;ACrCK,MAAO,kBAAmB,SAAQ,SAAS,CAAA;AAC/C,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AAEM,IAAA,aAAa,CAAC,KAAY,EAAA;AAC/B,QAAA,OAAO,KAAK;aACT,aAAa,CAAC,KAAK,CAAC;AACpB,aAAA,MAAM,CAAC;YACN,OAAO,CACL,UAAU,CAAC,OAAO,CAAC,oCAAoC,CAAC,EACxD,CAAA,wBAAA,CAA0B,CAC3B;YACD,kBAAkB;AACnB,SAAA,CAAC,CAAC;KACN;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAEzE,MAAM,CAAC,UAAU,GAAG;AAClB,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,gBAAgB,EAAE,KAAK;AACvB,YAAA,KAAK,EAAE,KAAK;SACb,CAAC;AAEF,QAAA,MAAM,CAAC,WAAW,GAAG,CAAA,UAAA,CAAY,CAAC;AAElC,QAAA,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AAE7B,QAAA,OAAO,MAAM,CAAC;KACf;;+GA/BU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACFL,MAAO,uBAAwB,SAAQ,SAAS,CAAA;AACpD,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,OAAO,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;KAClE;IAES,eAAe,GAAA;AACvB,QAAA,OAAO,SAAS,CAAC;KAClB;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,MAAM,CAAC;KACf;;oHAfU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACNJ,MAAM,YAAY,GACvB,yJAAyJ,CAAC;;ACStJ,MAAO,gBAAiB,SAAQ,SAAS,CAAA;AAC7C,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AAEM,IAAA,aAAa,CAAC,KAAY,EAAA;AAC/B,QAAA,OAAO,KAAK;aACT,aAAa,CAAC,KAAK,CAAC;AACpB,aAAA,MAAM,CAAC;YACN,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAA,kBAAA,CAAoB,CAAC;AAChE,SAAA,CAAC,CAAC;KACN;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAEzE,MAAM,CAAC,OAAO,GAAG;AACf,YAAA,IAAI,EAAE,CAAyB,uBAAA,CAAA;AAC/B,YAAA,KAAK,EAAE,UAAU;SAClB,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC;KACf;;6GAtBU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAhB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;ACFL,MAAO,kBAAmB,SAAQ,SAAS,CAAA;AAC/C,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAEzE,MAAM,CAAC,UAAU,GAAG;AAClB,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,KAAK,EAAE,KAAK;SACb,CAAC;AAEF,QAAA,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AAE7B,QAAA,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC;QAEtC,MAAM,CAAC,OAAO,GAAG;AACf,YAAA,IAAI,EAAE,CAAwC,sCAAA,CAAA;AAC9C,YAAA,KAAK,EAAE,YAAY;SACpB,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC;KACf;;+GAxBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACKL,MAAO,qBAAsB,SAAQ,SAAS,CAAA;AAClD,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;IAEM,aAAa,CAClB,KAAY,EACZ,SAAiC,EAAA;QAEjC,MAAM,UAAU,GAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAE7D,QAAA,IAAI,SAAS,EAAE,OAAO,KAAK,IAAI,EAAE;AAC/B,YAAA,UAAU,CAAC,IAAI,CACb,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAA+B,6BAAA,CAAA,CAAC,CACxE,CAAC;AACH,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,OAAO,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;KAClE;;kHAtBU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sHAArB,qBAAqB,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;ACHL,MAAO,aAAc,SAAQ,SAAS,CAAA;AAC1C,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,OAAO,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;KAClE;;0GAPU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;ACHL,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAAxD,IAAA,WAAA,GAAA;;QACS,IAAW,CAAA,WAAA,GAAG,UAAU,CAAC;KAEjC;AAAA;;ACKK,MAAO,iBAAkB,SAAQ,SAAS,CAAA;AAI9C,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;AAJF,QAAA,IAAA,CAAA,YAAY,GAAmB,GAAA,uBAAA;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAoB,GAAA,wBAAA;KAIpD;AAEM,IAAA,aAAa,CAAC,KAAY,EAAA;QAC/B,MAAM,UAAU,GAAkB,EAAE,CAAC;AAErC,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,YAAY,EAAE;AAC3C,YAAA,UAAU,CAAC,IAAI,CACb,OAAO,CACL,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,EAC7C,sCAAsC,CACvC,CACF,CAAC;AACH,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAC5C,qBAAqB,EACrB,KAAK,CACN,CAAC;AAEF,QAAA,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAClC,QAAA,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,KAAmB,CAAC;AAE7C,QAAA,OAAO,MAAM,CAAC;KACf;;8GAjCU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;ACLL,MAAO,yBAA0B,SAAQ,aAAa,CAAA;AAA5D,IAAA,WAAA,GAAA;;QACS,IAAW,CAAA,WAAA,GAAG,eAAe,CAAC;KAKtC;AAAA;;ACHK,MAAO,eAAgB,SAAQ,SAAS,CAAA;AAC5C,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAC5C,yBAAyB,EACzB,KAAK,CACN,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAyB,CAAC;AACjD,QAAA,OAAO,MAAM,CAAC;KACf;;4GAZU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;ACAL,MAAO,YAAa,SAAQ,SAAS,CAAA;AACzC,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,OAAO,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;KAClE;;yGAPU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;ACHL,MAAO,kBAAmB,SAAQ,aAAa,CAAA;AAArD,IAAA,WAAA,GAAA;;QACS,IAAW,CAAA,WAAA,GAAG,OAAO,CAAC;QACtB,IAAO,CAAA,OAAA,GAAkB,EAAE,CAAC;KACpC;AAAA;;ACEK,MAAO,mBAAoB,SAAQ,SAAS,CAAA;AAChD,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAE1E,QAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAwB,CAAC;AAChD,QAAA,OAAO,MAAM,CAAC;KACf;;gHAVU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACCL,MAAO,mBAAoB,SAAQ,SAAS,CAAA;AAIhD,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;;QAHJ,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;KAIpC;AAEM,IAAA,aAAa,CAAC,KAAY,EAAA;AAC/B,QAAA,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACnC;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAEzE,MAAM,CAAC,UAAU,GAAG;YAClB,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7D,YAAA,gBAAgB,EAAE,KAAK;AACvB,YAAA,KAAK,EAAE,KAAK;SACb,CAAC;AAEF,QAAA,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;AACjC,QAAA,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AAE7B,QAAA,OAAO,MAAM,CAAC;KACf;;gHAzBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACJL,MAAO,mBAAoB,SAAQ,aAAa,CAAA;AAAtD,IAAA,WAAA,GAAA;;QACS,IAAW,CAAA,WAAA,GAAG,QAAQ,CAAC;KAI/B;AAAA;;ACJe,SAAA,eAAe,CAC7B,OAAO,GAAG,CAA0B,wBAAA,CAAA,EAAA;IAEpC,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;AAChE;;ACCM,MAAO,eAAgB,SAAQ,SAAS,CAAA;AAC5C,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;IAEM,aAAa,GAAA;AAClB,QAAA,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;KAC5B;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAE3E,QAAA,MAAM,CAAC,WAAW,GAAG,CAAA,gBAAA,CAAkB,CAAC;AAExC,QAAA,OAAO,MAAM,CAAC;KACf;;4GAfU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;ACLX,MAAM,cAAc,GAAG,CAAC,EAAW,MAChC;AACC,IAAA,kBAAkB,EAAE;AAClB,QAAA,OAAO,EAAE,EAAE;AACZ,KAAA;AACmB,CAAA,CAAA,CAAC;AAElB,MAAM,uBAAuB,GAAG,CACrC,MAAc,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,KACvC;;IAEV,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF;AACO,MAAM,aAAa,GAAG,EAAE,CAAC;AAE1B,SAAU,iBAAiB,CAC/B,OAAwB,EAAA;AAExB,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI,CAAC;IAE3C,MAAM,OAAO,GAAG,QAAQ,CAAC,uBAAuB,EAAE,EAAE,EAAE,CAAC,CAAC;AAExD,IAAA,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB,EAAE;AACtC,QAAA,OAAO,cAAc,CAAC,CAAA,MAAA,EAAS,iBAAiB,CAAA,WAAA,CAAa,CAAC,CAAC;AAChE,KAAA;AAED,IAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC/B,QAAA,OAAO,cAAc,CAAC,CAA+B,6BAAA,CAAA,CAAC,CAAC;AACxD,KAAA;AAED,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,EAAE;AAC3B,QAAA,OAAO,cAAc,CAAC,CAAA,sCAAA,EAAyC,OAAO,CAAA,CAAE,CAAC,CAAC;AAC3E,KAAA;AAED,IAAA,MAAM,YAAY,GAAG,OAAO,GAAG,aAAa,CAAC;AAE7C,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,EAAE;AAChC,QAAA,OAAO,cAAc,CAAC,CAAA,mCAAA,EAAsC,YAAY,CAAA,CAAE,CAAC,CAAC;AAC7E,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd;;AC1CM,MAAO,iBAAkB,SAAQ,SAAS,CAAA;AAC9C,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AAEM,IAAA,aAAa,CAAC,KAAY,EAAA;AAC/B,QAAA,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;KAC/D;IAES,mBAAmB,CAC3B,KAAY,EACZ,SAAoB,EAAA;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAEzE,MAAM,CAAC,UAAU,GAAG;AAClB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,KAAK;SACb,CAAC;AACF,QAAA,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AAE7B,QAAA,MAAM,CAAC,WAAW,GAAG,CAAA,EAAA,CAAI,CAAC;AAE1B,QAAA,MAAM,CAAC,KAAK,GAAG,CAAA,EAAA,CAAI,CAAC;QAEpB,MAAM,CAAC,QAAQ,GAAG,SAAS,EAAE,QAAQ,IAAI,KAAK,CAAC;AAE/C,QAAA,OAAO,MAAM,CAAC;KACf;IAES,eAAe,GAAA;AACvB,QAAA,OAAO,aAAa,CAAC;KACtB;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,MAAM,CAAC;KACf;;8GApCU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;SCLK,cAAc,GAAA;IAC5B,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC;AACrE;;ACHM,SAAU,kBAAkB,CAAC,SAAiB,EAAA;AAClD,IAAA,OAAO,OAAO,CACZ,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAC/B,CAAA,eAAA,EAAkB,SAAS,CAAA,WAAA,CAAa,CACzC,CAAC;AACJ;;ACLM,SAAU,kBAAkB,CAAC,SAAiB,EAAA;AAClD,IAAA,OAAO,OAAO,CACZ,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAC/B,CAAA,mBAAA,EAAsB,SAAS,CAAA,WAAA,CAAa,CAC7C,CAAC;AACJ;;ACNM,MAAO,kBAAmB,SAAQ,aAAa,CAAA;AAArD,IAAA,WAAA,GAAA;;QACS,IAAW,CAAA,WAAA,GAAG,OAAO,CAAC;KAG9B;AAAA;;ACMK,MAAO,cAAe,SAAQ,SAAS,CAAA;AAC3C,IAAA,WAAA,CAAmB,WAAwB,EAAA;QACzC,KAAK,CAAC,WAAW,CAAC,CAAC;KACpB;AAEM,IAAA,aAAa,CAAC,KAAY,EAAA;QAC/B,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,QAAA,OAAO,KAAK;aACT,aAAa,CAAC,KAAK,CAAC;AACpB,aAAA,MAAM,CAAC;AACN,YAAA,0BAA0B,EAAE;AAC5B,YAAA,cAAc,EAAE;YAChB,kBAAkB,CAAC,SAAS,CAAC;YAC7B,kBAAkB,CAAC,SAAS,CAAC;AAC9B,SAAA,CAAC,CAAC;KACN;AAES,IAAA,mBAAmB,CAAC,KAAY,EAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAC1E,QAAA,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AAC7B,QAAA,OAAO,MAAM,CAAC;KACf;;2GAvBU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACWJ,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAClD,qBAAqB,CACtB,CAAC;AAEK,MAAM,aAAa,GAAkB;AAC1C,IAAA,WAAW,EAAE,mBAAmB;AAChC,IAAA,UAAU,EAAE,kBAAkB;AAC9B,IAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,cAAc,EAAE,uBAAuB;AACvC,IAAA,UAAU,EAAE,kBAAkB;AAC9B,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,UAAU,EAAE,kBAAkB;AAC9B,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,KAAK,EAAE,iBAAiB;AACxB,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,UAAU,EAAE,mBAAmB;AAC/B,IAAA,KAAK,EAAE,cAAc;AACrB,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,UAAU,EAAE,cAAc;AAC1B,IAAA,aAAa,EAAE,qBAAqB;AACpC,IAAA,GAAG,EAAE,mBAAmB;AACxB,IAAA,GAAG,EAAE,mBAAmB;AACxB,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,KAAK,EAAE,cAAc;CACtB;;MCzCY,oBAAoB,CAAA;IAC/B,WAEmB,CAAA,aAA4B,EAC5B,QAAkB,EAAA;QADlB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KACjC;AAEG,IAAA,cAAc,CAAC,KAAY,EAAA;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;KAC9C;AAEM,IAAA,SAAS,CAAC,KAAY,EAAA;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KACzC;AAEM,IAAA,YAAY,CAAC,KAAmB,EAAA;QACrC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAElD,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAA;QAED,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAY,SAAS,CAAC,CAAC;KAChD;;AA5CU,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAErB,kBAAkB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAFjB,oBAAoB,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;0BAGN,MAAM;2BAAC,kBAAkB,CAAA;;;MCFjB,WAAW,CAAA;AAGtB,IAAA,WAAA,CACqB,oBAA0C,EAAA;QAA1C,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAHxD,IAAe,CAAA,eAAA,GAAoB,EAAE,CAAC;KAIzC;AAEG,IAAA,UAAU,CAAC,MAAe,EAAA;AAC/B,QAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,CAClC,CAAC,MAA6C,EAAE,KAAY,KAAI;YAC9D,MAAM,WAAW,GACf,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAElD,YAAA,IAAI,WAAW,EAAE;AACf,gBAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;AAClC,aAAA;AAED,YAAA,OAAO,MAAM,CAAC;SACf,EACD,EAAE,CACH,CAAC;AAEJ,QAAA,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KACvC;AAEM,IAAA,oBAAoB,CACzB,IAAsB,EACtB,MAAe,EACf,SAAiB,EACjB,SAAoB,EAAA;AAEpB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,CAAC,SAAgB,KAAK,SAAS,CAAC,IAAI,KAAK,SAAS,CACnD,CAAC;QAEF,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;AACR,SAAA;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG;AAChC,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AAClC,YAAA,GAAG,SAAS;SACb,CAAC;AACF,QAAA,OAAO,CAAC,aAAa,CACnB,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CACvE,CAAC;QACF,OAAO,CAAC,sBAAsB,EAAE,CAAC;KAClC;AAEO,IAAA,gBAAgB,CAAC,MAAe,EAAA;AACtC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,KAAA,GAAA,uBAAqB,CAAC;KACxE;;wGA3DU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;ACRX,IAAY,iBAWX,CAAA;AAXD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,SAAe,CAAA;AACf,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,aAAuB,CAAA;AACvB,IAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,iBAA+B,CAAA;AAC/B,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,YAAqB,CAAA;AACrB,IAAA,iBAAA,CAAA,YAAA,CAAA,GAAA,gBAA6B,CAAA;AAC7B,IAAA,iBAAA,CAAA,kBAAA,CAAA,GAAA,sBAAyC,CAAA;AACzC,IAAA,iBAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C,CAAA;AAC/C,CAAC,EAXW,iBAAiB,KAAjB,iBAAiB,GAW5B,EAAA,CAAA,CAAA;;ACTM,MAAM,0BAA0B,GAAG;AACxC,IAAA,iBAAiB,CAAC,KAAK;AACvB,IAAA,iBAAiB,CAAC,MAAM;AACxB,IAAA,iBAAiB,CAAC,SAAS;AAC3B,IAAA,iBAAiB,CAAC,GAAG;AACrB,IAAA,iBAAiB,CAAC,OAAO;CAC1B;;ACED,MAAM,eAAe,GAAyB,CAAC,KAAa,KAAa,KAAK,CAAC;AAC/E,MAAM,eAAe,GAAyB,CAAC,KAAa,KAAY;AACtE,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,IAAA,OAAO,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;AAC9C,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAG1C;AACA,IAAA;AACE,QAAA,iBAAiB,CAAC,KAAK;AACvB,QAAA;AACE,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,iBAAiB,CAAC,SAAS;AAC3B,QAAA;AACE,YAAA,GAAG,EAAE,WAAW;AAChB,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,iBAAiB,CAAC,MAAM;AACxB,QAAA;AACE,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,iBAAiB,CAAC,gBAAgB;AAClC,QAAA;AACE,YAAA,GAAG,EAAE,kBAAkB;AACvB,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,iBAAiB,CAAC,GAAG;AACrB,QAAA;AACE,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,iBAAiB,CAAC,OAAO;AACzB,QAAA;AACE,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,iBAAiB,CAAC,WAAW;AAC7B,QAAA;AACE,YAAA,GAAG,EAAE,aAAa;AAClB,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,iBAAiB,CAAC,MAAM;AACxB,QAAA;AACE,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,iBAAiB,CAAC,UAAU;AAC5B,QAAA;AACE,YAAA,GAAG,EAAE,YAAY;AACjB,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,iBAAiB,CAAC,oBAAoB;AACtC,QAAA;AACE,YAAA,GAAG,EAAE,sBAAsB;AAC3B,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA;AACF,KAAA;AACF,CAAA,CAAC;;MCvFoB,UAAU,CAAA;AAAhC,IAAA,WAAA,GAAA;AAWmB,QAAA,IAAA,CAAA,QAAQ,GACvB,IAAI,eAAe,CAAkB,IAAI,CAAC,CAAC;KAa9C;AAxBC,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,QAAQ;AACjB,aAAA,YAAY,EAAE;AACd,aAAA,IAAI,CACH,MAAM,CACJ,CAAC,QAAyB,KAA2B,QAAQ,KAAK,IAAI,CACvE,CACF,CAAC;KACL;AAKM,IAAA,YAAY,CAAC,QAAyB,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC9B;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACjC;AAKF;;ACxBD;AACM,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AAYlD,IAAA,WAAA,CAAmB,UAA+B,EAAA;AAChD,QAAA,KAAK,EAAE,CAAC;QAXM,IAAe,CAAA,eAAA,GAAG,QAAQ,CAAC;AAazC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACrB,MAAM,IAAI,UAAU,EAAE,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC;AAC1C,QAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,WAAW,CAAC;AAClD,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC;AACxC,QAAA,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC;AAChD,QAAA,IAAI,CAAC,wBAAwB,GAAG,UAAU,CAAC,gBAAgB,CAAC;AAC5D,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;KACrC;AACF;;ACvBM,MAAM,yBAAyB,GACpC,IAAI,cAAc,CAAuB,eAAe,CAAC,CAAC;AAErD,MAAM,4BAA4B,GAAkB;AACzD,IAAA,OAAO,EAAE,yBAAyB;AAClC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAA6B,KAAK,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC;CAC3E;;ACRM,MAAM,0BAA0B,GACrC,IAAI,cAAc,CAAwB,gBAAgB,CAAC,CAAC;AAEvD,MAAM,6BAA6B,GAAkB;AAC1D,IAAA,OAAO,EAAE,0BAA0B;AACnC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAAwB,KAAK,IAAI,cAAc,CAAC,GAAG,IAAI,CAAC;CACvE;;ACOK,MAAO,oBAAqB,SAAQ,UAA0B,CAAA;AAGlE,IAAA,WAAA,CACmB,eAAgC,EAChC,eAAgC,EAEhC,cAAoC,EAEpC,eAAsC,EAAA;AAEvD,QAAA,KAAK,EAAE,CAAC;QAPS,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAEhC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAsB;QAEpC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAuB;QARxC,IAAQ,CAAA,QAAA,GAAG,eAAe,CAAC;KAW3C;AAEM,IAAA,gBAAgB,CAAC,MAA2B,EAAA;QACjD,IAAI,CAAC,aAAa,GAAG;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;KACH;IAEM,OAAO,GAAA;AACZ,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;AACxC,YAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;YACjC,GAAG,IAAI,CAAC,aAAa;AACtB,SAAA,CAAC,CAAC;AAEH,QAAA,aAAa,CACX,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,IAAI,CAAC,QAAQ,EACb,IAAI,eAAe,CACjB,aAAqD,CACtD,EACD;YACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAC5B,cAAc,EACd,kDAAkD,CACnD;AACD,YAAA,YAAY,EAAE,MAAM;AACrB,SAAA,CACF,CACF;AACE,aAAA,IAAI,CAAC,CAAC,QAAqB,KAAI;AAC9B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;gBAC1C,MAAM,EAAE,QAAQ,CAAC,MAA0B;gBAC3C,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;AACpB,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AACpC,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,CAAgB,KAAI;YAC1B,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;KACN;;iHA5DU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvB,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,eAAA,EAAA,EAAA,EAAA,KAAA,EAMrB,yBAAyB,EAAA,EAAA,EAAA,KAAA,EAEzB,0BAA0B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AARzB,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAOI,MAAM;2BAAC,yBAAyB,CAAA;;0BAEhC,MAAM;2BAAC,0BAA0B,CAAA;;;AC9BhC,SAAU,MAAM,CAAC,KAAc,EAAA;IACnC,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB;;ACFM,SAAU,WAAW,CAAC,KAAc,EAAA;AACxC,IAAA,OAAO,OAAO,KAAK,KAAK,WAAW,CAAC;AACtC;;MCQa,cAAc,CAAA;IAGzB,WACwC,CAAA,MAAsB,EAC3C,eAAgC,EAAA;QADX,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QAC3C,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAJ3C,IAAK,CAAA,KAAA,GAA+B,EAAE,CAAC;KAK3C;AAEJ;;;AAGG;IACI,GAAG,CAAC,GAAW,EAAE,KAAc,EAAA;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAExB,IAAI;YACF,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EACvB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACtB,CAAC;AACH,SAAA;AAAC,QAAA,OAAO,KAAc,EAAE;AACvB,YAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;AAChD,SAAA;KACF;AAEM,IAAA,GAAG,CAAI,GAAW,EAAA;QACvB,MAAM,UAAU,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;AAC5B,YAAA,OAAO,UAAe,CAAC;AACxB,SAAA;QAED,IAAI;AACF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CACrD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CACxB,CAAC;AAEF,YAAA,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE;AACxB,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AAED,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAM,CAAC;AACtC,SAAA;AAAC,QAAA,OAAO,KAAc,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;KACF;AAEO,IAAA,aAAa,CAAC,GAAW,EAAA;QAC/B,OAAO,CAAA,EAAG,GAAG,CAAG,EAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAA,CAAE,CAAC;KAC9C;;AAjDU,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,kBAIf,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAL,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAJV,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAKI,MAAM;2BAAC,WAAW,CAAA;;;SCZP,oBAAoB,CAClC,KAAsE,EACtE,SAAS,GAAG,IAAI,EAAA;IAEhB,OAAO;AACL,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC;AAC/C,QAAA,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE;KAChC,CAAC;AACJ,CAAC;AAEe,SAAA,sBAAsB,CACpC,MAAiC,EACjC,QAA4B,EAAA;IAE5B,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS;AACtE,UAAE;YACE,MAAM;YACN,QAAQ;AACT,SAAA;UACD,SAAS,CAAC;AAChB;;ACtBA;;;;AAIG;AACI,MAAM,oBAAoB,GAAG;IAClC,iGAAiG;IACjG,4BAA4B;CAC7B;;ACRD,IAAY,aAaX,CAAA;AAbD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC1B,IAAA,aAAA,CAAA,cAAA,CAAA,GAAA,eAA8B,CAAA;AAC9B,IAAA,aAAA,CAAA,qBAAA,CAAA,GAAA,uBAA6C,CAAA;AAE7C,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,aAAA,CAAA,iBAAA,CAAA,GAAA,mBAAqC,CAAA;AACrC,IAAA,aAAA,CAAA,mBAAA,CAAA,GAAA,qBAAyC,CAAA;AACzC,IAAA,aAAA,CAAA,0BAAA,CAAA,GAAA,6BAAwD,CAAA;AAExD,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,aAAA,CAAA,mBAAA,CAAA,GAAA,qBAAyC,CAAA;AAC3C,CAAC,EAbW,aAAa,KAAb,aAAa,GAaxB,EAAA,CAAA,CAAA;;ACbD,IAAY,kBAIX,CAAA;AAJD,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,kBAAA,CAAA,iBAAA,CAAA,GAAA,mBAAqC,CAAA;AACrC,IAAA,kBAAA,CAAA,mBAAA,CAAA,GAAA,qBAAyC,CAAA;AAC3C,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,GAI7B,EAAA,CAAA,CAAA;;MCWY,mCAAmC,CAAA;AACvC,IAAA,iBAAiB,CAAC,OAAmB,EAAA;AAC1C,QAAA,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QACtC,OAAO;AACL,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC/C,YAAA,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AACzC,YAAA,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;SAChD,CAAC;KACH;AAEO,IAAA,6BAA6B,CAAC,OAA0B,EAAA;AAC9D,QAAA,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;KAChE;AAEO,IAAA,YAAY,CAAC,OAA0B,EAAA;AAC7C,QAAA,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;KAC1E;IAEO,YAAY,CAClB,QAAqB,EACrB,OAA0B,EAAA;QAE1B,MAAM,SAAS,GAA2B,QAAQ,CAAC,cAAc,EAAE,GAAG,CACpE,CAAC,IAAI,KAAI;YACP,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,SAAS;gBACtB,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClD,KAAK,EAAE,IAAI,CAAC,IAAI;AAChB,gBAAA,KAAK,EAAE,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC;gBACxC,mBAAmB,EAAE,sBAAsB,CACzC,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,QAAQ,CACd;gBACD,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC;gBACxD,OAAO,EAAE,IAAI,CAAC,QAAQ;aACvB,CAAC;AACJ,SAAC,CACF,CAAC;QAEF,MAAM,iBAAiB,GACrB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,IAAI,KAAI;YACtC,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,SAAS;gBACtB,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClD,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAE,CAAA;AACtC,gBAAA,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC;gBACjC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,OAAO,EAAE,IAAI,CAAC,QAAQ;aACvB,CAAC;AACJ,SAAC,CAAC,CAAC;QAEL,MAAM,YAAY,GAA2B,QAAQ,CAAC,aAAa,EAAE,GAAG,CACtE,CAAC,IAAI,KAAI;YACP,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,SAAS;gBACtB,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClD,KAAK,EAAE,IAAI,CAAC,IAAI;AAChB,gBAAA,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC;gBACjC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,QAAQ;aACvB,CAAC;AACJ,SAAC,CACF,CAAC;QAEF,IAAI,aAAa,GAA2B,SAAS,CAAC;QACtD,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACrB,YAAA,aAAa,GAAG;AACd,gBAAA;AACE,oBAAA,GAAG,EAAE,UAAU;AACf,oBAAA,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW;AACpC,oBAAA,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC9C,oBAAA,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,IAAI,KAAK;AAC7C,iBAAA;aACF,CAAC;AACH,SAAA;QAED,OAAO;AACL,YAAA,IAAI,SAAS,IAAI,EAAE,CAAC;AACpB,YAAA,IAAI,iBAAiB,IAAI,EAAE,CAAC;AAC5B,YAAA,IAAI,YAAY,IAAI,EAAE,CAAC;AACvB,YAAA,IAAI,aAAa,IAAI,EAAE,CAAC;SACzB,CAAC;KACH;AAEO,IAAA,cAAc,CAAC,OAA0B,EAAA;QAC/C,OAAO;AACL,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,KAAK,EAAE,sBAAsB,CAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,EAC1B,OAAO,EAAE,SAAS,EAAE,QAAQ,CAC7B;AACF,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,KAAK,EAAE,sBAAsB,CAC3B,OAAO,EAAE,SAAS,EAAE,cAAc,EAClC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CACrC;AACF,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5C,aAAA;AACD,YAAA,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AACnD,YAAA,eAAe,EAAE;AACf,gBAAA,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;AACnC,gBAAA,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;AAC5C,aAAA;SACF,CAAC;KACH;AAEO,IAAA,iBAAiB,CAAC,OAA0B,EAAA;AAClD,QAAA,OAAO,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,CAAC;KAC5C;IAEO,aAAa,CACnB,OAA0B,EAC1B,eAAwB,EAAA;AAExB,QAAA,IACE,eAAe;aACd,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,IAAI,eAAe,KAAK,CAAC,CAAC,EACtE;AACA,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;gBAC9B,OAAO;oBACL,GAAG,EAAE,kBAAkB,CAAC,eAAe;oBACvC,OAAO,EAAE,CAAa,UAAA,EAAA,eAAe,CAAG,CAAA,CAAA;AACxC,oBAAA,IAAI,EAAE,eAAe;iBACtB,CAAC;AACH,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACzB,OAAO;oBACL,GAAG,EAAE,aAAa,CAAC,eAAe;oBAClC,OAAO,EAAE,CAAO,IAAA,EAAA,eAAe,CAAG,CAAA,CAAA;AAClC,oBAAA,IAAI,EAAE,eAAe;iBACtB,CAAC;AACH,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACzB,OAAO;oBACL,GAAG,EAAE,aAAa,CAAC,QAAQ;AAC3B,oBAAA,OAAO,EAAE,4CAA4C;AACrD,oBAAA,IAAI,EAAE,eAAe;iBACtB,CAAC;AACH,aAAA;YAED,OAAO;gBACL,GAAG,EAAE,aAAa,CAAC,UAAU;gBAC7B,OAAO,EAAE,CAAO,IAAA,EAAA,eAAe,CAAG,CAAA,CAAA;AAClC,gBAAA,IAAI,EAAE,eAAe;aACtB,CAAC;AACH,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,kBAAkB,CAAC,OAA0B,EAAA;QACnD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;;AAGD,QAAA,MAAM,sBAAsB,GAAG;AAC7B,YAAA;AACE,gBAAA,GAAG,EAAE,UAAU;AACf,gBAAA,WAAW,EAAE,UAAU;AACvB,gBAAA,KAAK,EAAE,UAAU;AAClB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,KAAK,EAAE,oBAAoB;AAC5B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,cAAc;AACnB,gBAAA,WAAW,EAAE,cAAc;AAC3B,gBAAA,KAAK,EAAE,SAAS;AACjB,aAAA;SACF,CAAC;AAEF,QAAA,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;YAC5C,MAAM,KAAK,GAAI,OAAiD,CAC9D,OAAO,CAAC,WAAW,CACX,CAAC;AAEX,YAAA,IAAI,KAAK,EAAE;gBACT,OAAO;oBACL,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,oBAAA,KAAK,EAAE;wBACL,MAAM,EACJ,OAAO,CAAC,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM;AACxC,8BAAE,CAAC,KAAK,CAAC,MAAM;8BACb,KAAK,CAAC,MAAM;wBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACzB,qBAAA;iBACF,CAAC;AACH,aAAA;AACD,YAAA,OAAO,OAAO,CAAC;AACjB,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,0BAA0B,CAAC,OAA0B,EAAA;QAC3D,MAAM,GAAG,GAAG,EAAE,CAAC;;QAGf,IACE,OAAO,EAAE,QAAQ;AACjB,aAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EACzD;YACA,GAAG,CAAC,IAAI,CAAC;AACP,gBAAA,GAAG,EAAE,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC;AAClD,gBAAA,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC/C,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE;YACnC,GAAG,CAAC,IAAI,CAAC;gBACP,GAAG,EAAE,kBAAkB,CAAC,QAAQ;AAChC,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,cAAc,CAAC;AACrD,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACZ;AAEO,IAAA,6BAA6B,CAAC,OAA0B,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,CAAA,IAAA,EAAO,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAA,CAAA,CAAG,CAAC;AACnD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzB,YAAA,OAAO,4CAA4C,CAAC;AACrD,SAAA;QAED,OAAO,CAAA,IAAA,EAAO,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAA,CAAA,CAAG,CAAC;KACnD;AAEO,IAAA,uBAAuB,CAAC,OAA0B,EAAA;QACxD,MAAM,GAAG,GAAG,EAAE,CAAC;;AAGf,QAAA,IACE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,OAAO,EAAE,GAAG,EAAE,OAAO;AAC9C,YAAA,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAC1B;YACA,GAAG,CAAC,IAAI,CAAC;AACP,gBAAA,GAAG,EAAE,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC;AAC/C,gBAAA,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;AAC/C,gBAAA,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC;AAC1C,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE;YAClE,GAAG,CAAC,IAAI,CAAC;gBACP,GAAG,EAAE,kBAAkB,CAAC,iBAAiB;AACzC,gBAAA,KAAK,EAAE,oBAAoB;AAC3B,gBAAA,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC;AAChD,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACZ;AAEO,IAAA,+BAA+B,CAAC,OAA0B,EAAA;AAChE,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,aAAa,CAAC,eAAe,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,aAAa,CAAC,QAAQ,CAAC;AAC/B,SAAA;QAED,OAAO,aAAa,CAAC,UAAU,CAAC;KACjC;AAEO,IAAA,4BAA4B,CAAC,OAA0B,EAAA;AAC7D,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,aAAa,CAAC,wBAAwB,CAAC;AAC/C,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,aAAa,CAAC,iBAAiB,CAAC;AACxC,SAAA;QAED,OAAO,aAAa,CAAC,mBAAmB,CAAC;KAC1C;AAEO,IAAA,0BAA0B,CAAC,OAA0B,EAAA;AAC3D,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,CAAA,UAAA,EAAa,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAA,KAAA,CAAO,CAAC;AACvD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzB,YAAA,OAAO,sDAAsD,CAAC;AAC/D,SAAA;QAED,OAAO,CAAA,UAAA,EAAa,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAA,KAAA,CAAO,CAAC;KACvD;AAEO,IAAA,OAAO,CAAC,OAA0B,EAAA;AACxC,QAAA,OAAO,OAAO,EAAE,eAAe,CAAC,GAAG,KAAK,IAAI,CAAC;KAC9C;AAEO,IAAA,OAAO,CAAC,OAA0B,EAAA;AACxC,QAAA,OAAO,OAAO,EAAE,eAAe,CAAC,GAAG,KAAK,IAAI,CAAC;KAC9C;AAEO,IAAA,cAAc,CAAC,GAAW,EAAA;AAChC,QAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KAC9D;;gIA9TU,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnC,mCAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,cADtB,MAAM,EAAA,CAAA,CAAA;2FACnB,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACd3B,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACxC,KAAK;IACL,sBAAsB;IACtB,oBAAoB;IACpB,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;IAClB,UAAU;IACV,YAAY;IACZ,UAAU;IACV,iCAAiC;IACjC,YAAY;IACZ,wBAAwB;IACxB,gBAAgB;AACjB,CAAA,CAAC;;ACdF,IAAY,cAGX,CAAA;AAHD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,IAAY,CAAA;AACZ,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,IAAY,CAAA;AACd,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;MCkBY,kCAAkC,CAAA;AAC7C,IAAA,WAAA,CACmB,kCAAuE,EAAA;QAAvE,IAAkC,CAAA,kCAAA,GAAlC,kCAAkC,CAAqC;KACtF;IAEG,iBAAiB,CACtB,MAAc,EACd,QAA4B,EAAA;QAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7D,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACzC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;AAEnC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oCAAoC,CAC9D,QAAQ,EACR,KAAK,EACL,OAAO,CACR,CAAC;QAEF,OAAO;YACL,QAAQ;AACR,YAAA,OAAO,EAAE,cAAc;YACvB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC;YACtD,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;AAC9D,YAAA,cAAc,EAAE,OAAO;SACxB,CAAC;KACH;AAEO,IAAA,eAAe,CACrB,WAA8B,EAAA;AAE9B,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CACpC,CACE,gCAAkE,EAClE,GAAW,KACT;AACF,YAAA,MAAM,KAAK,GAAqB,WAAW,CAAC,GAAG,CAAC,CAAC;AAEjD,YAAA,IAAI,KAAK,EAAE,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AACpD,gBAAA,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;AACzC,aAAA;YACD,OAAO,EAAE,GAAG,gCAAgC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC;SAC9D,EACD,EAAE,CACH,CAAC;KACH;AAEO,IAAA,2BAA2B,CAAC,KAMnC,EAAA;QACC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AACnD,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAEnE,QAAA,IAAI,aAAa,EAAE;YACjB,MAAM,cAAc,GAAG,CAAC,CAAC;YACzB,MAAM,gBAAgB,GAAG,CAAC,CAAC;YAC3B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;AACrD,YAAA,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAClD,SAAA;KACF;IAEO,YAAY,CAClB,QAA4B,EAC5B,cAAiC,EAAA;QAEjC,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,kCAAkC,CAAC,iBAAiB,CAAC;YACxD,QAAQ;AACR,YAAA,OAAO,EAAE,cAAc;AACxB,SAAA,CAAC,CAAC;QAEL,OAAO,cAAc,CAAC,SAAS,CAAC;KACjC;AAEO,IAAA,oCAAoC,CAC1C,QAA4B,EAC5B,KAAyB,EACzB,OAAe,EAAA;QAEf,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE;AAC/C,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,eAAe,EAAE;AACf,gBAAA,GAAG,EAAE,OAAO;AACb,aAAA;SACY,CAAC;QAEhB,MAAM,iBAAiB,GAAG,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACtD,QAAA,MAAM,uBAAuB,GAAG,iBAAiB,EAAE,MAAM,IAAI,CAAC,CAAC;QAC/D,MAAM,iBAAiB,GAAG,GAAG,CAAC;QAC9B,MAAM,SAAS,GACb,CAAC,uBAAuB,GAAG,iBAAiB,EAAE,iBAAiB;AAC/D,YAAA,iBAAiB,CAAC;AAEpB,QAAA,IAAI,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE;YACpC,OAAO,CAAC,SAAS,GAAG;AAClB,gBAAA,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB;AAC7C,gBAAA,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE;aAC7C,CAAC;AACH,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,eAAe,EAAE,QAAQ,EAAE;YACnC,OAAO,CAAC,GAAG,GAAG;AACZ,gBAAA,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB;AAC7C,gBAAA,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE;AAC5C,gBAAA,OAAO,EAAE,IAAI;aACd,CAAC;AACH,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;AAEO,IAAA,cAAc,CACpB,MAAc,EACd,WAA6C,EAC7C,OAAe,EAAA;AAEf,QAAA,MAAM,IAAI,GAAgB;AACxB,YAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YACjC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC;AACxD,YAAA,eAAe,EAAE;AACf,gBAAA,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AACvC,gBAAA,GAAG,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,OAAO,CAAC;AACzD,aAAA;YACD,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC;YACnE,QAAQ,EAAE,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,IAAI,IAAI;YAC9D,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,IAAI;SAC9D,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,QAAQ,CAAC,WAA6C,EAAA;QAC5D,OAAO;AACL,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,oBAAoB,CACzB,WAAW,CAAC,GAAiC,CAC9C;SACF,CAAC;KACH;AAEO,IAAA,kBAAkB,CACxB,WAA6C,EAAA;AAE7C,QAAA,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,OAAO;AACL,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,oBAAoB,CACzB,WAAW,CAAC,QAAsC,CACnD;SACF,CAAC;KACH;AAEO,IAAA,0BAA0B,CAChC,WAA6C,EAAA;AAE7C,QAAA,IAAI,CAAC,WAAW,EAAE,+BAA+B,EAAE;AACjD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,OAAO;AACL,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,+BAA+B,CAAC;SACzE,CAAC;KACH;IAEO,eAAe,CACrB,WAA6C,EAC7C,OAAe,EAAA;QAEf,MAAM,YAAY,GAAe,EAAE,CAAC;AAEpC,QAAA,MAAM,uBAAuB,GAAG,WAAW,CACzC,oBAAoB,CACS,CAAC;AAChC,QAAA,IAAI,uBAAuB,EAAE;YAC3B,YAAY,CAAC,IAAI,CAAC;gBAChB,KAAK,EAAE,uBAAuB,CAAC,IAAI;AACnC,gBAAA,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE,uBAAuB,CAAC,MAAM,IAAI,IAAI;AAC9C,oBAAA,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,IAAI,EAAE;AACjD,iBAAA;AACF,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,yBAAyB,GAAG,WAAW,CAC3C,sBAAsB,CACO,CAAC;QAEhC,IAAI,yBAAyB,EAAE,IAAI,EAAE;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAElE,YAAY,CAAC,IAAI,CAAC;gBAChB,GAAG,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACtD,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC;AACzD,gBAAA,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE,yBAAyB,CAAC,MAAM,IAAI,IAAI;AAChD,oBAAA,QAAQ,EAAE,yBAAyB,CAAC,QAAQ,IAAI,EAAE;AACnD,iBAAA;AACF,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,YAAY,CAAC;KACrB;AAEO,IAAA,kBAAkB,CACxB,WAA6C,EAAA;AAE7C,QAAA,MAAM,sBAAsB,GAAG;AAC7B,YAAA;AACE,gBAAA,GAAG,EAAE,UAAU;AACf,gBAAA,WAAW,EAAE,UAAU;AACvB,gBAAA,KAAK,EAAE,UAAU;AAClB,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,WAAW,EAAE,kBAAkB;AAC/B,gBAAA,KAAK,EAAE,oBAAoB;AAC5B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,cAAc;AACnB,gBAAA,WAAW,EAAE,YAAY;AACzB,gBAAA,KAAK,EAAE,SAAS;AACjB,aAAA;SACF,CAAC;AAEF,QAAA,MAAM,cAAc,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAErD,IAAI,cAAc,EAAE,IAAI,EAAE;YACxB,sBAAsB,CAAC,IAAI,CAAC;AAC1B,gBAAA,GAAG,EAAE,eAAe;AACpB,gBAAA,WAAW,EAAE,gBAAgB;gBAC7B,KAAK,EAAE,cAAc,CAAC,IAAI;AAC3B,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,OAAO,sBAAsB,CAAC,MAAM,CAClC,CACE,eAA2B,EAC3B,OAA+C,KAC7C;YACF,MAAM,KAAK,GAAG,WAAW,CACvB,OAAO,CAAC,WAAW,CACU,CAAC;AAChC,YAAA,IAAI,KAAK,EAAE;gBACT,eAAe,CAAC,IAAI,CAAC;oBACnB,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,oBAAA,KAAK,EAAE;AACL,wBAAA,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;AAC5B,wBAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;AAC/B,qBAAA;AACF,iBAAA,CAAC,CAAC;AACJ,aAAA;AACD,YAAA,OAAO,eAAe,CAAC;SACxB,EACD,EAAE,CACH,CAAC;KACH;IAEO,0BAA0B,CAChC,WAA6C,EAC7C,OAAe,EAAA;QAEf,MAAM,uBAAuB,GAAe,EAAE,CAAC;AAC/C,QAAA,MAAM,uBAAuB,GAAG,WAAW,CACzC,oBAAoB,CACS,CAAC;QAChC,IAAI,uBAAuB,EAAE,IAAI,EAAE;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAChE,uBAAuB,CAAC,IAAI,CAAC;gBAC3B,GAAG,EAAE,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACzD,KAAK,EAAE,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC7D,gBAAA,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE,uBAAuB,CAAC,MAAM,IAAI,IAAI;AAC9C,oBAAA,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,IAAI,EAAE;AACjD,iBAAA;AACF,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,uBAAuB,CAAC;KAChC;IAEO,4BAA4B,CAClC,QAAuB,EACvB,OAAe,EAAA;AAEf,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzB,YAAA,OAAO,QAAQ,GAAG,aAAa,CAAC,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC;AAC1E,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,aAAa,CAAC,QAAQ,CAAC;AAC/B,SAAA;AAED,QAAA,OAAO,QAAQ,GAAG,aAAa,CAAC,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC;KAChE;IAEO,8BAA8B,CACpC,QAAuB,EACvB,OAAe,EAAA;AAEf,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,QAAQ,GAAG,CAAA,IAAA,EAAO,QAAQ,CAAA,CAAA,CAAG,GAAG,KAAK,CAAC;AAC9C,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzB,YAAA,OAAO,4CAA4C,CAAC;AACrD,SAAA;QAED,OAAO,QAAQ,GAAG,CAAA,IAAA,EAAO,QAAQ,CAAA,CAAA,CAAG,GAAG,KAAK,CAAC;KAC9C;IAEO,yBAAyB,CAC/B,QAAuB,EACvB,OAAe,EAAA;AAEf,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzB,YAAA,OAAO,QAAQ;kBACX,aAAa,CAAC,wBAAwB;AACxC,kBAAE,aAAa,CAAC,iBAAiB,CAAC;AACrC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,aAAa,CAAC,iBAAiB,CAAC;AACxC,SAAA;AAED,QAAA,OAAO,QAAQ;cACX,aAAa,CAAC,mBAAmB;AACnC,cAAE,aAAa,CAAC,YAAY,CAAC;KAChC;IAEO,0BAA0B,CAChC,QAAuB,EACvB,OAAe,EAAA;AAEf,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,QAAQ,GAAG,CAAA,UAAA,EAAa,QAAQ,CAAA,KAAA,CAAO,GAAG,eAAe,CAAC;AAClE,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzB,YAAA,OAAO,sDAAsD,CAAC;AAC/D,SAAA;QAED,OAAO,QAAQ,GAAG,CAAA,UAAA,EAAa,QAAQ,CAAA,KAAA,CAAO,GAAG,CAAA,aAAA,CAAe,CAAC;KAClE;AAEO,IAAA,OAAO,CAAC,OAAe,EAAA;AAC7B,QAAA,OAAO,OAAO,KAAK,cAAc,CAAC,KAAK,CAAC;KACzC;AAEO,IAAA,OAAO,CAAC,OAAe,EAAA;AAC7B,QAAA,OAAO,OAAO,KAAK,cAAc,CAAC,KAAK,CAAC;KACzC;IAEO,qBAAqB,CAC3B,MAAc,EACd,WAA6C,EAAA;QAE7C,MAAM,kBAAkB,GAAe,EAAE,CAAC;AAC1C,QAAA,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;YAC9B,kBAAkB,CAAC,IAAI,CAAC;AACtB,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK;AACnC,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,WAAW,GACf,MAAM,CAAC,YAAY;AACnB,aAAC,MAAM,CAAC,WAAW,KAAK,UAAU,CAAC,UAAU;AAC3C,gBAAA,MAAM,CAAC,WAAW,KAAK,UAAU,CAAC,OAAO;AACzC,gBAAA,MAAM,CAAC,WAAW,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;YAC1C,kBAAkB,CAAC,IAAI,CAAC;AACtB,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK;AAC/B,gBAAA,UAAU,EAAE,IAAI;AACjB,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,kBAAkB,CAAC;KAC3B;AAEO,IAAA,WAAW,CAAC,KAAa,EAAA;QAC/B,MAAM,gBAAgB,GAAG,cAAc,CAAC;QACxC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzD,IAAI,CAAC,mBAAmB,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC;KAC/B;;+HAtZU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAuB,mCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlC,kCAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,cADrB,MAAM,EAAA,CAAA,CAAA;2FACnB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACT5B,MAAO,qBAAsB,SAAQ,eAA+B,CAAA;AAGxE,IAAA,WAAA,CACmB,cAA8B,EAC9B,mCAAwE,EACxE,kCAAsE,EAAA;AAEvF,QAAA,KAAK,EAAE,CAAC;QAJS,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAmC,CAAA,mCAAA,GAAnC,mCAAmC,CAAqC;QACxE,IAAkC,CAAA,kCAAA,GAAlC,kCAAkC,CAAoC;QALxE,IAAkB,CAAA,kBAAA,GAAG,UAAU,CAAC;KAQhD;AAEM,IAAA,eAAe,CAAC,OAAoB,EAAA;AACzC,QAAA,IAAI,OAAO,EAAE;YACX,MAAM,cAAc,GAClB,IAAI,CAAC,mCAAmC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEtE,IAAI,cAAc,CAAC,QAAQ,EAAE;AAC3B,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,kBAAkB,EACvB,cAAc,CAAC,QAAQ,CACxB,CAAC;AACH,aAAA;AAED,YAAA,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC5B,SAAA;KACF;AAEM,IAAA,cAAc,CAAC,MAAe,EAAA;AACnC,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CACtC,IAAI,CAAC,kBAAkB,CACxB,CAAC;AACF,YAAA,MAAM,cAAc,GAClB,IAAI,CAAC,kCAAkC,CAAC,iBAAiB,CACvD,MAAM,EACN,QAAQ,CACT,CAAC;AACJ,YAAA,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC5B,SAAA;KACF;;kHAvCU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mCAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA,CAAA;2FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACPlC;AACM,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;IAMvD,WAAmB,CAAA,KAAoB,EAAE,OAAe,EAAA;AACtD,QAAA,KAAK,EAAE,CAAC;QALM,IAAe,CAAA,eAAA,GAAG,QAAQ,CAAC;QAE3B,IAAO,CAAA,OAAA,GAAG,WAAW,CAAC;QAKpC,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,MAAM,IAAI,UAAU,EAAE,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;AACF;;ACTM,MAAM,8BAA8B,GACzC,IAAI,cAAc,CAA4B,oBAAoB,CAAC,CAAC;AAE/D,MAAM,iCAAiC,GAAkB;AAC9D,IAAA,OAAO,EAAE,8BAA8B;AACvC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAAkC,KAC9C,IAAI,kBAAkB,CAAC,GAAG,IAAI,CAAC;CAClC;;ACfD;MACa,mBAAmB,CAAA;AAK9B,IAAA,WAAA,CAAmB,UAA2C,EAAA;AAC5D,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,wBAAwB,GAAG,UAAU,CAAC,wBAAwB,CAAC;KACrE;AACF;;ACLM,MAAM,+BAA+B,GAC1C,IAAI,cAAc,CAA6B,qBAAqB,CAAC,CAAC;AAEjE,MAAM,kCAAkC,GAAkB;AAC/D,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAAwB,KAAK,IAAI,mBAAmB,CAAC,GAAG,IAAI,CAAC;CAC5E;;ACMK,MAAO,kBAAmB,SAAQ,UAA+B,CAAA;IAGrE,WACmB,CAAA,aAA4B,EAC5B,eAAgC,EAChC,+BAAgE,EAEhE,cAAyC,EAEzC,eAA2C,EAAA;AAE5D,QAAA,KAAK,EAAE,CAAC;QARS,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAA+B,CAAA,+BAAA,GAA/B,+BAA+B,CAAiC;QAEhE,IAAc,CAAA,cAAA,GAAd,cAAc,CAA2B;QAEzC,IAAe,CAAA,eAAA,GAAf,eAAe,CAA4B;KAG7D;AAEM,IAAA,gBAAgB,CAAC,OAAe,EAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;IAEM,OAAO,GAAA;AACZ,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CACvC,IAAI,CAAC,eAAe,CAAC,KAAK,EAC1B,IAAI,CAAC,OAAO,CACb,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa;aACf,oBAAoB,CAAC,aAAa,CAAC;AACnC,aAAA,IAAI,CAAC,CAAC,WAAwB,KAAI;YACjC,MAAM,QAAQ,GACZ,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC9D,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC;gBAC/C,MAAM,EAAE,QAAQ,CAAC,MAAoB;gBACrC,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,wBAAwB,EAAE,QAAQ,CAAC,2BAA2B;AAC/D,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;AACzC,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,KAAY,KAAI;AACtB,YAAA,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;KACN;;+GAzCU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjB,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAsB,+BAAA,EAAA,EAAA,EAAA,KAAA,EAOnB,8BAA8B,EAAA,EAAA,EAAA,KAAA,EAE9B,+BAA+B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAT9B,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAQI,MAAM;2BAAC,8BAA8B,CAAA;;0BAErC,MAAM;2BAAC,+BAA+B,CAAA;;;AC9B3C,IAAY,eAGX,CAAA;AAHD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC,CAAA;AAChC,IAAA,eAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC,CAAA;AACpC,CAAC,EAHW,eAAe,KAAf,eAAe,GAG1B,EAAA,CAAA,CAAA;;ACHD,IAAY,mBAGX,CAAA;AAHD,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,mBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AAC3B,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,GAG9B,EAAA,CAAA,CAAA;;MCMY,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;AAQS,QAAA,IAAA,CAAA,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC;QAUhC,IAAmB,CAAA,mBAAA,GAAyC,IAAI,CAAC;AAMxD,QAAA,IAAA,CAAA,iBAAiB,GAChC,IAAI,OAAO,EAAgB,CAAC;AACb,QAAA,IAAA,CAAA,kCAAkC,GACjD,IAAI,OAAO,EAAQ,CAAC;AAsHvB,KAAA;AApHQ,IAAA,MAAM,IAAI,GAAA;QACf,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACxC,OAAO,IAAI,CAAC,WAAW,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE;aACvC,KAAK,CAAC,YAAW;AAChB,YAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACtC,SAAC,CAAC;aACD,IAAI,CAAC,MAAK;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;AACpD,SAAC,CAAC,CAAC;QAEL,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAEM,KAAK,GAAA;QACV,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB;AAC1B,aAAA,YAAY,EAAE;AACd,aAAA,IAAI,CAACC,KAAG,CAAC,CAAC,KAA2B,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3D;AAEM,IAAA,iCAAiC,CAAC,IAAiB,EAAA;QACxD,OAAO,IAAI,CAAC,kCAAkC;AAC3C,aAAA,YAAY,EAAE;aACd,SAAS,CAAC,IAAI,CAAC,CAAC;KACpB;IAEO,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,CAC/D,IAAI,CAAC,UAAU,CAAC,UAAU,CAC3B,CAAC;KACH;IAEO,sBAAsB,GAAA;QAC5B,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACjC,SAAA;KACF;IAEO,2BAA2B,GAAA;AACjC,QAAA,MAAM,GAAG,GACP,qBAAqB,CAAC,UAAU,CAAC,YAAY;AAC7C,YAAA,qBAAqB,CAAC,UAAU,CAAC,wBAAwB,CAAC;AAC5D,QAAA,MAAM,GAAG,GACP,qBAAqB,CAAC,UAAU,CAAC,YAAY;AAC7C,YAAA,qBAAqB,CAAC,UAAU,CAAC,wBAAwB,CAAC;AAC5D,QAAA,IAAI,CAAC,qBAAqB;AACxB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;KACrD;IAEO,4BAA4B,GAAA;AAClC,QAAA,IAAI,CAAC,qBAAqB;AACxB,YAAA,IAAI,CAAC,qBAAqB;gBAC1B,qBAAqB,CAAC,kCAAkC,CAAC;KAC5D;AAEO,IAAA,MAAM,gBAAgB,GAAA;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAC1D,IAAI,CAAC,iBAAiB,CACvB,CAAC;QAEF,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AAC3C,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAK;AAC5B,gBAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACzC,gBAAA,OAAO,EAAE,CAAC;AACZ,aAAC,CAAC;AAEF,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,MAAK;AAC7B,gBAAA,MAAM,EAAE,CAAC;AACX,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,MAAM,SAAS,GAAA;QACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,MAAK;gBACzC,IAAI,CAAC,gBAAgB,EAAE;qBACpB,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;qBACzB,KAAK,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACtC,aAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,MAAM,qBAAqB,GAAA;QACjC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEnC,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,OAAO,CAAC,WAAW,EAAE;AACnB,YAAA,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,CAAC,kCAAkC,CAAC,IAAI,EAAE,CAAC;KAChD;;AA5IsB,qBAAkC,CAAA,kCAAA,GAAG,CAAC,CAAC;AAMtC,qBAAA,CAAA,UAAU,GAAG;AACnC,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,wBAAwB,EAAE,IAAI;CAC/B,CAAC;kHAVS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACJK,MAAO,OAAQ,SAAQ,WAAW,CAAA;AACtC,IAAA,WAAA,CAAmB,OAAe,EAAE,WAAmB,EAAE,IAAkB,EAAA;QACzE,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAEvD,QAAA,MAAM,kBAAkB,GAAG,CAAA,EAAG,OAAO,CAAmB,gBAAA,EAAA,WAAW,EAAE,CAAC;AAEtE,QAAA,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;KACjC;AACF;;MCUY,gBAAgB,CAAA;AAM3B,IAAA,WAAA,CACwC,MAAsB,EAC3C,eAAgC,EAChC,IAAgB,EAChB,MAAc,EAAA;QAHO,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QAC3C,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AARhB,QAAA,IAAA,CAAA,OAAO,GAAW,IAAI,MAAM,CAC3C,sCAAsC,CACvC,CAAC;AAQA,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;KACzC;AAEM,IAAA,WAAW,CAAC,KAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,IAAI,SAAS,EAAE,EAAE;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO;AACR,aAAA;AAED,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,GAAG,CACR,OAAe,EACf,IAAiB,EACjB,KAAkC,EAAA;QAElC,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;QAEjD,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO;AACR,SAAA;AAED,QAAA,MAAM,UAAU,GAAe;AAC7B,YAAA,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACxC,KAAK;YACL,OAAO;SACR,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;KACnC;IAEO,MAAM,UAAU,CAAC,KAAY,EAAA;AACnC,QAAA,MAAM,QAAQ,GACZ,KAAK,YAAY,WAAW;AAC1B,cAAE,KAAK;AACP,cAAE,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzD,QAAQ,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD,QAAA,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEnD,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC/B,QAAA,OAAO,QAAQ,CAAC;KACjB;AAEO,IAAA,MAAM,cAAc,GAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,MAAM,OAAO,eAAe,CAAC,CAAC;QAC9C,OAAO,OAAO,CAAC,OAAO,CAAC;KACxB;IAEO,MAAM,aAAa,CAAC,KAAY,EAAA;AACtC,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;QAEzC,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAC7C,CAAC,EAAE,QAAQ,EAAE,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC3D,CAAC;AAEF,QAAA,OAAO,iBAAiB;aACrB,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;aAC1C,IAAI,CAAC,IAAI,CAAC,CAAC;KACf;IAEO,iBAAiB,GAAA;AACvB,QAAA,MAAM,cAAc,GAAG,CAAC,GAAW,KACjC,GAAG,CAAC,OAAO,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;QAEjD,OAAO;AACL,YAAA,QAAQ,EAAE;AACR,gBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;AAC/B,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;AACpC,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ;AACnC,aAAA;AACD,YAAA,QAAQ,EAAE;gBACR,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW;gBACvD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY;AAC1D,aAAA;AACD,YAAA,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM;kBAC7C,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;AACtD,kBAAE,MAAM;YACV,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAChD,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc;SACxD,CAAC;KACH;AAEO,IAAA,qBAAqB,CAAC,KAAkB,EAAA;AAC9C,QAAA,MAAM,YAAY,GAAG;YACnB,WAAW;YACX,UAAU;YACV,wBAAwB;YACxB,MAAM;SACP,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACjC,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC,GAAwB,CAAC,CAAC;AACzE,SAAC,CAAC,CAAC;;QAGH,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;KAC7C;IAEO,OAAO,CACb,OAA4C,EAC5C,IAAiB,EAAA;QAEjB,MAAM,GAAG,GAAG,CAAA,+BAAA,EAAkC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;QAE/D,cAAc,CACZ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;YAC3B,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC;AAC5D,YAAA,YAAY,EAAE,MAAM;AACrB,SAAA,CAAC,CACH,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC,CAAC;KACnE;;AAzIU,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAOjB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA5B,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA6B,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAPV,gBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAQI,MAAM;2BAAC,WAAW,CAAA;;;MCVV,0BAA0B,CAAA;AA8BrC,IAAA,WAAA,CAAoC,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AA3B/D,QAAA,IAAA,CAAA,IAAI,GAAG,mBAAmB,CAAC,UAAU,CAAC;QAQrC,IAAmB,CAAA,mBAAA,GAAyC,IAAI,CAAC;QAOjE,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QACzB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAKZ,QAAA,IAAA,CAAA,iBAAiB,GAChC,IAAI,OAAO,EAAsB,CAAC;AAEnB,QAAA,IAAA,CAAA,kCAAkC,GACjD,IAAI,OAAO,EAAQ,CAAC;KAEoD;AAEnE,IAAA,MAAM,IAAI,CAAC,GAAW,EAAE,OAAe,EAAA;QAC5C,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;YAChD,OAAO;AACR,SAAA;QAED,IAAI;AACF,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,SAAA;AAAC,QAAA,OAAO,KAAc,EAAE;;YAEvB,MAAM,OAAO,IAAI,KAAK,EAAE,OAAO,IAAI,KAAK,CAAW,CAAC;YACpD,MAAM,YAAY,GAAG,IAAI,OAAO,CAC9B,CAA4B,yBAAA,EAAA,OAAO,CAAE,CAAA,EACrC,OAAO,CACR,CAAC;AAEF,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACjD,SAAA;KACF;IAEM,KAAK,GAAA;QACV,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;KAC9B;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,QACE,IAAI,CAAC,iBAAiB;AACnB,aAAA,YAAY,EAAE;;;AAGd,aAAA,IAAI,CAACD,KAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,EACnC;KACH;AAEM,IAAA,iCAAiC,CAAC,IAAiB,EAAA;QACxD,OAAO,IAAI,CAAC,kCAAkC;AAC3C,aAAA,YAAY,EAAE;aACd,SAAS,CAAC,IAAI,CAAC,CAAC;KACpB;IAEO,sBAAsB,GAAA;QAC5B,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACjC,SAAA;KACF;IAEO,2BAA2B,GAAA;AACjC,QAAA,MAAM,GAAG,GACP,0BAA0B,CAAC,UAAU,CAAC,YAAY;AAClD,YAAA,0BAA0B,CAAC,UAAU,CAAC,wBAAwB,CAAC;AACjE,QAAA,MAAM,GAAG,GACP,0BAA0B,CAAC,UAAU,CAAC,YAAY;AAClD,YAAA,0BAA0B,CAAC,UAAU,CAAC,wBAAwB,CAAC;AACjE,QAAA,IAAI,CAAC,qBAAqB;AACxB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;KACrD;IAEO,4BAA4B,GAAA;AAClC,QAAA,IAAI,CAAC,qBAAqB;AACxB,YAAA,IAAI,CAAC,qBAAqB;gBAC1B,0BAA0B,CAAC,kCAAkC,CAAC;KACjE;AAEO,IAAA,MAAM,mBAAmB,GAAA;AAC/B,QAAA,OAAO,OAAO,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;KACjE;AAEO,IAAA,MAAM,gBAAgB,CAC5B,GAAY,EACZ,OAAgB,EAAA;AAEhB,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAAE;YAC9C,OAAO;AACR,SAAA;;AAGD,QAAA,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE1D,QAAA,MAAM,YAAY,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;AACrC,QAAA,MAAM,gBAAgB,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;AAEjD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,YAAY,EAAE;AACnD,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,kBAAkB,EAAE,IAAI;AACzB,SAAA,CAAC,CAAC;QAEH,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AAC3C,YAAA,IAAI,CAAC,UAAU;AACZ,iBAAA,EAAE,CAAC,YAAY,EAAE,MAAK;AACrB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3B,aAAC,CAAC;AACD,iBAAA,EAAE,CAAC,WAAW,EAAE,MAAK;gBACpB,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,OAAO,EAAE,CAAC;AACZ,aAAC,CAAC;AACD,iBAAA,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,KAAI;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;AACzC,gBAAA,MAAM,EAAE,CAAC;AACX,aAAC,CAAC;AACD,iBAAA,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAI;AACnB,gBAAA,MAAM,OAAO,GAAG,CAAQ,KAAA,EAAA,GAAG,CAAC,KAAK,CAAC,IAAI,CAAA,GAAA,EAAM,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAEhE,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,CAAqB,kBAAA,EAAA,OAAO,CAAE,CAAA,EAC9B,CAAC,SAAS,CAAC,EAAE,CAAC,EACd;AACE,oBAAA,OAAO,EAAE,gBAAgB;AAC1B,iBAAA,CACF,CAAC;AACJ,aAAC,CAAC;AACD,iBAAA,OAAO,EAAE,CAAC;AAEb,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CACjD,gBAAgB,EAChB,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAC9C,CAAC;AAEF,YAAA,IAAI,CAAC,YAAY;AACd,iBAAA,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,KAAI;AACxB,gBAAA,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,cAAc,CAAC;AAC/C,gBAAA,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC;AAChD,aAAC,CAAC;AACD,iBAAA,EAAE,CAAC,aAAa,EAAE,CAAC,GAAG,KAAI;AACzB,gBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,IAAc,CAAC;AAEnC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,CAA+B,4BAAA,EAAA,OAAO,CAAE,CAAA,EACxC,CAAC,SAAS,CAAC,EAAE,CAAC,EACd;AACE,oBAAA,OAAO,EAAE,gBAAgB;AAC1B,iBAAA,CACF,CAAC;AAEF,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,aAAC,CAAC;AACD,iBAAA,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAI;AACnB,gBAAA,MAAM,OAAO,GAAG,CAAQ,KAAA,EAAA,GAAG,CAAC,KAAK,CAAC,IAAI,CAAA,GAAA,EAAM,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAEhE,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,CAAuB,oBAAA,EAAA,OAAO,CAAE,CAAA,EAChC,CAAC,SAAS,CAAC,EAAE,CAAC,EACd;AACE,oBAAA,OAAO,EAAE,gBAAgB;AAC1B,iBAAA,CACF,CAAC;AACJ,aAAC,CAAC;AACD,iBAAA,SAAS,EAAE,CAAC;AACjB,SAAC,CAAC,CAAC;KACJ;IAEO,SAAS,GAAA;AACf,QAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAC9B;IAEO,YAAY,CAClB,GAAwB,EACxB,gBAAwB,EAAA;AAExB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;;AAG9B,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;YAClB,MAAM,OAAO,GAAG,CAAA,KAAA,EAAQ,GAAG,CAAC,IAAI,CAAA,GAAA,EAAM,GAAG,CAAC,MAAM,CAAA,CAAE,CAAC;AAEnD,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,CAAuB,oBAAA,EAAA,OAAO,CAAE,CAAA,EAChC,CAAC,SAAS,CAAC,EAAE,CAAC,EACd;AACE,gBAAA,OAAO,EAAE,gBAAgB;AAC1B,aAAA,CACF,CAAC;YAEF,CAAC,YAAW;AACV,gBAAA,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;aACpC,GAAG,CAAC;AACN,SAAA;KACF;AAEO,IAAA,MAAM,SAAS,GAAA;QACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,MAAK;gBACzC,IAAI,CAAC,gBAAgB,EAAE;qBACpB,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;qBACzB,KAAK,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACtC,aAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,MAAM,qBAAqB,GAAA;QACjC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEnC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEtC,OAAO,CAAC,WAAW,EAAE;AACnB,YAAA,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AACtC,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AAErC,QAAA,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC;AAE/C,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,CAA4C,yCAAA,EAAA,aAAa,CAAI,EAAA,CAAA,EAC7D,CAAC,SAAS,CAAC,EAAE,CAAC,EACd;YACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,SAAA,CACF,CAAC;AAEF,QAAA,IAAI,CAAC,kCAAkC,CAAC,IAAI,EAAE,CAAC;KAChD;AAEO,IAAA,sBAAsB,CAC5B,gBAAwB,EAAA;AAExB,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,WAAW,EAAE,IAAI;SAClB,CAAC;AAEF,QAAA,IACE,gBAAgB,KAAK,IAAI,CAAC,qBAAqB;YAC/C,IAAI,CAAC,oBAAoB,EACzB;AACA,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC3C,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;;AApRsB,0BAAkC,CAAA,kCAAA,GAAG,CAAC,CAAC;AAItC,0BAAA,CAAA,UAAU,GAAG;AACnC,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,wBAAwB,EAAE,IAAI;CAC/B,CAAC;uHARS,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFzB,MAAM,EAAA,CAAA,CAAA;2FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACZD;MAIa,gBAAgB,CAAA;IAC3B,WACmB,CAAA,cAAqC,EACrC,mBAA+C,EAAA;QAD/C,IAAc,CAAA,cAAA,GAAd,cAAc,CAAuB;QACrC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAA4B;KAC9D;IAEG,qBAAqB,CAC1B,GAAW,EACX,UAA+B,EAAA;AAE/B,QAAA,IAAI,UAAU,KAAK,mBAAmB,CAAC,UAAU,EAAE;YACjD,OAAO,IAAI,CAAC,mBAAmB,CAAC;AACjC,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG,GAAG,CAAC;QAE9B,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;;6GAjBU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCCY,sBAAsB,CAAA;AAgBjC,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC;KACnD;AACD,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;KACjD;AAED,IAAA,WAAA,CAAoC,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AApBrD,QAAA,IAAA,CAAA,sBAAsB,GAGnC;AACF,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,SAAS,EAAE,MAAM;SAClB,CAAC;AAEe,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC7C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAQ,CAAC;QAEpD,IAAe,CAAA,eAAA,GAA2B,IAAI,CAAC;KASmB;AAEnE,IAAA,MAAM,wBAAwB,CACnC,YAAoB,EACpB,oBAA4B,EAC5B,mBAAwC,EAAA;AAExC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAChE,YAAY,EACZ,mBAAmB,CACpB,CAAC;QAEF,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;AAEpE,QAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,CACnE,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAC5C,CAAC;AAEF,QAAA,IAAI,CAAC,iCAAiC;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,iCAAiC,CAAC,MAAK;AAC1D,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;AACrC,aAAC,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;IAEM,cAAc,GAAA;QACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;IAEM,4BAA4B,GAAA;QACjC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,sBAAsB,CAAC,SAAS,GAAG,UAAU,CAAC,MAAK;AACtD,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;AACrC,SAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;KAC3C;IAEO,4BAA4B,GAAA;AAClC,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE;AACzC,YAAA,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9C,SAAA;KACF;AAEO,IAAA,gBAAgB,CAAC,OAAe,EAAA;AACtC,QAAA,IAAI,OAAO,KAAK,eAAe,CAAC,aAAa,EAAE;AAC7C,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACrC,SAAA;AACD,QAAA,IAAI,OAAO,KAAK,eAAe,CAAC,cAAc,EAAE;YAC9C,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;KACF;IAEO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,iCAAiC,EAAE,WAAW,EAAE,CAAC;KACvD;;mHArFU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCKY,mBAAmB,CAAA;AAQ9B,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC;KACnD;AAED,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;KACjD;AAED,IAAA,WAAA,CACmB,aAAmC,EACnC,kBAAsC,EACtC,sBAA8C,EAAA;QAF9C,IAAa,CAAA,aAAA,GAAb,aAAa,CAAsB;QACnC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QACtC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QAlB1D,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAEV,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAAkB,CAAC;AACvD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAiB,CAAC;AACpD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAkB,CAAC;AAC3D,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;KAcnC;AAEG,IAAA,MAAM,CAAC,OAAe,EAAA;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAE/B,QAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAElD,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAC9C;IAEM,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;AAEO,IAAA,qBAAqB,CAAC,OAAe,EAAA;QAC3C,IAAI,CAAC,aAAa,CAAC,SAAS;AACzB,aAAA,IAAI,CACHC,QAAM,CAAC,CAAC,cAAc,KAAI;YACxB,OAAO,cAAc,EAAE,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;SAC5D,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;AACA,aAAA,SAAS,CAAC,CAAC,cAAqC,KAAI;AACnD,YAAA,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE;gBAC3B,OAAO;AACR,aAAA;AAED,YAAA,MAAM,cAAc,GAAG;AACrB,gBAAA,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,WAAW;AAC9C,gBAAA,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,YAAY;AAChD,gBAAA,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,WAAW;AAChD,gBAAA,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe;AACtD,gBAAA,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,YAAY;AAChD,gBAAA,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,YAAY;AAChD,gBAAA,oBAAoB,EAAE,cAAc,CAAC,MAAM,CAAC,oBAAoB;AAChE,gBAAA,mBAAmB,EAAE,cAAc,CAAC,MAAM,CAAC,mBAAmB;aAC/D,CAAC;AAEF,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC7B,gBAAA,cAAc,EAAE,cAAc;AAC9B,gBAAA,cAAc,EAAE,cAAc;AAC/B,aAAA,CAAC,CAAC;YAEH,IAAI,cAAc,CAAC,aAAa,EAAE;AAChC,gBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACnC,OAAO;AACR,aAAA;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;KACN;IAEO,0BAA0B,GAAA;QAChC,IAAI,CAAC,kBAAkB,CAAC,SAAS;AAC9B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,mBAA+C,KAAI;YAC7D,IAAI,CAAC,mBAAmB,EAAE,MAAM;gBAAE,OAAO;AAEzC,YAAA,IAAI,mBAAmB,CAAC,MAAM,KAAK,UAAU,CAAC,IAAI,EAAE;AAClD,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AAC7B,gBAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,CAAC;gBAC7C,OAAO;AACR,aAAA;AAED,YAAA,IAAI,mBAAmB,CAAC,KAAK,KAAK,KAAK,EAAE;AACvC,gBAAA,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC;gBAC3D,OAAO;AACR,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAEO,uBAAuB,GAAA;QAC7B,IAAI,CAAC,sBAAsB,CAAC,gBAAgB;AACzC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC;QAEtD,IAAI,CAAC,sBAAsB,CAAC,cAAc;AACvC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;KAClD;AAEO,IAAA,aAAa,CAAC,cAA8B,EAAA;AAClD,QAAA,KAAK,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CACvD,cAAc,CAAC,YAAY,EAC3B,cAAc,CAAC,oBAAoB,EACnC,cAAc,CAAC,mBAAmB,CACnC,CAAC;AACF,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAClD;;gHAzHU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACbD,IAAY,UAIX,CAAA;AAJD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AAC3B,CAAC,EAJW,UAAU,KAAV,UAAU,GAIrB,EAAA,CAAA,CAAA;;ACJD,IAAY,uBAGX,CAAA;AAHD,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,uBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,GAGlC,EAAA,CAAA,CAAA;;ACDK,MAAO,gBAAiB,SAAQ,QAAQ,CAAA;AAC5C,IAAA,WAAA,CAAmB,OAAgB,EAAA;AACjC,QAAA,KAAK,CAAC,qBAAqB,IAAI,OAAO,GAAG,CAAM,GAAA,EAAA,OAAO,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;KACpE;AACF;;MCMY,iCAAiC,CAAA;IAI5C,WACmB,CAAA,eAAgC,EAChC,SAA0B,EAAA;QAD1B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;QAL5B,IAAQ,CAAA,QAAA,GAAG,6BAA6B,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAqC,CAAC;KAKzE;AAEJ,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;IAEM,MAAM,OAAO,CAAC,OAAe,EAAA;AAClC,QAAA,MAAM,iBAAiB,GAAG;AACxB,YAAA,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;AACxC,YAAA,UAAU,EAAE,OAAO;SACpB,CAAC;AAEF,QAAA,OAAO,aAAa,CAClB,IAAI,CAAC,SAAS;aACX,IAAI,CACH,IAAI,CAAC,QAAQ,EACb,IAAI,eAAe,CACjB,iBAAyD,CAC1D,EACD;YACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAC5B,cAAc,EACd,kDAAkD,CACnD;AACD,YAAA,YAAY,EAAE,MAAM;SACrB,CACF;AACA,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAiC,KAAI;AACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B,CAAC,CACH,CACJ,CAAC,KAAK,CAAC,CAAC,KAAY,KAAI;AACvB,YAAA,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACJ;;8HA1CU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjC,iCAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iCAAiC,cAFhC,MAAM,EAAA,CAAA,CAAA;2FAEP,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAH7C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCQY,8BAA8B,CAAA;IAOzC,WACmB,CAAA,oBAA0C,EAC1C,mBAAwC,EACxC,iCAAoE,EACpE,iBAAoC,EACpC,kBAAsC,EAAA;QAJtC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAiC,CAAA,iCAAA,GAAjC,iCAAiC,CAAmC;QACpE,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QATjD,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;KAU1B;IACG,MAAM,SAAS,CAAC,MAA2B,EAAA;QAChD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACrC,YAAA,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;YAEpC,MAAM,cAAc,GAAG,MAAM,cAAc,CACzC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CACpC,CAAC;AAEF,YAAA,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;AAExC,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,IACE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,aAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAC1E;YACA,OAAO,IAAI,CAAC,MAAM,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;YAChD,OAAO,IAAI,CAAC,MAAM,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC;QAC3C,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,OAAO,SAAS,CAAC;KAClB;AAEO,IAAA,WAAW,CAAC,MAA2B,EAAA;AAC7C,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC3B,SAAA;AACD,QAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;KACrC;AAEO,IAAA,oBAAoB,CAAC,MAAsB,EAAA;AACjD,QAAA,QACE,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,MAAM;AACxC,YAAA,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,UAAU,EAC5C;KACH;AAEO,IAAA,gBAAgB,CACtB,WAAuC,EACvC,MAAsB,EACtB,WAAiC,EAAA;QAEjC,OAAO,CAAC,EACN,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,IAAI;aACrC,WAAW,EAAE,WAAW,IAAI,WAAW,EAAE,wBAAwB,CAAC,CACpE,CAAC;KACH;;AAGO,IAAA,qBAAqB,CAC3B,OAAe,EAAA;QAEf,OAAO,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAChE;AAEO,IAAA,yBAAyB,CAAC,OAAe,EAAA;QAC/C,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,wBAAwB;AAC3B,YAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,SAAS,CAC/C,CAAC,EAAE,cAAc,EAAE,KAAI;AACrB,gBAAA,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE;oBAC3B,OAAO;AACR,iBAAA;AACD,gBAAA,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;AAEpC,gBAAA,KAAK,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,CACzD,CAAC,mBAAmB,KAAI;AACtB,oBAAA,IAAI,mBAAmB,EAAE,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE;wBACvD,IAAI,CAAC,yBAAyB,CAC5B,cAAc,CAAC,MAAM,EACrB,mBAAmB,CACpB,CAAC;AACH,qBAAA;AACH,iBAAC,CACF,CAAC;AACJ,aAAC,CACF,CAAC;KACL;IAEO,yBAAyB,CAC/B,MAAc,EACd,WAAgC,EAAA;AAEhC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,OAAO;AACR,SAAA;AACD,QAAA,KAAK,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,CAAC,cAA0C,KAAI;AAC7C,YAAA,IAAI,cAAc,EAAE;AAClB,gBAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;gBAClC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;AAC9D,aAAA;AACH,SAAC,CACF,CAAC;KACH;AAEO,IAAA,kBAAkB,CACxB,MAAc,EACd,OAAmC,EACnC,WAAgC,EAAA;QAEhC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;AACvD,YAAA,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC,OAAO,CAAC;AAChE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC,MAAM,CAAC;AAC/D,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;QAE5C,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,QAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpC,IAAI,mBAAmB,CACrB,MAAM,EACN,mBAAmB,EACnB,IAAI,CAAC,uBAAuB,CAC7B,CACF,CAAC;KACH;;2HAxJU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAgC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iCAAA,EAAA,EAAA,EAAA,KAAA,EAAA7B,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA8B,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cAF7B,MAAM,EAAA,CAAA,CAAA;2FAEP,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCAY,aAAa,CAAA;IACxB,WACmB,CAAA,UAAsB,EACtB,oBAA0C,EAC1C,qBAA4C,EAC5C,mBAAwC,EACxC,iBAAoC,EACpC,8BAA8D,EAAA;QAL9D,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAA8B,CAAA,8BAAA,GAA9B,8BAA8B,CAAgC;KAC7E;IAEG,MAAM,SAAS,CAAC,MAA2B,EAAA;AAChD,QAAA,MAAM,uBAAuB,GAC3B,MAAM,EAAE,oBAAoB,+BAAqB;AACnD,QAAA,IAAI,uBAAuB,EAAE;YAC3B,OAAO,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9D,SAAA;AAED,QAAA,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEnD,QAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAE/C,QAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAEpC,MAAM,cAAc,GAAG,MAAM,cAAc,CACzC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CACpC,CAAC;QAEF,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEjE,OAAO,cAAc,CAAC,MAAM,CAAC;KAC9B;IAEM,MAAM,4BAA4B,CAAC,GAAY,EAAA;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAEvD,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC5D,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;KACrC;AAEO,IAAA,uBAAuB,CAAC,GAAY,EAAA;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AAChE,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAEhD,QAAA,IACE,0BAA0B,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EACxE;AACA,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,MAAM,MAAM,GAAuC,EAAE,CAAC;QACtD,qBAAqB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAI;AAC9C,YAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAwC,CAAC;KACjD;AAEO,IAAA,yBAAyB,CAAC,OAAe,EAAA;AAC/C,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC,mBAAmB,CAAC,cAAc;AACpC,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,CAAC,CAAC,EAAE,cAAc,EAAE,KAAI;YAChC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACjE,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpC,IAAI,mBAAmB,CAAC,cAAc,CAAC,CACxC,CAAC;AACJ,SAAC,CAAC,CAAC;KACN;;0GAvEU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAqC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,8BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACVK,MAAO,sBAAuB,SAAQ,eAAgC,CAAA;;mHAA/D,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACND,IAAY,2BAEX,CAAA;AAFD,CAAA,UAAY,2BAA2B,EAAA;AACrC,IAAA,2BAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACzC,CAAC,EAFW,2BAA2B,KAA3B,2BAA2B,GAEtC,EAAA,CAAA,CAAA;;ACFD,IAAY,kBAIX,CAAA;AAJD,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,kBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC5B,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,GAI7B,EAAA,CAAA,CAAA;;MCJY,oBAAoB,CAAA;IAO/B,WAAmB,CAAA,KAAa,EAAE,SAAiB,EAAA;AACjD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;KAC/B;AACF;;ACAM,MAAM,gCAAgC,GAC3C,IAAI,cAAc,CAA8B,sBAAsB,CAAC,CAAC;AAEnE,MAAM,mCAAmC,GAAkB;AAChE,IAAA,OAAO,EAAE,gCAAgC;AACzC,IAAA,QAAQ,EAAE,CAAC,GAAG,IAAoC,KAChD,IAAI,oBAAoB,CAAC,GAAG,IAAI,CAAC;CACpC;;MCfY,qBAAqB,CAAA;AAIhC,IAAA,WAAA,CAAmB,MAAyC,EAAA;AAC1D,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;KACzC;AACF;;ACAM,MAAM,iCAAiC,GAC5C,IAAI,cAAc,CAA+B,uBAAuB,CAAC,CAAC;AAErE,MAAM,oCAAoC,GAAkB;AACjE,IAAA,OAAO,EAAE,iCAAiC;AAC1C,IAAA,QAAQ,EAAE,CAAC,GAAG,IAAqC,KACjD,IAAI,qBAAqB,CAAC,GAAG,IAAI,CAAC;CACrC;;MCKY,oBAAoB,CAAA;AAC/B,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;AAKD,IAAA,WAAA,CACmB,SAA0B,EAC1B,eAAgC,EAEhC,cAA2C,EAE3C,eAA6C,EAAA;QAL7C,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;QAC1B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAEhC,IAAc,CAAA,cAAA,GAAd,cAAc,CAA6B;QAE3C,IAAe,CAAA,eAAA,GAAf,eAAe,CAA8B;QAT/C,IAAQ,CAAA,QAAA,GAAG,gBAAgB,CAAC;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAgC,CAAC;KASpE;AAEG,IAAA,OAAO,CAAC,IAAiB,EAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAEzC,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,UAAU,EAAE,CAAC;AACxB,SAAA;AACD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAEpE,QAAA,KAAK,aAAa,CAChB,IAAI,CAAC,SAAS;AACX,aAAA,IAAI,CACH,IAAI,CAAC,QAAQ,EACb,IAAI,eAAe,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,EACzC;YACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAC5B,cAAc,EACd,kDAAkD,CACnD;AACD,YAAA,YAAY,EAAE,MAAM;SACrB,CACF;AACA,aAAA,IAAI,CACHjB,KAAG,CAAC,CAAC,QAAQ,KAAI;AACf,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;AAC1C,gBAAA,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;AAChC,gBAAA,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa;AAC9C,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACpC,CAAC,CACH,CACJ,CAAC,KAAK,CAAC,CAAC,KAAY,KAAI;AACvB,YAAA,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACJ;;iHAnDU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7B,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,eAAA,EAAA,EAAA,EAAA,KAAA,EAWrB,gCAAgC,EAAA,EAAA,EAAA,KAAA,EAEhC,iCAAiC,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAbhC,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAYI,MAAM;2BAAC,gCAAgC,CAAA;;0BAEvC,MAAM;2BAAC,iCAAiC,CAAA;;;MCpChC,sBAAsB,CAAA;AASjC,IAAA,WAAA,CAAmB,MAIlB,EAAA;AACC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACxC,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC;KACrD;AACF;;ACPM,MAAM,kCAAkC,GAC7C,IAAI,cAAc,CAAgC,wBAAwB,CAAC,CAAC;AAEvE,MAAM,qCAAqC,GAAkB;AAClE,IAAA,OAAO,EAAE,kCAAkC;AAC3C,IAAA,QAAQ,EAAE,CAAC,GAAG,IAAsC,KAClD,IAAI,sBAAsB,CAAC,GAAG,IAAI,CAAC;CACtC;;MCHY,sBAAsB,CAAA;AAGjC,IAAA,WAAA,CACmB,SAA0B,EAC1B,eAAgC,EAEhC,cAA6C,EAAA;QAH7C,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;QAC1B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAEhC,IAAc,CAAA,cAAA,GAAd,cAAc,CAA+B;QAN/C,IAAgB,CAAA,gBAAA,GAAG,iBAAiB,CAAC;KAOlD;AAEJ;;AAEG;IACI,OAAO,CAAC,SAAiB,EAAE,SAAkB,EAAA;AAClD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAEzC,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,UAAU,EAAE,CAAC;AACxB,SAAA;AAED,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;AACxC,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,YAAY,EAAE,SAAS;YACvB,SAAS;AACV,SAAA,CAAC,CAAC;AAEH,QAAA,aAAa,CACX,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAI,CAAC,gBAAgB,EACrB,IAAI,eAAe,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,EACzC;YACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAC5B,cAAc,EACd,kDAAkD,CACnD;AACD,YAAA,YAAY,EAAE,MAAM;AACrB,SAAA,CACF,CACF,CAAC,KAAK,CAAC,CAAC,KAAY,KAAI;AACvB,YAAA,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACJ;;AAzCU,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,0EAMvB,kCAAkC,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AANjC,sBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAOI,MAAM;2BAAC,kCAAkC,CAAA;;;MCZjC,iBAAiB,CAAA;IAI5B,WAEmB,CAAA,MAAsB,EACtB,sBAA8C,EAAA;QAD9C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QACtB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QANhD,IAAU,CAAA,UAAA,GAAG,WAAW,CAAC;QACzB,IAAQ,CAAA,QAAA,GAAG,SAAS,CAAC;KAMlC;AAEG,IAAA,gBAAgB,CAAC,WAAwB,EAAA;QAC9C,IAAI,WAAW,CAAC,YAAY,EAAE;AAC5B,YAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACnD,SAAA;KACF;AAED;;AAEK;IACG,yBAAyB,CAC/B,WAAwB,EACxB,qBAA8B,EAAA;AAE9B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,CAAC,gBAAgB,CACnB,WAAW,CAAC,aAAa,EACzB,WAAW,CAAC,iBAAiB,CAC9B,CAAC;AACH,SAAA;KACF;AAED;;AAEK;IACG,YAAY,CAClB,qBAA8B,EAC9B,YAAoB,EAAA;AAEpB,QAAA,MAAM,UAAU,GAA8B;YAC5C,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,EAAE,EAAE,IAAI,CAAC,UAAU;AACnB,YAAA,GAAG,EAAE,kBAAkB;AACvB,YAAA,KAAK,EAAE,cAAc;SACtB,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAE9C,QAAA,IAAI,qBAAqB,EAAE;AAEvB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CACjC,IAAI,CAAC,UAAU,CAElB,CAAC,MAAM,GAAG,MAAK;gBACd,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC1D,aAAC,CAAC;AACH,SAAA;KACF;AAED;;AAEK;IACG,gBAAgB,CAAC,GAAW,EAAE,aAAqB,EAAA;AACzD,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAC5C,IAAI,CAAC,QAAQ,CACK,CAAC;QAErB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AAED;;AAEG;IACK,UAAU,GAAA;AAChB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACxD,QAAA,MAAM,cAAc,GAA8B;YAChD,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,EAAE,EAAE,IAAI,CAAC,QAAQ;AACjB,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,mCAAmC;SAC7C,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAEzC,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,WAAW,CAAC,IAAY,EAAE,KAAa,EAAA;AAC7C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;AACtB,QAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,QAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEK;IACG,aAAa,CACnB,OAAoB,EACpB,UAAqC,EAAA;QAErC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACvC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,SAAC,CAAC,CAAC;KACJ;;AAxHU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAKlB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAyC,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AALV,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAMI,MAAM;2BAAC,WAAW,CAAA;;;MCNV,uBAAuB,CAAA;AAGlC,IAAA,WAAA,CAEmB,MAAsB,EAAA;QAAtB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QAJjC,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;KAKxB;AAEG,IAAA,QAAQ,CAAC,KAAY,EAAA;QAC1B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QAE9B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAqB,CAAC;AAEjE,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAK;YAC1B,cAAc,CAAC,QAAQ,EAAE,CAAC;YAE1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC/B,SAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;KAC9B;AAEM,IAAA,WAAW,CAAC,EAAU,EAAA;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEvC,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;KACxB;;AAnCU,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAIxB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAJV,uBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAKI,MAAM;2BAAC,WAAW,CAAA;;;MCIV,gBAAgB,CAAA;AAC3B,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;IAgBD,WACmB,CAAA,oBAA0C,EAC1C,sBAA8C,EAC9C,gBAAkC,EAClC,iBAAoC,EACpC,uBAAgD,EAAA;QAJhD,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QAC9C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAyB;QAjB3D,IAAe,CAAA,eAAA,GAA2B,IAAI,CAAC;AAEtC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAgB,CAAC;QAErD,IAAyB,CAAA,yBAAA,GAAwB,IAAI,CAAC;QAE7C,IAAgB,CAAA,gBAAA,GAAG,YAAY,CAAC;QAChC,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAE3B,IAAoB,CAAA,oBAAA,GAAG,iBAAiB,CAAC;QACzC,IAAsB,CAAA,sBAAA,GAAG,MAAM,CAAC;KAQ7C;IAEG,MAAM,cAAc,CAAC,WAA+B,EAAA;QACzD,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;YACpC,EAAE,EAAE,IAAI,CAAC,gBAAgB;YACzB,SAAS,EAAE,IAAI,CAAC,kBAAkB;YAClC,QAAQ,EAAE,MAAK;gBACb,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;aACtE;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAChE,WAAW,CAAC,mBAAmB,EAC/B,WAAW,CAAC,mBAAmB,CAChC,CAAC;AAEF,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAC7B,WAAW,CAAC,mBAAmB,EAC/B,WAAW,CAAC,mBAAmB,CAChC,CAAC;AACF,QAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC;AAE1C,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,CACnE,CAAC,OAAO,KAAI;AACV,YAAA,IAAI,OAAO,KAAK,2BAA2B,CAAC,iBAAiB,EAAE;gBAC7D,OAAO;AACR,aAAA;AAED,YAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACjD,SAAC,CACF,CAAC;AAEF,QAAA,IAAI,CAAC,iCAAiC,EAAE,WAAW,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,iCAAiC;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,iCAAiC,CAAC,MAAK;AAC1D,gBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACjD,aAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAE/C,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;YACpC,EAAE,EAAE,IAAI,CAAC,oBAAoB;YAC7B,SAAS,EAAE,IAAI,CAAC,sBAAsB;YACtC,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;aAChD;AACF,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,oBAAoB,CAAC,WAAwB,EAAA;AACnD,QAAA,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,yBAAyB;YAC5B,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,aAAa,KAAI;gBAC9D,IAAI,CAAC,aAAa,EAAE;oBAClB,OAAO;AACR,iBAAA;AAED,gBAAA,IAAI,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,SAAS,EAAE;oBACzD,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,IAAI,EAAE;4BACJ,SAAS,EAAE,WAAW,CAAC,SAAS;AACjC,yBAAA;AACF,qBAAA,CAAC,CAAC;oBACH,OAAO;AACR,iBAAA;AAED,gBAAA,IACE,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,SAAS;oBACrD,aAAa,CAAC,YAAY,EAC1B;oBACA,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,wBAAA,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,aAAa,CAAC,YAAY;AACjC,qBAAA,CAAC,CAAC;AACJ,iBAAA;AAED,gBAAA,IAAI,aAAa,CAAC,MAAM,KAAK,kBAAkB,CAAC,UAAU,EAAE;AAC1D,oBAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACtD,iBAAA;AACH,aAAC,CAAC,CAAC;KACN;IAEO,sBAAsB,GAAA;QAC5B,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE,CAAC;KAC/C;;6GAxHU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCJY,cAAc,CAAA;IAGzB,WACmB,CAAA,gBAAkC,EAClC,iBAAoC,EAAA;QADpC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAJ/C,IAAkB,CAAA,kBAAA,GAAwB,IAAI,CAAC;KAKnD;AAEG,IAAA,YAAY,CAAC,MAAsB,EAAA;AACxC;;;;AAIE;AACF,QAAA,KAAK,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEzE,QAAA,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CACtE,CAAC,YAAY,KAAI;AACf,YAAA,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE;AACpC,gBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAC3C,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAC9B,CAAC;AACH,aAAA;YAED,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1E,SAAC,CACF,CAAC;KACH;IAEM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE,CAAC;KACxC;;2GAhCU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACFK,MAAO,mBAAoB,SAAQ,eAAyB,CAAA;AAChE,IAAA,WAAA,CAAoC,gBAAkC,EAAA;AACpE,QAAA,KAAK,EAAE,CAAC;QAD0B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;KAErE;AACM,IAAA,cAAc,CAAC,QAAuB,EAAA;QAC3C,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;AACR,SAAA;AACD,QAAA,MAAM,eAAe,GAAG,CAAC,WAAuB,KAC9C,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEvD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;KAC3C;;gHAZU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAV,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MC8BY,cAAc,CAAA;AAGzB,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC2B,QAAM,CAAC,OAAO,CAAC,CAAC,CAAC;KAC1E;IAeD,WACmB,CAAA,iBAAoC,EACpC,aAA4B,EAC5B,WAAwB,EACxB,WAAwB,EACxB,aAA4B,EAC5B,qBAA4C,EAC5C,sBAA8C,EAC9C,iBAAoC,EACpC,oBAA0C,EAC1C,cAA8B,EAC9B,mBAAwC,EAAA;QAVxC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QAC9C,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QA9BpD,IAAI,CAAA,IAAA,GAA4B,IAAI,CAAC;QAMpC,IAAI,CAAA,IAAA,GAA+C,IAAI,CAAC;QACxD,IAAc,CAAA,cAAA,GAA0B,IAAI,CAAC;QAC7C,IAAc,CAAA,cAAA,GAAkB,IAAI,CAAC;QACrC,IAAM,CAAA,MAAA,GAAY,EAAE,CAAC;AAGrB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC/B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC1B,QAAA,IAAA,CAAA,uBAAuB,GACtC,IAAI,eAAe,CAA0B,IAAI,CAAC,CAAC;QAE7C,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;KAc/B;IAEG,MAAM,UAAU,CAAC,MAAqB,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;QAExC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAEzD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAErD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAEvD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CACvB,CAAC,KAAY,KAAK,KAAK,EAAE,SAAS,KAAA,GAAA,uBACnC,CAAC;KACH;AAEM,IAAA,MAAM,MAAM,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACnC,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO;AACR,SAAA;QAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACxC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KACd,IAAI,KAAK,mBAAmB,IAAI,KAAK,KAAoB,GAAA,uBAC5D,CAAC;AACF,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CACrD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,IAAI,CACV,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;AAE3B,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjD,SAAA;AACD,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;;AAG/C,QAAA,IAAI,cAAc,CAAC,cAAc,KAAK,UAAU,CAAC,MAAM,EAAE;YACvD,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAErD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;KAC7D;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,IAAI,YAAY,cAAc,EAAE;AACvC,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;AAC/B,SAAA;QAED,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,IAAI,EAAE,CAAC;KAC7C;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,IAAI,YAAY,cAAc,EAAE;AACvC,YAAA,QACE,MAAM,CACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,CAClE,IAAI,IAAI,EACT;AACH,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,YAAY,kBAAkB,EAAE;AAC3C,YAAA,QACE,MAAM,CACJ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAChC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,SAAS,CACpC,EAAE,KAAK,CACT,IAAI,IAAI,EACT;AACH,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;IAEM,MAAM,QAAQ,CAAC,KAAY,EAAA;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAEnE,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpC,SAAA;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACzC;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC7C,SAAA;QAED,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7C;IAEM,iBAAiB,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IAEM,oBAAoB,CAAC,SAAiB,EAAE,SAAoB,EAAA;QACjE,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,WAAW,CAAC,oBAAoB,CACnC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,SAAS,EACT,SAAS,CACV,CAAC;AACH,SAAA;KACF;AAEM,IAAA,MAAM,SAAS,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,MAAM,MAAM,GAAwB;AAClC,YAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;YAChC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;AAC7C,YAAA,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;YACpC,MAAM,EACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,KAAK;gBAChE,IAAI;YACN,oBAAoB,EAAE,IAAI,CAAC,kBAAkB;kBAC1C,GAAA;AACD,kBAAkB,GAAA;SACrB,CAAC;QACF,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KAC7C;AAEM,IAAA,cAAc,CAAC,KAAY,EAAA;QAChC,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACnD;IAEM,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAA;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC9B;IAEM,gBAAgB,CAAC,IAAY,EAAE,KAAqB,EAAA;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;YAC9B,OAAO;AACR,SAAA;AAED,QAAA,QAAQ,KAAK;AACX,YAAA,KAAK,cAAc,CAAC,IAAI,EAAE;gBACxB,WAAW,CAAC,aAAa,EAAE,CAAC;AAC5B,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,MAAM;AACP,aAAA;AACD,YAAA,KAAK,cAAc,CAAC,KAAK,EAAE;gBACzB,WAAW,CAAC,eAAe,EAAE,CAAC;AAC9B,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,MAAM;AACP,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACtC;IAEM,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAErB,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;AAEO,IAAA,kBAAkB,CAAC,OAAoB,EAAA;AAC7C,QAAA,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;KACrD;AAEO,IAAA,mBAAmB,CAAC,UAAkB,EAAA;QAC5C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAClD;AAEO,IAAA,oBAAoB,CAAC,IAAsB,EAAA;QACjD,MAAM,gBAAgB,GAAqB,EAAE,CAAC;AAE9C,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpC,gBAAgB,CAAC,IAAI,CAAC,GAAG;AACvB,gBAAA,IAAI,EAAE,IAAI;gBACV,gBAAgB,EAAE,OAAO,CAAC,MAAM;gBAChC,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,gBAAA,SAAS,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;gBACvC,SAAS,EAAE,OAAO,CAAC,OAAO;aAC3B,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACrD;AAEO,IAAA,gBAAgB,CAAC,QAAuB,EAAA;AAC9C,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;KACnD;IAEO,gBAAgB,CAAC,IAAsB,EAAE,MAAe,EAAA;QAC9D,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,KAAK;AACnB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,WAAW,CAAC,qBAAqB;AACnC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,oBAAoB,KAAI;AAClC,YAAA,QAAQ,oBAAoB,CAAC,KAAK,CAAC,IAAI;gBACrC,KAAK,UAAU,CAAC,UAAU;oBACxB,IAAI,CAAC,mBAAmB,CACtB,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CACpD,CAAC;AACL,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAEO,oBAAoB,GAAA;QAC1B,IAAI,CAAC,qBAAqB,CAAC,KAAK;AAC7B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,cAAc,MAAM,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC;KAC1E;AAEO,IAAA,uBAAuB,CAAC,IAAsB,EAAA;AACpD,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aAClC,SAAS,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;KACrD;AAED;;AAEM;IACE,eAAe,GAAA;AACrB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACjC,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,UAAU,CAAC;AAC1C,SAAA;KACF;;2GAvSU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAmB,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MC9BY,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAAoC,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAHpD,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;QACrB,IAAU,CAAA,UAAA,GAAG,qCAAqC,CAAC;KAEK;AAExE,IAAA,IAAW,GAAG,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC/B,YAAA,OAAO,uCAAuC,CAAC;AAChD,SAAA;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;QACzD,MAAM,SAAS,GACb,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAoB,EAAE,iBAAiB;YACpE,IAAI,CAAC,gBAAgB,CAAC;AACxB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;AAClD,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,UAAU,CAAsB,mBAAA,EAAA,SAAS,CAAa,UAAA,EAAA,QAAQ,CAAY,SAAA,EAAA,UAAU,CAAe,YAAA,EAAA,SAAS,EAAE,CAAC;KAC/H;;gHAjBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/D,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCCY,uBAAuB,CAAA;AAClC,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC;KACrD;AACD,IAAA,IAAW,mBAAmB,GAAA;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KAClC;AAMD,IAAA,WAAA,CAAoC,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAJpD,IAAmB,CAAA,mBAAA,GAAG,iCAAiC,CAAC;KAIA;IAEhE,sBAAsB,GAAA;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC;AAE5D,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,oBAAoB,GAAG,CAAA,EAC1B,IAAI,CAAC,mBACP,CAAA,EAAG,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;AACrC,SAAA;KACF;;oHAvBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCAY,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;QAIkB,IAAU,CAAA,UAAA,GAAG,YAAY,CAAC;AAC3C,KAAA;;8GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCMY,YAAY,CAAA;AAGvB,IAAA,IAAY,WAAW,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;KAClD;AAED,IAAA,WAAA,CACmB,eAAgC,EAChC,mBAAwC,EACxC,uBAAgD,EAChD,iBAAoC,EAAA;QAHpC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAyB;QAChD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAVvC,IAAa,CAAA,aAAA,GAAG,yBAAyB,CAAC;KAWtD;IAEG,uBAAuB,GAAA;QAC5B,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,eAAe,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG;YAC7C,aAAa,EAAE,IAAI,CAAC,aAAa;AACjC,YAAA,gBAAgB,EAAE;AAChB,gBAAA,mBAAmB,EAAE,IAAI,CAAC,uBAAuB,CAAC,mBAAmB;AACrE,gBAAA,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,YAAY;AACxD,aAAA;AACD,YAAA,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU;SAC9C,CAAC;KACH;;yGAzBU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAgE,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCEY,uBAAuB,CAAA;AAGlC,IAAA,WAAA,CACmB,mBAAwC,EACxC,eAAgC,EAChC,SAA0B,EAAA;QAF1B,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;QAL5B,IAAW,CAAA,WAAA,GAAG,qBAAqB,CAAC;KAMjD;AAEG,IAAA,MAAM,wBAAwB,CACnC,EAAU,EACV,IAAY,EAAA;AAEZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAEzC,QAAA,MAAM,UAAU,GAIZ;AACF,YAAA,YAAY,EAAE,KAAK;YACnB,EAAE;YACF,IAAI;SACL,CAAC;AAEF,QAAA,OAAO,aAAa,CAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAI,CAAC,WAAW,EAChB,IAAI,eAAe,CAAC,UAAkD,CAAC,EACvE;YACE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAC5B,cAAc,EACd,kDAAkD,CACnD;AACD,YAAA,YAAY,EAAE,MAAM;AACrB,SAAA,CACF,CACF;aACE,IAAI,CAAC,YAAW;YACf,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7C,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC;aACD,KAAK,CAAC,MAAK;AACV,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC,CAAC;KACN;;oHA7CU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA9D,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MC8BY,kBAAkB,CAAA;AAe7B,IAAA,WAAA,CACmB,eAAgC,EAChC,cAA8B,EAC9B,qBAA4C,EAC5C,mBAAwC,EACxC,kBAAsC,EACtC,oBAA0C,EAC1C,cAA8B,EAC9B,wBAAkD,EAClD,qBAA4C,EAC5C,YAA0B,EAC1B,aAA4B,EAC5B,iBAAoC,EACpC,iBAAoC,EACpC,sBAA8C,EAC9C,mBAAwC,EACxC,uBAAgD,EAAA;QAfhD,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QACtC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;QAClD,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QAC9C,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAyB;AA9B5D,QAAA,IAAA,CAAA,cAAc,GAAG;AACtB,YAAA,OAAO,EAAE,OAAO,gBAA0B,KACxC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAEtD,eAAe,EAAE,YACf,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE;YAC9C,eAAe,EAAE,YACf,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACpC,cAAc,EAAE,YACd,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE;AAC1C,YAAA,iBAAiB,EAAE,OAAO,EAAU,EAAE,IAAY,KAChD,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,EAAE,EAAE,IAAI,CAAC;SAClE,CAAC;KAmBE;IAEG,MAAM,IAAI,CAAC,aAAgC,EAAA;QAChD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;KACtC;IAEM,MAAM,SAAS,CAAC,GAAY,EAAA;QACjC,OAAO,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;KAC7D;AAEM,IAAA,UAAU,CAAC,OAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KACzC;IAEM,UAAU,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;KACzC;AAEM,IAAA,aAAa,CAAC,MAAqB,EAAA;QACxC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEhE,OAAO;AACL,YAAA,UAAU,EAAE,YAAY,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,CAAC;YACtE,MAAM,EAAE,YAAY,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAChD,SAAS,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YAChD,MAAM,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC1C,YAAA,QAAQ,EAAE,OAAO,KAAY,KAAK,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;YACrE,iBAAiB,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;YAChE,UAAU,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;YAClD,SAAS,EAAE,YAAY,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;AACtD,YAAA,sBAAsB,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK;AACxD,YAAA,IAAI,EAAE;AACJ,gBAAA,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,iBAAiB;AACpD,gBAAA,gBAAgB,EAAE,CAAC,KAAY,KAC7B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC;AAC3C,gBAAA,gBAAgB,EAAE,CAAC,IAAY,EAAE,KAAa,KAC5C,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;AACnD,gBAAA,gBAAgB,EAAE,CAAC,IAAY,EAAE,KAAqB,KACpD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;AACnD,gBAAA,oBAAoB,EAAE,CAAC,SAAiB,EAAE,SAAoB,KAC5D,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC;AAChE,gBAAA,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK;gBAC7C,aAAa,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM;AACtD,aAAA;SACF,CAAC;KACH;IAEM,oBAAoB,GAAA;QACzB,OAAO;AACL,YAAA,eAAe,EAAE,CAAC,UAAkB,KAClC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC;AACpD,YAAA,qBAAqB,EAAE,CAAC,QAAyB,KAC/C,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,QAAQ,CAAC;AACxD,YAAA,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK;SACpD,CAAC;KACH;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;KAC5C;AAED,IAAA,IAAW,sBAAsB,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;KACzC;AAED,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;KAC1C;IAEM,uBAAuB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,CAAC;KACpD;AAEM,IAAA,YAAY,CAAC,KAAY,EAAA;AAC9B,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACvD,QAAA,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC;KACzC;IAEM,mBAAmB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;KACtD;;+GAjHU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAmE,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;AClCK,MAAO,SAAU,SAAQ,QAAQ,CAAA;IAOrC,WAAmB,CAAA,KAAwB,EAAE,GAAyB,EAAA;AACpE,QAAA,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAPN,IAAsB,CAAA,sBAAA,GAAG,IAAI,MAAM,CAClD,qFAAqF,EACrF,GAAG,CACJ,CAAC;QAMA,IAAI,CAAC,aAAa,GAAG;AACnB,YAAA,OAAO,EAAE;gBACP,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,GAAG,CAAC,OAAO;AACrB,aAAA;AACD,YAAA,QAAQ,EAAE;gBACR,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;AACvB,aAAA;SACF,CAAC;QAEF,IAAI,GAAG,CAAC,IAAI,EAAE;AACZ,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CACtD,GAAG,CAAC,IAAkC,CACvC,CAAC;AACH,SAAA;QAED,IAAI,KAAK,CAAC,UAAU,EAAE;AACpB,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,KAA8B,CAAC;AAEvD,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,GAAG;gBACjC,UAAU,EAAE,KAAK,CAAC,UAAU;AAC5B,gBAAA,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI,EAAE;aAChC,CAAC;AACH,SAAA;KACF;IAEM,gBAAgB,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAEO,IAAA,iBAAiB,CAAC,IAAgC,EAAA;AAGxD,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAI;YACrD,OAAO;AACL,gBAAA,GAAG,GAAG;AACN,gBAAA,CAAC,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG;aAC3D,CAAC;SACH,EAAE,EAAE,CAAC,CAAC;KACR;AACF;;MC3CY,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAA0B,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KAAI;IAErC,SAAS,CACd,GAAyB,EACzB,IAAiB,EAAA;AAEjB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1B,UAAU,CAAC,CAAC,KAAwB,KAAI;AACtC,YAAA,OAAO,UAAU,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;SACpD,CAAC,CACH,CAAC;KACH;;sHAZU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;0HAAzB,yBAAyB,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;;MCJE,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,YAAY,CAAA,EAAA,CAAA,CAAA;AAGX,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAFhB,SAAA,EAAA,CAAC,4BAA4B,CAAC,YAD/B,YAAY,CAAA,EAAA,CAAA,CAAA;2FAGX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,SAAS,EAAE,CAAC,4BAA4B,CAAC;AAC1C,iBAAA,CAAA;;;MCkDY,UAAU,CAAA;;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAV,UAAU,EAAA,OAAA,EAAA,CA/BX,mBAAmB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;AA+BpC,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,EA9BV,SAAA,EAAA;QACT,WAAW;QACX,oBAAoB;QACpB,mBAAmB;QACnB,kBAAkB;QAClB,iBAAiB;QACjB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,uBAAuB;QACvB,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,YAAY;QACZ,mBAAmB;QACnB,cAAc;QACd,cAAc;QACd,cAAc;QACd,qBAAqB;QACrB,mBAAmB;QACnB,mBAAmB;QACnB,eAAe;QACf,aAAa;QACb,cAAc;AACd,QAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE;KACzD,EA7BS,OAAA,EAAA,CAAA,mBAAmB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FA+BpC,UAAU,EAAA,UAAA,EAAA,CAAA;kBAhCtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;AAChD,oBAAA,SAAS,EAAE;wBACT,WAAW;wBACX,oBAAoB;wBACpB,mBAAmB;wBACnB,kBAAkB;wBAClB,iBAAiB;wBACjB,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,uBAAuB;wBACvB,kBAAkB;wBAClB,gBAAgB;wBAChB,kBAAkB;wBAClB,aAAa;wBACb,iBAAiB;wBACjB,eAAe;wBACf,YAAY;wBACZ,mBAAmB;wBACnB,cAAc;wBACd,cAAc;wBACd,cAAc;wBACd,qBAAqB;wBACrB,mBAAmB;wBACnB,mBAAmB;wBACnB,eAAe;wBACf,aAAa;wBACb,cAAc;AACd,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE;AACzD,qBAAA;AACF,iBAAA,CAAA;;;MCjDY,WAAW,CAAA;;wGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAX,WAAW,EAAA,YAAA,EAAA,CAJP,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAErB,gBAAgB,CAAA,EAAA,CAAA,CAAA;yGAEf,WAAW,EAAA,SAAA,EAHX,CAAC,gBAAgB,CAAC,EAAA,CAAA,CAAA;2FAGlB,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,gBAAgB,CAAC;oBAChC,SAAS,EAAE,CAAC,gBAAgB,CAAC;oBAC7B,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA,CAAA;;;MCoDY,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EA/BlB,OAAA,EAAA,CAAA,gBAAgB,EAAE,UAAU,EAAE,WAAW,CAAA,EAAA,CAAA,CAAA;AA+BxC,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EA9BjB,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACD,QAAA,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC1C,qCAAqC;QACrC,mCAAmC;QACnC,kCAAkC;QAClC,iCAAiC;QACjC,4BAA4B;QAC5B,6BAA6B;QAC7B,0BAA0B;QAC1B,2BAA2B;QAC3B,4BAA4B;QAC5B,6BAA6B;QAC7B,iCAAiC;QACjC,kCAAkC;QAClC,mCAAmC;QACnC,oCAAoC;QACpC,qCAAqC;AACrC,QAAA;AACE,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,QAAQ,EAAE,WAAW;AACtB,SAAA;AACD,QAAA,GAAI,WAA+B;AACnC,QAAA,GAAI,qBAAyC;AAC9C,KAAA,EAAA,OAAA,EAAA,CA7BS,gBAAgB,EAAE,UAAU,EAAE,WAAW,CAAA,EAAA,CAAA,CAAA;2FA+BxC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAhC7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,WAAW,CAAC;AACpD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,yBAAyB;AACnC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE;wBAC1C,qCAAqC;wBACrC,mCAAmC;wBACnC,kCAAkC;wBAClC,iCAAiC;wBACjC,4BAA4B;wBAC5B,6BAA6B;wBAC7B,0BAA0B;wBAC1B,2BAA2B;wBAC3B,4BAA4B;wBAC5B,6BAA6B;wBAC7B,iCAAiC;wBACjC,kCAAkC;wBAClC,mCAAmC;wBACnC,oCAAoC;wBACpC,qCAAqC;AACrC,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,QAAQ,EAAE,WAAW;AACtB,yBAAA;AACD,wBAAA,GAAI,WAA+B;AACnC,wBAAA,GAAI,qBAAyC;AAC9C,qBAAA;AACF,iBAAA,CAAA;;;AC1DD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"xsolla-payment-client-core.mjs","sources":["../../../packages/payment-client-core/src/lib/core/payment/form/masks-functions.map.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/app-error.class.ts","../../../packages/payment-client-core/src/lib/core/settings/empty-utils-response.error.ts","../../../packages/payment-client-core/src/lib/core/window.token.ts","../../../packages/payment-client-core/src/lib/core/http/secure-api/api-url.const.ts","../../../packages/payment-client-core/src/lib/core/http/secure-api/secure-api.service.ts","../../../packages/payment-client-core/src/lib/core/settings/settings.service.ts","../../../packages/payment-client-core/src/lib/core/country/country.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/response-error.class.ts","../../../packages/payment-client-core/src/lib/core/boolean-number.enum.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods.service.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods-response.class.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods-response.token.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods.service.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance-response.class.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance-response.token.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance.service.ts","../../../packages/payment-client-core/src/lib/core/url/url.service.ts","../../../packages/payment-client-core/src/lib/core/payment/config/config.service.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-comand.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/field-names.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/submit-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/response/initialize-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/is-submit-response.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/input-event.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/response/initialize-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/credit-card-payment-methods-id.variable.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api/xps-api.service.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/ps4-pages/pages-routes.const.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/pay-station4-url.const.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/redirect.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-fields/show-fields.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/check-status/check-status.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-errors/show-errors.action.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/terminal-error.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-groups.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/response/status-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/status-updated/status-updated.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/three-ds/three-ds.action.class.ts","../../../packages/payment-client-core/src/lib/core/sdk-payment-systems/sdk-payment-methods.const.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/special-button/special-button.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/next-actions.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/next-action.service.ts","../../../packages/payment-client-core/src/lib/core/errors-mapping/card-number-sanction-error-codes.const.ts","../../../packages/payment-client-core/src/lib/core/errors-mapping/field-special-errors-map.const.ts","../../../packages/payment-client-core/src/lib/shared/pipes/unescape-html/unescape-html.pipe.ts","../../../packages/payment-client-core/src/lib/core/errors-mapping/xps-response-errors-mapping.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/elk-error-types.enum.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/tagged-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/encrypt-card-error.ts","../../../packages/payment-client-core/src/lib/core/credit-card/four-block-mask.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/credit-card-types.enum.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/visa.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/mastercard.ts","../../../packages/payment-client-core/src/lib/core/credit-card/default-mask.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/maestro.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/american-express.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/diners-clubs.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/discover.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/jcb.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/dankort.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/hipercard.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/elo.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/aura.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/naranja.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/mir.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/china-union-pay.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/default-card.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/postepay.ts","../../../packages/payment-client-core/src/lib/core/credit-card/ordered-cards-settings.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/credit-cards-map.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/credit-card.service.ts","../../../packages/payment-client-core/src/lib/core/encrypt-credit-card/encrypt-credit-card.service.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/initialize.service.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api-part-request.abstract.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/token-error.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/request/submit-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/request/submit-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/submit-response.token.ts","../../../packages/payment-client-core/src/lib/core/device-finger-print/device-finger-print.service.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/submit.service.ts","../../../packages/payment-client-core/src/lib/core/payment/emit-data.service.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/request/sync-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/request/sync-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/response/sync-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/response/sync-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/control-config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/text-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/convert.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/email/email-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/required/required.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/converter.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/email/email.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/restricted-value/restricted-value.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/zip/zip.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/is-empty-input-value.function.ts","../../../packages/payment-client-core/src/lib/core/type-guards/is-string.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/card-number/card-number-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/card-number/card-number.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/card-month/card-month.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/card-month/card-month.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cvv/cvv.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/birth-date/birth-date.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/birth-date/birth-date.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cardholder-name/cardholder-name.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cpf-name/cpf-name-regex.variable.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cpf-name/cpf-name.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cpf-number/cpf-number.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/street-number/street-number.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/text/text.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/checkbox/checkbox-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/checkbox/checkbox.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/search-select/search-select-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/select/select.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/pin/pin.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/radio-control/radio-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/radio-group/radio-group.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/pricepoint/pricepoint.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/coupon/coupon-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/coupon/coupon-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/coupon/coupon.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/card-year/card-year.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/card-year/card-year.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/phone-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/min-length-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/max-length-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/phone-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/phone.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/converters-map.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/control-config.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form/form.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-search-param.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/required-status-search-params.const.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-search-params.map.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api-part.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/request/status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/request/status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/response/status-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-request.service.ts","../../../packages/payment-client-core/src/lib/core/type-guards/is-null.function.ts","../../../packages/payment-client-core/src/lib/core/type-guards/is-undefined.function.ts","../../../packages/payment-client-core/src/lib/core/session/session.service.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/price.helpers.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/summary/default-image-patterns.const.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/vat-details-key.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/summary/sales-tax-details-key.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/status/fields-with-currency.ts","../../../packages/payment-client-core/src/lib/core/country/country-iso-code.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/status/status-finance-details-adapter.service.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/finance-details.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/request/check-status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/request/check-status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/response/check-status-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/response/check-status-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/check-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/websocket-status/websocket-status.enum.ts","../../../packages/payment-client-core/src/lib/core/web-socket/web-socket-client-type.enum.ts","../../../packages/payment-client-core/src/lib/core/web-socket/nchan-web-socket.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/ws-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/elk/elk-logger.service.ts","../../../packages/payment-client-core/src/lib/core/web-socket/centrifugo-web-socket.service.ts","../../../packages/payment-client-core/src/lib/core/web-socket/web-socket.factory.ts","../../../packages/payment-client-core/src/lib/core/payment/status/websocket-status/websocket-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/listen-status/listen-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/title-class.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/save-payment-method-status/save-payment-method-status.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-response.error.ts","../../../packages/payment-client-core/src/lib/core/payment/status/save-payment-method-status/api/saved-payment-account-changes.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/credit-card-state/credit-card-state.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/three-ds-status-websocket-types.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/status-types.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/status-three-ds.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/notify-dfp-status/notify-dfp-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/reinsurance-check/reinsurance-check.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/three-ds-20/three-ds20.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/three-ds.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form-messages/form-messages.service.ts","../../../packages/payment-client-core/src/lib/core/payment/payment.service.ts","../../../packages/payment-client-core/src/lib/core/legal/refund-policy.service.ts","../../../packages/payment-client-core/src/lib/core/legal/secure-connection.service.ts","../../../packages/payment-client-core/src/lib/core/legal/disclaimer.service.ts","../../../packages/payment-client-core/src/lib/core/legal/legal.service.ts","../../../packages/payment-client-core/src/lib/core/edit-saved-methods/edit-saved-methods.service.ts","../../../packages/payment-client-core/src/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.ts","../../../packages/payment-client-core/src/lib/core/sdk-payment-systems/google-pay/google-pay.service.ts","../../../packages/payment-client-core/src/lib/core-library.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/http-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/http-interceptor/http-exceptions.interceptor.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/validators.module.ts","../../../packages/payment-client-core/src/lib/core/payment/form/form.module.ts","../../../packages/payment-client-core/src/lib/shared/pipes/pipes.module.ts","../../../packages/payment-client-core/src/lib/core-library.module.ts","../../../packages/payment-client-core/src/public-api.ts","../../../packages/payment-client-core/src/xsolla-payment-client-core.ts"],"sourcesContent":["export const masksFunctionsMap: { [fieldNameOrType: string]: () => string } = {\n zip: () => {\n const zipLength = 5;\n return new Array(zipLength).fill('9').join('');\n },\n};\n","export class AppError extends Error {\n public constructor(message: string) {\n super(message);\n }\n}\n","import { AppError } from '../exceptions-handling/errors/app-error.class';\n\nexport class EmptyUtilsResponseError extends AppError {\n public constructor() {\n super('Utils response is empty or not requested. Check your token.');\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ExtendedWindow } from './extended-window.interface';\n\nexport const windowToken: InjectionToken<ExtendedWindow> = new InjectionToken(\n 'window'\n);\n","export const defaultApiUrl = 'https://secure.xsolla.com/paystation2/api/';\nexport const sandboxApiUrl =\n 'https://sandbox-secure.xsolla.com/paystation2/api/';\n","import { Observable } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { windowToken } from '../../window.token';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { RequestOptions } from './options.interface';\nimport { defaultApiUrl, sandboxApiUrl } from './api-url.const';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureApiClient {\n private isSandboxMode = false;\n\n public constructor(\n private readonly httpClient: HttpClient,\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public setSandboxMode(isSandboxMode: boolean): void {\n this.isSandboxMode = isSandboxMode;\n }\n\n public get<T>(url: string, options?: RequestOptions): Observable<T> {\n return this.httpClient.get<T>(`${this.baseUrl}${url}`, options);\n }\n\n public post<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.post<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public patch<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.patch<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public put<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.put<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public delete<T>(url: string, options?: RequestOptions): Observable<T> {\n return this.httpClient.delete<T>(`${this.baseUrl}${url}`, options);\n }\n\n public get baseUrl(): string {\n let predefinedBaseUrl: string | null = null;\n\n try {\n predefinedBaseUrl = this.window.localStorage.getItem('devApiUrl');\n } catch (e: unknown) {\n console.warn('localStorage is not available');\n }\n\n if (predefinedBaseUrl) {\n return predefinedBaseUrl;\n }\n\n return this.isSandboxMode ? sandboxApiUrl : defaultApiUrl;\n }\n}\n","import { firstValueFrom } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { HttpParams } from '@angular/common/http';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { DeepReadonly } from '../deep-readonly.type';\nimport { InitConfiguration } from './configuration.interface';\nimport { EmptyUtilsResponseError } from './empty-utils-response.error';\nimport { User } from './user.interface';\nimport { Settings } from './settings.interface';\nimport { Purchase } from './purchase.interface';\nimport { Project } from './project.interface';\nimport { UtilsResponse } from './utils-response.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SettingsService {\n public get project(): DeepReadonly<Project> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.project;\n }\n\n public get purchase(): DeepReadonly<Purchase> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.purchase;\n }\n\n public get settings(): DeepReadonly<Settings> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n if (this.response?.purchase_external_id) {\n return {\n ...this.response.settings,\n purchase_external_id: this.response.purchase_external_id,\n };\n }\n\n return this.response?.settings;\n }\n\n public get user(): DeepReadonly<User> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.user;\n }\n\n public get utilsResponse(): DeepReadonly<UtilsResponse> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response;\n }\n\n public get isEmpty(): boolean {\n return !this.response;\n }\n\n public get token(): string {\n return this._token;\n }\n\n public get hasResponse(): boolean {\n return !!this.response;\n }\n\n public isInitialized = false;\n\n private response!: DeepReadonly<UtilsResponse> | undefined;\n\n private _token = '';\n\n private sandboxMode = false;\n\n public constructor(private readonly secureApi: SecureApiClient) {}\n\n public async init(configuration: InitConfiguration): Promise<void> {\n if (!configuration.token) {\n return Promise.reject('token is missing');\n }\n\n this._token = configuration.token;\n this.sandboxMode = !!configuration.sandbox;\n\n await this.sendRequest(this.token);\n\n this.isInitialized = true;\n }\n\n public isSandboxMode(): boolean {\n return this.sandboxMode;\n }\n\n private async sendRequest(token: string): Promise<void> {\n const params = new HttpParams().set('access_token', token);\n\n this.secureApi.setSandboxMode(this.isSandboxMode());\n\n this.response = await firstValueFrom(\n this.secureApi.get<UtilsResponse>('utils', { params })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CountryService {\n private userDefinedCountry: string | null = null;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public setCountry(country: string): void {\n this.userDefinedCountry = country;\n }\n\n public getCountry(): string {\n return this.userDefinedCountry ?? this.getTokenCountry();\n }\n\n private getTokenCountry(): string {\n return this.settingsService.user.country.value;\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class ResponseError extends AppError {\n public constructor(message?: string) {\n super('Response failed' + (message ? `: \"${message}\".` : '.'));\n }\n}\n","export enum BooleanNumber {\n false = 0,\n true = 1,\n}\n","import { BooleanNumber } from '../boolean-number.enum';\nimport { PaymentMethodApi } from './payment-method-api.interface';\nimport { PaymentMethod } from './payment-method.interface';\nimport { PaymentMethodsApi } from './payment-methods-api.interface';\n\nexport class PaymentMethodsResponse {\n public readonly top: PaymentMethod[];\n public readonly especial: PaymentMethod[];\n public readonly remained: PaymentMethod[];\n public readonly remainedCount: { total: number; visible: number };\n\n public constructor(paymentMethods: PaymentMethodsApi) {\n this.especial = paymentMethods.especial.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.top = paymentMethods.top.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.remained = paymentMethods.remained.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.remainedCount = {\n total: paymentMethods.remained_count.total,\n visible: paymentMethods.remained_count.visible,\n };\n }\n\n private mapPaymentMethod(method: PaymentMethodApi): PaymentMethod {\n return {\n id: method.id,\n rank: method.rank,\n name: method.name,\n aliases: method.aliases,\n categories: method.cat,\n isVisible: method.is_visible,\n recommended: method.recommended === BooleanNumber.true,\n enabledSaveAccount: method.enabled_save_account,\n iconName: method.switch_icon_name,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { PaymentMethodsResponse } from './payment-methods-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof PaymentMethodsResponse>;\n\nexport type PaymentMethodsResponseFactory = (\n ...args: ResponseParameters\n) => PaymentMethodsResponse;\n\nexport const paymentMethodsResponseFactoryToken: InjectionToken<PaymentMethodsResponseFactory> =\n new InjectionToken<PaymentMethodsResponseFactory>('PaymentMethodsResponse');\n\nexport const paymentMethodsResponseFactoryProvider: ValueProvider = {\n provide: paymentMethodsResponseFactoryToken,\n useValue: (...args: ResponseParameters) =>\n new PaymentMethodsResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { CountryService } from '../country/country.service';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { PaymentMethod } from './payment-method.interface';\nimport { PaymentMethodsRequestParams } from './payment-methods-request-params.interface';\nimport { PaymentMethodsResponse } from './payment-methods-response.class';\nimport { PaymentMethodsResponseApi } from './payment-methods-response.interface';\nimport {\n PaymentMethodsResponseFactory,\n paymentMethodsResponseFactoryToken,\n} from './payment-methods-response.token';\nimport { XpsBoolean } from '../xps-boolean.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentMethodsService {\n private readonly apiRoute = 'remained_payment_methods';\n\n private readonly cache = new Map<string, Promise<PaymentMethodsResponse>>();\n\n public constructor(\n @Inject(paymentMethodsResponseFactoryToken)\n private readonly responseFactory: PaymentMethodsResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getList(isSaveMethodMode?: boolean): Promise<PaymentMethod[]> {\n const response = await this.request(isSaveMethodMode);\n\n if (this.isFixedPaymentMethod) {\n return this.filterMethodsByFixedPaymentMethod(response.remained);\n }\n\n return response.remained;\n }\n\n public async getQuickMethods(): Promise<PaymentMethod[]> {\n const response = await this.request();\n return response.especial;\n }\n\n private async request(\n isSaveMethodMode?: boolean\n ): Promise<PaymentMethodsResponse> {\n const requestParams: PaymentMethodsRequestParams = {\n access_token: this.settingsService.token,\n country: this.countryService.getCountry(),\n save_payment_account_only: isSaveMethodMode\n ? XpsBoolean.true\n : XpsBoolean.false,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<PaymentMethodsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n map((response) => this.responseFactory(response.payment_methods))\n )\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n\n private filterMethodsByFixedPaymentMethod(\n methods: PaymentMethod[]\n ): PaymentMethod[] {\n const fixedPid = this.settingsService.purchase?.payment_system?.id;\n const paymentMethod = methods.find((method) => method.id === fixedPid);\n\n return paymentMethod ? [paymentMethod] : [];\n }\n\n private get isFixedPaymentMethod(): boolean {\n return !!this.settingsService.purchase?.payment_system?.id;\n }\n}\n","import { SavedMethodsResponseApi } from './saved-methods-response.interface';\nimport { SavedMethodApi } from './saved-method-api.interface';\nimport { SavedMethod } from './saved-method.interface';\n\nexport class SavedMethodsResponse {\n public readonly list: SavedMethod[];\n\n public constructor(savedMethods: SavedMethodsResponseApi) {\n this.list = savedMethods.list.map((method) => this.mapSavedMethod(method));\n }\n\n private mapSavedMethod(method: SavedMethodApi): SavedMethod {\n return {\n currency: method.currency,\n form: method.form,\n id: method.id,\n isSelected: method.isSelected,\n isBabkaPay: method.is_babka_pay,\n name: method.name,\n pid: method.pid,\n psName: method.psName,\n recurrentType: method.recurrent_type,\n replaced: method.replaced,\n type: method.type,\n cardExpiryDate: method.card_expiry_date,\n iconName: method.switch_icon_name,\n partner: method.partner,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SavedMethodsResponse } from './saved-methods-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof SavedMethodsResponse>;\n\nexport type SavedMethodsResponseFactory = (\n ...args: ResponseParameters\n) => SavedMethodsResponse;\n\nexport const savedMethodsResponseFactoryToken: InjectionToken<SavedMethodsResponseFactory> =\n new InjectionToken<SavedMethodsResponseFactory>('SavedMethodsResponse');\n\nexport const savedMethodsResponseFactoryProvider: ValueProvider = {\n provide: savedMethodsResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new SavedMethodsResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { SavedMethodsRequestParams } from './saved-methods-request-params.interface';\nimport { SavedMethodsResponseApi } from './saved-methods-response.interface';\nimport {\n SavedMethodsResponseFactory,\n savedMethodsResponseFactoryToken,\n} from './saved-methods-response.token';\nimport { SavedMethodsResponse } from './saved-methods-response.class';\nimport { SavedMethod } from './saved-method.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SavedMethodsService {\n private readonly apiRoute = 'savedmethods';\n\n private readonly cache = new Map<string, Promise<SavedMethodsResponse>>();\n\n public constructor(\n @Inject(savedMethodsResponseFactoryToken)\n private readonly responseFactory: SavedMethodsResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getList(needResetCache = false): Promise<SavedMethod[]> {\n if (needResetCache) {\n this.cache.clear();\n }\n\n const response = await this.request();\n return response.list;\n }\n\n private async request(): Promise<SavedMethodsResponse> {\n const requestParams: SavedMethodsRequestParams = {\n access_token: this.settingsService.token,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<SavedMethodsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(map((response) => this.responseFactory(response)))\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { UserBalanceApi } from './user-balance-api.interface';\n\nexport class UserBalanceResponse {\n public readonly isEnoughUserBalance: boolean;\n public readonly isEnoughUserRecurrentBalance: boolean;\n\n public constructor(userBalance: UserBalanceApi) {\n this.isEnoughUserBalance = userBalance.is_enough_user_balance ?? false;\n this.isEnoughUserRecurrentBalance =\n userBalance.is_enough_user_recurrent_balance ?? false;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { UserBalanceResponse } from './user-balance-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof UserBalanceResponse>;\n\nexport type UserBalanceResponseFactory = (\n ...args: ResponseParameters\n) => UserBalanceResponse;\n\nexport const userBalanceResponseFactoryToken: InjectionToken<UserBalanceResponseFactory> =\n new InjectionToken<UserBalanceResponseFactory>('UserBalanceResponse');\n\nexport const userBalanceResponseFactoryProvider: ValueProvider = {\n provide: userBalanceResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new UserBalanceResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport {\n UserBalanceResponseFactory,\n userBalanceResponseFactoryToken,\n} from './user-balance-response.token';\nimport { UserBalanceResponse } from './user-balance-response.class';\nimport { UserBalanceRequestParams } from './user-balance-request-params.interface';\nimport { UserBalanceApi } from './user-balance-api.interface';\nimport { Balance } from '../settings/balance.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserBalanceService {\n private readonly apiRoute = 'balance/sufficiency';\n\n private readonly cache = new Map<string, Promise<UserBalanceResponse>>();\n\n public constructor(\n @Inject(userBalanceResponseFactoryToken)\n private readonly responseFactory: UserBalanceResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getUserBalance(): Promise<UserBalanceResponse> {\n return this.request();\n }\n\n public getUserBalanceValue(): Balance | null {\n return this.settingsService.user.user_balance;\n }\n\n private async request(): Promise<UserBalanceResponse> {\n const requestParams: UserBalanceRequestParams = {\n access_token: this.settingsService.token,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<UserBalanceApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(map((response) => this.responseFactory(response)))\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SearchParams } from './search-params.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UrlService {\n public addSearchParams(url: string, params: SearchParams = {}): string {\n if (!url) {\n return '';\n }\n\n const urlObject = new URL(url);\n for (const [key, value] of Object.entries(params)) {\n urlObject.searchParams.set(key, value);\n }\n\n return urlObject.toString();\n }\n\n public getSearchParams(url: string): SearchParams {\n if (!url) {\n return {};\n }\n\n const urlObject = new URL(url);\n const searchParams: SearchParams = {};\n\n for (const [key, value] of urlObject.searchParams) {\n searchParams[key] = value;\n }\n\n return searchParams;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../../settings/settings.service';\nimport { UrlService } from '../../url/url.service';\nimport { PaymentConfig } from '../payment-config.interface';\nimport { XpsBoolean } from '../../xps-boolean.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentConfigService {\n public constructor(\n private readonly urlService: UrlService,\n private readonly settingsService: SettingsService\n ) {}\n\n public enrich(config: PaymentConfig): PaymentConfig {\n if (!config.returnUrl) {\n throw new Error('URL is not provided in payment config');\n }\n\n return {\n ...config,\n returnUrl: this.enrichReturnUrl(\n config.returnUrl,\n !!config.savePaymentMethod\n ),\n };\n }\n\n private enrichReturnUrl(\n returnUrl: string,\n savePaymentMethod: boolean\n ): string {\n const enrichedUrl = this.urlService.addSearchParams(returnUrl, {\n token: this.settingsService.token,\n isSavePaymentAccount: savePaymentMethod\n ? XpsBoolean.true\n : XpsBoolean.false,\n });\n return enrichedUrl;\n }\n}\n","export enum XpsCommand {\n form = 'form',\n check = 'check',\n status = 'status',\n checkout = 'checkout',\n account = 'account',\n create = 'create',\n}\n","export enum FieldNames {\n address1 = 'address1',\n address2 = 'address2',\n address = 'address',\n allowRecurrentSubscription = 'allowRecurrentSubscription',\n allowSubscription = 'allowSubscription',\n apt = 'apt',\n availableCardTypes = 'available_card_types',\n bank = 'bank',\n birthDate = 'birth_date',\n cardMonth = 'card_month',\n cardYear = 'card_year',\n cardNumber = 'card_number',\n cardholdername = 'cardholdername',\n city = 'city',\n couponCode = 'couponCode',\n cpfName = 'cpf_name',\n cpfNumber = 'cpf_number',\n cvv = 'cvv',\n description = 'description',\n email = 'email',\n psEmail = 'psEmail',\n euCheck = 'eu_check',\n extraCvv = 'extra_cvv',\n extraCardNumber = 'extra_card_number',\n extraCardType = 'extra_card_type',\n fName = 'f_name',\n installments = 'installments',\n lName = 'l_name',\n needInstallments = 'needInstallments',\n personId = 'person_id',\n personIdAr = 'person_id_ar',\n personIdCo = 'person_id_co',\n phone = 'phone',\n purchaseDescription = 'purchaseDescription',\n recurrentType = 'recurrent_type',\n rockstarTaxes = 'rockstar_taxes',\n state = 'state',\n street = 'street',\n streetNumber = 'street_number',\n take2Taxes = 'take2_taxes',\n termsAndConditions = 'termsAndConditions',\n termsAndConditionsAtariPp = 'termsAndConditionsAtariPP',\n termsAndConditionsAtariTc = 'termsAndConditionsAtariTC',\n termsAndConditionsHtcEula = 'termsAndConditionsHtcEula',\n termsAndConditionsRobloxEula = 'termsAndConditionsRobloxEula',\n termsAndConditionsRolandEula = 'termsAndConditionsRolandEula',\n termsAndConditionsDeusLoVultEula = 'termsAndConditionsDeusLoVultEula',\n termsAndConditionsOnzenga = 'termsAndConditionsOnzenga',\n xsollaTipsAmount = 'xsollaTipsAmount',\n zip = 'zip',\n allowSave = 'allowSave',\n koreaLimitsInstruction = 'korea_limits_instruction',\n tokenApplePay = 'token_applepay',\n fixInvoice = 'fix_invoice',\n fixPid = 'fix_pid',\n signature = 'signature',\n qr = 'qr',\n sum = 'sum',\n out = 'out',\n tinkoffDisclaimer = 'ps.tinkoff.disclaimer',\n}\n","import { XpsResponse } from '../../xps-response.interface';\nimport { Field } from '../../field.interface';\nimport { Invoice } from '../../invoice.interface';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { FieldNames } from '../../field-names.enum';\n\nexport class SubmitResponse {\n public readonly parameters: XpsResponse;\n public readonly fields: Field[];\n public onlineBanking?: {\n url: string;\n };\n public readonly data?: unknown;\n public isNeedRedirect: boolean;\n\n public buyData: XpsResponse['buyData'];\n\n public signature?: string;\n public fixInvoice?: string;\n public hasFatalErrors?: boolean;\n public userSession?: Invoice;\n public pid: XpsResponse['pid'];\n public errors: XpsResponse['errors'];\n public summary: XpsResponse['summary'];\n public title: string;\n public currentCommand: XpsCommand | null;\n public messages: XpsResponse['messages'];\n\n public constructor(\n parameters: XpsResponse,\n public readonly responseNumber: number = 0\n ) {\n /* Todo split into properties */\n this.parameters = parameters;\n this.fields = Object.keys(parameters.form).map(\n (key: string): Field => parameters.form[key]\n );\n\n if (parameters.onlineBanking) {\n this.onlineBanking = {\n url: parameters.onlineBanking.value,\n };\n }\n\n this.isNeedRedirect =\n parameters.currentCommand === XpsCommand.account ||\n (parameters.currentCommand === XpsCommand.checkout &&\n Boolean(parameters.checkout));\n\n this.buyData = parameters.buyData;\n\n this.fixInvoice = this.fields.find(\n (field: Field) => field.name === FieldNames.fixInvoice\n )?.value;\n\n this.signature = this.fields.find(\n (field: Field) => field.name === FieldNames.signature\n )?.value;\n\n this.hasFatalErrors = parameters.textAll?.fatal;\n\n this.userSession = parameters.userSession;\n this.pid = parameters.pid;\n this.errors = parameters.errors;\n this.summary = parameters.summary;\n this.title = parameters.title;\n this.currentCommand = parameters.currentCommand;\n this.messages = parameters.messages;\n }\n}\n","import { Field } from '../../field.interface';\nimport { PaymentForm } from '../../payment-form.interface';\nimport { XpsResponse, XpsStatus } from '../../xps-response.interface';\n\nexport class InitializeResponse {\n public readonly paymentForm: PaymentForm | null = null;\n\n public constructor(response: XpsResponse) {\n this.paymentForm = this.extractPaymentForm(response);\n }\n\n private extractPaymentForm(response: XpsResponse): PaymentForm | null {\n if (!response) {\n return null;\n }\n\n return {\n totalAmount: response.buyData.sum,\n currency: response.buyData.currency,\n fields: Object.keys(response.form).map(\n (key: string): Field => (response as XpsResponse).form[key]\n ),\n taxDisclaimer: response.taxDisclaimer,\n number: response.number,\n barcode: response.barcode,\n instruction: response.instruction,\n offers: response.offers,\n error: response.error,\n errors: response.errors,\n restrictions: response.restrictions,\n info: response.info,\n buyData: response.buyData,\n pid: response.pid,\n messages: response.messages ?? [],\n title: response.title,\n summary: response.summary,\n skipForm: response.skipForm,\n isSavedMethodPayment: !!response.form?.saved_method_id,\n couponCode: response.form?.couponCode?.value || '',\n publicId: response.public_id,\n skipCheckout: response.skipCheckout,\n koreaNotification: response.form.korea_limits_instruction,\n isCheckout: response.isCheckout,\n categories: response.categories,\n hasFatalErrors: response.textAll?.fatal,\n userSession: response.userSession,\n statusText: (response.status as XpsStatus)?.statusData?.stateText ?? null,\n country: response.country ? response.country.iso : null,\n };\n }\n}\n","import { SubmitResponse } from './submit-response.class';\n\nexport const isSubmitResponse = (value: unknown): value is SubmitResponse => {\n return value instanceof SubmitResponse;\n};\n","export enum InputEventName {\n blur = 'blur',\n focus = 'focus',\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { InitializeResponse } from './initialize-response.class';\n\nexport type ResponseParameters = ConstructorParameters<\n typeof InitializeResponse\n>;\n\nexport type InitializeResponseFactory = (\n ...args: ResponseParameters\n) => InitializeResponse;\n\nexport const initializeResponseFactoryToken: InjectionToken<InitializeResponseFactory> =\n new InjectionToken<InitializeResponseFactory>('InitializeResponse');\n\nexport const initializeResponseFactoryProvider: ValueProvider = {\n provide: initializeResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new InitializeResponse(...args),\n};\n","export const masterCardAndVisaPaymentMethodId = 26;\nexport const maestroPaymentMethodId = 490;\nexport const creditCardPaymentMethodId = 1380;\nexport const americanExpressMethodId = 714;\n\nexport const specialCards: number[] = [\n maestroPaymentMethodId,\n masterCardAndVisaPaymentMethodId,\n americanExpressMethodId,\n];\n\nexport const cardsWith3ds: number[] = [\n masterCardAndVisaPaymentMethodId,\n maestroPaymentMethodId,\n creditCardPaymentMethodId,\n];\n","import { lastValueFrom } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SecureApiClient } from '../../http/secure-api/secure-api.service';\nimport { XpsBoolean } from '../../xps-boolean.enum';\nimport { windowToken } from '../../window.token';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { SettingsService } from '../../settings/settings.service';\nimport { XpsRequest } from '../xps-request.interface';\nimport { XpsResponse } from '../xps-response.interface';\nimport { XpsRequestParams } from '../xps-request-params.interface';\nimport { cardsWith3ds } from '../credit-card-payment-methods-id.variable';\nimport { CountryService } from '../../country/country.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class XpsApiService {\n private readonly directPaymentApiRoute = 'directpayment';\n\n public constructor(\n @Inject(windowToken)\n private readonly window: ExtendedWindow,\n private readonly secureApiClient: SecureApiClient,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService\n ) {}\n\n public async directPaymentRequest(\n parameters: XpsRequest\n ): Promise<XpsResponse> {\n const pid =\n parameters.pid?.toString() ??\n (parameters.xps_fix_pid as string | undefined) ??\n '';\n const paymentWithSavedMethod =\n parameters.paymentWithSavedMethod ??\n (parameters.xps_paymentWithSavedMethod as string | undefined) ??\n '';\n\n const requestParams = {\n ...this.collectAnalyticsParameters(pid, paymentWithSavedMethod),\n ...this.collectUserSessionId(),\n country: this.countryService.getCountry(),\n ...parameters,\n };\n\n return lastValueFrom(\n this.secureApiClient.post<XpsResponse>(\n this.directPaymentApiRoute,\n new URLSearchParams({ ...requestParams } as unknown as {\n [key: string]: string;\n }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n );\n }\n\n private collectAnalyticsParameters(\n paymentMethodId?: string,\n paymentWithSavedMethod?: XpsBoolean | string\n ): {\n [key: string]: unknown;\n } {\n const parameters: XpsRequestParams = {};\n\n parameters.paymentWithSavedMethod = paymentWithSavedMethod\n ? paymentWithSavedMethod\n : XpsBoolean.false;\n\n if (!paymentMethodId) {\n return parameters;\n }\n\n /* If payment method with 3DSecure */\n if (cardsWith3ds.includes(Number(paymentMethodId))) {\n parameters.container3DS = JSON.stringify({\n browserjavaenabled: this.window.navigator.javaEnabled(),\n browserlanguage: this.window.navigator.language,\n browsercolordepth: this.window.screen.colorDepth,\n browserscreenheight: this.window.screen.availHeight,\n browserscreenwidth: this.window.screen.availWidth,\n browsertz: new Date().getTimezoneOffset(),\n browserappname: this.window.navigator.appName,\n browserlocaltime: new Date().toString(),\n browserplatform: this.window.navigator.platform || '',\n browsercookiesenabled: this.window.navigator.cookieEnabled,\n });\n }\n\n return parameters;\n }\n\n private collectUserSessionId(): XpsRequestParams {\n const parameters: XpsRequestParams = {};\n\n parameters.xps_idUserSession = this.settingsService.user.session_id ?? '';\n parameters.user_session_id = this.settingsService.user.session_id ?? '';\n\n return parameters;\n }\n}\n","export const vkPay = 3496;\nexport const googlePay = 3431;\nexport const applePay = 3175;\nexport const barzahlenPay = 1679;\nexport const naverPay = 3563;\nexport const venmoPay = 3636;\n","import {\n applePay,\n vkPay,\n barzahlenPay,\n naverPay,\n venmoPay,\n} from './pages-payment-methods-id.const';\n\nexport const pagesRoutes = new Map([\n [vkPay, '/payment/external-pages/vk-pay'],\n [applePay, '/payment/external-pages/apple-pay'],\n [barzahlenPay, '/payment/external-pages/barzahlen-pay'],\n [naverPay, '/payment/external-pages/naver-pay'],\n [venmoPay, '/payment/external-pages/venmo-pay'],\n]);\n","export const payStation4Url = 'https://secure.xsolla.com/paystation4';\nexport const sandboxPayStationUrl =\n 'https://sandbox-secure.xsolla.com/paystation4';\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { ActionCreator } from '../action.interface';\nimport {\n RedirectAction,\n RedirectActionData,\n RedirectActionType,\n} from './redirect.action.type';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { Injectable } from '@angular/core';\nimport { pagesRoutes } from './ps4-pages/pages-routes.const';\nimport { payStation4Url, sandboxPayStationUrl } from './pay-station4-url.const';\nimport { SettingsService } from '../../../settings/settings.service';\n\n@Injectable()\nexport class RedirectActionCreator implements ActionCreator {\n public readonly type: RedirectActionType = 'redirect';\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public getActionData(submitResponse: SubmitResponse): RedirectAction {\n return {\n type: this.type,\n data: {\n fields: submitResponse.fields,\n errors: submitResponse.errors,\n messages: submitResponse.messages,\n order: submitResponse.summary,\n invoiceId: submitResponse.fixInvoice,\n redirect: this.getRedirect(submitResponse),\n },\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return (\n response.currentCommand === XpsCommand.account ||\n (response.currentCommand === XpsCommand.checkout &&\n Boolean(response.parameters.checkout))\n );\n }\n\n private getRedirect(\n submitResponse: SubmitResponse\n ): RedirectActionData['redirect'] {\n return {\n redirectUrl: this.getRedirectUrl(submitResponse),\n data: submitResponse.parameters.checkout.data,\n };\n }\n\n private getRedirectUrl(submitResponse: SubmitResponse): string {\n const responseRedirectUrl = submitResponse.parameters.checkout.action;\n\n const pid = submitResponse?.fields?.find(\n ({ name }) => name === 'fix_pid'\n )?.value;\n if (!pid) {\n return responseRedirectUrl;\n }\n\n const pagesPath = pagesRoutes.get(Number(pid));\n if (!pagesPath) {\n return responseRedirectUrl;\n }\n\n return this.preparePagesUrl(pagesPath);\n }\n\n private preparePagesUrl(pagesPath: string): string {\n const isSandbox = this.settingsService.isSandboxMode();\n const token = this.settingsService.token;\n\n const payStationUrl = isSandbox ? sandboxPayStationUrl : payStation4Url;\n return `${payStationUrl}/en${pagesPath}?token=${token}`;\n }\n}\n","import { ActionCreator } from '../action.interface';\nimport {\n ShowFieldsAction,\n ShowFieldsActionData,\n ShowFieldsActionType,\n} from './show-fields.action.type';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsBoolean } from '../../../xps-boolean.enum';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ShowFieldsActionCreator implements ActionCreator {\n public type: ShowFieldsActionType = 'show_fields';\n\n public getActionData(submitResponse: SubmitResponse): ShowFieldsAction {\n const data: ShowFieldsActionData = {\n fields: [],\n errors: [],\n messages: [],\n order: {},\n };\n\n data.fields = submitResponse.fields.filter(\n (field) => field?.isVisible === XpsBoolean.true\n );\n data.errors = submitResponse.errors;\n data.messages = submitResponse.messages;\n data.order = submitResponse.summary;\n\n return {\n type: this.type,\n data,\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return (\n response.currentCommand === XpsCommand.check ||\n response.currentCommand === XpsCommand.form\n );\n }\n}\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { ActionCreator } from '../action.interface';\nimport {\n CheckStatusAction,\n CheckStatusActionType,\n} from './check-status.action.type';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CheckStatusActionCreator implements ActionCreator {\n public type: CheckStatusActionType = 'check_status';\n\n public getActionData(): CheckStatusAction {\n return {\n type: this.type,\n data: null,\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return response.currentCommand === XpsCommand.status;\n }\n}\n","import { ActionCreator } from '../action.interface';\nimport {\n ShowErrorsAction,\n ShowErrorsActionData,\n ShowErrorsActionType,\n} from './show-errors.action.type';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsError } from '../../xps-error.interface';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ShowErrorsActionCreator implements ActionCreator {\n public type: ShowErrorsActionType = 'show_errors';\n public data!: ShowErrorsActionData;\n\n public getActionData(errors: XpsError[]): ShowErrorsAction {\n return {\n type: this.type,\n data: { errors },\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return Boolean(response.errors?.length);\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class TerminalError extends AppError {\n public code!: string;\n\n public constructor(message: string, code: string) {\n super(message);\n\n this.code = code;\n }\n}\n","export enum StatusGroups {\n troubled = 'troubled',\n done = 'done',\n invoice = 'invoice',\n}\n","export enum StatusEnum {\n created = 'created',\n awaiting = 'awaiting',\n processing = 'processing',\n authorized = 'authorized',\n held = 'held',\n done = 'done',\n error = 'error',\n canceled = 'canceled',\n}\n","import { Status } from '../../status.interface';\nimport { XpsResponse, XpsStatus } from '../../../xps-response.interface';\nimport { TerminalError } from '../../../../exceptions-handling/errors/terminal-error.class';\nimport { StatusGroups } from '../../status-groups';\nimport { StatusEnum } from '../../status.enum';\n\nexport class StatusResponse {\n public readonly status!: Status;\n private readonly error?: { code: string; message: string };\n public constructor(parameters: {\n status: XpsStatus | null;\n errors: XpsResponse['errors'];\n form?: XpsResponse['form'];\n }) {\n if (parameters.errors?.[0]) {\n this.error = {\n code: parameters.errors[0].code.toString(),\n message: parameters.errors[0].message,\n };\n }\n\n if (!parameters.status) {\n throw new TerminalError(\n this.error?.message ?? '',\n this.error?.code.toString() ?? ''\n );\n }\n\n this.status = {\n statusState: parameters.status.statusData.stateText,\n email: parameters.status.statusData.email,\n webSocketUrl: parameters.status.statusData.webSocketChannelUrl,\n webSocketChannelName: parameters.status.statusData.webSocketChannelName,\n webSocketClientType: parameters.status.statusData.webSocketClientType,\n financeInfo: parameters.status.text.info,\n discount: parameters.status.text.info.discount\n ? Math.abs(\n Number.parseFloat(parameters.status.text.info.discount?.value ?? '')\n )\n : null,\n isCancelUser: parameters.status.isCancelUser,\n postMessageStatus: parameters.status.isCancelUser\n ? StatusGroups.troubled\n : parameters.status.group,\n virtualCurrencyAmount: parameters.status.statusData.out,\n backUrlSettings: {\n backUrl: parameters.status.text.backurl,\n backUrlAction: parameters.status.text.backurl_action,\n backUrlCaption: parameters.status.text.backurl_caption,\n returnRegion: parameters.status.return_region,\n },\n additionalBackButton: this.getAdditionalBackButton(parameters.status),\n group: parameters.status.group,\n needToCheck: parameters.status.needToCheck,\n autoRedirect: parameters.status.autoredirect,\n statusMessage: parameters.status.text.state,\n userId: parameters.status.statusData.v1,\n invoice: parameters.status.statusData.invoice,\n pid: parameters.status.statusData.pid,\n projectAmount: this.getProjectAmount(parameters.status),\n titleClass: parameters.status.title_class,\n paymentCountryIso: parameters.status.statusData.payment_country_iso,\n order: parameters.status.text.order,\n };\n\n if (parameters.form) {\n this.status.userReturnStatus = this.getUserReturnStatus(parameters.form);\n }\n\n if (\n this.status.statusState === StatusEnum.done ||\n this.status.statusState === StatusEnum.authorized\n ) {\n this.status.isSuccess = true;\n }\n\n if (\n this.status.statusState === StatusEnum.canceled ||\n this.status.isCancelUser\n ) {\n this.status.isCanceled = true;\n }\n }\n\n private getUserReturnStatus(form: XpsResponse['form']): string | undefined {\n const value = form['fix_userReturnStatus']?.value;\n if (value === 'undefined') return undefined;\n\n return value;\n }\n\n private getProjectAmount(status: XpsStatus): Status['projectAmount'] {\n if (!status.statusData.projectAmount) {\n return;\n }\n\n const [amount, currency] = status.statusData.projectAmount.split(' ');\n return {\n amount,\n currency,\n };\n }\n\n private getAdditionalBackButton(\n status: XpsStatus\n ): Status['additionalBackButton'] {\n if (!status.text.is_additional_back_url_enabled) {\n return {\n link: '',\n action: '',\n label: '',\n region: '',\n isEnabled: false,\n };\n }\n\n return {\n link: status.text.additional_back_url_link ?? '',\n action: status.text.additional_back_url_action ?? '',\n label: status.text.additional_back_url_label ?? '',\n region: status.additional_button_return_region ?? '',\n isEnabled: status.text.is_additional_back_url_enabled,\n };\n }\n}\n","import { ActionCreator } from '../action.interface';\nimport {\n StatusUpdatedAction,\n StatusUpdatedActionType,\n} from './status-updated.action.type';\nimport { StatusResponse } from '../../status/status-request/response/status-response.class';\nimport { Status } from '../../status/status.interface';\nimport { SavePaymentMethodStatus } from '../../status/save-payment-method-status/save-payment-method-status.enum';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class StatusUpdatedActionCreator implements ActionCreator {\n public type: StatusUpdatedActionType = 'status_updated';\n\n public getActionData({\n statusResponse,\n isSavePaymentMethodMode,\n savePaymentMethodStatus,\n }: {\n statusResponse: StatusResponse | Status;\n isSavePaymentMethodMode?: boolean;\n savePaymentMethodStatus?: SavePaymentMethodStatus;\n }): StatusUpdatedAction {\n let status: Status;\n\n if (statusResponse instanceof StatusResponse) {\n status = statusResponse.status;\n } else {\n status = statusResponse;\n }\n\n return {\n type: this.type,\n data: {\n statusState: status.statusState,\n invoice: status.invoice,\n isSuccess: status.isSuccess,\n isCanceled: status.isCanceled,\n group: status.group,\n isSavePaymentMethodMode: Boolean(isSavePaymentMethodMode),\n savePaymentMethodStatus,\n },\n };\n }\n\n public isSuitable(): boolean {\n return false;\n }\n}\n","import { ActionCreator } from '../action.interface';\nimport { ThreeDsAction, ThreeDsActionType } from './three-ds.action.type';\nimport { StatusChallenge } from '../../three-ds/three-ds-20/status-update.interface';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ThreeDsActionCreator implements ActionCreator {\n public type: ThreeDsActionType = '3DS';\n\n public getActionData(actionData: StatusChallenge): ThreeDsAction {\n return {\n type: this.type,\n data: actionData,\n };\n }\n\n public isSuitable(): boolean {\n return false;\n }\n}\n","export const googlePayPid = 3431;\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { ActionCreator } from '../action.interface';\nimport {\n SpecialButtonAction,\n SpecialButtonActionType,\n} from './special-button.action.type';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { Injectable } from '@angular/core';\nimport { googlePayPid } from '../../../sdk-payment-systems/sdk-payment-methods.const';\n\n@Injectable()\nexport class SpecialButtonActionCreator implements ActionCreator {\n public type: SpecialButtonActionType = 'special_button';\n private readonly pids: number[] = [googlePayPid];\n private readonly sdkPaymentMethodsName = new Map<number, string>([\n [googlePayPid, 'google-pay'],\n ]);\n\n public getActionData(submitResponse: SubmitResponse): SpecialButtonAction {\n return {\n type: this.type,\n data: {\n errors: submitResponse.errors,\n messages: submitResponse.messages,\n buttonName: this.getPaymentMethodName(submitResponse.pid),\n },\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return (\n response.currentCommand === XpsCommand.checkout &&\n Boolean(response.parameters.checkout) &&\n this.pids.includes(response.pid)\n );\n }\n\n private getPaymentMethodName(pid: number): string {\n const buttonName = this.sdkPaymentMethodsName.get(pid);\n\n if (!buttonName) {\n throw new Error('Special button not found');\n }\n\n return buttonName as string;\n }\n}\n","import { InjectionToken, ProviderToken } from '@angular/core';\nimport { ActionCreator } from './action.interface';\nimport { RedirectActionCreator } from './redirect/redirect.action.class';\nimport { ShowFieldsActionCreator } from './show-fields/show-fields.action.class';\nimport { CheckStatusActionCreator } from './check-status/check-status.action.class';\nimport { ShowErrorsActionCreator } from './show-errors/show-errors.action.class';\nimport { StatusUpdatedActionCreator } from './status-updated/status-updated.action.class';\nimport { ThreeDsActionCreator } from './three-ds/three-ds.action.class';\nimport { SpecialButtonActionCreator } from './special-button/special-button.action.class';\n\nexport type NextActionTokens = Array<ProviderToken<ActionCreator>>;\n\nexport const nextActionsToken = new InjectionToken<ActionCreator>('Action');\n\nexport const nextActions: NextActionTokens = [\n ShowFieldsActionCreator,\n CheckStatusActionCreator,\n SpecialButtonActionCreator,\n RedirectActionCreator,\n];\n\nexport const flowUpdateNextActions: NextActionTokens = [\n ShowErrorsActionCreator,\n StatusUpdatedActionCreator,\n ThreeDsActionCreator,\n];\n","import { Inject, Injectable, Injector, ProviderToken } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { NextAction } from './next-action.interface';\nimport { SubmitResponse } from '../submit/response/submit-response.class';\nimport { nextActionsToken, NextActionTokens } from './next-actions';\nimport { ActionCreator } from './action.interface';\nimport { ShowErrorsActionCreator } from './show-errors/show-errors.action.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NextActionService {\n private readonly flowUpdatesSubject = new Subject<NextAction>();\n\n private readonly nextActionsList: ActionCreator[] = [];\n\n public get flowUpdates$(): Observable<NextAction> {\n return this.flowUpdatesSubject.asObservable();\n }\n\n public constructor(\n @Inject(nextActionsToken)\n private readonly nextActionTokens: NextActionTokens,\n private readonly injector: Injector,\n private readonly showErrorsActionCreator: ShowErrorsActionCreator\n ) {\n this.fillNextActionsList();\n }\n\n public getNextAction(submitResponse: SubmitResponse): NextAction | null {\n if (submitResponse.errors?.length) {\n this.emitFlowUpdates(\n this.showErrorsActionCreator.getActionData(submitResponse.errors)\n );\n }\n\n if (!submitResponse.currentCommand) {\n return null;\n }\n\n const nextAction = this.findNextAction(submitResponse);\n\n if (nextAction) {\n return nextAction.getActionData(submitResponse);\n }\n\n throw new Error('Next action is undefined.');\n }\n\n public emitFlowUpdates(action: NextAction): void {\n this.flowUpdatesSubject.next(action);\n }\n\n private fillNextActionsList(): void {\n this.nextActionTokens.forEach(\n (nextAction: ProviderToken<ActionCreator>) => {\n const item = this.injector.get<ActionCreator>(nextAction);\n this.nextActionsList.push(item);\n }\n );\n }\n\n private findNextAction(\n submitResponse: SubmitResponse\n ): ActionCreator | undefined {\n const actionType = this.nextActionsList.find(\n (nextAction: ActionCreator) => {\n return nextAction.isSuitable(submitResponse);\n }\n );\n\n if (!actionType) {\n return;\n }\n\n return actionType;\n }\n}\n","/* eslint-disable @typescript-eslint/no-magic-numbers */\nexport const cardNumberSanctionErrorCodes = [\n 2034, 2035, 5027, 5024, 5025, 2036,\n];\n","import { FieldNames } from '../payment/field-names.enum';\nimport { cardNumberSanctionErrorCodes } from './card-number-sanction-error-codes.const';\n\nexport const fieldSpecialErrorsMap = [\n {\n errorCodes: new Set(cardNumberSanctionErrorCodes),\n fieldName: FieldNames.cardNumber,\n },\n];\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'unescapeHtml',\n})\nexport class UnescapeHtmlPipe implements PipeTransform {\n public transform(html?: string): string {\n if (!html) {\n return '';\n }\n\n if (html.includes('&gt')) {\n const messageDocument = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n return messageDocument?.documentElement?.textContent ?? '';\n }\n\n return html;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UnescapeHtmlPipe } from '../../shared/pipes/unescape-html/unescape-html.pipe';\nimport { XpsError } from '../payment/xps-error.interface';\nimport { XpsResponse } from '../payment/xps-response.interface';\nimport { fieldSpecialErrorsMap } from './field-special-errors-map.const';\n\n@Injectable({ providedIn: 'root' })\nexport class XpsResponseErrorsMappingService {\n public constructor(private readonly unescapeHtmlPipe: UnescapeHtmlPipe) {}\n\n public mapErrors(response: XpsResponse): XpsResponse {\n if (!response.errors?.length) {\n return response;\n }\n\n let mappedErrors = this.mapFieldSpecialErrors(response.errors);\n mappedErrors = this.unescapeErrorsText(mappedErrors);\n\n return {\n ...response,\n errors: mappedErrors,\n };\n }\n\n private mapFieldSpecialErrors(errors: XpsError[]): XpsError[] {\n return errors.map((error) => {\n if (!error.element_name) {\n const errorMap = fieldSpecialErrorsMap.find((map) =>\n map.errorCodes.has(error.code)\n );\n\n if (errorMap) {\n return {\n ...error,\n element_name: errorMap.fieldName,\n };\n }\n }\n\n return error;\n });\n }\n\n private unescapeErrorsText(errors: XpsError[]): XpsError[] {\n return errors.map((error) => {\n if (!error.message) {\n return error;\n }\n\n return {\n ...error,\n message: this.unescapeHtmlPipe.transform(error.message),\n };\n });\n }\n}\n","export enum ErrorTags {\n APP = 'appError',\n HTTP = 'httpError',\n JS = 'jsError',\n WS = 'webSocket',\n ENCRYPT = 'encrypt',\n APPLEPAY = 'applepay',\n HEADLESS_UI = 'headlessUi',\n GOOGLEPAY = 'googlepay',\n PAYTM = 'paytm',\n}\n","import { ErrorTags } from './elk-error-types.enum';\nimport { AdditionalInfo } from '../elk/additional-info.interface';\n\nexport class TaggedError extends Error {\n public childTag!: ErrorTags;\n public trace!: string;\n public tags: ErrorTags[] = [];\n public additionalInfo!: AdditionalInfo;\n\n private readonly parentTag: ErrorTags = ErrorTags.HEADLESS_UI;\n\n public constructor(message: string, tags?: ErrorTags[]) {\n super(message);\n\n this.tags = this.childTag\n ? [this.parentTag, this.childTag]\n : [this.parentTag];\n\n if (tags) {\n const newTags = tags.filter(\n (t, i, arr) => !this.tags.includes(t) && arr.indexOf(t) == i\n );\n this.tags = [...this.tags, ...newTags];\n }\n }\n}\n","import { TaggedError } from './tagged-error.class';\nimport { ErrorTags } from './elk-error-types.enum';\n\nexport class EncryptCreditCardError extends TaggedError {\n public constructor(message: string, tags?: ErrorTags[]) {\n tags = tags ? [...tags, ErrorTags.ENCRYPT] : [ErrorTags.ENCRYPT];\n\n super(message, tags);\n }\n}\n","export const fourBlockMask = '9999 9999 9999 9999';\n","export enum CreditCardTypes {\n DEFAULT = '0',\n VISA = '1',\n MASTERCARD = '2',\n MAESTRO = '3',\n AMERICAN_EXPRESS = '4',\n DINERS_CLUBS = '5',\n DISCOVER = '6',\n JCB = '9',\n DANKORT = '11',\n HIPERCARD = '12',\n ELO = '13',\n AURA = '14',\n NARANJA = '15',\n MIR = '16',\n CHINA_UNION_PAY = '17',\n POSTEPAY = '18',\n}\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const visa: CreditCardSettings = {\n id: CreditCardTypes.VISA,\n minLength: 13,\n maxLength: 16,\n iconName: 'visa',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n return number.startsWith('4');\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const mastercard: CreditCardSettings = {\n id: CreditCardTypes.MASTERCARD,\n minLength: 16,\n maxLength: 16,\n iconName: 'mastercard',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n const subLength = 6;\n const cardNumberSub = number.substring(0, subLength);\n return (\n new RegExp(/^5[1-5]/).test(number) ||\n (cardNumberSub >= '222100' && cardNumberSub <= '272099')\n );\n },\n};\n","export const defaultMask = '9999 9999 9999 9999 999';\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const maestro: CreditCardSettings = {\n id: CreditCardTypes.MAESTRO,\n minLength: 12,\n maxLength: 19,\n iconName: 'maestro',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(\n /^(5018)|^(5020)|^(5038)|^(5893)|^(6304)|^(6759)|^(6761)|^(6762)|^(6763)|^(0604)|^(6706)|^(6771)|^(6709)/\n ).test(number);\n },\n maxCvvLength: 3,\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const americanExpress: CreditCardSettings = {\n id: CreditCardTypes.AMERICAN_EXPRESS,\n minLength: 15,\n maxLength: 15,\n iconName: 'american-express',\n mask: '9999 999999 99999',\n checkNumber(number: string): boolean {\n return new RegExp(/^(34)|^(37)/).test(number);\n },\n maxCvvLength: 4,\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const dinersClubs: CreditCardSettings = {\n id: CreditCardTypes.DINERS_CLUBS,\n minLength: 14,\n maxLength: 14,\n iconName: 'dinersclub',\n mask: '9999 9999 9999 99',\n checkNumber(number: string): boolean {\n const regex = /^(36[0-9]|3(?:0[0-59]|[68][0-9])[0-9])/;\n return regex.test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\nimport { defaultMask } from '../default-mask.const';\n\nexport const discover: CreditCardSettings = {\n id: CreditCardTypes.DISCOVER,\n minLength: 16,\n maxLength: 19,\n iconName: 'discover',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(\n /^(6011)|^(622(1(2[6-9]|[3-9][0-9])|[2-8][0-9]{2}|9([01][0-9]|2[0-5])))|^(64[4-9])|^65/\n ).test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const jcb: CreditCardSettings = {\n id: CreditCardTypes.JCB,\n minLength: 15,\n maxLength: 16,\n iconName: 'jcb',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n return new RegExp(/^35(2[89]|[3-8][0-9])/).test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const dankort: CreditCardSettings = {\n id: CreditCardTypes.DANKORT,\n minLength: 16,\n maxLength: 16,\n iconName: 'dankort',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n const subLength = 4;\n const cardNumberSub = number.substring(0, subLength);\n return cardNumberSub === '5019';\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const hipercard: CreditCardSettings = {\n id: CreditCardTypes.HIPERCARD,\n minLength: 13,\n maxLength: 19,\n iconName: 'hipercard',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(/^((606282|637095|637568)[0-9]|38[0-9]{14,17})/).test(\n number\n );\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\nimport { defaultMask } from '../default-mask.const';\n\nexport const elo: CreditCardSettings = {\n id: CreditCardTypes.ELO,\n minLength: 16,\n maxLength: 19,\n iconName: 'elo',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(\n /^(40117[8-9]|431274|438935|451416|457393|45763[1-2]|506(699|7[0-6][0-9]|77[0-8])|509\\d{3}|504175|627780|636297|636368|65003[1-3]|6500(3[5-9]|4[0-9]|5[0-1])|6504(0[5-9]|[1-3][0-9])|650(4[8-9][0-9]|5[0-2][0-9]|53[0-8])|6505(4[1-9]|[5-8][0-9]|9[0-8])|6507(0[0-9]|1[0-8])|65072[0-7]|6509(0[1-9]|1[0-9]|20)|6516(5[2-9]|[6-7][0-9])|6550([0-1][0-9]|2[1-9]|[3-4][0-9]|5[0-8]))/\n ).test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const aura: CreditCardSettings = {\n id: CreditCardTypes.AURA,\n minLength: 16,\n maxLength: 19,\n iconName: 'aura',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n const subLength = 8;\n const cardNumberSub = number.substring(0, subLength);\n return ['50786000', '50786018', '50786019'].includes(cardNumberSub);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const naranja: CreditCardSettings = {\n id: CreditCardTypes.NARANJA,\n minLength: 12,\n maxLength: 19,\n iconName: 'naranja',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n const subLength = 6;\n const cardNumberSub = number.substring(0, subLength);\n return cardNumberSub === '589562';\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const mir: CreditCardSettings = {\n id: CreditCardTypes.MIR,\n minLength: 16,\n maxLength: 16,\n iconName: 'mir',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n const subLength = 4;\n const cardNumberSub = number.substring(0, subLength);\n return cardNumberSub >= '2200' && cardNumberSub <= '2204';\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const chinaUnionPay: CreditCardSettings = {\n id: CreditCardTypes.CHINA_UNION_PAY,\n minLength: 16,\n maxLength: 19,\n iconName: 'unionpay',\n mask: '999 9999 9999 99999999',\n checkNumber(number: string): boolean {\n return number.startsWith('62');\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\nimport { defaultMask } from '../default-mask.const';\n\nexport const defaultCard: CreditCardSettings = {\n id: CreditCardTypes.DEFAULT,\n minLength: 12,\n maxLength: 19,\n iconName: null,\n mask: defaultMask,\n checkNumber(): boolean {\n return false;\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const postePay: CreditCardSettings = {\n id: CreditCardTypes.POSTEPAY,\n minLength: 12,\n maxLength: 19,\n iconName: 'poste_pay',\n mask: '9999 9999 9999 9999 999',\n checkNumber(number: string): boolean {\n const regex =\n /^(5018)|^(5020)|^(5038)|^(5893)|^(6304)|^(6759)|^(6761)|^(6762)|^(6763)|^(0604)|^(6706)|^(6771)|^(6709)/;\n return regex.test(number);\n },\n};\n","import { visa } from './types/visa';\nimport { mastercard } from './types/mastercard';\nimport { maestro } from './types/maestro';\nimport { americanExpress } from './types/american-express';\nimport { dinersClubs } from './types/diners-clubs';\nimport { discover } from './types/discover';\nimport { jcb } from './types/jcb';\nimport { dankort } from './types/dankort';\nimport { hipercard } from './types/hipercard';\nimport { elo } from './types/elo';\nimport { aura } from './types/aura';\nimport { naranja } from './types/naranja';\nimport { mir } from './types/mir';\nimport { chinaUnionPay } from './types/china-union-pay';\nimport { defaultCard } from './types/default-card';\nimport { CreditCardSettings } from './credit-card-settings.interface';\nimport { postePay } from './types/postepay';\n\n/**\n * order does matter\n * settings with more specific pattern should be placed above\n * Example:\n * - 12*\n * - 12\n * - 1\n * \"12*\" pattern should be checked first, otherwise pattern \"1\" will be taken\n * before \"12*\" checked\n */\nexport const orderedCardSettings: CreditCardSettings[] = [\n aura,\n naranja,\n maestro,\n postePay,\n elo,\n discover,\n dankort,\n hipercard,\n mir,\n jcb,\n dinersClubs,\n americanExpress,\n mastercard,\n chinaUnionPay,\n visa,\n defaultCard,\n];\n","import { CreditCardTypes } from './credit-card-types.enum';\nimport { visa } from './types/visa';\nimport { mastercard } from './types/mastercard';\nimport { maestro } from './types/maestro';\nimport { americanExpress } from './types/american-express';\nimport { dinersClubs } from './types/diners-clubs';\nimport { discover } from './types/discover';\nimport { jcb } from './types/jcb';\nimport { dankort } from './types/dankort';\nimport { hipercard } from './types/hipercard';\nimport { elo } from './types/elo';\nimport { aura } from './types/aura';\nimport { naranja } from './types/naranja';\nimport { mir } from './types/mir';\nimport { chinaUnionPay } from './types/china-union-pay';\nimport { defaultCard } from './types/default-card';\nimport { CreditCardSettings } from './credit-card-settings.interface';\nimport { postePay } from './types/postepay';\n\nexport const creditCardsMap: {\n [key in CreditCardTypes]: CreditCardSettings;\n} = {\n [CreditCardTypes.DEFAULT]: defaultCard,\n [CreditCardTypes.VISA]: visa,\n [CreditCardTypes.MASTERCARD]: mastercard,\n [CreditCardTypes.MAESTRO]: maestro,\n [CreditCardTypes.AMERICAN_EXPRESS]: americanExpress,\n [CreditCardTypes.DINERS_CLUBS]: dinersClubs,\n [CreditCardTypes.DISCOVER]: discover,\n [CreditCardTypes.JCB]: jcb,\n [CreditCardTypes.DANKORT]: dankort,\n [CreditCardTypes.HIPERCARD]: hipercard,\n [CreditCardTypes.ELO]: elo,\n [CreditCardTypes.AURA]: aura,\n [CreditCardTypes.NARANJA]: naranja,\n [CreditCardTypes.MIR]: mir,\n [CreditCardTypes.CHINA_UNION_PAY]: chinaUnionPay,\n [CreditCardTypes.POSTEPAY]: postePay,\n};\n","import { Injectable } from '@angular/core';\nimport { CreditCardTypes } from './credit-card-types.enum';\nimport { orderedCardSettings } from './ordered-cards-settings.const';\nimport { CreditCardSettings } from './credit-card-settings.interface';\nimport { creditCardsMap } from './credit-cards-map.const';\nimport { defaultCard } from './types/default-card';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CreditCardService {\n public getBinNumber(cardNumber: string): string {\n const binNumberLength = 6;\n return cardNumber.replace(/\\s+/g, '').substring(0, binNumberLength);\n }\n\n public getAccountSuffix(cardNumber: string): string {\n const accountSuffixLength = 4;\n return cardNumber\n .replace(/\\s+/g, '')\n .substring(cardNumber.length - accountSuffixLength);\n }\n\n public getTypeByNumber(cardNumber: string): CreditCardTypes {\n cardNumber = cardNumber.replace(/\\s+/g, '');\n\n const cardSettings = orderedCardSettings.find((settings) => {\n const isNumberMatched = settings.checkNumber(cardNumber);\n return isNumberMatched ? settings.id : false;\n });\n\n return cardSettings ? cardSettings.id : defaultCard.id;\n }\n\n public getCreditCardSettings(cardType: CreditCardTypes): CreditCardSettings {\n const creditCard = creditCardsMap[cardType];\n\n if (!creditCard) {\n return defaultCard;\n }\n\n return creditCard;\n }\n}\n","import JSEncrypt from 'jsencrypt';\nimport { Injectable } from '@angular/core';\nimport { EncryptCreditCardError } from '../exceptions-handling/errors/encrypt-card-error';\nimport { XpsApiPartRequest } from '../payment/xps-api-part-request.abstract';\nimport { CreditCardService } from '../credit-card/credit-card.service';\nimport { EncryptedCard } from './encrypted-card.interface';\nimport { OpenCard } from './open-card.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class EncryptCreditCardService {\n private readonly jsEncrypt!: JSEncrypt;\n\n private readonly secureFieldNames: Array<`xps_${string}`> = [\n 'xps_card_number',\n 'xps_cvv',\n 'xps_extra_cvv',\n 'xps_card_year',\n 'xps_card_month',\n ];\n\n public constructor(private readonly creditCardService: CreditCardService) {\n this.jsEncrypt = new JSEncrypt();\n }\n\n public setPublicKey(publicKey: string): void {\n this.jsEncrypt.setPublicKey(publicKey);\n }\n\n public encryptCreditCard<T extends XpsApiPartRequest>(\n request: XpsApiPartRequest\n ): T {\n if (request.xps_card_number) {\n const openCard: OpenCard = this.createOpenCard(request);\n request.xps_open_card = JSON.stringify(openCard);\n }\n\n const encryptedCard: EncryptedCard = this.createEncryptedCard(request);\n\n if (!request.xps_encrypted_card && JSON.stringify(encryptedCard) !== '{}') {\n request.xps_encrypted_card = this.encrypt(JSON.stringify(encryptedCard));\n }\n\n this.secureFieldNames.forEach((secureFieldName: `xps_${string}`) => {\n delete request[secureFieldName];\n });\n\n return request as T;\n }\n\n private encrypt(value: string): string {\n if (!this.jsEncrypt?.getPublicKey()) {\n throw new EncryptCreditCardError('Empty public key');\n }\n\n const encryptedValue = this.jsEncrypt.encrypt(value);\n\n if (!encryptedValue) {\n throw new EncryptCreditCardError(\n 'Encryption returns false instead of encrypted string'\n );\n }\n\n return encryptedValue;\n }\n\n private createEncryptedCard(request: XpsApiPartRequest): EncryptedCard {\n const encryptedCard: EncryptedCard = {\n card_number: request.xps_card_number as string,\n card_year: request.xps_card_year as string,\n card_month: request.xps_card_month as string,\n cvv: request.xps_cvv as string,\n };\n\n if (request.xps_extra_cvv) {\n encryptedCard.cvv = request.xps_extra_cvv as string;\n }\n\n return encryptedCard;\n }\n\n private createOpenCard(request: XpsApiPartRequest): OpenCard {\n return {\n card_bin: this.creditCardService.getBinNumber(\n request.xps_card_number as string\n ),\n card_suffix: this.creditCardService.getAccountSuffix(\n request.xps_card_number as string\n ),\n card_year: request.xps_card_year as string,\n card_month: request.xps_card_month as string,\n };\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { CountryService } from '../../country/country.service';\nimport { ResponseError } from '../../exceptions-handling/errors/response-error.class';\nimport { EncryptCreditCardService } from '../../encrypt-credit-card/encrypt-credit-card.service';\nimport { SettingsService } from '../../settings/settings.service';\nimport { PaymentConfig } from '../payment-config.interface';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ShowErrorsActionCreator } from '../actions/show-errors/show-errors.action.class';\nimport { XpsApiService } from '../xps-api/xps-api.service';\nimport { Field } from '../field.interface';\nimport { PaymentForm } from '../payment-form.interface';\nimport {\n InitializeResponseFactory,\n initializeResponseFactoryToken,\n} from './response/initialize-response.token';\nimport { InitializeResponse } from './response/initialize-response.class';\nimport { InitializeRequestParams } from './initialize-request-params.interface';\nimport { XpsResponseErrorsMappingService } from '../../errors-mapping/xps-response-errors-mapping.service';\nimport { XpsBoolean } from '../../xps-boolean.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InitializeService {\n // TODO PAYMENTS-15743: replace with new refer id for headless core\n private readonly ps4ReferId = '22';\n\n public constructor(\n @Inject(initializeResponseFactoryToken)\n protected readonly responseFactory: InitializeResponseFactory,\n private readonly xpsApiService: XpsApiService,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly nextActionService: NextActionService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n private readonly encryptCreditCardService: EncryptCreditCardService,\n private readonly showErrorsActionCreator: ShowErrorsActionCreator\n ) {}\n\n public async request(config: PaymentConfig): Promise<InitializeResponse> {\n const requestParams: InitializeRequestParams = {\n access_token: this.settingsService.token,\n pid: String(config.paymentMethodId),\n refer: this.ps4ReferId,\n country: this.countryService.getCountry(),\n returnUrl: config.returnUrl,\n paymentWithSavedMethod:\n config.paymentWithSavedMethod === true\n ? XpsBoolean.true\n : XpsBoolean.false,\n save_payment_account_only: config.savePaymentMethod\n ? XpsBoolean.true\n : XpsBoolean.false,\n };\n\n if (config.savedMethodId) {\n requestParams.saved_method_id = config.savedMethodId;\n }\n\n return this.xpsApiService\n .directPaymentRequest(requestParams)\n .then((xpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n const initializeResponse = this.responseFactory(response);\n\n if (initializeResponse.paymentForm?.errors?.length) {\n this.nextActionService.emitFlowUpdates(\n this.showErrorsActionCreator.getActionData(\n initializeResponse.paymentForm.errors\n )\n );\n }\n\n if (initializeResponse.paymentForm) {\n this.setCreditCardEncryptKey(initializeResponse.paymentForm);\n }\n\n return initializeResponse;\n })\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n }\n\n private setCreditCardEncryptKey(paymentForm: PaymentForm): void {\n const publicKeyField: Field | undefined = paymentForm.fields.find(\n (field: Field) => field.name === 'public_key'\n );\n\n if (!publicKeyField) {\n return;\n }\n\n this.encryptCreditCardService.setPublicKey(atob(publicKeyField.value));\n }\n}\n","export abstract class XpsApiPartRequest {\n [fieldName: `xps_${string}`]: unknown;\n\n protected addXpsParameters(parameters: { [key: string]: unknown }): void {\n for (const key in parameters) {\n this[`xps_${key}`] = parameters[key];\n }\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class TokenError extends AppError {\n public constructor() {\n super('XPS API needs token.');\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { XpsApiPartRequest } from '../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../exceptions-handling/errors/token-error.class';\n\nexport class SubmitRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_dfp_hash?: string;\n\n public constructor(parameters: {\n token: string | null;\n fields: Field[];\n form: UntypedFormGroup;\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n dfpHash: string | null;\n }) {\n super();\n\n const { token, fields, form, dfpHash } = parameters;\n\n if (token === null) {\n throw new TokenError();\n }\n\n this.access_token = token;\n\n if (dfpHash) {\n this.xps_dfp_hash = dfpHash;\n }\n\n this.addXpsParameters(this.getFieldsValues(fields, form));\n }\n\n private getFieldsValues(\n fields: Field[],\n form: UntypedFormGroup\n ): { [key: string]: unknown } {\n return fields.reduce(\n (xpsParams: { [key: string]: string }, field: Field) => {\n const formControl: AbstractControl | null = form.get(field.name);\n\n xpsParams[field.name] = formControl ? formControl.value : field?.value;\n\n return xpsParams;\n },\n {}\n );\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SubmitRequest } from './submit-request.class';\n\nexport type SubmitRequestParameters = ConstructorParameters<\n typeof SubmitRequest\n>;\n\nexport type SubmitRequestFactory = (\n ...args: SubmitRequestParameters\n) => SubmitRequest;\n\nexport const submitRequestFactoryToken: InjectionToken<SubmitRequestFactory> =\n new InjectionToken<SubmitRequestFactory>('SubmitRequest');\n\nexport const submitRequestFactoryProvider: ValueProvider = {\n provide: submitRequestFactoryToken,\n useValue: (...args: SubmitRequestParameters) => new SubmitRequest(...args),\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SubmitResponse } from './submit-response.class';\n\nexport type SubmitResponseParameters = ConstructorParameters<\n typeof SubmitResponse\n>;\n\nexport type SubmitResponseFactory = (\n ...args: SubmitResponseParameters\n) => SubmitResponse;\n\nexport const submitResponseFactoryToken: InjectionToken<SubmitResponseFactory> =\n new InjectionToken<SubmitResponseFactory>('SubmitResponse');\n\nexport const submitResponseFactoryProvider: ValueProvider = {\n provide: submitResponseFactoryToken,\n useValue: (...args: SubmitResponseParameters) => new SubmitResponse(...args),\n};\n","import type XsollaAntifraudFingerprint from '@xsolla/antifraud-fingerprint';\nimport { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\nimport { Hash } from './hash.type';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DeviceFingerPrintService {\n private hash!: Promise<string>;\n private antifraudFingerprintLibrary!: Promise<\n typeof XsollaAntifraudFingerprint\n >;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public init(): void {\n if (!this.settingsService.isInitialized) {\n return;\n }\n this.antifraudFingerprintLibrary = this.loadAntifraudFingerprintLibrary();\n this.hash = this.buildHash();\n }\n\n public async getHash(): Promise<string> {\n return this.hash;\n }\n\n private async loadAntifraudFingerprintLibrary(): Promise<\n typeof XsollaAntifraudFingerprint\n > {\n const library = await import('@xsolla/antifraud-fingerprint');\n\n return library.AntifraudFingerprint as typeof XsollaAntifraudFingerprint;\n }\n\n private async buildHash(): Promise<string> {\n const hash: Hash = await this.generate();\n return JSON.stringify(hash);\n }\n\n private async generate(): Promise<Hash | null> {\n const fingerprint = await this.makeAntifraudFingerprint();\n if (!fingerprint) {\n return null;\n }\n\n await fingerprint.dispatch().catch((err) => console.log(err));\n\n const afsHash = await fingerprint.hash();\n\n return { '301': afsHash };\n }\n\n private async makeAntifraudFingerprint(): Promise<XsollaAntifraudFingerprint | null> {\n if (!this.settingsService.token) {\n return null;\n }\n\n const antifraudFingerprint: typeof XsollaAntifraudFingerprint = await this\n .antifraudFingerprintLibrary;\n\n try {\n return new antifraudFingerprint({\n api: {\n url: 'https://afs.xsolla.com/dfp/api/v1/',\n token: this.settingsService.token,\n timeout: 3000,\n },\n retry: {\n num: 1,\n timeout: 500,\n },\n });\n } catch (error: unknown) {\n return null;\n }\n }\n}\n","import { Field } from '../field.interface';\nimport { Inject, Injectable } from '@angular/core';\nimport {\n SubmitRequestFactory,\n submitRequestFactoryToken,\n} from './request/submit-request.token';\nimport {\n SubmitResponseFactory,\n submitResponseFactoryToken,\n} from './response/submit-response.token';\nimport { SettingsService } from '../../settings/settings.service';\nimport { SubmitResponse } from './response/submit-response.class';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DeviceFingerPrintService } from '../../device-finger-print/device-finger-print.service';\nimport { ResponseError } from '../../exceptions-handling/errors/response-error.class';\nimport { XpsResponse } from '../xps-response.interface';\nimport { XpsApiService } from '../xps-api/xps-api.service';\nimport { EncryptCreditCardService } from '../../encrypt-credit-card/encrypt-credit-card.service';\nimport { SubmitRequest } from './request/submit-request.class';\nimport { XpsResponseErrorsMappingService } from '../../errors-mapping/xps-response-errors-mapping.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SubmitService {\n public constructor(\n @Inject(submitRequestFactoryToken)\n private readonly requestFactory: SubmitRequestFactory,\n @Inject(submitResponseFactoryToken)\n private readonly responseFactory: SubmitResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly deviceFingerPrintService: DeviceFingerPrintService,\n private readonly xpsApiService: XpsApiService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n private readonly encryptCreditCardService: EncryptCreditCardService\n ) {}\n\n // NB: Never add 'async' statement for this method!\n // 'Async' statement wraps current promise into another.\n // In this way two promises become unequal, that can broke XPS API requests logic.\n\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n public request(\n fields: Field[],\n form: UntypedFormGroup\n ): Promise<SubmitResponse> {\n return (\n this.deviceFingerPrintService\n .getHash()\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n .then((dfpHash) => {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n fields,\n form,\n dfpHash,\n });\n\n const encryptedRequest =\n this.encryptCreditCardService.encryptCreditCard<SubmitRequest>(\n requestParams\n );\n\n return this.xpsApiService\n .directPaymentRequest(encryptedRequest)\n .then((xpsResponse: XpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n return this.responseFactory(response);\n })\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n })\n );\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\nexport abstract class EmitDataService<Data> {\n public data$: Observable<Data>;\n\n private readonly dataSubject = new Subject<Data>();\n\n public constructor() {\n this.data$ = this.dataSubject.asObservable();\n }\n\n public emit(data: Data): void {\n this.dataSubject.next(data);\n }\n}\n","import { UntypedFormGroup } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { XpsApiPartRequest } from '../../xps-api-part-request.abstract';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class SyncRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'calculate';\n\n public constructor(parameters: {\n token: string;\n changedField: Field;\n fields: Field[];\n form: UntypedFormGroup;\n }) {\n super();\n\n this.access_token = parameters.token;\n\n const fieldsValues = this.getFieldsValues(\n parameters.changedField,\n parameters.fields,\n parameters.form\n );\n\n this.addXpsParameters({\n ...fieldsValues,\n change_element: parameters.changedField.name,\n });\n }\n\n private getFieldsValues(\n changedField: Field,\n fields: Field[],\n form: UntypedFormGroup\n ): { [key: string]: unknown } {\n const fieldsMap = this.getFieldsMap(fields);\n return changedField?.javascript?.change.params.reduce(\n (xpsParams: { [key: string]: string }, fieldName: string) => {\n const formControl = form.get(fieldName);\n const field: Field | undefined = fieldsMap.get(fieldName);\n\n if (formControl || field) {\n xpsParams[fieldName] = formControl?.value ?? field?.value;\n }\n\n return xpsParams;\n },\n {}\n );\n }\n\n private getFieldsMap(fields: Field[]): Map<string, Field> {\n const map = new Map<string, Field>();\n fields.forEach((field) => map.set(field.name, field));\n return map;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SyncRequest } from './sync-request.class';\n\nexport type SyncRequestParameters = ConstructorParameters<typeof SyncRequest>;\n\nexport type SyncRequestFactory = (\n ...args: SyncRequestParameters\n) => SyncRequest;\n\nexport const syncRequestFactoryToken: InjectionToken<SyncRequestFactory> =\n new InjectionToken<SyncRequestFactory>('SyncRequest');\n\nexport const syncRequestFactoryProvider: ValueProvider = {\n provide: syncRequestFactoryToken,\n useValue: (...args: SyncRequestParameters) => new SyncRequest(...args),\n};\n","import { ValidationErrors } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { XpsResponse } from '../../xps-response.interface';\n\nexport class SyncResponse {\n public readonly error: ValidationErrors | null = null;\n public readonly fields: Field[];\n public readonly parameters: XpsResponse;\n\n public constructor(changedField: Field, response: XpsResponse) {\n const fieldError = response?.errors?.find(\n (error) => error.element_name === changedField.name\n );\n\n if (fieldError) {\n this.error = {\n asyncError: {\n code: fieldError.code,\n message: fieldError.message,\n },\n };\n }\n\n this.fields = Object.keys(response.form).map(\n (key: string): Field => response.form[key]\n );\n\n this.parameters = response;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SyncResponse } from './sync-response.class';\n\nexport type SyncResponseParameters = ConstructorParameters<typeof SyncResponse>;\n\nexport type SyncResponseFactory = (\n ...args: SyncResponseParameters\n) => SyncResponse;\n\nexport const syncResponseFactoryToken: InjectionToken<SyncResponseFactory> =\n new InjectionToken<SyncResponseFactory>('SyncResponse');\n\nexport const syncResponseFactoryProvider: ValueProvider = {\n provide: syncResponseFactoryToken,\n useValue: (...args: SyncResponseParameters) => new SyncResponse(...args),\n};\n","import { Inject, Injectable } from '@angular/core';\nimport { UntypedFormGroup, ValidationErrors } from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport { SettingsService } from '../../settings/settings.service';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { Field } from '../field.interface';\nimport { XpsResponse } from '../xps-response.interface';\nimport { FieldSyncState } from './field-sync-state.interface';\nimport {\n SyncRequestFactory,\n syncRequestFactoryToken,\n} from './request/sync-request.token';\nimport { SyncResponse } from './response/sync-response.class';\nimport {\n SyncResponseFactory,\n syncResponseFactoryToken,\n} from './response/sync-response.token';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ShowErrorsActionCreator } from '../actions/show-errors/show-errors.action.class';\nimport { XpsApiService } from '../xps-api/xps-api.service';\nimport { FieldAsyncValidation } from './field-async-validation.interface';\nimport { EncryptCreditCardService } from '../../encrypt-credit-card/encrypt-credit-card.service';\nimport { SyncRequest } from './request/sync-request.class';\nimport { XpsResponseErrorsMappingService } from '../../errors-mapping/xps-response-errors-mapping.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SyncService extends EmitDataService<XpsResponse> {\n private prevFieldSyncStates: { [fieldName: string]: FieldSyncState } = {};\n private form: UntypedFormGroup = new UntypedFormGroup({});\n private fields: Field[] = [];\n private fieldSyncTimers: { [fieldName: string]: number } = {};\n private readonly fieldAsyncValidation = new Subject<FieldAsyncValidation>();\n\n public constructor(\n @Inject(syncRequestFactoryToken)\n private readonly requestFactory: SyncRequestFactory,\n @Inject(syncResponseFactoryToken)\n private readonly responseFactory: SyncResponseFactory,\n private readonly xpsApiService: XpsApiService,\n private readonly nextActionService: NextActionService,\n private readonly settingsService: SettingsService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n private readonly encryptCreditCardService: EncryptCreditCardService,\n private readonly showErrorsActionCreator: ShowErrorsActionCreator\n ) {\n super();\n }\n\n public get fieldAsyncValidation$(): Observable<FieldAsyncValidation> {\n return this.fieldAsyncValidation.asObservable();\n }\n\n public setup(form: UntypedFormGroup, fields: Field[]): void {\n this.reset();\n\n this.form = form;\n this.fields = fields;\n }\n\n public reset(): void {\n this.prevFieldSyncStates = {};\n this.form = new UntypedFormGroup({});\n this.fields = [];\n }\n\n public async validate(\n field: Field,\n delay = Number('750')\n ): Promise<ValidationErrors | null> {\n if (!this.isReadyField(field)) {\n return Promise.resolve(null);\n }\n\n const control = this.form.get(field.name);\n const value = control?.value;\n const prevFieldState = this.getPrevFieldSyncState(field);\n\n const isInitialValue = value === field.value && !prevFieldState;\n\n if (isInitialValue) {\n return Promise.resolve(null);\n }\n\n if (prevFieldState && value === prevFieldState.value) {\n return Promise.resolve(prevFieldState.result).then((response) => {\n return response?.error ?? null;\n });\n }\n\n const updateFieldState = async (): Promise<\n string | ValidationErrors | null\n > => {\n const requestPromise = this.request(field);\n\n this.setPrevFieldSyncState(field, value, requestPromise);\n\n return requestPromise.then((response: SyncResponse) => {\n this.fieldAsyncValidation.next({\n value,\n field,\n response,\n });\n\n return response.error ?? null;\n });\n };\n\n return new Promise((resolve) => {\n if (delay) {\n const timerId = setTimeout(() => {\n if (value !== control?.value) {\n return resolve(null);\n }\n\n void updateFieldState().then(\n (errors: ValidationErrors | null | string) =>\n resolve(errors as ValidationErrors)\n );\n }, delay);\n\n this.resetFieldSyncTimer(field, Number(timerId));\n } else {\n void updateFieldState().then(\n (errors: ValidationErrors | null | string) =>\n resolve(errors as ValidationErrors)\n );\n }\n });\n }\n\n public getSyncValidationErrors(field: Field): ValidationErrors | null {\n const control = this.form.get(field.name);\n return control?.errors ?? null;\n }\n\n protected async request(field: Field): Promise<SyncResponse> {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n changedField: field,\n fields: this.fields,\n form: this.form,\n });\n\n const encryptedRequest =\n this.encryptCreditCardService.encryptCreditCard<SyncRequest>(\n requestParams\n );\n\n return this.xpsApiService\n .directPaymentRequest(encryptedRequest)\n .then((xpsResponse: XpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n\n this.emitFormErrors(response);\n this.emit(response);\n return this.responseFactory(field, response);\n });\n }\n\n private isReadyField(field: Field): boolean {\n const isSyncEnabled = !!field.javascript?.change;\n const isExistsInForm = !!this.form?.get(field.name);\n\n return isSyncEnabled && isExistsInForm;\n }\n\n private getPrevFieldSyncState(field: Field): FieldSyncState {\n return this.prevFieldSyncStates[field.name];\n }\n\n private setPrevFieldSyncState(\n field: Field,\n value: unknown,\n result: Promise<SyncResponse>\n ): void {\n this.prevFieldSyncStates[field.name] = { value, result };\n }\n\n private emitFormErrors(response: XpsResponse): void {\n const formErrors = response.errors?.filter((error) => !error.element_name);\n\n if (formErrors?.length) {\n this.nextActionService.emitFlowUpdates(\n this.showErrorsActionCreator.getActionData(formErrors)\n );\n }\n }\n\n private resetFieldSyncTimer(field: Field, timerId: number): void {\n const prevTimerId: number = this.fieldSyncTimers[field.name];\n\n if (prevTimerId) {\n clearTimeout(prevTimerId);\n }\n\n this.fieldSyncTimers[field.name] = timerId;\n }\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { ControlType } from './control-type.type';\n\nexport class ControlConfig {\n [option: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n public controlType!: ControlType | string;\n public name!: string;\n public title?: string | null | SafeHtml;\n public shouldHideUserInput?: boolean | null = false;\n}\n","import { ControlConfig } from './control-config';\n\nexport class TextControlConfig extends ControlConfig {\n public controlType = 'text';\n public dataType?: string;\n public maxLength?: number;\n public placeholder?: string;\n public autocomplete?: string;\n public icon?: string;\n public description?: string;\n public inputMode?: string;\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { ValidatorFn as ConvertedValidatorFn } from './validator-fn.type';\nimport { ValidationErrors as ConvertedValidationErrors } from './validation-errors.interface';\nimport { ValidationError as ConvertedValidationError } from './validation-error.interface';\n\nexport function convert(\n validator: ValidatorFn,\n message: string\n): ConvertedValidatorFn {\n return (control: AbstractControl): ConvertedValidationErrors | null => {\n const errors: ValidationErrors | null = validator(control);\n\n if (!errors) {\n return errors;\n }\n\n const firstErrorKey: string = Object.keys(errors)[0];\n const firstError: ConvertedValidationError = errors[firstErrorKey];\n const error =\n typeof firstError === 'object' && firstError !== null ? firstError : {};\n error.message = message;\n\n errors[firstErrorKey] = error;\n\n return errors as ConvertedValidationErrors;\n };\n}\n","import { Validators } from '@angular/forms';\nimport { convert } from '../convert.function';\nimport { ValidatorFn } from '../validator-fn.type';\n\nconst emailRegexp =\n /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-line\n\nexport function convertedEmailValidator(): ValidatorFn {\n return convert(Validators.pattern(emailRegexp), 'Enter a valid email');\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { convert } from '../convert.function';\n\nexport function convertedRequiredValidator(): ValidatorFn {\n return convert(Validators.required, 'Required');\n}\n","import { UntypedFormControl, Validators } from '@angular/forms';\nimport { XpsBoolean } from '../../../xps-boolean.enum';\nimport { Field } from '../../field.interface';\nimport { SyncService } from '../../sync/sync.service';\nimport { CommonControlConfig } from '../common-control-config.interface';\nimport { ControlConfig } from '../controls/control-config';\nimport { FormState } from '../form-state.interface';\nimport { convert } from '../validators/convert.function';\nimport { convertedRequiredValidator } from '../validators/required/required.validator';\nimport { ValidatorFn } from '../validators/validator-fn.type';\nimport { AsyncValidatorFn } from '../validators/async-validator-fn.type';\n\nexport abstract class Converter {\n protected constructor(protected syncService: SyncService) {}\n\n public convertToConfig(field: Field, formState?: FormState): ControlConfig {\n const config = this.createControlConfig(field, formState);\n\n if (formState?.disabled) {\n config.disabled = true;\n }\n\n return config;\n }\n\n public convertToFormControl(field: Field): UntypedFormControl {\n return new UntypedFormControl(\n this.getValue(field),\n this.getValidators(field),\n this.getAsyncValidators(field)\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getValidators(field: Field, formState?: FormState): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n\n if (field.isMandatory === XpsBoolean.true) {\n validators.push(convertedRequiredValidator());\n }\n\n if (field.regex) {\n const match = /^\\/(.*)\\/([gim]*)$/.exec(field.regex);\n\n if (match) {\n const pattern = new RegExp(match[1], match[2]);\n const errorMessage = field.validation_error_msg\n ? field.validation_error_msg\n : 'Enter valid data';\n validators.push(convert(Validators.pattern(pattern), errorMessage));\n }\n }\n\n return validators;\n }\n\n public getAsyncValidators(\n field: Field\n ): AsyncValidatorFn | AsyncValidatorFn[] | null {\n return async () => this.syncService.validate(field);\n }\n\n public createDefaultControlConfig<T extends { [key: string]: unknown }>(\n controlConfigClass: new () => T,\n field: Field\n ): T {\n const config = new controlConfigClass();\n\n this.copyCommonOptions(config, field);\n\n return config;\n }\n\n public getValue(field: Field): string {\n return field.value;\n }\n\n protected abstract createControlConfig(\n field: Field,\n formState?: FormState\n ): ControlConfig;\n\n protected getDataType(): string {\n return 'text';\n }\n\n protected getAutocomplete(): string {\n return 'off';\n }\n\n protected shouldHideUserInput(): boolean {\n return false;\n }\n\n private getCommonControlConfig(field: Field): CommonControlConfig {\n return {\n name: field.name,\n title: field.title,\n labelHint: field.label_hint,\n dataType: this.getDataType(),\n readonly: field.isReadonly === XpsBoolean.true,\n placeholder: field.example,\n autocomplete: this.getAutocomplete(),\n };\n }\n\n private copyCommonOptions<Target extends { [key: string]: unknown }>(\n target: Target,\n field: Field\n ): void {\n const commonControlConfig = this.getCommonControlConfig(field);\n\n Object.keys(commonControlConfig).forEach((sourceKey: string) => {\n if (!(sourceKey in target)) {\n (target as { [key: string]: unknown })[sourceKey] = (\n commonControlConfig as unknown as { [key: string]: unknown }\n )[sourceKey];\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convertedEmailValidator } from '../../validators/email/email-validator';\nimport { ValidatorFn } from '../../validators/validator-fn.type';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class EmailConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super.getValidators(field).concat([convertedEmailValidator()]);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.autocomplete = 'email';\n config.icon = 'mail';\n\n return config;\n }\n\n protected getDataType(): string {\n return 'email';\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationErrors } from '../validation-errors.interface';\nimport { ValidatorFn } from '../validator-fn.type';\n\nexport const restrictedValueValidator = (\n restrictedValue: unknown\n): ValidatorFn => {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n return value !== restrictedValue ? null : { valueAllowed: false };\n };\n};\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { CountryService } from '../../../../country/country.service';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { restrictedValueValidator } from '../../validators/restricted-value/restricted-value.validator';\nimport { Converter } from '../converter.abstract';\nimport { masksFunctionsMap } from '../../masks-functions.map';\nimport { MaskConfig } from '../../mask-config.interface';\n\n@Injectable()\nexport class ZipConverter extends Converter {\n private readonly minLength = 3;\n private readonly maxLength = 10;\n private readonly usCountryLength = 5;\n\n public constructor(\n syncService: SyncService,\n private readonly countryService: CountryService\n ) {\n super(syncService);\n }\n\n private get isUsCountry(): boolean {\n return this.countryService.getCountry() === 'US';\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const minLength = this.isUsCountry ? this.usCountryLength : this.minLength;\n const maxLength = this.isUsCountry ? this.usCountryLength : this.maxLength;\n const validators: ValidatorFn[] = super\n .getValidators(field)\n .concat([\n convert(\n Validators.minLength(minLength),\n `Enter at least ${minLength} characters`\n ),\n\n convert(\n Validators.maxLength(maxLength),\n `Enter no more than ${maxLength} characters`\n ),\n ]);\n\n if (this.isUsCountry) {\n validators.push(\n convert(restrictedValueValidator('00000'), 'Enter a valid ZIP code')\n );\n }\n\n return validators;\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n config.icon = 'location';\n\n if (this.isUsCountry) {\n config.maskConfig = {\n guide: false,\n unmaskModelValue: true,\n showMask: true,\n } as MaskConfig;\n config.inputMode = 'numeric';\n\n if (masksFunctionsMap['zip']) {\n (config.maskConfig as MaskConfig).mask = masksFunctionsMap['zip'];\n }\n } else {\n config.maxLength = this.maxLength;\n }\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'postal-code';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","export function isEmptyInputValue(value: string | null | undefined): boolean {\n return value == null || value.length === 0;\n}\n","export function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n","import { isEmptyInputValue } from '../is-empty-input-value.function';\nimport { ValidatorFn } from '../validator-fn.type';\nimport { ValidationErrors } from '../validation-errors.interface';\nimport { isString } from '../../../../type-guards/is-string.function';\n\n/**\n * Checks number match Luhn algorithm.\n * Based on http://en.wikipedia.org/wiki/Luhn.\n */\nexport const luhnFormulaValidator: ValidatorFn = ({ value }) => {\n if (isEmptyInputValue(value) || !isString(value)) {\n return null;\n }\n\n const error: ValidationErrors = {\n rewritableError: {\n message: `Enter a valid card number`,\n },\n };\n\n if (/[^0-9 -]+/.test(value)) {\n // accept only spaces, digits and dashes\n return error;\n }\n\n let resultSum = 0;\n let digit = 0;\n let isEven = false;\n\n const modBase = 10;\n const digitRadix = 10;\n const maxNumber = 9;\n const digits = value.replace(/\\D/g, '');\n\n // Checks if number match Luhn algorithm\n // based on http://en.wikipedia.org/wiki/Luhn\n for (let index = digits.length - 1; index >= 0; index--) {\n const char = digits.charAt(index);\n digit = parseInt(char, digitRadix);\n\n if (isEven && (digit *= 2) > maxNumber) {\n digit -= maxNumber;\n }\n\n resultSum += digit;\n isEven = !isEven;\n }\n\n return resultSum % modBase === 0 ? null : error;\n};\n","import { SafeHtml } from '@angular/platform-browser';\nimport { ControlConfig } from '../control-config';\nimport { CreditCardTypes } from '../../../../credit-card/credit-card-types.enum';\n\nexport class CardNumberConfig extends ControlConfig {\n public controlType = 'card-number';\n public placeholder?: string | SafeHtml | null;\n public icon?: string;\n public availableCardTypes: CreditCardTypes[] = [];\n public activeCardType?: CreditCardTypes;\n public customError = '';\n}\n","import { isEmptyInputValue } from '../is-empty-input-value.function';\nimport { Injectable } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { isString } from '../../../../type-guards/is-string.function';\nimport { CreditCardService } from '../../../../credit-card/credit-card.service';\n\n@Injectable()\nexport class CreditCardMinLengthValidator {\n public constructor(private readonly creditService: CreditCardService) {}\n\n public validate = (field: { value: string }): ValidationErrors | null => {\n if (isEmptyInputValue(field.value) || !isString(field.value)) {\n return null;\n }\n\n const length = field.value.length;\n\n const cardType = this.creditService.getTypeByNumber(field.value);\n\n const { minLength } = this.creditService.getCreditCardSettings(cardType);\n\n return length < minLength\n ? {\n rewritableError: {\n message: `Enter at least ${minLength} characters`,\n number: minLength,\n },\n }\n : null;\n };\n}\n","import { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { CreditCardMinLengthValidator } from '../../validators/credit-card-length/credit-card-min-length.validator';\nimport { Field } from '../../../field.interface';\nimport { ValidatorFn } from '@angular/forms';\nimport { luhnFormulaValidator } from '../../validators/luhn-formula-validator/luhn-formula.validator';\nimport { FormState } from '../../form-state.interface';\nimport { CardNumberConfig } from '../../controls/card-number/card-number-control.config';\nimport { CreditCardTypes } from '../../../../credit-card/credit-card-types.enum';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CardNumberConverter extends Converter {\n public constructor(\n syncService: SyncService,\n private readonly maxLengthValidator: CreditCardMinLengthValidator,\n private readonly minLengthValidator: CreditCardMinLengthValidator\n ) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super\n .getValidators(field)\n .concat([\n luhnFormulaValidator,\n this.minLengthValidator.validate,\n this.maxLengthValidator.validate,\n ]);\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): CardNumberConfig {\n const config = this.createDefaultControlConfig(CardNumberConfig, field);\n\n config.placeholder = config.title;\n\n config.availableCardTypes =\n (formState?.availableCardTypes as CreditCardTypes[]) ?? [];\n\n config.activeCardType = formState?.activeCardType as CreditCardTypes;\n\n config.customError = formState?.customError as string;\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-number';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationErrors } from '../validation-errors.interface';\nimport { FormState } from '../../form-state.interface';\nimport { ValidatorFn } from '../validator-fn.type';\n\nexport const maxMonths = 12;\nexport const getMinMonth = (parsedYear: string): number => {\n let minMonth = 1;\n\n const year = parsedYear ? Number('20' + parsedYear) : null;\n const today = new Date();\n minMonth = year === today.getFullYear() ? today.getMonth() + 1 : 1;\n\n return minMonth;\n};\n\nconst sendErrMessage = (fn: unknown): ValidationErrors =>\n ({\n cardMonthExpiration: {\n message: fn,\n },\n } as ValidationErrors);\n\nexport function cardMonthValidator(formState?: FormState): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const { value } = control;\n\n if (typeof value !== 'string') return null;\n\n const minMonth = getMinMonth((formState?.cardYearValue as string) ?? null);\n\n const twoDigitsRegex = new RegExp(/^\\d{2}$/);\n const fieldCommonLength = 2;\n\n if (value.length !== fieldCommonLength) {\n return sendErrMessage(`Enter ${fieldCommonLength} characters`);\n }\n\n if (!twoDigitsRegex.test(value)) {\n return sendErrMessage(`Enter a valid expiration month`);\n }\n\n if (Number(value) < minMonth) {\n return sendErrMessage(\n `Enter a month greater than or equal to ${minMonth}`\n );\n }\n\n if (Number(value) > maxMonths) {\n return sendErrMessage(`Enter a month less than or equal to ${maxMonths}`);\n }\n\n return null;\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { ValidatorFn } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { FormState } from '../../form-state.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { cardMonthValidator } from '../../validators/card-month/card-month.validator';\n\n@Injectable()\nexport class CardMonthConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field, formState: FormState): ValidatorFn[] {\n return super.getValidators(field).concat([cardMonthValidator(formState)]);\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '99',\n guide: false,\n };\n config.inputMode = 'numeric';\n\n config.placeholder = `MM`;\n\n config.title = `MM`;\n\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-exp-month';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { FormState } from '../../form-state.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { FieldNames } from '../../../field-names.enum';\nimport { CvvFormState } from './cvv-form-state.interface';\nimport { convert } from '../../validators/convert.function';\nimport { CreditCardTypes } from '../../../../credit-card/credit-card-types.enum';\n\n@Injectable()\nexport class CvvConverter extends Converter {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n private maxFieldLength = 4;\n\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field, formState?: CvvFormState): ValidatorFn[] {\n const validators: ValidatorFn[] = super.getValidators(field);\n const activeCardType = formState ? formState.activeCardType : null;\n const getPatternValidator = (pattern: RegExp): ValidatorFn =>\n convert(Validators.pattern(pattern), `Enter a valid CVV/CVC`);\n\n switch (activeCardType) {\n case CreditCardTypes.AMERICAN_EXPRESS: {\n this.maxFieldLength = 4;\n validators.push(getPatternValidator(/^\\d{4}$/));\n break;\n }\n case CreditCardTypes.MAESTRO: {\n this.maxFieldLength = 3;\n validators.push(getPatternValidator(/^\\d{0,3}$/));\n break;\n }\n default: {\n this.maxFieldLength = 3;\n validators.push(getPatternValidator(/^\\d{3}$/));\n }\n }\n\n return validators;\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: () => new Array(this.maxFieldLength).fill('9').join(''),\n unmaskModelValue: false,\n guide: false,\n };\n\n config.tooltip = {\n text: 'The code is on the back of your card',\n image: 'cvv',\n parentField: FieldNames.cvv,\n position: 'input',\n analyticsAction: 'show-cvv-tooltip',\n };\n\n config.inputMode = 'numeric';\n config.shouldHideUserInput = this.shouldHideUserInput();\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-csc';\n }\n\n protected getDataType(): string {\n return 'password';\n }\n\n protected shouldHideUserInput(): boolean {\n return true;\n }\n}\n","import { ValidatorFn, ValidationErrors } from '@angular/forms';\nimport { isEmptyInputValue } from '../is-empty-input-value.function';\n\nexport const birthdateValidator: ValidatorFn = ({ value }) => {\n if (isEmptyInputValue(value) || typeof value !== 'string') {\n return null;\n }\n\n const error: ValidationErrors = {\n invalidBirthDate: {\n message: `Enter a valid birth date`,\n },\n };\n const dateArr = value.split('/');\n const datePartsCount = 3;\n const dayIndex = 0;\n const monthIndex = 1;\n const yearIndex = 2;\n const maxMonths = 12;\n const maxDays = 31;\n const minAge = 16;\n const maxAge = 120;\n\n if (dateArr.length < datePartsCount) {\n return null;\n }\n\n if (+dateArr[monthIndex] > maxMonths || +dateArr[dayIndex] > maxDays) {\n return error;\n }\n\n const currentDate = new Date(\n +dateArr[yearIndex],\n +dateArr[monthIndex],\n +dateArr[dayIndex]\n );\n const nowDate = new Date();\n\n if (\n isNaN(currentDate.getFullYear()) ||\n nowDate.getFullYear() - currentDate.getFullYear() <= minAge ||\n nowDate.getFullYear() - currentDate.getFullYear() > maxAge\n ) {\n return error;\n } else {\n return null;\n }\n};\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { Converter } from '../converter.abstract';\nimport { birthdateValidator } from '../../validators/birth-date/birth-date.validator';\n\n@Injectable()\nexport class BirthDateConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super\n .getValidators(field)\n .concat([\n convert(\n Validators.pattern(/^[0-9]{1,2}\\/[0-9]{1,2}\\/[0-9]{4}$/),\n `Enter a valid birth date`\n ),\n birthdateValidator,\n ]);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '99/99/9999',\n unmaskModelValue: false,\n guide: false,\n };\n\n config.placeholder = `DD/MM/YYYY`;\n\n config.inputMode = 'numeric';\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class CardholderNameConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n\n protected getAutocomplete(): string {\n return 'cc-name';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","export const cpfNameRegex =\n /^[a-zA-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ.'-]{2,50}(?: [a-zA-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ.'-]{2,50}){1,8}$/i; // tslint:disable-line\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { Converter } from '../converter.abstract';\nimport { cpfNameRegex } from './cpf-name-regex.variable';\n\n@Injectable()\nexport class CpfNameConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super\n .getValidators(field)\n .concat([\n convert(Validators.pattern(cpfNameRegex), `Enter a valid name`),\n ]);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.tooltip = {\n text: `Where to find your name`,\n image: 'cpf-name',\n };\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class CpfNumberConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '999.999.999-99',\n unmaskModelValue: true,\n guide: false,\n };\n\n config.inputMode = 'numeric';\n\n config.placeholder = '000.000.000-00';\n\n config.tooltip = {\n text: `Where to find your registration number`,\n image: 'cpf-number',\n };\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { StreetNumberFormState } from './street-number-from-state.interface';\nimport { ValidatorFn } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { restrictedValueValidator } from '../../validators/restricted-value/restricted-value.validator';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class StreetNumberConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(\n field: Field,\n formState?: StreetNumberFormState\n ): ValidatorFn[] {\n const validators: ValidatorFn[] = super.getValidators(field);\n\n if (formState?.country === 'BL') {\n validators.push(\n convert(restrictedValueValidator('0'), `Enter a valid building number`)\n );\n }\n\n return validators;\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class TextConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n}\n","import { ControlConfig } from '../control-config';\nimport { XpsBoolean } from '../../../../xps-boolean.enum';\n\nexport class CheckboxControlConfig extends ControlConfig {\n public controlType = 'checkbox';\n public initValue!: XpsBoolean;\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { XpsBoolean } from '../../../../xps-boolean.enum';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { ValidatorFn } from '../../validators/validator-fn.type';\nimport { convert } from '../../validators/convert.function';\nimport { restrictedValueValidator } from '../../validators/restricted-value/restricted-value.validator';\nimport { CheckboxControlConfig } from '../../controls/checkbox/checkbox-control.config';\n\n@Injectable()\nexport class CheckboxConverter extends Converter {\n protected readonly checkedValue = XpsBoolean.true;\n protected readonly uncheckedValue = XpsBoolean.false;\n\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n\n if (field.isMandatory === this.checkedValue) {\n validators.push(\n convert(\n restrictedValueValidator(this.uncheckedValue),\n 'validation_message_required_checkbox'\n )\n );\n }\n\n return validators;\n }\n\n protected createControlConfig(field: Field): CheckboxControlConfig {\n const config = this.createDefaultControlConfig(\n CheckboxControlConfig,\n field\n );\n\n config.placeholder = config.title;\n config.initValue = field.value as XpsBoolean;\n\n return config;\n }\n}\n","import { ControlConfig } from '../control-config';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { SearchSelectOption } from './search-select-option.interface';\nimport { SelectOption } from './select-option.interface';\n\nexport class SearchSelectControlConfig extends ControlConfig {\n public controlType = 'search-select';\n public name!: string;\n public title?: string | SafeHtml;\n public options?: SelectOption[] | SearchSelectOption[];\n public hasSearch?: boolean;\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { SearchSelectControlConfig } from '../../controls/search-select/search-select-control.config';\nimport { Field } from '../../../field.interface';\nimport { SelectOption } from '../../controls/search-select/select-option.interface';\n\n@Injectable()\nexport class SelectConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): SearchSelectControlConfig {\n const config = this.createDefaultControlConfig(\n SearchSelectControlConfig,\n field\n );\n config.options = field.options as SelectOption[];\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\n\n@Injectable()\nexport class PinConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n}\n","import { RadioOption } from './radio-option.interface';\nimport { ControlConfig } from '../control-config';\n\nexport class RadioControlConfig extends ControlConfig {\n public controlType = 'radio';\n public options: RadioOption[] = [];\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { RadioControlConfig } from '../../controls/radio-control/radio-control.config';\nimport { RadioOption } from '../../controls/radio-control/radio-option.interface';\n\n@Injectable()\nexport class RadioGroupConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): RadioControlConfig {\n const config = this.createDefaultControlConfig(RadioControlConfig, field);\n\n config.options = field.options as RadioOption[];\n return config;\n }\n}\n","import { ValidatorFn } from '@angular/forms';\nimport { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\n\n@Injectable()\nexport class PricepointConverter extends Converter {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n private readonly maxFieldLength = 30;\n\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super.getValidators(field);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: () => new Array(this.maxFieldLength).fill('9').join(``),\n unmaskModelValue: false,\n guide: false,\n };\n\n config.placeholder = field.title;\n config.inputMode = 'numeric';\n\n return config;\n }\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { ControlConfig } from '../control-config';\n\nexport class CouponControlConfig extends ControlConfig {\n public controlType = 'coupon';\n public dataType?: string;\n public placeholder?: string | SafeHtml | null;\n public autocomplete?: string;\n}\n","import { Validators } from '@angular/forms';\nimport { ValidatorFn } from '../validator-fn.type';\nimport { convert } from '../convert.function';\n\nexport function couponValidator(\n message = `Enter a valid promo code`\n): ValidatorFn {\n return convert(Validators.pattern(/^[0-9a-z_-]+$/i), message);\n}\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { CouponControlConfig } from '../../controls/coupon/coupon-control.config';\nimport { couponValidator } from '../../validators/coupon/coupon-validator';\n\n@Injectable()\nexport class CouponConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(): ValidatorFn[] {\n return [couponValidator()];\n }\n\n protected createControlConfig(field: Field): CouponControlConfig {\n const config = this.createDefaultControlConfig(CouponControlConfig, field);\n\n config.placeholder = `Enter promo code`;\n\n return config;\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationErrors } from '../validation-errors.interface';\n\nconst sendErrMessage = (fn: unknown): ValidationErrors =>\n ({\n cardYearExpiration: {\n message: fn,\n },\n } as ValidationErrors);\n\nexport const getLastCharactersInYear = (\n str: string = new Date().getFullYear().toString()\n): string => {\n // for getting last characters in year; need to check in future\n return str.slice(str.length - 2);\n};\n\n// Карта выдается максимум на 50 лет\nexport const maxYearsCount = 50;\n\nexport function cardYearValidator(\n control: AbstractControl\n): ValidationErrors | null {\n const { value } = control;\n\n if (typeof value !== 'string') return null;\n\n const minYear = parseInt(getLastCharactersInYear(), 10);\n\n const twoDigitsRegex = new RegExp(/^\\d{2}$/);\n\n const fieldCommonLength = 2;\n\n if (value.length !== fieldCommonLength) {\n return sendErrMessage(`Enter ${fieldCommonLength} characters`);\n }\n\n if (!twoDigitsRegex.test(value)) {\n return sendErrMessage(`Enter a valid expiration year`);\n }\n\n if (Number(value) < minYear) {\n return sendErrMessage(`Enter a year greater than or equal to ${minYear}`);\n }\n\n const maxValidYear = minYear + maxYearsCount;\n\n if (Number(value) > maxValidYear) {\n return sendErrMessage(`Enter a year less than or equal to ${maxValidYear}`);\n }\n\n return null;\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { ValidatorFn } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { FormState } from '../../form-state.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { cardYearValidator } from '../../validators/card-year/card-year.validator';\n\n@Injectable()\nexport class CardYearConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super.getValidators(field).concat([cardYearValidator]);\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '99',\n guide: false,\n };\n config.inputMode = 'numeric';\n\n config.placeholder = `YY`;\n\n config.title = `YY`;\n\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-exp-year';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","import { Validators } from '@angular/forms';\nimport { ValidatorFn } from './validator-fn.type';\nimport { convert } from './convert.function';\n\nexport function phoneValidator(): ValidatorFn {\n return convert(Validators.pattern(/^\\d*$/), 'Enter a valid phone');\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { convert } from './convert.function';\n\nexport function minLengthValidator(minLength: number): ValidatorFn {\n return convert(\n Validators.minLength(minLength),\n `Enter at least ${minLength} characters`\n );\n}\n","import { Validators } from '@angular/forms';\nimport { ValidatorFn } from './validator-fn.type';\nimport { convert } from './convert.function';\nexport function maxLengthValidator(maxLength: number): ValidatorFn {\n return convert(\n Validators.maxLength(maxLength),\n `Enter no more than ${maxLength} characters`\n );\n}\n","import { ControlConfig } from './control-config';\n\nexport class PhoneControlConfig extends ControlConfig {\n public controlType = 'phone';\n public placeholder?: string;\n public icon?: string;\n}\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { Converter } from './converter.abstract';\nimport { SyncService } from '../../sync/sync.service';\nimport { Field } from '../../field.interface';\nimport { phoneValidator } from '../validators/phone-validator';\nimport { minLengthValidator } from '../validators/min-length-validator';\nimport { maxLengthValidator } from '../validators/max-length-validator';\nimport { PhoneControlConfig } from '../controls/phone-control.config';\nimport { convertedRequiredValidator } from '../validators/required/required.validator';\n\n@Injectable()\nexport class PhoneConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const minLength = 10;\n const maxLength = 15;\n\n return super\n .getValidators(field)\n .concat([\n convertedRequiredValidator(),\n phoneValidator(),\n minLengthValidator(minLength),\n maxLengthValidator(maxLength),\n ]);\n }\n\n protected createControlConfig(field: Field): PhoneControlConfig {\n const config = this.createDefaultControlConfig(PhoneControlConfig, field);\n config.inputMode = 'numeric';\n return config;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ConvertersMap } from './converters-map.interface';\nimport { EmailConverter } from './email/email.converter';\nimport { ZipConverter } from './zip/zip.converter';\nimport { CardNumberConverter } from './card-number/card-number.converter';\nimport { CardMonthConverter } from './card-month/card-month.converter';\nimport { CvvConverter } from './cvv/cvv.converter';\nimport { BirthDateConverter } from './birth-date/birth-date.converter';\nimport { CardholderNameConverter } from './cardholder-name/cardholder-name.converter';\nimport { CpfNameConverter } from './cpf-name/cpf-name.converter';\nimport { CpfNumberConverter } from './cpf-number/cpf-number.converter';\nimport { StreetNumberConverter } from './street-number/street-number.converter';\nimport { TextConverter } from './text/text.converter';\nimport { CheckboxConverter } from './checkbox/checkbox.converter';\nimport { SelectConverter } from './select/select.converter';\nimport { PinConverter } from './pin/pin.converter';\nimport { RadioGroupConverter } from './radio-group/radio-group.converter';\nimport { PricepointConverter } from './pricepoint/pricepoint.converter';\nimport { CouponConverter } from './coupon/coupon.converter';\nimport { CardYearConverter } from './card-year/card-year.converter';\nimport { PhoneConverter } from './phone.converter';\n\nexport const convertersMapToken = new InjectionToken<ConvertersMap>(\n 'ConvertersTokensMap'\n);\n\nexport const convertersMap: ConvertersMap = {\n card_number: CardNumberConverter,\n card_month: CardMonthConverter,\n card_year: CardYearConverter,\n cvv: CvvConverter,\n extra_cvv: CvvConverter,\n zip: ZipConverter,\n cardholdername: CardholderNameConverter,\n cpf_number: CpfNumberConverter,\n cpf_name: CpfNameConverter,\n birth_date: BirthDateConverter,\n text: TextConverter,\n check: CheckboxConverter,\n select: SelectConverter,\n pin: PinConverter,\n radiogroup: RadioGroupConverter,\n email: EmailConverter,\n psEmail: EmailConverter,\n bazitemail: EmailConverter,\n street_number: StreetNumberConverter,\n sum: PricepointConverter,\n out: PricepointConverter,\n couponCode: CouponConverter,\n phone: PhoneConverter,\n};\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { Converter } from '../converters/converter.abstract';\nimport { convertersMapToken } from '../converters/converters-map';\nimport { ConvertersMap } from '../converters/converters-map.interface';\nimport { ControlConfig } from './control-config';\n\n@Injectable()\nexport class ControlConfigService {\n public constructor(\n @Inject(convertersMapToken)\n private readonly convertersMap: ConvertersMap,\n private readonly injector: Injector\n ) {}\n\n public getFormControl(field: Field): UntypedFormControl | null {\n const converter = this.getConverter(field);\n\n if (!converter) {\n return null;\n }\n\n return converter.convertToFormControl(field);\n }\n\n public getConfig(field: Field): ControlConfig | null {\n const converter = this.getConverter(field);\n\n if (!converter) {\n return null;\n }\n\n return converter.convertToConfig(field);\n }\n\n public getConverter(field: Field | null): Converter | null {\n if (!field) {\n return null;\n }\n\n const sanitizedName = field.name.replace(/^fix_/i, '');\n let converter = this.convertersMap[sanitizedName];\n\n if (!converter) {\n converter = this.convertersMap[field.type];\n }\n\n if (!converter) {\n return null;\n }\n\n return this.injector.get<Converter>(converter);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { XpsBoolean } from '../../xps-boolean.enum';\nimport { Field } from '../field.interface';\nimport { ControlConfigService } from './controls/control-config.service';\nimport { FieldFormStates } from './field-form-states.interface';\nimport { FormState } from './form-state.interface';\n\n@Injectable()\nexport class FormService {\n public fieldFormStates: FieldFormStates = {};\n\n public constructor(\n protected readonly controlConfigService: ControlConfigService\n ) {}\n\n public createForm(fields: Field[]): UntypedFormGroup {\n const controls: { [name: string]: UntypedFormControl } =\n this.getVisibleFields(fields).reduce(\n (result: { [key: string]: UntypedFormControl }, field: Field) => {\n const formControl: UntypedFormControl | null =\n this.controlConfigService.getFormControl(field);\n\n if (formControl) {\n result[field.name] = formControl;\n }\n\n return result;\n },\n {}\n );\n\n return new UntypedFormGroup(controls);\n }\n\n public updateFieldFormState(\n form: UntypedFormGroup,\n fields: Field[],\n fieldName: string,\n formState: FormState\n ): void {\n const field = fields.find(\n (fieldItem: Field) => fieldItem.name === fieldName\n );\n\n if (!field) {\n return;\n }\n\n const converter = this.controlConfigService.getConverter(field);\n const control = form.controls[fieldName];\n\n if (!control) {\n return;\n }\n\n this.fieldFormStates[fieldName] = {\n ...this.fieldFormStates[fieldName],\n ...formState,\n };\n control.setValidators(\n converter?.getValidators(field, this.fieldFormStates[fieldName]) ?? []\n );\n control.updateValueAndValidity();\n }\n\n private getVisibleFields(fields: Field[]): Field[] {\n return fields.filter(({ isVisible }) => isVisible === XpsBoolean.true);\n }\n}\n","export enum StatusSearchParam {\n token = 'token',\n pid = 'fix_pid',\n invoice = 'fix_invoice',\n signature = 'signature',\n locale = 'locale',\n testProject = 'fix_testProject',\n testPs = 'fix_testPs',\n testXsolla = 'fix_testXsolla',\n userReturnStatus = 'fix_userReturnStatus',\n isSavePaymentAccount = 'isSavePaymentAccount',\n}\n","import { StatusSearchParam } from './status-search-param.enum';\n\nexport const requiredStatusSearchParams = [\n StatusSearchParam.token,\n StatusSearchParam.locale,\n StatusSearchParam.signature,\n StatusSearchParam.pid,\n StatusSearchParam.invoice,\n];\n","import { StatusRequestParams } from './status-request-params.interface';\nimport { StatusSearchParam } from './status-search-param.enum';\n\ntype SearchParamConverter = (value: string) => string | number;\n\ninterface StatusSearchParamSettings {\n key: keyof StatusRequestParams;\n converter: SearchParamConverter;\n}\n\nconst stringConverter: SearchParamConverter = (value: string): string => value;\nconst numberConverter: SearchParamConverter = (value: string): number => {\n const numberValue = Number(value);\n return isNaN(numberValue) ? 0 : numberValue;\n};\n\nexport const statusSearchParamsMap = new Map<\n StatusSearchParam,\n StatusSearchParamSettings\n>([\n [\n StatusSearchParam.token,\n {\n key: 'token',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.signature,\n {\n key: 'signature',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.locale,\n {\n key: 'locale',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.userReturnStatus,\n {\n key: 'userReturnStatus',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.pid,\n {\n key: 'pid',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.invoice,\n {\n key: 'invoice',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testProject,\n {\n key: 'testProject',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testPs,\n {\n key: 'testPs',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testXsolla,\n {\n key: 'testXsolla',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.isSavePaymentAccount,\n {\n key: 'isSavePaymentAccount',\n converter: stringConverter,\n },\n ],\n]);\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport abstract class XpsApiPart<Response> {\n public get response$(): Observable<Response> {\n return this.response\n .asObservable()\n .pipe(\n filter<Response | null, Response>(\n (response: Response | null): response is Response => response !== null\n )\n );\n }\n\n private readonly response: BehaviorSubject<Response | null> =\n new BehaviorSubject<Response | null>(null);\n\n public emitResponse(response: Response | null): void {\n this.response.next(response);\n }\n\n public get currentValue(): Response | null {\n return this.response.getValue();\n }\n\n protected abstract request(\n ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n ): void | Promise<Response | void> | Promise<Response> | Observable<Response>;\n}\n","import { XpsApiPartRequest } from '../../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\nimport { StatusRequestParams } from '../status-request-params.interface';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class StatusRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'status';\n public readonly xps_fix_invoice: number;\n public readonly xps_fix_pid: number;\n public readonly xps_signature: string;\n public readonly xps_locale: string;\n public readonly xps_fix_testProject: number | undefined;\n public readonly xps_fix_testPs: number | undefined;\n public readonly xps_fix_testXsolla: number | undefined;\n public readonly xps_fix_userReturnStatus: string | undefined;\n\n public constructor(parameters: StatusRequestParams) {\n super();\n\n if (!parameters.token) {\n throw new TokenError();\n }\n\n this.access_token = parameters.token;\n this.xps_fix_invoice = parameters.invoice;\n this.xps_fix_pid = parameters.pid;\n this.xps_signature = parameters.signature;\n this.xps_fix_testProject = parameters.testProject;\n this.xps_fix_testPs = parameters.testPs;\n this.xps_fix_testXsolla = parameters.testXsolla;\n this.xps_fix_userReturnStatus = parameters.userReturnStatus;\n this.xps_locale = parameters.locale;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusRequest } from './status-request.class';\n\nexport type StatusRequestParameters = ConstructorParameters<\n typeof StatusRequest\n>;\n\nexport type StatusRequestFactory = (\n ...args: StatusRequestParameters\n) => StatusRequest;\n\nexport const statusRequestFactoryToken: InjectionToken<StatusRequestFactory> =\n new InjectionToken<StatusRequestFactory>('StatusRequest');\n\nexport const statusRequestFactoryProvider: ValueProvider = {\n provide: statusRequestFactoryToken,\n useValue: (...args: StatusRequestParameters) => new StatusRequest(...args),\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusResponse } from './status-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof StatusResponse>;\n\nexport type StatusResponseFactory = (\n ...args: ResponseParameters\n) => StatusResponse;\n\nexport const statusResponseFactoryToken: InjectionToken<StatusResponseFactory> =\n new InjectionToken<StatusResponseFactory>('StatusResponse');\n\nexport const statusResponseFactoryProvider: ValueProvider = {\n provide: statusResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new StatusResponse(...args),\n};\n","import { lastValueFrom } from 'rxjs';\nimport { Injectable, Inject } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { XpsResponse, XpsStatus } from '../../xps-response.interface';\nimport { SettingsService } from '../../../settings/settings.service';\nimport { TerminalError } from '../../../exceptions-handling/errors/terminal-error.class';\nimport { SecureApiClient } from '../../../http/secure-api/secure-api.service';\nimport { XpsApiPart } from '../../xps-api-part.abstract';\nimport {\n StatusRequestFactory,\n statusRequestFactoryToken,\n} from './request/status-request.token';\nimport {\n StatusResponseFactory,\n statusResponseFactoryToken,\n} from './response/status-response.token';\nimport { StatusRequestParams } from './status-request-params.interface';\nimport { StatusResponse } from './response/status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusRequestService extends XpsApiPart<StatusResponse> {\n private readonly apiRoute = 'directpayment';\n private requestParams!: StatusRequestParams;\n public constructor(\n private readonly secureApiClient: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(statusRequestFactoryToken)\n private readonly requestFactory: StatusRequestFactory,\n @Inject(statusResponseFactoryToken)\n private readonly responseFactory: StatusResponseFactory\n ) {\n super();\n }\n\n public setRequestParams(params: StatusRequestParams): void {\n this.requestParams = {\n locale: params.locale,\n testProject: params.testProject,\n testPs: params.testPs,\n testXsolla: params.testXsolla,\n userReturnStatus: params.userReturnStatus,\n invoice: params.invoice,\n pid: params.pid,\n signature: params.signature,\n };\n }\n\n public request(): void {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n ...this.requestParams,\n });\n\n lastValueFrom(\n this.secureApiClient.post<XpsResponse>(\n this.apiRoute,\n new URLSearchParams(\n requestParams as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then((response: XpsResponse) => {\n const statusResponse = this.responseFactory({\n status: response.status as XpsStatus | null,\n errors: response.errors,\n form: response.form,\n });\n\n this.emitResponse(statusResponse);\n })\n .catch((e: TerminalError) => {\n throw new TerminalError(e.message, e.code);\n });\n }\n}\n","export function isNull(value: unknown): value is null {\n return value === null;\n}\n","export function isUndefined(value: unknown): value is undefined {\n return typeof value === 'undefined';\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ExtendedWindow } from '../extended-window.interface';\nimport { SettingsService } from '../settings/settings.service';\nimport { isNull } from '../type-guards/is-null.function';\nimport { isUndefined } from '../type-guards/is-undefined.function';\nimport { windowToken } from '../window.token';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SessionService {\n private cache: { [key: string]: unknown } = {};\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow,\n private readonly settingsService: SettingsService\n ) {}\n\n /**\n * @param {string} key must be uniq entire all app\n * @param {unknown} value can be anything\n */\n public set(key: string, value: unknown): void {\n this.cache[key] = value;\n\n try {\n this.window.sessionStorage.setItem(\n this.getStorageKey(key),\n JSON.stringify(value)\n );\n } catch (error: unknown) {\n console.warn('Session storage not available.');\n }\n }\n\n public get<T>(key: string): T | null {\n const cacheValue: unknown = this.cache[key];\n\n if (!isUndefined(cacheValue)) {\n return cacheValue as T;\n }\n\n try {\n const storageValue = this.window.sessionStorage.getItem(\n this.getStorageKey(key)\n );\n\n if (isNull(storageValue)) {\n return null;\n }\n\n return JSON.parse(storageValue) as T;\n } catch (error: unknown) {\n return null;\n }\n }\n\n private getStorageKey(key: string): string {\n return `${key}${this.settingsService.token}`;\n }\n}\n","import { Price } from './price.interface';\n\nexport function extractMoneyCurrency<T>(\n money: (T & { amount?: null | number; currency?: string }) | undefined,\n allowZero = true\n): Price {\n return {\n amount: money?.amount ?? (allowZero ? 0 : null),\n currency: money?.currency ?? '',\n };\n}\n\nexport function createPriceOrUndefined(\n amount: number | undefined | null,\n currency: string | undefined\n): Price | undefined {\n return amount !== undefined && amount !== null && currency !== undefined\n ? {\n amount,\n currency,\n }\n : undefined;\n}\n","/**\n * default image for purchase item is set on Publisher Account side.\n * for purchase checkout items the image url is converted into base64 string.\n * to determine default image fixed templates are used\n */\nexport const defaultImagePatterns = [\n /^data:image\\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAAAAADmVT4XAAACMUlEQVR4Ae3YgYqdMBSE4fP/,\n /virtual_item_default_image/,\n];\n","export enum VatDetailsKey {\n vat = 'vat',\n vatPercent = 'vat-percent',\n vatIncluding = 'vat-including',\n vatPercentIncluding = 'vat-percent-including',\n\n vatIndia = 'vat-india',\n vatIndiaPercent = 'vat-india-percent',\n vatIndiaIncluding = 'vat-india-including',\n vatIndiaPercentIncluding = 'vat-india-percent-including',\n\n vatGhana = 'vat-ghana',\n vatGhanaIncluding = 'vat-ghana-including',\n}\n","export enum SalesTaxDetailsKey {\n salesTax = 'sales-tax',\n salesTaxPercent = 'sales-tax-percent',\n salesTaxIncluding = 'sales-tax-including',\n}\n","import { Injectable } from '@angular/core';\nimport { XpsSummary } from '../../xps-summary.interface';\nimport { XpsFinance } from '../../xps-finance.interface';\nimport { XpsPurchase } from '../../xps-purchase.interface';\nimport { CartItem } from '../cart-item.interface';\nimport { CartSummary } from '../cart-summary.interface';\nimport { createPriceOrUndefined, extractMoneyCurrency } from '../price.helpers';\nimport { defaultImagePatterns } from './default-image-patterns.const';\nimport { Price } from '../price.interface';\nimport { CartLine } from '../cart-line.interface';\nimport { FinanceDetails } from '../finance-details.interface';\nimport { VatDetailsKey } from '../vat-details-key.enum';\nimport { SalesTaxDetailsKey } from './sales-tax-details-key.enum';\n\n@Injectable({ providedIn: 'root' })\nexport class SummaryFinanceDetailsAdapterService {\n public getFinanceDetails(summary: XpsSummary): FinanceDetails {\n const { purchase, finance } = summary;\n return {\n purchase: purchase,\n finance: finance,\n cartItems: this.getCartItems(purchase, finance),\n cartSummary: this.getCartSummary(finance),\n paymentCountry: this.getPaymentCountry(finance),\n };\n }\n\n private shouldShowZeroIndirectTaxRate(finance: XpsFinance | null): boolean {\n return !!(finance?.vat?.visible ?? finance?.vat_user?.visible);\n }\n\n private isSalesTaxes(finance: XpsFinance | null): boolean {\n return !!(finance?.sales_tax?.amount ?? finance?.sales_tax_user?.amount);\n }\n\n private getCartItems(\n purchase: XpsPurchase,\n finance: XpsFinance | null\n ): CartItem[] {\n const checkouts: CartItem[] | undefined = purchase.checkout_items?.map(\n (item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: item.name,\n price: extractMoneyCurrency(item, false),\n priceBeforeDiscount: createPriceOrUndefined(\n item.amount_before_discount,\n item.currency\n ),\n quantity: item.quantity,\n description: item.description,\n tax: this.getTaxForItem(finance, item.indirect_tax_rate),\n isBonus: item.is_bonus,\n };\n }\n );\n\n const virtualCurrencies: CartItem[] | undefined =\n purchase.virtual_currency?.map((item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: `${item.quantity} ${item.name}`,\n price: extractMoneyCurrency(item),\n description: item.description,\n isBonus: item.is_bonus,\n };\n });\n\n const virtualItems: CartItem[] | undefined = purchase.virtual_items?.map(\n (item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: item.name,\n price: extractMoneyCurrency(item),\n description: item.description,\n quantity: item.quantity,\n isBonus: item.is_bonus,\n };\n }\n );\n\n let checkoutArray: CartItem[] | undefined = undefined;\n if (purchase.checkout) {\n checkoutArray = [\n {\n key: 'checkout',\n title: purchase.checkout.description,\n price: extractMoneyCurrency(purchase.checkout),\n isBonus: purchase.checkout.is_bonus ?? false,\n },\n ];\n }\n\n return [\n ...(checkouts ?? []),\n ...(virtualCurrencies ?? []),\n ...(virtualItems ?? []),\n ...(checkoutArray ?? []),\n ];\n }\n\n private getCartSummary(finance: XpsFinance | null): CartSummary {\n return {\n subtotal: {\n title: 'Subtotal',\n money: createPriceOrUndefined(\n finance?.sub_total?.amount,\n finance?.sub_total?.currency\n ),\n },\n subtotalPayment: {\n title: '',\n money: createPriceOrUndefined(\n finance?.sub_total?.payment_amount,\n finance?.sub_total?.payment_currency\n ),\n },\n total: {\n title: 'Total',\n money: extractMoneyCurrency(finance?.total),\n },\n totalDetails: this.getTaxesForTotalDetails(finance),\n subtotalDetails: [\n ...this.getSubtotalDetails(finance),\n ...this.getTaxesForSubtotalDetails(finance),\n ],\n };\n }\n\n private getPaymentCountry(finance: XpsFinance | null): string {\n return finance?.payment_country?.iso ?? '';\n }\n\n private getTaxForItem(\n finance: XpsFinance | null,\n indirectTaxRate?: number\n ): CartLine | null {\n if (\n indirectTaxRate ||\n (this.shouldShowZeroIndirectTaxRate(finance) && indirectTaxRate === 0)\n ) {\n if (this.isSalesTaxes(finance)) {\n return {\n key: SalesTaxDetailsKey.salesTaxPercent,\n content: `Sales tax ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n\n if (this.isIndia(finance)) {\n return {\n key: VatDetailsKey.vatIndiaPercent,\n content: `GST ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n\n if (this.isGhana(finance)) {\n return {\n key: VatDetailsKey.vatGhana,\n content: 'VAT, NHIL, GETFund Levy, and Covid-19 Levy',\n rate: indirectTaxRate,\n };\n }\n\n return {\n key: VatDetailsKey.vatPercent,\n content: `VAT ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n return null;\n }\n\n private getSubtotalDetails(finance: XpsFinance | null): CartLine[] {\n if (!finance) {\n return [];\n }\n\n // subtotal details fields\n const subtotalDetailsSorting = [\n {\n key: 'discount',\n responseKey: 'discount',\n title: 'Discount',\n },\n {\n key: 'fee',\n responseKey: 'fee',\n title: 'Payment system fee',\n },\n {\n key: 'user-balance',\n responseKey: 'user_balance',\n title: 'Balance',\n },\n ];\n\n return subtotalDetailsSorting.map((sorting) => {\n const field = (finance as unknown as { [key: string]: unknown })[\n sorting.responseKey\n ] as Price;\n\n if (field) {\n return {\n key: sorting.key,\n title: sorting.title,\n money: {\n amount:\n sorting.key === 'discount' && field.amount\n ? -field.amount\n : field.amount,\n currency: field.currency,\n },\n };\n }\n return sorting;\n });\n }\n\n private getTaxesForSubtotalDetails(finance: XpsFinance | null): CartLine[] {\n const ret = [];\n\n // subtotal. VAT %p\n if (\n finance?.vat_user &&\n (finance?.vat_user?.amount ?? finance?.vat_user?.visible)\n ) {\n ret.push({\n key: this.getVatNotIncludingKeyForDetails(finance),\n title: this.getVatLabelForSubtotalDetails(finance),\n money: extractMoneyCurrency(finance?.vat_user),\n });\n }\n\n if (finance?.sales_tax_user?.amount) {\n ret.push({\n key: SalesTaxDetailsKey.salesTax,\n title: 'Sales tax',\n money: extractMoneyCurrency(finance?.sales_tax_user),\n });\n }\n\n return ret;\n }\n\n private getVatLabelForSubtotalDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return `GST ${finance?.vat_user?.percent ?? ''}%`;\n }\n\n if (this.isGhana(finance)) {\n return `VAT, NHIL, GETFund Levy, and Covid-19 Levy`;\n }\n\n return `VAT ${finance?.vat_user?.percent ?? ''}%`;\n }\n\n private getTaxesForTotalDetails(finance: XpsFinance | null): CartLine[] {\n const ret = [];\n\n // for totalDetails. VAT\n if (\n (finance?.vat?.amount || finance?.vat?.visible) &&\n !finance?.vat_user?.amount\n ) {\n ret.push({\n key: this.getVatIncludingKeyForDetails(finance),\n title: this.getVatLabelForTotalDetails(finance),\n money: extractMoneyCurrency(finance?.vat),\n });\n }\n\n if (finance?.sales_tax?.amount && !finance?.sales_tax_user?.amount) {\n ret.push({\n key: SalesTaxDetailsKey.salesTaxIncluding,\n title: 'Sales tax included',\n money: extractMoneyCurrency(finance?.sales_tax),\n });\n }\n\n return ret;\n }\n\n private getVatNotIncludingKeyForDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return VatDetailsKey.vatIndiaPercent;\n }\n\n if (this.isGhana(finance)) {\n return VatDetailsKey.vatGhana;\n }\n\n return VatDetailsKey.vatPercent;\n }\n\n private getVatIncludingKeyForDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return VatDetailsKey.vatIndiaPercentIncluding;\n }\n\n if (this.isGhana(finance)) {\n return VatDetailsKey.vatGhanaIncluding;\n }\n\n return VatDetailsKey.vatPercentIncluding;\n }\n\n private getVatLabelForTotalDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return `Including ${finance?.vat.percent ?? ''}% GST`;\n }\n\n if (this.isGhana(finance)) {\n return 'Including VAT, NHIL, GETFund Levy, and Covid-19 Levy';\n }\n\n return `Including ${finance?.vat.percent ?? ''}% VAT`;\n }\n\n private isIndia(finance: XpsFinance | null): boolean {\n return finance?.payment_country.iso === 'IN';\n }\n\n private isGhana(finance: XpsFinance | null): boolean {\n return finance?.payment_country.iso === 'GH';\n }\n\n private isDefaultImage(url: string): boolean {\n return defaultImagePatterns.some((regex) => regex.test(url));\n }\n}\n","export const fieldsWithCurrency = new Set([\n 'sum',\n 'commissionUserVatPrc',\n 'salesTaxCommission',\n 'vatUserNotIncluded',\n 'xsollaTipsAmount',\n 'paymentSystemFee',\n 'discount',\n 'userWallet',\n 'subtotal',\n 'subtotalSummaryBeforeConversion',\n 'grandTotal',\n 'subtotalBeforeDiscount',\n 'redeemedPoints',\n]);\n","export enum CountryIsoCode {\n India = 'IN',\n Ghana = 'GH',\n}\n","import { Injectable } from '@angular/core';\nimport { StatusFinanceInfo } from '../../status/status-finance-info.interface';\nimport { Status } from '../../status/status.interface';\nimport { FinanceDetails } from '../finance-details.interface';\nimport { FinanceInfoWithAmountAndCurrency } from './finance-info.interface';\nimport { FinanceInfoField } from '../../status/finance-info-field.interface';\nimport { fieldsWithCurrency } from './fields-with-currency';\nimport { CartLine } from '../cart-line.interface';\nimport { extractMoneyCurrency } from '../price.helpers';\nimport { FieldWithAmountAndCurrency } from './field-with-amount-and-currency.interface';\nimport { CartSummary } from '../cart-summary.interface';\nimport { CountryIsoCode } from '../../../country/country-iso-code.enum';\nimport { VatDetailsKey } from '../vat-details-key.enum';\nimport { XpsPurchase } from '../../xps-purchase.interface';\nimport { CartItem } from '../cart-item.interface';\nimport { XpsFinance } from '../../xps-finance.interface';\nimport { StatusOrder } from '../../status/status-order.interface';\nimport { SummaryFinanceDetailsAdapterService } from '../summary/summary-finance-details-adapter.service';\nimport { StatusEnum } from '../../status/status.enum';\n\n@Injectable({ providedIn: 'root' })\nexport class StatusFinanceDetailsAdapterService {\n public constructor(\n private readonly summarFinanceDetailsAdapterService: SummaryFinanceDetailsAdapterService\n ) {}\n\n public getFinanceDetails(\n status: Status,\n purchase: XpsPurchase | null\n ): FinanceDetails {\n const financeInfo = this.fillFinanceInfo(status.financeInfo);\n const country = status.paymentCountryIso;\n const order = status.order ?? null;\n\n const summaryFinance = this.convertStatusFinanceToSummaryFinance(\n purchase,\n order,\n country\n );\n\n return {\n purchase,\n finance: summaryFinance,\n cartItems: this.getCartItems(purchase, summaryFinance),\n cartSummary: this.getCartSummary(status, financeInfo, country),\n paymentCountry: country,\n };\n }\n\n private fillFinanceInfo(\n financeInfo: StatusFinanceInfo\n ): FinanceInfoWithAmountAndCurrency {\n return Object.keys(financeInfo).reduce(\n (\n financeInfoWithAmountAndCurrency: FinanceInfoWithAmountAndCurrency,\n key: string\n ) => {\n const field: FinanceInfoField = financeInfo[key];\n\n if (field?.key && fieldsWithCurrency.has(field?.key)) {\n this.addAmountAndCurrencyToField(field);\n }\n return { ...financeInfoWithAmountAndCurrency, [key]: field };\n },\n {}\n );\n }\n\n private addAmountAndCurrencyToField(field: {\n key?: string;\n pref?: string;\n value?: string;\n amount?: number;\n currency?: string;\n }): void {\n const amountAndCurrency = /(^[-\\d.]+) ([A-Z]{3})$/;\n const currencyParts = field.value?.trim().match(amountAndCurrency);\n\n if (currencyParts) {\n const amountPosition = 1;\n const currencyPosition = 2;\n field.amount = Number(currencyParts[amountPosition]);\n field.currency = currencyParts[currencyPosition];\n }\n }\n\n private getCartItems(\n purchase: XpsPurchase | null,\n summaryFinance: XpsFinance | null\n ): CartItem[] | null {\n if (!purchase) {\n return null;\n }\n\n const financeDetails =\n this.summarFinanceDetailsAdapterService.getFinanceDetails({\n purchase,\n finance: summaryFinance,\n });\n\n return financeDetails.cartItems;\n }\n\n private convertStatusFinanceToSummaryFinance(\n purchase: XpsPurchase | null,\n order: StatusOrder | null,\n country: string\n ): XpsFinance | null {\n if (!order || !purchase?.checkout_items?.length) {\n return null;\n }\n\n const finance = {\n payment_country: {\n iso: country,\n },\n } as XpsFinance;\n\n const firstCheckoutItem = purchase?.checkout_items[0];\n const firstCheckoutItemAmount = firstCheckoutItem?.amount ?? 0;\n const oneHundredPercent = 100;\n const taxAmount =\n (firstCheckoutItemAmount * firstCheckoutItem?.indirect_tax_rate) /\n oneHundredPercent;\n\n if (order.contained_taxes?.sales_tax) {\n finance.sales_tax = {\n amount: taxAmount,\n percent: firstCheckoutItem?.indirect_tax_rate,\n currency: purchase?.checkout?.currency ?? '',\n };\n }\n\n if (order.contained_taxes?.user_vat) {\n finance.vat = {\n amount: taxAmount,\n percent: firstCheckoutItem?.indirect_tax_rate,\n currency: purchase?.checkout?.currency ?? '',\n visible: true,\n };\n }\n\n return finance;\n }\n\n private getCartSummary(\n status: Status,\n financeInfo: FinanceInfoWithAmountAndCurrency,\n country: string\n ): CartSummary {\n const cart: CartSummary = {\n total: this.getTotal(financeInfo),\n totalDetails: this.getTotalDetails(financeInfo, country),\n subtotalDetails: [\n ...this.getSubtotalDetails(financeInfo),\n ...this.getTaxesForSubtotalDetails(financeInfo, country),\n ],\n transactionDetails: this.getTransactionDetails(status, financeInfo),\n subtotal: this.getInitialCurrencySubtotal(financeInfo) ?? null,\n subtotalPayment: this.getSubtotalPayment(financeInfo) ?? null,\n };\n\n return cart;\n }\n\n private getTotal(financeInfo: FinanceInfoWithAmountAndCurrency): CartLine {\n return {\n title: 'Total',\n money: extractMoneyCurrency(\n financeInfo.sum as FieldWithAmountAndCurrency\n ),\n };\n }\n\n private getSubtotalPayment(\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine | null {\n if (!financeInfo?.subtotal) {\n return null;\n }\n\n return {\n title: 'Subtotal',\n money: extractMoneyCurrency(\n financeInfo.subtotal as FieldWithAmountAndCurrency\n ),\n };\n }\n\n private getInitialCurrencySubtotal(\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine | null {\n if (!financeInfo?.subtotalSummaryBeforeConversion) {\n return null;\n }\n\n return {\n title: '',\n money: extractMoneyCurrency(financeInfo.subtotalSummaryBeforeConversion),\n };\n }\n\n private getTotalDetails(\n financeInfo: FinanceInfoWithAmountAndCurrency,\n country: string\n ): CartLine[] {\n const totalDetails: CartLine[] = [];\n\n const salesTaxCommissionField = financeInfo[\n 'salesTaxCommission'\n ] as FieldWithAmountAndCurrency;\n if (salesTaxCommissionField) {\n totalDetails.push({\n title: salesTaxCommissionField.pref,\n money: {\n amount: salesTaxCommissionField.amount ?? null,\n currency: salesTaxCommissionField.currency ?? '',\n },\n });\n }\n\n const commissionUserVatPrcField = financeInfo[\n 'commissionUserVatPrc'\n ] as FieldWithAmountAndCurrency;\n\n if (commissionUserVatPrcField?.pref) {\n const percents = this.getPercents(commissionUserVatPrcField.pref);\n\n totalDetails.push({\n key: this.getVatIncludingKeyDetails(percents, country),\n title: this.geVatIncludingTitleDetails(percents, country),\n money: {\n amount: commissionUserVatPrcField.amount ?? null,\n currency: commissionUserVatPrcField.currency ?? '',\n },\n });\n }\n return totalDetails;\n }\n\n private getSubtotalDetails(\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine[] {\n const subtotalDetailsSorting = [\n {\n key: 'discount',\n responseKey: 'discount',\n title: 'Discount',\n },\n {\n key: 'fee',\n responseKey: 'paymentSystemFee',\n title: 'Payment system fee',\n },\n {\n key: 'user-balance',\n responseKey: 'userWallet',\n title: 'Balance',\n },\n ];\n\n const redeemedPoints = financeInfo['redeemedPoints'];\n\n if (redeemedPoints?.pref) {\n subtotalDetailsSorting.push({\n key: 'redeem-points',\n responseKey: 'redeemedPoints',\n title: redeemedPoints.pref,\n });\n }\n\n return subtotalDetailsSorting.reduce(\n (\n subTotalDetails: CartLine[],\n sorting: { responseKey: string; title: string }\n ) => {\n const field = financeInfo[\n sorting.responseKey\n ] as FieldWithAmountAndCurrency;\n if (field) {\n subTotalDetails.push({\n title: sorting.title,\n money: {\n amount: field.amount ?? null,\n currency: field.currency ?? '',\n },\n });\n }\n return subTotalDetails;\n },\n []\n );\n }\n\n private getTaxesForSubtotalDetails(\n financeInfo: FinanceInfoWithAmountAndCurrency,\n country: string\n ): CartLine[] {\n const taxesForSubtotalDetails: CartLine[] = [];\n const vatUserNotIncludedField = financeInfo[\n 'vatUserNotIncluded'\n ] as FieldWithAmountAndCurrency;\n if (vatUserNotIncludedField?.pref) {\n const percents = this.getPercents(vatUserNotIncludedField.pref);\n taxesForSubtotalDetails.push({\n key: this.getVatNotIncludingKeyDetails(percents, country),\n title: this.getVatNotIncludingTitleDetails(percents, country),\n money: {\n amount: vatUserNotIncludedField.amount ?? null,\n currency: vatUserNotIncludedField.currency ?? '',\n },\n });\n }\n\n return taxesForSubtotalDetails;\n }\n\n private getVatNotIncludingKeyDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents ? VatDetailsKey.vatIndiaPercent : VatDetailsKey.vatIndia;\n }\n\n if (this.isGhana(country)) {\n return VatDetailsKey.vatGhana;\n }\n\n return percents ? VatDetailsKey.vatPercent : VatDetailsKey.vat;\n }\n\n private getVatNotIncludingTitleDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents ? `GST ${percents}%` : 'GST';\n }\n\n if (this.isGhana(country)) {\n return 'VAT, NHIL, GETFund Levy, and Covid-19 Levy';\n }\n\n return percents ? `VAT ${percents}%` : 'VAT';\n }\n\n private getVatIncludingKeyDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents\n ? VatDetailsKey.vatIndiaPercentIncluding\n : VatDetailsKey.vatIndiaIncluding;\n }\n\n if (this.isGhana(country)) {\n return VatDetailsKey.vatGhanaIncluding;\n }\n\n return percents\n ? VatDetailsKey.vatPercentIncluding\n : VatDetailsKey.vatIncluding;\n }\n\n private geVatIncludingTitleDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents ? `Including ${percents}% GST` : 'Including GST';\n }\n\n if (this.isGhana(country)) {\n return 'Including VAT, NHIL, GETFund Levy, and Covid-19 Levy';\n }\n\n return percents ? `Including ${percents}% VAT` : `Including VAT`;\n }\n\n private isGhana(country: string): boolean {\n return country === CountryIsoCode.Ghana;\n }\n\n private isIndia(country: string): boolean {\n return country === CountryIsoCode.India;\n }\n\n private getTransactionDetails(\n status: Status,\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine[] {\n const transactionDetails: CartLine[] = [];\n if (financeInfo.invoice?.value) {\n transactionDetails.push({\n key: 'invoice',\n title: 'Transaction',\n content: financeInfo.invoice.value,\n });\n }\n\n const isCompleted =\n status.isCancelUser ||\n (status.statusState !== StatusEnum.processing &&\n status.statusState !== StatusEnum.created &&\n status.statusState !== StatusEnum.held);\n if (isCompleted && financeInfo.time?.value) {\n transactionDetails.push({\n key: 'time',\n title: 'Date',\n content: financeInfo.time.value,\n isDateLine: true,\n });\n }\n return transactionDetails;\n }\n\n private getPercents(value: string): string | null {\n const percentsTemplate = /(\\d+(.\\d+)?)/;\n const percentsMatchResult = percentsTemplate.exec(value);\n\n if (!percentsMatchResult) {\n return null;\n }\n\n return percentsMatchResult[0];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { Status } from '../status/status.interface';\nimport { XpsSummary } from '../xps-summary.interface';\nimport { FinanceDetails } from './finance-details.interface';\nimport { StatusFinanceDetailsAdapterService } from './status/status-finance-details-adapter.service';\nimport { SummaryFinanceDetailsAdapterService } from './summary/summary-finance-details-adapter.service';\nimport { SessionService } from '../../session/session.service';\nimport { XpsPurchase } from '../xps-purchase.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class FinanceDetailsService extends EmitDataService<FinanceDetails> {\n private readonly purchaseSessionKey = 'purchase';\n\n public constructor(\n private readonly sessionService: SessionService,\n private readonly summaryFinanceDetailsAdapterService: SummaryFinanceDetailsAdapterService,\n private readonly statusFinanceDetailsAdapterService: StatusFinanceDetailsAdapterService\n ) {\n super();\n }\n\n public emitWithSummary(summary?: XpsSummary): void {\n if (summary) {\n const financeDetails =\n this.summaryFinanceDetailsAdapterService.getFinanceDetails(summary);\n\n if (financeDetails.purchase) {\n this.sessionService.set(\n this.purchaseSessionKey,\n financeDetails.purchase\n );\n }\n\n super.emit(financeDetails);\n }\n }\n\n public emitWithStatus(status?: Status): void {\n if (status) {\n const purchase = this.sessionService.get<XpsPurchase>(\n this.purchaseSessionKey\n );\n const financeDetails =\n this.statusFinanceDetailsAdapterService.getFinanceDetails(\n status,\n purchase\n );\n super.emit(financeDetails);\n }\n }\n}\n","import { XpsApiPartRequest } from '../../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class CheckStatusRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'status';\n public readonly invoice: number;\n public readonly section = 'getstatus';\n\n public constructor(token: string | null, invoice: number) {\n super();\n\n if (token === null) {\n throw new TokenError();\n }\n\n this.access_token = token;\n this.invoice = invoice;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { CheckStatusRequest } from './check-status-request.class';\n\nexport type CheckStatusRequestParameters = ConstructorParameters<\n typeof CheckStatusRequest\n>;\n\nexport type CheckStatusRequestFactory = (\n ...args: CheckStatusRequestParameters\n) => CheckStatusRequest;\n\nexport const checkStatusRequestFactoryToken: InjectionToken<CheckStatusRequestFactory> =\n new InjectionToken<CheckStatusRequestFactory>('CheckStatusRequest');\n\nexport const checkStatusRequestFactoryProvider: ValueProvider = {\n provide: checkStatusRequestFactoryToken,\n useValue: (...args: CheckStatusRequestParameters) =>\n new CheckStatusRequest(...args),\n};\n","import { Properties } from '../../../../properties.type';\nimport { StatusEnum } from '../../status.enum';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class CheckStatusResponse {\n public readonly status?: StatusEnum;\n public readonly final?: boolean;\n public readonly isPaymentAccountAttached?: boolean;\n\n public constructor(parameters: Properties<CheckStatusResponse>) {\n this.status = parameters.status;\n this.final = parameters.final;\n this.isPaymentAccountAttached = parameters.isPaymentAccountAttached;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { CheckStatusResponse } from './check-status-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof CheckStatusResponse>;\n\nexport type CheckStatusResponseFactory = (\n ...args: ResponseParameters\n) => CheckStatusResponse;\n\nexport const checkStatusResponseFactoryToken: InjectionToken<CheckStatusResponseFactory> =\n new InjectionToken<CheckStatusResponseFactory>('CheckStatusResponse');\n\nexport const checkStatusResponseFactoryProvider: ValueProvider = {\n provide: checkStatusResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new CheckStatusResponse(...args),\n};\n","import { Inject, Injectable } from '@angular/core';\nimport { SettingsService } from '../../../settings/settings.service';\nimport { XpsResponse } from '../../xps-response.interface';\nimport { StatusEnum } from '../status.enum';\nimport { ResponseError } from '../../../exceptions-handling/errors/response-error.class';\nimport {\n CheckStatusRequestFactory,\n checkStatusRequestFactoryToken,\n} from './request/check-status-request.token';\nimport {\n CheckStatusResponseFactory,\n checkStatusResponseFactoryToken,\n} from './response/check-status-response.token';\nimport { XpsApiPart } from '../../xps-api-part.abstract';\nimport { XpsApiService } from '../../xps-api/xps-api.service';\nimport { CheckStatusResponse } from './response/check-status-response.class';\nimport { XpsResponseErrorsMappingService } from '../../../errors-mapping/xps-response-errors-mapping.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CheckStatusService extends XpsApiPart<CheckStatusResponse> {\n private invoice!: number;\n\n public constructor(\n private readonly xpsApiService: XpsApiService,\n private readonly settingsService: SettingsService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n @Inject(checkStatusRequestFactoryToken)\n private readonly requestFactory: CheckStatusRequestFactory,\n @Inject(checkStatusResponseFactoryToken)\n private readonly responseFactory: CheckStatusResponseFactory\n ) {\n super();\n }\n\n public setRequestParams(invoice: number): void {\n this.invoice = invoice;\n }\n\n public request(): void {\n const requestParams = this.requestFactory(\n this.settingsService.token,\n this.invoice\n );\n\n this.xpsApiService\n .directPaymentRequest(requestParams)\n .then((xpsResponse: XpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n const checkStatusResponse = this.responseFactory({\n status: response.status as StatusEnum,\n final: response.final,\n isPaymentAccountAttached: response.is_payment_account_attached,\n });\n\n this.emitResponse(checkStatusResponse);\n })\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n }\n}\n","export enum WebSocketStatus {\n statusChanged = 'status_changed',\n troubledStatus = 'troubled_status',\n}\n","export enum WebSocketClientType {\n nchan = 'nchan',\n centrifugo = 'centrifugo',\n}\n","import { Observable, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NchanWebSocketService implements WebSocketClient {\n public static readonly reconnectionTimeoutIncrementFactor = 2;\n\n public url!: string;\n\n public type = WebSocketClientType.nchan;\n\n private static readonly timeoutsMs = {\n reconnection: 1500,\n reconnectionMaxDeviation: 1500,\n };\n\n private openPromise: Promise<unknown> | undefined;\n\n private reconnectionTimeoutMs!: number;\n private reconnectionTimerId: ReturnType<typeof setTimeout> | null = null;\n\n private readonly openConnectionTimerId: number | undefined;\n\n private connection!: WebSocket;\n\n private readonly incomingMessages$: Subject<MessageEvent> =\n new Subject<MessageEvent>();\n private readonly successfulReconnectionEventsProxy$: Subject<void> =\n new Subject<void>();\n\n public async open(): Promise<unknown> {\n if (this.openPromise && !this.isClosed()) {\n return this.openPromise;\n }\n\n this.openPromise = this.createConnection()\n .catch(async () => {\n return this.waitWhileNotReconnect();\n })\n .then(() => {\n this.connection.onclose = async () => this.open();\n });\n\n return this.openPromise;\n }\n\n public close(): void {\n this.clearReconnectionTimer();\n\n if (this.isClosed()) {\n return;\n }\n\n this.connection.onclose = null;\n this.connection.close();\n }\n\n public get messages$(): Observable<string> {\n return this.incomingMessages$\n .asObservable()\n .pipe(map((event: MessageEvent<string>) => event.data));\n }\n\n public subscribeOnSuccessfulReconnection(next?: () => void): Subscription {\n return this.successfulReconnectionEventsProxy$\n .asObservable()\n .subscribe(next);\n }\n\n private isClosed(): boolean {\n if (!this.connection) {\n return true;\n }\n\n return [this.connection.CLOSED, this.connection.CLOSING].includes(\n this.connection.readyState\n );\n }\n\n private clearReconnectionTimer(): void {\n if (this.reconnectionTimerId) {\n clearTimeout(this.reconnectionTimerId);\n this.reconnectionTimerId = null;\n }\n }\n\n private setFirstReconnectionTimeout(): void {\n const min =\n NchanWebSocketService.timeoutsMs.reconnection -\n NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n const max =\n NchanWebSocketService.timeoutsMs.reconnection +\n NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n this.reconnectionTimeoutMs =\n Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n private incrementReconnectionTimeout(): void {\n this.reconnectionTimeoutMs =\n this.reconnectionTimeoutMs *\n NchanWebSocketService.reconnectionTimeoutIncrementFactor;\n }\n\n private async createConnection(): Promise<unknown> {\n this.connection = new WebSocket(this.url);\n this.connection.onmessage = this.incomingMessages$.next.bind(\n this.incomingMessages$\n );\n\n return new Promise<void>((resolve, reject) => {\n this.connection.onopen = () => {\n clearTimeout(this.openConnectionTimerId);\n resolve();\n };\n\n this.connection.onclose = () => {\n reject();\n };\n });\n }\n\n private async reconnect(): Promise<boolean> {\n this.clearReconnectionTimer();\n\n return new Promise((resolve) => {\n this.reconnectionTimerId = setTimeout(() => {\n this.createConnection()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n this.incrementReconnectionTimeout();\n }, this.reconnectionTimeoutMs);\n });\n }\n\n private async waitWhileNotReconnect(): Promise<void> {\n this.clearReconnectionTimer();\n this.setFirstReconnectionTimeout();\n\n let isConnected = false;\n\n while (!isConnected) {\n isConnected = await this.reconnect();\n }\n\n this.successfulReconnectionEventsProxy$.next();\n }\n}\n","import { ErrorTags } from './elk-error-types.enum';\n\nimport { TaggedError } from './tagged-error.class';\n\nexport class WsError extends TaggedError {\n public constructor(message: string, channelName: string, tags?: ErrorTags[]) {\n tags = tags ? [...tags, ErrorTags.WS] : [ErrorTags.WS];\n\n const messageWithChannel = `${message}. ChannelName - ${channelName}`;\n\n super(messageWithChannel, tags);\n }\n}\n","import type StackTrace from 'stacktrace-js';\nimport { firstValueFrom } from 'rxjs';\nimport {\n ErrorHandler,\n Inject,\n Injectable,\n isDevMode,\n NgZone,\n} from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { windowToken } from '../../window.token';\nimport { SettingsService } from '../../settings/settings.service';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { TaggedError } from '../errors/tagged-error.class';\nimport { ErrorTags } from '../errors/elk-error-types.enum';\nimport { AdditionalInfo } from './additional-info.interface';\nimport { ErrorWithoutMetaFields } from './error-without-meta-fields.interface';\nimport { LogMessage } from './log-message.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ElkLoggerService implements ErrorHandler {\n private readonly stackTrace: Promise<typeof StackTrace>;\n private readonly vendors: RegExp = new RegExp(\n 'node_modules\\\\/(@angular|zone).*.js$'\n );\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow,\n private readonly settingsService: SettingsService,\n private readonly http: HttpClient,\n private readonly ngZone: NgZone\n ) {\n this.stackTrace = this.loadStackTrace();\n }\n\n public handleError(error: Error): void {\n this.ngZone.runOutsideAngular(() => {\n if (isDevMode()) {\n console.error(error);\n return;\n }\n\n this.parseError(error).catch(console.log);\n });\n }\n\n public log(\n message: string,\n tags: ErrorTags[],\n extra?: { [key: string]: unknown }\n ): void {\n const logTags = [ErrorTags.HEADLESS_UI, ...tags];\n\n if (isDevMode()) {\n console.log(message, tags);\n return;\n }\n\n const logMessage: LogMessage = {\n additionalInfo: this.getAdditionalInfo(),\n extra,\n message,\n };\n\n this.sendLog(logMessage, logTags);\n }\n\n private async parseError(error: Error): Promise<TaggedError> {\n const errorObj =\n error instanceof TaggedError\n ? error\n : new TaggedError(error.message || error.toString());\n\n errorObj.trace = await this.getErrorTrace(errorObj);\n errorObj.additionalInfo = this.getAdditionalInfo();\n\n const { tags } = errorObj;\n\n const cleanError = this.removeErrorMetaFields(errorObj);\n\n this.sendLog(cleanError, tags);\n return errorObj;\n }\n\n private async loadStackTrace(): Promise<typeof StackTrace> {\n const library = await import('stacktrace-js');\n return library.default;\n }\n\n private async getErrorTrace(error: Error): Promise<string> {\n const stackTrace = await this.stackTrace;\n\n const stackFramesArr = await stackTrace.fromError(error);\n\n const filteredFramesArr = stackFramesArr.filter(\n ({ fileName }) => fileName && !this.vendors.test(fileName)\n );\n\n return filteredFramesArr\n .map((stackFrame) => stackFrame.toString())\n .join('\\n');\n }\n\n private getAdditionalInfo(): AdditionalInfo {\n const extractUrlHost = (url: string): string =>\n url.replace(/^https?:\\/\\/([^/?#]+).*$/i, '$1');\n\n return {\n location: {\n url: this.window.location.href,\n },\n project: {\n id: this.settingsService.project.id,\n },\n referrer: {\n url: this.window.document.referrer,\n },\n viewport: {\n width: this.window.document.documentElement.clientWidth,\n height: this.window.document.documentElement.clientHeight,\n },\n cdn_address: this.settingsService.settings.cdnUrl\n ? extractUrlHost(this.settingsService.settings.cdnUrl)\n : 'none',\n country: this.settingsService.user.country.value,\n local: this.settingsService.user.country.localized_name,\n };\n }\n\n private removeErrorMetaFields(error: TaggedError): ErrorWithoutMetaFields {\n const metaPropList = [\n 'parentTag',\n 'childTag',\n 'RESTRICTED_KEYS_REGEXP',\n 'tags',\n ];\n\n Object.keys(error).forEach((key) => {\n if (metaPropList.includes(key)) delete error[key as keyof TaggedError];\n });\n\n // implementing own 'message' property from prototype\n return { ...error, message: error.message };\n }\n\n private sendLog(\n message: ErrorWithoutMetaFields | LogMessage,\n tags: ErrorTags[]\n ): void {\n const url = `https://logs-01.xsolla.com/tag/${tags.join(',')}`;\n\n firstValueFrom(\n this.http.post(url, message, {\n headers: new HttpHeaders().set('Content-Type', 'text/plain'),\n responseType: 'text',\n })\n ).catch((err) => console.error('Elk Logger: request error', err));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport type {\n Centrifuge,\n DisconnectedContext,\n PublicationContext,\n Subscription as CentrifugeSubscription,\n} from 'centrifuge';\nimport { StreamPosition, SubscriptionOptions } from 'centrifuge/build/types';\nimport { ElkLoggerService } from '../exceptions-handling/elk/elk-logger.service';\nimport { WsError } from '../exceptions-handling/errors/ws-error.class';\nimport { ErrorTags } from '../exceptions-handling/errors/elk-error-types.enum';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CentrifugoWebSocketService implements WebSocketClient {\n public static readonly reconnectionTimeoutIncrementFactor = 2;\n\n public type = WebSocketClientType.centrifugo;\n\n private static readonly timeoutsMs = {\n reconnection: 1000,\n reconnectionMaxDeviation: 1000,\n };\n\n private reconnectionTimeoutMs!: number;\n private reconnectionTimerId: ReturnType<typeof setTimeout> | null = null;\n\n private readonly openConnectionTimerId: number | undefined;\n\n private connection!: Centrifuge;\n private subscription!: CentrifugeSubscription;\n private subscriptionPosition?: StreamPosition;\n private isConnectionOpen = false;\n private isConnecting = false;\n private url!: string;\n private channel!: string;\n private prevSubscribedChannel?: string;\n\n private readonly incomingMessages$: Subject<PublicationContext> =\n new Subject<PublicationContext>();\n\n private readonly successfulReconnectionEventsProxy$: Subject<void> =\n new Subject<void>();\n\n public constructor(private readonly elkLoggerService: ElkLoggerService) {}\n\n public async open(url: string, channel: string): Promise<void> {\n if (url === this.url && channel === this.channel) {\n return;\n }\n\n try {\n this.url = url;\n this.channel = channel;\n await this.createConnection(url, channel);\n } catch (error: unknown) {\n // @ts-expect-error error is unknown\n const message = (error?.message || error) as string;\n const unknownError = new WsError(\n `unknown websocket error: ${message}`,\n channel\n );\n\n this.elkLoggerService.handleError(unknownError);\n }\n }\n\n public close(): void {\n this.clearReconnectionTimer();\n\n if (!this.isConnectionOpen) {\n return;\n }\n\n this.connection.disconnect();\n }\n\n public get messages$(): Observable<string> {\n return (\n this.incomingMessages$\n .asObservable()\n // event don't respect type from argument, it's weird\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n .pipe(map((event) => event.data))\n );\n }\n\n public subscribeOnSuccessfulReconnection(next?: () => void): Subscription {\n return this.successfulReconnectionEventsProxy$\n .asObservable()\n .subscribe(next);\n }\n\n private clearReconnectionTimer(): void {\n if (this.reconnectionTimerId) {\n clearTimeout(this.reconnectionTimerId);\n this.reconnectionTimerId = null;\n }\n }\n\n private setFirstReconnectionTimeout(): void {\n const min =\n CentrifugoWebSocketService.timeoutsMs.reconnection -\n CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n const max =\n CentrifugoWebSocketService.timeoutsMs.reconnection +\n CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n this.reconnectionTimeoutMs =\n Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n private incrementReconnectionTimeout(): void {\n this.reconnectionTimeoutMs =\n this.reconnectionTimeoutMs *\n CentrifugoWebSocketService.reconnectionTimeoutIncrementFactor;\n }\n\n private async getCentrifugoClient(): Promise<typeof Centrifuge> {\n return import('centrifuge').then((module) => module.Centrifuge);\n }\n\n private async createConnection(\n url?: string,\n channel?: string\n ): Promise<void> {\n if (this.isConnectionOpen || this.isConnecting) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const CentrifugeClient = await this.getCentrifugoClient();\n\n const websocketUrl = url ?? this.url;\n const websocketChannel = channel ?? this.channel;\n\n this.connection = new CentrifugeClient(websocketUrl, {\n debug: true,\n maxReconnectDelay: 1500,\n maxServerPingDelay: 1000,\n });\n\n return new Promise<void>((resolve, reject) => {\n this.connection\n .on('connecting', () => {\n this.isConnecting = true;\n })\n .on('connected', () => {\n this.onConnect();\n resolve();\n })\n .on('disconnected', (ctx) => {\n this.onDisconnect(ctx, websocketChannel);\n reject();\n })\n .on('error', (ctx) => {\n const message = `code ${ctx.error.code} - ${ctx.error.message}`;\n\n this.elkLoggerService.log(\n `connection error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n })\n .connect();\n\n this.subscription = this.connection.newSubscription(\n websocketChannel,\n this.getSubscriptionOptions(websocketChannel)\n );\n\n this.subscription\n .on('subscribed', (ctx) => {\n this.subscriptionPosition = ctx.streamPosition;\n this.prevSubscribedChannel = websocketChannel;\n })\n .on('publication', (ctx) => {\n const message = ctx.data as string;\n\n this.elkLoggerService.log(\n `websocket message received: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n\n this.incomingMessages$.next(ctx);\n })\n .on('error', (ctx) => {\n const message = `code ${ctx.error.code} - ${ctx.error.message}`;\n\n this.elkLoggerService.log(\n `subscription error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n })\n .subscribe();\n });\n }\n\n private onConnect(): void {\n clearTimeout(this.openConnectionTimerId);\n this.isConnecting = false;\n this.isConnectionOpen = true;\n }\n\n private onDisconnect(\n ctx: DisconnectedContext,\n websocketChannel: string\n ): void {\n this.isConnecting = false;\n this.isConnectionOpen = false;\n\n /* If connection error, cause any connection error isn't 0 */\n if (ctx.code !== 0) {\n const message = `code ${ctx.code} - ${ctx.reason}`;\n\n this.elkLoggerService.log(\n `disconnected error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n\n (async () => {\n await this.waitWhileNotReconnect();\n })();\n }\n }\n\n private async reconnect(): Promise<boolean> {\n this.clearReconnectionTimer();\n\n return new Promise((resolve) => {\n this.reconnectionTimerId = setTimeout(() => {\n this.createConnection()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n this.incrementReconnectionTimeout();\n }, this.reconnectionTimeoutMs);\n });\n }\n\n private async waitWhileNotReconnect(): Promise<void> {\n this.clearReconnectionTimer();\n this.setFirstReconnectionTimeout();\n\n let isConnected = false;\n\n const beforeTimer = performance.now();\n\n while (!isConnected) {\n isConnected = await this.reconnect();\n }\n\n const afterTimer = performance.now();\n\n const timerDuration = afterTimer - beforeTimer;\n\n this.elkLoggerService.log(\n `fallback to reconnection timer: duration ${timerDuration}ms`,\n [ErrorTags.WS],\n {\n channel: this.channel,\n }\n );\n\n this.successfulReconnectionEventsProxy$.next();\n }\n\n private getSubscriptionOptions(\n websocketChannel: string\n ): Partial<SubscriptionOptions> {\n const options: Partial<SubscriptionOptions> = {\n recoverable: true,\n };\n\n if (\n websocketChannel === this.prevSubscribedChannel &&\n this.subscriptionPosition\n ) {\n options.since = this.subscriptionPosition;\n }\n\n return options;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NchanWebSocketService } from './nchan-web-socket.service';\nimport { CentrifugoWebSocketService } from './centrifugo-web-socket.service';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n// @todo: remove this factory and switch to centrifugo client after centrifugo issues resolved\n@Injectable({\n providedIn: 'root',\n})\nexport class WebSocketFactory {\n public constructor(\n private readonly nchanWebSocket: NchanWebSocketService,\n private readonly centrifugoWebSocket: CentrifugoWebSocketService\n ) {}\n\n public createWebSocketClient(\n url: string,\n clientType: WebSocketClientType\n ): WebSocketClient {\n if (clientType === WebSocketClientType.centrifugo) {\n return this.centrifugoWebSocket;\n }\n\n this.nchanWebSocket.url = url;\n\n return this.nchanWebSocket;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { WebSocketFactory } from '../../../web-socket/web-socket.factory';\nimport { WebSocketClient } from '../../../web-socket/web-socket.interface';\nimport { WebSocketClientType } from '../../../web-socket/web-socket-client-type.enum';\nimport { WebSocketStatus } from './websocket-status.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WebsocketStatusService {\n private webSocketSubscription: Subscription | undefined;\n private webSocketReconnectionSubscription: Subscription | undefined;\n private readonly reinsuranceCheckStatus: {\n timeoutId: ReturnType<typeof setTimeout> | null;\n readonly timeoutMs: number;\n } = {\n timeoutId: null,\n timeoutMs: 180000,\n };\n\n private readonly needCheckStatusSubject = new Subject<void>();\n private readonly statusChangedSubject = new Subject<void>();\n\n private webSocketClient: WebSocketClient | null = null;\n\n public get needCheckStatus$(): Observable<void> {\n return this.needCheckStatusSubject.asObservable();\n }\n public get statusChanged$(): Observable<void> {\n return this.statusChangedSubject.asObservable();\n }\n\n public constructor(private readonly webSocketFactory: WebSocketFactory) {}\n\n public async checkStatusWithWebSocket(\n webSocketUrl: string,\n webSocketChannelName: string,\n webSocketClientType: WebSocketClientType\n ): Promise<void> {\n this.webSocketClient = this.webSocketFactory.createWebSocketClient(\n webSocketUrl,\n webSocketClientType\n );\n\n await this.webSocketClient.open(webSocketUrl, webSocketChannelName);\n\n this.webSocketSubscription?.unsubscribe();\n this.webSocketSubscription = this.webSocketClient.messages$.subscribe(\n (message) => this.statusProcessing(message)\n );\n\n this.webSocketReconnectionSubscription =\n this.webSocketClient.subscribeOnSuccessfulReconnection(() => {\n this.needCheckStatusSubject.next();\n });\n this.needCheckStatusSubject.next();\n this.startReinsuranceCheckTimeout();\n }\n\n public closeWebSocket(): void {\n this.removeSubscription();\n this.webSocketClient?.close();\n this.clearReinsuranceCheckTimeout();\n }\n\n public startReinsuranceCheckTimeout(): void {\n this.clearReinsuranceCheckTimeout();\n this.reinsuranceCheckStatus.timeoutId = setTimeout(() => {\n this.needCheckStatusSubject.next();\n }, this.reinsuranceCheckStatus.timeoutMs);\n }\n\n private clearReinsuranceCheckTimeout(): void {\n if (this.reinsuranceCheckStatus.timeoutId) {\n clearTimeout(this.reinsuranceCheckStatus.timeoutId);\n this.reinsuranceCheckStatus.timeoutId = null;\n }\n }\n\n private statusProcessing(message: string): void {\n if (message === WebSocketStatus.statusChanged) {\n this.statusChangedSubject.next();\n this.closeWebSocket();\n this.clearReinsuranceCheckTimeout();\n }\n if (message === WebSocketStatus.troubledStatus) {\n this.clearReinsuranceCheckTimeout();\n this.closeWebSocket();\n }\n }\n\n private removeSubscription(): void {\n this.webSocketSubscription?.unsubscribe();\n this.webSocketReconnectionSubscription?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { filter, Observable, Subject, takeUntil } from 'rxjs';\nimport { StatusRequestService } from '../status-request/status-request.service';\nimport { CheckStatusService } from '../check-status/check-status.service';\nimport { WebsocketStatusService } from '../websocket-status/websocket-status.service';\nimport { StatusSettings } from '../status-settings.interface';\nimport { StatusEnum } from '../status.enum';\nimport { StatusUpdated } from '../status-updated.interface';\nimport { StatusResponse } from '../status-request/response/status-response.class';\nimport { CheckStatusResponse } from '../check-status/response/check-status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ListenStatusService {\n public isListening = false;\n\n private readonly websocketOpenedSubject = new Subject<StatusSettings>();\n private readonly statusUpdatedSubject = new Subject<StatusUpdated>();\n private readonly statusDoneSubject = new Subject<StatusSettings>();\n private destroy$ = new Subject<void>();\n\n public get websocketOpened$(): Observable<StatusSettings> {\n return this.websocketOpenedSubject.asObservable();\n }\n\n public get statusUpdated$(): Observable<StatusUpdated> {\n return this.statusUpdatedSubject.asObservable();\n }\n\n public constructor(\n private readonly statusService: StatusRequestService,\n private readonly checkStatusService: CheckStatusService,\n private readonly websocketStatusService: WebsocketStatusService\n ) {}\n\n public listen(invoice: number): Observable<StatusSettings> {\n if (this.isListening) {\n this.stopListening();\n }\n\n this.destroy$ = new Subject<void>();\n this.isListening = true;\n\n this.subscribeStatusUpdate(invoice);\n this.subscribeCheckStatusUpdate();\n this.subscribeWebsocketEvent();\n\n this.checkStatusService.setRequestParams(invoice);\n\n return this.statusDoneSubject.asObservable();\n }\n\n public stopListening(): void {\n this.isListening = false;\n this.websocketStatusService.closeWebSocket();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private subscribeStatusUpdate(invoice: number): void {\n this.statusService.response$\n .pipe(\n filter((statusResponse) => {\n return statusResponse?.status?.invoice === Number(invoice);\n }),\n takeUntil(this.destroy$)\n )\n .subscribe((statusResponse: StatusResponse | null) => {\n if (!statusResponse?.status) {\n return;\n }\n\n const statusSettings = {\n statusState: statusResponse.status.statusState,\n isCancelUser: statusResponse.status.isCancelUser,\n needWebSocket: statusResponse.status.needToCheck,\n backUrlSettings: statusResponse.status.backUrlSettings,\n autoRedirect: statusResponse.status.autoRedirect,\n webSocketUrl: statusResponse.status.webSocketUrl,\n webSocketChannelName: statusResponse.status.webSocketChannelName,\n webSocketClientType: statusResponse.status.webSocketClientType,\n };\n\n this.statusUpdatedSubject.next({\n statusResponse: statusResponse,\n statusSettings: statusSettings,\n });\n\n if (statusSettings.needWebSocket) {\n this.openWebsocket(statusSettings);\n return;\n }\n\n this.stopListening();\n this.statusDoneSubject.next(statusSettings);\n });\n }\n\n private subscribeCheckStatusUpdate(): void {\n this.checkStatusService.response$\n .pipe(takeUntil(this.destroy$))\n .subscribe((checkStatusResponse: CheckStatusResponse | null) => {\n if (!checkStatusResponse?.status) return;\n\n if (checkStatusResponse.status === StatusEnum.done) {\n this.statusService.request();\n this.websocketStatusService.closeWebSocket();\n return;\n }\n\n if (checkStatusResponse.final === false) {\n this.websocketStatusService.startReinsuranceCheckTimeout();\n return;\n }\n });\n }\n\n private subscribeWebsocketEvent(): void {\n this.websocketStatusService.needCheckStatus$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.checkStatusService.request());\n\n this.websocketStatusService.statusChanged$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.statusService.request());\n }\n\n private openWebsocket(statusSettings: StatusSettings): void {\n void this.websocketStatusService.checkStatusWithWebSocket(\n statusSettings.webSocketUrl,\n statusSettings.webSocketChannelName,\n statusSettings.webSocketClientType\n );\n this.websocketOpenedSubject.next(statusSettings);\n }\n}\n","export enum TitleClass {\n done = 'done',\n cancel = 'cancel',\n cancelUser = 'canceluser',\n}\n","export enum SavePaymentMethodStatus {\n success = 'success',\n failed = 'failed',\n}\n","import { AppError } from '../exceptions-handling/errors/app-error.class';\n\nexport class XpsResponseError extends AppError {\n public constructor(message?: string) {\n super('XPS response failed' + (message ? `: \"${message}\".` : '.'));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { lastValueFrom, Observable, Subject } from 'rxjs';\nimport { HttpHeaders } from '@angular/common/http';\nimport { tap } from 'rxjs/operators';\nimport { SavedPaymentAccountChanges } from './saved-payment-account-changes.interface';\nimport { SettingsService } from '../../../../settings/settings.service';\nimport { SecureApiClient } from '../../../../http/secure-api/secure-api.service';\nimport { XpsResponseError } from '../../../xps-response.error';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SavedPaymentAccountChangesService {\n private readonly apiRoute = 'savedmethods/newaccountinfo';\n private readonly response = new Subject<SavedPaymentAccountChanges | null>();\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public get response$(): Observable<SavedPaymentAccountChanges | null> {\n return this.response.asObservable();\n }\n\n public async request(invoice: number): Promise<SavedPaymentAccountChanges> {\n const requestParameters = {\n access_token: this.settingsService.token,\n invoice_id: invoice,\n };\n\n return lastValueFrom(\n this.secureApi\n .post<SavedPaymentAccountChanges>(\n this.apiRoute,\n new URLSearchParams(\n requestParameters as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n tap((value: SavedPaymentAccountChanges) => {\n this.response.next(value);\n })\n )\n ).catch((error: Error) => {\n throw new XpsResponseError(error.message);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { StatusRequestParams } from '../status-request/status-request-params.interface';\nimport { Status } from '../status.interface';\nimport { firstValueFrom, Subscription } from 'rxjs';\nimport { StatusRequestService } from '../status-request/status-request.service';\nimport { StatusUpdatedActionCreator } from '../../actions/status-updated/status-updated.action.class';\nimport { ListenStatusService } from '../listen-status/listen-status.service';\nimport { SavedPaymentAccountChanges } from './api/saved-payment-account-changes.interface';\nimport { SavedPaymentAccountChangesService } from './api/saved-payment-account-changes.service';\nimport { TitleClass } from '../title-class.enum';\nimport { NextActionService } from '../../actions/next-action.service';\nimport { StatusEnum } from '../status.enum';\nimport { SavePaymentMethodStatus } from './save-payment-method-status.enum';\nimport { CheckStatusService } from '../check-status/check-status.service';\nimport { CheckStatusResponse } from '../check-status/response/check-status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SavePaymentMethodStatusService {\n private savePaymentMethodStatus?: SavePaymentMethodStatus;\n private listenStatusSubscription!: Subscription;\n private statusChecked = false;\n private accountData?: SavedPaymentAccountChanges;\n private status?: Status | null;\n\n public constructor(\n private readonly statusRequestService: StatusRequestService,\n private readonly listenStatusService: ListenStatusService,\n private readonly savedPaymentAccountChangesService: SavedPaymentAccountChangesService,\n private readonly nextActionService: NextActionService,\n private readonly checkStatusService: CheckStatusService,\n private readonly statusUpdatedActionCreator: StatusUpdatedActionCreator\n ) {}\n\n public async getStatus(params: StatusRequestParams): Promise<Status> {\n if (!this.accountData || !this.status) {\n this.statusRequestService.setRequestParams(params);\n this.statusRequestService.request();\n\n const statusResponse = await firstValueFrom(\n this.statusRequestService.response$\n );\n\n this.status = statusResponse.status;\n this.status.isSavePaymentAccount = true;\n\n this.accountData = await this.getPaymentAccountData(params.invoice);\n }\n\n if (\n this.savingFailedOrCancel(this.status) ||\n (this.accountData && this.savingSuccessful(this.accountData, this.status))\n ) {\n return this.status;\n }\n\n if (!this.statusChecked) {\n this.checkStatus(params);\n this.status.statusState = StatusEnum.processing;\n return this.status;\n }\n\n this.statusChecked = false;\n this.status.statusState = StatusEnum.error;\n const outStatus = { ...this.status };\n this.status = null;\n return outStatus;\n }\n\n private checkStatus(params: StatusRequestParams): void {\n if (!this.statusChecked) {\n this.statusChecked = true;\n }\n this.startWaitingStatusUpdates(params.invoice);\n this.statusRequestService.request();\n }\n\n private savingFailedOrCancel(status?: Status | null): boolean {\n return (\n status?.titleClass === TitleClass.cancel ||\n status?.titleClass === TitleClass.cancelUser\n );\n }\n\n private savingSuccessful(\n accountData: SavedPaymentAccountChanges,\n status?: Status | null,\n checkStatus?: CheckStatusResponse\n ): boolean {\n return !!(\n status?.titleClass === TitleClass.done &&\n (accountData?.new_account || checkStatus?.isPaymentAccountAttached)\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n private getPaymentAccountData(\n invoice: number\n ): Promise<SavedPaymentAccountChanges> {\n return this.savedPaymentAccountChangesService.request(invoice);\n }\n\n private startWaitingStatusUpdates(invoice: number): void {\n if (this.listenStatusSubscription) {\n this.listenStatusSubscription.unsubscribe();\n this.listenStatusService.stopListening();\n }\n\n this.listenStatusService.listen(invoice);\n\n this.listenStatusSubscription =\n this.listenStatusService.statusUpdated$.subscribe(\n ({ statusResponse }) => {\n if (!statusResponse?.status) {\n return;\n }\n this.status = statusResponse.status;\n\n void firstValueFrom(this.checkStatusService.response$).then(\n (checkStatusResponse) => {\n if (checkStatusResponse?.final && statusResponse.status) {\n this.loadNewPaymentAccountData(\n statusResponse.status,\n checkStatusResponse\n );\n }\n }\n );\n }\n );\n }\n\n private loadNewPaymentAccountData(\n status: Status,\n checkStatus: CheckStatusResponse\n ): void {\n if (!status.invoice) {\n return;\n }\n void this.getPaymentAccountData(status.invoice).then(\n (accountChanges: SavedPaymentAccountChanges) => {\n if (accountChanges) {\n this.accountData = accountChanges;\n this.handleSavingStatus(status, accountChanges, checkStatus);\n }\n }\n );\n }\n\n private handleSavingStatus(\n status: Status,\n account: SavedPaymentAccountChanges,\n checkStatus: CheckStatusResponse\n ): void {\n if (this.savingSuccessful(account, status, checkStatus)) {\n this.savePaymentMethodStatus = SavePaymentMethodStatus.success;\n } else {\n this.savePaymentMethodStatus = SavePaymentMethodStatus.failed;\n }\n\n this.listenStatusService.stopListening();\n this.listenStatusSubscription.unsubscribe();\n\n const isSavePaymentMethod = true;\n\n this.nextActionService.emitFlowUpdates(\n this.statusUpdatedActionCreator.getActionData({\n statusResponse: status,\n isSavePaymentMethodMode: isSavePaymentMethod,\n savePaymentMethodStatus: this.savePaymentMethodStatus,\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { firstValueFrom, skip } from 'rxjs';\nimport { StatusRequestService } from './status-request/status-request.service';\nimport { StatusRequestParams } from './status-request/status-request-params.interface';\nimport { ListenStatusService } from './listen-status/listen-status.service';\nimport { Status } from './status.interface';\nimport { NextActionService } from '../actions/next-action.service';\nimport { StatusUpdatedActionCreator } from '../actions/status-updated/status-updated.action.class';\nimport { UrlService } from '../../url/url.service';\nimport { requiredStatusSearchParams } from './status-request/required-status-search-params.const';\nimport { statusSearchParamsMap } from './status-request/status-search-params.map';\nimport { FinanceDetailsService } from '../finance-details/finance-details.service';\nimport { SavePaymentMethodStatusService } from './save-payment-method-status/save-payment-method-status.service';\nimport { XpsBoolean } from '../../xps-boolean.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusService {\n public constructor(\n private readonly urlService: UrlService,\n private readonly statusRequestService: StatusRequestService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly listenStatusService: ListenStatusService,\n private readonly nextActionService: NextActionService,\n private readonly savePaymentMethodStatusService: SavePaymentMethodStatusService,\n private readonly statusUpdatedActionCreator: StatusUpdatedActionCreator\n ) {}\n\n public async getStatus(params: StatusRequestParams): Promise<Status> {\n const isSavePaymentMethodMode =\n params?.isSavePaymentAccount === XpsBoolean.true;\n if (isSavePaymentMethodMode) {\n return this.savePaymentMethodStatusService.getStatus(params);\n }\n\n this.statusRequestService.setRequestParams(params);\n\n this.startWaitingStatusUpdates(params.invoice);\n\n this.statusRequestService.request();\n\n const statusResponse = await firstValueFrom(\n this.statusRequestService.response$\n );\n\n this.financeDetailsService.emitWithStatus(statusResponse.status);\n\n return statusResponse.status;\n }\n\n public async getStatusWithUrlSearchParams(url?: string): Promise<Status> {\n const searchParams = this.getRequestParamsFromUrl(url);\n\n if (!searchParams) {\n throw new Error('No required search params to get status');\n }\n\n return this.getStatus(searchParams);\n }\n\n private getRequestParamsFromUrl(url?: string): StatusRequestParams | null {\n const searchParams = this.urlService.getSearchParams(url ?? '');\n const keys = new Set(Object.keys(searchParams));\n\n if (\n requiredStatusSearchParams.some((requiredKey) => !keys.has(requiredKey))\n ) {\n return null;\n }\n\n const params: { [key: string]: string | number } = {};\n statusSearchParamsMap.forEach((settings, key) => {\n params[settings.key] = settings.converter(searchParams[key]);\n });\n\n return params as unknown as StatusRequestParams;\n }\n\n private startWaitingStatusUpdates(invoice: number): void {\n this.listenStatusService.listen(invoice);\n\n this.listenStatusService.statusUpdated$\n .pipe(skip(1))\n .subscribe(({ statusResponse }) => {\n this.financeDetailsService.emitWithStatus(statusResponse.status);\n\n this.nextActionService.emitFlowUpdates(\n this.statusUpdatedActionCreator.getActionData({ statusResponse })\n );\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { CreditCardState } from './credit-card-state.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CreditCardStateService extends EmitDataService<CreditCardState> {}\n","export enum ThreeDsStatusWebSocketTypes {\n status3DS_changed = 'status3DS_changed',\n}\n","export enum ThreeDsStatusTypes {\n completed = 'completed',\n challenge = 'challenge',\n collectDfp = 'collect_dfp',\n}\n","export class StatusThreeDsRequest {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly access_token: string;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly threeDSTrXid: string;\n\n public constructor(token: string, threeDsId: string) {\n this.access_token = token;\n this.threeDSTrXid = threeDsId;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusThreeDsRequest } from './status-three-ds-request.class';\n\nexport type StatusThreeDsRequestParameters = ConstructorParameters<\n typeof StatusThreeDsRequest\n>;\n\nexport type StatusThreeDsRequestFactory = (\n ...args: StatusThreeDsRequestParameters\n) => StatusThreeDsRequest;\n\nexport const statusThreeDsRequestFactoryToken: InjectionToken<StatusThreeDsRequestFactory> =\n new InjectionToken<StatusThreeDsRequestFactory>('StatusThreeDsRequest');\n\nexport const statusThreeDsRequestFactoryProvider: ValueProvider = {\n provide: statusThreeDsRequestFactoryToken,\n useValue: (...args: StatusThreeDsRequestParameters) =>\n new StatusThreeDsRequest(...args),\n};\n","import { ThreeDsCheckoutForm } from '../three-ds-checkout-form.interface';\nimport { Properties } from '../../../../../properties.type';\n\nexport class StatusThreeDsResponse {\n public readonly status: string;\n public readonly checkoutForm?: ThreeDsCheckoutForm;\n\n public constructor(params: Properties<StatusThreeDsResponse>) {\n this.status = params.status;\n this.checkoutForm = params.checkoutForm;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusThreeDsResponse } from './status-three-ds-response.class';\n\nexport type StatusThreeDsResponseParameters = ConstructorParameters<\n typeof StatusThreeDsResponse\n>;\n\nexport type StatusThreeDsResponseFactory = (\n ...args: StatusThreeDsResponseParameters\n) => StatusThreeDsResponse;\n\nexport const statusThreeDsResponseFactoryToken: InjectionToken<StatusThreeDsResponseFactory> =\n new InjectionToken<StatusThreeDsResponseFactory>('StatusThreeDsResponse');\n\nexport const statusThreeDsResponseFactoryProvider: ValueProvider = {\n provide: statusThreeDsResponseFactoryToken,\n useValue: (...args: StatusThreeDsResponseParameters) =>\n new StatusThreeDsResponse(...args),\n};\n","import { lastValueFrom, Observable, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SecureApiClient } from '../../../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../../../settings/settings.service';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\nimport { XpsResponseError } from '../../../xps-response.error';\nimport { ThreeDsForm } from '../../three-ds-form.interface';\nimport { StatusThreeDsResponseApi } from './status-three-ds-response.interface';\nimport {\n StatusThreeDsRequestFactory,\n statusThreeDsRequestFactoryToken,\n} from './request/status-three-ds-request.token';\nimport {\n StatusThreeDsResponseFactory,\n statusThreeDsResponseFactoryToken,\n} from './response/status-three-ds-response.token';\nimport { StatusThreeDsResponse } from './response/status-three-ds-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusThreeDsService {\n public get response$(): Observable<StatusThreeDsResponse | null> {\n return this.response.asObservable();\n }\n\n private readonly apiRoute = 'secure3d/check';\n private readonly response = new Subject<StatusThreeDsResponse | null>();\n\n public constructor(\n private readonly secureApi: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(statusThreeDsRequestFactoryToken)\n private readonly requestFactory: StatusThreeDsRequestFactory,\n @Inject(statusThreeDsResponseFactoryToken)\n private readonly responseFactory: StatusThreeDsResponseFactory\n ) {}\n\n public request(data: ThreeDsForm): void {\n const token = this.settingsService.token;\n\n if (!token) {\n throw new TokenError();\n }\n const requestParams = this.requestFactory(token, data.threeDSTrXid);\n\n void lastValueFrom(\n this.secureApi\n .post<StatusThreeDsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n map((response) => {\n const statusResponse = this.responseFactory({\n status: response.secure3d.status,\n checkoutForm: response.secure3d.checkout_form,\n });\n\n this.response.next(statusResponse);\n })\n )\n ).catch((error: Error) => {\n throw new XpsResponseError(error.message);\n });\n }\n}\n","export class NotifyDfpStatusRequest {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly access_token: string;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly threeDSTrXid: string;\n\n public readonly secure3dCompind: 'Y' | 'N';\n\n public constructor(params: {\n token: string;\n threeDsTrXid: string;\n isCompind: boolean;\n }) {\n this.access_token = params.token;\n this.threeDSTrXid = params.threeDsTrXid;\n this.secure3dCompind = params.isCompind ? 'Y' : 'N';\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { NotifyDfpStatusRequest } from './notify-dfp-status-request.class';\n\nexport type NotifyDfpStatusRequestParameters = ConstructorParameters<\n typeof NotifyDfpStatusRequest\n>;\n\nexport type NotifyDfpStatusRequestFactory = (\n ...args: NotifyDfpStatusRequestParameters\n) => NotifyDfpStatusRequest;\n\nexport const notifyDfpStatusRequestFactoryToken: InjectionToken<NotifyDfpStatusRequestFactory> =\n new InjectionToken<NotifyDfpStatusRequestFactory>('NotifyDfpStatusRequest');\n\nexport const notifyDfpStatusRequestFactoryProvider: ValueProvider = {\n provide: notifyDfpStatusRequestFactoryToken,\n useValue: (...args: NotifyDfpStatusRequestParameters) =>\n new NotifyDfpStatusRequest(...args),\n};\n","import { lastValueFrom } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SecureApiClient } from '../../../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../../../settings/settings.service';\nimport {\n NotifyDfpStatusRequestFactory,\n notifyDfpStatusRequestFactoryToken,\n} from './request/notify-dfp-status-request.token';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\nimport { XpsResponseError } from '../../../xps-response.error';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotifyDfpStatusService {\n private readonly apiRouteComplete = 'secure3d/notify';\n\n public constructor(\n private readonly secureApi: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(notifyDfpStatusRequestFactoryToken)\n private readonly requestFactory: NotifyDfpStatusRequestFactory\n ) {}\n\n /*\n * isCompind is a flag of dfp expired state\n */\n public request(threeDsId: string, isCompind: boolean): void {\n const token = this.settingsService.token;\n\n if (!token) {\n throw new TokenError();\n }\n\n const requestParams = this.requestFactory({\n token: token,\n threeDsTrXid: threeDsId,\n isCompind,\n });\n\n lastValueFrom(\n this.secureApi.post(\n this.apiRouteComplete,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n ).catch((error: Error) => {\n throw new XpsResponseError(error.message);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { windowToken } from '../../../window.token';\nimport { ExtendedWindow } from '../../../extended-window.interface';\nimport { NotifyDfpStatusService } from '../api/notify-dfp-status/notify-dfp-status.service';\nimport { ThreeDsForm } from '../three-ds-form.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DfpCollectService {\n private readonly iframeName = 'iframeDFP';\n private readonly formName = 'formDFP';\n\n public constructor(\n @Inject(windowToken)\n private readonly window: ExtendedWindow,\n private readonly notifyDfpStatusService: NotifyDfpStatusService\n ) {}\n\n public collectDfpStatus(threeDsForm: ThreeDsForm): void {\n if (threeDsForm.waitCallback) {\n this.openIframeWithPostRequest(threeDsForm, false);\n } else {\n this.openIframeWithPostRequest(threeDsForm, true);\n }\n }\n\n /*\n * This method create invisible iframe with required params and after that it submit form in iframe\n * */\n private openIframeWithPostRequest(\n threeDsForm: ThreeDsForm,\n isNeedNotifyAfterLoad: boolean\n ): void {\n const iFrameElement = this.window.document.getElementById(this.iframeName);\n if (!iFrameElement) {\n this.createIframe(isNeedNotifyAfterLoad, threeDsForm.threeDSTrXid);\n this.postFormToIframe(\n threeDsForm.threeDSMethod,\n threeDsForm.threeDSMethodData\n );\n }\n }\n\n /*\n * isNeedNotifyAfterLoad is need to send notification of dft to server\n * */\n private createIframe(\n isNeedNotifyAfterLoad: boolean,\n threeDsTrXid: string\n ): void {\n const attributes: { [key: string]: string } = {\n name: this.iframeName,\n id: this.iframeName,\n src: 'javascript:false',\n style: 'display:none',\n };\n\n const iFrame = this.window.document.createElement('iframe');\n this.setAttributes(iFrame, attributes);\n this.window.document.body.appendChild(iFrame);\n\n if (isNeedNotifyAfterLoad) {\n (\n this.window.document.getElementById(\n this.iframeName\n ) as HTMLIFrameElement\n ).onload = () => {\n this.notifyDfpStatusService.request(threeDsTrXid, true);\n };\n }\n }\n\n /*\n * This method will submit form in our iframe. Form will be created, if it's don't exist\n * */\n private postFormToIframe(url: string, threeDsMethod: string): void {\n let form = this.window.document.getElementById(\n this.formName\n ) as HTMLFormElement;\n\n if (!form) {\n form = this.createForm();\n this.window.document.body.appendChild(form);\n }\n\n form.setAttribute('action', url);\n form.setAttribute('target', this.iframeName);\n form.appendChild(this.createInput('threeDSMethodData', threeDsMethod));\n\n form.submit();\n }\n\n /*\n * This method will create invisible form with required params\n */\n private createForm(): HTMLFormElement {\n const form = this.window.document.createElement('form');\n const initAttributes: { [key: string]: string } = {\n name: this.formName,\n id: this.formName,\n style: 'display:none',\n method: 'POST',\n enctype: 'application/x-www-form-urlencoded',\n };\n\n this.setAttributes(form, initAttributes);\n\n return form;\n }\n\n private createInput(name: string, value: string): HTMLInputElement {\n const input = this.window.document.createElement('input');\n input.type = 'hidden';\n input.name = name;\n input.value = value;\n return input;\n }\n\n /*\n * This method will set attributes to form/iframe\n * */\n private setAttributes(\n element: HTMLElement,\n attributes: { [key: string]: string }\n ): void {\n Object.keys(attributes).forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Timer, Timers } from './timer.interface';\nimport { windowToken } from '../../../window.token';\nimport { ExtendedWindow } from '../../../extended-window.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReinsuranceCheckService {\n private timers: Timers = {};\n\n public constructor(\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public addTimer(timer: Timer): void {\n if (!timer) {\n return;\n }\n\n this.removeTimer(timer.id);\n\n this.timers[timer.id] = timer;\n\n const timerInStorage = this.timers[timer.id] as unknown as Timer;\n\n this.window.setTimeout(() => {\n timerInStorage.callback();\n\n this.timers[timer.id] = null;\n }, timerInStorage.timeoutMs);\n }\n\n public removeTimer(id: string): void {\n const timerInStorage = this.timers[id];\n\n if (!timerInStorage) {\n return;\n }\n\n this.window.clearTimeout(timerInStorage.timeoutRef);\n this.timers[id] = null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { WebSocketFactory } from '../../../web-socket/web-socket.factory';\nimport { WebSocketClient } from '../../../web-socket/web-socket.interface';\nimport { StatusThreeDsService } from '../api/status-three-ds/status-three-ds.service';\nimport { NotifyDfpStatusService } from '../api/notify-dfp-status/notify-dfp-status.service';\nimport { ThreeDsStatusWebSocketTypes } from '../three-ds-status-websocket-types.enum';\nimport { ThreeDsForm } from '../three-ds-form.interface';\nimport { ThreeDsStatusTypes } from '../api/status-three-ds/status-types.enum';\nimport { DfpCollectService } from '../dfp-collect/dfp-collect.service';\nimport { ReinsuranceCheckService } from '../reinsurance-check/reinsurance-check.service';\nimport { StatusUpdate } from './status-update.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThreeDs20Service {\n public get statusUpdates$(): Observable<StatusUpdate> {\n return this.statusUpdates.asObservable();\n }\n\n private webSocketSubscription: Subscription | undefined;\n private webSocketReconnectionSubscription: Subscription | undefined;\n private webSocketClient: WebSocketClient | null = null;\n\n private readonly statusUpdates = new Subject<StatusUpdate>();\n\n private statusRequestSubscription: Subscription | null = null;\n\n private readonly notifyDfpTimerId = 'notify-dfp';\n private readonly notifyDfpTimeoutMs = 10000;\n\n private readonly statusThreeDsTimerId = 'status-three-ds';\n private readonly statusThreeDsTimeoutMs = 180000;\n\n public constructor(\n private readonly statusThreeDsService: StatusThreeDsService,\n private readonly notifyDfpStatusService: NotifyDfpStatusService,\n private readonly webSocketFactory: WebSocketFactory,\n private readonly dfpCollectService: DfpCollectService,\n private readonly reinsuranceCheckService: ReinsuranceCheckService\n ) {}\n\n public async checkThreeDs20(threeDsForm: ThreeDsForm | null): Promise<void> {\n if (!threeDsForm) {\n return;\n }\n\n this.reinsuranceCheckService.addTimer({\n id: this.notifyDfpTimerId,\n timeoutMs: this.notifyDfpTimeoutMs,\n callback: () => {\n this.notifyDfpStatusService.request(threeDsForm.threeDSTrXid, false);\n },\n });\n\n this.webSocketClient = this.webSocketFactory.createWebSocketClient(\n threeDsForm.webSocketChannelUrl,\n threeDsForm.webSocketClientType\n );\n\n await this.webSocketClient.open(\n threeDsForm.webSocketChannelUrl,\n threeDsForm.webSocketClientType\n );\n this.webSocketSubscription?.unsubscribe();\n\n this.webSocketSubscription = this.webSocketClient.messages$.subscribe(\n (message) => {\n if (message !== ThreeDsStatusWebSocketTypes.status3DS_changed) {\n return;\n }\n\n this.statusThreeDsService.request(threeDsForm);\n }\n );\n\n this.webSocketReconnectionSubscription?.unsubscribe();\n this.webSocketReconnectionSubscription =\n this.webSocketClient.subscribeOnSuccessfulReconnection(() => {\n this.statusThreeDsService.request(threeDsForm);\n });\n\n this.handleThreeDsUpdates(threeDsForm);\n this.statusThreeDsService.request(threeDsForm);\n\n this.reinsuranceCheckService.addTimer({\n id: this.statusThreeDsTimerId,\n timeoutMs: this.statusThreeDsTimeoutMs,\n callback: () => {\n this.statusThreeDsService.request(threeDsForm);\n },\n });\n }\n\n private handleThreeDsUpdates(threeDsForm: ThreeDsForm): void {\n this.statusRequestSubscription?.unsubscribe();\n this.statusRequestSubscription =\n this.statusThreeDsService.response$.subscribe((threeDsStatus) => {\n if (!threeDsStatus) {\n return;\n }\n\n if (threeDsStatus.status === ThreeDsStatusTypes.completed) {\n this.stopReinsuranceMethods();\n this.statusUpdates.next({\n type: 'complete',\n data: {\n statusUrl: threeDsForm.statusUrl,\n },\n });\n return;\n }\n\n if (\n threeDsStatus.status === ThreeDsStatusTypes.challenge &&\n threeDsStatus.checkoutForm\n ) {\n this.stopReinsuranceMethods();\n this.statusUpdates.next({\n type: 'challenge',\n data: threeDsStatus.checkoutForm,\n });\n }\n\n if (threeDsStatus.status === ThreeDsStatusTypes.collectDfp) {\n this.dfpCollectService.collectDfpStatus(threeDsForm);\n }\n });\n }\n\n private stopReinsuranceMethods(): void {\n this.reinsuranceCheckService.removeTimer(this.notifyDfpTimerId);\n this.reinsuranceCheckService.removeTimer(this.statusThreeDsTimerId);\n this.webSocketClient?.close();\n this.statusRequestSubscription?.unsubscribe();\n }\n}\n","import { Subscription } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ThreeDs20Service } from './three-ds-20/three-ds20.service';\nimport { ThreeDsActionCreator } from '../actions/three-ds/three-ds.action.class';\nimport { CheckStatusActionCreator } from '../actions/check-status/check-status.action.class';\nimport { SubmitResponse } from '../submit/response/submit-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThreeDsService {\n private statusSubscription: Subscription | null = null;\n\n public constructor(\n private readonly threeDs20Service: ThreeDs20Service,\n private readonly nextActionService: NextActionService,\n private readonly checkStatusActionCreator: CheckStatusActionCreator,\n private readonly threeDsActionCreator: ThreeDsActionCreator\n ) {}\n\n public checkThreeDs(params: SubmitResponse): void {\n /*\n At this moment we support only 3ds 2.0 version.\n 3ds 1.0 currently working by our redirect logic (Redirect NextAction).\n If in future we will get new version of 3ds, we should add 3ds determination logic to this service\n */\n void this.threeDs20Service.checkThreeDs20(params.parameters.threeDSForm);\n\n this.statusSubscription?.unsubscribe();\n this.statusSubscription = this.threeDs20Service.statusUpdates$.subscribe(\n (statusUpdate) => {\n if (statusUpdate.type === 'complete') {\n return this.nextActionService.emitFlowUpdates(\n this.checkStatusActionCreator.getActionData()\n );\n }\n\n this.nextActionService.emitFlowUpdates(\n this.threeDsActionCreator.getActionData(statusUpdate)\n );\n }\n );\n }\n\n public stopChecking(): void {\n this.statusSubscription?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { XpsMessage } from '../xps-message.interface';\nimport { UnescapeHtmlPipe } from '../../../shared/pipes/unescape-html/unescape-html.pipe';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormMessagesService extends EmitDataService<string[]> {\n public constructor(private readonly unescapeHtmlPipe: UnescapeHtmlPipe) {\n super();\n }\n public emitOnResponse(messages?: XpsMessage[]): void {\n if (!messages) {\n return;\n }\n const mapInfoMessages = (infoMessage: XpsMessage): string =>\n this.unescapeHtmlPipe.transform(infoMessage.message);\n\n super.emit(messages.map(mapInfoMessages));\n }\n}\n","import { BehaviorSubject, Observable, Subject, filter, takeUntil } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { SubmitResponse } from './submit/response/submit-response.class';\nimport { FormService } from './form/form.service';\nimport { InitializeResponse } from './initialize/response/initialize-response.class';\nimport { InitializeService } from './initialize/initialize.service';\nimport { Status } from './status/status.interface';\nimport { SubmitService } from './submit/submit.service';\nimport { SyncService } from './sync/sync.service';\nimport { StatusService } from './status/status.service';\nimport { NextActionService } from './actions/next-action.service';\nimport { ControlConfig } from './form/controls/control-config';\nimport { ControlConfigService } from './form/controls/control-config.service';\nimport { FinanceDetails } from './finance-details/finance-details.interface';\nimport { FinanceDetailsService } from './finance-details/finance-details.service';\nimport { NextAction } from './actions/next-action.interface';\nimport { XpsSummary } from './xps-summary.interface';\nimport { Field } from './field.interface';\nimport { PaymentConfig } from './payment-config.interface';\nimport { isSubmitResponse } from './submit/response/is-submit-response.function';\nimport { XpsBoolean } from '../xps-boolean.enum';\nimport { StatusRequestParams } from './status/status-request/status-request-params.interface';\nimport { ValidationErrors } from './form/validators/validation-errors.interface';\nimport { InputEventName } from './form/input-event.enum';\nimport { FormFieldsStatus } from './form/form-fields-status.interface';\nimport { ThreeDsService } from './three-ds/three-ds.service';\nimport { XpsCommand } from './xps-comand.enum';\nimport { CreditCardStateService } from './credit-card-state/credit-card-state.service';\nimport { FieldNames } from './field-names.enum';\nimport { FormState } from './form/form-state.interface';\nimport { FormMessagesService } from './form-messages/form-messages.service';\nimport { XpsMessage } from './xps-message.interface';\nimport { SettingsService } from '../settings/settings.service';\nimport { CountryService } from '../country/country.service';\nimport { SdkPaymentSystemsInitialData } from '../sdk-payment-systems/sdk-payment-systems-initial-data.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentService {\n public form: UntypedFormGroup | null = null;\n\n public get formFieldsStatus$(): Observable<FormFieldsStatus> {\n return this.formFieldsStatusSubject.asObservable().pipe(filter(Boolean));\n }\n\n private data: InitializeResponse | SubmitResponse | null = null;\n private financeDetails: FinanceDetails | null = null;\n private focusFieldName: string | null = null;\n private fields: Field[] = [];\n private config!: PaymentConfig;\n\n private destroy$ = new Subject<void>();\n private formDestroy$ = new Subject<void>();\n private readonly formFieldsStatusSubject =\n new BehaviorSubject<FormFieldsStatus | null>(null);\n\n private isSavingMethodMode = false;\n\n public constructor(\n private readonly initializeService: InitializeService,\n private readonly submitService: SubmitService,\n private readonly syncService: SyncService,\n private readonly formService: FormService,\n private readonly statusService: StatusService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly creditCardStateService: CreditCardStateService,\n private readonly nextActionService: NextActionService,\n private readonly controlConfigService: ControlConfigService,\n private readonly threeDsService: ThreeDsService,\n private readonly formMessagesService: FormMessagesService,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService\n ) {}\n\n public async initialize(config: PaymentConfig): Promise<Field[]> {\n this.destroy$ = new Subject<void>();\n this.formDestroy$ = new Subject<void>();\n\n this.listenFinanceDetails();\n\n this.config = config;\n this.data = await this.initializeService.request(config);\n\n this.fields = this.getFields();\n this.form = this.formService.createForm(this.fields);\n\n this.updatePidConfig();\n this.setupSyncService(this.form, this.fields);\n this.listenFormStatusChanges(this.form);\n\n this.emitFinanceDetails(this.data.paymentForm?.summary);\n this.emitFormFieldsStatus(this.form);\n this.emitFormMessages(this.data.paymentForm?.messages);\n\n return this.fields.filter(\n (field: Field) => field?.isVisible === XpsBoolean.true\n );\n }\n\n public async submit(): Promise<NextAction | null | void> {\n if (!this.form) {\n throw new Error('form is empty!');\n }\n\n if (!this.form.valid) {\n this.form.markAllAsTouched();\n this.emitFormFieldsStatus(this.form);\n return;\n }\n\n this.isSavingMethodMode = this.fields.some(\n ({ name, value }) =>\n name === 'savePsAccountOnly' && value === XpsBoolean.true\n );\n const submitResponse = await this.submitService.request(\n this.fields,\n this.form\n );\n\n this.data = submitResponse;\n\n if (!this.isSavingMethodMode) {\n this.emitFinanceDetails(submitResponse.summary);\n }\n this.emitFormMessages(submitResponse.messages);\n\n // Handle 3ds flow\n if (submitResponse.currentCommand === XpsCommand.create) {\n this.runThreeDs();\n return;\n }\n\n this.fields = this.getFields();\n this.form = this.formService.createForm(this.fields);\n\n this.syncService.setup(this.form, this.fields);\n\n return this.nextActionService.getNextAction(submitResponse);\n }\n\n public getFields(): Field[] {\n if (this.data instanceof SubmitResponse) {\n return this.data.fields ?? [];\n }\n\n return this.data?.paymentForm?.fields ?? [];\n }\n\n public getInitialDataForSdkPaymentSystems(): SdkPaymentSystemsInitialData {\n if (!isSubmitResponse(this.data)) {\n throw new Error('Should submit form first');\n }\n\n return {\n data: this.data.parameters.checkout.data.data,\n sandbox: this.settingsService.isSandboxMode()\n ? XpsBoolean.true\n : XpsBoolean.false,\n country: this.countryService.getCountry(),\n };\n }\n\n public getPid(): number | null {\n if (this.data instanceof SubmitResponse) {\n return (\n Number(\n this.data.fields.find((field) => field.name === 'fix_pid')?.value\n ) || null\n );\n }\n\n if (this.data instanceof InitializeResponse) {\n return (\n Number(\n this.data.paymentForm?.fields.find(\n (field) => field.name === 'fix_pid'\n )?.value\n ) || null\n );\n }\n\n return null;\n }\n\n public async validate(field: Field): Promise<ValidationErrors | null> {\n const syncErrors = this.syncService.getSyncValidationErrors(field);\n\n if (syncErrors) {\n return Promise.resolve(syncErrors);\n }\n\n return this.syncService.validate(field);\n }\n\n public runThreeDs(): void {\n if (!isSubmitResponse(this.data)) {\n throw new Error('Should submit form first');\n }\n\n this.threeDsService.checkThreeDs(this.data);\n }\n\n public getFinanceDetails(): FinanceDetails | null {\n return this.financeDetails;\n }\n\n public updateFieldFormState(fieldName: string, formState: FormState): void {\n if (this.form) {\n this.formService.updateFieldFormState(\n this.form,\n this.fields,\n fieldName,\n formState\n );\n }\n }\n\n public async getStatus(): Promise<Status> {\n if (!isSubmitResponse(this.data)) {\n throw new Error('Should submit form first');\n }\n\n const params: StatusRequestParams = {\n pid: this.config.paymentMethodId,\n invoice: parseInt(this.data.fixInvoice ?? ''),\n signature: this.data.signature ?? '',\n locale:\n this.data.fields.find((field) => field.name === 'locale')?.value ??\n 'en',\n isSavePaymentAccount: this.isSavingMethodMode\n ? XpsBoolean.true\n : XpsBoolean.false,\n };\n return this.statusService.getStatus(params);\n }\n\n public getFieldConfig(field: Field): ControlConfig | null {\n return this.controlConfigService.getConfig(field);\n }\n\n public changeFieldValue(name: string, value: string): void {\n const formControl = this.form?.get(name);\n formControl?.setValue(value);\n }\n\n public changeFieldState(name: string, state: InputEventName): void {\n const formControl = this.form?.get(name);\n\n if (!this.form || !formControl) {\n return;\n }\n\n switch (state) {\n case InputEventName.blur: {\n formControl.markAsTouched();\n this.focusFieldName = null;\n break;\n }\n case InputEventName.focus: {\n formControl.markAsUntouched();\n this.focusFieldName = name;\n break;\n }\n }\n\n this.emitFormFieldsStatus(this.form);\n }\n\n public destroy(): void {\n this.data = null;\n this.financeDetails = null;\n this.form = null;\n this.fields = [];\n this.formDestroy$.next();\n this.destroy$.next();\n\n this.threeDsService.stopChecking();\n }\n\n private emitFinanceDetails(summary?: XpsSummary): void {\n this.financeDetailsService.emitWithSummary(summary);\n }\n\n private emitCreditCardState(idCardType: string): void {\n this.creditCardStateService.emit({ idCardType });\n }\n\n private emitFormFieldsStatus(form: UntypedFormGroup): void {\n const formFieldsStatus: FormFieldsStatus = {};\n\n Object.keys(form.controls).forEach((name) => {\n const control = form.controls[name];\n formFieldsStatus[name] = {\n name: name,\n validationStatus: control.status,\n errors: control.errors,\n isFocused: this.focusFieldName === name,\n isTouched: control.touched,\n };\n });\n\n this.formFieldsStatusSubject.next(formFieldsStatus);\n }\n\n private emitFormMessages(messages?: XpsMessage[]): void {\n this.formMessagesService.emitOnResponse(messages);\n }\n\n private setupSyncService(form: UntypedFormGroup, fields: Field[]): void {\n this.syncService.setup(form, fields);\n this.syncService.data$\n .pipe(takeUntil(this.destroy$))\n .subscribe((response) => {\n this.emitFinanceDetails(response.summary);\n this.emitFormMessages(response.messages);\n });\n\n this.syncService.fieldAsyncValidation$\n .pipe(takeUntil(this.destroy$))\n .subscribe((fieldAsyncValidation) => {\n switch (fieldAsyncValidation.field.name) {\n case FieldNames.cardNumber:\n this.emitCreditCardState(\n fieldAsyncValidation.response.parameters.idCardType\n );\n }\n });\n }\n\n private listenFinanceDetails(): void {\n this.financeDetailsService.data$\n .pipe(takeUntil(this.destroy$))\n .subscribe((financeDetails) => (this.financeDetails = financeDetails));\n }\n\n private listenFormStatusChanges(form: UntypedFormGroup): void {\n form.statusChanges\n .pipe(takeUntil(this.formDestroy$))\n .subscribe(() => this.emitFormFieldsStatus(form));\n }\n\n /*\n * in case the form pid changes despite the one passed during initialization\n * */\n private updatePidConfig(): void {\n const currentPid = this.getPid();\n if (currentPid) {\n this.config.paymentMethodId = currentPid;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../../core/settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RefundPolicyService {\n public readonly defaultVersionId = 2;\n public readonly defaultUrl = 'https://xsolla.com/refund-policy-ps';\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public get url(): string {\n if (!this.settingsService.token) {\n return 'https://xsolla.com/refundpolicy/en-us';\n }\n const language = this.settingsService.user.local ?? 'en';\n const versionId =\n this.settingsService.project.refundPolicySettings?.policy_version_id ??\n this.defaultVersionId;\n const countryIso = this.settingsService.user.country.value ?? '';\n const projectId = this.settingsService.project.id;\n return `${this.defaultUrl}?policy_version_id=${versionId}&language=${language}&country=${countryIso}&project_id=${projectId}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureConnectionService {\n public get isWhiteLabel(): boolean {\n return !!this.settingsService.settings?.white_label;\n }\n public get secureConnectionUrl(): string | undefined {\n this.setSecureConnectionUrl();\n return this._secureConnectionUrl;\n }\n\n public readonly secureConnectionApi = 'https://verify.xsolla.com/?url=';\n\n private _secureConnectionUrl?: string;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n private setSecureConnectionUrl(): void {\n const projectUrl = this.settingsService.project?.projectUrl;\n\n if (projectUrl) {\n this._secureConnectionUrl = `${\n this.secureConnectionApi\n }${encodeURIComponent(projectUrl)}`;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DisclaimerService {\n public readonly disclaimer = 'disclaimer';\n}\n","import { Injectable } from '@angular/core';\nimport { LegalComponentConfig } from './legal.component.config';\nimport { SettingsService } from '../settings/settings.service';\nimport { RefundPolicyService } from './refund-policy.service';\nimport { SecureConnectionService } from './secure-connection.service';\nimport { DisclaimerService } from './disclaimer.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LegalService {\n public readonly sctlPolicyUrl = 'https://xsolla.com/sctl';\n\n private get isJapanUser(): boolean {\n return this.settingsService.user?.local === 'ja';\n }\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly refundPolicyService: RefundPolicyService,\n private readonly secureConnectionService: SecureConnectionService,\n private readonly disclaimerService: DisclaimerService\n ) {}\n\n public getLegalComponentConfig(): LegalComponentConfig {\n return {\n isJapanUser: this.isJapanUser,\n refundPolicyUrl: this.refundPolicyService.url,\n sctlPolicyUrl: this.sctlPolicyUrl,\n secureConnection: {\n secureConnectionUrl: this.secureConnectionService.secureConnectionUrl,\n isWhiteLabel: this.secureConnectionService.isWhiteLabel,\n },\n disclaimer: this.disclaimerService.disclaimer,\n };\n }\n}\n","import { lastValueFrom } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SettingsService } from '../settings/settings.service';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SavedMethodsService } from '../saved-methods/saved-methods.service';\nimport { DeleteMethodResponse } from './delete-method-response.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EditSavedMethodsService {\n private readonly deleteRoute = 'savedmethods/delete';\n\n public constructor(\n private readonly savedMethodsService: SavedMethodsService,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async deleteSavedMethodRequest(\n id: number,\n type: string\n ): Promise<boolean> {\n const token = this.settingsService.token;\n\n const parameters: {\n access_token: string;\n id: number;\n type: string;\n } = {\n access_token: token,\n id,\n type,\n };\n\n return lastValueFrom(\n this.secureApi.post<DeleteMethodResponse>(\n this.deleteRoute,\n new URLSearchParams(parameters as unknown as { [key: string]: string }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then(async () => {\n await this.savedMethodsService.getList(true);\n return true;\n })\n .catch(() => {\n return false;\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { GooglePayCheckout } from '../google-pay/google-pay-checkout.interface';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { windowToken } from '../../window.token';\nimport { AppError } from '../../exceptions-handling/errors/app-error.class';\n\nexport type CommonCheckout = GooglePayCheckout;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentSystemProcessingService {\n private readonly statusUrl: BehaviorSubject<string> = new BehaviorSubject('');\n private readonly initialize: BehaviorSubject<boolean> =\n new BehaviorSubject<boolean>(false);\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow\n ) {}\n\n public get initialize$(): Observable<boolean> {\n return this.initialize.asObservable();\n }\n\n public get status$(): Observable<string> {\n return this.statusUrl.asObservable().pipe(filter((status) => !!status));\n }\n\n public emitPayment(payment: string): void {\n this.statusUrl.next(payment);\n }\n\n public emitInitialize(isInitialized: boolean): void {\n this.initialize.next(isInitialized);\n }\n\n public getDecodedCheckout<T extends CommonCheckout>(\n base64checkoutData: string\n ): T {\n try {\n return JSON.parse(atob(base64checkoutData)) as T;\n } catch (error: unknown) {\n throw new AppError('load script service: decode error');\n }\n }\n\n public loadScript(\n url: string,\n onLoad: () => void,\n addScriptCustomAttributes?: (script: HTMLScriptElement) => HTMLScriptElement\n ): void {\n this.initialize.next(false);\n let script: HTMLScriptElement =\n this.window.document.createElement('script');\n\n script.async = true;\n script.src = url;\n\n if (addScriptCustomAttributes) {\n script = addScriptCustomAttributes(script);\n }\n\n this.window.document.body.append(script);\n\n script.onload = () => {\n try {\n onLoad();\n } catch (error: unknown) {\n let message = error;\n\n if (error instanceof Error) {\n message = error.message;\n }\n throw new AppError(\n `Pages: error during script onload handler: ${\n message as string\n }, url - ${url}`\n );\n }\n };\n\n script.onerror = (\n event: Event | string,\n source?: string,\n lineno?: number,\n colno?: number,\n error?: Error\n ) => {\n const errorMessage = error ? error.message : '';\n\n let eventMessage = event as string;\n\n if (typeof event === 'object') {\n eventMessage = JSON.stringify(event);\n }\n\n throw new AppError(\n `Pages: error during script onerror handler:\n url - ${url},\n event - ${eventMessage},\n source - ${source ?? ''},\n lineno - ${lineno ?? ''},\n colno - ${colno ?? ''},\n error - ${errorMessage}`\n );\n };\n }\n\n public isInitialized(): boolean {\n return this.initialize.getValue();\n }\n}\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { GooglePayCheckout } from './google-pay-checkout.interface';\nimport {\n GooglePayClient,\n GooglePayPaymentRequest,\n} from './google-pay-library.interface';\nimport { BehaviorSubject, filter, Observable, take } from 'rxjs';\nimport { PaymentSystemProcessingService } from '../payment-systems/payment-system-processing.service';\nimport { windowToken } from '../../window.token';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { ElkLoggerService } from '../../exceptions-handling/elk/elk-logger.service';\nimport { AppError } from '../../exceptions-handling/errors/app-error.class';\nimport { ErrorTags } from '../../exceptions-handling/errors/elk-error-types.enum';\nimport { GooglePayInitParams } from './google-pay-init-params.interface';\nimport { HttpClient } from '@angular/common/http';\nimport { NextAction } from '../../payment/actions/next-action.interface';\nimport { CheckStatusActionCreator } from '../../payment/actions/check-status/check-status.action.class';\nimport { CheckStatusAction } from '../../payment/actions/check-status/check-status.action.type';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GooglePayService {\n private readonly googlePayScriptUrl = 'https://pay.google.com/gp/p/js/pay.js';\n\n private readonly readyToPay = new BehaviorSubject<boolean | null>(null);\n\n private checkout: GooglePayCheckout | null = null;\n private googlePaymentClient: GooglePayClient | null = null;\n\n private isSandbox!: boolean;\n private country!: string;\n\n private get libraryWasInitialized(): boolean {\n return !!this.window.google;\n }\n\n private get googlePaymentClientWasInitialized(): boolean {\n return !!this.googlePaymentClient;\n }\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow,\n public readonly elkLoggerService: ElkLoggerService,\n public readonly commonPayProcessingService: PaymentSystemProcessingService,\n public readonly httpClient: HttpClient,\n public readonly injector: Injector\n ) {\n this.commonPayProcessingService.status$.subscribe((path) => {\n this.sendUserBack(path);\n });\n }\n\n public get readyToPay$(): Observable<boolean | null> {\n return this.readyToPay.asObservable();\n }\n\n public isReadyToPay(): boolean | null {\n return this.readyToPay.getValue();\n }\n\n public sendUserBack(path: string): void {\n void this.httpClient.get(path);\n }\n\n public initGooglePayLibrary(data: GooglePayInitParams): void {\n this.isSandbox = data.isSandbox;\n this.country = data.country;\n\n if (this.libraryWasInitialized && this.googlePaymentClientWasInitialized) {\n return;\n }\n\n if (this.libraryWasInitialized && !this.googlePaymentClientWasInitialized) {\n this.setupGooglePayClient();\n return;\n }\n\n this.commonPayProcessingService.loadScript(\n this.googlePayScriptUrl,\n this.onLoadScript.bind(this)\n );\n\n this.elkLoggerService.log('Google Pay: loading script is starting', [\n ErrorTags.GOOGLEPAY,\n ]);\n }\n\n public checkPaymentDevice(base64checkoutData: string): void {\n this.commonPayProcessingService.initialize$\n .pipe(filter(Boolean), take(1))\n .subscribe(() => {\n this.checkout =\n this.commonPayProcessingService.getDecodedCheckout<GooglePayCheckout>(\n base64checkoutData\n );\n\n if (!this.checkout || !this.googlePaymentClient) {\n throw new AppError(\n `Google Pay: no checkout or google payment client, checkout - ${Boolean(\n this.checkout\n ).toString()}, client - ${Boolean(\n this.googlePaymentClient\n ).toString()}`\n );\n }\n\n const checkoutData = this.checkout.request.form.fields;\n const isReadyToPayRequest = JSON.parse(\n checkoutData.isReadyToPayRequest\n );\n\n this.googlePaymentClient\n .isReadyToPay(isReadyToPayRequest)\n .then((response) => {\n if (response.result && this.googlePaymentClient) {\n this.googlePaymentClient.prefetchPaymentData(\n JSON.parse(checkoutData.paymentDataRequest)\n );\n\n return this.readyToPay.next(true);\n }\n\n this.readyToPay.next(false);\n const result = response.result?.toString() ?? '';\n const isHavePaymentClient = Boolean(\n this.googlePaymentClient\n ).toString();\n\n this.elkLoggerService.log(\n `Google Pay: possibly no response.result or googlePaymentClient is missing, result - ${result}, isHavePaymentClient - ${isHavePaymentClient}`,\n [ErrorTags.GOOGLEPAY],\n {\n result: response.result,\n response: response,\n googlePaymentClient: !!this.googlePaymentClient,\n }\n );\n throw new Error();\n })\n .catch((error) => {\n this.readyToPay.next(false);\n\n let message = (error as string) ?? '';\n\n if (error instanceof Error) {\n message = error.message;\n }\n\n throw new AppError(\n `Google Pay: device is not ready to pay, ${message}`\n );\n });\n });\n }\n\n public async proceedCheckout(): Promise<CheckStatusAction | null> {\n if (!this.checkout || !this.googlePaymentClient) {\n const isHaveCheckout = !!this.checkout;\n const isHaveClient = !!this.googlePaymentClient;\n\n throw new AppError(\n `Google Pay: no checkout or google payment client, checkout - ${isHaveCheckout.toString()}, client - ${isHaveClient.toString()}`\n );\n }\n\n const checkoutData = this.checkout.request.form.fields;\n\n const paymentDataRequest = JSON.parse(\n checkoutData.paymentDataRequest\n ) as GooglePayPaymentRequest;\n\n paymentDataRequest.transactionInfo = {\n currencyCode: checkoutData.currency,\n totalPriceStatus: 'FINAL',\n totalPrice: checkoutData.sum,\n countryCode: this.country,\n };\n\n const checkStatusAction: NextAction = this.injector\n .get<CheckStatusActionCreator>(CheckStatusActionCreator)\n .getActionData();\n\n try {\n const paymentData = await this.googlePaymentClient.loadPaymentData(\n paymentDataRequest\n );\n if (!paymentData?.paymentMethodData?.tokenizationData?.token) {\n throw new AppError('Google Pay: token is missing');\n }\n\n if (!this.checkout) {\n throw new AppError('Google Pay: no checkout data in then');\n }\n\n let returnUrl = this.checkout.request.form.fields.returnSuccessUrl;\n\n const data = this.checkout.request.form.fields;\n returnUrl += `&cpf_number=${data.cpf_number}&descriptor=${\n data.descriptor\n }&paymentData=${JSON.stringify(paymentData)}`;\n\n this.commonPayProcessingService.emitPayment(returnUrl);\n\n return checkStatusAction;\n } catch (error: unknown) {\n this.elkLoggerService.log(\n `Google Pay: google payment window error. ${JSON.stringify(error)}`,\n [ErrorTags.GOOGLEPAY],\n {\n error: error,\n }\n );\n\n if (!this.checkout) {\n throw new AppError(`Google Pay: no checkout data`);\n }\n\n const statusCode = (error as unknown as { statusCode?: string })\n ?.statusCode;\n\n const isStatusCanceled = statusCode && this.isCancelledStatus(statusCode);\n\n if (isStatusCanceled) {\n return null;\n }\n\n const returnUrl = this.checkout.request.form.fields.returnFailUrl;\n\n this.commonPayProcessingService.emitPayment(returnUrl);\n\n return checkStatusAction;\n }\n }\n\n public createButton(onClickHandler: () => void): HTMLButtonElement | null {\n if (!this.checkout || !this.googlePaymentClient) {\n return null;\n }\n\n const checkoutData = this.checkout.request.form.fields;\n const paymentDataRequest = JSON.parse(\n checkoutData.paymentDataRequest\n ) as GooglePayPaymentRequest;\n\n return this.googlePaymentClient.createButton({\n onClick: onClickHandler,\n allowedPaymentMethods: paymentDataRequest.allowedPaymentMethods,\n buttonSizeMode: 'fill',\n buttonType: 'buy',\n buttonColor: 'white',\n });\n }\n\n private setupGooglePayClient(): void {\n if (!this.window.google) {\n return;\n }\n\n const environment = this.isSandbox ? 'TEST' : 'PRODUCTION';\n\n this.googlePaymentClient =\n new this.window.google.payments.api.PaymentsClient({\n environment,\n });\n\n this.elkLoggerService.log(\n `Google Pay: payments client is initialized, paymentsClient - ${Boolean(\n this.googlePaymentClient\n ).toString()}`,\n [ErrorTags.GOOGLEPAY],\n { environment: environment, initialized: !!this.googlePaymentClient }\n );\n }\n\n private onLoadScript(): void {\n if (!this.window.google) {\n const retryTimeout = 1000;\n\n setTimeout(() => {\n const isAvailableGoogleClient = !!this.window.google;\n\n if (!isAvailableGoogleClient) {\n this.elkLoggerService.log('Google Pay: google library is missing', [\n ErrorTags.GOOGLEPAY,\n ]);\n } else {\n this.setupGooglePayClient();\n\n this.commonPayProcessingService.emitInitialize(true);\n }\n }, retryTimeout);\n\n throw new AppError('Google Pay: google library now is available');\n } else {\n this.setupGooglePayClient();\n\n this.commonPayProcessingService.emitInitialize(true);\n }\n }\n\n private isCancelledStatus(statusCode: string): boolean {\n return statusCode.toLowerCase() === 'canceled';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InitConfiguration } from './core/settings/configuration.interface';\nimport { SettingsService } from './core/settings/settings.service';\nimport { CountryService } from './core/country/country.service';\nimport { PaymentMethodsService } from './core/payment-methods/payment-methods.service';\nimport { PaymentMethod } from './core/payment-methods/payment-method.interface';\nimport { SavedMethodsService } from './core/saved-methods/saved-methods.service';\nimport { SavedMethod } from './core/saved-methods/saved-method.interface';\nimport { UserBalanceResponse } from './core/user-balance/user-balance-response.class';\nimport { UserBalanceService } from './core/user-balance/user-balance.service';\nimport { PaymentConfig } from './core/payment/payment-config.interface';\nimport { PaymentService } from './core/payment/payment.service';\nimport { Payment } from './core/payment/payment.interface';\nimport { Field } from './core/payment/field.interface';\nimport { DeviceFingerPrintService } from './core/device-finger-print/device-finger-print.service';\nimport { LegalService } from './core/legal/legal.service';\nimport { LegalComponentConfig } from './core/legal/legal.component.config';\nimport { NextActionService } from './core/payment/actions/next-action.service';\nimport { FinanceDetailsService } from './core/payment/finance-details/finance-details.service';\nimport { masksFunctionsMap } from './core/payment/form/masks-functions.map';\nimport { PaymentConfigService } from './core/payment/config/config.service';\nimport { Status } from './core/payment/status/status.interface';\nimport { StatusService } from './core/payment/status/status.service';\nimport { CreditCardService } from './core/credit-card/credit-card.service';\nimport { CreditCardTypes } from './core/credit-card/credit-card-types.enum';\nimport { CreditCard } from './core/credit-card/credit-card.interface';\nimport { InputEventName } from './core/payment/form/input-event.enum';\nimport { CreditCardStateService } from './core/payment/credit-card-state/credit-card-state.service';\nimport { Observable } from 'rxjs';\nimport { CreditCardState } from './core/payment/credit-card-state/credit-card-state.interface';\nimport { FormState } from './core/payment/form/form-state.interface';\nimport { FinanceDetails } from './core/payment/finance-details/finance-details.interface';\nimport { NextAction } from './core/payment/actions/next-action.interface';\nimport { Balance } from './core/settings/balance.interface';\nimport { FormMessagesService } from './core/payment/form-messages/form-messages.service';\nimport { EditSavedMethodsService } from './core/edit-saved-methods/edit-saved-methods.service';\nimport { GooglePayService } from './core/sdk-payment-systems/google-pay/google-pay.service';\nimport { PaymentSystemProcessingService } from './core/sdk-payment-systems/payment-systems/payment-system-processing.service';\nimport { SdkPaymentSystems } from './core/sdk-payment-systems/sdk-payment-systems.interface';\nimport { GooglePayInitParams } from './core/sdk-payment-systems/google-pay/google-pay-init-params.interface';\nimport { CheckStatusAction } from './core/payment/actions/check-status/check-status.action.type';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreLibraryService {\n public paymentMethods = {\n getList: async (isSaveMethodMode?: boolean): Promise<PaymentMethod[]> =>\n this.paymentMethodsService.getList(isSaveMethodMode),\n\n getQuickMethods: async (): Promise<PaymentMethod[]> =>\n this.paymentMethodsService.getQuickMethods(),\n getSavedMethods: async (): Promise<SavedMethod[]> =>\n this.savedMethodsService.getList(),\n getUserBalance: async (): Promise<UserBalanceResponse> =>\n this.userBalanceService.getUserBalance(),\n deleteSavedMethod: async (id: number, type: string): Promise<boolean> =>\n this.editSavedMethodsService.deleteSavedMethodRequest(id, type),\n };\n\n public sdkPaymentSystems: SdkPaymentSystems = {\n commonPayProcessingService: {\n initialize$: this.commonPayProcessingService.initialize$,\n isInitialized: () => this.commonPayProcessingService.isInitialized(),\n status$: this.commonPayProcessingService.status$,\n },\n googlePay: {\n readyToPay$: this.googlePayService.readyToPay$,\n isReadyToPay: () => this.googlePayService.isReadyToPay(),\n initGooglePayLibrary: (params: GooglePayInitParams): void =>\n this.googlePayService.initGooglePayLibrary(params),\n checkPaymentDevice: (base64checkoutData: string) =>\n this.googlePayService.checkPaymentDevice(base64checkoutData),\n proceedCheckout: async (): Promise<CheckStatusAction | null> =>\n this.googlePayService.proceedCheckout(),\n createButton: (onClickHandler: () => void): HTMLButtonElement | null =>\n this.googlePayService.createButton(onClickHandler),\n sendUserBack: (path: string) => this.googlePayService.sendUserBack(path),\n },\n getInitialData: () =>\n this.paymentService.getInitialDataForSdkPaymentSystems(),\n };\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly paymentMethodsService: PaymentMethodsService,\n private readonly savedMethodsService: SavedMethodsService,\n private readonly userBalanceService: UserBalanceService,\n private readonly paymentConfigService: PaymentConfigService,\n private readonly paymentService: PaymentService,\n private readonly deviceFingerPrintService: DeviceFingerPrintService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly legalService: LegalService,\n private readonly statusService: StatusService,\n private readonly nextActionService: NextActionService,\n private readonly creditCardService: CreditCardService,\n private readonly creditCardStateService: CreditCardStateService,\n private readonly formMessagesService: FormMessagesService,\n private readonly editSavedMethodsService: EditSavedMethodsService,\n private readonly googlePayService: GooglePayService,\n private readonly commonPayProcessingService: PaymentSystemProcessingService\n ) {}\n\n public async init(configuration: InitConfiguration): Promise<void> {\n await this.settingsService.init(configuration);\n this.deviceFingerPrintService.init();\n }\n\n public async getStatus(url?: string): Promise<Status> {\n return this.statusService.getStatusWithUrlSearchParams(url);\n }\n\n public setCountry(country: string): void {\n this.countryService.setCountry(country);\n }\n\n public getCountry(): string {\n return this.countryService.getCountry();\n }\n\n public createPayment(config: PaymentConfig): Payment {\n const enrichedConfig = this.paymentConfigService.enrich(config);\n\n return {\n initialize: async () => this.paymentService.initialize(enrichedConfig),\n submit: async () => this.paymentService.submit(),\n getFields: () => this.paymentService.getFields(),\n getPid: () => this.paymentService.getPid(),\n validate: async (field: Field) => this.paymentService.validate(field),\n getFinanceDetails: () => this.paymentService.getFinanceDetails(),\n runThreeDs: () => this.paymentService.runThreeDs(),\n getStatus: async () => this.paymentService.getStatus(),\n financeDetailsUpdates$: this.financeDetailsService.data$,\n form: {\n fieldsStatus$: this.paymentService.formFieldsStatus$,\n getControlConfig: (field: Field) =>\n this.paymentService.getFieldConfig(field),\n changeFieldValue: (name: string, value: string) =>\n this.paymentService.changeFieldValue(name, value),\n changeFieldState: (name: string, state: InputEventName) =>\n this.paymentService.changeFieldState(name, state),\n updateFieldFormState: (fieldName: string, formState: FormState) =>\n this.paymentService.updateFieldFormState(fieldName, formState),\n formMessages$: this.formMessagesService.data$,\n getFormStatus: () => this.paymentService.form?.status,\n },\n };\n }\n\n public getCreditCardService(): CreditCard {\n return {\n getTypeByNumber: (cardNumber: string) =>\n this.creditCardService.getTypeByNumber(cardNumber),\n getCreditCardSettings: (cardType: CreditCardTypes) =>\n this.creditCardService.getCreditCardSettings(cardType),\n cardTypeUpdates$: this.creditCardStateService.data$,\n };\n }\n\n public get flowUpdates$(): Observable<NextAction> {\n return this.nextActionService.flowUpdates$;\n }\n\n public get financeDetailsUpdates$(): Observable<FinanceDetails> {\n return this.financeDetailsService.data$;\n }\n\n public get cardTypeUpdates$(): Observable<CreditCardState> {\n return this.creditCardStateService.data$;\n }\n\n public getLegalComponentConfig(): LegalComponentConfig {\n return this.legalService.getLegalComponentConfig();\n }\n\n public getFieldMask(field: Field): undefined | (() => string) {\n const sanitizedName = field.name.replace(/^fix_/i, '');\n return masksFunctionsMap[sanitizedName];\n }\n\n public getUserBalanceValue(): Balance | null {\n return this.userBalanceService.getUserBalanceValue();\n }\n}\n","import { HttpErrorResponse, HttpRequest } from '@angular/common/http';\nimport { AppError } from './app-error.class';\nimport { HttpErrorData } from '../http-interceptor/http-error-data.interface';\nimport { HttpErrorResponseData } from '../http-interceptor/http-error-response-data.interface';\n\nexport class HttpError extends AppError {\n private readonly RESTRICTED_KEYS_REGEXP = new RegExp(\n '.*(card_number|number|cvv|cvn|month|year|cardholdername|client_data|dfp|password).*',\n 'i'\n );\n private readonly httpErrorData!: HttpErrorData;\n\n public constructor(error: HttpErrorResponse, req: HttpRequest<unknown>) {\n super(error.message);\n\n this.httpErrorData = {\n request: {\n url: req.url,\n method: req.method,\n headers: req.headers,\n },\n response: {\n status: error.status,\n headers: error.headers,\n },\n };\n\n if (req.body) {\n this.httpErrorData.request.data = this.cleanPersonalData(\n req.body as { [key: string]: unknown }\n );\n }\n\n if (error.statusText) {\n const errorData = error.error as HttpErrorResponseData;\n\n this.httpErrorData.response.data = {\n statusText: error.statusText,\n errors: errorData?.errors ?? [],\n };\n }\n }\n\n public getHttpErrorData(): HttpErrorData {\n return this.httpErrorData;\n }\n\n private cleanPersonalData(data: { [key: string]: unknown }): {\n [key: string]: unknown;\n } {\n return Object.entries(data).reduce((acc, [key, val]) => {\n return {\n ...acc,\n [key]: this.RESTRICTED_KEYS_REGEXP.test(key) ? '***' : val,\n };\n }, {});\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\n\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpError } from '../errors/http-error.class';\n@Injectable()\nexport class HttpExceptionsInterceptor implements HttpInterceptor {\n public constructor(public router: Router) {}\n\n public intercept(\n req: HttpRequest<unknown>,\n next: HttpHandler\n ): Observable<HttpEvent<unknown>> {\n return next.handle(req).pipe(\n catchError((error: HttpErrorResponse) => {\n return throwError(() => new HttpError(error, req));\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CreditCardMinLengthValidator } from './credit-card-length/credit-card-min-length.validator';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n providers: [CreditCardMinLengthValidator],\n})\nexport class ValidatorsModule {}\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ControlConfigService } from './controls/control-config.service';\nimport { convertersMap, convertersMapToken } from './converters/converters-map';\nimport { EmailConverter } from './converters/email/email.converter';\nimport { ZipConverter } from './converters/zip/zip.converter';\nimport { FormService } from './form.service';\nimport { CardNumberConverter } from './converters/card-number/card-number.converter';\nimport { CardMonthConverter } from './converters/card-month/card-month.converter';\nimport { CvvConverter } from './converters/cvv/cvv.converter';\nimport { ValidatorsModule } from './validators/validators.module';\nimport { BirthDateConverter } from './converters/birth-date/birth-date.converter';\nimport { CardholderNameConverter } from './converters/cardholder-name/cardholder-name.converter';\nimport { CpfNameConverter } from './converters/cpf-name/cpf-name.converter';\nimport { CpfNumberConverter } from './converters/cpf-number/cpf-number.converter';\nimport { StreetNumberConverter } from './converters/street-number/street-number.converter';\nimport { TextConverter } from './converters/text/text.converter';\nimport { CardYearConverter } from './converters/card-year/card-year.converter';\nimport { CheckboxConverter } from './converters/checkbox/checkbox.converter';\nimport { SelectConverter } from './converters/select/select.converter';\nimport { PinConverter } from './converters/pin/pin.converter';\nimport { RadioGroupConverter } from './converters/radio-group/radio-group.converter';\nimport { PricepointConverter } from './converters/pricepoint/pricepoint.converter';\nimport { CouponConverter } from './converters/coupon/coupon.converter';\nimport { PhoneConverter } from './converters/phone.converter';\n\n@NgModule({\n imports: [ReactiveFormsModule, ValidatorsModule],\n providers: [\n FormService,\n ControlConfigService,\n CardNumberConverter,\n CardMonthConverter,\n CardYearConverter,\n CvvConverter,\n CvvConverter,\n ZipConverter,\n CardholderNameConverter,\n CpfNumberConverter,\n CpfNameConverter,\n BirthDateConverter,\n TextConverter,\n CheckboxConverter,\n SelectConverter,\n PinConverter,\n RadioGroupConverter,\n EmailConverter,\n EmailConverter,\n EmailConverter,\n StreetNumberConverter,\n PricepointConverter,\n PricepointConverter,\n CouponConverter,\n TextConverter,\n PhoneConverter,\n { provide: convertersMapToken, useValue: convertersMap },\n ],\n})\nexport class FormModule {}\n","import { NgModule } from '@angular/core';\nimport { UnescapeHtmlPipe } from './unescape-html/unescape-html.pipe';\n\n@NgModule({\n declarations: [UnescapeHtmlPipe],\n providers: [UnescapeHtmlPipe],\n exports: [UnescapeHtmlPipe],\n})\nexport class PipesModule {}\n","import { NgModule, TypeProvider } from '@angular/core';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { HttpExceptionsInterceptor } from './core/exceptions-handling/http-interceptor/http-exceptions.interceptor';\nimport { windowToken } from './core/window.token';\nimport { paymentMethodsResponseFactoryProvider } from './core/payment-methods/payment-methods-response.token';\nimport { savedMethodsResponseFactoryProvider } from './core/saved-methods/saved-methods-response.token';\nimport { userBalanceResponseFactoryProvider } from './core/user-balance/user-balance-response.token';\nimport { initializeResponseFactoryProvider } from './core/payment/initialize/response/initialize-response.token';\nimport { submitRequestFactoryProvider } from './core/payment/submit/request/submit-request.token';\nimport { submitResponseFactoryProvider } from './core/payment/submit/response/submit-response.token';\nimport {\n flowUpdateNextActions,\n nextActions,\n nextActionsToken,\n} from './core/payment/actions/next-actions';\nimport { syncRequestFactoryProvider } from './core/payment/sync/request/sync-request.token';\nimport { syncResponseFactoryProvider } from './core/payment/sync/response/sync-response.token';\nimport { FormModule } from './core/payment/form/form.module';\nimport { statusRequestFactoryProvider } from './core/payment/status/status-request/request/status-request.token';\nimport { statusResponseFactoryProvider } from './core/payment/status/status-request/response/status-response.token';\nimport { checkStatusRequestFactoryProvider } from './core/payment/status/check-status/request/check-status-request.token';\nimport { checkStatusResponseFactoryProvider } from './core/payment/status/check-status/response/check-status-response.token';\nimport { statusThreeDsRequestFactoryProvider } from './core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.token';\nimport { statusThreeDsResponseFactoryProvider } from './core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.token';\nimport { notifyDfpStatusRequestFactoryProvider } from './core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.token';\nimport { PipesModule } from './shared/pipes/pipes.module';\n\n@NgModule({\n imports: [HttpClientModule, FormModule, PipesModule],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpExceptionsInterceptor,\n multi: true,\n },\n { provide: windowToken, useValue: window },\n paymentMethodsResponseFactoryProvider,\n savedMethodsResponseFactoryProvider,\n userBalanceResponseFactoryProvider,\n initializeResponseFactoryProvider,\n submitRequestFactoryProvider,\n submitResponseFactoryProvider,\n syncRequestFactoryProvider,\n syncResponseFactoryProvider,\n statusRequestFactoryProvider,\n statusResponseFactoryProvider,\n checkStatusRequestFactoryProvider,\n checkStatusResponseFactoryProvider,\n statusThreeDsRequestFactoryProvider,\n statusThreeDsResponseFactoryProvider,\n notifyDfpStatusRequestFactoryProvider,\n {\n provide: nextActionsToken,\n useValue: nextActions,\n },\n ...(nextActions as TypeProvider[]),\n ...(flowUpdateNextActions as TypeProvider[]),\n ],\n})\nexport class CoreLibraryModule {}\n","/*\n * Public API Surface of core-library\n */\n\nexport * from './lib/core-library.service';\nexport * from './lib/core-library.module';\nexport * from './lib/core/legal/legal.component.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SecureApiClient","i1.SettingsService","i2.CountryService","i3.SecureApiClient","i2.SecureApiClient","i1.UrlService","i2.SettingsService","i3.CountryService","i1.ShowErrorsActionCreator","i1.UnescapeHtmlPipe","i1.CreditCardService","i1.XpsApiService","i4.NextActionService","i5.XpsResponseErrorsMappingService","i6.EncryptCreditCardService","i7.ShowErrorsActionCreator","i2.DeviceFingerPrintService","i3.XpsApiService","i4.XpsResponseErrorsMappingService","i5.EncryptCreditCardService","i2.NextActionService","i3.SettingsService","i6.ShowErrorsActionCreator","i1.SyncService","i2.CreditCardMinLengthValidator","sendErrMessage","i1.ControlConfigService","i1.SummaryFinanceDetailsAdapterService","i1.SessionService","i2.SummaryFinanceDetailsAdapterService","i3.StatusFinanceDetailsAdapterService","i3.XpsResponseErrorsMappingService","map","i2","i1.ElkLoggerService","i1.NchanWebSocketService","i2.CentrifugoWebSocketService","i1.WebSocketFactory","filter","i1.StatusRequestService","i2.CheckStatusService","i3.WebsocketStatusService","i2.ListenStatusService","i3.SavedPaymentAccountChangesService","i5.CheckStatusService","i6.StatusUpdatedActionCreator","i2.StatusRequestService","i3.FinanceDetailsService","i4.ListenStatusService","i5.NextActionService","i6.SavePaymentMethodStatusService","i7.StatusUpdatedActionCreator","i1.NotifyDfpStatusService","i1.StatusThreeDsService","i2.NotifyDfpStatusService","i3.WebSocketFactory","i4.DfpCollectService","i5.ReinsuranceCheckService","i1.ThreeDs20Service","i3.CheckStatusActionCreator","i4.ThreeDsActionCreator","i1.InitializeService","i2.SubmitService","i3.SyncService","i4.FormService","i5.StatusService","i6.FinanceDetailsService","i7.CreditCardStateService","i8.NextActionService","i9.ControlConfigService","i10.ThreeDsService","i11.FormMessagesService","i12.SettingsService","i13.CountryService","i2.RefundPolicyService","i3.SecureConnectionService","i4.DisclaimerService","i1.SavedMethodsService","i2.PaymentSystemProcessingService","i3","i3.PaymentMethodsService","i4.SavedMethodsService","i5.UserBalanceService","i6.PaymentConfigService","i7.PaymentService","i8.DeviceFingerPrintService","i9.FinanceDetailsService","i10.LegalService","i11.StatusService","i12.NextActionService","i13.CreditCardService","i14.CreditCardStateService","i15.FormMessagesService","i16.EditSavedMethodsService","i17.GooglePayService","i18.PaymentSystemProcessingService","i1"],"mappings":"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"}